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.
- package/README.md +1 -1
- 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 +24 -0
- package/dist/cli.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.map +1 -1
- package/dist/core/dispatch.js +11 -0
- package/dist/core/dispatch.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/systemPrompt.d.ts.map +1 -1
- package/dist/core/systemPrompt.js +3 -0
- package/dist/core/systemPrompt.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 +26 -22
- package/dist/tools/index.js.bak +972 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/v2.d.ts +5 -0
- package/dist/v2.d.ts.map +1 -1
- package/dist/v2.js +57 -5
- package/dist/v2.js.bak +517 -0
- package/dist/v2.js.map +1 -1
- package/docs/QUE-ES.md +1 -1
- 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
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "oficina-opencode",
|
|
3
|
-
"version": "3.1.
|
|
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"
|