@orkastery/cli 0.4.3 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/adapters/README.md +11 -0
- package/adapters/claude-code/.claude-plugin/plugin.json +3 -1
- package/adapters/claude-code/agents/ork-check.md +1 -1
- package/adapters/claude-code/agents/ork-go.md +2 -2
- 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/master.md +11 -8
- package/adapters/claude-code/commands/ork.md +8 -0
- package/adapters/claude-code/commands/ship.md +2 -2
- package/adapters/codex/skills/ork/SKILL.md +12 -1
- package/adapters/hermes/README.md +3 -0
- package/adapters/hermes/bin/ork-abrir-thread.sh +17 -2
- package/adapters/hermes/bin/ork-brain.sh +3 -0
- package/adapters/hermes/bin/ork-maestro.sh +4 -1
- package/adapters/hermes/bin/ork-network-roadmap.sh +11 -0
- package/adapters/hermes/bin/ork-roadmap-status.sh +9 -0
- package/adapters/hermes/hermes.plugin.json +2 -0
- package/adapters/hermes/hitl-ingress/__init__.py +36 -3
- package/adapters/hermes/skills/orkastery-devmaster/SKILL.md +19 -20
- package/adapters/openclaw/README.md +34 -2
- package/adapters/openclaw/dist/hitl-ingress.js +37 -3
- package/adapters/openclaw/dist/index.js +92 -20
- package/adapters/openclaw/openclaw.plugin.json +10 -1
- package/adapters/openclaw/package.json +2 -2
- package/adapters/openclaw/src/hitl-ingress.ts +32 -3
- package/adapters/openclaw/src/index.ts +108 -20
- package/assets/docs/padroes/documentacao-de-produto.md +2 -2
- package/assets/docs/padroes/roadmap-de-produto.md +1 -1
- package/assets/docs/produto/_modelo-feature.md +2 -0
- package/assets/orkmind_bridge.py +214 -1
- package/dist/adapters/claude-bg.js +6 -3
- package/dist/board.js +74 -0
- package/dist/branch-de-estado.js +5 -4
- package/dist/busca-semantica.js +161 -0
- package/dist/ci.js +141 -10
- package/dist/company-brain-cli.js +27 -2
- package/dist/company-brain-context.js +132 -0
- package/dist/company-brain-dossie.js +376 -0
- package/dist/company-brain-mcp.js +4 -1
- package/dist/conducao.js +71 -18
- package/dist/decisao-autonoma.js +42 -0
- package/dist/docs.js +64 -22
- package/dist/doctor.js +33 -0
- package/dist/entrega-pr.js +109 -5
- package/dist/experiencia-instalacao.js +256 -0
- package/dist/experiencia.js +72 -0
- package/dist/fabrica-estado.js +43 -10
- package/dist/fechamento.js +105 -0
- package/dist/forja.js +435 -0
- package/dist/gates.js +9 -1
- package/dist/hitl-classificacao.js +11 -1
- package/dist/hitl-contract.js +50 -7
- package/dist/hitl-curto.js +158 -0
- package/dist/hitl-gates.js +67 -1
- package/dist/hitl-lote.js +30 -15
- package/dist/hitl-presentation.js +10 -7
- package/dist/hitl-resumo.js +33 -12
- package/dist/hitl-texto-livre.js +150 -0
- package/dist/hosts.js +86 -1
- package/dist/index.js +602 -38
- package/dist/indice-vetorial.js +317 -0
- package/dist/init.js +13 -0
- package/dist/integracoes-locais.js +1 -1
- package/dist/intelligence-benchmark-contract.js +570 -0
- package/dist/intelligence-graph-cli.js +430 -0
- package/dist/intelligence-graph-contract.js +577 -0
- package/dist/intelligence-graph-extract-md.js +469 -0
- package/dist/intelligence-graph-extract-ts.js +810 -0
- package/dist/intelligence-graph-extract.js +369 -0
- package/dist/intelligence-graph-index.js +512 -0
- package/dist/intelligence-graph-parsers.js +327 -0
- package/dist/intelligence-graph-query.js +344 -0
- package/dist/intelligence-graph-repo.js +187 -0
- package/dist/leases.js +84 -0
- package/dist/ledger.js +14 -0
- package/dist/maestro-cli.js +10 -1
- package/dist/maestro-contract.js +5 -1
- package/dist/maestro-discovery.js +16 -2
- package/dist/maestro-snapshot.js +6 -2
- package/dist/manifest.js +142 -5
- package/dist/master-batch.js +3 -2
- package/dist/master-digest.js +2 -2
- package/dist/master-nota.js +203 -0
- package/dist/master.js +4 -0
- package/dist/mcp-experiencia.js +164 -0
- package/dist/mcp-git.js +4 -0
- package/dist/mcp-install.js +3 -1
- package/dist/mcp-maestro.js +3 -2
- package/dist/mcp-server.js +84 -5
- package/dist/memoria.js +147 -1
- package/dist/network-roadmap.js +907 -0
- package/dist/ocupacao.js +38 -2
- package/dist/onboarding.js +113 -7
- package/dist/orkmind.js +165 -9
- package/dist/phase.js +166 -13
- package/dist/policies.js +2 -0
- package/dist/projeto-alvo.js +551 -0
- package/dist/prompts.js +1 -1
- package/dist/pulse-consentimento.js +4 -2
- package/dist/pulse-delivery.js +5 -0
- package/dist/pulse-resposta.js +674 -49
- package/dist/pulse.js +21 -0
- package/dist/retry.js +51 -8
- package/dist/roadmap-reservas.js +262 -20
- package/dist/roadmap-status.js +213 -0
- package/dist/thread-close.js +3 -0
- package/dist/verify.js +4 -3
- package/eval/casos/orchestration-experience-pt-br.json +48 -0
- package/eval/casos/orchestration-experience.json +48 -0
- package/package.json +1 -1
- package/schemas/code-artifact-graph.v1.schema.json +581 -0
- package/schemas/graph-benchmark.v1.schema.json +2240 -0
- package/schemas/maestro-snapshot.schema.json +23 -0
- package/skills/README.md +7 -5
- package/skills/core/onboarding/SKILL.md +7 -0
- package/skills/core/orchestration-experience/SKILL.md +113 -0
- package/skills/core/orchestration-experience-pt-br/SKILL.md +112 -0
- package/skills/core/orkastery-bootstrap/SKILL.md +2 -2
- package/skills/phases/go-implementation/SKILL.md +2 -0
package/dist/fabrica-estado.js
CHANGED
|
@@ -33,11 +33,14 @@ var __importStar = (this && this.__importStar) || (function () {
|
|
|
33
33
|
};
|
|
34
34
|
})();
|
|
35
35
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
-
exports.PULSACAO_MS = exports.BRANCH_DA_FABRICA = exports.CONTRATO_MAQUINA = void 0;
|
|
36
|
+
exports.PULSACAO_MS = exports.DIR_DA_FABRICA = exports.BRANCH_DA_FABRICA = exports.CONTRATO_MAQUINA = void 0;
|
|
37
|
+
exports.despachoDaThread = despachoDaThread;
|
|
38
|
+
exports.runtimeDaThread = runtimeDaThread;
|
|
37
39
|
exports.arquivoDaMaquina = arquivoDaMaquina;
|
|
38
40
|
exports.entregasNaBase = entregasNaBase;
|
|
39
41
|
exports.retratoDaMaquina = retratoDaMaquina;
|
|
40
42
|
exports.assinaturaDoRetrato = assinaturaDoRetrato;
|
|
43
|
+
exports.estadoValido = estadoValido;
|
|
41
44
|
exports.lerFabrica = lerFabrica;
|
|
42
45
|
exports.publicarMaquina = publicarMaquina;
|
|
43
46
|
exports.removerMaquina = removerMaquina;
|
|
@@ -70,14 +73,18 @@ const monitor_lock_1 = require("./monitor-lock");
|
|
|
70
73
|
const board_1 = require("./board");
|
|
71
74
|
const estado_thread_1 = require("./estado-thread");
|
|
72
75
|
const horario_1 = require("./horario");
|
|
76
|
+
const ledger_1 = require("./ledger");
|
|
73
77
|
const modos_1 = require("./modos");
|
|
74
78
|
const orquestracao_1 = require("./orquestracao");
|
|
75
79
|
const roadmap_reservas_1 = require("./roadmap-reservas");
|
|
80
|
+
const thread_1 = require("./thread");
|
|
76
81
|
const util_1 = require("./util");
|
|
77
82
|
const versao_1 = require("./versao");
|
|
78
83
|
exports.CONTRATO_MAQUINA = 'ork.fabrica-maquina/v1';
|
|
79
84
|
exports.BRANCH_DA_FABRICA = 'ork/fabrica-estado';
|
|
80
|
-
|
|
85
|
+
/** O diretorio dos retratos na branch; a leitura sem clone (RM-054) le o mesmo. */
|
|
86
|
+
exports.DIR_DA_FABRICA = 'maquinas';
|
|
87
|
+
const DIR = exports.DIR_DA_FABRICA;
|
|
81
88
|
const PAINEL = 'FABRICA.md';
|
|
82
89
|
const PREFIXO = 'fabrica';
|
|
83
90
|
const TENTATIVAS = 5;
|
|
@@ -85,6 +92,24 @@ const TENTATIVAS = 5;
|
|
|
85
92
|
exports.PULSACAO_MS = 60 * 60 * 1000;
|
|
86
93
|
const ARQUIVO_DA_MARCA = 'fabrica-publicada.json';
|
|
87
94
|
const ARQUIVO_DO_LOG = 'fabrica.log';
|
|
95
|
+
/** O trio do ultimo `phase_dispatch` do ledger da thread; tudo `null` quando nao ha despacho legivel. */
|
|
96
|
+
function despachoDaThread(dir) {
|
|
97
|
+
let ultimo;
|
|
98
|
+
try {
|
|
99
|
+
ultimo = [...(0, ledger_1.lerLedger)(dir)].reverse().find((e) => e.tipo === ledger_1.TIPOS_DE_EVENTO.faseDespachada);
|
|
100
|
+
}
|
|
101
|
+
catch {
|
|
102
|
+
ultimo = undefined;
|
|
103
|
+
}
|
|
104
|
+
const campo = (v) => (typeof v === 'string' && v.trim() ? curto(v, 40) : null);
|
|
105
|
+
return { runtime: campo(ultimo?.runtime), modelo: campo(ultimo?.model), esforco: campo(ultimo?.effort) };
|
|
106
|
+
}
|
|
107
|
+
/** `claude-bg opus/xhigh`: o runtime com o modelo e o esforco, para as colunas do texto. */
|
|
108
|
+
function runtimeDaThread(t) {
|
|
109
|
+
if (!t.runtime && !t.modelo)
|
|
110
|
+
return '-';
|
|
111
|
+
return [t.runtime ?? '?', [t.modelo, t.esforco].filter(Boolean).join('/')].filter(Boolean).join(' ');
|
|
112
|
+
}
|
|
88
113
|
const curto = (texto, teto = 120) => {
|
|
89
114
|
const limpo = String(texto ?? '').replace(/\s+/g, ' ').trim();
|
|
90
115
|
return limpo.length > teto ? `${limpo.slice(0, teto - 3)}...` : limpo;
|
|
@@ -101,7 +126,11 @@ function arquivoDaMaquina(maquina) {
|
|
|
101
126
|
* entrega usa, o mesmo fato que o `ork docs sincronizar` le. Um `git log` so, para todas.
|
|
102
127
|
*/
|
|
103
128
|
function entregasNaBase(raiz, base, remoto = 'origin') {
|
|
104
|
-
|
|
129
|
+
// A base vem do manifesto: a ref vai sempre qualificada (`refs/...`), e um valor como
|
|
130
|
+
// `--output=<arquivo>` nunca vira opcao do `git log`, em qualquer versao do git (RM-054, CHECK).
|
|
131
|
+
// Na ordem: a copia remota da base, a branch local, e a base escrita como remota (`origin/main`).
|
|
132
|
+
const candidatas = [`refs/remotes/${remoto}/${base}`, `refs/heads/${base}`, `refs/remotes/${base}`];
|
|
133
|
+
const ref = candidatas.find((c) => (0, branch_de_estado_1.git)(raiz, ['rev-parse', '--verify', '--quiet', c]).ok) ?? candidatas[1];
|
|
105
134
|
// Regex basica do git: o `(` e literal.
|
|
106
135
|
const r = (0, branch_de_estado_1.git)(raiz, ['log', ref, '--format=%h%x09%s', '--grep=^ship(']);
|
|
107
136
|
const entregas = new Map();
|
|
@@ -125,7 +154,7 @@ function retratoDaMaquina(carregado, opcoes = {}) {
|
|
|
125
154
|
const linhas = new Map(monitor.linhas.map((l) => [l.thread, l]));
|
|
126
155
|
const entregas = entregasNaBase(raiz, carregado.manifesto.worktree.base_branch, remoto);
|
|
127
156
|
const itemDaThread = new Map((0, roadmap_reservas_1.reservasLocais)(raiz, remoto).filter((r) => r.thread).map((r) => [r.thread, r.item]));
|
|
128
|
-
const threads = itens.map(({ thread: t }) => {
|
|
157
|
+
const threads = itens.map(({ thread: t, raiz: raizDoPerfil }) => {
|
|
129
158
|
const pausa = linhas.get(t.id)?.pausas[0];
|
|
130
159
|
const entregue = entregas.get(t.id) ?? null;
|
|
131
160
|
const esperaVoce = !entregue && linhas.get(t.id)?.precisaDeHumano === true;
|
|
@@ -135,6 +164,7 @@ function retratoDaMaquina(carregado, opcoes = {}) {
|
|
|
135
164
|
atualizadaEm: t.atualizadaEm ?? null, entregue,
|
|
136
165
|
esperaVoce, pergunta: esperaVoce && pausa ? curto(pausa.pausaSobre || pausa.detalhe) : null,
|
|
137
166
|
paradaDesde: esperaVoce && pausa ? pausa.desdeEm : null,
|
|
167
|
+
...despachoDaThread((0, thread_1.dirThread)(raizDoPerfil, t.id)),
|
|
138
168
|
};
|
|
139
169
|
}).sort((a, b) => a.id.localeCompare(b.id));
|
|
140
170
|
const eu = (0, roadmap_reservas_1.quemSouEu)(raiz, { por: opcoes.por, maquina: opcoes.maquina });
|
|
@@ -146,6 +176,7 @@ function assinaturaDoRetrato(e) {
|
|
|
146
176
|
const { publicadoEm: _publicadoEm, ...resto } = e;
|
|
147
177
|
return (0, node_crypto_1.createHash)('sha256').update(JSON.stringify(resto)).digest('hex');
|
|
148
178
|
}
|
|
179
|
+
/** O retrato so vale inteiro: e o filtro da leitura pelo clone e pela forja (RM-054). */
|
|
149
180
|
function estadoValido(bruto) {
|
|
150
181
|
const e = bruto;
|
|
151
182
|
return !!e && e.contrato === exports.CONTRATO_MAQUINA && typeof e.maquina === 'string' && !!e.maquina.trim() &&
|
|
@@ -278,8 +309,8 @@ function blocoDaMaquina(m, eu) {
|
|
|
278
309
|
`${vivas.length} thread(s) ativa(s)` + (entregues ? `, ${entregues} entregue(s) sem MASTER` : '');
|
|
279
310
|
if (vivas.length === 0)
|
|
280
311
|
return [cabeca];
|
|
281
|
-
return [cabeca, ...tabela(['THREAD', 'MODO', 'FASE', 'ITEM', 'ESPERA VOCE'], vivas.map((t) => [
|
|
282
|
-
t.id, t.modo, t.fase, t.roadmap ?? '-', t.esperaVoce ? `sim: ${curto(t.pergunta ?? 'veredito', 40)}` : '-',
|
|
312
|
+
return [cabeca, ...tabela(['THREAD', 'MODO', 'FASE', 'RUNTIME', 'ITEM', 'ESPERA VOCE'], vivas.map((t) => [
|
|
313
|
+
t.id, t.modo, t.fase, runtimeDaThread(t), t.roadmap ?? '-', t.esperaVoce ? `sim: ${curto(t.pergunta ?? 'veredito', 40)}` : '-',
|
|
283
314
|
]))];
|
|
284
315
|
}
|
|
285
316
|
/** `ork fabrica`: todas as maquinas. */
|
|
@@ -315,15 +346,17 @@ function painelDaFabricaEmMarkdown(maquinas) {
|
|
|
315
346
|
'O que cada máquina está conduzindo agora. Gerado pelo `ork fabrica publicar`; não edite à mão.',
|
|
316
347
|
'Antes de pegar um item do roadmap: `ork roadmap reservas`.',
|
|
317
348
|
'',
|
|
318
|
-
'| Máquina | Thread | Modo | Fase | Item | Espera você | Publicado |',
|
|
319
|
-
'| --- | --- | --- | --- | --- | --- | --- |',
|
|
349
|
+
'| Máquina | Thread | Modo | Fase | Runtime | Item | Espera você | Publicado |',
|
|
350
|
+
'| --- | --- | --- | --- | --- | --- | --- | --- |',
|
|
320
351
|
];
|
|
321
352
|
const vivas = maquinas.flatMap((m) => ativas(m).map((t) => ({ m, t })));
|
|
322
353
|
if (vivas.length === 0)
|
|
323
|
-
linhas.push('| — | nenhuma thread ativa | — | — | — | — | — |');
|
|
354
|
+
linhas.push('| — | nenhuma thread ativa | — | — | | — | — | — |');
|
|
324
355
|
for (const { m, t } of vivas) {
|
|
325
356
|
const pergunta = t.esperaVoce ? `sim: ${curto(t.pergunta ?? 'veredito', 60).replace(/\|/g, '/')}` : '—';
|
|
326
|
-
|
|
357
|
+
// RM-037 (sugestao 6 do CHECK 1): a celula sem despacho diz isso, sem travessao novo.
|
|
358
|
+
const runtime = t.runtime || t.modelo ? runtimeDaThread(t).replace(/\|/g, '/') : 'sem despacho';
|
|
359
|
+
linhas.push(`| ${m.maquina} | ${t.id} | ${t.modo} | ${t.fase} | ${runtime} | ${t.roadmap ?? '—'} | ${pergunta} | ${(0, horario_1.formatarDataHora)(m.publicadoEm)} |`);
|
|
327
360
|
}
|
|
328
361
|
return [...linhas, '', (0, horario_1.legendaDoFuso)(), ''].join('\n');
|
|
329
362
|
}
|
|
@@ -0,0 +1,105 @@
|
|
|
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.liberarAoFechar = liberarAoFechar;
|
|
37
|
+
/**
|
|
38
|
+
* RM-037 (rm037noite): o que sai quando a thread fecha, pelo MASTER ou pelo `ork thread close`.
|
|
39
|
+
*
|
|
40
|
+
* Domicilio unico do "ao fechar". Antes, as duas saidas gravavam `status: fechada` e paravam ali:
|
|
41
|
+
* a thread fechada seguia na frente da fila de regiao (defeito 2) e com o item do roadmap reservado
|
|
42
|
+
* (defeito 3). Tudo aqui e de melhor esforco: o fechamento ja aconteceu, e nada daqui o desfaz nem o
|
|
43
|
+
* derruba. Cada parte roda isolada (achado A1 do CHECK 1): erro de E/S numa nao impede a outra, e o
|
|
44
|
+
* que nao saiu agora sai na poda do proximo pedido de regiao ou no `ork roadmap reservas --soltar-orfas`.
|
|
45
|
+
*/
|
|
46
|
+
const fs = __importStar(require("node:fs"));
|
|
47
|
+
const path = __importStar(require("node:path"));
|
|
48
|
+
const estado_thread_1 = require("./estado-thread");
|
|
49
|
+
const ledger_1 = require("./ledger");
|
|
50
|
+
const leases_1 = require("./leases");
|
|
51
|
+
const roadmap_reservas_1 = require("./roadmap-reservas");
|
|
52
|
+
const thread_1 = require("./thread");
|
|
53
|
+
function liberarAoFechar(raiz, threadId) {
|
|
54
|
+
const saida = { leases: [], fila: [], reservas: [], falhas: [] };
|
|
55
|
+
const falhou = (parte, e) => saida.falhas.push(`${parte}: ${e?.message ?? String(e)}`);
|
|
56
|
+
// Os leases de regiao sao por checkout: o de quem fecha, a raiz do projeto e, quando a thread tem
|
|
57
|
+
// worktree, os pegos de la (sugestao 6 do CHECK 2: fechar da worktree tambem solta os da raiz).
|
|
58
|
+
const real = (p) => { try {
|
|
59
|
+
return fs.realpathSync(p);
|
|
60
|
+
}
|
|
61
|
+
catch {
|
|
62
|
+
return path.resolve(p);
|
|
63
|
+
} };
|
|
64
|
+
const candidatos = [raiz];
|
|
65
|
+
try {
|
|
66
|
+
candidatos.push((0, estado_thread_1.raizDoEstado)(raiz));
|
|
67
|
+
}
|
|
68
|
+
catch (e) {
|
|
69
|
+
falhou('raiz', e);
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
const wt = (0, thread_1.lerThread)(raiz, threadId).worktree;
|
|
73
|
+
if (wt && fs.existsSync(wt))
|
|
74
|
+
candidatos.push(wt);
|
|
75
|
+
}
|
|
76
|
+
catch (e) {
|
|
77
|
+
falhou('thread', e);
|
|
78
|
+
}
|
|
79
|
+
const checkouts = candidatos.filter((c, i) => candidatos.findIndex((x) => real(x) === real(c)) === i);
|
|
80
|
+
for (const checkout of checkouts) {
|
|
81
|
+
try {
|
|
82
|
+
const solto = (0, leases_1.soltarThreadFechada)(checkout, threadId, 'fechamento');
|
|
83
|
+
saida.leases.push(...solto.leases);
|
|
84
|
+
saida.fila.push(...solto.fila);
|
|
85
|
+
}
|
|
86
|
+
catch (e) {
|
|
87
|
+
falhou(`leases em ${checkout}`, e);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
try {
|
|
91
|
+
saida.reservas = (0, roadmap_reservas_1.soltarReservaDaThread)(raiz, threadId);
|
|
92
|
+
}
|
|
93
|
+
catch (e) {
|
|
94
|
+
falhou('reserva', e);
|
|
95
|
+
}
|
|
96
|
+
// Sugestao 2 do CHECK 2: a falha tambem vai ao ledger da thread, de melhor esforco.
|
|
97
|
+
if (saida.falhas.length > 0) {
|
|
98
|
+
try {
|
|
99
|
+
(0, ledger_1.registrarSeExiste)((0, thread_1.dirThread)(raiz, threadId), threadId, ledger_1.TIPOS_DE_EVENTO.solturaFalhou, { falhas: saida.falhas,
|
|
100
|
+
correcao: 'a poda do proximo pedido de regiao solta o que ficou; reserva: ork roadmap reservas --soltar-orfas' });
|
|
101
|
+
}
|
|
102
|
+
catch { /* o ledger que nao grava ja esta nas falhas */ }
|
|
103
|
+
}
|
|
104
|
+
return saida;
|
|
105
|
+
}
|