oficina-opencode 3.1.0 → 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.
Files changed (69) hide show
  1. package/README.md +1 -1
  2. package/commands/oficina.md +7 -6
  3. package/dashboard/.dom-check.html +1257 -0
  4. package/dashboard/README-DASHBOARD.md +64 -0
  5. package/dashboard/assets/factory.css +1543 -0
  6. package/dashboard/assets/tokens.css +208 -0
  7. package/dashboard/build-kanban-data.mjs +279 -0
  8. package/dashboard/dashboard.css +753 -0
  9. package/dashboard/dashboard.html +121 -0
  10. package/dashboard/dashboard.js +610 -0
  11. package/dashboard/data/snapshot.json +883 -0
  12. package/dashboard/debate.html +134 -0
  13. package/dashboard/factory/build-snapshot.mjs +89 -0
  14. package/dashboard/factory/factory-app.js +1185 -0
  15. package/dashboard/factory/factory-core.js +541 -0
  16. package/dashboard/factory/snapshot.js +850 -0
  17. package/dashboard/factory.html +350 -0
  18. package/dashboard/kanban-data.json +671 -0
  19. package/dashboard/kanban-source.js +643 -0
  20. package/dashboard/kanban.check.mjs +454 -0
  21. package/dashboard/kanban.html +1257 -0
  22. package/dashboard/leadership.html +1008 -0
  23. package/dashboard/lib/debate-app.js +1149 -0
  24. package/dashboard/lib/debate-core.js +698 -0
  25. package/dashboard/lib/debate-data.js +163 -0
  26. package/dashboard/lib/debate-demo.js +110 -0
  27. package/dashboard/lib/debate.css +1155 -0
  28. package/dashboard/lib/leadership-model.js +946 -0
  29. package/dashboard/probe.mjs +35 -0
  30. package/dashboard/scripts/serve.mjs +122 -0
  31. package/dashboard/scripts/snapshot-data.mjs +93 -0
  32. package/dashboard/scripts/snapshot.mjs +28 -0
  33. package/dashboard/server.mjs +242 -0
  34. package/dashboard/shot.mjs +54 -0
  35. package/dashboard/shots/desktop-gates.png +0 -0
  36. package/dashboard/shots/desktop-light.png +0 -0
  37. package/dashboard/shots/desktop-real.png +0 -0
  38. package/dashboard/shots/mobile.png +0 -0
  39. package/dashboard/test/factory-core.test.mjs +244 -0
  40. package/dashboard/tests/debate-core.test.mjs +336 -0
  41. package/dashboard/tests/leadership-model.test.mjs +404 -0
  42. package/dist/cli.js +24 -0
  43. package/dist/cli.js.map +1 -1
  44. package/dist/core/dashboard.d.ts +33 -0
  45. package/dist/core/dashboard.d.ts.map +1 -0
  46. package/dist/core/dashboard.js +115 -0
  47. package/dist/core/dashboard.js.map +1 -0
  48. package/dist/core/dispatch.d.ts.map +1 -1
  49. package/dist/core/dispatch.js +11 -0
  50. package/dist/core/dispatch.js.map +1 -1
  51. package/dist/core/environment.d.ts +28 -0
  52. package/dist/core/environment.d.ts.map +1 -0
  53. package/dist/core/environment.js +80 -0
  54. package/dist/core/environment.js.map +1 -0
  55. package/dist/core/systemPrompt.d.ts.map +1 -1
  56. package/dist/core/systemPrompt.js +3 -0
  57. package/dist/core/systemPrompt.js.map +1 -1
  58. package/dist/tools/index.d.ts +9 -1
  59. package/dist/tools/index.d.ts.map +1 -1
  60. package/dist/tools/index.js +26 -22
  61. package/dist/tools/index.js.bak +972 -0
  62. package/dist/tools/index.js.map +1 -1
  63. package/dist/v2.d.ts +5 -0
  64. package/dist/v2.d.ts.map +1 -1
  65. package/dist/v2.js +57 -5
  66. package/dist/v2.js.bak +517 -0
  67. package/dist/v2.js.map +1 -1
  68. package/docs/QUE-ES.md +1 -1
  69. package/package.json +4 -1
