@orkastery/cli 0.5.0 → 0.5.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 +11 -2
- package/adapters/claude-code/agents/ork-master.md +2 -0
- package/adapters/claude-code/commands/master.md +8 -0
- package/adapters/claude-code/commands/onboarding.md +3 -2
- package/adapters/claude-code/commands/ork.md +9 -0
- package/adapters/codex/skills/ork/SKILL.md +18 -3
- package/adapters/hermes/README.md +1 -0
- package/adapters/hermes/bin/ork-network-status.sh +10 -0
- package/adapters/hermes/hermes.plugin.json +1 -0
- package/adapters/hermes/hitl-ingress/__init__.py +2 -2
- package/adapters/hermes/skills/orkastery-devmaster/SKILL.md +6 -5
- package/adapters/openclaw/README.md +35 -4
- package/adapters/openclaw/dist/hitl-ingress.js +2 -2
- package/adapters/openclaw/dist/index.js +47 -12
- package/adapters/openclaw/openclaw.plugin.json +5 -1
- package/adapters/openclaw/package.json +2 -2
- package/adapters/openclaw/src/hitl-ingress.ts +2 -2
- package/adapters/openclaw/src/index.ts +50 -12
- package/assets/orkmind_bridge.py +117 -9
- package/dist/adapters/claude-bg.js +59 -11
- package/dist/adapters/codex.js +4 -3
- package/dist/agents-md.js +1 -0
- package/dist/auditrun.js +6 -2
- package/dist/board.js +16 -14
- package/dist/branch-de-estado.js +66 -10
- package/dist/busca-semantica.js +52 -12
- package/dist/canarios-rm057.js +149 -0
- package/dist/canarios.js +2 -0
- package/dist/ci.js +8 -1
- package/dist/claim-lint.js +3 -1
- package/dist/claims.js +39 -1
- package/dist/company-brain-context.js +158 -22
- package/dist/docs.js +110 -3
- package/dist/doctor-pulse-cron.js +194 -0
- package/dist/doctor-rede.js +149 -0
- package/dist/doctor.js +294 -37
- package/dist/entrega-pr.js +27 -8
- package/dist/esgotamentos.js +181 -0
- package/dist/experiencia.js +12 -2
- package/dist/fabrica-estado.js +35 -9
- package/dist/fabrica-publicar.js +6 -0
- package/dist/fechamento.js +20 -66
- package/dist/fix.js +3 -3
- package/dist/forja.js +31 -7
- package/dist/gates.js +5 -1
- package/dist/hitl-contract.js +59 -4
- package/dist/hitl-curto.js +11 -6
- package/dist/hitl-gates.js +5 -0
- package/dist/hitl-lote.js +5 -2
- package/dist/hitl-resumo.js +33 -1
- package/dist/hitl-tempo-parado.js +201 -0
- package/dist/hitl-texto-livre.js +5 -5
- package/dist/horario.js +27 -0
- package/dist/hosts.js +59 -13
- package/dist/impedimento.js +205 -0
- package/dist/index.js +433 -88
- package/dist/indice-vetorial.js +87 -10
- package/dist/indice.js +3 -1
- package/dist/init.js +28 -5
- package/dist/integracoes-locais.js +4 -0
- package/dist/intelligence-graph-cli.js +267 -30
- package/dist/intelligence-graph-contexto.js +215 -0
- package/dist/intelligence-graph-contract.js +71 -12
- package/dist/intelligence-graph-extract-md.js +41 -23
- package/dist/intelligence-graph-extract-ts.js +181 -11
- package/dist/intelligence-graph-extract.js +186 -9
- package/dist/intelligence-graph-index.js +205 -24
- package/dist/intelligence-graph-parsers.js +6 -4
- package/dist/intelligence-graph-repo.js +10 -0
- package/dist/leases.js +680 -87
- package/dist/ledger-stats.js +15 -1
- package/dist/ledger.js +12 -0
- package/dist/licoes.js +6 -4
- package/dist/liveness.js +2 -1
- package/dist/maestro-runtime.js +7 -1
- package/dist/manifest.js +44 -1
- package/dist/master-nota.js +14 -5
- package/dist/master.js +129 -12
- package/dist/mcp-artifacts.js +36 -3
- package/dist/mcp-git.js +80 -15
- package/dist/mcp-grafo-worker.js +93 -0
- package/dist/mcp-grafo.js +279 -0
- package/dist/mcp-install.js +2 -1
- package/dist/mcp-server.js +23 -1
- package/dist/mcp-ship.js +2 -0
- package/dist/mcp-verify.js +3 -1
- package/dist/memoria.js +48 -6
- package/dist/network-roadmap.js +195 -20
- package/dist/ocupacao.js +17 -5
- package/dist/onboarding.js +9 -4
- package/dist/orkmind.js +90 -5
- package/dist/orquestracao.js +14 -11
- package/dist/parado-no-condutor.js +1089 -0
- package/dist/phase.js +68 -15
- package/dist/policies.js +79 -3
- package/dist/portfolio.js +4 -1
- package/dist/projeto-alvo.js +5 -1
- package/dist/prompts.js +36 -1
- package/dist/prova-ativacao.js +414 -0
- package/dist/pulse-delivery.js +60 -7
- package/dist/pulse.js +99 -3
- package/dist/ratelimit.js +20 -4
- package/dist/recall.js +3 -1
- package/dist/rede-adesao.js +399 -0
- package/dist/rede-forja.js +289 -0
- package/dist/rede-projetos.js +239 -0
- package/dist/rede-status.js +336 -0
- package/dist/rede.js +980 -0
- package/dist/retry.js +69 -2
- package/dist/roadmap-status.js +162 -7
- package/dist/runtime-context.js +5 -1
- package/dist/runtime-profiles.js +22 -1
- package/dist/saida-segura.js +58 -0
- package/dist/session-watcher-claude.js +113 -23
- package/dist/sessoes-contas.js +187 -0
- package/dist/sessoes-inventario.js +6 -12
- package/dist/sessoes.js +87 -3
- package/dist/ship.js +110 -20
- package/dist/thread.js +212 -14
- package/dist/util.js +71 -4
- package/dist/verify.js +2 -2
- package/dist/worktree.js +34 -8
- package/eval/casos/onboarding.json +1 -1
- package/eval/fixtures/fx-pedido-colado/caso.json +20 -0
- package/package.json +7 -3
- package/references/definition-of-done.md +1 -1
- package/skills/README.md +1 -1
- package/skills/core/onboarding/SKILL.md +3 -2
- package/skills/core/orkastery-bootstrap/SKILL.md +2 -2
- package/skills/phases/master-metrics/SKILL.md +8 -3
- package/skills/phases/ship-release/SKILL.md +6 -3
package/dist/indice-vetorial.js
CHANGED
|
@@ -56,13 +56,19 @@ exports.decodificarVetor = decodificarVetor;
|
|
|
56
56
|
exports.lerIndice = lerIndice;
|
|
57
57
|
exports.serializarIndice = serializarIndice;
|
|
58
58
|
exports.gravarIndice = gravarIndice;
|
|
59
|
-
exports.
|
|
59
|
+
exports.conferirUniverso = conferirUniverso;
|
|
60
|
+
exports.universoDaBusca = universoDaBusca;
|
|
61
|
+
exports.codigoDaFalha = codigoDaFalha;
|
|
60
62
|
exports.conteudoRecusado = conteudoRecusado;
|
|
63
|
+
exports.indexavel = indexavel;
|
|
61
64
|
exports.tokensEstimados = tokensEstimados;
|
|
62
65
|
exports.dimDoModeloLocal = dimDoModeloLocal;
|
|
63
66
|
exports.codigoDeEmbedding = codigoDeEmbedding;
|
|
64
67
|
exports.espacoDoAlvo = espacoDoAlvo;
|
|
65
68
|
exports.indexar = indexar;
|
|
69
|
+
exports.avisoDeCobertura = avisoDeCobertura;
|
|
70
|
+
exports.textoForaDaBusca = textoForaDaBusca;
|
|
71
|
+
exports.textoDoIndice = textoDoIndice;
|
|
66
72
|
exports.vetoresCoerentes = vetoresCoerentes;
|
|
67
73
|
const fs = __importStar(require("node:fs"));
|
|
68
74
|
const os = __importStar(require("node:os"));
|
|
@@ -170,18 +176,48 @@ function gravarIndice(arquivo, indice) {
|
|
|
170
176
|
return true;
|
|
171
177
|
}
|
|
172
178
|
/**
|
|
173
|
-
*
|
|
174
|
-
*
|
|
179
|
+
* RM-038 (D6): a fronteira do universo no `ork`, num lugar so. Entrada de outro tenant, de colecao
|
|
180
|
+
* fora do ork ou com id repetido e violacao tipada, nunca descarte silencioso: nada disso vai ao embed.
|
|
175
181
|
*/
|
|
176
|
-
function
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
182
|
+
function conferirUniverso(entradas, tenant, lidoEm = Date.now()) {
|
|
183
|
+
const vistos = new Set();
|
|
184
|
+
for (const e of entradas) {
|
|
185
|
+
if (!(0, orkmind_1.pertenceAoUniverso)(e, tenant, lidoEm) || vistos.has(e.id))
|
|
186
|
+
throw new Error('memory.query.scope-violation');
|
|
187
|
+
vistos.add(e.id);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* RM-038 (D4): o universo da busca e do indice, o domicilio unico. A fonte le uma vez (a ponte
|
|
192
|
+
* filtra o tenant na origem e aplica a governanca da biblioteca); aqui a fronteira e conferida de
|
|
193
|
+
* novo, a ordem fica estavel e a contagem por colecao sai pronta para o status e o index.
|
|
194
|
+
*/
|
|
195
|
+
function universoDaBusca(fonte, tenant) {
|
|
196
|
+
const lidoEm = Date.now();
|
|
197
|
+
const lido = fonte.universo(tenant);
|
|
198
|
+
conferirUniverso(lido.entradas, tenant, lidoEm);
|
|
199
|
+
const entradas = [...lido.entradas].sort((a, b) => a.collection.localeCompare(b.collection) || a.id.localeCompare(b.id));
|
|
200
|
+
const porColecao = Object.fromEntries(orkmind_1.COLECOES_DO_ORK.map(c => [c, 0]));
|
|
201
|
+
for (const e of entradas)
|
|
202
|
+
porColecao[e.collection] += 1;
|
|
203
|
+
return { tenant, lidoEm, entradas, porColecao, foraDaBusca: lido.foraDaBusca,
|
|
204
|
+
...(lido.latenciaMs === undefined ? {} : { latenciaMs: lido.latenciaMs }) };
|
|
205
|
+
}
|
|
206
|
+
/** Codigo tipado de uma falha (`memory.query.window-saturated`), ou o padrao quando nao ha. */
|
|
207
|
+
function codigoDaFalha(erro, padrao = 'memory.universo.indisponivel') {
|
|
208
|
+
return /^[a-z]+(?:\.[a-z-]+)+/.exec(erro instanceof Error ? erro.message : '')?.[0] ?? padrao;
|
|
180
209
|
}
|
|
181
210
|
/** Conteudo que nunca vai ao provider: padrao de segredo da policy ou URL com credencial. */
|
|
182
211
|
function conteudoRecusado(conteudo) {
|
|
183
212
|
return (0, policies_1.procurarSegredos)(conteudo).length > 0 || URL_COM_CREDENCIAL.test(conteudo);
|
|
184
213
|
}
|
|
214
|
+
/**
|
|
215
|
+
* RM-038: o indice embeda a entrada? Nao embeda texto vazio, acima do limite nem com padrao de
|
|
216
|
+
* segredo. Domicilio unico para o `indexar` e para o aviso de cobertura do status.
|
|
217
|
+
*/
|
|
218
|
+
function indexavel(e) {
|
|
219
|
+
return e.content.trim() !== '' && e.content.length <= orkmind_1.EMBED_MAX_CARACTERES && !conteudoRecusado(e.content);
|
|
220
|
+
}
|
|
185
221
|
function tokensEstimados(conteudo) {
|
|
186
222
|
return Math.ceil(conteudo.length / exports.CARACTERES_POR_TOKEN);
|
|
187
223
|
}
|
|
@@ -236,13 +272,20 @@ function espacoDoAlvo(config, alvo, env = process.env) {
|
|
|
236
272
|
* que ja voltaram, porque cada vetor gravado e coerente por si.
|
|
237
273
|
*/
|
|
238
274
|
function indexar(o) {
|
|
275
|
+
// RM-038 (D6): conferir de novo antes de qualquer coisa; nada de outro tenant vai ao embed, nem de
|
|
276
|
+
// um chamador que montou o universo a mao. Violacao falha alto, nunca vira descarte silencioso.
|
|
277
|
+
if (o.universo.tenant !== o.tenant)
|
|
278
|
+
throw new Error('memory.query.scope-violation');
|
|
279
|
+
conferirUniverso(o.universo.entradas, o.tenant, o.universo.lidoEm);
|
|
239
280
|
const espaco = espacoDoAlvo(o.config, o.alvo, o.env);
|
|
240
|
-
const universo = o.universo.
|
|
281
|
+
const universo = o.universo.entradas;
|
|
241
282
|
const foraDoLimite = universo.filter(e => e.content.length > orkmind_1.EMBED_MAX_CARACTERES);
|
|
242
283
|
const recusados = universo.filter(e => e.content.length <= orkmind_1.EMBED_MAX_CARACTERES && conteudoRecusado(e.content));
|
|
243
|
-
const indexaveis = universo.filter(
|
|
284
|
+
const indexaveis = universo.filter(indexavel);
|
|
244
285
|
const base = { alvo: o.alvo, modelo: null, dim: null, arquivo: null, dryRun: o.dryRun,
|
|
245
|
-
universo: universo.length,
|
|
286
|
+
universo: universo.length, porColecao: { ...o.universo.porColecao }, foraDaBusca: o.universo.foraDaBusca,
|
|
287
|
+
latenciaUniversoMs: o.universo.latenciaMs ?? null,
|
|
288
|
+
coerentes: 0, embedados: 0, reescritos: 0, removidos: 0, recusados: recusados.length,
|
|
246
289
|
foraDoLimite: foraDoLimite.length, truncados: 0, tokensEstimados: 0, custoEstimadoUsd: 0, chamadasAoProvider: 0, motivo: null, detalhe: '' };
|
|
247
290
|
if ('motivo' in espaco) {
|
|
248
291
|
const tokens = indexaveis.reduce((t, e) => t + tokensEstimados(e.content), 0);
|
|
@@ -302,6 +345,40 @@ function indexar(o) {
|
|
|
302
345
|
return { ...r, motivo, detalhe: `indexacao interrompida depois de ${r.embedados} vetor(es); os lotes concluidos ficaram gravados` };
|
|
303
346
|
return r;
|
|
304
347
|
}
|
|
348
|
+
/**
|
|
349
|
+
* RM-038 (D7): o aviso de cobertura, o mesmo no status e na busca. Reindexar so e sugerido quando
|
|
350
|
+
* resolve; o que o indice nunca embeda (vazio, acima do limite, padrao de segredo) e dito a parte.
|
|
351
|
+
*/
|
|
352
|
+
function avisoDeCobertura(coerentes, entradas, alvo, onde = '') {
|
|
353
|
+
if (coerentes >= entradas.length)
|
|
354
|
+
return null;
|
|
355
|
+
const foraPorDesenho = entradas.filter(e => !indexavel(e)).length;
|
|
356
|
+
const base = `o indice cobre ${coerentes} de ${entradas.length} entrada(s) que a busca enxerga${onde}`;
|
|
357
|
+
if (coerentes < entradas.length - foraPorDesenho)
|
|
358
|
+
return `${base}: rode ork memory index${alvo === 'fallback' ? ' --modelo fallback' : ''}`;
|
|
359
|
+
return `${base}; ${foraPorDesenho} fica(m) fora do indice por desenho (vazia, acima de ${orkmind_1.EMBED_MAX_CARACTERES} caracteres ou com padrao de segredo)`;
|
|
360
|
+
}
|
|
361
|
+
/** RM-038: a linha do que fica fora da busca, a mesma no `ork memory index` e no `ork memory status`. */
|
|
362
|
+
function textoForaDaBusca(f) {
|
|
363
|
+
return f ? `${f.injecao} com injection_risk e ${f.expiradas} expirada(s) (governanca da biblioteca), ` +
|
|
364
|
+
`${f.outrasColecoes} em outras colecoes (fora da busca do ork); nada disso vai ao embed` : 'nao medido nesta base';
|
|
365
|
+
}
|
|
366
|
+
/** Texto de `ork memory index`: de que universo, o que foi (ou seria) embedado e quanto custa estimado. */
|
|
367
|
+
function textoDoIndice(r) {
|
|
368
|
+
const custo = r.custoEstimadoUsd === null ? 'nao estimado' : `US$ ${r.custoEstimadoUsd.toFixed(8)}`;
|
|
369
|
+
const colecoes = Object.entries(r.porColecao).map(([c, n]) => `${c} ${n}`).join(', ');
|
|
370
|
+
return [
|
|
371
|
+
`Indice vetorial (${r.alvo}${r.dryRun ? ', --dry-run' : ''}): ${r.modelo ?? '(sem modelo)'}${r.dim ? ` / ${r.dim} dim` : ''}`,
|
|
372
|
+
` universo da busca ${r.universo} entrada(s): ${colecoes}; coerentes ${r.coerentes}`,
|
|
373
|
+
` fora da busca ${textoForaDaBusca(r.foraDaBusca)}`,
|
|
374
|
+
` embedados ${r.embedados} (reescritos ${r.reescritos}); removidos ${r.removidos}`,
|
|
375
|
+
` fora do indice ${r.recusados} recusada(s) por padrao de segredo, ${r.foraDoLimite} acima do limite`,
|
|
376
|
+
...(r.truncados ? [` truncados ${r.truncados} acima do contexto do modelo local, embedados pelo comeco`] : []),
|
|
377
|
+
` estimativa ${r.tokensEstimados} token(s), ${custo}; chamadas ao provider ${r.chamadasAoProvider}`,
|
|
378
|
+
...(r.arquivo ? [` arquivo ${r.arquivo}`] : []),
|
|
379
|
+
...(r.motivo ? [` motivo ${r.motivo}: ${r.detalhe}`] : r.detalhe ? [` ${r.detalhe}`] : []),
|
|
380
|
+
].join('\n');
|
|
381
|
+
}
|
|
305
382
|
/** Vetores coerentes de um indice para o universo informado: a base da busca e da cobertura. */
|
|
306
383
|
function vetoresCoerentes(indice, universo) {
|
|
307
384
|
const saida = new Map();
|
package/dist/indice.js
CHANGED
|
@@ -63,7 +63,9 @@ function calcularIndice(eventos) {
|
|
|
63
63
|
const parcelas = [];
|
|
64
64
|
let valor = exports.INDICE_BASE;
|
|
65
65
|
for (const insumo of exports.INSUMOS_DO_INDICE) {
|
|
66
|
-
|
|
66
|
+
// Ensaio de 03/10/2026 (RM-049): o `ork ship --dry-run` barrado grava `ship_blocked` com `dryRun: true`;
|
|
67
|
+
// ensaio nao e tropeco da entrega, como ja nao e pausa no board (fatia 2 do ensaio da 0.5.0, P2).
|
|
68
|
+
const ocorrencias = eventos.filter((e) => e.tipo === insumo.evento && e.dryRun !== true).length;
|
|
67
69
|
if (ocorrencias === 0)
|
|
68
70
|
continue;
|
|
69
71
|
const bruto = insumo.peso * ocorrencias;
|
package/dist/init.js
CHANGED
|
@@ -46,6 +46,7 @@ exports.baseBranchDetectada = baseBranchDetectada;
|
|
|
46
46
|
exports.verifyDetectado = verifyDetectado;
|
|
47
47
|
exports.detectar = detectar;
|
|
48
48
|
exports.manifestoYaml = manifestoYaml;
|
|
49
|
+
exports.exigirRepositorioParaInit = exigirRepositorioParaInit;
|
|
49
50
|
exports.init = init;
|
|
50
51
|
const fs = __importStar(require("node:fs"));
|
|
51
52
|
const path = __importStar(require("node:path"));
|
|
@@ -68,7 +69,12 @@ function nomeDetectado(dirInicial) {
|
|
|
68
69
|
: path.basename(raizDoRepo(dirInicial));
|
|
69
70
|
return base.replace(/-(novo|new|old|repo|main)$/i, '').toLowerCase();
|
|
70
71
|
}
|
|
71
|
-
/**
|
|
72
|
+
/**
|
|
73
|
+
* Branch base do repositorio: origin/HEAD, senao main, senao master, senao a do HEAD.
|
|
74
|
+
* A do HEAD vem de `symbolic-ref`, que responde tambem no repositorio ainda sem commit (ensaio
|
|
75
|
+
* da 0.5.0: o `git init` sem `init.defaultBranch` nasce em `master`, e o `rev-parse` falhava e
|
|
76
|
+
* caia em `main`). HEAD destacado nao e branch: vale `main`.
|
|
77
|
+
*/
|
|
72
78
|
function baseBranchDetectada(raiz) {
|
|
73
79
|
const origem = (0, util_1.exec)('git', ['symbolic-ref', '--quiet', 'refs/remotes/origin/HEAD'], raiz);
|
|
74
80
|
if (origem.ok && origem.stdout.trim()) {
|
|
@@ -79,8 +85,7 @@ function baseBranchDetectada(raiz) {
|
|
|
79
85
|
return candidata;
|
|
80
86
|
}
|
|
81
87
|
}
|
|
82
|
-
|
|
83
|
-
return atual.ok ? atual.stdout.trim() : 'main';
|
|
88
|
+
return (0, util_1.branchDoHead)(raiz) ?? 'main';
|
|
84
89
|
}
|
|
85
90
|
function gerenciadorDetectado(dir) {
|
|
86
91
|
if (fs.existsSync(path.join(dir, 'pnpm-lock.yaml')))
|
|
@@ -188,6 +193,8 @@ conduction:
|
|
|
188
193
|
worktree:
|
|
189
194
|
base_branch: "${d.baseBranch}"
|
|
190
195
|
dir: ".claude/worktrees"
|
|
196
|
+
# true: o ork thread new cria a worktree e a branch da thread sem flag (--sem-worktree cria sem);
|
|
197
|
+
# false ou ausente: só com --worktree auto
|
|
191
198
|
por_thread: true
|
|
192
199
|
|
|
193
200
|
verify:
|
|
@@ -255,6 +262,20 @@ policies:
|
|
|
255
262
|
push_direto_na_base: block
|
|
256
263
|
`;
|
|
257
264
|
}
|
|
265
|
+
/**
|
|
266
|
+
* Ensaio de 03/10/2026 (RM-049): o `ork init` rodado por engano fora de um repositorio (no HOME, por
|
|
267
|
+
* exemplo) gravava manifesto, `AGENTS.md` e `.orkastery/` ali e saia 0; um repositorio criado depois
|
|
268
|
+
* dentro dessa pasta herdava o manifesto de fora, com outro nome e outra abbrev, e o doctor dizia PRONTO.
|
|
269
|
+
* A CLI recusa antes de gravar qualquer coisa. A funcao `init` segue aceitando qualquer pasta (demo e
|
|
270
|
+
* canarios montam o projeto por ela).
|
|
271
|
+
*/
|
|
272
|
+
function exigirRepositorioParaInit(dir) {
|
|
273
|
+
const r = (0, util_1.exec)('git', ['rev-parse', '--is-inside-work-tree'], dir);
|
|
274
|
+
if (r.ok && r.stdout.trim() === 'true')
|
|
275
|
+
return;
|
|
276
|
+
throw new Error(`init.fora-do-repositorio: ${path.resolve(dir)} não está num repositório git; nada foi criado. ` +
|
|
277
|
+
'Entre no repositório do projeto (ou crie um com git init e o primeiro commit) e rode ork init de novo.');
|
|
278
|
+
}
|
|
258
279
|
/** Gera o manifesto e o esqueleto de `.orkastery/`. Nao sobrescreve sem `force`. */
|
|
259
280
|
function init(dirInicial, opcoes = {}) {
|
|
260
281
|
const deteccao = detectar(dirInicial, opcoes.nome, opcoes.abbrev);
|
|
@@ -264,6 +285,8 @@ function init(dirInicial, opcoes = {}) {
|
|
|
264
285
|
return { caminho, criado: false, deteccao };
|
|
265
286
|
}
|
|
266
287
|
(0, util_1.gravar)(caminho, manifestoYaml(deteccao));
|
|
267
|
-
|
|
268
|
-
|
|
288
|
+
const estado = path.join(deteccao.raiz, manifest_1.DIR_ESTADO);
|
|
289
|
+
fs.mkdirSync(path.join(estado, 'threads'), { recursive: true });
|
|
290
|
+
// Fatia 2 do ensaio da 0.5.0 (P3): o estado e da maquina; fica fora do git sem mexer no `.gitignore` do usuario.
|
|
291
|
+
return { caminho, criado: true, deteccao, estadoIgnorado: (0, util_1.ignorarPastaNoGit)(estado, deteccao.raiz) };
|
|
269
292
|
}
|
|
@@ -14,4 +14,8 @@ exports.TESTES_DE_INTEGRACAO_LOCAL = new Set([
|
|
|
14
14
|
'mcp-git.test.js', 'mcp-server.test.js', 'mcp-ship.test.js', 'mcp-verify.test.js',
|
|
15
15
|
'memory-native-preparation.test.js', 'memory-native-schema.test.js', 'memory-prospective.test.js',
|
|
16
16
|
'memory-publication-profile.test.js', 'native-fixture.test.js', 'orkmind-transport.test.js', 'verify-sandbox.test.js',
|
|
17
|
+
// RM-037 (fatia 3): o worker do ork_git_commit e o sandbox do verify de verdade, como no mcp-git.test.js.
|
|
18
|
+
'rm037-fatia3-hard-link-mcp-git.test.js', 'rm037-fatia3-lease-mcp-git.test.js',
|
|
19
|
+
// RM-038 (fatia de correcao): a ponte com o GovernedStore real da biblioteca instalada.
|
|
20
|
+
'rm038-universo-ponte.test.js',
|
|
17
21
|
]);
|