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.
Files changed (89) hide show
  1. package/README.md +174 -24
  2. package/dist/core/atomic.d.ts +85 -0
  3. package/dist/core/atomic.d.ts.map +1 -0
  4. package/dist/core/atomic.js +186 -0
  5. package/dist/core/atomic.js.map +1 -0
  6. package/dist/core/bus.d.ts +76 -56
  7. package/dist/core/bus.d.ts.map +1 -1
  8. package/dist/core/bus.js +141 -100
  9. package/dist/core/bus.js.map +1 -1
  10. package/dist/core/catalog.d.ts +27 -0
  11. package/dist/core/catalog.d.ts.map +1 -1
  12. package/dist/core/catalog.js +41 -6
  13. package/dist/core/catalog.js.map +1 -1
  14. package/dist/core/cost.d.ts +275 -0
  15. package/dist/core/cost.d.ts.map +1 -0
  16. package/dist/core/cost.js +724 -0
  17. package/dist/core/cost.js.map +1 -0
  18. package/dist/core/docsync.d.ts +124 -0
  19. package/dist/core/docsync.d.ts.map +1 -0
  20. package/dist/core/docsync.js +191 -0
  21. package/dist/core/docsync.js.map +1 -0
  22. package/dist/core/evidence.d.ts +314 -0
  23. package/dist/core/evidence.d.ts.map +1 -0
  24. package/dist/core/evidence.js +602 -0
  25. package/dist/core/evidence.js.map +1 -0
  26. package/dist/core/fsx.d.ts.map +1 -1
  27. package/dist/core/fsx.js +7 -1
  28. package/dist/core/fsx.js.map +1 -1
  29. package/dist/core/gates.d.ts +9 -2
  30. package/dist/core/gates.d.ts.map +1 -1
  31. package/dist/core/gates.js +19 -3
  32. package/dist/core/gates.js.map +1 -1
  33. package/dist/core/ids.d.ts +48 -0
  34. package/dist/core/ids.d.ts.map +1 -0
  35. package/dist/core/ids.js +87 -0
  36. package/dist/core/ids.js.map +1 -0
  37. package/dist/core/leases.d.ts +45 -0
  38. package/dist/core/leases.d.ts.map +1 -1
  39. package/dist/core/leases.js +85 -17
  40. package/dist/core/leases.js.map +1 -1
  41. package/dist/core/office.d.ts +72 -1
  42. package/dist/core/office.d.ts.map +1 -1
  43. package/dist/core/office.js +173 -6
  44. package/dist/core/office.js.map +1 -1
  45. package/dist/core/paths.d.ts +11 -1
  46. package/dist/core/paths.d.ts.map +1 -1
  47. package/dist/core/paths.js +28 -4
  48. package/dist/core/paths.js.map +1 -1
  49. package/dist/core/recovery.d.ts +87 -0
  50. package/dist/core/recovery.d.ts.map +1 -0
  51. package/dist/core/recovery.js +325 -0
  52. package/dist/core/recovery.js.map +1 -0
  53. package/dist/core/sandbox.d.ts +179 -0
  54. package/dist/core/sandbox.d.ts.map +1 -0
  55. package/dist/core/sandbox.js +546 -0
  56. package/dist/core/sandbox.js.map +1 -0
  57. package/dist/core/state.d.ts +7 -0
  58. package/dist/core/state.d.ts.map +1 -1
  59. package/dist/core/state.js +15 -1
  60. package/dist/core/state.js.map +1 -1
  61. package/dist/core/stores.d.ts +65 -0
  62. package/dist/core/stores.d.ts.map +1 -0
  63. package/dist/core/stores.js +115 -0
  64. package/dist/core/stores.js.map +1 -0
  65. package/dist/core/tripwire.d.ts +87 -0
  66. package/dist/core/tripwire.d.ts.map +1 -0
  67. package/dist/core/tripwire.js +203 -0
  68. package/dist/core/tripwire.js.map +1 -0
  69. package/dist/core/types.d.ts +33 -1
  70. package/dist/core/types.d.ts.map +1 -1
  71. package/dist/core/types.js +1 -0
  72. package/dist/core/types.js.map +1 -1
  73. package/dist/hooks/scopeGuard.d.ts +86 -13
  74. package/dist/hooks/scopeGuard.d.ts.map +1 -1
  75. package/dist/hooks/scopeGuard.js +296 -62
  76. package/dist/hooks/scopeGuard.js.map +1 -1
  77. package/dist/index.d.ts +10 -0
  78. package/dist/index.d.ts.map +1 -1
  79. package/dist/index.js +185 -2
  80. package/dist/index.js.map +1 -1
  81. package/dist/tools/index.d.ts.map +1 -1
  82. package/dist/tools/index.js +158 -0
  83. package/dist/tools/index.js.map +1 -1
  84. package/docs/COMPATIBILITY.md +98 -0
  85. package/docs/GARANTIAS.md +190 -0
  86. package/docs/PLAN-V2.1.md +144 -0
  87. package/docs/QUE-ES.md +15 -0
  88. package/docs/catalog-facts.json +27 -0
  89. package/package.json +10 -6
