@orkastery/cli 0.6.6 → 0.6.7

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.
Files changed (41) hide show
  1. package/adapters/claude-code/agents/ork-check.md +4 -0
  2. package/adapters/claude-code/mods/ork-freio/hooks/lote.ts +1 -1
  3. package/adapters/claude-code/mods/ork-torre/hooks/frases.ts +2 -1
  4. package/adapters/openclaw/openclaw.plugin.json +1 -1
  5. package/adapters/openclaw/package.json +1 -1
  6. package/assets/adapters-en/claude-code/agents/ork-check.md +4 -0
  7. package/assets/skills-en/phases/check-quality/SKILL.md +14 -0
  8. package/dist/adapters/claude-bg.js +1 -1
  9. package/dist/agendador-cpu.js +27 -4
  10. package/dist/ambiente-funcional.js +72 -0
  11. package/dist/cenarios-sensores.js +3 -7
  12. package/dist/check-agil.js +204 -60
  13. package/dist/check-paralelo.js +101 -36
  14. package/dist/claim-lint.js +19 -0
  15. package/dist/claims.js +77 -11
  16. package/dist/fila-pesada.js +8 -6
  17. package/dist/fix.js +152 -6
  18. package/dist/hitl-gates.js +1 -1
  19. package/dist/index.js +53 -4
  20. package/dist/locale-ajuda.js +10 -4
  21. package/dist/locale-claims.js +22 -6
  22. package/dist/locale-operacao-restante.js +12 -0
  23. package/dist/locale-prompts.js +4 -2
  24. package/dist/locale-pulse.js +2 -0
  25. package/dist/locale-retry.js +8 -0
  26. package/dist/locale-verify.js +8 -0
  27. package/dist/mcp-artifacts.js +24 -0
  28. package/dist/mcp-install.js +1 -1
  29. package/dist/mcp-server.js +11 -1
  30. package/dist/mcp-verify-async.js +2 -1
  31. package/dist/noctum-provas.js +56 -30
  32. package/dist/recibo-prova.js +87 -0
  33. package/dist/retry.js +6 -0
  34. package/dist/security-scan/executor.js +9 -3
  35. package/dist/security-scan/guard.js +5 -2
  36. package/dist/ship.js +1 -1
  37. package/dist/temporario-das-lanes.js +94 -0
  38. package/dist/verify.js +662 -410
  39. package/eval/fixtures/fx-sensores-runtime/caso.json +1 -1
  40. package/package.json +1 -1
  41. package/skills/phases/check-quality/SKILL.md +14 -0