package/dist/v2.js.bak ADDED
@@ -0,0 +1,517 @@
1
+ /**
2
+ * OFICINA — entry point del plugin para **OpenCode v2**.
3
+ *
4
+ * ## Por qué existe este archivo
5
+ *
6
+ * OpenCode v1 y v2 tienen APIs de plugins **incomunes**: no es que
7
+ * cambiara una firma, es que cambió la forma. v1 exportaba una funcion que
8
+ * devuelve hooks; v2 exige `export default { id, setup(ctx) }`. Un plugin
9
+ * v1 bajo v2 falla con:
10
+ *
11
+ * PluginModule.LoadError: Plugin must export a default definition with
12
+ * an id and an effect or setup function.
13
+ *
14
+ * Y al reves: un plugin v2 bajo v1 no carga.
15
+ *
16
+ * Este archivo es la implementacion **v2**. La de v1 vive en `v1.ts` y el
17
+ * motor (`core/`, `tools/`) no depende de ninguna de las dos APIs: define
18
+ * las tools en una forma neutra y cada entry la traduce.
19
+ *
20
+ * ## Que registra
21
+ *
22
+ * - **Tools** (`oficina_*`): la superficie de trabajo, via `ctx.tool.transform`.
23
+ * - **Guard de scope** (`ctx.tool.hook` + `ctx.permission.hook`): dos capas.
24
+ * La primera intercepta la tool; la segunda es el punto de enforcement del
25
+ * framework y puede `deny` de verdad.
26
+ * - **Tripwire** (`ctx.tool.hook("execute.after")`): detecta escrituras que se
27
+ * colaron por un comando de shell.
28
+ * - **Estado de la oficina** (`ctx.session.hook("context")`): el agente no
29
+ * repregunta lo que ya sabe.
30
+ * - **Auto-continuacion** (`session.idle`): la corrida sigue sola cuando el
31
+ * modelo para.
32
+ * - **Costo** (`session.usage.recorded`): el numero real que reporta el motor.
33
+ */
34
+ import { Plugin } from "@opencode/plugin";
35
+ import { z } from "zod";
36
+ import { Office } from "./core/office.js";
37
+ import { buildTools } from "./tools/index.js";
38
+ import { analyzeShellCommand, checkScope } from "./core/sandbox.js";
39
+ import { extractCommand, extractPaths, resolveScopeCard } from "./hooks/scopeGuard.js";
40
+ import { Tripwire } from "./core/tripwire.js";
41
+ import { logger } from "./core/log.js";
42
+ const log = logger("oficina:v2");
43
+ /** Tools que escriben un archivo. */
44
+ const FILE_WRITE_TOOLS = new Set([
45
+ "edit",
46
+ "write",
47
+ "patch",
48
+ "multiedit",
49
+ "apply_patch",
50
+ "notebook_edit",
51
+ "str_replace",
52
+ "str_replace_editor",
53
+ "edit_file",
54
+ "edit_notebook_file",
55
+ "create_file",
56
+ "write_file",
57
+ "create_or_update_file",
58
+ ]);
59
+ /** Tools que ejecutan shell. */
60
+ const SHELL_TOOLS = new Set([
61
+ "bash",
62
+ "shell",
63
+ "run",
64
+ "run_command",
65
+ "execute_command",
66
+ "terminal",
67
+ "powershell",
68
+ "cmd",
69
+ ]);
70
+ /** Acciones de permiso que implican escribir un archivo. */
71
+ const WRITE_ACTIONS = new Set(["edit", "write", "patch", "multiedit", "apply_patch"]);
72
+ /**
73
+ * Convierte un schema zod a JSON Schema.
74
+ *
75
+ * v2 exige JSON Schema plano en `tool.input`. zod v4 lo hace nativo.
76
+ */
77
+ function toJsonSchema(schema) {
78
+ if (!schema)
79
+ return { type: "object", additionalProperties: true };
80
+ try {
81
+ const converted = z.toJSONSchema(schema, {
82
+ io: "input",
83
+ unrepresentable: "any",
84
+ });
85
+ // Si el schema no es de un objeto, se acepta igual pero se documenta.
86
+ if (converted["type"] !== "object") {
87
+ return { type: "object", additionalProperties: true, description: converted["description"] };
88
+ }
89
+ return { ...converted, additionalProperties: false };
90
+ }
91
+ catch {
92
+ return { type: "object", additionalProperties: true };
93
+ }
94
+ }
95
+ export default Plugin.define({
96
+ id: "oficina",
97
+ async setup(ctx) {
98
+ const options = (ctx.options ?? {});
99
+ const enforce = options.enforceScope !== false;
100
+ const directory = ctx.location.directory;
101
+ const office = new Office({
102
+ cwd: directory,
103
+ /**
104
+ * Como se crea un subagente en OpenCode v2.
105
+ *
106
+ * La v1 usaba `session.prompt` con una parte `subtask`. **En v2 esa
107
+ * parte no existe.** La forma de v2 es crear la sesion hija y
108
+ * dispararle un prompt:
109
+ *
110
+ * const child = await ctx.session.create({ parentID, title, agent })
111
+ * await ctx.session.prompt({ sessionID: child.id, text })
112
+ *
113
+ * El hijo queda colgando de la sesion padre, asi que hereda su
114
+ * scope: el guard lo encuentra subiendo por la cadena de padres.
115
+ */
116
+ spawner: async ({ sessionID, agentName, prompt, description }) => {
117
+ try {
118
+ const child = (await ctx.session.create({
119
+ parentID: sessionID,
120
+ title: description || `Oficina: ${agentName}`,
121
+ // El agente materializado puede no estar registrado todavia
122
+ // (OpenCode arma su lista al arrancar), asi que se dispara con
123
+ // `general` y la especialidad viaja completa en el prompt.
124
+ agent: "general",
125
+ }));
126
+ await ctx.session.prompt({
127
+ sessionID: child.id,
128
+ text: prompt,
129
+ metadata: { oficina: { agent: agentName, description } },
130
+ });
131
+ return true;
132
+ }
133
+ catch (err) {
134
+ log.warn("no se pudo arrancar el subagente", { agent: agentName, error: String(err) });
135
+ return false;
136
+ }
137
+ },
138
+ });
139
+ await office.init();
140
+ /* ────────────────────────────────────────────────────────────────────────
141
+ * 0. DASHBOARD VISUAL
142
+ *
143
+ * El servidor arranca en background (detached) apenas el plugin carga,
144
+ * así que cuando la corrida empieza ya está conectado a `.oficina/`.
145
+ * El navegador se abre cuando hay una corrida activa: al guardar el plan
146
+ * (`oficina_plan`) o al reanudar una corrida `running`.
147
+ * ──────────────────────────────────────────────────────────────────────── */
148
+ const dashboardEnabled = options.dashboard?.enabled !== false &&
149
+ // En tests y CI el auto-start spawnearía un proceso detached que
150
+ // bloquea los temp dirs del suite (EBUSY en el cleanup).
151
+ !process.env.VITEST &&
152
+ !process.env.CI;
153
+ const dashboard = await import("./core/dashboard.js");
154
+ if (dashboardEnabled) {
155
+ void (async () => {
156
+ try {
157
+ const info = await dashboard.startDashboard(office.paths.projectRoot, office.paths.officeDir);
158
+ if (!info)
159
+ return;
160
+ // ¿Hay una corrida activa que reanudar? Abrir el navegador ya.
161
+ const state = await office.loadState();
162
+ if (state.status === "running")
163
+ dashboard.openBrowser(info.url);
164
+ }
165
+ catch (err) {
166
+ log.debug("dashboard: arranque best-effort", { error: String(err) });
167
+ }
168
+ })();
169
+ }
170
+ const tripwire = new Tripwire(office.paths.projectRoot, {
171
+ maxFiles: options.tripwireMaxFiles ?? 4000,
172
+ });
173
+ /**
174
+ * El padre de una sesion, con cache.
175
+ *
176
+ * Es lo que hace que un subagente **herede el scope** de quien lo
177
+ * lanzo: la sesion hija cuelga de la padre, y el guard sube por la
178
+ * cadena hasta encontrar la sesion que tiene la card.
179
+ *
180
+ * Sin esto, delegar seria un escalon para salirse del scope: el
181
+ * subagente no tendria card y el guard lo dejaria pasar todo.
182
+ */
183
+ const parentCache = new Map();
184
+ const resolveParentSession = async (sessionID) => {
185
+ if (parentCache.has(sessionID))
186
+ return parentCache.get(sessionID);
187
+ try {
188
+ const session = (await ctx.session.get({ sessionID }));
189
+ const parent = session?.parentID;
190
+ parentCache.set(sessionID, parent);
191
+ return parent;
192
+ }
193
+ catch (err) {
194
+ log.debug("no se pudo resolver el padre de la sesion", { sessionID, error: String(err) });
195
+ parentCache.set(sessionID, undefined);
196
+ return undefined;
197
+ }
198
+ };
199
+ /** El scope que aplica a una sesion, si tiene. */
200
+ const scopeOf = async (sessionID) => {
201
+ try {
202
+ const state = await office.loadState();
203
+ const result = await resolveScopeCard(state, sessionID, { enforce, resolveParentSession });
204
+ if (result.kind === "VERIFICATION_FAILED") {
205
+ log.error("verificacion de scope fallida", { sessionID, reason: result.reason });
206
+ if (enforce) {
207
+ throw new Error(`[OFICINA] Scope verification failed: ${result.reason}. Operation blocked (fail-closed).`);
208
+ }
209
+ return undefined;
210
+ }
211
+ if (result.kind !== "AUTHORIZED") {
212
+ return undefined;
213
+ }
214
+ const card = result.card;
215
+ const policy = {
216
+ mayTouch: card.scope.mayTouch,
217
+ forbidden: card.scope.forbidden,
218
+ };
219
+ return { card, policy };
220
+ }
221
+ catch (err) {
222
+ log.debug("no se pudo resolver el scope de la sesion", { sessionID, error: String(err) });
223
+ if (enforce) {
224
+ throw new Error(`[OFICINA] Scope verification failed: ${String(err)}. Operation blocked (fail-closed).`);
225
+ }
226
+ return undefined;
227
+ }
228
+ };
229
+ /* ────────────────────────────────────────────────────────────────────────
230
+ * 1. TOOLS
231
+ * ──────────────────────────────────────────────────────────────────────── */
232
+ const defs = buildTools(office, {
233
+ onRunStart: async (runId) => {
234
+ if (!dashboardEnabled)
235
+ return undefined;
236
+ try {
237
+ const info = await dashboard.startDashboard(office.paths.projectRoot, office.paths.officeDir);
238
+ if (info) {
239
+ dashboard.openBrowser(info.url);
240
+ log.info("dashboard abierto", { runId, url: info.url });
241
+ return info.url;
242
+ }
243
+ log.warn("dashboard no disponible", { runId });
244
+ }
245
+ catch (err) {
246
+ log.debug("dashboard: arranque best-effort", { runId, error: String(err) });
247
+ }
248
+ return undefined;
249
+ },
250
+ });
251
+ await ctx.tool.transform((editor) => {
252
+ for (const [name, def] of Object.entries(defs)) {
253
+ editor.add({
254
+ name,
255
+ description: def.description,
256
+ input: toJsonSchema(def.args),
257
+ execute: async (input, toolCtx) => {
258
+ const result = await def.execute((input ?? {}), {
259
+ directory,
260
+ sessionID: toolCtx.sessionID,
261
+ agent: toolCtx.agent,
262
+ messageID: toolCtx.messageID,
263
+ });
264
+ return {
265
+ content: result.output,
266
+ metadata: result.metadata,
267
+ };
268
+ },
269
+ });
270
+ }
271
+ });
272
+ /* ────────────────────────────────────────────────────────────────────────
273
+ * 2. GUARD DE SCOPE
274
+ *
275
+ * Dos capas, porque cada una cubre lo que la otra no:
276
+ *
277
+ * - `tool.hook("execute.before")`: ve el path exacto de cada tool que
278
+ * escribe, incluso los que no pasan por el sistema de permisos.
279
+ * - `permission.hook("evaluate")`: es el punto de enforcement del
280
+ * framework y puede `deny` de verdad, con motivo.
281
+ * ──────────────────────────────────────────────────────────────────────── */
282
+ /** Verifica un path contra el scope. Devuelve el motivo si viola. */
283
+ const violation = async (sessionID, rawPath) => {
284
+ const scope = await scopeOf(sessionID);
285
+ if (!scope)
286
+ return undefined;
287
+ const verdict = await checkScope(office.paths.projectRoot, rawPath, scope.policy);
288
+ if (verdict.allowed)
289
+ return undefined;
290
+ return { reason: verdict.reason, kind: verdict.kind };
291
+ };
292
+ await ctx.tool.hook("execute.before", async (event) => {
293
+ const tool = String(event.tool);
294
+ const input = (event.input ?? {});
295
+ // Lecturas: nunca se tocan.
296
+ if (!FILE_WRITE_TOOLS.has(tool) && !SHELL_TOOLS.has(tool)) {
297
+ // Igual se arma el tripwire: una tool de lectura puede escribir
298
+ // (un `grep` con redireccion, por ejemplo) y no hay que confiar en
299
+ // el nombre de la tool.
300
+ const scopeLectura = await scopeOf(event.sessionID);
301
+ if (scopeLectura)
302
+ await tripwire.arm(String(event.id), scopeLectura.policy.mayTouch);
303
+ return;
304
+ }
305
+ const scope = await scopeOf(event.sessionID);
306
+ if (!scope)
307
+ return;
308
+ if (FILE_WRITE_TOOLS.has(tool)) {
309
+ for (const rawPath of extractPaths(tool, input)) {
310
+ const bad = await violation(event.sessionID, rawPath);
311
+ if (!bad)
312
+ continue;
313
+ const mensaje = `[OFICINA] Scope violado: ${bad.reason} (card ${scope.card.id})`;
314
+ log.warn("scope violado (archivo)", { card: scope.card.id, path: rawPath, kind: bad.kind });
315
+ if (enforce)
316
+ throw new Error(mensaje);
317
+ }
318
+ // El tripwire se arma una sola vez, con el mismo hook: registrar
319
+ // `execute.before` dos veces hacia que la segunda pise a la primera
320
+ // (y el guard dejaba de bloquear).
321
+ await tripwire.arm(String(event.id), scope.policy.mayTouch);
322
+ return;
323
+ }
324
+ if (SHELL_TOOLS.has(tool)) {
325
+ const command = extractCommand(input);
326
+ if (!command)
327
+ return;
328
+ for (const candidate of analyzeShellCommand(command)) {
329
+ if (candidate.uncertain) {
330
+ // Hay una escritura que no sabemos interpretar. No se bloquea
331
+ // (seria inservible), pero el tripwire va a mirar.
332
+ log.warn("shell con escritura no interpretable", {
333
+ card: scope.card.id,
334
+ op: candidate.op,
335
+ });
336
+ continue;
337
+ }
338
+ const bad = await violation(event.sessionID, candidate.target);
339
+ if (!bad)
340
+ continue;
341
+ const mensaje = `[OFICINA] Scope violado: ${bad.reason} (card ${scope.card.id})`;
342
+ log.warn("scope violado (shell)", {
343
+ card: scope.card.id,
344
+ target: candidate.target,
345
+ kind: bad.kind,
346
+ });
347
+ if (enforce)
348
+ throw new Error(mensaje);
349
+ }
350
+ await tripwire.arm(String(event.id), scope.policy.mayTouch);
351
+ }
352
+ });
353
+ await ctx.permission.hook("evaluate", async (event) => {
354
+ if (!WRITE_ACTIONS.has(String(event.action)))
355
+ return;
356
+ const scope = await scopeOf(event.sessionID);
357
+ if (!scope)
358
+ return;
359
+ for (const resource of event.resources) {
360
+ const bad = await violation(event.sessionID, resource);
361
+ if (!bad)
362
+ continue;
363
+ event.effect = "deny";
364
+ event.message = `[OFICINA] Scope violado: ${bad.reason} (card ${scope.card.id})`;
365
+ log.warn("permiso denegado por scope", {
366
+ card: scope.card.id,
367
+ resource,
368
+ kind: bad.kind,
369
+ });
370
+ return;
371
+ }
372
+ });
373
+ /* ────────────────────────────────────────────────────────────────────────
374
+ * 3. TRIPWIRE
375
+ *
376
+ * Fotografia el arbol antes de una tool y compara despues. Lo que cambio
377
+ * fuera del scope se reporta por el bus: detecta, no revierte.
378
+ * ──────────────────────────────────────────────────────────────────────── */
379
+ await ctx.tool.hook("execute.after", async (event) => {
380
+ const scope = await scopeOf(event.sessionID);
381
+ if (!scope)
382
+ return;
383
+ const { changes: cambios, incomplete, errors, armFailed } = await tripwire.check(String(event.id), scope.policy.mayTouch);
384
+ if (cambios.length === 0 && !incomplete && errors.length === 0 && !armFailed)
385
+ return;
386
+ const detalle = cambios.map((c) => ` - ${c.kind}: ${c.path}`).join("\n");
387
+ log.warn("escrituras fuera del scope detectadas", {
388
+ card: scope.card.id,
389
+ tool: event.tool,
390
+ cambios: cambios.length,
391
+ incomplete,
392
+ errors: errors.length,
393
+ armFailed,
394
+ });
395
+ await office.bus
396
+ .send("peer", {
397
+ from: "oficina",
398
+ to: ["*"],
399
+ kind: "NOTICE",
400
+ subject: scope.card.id,
401
+ body: {
402
+ notice: "scope",
403
+ message: `Se detectaron ${cambios.length} cambio(s) fuera del scope de la card ${scope.card.id} ` +
404
+ `durante \`${event.tool}\`:\n${detalle}\n\n` +
405
+ `${incomplete ? "⚠️ Inspección incompleta (límite de archivos alcanzado). " : ""}` +
406
+ `${errors.length > 0 ? `⚠️ ${errors.length} error(es) durante la inspección. ` : ""}` +
407
+ `${armFailed ? "⚠️ No se pudo tomar la instantánea inicial (arm falló). " : ""}` +
408
+ `Si fue deliberado, avisalo por el bus. Si no, revisé lo que tocaste.`,
409
+ },
410
+ })
411
+ .catch(() => undefined);
412
+ });
413
+ /* ────────────────────────────────────────────────────────────────────────
414
+ * 4. EL ESTADO DE LA OFICINA VIAJA CON CADA LLAMADA
415
+ * ──────────────────────────────────────────────────────────────────────── */
416
+ await ctx.session.hook("context", async (event) => {
417
+ try {
418
+ const { buildSystemPrompt } = await import("./core/systemPrompt.js");
419
+ const state = await office.loadState();
420
+ event.system.push({ type: "text", text: await buildSystemPrompt(office, state) });
421
+ }
422
+ catch (err) {
423
+ log.debug("no se pudo inyectar el estado", { error: String(err) });
424
+ }
425
+ });
426
+ /* ────────────────────────────────────────────────────────────────────────
427
+ * 5. COMPACTACION
428
+ *
429
+ * El estado sobrevive a la compactacion: se lee del disco, no de la
430
+ * memoria de la conversacion.
431
+ * ──────────────────────────────────────────────────────────────────────── */
432
+ await ctx.session.hook("compaction", async (event) => {
433
+ try {
434
+ const { buildSystemPrompt } = await import("./core/systemPrompt.js");
435
+ const state = await office.loadState();
436
+ event.system.push({ type: "text", text: await buildSystemPrompt(office, state) });
437
+ }
438
+ catch (err) {
439
+ log.debug("no se pudo inyectar el estado al compactar", { error: String(err) });
440
+ }
441
+ });
442
+ /* ────────────────────────────────────────────────────────────────────────
443
+ * 6. EVENTOS: auto-continuacion y costo
444
+ * ──────────────────────────────────────────────────────────────────────── */
445
+ const maxAutoResumes = options.maxAutoResumes ?? 25;
446
+ const resumes = new Map();
447
+ const lastResume = new Map();
448
+ const controller = new AbortController();
449
+ void (async () => {
450
+ try {
451
+ for await (const event of ctx.event.subscribe({ signal: controller.signal })) {
452
+ /* ── Auto-continuacion ── */
453
+ if (event.type === "session.idle") {
454
+ const sessionID = event.data?.sessionID;
455
+ if (!sessionID)
456
+ continue;
457
+ try {
458
+ const state = await office.loadState();
459
+ if (state.status !== "running")
460
+ continue;
461
+ if (state.halt)
462
+ continue;
463
+ const cards = Object.values(state.cards);
464
+ const pending = cards.filter((c) => c.state !== "done");
465
+ if (pending.length === 0)
466
+ continue;
467
+ const count = resumes.get(sessionID) ?? 0;
468
+ if (count >= maxAutoResumes) {
469
+ log.warn("tope de auto-reanudaciones alcanzado", { sessionID, count });
470
+ continue;
471
+ }
472
+ const last = lastResume.get(sessionID);
473
+ if (last !== undefined && Date.now() - last < 1_500)
474
+ continue;
475
+ lastResume.set(sessionID, Date.now());
476
+ resumes.set(sessionID, count + 1);
477
+ const { renderMesaBrief, snapshotMesa } = await import("./core/mesa.js");
478
+ const mesa = await snapshotMesa(office);
479
+ const mesaBrief = renderMesaBrief(mesa);
480
+ const texto = [
481
+ "[OFICINA - auto-continuacion]",
482
+ "",
483
+ `La corrida sigue abierta. Quedan ${pending.length} card(s) sin terminar.`,
484
+ "",
485
+ ...(mesaBrief ? ["---", "", "**La mesa:**", "", mesaBrief] : []),
486
+ "",
487
+ "Usá `oficina_board` para el panorama y `oficina_mesa` para ver la mesa.",
488
+ "No declares la corrida terminada mientras queden cards sin DONE.",
489
+ ].join("\n");
490
+ await ctx.session.synthetic({
491
+ sessionID,
492
+ text: texto,
493
+ description: "OFICINA: auto-continuacion",
494
+ });
495
+ }
496
+ catch (err) {
497
+ log.error("fallo en la auto-continuacion", { error: String(err) });
498
+ }
499
+ continue;
500
+ }
501
+ }
502
+ }
503
+ catch (err) {
504
+ if (!controller.signal.aborted) {
505
+ log.error("el stream de eventos se corto", { error: String(err) });
506
+ }
507
+ }
508
+ })();
509
+ log.info("plugin inicializado", {
510
+ directory,
511
+ tools: Object.keys(defs).length,
512
+ officeDir: office.paths.officeDir,
513
+ });
514
+ return () => controller.abort();
515
+ },
516
+ });
517
+ //# sourceMappingURL=v2.js.map
package/dist/v2.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"v2.js","sourceRoot":"","sources":["../src/v2.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"v2.js","sourceRoot":"","sources":["../src/v2.ts"],"names":[],"mappings":"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"}
package/docs/QUE-ES.md CHANGED
@@ -3,7 +3,7 @@
3
3
  <!-- BEGIN GENERATED: facts -->
4
4
  | | |
5
5
  |---|---|
6
- | **Paquete** | `oficina-opencode` v3.1.0 |
6
+ | **Paquete** | `oficina-opencode` v3.1.1 |
7
7
  | **Tools** | 15 |
8
8
  | **Hooks** | 7 |
9
9
  | **API de plugin** | `@opencode/plugin@2.1.2` |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "oficina-opencode",
3
- "version": "3.1.0",
3
+ "version": "3.1.1",
4
4
  "description": "Oficina de Agents — malla de coordinadores + peer mesh para OpenCode. Orquestación durable de subagentes con bus de mensajes en disco, roster de roles, leases, gates de calidad y escalamiento por invariantes.",
5
5
  "license": "MIT",
6
6
  "type": "module",
@@ -31,6 +31,7 @@
31
31
  "skills",
32
32
  "agents",
33
33
  "commands",
34
+ "dashboard",
34
35
  "docs",
35
36
  "examples",
36
37
  "DESIGN.md",
@@ -73,6 +74,7 @@
73
74
  "test:watch": "vitest",
74
75
  "coverage": "npm run build && vitest run --coverage",
75
76
  "prepublishOnly": "npm run typecheck && npm run test && npm run build && npm run docs:check",
77
+ "dashboard": "node dashboard/server.mjs",
76
78
  "docs:sync": "tsx scripts/sync-docs.ts",
77
79
  "docs:check": "tsx scripts/sync-docs.ts --check",
78
80
  "bench:selection": "tsx benchmarks/selection/run.ts",
@@ -96,6 +98,7 @@
96
98
  "@opencode/plugin": "^2.1.2",
97
99
  "@types/node": "^24.12.2",
98
100
  "@vitest/coverage-v8": "^5.0.5",
101
+ "playwright": "^1.64.1",
99
102
  "tsx": "^4.20.3",
100
103
  "typescript": "^5.8.2",
101
104
  "vitest": "^5.0.5"