@@ -1 +1 @@
1
- {"version":3,"file":"fsx.js","sourceRoot":"","sources":["../../src/core/fsx.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fsx.js","sourceRoot":"","sources":["../../src/core/fsx.ts"],"names":[],"mappings":"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"}
@@ -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
- /** Consolida los resultados en un veredicto. */
86
- export declare function consolidate(cardId: string, technical: GatePhaseResult[], security: GatePhaseResult[]): GateResult;
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
  *
@@ -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,gDAAgD;AAChD,wBAAgB,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,EAAE,EAAE,QAAQ,EAAE,eAAe,EAAE,GAAG,UAAU,CAqBjH;AAED;;;;;;GAMG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,eAAe,EAAE,GAAG,OAAO,CActE;AAED,yDAAyD;AACzD,wBAAgB,UAAU,CAAC,MAAM,EAAE,UAAU,GAAG,MAAM,CA2CrD"}
1
+ {"version":3,"file":"gates.d.ts","sourceRoot":"","sources":["../../src/core/gates.ts"],"names":[],"mappings":"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"}
@@ -378,8 +378,15 @@ export async function runSecurityGate(projectRoot, scope, _runner = defaultRunne
378
378
  }
379
379
  return results;
380
380
  }
381
- /** Consolida los resultados en un veredicto. */
382
- export function consolidate(cardId, technical, security) {
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
- passed: technicalOutcome === "pass" && securityOutcome === "pass",
417
+ requirementsOutcome,
418
+ passed: technicalOutcome === "pass" && securityOutcome === "pass" && requirementsOk,
403
419
  ranAt: nowIso(),
404
420
  };
405
421
  }
@@ -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"}
@@ -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"}
@@ -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;;;;;;;GAOG;AAGH,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAA;AAGxC,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,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,OAAO,CAAC,IAAI;IAIZ;;;;;OAKG;IACG,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,KAAK,GAAG,SAAS,CAAC;IAmB1E,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;IAIrD,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"}
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"}
@@ -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
- return path.join(this.dir, `${taskId}.json`);
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 current = await this.get(taskId);
31
- if (current && !this.isExpired(current) && current.agentId !== agentId) {
32
- return undefined;
33
- }
34
- const now = this.clock();
35
- const lease = {
36
- taskId,
37
- agentId,
38
- acquiredAt: current?.acquiredAt ?? nowIso(() => now),
39
- expiresAt: new Date(now + this.limits.leaseTtlSec * 1000).toISOString(),
40
- heartbeatAt: nowIso(() => now),
41
- renewals: current?.renewals ?? 0,
42
- };
43
- await writeJsonAtomic(this.file(taskId), lease);
44
- return lease;
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
- return readJson(this.file(taskId));
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) {
@@ -1 +1 @@
1
- {"version":3,"file":"leases.js","sourceRoot":"","sources":["../../src/core/leases.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"leases.js","sourceRoot":"","sources":["../../src/core/leases.ts"],"names":[],"mappings":"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"}