@@ -156,12 +156,15 @@ function launch(pgidFile, timeoutMs, bin, args) {
156
156
  child.on('error', e => { process.stderr.write(`${e.message}\n`); process.exit(127); });
157
157
  if (child.pid)
158
158
  fs.writeFileSync(pgidFile, String(child.pid));
159
- const timer = setTimeout(() => { fs.writeFileSync(`${pgidFile}${exports.LAUNCH_TIMEOUT_SUFFIX}`, ''); kill(); }, timeoutMs);
159
+ const timer = Number.isFinite(timeoutMs)
160
+ ? setTimeout(() => { fs.writeFileSync(`${pgidFile}${exports.LAUNCH_TIMEOUT_SUFFIX}`, ''); kill(); }, timeoutMs)
161
+ : undefined;
160
162
  for (const s of ['SIGTERM', 'SIGINT', 'SIGHUP']) {
161
163
  process.on(s, () => { kill(); process.exit(128 + (os.constants.signals[s] ?? 15)); });
162
164
  }
163
165
  child.on('exit', (code, signal) => {
164
- clearTimeout(timer);
166
+ if (timer)
167
+ clearTimeout(timer);
165
168
  kill(); // background processes the tool left in its group
166
169
  fs.rmSync(pgidFile, { force: true });
167
170
  process.exit(code ?? 128 + (signal ? os.constants.signals[signal] ?? 9 : 9));
package/dist/ship.js CHANGED
@@ -560,7 +560,7 @@ function ship(carregado, threadId, opcoes) {
560
560
  // 3. Verificacao independente: reexecuta claims e comandos no HEAD real da thread.
561
561
  const verificacao = (0, verify_1.verificar)(carregado, threadId, { executor: opcoes.executorVerify,
562
562
  conducao: { filaPesada: { ...opcoes.avisoDaFilaPesada, esperarMs: opcoes.esperarFilaPesadaMs } } });
563
- r.verificacao = verificacao;
563
+ r.verificacao = (0, verify_1.resultadoVerifyRedigido)(verificacao);
564
564
  if (!verificacaoCompletaParaShip(verificacao)) {
565
565
  const motivo = (verificacao.parcial ? 'verify.failed'
566
566
  : verificacao.motivos.find((m) => m !== 'claims.unverifiable'));
@@ -0,0 +1,94 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.ENV_TMPDIR_DA_RODADA = exports.ENV_TMPFS = void 0;
37
+ exports.sondarTmpfs = sondarTmpfs;
38
+ exports.selecionarTemporario = selecionarTemporario;
39
+ const fs = __importStar(require("node:fs"));
40
+ const os = __importStar(require("node:os"));
41
+ const path = __importStar(require("node:path"));
42
+ exports.ENV_TMPFS = 'ORK_CHECK_TMPFS';
43
+ /** Marca de transporte: o verify, e nao a lane, e o dono do ciclo de vida de TMPDIR. */
44
+ exports.ENV_TMPDIR_DA_RODADA = 'ORK_CHECK_TMPDIR_DA_RODADA';
45
+ const TMPFS_MAGIC = 0x01021994;
46
+ /** Confere filesystem em memoria, espaco e escrita sem depender do nome ou do tamanho de uma maquina. */
47
+ function sondarTmpfs(dir) {
48
+ try {
49
+ if (!path.isAbsolute(dir) || !fs.statSync(dir).isDirectory())
50
+ return { ok: false, motivo: 'candidato-ausente' };
51
+ const s = fs.statfsSync(dir, { bigint: true });
52
+ if (Number(s.type) !== TMPFS_MAGIC)
53
+ return { ok: false, motivo: 'filesystem-nao-e-tmpfs' };
54
+ const teste = fs.mkdtempSync(path.join(dir, 'ork-check-sonda-'));
55
+ try {
56
+ fs.writeFileSync(path.join(teste, 'gravavel'), 'ok', { mode: 0o600 });
57
+ }
58
+ finally {
59
+ fs.rmSync(teste, { recursive: true, force: true });
60
+ }
61
+ return { ok: true, livres: Number(s.bavail * s.bsize) };
62
+ }
63
+ catch (e) {
64
+ const erro = e;
65
+ return { ok: false, motivo: `sonda-falhou:${String(erro.code || erro.message)}` };
66
+ }
67
+ }
68
+ /**
69
+ * O tmpfs e opt-in ate a bancada provar ganho. `auto` exige folga proporcional de memoria e espaco; qualquer duvida
70
+ * usa o temporario em disco. Verify e lanes chamam esta mesma funcao para nao criarem politicas diferentes.
71
+ */
72
+ function selecionarTemporario(opcoes = {}) {
73
+ const chave = opcoes.chave ?? process.env[exports.ENV_TMPFS];
74
+ const disco = opcoes.disco ?? os.tmpdir();
75
+ const candidatos = opcoes.candidatos ?? [process.env.XDG_RUNTIME_DIR, '/dev/shm']
76
+ .filter((x) => !!x);
77
+ const memoriaLivre = opcoes.memoriaLivre ?? os.freemem();
78
+ const memoriaTotal = opcoes.memoriaTotal ?? os.totalmem();
79
+ const sondar = opcoes.sondar ?? sondarTmpfs;
80
+ if (chave !== 'auto')
81
+ return { diretorio: disco, estado: 'fallback', motivo: chave ? `chave-${chave}` : 'desligado-por-padrao' };
82
+ if (!(memoriaTotal > 0) || memoriaLivre / memoriaTotal < 0.25) {
83
+ return { diretorio: disco, estado: 'fallback', motivo: 'memoria-livre-sem-folga' };
84
+ }
85
+ const necessario = Math.min(memoriaLivre / 4, memoriaTotal / 10);
86
+ const motivos = [];
87
+ for (const candidato of [...new Set(candidatos)]) {
88
+ const r = sondar(candidato);
89
+ if (r.ok && r.livres >= necessario)
90
+ return { diretorio: candidato, estado: 'agile', motivo: 'tmpfs-gravavel-com-folga' };
91
+ motivos.push(`${candidato}:${r.ok ? 'espaco-sem-folga' : r.motivo}`);
92
+ }
93
+ return { diretorio: disco, estado: 'fallback', motivo: motivos.length ? motivos.join(';') : 'sem-candidato-tmpfs' };
94
+ }