@orkastery/cli 0.6.0 → 0.6.2
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/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/openclaw/openclaw.plugin.json +1 -1
- package/adapters/openclaw/package.json +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/orkmind_fixture.py +4 -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 +9 -7
- package/dist/adapters/grok-events.js +227 -0
- package/dist/adapters/grok-mcp-servidor.js +622 -0
- package/dist/adapters/grok-mcp.js +178 -0
- package/dist/adapters/grok.js +686 -0
- package/dist/agendador-cpu.js +92 -0
- package/dist/branch-de-estado.js +7 -2
- package/dist/changelog-check.js +217 -0
- package/dist/check-agil.js +289 -25
- package/dist/check-paralelo.js +73 -18
- package/dist/ci.js +3 -2
- package/dist/claim-lint.js +29 -0
- package/dist/claims.js +4 -0
- package/dist/conducao.js +5 -0
- package/dist/docs.js +16 -16
- package/dist/doctor-forja.js +1 -3
- package/dist/doctor.js +1 -1
- package/dist/entrega-pr.js +10 -10
- package/dist/fabrica-estado.js +20 -11
- package/dist/fila-pesada.js +121 -11
- package/dist/hitl-classificacao.js +1 -0
- package/dist/horario.js +4 -1
- package/dist/index.js +63 -35
- package/dist/integracoes-locais.js +2 -0
- package/dist/intelligence-graph-cli.js +27 -9
- package/dist/locale-accounts.js +11 -3
- package/dist/locale-ajuda.js +10 -6
- package/dist/locale-claims.js +16 -2
- package/dist/locale-forja.js +2 -4
- 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 +2 -2
- 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 +56 -2
- package/dist/locale-security-scan.js +35 -1
- package/dist/locale-ship.js +10 -2
- package/dist/locale-verify.js +15 -0
- package/dist/locale.js +24 -7
- package/dist/maestro-cli.js +12 -17
- package/dist/manifest.js +6 -1
- package/dist/mcp-install.js +24 -13
- package/dist/mcp-server.js +62 -33
- 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/merge-da-entrega.js +85 -0
- package/dist/network-roadmap.js +18 -14
- package/dist/noctum-aceite.js +154 -14
- package/dist/noctum-cli.js +69 -12
- package/dist/noctum-entrega.js +55 -7
- package/dist/noctum-envelope.js +1 -1
- package/dist/noctum-execucao.js +5 -1
- package/dist/noctum-fechamento.js +18 -7
- package/dist/noctum-fila.js +6 -1
- package/dist/noctum-guarda.js +81 -4
- package/dist/noctum-maquinas.js +5 -1
- package/dist/noctum-modo.js +35 -7
- package/dist/noctum-reconciliacao.js +4 -1
- package/dist/noctum-rede.js +102 -0
- package/dist/noctum-relatorio.js +44 -10
- package/dist/noctum-retomada-rede.js +71 -0
- package/dist/noctum-vigia.js +49 -9
- package/dist/parado-no-condutor.js +14 -15
- package/dist/pedido-conducao.js +51 -0
- package/dist/phase.js +43 -15
- package/dist/postura-local.js +7 -3
- package/dist/preflight.js +27 -27
- package/dist/prompts.js +4 -2
- package/dist/pulse.js +4 -2
- package/dist/ratelimit.js +1 -0
- package/dist/rede.js +24 -12
- package/dist/retry.js +115 -10
- package/dist/runtime-context.js +165 -45
- package/dist/runtime-escada.js +7 -1
- package/dist/runtime-profiles.js +27 -17
- package/dist/runtimes.js +42 -5
- package/dist/security-scan/agil.js +18 -7
- package/dist/security-scan/cli.js +2 -2
- package/dist/security-scan/executor.js +8 -0
- package/dist/security-scan/report.js +1 -1
- package/dist/session-watcher-grok.js +425 -0
- package/dist/session-watcher.js +52 -11
- package/dist/sessoes-contas.js +33 -5
- package/dist/setup.js +11 -11
- package/dist/varredura-acoes.js +8 -15
- package/dist/verify.js +191 -43
- package/package.json +2 -2
- 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/index.js
CHANGED
|
@@ -146,6 +146,7 @@ const setup_1 = require("./setup");
|
|
|
146
146
|
const runtime_profiles_1 = require("./runtime-profiles");
|
|
147
147
|
const claude_bg_1 = require("./adapters/claude-bg");
|
|
148
148
|
const codex_1 = require("./adapters/codex");
|
|
149
|
+
const grok_1 = require("./adapters/grok");
|
|
149
150
|
const conducao_1 = require("./conducao");
|
|
150
151
|
const conducao_sentinela_1 = require("./conducao-sentinela");
|
|
151
152
|
const autorizacao_duravel_1 = require("./autorizacao-duravel");
|
|
@@ -632,11 +633,12 @@ function comandoOnboarding(args) {
|
|
|
632
633
|
if (sub === 'reset' && (args.posicionais.length > 3 || 'conteudo' in args.opcoes))
|
|
633
634
|
invalido();
|
|
634
635
|
if (sub === 'sync' && 'por' in args.opcoes)
|
|
635
|
-
throw new Error(
|
|
636
|
+
throw new Error((0, locale_1.msg)().onboarding.syncPor);
|
|
636
637
|
const carregado = (0, manifest_1.exigirManifesto)(), raiz = carregado.raiz, por = texto(args.opcoes.por) ?? 'owner';
|
|
637
638
|
if (sub === 'sync') {
|
|
638
|
-
const r = (0, memoria_1.sincronizarOnboarding)(carregado);
|
|
639
|
-
console.log(args.opcoes.json === true ? JSON.stringify(r, null, 2)
|
|
639
|
+
const r = (0, locale_1.comLocale)('pt-BR', () => (0, memoria_1.sincronizarOnboarding)(carregado));
|
|
640
|
+
console.log(args.opcoes.json === true ? JSON.stringify(r, null, 2)
|
|
641
|
+
: (0, locale_1.msg)().onboarding.syncResultado(r.regime, r.motivo, r.respondidas, r.gravadas, r.duplicadas, r.falhas));
|
|
640
642
|
return 0;
|
|
641
643
|
}
|
|
642
644
|
let estado;
|
|
@@ -663,8 +665,9 @@ function comandoOnboarding(args) {
|
|
|
663
665
|
}
|
|
664
666
|
/**
|
|
665
667
|
* I-33 (D8): `ork accounts list|add|remove|check`. O login e sempre do proprio CLI com o env do
|
|
666
|
-
* perfil (`claude auth login`, `codex login`); o `ork` so guarda identidade,
|
|
667
|
-
* nunca le, copia ou migra o que o CLI grava
|
|
668
|
+
* perfil (`claude auth login`, `codex login`, `grok login [--device-auth]`); o `ork` so guarda identidade,
|
|
669
|
+
* diretorio e estado, nunca le, copia ou migra o que o CLI grava (o `auth.json` do grok inclusive). A lista
|
|
670
|
+
* nao tem segredo porque o store nao tem.
|
|
668
671
|
*/
|
|
669
672
|
/** A8: valor citado para colar no shell: aspas simples, e a aspa simples do proprio valor fechada e reaberta. */
|
|
670
673
|
function aspasDeShell(valor) {
|
|
@@ -685,7 +688,8 @@ function comandoAccounts(args) {
|
|
|
685
688
|
const raiz = carregado.raiz;
|
|
686
689
|
const sub = args.posicionais[1] ?? 'list';
|
|
687
690
|
// RM-061 (F3b, GO-FIX 1): a conferencia roda no escopo pt-BR (o detalhe vai ao store), e a impressao o traduz.
|
|
688
|
-
const conferir = (p) => (0, locale_1.comLocale)('pt-BR', () => p.runtime === 'claude-bg' ? (0, claude_bg_1.conferirAuth)(p)
|
|
691
|
+
const conferir = (p) => (0, locale_1.comLocale)('pt-BR', () => p.runtime === 'claude-bg' ? (0, claude_bg_1.conferirAuth)(p)
|
|
692
|
+
: p.runtime === 'grok' ? (0, grok_1.conferirAuth)(p) : (0, codex_1.conferirAuth)(p));
|
|
689
693
|
const detalhe = (auth) => ma.detalheDoLogin((0, locale_1.remontar)(auth.detalhe));
|
|
690
694
|
// RM-061 (F3b, D3): o texto pelo catalogo; o que se grava (store de perfis, registro de contas) roda no escopo pt-BR,
|
|
691
695
|
// e o id, o runtime, o diretorio, o motivo tipado e o detalhe que o CLI do runtime devolve saem como vieram.
|
|
@@ -709,7 +713,9 @@ function comandoAccounts(args) {
|
|
|
709
713
|
}
|
|
710
714
|
if (sub === 'add') {
|
|
711
715
|
const id = args.posicionais[2], runtime = texto(args.opcoes.runtime), dirBruto = texto(args.opcoes.dir);
|
|
712
|
-
|
|
716
|
+
// RM-067 (F3): o codigo de dispositivo e do login do grok; nos outros runtimes, a opcao e recusada.
|
|
717
|
+
const dispositivo = args.opcoes['device-auth'] === true;
|
|
718
|
+
if (!id || !runtime || !dirBruto || (dispositivo && runtime !== 'grok')) {
|
|
713
719
|
console.error(ma.usoAdd);
|
|
714
720
|
return 2;
|
|
715
721
|
}
|
|
@@ -730,10 +736,13 @@ function comandoAccounts(args) {
|
|
|
730
736
|
const despacho = (0, runtime_profiles_1.perfilDeDespacho)(perfil);
|
|
731
737
|
const variavel = runtime_profiles_1.VARIAVEL_DO_PERFIL[perfil.runtime];
|
|
732
738
|
// D13: o login do claude e fixado na assinatura (`--claudeai`), nunca no Console de API.
|
|
733
|
-
|
|
739
|
+
// RM-067 (F3, D1 b): o grok entra pela assinatura, no login do proprio CLI (navegador ou codigo de dispositivo).
|
|
740
|
+
const comando = perfil.runtime === 'claude-bg' ? ['claude', 'auth', 'login', '--claudeai']
|
|
741
|
+
: perfil.runtime === 'grok' ? (0, grok_1.comandoDeLogin)(dispositivo) : ['codex', 'login'];
|
|
734
742
|
if (args.opcoes['sem-login'] !== true && process.stdin.isTTY && process.stdout.isTTY) {
|
|
735
743
|
// Login interativo do proprio CLI, com o env do perfil sobre a assinatura higienizada.
|
|
736
|
-
const env = perfil.runtime === 'claude-bg' ? (0, claude_bg_1.ambienteDoPerfil)(despacho)
|
|
744
|
+
const env = perfil.runtime === 'claude-bg' ? (0, claude_bg_1.ambienteDoPerfil)(despacho)
|
|
745
|
+
: perfil.runtime === 'grok' ? (0, grok_1.ambienteDoFilho)({ perfil: despacho }) : (0, codex_1.ambienteDoDespacho)(process.env, despacho);
|
|
737
746
|
(0, node_child_process_1.spawnSync)(comando[0], comando.slice(1), { stdio: 'inherit', env });
|
|
738
747
|
}
|
|
739
748
|
else {
|
|
@@ -745,7 +754,7 @@ function comandoAccounts(args) {
|
|
|
745
754
|
(0, locale_1.comLocale)('pt-BR', () => (0, runtime_profiles_1.marcarFalhaDePerfil)(raiz, id, auth.pago
|
|
746
755
|
? { estado: 'provider-pago', esgotadoAte: null, motivo: 'cost.violation', detalhe: auth.detalhe }
|
|
747
756
|
: { estado: 'sem-auth', esgotadoAte: null, motivo: 'runtime.auth-missing', detalhe: auth.detalhe }));
|
|
748
|
-
console.log(ma.resultadoAdd(id, perfil.runtime, dir, auth.ok ? ma.conferido
|
|
757
|
+
console.log(ma.resultadoAdd(id, perfil.runtime, dir, auth.semConferencia ? ma.semConferenciaAdd(detalhe(auth)) : auth.ok ? ma.conferido
|
|
749
758
|
: auth.transitorio ? ma.inconclusivaAdd(detalhe(auth))
|
|
750
759
|
: auth.pago ? ma.pagoAdd(detalhe(auth)) : ma.semLoginAdd(detalhe(auth))));
|
|
751
760
|
return 0;
|
|
@@ -779,7 +788,8 @@ function comandoAccounts(args) {
|
|
|
779
788
|
for (const p of perfis) {
|
|
780
789
|
const auth = conferir((0, runtime_profiles_1.perfilDeDespacho)(p));
|
|
781
790
|
(0, locale_1.comLocale)('pt-BR', () => {
|
|
782
|
-
|
|
791
|
+
// RM-067 (F3): sem conferencia (grok), o estado fica: so o login que o proprio CLI confere devolve o perfil.
|
|
792
|
+
if (auth.ok && !auth.semConferencia && (p.estado === 'sem-auth' || p.estado === 'provider-pago'))
|
|
783
793
|
(0, runtime_profiles_1.reativarPerfil)(raiz, p.id);
|
|
784
794
|
if (!auth.ok && auth.transitorio)
|
|
785
795
|
(0, runtime_profiles_1.registrarConferenciaInconclusiva)(raiz, p.id, auth.detalhe);
|
|
@@ -804,7 +814,7 @@ function comandoAccounts(args) {
|
|
|
804
814
|
volta ? ma.voltaEm((0, horario_1.formatarDataHoraRotulada)(volta)) : ma.voltaSemMedida,
|
|
805
815
|
...(expirados.has(p.id) ? [ma.marcaExpirada] : []),
|
|
806
816
|
].join('; ');
|
|
807
|
-
console.log(`${ma.resultadoCheck(p.id, p.runtime, auth.ok ? ma.conferido
|
|
817
|
+
console.log(`${ma.resultadoCheck(p.id, p.runtime, auth.semConferencia ? ma.semConferenciaCheck(detalhe(auth)) : auth.ok ? ma.conferido
|
|
808
818
|
: auth.transitorio ? ma.inconclusivaCheck(detalhe(auth))
|
|
809
819
|
: auth.pago ? ma.pagoCheck(detalhe(auth)) : ma.semLoginCheck(detalhe(auth)))}; ${operacional}`);
|
|
810
820
|
}
|
|
@@ -3033,7 +3043,7 @@ function comandoMaster(args) {
|
|
|
3033
3043
|
return 0;
|
|
3034
3044
|
}
|
|
3035
3045
|
if (sub !== 'enviar')
|
|
3036
|
-
throw new Error(
|
|
3046
|
+
throw new Error((0, locale_1.msg)().cli.masterDigestUso);
|
|
3037
3047
|
const r = (0, master_digest_1.enviarDigest)({ raiz: carregado.raiz });
|
|
3038
3048
|
console.log(JSON.stringify(r, null, 2));
|
|
3039
3049
|
return r.code;
|
|
@@ -3053,14 +3063,14 @@ function comandoMaster(args) {
|
|
|
3053
3063
|
const partes = (texto(args.opcoes.resposta) ?? '').trim().split(/\s+/);
|
|
3054
3064
|
const classe = (0, master_2.parseClasse)(partes[3]);
|
|
3055
3065
|
if (partes.length !== 4 || partes[0] !== 'ratificar' || !classe)
|
|
3056
|
-
throw new Error(
|
|
3066
|
+
throw new Error((0, locale_1.msg)().cli.masterRatificarUso);
|
|
3057
3067
|
selecao = [{ thread: partes[1], assinatura: partes[2], classe }];
|
|
3058
3068
|
}
|
|
3059
3069
|
else {
|
|
3060
3070
|
selecao = (texto(args.opcoes.aceitar) ?? '').split(',').map(v => {
|
|
3061
3071
|
const partes = v.trim().split(':');
|
|
3062
3072
|
if (partes.length !== 2 || !/^[a-f0-9]{64}$/.test(partes[1]))
|
|
3063
|
-
throw new Error(
|
|
3073
|
+
throw new Error((0, locale_1.msg)().cli.masterSelecaoUso);
|
|
3064
3074
|
return { thread: partes[0], assinatura: partes[1] };
|
|
3065
3075
|
});
|
|
3066
3076
|
}
|
|
@@ -3402,7 +3412,9 @@ function comandoDocs(args) {
|
|
|
3402
3412
|
if (sub === 'verificar') {
|
|
3403
3413
|
// RM-037 (fatia 3, GO-FIX 2): o CI passa --pr no pull_request; no push da main as duas regras novas reprovam.
|
|
3404
3414
|
// RM-061 (F3b, G4): verifica no escopo pt-BR, como o `--json` leva os achados; o texto os remonta no locale do comando.
|
|
3405
|
-
const
|
|
3415
|
+
const threadDaWorktree = (0, docs_1.escopoPadraoDoSync)(raiz).thread;
|
|
3416
|
+
const baseCarimbada = threadDaWorktree ? (0, thread_1.lerThread)(raiz, threadDaWorktree).base?.commit : undefined;
|
|
3417
|
+
const { docs, achados } = (0, locale_1.comLocale)('pt-BR', () => (0, docs_1.verificarDocs)(raiz, { baseBranch, baseCarimbada, ajudaDoCli: AJUDA, pr: args.opcoes.pr === true }));
|
|
3406
3418
|
if (args.opcoes.json === true) {
|
|
3407
3419
|
console.log(JSON.stringify({ paginas: docs.length, erros: achados.filter((a) => a.gravidade === 'erro').length,
|
|
3408
3420
|
achados }, null, 2));
|
|
@@ -4426,8 +4438,10 @@ function executarComando(argvBruto) {
|
|
|
4426
4438
|
const projeto = proprio ? undefined : extraida.projeto;
|
|
4427
4439
|
// Helper fixo do host confiável: o projeto vem da instalação, nunca de toolargs.
|
|
4428
4440
|
if (argv[0] === 'receipt-verifiers') {
|
|
4429
|
-
if (argv.length !== 2 || argv[1] !== '--json' || projeto !== undefined)
|
|
4430
|
-
|
|
4441
|
+
if (argv.length !== 2 || argv[1] !== '--json' || projeto !== undefined) {
|
|
4442
|
+
(0, locale_1.ativarLocale)(localeDaAjuda());
|
|
4443
|
+
throw new locale_1.ErroDoCatalogo((m) => m.cli.receiptVerifiersUso);
|
|
4444
|
+
}
|
|
4431
4445
|
const root = process.env.ORK_HITL_ROOT;
|
|
4432
4446
|
const privateKey = Object.keys(process.env).some(name => /^ORK_HITL_(?:INGRESS_KEY|NATIVE_KEY)/.test(name));
|
|
4433
4447
|
if (root !== undefined || privateKey) {
|
|
@@ -4443,13 +4457,14 @@ function executarComando(argvBruto) {
|
|
|
4443
4457
|
return 0;
|
|
4444
4458
|
}
|
|
4445
4459
|
if (argv[0] === 'maestro') {
|
|
4460
|
+
const textos = (0, locale_1.msg)(localeDaAjuda(projeto)).maestro;
|
|
4446
4461
|
if (argv.length === 2 && argv[1] === '--help')
|
|
4447
|
-
return (0, maestro_cli_1.runMaestroCli)(argv.slice(1));
|
|
4462
|
+
return (0, maestro_cli_1.runMaestroCli)(argv.slice(1), process.cwd(), {}, undefined, textos);
|
|
4448
4463
|
// RM-052: o alvo explicito vira SELECAO entre as raizes permitidas; sem ele, o cwd de sempre. O
|
|
4449
4464
|
// snapshot ja declara o projeto consultado (project.root, notConsulted): sem a linha da fatia 2.
|
|
4450
4465
|
const alvo = fixarAlvoDoProcesso(projeto, false);
|
|
4451
|
-
return alvo ? (0, maestro_cli_1.runMaestroCli)(argv.slice(1), alvo.raiz, { allowedRoots: [alvo.raiz], selected: alvo.raiz })
|
|
4452
|
-
: (0, maestro_cli_1.runMaestroCli)(argv.slice(1));
|
|
4466
|
+
return alvo ? (0, maestro_cli_1.runMaestroCli)(argv.slice(1), alvo.raiz, { allowedRoots: [alvo.raiz], selected: alvo.raiz }, undefined, textos)
|
|
4467
|
+
: (0, maestro_cli_1.runMaestroCli)(argv.slice(1), process.cwd(), {}, undefined, textos);
|
|
4453
4468
|
}
|
|
4454
4469
|
const args = parseArgs(argv);
|
|
4455
4470
|
const comando = args.posicionais[0];
|
|
@@ -4463,14 +4478,21 @@ function executarComando(argvBruto) {
|
|
|
4463
4478
|
console.log((0, locale_1.msg)().ajuda.texto(dadosDaAjuda()));
|
|
4464
4479
|
return 0;
|
|
4465
4480
|
}
|
|
4481
|
+
// F3e (D2): a recusa do projeto-alvo e os usos das rotas cobertas acontecem antes do manifesto efetivo.
|
|
4482
|
+
// Resolva a lingua aqui; `--json` continua fora e um `mcp serve` valido desliga o locale antes de servir.
|
|
4483
|
+
if ((0, locale_1.cobreLocale)(args.posicionais, args.opcoes)) {
|
|
4484
|
+
(0, locale_1.ativarLocale)(localeDaAjuda(projeto));
|
|
4485
|
+
(0, locale_1.ligarRemontagem)(true);
|
|
4486
|
+
}
|
|
4466
4487
|
if (!COMANDOS_SEM_PROJETO.has(comando) && !proprio) {
|
|
4467
4488
|
fixarAlvoDoProcesso(projeto, !SEM_DECLARACAO_DO_PROJETO.has(`${comando} ${args.posicionais[1] ?? ''}`.trim()));
|
|
4468
4489
|
}
|
|
4469
4490
|
else if (projeto !== undefined && comando !== 'projetos') {
|
|
4491
|
+
const mp = (0, locale_1.msg)().projetos;
|
|
4470
4492
|
throw new Error(comando === 'init'
|
|
4471
|
-
?
|
|
4472
|
-
: comando === 'mcp' ?
|
|
4473
|
-
:
|
|
4493
|
+
? mp.initNaoLeProjeto
|
|
4494
|
+
: comando === 'mcp' ? mp.mcpNaoLeProjeto
|
|
4495
|
+
: mp.comandoNaoLeProjeto(comando));
|
|
4474
4496
|
}
|
|
4475
4497
|
const nomesHerdados = (0, runtime_ambiente_1.nomesDeProviderAtivos)();
|
|
4476
4498
|
const ambienteManifesto = (0, manifest_1.carregarManifesto)();
|
|
@@ -4486,10 +4508,6 @@ function executarComando(argvBruto) {
|
|
|
4486
4508
|
// CLI por locale (RM-061, EN1 e EN7): a escolha do onboarding (owner.language) ou o LC_ALL/LC_MESSAGES/LANG
|
|
4487
4509
|
// decidem a lingua do TEXTO dos comandos cobertos (`cobreLocale`); `--json` e contrato, e os recortes ainda
|
|
4488
4510
|
// fora do catalogo (`doctor --modo` e os subcomandos fora da lista) ficam em pt-BR.
|
|
4489
|
-
if ((0, locale_1.cobreLocale)(args.posicionais, args.opcoes)) {
|
|
4490
|
-
(0, locale_1.ativarLocale)((0, locale_1.resolverLocale)(ambienteManifesto?.manifesto.owner?.language).locale);
|
|
4491
|
-
(0, locale_1.ligarRemontagem)(true);
|
|
4492
|
-
}
|
|
4493
4511
|
switch (comando) {
|
|
4494
4512
|
case 'mcp': {
|
|
4495
4513
|
const projeto = texto(args.opcoes.project), host = texto(args.opcoes.host), threadId = texto(args.opcoes.thread);
|
|
@@ -4501,8 +4519,9 @@ function executarComando(argvBruto) {
|
|
|
4501
4519
|
const permissoesFilho = texto(args.opcoes['child-permissions']) ?? 'interactive';
|
|
4502
4520
|
const permissoesDono = texto(args.opcoes['owner-permissions']);
|
|
4503
4521
|
const acao = args.posicionais[1];
|
|
4522
|
+
// RM-067 (F4b): o grok e host do install e do serve; o servidor dele recusa sem --thread (so a sessao filha).
|
|
4504
4523
|
if (args.posicionais.length !== 2 || !['serve', 'install'].includes(acao) || !projeto ||
|
|
4505
|
-
(host !== 'codex' && host !== 'claude-code') ||
|
|
4524
|
+
(host !== 'codex' && host !== 'claude-code' && host !== 'grok') ||
|
|
4506
4525
|
Object.keys(args.opcoes).some(k => !['project', 'host', 'ship-transport', 'child-permissions', ...(acao === 'install' ? ['dry-run', 'owner-permissions', 'ssh-fingerprint'] : ['thread', 'dispatch'])].includes(k)) ||
|
|
4507
4526
|
(args.opcoes.dispatch !== undefined && (!threadId || !dispatchId || !/^[a-f0-9-]{36}$/.test(dispatchId))) ||
|
|
4508
4527
|
argv.filter(a => a === '--ship-transport' || a.startsWith('--ship-transport=')).length > 1 ||
|
|
@@ -4525,6 +4544,9 @@ function executarComando(argvBruto) {
|
|
|
4525
4544
|
.catch(e => { console.error((0, locale_1.msg)().operacao.restante.mcp.erro(e.message)); process.exitCode = 1; });
|
|
4526
4545
|
return 0;
|
|
4527
4546
|
}
|
|
4547
|
+
// O servidor e contrato com hosts e nao ganha uma moldura inglesa por herdar o locale do erro de uso.
|
|
4548
|
+
(0, locale_1.ativarLocale)(undefined);
|
|
4549
|
+
(0, locale_1.ligarRemontagem)(false);
|
|
4528
4550
|
void Promise.resolve().then(() => __importStar(require('./mcp-server'))).then(({ servirMcp }) => servirMcp({ projeto, host, threadId, dispatchId, nomesProviderHerdados: nomesHerdados, transporteShip: transporteShip, permissoesFilho: permissoesFilho })).catch(e => { console.error(`mcp: ${e.message}`); process.exitCode = 1; });
|
|
4529
4551
|
return 0;
|
|
4530
4552
|
}
|
|
@@ -4533,7 +4555,7 @@ function executarComando(argvBruto) {
|
|
|
4533
4555
|
const bruto = texto(args.opcoes.modo);
|
|
4534
4556
|
if (args.posicionais.length !== 1 || !bruto ||
|
|
4535
4557
|
Object.keys(args.opcoes).some(k => k !== 'modo') || argv.filter(a => a === '--modo' || a.startsWith('--modo=')).length !== 1)
|
|
4536
|
-
throw Error(
|
|
4558
|
+
throw Error((0, locale_1.msg)().doctor.modoUso(modos_1.ORDEM_DOS_MODOS.join('|')));
|
|
4537
4559
|
const r = (0, preflight_1.preflight)((0, manifest_1.diretorioDoProjeto)(), (0, modos_1.exigirModoVivo)(bruto), nomesHerdados);
|
|
4538
4560
|
console.log((0, preflight_1.textoPreflight)(r));
|
|
4539
4561
|
return r.prontoPrimeiroBloco ? 0 : 1;
|
|
@@ -4669,10 +4691,9 @@ function executarComando(argvBruto) {
|
|
|
4669
4691
|
if (!host || !['claude-code', 'codex'].includes(host) || args.posicionais.length !== 3 ||
|
|
4670
4692
|
Object.keys(args.opcoes).some(k => !['dry-run', 'json'].includes(k)) ||
|
|
4671
4693
|
Object.values(args.opcoes).some(v => v !== true))
|
|
4672
|
-
throw Error(
|
|
4694
|
+
throw Error((0, locale_1.msg)().onboarding.experienciaUninstallUso);
|
|
4673
4695
|
const r = (0, hosts_2.desinstalarExperiencia)((0, manifest_1.exigirManifesto)().raiz, host, args.opcoes['dry-run'] === true);
|
|
4674
|
-
console.log(args.opcoes.json ? JSON.stringify(r, null, 2) :
|
|
4675
|
-
`${r.dryRun ? 'Simulação de remoção' : 'Remoção concluída'}: ${r.arquivos.length} arquivo(s). O adaptador permanece instalado. Para manter o pacote desativado, configure owner.experience:false no onboarding.`);
|
|
4696
|
+
console.log(args.opcoes.json ? JSON.stringify(r, null, 2) : (0, locale_1.msg)().onboarding.experienciaUninstall(r.dryRun, r.arquivos.length));
|
|
4676
4697
|
return 0;
|
|
4677
4698
|
}
|
|
4678
4699
|
if ((args.posicionais[1] ?? 'show') !== 'show' || args.posicionais.length > 2 ||
|
|
@@ -4763,7 +4784,7 @@ function executarComando(argvBruto) {
|
|
|
4763
4784
|
case 'recall':
|
|
4764
4785
|
return comandoRecall(args);
|
|
4765
4786
|
case 'brain': {
|
|
4766
|
-
const result = (0, company_brain_cli_1.runBrain)((0, manifest_1.exigirManifesto)(), args.posicionais[1] ?? 'status', args.opcoes, args.posicionais.slice(2));
|
|
4787
|
+
const result = (0, locale_1.comLocale)('pt-BR', () => (0, company_brain_cli_1.runBrain)((0, manifest_1.exigirManifesto)(), args.posicionais[1] ?? 'status', args.opcoes, args.posicionais.slice(2)));
|
|
4767
4788
|
console.log(JSON.stringify(result, null, 2));
|
|
4768
4789
|
return ['ok', 'empty', 'unknown', 'withheld', 'applied', 'rolled-back'].includes(result.state) ? 0 : 1;
|
|
4769
4790
|
}
|
|
@@ -4791,7 +4812,14 @@ function executarComando(argvBruto) {
|
|
|
4791
4812
|
case 'ship':
|
|
4792
4813
|
return comandoShip(args);
|
|
4793
4814
|
case 'activation':
|
|
4794
|
-
|
|
4815
|
+
try {
|
|
4816
|
+
return (0, locale_1.comLocale)('pt-BR', () => (0, write_activation_1.comandoAtivacao)((0, manifest_1.exigirManifesto)(), args));
|
|
4817
|
+
}
|
|
4818
|
+
catch (e) {
|
|
4819
|
+
if (e.message === 'uso: ork activation plan|status|enable|disable')
|
|
4820
|
+
throw new locale_1.ErroDoCatalogo((m) => m.cli.activationUso);
|
|
4821
|
+
throw e;
|
|
4822
|
+
}
|
|
4795
4823
|
case 'lease':
|
|
4796
4824
|
return comandoLease(args);
|
|
4797
4825
|
case 'conducao':
|
|
@@ -22,4 +22,6 @@ exports.TESTES_DE_INTEGRACAO_LOCAL = new Set([
|
|
|
22
22
|
'claims-conferir-sandbox.test.js',
|
|
23
23
|
// Security scan (Task 13a): o scanner com o Docker real e as imagens do catalogo.
|
|
24
24
|
'security-scan-integracao.test.js',
|
|
25
|
+
// RM-067 (F4c, D11): o grok falso confinado pelo Landlock do kernel, com o lancador em python3.
|
|
26
|
+
'rm067-grok-landlock.test.js',
|
|
25
27
|
]);
|
|
@@ -38,6 +38,7 @@ exports.descreverVersoes = descreverVersoes;
|
|
|
38
38
|
exports.correcaoDosAnalisadores = correcaoDosAnalisadores;
|
|
39
39
|
exports.checarAnalisadoresDoGrafo = checarAnalisadoresDoGrafo;
|
|
40
40
|
exports.lerPedido = lerPedido;
|
|
41
|
+
exports.linhasDaExtracao = linhasDaExtracao;
|
|
41
42
|
exports.situacaoNaArvore = situacaoNaArvore;
|
|
42
43
|
exports.executarGrafo = executarGrafo;
|
|
43
44
|
/**
|
|
@@ -128,6 +129,7 @@ exports.USO_DO_GRAFO = [
|
|
|
128
129
|
exports.TEXTOS_DO_GRAFO = {
|
|
129
130
|
uso: exports.USO_DO_GRAFO.split('\n'),
|
|
130
131
|
erroUso: (motivo) => `grafo.uso: ${motivo}`,
|
|
132
|
+
erroTipado: (mensagem) => mensagem,
|
|
131
133
|
motivos: {
|
|
132
134
|
semSub: 'falta o subcomando', desconhecido: (sub) => `subcomando desconhecido: ${sub}`,
|
|
133
135
|
repetida: (nome) => `--${nome} repetida`, semValor: (nome) => `--${nome} nao leva valor`,
|
|
@@ -149,6 +151,15 @@ exports.TEXTOS_DO_GRAFO = {
|
|
|
149
151
|
naoConferido: (motivo) => ` incremental nao conferido: ${motivo}`,
|
|
150
152
|
aprovado: 'aprovado',
|
|
151
153
|
semBase: 'sem base',
|
|
154
|
+
extracao: {
|
|
155
|
+
lista: (itens) => itens.length ? ` (${itens.slice(0, 5).join(', ')}${itens.length > 5 ? ` e mais ${itens.length - 5}` : ''})` : '',
|
|
156
|
+
incremental: (base, alterados, novos, removidos) => ` extracao incremental a partir do indice de ${base}: ${alterados} alterado(s), ${novos} novo(s), ${removidos} removido(s)`,
|
|
157
|
+
tsInteiro: (motivo) => `TypeScript inteiro (${motivo ?? ''})`,
|
|
158
|
+
tsParcial: (reextraidos, lista, programa, reaproveitados) => `TypeScript parcial, ${reextraidos} reextraido(s)${lista} num programa de ${programa}, ${reaproveitados} da base`,
|
|
159
|
+
tsBase: (reaproveitados) => `TypeScript todo da base (${reaproveitados})`,
|
|
160
|
+
markdown: (reextraidos, lista, reaproveitados) => ` Markdown: ${reextraidos} reextraido(s)${lista}, ${reaproveitados} da base`,
|
|
161
|
+
completa: (motivo) => ` extracao completa${motivo ? `: ${motivo}` : ''}`,
|
|
162
|
+
},
|
|
152
163
|
},
|
|
153
164
|
status: {
|
|
154
165
|
titulo: (head, arvore) => `grafo: HEAD ${head}, arvore ${arvore}`,
|
|
@@ -282,23 +293,24 @@ const contagem = (o) => Object.entries(o).map(([k, v]) => `${k}=${v}`).join(' ')
|
|
|
282
293
|
/** Ate cinco caminhos e quantos ficaram de fora. */
|
|
283
294
|
const alguns = (lista) => (lista.length ? ` (${lista.slice(0, 5).join(', ')}${lista.length > 5 ? ` e mais ${lista.length - 5}` : ''})` : '');
|
|
284
295
|
/** KG4: como a extracao rodou, a base e o que veio dela, ou por que foi completa. */
|
|
285
|
-
function linhasDaExtracao(r) {
|
|
296
|
+
function linhasDaExtracao(r, mi) {
|
|
286
297
|
if (r.modo === null)
|
|
287
298
|
return [];
|
|
288
299
|
const a = r.reaproveitamento;
|
|
300
|
+
const me = mi.extracao;
|
|
289
301
|
if (r.modo === 'incremental' && r.base && a) {
|
|
290
302
|
// Desestruturado: o lint de horario le o campo de nome curto do TypeScript como instante.
|
|
291
303
|
const { ts: doTs, md: doMd, mudanca } = a;
|
|
292
|
-
const ts = doTs.modo === 'inteiro' ?
|
|
293
|
-
: doTs.modo === 'parcial' ?
|
|
294
|
-
:
|
|
304
|
+
const ts = doTs.modo === 'inteiro' ? me.tsInteiro(doTs.motivo)
|
|
305
|
+
: doTs.modo === 'parcial' ? me.tsParcial(doTs.reextraidos.length, me.lista(doTs.reextraidos), doTs.programa, doTs.reaproveitados)
|
|
306
|
+
: me.tsBase(doTs.reaproveitados);
|
|
295
307
|
return [
|
|
296
|
-
|
|
308
|
+
me.incremental(r.base.revision.slice(0, 12), mudanca.alterados, mudanca.novos, mudanca.removidos),
|
|
297
309
|
` ${ts}`,
|
|
298
|
-
|
|
310
|
+
me.markdown(doMd.reextraidos.length, me.lista(doMd.reextraidos), doMd.reaproveitados),
|
|
299
311
|
];
|
|
300
312
|
}
|
|
301
|
-
return [
|
|
313
|
+
return [me.completa(r.motivo_completo)];
|
|
302
314
|
}
|
|
303
315
|
function indexar(ctx, p) {
|
|
304
316
|
const r = (0, intelligence_graph_index_1.construirIndice)(ctx, { verificar: p.bandeiras.has('verificar'), forcar: p.bandeiras.has('forcar') });
|
|
@@ -314,7 +326,7 @@ function indexar(ctx, p) {
|
|
|
314
326
|
mi.campo(mi.campos.conferencia, mi.conferencia(m.conferencia.fontes, m.conferencia.evidencias)),
|
|
315
327
|
mi.campo(mi.campos.nos, contagem(m.contagens.nos)), mi.campo(mi.campos.arestas, contagem(m.contagens.arestas)),
|
|
316
328
|
mi.campo(mi.campos.lugar, `${r.dir} (${mb(m.graph_bytes + m.report_bytes + m.units_bytes)})`),
|
|
317
|
-
...linhasDaExtracao(r),
|
|
329
|
+
...linhasDaExtracao(r, mi),
|
|
318
330
|
];
|
|
319
331
|
if (r.motivo)
|
|
320
332
|
linhas.push(mi.campo(mi.campos.motivo, r.motivo));
|
|
@@ -757,6 +769,12 @@ const erroEmJson = (ctx, e, compacto, schema = intelligence_graph_query_1.CONSUL
|
|
|
757
769
|
ctx.escrever(compacto ? JSON.stringify(r) : JSON.stringify(r, null, 2));
|
|
758
770
|
return 1;
|
|
759
771
|
};
|
|
772
|
+
/** Traduz a mensagem sem apagar a classe, os candidatos ou o stack do erro tipado. */
|
|
773
|
+
const erroHumano = (ctx, e) => {
|
|
774
|
+
const erro = e instanceof Error ? e : new Error(String(e));
|
|
775
|
+
erro.message = textosDe(ctx).erroTipado(erro.message);
|
|
776
|
+
return erro;
|
|
777
|
+
};
|
|
760
778
|
/** `ork grafo <subcomando> ...`: devolve o codigo de saida; sem `--json`, o erro de uso ou tipado e lancado. */
|
|
761
779
|
function executarGrafo(argv, ctx) {
|
|
762
780
|
const schema = argv[0] === 'contexto' ? intelligence_graph_contexto_1.CONTEXTO_SCHEMA : intelligence_graph_query_1.CONSULTA_SCHEMA;
|
|
@@ -786,7 +804,7 @@ function executarGrafo(argv, ctx) {
|
|
|
786
804
|
}
|
|
787
805
|
catch (e) {
|
|
788
806
|
if (!p.bandeiras.has('json'))
|
|
789
|
-
throw e;
|
|
807
|
+
throw erroHumano(ctx, e);
|
|
790
808
|
return erroEmJson(ctx, e, compacto, schema);
|
|
791
809
|
}
|
|
792
810
|
}
|
package/dist/locale-accounts.js
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
13
|
exports.ACCOUNTS_EN = exports.ACCOUNTS_PT_BR = void 0;
|
|
14
14
|
/**
|
|
15
|
-
* O detalhe da conferencia de login que o proprio ork escreve (`conferirAuth` do claude e do
|
|
15
|
+
* O detalhe da conferencia de login que o proprio ork escreve (`conferirAuth` do claude, do codex e do grok) e dado: vai ao store
|
|
16
16
|
* em pt-BR e so a impressao o traduz, pela frase exata. A saida do CLI que vem dentro dele (o trecho do `codex`) segue
|
|
17
17
|
* como veio.
|
|
18
18
|
*/
|
|
@@ -29,6 +29,10 @@ const DETALHES_DO_LOGIN_EN = [
|
|
|
29
29
|
[/^codex login status: login por API key \(provider pago\)$/, () => 'codex login status: API key login (paid provider)'],
|
|
30
30
|
[/^codex login status: login sem assinatura ChatGPT comprovada \(tratado como provider pago\)$/,
|
|
31
31
|
() => 'codex login status: login without a proven ChatGPT subscription (treated as a paid provider)'],
|
|
32
|
+
[/^o grok nao documenta conferencia de login; o despacho prova o login \(erro de login do runtime vira runtime\.auth-missing\)$/,
|
|
33
|
+
() => 'grok documents no login check; the dispatch proves the login (a runtime login error becomes runtime.auth-missing)'],
|
|
34
|
+
[/^runtime\.profiles\.invalid: perfil sem grokHome no despacho grok$/,
|
|
35
|
+
() => 'runtime.profiles.invalid: profile without grokHome in the grok dispatch'],
|
|
32
36
|
];
|
|
33
37
|
const ESTADOS_EN = {
|
|
34
38
|
ativo: 'active', esgotado: 'exhausted', 'sem-auth': 'no-auth', 'provider-pago': 'paid-provider', desativado: 'disabled',
|
|
@@ -39,7 +43,7 @@ exports.ACCOUNTS_PT_BR = {
|
|
|
39
43
|
/** O estado gravado no store, como o texto o mostra. */
|
|
40
44
|
estado: (estado) => estado,
|
|
41
45
|
falhaEm: (motivo, quando) => `${motivo} em ${quando}`,
|
|
42
|
-
usoAdd: 'uso: ork accounts add <id> --runtime claude-bg|codex --dir <diretorio> [--sem-login]',
|
|
46
|
+
usoAdd: 'uso: ork accounts add <id> --runtime claude-bg|codex|grok --dir <diretorio> [--sem-login] [--device-auth (so grok)]',
|
|
43
47
|
reativado: (id) => `Perfil ${id} reativado: mesmo id, runtime e diretorio do perfil desativado.`,
|
|
44
48
|
recusado: (erro) => `perfil recusado: ${erro}`,
|
|
45
49
|
loginPendente: (variavel, dir, comando, id) => `Login pendente: rode ${variavel}=${dir} ${comando} e depois ork accounts check ${id}`,
|
|
@@ -48,6 +52,7 @@ exports.ACCOUNTS_PT_BR = {
|
|
|
48
52
|
/** O detalhe da conferencia de login (dado do store), como a impressao o mostra. */
|
|
49
53
|
detalheDoLogin: (detalhe) => detalhe,
|
|
50
54
|
inconclusivaAdd: (detalhe) => `conferencia de login inconclusiva (${detalhe}); o proximo despacho confere de novo`,
|
|
55
|
+
semConferenciaAdd: (detalhe) => `login sem conferencia previa (${detalhe}); o perfil entra no rodizio`,
|
|
51
56
|
pagoAdd: (detalhe) => `provider pago (${detalhe}); nunca recebe despacho`,
|
|
52
57
|
semLoginAdd: (detalhe) => `sem login (${detalhe}); fora do rodizio`,
|
|
53
58
|
usoRemove: 'uso: ork accounts remove <id>',
|
|
@@ -55,6 +60,7 @@ exports.ACCOUNTS_PT_BR = {
|
|
|
55
60
|
perfilAtivoNaoExiste: (alvo) => `perfil ativo "${alvo}" nao existe (veja: ork accounts list)`,
|
|
56
61
|
resultadoCheck: (id, runtime, situacao) => `${id} (${runtime}): ${situacao}`,
|
|
57
62
|
inconclusivaCheck: (detalhe) => `conferencia de login inconclusiva, estado mantido (${detalhe})`,
|
|
63
|
+
semConferenciaCheck: (detalhe) => `login sem conferencia previa, estado mantido (${detalhe})`,
|
|
58
64
|
pagoCheck: (detalhe) => `provider pago, nunca despacha (${detalhe})`,
|
|
59
65
|
semLoginCheck: (detalhe) => `sem login (${detalhe})`,
|
|
60
66
|
tipoDeLimite: (tipo) => ({ sessao: 'sessao', semanal: 'semanal', 'gasto-admin': 'gasto definido pelo admin',
|
|
@@ -132,7 +138,7 @@ exports.ACCOUNTS_EN = {
|
|
|
132
138
|
colunas: ['PROFILE', 'RUNTIME', 'DIRECTORY', 'STATE', 'EXHAUSTED UNTIL', 'LAST USE', 'LAST FAILURE'],
|
|
133
139
|
estado: (estado) => ESTADOS_EN[estado] ?? estado,
|
|
134
140
|
falhaEm: (motivo, quando) => `${motivo} at ${quando}`,
|
|
135
|
-
usoAdd: 'usage: ork accounts add <id> --runtime claude-bg|codex --dir <directory> [--sem-login]',
|
|
141
|
+
usoAdd: 'usage: ork accounts add <id> --runtime claude-bg|codex|grok --dir <directory> [--sem-login] [--device-auth (grok only)]',
|
|
136
142
|
reativado: (id) => `Profile ${id} reactivated: same id, runtime and directory as the disabled profile.`,
|
|
137
143
|
recusado: (erro) => `profile refused: ${erro}`,
|
|
138
144
|
loginPendente: (variavel, dir, comando, id) => `Login pending: run \`${variavel}=${dir} ${comando}\`, then \`ork accounts check ${id}\``,
|
|
@@ -143,6 +149,7 @@ exports.ACCOUNTS_EN = {
|
|
|
143
149
|
return regra ? regra[1](...(regra[0].exec(detalhe) ?? []).slice(1)) : detalhe;
|
|
144
150
|
},
|
|
145
151
|
inconclusivaAdd: (detalhe) => `login check inconclusive (${detalhe}); the next dispatch checks again`,
|
|
152
|
+
semConferenciaAdd: (detalhe) => `login without a prior check (${detalhe}); the profile joins the rotation`,
|
|
146
153
|
pagoAdd: (detalhe) => `paid provider (${detalhe}); never receives a dispatch`,
|
|
147
154
|
semLoginAdd: (detalhe) => `no login (${detalhe}); out of the rotation`,
|
|
148
155
|
usoRemove: 'usage: ork accounts remove <id>',
|
|
@@ -150,6 +157,7 @@ exports.ACCOUNTS_EN = {
|
|
|
150
157
|
perfilAtivoNaoExiste: (alvo) => `active profile "${alvo}" does not exist (see: \`ork accounts list\`)`,
|
|
151
158
|
resultadoCheck: (id, runtime, situacao) => `${id} (${runtime}): ${situacao}`,
|
|
152
159
|
inconclusivaCheck: (detalhe) => `login check inconclusive, state kept (${detalhe})`,
|
|
160
|
+
semConferenciaCheck: (detalhe) => `login without a prior check, state kept (${detalhe})`,
|
|
153
161
|
pagoCheck: (detalhe) => `paid provider, never dispatches (${detalhe})`,
|
|
154
162
|
semLoginCheck: (detalhe) => `no login (${detalhe})`,
|
|
155
163
|
tipoDeLimite: (tipo) => ({ sessao: 'session', semanal: 'weekly', 'gasto-admin': 'admin-defined spend',
|
package/dist/locale-ajuda.js
CHANGED
|
@@ -33,12 +33,12 @@ Uso: ork [--projeto <nome|caminho>] <comando> [argumentos]
|
|
|
33
33
|
experiencia uninstall <host> [--dry-run] [--json]
|
|
34
34
|
Remove o bloco de Claude Code/Codex; sem --dry-run aplica a remoção
|
|
35
35
|
setup <modo> Config atual de cada bloco do modo
|
|
36
|
-
setup <modo> --bloco N [--runtime R] Edita o bloco (runtimes: claude-bg, codex);
|
|
36
|
+
setup <modo> --bloco N [--runtime R] Edita o bloco (runtimes: claude-bg, codex, grok);
|
|
37
37
|
[--model M] [--effort E] [--por Q] evento setup_configured no ledger do projeto
|
|
38
38
|
[--fallback R:M[:E],...] ordem de fallback de runtime do bloco (I-33)
|
|
39
39
|
accounts list [--json] Perfis de conta por runtime, sem segredo (I-33)
|
|
40
40
|
accounts add <id> --runtime R --dir D Cria o perfil e roda o login do proprio CLI com o env
|
|
41
|
-
[--sem-login]
|
|
41
|
+
[--sem-login] [--device-auth] do perfil (nunca copia credencial; codigo de dispositivo so no grok)
|
|
42
42
|
accounts remove <id> Desativa o perfil (diretorio e login ficam onde estao)
|
|
43
43
|
accounts check [<id>] Confere o login de cada perfil e marca o store
|
|
44
44
|
accounts esgotamentos [--desde 7d] [--json]
|
|
@@ -120,6 +120,8 @@ Uso: ork [--projeto <nome|caminho>] <comando> [argumentos]
|
|
|
120
120
|
destrava (pega HITL de sessao SEM thread)
|
|
121
121
|
noctum propor --arquivo <envelope.json> Propõe o envelope de um arco #Noctum (RM-058) e pergunta ao dono, com código
|
|
122
122
|
curto e alternativas, também no canal dele; não autoriza nada
|
|
123
|
+
noctum maquina [--json] A entrada desta máquina em maquinas do envelope v3 (RM-058): o nome, a chave
|
|
124
|
+
pública e a impressão dela; a chave privada não sai desta raiz
|
|
123
125
|
noctum revogar <arco> [--json] Pergunta ao dono se revoga o arco (RM-057); quem revoga é a resposta dele,
|
|
124
126
|
no Telegram ou pelo diálogo do host
|
|
125
127
|
noctum responder <arco> --resposta-stdin --origem telegram --canal C --por ID --mensagem REF [--conta ID]
|
|
@@ -352,7 +354,7 @@ Uso: ork [--projeto <nome|caminho>] <comando> [argumentos]
|
|
|
352
354
|
o padrao e o item dela; --todos volta a todo item (RM-037)
|
|
353
355
|
docs init Cria padroes, modelos, indices e o lint de Markdown no projeto
|
|
354
356
|
|
|
355
|
-
mcp serve --project RAIZ --host HOST Servidor MCP stdio deste projeto (codex|claude-code)
|
|
357
|
+
mcp serve --project RAIZ --host HOST Servidor MCP stdio deste projeto (codex|claude-code; grok so na sessao filha, com --thread)
|
|
356
358
|
mcp install --project RAIZ --host HOST Prepara MCP; aceita --dry-run, --ship-transport, --child-permissions e --owner-permissions (Codex)
|
|
357
359
|
|
|
358
360
|
adapter list Adaptadores de host (Camada 1) e o destino de cada um
|
|
@@ -445,12 +447,12 @@ Usage: ork [--projeto <name|path>] <command> [arguments]
|
|
|
445
447
|
experiencia uninstall <host> [--dry-run] [--json]
|
|
446
448
|
Removes the Claude Code/Codex block; without --dry-run it applies the removal
|
|
447
449
|
setup <mode> Current config of each block of the mode
|
|
448
|
-
setup <mode> --bloco N [--runtime R] Edits the block (runtimes: claude-bg, codex);
|
|
450
|
+
setup <mode> --bloco N [--runtime R] Edits the block (runtimes: claude-bg, codex, grok);
|
|
449
451
|
[--model M] [--effort E] [--por Q] setup_configured event in the project ledger
|
|
450
452
|
[--fallback R:M[:E],...] runtime fallback order of the block (I-33)
|
|
451
453
|
accounts list [--json] Account profiles per runtime, without secrets (I-33)
|
|
452
454
|
accounts add <id> --runtime R --dir D Creates the profile and runs the CLI's own login with the profile
|
|
453
|
-
[--sem-login]
|
|
455
|
+
[--sem-login] [--device-auth] env (never copies a credential; device code only for grok)
|
|
454
456
|
accounts remove <id> Deactivates the profile (directory and login stay where they are)
|
|
455
457
|
accounts check [<id>] Checks the login of each profile and marks the store
|
|
456
458
|
accounts esgotamentos [--desde 7d] [--json]
|
|
@@ -532,6 +534,8 @@ Usage: ork [--projeto <name|path>] <command> [arguments]
|
|
|
532
534
|
unblocks it (catches HITL of sessions WITHOUT a thread)
|
|
533
535
|
noctum propor --arquivo <envelope.json> Proposes the envelope of a #Noctum arc (RM-058) and asks the owner, with a short
|
|
534
536
|
code and choices, also on the owner's channel; it authorizes nothing
|
|
537
|
+
noctum maquina [--json] This machine's entry in maquinas of the v3 envelope (RM-058): its name, public key
|
|
538
|
+
and fingerprint; the private key never leaves this root
|
|
535
539
|
noctum revogar <arc> [--json] Asks the owner whether to revoke the arc (RM-057); the owner's answer revokes,
|
|
536
540
|
on Telegram or through the host dialog
|
|
537
541
|
noctum responder <arc> --resposta-stdin --origem telegram --canal C --por ID --mensagem REF [--conta ID]
|
|
@@ -764,7 +768,7 @@ Usage: ork [--projeto <name|path>] <command> [arguments]
|
|
|
764
768
|
the default is its item; --todos goes back to every item (RM-037)
|
|
765
769
|
docs init Creates standards, templates, indexes and the Markdown lint in the project
|
|
766
770
|
|
|
767
|
-
mcp serve --project ROOT --host HOST stdio MCP server of this project (codex|claude-code)
|
|
771
|
+
mcp serve --project ROOT --host HOST stdio MCP server of this project (codex|claude-code; grok only in the child session, with --thread)
|
|
768
772
|
mcp install --project ROOT --host HOST Prepares MCP; accepts --dry-run, --ship-transport, --child-permissions and --owner-permissions (Codex)
|
|
769
773
|
|
|
770
774
|
adapter list Host adapters (Layer 1) and the target of each one
|
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-forja.js
CHANGED
|
@@ -95,10 +95,9 @@ exports.FORJA_PT_BR = {
|
|
|
95
95
|
projetoGitlab: (metodo, squash, mergedResults, mergeTrain) => `merge ${metodo}; squash ${squash}; merged results ${mergedResults}; merge train ${mergeTrain}`,
|
|
96
96
|
projetoGithub: (merge, squash, rebase) => `merge commit ${merge}; squash ${squash}; rebase ${rebase}`,
|
|
97
97
|
avisoFf: 'com fast-forward não há commit de merge: o assunto ship(<thread>) não chega à base',
|
|
98
|
-
avisoMensagemPadrao: 'a mensagem de merge padrão (Merge branch …) não começa por ship(<thread>)',
|
|
99
98
|
avisoSquash: (opcao) => `squash ${opcao}: a entrega por squash não se liga ao head verificado (entrega.sem-vinculo)`,
|
|
100
99
|
avisoSemMergeCommit: 'sem merge commit, a entrega por PR não se liga ao head verificado (entrega.sem-vinculo)',
|
|
101
|
-
projetoGitlabCorrecao: 'em Settings > Merge requests, use merge commit e
|
|
100
|
+
projetoGitlabCorrecao: 'em Settings > Merge requests, use merge commit e deixe squash desativado',
|
|
102
101
|
projetoGithubCorrecao: 'em Settings > General > Pull Requests, permita merge commits',
|
|
103
102
|
capacidades: (ligadas) => `ligadas: ${ligadas}`,
|
|
104
103
|
capacidadesDesligadas: (ligadas, desligadas) => `ligadas: ${ligadas}; desligadas (o adaptador não implementa): ${desligadas}`,
|
|
@@ -236,10 +235,9 @@ exports.FORJA_EN = {
|
|
|
236
235
|
projetoGitlab: (metodo, squash, mergedResults, mergeTrain) => `merge ${metodo}; squash ${squash}; merged results ${mergedResults}; merge train ${mergeTrain}`,
|
|
237
236
|
projetoGithub: (merge, squash, rebase) => `merge commit ${merge}; squash ${squash}; rebase ${rebase}`,
|
|
238
237
|
avisoFf: 'with fast-forward there is no merge commit: the ship(<thread>) subject does not reach the base',
|
|
239
|
-
avisoMensagemPadrao: 'the default merge message (Merge branch …) does not start with ship(<thread>)',
|
|
240
238
|
avisoSquash: (opcao) => `squash ${opcao}: a squash delivery is not linked to the verified head (entrega.sem-vinculo)`,
|
|
241
239
|
avisoSemMergeCommit: 'without merge commits, a PR delivery is not linked to the verified head (entrega.sem-vinculo)',
|
|
242
|
-
projetoGitlabCorrecao: 'in Settings > Merge requests, use merge
|
|
240
|
+
projetoGitlabCorrecao: 'in Settings > Merge requests, use merge commits and leave squash disabled',
|
|
243
241
|
projetoGithubCorrecao: 'in Settings > General > Pull Requests, allow merge commits',
|
|
244
242
|
capacidades: (ligadas) => `on: ${ligadas}`,
|
|
245
243
|
capacidadesDesligadas: (ligadas, desligadas) => `on: ${ligadas}; off (the adapter does not implement them): ${desligadas}`,
|