oficina-opencode 2.0.0 → 2.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +174 -24
- package/dist/core/atomic.d.ts +85 -0
- package/dist/core/atomic.d.ts.map +1 -0
- package/dist/core/atomic.js +186 -0
- package/dist/core/atomic.js.map +1 -0
- package/dist/core/bus.d.ts +76 -56
- package/dist/core/bus.d.ts.map +1 -1
- package/dist/core/bus.js +141 -100
- package/dist/core/bus.js.map +1 -1
- package/dist/core/catalog.d.ts +27 -0
- package/dist/core/catalog.d.ts.map +1 -1
- package/dist/core/catalog.js +41 -6
- package/dist/core/catalog.js.map +1 -1
- package/dist/core/cost.d.ts +275 -0
- package/dist/core/cost.d.ts.map +1 -0
- package/dist/core/cost.js +724 -0
- package/dist/core/cost.js.map +1 -0
- package/dist/core/docsync.d.ts +124 -0
- package/dist/core/docsync.d.ts.map +1 -0
- package/dist/core/docsync.js +191 -0
- package/dist/core/docsync.js.map +1 -0
- package/dist/core/evidence.d.ts +314 -0
- package/dist/core/evidence.d.ts.map +1 -0
- package/dist/core/evidence.js +602 -0
- package/dist/core/evidence.js.map +1 -0
- package/dist/core/fsx.d.ts.map +1 -1
- package/dist/core/fsx.js +7 -1
- package/dist/core/fsx.js.map +1 -1
- package/dist/core/gates.d.ts +9 -2
- package/dist/core/gates.d.ts.map +1 -1
- package/dist/core/gates.js +19 -3
- package/dist/core/gates.js.map +1 -1
- package/dist/core/ids.d.ts +48 -0
- package/dist/core/ids.d.ts.map +1 -0
- package/dist/core/ids.js +87 -0
- package/dist/core/ids.js.map +1 -0
- package/dist/core/leases.d.ts +45 -0
- package/dist/core/leases.d.ts.map +1 -1
- package/dist/core/leases.js +85 -17
- package/dist/core/leases.js.map +1 -1
- package/dist/core/office.d.ts +72 -1
- package/dist/core/office.d.ts.map +1 -1
- package/dist/core/office.js +173 -6
- package/dist/core/office.js.map +1 -1
- package/dist/core/paths.d.ts +11 -1
- package/dist/core/paths.d.ts.map +1 -1
- package/dist/core/paths.js +28 -4
- package/dist/core/paths.js.map +1 -1
- package/dist/core/recovery.d.ts +87 -0
- package/dist/core/recovery.d.ts.map +1 -0
- package/dist/core/recovery.js +325 -0
- package/dist/core/recovery.js.map +1 -0
- package/dist/core/sandbox.d.ts +179 -0
- package/dist/core/sandbox.d.ts.map +1 -0
- package/dist/core/sandbox.js +546 -0
- package/dist/core/sandbox.js.map +1 -0
- package/dist/core/state.d.ts +7 -0
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +15 -1
- package/dist/core/state.js.map +1 -1
- package/dist/core/stores.d.ts +65 -0
- package/dist/core/stores.d.ts.map +1 -0
- package/dist/core/stores.js +115 -0
- package/dist/core/stores.js.map +1 -0
- package/dist/core/tripwire.d.ts +87 -0
- package/dist/core/tripwire.d.ts.map +1 -0
- package/dist/core/tripwire.js +203 -0
- package/dist/core/tripwire.js.map +1 -0
- package/dist/core/types.d.ts +33 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +1 -0
- package/dist/core/types.js.map +1 -1
- package/dist/hooks/scopeGuard.d.ts +86 -13
- package/dist/hooks/scopeGuard.d.ts.map +1 -1
- package/dist/hooks/scopeGuard.js +296 -62
- package/dist/hooks/scopeGuard.js.map +1 -1
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +185 -2
- package/dist/index.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +158 -0
- package/dist/tools/index.js.map +1 -1
- package/docs/COMPATIBILITY.md +98 -0
- package/docs/GARANTIAS.md +190 -0
- package/docs/PLAN-V2.1.md +144 -0
- package/docs/QUE-ES.md +15 -0
- package/docs/catalog-facts.json +27 -0
- package/package.json +10 -6
package/dist/core/fsx.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"fsx.js","sourceRoot":"","sources":["../../src/core/fsx.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,aAAa,CAAA;AACrD,OAAO,EAAE,UAAU,EAAE,MAAM,SAAS,CAAA;AACpC,OAAO,EAAE,MAAM,kBAAkB,CAAA;AACjC,OAAO,IAAI,MAAM,WAAW,CAAA;AAE5B,yDAAyD;AACzD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,QAAgB,EAAE,QAAgB;IAClE,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC3D,MAAM,GAAG,GAAG,GAAG,QAAQ,IAAI,WAAW,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,MAAM,CAAA;IAC/D,IAAI,CAAC;QACH,MAAM,EAAE,CAAC,SAAS,CAAC,GAAG,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAA;QACzC,MAAM,EAAE,CAAC,MAAM,CAAC,GAAG,EAAE,QAAQ,CAAC,CAAA;IAChC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,EAAE,CAAC,EAAE,CAAC,GAAG,EAAE,EAAE,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAA;QACjD,MAAM,GAAG,CAAA;IACX,CAAC;AACH,CAAC;AAED,wDAAwD;AACxD,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,QAAgB,EAAE,KAAc;IACpE,MAAM,WAAW,CAAC,QAAQ,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAA;AACpE,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAAI,QAAgB;IAChD,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAA;QAC/C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAM,CAAA;IAC7B,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,MAAM,IAAI,GAAI,GAA6B,CAAC,IAAI,CAAA;QAChD,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,SAAS,CAAA;QACvC,IAAI,GAAG,YAAY,WAAW,EAAE,CAAC;YAC/B,
|
|
1
|
+
{"version":3,"file":"fsx.js","sourceRoot":"","sources":["../../src/core/fsx.ts"],"names":[],"mappings":"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"}
|
package/dist/core/gates.d.ts
CHANGED
|
@@ -82,8 +82,15 @@ export declare function scanForSecrets(root: string, scope: string[]): Promise<S
|
|
|
82
82
|
* bloquea la card aunque el técnico esté verde.
|
|
83
83
|
*/
|
|
84
84
|
export declare function runSecurityGate(projectRoot: string, scope: string[], _runner?: CommandRunner): Promise<GatePhaseResult[]>;
|
|
85
|
-
/**
|
|
86
|
-
|
|
85
|
+
/**
|
|
86
|
+
* Consolida los resultados en un veredicto.
|
|
87
|
+
*
|
|
88
|
+
* `requirements` es la tercera dimension: los otros cinco fases dicen "el
|
|
89
|
+
* codigo esta sano", esta dice "el objetivo esta cumplido". Si falta
|
|
90
|
+
* evidencia de un requisito obligatorio, el veredicto global es FAIL aunque
|
|
91
|
+
* build, typecheck, lint, test y seguridad esten en verde.
|
|
92
|
+
*/
|
|
93
|
+
export declare function consolidate(cardId: string, technical: GatePhaseResult[], security: GatePhaseResult[], requirements?: GatePhaseResult[]): GateResult;
|
|
87
94
|
/**
|
|
88
95
|
* ¿La fase de tests corrió y pasó con al menos un test?
|
|
89
96
|
*
|
package/dist/core/gates.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../src/core/gates.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAKH,OAAO,KAAK,EAAqB,SAAS,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,YAAY,CAAA;AAG3F,gCAAgC;AAChC,MAAM,WAAW,OAAO;IACtB,cAAc,EAAE,KAAK,GAAG,MAAM,GAAG,MAAM,GAAG,KAAK,GAAG,IAAI,CAAA;IACtD,QAAQ,EAAE,OAAO,CAAA;IACjB,YAAY,EAAE,OAAO,CAAA;IACrB,OAAO,EAAE,OAAO,CAAA;IAChB,OAAO,EAAE,OAAO,CAAA;IAChB,QAAQ,EAAE,OAAO,CAAA;IACjB,IAAI,EAAE,OAAO,CAAA;IACb,MAAM,EAAE,OAAO,CAAA;IACf,MAAM,EAAE,OAAO,CAAA;IACf,uDAAuD;IACvD,QAAQ,EAAE,MAAM,EAAE,CAAA;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE,CAAC,CAAA;CAC1G;AAED,+BAA+B;AAC/B,eAAO,MAAM,aAAa,EAAE,aAexB,CAAA;AAEJ,+DAA+D;AAC/D,wBAAsB,aAAa,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CA8DzE;AAgCD,iDAAiD;AACjD,wBAAsB,QAAQ,CAC5B,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EAAE,EACd,GAAG,EAAE,MAAM,EACX,MAAM,GAAE,aAA6B,EACrC,WAAW,CAAC,EAAE,MAAM,GACnB,OAAO,CAAC,eAAe,CAAC,CAe1B;AAOD,oCAAoC;AACpC,wBAAsB,iBAAiB,CACrC,WAAW,EAAE,MAAM,EACnB,OAAO,EAAE,OAAO,EAChB,MAAM,GAAE,aAA6B,EACrC,KAAK,GAAE,MAAM,EAAO,GACnB,OAAO,CAAC,eAAe,EAAE,CAAC,CA+E5B;AAED;;;;;;;;;GASG;AACH,eAAO,MAAM,eAAe,EAAE;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,EAa/D,CAAA;AAeD,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAA;IACZ,IAAI,EAAE,MAAM,CAAA;IACZ,KAAK,EAAE,MAAM,CAAA;IACb,KAAK,EAAE,MAAM,CAAA;IACb,kEAAkE;IAClE,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,yEAAyE;AACzE,wBAAgB,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAG5C;AAED;;;;;GAKG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAqCxF;AAmBD;;;;;GAKG;AACH,wBAAsB,eAAe,CACnC,WAAW,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EAAE,EACf,OAAO,GAAE,aAA6B,GACrC,OAAO,CAAC,eAAe,EAAE,CAAC,CAqC5B;AAED
|
|
1
|
+
{"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../src/core/gates.ts"],"names":[],"mappings":"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"}
|
package/dist/core/gates.js
CHANGED
|
@@ -378,8 +378,15 @@ export async function runSecurityGate(projectRoot, scope, _runner = defaultRunne
|
|
|
378
378
|
}
|
|
379
379
|
return results;
|
|
380
380
|
}
|
|
381
|
-
/**
|
|
382
|
-
|
|
381
|
+
/**
|
|
382
|
+
* Consolida los resultados en un veredicto.
|
|
383
|
+
*
|
|
384
|
+
* `requirements` es la tercera dimension: los otros cinco fases dicen "el
|
|
385
|
+
* codigo esta sano", esta dice "el objetivo esta cumplido". Si falta
|
|
386
|
+
* evidencia de un requisito obligatorio, el veredicto global es FAIL aunque
|
|
387
|
+
* build, typecheck, lint, test y seguridad esten en verde.
|
|
388
|
+
*/
|
|
389
|
+
export function consolidate(cardId, technical, security, requirements = []) {
|
|
383
390
|
const worst = (results) => {
|
|
384
391
|
if (results.some((r) => r.outcome === "fail"))
|
|
385
392
|
return "fail";
|
|
@@ -393,13 +400,22 @@ export function consolidate(cardId, technical, security) {
|
|
|
393
400
|
};
|
|
394
401
|
const technicalOutcome = worst(technical);
|
|
395
402
|
const securityOutcome = worst(security);
|
|
403
|
+
const requirementsOutcome = worst(requirements);
|
|
404
|
+
// Un `na` no promedia a `fail`: si la dimension de requisitos no se
|
|
405
|
+
// evaluo (no aplica a esta card), no invalida lo que si paso. Lo que si
|
|
406
|
+
// la invalida es que FALTE evidencia, y de eso se encarga el invariante
|
|
407
|
+
// `evidence-required-before-done`, que es fail-closed: si la evidencia
|
|
408
|
+
// no se evaluo, no se cierra.
|
|
409
|
+
const requirementsOk = requirementsOutcome === "pass" || requirementsOutcome === "na";
|
|
396
410
|
return {
|
|
397
411
|
cardId,
|
|
398
412
|
technical,
|
|
399
413
|
security,
|
|
414
|
+
requirements,
|
|
400
415
|
technicalOutcome,
|
|
401
416
|
securityOutcome,
|
|
402
|
-
|
|
417
|
+
requirementsOutcome,
|
|
418
|
+
passed: technicalOutcome === "pass" && securityOutcome === "pass" && requirementsOk,
|
|
403
419
|
ranAt: nowIso(),
|
|
404
420
|
};
|
|
405
421
|
}
|
package/dist/core/gates.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"gates.js","sourceRoot":"","sources":["../../src/core/gates.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"gates.js","sourceRoot":"","sources":["../../src/core/gates.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IDs seguros para usar como nombre de archivo.
|
|
3
|
+
*
|
|
4
|
+
* ## Por qué existe
|
|
5
|
+
*
|
|
6
|
+
* Los ids de la oficina (card, agente, mensaje, task) vienen del modelo a
|
|
7
|
+
* través de las tools. Se usan tal cual para construir rutas:
|
|
8
|
+
*
|
|
9
|
+
* path.join(artifactsDir, cardId) -> ".oficina/artifacts/../../evil"
|
|
10
|
+
*
|
|
11
|
+
* Con `cardId = "../../evil"` la escritura escapa del directorio de la
|
|
12
|
+
* oficina. Como `writeAtomic` hace `mkdir -p` del padre, el archivo terminaba
|
|
13
|
+
* fuera de `.oficina/`.
|
|
14
|
+
*
|
|
15
|
+
* Un id es "seguro" si:
|
|
16
|
+
* - no contiene separadores de ruta (`/` ni `\`)
|
|
17
|
+
* - no contiene `..` como segmento
|
|
18
|
+
* - no contiene caracteres de control ni NUL
|
|
19
|
+
* - no empieza por `.` (evita `.`, `..` y ocultos accidentales)
|
|
20
|
+
* - no excede un largo razonable
|
|
21
|
+
*
|
|
22
|
+
* ## Por qué no basta con "reemplazar caracteres"
|
|
23
|
+
*
|
|
24
|
+
* Reemplazar `/` por `_` deja pasar `..` (que no tiene separador) y
|
|
25
|
+
* `....//` que al normalizarse se vuelve `../`. La normalización **antes**
|
|
26
|
+
* de la sanitización es la que importa: por eso `safeId` valida el id ya
|
|
27
|
+
* normalizado, sin transformarlo.
|
|
28
|
+
*/
|
|
29
|
+
/** Longitud máxima de un id de archivo. */
|
|
30
|
+
export declare const MAX_ID_LENGTH = 96;
|
|
31
|
+
/**
|
|
32
|
+
* Valida un id y lo devuelve si es seguro para usar como nombre de archivo.
|
|
33
|
+
*
|
|
34
|
+
* Devuelve `undefined` si el id no se puede sanear de forma no destructiva:
|
|
35
|
+
* es preferible rechazar el input que convertir silenciosamente un id
|
|
36
|
+
* distinto al que el modelo pidió.
|
|
37
|
+
*/
|
|
38
|
+
export declare function safeId(raw: string | undefined | null): string | undefined;
|
|
39
|
+
/** ¿El id es seguro sin transformarlo? */
|
|
40
|
+
export declare function isSafeId(raw: string | undefined | null): boolean;
|
|
41
|
+
/**
|
|
42
|
+
* Construye una ruta dentro de un directorio, garantizando que no escape.
|
|
43
|
+
*
|
|
44
|
+
* Devuelve `undefined` si el id no es seguro, en lugar de lanzar: el
|
|
45
|
+
* llamador decide qué hacer con un id inválido.
|
|
46
|
+
*/
|
|
47
|
+
export declare function safeJoin(dir: string, id: string | undefined | null, suffix?: string): string | undefined;
|
|
48
|
+
//# sourceMappingURL=ids.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.d.ts","sourceRoot":"","sources":["../../src/core/ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAKH,2CAA2C;AAC3C,eAAO,MAAM,aAAa,KAAK,CAAA;AAW/B;;;;;;GAMG;AACH,wBAAgB,MAAM,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,MAAM,GAAG,SAAS,CAczE;AAED,0CAA0C;AAC1C,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,OAAO,CAEhE;AAED;;;;;GAKG;AACH,wBAAgB,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,EAAE,MAAM,SAAK,GAAG,MAAM,GAAG,SAAS,CAIpG"}
|
package/dist/core/ids.js
ADDED
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* IDs seguros para usar como nombre de archivo.
|
|
3
|
+
*
|
|
4
|
+
* ## Por qué existe
|
|
5
|
+
*
|
|
6
|
+
* Los ids de la oficina (card, agente, mensaje, task) vienen del modelo a
|
|
7
|
+
* través de las tools. Se usan tal cual para construir rutas:
|
|
8
|
+
*
|
|
9
|
+
* path.join(artifactsDir, cardId) -> ".oficina/artifacts/../../evil"
|
|
10
|
+
*
|
|
11
|
+
* Con `cardId = "../../evil"` la escritura escapa del directorio de la
|
|
12
|
+
* oficina. Como `writeAtomic` hace `mkdir -p` del padre, el archivo terminaba
|
|
13
|
+
* fuera de `.oficina/`.
|
|
14
|
+
*
|
|
15
|
+
* Un id es "seguro" si:
|
|
16
|
+
* - no contiene separadores de ruta (`/` ni `\`)
|
|
17
|
+
* - no contiene `..` como segmento
|
|
18
|
+
* - no contiene caracteres de control ni NUL
|
|
19
|
+
* - no empieza por `.` (evita `.`, `..` y ocultos accidentales)
|
|
20
|
+
* - no excede un largo razonable
|
|
21
|
+
*
|
|
22
|
+
* ## Por qué no basta con "reemplazar caracteres"
|
|
23
|
+
*
|
|
24
|
+
* Reemplazar `/` por `_` deja pasar `..` (que no tiene separador) y
|
|
25
|
+
* `....//` que al normalizarse se vuelve `../`. La normalización **antes**
|
|
26
|
+
* de la sanitización es la que importa: por eso `safeId` valida el id ya
|
|
27
|
+
* normalizado, sin transformarlo.
|
|
28
|
+
*/
|
|
29
|
+
/** Separadores de ruta. El guion NO va acá: `e-frontend-developer` es válido. */
|
|
30
|
+
const SEPARATORS = /[/\\]/;
|
|
31
|
+
/** Longitud máxima de un id de archivo. */
|
|
32
|
+
export const MAX_ID_LENGTH = 96;
|
|
33
|
+
/** ¿El string tiene caracteres de control (incluido NUL)? */
|
|
34
|
+
function hasControlChars(value) {
|
|
35
|
+
for (let i = 0; i < value.length; i += 1) {
|
|
36
|
+
const code = value.charCodeAt(i);
|
|
37
|
+
if (code < 32 || code === 127)
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Valida un id y lo devuelve si es seguro para usar como nombre de archivo.
|
|
44
|
+
*
|
|
45
|
+
* Devuelve `undefined` si el id no se puede sanear de forma no destructiva:
|
|
46
|
+
* es preferible rechazar el input que convertir silenciosamente un id
|
|
47
|
+
* distinto al que el modelo pidió.
|
|
48
|
+
*/
|
|
49
|
+
export function safeId(raw) {
|
|
50
|
+
if (typeof raw !== "string")
|
|
51
|
+
return undefined;
|
|
52
|
+
const trimmed = raw.trim();
|
|
53
|
+
if (!trimmed)
|
|
54
|
+
return undefined;
|
|
55
|
+
if (trimmed.length > MAX_ID_LENGTH)
|
|
56
|
+
return undefined;
|
|
57
|
+
if (SEPARATORS.test(trimmed))
|
|
58
|
+
return undefined;
|
|
59
|
+
if (hasControlChars(trimmed))
|
|
60
|
+
return undefined;
|
|
61
|
+
// `..` es un segmento de traversal aunque no tenga separadores, y
|
|
62
|
+
// cualquier id que lo contenga es sospechoso (`a..b` no es un id real).
|
|
63
|
+
if (trimmed.includes(".."))
|
|
64
|
+
return undefined;
|
|
65
|
+
// Un id no puede empezar con punto: produciría rutas ocultas y, en
|
|
66
|
+
// algunos sistemas, rutas relativas al directorio actual.
|
|
67
|
+
if (trimmed.startsWith("."))
|
|
68
|
+
return undefined;
|
|
69
|
+
return trimmed;
|
|
70
|
+
}
|
|
71
|
+
/** ¿El id es seguro sin transformarlo? */
|
|
72
|
+
export function isSafeId(raw) {
|
|
73
|
+
return safeId(raw) !== undefined;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Construye una ruta dentro de un directorio, garantizando que no escape.
|
|
77
|
+
*
|
|
78
|
+
* Devuelve `undefined` si el id no es seguro, en lugar de lanzar: el
|
|
79
|
+
* llamador decide qué hacer con un id inválido.
|
|
80
|
+
*/
|
|
81
|
+
export function safeJoin(dir, id, suffix = "") {
|
|
82
|
+
const safe = safeId(id);
|
|
83
|
+
if (!safe)
|
|
84
|
+
return undefined;
|
|
85
|
+
return `${dir}/${safe}${suffix}`;
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=ids.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ids.js","sourceRoot":"","sources":["../../src/core/ids.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,iFAAiF;AACjF,MAAM,UAAU,GAAG,OAAO,CAAA;AAE1B,2CAA2C;AAC3C,MAAM,CAAC,MAAM,aAAa,GAAG,EAAE,CAAA;AAE/B,6DAA6D;AAC7D,SAAS,eAAe,CAAC,KAAa;IACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAA;QAChC,IAAI,IAAI,GAAG,EAAE,IAAI,IAAI,KAAK,GAAG;YAAE,OAAO,IAAI,CAAA;IAC5C,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,MAAM,CAAC,GAA8B;IACnD,IAAI,OAAO,GAAG,KAAK,QAAQ;QAAE,OAAO,SAAS,CAAA;IAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,IAAI,EAAE,CAAA;IAC1B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAA;IAC9B,IAAI,OAAO,CAAC,MAAM,GAAG,aAAa;QAAE,OAAO,SAAS,CAAA;IACpD,IAAI,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAA;IAC9C,IAAI,eAAe,CAAC,OAAO,CAAC;QAAE,OAAO,SAAS,CAAA;IAC9C,kEAAkE;IAClE,wEAAwE;IACxE,IAAI,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAO,SAAS,CAAA;IAC5C,mEAAmE;IACnE,0DAA0D;IAC1D,IAAI,OAAO,CAAC,UAAU,CAAC,GAAG,CAAC;QAAE,OAAO,SAAS,CAAA;IAC7C,OAAO,OAAO,CAAA;AAChB,CAAC;AAED,0CAA0C;AAC1C,MAAM,UAAU,QAAQ,CAAC,GAA8B;IACrD,OAAO,MAAM,CAAC,GAAG,CAAC,KAAK,SAAS,CAAA;AAClC,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,QAAQ,CAAC,GAAW,EAAE,EAA6B,EAAE,MAAM,GAAG,EAAE;IAC9E,MAAM,IAAI,GAAG,MAAM,CAAC,EAAE,CAAC,CAAA;IACvB,IAAI,CAAC,IAAI;QAAE,OAAO,SAAS,CAAA;IAC3B,OAAO,GAAG,GAAG,IAAI,IAAI,GAAG,MAAM,EAAE,CAAA;AAClC,CAAC"}
|
package/dist/core/leases.d.ts
CHANGED
|
@@ -5,6 +5,27 @@
|
|
|
5
5
|
* una tarea con un lease que expira; el heartbeat lo extiende; si el worker
|
|
6
6
|
* muere, el lease expira y la tarea se puede reasignar. Es lo que impide que
|
|
7
7
|
* una card quede trabada por un subagente que murió en silencio.
|
|
8
|
+
*
|
|
9
|
+
* ## La carrera que este modulo tuviera
|
|
10
|
+
*
|
|
11
|
+
* `acquire` era un TOCTOU clasico:
|
|
12
|
+
*
|
|
13
|
+
* const current = await this.get(taskId) // READ
|
|
14
|
+
* if (current && !expired && otro) return // CHECK
|
|
15
|
+
* await writeJsonAtomic(this.file(taskId), …) // WRITE
|
|
16
|
+
*
|
|
17
|
+
* Dos agentes llamaban `acquire` al mismo tiempo: ambos leian "no hay
|
|
18
|
+
* lease", ambos pasaban el chequeo, ambos escribian. El ultimo gano, y el
|
|
19
|
+
* primero **creia que tenia la card** mientras working en una card que ya
|
|
20
|
+
* era de otro. El trabajo se hacia dos veces.
|
|
21
|
+
*
|
|
22
|
+
* ## Como se cierra
|
|
23
|
+
*
|
|
24
|
+
* - **Creacion**: `O_EXCL`. Si el archivo no existe, se crea con
|
|
25
|
+
* `wx` y solo un proceso puede ganar. Si existe, es que ya hay lease.
|
|
26
|
+
* - **Takeover de un lease vencido**: bajo un lock de directorio, con
|
|
27
|
+
* re-lectura y escritura atomica. El lock evita que dos tomadores
|
|
28
|
+
* simultaneos del mismo lease vencido se pisen.
|
|
8
29
|
*/
|
|
9
30
|
import type { Limits } from "./types.js";
|
|
10
31
|
export interface Lease {
|
|
@@ -17,17 +38,41 @@ export interface Lease {
|
|
|
17
38
|
/** Cantidad de renovaciones. */
|
|
18
39
|
renewals: number;
|
|
19
40
|
}
|
|
41
|
+
/** Error de un id de tarea no seguro. */
|
|
42
|
+
export declare class UnsafeTaskIdError extends Error {
|
|
43
|
+
constructor(taskId: string);
|
|
44
|
+
}
|
|
20
45
|
export declare class LeaseStore {
|
|
21
46
|
private readonly dir;
|
|
22
47
|
private readonly limits;
|
|
23
48
|
private readonly clock;
|
|
24
49
|
constructor(dir: string, limits: Limits, clock?: () => number);
|
|
50
|
+
/**
|
|
51
|
+
* Path del archivo de lease.
|
|
52
|
+
*
|
|
53
|
+
* El `taskId` se sanitiza: venia del modelo y se usaba crudo como nombre
|
|
54
|
+
* de archivo, con lo que un `taskId = "../../evil"` escribia fuera de
|
|
55
|
+
* `.oficina/leases/`.
|
|
56
|
+
*/
|
|
25
57
|
private file;
|
|
58
|
+
/** Path del lock de una tarea. Vive aparte para no ensuciar el dir. */
|
|
59
|
+
private lockPath;
|
|
26
60
|
/**
|
|
27
61
|
* Intenta tomar el lease de una tarea.
|
|
28
62
|
*
|
|
29
63
|
* Devuelve `undefined` si ya hay un lease vivo de otro agente: el
|
|
30
64
|
* double-claim es exactamente el bug que el lease previene.
|
|
65
|
+
*
|
|
66
|
+
* ## Por qué un lock y no `O_EXCL`
|
|
67
|
+
*
|
|
68
|
+
* La primera version de este metodo creaba el archivo con `wx` y
|
|
69
|
+
* escribia el contenido despues. Eso deja una ventana: entre el `open`
|
|
70
|
+
* y el `write`, el archivo existe pero esta **vacio**. El otro claimant
|
|
71
|
+
* lo leia, no encontraba un lease valido, y se lo quedaba tambien.
|
|
72
|
+
*
|
|
73
|
+
* Con el lock, el ciclo leer-evaluar-escribir es atomico: el archivo se
|
|
74
|
+
* escribe con `writeJsonAtomic` (tmp + rename), asi que un lector nunca
|
|
75
|
+
* ve un archivo a medio escribir.
|
|
31
76
|
*/
|
|
32
77
|
acquire(taskId: string, agentId: string): Promise<Lease | undefined>;
|
|
33
78
|
/** Renueva el lease. Devuelve `undefined` si ya no lo tenés. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leases.d.ts","sourceRoot":"","sources":["../../src/core/leases.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"leases.d.ts","sourceRoot":"","sources":["../../src/core/leases.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAKxC,MAAM,WAAW,KAAK;IACpB,MAAM,EAAE,MAAM,CAAA;IACd,OAAO,EAAE,MAAM,CAAA;IACf,UAAU,EAAE,MAAM,CAAA;IAClB,SAAS,EAAE,MAAM,CAAA;IACjB,sCAAsC;IACtC,WAAW,EAAE,MAAM,CAAA;IACnB,gCAAgC;IAChC,QAAQ,EAAE,MAAM,CAAA;CACjB;AAED,yCAAyC;AACzC,qBAAa,iBAAkB,SAAQ,KAAK;gBAC9B,MAAM,EAAE,MAAM;CAM3B;AAED,qBAAa,UAAU;IAEnB,OAAO,CAAC,QAAQ,CAAC,GAAG;IACpB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,KAAK;gBAFL,GAAG,EAAE,MAAM,EACX,MAAM,EAAE,MAAM,EACd,KAAK,GAAE,MAAM,MAAiB;IAGjD;;;;;;OAMG;IACH,OAAO,CAAC,IAAI;IAMZ,uEAAuE;IACvE,OAAO,CAAC,QAAQ;IAMhB;;;;;;;;;;;;;;;;OAgBG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAuB1E,gEAAgE;IAC1D,SAAS,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAc5E,uBAAuB;IACjB,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IAWhE,oBAAoB;IACd,GAAG,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IASrD,wBAAwB;IACxB,SAAS,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO;IAIhC,sEAAsE;IAChE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IAMzD,6BAA6B;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CAGjD"}
|
package/dist/core/leases.js
CHANGED
|
@@ -5,9 +5,39 @@
|
|
|
5
5
|
* una tarea con un lease que expira; el heartbeat lo extiende; si el worker
|
|
6
6
|
* muere, el lease expira y la tarea se puede reasignar. Es lo que impide que
|
|
7
7
|
* una card quede trabada por un subagente que murió en silencio.
|
|
8
|
+
*
|
|
9
|
+
* ## La carrera que este modulo tuviera
|
|
10
|
+
*
|
|
11
|
+
* `acquire` era un TOCTOU clasico:
|
|
12
|
+
*
|
|
13
|
+
* const current = await this.get(taskId) // READ
|
|
14
|
+
* if (current && !expired && otro) return // CHECK
|
|
15
|
+
* await writeJsonAtomic(this.file(taskId), …) // WRITE
|
|
16
|
+
*
|
|
17
|
+
* Dos agentes llamaban `acquire` al mismo tiempo: ambos leian "no hay
|
|
18
|
+
* lease", ambos pasaban el chequeo, ambos escribian. El ultimo gano, y el
|
|
19
|
+
* primero **creia que tenia la card** mientras working en una card que ya
|
|
20
|
+
* era de otro. El trabajo se hacia dos veces.
|
|
21
|
+
*
|
|
22
|
+
* ## Como se cierra
|
|
23
|
+
*
|
|
24
|
+
* - **Creacion**: `O_EXCL`. Si el archivo no existe, se crea con
|
|
25
|
+
* `wx` y solo un proceso puede ganar. Si existe, es que ya hay lease.
|
|
26
|
+
* - **Takeover de un lease vencido**: bajo un lock de directorio, con
|
|
27
|
+
* re-lectura y escritura atomica. El lock evita que dos tomadores
|
|
28
|
+
* simultaneos del mismo lease vencido se pisen.
|
|
8
29
|
*/
|
|
9
30
|
import path from "node:path";
|
|
10
31
|
import { nowIso, readJson, writeJsonAtomic } from "./fsx.js";
|
|
32
|
+
import { withLock } from "./atomic.js";
|
|
33
|
+
import { safeId } from "./ids.js";
|
|
34
|
+
/** Error de un id de tarea no seguro. */
|
|
35
|
+
export class UnsafeTaskIdError extends Error {
|
|
36
|
+
constructor(taskId) {
|
|
37
|
+
super(`[oficina] taskId no seguro: "${taskId}". Un id de tarea no puede contener separadores de ruta, "..", ni empezar con punto.`);
|
|
38
|
+
this.name = "UnsafeTaskIdError";
|
|
39
|
+
}
|
|
40
|
+
}
|
|
11
41
|
export class LeaseStore {
|
|
12
42
|
dir;
|
|
13
43
|
limits;
|
|
@@ -17,31 +47,62 @@ export class LeaseStore {
|
|
|
17
47
|
this.limits = limits;
|
|
18
48
|
this.clock = clock;
|
|
19
49
|
}
|
|
50
|
+
/**
|
|
51
|
+
* Path del archivo de lease.
|
|
52
|
+
*
|
|
53
|
+
* El `taskId` se sanitiza: venia del modelo y se usaba crudo como nombre
|
|
54
|
+
* de archivo, con lo que un `taskId = "../../evil"` escribia fuera de
|
|
55
|
+
* `.oficina/leases/`.
|
|
56
|
+
*/
|
|
20
57
|
file(taskId) {
|
|
21
|
-
|
|
58
|
+
const safe = safeId(taskId);
|
|
59
|
+
if (!safe)
|
|
60
|
+
throw new UnsafeTaskIdError(taskId);
|
|
61
|
+
return path.join(this.dir, `${safe}.json`);
|
|
62
|
+
}
|
|
63
|
+
/** Path del lock de una tarea. Vive aparte para no ensuciar el dir. */
|
|
64
|
+
lockPath(taskId) {
|
|
65
|
+
const safe = safeId(taskId);
|
|
66
|
+
if (!safe)
|
|
67
|
+
throw new UnsafeTaskIdError(taskId);
|
|
68
|
+
return path.join(this.dir, ".locks", `${safe}.lock`);
|
|
22
69
|
}
|
|
23
70
|
/**
|
|
24
71
|
* Intenta tomar el lease de una tarea.
|
|
25
72
|
*
|
|
26
73
|
* Devuelve `undefined` si ya hay un lease vivo de otro agente: el
|
|
27
74
|
* double-claim es exactamente el bug que el lease previene.
|
|
75
|
+
*
|
|
76
|
+
* ## Por qué un lock y no `O_EXCL`
|
|
77
|
+
*
|
|
78
|
+
* La primera version de este metodo creaba el archivo con `wx` y
|
|
79
|
+
* escribia el contenido despues. Eso deja una ventana: entre el `open`
|
|
80
|
+
* y el `write`, el archivo existe pero esta **vacio**. El otro claimant
|
|
81
|
+
* lo leia, no encontraba un lease valido, y se lo quedaba tambien.
|
|
82
|
+
*
|
|
83
|
+
* Con el lock, el ciclo leer-evaluar-escribir es atomico: el archivo se
|
|
84
|
+
* escribe con `writeJsonAtomic` (tmp + rename), asi que un lector nunca
|
|
85
|
+
* ve un archivo a medio escribir.
|
|
28
86
|
*/
|
|
29
87
|
async acquire(taskId, agentId) {
|
|
30
|
-
const
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
88
|
+
const file = this.file(taskId);
|
|
89
|
+
return withLock(this.lockPath(taskId), async () => {
|
|
90
|
+
const current = await this.get(taskId);
|
|
91
|
+
if (current && !this.isExpired(current) && current.agentId !== agentId) {
|
|
92
|
+
return undefined;
|
|
93
|
+
}
|
|
94
|
+
const now = this.clock();
|
|
95
|
+
const lease = {
|
|
96
|
+
taskId,
|
|
97
|
+
agentId,
|
|
98
|
+
acquiredAt: current?.acquiredAt ?? nowIso(() => now),
|
|
99
|
+
expiresAt: new Date(now + this.limits.leaseTtlSec * 1000).toISOString(),
|
|
100
|
+
heartbeatAt: nowIso(() => now),
|
|
101
|
+
renewals: current?.renewals ?? 0,
|
|
102
|
+
};
|
|
103
|
+
await writeJsonAtomic(file, lease);
|
|
104
|
+
return lease;
|
|
105
|
+
});
|
|
45
106
|
}
|
|
46
107
|
/** Renueva el lease. Devuelve `undefined` si ya no lo tenés. */
|
|
47
108
|
async heartbeat(taskId, agentId) {
|
|
@@ -73,7 +134,14 @@ export class LeaseStore {
|
|
|
73
134
|
}
|
|
74
135
|
/** Lee un lease. */
|
|
75
136
|
async get(taskId) {
|
|
76
|
-
|
|
137
|
+
try {
|
|
138
|
+
return await readJson(this.file(taskId));
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
if (err instanceof UnsafeTaskIdError)
|
|
142
|
+
return undefined;
|
|
143
|
+
throw err;
|
|
144
|
+
}
|
|
77
145
|
}
|
|
78
146
|
/** ¿El lease venció? */
|
|
79
147
|
isExpired(lease) {
|
package/dist/core/leases.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"leases.js","sourceRoot":"","sources":["../../src/core/leases.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"leases.js","sourceRoot":"","sources":["../../src/core/leases.ts"],"names":[],"mappings":"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"}
|