@jmanuelcorral/openteam 0.1.42 → 0.2.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/.opencode/openteam.example.json +6 -1
- package/README.es.md +1 -1
- package/README.md +1 -1
- package/dist/capabilities/types.d.ts +4 -4
- package/dist/classifier/types.d.ts +3 -3
- package/dist/cli.js +11 -0
- package/dist/commands/doctor.d.ts +2 -0
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/graph.d.ts +28 -2
- package/dist/commands/graph.d.ts.map +1 -1
- package/dist/config/graphFeatureGate.d.ts +96 -0
- package/dist/config/graphFeatureGate.d.ts.map +1 -0
- package/dist/config/migrations.d.ts.map +1 -1
- package/dist/config/resolve.d.ts +20 -1
- package/dist/config/resolve.d.ts.map +1 -1
- package/dist/config/schema.d.ts +22 -19
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/console/render.d.ts.map +1 -1
- package/dist/context/redaction.d.ts +23 -0
- package/dist/context/redaction.d.ts.map +1 -1
- package/dist/context/schema.d.ts +3 -3
- package/dist/contract/opencode.d.ts +2 -2
- package/dist/contract/opencode.d.ts.map +1 -1
- package/dist/graph/certificate.d.ts +505 -0
- package/dist/graph/certificate.d.ts.map +1 -0
- package/dist/graph/ids.d.ts +9 -0
- package/dist/graph/ids.d.ts.map +1 -1
- package/dist/graph/privacyPolicy.d.ts.map +1 -1
- package/dist/graph/reducer.d.ts.map +1 -1
- package/dist/graph/replay.d.ts.map +1 -1
- package/dist/graph/reviewerPolicy.d.ts.map +1 -1
- package/dist/graph/schema.d.ts +33 -33
- package/dist/graph/schema.d.ts.map +1 -1
- package/dist/graph/soakLedger.d.ts +144 -0
- package/dist/graph/soakLedger.d.ts.map +1 -0
- package/dist/graph/types.d.ts +2 -0
- package/dist/graph/types.d.ts.map +1 -1
- package/dist/graph/validate.d.ts.map +1 -1
- package/dist/index.d.ts +47 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2343 -178
- package/dist/local/registry.d.ts.map +1 -1
- package/dist/memory/types.d.ts +2 -2
- package/dist/orchestrator/graphFacade.d.ts +39 -0
- package/dist/orchestrator/graphFacade.d.ts.map +1 -0
- package/dist/orchestrator/graphIngress.d.ts +136 -0
- package/dist/orchestrator/graphIngress.d.ts.map +1 -0
- package/dist/orchestrator/graphShadow.d.ts +121 -0
- package/dist/orchestrator/graphShadow.d.ts.map +1 -0
- package/dist/orchestrator/ledger.d.ts +14 -2
- package/dist/orchestrator/ledger.d.ts.map +1 -1
- package/dist/orchestrator/opencodeSessionAdapter.d.ts.map +1 -1
- package/dist/orchestrator/roles.d.ts +3 -3
- package/dist/orchestrator/sdd.d.ts +55 -1
- package/dist/orchestrator/sdd.d.ts.map +1 -1
- package/dist/orchestrator/sddCompiler.d.ts +6 -2
- package/dist/orchestrator/sddCompiler.d.ts.map +1 -1
- package/dist/orchestrator/worktreeAdapter.d.ts.map +1 -1
- package/dist/orchestrator/worktreeDispatch.d.ts.map +1 -1
- package/dist/plugin/graphShadowIngress.d.ts +165 -0
- package/dist/plugin/graphShadowIngress.d.ts.map +1 -0
- package/dist/plugin/graphTool.d.ts +63 -0
- package/dist/plugin/graphTool.d.ts.map +1 -0
- package/dist/plugin/hooks.d.ts +6 -0
- package/dist/plugin/hooks.d.ts.map +1 -1
- package/dist/plugin/legacyRunProducer.d.ts +60 -0
- package/dist/plugin/legacyRunProducer.d.ts.map +1 -0
- package/dist/plugin/reportRunSchema.d.ts +60 -0
- package/dist/plugin/reportRunSchema.d.ts.map +1 -0
- package/dist/plugin/sessionTracker.d.ts +42 -0
- package/dist/plugin/sessionTracker.d.ts.map +1 -0
- package/dist/plugin/shadowPipeline.d.ts +49 -0
- package/dist/plugin/shadowPipeline.d.ts.map +1 -0
- package/dist/plugin/soakObserver.d.ts +73 -0
- package/dist/plugin/soakObserver.d.ts.map +1 -0
- package/dist/storage/graph/codec.d.ts.map +1 -1
- package/dist/storage/graph/migrateLegacyBriefs.d.ts.map +1 -1
- package/dist/storage/graph/migration.d.ts +91 -0
- package/dist/storage/graph/migration.d.ts.map +1 -0
- package/dist/storage/graph/provider.d.ts +1 -0
- package/dist/storage/graph/provider.d.ts.map +1 -1
- package/dist/storage/graph/recovery.d.ts.map +1 -1
- package/dist/storage/graph/runRegistry.d.ts.map +1 -1
- package/dist/storage/graph/soakRecorder.d.ts +59 -0
- package/dist/storage/graph/soakRecorder.d.ts.map +1 -0
- package/dist/storage/graph/workspaceLease.d.ts.map +1 -1
- package/dist/storage/graph/worktreeRegistry.d.ts.map +1 -1
- package/dist/storage/graph/writer.d.ts +15 -0
- package/dist/storage/graph/writer.d.ts.map +1 -1
- package/dist/storage/path.d.ts.map +1 -1
- package/dist/telemetry/events.d.ts +12 -12
- package/dist/telemetry/graphRuntimeHealth.d.ts +53 -0
- package/dist/telemetry/graphRuntimeHealth.d.ts.map +1 -0
- package/dist/telemetry/graphView.d.ts +1 -0
- package/dist/telemetry/graphView.d.ts.map +1 -1
- package/dist/telemetry/types.d.ts +4 -4
- package/package.json +7 -5
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { type LegacyImportPlan, type LegacyImportRecordV1 } from "./importLegacy";
|
|
3
|
+
/**
|
|
4
|
+
* Herramienta de migración completa: dry-run, backup, apply idempotente y
|
|
5
|
+
* rollback drill (GE-053).
|
|
6
|
+
*
|
|
7
|
+
* Amplía el import terminal de GE-024 con:
|
|
8
|
+
* - **Backup versionado**: captura la autoridad pre-migración como artefacto
|
|
9
|
+
* reference-only. Solo contiene campos allow-listed (identifiers + digests),
|
|
10
|
+
* nunca briefs ni contenido crudo. Validado con Zod en el boundary de carga.
|
|
11
|
+
* - **Rollback idempotente**: restaura la autoridad desde un backup sin
|
|
12
|
+
* resucitar nada que no estuviera en él. Aplicar dos veces deja el mismo
|
|
13
|
+
* estado.
|
|
14
|
+
* - **Guard de efectos activos**: si hay runs con efectos in-flight, la
|
|
15
|
+
* migración se bloquea con motivo estable; la autoridad activa nunca
|
|
16
|
+
* retrocede al path legacy.
|
|
17
|
+
* - **Manejo de interrupción**: un apply interrumpido deja la autoridad en un
|
|
18
|
+
* estado parcial que un rerun puede completar (gracias a la idempotencia de
|
|
19
|
+
* `planLegacyImport`); nunca se genera autoridad tornada.
|
|
20
|
+
*
|
|
21
|
+
* Puro y determinista: sin I/O, reloj ni random. El caller (wiring layer)
|
|
22
|
+
* ejecuta la persistencia.
|
|
23
|
+
*/
|
|
24
|
+
export declare const MIGRATION_BACKUP_VERSION: 1;
|
|
25
|
+
/** Schema Zod del backup: validado en el boundary de carga. */
|
|
26
|
+
export declare const MigrationBackupSchema: z.ZodObject<{
|
|
27
|
+
version: z.ZodLiteral<1>;
|
|
28
|
+
createdAt: z.ZodString;
|
|
29
|
+
authorityDigest: z.ZodString;
|
|
30
|
+
records: z.ZodArray<z.ZodObject<{
|
|
31
|
+
version: z.ZodLiteral<1>;
|
|
32
|
+
runID: z.ZodString;
|
|
33
|
+
taskID: z.ZodString;
|
|
34
|
+
status: z.ZodEnum<{
|
|
35
|
+
completed: "completed";
|
|
36
|
+
failed: "failed";
|
|
37
|
+
}>;
|
|
38
|
+
sourceDigest: z.ZodString;
|
|
39
|
+
specDigest: z.ZodString;
|
|
40
|
+
}, z.core.$strip>>;
|
|
41
|
+
}, z.core.$strip>;
|
|
42
|
+
export type MigrationBackup = z.infer<typeof MigrationBackupSchema>;
|
|
43
|
+
/** Código de fallo clasificado de la migración. */
|
|
44
|
+
export type MigrationToolErrorCode = "corrupt-ledger" | "unknown-version" | "active-effects-in-flight" | "backup-validation-failed" | "backup-digest-mismatch";
|
|
45
|
+
/** Error tipado, fail-closed, de la herramienta de migración. */
|
|
46
|
+
export declare class MigrationToolError extends Error {
|
|
47
|
+
readonly code: MigrationToolErrorCode;
|
|
48
|
+
constructor(code: MigrationToolErrorCode, detail?: string);
|
|
49
|
+
}
|
|
50
|
+
/** Plan extendido de migración con bloqueo y no-op tracking. */
|
|
51
|
+
export type MigrationPlan = {
|
|
52
|
+
/** Plan de import subyacente (vacío en no-op o bloqueado). */
|
|
53
|
+
readonly importPlan: LegacyImportPlan;
|
|
54
|
+
/** `true` cuando no hay nada que importar. */
|
|
55
|
+
readonly isNoOp: boolean;
|
|
56
|
+
/** Motivo de bloqueo, si lo hay. */
|
|
57
|
+
readonly blocked: string | undefined;
|
|
58
|
+
};
|
|
59
|
+
/** Opciones para planificar una migración. */
|
|
60
|
+
export type PlanMigrationInput = {
|
|
61
|
+
/** Contenido crudo del ledger (texto completo). */
|
|
62
|
+
readonly ledgerText: string | undefined;
|
|
63
|
+
/** IDs de runs ya importados en la autoridad actual. */
|
|
64
|
+
readonly existingRunIDs: Iterable<string>;
|
|
65
|
+
/** `true` si hay efectos activos (no terminales) en vuelo. */
|
|
66
|
+
readonly hasActiveEffects: boolean;
|
|
67
|
+
};
|
|
68
|
+
/**
|
|
69
|
+
* Planifica la migración. Fail-closed: un ledger ilegible o efectos activos
|
|
70
|
+
* bloquean la migración con un error clasificado.
|
|
71
|
+
*/
|
|
72
|
+
export declare function planMigration(input: PlanMigrationInput): MigrationPlan;
|
|
73
|
+
/**
|
|
74
|
+
* Crea un backup reference-only de la autoridad actual. Lanza `RedactionError`
|
|
75
|
+
* si algún registro transporta contenido crudo (nunca debería pasar; es un
|
|
76
|
+
* guard defensivo).
|
|
77
|
+
*/
|
|
78
|
+
export declare function createMigrationBackup(authority: readonly LegacyImportRecordV1[], timestamp: string): MigrationBackup;
|
|
79
|
+
/**
|
|
80
|
+
* Valida un backup cargado del disco. Fail-closed: un backup de versión
|
|
81
|
+
* desconocida o malformado lanza `MigrationToolError`.
|
|
82
|
+
*/
|
|
83
|
+
export declare function validateBackup(raw: unknown): MigrationBackup;
|
|
84
|
+
/**
|
|
85
|
+
* Restaura la autoridad desde un backup validado. Idempotente: aplicar dos
|
|
86
|
+
* veces deja el mismo estado. No resucita nada que no estuviera en el backup.
|
|
87
|
+
*/
|
|
88
|
+
export declare function rollbackFromBackup(backup: MigrationBackup): readonly LegacyImportRecordV1[];
|
|
89
|
+
/** Digest estable de la autoridad completa (para integridad del backup). */
|
|
90
|
+
export declare function computeAuthorityDigest(records: readonly LegacyImportRecordV1[]): string;
|
|
91
|
+
//# sourceMappingURL=migration.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"migration.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/migration.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAIxB,OAAO,EAEL,KAAK,gBAAgB,EACrB,KAAK,oBAAoB,EAE1B,MAAM,gBAAgB,CAAC;AAExB;;;;;;;;;;;;;;;;;;;;GAoBG;AAMH,eAAO,MAAM,wBAAwB,EAAG,CAAU,CAAC;AAEnD,+DAA+D;AAC/D,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;iBAchC,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAMpE,mDAAmD;AACnD,MAAM,MAAM,sBAAsB,GAC9B,gBAAgB,GAChB,iBAAiB,GACjB,0BAA0B,GAC1B,0BAA0B,GAC1B,wBAAwB,CAAC;AAE7B,iEAAiE;AACjE,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IAEtC,YAAY,IAAI,EAAE,sBAAsB,EAAE,MAAM,CAAC,EAAE,MAAM,EAQxD;CACF;AAMD,gEAAgE;AAChE,MAAM,MAAM,aAAa,GAAG;IAC1B,8DAA8D;IAC9D,QAAQ,CAAC,UAAU,EAAE,gBAAgB,CAAC;IACtC,8CAA8C;IAC9C,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC;IACzB,oCAAoC;IACpC,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;CACtC,CAAC;AAEF,8CAA8C;AAC9C,MAAM,MAAM,kBAAkB,GAAG;IAC/B,mDAAmD;IACnD,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC,wDAAwD;IACxD,QAAQ,CAAC,cAAc,EAAE,QAAQ,CAAC,MAAM,CAAC,CAAC;IAG1C,8DAA8D;IAC9D,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;CACpC,CAAC;AAEF;;;GAGG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,kBAAkB,GAAG,aAAa,CAgCtE;AAMD;;;;GAIG;AACH,wBAAgB,qBAAqB,CACnC,SAAS,EAAE,SAAS,oBAAoB,EAAE,EAC1C,SAAS,EAAE,MAAM,GAChB,eAAe,CAUjB;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,OAAO,GAAG,eAAe,CA+B5D;AAMD;;;GAGG;AAEH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,eAAe,GACtB,SAAS,oBAAoB,EAAE,CAYjC;AAMD,4EAA4E;AAC5E,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,SAAS,oBAAoB,EAAE,GACvC,MAAM,CAaR"}
|
|
@@ -33,6 +33,7 @@ export type GraphJournalHandle = {
|
|
|
33
33
|
/** Resultado de `load`: spec, eventos y estado reducido reproducido. */
|
|
34
34
|
export type LoadedJournal = {
|
|
35
35
|
spec: GraphSpecV1;
|
|
36
|
+
/** Ordenados por seq (invariante append-only). */
|
|
36
37
|
events: GraphEventV1[];
|
|
37
38
|
state: GraphState;
|
|
38
39
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;;;;;;;GAgBG;AAEH,gDAAgD;AAChD,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,WAAW,GACX,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,SAAS,CAAC;AAEd,+DAA+D;AAC/D,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"provider.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/provider.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAEpD;;;;;;;;;;;;;;;;GAgBG;AAEH,gDAAgD;AAChD,MAAM,MAAM,gBAAgB,GACxB,gBAAgB,GAChB,WAAW,GACX,iBAAiB,GACjB,mBAAmB,GACnB,iBAAiB,GACjB,SAAS,CAAC;AAEd,+DAA+D;AAC/D,qBAAa,YAAa,SAAQ,KAAK;IACrC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,CAAC;IAChC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,IAAI,EAAE,gBAAgB,EAAE,MAAM,EAAE,MAAM,EAKjD;CACF;AAED,gEAAgE;AAChE,MAAM,MAAM,kBAAkB,GAAG;IAC/B,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,wEAAwE;AACxE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,WAAW,CAAC;IAClB,kDAAkD;IAClD,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,KAAK,EAAE,UAAU,CAAC;CACnB,CAAC;AAEF,0DAA0D;AAC1D,MAAM,WAAW,YAAY;IAC3B,iFAAiF;IACjF,MAAM,CAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACvD,0FAA0F;IAC1F,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACrD,qEAAqE;IACrE,MAAM,CACJ,MAAM,EAAE,kBAAkB,EAC1B,KAAK,EAAE,YAAY,EACnB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,IAAI,CAAC,CAAC;IACjB,gFAAgF;IAChF,IAAI,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC5C,+CAA+C;IAC/C,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;CACzC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/recovery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;;;;;;;;;;;;;GAeG;AAEH,wCAAwC;AACxC,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,WAAW,CAAC;AAEjD,iFAAiF;AACjF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,oBAAoB,CAAC;AAEjE,2EAA2E;AAC3E,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"recovery.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/recovery.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AACpE,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;;;;;;;;;;;;;GAeG;AAEH,wCAAwC;AACxC,MAAM,MAAM,YAAY,GAAG,OAAO,GAAG,WAAW,CAAC;AAEjD,iFAAiF;AACjF,MAAM,MAAM,gBAAgB,GAAG;IAC7B,MAAM,EAAE,YAAY,EAAE,CAAC;IACvB,KAAK,EAAE,UAAU,CAAC;IAClB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,YAAY,CAAC;CACpB,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,iBAAiB,GAAG,SAAS,GAAG,oBAAoB,CAAC;AAEjE,2EAA2E;AAC3E,qBAAa,aAAc,SAAQ,KAAK;IACtC,QAAQ,CAAC,IAAI,EAAE,iBAAiB,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,IAAI,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,EAKlD;CACF;AAED,gFAAgF;AAChF,wBAAgB,cAAc,CAC5B,IAAI,EAAE,WAAW,EACjB,IAAI,EAAE,MAAM,GACX,gBAAgB,CAwBlB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runRegistry.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/runRegistry.ts"],"names":[],"mappings":"AAqBA,oDAAoD;AACpD,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"runRegistry.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/runRegistry.ts"],"names":[],"mappings":"AAqBA,oDAAoD;AACpD,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,QAAQ,CAAC,IAAI,aAAa;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,MAAM,EAAE,MAAM,EAIzB;CACF;AAED,2DAA2D;AAC3D,MAAM,WAAW,WAAW;IAC1B,+CAA+C;IAC/C,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACzC,iDAAiD;IACjD,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3C,yCAAyC;IACzC,IAAI,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC;CAC3B;AAED,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,WAAW,CA8C3D"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { type SoakDuplicateEffectPair, type SoakModelVerificationPair, type SoakObservation, type SoakPlatform, type SoakPrivacyPair } from "../../graph/soakLedger";
|
|
2
|
+
/**
|
|
3
|
+
* **Grabador de observaciones soak** (GE-055a).
|
|
4
|
+
*
|
|
5
|
+
* Frontera de I/O: lectura/escritura de cadenas JSONL por grabador con
|
|
6
|
+
* puertos inyectados (filesystem y reloj). Determinista dados los mismos
|
|
7
|
+
* inputs — testable al 100% sin acceso real a disco.
|
|
8
|
+
*/
|
|
9
|
+
/** Puerto de filesystem mínimo para leer/escribir cadenas. */
|
|
10
|
+
export type FsPort = {
|
|
11
|
+
readonly readFile: (path: string) => Promise<string>;
|
|
12
|
+
readonly writeFile: (path: string, content: string) => Promise<void>;
|
|
13
|
+
readonly exists: (path: string) => Promise<boolean>;
|
|
14
|
+
readonly readDir: (path: string) => Promise<readonly string[]>;
|
|
15
|
+
readonly mkdir: (path: string) => Promise<void>;
|
|
16
|
+
};
|
|
17
|
+
/** Puerto de reloj para timestamps. */
|
|
18
|
+
export type ClockPort = {
|
|
19
|
+
readonly now: () => string;
|
|
20
|
+
};
|
|
21
|
+
/** Puerto de generación de ID. */
|
|
22
|
+
export type IdPort = {
|
|
23
|
+
readonly randomUUID: () => string;
|
|
24
|
+
};
|
|
25
|
+
/** Puertos combinados para el grabador. */
|
|
26
|
+
export type RecorderPorts = {
|
|
27
|
+
readonly fs: FsPort;
|
|
28
|
+
readonly clock: ClockPort;
|
|
29
|
+
readonly id: IdPort;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Obtiene o genera el ID del grabador local. El ID es un UUID aleatorio
|
|
33
|
+
* almacenado en `{basePath}/soak-recorder-id`. No se deriva de hostname,
|
|
34
|
+
* username ni ningún dato identificativo.
|
|
35
|
+
*/
|
|
36
|
+
export declare function ensureRecorderId(ports: RecorderPorts, basePath: string): Promise<string>;
|
|
37
|
+
/**
|
|
38
|
+
* Lee todas las cadenas de observación del directorio de evidencia.
|
|
39
|
+
* Cada fichero `*.jsonl` se lee como una cadena independiente.
|
|
40
|
+
*/
|
|
41
|
+
export declare function readAllChains(ports: RecorderPorts, evidenceDir: string): Promise<SoakObservation[][]>;
|
|
42
|
+
/** Datos de entrada para una nueva observación (sin campos derivados). */
|
|
43
|
+
export type ObservationInput = {
|
|
44
|
+
readonly platform: SoakPlatform;
|
|
45
|
+
readonly opencodeVersion: string;
|
|
46
|
+
readonly provenance: "genuine-usage" | "ci-synthetic";
|
|
47
|
+
readonly traceDigest: string;
|
|
48
|
+
readonly criticalDivergences: number | null;
|
|
49
|
+
readonly privacy: SoakPrivacyPair | null;
|
|
50
|
+
readonly duplicateEffects: SoakDuplicateEffectPair | null;
|
|
51
|
+
readonly modelVerification: SoakModelVerificationPair | null;
|
|
52
|
+
};
|
|
53
|
+
/**
|
|
54
|
+
* Añade una observación a la cadena del grabador local. Calcula seq,
|
|
55
|
+
* timestamp y chainDigest automáticamente. Ejecuta assertReferenceOnly
|
|
56
|
+
* antes de persistir.
|
|
57
|
+
*/
|
|
58
|
+
export declare function appendObservation(ports: RecorderPorts, evidenceDir: string, recorderId: string, input: ObservationInput): Promise<SoakObservation>;
|
|
59
|
+
//# sourceMappingURL=soakRecorder.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"soakRecorder.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/soakRecorder.ts"],"names":[],"mappings":"AACA,OAAO,EACL,KAAK,uBAAuB,EAC5B,KAAK,yBAAyB,EAC9B,KAAK,eAAe,EAEpB,KAAK,YAAY,EACjB,KAAK,eAAe,EACrB,MAAM,wBAAwB,CAAC;AAEhC;;;;;;GAMG;AAMH,8DAA8D;AAC9D,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACrD,QAAQ,CAAC,SAAS,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACrE,QAAQ,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;IACpD,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,SAAS,MAAM,EAAE,CAAC,CAAC;IAC/D,QAAQ,CAAC,KAAK,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;CACjD,CAAC;AAEF,uCAAuC;AACvC,MAAM,MAAM,SAAS,GAAG;IACtB,QAAQ,CAAC,GAAG,EAAE,MAAM,MAAM,CAAC;CAC5B,CAAC;AAEF,kCAAkC;AAClC,MAAM,MAAM,MAAM,GAAG;IACnB,QAAQ,CAAC,UAAU,EAAE,MAAM,MAAM,CAAC;CACnC,CAAC;AAEF,2CAA2C;AAC3C,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC;IAC1B,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB,CAAC;AAMF;;;;GAIG;AACH,wBAAsB,gBAAgB,CACpC,KAAK,EAAE,aAAa,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAajB;AAMD;;;GAGG;AACH,wBAAsB,aAAa,CACjC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,EAAE,EAAE,CAAC,CA0B9B;AAMD,0EAA0E;AAC1E,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,eAAe,EAAE,MAAM,CAAC;IACjC,QAAQ,CAAC,UAAU,EAAE,eAAe,GAAG,cAAc,CAAC;IACtD,QAAQ,CAAC,WAAW,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,OAAO,EAAE,eAAe,GAAG,IAAI,CAAC;IACzC,QAAQ,CAAC,gBAAgB,EAAE,uBAAuB,GAAG,IAAI,CAAC;IAC1D,QAAQ,CAAC,iBAAiB,EAAE,yBAAyB,GAAG,IAAI,CAAC;CAC9D,CAAC;AAwBF;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,KAAK,EAAE,aAAa,EACpB,WAAW,EAAE,MAAM,EACnB,UAAU,EAAE,MAAM,EAClB,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,eAAe,CAAC,CAiE1B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"workspaceLease.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/workspaceLease.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAuBpE,QAAA,MAAM,iBAAiB;;;;;iBAKrB,CAAC;AAEH,qDAAqD;AACrD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,8CAA8C;AAC9C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;AAE7E,6DAA6D;AAC7D,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"workspaceLease.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/workspaceLease.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,OAAO,EAAqB,KAAK,WAAW,EAAE,MAAM,eAAe,CAAC;AAuBpE,QAAA,MAAM,iBAAiB;;;;;iBAKrB,CAAC;AAEH,qDAAqD;AACrD,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,8CAA8C;AAC9C,MAAM,MAAM,cAAc,GAAG,MAAM,GAAG,YAAY,GAAG,WAAW,GAAG,SAAS,CAAC;AAE7E,6DAA6D;AAC7D,qBAAa,UAAW,SAAQ,KAAK;IACnC,QAAQ,CAAC,IAAI,EAAE,cAAc,CAAC;IAC9B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,IAAI,EAAE,cAAc,EAAE,MAAM,EAAE,MAAM,EAK/C;CACF;AAED,kDAAkD;AAClD,MAAM,MAAM,WAAW,GAAG;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,kDAAkD;AAClD,MAAM,WAAW,cAAc;IAC7B,oFAAoF;IACpF,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC7D,oEAAoE;IACpE,OAAO,CAAC,MAAM,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IAC5C,6EAA6E;IAC7E,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,SAAS,CAAC,CAAC;CAC1D;AAED,wBAAgB,oBAAoB,CAClC,IAAI,EAAE,MAAM,EACZ,QAAQ,GAAE,WAAqC,GAC9C,cAAc,CA0EhB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"worktreeRegistry.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/worktreeRegistry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiCxB,QAAA,MAAM,aAAa;;;iBAGjB,CAAC;AAIH,sDAAsD;AACtD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE5D,8DAA8D;AAC9D,MAAM,MAAM,yBAAyB,GACjC,UAAU,GACV,aAAa,GACb,cAAc,GACd,SAAS,CAAC;AAEd,gEAAgE;AAChE,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"worktreeRegistry.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/worktreeRegistry.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAiCxB,QAAA,MAAM,aAAa;;;iBAGjB,CAAC;AAIH,sDAAsD;AACtD,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,aAAa,CAAC,CAAC;AAE5D,8DAA8D;AAC9D,MAAM,MAAM,yBAAyB,GACjC,UAAU,GACV,aAAa,GACb,cAAc,GACd,SAAS,CAAC;AAEd,gEAAgE;AAChE,qBAAa,qBAAsB,SAAQ,KAAK;IAC9C,QAAQ,CAAC,IAAI,EAAE,yBAAyB,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IAExB,YAAY,IAAI,EAAE,yBAAyB,EAAE,MAAM,EAAE,MAAM,EAK1D;CACF;AAED,oEAAoE;AACpE,MAAM,WAAW,gBAAgB;IAC/B,uEAAuE;IACvE,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAAC;IACpE,iFAAiF;IACjF,OAAO,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAAC;IACpD,oDAAoD;IACpD,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACrC,sDAAsD;IACtD,IAAI,IAAI,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;CACpC;AAaD,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,gBAAgB,CA8ErE"}
|
|
@@ -17,4 +17,19 @@ export declare function appendDurable(file: string, content: string): void;
|
|
|
17
17
|
export declare function readText(file: string): string | undefined;
|
|
18
18
|
/** `true` si la ruta existe (fichero o directorio). */
|
|
19
19
|
export declare function pathExists(path: string): boolean;
|
|
20
|
+
/**
|
|
21
|
+
* Canonicaliza una ruta con la forma **real** del sistema de ficheros: expande
|
|
22
|
+
* los alias 8.3 de Windows (`RUNNER~1` a `runneradmin`) y resuelve symlinks
|
|
23
|
+
* (`/var` a `/private/var` en macOS).
|
|
24
|
+
*
|
|
25
|
+
* `realpathSync.native` falla con `ENOENT` en rutas que aún no existen, así que
|
|
26
|
+
* se resuelve el **ancestro existente más profundo** y se re-anexa el resto sin
|
|
27
|
+
* canonicalizar. Eso permite canonicalizar el destino de un worktree antes de
|
|
28
|
+
* crearlo y seguir comparándolo con la ruta que git reporta después.
|
|
29
|
+
*
|
|
30
|
+
* El recorrido está acotado por la raíz de la propia ruta, que se trata fuera
|
|
31
|
+
* del bucle: es el único punto donde `dirname` deja de reducir. Nunca lanza; si
|
|
32
|
+
* ni la raíz resuelve, devuelve la ruta absoluta original.
|
|
33
|
+
*/
|
|
34
|
+
export declare function realPathDeep(target: string): string;
|
|
20
35
|
//# sourceMappingURL=writer.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/writer.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"writer.d.ts","sourceRoot":"","sources":["../../../src/storage/graph/writer.ts"],"names":[],"mappings":"AAYA;;;;;;;;GAQG;AAEH,mDAAmD;AACnD,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,IAAI,CAE3C;AAED,sEAAsE;AACtE,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAQhE;AAED,uEAAuE;AACvE,wBAAgB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,IAAI,CAQjE;AAED,sEAAsE;AACtE,wBAAgB,QAAQ,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAKzD;AAED,uDAAuD;AACvD,wBAAgB,UAAU,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAEhD;AAWD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,YAAY,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAkBnD"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/storage/path.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,2EAA2E;AAC3E,qBAAa,gBAAiB,SAAQ,KAAK;
|
|
1
|
+
{"version":3,"file":"path.d.ts","sourceRoot":"","sources":["../../src/storage/path.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,2EAA2E;AAC3E,qBAAa,gBAAiB,SAAQ,KAAK;IACzC,YAAY,OAAO,EAAE,MAAM,EAG1B;CACF;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAkB1D;AAED,iEAAiE;AACjE,wBAAgB,eAAe,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,MAAM,CAE7D;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAItD;AAED,oFAAoF;AACpF,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,EAAE,CAGvD"}
|
|
@@ -20,14 +20,14 @@ export declare const RouteEventSchema: z.ZodObject<{
|
|
|
20
20
|
promptHash: z.ZodString;
|
|
21
21
|
promptChars: z.ZodNumber;
|
|
22
22
|
tier: z.ZodEnum<{
|
|
23
|
-
trivial: "trivial";
|
|
24
|
-
simple: "simple";
|
|
25
|
-
moderate: "moderate";
|
|
26
23
|
hard: "hard";
|
|
24
|
+
moderate: "moderate";
|
|
25
|
+
simple: "simple";
|
|
26
|
+
trivial: "trivial";
|
|
27
27
|
}>;
|
|
28
28
|
routeKind: z.ZodEnum<{
|
|
29
|
-
local: "local";
|
|
30
29
|
frontier: "frontier";
|
|
30
|
+
local: "local";
|
|
31
31
|
}>;
|
|
32
32
|
selected: z.ZodObject<{
|
|
33
33
|
providerID: z.ZodString;
|
|
@@ -108,10 +108,10 @@ export declare const ActivityEventSchema: z.ZodObject<{
|
|
|
108
108
|
sessionID: z.ZodString;
|
|
109
109
|
type: z.ZodLiteral<"activity">;
|
|
110
110
|
kind: z.ZodEnum<{
|
|
111
|
-
route: "route";
|
|
112
111
|
agent: "agent";
|
|
113
|
-
decision: "decision";
|
|
114
112
|
commit: "commit";
|
|
113
|
+
decision: "decision";
|
|
114
|
+
route: "route";
|
|
115
115
|
}>;
|
|
116
116
|
agent: z.ZodOptional<z.ZodString>;
|
|
117
117
|
summary: z.ZodString;
|
|
@@ -141,14 +141,14 @@ export declare const OpenTeamEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
141
141
|
promptHash: z.ZodString;
|
|
142
142
|
promptChars: z.ZodNumber;
|
|
143
143
|
tier: z.ZodEnum<{
|
|
144
|
-
trivial: "trivial";
|
|
145
|
-
simple: "simple";
|
|
146
|
-
moderate: "moderate";
|
|
147
144
|
hard: "hard";
|
|
145
|
+
moderate: "moderate";
|
|
146
|
+
simple: "simple";
|
|
147
|
+
trivial: "trivial";
|
|
148
148
|
}>;
|
|
149
149
|
routeKind: z.ZodEnum<{
|
|
150
|
-
local: "local";
|
|
151
150
|
frontier: "frontier";
|
|
151
|
+
local: "local";
|
|
152
152
|
}>;
|
|
153
153
|
selected: z.ZodObject<{
|
|
154
154
|
providerID: z.ZodString;
|
|
@@ -219,10 +219,10 @@ export declare const OpenTeamEventSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
|
|
|
219
219
|
sessionID: z.ZodString;
|
|
220
220
|
type: z.ZodLiteral<"activity">;
|
|
221
221
|
kind: z.ZodEnum<{
|
|
222
|
-
route: "route";
|
|
223
222
|
agent: "agent";
|
|
224
|
-
decision: "decision";
|
|
225
223
|
commit: "commit";
|
|
224
|
+
decision: "decision";
|
|
225
|
+
route: "route";
|
|
226
226
|
}>;
|
|
227
227
|
agent: z.ZodOptional<z.ZodString>;
|
|
228
228
|
summary: z.ZodString;
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
import type { GraphEventV1 } from "../graph/schema";
|
|
2
|
+
import type { GraphJournalHealth } from "../graph/types";
|
|
3
|
+
import type { WorktreeReconcileReport } from "../orchestrator/worktreeReconciler";
|
|
4
|
+
import type { LeaseRecord } from "../storage/graph/workspaceLease";
|
|
5
|
+
import type { GraphViewHealth } from "./graphView";
|
|
6
|
+
/**
|
|
7
|
+
* Productor puro de métricas de runtime-health del grafo (GE-052).
|
|
8
|
+
*
|
|
9
|
+
* Pliega una lista de eventos de journal, el estado del journal, el lease, el
|
|
10
|
+
* informe de worktrees y el kill switch en un `GraphViewHealth` que el web
|
|
11
|
+
* viewer ya consume (GE-084) pero que hasta ahora carecía de productor real.
|
|
12
|
+
*
|
|
13
|
+
* Semántica de cada métrica:
|
|
14
|
+
* - `unknownEffects`: `node.dispatched` cuyo `attemptID` no tiene un evento
|
|
15
|
+
* terminal (`node.succeeded`/`node.failed`/`node.cancelled`) con el mismo
|
|
16
|
+
* `attemptID`. Deduplicado: repetir el mismo evento no duplica la cuenta.
|
|
17
|
+
* - `staleCompletions`: evento terminal de nodo cuyo `attemptID` aparece
|
|
18
|
+
* *después* del evento terminal de run (`run.completed`/`run.failed`/
|
|
19
|
+
* `run.cancelled`). Acotado como contador para utilidad del operador.
|
|
20
|
+
* - `recoveryRequired`: `journal === "corrupt" || unknownEffects > 0`.
|
|
21
|
+
* - `conflicts`: lease activo no propio (holder ≠ input.holder) +
|
|
22
|
+
* `worktrees.blocked`.
|
|
23
|
+
* - `killSwitch`: passthrough del config.
|
|
24
|
+
*
|
|
25
|
+
* Invariantes:
|
|
26
|
+
* - **Puro y determinista**: sin I/O, reloj, random, env ni logs.
|
|
27
|
+
* - **Idempotente**: plegar la misma lista con duplicados produce la misma
|
|
28
|
+
* salida.
|
|
29
|
+
* - **Reference-only**: solo booleanos y contadores acotados; el guard
|
|
30
|
+
* `assertReferenceOnly` rechaza cualquier campo crudo.
|
|
31
|
+
* - **Sin autoridad**: no decide, concede ni muta nada.
|
|
32
|
+
*/
|
|
33
|
+
/** Entradas para el cómputo de salud de runtime. */
|
|
34
|
+
export type GraphRuntimeHealthInput = {
|
|
35
|
+
readonly events: readonly GraphEventV1[];
|
|
36
|
+
readonly journal: GraphJournalHealth;
|
|
37
|
+
readonly lease: LeaseRecord | undefined;
|
|
38
|
+
readonly holder: string;
|
|
39
|
+
readonly worktrees?: WorktreeReconcileReport;
|
|
40
|
+
readonly killSwitch: boolean;
|
|
41
|
+
};
|
|
42
|
+
/**
|
|
43
|
+
* Predicado compartido: determina si se requiere recuperación.
|
|
44
|
+
* Extraído para que el CLI (`renderGraphStatus`) y la web health banner
|
|
45
|
+
* compartan la misma lógica sin duplicación.
|
|
46
|
+
*/
|
|
47
|
+
export declare function isRecoveryRequired(journal: GraphJournalHealth, unknownEffects: number): boolean;
|
|
48
|
+
/**
|
|
49
|
+
* Computa las métricas de runtime-health a partir de fuentes allow-listed.
|
|
50
|
+
* Idempotente y reference-only; el guard final lo garantiza.
|
|
51
|
+
*/
|
|
52
|
+
export declare function computeGraphRuntimeHealth(input: GraphRuntimeHealthInput): GraphViewHealth;
|
|
53
|
+
//# sourceMappingURL=graphRuntimeHealth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"graphRuntimeHealth.d.ts","sourceRoot":"","sources":["../../src/telemetry/graphRuntimeHealth.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AACpD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,KAAK,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAClF,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACnE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAEnD;;;;;;;;;;;;;;;;;;;;;;;;;;GA0BG;AAEH,oDAAoD;AACpD,MAAM,MAAM,uBAAuB,GAAG;IACpC,QAAQ,CAAC,MAAM,EAAE,SAAS,YAAY,EAAE,CAAC;IACzC,QAAQ,CAAC,OAAO,EAAE,kBAAkB,CAAC;IACrC,QAAQ,CAAC,KAAK,EAAE,WAAW,GAAG,SAAS,CAAC;IACxC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,SAAS,CAAC,EAAE,uBAAuB,CAAC;IAC7C,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B,CAAC;AAgBF;;;;GAIG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,kBAAkB,EAC3B,cAAc,EAAE,MAAM,GACrB,OAAO,CAET;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CACvC,KAAK,EAAE,uBAAuB,GAC7B,eAAe,CAwDjB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"graphView.d.ts","sourceRoot":"","sources":["../../src/telemetry/graphView.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAa,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;;;;;;;;;;GAWG;AAEH,mFAAmF;AACnF,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,OAAO,GACP,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,WAAW,CAAC;AAEhB,0CAA0C;AAC1C,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,cAAc,CAAC;AAErE,gEAAgE;AAChE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,mDAAmD;AACnD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,iFAAiF;AACjF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF,mFAAmF;AACnF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACtD,CAAC;AA8FF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,qBAAqB,CAgB3E"}
|
|
1
|
+
{"version":3,"file":"graphView.d.ts","sourceRoot":"","sources":["../../src/telemetry/graphView.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAa,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC1E,OAAO,KAAK,EAAE,UAAU,EAAc,MAAM,gBAAgB,CAAC;AAC7D,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAE9D;;;;;;;;;;;GAWG;AAEH,mFAAmF;AACnF,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,OAAO,GACP,QAAQ,GACR,WAAW,GACX,QAAQ,GACR,WAAW,CAAC;AAEhB,0CAA0C;AAC1C,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,UAAU,GAAG,cAAc,CAAC;AAErE,gEAAgE;AAChE,MAAM,MAAM,gBAAgB,GAAG;IAC7B,QAAQ,CAAC,GAAG,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;IACxB,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,kBAAkB,CAAC;IACnC,QAAQ,CAAC,QAAQ,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,cAAc,CAAC,EAAE,UAAU,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,EAAE;QAChB,QAAQ,CAAC,OAAO,EAAE,aAAa,CAAC;QAChC,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;KAC9B,CAAC;IACF,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;IAC7B,QAAQ,CAAC,QAAQ,CAAC,EAAE,gBAAgB,CAAC;IACrC,QAAQ,CAAC,UAAU,CAAC,EAAE,MAAM,CAAC;CAC9B,CAAC;AAEF,mDAAmD;AACnD,MAAM,MAAM,aAAa,GAAG;IAC1B,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,EAAE,MAAM,CAAC;CACrB,CAAC;AAEF,iFAAiF;AACjF,MAAM,MAAM,eAAe,GAAG;IAC5B,QAAQ,CAAC,gBAAgB,EAAE,OAAO,CAAC;IACnC,QAAQ,CAAC,cAAc,EAAE,MAAM,CAAC;IAChC,QAAQ,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAClC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,UAAU,EAAE,OAAO,CAAC;CAC9B,CAAC;AAEF,6EAA6E;AAC7E,MAAM,MAAM,qBAAqB,GAAG;IAClC,QAAQ,CAAC,OAAO,EAAE,CAAC,CAAC;IACpB,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,KAAK,EAAE,SAAS,aAAa,EAAE,CAAC;IACzC,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;CAClC,CAAC;AAEF,mFAAmF;AACnF,MAAM,MAAM,cAAc,GAAG;IAC3B,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,KAAK,EAAE,UAAU,CAAC;IAC3B,QAAQ,CAAC,SAAS,EAAE,SAAS,oBAAoB,EAAE,CAAC;IACpD,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC;IACjC,QAAQ,CAAC,QAAQ,CAAC,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAC;CACtD,CAAC;AA8FF;;;;GAIG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,qBAAqB,CAgB3E"}
|
|
@@ -5,14 +5,14 @@ export declare const CostRecordSchema: z.ZodObject<{
|
|
|
5
5
|
promptHash: z.ZodString;
|
|
6
6
|
promptChars: z.ZodNumber;
|
|
7
7
|
tier: z.ZodEnum<{
|
|
8
|
-
trivial: "trivial";
|
|
9
|
-
simple: "simple";
|
|
10
|
-
moderate: "moderate";
|
|
11
8
|
hard: "hard";
|
|
9
|
+
moderate: "moderate";
|
|
10
|
+
simple: "simple";
|
|
11
|
+
trivial: "trivial";
|
|
12
12
|
}>;
|
|
13
13
|
routeKind: z.ZodEnum<{
|
|
14
|
-
local: "local";
|
|
15
14
|
frontier: "frontier";
|
|
15
|
+
local: "local";
|
|
16
16
|
}>;
|
|
17
17
|
selected: z.ZodObject<{
|
|
18
18
|
providerID: z.ZodString;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@jmanuelcorral/openteam",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.2.0",
|
|
4
4
|
"packageManager": "bun@1.3.14",
|
|
5
5
|
"description": "Cost-aware, local-first routing plugin for opencode with cheapest-capable frontier fallback and multi-agent orchestration.",
|
|
6
6
|
"license": "MIT",
|
|
@@ -66,6 +66,8 @@
|
|
|
66
66
|
"clean": "node -e \"require('node:fs').rmSync('dist', { recursive: true, force: true })\"",
|
|
67
67
|
"test": "bun test",
|
|
68
68
|
"test:cov": "bun test --coverage",
|
|
69
|
+
"certify:shadow": "bun test tests/certification/graph-shadow.test.ts",
|
|
70
|
+
"certify:release": "bun test tests/certification/graph-release.test.ts",
|
|
69
71
|
"coverage:check": "node scripts/check-coverage.mjs",
|
|
70
72
|
"typecheck": "tsc --noEmit",
|
|
71
73
|
"lint": "biome check .",
|
|
@@ -80,13 +82,13 @@
|
|
|
80
82
|
},
|
|
81
83
|
"dependencies": {
|
|
82
84
|
"@clack/prompts": "1.7.0",
|
|
83
|
-
"@opencode-ai/plugin": "1.
|
|
84
|
-
"@opencode-ai/sdk": "1.
|
|
85
|
+
"@opencode-ai/plugin": "1.18.18",
|
|
86
|
+
"@opencode-ai/sdk": "1.18.18",
|
|
85
87
|
"zod": "4.4.3"
|
|
86
88
|
},
|
|
87
89
|
"devDependencies": {
|
|
88
|
-
"@biomejs/biome": "2.5.
|
|
90
|
+
"@biomejs/biome": "2.5.9",
|
|
89
91
|
"@types/bun": "1.3.14",
|
|
90
|
-
"typescript": "
|
|
92
|
+
"typescript": "7.0.2"
|
|
91
93
|
}
|
|
92
94
|
}
|