ushman-ledger 1.1.0 → 1.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (68) hide show
  1. package/AGENTS.md +11 -7
  2. package/CHANGELOG.md +6 -0
  3. package/README.md +79 -8
  4. package/dist/blobs.js +3 -3
  5. package/dist/builders.d.ts +44 -2
  6. package/dist/builders.d.ts.map +1 -1
  7. package/dist/builders.js +7 -2
  8. package/dist/cli.d.ts.map +1 -1
  9. package/dist/cli.js +346 -62
  10. package/dist/doctor.d.ts.map +1 -1
  11. package/dist/doctor.js +104 -4
  12. package/dist/handle.d.ts +28 -6
  13. package/dist/handle.d.ts.map +1 -1
  14. package/dist/handle.js +105 -11
  15. package/dist/helpers.d.ts +7 -0
  16. package/dist/helpers.d.ts.map +1 -0
  17. package/dist/helpers.js +38 -0
  18. package/dist/index.d.ts +5 -3
  19. package/dist/index.d.ts.map +1 -1
  20. package/dist/index.js +5 -3
  21. package/dist/list.d.ts +44 -2
  22. package/dist/list.d.ts.map +1 -1
  23. package/dist/list.js +7 -5
  24. package/dist/note.d.ts +27 -0
  25. package/dist/note.d.ts.map +1 -1
  26. package/dist/note.js +11 -0
  27. package/dist/patch-resolver.d.ts +39 -0
  28. package/dist/patch-resolver.d.ts.map +1 -0
  29. package/dist/patch-resolver.js +196 -0
  30. package/dist/read-index.d.ts +7 -7
  31. package/dist/read-index.d.ts.map +1 -1
  32. package/dist/record.d.ts.map +1 -1
  33. package/dist/record.js +15 -40
  34. package/dist/render/migration-log.d.ts +10 -0
  35. package/dist/render/migration-log.d.ts.map +1 -0
  36. package/dist/render/migration-log.js +79 -0
  37. package/dist/render/retro.d.ts.map +1 -1
  38. package/dist/render/retro.js +34 -21
  39. package/dist/render/workspace-narrative.d.ts +12 -0
  40. package/dist/render/workspace-narrative.d.ts.map +1 -0
  41. package/dist/render/workspace-narrative.js +137 -0
  42. package/dist/schema/entry-core.d.ts +110 -0
  43. package/dist/schema/entry-core.d.ts.map +1 -0
  44. package/dist/schema/entry-core.js +143 -0
  45. package/dist/schema/entry-migrations.d.ts +3 -0
  46. package/dist/schema/entry-migrations.d.ts.map +1 -0
  47. package/dist/schema/entry-migrations.js +48 -0
  48. package/dist/schema/entry-read.d.ts +694 -0
  49. package/dist/schema/entry-read.d.ts.map +1 -0
  50. package/dist/schema/entry-read.js +92 -0
  51. package/dist/schema/entry-write.d.ts +865 -0
  52. package/dist/schema/entry-write.d.ts.map +1 -0
  53. package/dist/schema/entry-write.js +105 -0
  54. package/dist/schema/entry.d.ts +6 -1369
  55. package/dist/schema/entry.d.ts.map +1 -1
  56. package/dist/schema/entry.js +9 -286
  57. package/dist/schema/note.d.ts +1 -1
  58. package/dist/schema/note.d.ts.map +1 -1
  59. package/dist/schema/note.js +12 -1
  60. package/dist/storage/filesystem.d.ts +9 -0
  61. package/dist/storage/filesystem.d.ts.map +1 -1
  62. package/dist/storage/filesystem.js +82 -5
  63. package/dist/storage/lock-reclaimer.d.ts +2 -0
  64. package/dist/storage/lock-reclaimer.d.ts.map +1 -0
  65. package/dist/storage/lock-reclaimer.js +45 -0
  66. package/dist/version.d.ts +1 -1
  67. package/dist/version.js +1 -1
  68. package/package.json +3 -3
