@orkastery/cli 0.6.1 → 0.6.3
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/adapters/claude-code/README.md +1 -1
- package/adapters/claude-code/agents/ork-check.md +1 -1
- package/adapters/claude-code/agents/ork-go.md +1 -1
- package/adapters/claude-code/agents/ork-goal.md +1 -1
- package/adapters/claude-code/agents/ork-master.md +1 -1
- package/adapters/claude-code/agents/ork-plan.md +1 -1
- package/adapters/claude-code/agents/ork-ship.md +1 -1
- package/adapters/claude-code/commands/ork.md +1 -1
- package/adapters/claude-code/mods/ork-torre/hooks/frases.ts +2 -0
- package/adapters/codex/skills/ork/SKILL.md +1 -1
- package/adapters/hermes/README.md +1 -1
- package/adapters/openclaw/openclaw.plugin.json +1 -1
- package/adapters/openclaw/package.json +1 -1
- package/assets/adapters-en/claude-code/README.md +1 -1
- package/assets/adapters-en/claude-code/agents/ork-check.md +1 -1
- package/assets/adapters-en/claude-code/agents/ork-go.md +1 -1
- package/assets/adapters-en/claude-code/agents/ork-goal.md +1 -1
- package/assets/adapters-en/claude-code/agents/ork-master.md +1 -1
- package/assets/adapters-en/claude-code/agents/ork-plan.md +1 -1
- package/assets/adapters-en/claude-code/agents/ork-ship.md +1 -1
- package/assets/adapters-en/claude-code/commands/ork.md +1 -1
- package/assets/adapters-en/codex/skills/ork/SKILL.md +1 -1
- package/assets/adapters-en/hermes/README.md +1 -1
- package/assets/docs/padroes/roadmap-de-produto.md +1 -1
- package/assets/docs-en/padroes/roadmap-de-produto.md +1 -1
- package/assets/orkmind_fixture.py +4 -1
- package/assets/references-en/testing-patterns.md +1 -1
- package/assets/skills-en/core/orkastery-bootstrap/SKILL.md +1 -1
- package/assets/skills-en/phases/check-quality/SKILL.md +1 -1
- package/assets/skills-en/phases/go-implementation/SKILL.md +1 -1
- package/dist/adapters/claude-bg.js +3 -1
- package/dist/adapters/grok-mcp-servidor.js +22 -12
- package/dist/adapters/grok.js +1 -1
- package/dist/agendador-cpu.js +10 -2
- package/dist/catalogo.js +3 -3
- package/dist/{canarios-hitl.js → cenarios-hitl.js} +7 -7
- package/dist/{canarios-i43.js → cenarios-i43.js} +16 -16
- package/dist/{canarios-pulse.js → cenarios-pulse.js} +3 -3
- package/dist/{canarios-rm057.js → cenarios-rm057.js} +3 -3
- package/dist/{canarios-sensores.js → cenarios-sensores.js} +5 -5
- package/dist/{canarios.js → cenarios.js} +22 -22
- package/dist/changelog-check.js +217 -0
- package/dist/check-agil.js +242 -5
- package/dist/check-paralelo.js +17 -4
- package/dist/ci.js +3 -2
- package/dist/claim-lint.js +29 -0
- package/dist/claims.js +5 -1
- package/dist/docs.js +8 -1
- package/dist/evalrunner.js +37 -37
- package/dist/fila-pesada.js +121 -11
- package/dist/hitl-canais.js +1 -1
- package/dist/hitl-classificacao.js +1 -0
- package/dist/hitl-presentation.js +1 -1
- package/dist/hitl-tempo-parado.js +1 -1
- package/dist/index.js +47 -29
- package/dist/init.js +1 -1
- package/dist/intelligence-graph-cli.js +27 -9
- package/dist/locale-ajuda.js +6 -6
- package/dist/locale-claims.js +16 -2
- package/dist/locale-grafo.js +56 -1
- package/dist/locale-maestro.js +38 -0
- package/dist/locale-network.js +8 -6
- package/dist/locale-onboarding.js +14 -0
- package/dist/locale-operacao-restante.js +18 -18
- package/dist/locale-preflight.js +80 -0
- package/dist/locale-projetos.js +6 -0
- package/dist/locale-prompts.js +8 -8
- package/dist/locale-pulse.js +4 -0
- package/dist/locale-retry.js +16 -0
- package/dist/locale-security-scan.js +35 -1
- package/dist/locale-verify.js +15 -0
- package/dist/locale.js +24 -7
- package/dist/maestro-cli.js +12 -17
- package/dist/mcp-install.js +2 -1
- package/dist/mcp-server.js +20 -17
- package/dist/mcp-verify-async.js +353 -0
- package/dist/mcp-verify-worker.js +17 -0
- package/dist/mcp-verify.js +10 -1
- package/dist/pedido-conducao.js +51 -0
- package/dist/preflight.js +25 -26
- package/dist/prompts.js +4 -2
- package/dist/pulse.js +4 -2
- package/dist/rede.js +24 -12
- package/dist/retry.js +12 -0
- package/dist/sandbox.js +11 -11
- package/dist/security-scan/cli.js +2 -2
- package/dist/security-scan/report.js +1 -1
- package/dist/session-watcher.js +33 -7
- package/dist/verify.js +166 -34
- package/eval/README.md +8 -8
- package/eval/fixtures/fx-codex-dry/caso.json +1 -1
- package/eval/fixtures/fx-happy/caso.json +1 -1
- package/eval/fixtures/fx-indice-reversao/caso.json +1 -1
- package/eval/fixtures/fx-listagem-abertas/caso.json +1 -1
- package/eval/fixtures/fx-omnicanal/caso.json +1 -1
- package/eval/fixtures/fx-pedido-colado/caso.json +1 -1
- package/eval/fixtures/fx-schema-drift/caso.json +1 -1
- package/package.json +1 -1
- package/references/testing-patterns.md +1 -1
- package/skills/core/orkastery-bootstrap/SKILL.md +1 -1
- package/skills/phases/check-quality/SKILL.md +1 -1
- package/skills/phases/go-implementation/SKILL.md +1 -1
package/dist/locale-claims.js
CHANGED
|
@@ -49,14 +49,21 @@ exports.CLAIMS_PT_BR = {
|
|
|
49
49
|
avisoNegativa: 'AVISO: alegacao negativa sem comando de verificacao reprova em `ork verify`.',
|
|
50
50
|
/** A linha do lint no `claims add` (no `ci prepare` o lint sai em pt-BR, como antes). */
|
|
51
51
|
avisoDoLint: (linha, suiteInteira) => `AVISO: ${linha}${suiteInteira ? '. O `ci prepare` recusa esta claim.' : ''}`,
|
|
52
|
+
lintRecusado: (linhas) => `claim recusada antes de ser registrada:\n ${linhas}`,
|
|
52
53
|
linhaDoLint: (claim, nome, trecho, correcao) => `${claim} ${nome} (${trecho}); ${correcao}`,
|
|
53
54
|
nomesDoLint: { 'suite-inteira': 'roda a suite inteira', 'sha-intermediario': 'fixa um SHA intermediario',
|
|
54
|
-
'contagem-de-commits': 'compara contagem de commits'
|
|
55
|
+
'contagem-de-commits': 'compara contagem de commits', 'binario-rg': 'usa o binario rg ausente no runner',
|
|
56
|
+
'ork-fora-do-path': 'chama ork fora do PATH do runner', 'estado-local': 'le estado local fora do checkout',
|
|
57
|
+
'aspas-escapadas': 'leva aspas escapadas literalmente' },
|
|
55
58
|
correcoesDoLint: {
|
|
56
59
|
'suite-inteira': 'rode só o teste da claim (`node --test` no arquivo do teste, ou o comando do projeto que roda um arquivo) ' +
|
|
57
60
|
'ou um script hermético do projeto',
|
|
58
61
|
'sha-intermediario': 'ancore na base (`git diff "$(git merge-base origin/main HEAD)" HEAD`) ou prove ancestralidade com `git merge-base --is-ancestor <sha> HEAD`',
|
|
59
62
|
'contagem-de-commits': 'use `git merge-base --is-ancestor <commit> HEAD`: contagem de commits quebra com rebase e merge',
|
|
63
|
+
'binario-rg': 'use `grep` (ou Node) com a mesma prova; o runner nao instala `rg`',
|
|
64
|
+
'ork-fora-do-path': 'use `node core/dist/index.js ...`; o runner nao instala `ork` no PATH',
|
|
65
|
+
'estado-local': 'prove somente arquivos versionados do checkout; `.orkastery/` e estado local e nao vai ao CI',
|
|
66
|
+
'aspas-escapadas': 'use aspas reais do shell; nao serialize `\\x22` ou `\\x27` dentro do comando',
|
|
60
67
|
},
|
|
61
68
|
// ork claims conferir
|
|
62
69
|
usoConferir: 'uso: ork claims conferir <thread-id> --claims C1,C2 | --tarefa T1 [--prazo S] [--json]',
|
|
@@ -138,14 +145,21 @@ exports.CLAIMS_EN = {
|
|
|
138
145
|
estado: (estado) => ESTADOS_EN[estado] ?? estado,
|
|
139
146
|
avisoNegativa: 'WARNING: a negative statement without a verification command fails in `ork verify`.',
|
|
140
147
|
avisoDoLint: (linha, suiteInteira) => `WARNING: ${linha}${suiteInteira ? '. `ci prepare` refuses this claim.' : ''}`,
|
|
148
|
+
lintRecusado: (linhas) => `claim refused before it was recorded:\n ${linhas}`,
|
|
141
149
|
linhaDoLint: (claim, nome, trecho, correcao) => `${claim} ${nome} (${trecho}); ${correcao}`,
|
|
142
150
|
nomesDoLint: { 'suite-inteira': 'runs the whole suite', 'sha-intermediario': 'pins an intermediate SHA',
|
|
143
|
-
'contagem-de-commits': 'compares a commit count'
|
|
151
|
+
'contagem-de-commits': 'compares a commit count', 'binario-rg': 'uses the rg binary missing from the runner',
|
|
152
|
+
'ork-fora-do-path': 'calls ork outside the runner PATH', 'estado-local': 'reads local state outside the checkout',
|
|
153
|
+
'aspas-escapadas': 'passes escaped quotes literally' },
|
|
144
154
|
correcoesDoLint: {
|
|
145
155
|
'suite-inteira': 'run only the claim test (`node --test` on the test file, or the project command that runs one file) ' +
|
|
146
156
|
'or a hermetic project script',
|
|
147
157
|
'sha-intermediario': 'anchor on the base (`git diff "$(git merge-base origin/main HEAD)" HEAD`) or prove ancestry with `git merge-base --is-ancestor <sha> HEAD`',
|
|
148
158
|
'contagem-de-commits': 'use `git merge-base --is-ancestor <commit> HEAD`: a commit count breaks with rebase and merge',
|
|
159
|
+
'binario-rg': 'use `grep` (or Node) for the same proof; the runner does not install `rg`',
|
|
160
|
+
'ork-fora-do-path': 'use `node core/dist/index.js ...`; the runner does not install `ork` in PATH',
|
|
161
|
+
'estado-local': 'prove only versioned checkout files; `.orkastery/` is local state and is not sent to CI',
|
|
162
|
+
'aspas-escapadas': 'use real shell quotes; do not serialize `\\x22` or `\\x27` inside the command',
|
|
149
163
|
},
|
|
150
164
|
usoConferir: 'usage: ork claims conferir <thread-id> --claims C1,C2 | --tarefa T1 [--prazo S] [--json]',
|
|
151
165
|
conferencia: (thread) => `Spot check of thread ${thread} (no receipt: \`ork verify\` is still what verifies)`,
|
package/dist/locale-grafo.js
CHANGED
|
@@ -1,7 +1,42 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.GRAFO_EN = exports.GRAFO_PT_BR = void 0;
|
|
4
|
-
/** RM-061
|
|
4
|
+
/** RM-061 F3e: traduz somente o detalhe humano; o código tipado continua canônico. */
|
|
5
|
+
const erroDoGrafoEmIngles = (mensagem) => {
|
|
6
|
+
const trocas = [
|
|
7
|
+
[/quem roda o CLI nao le a raiz do repositorio/g, 'the CLI process cannot read the repository root'],
|
|
8
|
+
[/nao e pasta real/g, 'is not a real directory'], [/de outro dono/g, 'has a different owner'],
|
|
9
|
+
[/ com modo /g, ' with mode '], [/ ausente/g, ' missing'], [/\(erro\)/g, '(error)'],
|
|
10
|
+
[/nao bate com o tamanho/g, 'does not match the size'], [/nao bate com o digest/g, 'does not match the digest'],
|
|
11
|
+
[/fora do manifesto/g, 'outside the manifest'], [/sem unidades/g, 'without units'],
|
|
12
|
+
[/o ork grafo limpar o remove/g, 'ork grafo limpar removes it'], [/nenhum indice guardado/g, 'no stored index'],
|
|
13
|
+
[/sem-commit/g, 'no-commit'], [/revisao-mudou/g, 'revision-changed'],
|
|
14
|
+
[/rastreado fora da leitura/g, 'tracked outside the read'], [/ e mais (\d+)/g, ' and $1 more'],
|
|
15
|
+
[/o incremental a partir de ([^ ]+) falhou e a extracao foi completa/g, 'the incremental build from $1 failed and extraction was full'],
|
|
16
|
+
[/o incremental da base ([^ ]+) falhou/g, 'the incremental build from base $1 failed'],
|
|
17
|
+
[/o indice guardado difere da extracao nova/g, 'the stored index differs from the new extraction'],
|
|
18
|
+
[/sem indice do HEAD ([^;]+); rode/g, 'no index for HEAD $1; run'],
|
|
19
|
+
[/ha indice do HEAD ([^ ]+) de outro extrator/g, 'HEAD $1 has an index from another extractor'],
|
|
20
|
+
[/perfil diferente/g, 'different profile'], [/pacotes dos analisadores/g, 'analyzer packages'],
|
|
21
|
+
[/codigo do extrator/g, 'extractor code'], [/ no indice/g, ' in the index'], [/ aqui/g, ' here'],
|
|
22
|
+
[/o HEAD ([^ ]+) nao tem indice; o guardado e de outra revisao/g, 'HEAD $1 has no index; the stored index is from another revision'],
|
|
23
|
+
[/; rode /g, '; run '],
|
|
24
|
+
[/com a mesma instalacao do ork e o mesmo Node de quem consulta/g, 'with the same Ork installation and Node used by the caller'],
|
|
25
|
+
[/\(o servidor MCP consulta com a dele\)/g, '(the MCP server uses its own installation)'],
|
|
26
|
+
[/ tem (\d+) candidatos/g, ' has $1 candidates'], [/no vazio/g, 'empty node'],
|
|
27
|
+
[/ precisa ser inteiro de /g, ' must be an integer from '], [/tipo de aresta desconhecido/g, 'unknown edge type'],
|
|
28
|
+
[/nenhum tipo de aresta/g, 'no edge type'], [/sentido desconhecido/g, 'unknown direction'],
|
|
29
|
+
[/chamadores pede um simbolo; para arquivo, use importadores ou vizinhos/g, 'chamadores expects a symbol; for a file, use importadores or vizinhos'],
|
|
30
|
+
[/importadores pede um arquivo ou um simbolo/g, 'importadores expects a file or symbol'],
|
|
31
|
+
[/teto deve ser inteiro de/g, 'ceiling must be an integer from'], [/borda sem leitor da thread/g, 'edge has no thread reader'],
|
|
32
|
+
[/HEAD mudou durante a leitura; repita a consulta/g, 'HEAD changed during the read; repeat the query'],
|
|
33
|
+
[/ tem (\d+) bytes, acima do teto de (\d+)/g, ' has $1 bytes, above the $2-byte ceiling'],
|
|
34
|
+
[/o caminho nao se corta/g, 'the path cannot be truncated'], [/use --teto-bytes maior/g, 'use a larger --teto-bytes'],
|
|
35
|
+
[/o caminho de (\d+) passo\(s\)/g, 'the $1-step path'], [/a resposta com (\d+) aresta\(s\)/g, 'the response with $1 edge(s)'],
|
|
36
|
+
];
|
|
37
|
+
return trocas.reduce((texto, [padrao, troca]) => texto.replace(padrao, troca), mensagem);
|
|
38
|
+
};
|
|
39
|
+
/** RM-061 F3d/F3e: moldura humana do grafo; schemas, códigos e JSON continuam em pt-BR. */
|
|
5
40
|
exports.GRAFO_PT_BR = {
|
|
6
41
|
uso: [
|
|
7
42
|
'uso: ork grafo indexar [--verificar] [--forcar] [--json]',
|
|
@@ -15,6 +50,7 @@ exports.GRAFO_PT_BR = {
|
|
|
15
50
|
' ork grafo limpar [--tudo] [--json]',
|
|
16
51
|
],
|
|
17
52
|
erroUso: (motivo) => `grafo.uso: ${motivo}`,
|
|
53
|
+
erroTipado: (mensagem) => mensagem,
|
|
18
54
|
motivos: {
|
|
19
55
|
semSub: 'falta o subcomando', desconhecido: (sub) => `subcomando desconhecido: ${sub}`,
|
|
20
56
|
repetida: (nome) => `--${nome} repetida`, semValor: (nome) => `--${nome} nao leva valor`,
|
|
@@ -34,6 +70,15 @@ exports.GRAFO_PT_BR = {
|
|
|
34
70
|
determinismo: (ordem, digest, relatorio, unidades, igual) => ` determinismo ${ordem}: digest ${digest}, relatorio ${relatorio}, unidades ${unidades}, ${igual ? 'igual' : 'DIFERENTE'}`,
|
|
35
71
|
incremental: (base, igual) => ` incremental a partir do indice de ${base}: ${igual ? 'igual a completa nos quatro arquivos' : 'DIFERENTE'}`,
|
|
36
72
|
naoConferido: (motivo) => ` incremental nao conferido: ${motivo}`, aprovado: 'aprovado', semBase: 'sem base',
|
|
73
|
+
extracao: {
|
|
74
|
+
lista: (itens) => itens.length ? ` (${itens.slice(0, 5).join(', ')}${itens.length > 5 ? ` e mais ${itens.length - 5}` : ''})` : '',
|
|
75
|
+
incremental: (base, alterados, novos, removidos) => ` extracao incremental a partir do indice de ${base}: ${alterados} alterado(s), ${novos} novo(s), ${removidos} removido(s)`,
|
|
76
|
+
tsInteiro: (motivo) => `TypeScript inteiro (${motivo ?? ''})`,
|
|
77
|
+
tsParcial: (reextraidos, lista, programa, reaproveitados) => `TypeScript parcial, ${reextraidos} reextraido(s)${lista} num programa de ${programa}, ${reaproveitados} da base`,
|
|
78
|
+
tsBase: (reaproveitados) => `TypeScript todo da base (${reaproveitados})`,
|
|
79
|
+
markdown: (reextraidos, lista, reaproveitados) => ` Markdown: ${reextraidos} reextraido(s)${lista}, ${reaproveitados} da base`,
|
|
80
|
+
completa: (motivo) => ` extracao completa${motivo ? `: ${motivo}` : ''}`,
|
|
81
|
+
},
|
|
37
82
|
},
|
|
38
83
|
status: {
|
|
39
84
|
titulo: (head, arvore) => `grafo: HEAD ${head}, arvore ${arvore}`,
|
|
@@ -81,6 +126,7 @@ exports.GRAFO_EN = {
|
|
|
81
126
|
' ork grafo amostra [--por-estrato N] | ork grafo amostra --conferir FILE [--json]', ' ork grafo limpar [--tudo] [--json]',
|
|
82
127
|
],
|
|
83
128
|
erroUso: (reason) => `grafo.uso: ${reason}`,
|
|
129
|
+
erroTipado: erroDoGrafoEmIngles,
|
|
84
130
|
motivos: {
|
|
85
131
|
semSub: 'missing subcommand', desconhecido: (sub) => `unknown subcommand: ${sub}`, repetida: (name) => `--${name} repeated`,
|
|
86
132
|
semValor: (name) => `--${name} takes no value`, exigeValor: (name) => `--${name} requires a value`, opcao: (sub, value) => `unknown option for ${sub}: ${value}`,
|
|
@@ -96,6 +142,15 @@ exports.GRAFO_EN = {
|
|
|
96
142
|
determinismo: (order, digest, report, units, equal) => ` determinism ${order}: digest ${digest}, report ${report}, units ${units}, ${equal ? 'equal' : 'DIFFERENT'}`,
|
|
97
143
|
incremental: (base, equal) => ` incremental from index ${base}: ${equal ? 'equal to the full build in all four files' : 'DIFFERENT'}`,
|
|
98
144
|
naoConferido: (reason) => ` incremental not checked: ${reason}`, aprovado: 'approved', semBase: 'no base',
|
|
145
|
+
extracao: {
|
|
146
|
+
lista: (items) => items.length ? ` (${items.slice(0, 5).join(', ')}${items.length > 5 ? ` and ${items.length - 5} more` : ''})` : '',
|
|
147
|
+
incremental: (base, changed, added, removed) => ` extraction incremental from index ${base}: ${changed} changed, ${added} added, ${removed} removed`,
|
|
148
|
+
tsInteiro: (reason) => `full TypeScript program (${erroDoGrafoEmIngles(reason ?? '')})`,
|
|
149
|
+
tsParcial: (reextracted, list, program, reused) => `partial TypeScript program, ${reextracted} re-extracted${list} in a program of ${program}, ${reused} reused from the base`,
|
|
150
|
+
tsBase: (reused) => `TypeScript entirely from the base (${reused})`,
|
|
151
|
+
markdown: (reextracted, list, reused) => ` Markdown: ${reextracted} re-extracted${list}, ${reused} reused from the base`,
|
|
152
|
+
completa: (reason) => ` extraction full${reason ? `: ${erroDoGrafoEmIngles(reason)}` : ''}`,
|
|
153
|
+
},
|
|
99
154
|
},
|
|
100
155
|
status: {
|
|
101
156
|
titulo: (head, tree) => `graph: HEAD ${head}, tree ${tree}`, indice: (key, state) => ` HEAD index ${key} ${state}`,
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.MAESTRO_EN = exports.MAESTRO_PT_BR = void 0;
|
|
4
|
+
/** RM-061 F3e: moldura humana do panorama Maestro; o snapshot JSON continua canônico. */
|
|
5
|
+
exports.MAESTRO_PT_BR = {
|
|
6
|
+
help: 'ork maestro [--json] [--thread ID] [--section NOME --offset N]\nConsulta sem criar ou despachar trabalho. Na conversa, diga: orkastery maestro.',
|
|
7
|
+
origem: {
|
|
8
|
+
installation: 'fixado na instalação', cwd: 'pelo diretório atual', worktree: 'pela worktree da thread',
|
|
9
|
+
selection: 'pedido explicitamente (--projeto ou ORK_PROJETO)',
|
|
10
|
+
},
|
|
11
|
+
titulo: (projeto) => `${projeto} · panorama Maestro`,
|
|
12
|
+
consulta: (data) => `• Consulta: ${data}`,
|
|
13
|
+
projeto: (nome, raiz, remoto, origem) => `• Projeto consultado: ${nome}${raiz ? ` · ${raiz}` : ''}${remoto === undefined ? '' : ` · ${remoto}`} · ${origem}`,
|
|
14
|
+
semRemoto: 'sem remoto',
|
|
15
|
+
naoLido: (itens) => `• Não lido: ${itens}`,
|
|
16
|
+
secao: (nome, estado, retornados, total, mais) => `• ${nome}: ${estado} · ${retornados}/${total ?? '?'}${mais ? ' · mais itens disponíveis' : ''}`,
|
|
17
|
+
thread: (titulo, fase, estado) => ` ${titulo}: ${fase} · ${estado}`,
|
|
18
|
+
recomendacao: (conflitos, lacunas) => `• Recomendo: ${conflitos ? 'reler as fontes em conflito'
|
|
19
|
+
: lacunas ? 'conferir as lacunas antes de agir' : 'escolher uma thread para ver o detalhe'}.`,
|
|
20
|
+
final: 'Use ork maestro --json para cobertura e ações; --thread ID consulta o detalhe nativo.',
|
|
21
|
+
};
|
|
22
|
+
exports.MAESTRO_EN = {
|
|
23
|
+
help: 'ork maestro [--json] [--thread ID] [--section NAME --offset N]\nRead without creating or dispatching work. In the conversation, say: orkastery maestro.',
|
|
24
|
+
origem: {
|
|
25
|
+
installation: 'fixed by the installation', cwd: 'from the current directory', worktree: 'from the thread worktree',
|
|
26
|
+
selection: 'explicitly selected (--projeto or ORK_PROJETO)',
|
|
27
|
+
},
|
|
28
|
+
titulo: (project) => `${project} · Maestro overview`,
|
|
29
|
+
consulta: (date) => `• Read at: ${date.replace('(horário de Brasília)', '(Brasilia time)')}`,
|
|
30
|
+
projeto: (name, root, remote, origin) => `• Project read: ${name}${root ? ` · ${root}` : ''}${remote === undefined ? '' : ` · ${remote}`} · ${origin}`,
|
|
31
|
+
semRemoto: 'no remote',
|
|
32
|
+
naoLido: (items) => `• Not read: ${items}`,
|
|
33
|
+
secao: (name, state, returned, total, more) => `• ${name}: ${state} · ${returned}/${total ?? '?'}${more ? ' · more items available' : ''}`,
|
|
34
|
+
thread: (title, phase, state) => ` ${title}: ${phase} · ${state}`,
|
|
35
|
+
recomendacao: (conflicts, gaps) => `• Recommendation: ${conflicts ? 'reread the conflicting sources'
|
|
36
|
+
: gaps ? 'check the gaps before acting' : 'choose a thread to read its details'}.`,
|
|
37
|
+
final: 'Use ork maestro --json for coverage and actions; --thread ID reads the native details.',
|
|
38
|
+
};
|
package/dist/locale-network.js
CHANGED
|
@@ -111,12 +111,13 @@ exports.NETWORK_PT_BR = {
|
|
|
111
111
|
nomeEmUso: (maquina, quem, dica) => `rede.nome-em-uso: outra instalacao ja publica como "${maquina}"${quem}${dica}`,
|
|
112
112
|
quemHostname: (hostname, batida) => ` (hostname ${hostname}, batida ${batida})`,
|
|
113
113
|
quemIlegivel: ' (num retrato que esta versao nao le)',
|
|
114
|
-
|
|
115
|
-
'ork network entrar --forcar; se for outra maquina ou instalacao
|
|
116
|
-
dicaOutroNome: '; escolha outro nome com ork network entrar --maquina NOME, ou tome este com --forcar',
|
|
114
|
+
dicaNomeEmUso: '; se for esta maquina com ~/.orkastery apagada ou copiada, retome o nome com ' +
|
|
115
|
+
'ork network entrar --forcar; se for outra maquina ou instalacao, escolha outro nome com --maquina NOME',
|
|
117
116
|
concorrencia: (n) => `rede.concorrencia: ${n} pushes recusados seguidos; tente de novo em instantes`,
|
|
118
117
|
foraDaRede: 'rede.fora: esta maquina nao esta na rede; ork network entrar',
|
|
119
118
|
nomeInvalido: (maquina) => `rede.maquina: nome de maquina invalido ("${maquina}"); use ork network entrar --maquina NOME (letras, numeros, ponto, _ ou -)`,
|
|
119
|
+
nomeGenericoAusente: 'rede.maquina-generica: escolha um nome generico com ork network entrar --maquina maquina-a; ' +
|
|
120
|
+
'o mapa fica somente em ~/.orkastery/maquina.json, fora do git',
|
|
120
121
|
ocupadoAoEntrar: (trava) => `rede.ocupado: outra publicacao desta maquina esta em andamento (${trava}); rode ork network entrar de novo em instantes`,
|
|
121
122
|
semHttpsAoSair: (cli, ref) => `rede.sem-https: saiu da rede aqui, mas ${cli} devolveu para ${ref} uma URL sem https; o retrato fica na casa`,
|
|
122
123
|
ocupadoAoSair: (trava) => `rede.ocupado: saiu da rede aqui, mas outra publicacao desta maquina segura a casa (${trava}); rode ork network sair de novo`,
|
|
@@ -294,12 +295,13 @@ exports.NETWORK_EN = {
|
|
|
294
295
|
nomeEmUso: (maquina, quem, dica) => `rede.nome-em-uso: another installation already publishes as "${maquina}"${quem}${dica}`,
|
|
295
296
|
quemHostname: (hostname, batida) => ` (hostname ${hostname}, heartbeat ${batida})`,
|
|
296
297
|
quemIlegivel: ' (in a snapshot this version does not read)',
|
|
297
|
-
|
|
298
|
-
'`ork network entrar --forcar`; if it is another machine or installation
|
|
299
|
-
dicaOutroNome: '; pick another name with `ork network entrar --maquina NAME`, or take this one with `--forcar`',
|
|
298
|
+
dicaNomeEmUso: '; if it is this machine with ~/.orkastery deleted or copied, take the name back with ' +
|
|
299
|
+
'`ork network entrar --forcar`; if it is another machine or installation, pick another name with `--maquina NAME`',
|
|
300
300
|
concorrencia: (n) => `rede.concorrencia: ${n} pushes refused in a row; try again in a moment`,
|
|
301
301
|
foraDaRede: 'rede.fora: this machine is not in the network; `ork network entrar`',
|
|
302
302
|
nomeInvalido: (maquina) => `rede.maquina: invalid machine name ("${maquina}"); use \`ork network entrar --maquina NAME\` (letters, digits, dot, _ or -)`,
|
|
303
|
+
nomeGenericoAusente: 'rede.maquina-generica: choose a generic name with `ork network entrar --maquina maquina-a`; ' +
|
|
304
|
+
'the mapping stays only in ~/.orkastery/maquina.json, outside git',
|
|
303
305
|
ocupadoAoEntrar: (trava) => `rede.ocupado: another publication from this machine is in progress (${trava}); run \`ork network entrar\` again in a moment`,
|
|
304
306
|
semHttpsAoSair: (cli, ref) => `rede.sem-https: left the network here, but ${cli} returned a URL without https for ${ref}; the snapshot stays in the home`,
|
|
305
307
|
ocupadoAoSair: (trava) => `rede.ocupado: left the network here, but another publication from this machine holds the home (${trava}); run \`ork network sair\` again`,
|
|
@@ -43,6 +43,13 @@ exports.ONBOARDING_PT_BR = {
|
|
|
43
43
|
/** Aviso de preferencia invalida que o manifesto gravou ao carregar (pt-BR): traduzido so na impressao (D14). */
|
|
44
44
|
avisoDaPreferencia: (aviso) => aviso,
|
|
45
45
|
experienciaAviso: (aviso) => `Aviso: ${aviso}; o adapter install pula o pacote até ork onboarding set maestro corrigir.`,
|
|
46
|
+
syncPor: 'onboarding.input.invalid: sync não aceita --por; informe autoria em set ou reset.',
|
|
47
|
+
syncResultado: (regime, motivo, respondidas, gravadas, duplicadas, falhas) => `${regime}${motivo ? ` (${motivo})` : ''}: ${regime === 'orkmind' && falhas === 0
|
|
48
|
+
? `${gravadas} nova(s), ${duplicadas} já existente(s); ${respondidas} etapa(s) publicada(s).`
|
|
49
|
+
: 'Entrevista preservada em arquivos; publicação semântica não concluída. Consulte ork memory status.'}`,
|
|
50
|
+
experienciaUninstallUso: 'uso: ork experiencia uninstall claude-code|codex [--dry-run] [--json]',
|
|
51
|
+
experienciaUninstall: (dryRun, arquivos) => `${dryRun ? 'Simulação de remoção' : 'Remoção concluída'}: ${arquivos} arquivo(s). O adaptador permanece instalado. ` +
|
|
52
|
+
'Para manter o pacote desativado, configure owner.experience:false no onboarding.',
|
|
46
53
|
};
|
|
47
54
|
/** Os avisos de `validarPreferencias` (`core/src/experiencia.ts`), pela frase exata que o manifesto grava. */
|
|
48
55
|
const AVISOS_DA_PREFERENCIA_EN = {
|
|
@@ -89,4 +96,11 @@ exports.ONBOARDING_EN = {
|
|
|
89
96
|
return traduzido === undefined ? aviso : traduzido + (texto === aviso ? '' : '; the default is used for now');
|
|
90
97
|
},
|
|
91
98
|
experienciaAviso: (aviso) => `Warning: ${aviso}; \`ork adapter install\` skips the package until \`ork onboarding set maestro\` fixes it.`,
|
|
99
|
+
syncPor: 'onboarding.input.invalid: sync does not accept --por; record authorship with set or reset.',
|
|
100
|
+
syncResultado: (regime, motivo, respondidas, gravadas, duplicadas, falhas) => `${regime}${motivo ? ` (${motivo})` : ''}: ${regime === 'orkmind' && falhas === 0
|
|
101
|
+
? `${gravadas} new, ${duplicadas} already present; ${respondidas} step(s) published.`
|
|
102
|
+
: 'Interview preserved in files; semantic publication did not finish. See ork memory status.'}`,
|
|
103
|
+
experienciaUninstallUso: 'usage: ork experiencia uninstall claude-code|codex [--dry-run] [--json]',
|
|
104
|
+
experienciaUninstall: (dryRun, files) => `${dryRun ? 'Removal dry run' : 'Removal complete'}: ${files} file(s). The adapter remains installed. ` +
|
|
105
|
+
'To keep the package disabled, set owner.experience:false in onboarding.',
|
|
92
106
|
};
|
|
@@ -339,23 +339,23 @@ exports.OPERACAO_RESTANTE_PT_BR = {
|
|
|
339
339
|
deveriaAusente: (valor, vezes) => `"${valor}" deveria estar AUSENTE da skill e aparece ${vezes}x`,
|
|
340
340
|
naoExiste: (valor, skill, porque) => `"${valor}" nao existe em skills/.../${skill}/SKILL.md (${porque})`,
|
|
341
341
|
ancora: 'todas as ancoras deste caso estao dentro da tabela de racionalizacoes: a skill lista a desculpa mas nao carrega a regra que responde a ela',
|
|
342
|
-
filtroVazio: 'filtro de
|
|
343
|
-
|
|
342
|
+
filtroVazio: 'filtro de cenários vazio: nenhuma prova foi executada',
|
|
343
|
+
cenarioAusente: (id) => `cenário solicitado ausente: ${id}`,
|
|
344
344
|
casoAusente: (nome) => `${nome}: falta caso.json`,
|
|
345
|
-
fixtureDiverge: 'id da fixture diverge do
|
|
346
|
-
semExecutor: (nome, id) => `${nome}: nenhum executor registrado para o
|
|
347
|
-
semGit: 'git nao esta nesta maquina: o
|
|
345
|
+
fixtureDiverge: 'id da fixture diverge do cenário solicitado',
|
|
346
|
+
semExecutor: (nome, id) => `${nome}: nenhum executor registrado para o cenario "${id}"`,
|
|
347
|
+
semGit: 'git nao esta nesta maquina: o cenario sai unavailable, nunca passing',
|
|
348
348
|
divergencia: (esperado, observado) => `esperado ${esperado}, observado ${observado}`,
|
|
349
|
-
|
|
349
|
+
cenarioSemFixture: (id) => `o cenario ${id} existe no codigo e nao tem eval/fixtures/${id}/caso.json`,
|
|
350
350
|
skillSemEval: (skill) => `skill sem eval nao entra no catalogo: falta eval/casos/${skill}.json`,
|
|
351
351
|
evalSemSkill: 'ha casos para uma skill que nao existe no catalogo',
|
|
352
352
|
titulo: (catalogo) => `ork eval, catalogo em ${catalogo}`,
|
|
353
|
-
|
|
354
|
-
|
|
353
|
+
cenarios: 'Cenarios (comportamento real do nucleo, contra git de verdade)',
|
|
354
|
+
colunasCenarios: ['CENARIO', 'ESTADO', 'SOBRE'],
|
|
355
355
|
estados: { passou: 'passou', unavailable: 'unavailable', falhou: 'falhou' },
|
|
356
356
|
skills: 'Corpus das skills (a metade estatica: as regras que precisam existir no arquivo)',
|
|
357
357
|
colunasSkills: ['SKILL', 'CASOS', 'ASSERCOES', 'FALHAS'], falhas: 'Falhas',
|
|
358
|
-
|
|
358
|
+
resumoCenarios: (passaram, total, indisponiveis) => `cenarios: ${passaram}/${total} verdes${indisponiveis > 0 ? ` (${indisponiveis} unavailable)` : ''}`,
|
|
359
359
|
resumoSkills: (skills, casos, assercoes, falhas) => `skills: ${skills} | casos: ${casos} | assercoes: ${assercoes} | falhas: ${falhas}`,
|
|
360
360
|
metade: 'metade comportamental (o agente resiste a desculpa?): unavailable, julgada por humano ou por modelo, nunca por este runner',
|
|
361
361
|
veredito: (ok) => `VEREDITO: ${ok ? 'verde' : 'vermelho'}`,
|
|
@@ -815,23 +815,23 @@ exports.OPERACAO_RESTANTE_EN = {
|
|
|
815
815
|
deveriaAusente: (value, times) => `"${value}" should be ABSENT from the skill and appears ${times} time(s)`,
|
|
816
816
|
naoExiste: (value, skill, why) => `"${value}" does not exist in skills/.../${skill}/SKILL.md (${why})`,
|
|
817
817
|
ancora: 'every anchor in this case is inside the rationalizations table: the skill lists the excuse but does not carry the rule that answers it',
|
|
818
|
-
filtroVazio: 'empty
|
|
819
|
-
|
|
818
|
+
filtroVazio: 'empty scenario filter: no evidence was executed',
|
|
819
|
+
cenarioAusente: (id) => `requested scenario is missing: ${id}`,
|
|
820
820
|
casoAusente: (name) => `${name}: caso.json is missing`,
|
|
821
|
-
fixtureDiverge: 'fixture id differs from the requested
|
|
822
|
-
semExecutor: (name, id) => `${name}: no executor registered for
|
|
823
|
-
semGit: 'git is not on this machine: the
|
|
821
|
+
fixtureDiverge: 'fixture id differs from the requested scenario',
|
|
822
|
+
semExecutor: (name, id) => `${name}: no executor registered for scenario "${id}"`,
|
|
823
|
+
semGit: 'git is not on this machine: the scenario is unavailable, never passing',
|
|
824
824
|
divergencia: (expected, observed) => `expected ${expected}, observed ${observed}`,
|
|
825
|
-
|
|
825
|
+
cenarioSemFixture: (id) => `scenario ${id} exists in code but has no eval/fixtures/${id}/caso.json`,
|
|
826
826
|
skillSemEval: (skill) => `a skill without eval does not enter the catalog: eval/casos/${skill}.json is missing`,
|
|
827
827
|
evalSemSkill: 'there are cases for a skill that does not exist in the catalog',
|
|
828
828
|
titulo: (catalog) => `ork eval, catalog at ${catalog}`,
|
|
829
|
-
|
|
830
|
-
|
|
829
|
+
cenarios: 'Scenarios (real core behavior, against real git)',
|
|
830
|
+
colunasCenarios: ['SCENARIO', 'STATE', 'SUBJECT'],
|
|
831
831
|
estados: { passou: 'passed', unavailable: 'unavailable', falhou: 'failed' },
|
|
832
832
|
skills: 'Skills corpus (the static half: rules that must exist in the file)',
|
|
833
833
|
colunasSkills: ['SKILL', 'CASES', 'ASSERTIONS', 'FAILURES'], falhas: 'Failures',
|
|
834
|
-
|
|
834
|
+
resumoCenarios: (passed, total, unavailable) => `scenarios: ${passed}/${total} green${unavailable > 0 ? ` (${unavailable} unavailable)` : ''}`,
|
|
835
835
|
resumoSkills: (skills, cases, assertions, failures) => `skills: ${skills} | cases: ${cases} | assertions: ${assertions} | failures: ${failures}`,
|
|
836
836
|
metade: 'behavioral half (does the agent resist the excuse?): unavailable, judged by a human or a model, never by this runner',
|
|
837
837
|
veredito: (ok) => `VERDICT: ${ok ? 'green' : 'red'}`,
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.PREFLIGHT_EN = exports.PREFLIGHT_PT_BR = void 0;
|
|
4
|
+
/** RM-061 F3e: apresentação humana de `ork doctor --modo`. */
|
|
5
|
+
exports.PREFLIGHT_PT_BR = {
|
|
6
|
+
nomes: {
|
|
7
|
+
node: 'node', git: 'git', repositorio: 'repositorio', manifesto: 'manifesto', modo: 'modo', abbrev: 'abbrev',
|
|
8
|
+
trio: 'trio', runtime: 'runtime', contas: 'contas', sandbox: 'sandbox de despacho', provider: 'provider', umask: 'umask',
|
|
9
|
+
'permissoes do estado': 'permissoes do estado', 'pasta privada': 'pasta privada',
|
|
10
|
+
},
|
|
11
|
+
storeInvalido: (detalhe) => `store de perfis invalido: ${detalhe}`,
|
|
12
|
+
semPerfil: (runtime) => `${runtime} sem perfil configurado: despacho pelo ambiente do processo`,
|
|
13
|
+
estadoConta: {
|
|
14
|
+
providerPago: 'provider pago, nunca despacha', loginInconclusivo: 'conferencia de login inconclusiva', semLogin: 'sem login', pronto: 'pronto',
|
|
15
|
+
esgotadoAte: (estado, ate) => `${estado}${ate ? ` ate ${ate}` : ''}`,
|
|
16
|
+
},
|
|
17
|
+
contas: (runtime, estados) => `${runtime}: ${estados}`,
|
|
18
|
+
contasCorrecao: 'ork accounts check marca os perfis; ork accounts add refaz o login pelo proprio CLI',
|
|
19
|
+
limites: [
|
|
20
|
+
'Sonda contextual local: não inventaria sessões, não inicia modelo e não autoriza despacho.',
|
|
21
|
+
'Aceitação do modelo, instalação do adaptador/MCP, contexto da thread, gates e policies do pedido são revalidados no despacho; com perfis, o login de cada conta é conferido aqui e de novo no despacho.',
|
|
22
|
+
'Trio sem override; um override posterior exige resolver e verificar novamente o despacho.',
|
|
23
|
+
'VERIFY/SHIP MCP exigem executor Codex isolado próprio e transporte SHIP válido; a sonda de despacho não comprova entrega.',
|
|
24
|
+
],
|
|
25
|
+
node: 'Node 20 ou superior necessário', gitOk: 'Git disponível', gitAusente: 'Git ausente',
|
|
26
|
+
repo: 'Repositório Git local necessário', manifestoAusente: 'Manifesto ausente',
|
|
27
|
+
manifestoInvalido: 'Manifesto inválido; corrija antes do despacho', manifestoValido: 'Manifesto válido',
|
|
28
|
+
modo: (modo) => `Modo solicitado: ${modo}`, abbrev: 'Identidade curta do projeto validada',
|
|
29
|
+
trio: 'Runtime/modelo/esforço resolvidos pelo mesmo contrato do despacho; aceitação nativa não comprovada',
|
|
30
|
+
runtimeOk: (runtime) => `${runtime} disponível`, runtimeAusente: (runtime) => `${runtime} ausente`,
|
|
31
|
+
sandboxOk: 'Sonda Codex sem modelo executou',
|
|
32
|
+
sandboxFalhou: 'Sonda Codex falhou; não altere o sandbox para contornar a falha',
|
|
33
|
+
providerIncompativel: (nomes) => `Nomes de provider incompatíveis com assinatura: ${nomes}`,
|
|
34
|
+
providerAlheio: 'Há nomes de provider alheios ao runtime; não usar credenciais pagas',
|
|
35
|
+
providerNenhum: 'Nenhum nome de provider pago ativo',
|
|
36
|
+
trioInvalido: 'Setup/trio ou sonda inválidos; complete o modelo e confira o runtime no setup canônico',
|
|
37
|
+
titulo: (modo) => `ork doctor contextual: ${modo}`,
|
|
38
|
+
check: (nivel, nome, detalhe) => `${nivel}: ${nome}: ${detalhe}`,
|
|
39
|
+
checkDoBloco: (nivel, nome, detalhe) => ` ${nivel}: ${nome}: ${detalhe}`,
|
|
40
|
+
bloco: (numero, fases, trio) => `bloco ${numero} ${fases}: ${trio ?? 'trio pendente'}`,
|
|
41
|
+
resumo: (primeiro, todos) => `Primeiro bloco: ${primeiro ? 'sonda pronta' : 'bloqueado'}; ` +
|
|
42
|
+
`todos os blocos: ${todos ? 'sonda pronta' : 'dependências pendentes'}`,
|
|
43
|
+
};
|
|
44
|
+
exports.PREFLIGHT_EN = {
|
|
45
|
+
nomes: {
|
|
46
|
+
node: 'node', git: 'git', repositorio: 'repository', manifesto: 'manifest', modo: 'mode', abbrev: 'abbrev',
|
|
47
|
+
trio: 'runtime/model/effort', runtime: 'runtime', contas: 'accounts', sandbox: 'dispatch sandbox', provider: 'provider', umask: 'umask',
|
|
48
|
+
'permissoes do estado': 'state permissions', 'pasta privada': 'private folder',
|
|
49
|
+
},
|
|
50
|
+
storeInvalido: (detail) => `invalid profile store: ${detail}`,
|
|
51
|
+
semPerfil: (runtime) => `${runtime} has no configured profile: dispatch uses the process environment`,
|
|
52
|
+
estadoConta: {
|
|
53
|
+
providerPago: 'paid provider, never dispatches', loginInconclusivo: 'inconclusive login check', semLogin: 'not signed in',
|
|
54
|
+
pronto: 'ready', esgotadoAte: (state, until) => `${state}${until ? ` until ${until}` : ''}`,
|
|
55
|
+
},
|
|
56
|
+
contas: (runtime, states) => `${runtime}: ${states}`,
|
|
57
|
+
contasCorrecao: '`ork accounts check` marks profiles; `ork accounts add` signs in again through the CLI itself',
|
|
58
|
+
limites: [
|
|
59
|
+
'Local contextual probe: it does not invent sessions, start a model or authorize dispatch.',
|
|
60
|
+
'Model acceptance, adapter/MCP installation, thread context, gates and request policies are checked again at dispatch; with profiles, each account login is checked here and again at dispatch.',
|
|
61
|
+
'No override in the runtime/model/effort set; a later override requires resolving and checking dispatch again.',
|
|
62
|
+
'MCP VERIFY/SHIP require their own isolated Codex executor and a valid SHIP transport; the dispatch probe does not prove delivery.',
|
|
63
|
+
],
|
|
64
|
+
node: 'Node 20 or later required', gitOk: 'Git available', gitAusente: 'Git missing',
|
|
65
|
+
repo: 'Local Git repository required', manifestoAusente: 'Manifest missing',
|
|
66
|
+
manifestoInvalido: 'Invalid manifest; fix it before dispatch', manifestoValido: 'Valid manifest',
|
|
67
|
+
modo: (mode) => `Requested mode: ${mode}`, abbrev: 'Short project identity checked',
|
|
68
|
+
trio: 'Runtime/model/effort resolved by the same dispatch contract; native acceptance not proved',
|
|
69
|
+
runtimeOk: (runtime) => `${runtime} available`, runtimeAusente: (runtime) => `${runtime} missing`,
|
|
70
|
+
sandboxOk: 'Codex probe without a model ran', sandboxFalhou: 'Codex probe failed; do not change the sandbox to bypass the failure',
|
|
71
|
+
providerIncompativel: (names) => `Provider names incompatible with subscription-only: ${names}`,
|
|
72
|
+
providerAlheio: 'There are provider names unrelated to the runtime; do not use paid credentials',
|
|
73
|
+
providerNenhum: 'No paid-provider name active',
|
|
74
|
+
trioInvalido: 'Invalid setup/runtime set or probe; complete the model and check the runtime in canonical setup',
|
|
75
|
+
titulo: (mode) => `ork contextual doctor: ${mode}`,
|
|
76
|
+
check: (level, name, detail) => `${level}: ${name}: ${detail}`,
|
|
77
|
+
checkDoBloco: (level, name, detail) => ` ${level}: ${name}: ${detail}`,
|
|
78
|
+
bloco: (number, phases, trio) => `block ${number} ${phases}: ${trio ?? 'runtime/model/effort pending'}`,
|
|
79
|
+
resumo: (first, all) => `First block: ${first ? 'probe ready' : 'blocked'}; all blocks: ${all ? 'probe ready' : 'dependencies pending'}`,
|
|
80
|
+
};
|
package/dist/locale-projetos.js
CHANGED
|
@@ -26,6 +26,9 @@ exports.PROJETOS_PT_BR = {
|
|
|
26
26
|
'`ork network roadmap` (tool ork_network_roadmap).',
|
|
27
27
|
opcaoSemValor: '--projeto sem valor',
|
|
28
28
|
usoOpcao: 'Uso: --projeto <nome|caminho>; os nomes registrados estão em `ork projetos`.',
|
|
29
|
+
initNaoLeProjeto: 'uso: ork init cria o projeto no diretório atual; entre nele e rode ork init, sem --projeto',
|
|
30
|
+
mcpNaoLeProjeto: 'uso: o servidor MCP recebe a raiz por --project <raiz absoluta>, não por --projeto',
|
|
31
|
+
comandoNaoLeProjeto: (comando) => `uso: ork ${comando} não lê projeto; tire --projeto`,
|
|
29
32
|
hostCaminho: (valor) => `no host o projeto vem pelo nome registrado; o caminho "${valor}" não é aceito`,
|
|
30
33
|
hostUseNome: 'Use o nome de um projeto de `ork projetos` (ex.: --projeto orkastery).',
|
|
31
34
|
precisaEscolher: (total) => `${total} projetos conhecidos nesta máquina e nenhum foi pedido; o ork não escolhe pelo diretório do gateway`,
|
|
@@ -74,6 +77,9 @@ exports.PROJETOS_EN = {
|
|
|
74
77
|
'`ork network roadmap` (tool ork_network_roadmap).',
|
|
75
78
|
opcaoSemValor: '--projeto has no value',
|
|
76
79
|
usoOpcao: 'Usage: --projeto <name|path>; registered names are listed by `ork projetos`.',
|
|
80
|
+
initNaoLeProjeto: 'usage: ork init creates the project in the current directory; enter it and run ork init without --projeto',
|
|
81
|
+
mcpNaoLeProjeto: 'usage: the MCP server receives its root through --project <absolute root>, not --projeto',
|
|
82
|
+
comandoNaoLeProjeto: (command) => `usage: ork ${command} does not read a project; remove --projeto`,
|
|
77
83
|
hostCaminho: (value) => `on a host, select a project by its registered name; path "${value}" is not accepted`,
|
|
78
84
|
hostUseNome: 'Use a project name from `ork projetos` (for example: --projeto orkastery).',
|
|
79
85
|
precisaEscolher: (total) => `${total} projects are known on this machine and none was requested; ork does not choose from the gateway directory`,
|
package/dist/locale-prompts.js
CHANGED
|
@@ -31,15 +31,15 @@ exports.PROMPTS_PT_BR = {
|
|
|
31
31
|
'Passos irreversiveis (push, merge, delecao) so acontecem quando o modo autoriza.',
|
|
32
32
|
],
|
|
33
33
|
regraDasEsperas: 'Esperas: nunca dispare verify, build ou suite com `&` dentro do comando, porque o processo se perde e a sessao ' +
|
|
34
|
-
'espera um aviso que nunca vem;
|
|
35
|
-
'recursos pesados), ou use a execucao em segundo plano do host, que avisa quando termina; nunca espere com ' +
|
|
34
|
+
'espera um aviso que nunca vem; prefira `ork_verify` assíncrono e consulte `ork_verify_status` a cada 30–60 s; sem essa ' +
|
|
35
|
+
'ferramenta, rode o `ork verify` em primeiro plano, com `timeout` (ele espera a vez na fila de recursos pesados), ou use a execucao em segundo plano do host, que avisa quando termina; nunca espere com ' +
|
|
36
36
|
'`pgrep -f` cujo padrao aparece no proprio comando, porque o laco acha a si mesmo e nao termina: espere pelo ' +
|
|
37
37
|
'arquivo de saida com prazo, ou pelo PID guardado.',
|
|
38
38
|
fechoDoGo: (t) => [
|
|
39
39
|
'## Fecho obrigatório do GO',
|
|
40
40
|
'',
|
|
41
|
-
`Antes de encerrar o bloco com GO, rode \`ork verify ${t}\`
|
|
42
|
-
`
|
|
41
|
+
`Antes de encerrar o bloco com GO, use \`ork_verify\` e aguarde o veredito verde por \`ork_verify_status\`; sem a consulta assíncrona, rode \`ork verify ${t}\` em primeiro plano. Rode também o build declarado no manifesto em primeiro plano.`,
|
|
42
|
+
`Com o veredito verde, gere o bundle com \`ork ci prepare ${t}\`, faça o commit atômico final \`ci(${t}): bundle ...\` e siga para CHECK e SHIP conforme os gates.`,
|
|
43
43
|
`Grave \`.orkastery/threads/${t}/pr-body.md\` curto, no idioma do projeto, com o modo do CHECK da rodada (Agile Check ou Classic Check, da linha \`check\` do \`ork verify\`); ` +
|
|
44
44
|
'se o perfil não puder gravá-lo pelo transporte autorizado, devolva o corpo completo no resumo final.',
|
|
45
45
|
'O rito é idêntico em Claude Code e Codex. Ele fecha o GO, mas não autoriza SHIP, push, PR ou merge.',
|
|
@@ -125,14 +125,14 @@ exports.PROMPTS_EN = {
|
|
|
125
125
|
'Irreversible steps (push, merge, deletion) happen only when the mode authorizes them.',
|
|
126
126
|
],
|
|
127
127
|
regraDasEsperas: 'Waiting: never start verify, build, or a test suite with `&` inside the command; the process may be lost while the session ' +
|
|
128
|
-
'waits for a notice that never comes.
|
|
129
|
-
'or use the host background execution that reports completion. Never wait with `pgrep -f` when its pattern appears in the command itself; ' +
|
|
128
|
+
'waits for a notice that never comes. Prefer asynchronous `ork_verify` and query `ork_verify_status` every 30–60 seconds; without that ' +
|
|
129
|
+
'tool, run `ork verify` in the foreground with `timeout` (it waits for the heavy-resource queue), or use the host background execution that reports completion. Never wait with `pgrep -f` when its pattern appears in the command itself; ' +
|
|
130
130
|
'the loop finds itself and never ends. Wait for an output file with a deadline, or for a stored PID.',
|
|
131
131
|
fechoDoGo: (t) => [
|
|
132
132
|
'## Mandatory GO closing',
|
|
133
133
|
'',
|
|
134
|
-
`Before ending a block that includes GO, run \`ork verify ${t}\`
|
|
135
|
-
`
|
|
134
|
+
`Before ending a block that includes GO, use \`ork_verify\` and wait for its green verdict through \`ork_verify_status\`; without the asynchronous query, run \`ork verify ${t}\` in the foreground. Also run the manifest build in the foreground.`,
|
|
135
|
+
`After the green verdict, generate the bundle with \`ork ci prepare ${t}\`, make the final atomic commit \`ci(${t}): bundle ...\`, and continue to CHECK and SHIP as their gates allow.`,
|
|
136
136
|
`Write a short \`.orkastery/threads/${t}/pr-body.md\` in the project language, naming the CHECK mode of the round (Agile Check or Classic Check, from the \`check\` line of \`ork verify\`); ` +
|
|
137
137
|
'if the profile cannot write it through the authorized transport, return the full body in the final summary.',
|
|
138
138
|
'The ritual is identical in Claude Code and Codex. It closes GO, but it does not authorize SHIP, push, PR, or merge.',
|
package/dist/locale-pulse.js
CHANGED
|
@@ -192,7 +192,9 @@ exports.PULSE_PT_BR = {
|
|
|
192
192
|
'tree.blocked': 'a arvore de destino nao esta disponivel para o merge (branch em check-out com alteracao nao commitada, ou worktree que nao pode ser montada)',
|
|
193
193
|
'lease.busy': 'lease ocupado por outra thread',
|
|
194
194
|
'lease.resume-unavailable': 'retomada indisponivel; libere o lease explicitamente com --forcar',
|
|
195
|
+
'concurrency.lease-indeterminado': 'a vida do dono do lease nao pode ser provada deste host ou namespace; desconhecido nunca e orfao',
|
|
195
196
|
'conducao.em-andamento': 'outra conducao ja executa na worktree da thread (I-36): o pedido foi recusado com quem conduz e as tres acoes (esperar, acompanhar, assumir)',
|
|
197
|
+
'conducao.acao-necessaria': 'a sessao parou de proposito e deixou um comando exato para a conducao executar fora do sandbox',
|
|
196
198
|
'hitl.formato': 'o pedido HITL saiu fora do formato obrigatorio (pergunta em uma frase, de 3 a 5 alternativas rotuladas com consequencia, exatamente uma com o selo Recomendacao e o porque, corpo em lista; texto livre so com dependencia tecnica tipada)',
|
|
197
199
|
'human.pending': 'gate humano do modo de conducao ainda nao autorizou',
|
|
198
200
|
},
|
|
@@ -342,7 +344,9 @@ exports.PULSE_EN = {
|
|
|
342
344
|
'tree.blocked': 'the target tree is not available for the merge (branch checked out with uncommitted changes, or a worktree that cannot be set up)',
|
|
343
345
|
'lease.busy': 'lease held by another thread',
|
|
344
346
|
'lease.resume-unavailable': 'resume unavailable; release the lease explicitly with `--forcar`',
|
|
347
|
+
'concurrency.lease-indeterminado': 'the lease owner life cannot be proven from this host or namespace; unknown is never orphaned',
|
|
345
348
|
'conducao.em-andamento': 'another conduction already runs on the thread worktree (I-36): the request was refused with who conducts and the three actions (wait, follow, take over)',
|
|
349
|
+
'conducao.acao-necessaria': 'the session stopped on purpose and left an exact command for the conductor to run outside the sandbox',
|
|
346
350
|
'hitl.formato': 'the HITL request came out of the required format (question in one sentence, 3 to 5 labeled alternatives with a consequence each, exactly one with the Recommendation seal and the reason, body as a list; free text only with a typed technical dependency)',
|
|
347
351
|
'human.pending': 'the human gate of the conduction mode has not authorized yet',
|
|
348
352
|
},
|
package/dist/locale-retry.js
CHANGED
|
@@ -107,10 +107,18 @@ exports.RETRY_PT_BR = {
|
|
|
107
107
|
porque: 'o lease e de outra thread e vai ser liberado: a fila ja serializa, entao a acao e tentar de novo quando chegar a vez, nunca furar a fila',
|
|
108
108
|
correcao: 'ork lease list mostra a fila; a vez chega sem ninguem forcar',
|
|
109
109
|
},
|
|
110
|
+
'concurrency.lease-indeterminado': {
|
|
111
|
+
porque: 'o sandbox nao conseguiu provar se o dono do lease esta vivo ou morto: ausencia de PID visivel nao prova orfandade, e reexecutar poderia abrir duas operacoes pesadas',
|
|
112
|
+
correcao: 'espere com --esperar; se a observacao continuar inconclusiva, execute pela conducao o comando exato do pedido aberto',
|
|
113
|
+
},
|
|
110
114
|
'conducao.em-andamento': {
|
|
111
115
|
porque: 'outra conducao executa na mesma worktree agora: a vez chega quando ela terminar, e furar a fila e o incidente de 19/09/2026',
|
|
112
116
|
correcao: 'ork conducao status <thread> mostra quem conduz; repita o pedido com --esperar <min> para seguir sozinho quando liberar',
|
|
113
117
|
},
|
|
118
|
+
'conducao.acao-necessaria': {
|
|
119
|
+
porque: 'a sessao parou de proposito porque a proxima operacao exige a autoridade da conducao; reexecutar a fase antes desse comando so repete a mesma parada',
|
|
120
|
+
correcao: 'execute o comando exato do pedido no canal da conducao; depois retome a mesma fase',
|
|
121
|
+
},
|
|
114
122
|
'hitl.formato': {
|
|
115
123
|
porque: 'o pedido HITL saiu fora do formato obrigatorio: quem errou foi o emissor, e a correcao e reemitir com alternativas rotuladas, consequencia por alternativa e exatamente uma recomendada com o porque',
|
|
116
124
|
correcao: 'ork fix open <thread> abre a rodada com a spec exata do formato',
|
|
@@ -386,10 +394,18 @@ exports.RETRY_EN = {
|
|
|
386
394
|
porque: 'the lease belongs to another thread and will be released: the queue already serializes, so the action is to try again when the turn comes, never to jump the queue',
|
|
387
395
|
correcao: '`ork lease list` shows the queue; the turn comes with nobody forcing it',
|
|
388
396
|
},
|
|
397
|
+
'concurrency.lease-indeterminado': {
|
|
398
|
+
porque: 'the sandbox could not prove whether the lease owner is alive or dead: an invisible PID does not prove orphanhood, and rerunning could open two heavy operations',
|
|
399
|
+
correcao: 'wait with `--esperar`; if observation stays inconclusive, run the exact command from the open request through the conductor',
|
|
400
|
+
},
|
|
389
401
|
'conducao.em-andamento': {
|
|
390
402
|
porque: 'another conduction runs on the same worktree now: the turn comes when it finishes, and jumping the queue is the 2026-09-19 incident',
|
|
391
403
|
correcao: '`ork conducao status <thread>` shows who conducts; repeat the request with `--esperar <min>` to go on by itself when it frees up',
|
|
392
404
|
},
|
|
405
|
+
'conducao.acao-necessaria': {
|
|
406
|
+
porque: 'the session stopped on purpose because the next operation needs conductor authority; rerunning the phase before that command only repeats the same stop',
|
|
407
|
+
correcao: 'run the exact request command in the conductor channel; then resume the same phase',
|
|
408
|
+
},
|
|
393
409
|
'hitl.formato': {
|
|
394
410
|
porque: 'the HITL request came out of the required format: the issuer made the mistake, and the fix is to issue it again with labeled alternatives, a consequence per alternative and exactly one recommended, with the reason',
|
|
395
411
|
correcao: '`ork fix open <thread>` opens the round with the exact format spec',
|
|
@@ -2,15 +2,47 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* The `securityScan` family of the message catalog: `ork security-scan` output (stdout summary, `report.md`) and its
|
|
4
4
|
* usage error. pt-BR is the source; English is typed by it. No import from the core. Values that are data (tool names,
|
|
5
|
-
* states, reasons, rule ids, paths)
|
|
5
|
+
* states, reasons, rule ids, paths) remain unchanged in report.json. The human render translates the known reason
|
|
6
|
+
* vocabulary without rewriting the stored data.
|
|
6
7
|
*/
|
|
7
8
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
9
|
exports.SECURITY_SCAN_EN = exports.SECURITY_SCAN_PT_BR = void 0;
|
|
10
|
+
const motivoEmPtBR = (reason) => {
|
|
11
|
+
const exact = new Map([
|
|
12
|
+
['not in the catalog', 'não está no catálogo'], ['unbalanced JSON', 'JSON desbalanceado'],
|
|
13
|
+
['truncated JSON', 'JSON truncado'], ['empty stream', 'fluxo vazio'], ['invalid JSON', 'JSON inválido'],
|
|
14
|
+
['expected a JSON array', 'era esperado um array JSON'], ['expected a JSON object', 'era esperado um objeto JSON'],
|
|
15
|
+
['unreadable output', 'saída ilegível'], ['commit-range-unresolved', 'intervalo de commits não resolvido'],
|
|
16
|
+
['timeout', 'tempo esgotado'], ['no-requirements-file', 'nenhum arquivo requirements'],
|
|
17
|
+
['zero-commits-scanned', 'nenhum commit varrido'], ['disabled', 'desabilitada'], ['unsupported-ci', 'CI não suportada'],
|
|
18
|
+
]);
|
|
19
|
+
const conhecida = exact.get(reason);
|
|
20
|
+
if (conhecida !== undefined)
|
|
21
|
+
return conhecida;
|
|
22
|
+
return reason
|
|
23
|
+
.replace(/not in the catalog/g, 'não está no catálogo')
|
|
24
|
+
.replace(/unbalanced JSON/g, 'JSON desbalanceado')
|
|
25
|
+
.replace(/truncated JSON/g, 'JSON truncado')
|
|
26
|
+
.replace(/empty stream/g, 'fluxo vazio')
|
|
27
|
+
.replace(/invalid JSON/g, 'JSON inválido')
|
|
28
|
+
.replace(/expected a JSON array/g, 'era esperado um array JSON')
|
|
29
|
+
.replace(/expected a JSON object/g, 'era esperado um objeto JSON')
|
|
30
|
+
.replace(/unexpected "([^"]+)" outside a JSON value/g, '"$1" inesperado fora de um valor JSON')
|
|
31
|
+
.replace(/missing key "([^"]+)"/g, 'chave "$1" ausente')
|
|
32
|
+
.replace(/tool reported "([^"]+)"/g, 'a ferramenta relatou "$1"')
|
|
33
|
+
.replace(/must be a list of strings/g, 'deve ser uma lista de strings')
|
|
34
|
+
.replace(/expected an object/g, 'era esperado um objeto')
|
|
35
|
+
.replace(/expected a list/g, 'era esperada uma lista')
|
|
36
|
+
.replace(/\(no fingerprint\)/g, '(sem fingerprint)')
|
|
37
|
+
.replace(/missing-output/g, 'saída-ausente');
|
|
38
|
+
};
|
|
9
39
|
exports.SECURITY_SCAN_PT_BR = {
|
|
10
40
|
usage: 'uso: ork security-scan [--base <ref>] [--json] [--check classic|agile]',
|
|
11
41
|
// RM-072 (D9): o modo da varredura aceita so os dois valores.
|
|
12
42
|
checkInvalido: (valor) => `--check inválido: ${valor === null ? '(sem valor)' : JSON.stringify(valor)} (aceitos: classic, agile)`,
|
|
13
43
|
unknownFlag: (flag) => `opção desconhecida: ${flag}`,
|
|
44
|
+
error: (message) => motivoEmPtBR(message),
|
|
45
|
+
reason: (reason) => motivoEmPtBR(reason),
|
|
14
46
|
// report.md
|
|
15
47
|
title: 'Varredura de segurança',
|
|
16
48
|
headBase: (head, base) => `HEAD \`${head.slice(0, 12)}\`, base \`${base ? base.slice(0, 12) : '(não resolvida)'}\``,
|
|
@@ -42,6 +74,8 @@ exports.SECURITY_SCAN_EN = {
|
|
|
42
74
|
usage: 'usage: ork security-scan [--base <ref>] [--json] [--check classic|agile]',
|
|
43
75
|
checkInvalido: (valor) => `invalid --check: ${valor === null ? '(no value)' : JSON.stringify(valor)} (accepted: classic, agile)`,
|
|
44
76
|
unknownFlag: (flag) => `unknown option: ${flag}`,
|
|
77
|
+
error: (message) => message,
|
|
78
|
+
reason: (reason) => reason,
|
|
45
79
|
title: 'Security scan',
|
|
46
80
|
headBase: (head, base) => `HEAD \`${head.slice(0, 12)}\`, base \`${base ? base.slice(0, 12) : '(unresolved)'}\``,
|
|
47
81
|
generatedAt: (iso) => `Generated at ${iso}`,
|