oficina-opencode 3.0.5 → 3.1.1
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/README.md +240 -208
- package/commands/oficina.md +7 -6
- package/dashboard/.dom-check.html +1257 -0
- package/dashboard/README-DASHBOARD.md +64 -0
- package/dashboard/assets/factory.css +1543 -0
- package/dashboard/assets/tokens.css +208 -0
- package/dashboard/build-kanban-data.mjs +279 -0
- package/dashboard/dashboard.css +753 -0
- package/dashboard/dashboard.html +121 -0
- package/dashboard/dashboard.js +610 -0
- package/dashboard/data/snapshot.json +883 -0
- package/dashboard/debate.html +134 -0
- package/dashboard/factory/build-snapshot.mjs +89 -0
- package/dashboard/factory/factory-app.js +1185 -0
- package/dashboard/factory/factory-core.js +541 -0
- package/dashboard/factory/snapshot.js +850 -0
- package/dashboard/factory.html +350 -0
- package/dashboard/kanban-data.json +671 -0
- package/dashboard/kanban-source.js +643 -0
- package/dashboard/kanban.check.mjs +454 -0
- package/dashboard/kanban.html +1257 -0
- package/dashboard/leadership.html +1008 -0
- package/dashboard/lib/debate-app.js +1149 -0
- package/dashboard/lib/debate-core.js +698 -0
- package/dashboard/lib/debate-data.js +163 -0
- package/dashboard/lib/debate-demo.js +110 -0
- package/dashboard/lib/debate.css +1155 -0
- package/dashboard/lib/leadership-model.js +946 -0
- package/dashboard/probe.mjs +35 -0
- package/dashboard/scripts/serve.mjs +122 -0
- package/dashboard/scripts/snapshot-data.mjs +93 -0
- package/dashboard/scripts/snapshot.mjs +28 -0
- package/dashboard/server.mjs +242 -0
- package/dashboard/shot.mjs +54 -0
- package/dashboard/shots/desktop-gates.png +0 -0
- package/dashboard/shots/desktop-light.png +0 -0
- package/dashboard/shots/desktop-real.png +0 -0
- package/dashboard/shots/mobile.png +0 -0
- package/dashboard/test/factory-core.test.mjs +244 -0
- package/dashboard/tests/debate-core.test.mjs +336 -0
- package/dashboard/tests/leadership-model.test.mjs +404 -0
- package/dist/cli.js +148 -26
- package/dist/cli.js.map +1 -1
- package/dist/core/bus.js +3 -3
- package/dist/core/bus.js.map +1 -1
- package/dist/core/catalog.d.ts +9 -1
- package/dist/core/catalog.d.ts.map +1 -1
- package/dist/core/catalog.js +77 -2
- package/dist/core/catalog.js.map +1 -1
- package/dist/core/dashboard.d.ts +33 -0
- package/dist/core/dashboard.d.ts.map +1 -0
- package/dist/core/dashboard.js +115 -0
- package/dist/core/dashboard.js.map +1 -0
- package/dist/core/dispatch.d.ts +1 -1
- package/dist/core/dispatch.d.ts.map +1 -1
- package/dist/core/dispatch.js +84 -12
- package/dist/core/dispatch.js.map +1 -1
- package/dist/core/docsync.d.ts +0 -9
- package/dist/core/docsync.d.ts.map +1 -1
- package/dist/core/docsync.js +12 -15
- package/dist/core/docsync.js.map +1 -1
- package/dist/core/environment.d.ts +28 -0
- package/dist/core/environment.d.ts.map +1 -0
- package/dist/core/environment.js +80 -0
- package/dist/core/environment.js.map +1 -0
- package/dist/core/factory.d.ts +16 -0
- package/dist/core/factory.d.ts.map +1 -1
- package/dist/core/factory.js +143 -0
- package/dist/core/factory.js.map +1 -1
- package/dist/core/fsx.d.ts +20 -2
- package/dist/core/fsx.d.ts.map +1 -1
- package/dist/core/fsx.js +10 -6
- package/dist/core/fsx.js.map +1 -1
- package/dist/core/gates.d.ts +23 -1
- package/dist/core/gates.d.ts.map +1 -1
- package/dist/core/gates.js +83 -8
- package/dist/core/gates.js.map +1 -1
- package/dist/core/leases.d.ts.map +1 -1
- package/dist/core/leases.js +4 -1
- package/dist/core/leases.js.map +1 -1
- package/dist/core/mesa.d.ts +1 -6
- package/dist/core/mesa.d.ts.map +1 -1
- package/dist/core/mesa.js +1 -6
- package/dist/core/mesa.js.map +1 -1
- package/dist/core/office.d.ts +3 -29
- package/dist/core/office.d.ts.map +1 -1
- package/dist/core/office.js +77 -90
- package/dist/core/office.js.map +1 -1
- package/dist/core/paths.d.ts.map +1 -1
- package/dist/core/paths.js +6 -1
- package/dist/core/paths.js.map +1 -1
- package/dist/core/retry.d.ts +2 -8
- package/dist/core/retry.d.ts.map +1 -1
- package/dist/core/retry.js +3 -34
- package/dist/core/retry.js.map +1 -1
- package/dist/core/roster.js +3 -3
- package/dist/core/roster.js.map +1 -1
- package/dist/core/sandbox.d.ts +38 -1
- package/dist/core/sandbox.d.ts.map +1 -1
- package/dist/core/sandbox.js +119 -15
- package/dist/core/sandbox.js.map +1 -1
- package/dist/core/state.d.ts +2 -2
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +5 -33
- package/dist/core/state.js.map +1 -1
- package/dist/core/stores.d.ts +3 -13
- package/dist/core/stores.d.ts.map +1 -1
- package/dist/core/stores.js +8 -32
- package/dist/core/stores.js.map +1 -1
- package/dist/core/systemPrompt.d.ts.map +1 -1
- package/dist/core/systemPrompt.js +4 -1
- package/dist/core/systemPrompt.js.map +1 -1
- package/dist/core/tripwire.d.ts +22 -8
- package/dist/core/tripwire.d.ts.map +1 -1
- package/dist/core/tripwire.js +71 -26
- package/dist/core/tripwire.js.map +1 -1
- package/dist/core/types.d.ts +6 -14
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +11 -3
- package/dist/core/types.js.map +1 -1
- package/dist/hooks/scopeGuard.d.ts +15 -1
- package/dist/hooks/scopeGuard.d.ts.map +1 -1
- package/dist/hooks/scopeGuard.js +88 -73
- package/dist/hooks/scopeGuard.js.map +1 -1
- package/dist/tools/index.d.ts +9 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +29 -81
- package/dist/tools/index.js.bak +972 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/v1.d.ts.map +1 -1
- package/dist/v1.js +30 -36
- package/dist/v1.js.map +1 -1
- package/dist/v2.d.ts +5 -0
- package/dist/v2.d.ts.map +1 -1
- package/dist/v2.js +79 -46
- package/dist/v2.js.bak +517 -0
- package/dist/v2.js.map +1 -1
- package/docs/GARANTIAS.md +2 -2
- package/docs/PRUEBA-E2E.md +4 -4
- package/docs/QUE-ES.md +4 -5
- package/docs/SEGURIDAD-REPO.md +83 -0
- package/docs/assets/banner.svg +42 -0
- package/docs/catalog-facts.json +3 -3
- package/docs/superpowers/specs/2026-10-29-factory-skill-creator-and-remove-budget.md +182 -0
- package/package.json +14 -6
package/dist/hooks/scopeGuard.js
CHANGED
|
@@ -204,26 +204,17 @@ export function extractCommand(args) {
|
|
|
204
204
|
}
|
|
205
205
|
return undefined;
|
|
206
206
|
}
|
|
207
|
-
/* ────────────────────────────────────────────────────────────────────────────
|
|
208
|
-
* Resolucion de scope
|
|
209
|
-
* ──────────────────────────────────────────────────────────────────────────── */
|
|
210
|
-
/**
|
|
211
|
-
* La card que gobierna una sesión.
|
|
212
|
-
*
|
|
213
|
-
* Primero mira el binding directo. Si no hay, sube por la cadena de
|
|
214
|
-
* padres: un subagente es una sesión hija, y su scope es el de quien lo
|
|
215
|
-
* lanzo.
|
|
216
|
-
*/
|
|
217
207
|
export async function resolveScopeCard(state, sessionID, options) {
|
|
218
208
|
const direct = state.sessions[sessionID];
|
|
219
209
|
if (direct?.cardId) {
|
|
220
210
|
const card = state.cards[direct.cardId];
|
|
221
211
|
if (card)
|
|
222
|
-
return card;
|
|
212
|
+
return { kind: "AUTHORIZED", card };
|
|
223
213
|
}
|
|
224
214
|
const resolveParent = options.resolveParentSession;
|
|
225
|
-
if (!resolveParent)
|
|
226
|
-
return
|
|
215
|
+
if (!resolveParent) {
|
|
216
|
+
return { kind: "NO_SCOPE_APPLICABLE" };
|
|
217
|
+
}
|
|
227
218
|
const maxDepth = options.maxParentDepth ?? 6;
|
|
228
219
|
const visited = new Set([sessionID]);
|
|
229
220
|
let current = sessionID;
|
|
@@ -233,8 +224,9 @@ export async function resolveScopeCard(state, sessionID, options) {
|
|
|
233
224
|
parent = await resolveParent(current);
|
|
234
225
|
}
|
|
235
226
|
catch (err) {
|
|
236
|
-
|
|
237
|
-
|
|
227
|
+
const reason = `Error resolving parent session: ${String(err)}`;
|
|
228
|
+
log.error("no se pudo resolver el padre de la sesion", { sessionID: current, error: String(err) });
|
|
229
|
+
return { kind: "VERIFICATION_FAILED", reason };
|
|
238
230
|
}
|
|
239
231
|
if (!parent || visited.has(parent))
|
|
240
232
|
break;
|
|
@@ -243,11 +235,11 @@ export async function resolveScopeCard(state, sessionID, options) {
|
|
|
243
235
|
if (binding?.cardId) {
|
|
244
236
|
const card = state.cards[binding.cardId];
|
|
245
237
|
if (card)
|
|
246
|
-
return card;
|
|
238
|
+
return { kind: "AUTHORIZED", card };
|
|
247
239
|
}
|
|
248
240
|
current = parent;
|
|
249
241
|
}
|
|
250
|
-
return
|
|
242
|
+
return { kind: "NO_SCOPE_APPLICABLE" };
|
|
251
243
|
}
|
|
252
244
|
/* ────────────────────────────────────────────────────────────────────────────
|
|
253
245
|
* Hook
|
|
@@ -269,68 +261,87 @@ export function createScopeGuardHook(office, options = { enforce: true }) {
|
|
|
269
261
|
return;
|
|
270
262
|
try {
|
|
271
263
|
const state = await office.loadState();
|
|
272
|
-
const
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
const policy = { mayTouch: card.scope.mayTouch, forbidden: card.scope.forbidden };
|
|
278
|
-
const projectRoot = office.paths.projectRoot;
|
|
279
|
-
/* ── Archivos ────────────────────────────────────────────────────── */
|
|
280
|
-
if (isFileWrite) {
|
|
281
|
-
const paths = extractPaths(tool, args);
|
|
282
|
-
if (paths.length === 0)
|
|
264
|
+
const scopeResult = await resolveScopeCard(state, input.sessionID, options);
|
|
265
|
+
switch (scopeResult.kind) {
|
|
266
|
+
case "NO_SCOPE_APPLICABLE": {
|
|
267
|
+
// Sesión sin card activa legítima: no hay scope que aplicar.
|
|
268
|
+
// El agente está en exploración libre o en una operación que no es de la oficina.
|
|
283
269
|
return;
|
|
284
|
-
for (const p of paths) {
|
|
285
|
-
const verdict = await checkScope(projectRoot, p, policy);
|
|
286
|
-
if (!verdict.allowed) {
|
|
287
|
-
log.warn("scope violado (archivo)", { card: card.id, path: p, kind: verdict.kind });
|
|
288
|
-
if (options.enforce)
|
|
289
|
-
throw scopeError(verdict, card);
|
|
290
|
-
}
|
|
291
270
|
}
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
295
|
-
|
|
296
|
-
|
|
297
|
-
|
|
298
|
-
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
271
|
+
case "VERIFICATION_FAILED": {
|
|
272
|
+
// No se pudo resolver la autorización: error en la cadena de padres.
|
|
273
|
+
// Con enforce=true y operación de escritura → DENY (fail-closed).
|
|
274
|
+
// Con enforce=false → WARN y deja pasar (comportamiento legacy documentado).
|
|
275
|
+
const reason = scopeResult.reason;
|
|
276
|
+
log.error("verificacion de scope fallida", { reason, tool, enforce: options.enforce });
|
|
277
|
+
if (options.enforce && (isFileWrite || isShell)) {
|
|
278
|
+
throw new Error(`[OFICINA] Scope verification failed: ${reason}. Operation blocked (fail-closed).`);
|
|
279
|
+
}
|
|
280
|
+
log.warn("verificacion de scope fallida (sin bloquear por enforce=false)", { reason, tool });
|
|
302
281
|
return;
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
282
|
+
}
|
|
283
|
+
case "AUTHORIZED": {
|
|
284
|
+
const card = scopeResult.card;
|
|
285
|
+
const policy = { mayTouch: card.scope.mayTouch, forbidden: card.scope.forbidden };
|
|
286
|
+
const projectRoot = office.paths.projectRoot;
|
|
287
|
+
/* ── Archivos ────────────────────────────────────────────────────── */
|
|
288
|
+
if (isFileWrite) {
|
|
289
|
+
const paths = extractPaths(tool, args);
|
|
290
|
+
if (paths.length === 0)
|
|
291
|
+
return;
|
|
292
|
+
for (const p of paths) {
|
|
293
|
+
const verdict = await checkScope(projectRoot, p, policy);
|
|
294
|
+
if (!verdict.allowed) {
|
|
295
|
+
log.warn("scope violado (archivo)", { card: card.id, path: p, kind: verdict.kind });
|
|
296
|
+
if (options.enforce)
|
|
297
|
+
throw scopeError(verdict, card);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
log.debug("scope ok", { card: card.id, tool, paths: paths.length });
|
|
301
|
+
return;
|
|
313
302
|
}
|
|
314
|
-
|
|
315
|
-
if (
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
303
|
+
/* ── Shell ───────────────────────────────────────────────────────── */
|
|
304
|
+
if (isShell) {
|
|
305
|
+
const command = extractCommand(args);
|
|
306
|
+
if (!command)
|
|
307
|
+
return;
|
|
308
|
+
const candidates = analyzeShellCommand(command);
|
|
309
|
+
if (candidates.length === 0)
|
|
310
|
+
return;
|
|
311
|
+
for (const candidate of candidates) {
|
|
312
|
+
if (candidate.uncertain) {
|
|
313
|
+
// Hay una escritura que no sabemos interpretar. No se bloquea
|
|
314
|
+
// (seria inservible) pero se avisa: el tripwire va a vigilar.
|
|
315
|
+
log.warn("shell con escritura no interpretable", {
|
|
316
|
+
card: card.id,
|
|
317
|
+
op: candidate.op,
|
|
318
|
+
command: command.slice(0, 200),
|
|
319
|
+
});
|
|
320
|
+
continue;
|
|
321
|
+
}
|
|
322
|
+
const verdict = await checkScope(projectRoot, candidate.target, policy);
|
|
323
|
+
if (!verdict.allowed) {
|
|
324
|
+
log.warn("scope violado (shell)", {
|
|
325
|
+
card: card.id,
|
|
326
|
+
target: candidate.target,
|
|
327
|
+
op: candidate.op,
|
|
328
|
+
kind: verdict.kind,
|
|
329
|
+
});
|
|
330
|
+
if (options.enforce && shellPolicy === "block") {
|
|
331
|
+
throw scopeError(verdict, card);
|
|
332
|
+
}
|
|
333
|
+
}
|
|
324
334
|
}
|
|
335
|
+
return;
|
|
325
336
|
}
|
|
337
|
+
/* ── Delegacion ──────────────────────────────────────────────────── */
|
|
338
|
+
// Delegar no escribe, pero crea un actor nuevo. Se registra para que
|
|
339
|
+
// el subagente herede el scope cuando el motor cree su sesion.
|
|
340
|
+
if (isDelegate) {
|
|
341
|
+
log.debug("delegacion dentro de scope", { card: card.id, tool });
|
|
342
|
+
}
|
|
343
|
+
break;
|
|
326
344
|
}
|
|
327
|
-
return;
|
|
328
|
-
}
|
|
329
|
-
/* ── Delegacion ──────────────────────────────────────────────────── */
|
|
330
|
-
// Delegar no escribe, pero crea un actor nuevo. Se registra para que
|
|
331
|
-
// el subagente herede el scope cuando el motor cree su sesion.
|
|
332
|
-
if (isDelegate) {
|
|
333
|
-
log.debug("delegacion dentro de scope", { card: card.id, tool });
|
|
334
345
|
}
|
|
335
346
|
}
|
|
336
347
|
catch (err) {
|
|
@@ -340,7 +351,11 @@ export function createScopeGuardHook(office, options = { enforce: true }) {
|
|
|
340
351
|
log.warn("scope violado (sin bloquear)", { error: err.message });
|
|
341
352
|
return;
|
|
342
353
|
}
|
|
343
|
-
|
|
354
|
+
// Errores inesperados durante la verificación: fail-closed en enforce=true + escritura
|
|
355
|
+
log.error("fallo inesperado en el guard de scope", { error: String(err) });
|
|
356
|
+
if (options.enforce && (isFileWrite || isShell)) {
|
|
357
|
+
throw new Error(`[OFICINA] Scope guard internal error: ${String(err)}. Operation blocked (fail-closed).`);
|
|
358
|
+
}
|
|
344
359
|
}
|
|
345
360
|
};
|
|
346
361
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"scopeGuard.js","sourceRoot":"","sources":["../../src/hooks/scopeGuard.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"scopeGuard.js","sourceRoot":"","sources":["../../src/hooks/scopeGuard.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgDG;AAIH,OAAO,EACL,mBAAmB,EACnB,UAAU,EACV,WAAW,EACX,YAAY,GAEb,MAAM,oBAAoB,CAAA;AAC3B,OAAO,EAAE,MAAM,EAAE,MAAM,gBAAgB,CAAA;AAEvC,MAAM,GAAG,GAAG,MAAM,CAAC,qBAAqB,CAAC,CAAA;AAEzC;;;;;;GAMG;AACH,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC;IAC/B,MAAM;IACN,OAAO;IACP,OAAO;IACP,WAAW;IACX,aAAa;IACb,eAAe;IACf,aAAa;IACb,oBAAoB;IACpB,6BAA6B;IAC7B,WAAW;IACX,oBAAoB;IACpB,aAAa;IACb,YAAY;IACZ,uBAAuB;IACvB,YAAY;CACb,CAAC,CAAA;AAEF,gCAAgC;AAChC,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC;IAC1B,MAAM;IACN,OAAO;IACP,KAAK;IACL,aAAa;IACb,iBAAiB;IACjB,UAAU;IACV,YAAY;IACZ,KAAK;IACL,gBAAgB;CACjB,CAAC,CAAA;AAEF,uCAAuC;AACvC,MAAM,cAAc,GAAG,IAAI,GAAG,CAAC,CAAC,MAAM,EAAE,OAAO,EAAE,UAAU,EAAE,aAAa,CAAC,CAAC,CAAA;AAuB5E;;kFAEkF;AAElF,4DAA4D;AAC5D,MAAM,SAAS,GAAG,CAAC,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,QAAQ,EAAE,eAAe,EAAE,UAAU,EAAE,WAAW,CAAC,CAAA;AAElG;;;;;;GAMG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY,EAAE,IAA6B;IACtE,MAAM,GAAG,GAAa,EAAE,CAAA;IAExB,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;QAC5B,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;aAC7D,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YAC9B,KAAK,MAAM,CAAC,IAAI,KAAK;gBAAE,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;oBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;QAC/E,CAAC;IACH,CAAC;IAED,yEAAyE;IACzE,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAA;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,GAAG,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;IACpC,CAAC;SAAM,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QAChC,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;YAC1B,IAAI,OAAO,KAAK,KAAK,QAAQ;gBAAE,GAAG,CAAC,IAAI,CAAC,GAAG,cAAc,CAAC,KAAK,CAAC,CAAC,CAAA;iBAC5D,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC5C,MAAM,GAAG,GAAG,KAAgC,CAAA;gBAC5C,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;oBAC5B,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;oBAClB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;wBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,2DAA2D;IAC3D,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAA;IACxB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;YACtB,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;gBAC/B,MAAM,GAAG,GAAG,CAA4B,CAAA;gBACxC,KAAK,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;oBAC5B,MAAM,CAAC,GAAG,GAAG,CAAC,GAAG,CAAC,CAAA;oBAClB,IAAI,OAAO,CAAC,KAAK,QAAQ,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC;wBAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,CAAA;gBACxD,CAAC;YACH,CAAC;QACH,CAAC;IACH,CAAC;IAED,mCAAmC;IACnC,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAC9B,OAAO,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE;QACtB,IAAI,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC;YAAE,OAAO,KAAK,CAAA;QAC7B,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAA;QACX,OAAO,IAAI,CAAA;IACb,CAAC,CAAC,CAAA;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,KAAa;IAC1C,MAAM,KAAK,GAAa,EAAE,CAAA;IAC1B,MAAM,IAAI,GAAa,EAAE,CAAA;IAEzB,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,EAAE,CAAC;QACxC,MAAM,CAAC,GAAG,mBAAmB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QACxC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5B,MAAM,CAAC,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1C,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC;YAAE,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAC7B,CAAC;IAED,MAAM,aAAa,GACjB,KAAK,CAAC,MAAM,GAAG,CAAC;QAChB,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;QACtC,IAAI,CAAC,MAAM,GAAG,CAAC;QACf,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAA;IAEvC,MAAM,KAAK,GAAG,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IAE7D,wEAAwE;IACxE,MAAM,GAAG,GAAa,EAAE,CAAA;IACxB,KAAK,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;QACpC,IAAI,CAAC,KAAK,WAAW,IAAI,CAAC,KAAK,UAAU;YAAE,SAAQ;QACnD,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAA;QACtB,IAAI,KAAK;YAAE,GAAG,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IAC5B,CAAC;IACD,OAAO,GAAG,CAAA;AACZ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,WAAW,CAAC,IAAY,EAAE,IAA6B;IACrE,OAAO,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAA;AACpC,CAAC;AAED,uCAAuC;AACvC,MAAM,UAAU,cAAc,CAAC,IAA6B;IAC1D,KAAK,MAAM,GAAG,IAAI,CAAC,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,CAAC,EAAE,CAAC;QACxE,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,CAAA;QACvB,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC;YAAE,OAAO,KAAK,CAAA;IACjE,CAAC;IACD,OAAO,SAAS,CAAA;AAClB,CAAC;AAuBD,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,KAAkB,EAClB,SAAiB,EACjB,OAA0B;IAE1B,MAAM,MAAM,GAAG,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IACxC,IAAI,MAAM,EAAE,MAAM,EAAE,CAAC;QACnB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAA;QACvC,IAAI,IAAI;YAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAA;IAC/C,CAAC;IAED,MAAM,aAAa,GAAG,OAAO,CAAC,oBAAoB,CAAA;IAClD,IAAI,CAAC,aAAa,EAAE,CAAC;QACnB,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAA;IACxC,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,cAAc,IAAI,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,IAAI,GAAG,CAAS,CAAC,SAAS,CAAC,CAAC,CAAA;IAC5C,IAAI,OAAO,GAAG,SAAS,CAAA;IAEvB,KAAK,IAAI,KAAK,GAAG,CAAC,EAAE,KAAK,GAAG,QAAQ,EAAE,KAAK,IAAI,CAAC,EAAE,CAAC;QACjD,IAAI,MAA0B,CAAA;QAC9B,IAAI,CAAC;YACH,MAAM,GAAG,MAAM,aAAa,CAAC,OAAO,CAAC,CAAA;QACvC,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,MAAM,MAAM,GAAG,mCAAmC,MAAM,CAAC,GAAG,CAAC,EAAE,CAAA;YAC/D,GAAG,CAAC,KAAK,CAAC,2CAA2C,EAAE,EAAE,SAAS,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAClG,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,MAAM,EAAE,CAAA;QAChD,CAAC;QACD,IAAI,CAAC,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC;YAAE,MAAK;QACzC,OAAO,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;QAEnB,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAA;QACtC,IAAI,OAAO,EAAE,MAAM,EAAE,CAAC;YACpB,MAAM,IAAI,GAAG,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAA;YACxC,IAAI,IAAI;gBAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,IAAI,EAAE,CAAA;QAC/C,CAAC;QACD,OAAO,GAAG,MAAM,CAAA;IAClB,CAAC;IAED,OAAO,EAAE,IAAI,EAAE,qBAAqB,EAAE,CAAA;AACxC,CAAC;AAED;;kFAEkF;AAElF,SAAS,UAAU,CAAC,OAAqB,EAAE,IAAU;IACnD,OAAO,IAAI,KAAK,CAAC,4BAA4B,OAAO,CAAC,MAAM,UAAU,IAAI,CAAC,EAAE,GAAG,CAAC,CAAA;AAClF,CAAC;AAED,MAAM,UAAU,oBAAoB,CAAC,MAAc,EAAE,UAA6B,EAAE,OAAO,EAAE,IAAI,EAAE;IACjG,MAAM,WAAW,GAAG,OAAO,CAAC,WAAW,IAAI,OAAO,CAAA;IAElD,OAAO,KAAK,UAAU,mBAAmB,CACvC,KAA0D,EAC1D,MAAyC;QAEzC,MAAM,IAAI,GAAG,MAAM,EAAE,IAAI,CAAA;QACzB,IAAI,CAAC,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ;YAAE,OAAM;QAE7C,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,IAAI,IAAI,EAAE,CAAC,CAAA;QACrC,MAAM,WAAW,GAAG,gBAAgB,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC9C,MAAM,OAAO,GAAG,WAAW,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QACrC,MAAM,UAAU,GAAG,cAAc,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;QAC3C,IAAI,CAAC,WAAW,IAAI,CAAC,OAAO,IAAI,CAAC,UAAU;YAAE,OAAM;QAEnD,IAAI,CAAC;YACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,SAAS,EAAE,CAAA;YACtC,MAAM,WAAW,GAAG,MAAM,gBAAgB,CAAC,KAAK,EAAE,KAAK,CAAC,SAAS,EAAE,OAAO,CAAC,CAAA;YAE3E,QAAQ,WAAW,CAAC,IAAI,EAAE,CAAC;gBACzB,KAAK,qBAAqB,CAAC,CAAC,CAAC;oBAC3B,6DAA6D;oBAC7D,kFAAkF;oBAClF,OAAM;gBACR,CAAC;gBACD,KAAK,qBAAqB,CAAC,CAAC,CAAC;oBAC3B,qEAAqE;oBACrE,kEAAkE;oBAClE,6EAA6E;oBAC7E,MAAM,MAAM,GAAG,WAAW,CAAC,MAAM,CAAA;oBACjC,GAAG,CAAC,KAAK,CAAC,+BAA+B,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,OAAO,EAAE,CAAC,CAAA;oBACtF,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,CAAC;wBAChD,MAAM,IAAI,KAAK,CAAC,wCAAwC,MAAM,oCAAoC,CAAC,CAAA;oBACrG,CAAC;oBACD,GAAG,CAAC,IAAI,CAAC,gEAAgE,EAAE,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,CAAA;oBAC5F,OAAM;gBACR,CAAC;gBACD,KAAK,YAAY,CAAC,CAAC,CAAC;oBAClB,MAAM,IAAI,GAAG,WAAW,CAAC,IAAI,CAAA;oBAC7B,MAAM,MAAM,GAAG,EAAE,QAAQ,EAAE,IAAI,CAAC,KAAK,CAAC,QAAQ,EAAE,SAAS,EAAE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAA;oBACjF,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAA;oBAE5C,wEAAwE;oBACxE,IAAI,WAAW,EAAE,CAAC;wBAChB,MAAM,KAAK,GAAG,YAAY,CAAC,IAAI,EAAE,IAAI,CAAC,CAAA;wBACtC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;4BAAE,OAAM;wBAC9B,KAAK,MAAM,CAAC,IAAI,KAAK,EAAE,CAAC;4BACtB,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,CAAC,EAAE,MAAM,CAAC,CAAA;4BACxD,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gCACrB,GAAG,CAAC,IAAI,CAAC,yBAAyB,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAA;gCACnF,IAAI,OAAO,CAAC,OAAO;oCAAE,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;4BACtD,CAAC;wBACH,CAAC;wBACD,GAAG,CAAC,KAAK,CAAC,UAAU,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,CAAC,CAAA;wBACnE,OAAM;oBACR,CAAC;oBAED,wEAAwE;oBACxE,IAAI,OAAO,EAAE,CAAC;wBACZ,MAAM,OAAO,GAAG,cAAc,CAAC,IAAI,CAAC,CAAA;wBACpC,IAAI,CAAC,OAAO;4BAAE,OAAM;wBACpB,MAAM,UAAU,GAAG,mBAAmB,CAAC,OAAO,CAAC,CAAA;wBAC/C,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;4BAAE,OAAM;wBAEnC,KAAK,MAAM,SAAS,IAAI,UAAU,EAAE,CAAC;4BACnC,IAAI,SAAS,CAAC,SAAS,EAAE,CAAC;gCACxB,8DAA8D;gCAC9D,8DAA8D;gCAC9D,GAAG,CAAC,IAAI,CAAC,sCAAsC,EAAE;oCAC/C,IAAI,EAAE,IAAI,CAAC,EAAE;oCACb,EAAE,EAAE,SAAS,CAAC,EAAE;oCAChB,OAAO,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;iCAC/B,CAAC,CAAA;gCACF,SAAQ;4BACV,CAAC;4BACD,MAAM,OAAO,GAAG,MAAM,UAAU,CAAC,WAAW,EAAE,SAAS,CAAC,MAAM,EAAE,MAAM,CAAC,CAAA;4BACvE,IAAI,CAAC,OAAO,CAAC,OAAO,EAAE,CAAC;gCACrB,GAAG,CAAC,IAAI,CAAC,uBAAuB,EAAE;oCAChC,IAAI,EAAE,IAAI,CAAC,EAAE;oCACb,MAAM,EAAE,SAAS,CAAC,MAAM;oCACxB,EAAE,EAAE,SAAS,CAAC,EAAE;oCAChB,IAAI,EAAE,OAAO,CAAC,IAAI;iCACnB,CAAC,CAAA;gCACF,IAAI,OAAO,CAAC,OAAO,IAAI,WAAW,KAAK,OAAO,EAAE,CAAC;oCAC/C,MAAM,UAAU,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;gCACjC,CAAC;4BACH,CAAC;wBACH,CAAC;wBACD,OAAM;oBACR,CAAC;oBAED,wEAAwE;oBACxE,qEAAqE;oBACrE,+DAA+D;oBAC/D,IAAI,UAAU,EAAE,CAAC;wBACf,GAAG,CAAC,KAAK,CAAC,4BAA4B,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,EAAE,EAAE,IAAI,EAAE,CAAC,CAAA;oBAClE,CAAC;oBACD,MAAK;gBACP,CAAC;YACH,CAAC;QACH,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAI,GAAG,YAAY,KAAK,IAAI,GAAG,CAAC,OAAO,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAChE,IAAI,OAAO,CAAC,OAAO;oBAAE,MAAM,GAAG,CAAA;gBAC9B,GAAG,CAAC,IAAI,CAAC,8BAA8B,EAAE,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,CAAA;gBAChE,OAAM;YACR,CAAC;YACD,uFAAuF;YACvF,GAAG,CAAC,KAAK,CAAC,uCAAuC,EAAE,EAAE,KAAK,EAAE,MAAM,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YAC1E,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,WAAW,IAAI,OAAO,CAAC,EAAE,CAAC;gBAChD,MAAM,IAAI,KAAK,CAAC,yCAAyC,MAAM,CAAC,GAAG,CAAC,oCAAoC,CAAC,CAAA;YAC3G,CAAC;QACH,CAAC;IACH,CAAC,CAAA;AACH,CAAC;AAED,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,CAAA"}
|
package/dist/tools/index.d.ts
CHANGED
|
@@ -59,5 +59,13 @@ export interface OficinaToolResult {
|
|
|
59
59
|
* no puede nombrar el tipo de los schemas (que viene del zod anidado del
|
|
60
60
|
* plugin) y el build falla con TS2742.
|
|
61
61
|
*/
|
|
62
|
-
|
|
62
|
+
/** Hooks que el entry point puede inyectar en el ciclo de la corrida. */
|
|
63
|
+
export interface ToolHooks {
|
|
64
|
+
/**
|
|
65
|
+
* Se dispara cuando se guarda un plan (arranca una corrida). Devuelve la
|
|
66
|
+
* URL del dashboard visual si pudo abrirse — el plan la reporta al modelo.
|
|
67
|
+
*/
|
|
68
|
+
onRunStart?: (runId: string) => Promise<string | undefined>;
|
|
69
|
+
}
|
|
70
|
+
export declare function buildTools(office: Office, hooks?: ToolHooks): Record<string, OficinaTool>;
|
|
63
71
|
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,MAAM,EAAe,MAAM,mBAAmB,CAAA;AAKvD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;IACpE,WAAW,EAAE,MAAM,CAAA;IACnB,oCAAoC;IACpC,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAC5E;AAED,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,+BAA+B;AAC/B,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAyCD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAGvB,OAAO,EAAE,MAAM,EAAe,MAAM,mBAAmB,CAAA;AAKvD;;;;;;;;;;;;;;;;;GAiBG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK,SAAS,CAAC,CAAC,UAAU,GAAG,CAAC,CAAC,UAAU;IACpE,WAAW,EAAE,MAAM,CAAA;IACnB,oCAAoC;IACpC,IAAI,CAAC,EAAE,KAAK,CAAA;IACZ,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,WAAW,GAAG,OAAO,CAAC,iBAAiB,CAAC,CAAA;CAC5E;AAED,0DAA0D;AAC1D,MAAM,WAAW,WAAW;IAC1B,+BAA+B;IAC/B,SAAS,EAAE,MAAM,CAAA;IACjB,iCAAiC;IACjC,SAAS,EAAE,MAAM,CAAA;IACjB,wDAAwD;IACxD,KAAK,CAAC,EAAE,MAAM,CAAA;IACd,6CAA6C;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAA;CACnB;AAED,+BAA+B;AAC/B,MAAM,WAAW,iBAAiB;IAChC,KAAK,EAAE,MAAM,CAAA;IACb,MAAM,EAAE,MAAM,CAAA;IACd,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CACnC;AAyCD;;;;;;GAMG;AACH,yEAAyE;AACzE,MAAM,WAAW,SAAS;IACxB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAA;CAC5D;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,GAAE,SAAc,GAAG,MAAM,CAAC,MAAM,EAAE,WAAW,CAAC,CA+/B7F"}
|
package/dist/tools/index.js
CHANGED
|
@@ -48,14 +48,7 @@ const cardTypeSchema = z.enum([
|
|
|
48
48
|
"security",
|
|
49
49
|
"infra",
|
|
50
50
|
]);
|
|
51
|
-
|
|
52
|
-
* Construye el set de tools dado una instancia de Office.
|
|
53
|
-
*
|
|
54
|
-
* El tipo de retorno es explícito a propósito: sin la anotación, TypeScript
|
|
55
|
-
* no puede nombrar el tipo de los schemas (que viene del zod anidado del
|
|
56
|
-
* plugin) y el build falla con TS2742.
|
|
57
|
-
*/
|
|
58
|
-
export function buildTools(office) {
|
|
51
|
+
export function buildTools(office, hooks = {}) {
|
|
59
52
|
const officeOf = (ctx) => {
|
|
60
53
|
// El directorio del contexto tiene prioridad sobre el cwd del plugin:
|
|
61
54
|
// es el proyecto real en el que se está trabajando.
|
|
@@ -87,7 +80,7 @@ export function buildTools(office) {
|
|
|
87
80
|
mayTouch: z.array(z.string()).describe("Globs que el agente puede tocar."),
|
|
88
81
|
forbidden: z.array(z.string()).describe("Globs prohibidos."),
|
|
89
82
|
})
|
|
90
|
-
.
|
|
83
|
+
.describe("Scope del agente."),
|
|
91
84
|
acceptance: z
|
|
92
85
|
.array(z.string())
|
|
93
86
|
.describe("Criterios verificables. Nada de 'hecho' genérico."),
|
|
@@ -101,19 +94,29 @@ export function buildTools(office) {
|
|
|
101
94
|
await off.init();
|
|
102
95
|
const state = await off.loadState(args.objective);
|
|
103
96
|
const updated = await off.savePlan(state, args.cards);
|
|
97
|
+
// El plan marca el arranque de la corrida: acá se abre el dashboard
|
|
98
|
+
// visual (la URL viaja en la salida para que el modelo la reporte).
|
|
99
|
+
let dashUrl;
|
|
100
|
+
try {
|
|
101
|
+
dashUrl = await hooks.onRunStart?.(updated.runId);
|
|
102
|
+
}
|
|
103
|
+
catch { /* el dashboard es best-effort: no bloquea la corrida */ }
|
|
104
|
+
const lines = [
|
|
105
|
+
`Plan guardado. ${updated.order.length} cards en la corrida.`,
|
|
106
|
+
"",
|
|
107
|
+
...updated.order.map((id) => {
|
|
108
|
+
const c = updated.cards[id];
|
|
109
|
+
return `- **${id}** ${c.title} [${c.type}] owner=${c.owner ?? "(sin owner)"} reviewer=${c.reviewer ?? "(sin reviewer)"} — gate: ${c.gate}`;
|
|
110
|
+
}),
|
|
111
|
+
"",
|
|
112
|
+
`Siguiente paso: llamá \`oficina_assign\` para tomar la primera card.`,
|
|
113
|
+
];
|
|
114
|
+
if (dashUrl)
|
|
115
|
+
lines.push("", `Dashboard en vivo: ${dashUrl} (ya se abrió en tu navegador)`);
|
|
104
116
|
return {
|
|
105
117
|
title: `Plan guardado: ${updated.order.length} cards`,
|
|
106
|
-
output:
|
|
107
|
-
|
|
108
|
-
"",
|
|
109
|
-
...updated.order.map((id) => {
|
|
110
|
-
const c = updated.cards[id];
|
|
111
|
-
return `- **${id}** ${c.title} [${c.type}] owner=${c.owner ?? "(sin owner)"} reviewer=${c.reviewer ?? "(sin reviewer)"} — gate: ${c.gate}`;
|
|
112
|
-
}),
|
|
113
|
-
"",
|
|
114
|
-
`Siguiente paso: llamá \`oficina_assign\` para tomar la primera card.`,
|
|
115
|
-
].join("\n"),
|
|
116
|
-
metadata: { runId: updated.runId, cards: updated.order.length },
|
|
118
|
+
output: lines.join("\n"),
|
|
119
|
+
metadata: { runId: updated.runId, cards: updated.order.length, dashboard: dashUrl },
|
|
117
120
|
};
|
|
118
121
|
},
|
|
119
122
|
}),
|
|
@@ -134,7 +137,7 @@ export function buildTools(office) {
|
|
|
134
137
|
const lines = [
|
|
135
138
|
`# OFICINA — ${state.objective}`,
|
|
136
139
|
"",
|
|
137
|
-
`**Estado:** ${state.status} · **iteración:** ${state.iteration} · **
|
|
140
|
+
`**Estado:** ${state.status} · **iteración:** ${state.iteration} · **cards:** ${Object.keys(state.cards).length}`,
|
|
138
141
|
"",
|
|
139
142
|
"## Cards",
|
|
140
143
|
"",
|
|
@@ -148,11 +151,11 @@ export function buildTools(office) {
|
|
|
148
151
|
`**Sin heartbeat:** ${dead.map((a) => `${a.id}(${a.role})`).join(", ") || "—"}`,
|
|
149
152
|
];
|
|
150
153
|
return {
|
|
151
|
-
title: `Oficina: ${state.status} · ${state.
|
|
154
|
+
title: `Oficina: ${state.status} · ${Object.keys(state.cards).length} cards`,
|
|
152
155
|
output: lines.join("\n"),
|
|
153
156
|
metadata: {
|
|
154
157
|
status: state.status,
|
|
155
|
-
cards: state.
|
|
158
|
+
cards: Object.keys(state.cards).length,
|
|
156
159
|
idle: idle.length,
|
|
157
160
|
dead: dead.length,
|
|
158
161
|
},
|
|
@@ -482,10 +485,6 @@ export function buildTools(office) {
|
|
|
482
485
|
requested_role: args.requestedRole,
|
|
483
486
|
capabilities: args.capabilities,
|
|
484
487
|
reason: args.reason,
|
|
485
|
-
budget: {
|
|
486
|
-
spawns_used: state.budget.spawnsUsed,
|
|
487
|
-
spawns_remaining: state.budget.maxSpawnsTotal - state.budget.spawnsUsed,
|
|
488
|
-
},
|
|
489
488
|
},
|
|
490
489
|
idempotencyKey: `spawn:${args.requestedRole}:${args.agentId}`,
|
|
491
490
|
});
|
|
@@ -647,9 +646,10 @@ export function buildTools(office) {
|
|
|
647
646
|
capabilities: z.array(z.string()).describe("Capabilities necesarias."),
|
|
648
647
|
scope: z
|
|
649
648
|
.object({
|
|
650
|
-
mayTouch: z.array(z.string()).
|
|
651
|
-
forbidden: z.array(z.string()).
|
|
649
|
+
mayTouch: z.array(z.string()).describe("Globs que el agente puede tocar."),
|
|
650
|
+
forbidden: z.array(z.string()).describe("Globs prohibidos."),
|
|
652
651
|
})
|
|
652
|
+
.describe("Scope del agente.")
|
|
653
653
|
.optional(),
|
|
654
654
|
canDelegate: z.boolean().default(false),
|
|
655
655
|
delegateBudget: z.number().int().min(0).max(5).default(0),
|
|
@@ -924,58 +924,6 @@ export function buildTools(office) {
|
|
|
924
924
|
};
|
|
925
925
|
},
|
|
926
926
|
}),
|
|
927
|
-
/**
|
|
928
|
-
* El costo de la corrida.
|
|
929
|
-
*/
|
|
930
|
-
oficina_cost: tool({
|
|
931
|
-
description: "El costo real de la corrida: tokens y USD por card, por agente y por fase de trabajo, " +
|
|
932
|
-
"con los presupuestos y cuánto falta para cada límite. También mide trabajo redundante " +
|
|
933
|
-
"(releer el mismo contexto, repetir el mismo comando). Usá `estimate` antes de arrancar " +
|
|
934
|
-
"una corrida grande.",
|
|
935
|
-
args: {
|
|
936
|
-
action: z.enum(["report", "estimate", "redundancy"]).default("report"),
|
|
937
|
-
cards: z.number().int().min(1).max(100).default(10).describe("Para estimate: cards estimadas."),
|
|
938
|
-
agentsPerCard: z.number().int().min(1).max(10).default(2).describe("Para estimate: agentes por card."),
|
|
939
|
-
callsPerAgent: z.number().int().min(1).max(100).default(10).describe("Para estimate: llamadas por agente."),
|
|
940
|
-
usdPerCall: z.number().min(0).default(0.02).describe("Para estimate: USD por llamada."),
|
|
941
|
-
},
|
|
942
|
-
async execute(args, ctx) {
|
|
943
|
-
const { checkBudget, estimateRun, renderCostReport, DEFAULT_COST_LIMITS } = await import("../core/cost.js");
|
|
944
|
-
const state = await officeOf(ctx).loadState();
|
|
945
|
-
const ledger = await officeOf(ctx).cost.load(state.runId);
|
|
946
|
-
if (args.action === "estimate") {
|
|
947
|
-
const est = estimateRun(args.cards, args.agentsPerCard, args.callsPerAgent, args.usdPerCall);
|
|
948
|
-
return {
|
|
949
|
-
title: `Estimación: ~$${est.usd.toFixed(2)}`,
|
|
950
|
-
output: `**Estimación previa**\n\n` +
|
|
951
|
-
`- Cards: ${args.cards}\n` +
|
|
952
|
-
`- Agentes por card: ${args.agentsPerCard}\n` +
|
|
953
|
-
`- Llamadas por agente: ${args.callsPerAgent}\n` +
|
|
954
|
-
`- USD por llamada: $${args.usdPerCall}\n\n` +
|
|
955
|
-
`**Costo estimado: ~$${est.usd.toFixed(2)}** · ~${est.tokens.toLocaleString("es-AR")} tokens\n\n` +
|
|
956
|
-
`_${est.note}_`,
|
|
957
|
-
metadata: { usd: est.usd, tokens: est.tokens },
|
|
958
|
-
};
|
|
959
|
-
}
|
|
960
|
-
if (args.action === "redundancy") {
|
|
961
|
-
const { detectRedundantWork } = await import("../core/cost.js");
|
|
962
|
-
const report = detectRedundantWork([]);
|
|
963
|
-
return {
|
|
964
|
-
title: "Trabajo redundante",
|
|
965
|
-
output: report.summary,
|
|
966
|
-
metadata: { wasted: report.wastedFraction },
|
|
967
|
-
};
|
|
968
|
-
}
|
|
969
|
-
const decision = checkBudget(ledger, DEFAULT_COST_LIMITS);
|
|
970
|
-
return {
|
|
971
|
-
title: `Costo: $${ledger.total.usd.toFixed(4)} · ${ledger.total.calls} llamadas`,
|
|
972
|
-
output: renderCostReport(ledger, DEFAULT_COST_LIMITS) +
|
|
973
|
-
`\n\n**Veredicto de presupuesto:** ${decision.allowed ? "dentro de los límites" : `EXCEDIDO (${decision.breached})`}\n` +
|
|
974
|
-
`${decision.reason}`,
|
|
975
|
-
metadata: { usd: ledger.total.usd, allowed: decision.allowed, breached: decision.breached },
|
|
976
|
-
};
|
|
977
|
-
},
|
|
978
|
-
}),
|
|
979
927
|
/**
|
|
980
928
|
* El freno de emergencia.
|
|
981
929
|
*/
|