@@ -0,0 +1 @@
1
+ {"version":3,"file":"entry-write.d.ts","sourceRoot":"","sources":["../../src/schema/entry-write.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,CAAC,MAAM,SAAS,CAAC;AAoC7B,eAAO,MAAM,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;aAMrC,CAAC;AAUH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8HAUlC,CAAC;AAEF,eAAO,MAAM,yBAAyB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;8HASrC,CAAC;AAEF,eAAO,MAAM,4BAA4B;;;;;;;;;;;;;;;;;;;;;;;;;;;aAIvC,CAAC;AAEH,eAAO,MAAM,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;aAOtC,CAAC;AAEH,eAAO,MAAM,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;aAOnC,CAAC;AAEH,eAAO,MAAM,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;aAK3B,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;yDAOlC,CAAC;AAEF,eAAO,MAAM,iCAAiC;;;;;;;;;;;;;;;;;;;;;;;;;;;aAI5C,CAAC;AAEH,eAAO,MAAM,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;qDAkBjC,CAAC;AAEF,eAAO,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;kEAW7B,CAAC;AAEH,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,qBAAqB,CAAC,CAAC;AAC1E,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,WAAW,CAAC,OAAO,kBAAkB,CAAC,CAAC"}
@@ -0,0 +1,105 @@
1
+ import * as v from 'valibot';
2
+ import { AgentPatchDiffSchema, ChangeLogFileChangeSchema, ChangeLogParityStatusSchema, ChangeLogSmokeResultSchema, ChangeLogSubkindSchema, NonEmptyTrimmedStringSchema, OperatorDecisionPayloadSchema, recordEntryBaseEntries, StripDecisionRevertedPayloadSchema, } from "./entry-core.js";
3
+ import { NoteSubkindSchema } from "./note.js";
4
+ const validatePatchRecord = (value) => {
5
+ const provided = [value.diff, value.diffPath, value.diffText].filter((entry) => Boolean(entry));
6
+ if (provided.length === 0) {
7
+ return false;
8
+ }
9
+ if (value.diffPath && value.diffText) {
10
+ return false;
11
+ }
12
+ return true;
13
+ };
14
+ const PATCH_RECORD_REFINEMENT_MESSAGE = 'patch records require at least one source (diff, diffPath, or diffText), and diffPath and diffText cannot be combined.';
15
+ export const ToolInvocationRecordSchema = v.object({
16
+ ...recordEntryBaseEntries,
17
+ args: v.optional(v.array(v.string())),
18
+ cwd: v.optional(v.string()),
19
+ exitCode: v.optional(v.pipe(v.number(), v.integer())),
20
+ kind: v.literal('tool-invocation'),
21
+ });
22
+ const patchRecordEntries = {
23
+ ...recordEntryBaseEntries,
24
+ diff: v.optional(AgentPatchDiffSchema),
25
+ diffPath: v.optional(NonEmptyTrimmedStringSchema),
26
+ diffText: v.optional(NonEmptyTrimmedStringSchema),
27
+ rationale: NonEmptyTrimmedStringSchema,
28
+ };
29
+ export const AgentPatchRecordSchema = v.pipe(v.object({
30
+ ...patchRecordEntries,
31
+ agent: v.object({
32
+ name: NonEmptyTrimmedStringSchema,
33
+ sessionId: v.optional(NonEmptyTrimmedStringSchema),
34
+ }),
35
+ kind: v.literal('agent-patch'),
36
+ }), v.check(validatePatchRecord, PATCH_RECORD_REFINEMENT_MESSAGE));
37
+ export const OperatorPatchRecordSchema = v.pipe(v.object({
38
+ ...patchRecordEntries,
39
+ kind: v.literal('operator-patch'),
40
+ operator: v.object({
41
+ name: NonEmptyTrimmedStringSchema,
42
+ }),
43
+ }), v.check(validatePatchRecord, PATCH_RECORD_REFINEMENT_MESSAGE));
44
+ export const OperatorDecisionRecordSchema = v.object({
45
+ ...recordEntryBaseEntries,
46
+ kind: v.literal('operator-decision'),
47
+ payload: OperatorDecisionPayloadSchema,
48
+ });
49
+ export const ValidatorResultRecordSchema = v.object({
50
+ ...recordEntryBaseEntries,
51
+ kind: v.literal('validator-result'),
52
+ metrics: v.optional(v.record(v.string(), v.unknown())),
53
+ resultPath: v.optional(v.string()),
54
+ validator: v.picklist(['parity', 'equiv', 'characterize', 'verify', 'doctor']),
55
+ verdict: v.picklist(['green', 'yellow', 'red']),
56
+ });
57
+ export const RuntimeEventRecordSchema = v.object({
58
+ ...recordEntryBaseEntries,
59
+ kind: v.literal('runtime-event'),
60
+ level: v.picklist(['info', 'warn', 'error']),
61
+ message: NonEmptyTrimmedStringSchema,
62
+ source: NonEmptyTrimmedStringSchema,
63
+ stripDecisionId: v.optional(v.string()),
64
+ });
65
+ export const NoteRecordSchema = v.object({
66
+ ...recordEntryBaseEntries,
67
+ body: v.string(),
68
+ kind: v.literal('note'),
69
+ subkind: NoteSubkindSchema,
70
+ });
71
+ export const CorrectionRecordSchema = v.pipe(v.object({
72
+ ...recordEntryBaseEntries,
73
+ kind: v.literal('correction'),
74
+ rationale: NonEmptyTrimmedStringSchema,
75
+ }), v.check((value) => Boolean(value.links?.correctsLedgerId), 'correction records require links.correctsLedgerId'));
76
+ export const StripDecisionRevertedRecordSchema = v.object({
77
+ ...recordEntryBaseEntries,
78
+ kind: v.literal('strip-decision-reverted'),
79
+ payload: StripDecisionRevertedPayloadSchema,
80
+ });
81
+ export const ChangeLogRecordSchema = v.pipe(v.object({
82
+ ...recordEntryBaseEntries,
83
+ commandsRun: v.optional(v.array(NonEmptyTrimmedStringSchema)),
84
+ filesChanged: v.optional(v.array(ChangeLogFileChangeSchema), []),
85
+ hypothesis: v.optional(NonEmptyTrimmedStringSchema),
86
+ kind: v.literal('change-log'),
87
+ parityStatus: v.optional(ChangeLogParityStatusSchema),
88
+ rollbackPlan: v.optional(NonEmptyTrimmedStringSchema),
89
+ rollsBack: v.optional(NonEmptyTrimmedStringSchema),
90
+ smokeNotes: v.optional(NonEmptyTrimmedStringSchema),
91
+ smokeResult: v.optional(ChangeLogSmokeResultSchema),
92
+ subkind: ChangeLogSubkindSchema,
93
+ }), v.check((value) => value.subkind !== 'rollback' || Boolean(value.rollsBack), 'change-log rollback records require rollsBack'));
94
+ export const LedgerRecordSchema = v.variant('kind', [
95
+ ToolInvocationRecordSchema,
96
+ AgentPatchRecordSchema,
97
+ OperatorPatchRecordSchema,
98
+ OperatorDecisionRecordSchema,
99
+ ValidatorResultRecordSchema,
100
+ RuntimeEventRecordSchema,
101
+ NoteRecordSchema,
102
+ CorrectionRecordSchema,
103
+ StripDecisionRevertedRecordSchema,
104
+ ChangeLogRecordSchema,
105
+ ]);