simfile 0.0.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 (249) hide show
  1. package/README.md +143 -0
  2. package/dist/cli/index.d.ts +3 -0
  3. package/dist/cli/index.d.ts.map +1 -0
  4. package/dist/cli/index.js +348 -0
  5. package/dist/coverage/index.d.ts +2 -0
  6. package/dist/coverage/index.d.ts.map +1 -0
  7. package/dist/coverage/index.js +1 -0
  8. package/dist/coverage/matrix.d.ts +21 -0
  9. package/dist/coverage/matrix.d.ts.map +1 -0
  10. package/dist/coverage/matrix.js +173 -0
  11. package/dist/coverage/render.d.ts +3 -0
  12. package/dist/coverage/render.d.ts.map +1 -0
  13. package/dist/coverage/render.js +26 -0
  14. package/dist/index.d.ts +8 -0
  15. package/dist/index.d.ts.map +1 -0
  16. package/dist/index.js +7 -0
  17. package/dist/kernel/duration.d.ts +9 -0
  18. package/dist/kernel/duration.d.ts.map +1 -0
  19. package/dist/kernel/duration.js +44 -0
  20. package/dist/kernel/index.d.ts +4 -0
  21. package/dist/kernel/index.d.ts.map +1 -0
  22. package/dist/kernel/index.js +3 -0
  23. package/dist/kernel/range.d.ts +6 -0
  24. package/dist/kernel/range.d.ts.map +1 -0
  25. package/dist/kernel/range.js +16 -0
  26. package/dist/kernel/stochastic.d.ts +10 -0
  27. package/dist/kernel/stochastic.d.ts.map +1 -0
  28. package/dist/kernel/stochastic.js +25 -0
  29. package/dist/ledger/index.d.ts +4 -0
  30. package/dist/ledger/index.d.ts.map +1 -0
  31. package/dist/ledger/index.js +3 -0
  32. package/dist/ledger/markers.d.ts +46 -0
  33. package/dist/ledger/markers.d.ts.map +1 -0
  34. package/dist/ledger/markers.js +108 -0
  35. package/dist/ledger/stable.d.ts +65 -0
  36. package/dist/ledger/stable.d.ts.map +1 -0
  37. package/dist/ledger/stable.js +78 -0
  38. package/dist/ledger/validation.d.ts +16 -0
  39. package/dist/ledger/validation.d.ts.map +1 -0
  40. package/dist/ledger/validation.js +127 -0
  41. package/dist/moltnet/index.d.ts +3 -0
  42. package/dist/moltnet/index.d.ts.map +1 -0
  43. package/dist/moltnet/index.js +2 -0
  44. package/dist/moltnet/transcript-export.d.ts +34 -0
  45. package/dist/moltnet/transcript-export.d.ts.map +1 -0
  46. package/dist/moltnet/transcript-export.js +68 -0
  47. package/dist/moltnet/world-participant.d.ts +77 -0
  48. package/dist/moltnet/world-participant.d.ts.map +1 -0
  49. package/dist/moltnet/world-participant.js +221 -0
  50. package/dist/observe/artifacts.d.ts +16 -0
  51. package/dist/observe/artifacts.d.ts.map +1 -0
  52. package/dist/observe/artifacts.js +31 -0
  53. package/dist/observe/causalStreams.d.ts +19 -0
  54. package/dist/observe/causalStreams.d.ts.map +1 -0
  55. package/dist/observe/causalStreams.js +38 -0
  56. package/dist/observe/compute.d.ts +17 -0
  57. package/dist/observe/compute.d.ts.map +1 -0
  58. package/dist/observe/compute.js +97 -0
  59. package/dist/observe/index.d.ts +11 -0
  60. package/dist/observe/index.d.ts.map +1 -0
  61. package/dist/observe/index.js +10 -0
  62. package/dist/observe/manifest.d.ts +79 -0
  63. package/dist/observe/manifest.d.ts.map +1 -0
  64. package/dist/observe/manifest.js +87 -0
  65. package/dist/observe/memoryBanks.d.ts +38 -0
  66. package/dist/observe/memoryBanks.d.ts.map +1 -0
  67. package/dist/observe/memoryBanks.js +86 -0
  68. package/dist/observe/observe.d.ts +32 -0
  69. package/dist/observe/observe.d.ts.map +1 -0
  70. package/dist/observe/observe.js +73 -0
  71. package/dist/observe/report.d.ts +165 -0
  72. package/dist/observe/report.d.ts.map +1 -0
  73. package/dist/observe/report.js +138 -0
  74. package/dist/observe/seedSpread.d.ts +49 -0
  75. package/dist/observe/seedSpread.d.ts.map +1 -0
  76. package/dist/observe/seedSpread.js +262 -0
  77. package/dist/observe/seedSpreadArtifacts.d.ts +49 -0
  78. package/dist/observe/seedSpreadArtifacts.d.ts.map +1 -0
  79. package/dist/observe/seedSpreadArtifacts.js +118 -0
  80. package/dist/observe/spreadMatcher.d.ts +45 -0
  81. package/dist/observe/spreadMatcher.d.ts.map +1 -0
  82. package/dist/observe/spreadMatcher.js +124 -0
  83. package/dist/report/index.d.ts +4 -0
  84. package/dist/report/index.d.ts.map +1 -0
  85. package/dist/report/index.js +3 -0
  86. package/dist/report/probeArtifact.d.ts +26 -0
  87. package/dist/report/probeArtifact.d.ts.map +1 -0
  88. package/dist/report/probeArtifact.js +119 -0
  89. package/dist/report/probes.d.ts +52 -0
  90. package/dist/report/probes.d.ts.map +1 -0
  91. package/dist/report/probes.js +164 -0
  92. package/dist/report/score.d.ts +27 -0
  93. package/dist/report/score.d.ts.map +1 -0
  94. package/dist/report/score.js +14 -0
  95. package/dist/report/transcripts.d.ts +12 -0
  96. package/dist/report/transcripts.d.ts.map +1 -0
  97. package/dist/report/transcripts.js +17 -0
  98. package/dist/runtime/causal-fixture.d.ts +26 -0
  99. package/dist/runtime/causal-fixture.d.ts.map +1 -0
  100. package/dist/runtime/causal-fixture.js +36 -0
  101. package/dist/runtime/clock.d.ts +25 -0
  102. package/dist/runtime/clock.d.ts.map +1 -0
  103. package/dist/runtime/clock.js +63 -0
  104. package/dist/runtime/condition.d.ts +55 -0
  105. package/dist/runtime/condition.d.ts.map +1 -0
  106. package/dist/runtime/condition.js +122 -0
  107. package/dist/runtime/emit-causal-fixture.d.ts +2 -0
  108. package/dist/runtime/emit-causal-fixture.d.ts.map +1 -0
  109. package/dist/runtime/emit-causal-fixture.js +45 -0
  110. package/dist/runtime/expression.d.ts +11 -0
  111. package/dist/runtime/expression.d.ts.map +1 -0
  112. package/dist/runtime/expression.js +305 -0
  113. package/dist/runtime/numeric.d.ts +7 -0
  114. package/dist/runtime/numeric.d.ts.map +1 -0
  115. package/dist/runtime/numeric.js +11 -0
  116. package/dist/runtime/rule-actions.d.ts +5 -0
  117. package/dist/runtime/rule-actions.d.ts.map +1 -0
  118. package/dist/runtime/rule-actions.js +82 -0
  119. package/dist/runtime/run-record.d.ts +73 -0
  120. package/dist/runtime/run-record.d.ts.map +1 -0
  121. package/dist/runtime/run-record.js +179 -0
  122. package/dist/runtime/step-tick.d.ts +43 -0
  123. package/dist/runtime/step-tick.d.ts.map +1 -0
  124. package/dist/runtime/step-tick.js +177 -0
  125. package/dist/runtime/trace-compile.d.ts +66 -0
  126. package/dist/runtime/trace-compile.d.ts.map +1 -0
  127. package/dist/runtime/trace-compile.js +157 -0
  128. package/dist/runtime/trace-export.d.ts +5 -0
  129. package/dist/runtime/trace-export.d.ts.map +1 -0
  130. package/dist/runtime/trace-export.js +4 -0
  131. package/dist/runtime/trace-run.d.ts +15 -0
  132. package/dist/runtime/trace-run.d.ts.map +1 -0
  133. package/dist/runtime/trace-run.js +92 -0
  134. package/dist/runtime/trace.d.ts +10 -0
  135. package/dist/runtime/trace.d.ts.map +1 -0
  136. package/dist/runtime/trace.js +9 -0
  137. package/dist/runtime/types.d.ts +61 -0
  138. package/dist/runtime/types.d.ts.map +1 -0
  139. package/dist/runtime/types.js +1 -0
  140. package/dist/runtime/viewer-trace.d.ts +64 -0
  141. package/dist/runtime/viewer-trace.d.ts.map +1 -0
  142. package/dist/runtime/viewer-trace.js +164 -0
  143. package/dist/runtime/world-act.d.ts +55 -0
  144. package/dist/runtime/world-act.d.ts.map +1 -0
  145. package/dist/runtime/world-act.js +156 -0
  146. package/dist/schema/binding.d.ts +23 -0
  147. package/dist/schema/binding.d.ts.map +1 -0
  148. package/dist/schema/binding.js +249 -0
  149. package/dist/schema/index.d.ts +5 -0
  150. package/dist/schema/index.d.ts.map +1 -0
  151. package/dist/schema/index.js +4 -0
  152. package/dist/schema/model.d.ts +244 -0
  153. package/dist/schema/model.d.ts.map +1 -0
  154. package/dist/schema/model.js +222 -0
  155. package/dist/schema/parse.d.ts +10 -0
  156. package/dist/schema/parse.d.ts.map +1 -0
  157. package/dist/schema/parse.js +15 -0
  158. package/dist/schema/semantic.d.ts +3 -0
  159. package/dist/schema/semantic.d.ts.map +1 -0
  160. package/dist/schema/semantic.js +135 -0
  161. package/dist/sims/composeRunManifest.d.ts +54 -0
  162. package/dist/sims/composeRunManifest.d.ts.map +1 -0
  163. package/dist/sims/composeRunManifest.js +40 -0
  164. package/dist/sims/composedJungianSimDriver.d.ts +50 -0
  165. package/dist/sims/composedJungianSimDriver.d.ts.map +1 -0
  166. package/dist/sims/composedJungianSimDriver.js +199 -0
  167. package/dist/sims/composedOfficeSimDriver.d.ts +53 -0
  168. package/dist/sims/composedOfficeSimDriver.d.ts.map +1 -0
  169. package/dist/sims/composedOfficeSimDriver.js +162 -0
  170. package/dist/sims/exchangeWait.d.ts +56 -0
  171. package/dist/sims/exchangeWait.d.ts.map +1 -0
  172. package/dist/sims/exchangeWait.js +66 -0
  173. package/dist/sims/index.d.ts +14 -0
  174. package/dist/sims/index.d.ts.map +1 -0
  175. package/dist/sims/index.js +13 -0
  176. package/dist/sims/moltnetRoomClient.d.ts +47 -0
  177. package/dist/sims/moltnetRoomClient.d.ts.map +1 -0
  178. package/dist/sims/moltnetRoomClient.js +41 -0
  179. package/dist/sims/poll.d.ts +19 -0
  180. package/dist/sims/poll.d.ts.map +1 -0
  181. package/dist/sims/poll.js +23 -0
  182. package/dist/sims/spawnfileCli.d.ts +49 -0
  183. package/dist/sims/spawnfileCli.d.ts.map +1 -0
  184. package/dist/sims/spawnfileCli.js +90 -0
  185. package/dist/sims/spawnfileReceipts.d.ts +76 -0
  186. package/dist/sims/spawnfileReceipts.d.ts.map +1 -0
  187. package/dist/sims/spawnfileReceipts.js +107 -0
  188. package/dist/sims/worldDrivenOfficeSimDriver.d.ts +59 -0
  189. package/dist/sims/worldDrivenOfficeSimDriver.d.ts.map +1 -0
  190. package/dist/sims/worldDrivenOfficeSimDriver.js +182 -0
  191. package/dist/sims/worldLedgerWriter.d.ts +32 -0
  192. package/dist/sims/worldLedgerWriter.d.ts.map +1 -0
  193. package/dist/sims/worldLedgerWriter.js +39 -0
  194. package/dist/sims/worldSeedLint.d.ts +42 -0
  195. package/dist/sims/worldSeedLint.d.ts.map +1 -0
  196. package/dist/sims/worldSeedLint.js +73 -0
  197. package/dist/sims/worldTickIngest.d.ts +27 -0
  198. package/dist/sims/worldTickIngest.d.ts.map +1 -0
  199. package/dist/sims/worldTickIngest.js +35 -0
  200. package/dist/sims/worldTickLoop.d.ts +64 -0
  201. package/dist/sims/worldTickLoop.d.ts.map +1 -0
  202. package/dist/sims/worldTickLoop.js +122 -0
  203. package/dist/view/engineProvenance.d.ts +46 -0
  204. package/dist/view/engineProvenance.d.ts.map +1 -0
  205. package/dist/view/engineProvenance.js +76 -0
  206. package/dist/view/index.d.ts +14 -0
  207. package/dist/view/index.d.ts.map +1 -0
  208. package/dist/view/index.js +107 -0
  209. package/dist/view/membranes.d.ts +14 -0
  210. package/dist/view/membranes.d.ts.map +1 -0
  211. package/dist/view/membranes.js +127 -0
  212. package/dist/view/runDetect.d.ts +2 -0
  213. package/dist/view/runDetect.d.ts.map +1 -0
  214. package/dist/view/runDetect.js +47 -0
  215. package/dist/view/runRawArtifacts.d.ts +48 -0
  216. package/dist/view/runRawArtifacts.d.ts.map +1 -0
  217. package/dist/view/runRawArtifacts.js +143 -0
  218. package/dist/view/runTimeline.d.ts +24 -0
  219. package/dist/view/runTimeline.d.ts.map +1 -0
  220. package/dist/view/runTimeline.js +204 -0
  221. package/dist/view/runTimelineRecords.d.ts +42 -0
  222. package/dist/view/runTimelineRecords.d.ts.map +1 -0
  223. package/dist/view/runTimelineRecords.js +244 -0
  224. package/dist/view/runTimelineRefs.d.ts +27 -0
  225. package/dist/view/runTimelineRefs.d.ts.map +1 -0
  226. package/dist/view/runTimelineRefs.js +31 -0
  227. package/dist/view/runTimelineTypes.d.ts +99 -0
  228. package/dist/view/runTimelineTypes.d.ts.map +1 -0
  229. package/dist/view/runTimelineTypes.js +1 -0
  230. package/dist/view/runViewModel.d.ts +21 -0
  231. package/dist/view/runViewModel.d.ts.map +1 -0
  232. package/dist/view/runViewModel.js +66 -0
  233. package/dist/view/runViewModelCompute.d.ts +24 -0
  234. package/dist/view/runViewModelCompute.d.ts.map +1 -0
  235. package/dist/view/runViewModelCompute.js +157 -0
  236. package/dist/view/runViewModelTypes.d.ts +177 -0
  237. package/dist/view/runViewModelTypes.d.ts.map +1 -0
  238. package/dist/view/runViewModelTypes.js +1 -0
  239. package/dist/view/runWorldTrace.d.ts +97 -0
  240. package/dist/view/runWorldTrace.d.ts.map +1 -0
  241. package/dist/view/runWorldTrace.js +88 -0
  242. package/dist/view/server.d.ts +12 -0
  243. package/dist/view/server.d.ts.map +1 -0
  244. package/dist/view/server.js +306 -0
  245. package/package.json +65 -0
  246. package/web/dist/assets/index-CJHLjfsG.js +49 -0
  247. package/web/dist/assets/index-DJOsPsU8.css +1 -0
  248. package/web/dist/index.html +13 -0
  249. package/web/dist/models/AnimatedMushnub.glb +0 -0
@@ -0,0 +1,173 @@
1
+ export const systemViewTopLevelKeys = [
2
+ "simfile_version",
3
+ "name",
4
+ "spawnfile",
5
+ "clock",
6
+ "variables",
7
+ "generators",
8
+ "rules",
9
+ "ledger",
10
+ "telemetry",
11
+ "markers",
12
+ "probes"
13
+ ];
14
+ export const coveragePrimitives = [
15
+ "clock",
16
+ "variables",
17
+ "generators",
18
+ "rules",
19
+ "ledger",
20
+ "telemetry",
21
+ "markers/probes"
22
+ ];
23
+ export const matrix = [
24
+ // Frozen top-level rows.
25
+ {
26
+ subject: { kind: "top-level", key: "simfile_version" },
27
+ claim: 'Top-level `simfile_version` is structurally validated as `"0.1"`.',
28
+ specRef: "docs/SYSTEMS_VIEW.md#every-top-level-key",
29
+ status: "implemented",
30
+ evidence: "src/schema/model.ts"
31
+ },
32
+ {
33
+ subject: { kind: "top-level", key: "name" },
34
+ claim: "Top-level `name` is structurally validated as a Simfile identifier.",
35
+ specRef: "docs/SYSTEMS_VIEW.md#every-top-level-key",
36
+ status: "implemented",
37
+ evidence: "src/schema/parse.test.ts"
38
+ },
39
+ {
40
+ subject: { kind: "top-level", key: "spawnfile" },
41
+ claim: "Top-level `spawnfile` is parsed as an optional source pointer.",
42
+ specRef: "docs/SYSTEMS_VIEW.md#every-top-level-key",
43
+ status: "implemented",
44
+ evidence: "src/schema/model.ts"
45
+ },
46
+ {
47
+ subject: { kind: "top-level", key: "clock" },
48
+ claim: "Top-level `clock` is structurally parsed and required.",
49
+ specRef: "docs/SYSTEMS_VIEW.md#every-top-level-key",
50
+ status: "implemented",
51
+ evidence: "src/schema/parse.test.ts"
52
+ },
53
+ {
54
+ subject: { kind: "top-level", key: "variables" },
55
+ claim: "Top-level `variables` is structurally parsed as an id-keyed map.",
56
+ specRef: "docs/SYSTEMS_VIEW.md#every-top-level-key",
57
+ status: "implemented",
58
+ evidence: "src/schema/parse.test.ts"
59
+ },
60
+ {
61
+ subject: { kind: "top-level", key: "generators" },
62
+ claim: "Top-level `generators` is structurally parsed as an id-keyed map.",
63
+ specRef: "docs/SYSTEMS_VIEW.md#every-top-level-key",
64
+ status: "implemented",
65
+ evidence: "src/schema/parse.test.ts"
66
+ },
67
+ {
68
+ subject: { kind: "top-level", key: "rules" },
69
+ claim: "Top-level `rules` is structurally parsed as an id-keyed map.",
70
+ specRef: "docs/SYSTEMS_VIEW.md#every-top-level-key",
71
+ status: "implemented",
72
+ evidence: "src/schema/parse.test.ts"
73
+ },
74
+ {
75
+ subject: { kind: "top-level", key: "ledger" },
76
+ claim: "Top-level `ledger` storage configuration is structurally parsed.",
77
+ specRef: "docs/SYSTEMS_VIEW.md#every-top-level-key",
78
+ status: "implemented",
79
+ evidence: "src/schema/parse.test.ts"
80
+ },
81
+ {
82
+ subject: { kind: "top-level", key: "telemetry" },
83
+ claim: "Top-level `telemetry` snapshot configuration is structurally parsed.",
84
+ specRef: "docs/SYSTEMS_VIEW.md#every-top-level-key",
85
+ status: "implemented",
86
+ evidence: "src/runtime/run-record.test.ts"
87
+ },
88
+ {
89
+ subject: { kind: "top-level", key: "markers" },
90
+ claim: "Top-level `markers` is parsed and evaluated against trace events.",
91
+ specRef: "docs/SYSTEMS_VIEW.md#every-top-level-key",
92
+ status: "implemented",
93
+ evidence: "src/ledger/markers.test.ts"
94
+ },
95
+ {
96
+ subject: { kind: "top-level", key: "probes" },
97
+ claim: "Top-level `probes` is parsed and evaluated against trace artifacts.",
98
+ specRef: "docs/SYSTEMS_VIEW.md#every-top-level-key",
99
+ status: "implemented",
100
+ evidence: "src/report/probes.test.ts"
101
+ },
102
+ // Frozen primitive rows.
103
+ {
104
+ subject: { kind: "primitive", primitive: "clock" },
105
+ claim: "Clock duration, simulated time, phases, and tick resolution execute deterministically.",
106
+ specRef: "docs/DESIGN.md#clock",
107
+ status: "implemented",
108
+ evidence: "src/runtime/trace.test.ts"
109
+ },
110
+ {
111
+ subject: { kind: "primitive", primitive: "variables" },
112
+ claim: "Driven and derived numeric variables execute with range clamping.",
113
+ specRef: "docs/DESIGN.md#variables",
114
+ status: "implemented",
115
+ evidence: "src/runtime/trace.test.ts"
116
+ },
117
+ {
118
+ subject: { kind: "primitive", primitive: "variables" },
119
+ claim: "Measured and instrument-fed variables execute at tick boundaries.",
120
+ specRef: "docs/DESIGN.md#variables",
121
+ status: "deferred",
122
+ evidence: "src/runtime/trace-compile.ts"
123
+ },
124
+ {
125
+ subject: { kind: "primitive", primitive: "generators" },
126
+ claim: "Deterministic and seeded stochastic generators execute reproducibly.",
127
+ specRef: "docs/DESIGN.md#generators",
128
+ status: "implemented",
129
+ evidence: "src/runtime/trace.test.ts"
130
+ },
131
+ {
132
+ subject: { kind: "primitive", primitive: "rules" },
133
+ claim: "Conditions, crossing modes, variable effects, speech, DM, and wake actions execute.",
134
+ specRef: "docs/DESIGN.md#rules",
135
+ status: "implemented",
136
+ evidence: "src/runtime/trace.test.ts"
137
+ },
138
+ {
139
+ subject: { kind: "primitive", primitive: "ledger" },
140
+ claim: "Canonical event envelopes and byte-identical JSONL exports are implemented.",
141
+ specRef: "docs/DESIGN.md#events-and-ledger",
142
+ status: "implemented",
143
+ evidence: "src/runtime/run-record.test.ts"
144
+ },
145
+ {
146
+ subject: { kind: "primitive", primitive: "ledger" },
147
+ claim: "SQLite and PostgreSQL ledger persistence are available as runtime backends.",
148
+ specRef: "docs/SYSTEMS_VIEW.md#ledger",
149
+ status: "deferred",
150
+ evidence: "src/runtime/run-record.ts"
151
+ },
152
+ {
153
+ subject: { kind: "primitive", primitive: "telemetry" },
154
+ claim: "Snapshot cadence produces a deterministic telemetry artifact.",
155
+ specRef: "docs/SYSTEMS_VIEW.md#telemetry--markers",
156
+ status: "implemented",
157
+ evidence: "src/runtime/run-record.test.ts"
158
+ },
159
+ {
160
+ subject: { kind: "primitive", primitive: "markers/probes" },
161
+ claim: "Containment and propagation marker scanning and verdicts are implemented.",
162
+ specRef: "docs/SYSTEMS_VIEW.md#telemetry--markers",
163
+ status: "implemented",
164
+ evidence: "src/ledger/markers.test.ts"
165
+ },
166
+ {
167
+ subject: { kind: "primitive", primitive: "markers/probes" },
168
+ claim: "Probe expectations and bounded `after` plus `within` evaluation are implemented.",
169
+ specRef: "docs/DESIGN.md#probes",
170
+ status: "implemented",
171
+ evidence: "src/report/probes.test.ts"
172
+ }
173
+ ];
@@ -0,0 +1,3 @@
1
+ import type { CoverageRow } from "./matrix.js";
2
+ export declare const renderCoverageMarkdown: (rows: readonly CoverageRow[]) => string;
3
+ //# sourceMappingURL=render.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"render.d.ts","sourceRoot":"","sources":["../../src/coverage/render.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAmB,MAAM,aAAa,CAAC;AA+BhE,eAAO,MAAM,sBAAsB,GAAI,MAAM,SAAS,WAAW,EAAE,KAAG,MAKrE,CAAC"}
@@ -0,0 +1,26 @@
1
+ const GENERATED_HEADER = [
2
+ "# Simfile Coverage",
3
+ "",
4
+ "> Generated from `src/coverage/matrix.ts`. Run `npm run coverage:render` after changing the manifest.",
5
+ "",
6
+ "This matrix uses the seven audit buckets requested by B40. In `docs/DESIGN.md`, telemetry and markers are configuration, probes are a primitive, and entity lifecycle is the dormant seventh design primitive.",
7
+ ""
8
+ ].join("\n");
9
+ const TABLE_HEADER = ["| Subject | Claim | Spec | Status | Evidence |", "|---|---|---|---|---|"].join("\n");
10
+ const escapeCell = (value) => value.replace(/\r?\n/gu, " ").replace(/\|/gu, "\\|").trim();
11
+ const formatSubject = (subject) => subject.kind === "top-level" ? `top-level · \`${subject.key}\`` : `primitive · \`${subject.primitive}\``;
12
+ const formatRow = (row) => {
13
+ const cells = [
14
+ formatSubject(row.subject),
15
+ escapeCell(row.claim),
16
+ `\`${escapeCell(row.specRef)}\``,
17
+ `\`${escapeCell(row.status)}\``,
18
+ `\`${escapeCell(row.evidence)}\``
19
+ ];
20
+ return `| ${cells.join(" | ")} |`;
21
+ };
22
+ export const renderCoverageMarkdown = (rows) => {
23
+ const tableRows = rows.map(formatRow);
24
+ const body = [GENERATED_HEADER, TABLE_HEADER, ...tableRows].join("\n");
25
+ return `${body.replace(/\n+$/u, "")}\n`;
26
+ };
@@ -0,0 +1,8 @@
1
+ export * from "./schema/index.js";
2
+ export * from "./kernel/index.js";
3
+ export * from "./ledger/index.js";
4
+ export * from "./moltnet/index.js";
5
+ export * from "./report/index.js";
6
+ export * from "./runtime/trace.js";
7
+ export * from "./coverage/index.js";
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,mBAAmB,CAAC;AAClC,cAAc,oBAAoB,CAAC;AACnC,cAAc,qBAAqB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,7 @@
1
+ export * from "./schema/index.js";
2
+ export * from "./kernel/index.js";
3
+ export * from "./ledger/index.js";
4
+ export * from "./moltnet/index.js";
5
+ export * from "./report/index.js";
6
+ export * from "./runtime/trace.js";
7
+ export * from "./coverage/index.js";
@@ -0,0 +1,9 @@
1
+ export interface ParsedDuration {
2
+ value: number;
3
+ unit: "ms" | "s" | "m" | "h" | "d" | "w";
4
+ milliseconds: number;
5
+ }
6
+ export declare const parseDurationMs: (input: string) => number;
7
+ export declare const parseDuration: (input: string) => ParsedDuration;
8
+ export declare const parseDurationSeconds: (input: string) => number;
9
+ //# sourceMappingURL=duration.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"duration.d.ts","sourceRoot":"","sources":["../../src/kernel/duration.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,IAAI,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC;IACzC,YAAY,EAAE,MAAM,CAAC;CACtB;AAQD,eAAO,MAAM,eAAe,GAAI,OAAO,MAAM,KAAG,MAc/C,CAAC;AAEF,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,KAAG,cAe7C,CAAC;AAEF,eAAO,MAAM,oBAAoB,GAAI,OAAO,MAAM,KAAG,MAEpD,CAAC"}
@@ -0,0 +1,44 @@
1
+ const DURATION_PATTERN = /^(-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]+)?)\s*(ms|s|m|h|d|w)$/u;
2
+ const MILLIS_PER = {
3
+ ms: 1,
4
+ s: 1_000,
5
+ m: 60_000,
6
+ h: 3_600_000,
7
+ d: 86_400_000,
8
+ w: 604_800_000
9
+ };
10
+ const assertFinitePositive = (value) => {
11
+ if (!Number.isFinite(value)) {
12
+ throw new Error("duration must be a finite number");
13
+ }
14
+ };
15
+ export const parseDurationMs = (input) => {
16
+ const match = input.trim().match(DURATION_PATTERN);
17
+ if (!match) {
18
+ throw new Error(`invalid duration literal: ${input}`);
19
+ }
20
+ const raw = Number.parseFloat(match[1]);
21
+ assertFinitePositive(raw);
22
+ if (raw < 0) {
23
+ throw new Error(`duration must be non-negative: ${input}`);
24
+ }
25
+ const unit = match[2];
26
+ return raw * MILLIS_PER[unit];
27
+ };
28
+ export const parseDuration = (input) => {
29
+ const match = input.trim().match(DURATION_PATTERN);
30
+ if (!match) {
31
+ throw new Error(`invalid duration literal: ${input}`);
32
+ }
33
+ const value = Number.parseFloat(match[1]);
34
+ assertFinitePositive(value);
35
+ if (value < 0) {
36
+ throw new Error(`duration must be non-negative: ${input}`);
37
+ }
38
+ const unit = match[2];
39
+ const milliseconds = value * MILLIS_PER[unit];
40
+ return { value, unit, milliseconds };
41
+ };
42
+ export const parseDurationSeconds = (input) => {
43
+ return parseDurationMs(input) / 1_000;
44
+ };
@@ -0,0 +1,4 @@
1
+ export * from "./duration.js";
2
+ export * from "./range.js";
3
+ export * from "./stochastic.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/kernel/index.ts"],"names":[],"mappings":"AAAA,cAAc,eAAe,CAAC;AAC9B,cAAc,YAAY,CAAC;AAC3B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./duration.js";
2
+ export * from "./range.js";
3
+ export * from "./stochastic.js";
@@ -0,0 +1,6 @@
1
+ export interface ParsedRange {
2
+ min: number;
3
+ max: number;
4
+ }
5
+ export declare const parseRange: (input: string) => ParsedRange;
6
+ //# sourceMappingURL=range.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"range.d.ts","sourceRoot":"","sources":["../../src/kernel/range.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAED,eAAO,MAAM,UAAU,GAAI,OAAO,MAAM,KAAG,WAgB1C,CAAC"}
@@ -0,0 +1,16 @@
1
+ const RANGE_PATTERN = /^(-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]+)?)\s*\.\.\s*(-?(?:0|(?:[1-9][0-9]*))(?:\.[0-9]+)?)$/u;
2
+ export const parseRange = (input) => {
3
+ const match = input.trim().match(RANGE_PATTERN);
4
+ if (!match) {
5
+ throw new Error(`invalid range literal: ${input}`);
6
+ }
7
+ const min = Number.parseFloat(match[1]);
8
+ const max = Number.parseFloat(match[2]);
9
+ if (!Number.isFinite(min) || !Number.isFinite(max)) {
10
+ throw new Error(`invalid range bounds: ${input}`);
11
+ }
12
+ if (min >= max) {
13
+ throw new Error(`range lower bound must be smaller than upper bound: ${input}`);
14
+ }
15
+ return { min, max };
16
+ };
@@ -0,0 +1,10 @@
1
+ export interface UniformDrawInput {
2
+ runSeed: string;
3
+ generatorId: string;
4
+ tick: number;
5
+ drawIndex: number;
6
+ min: number;
7
+ max: number;
8
+ }
9
+ export declare const drawUniform: ({ runSeed, generatorId, tick, drawIndex, min, max }: UniformDrawInput) => number;
10
+ //# sourceMappingURL=stochastic.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stochastic.d.ts","sourceRoot":"","sources":["../../src/kernel/stochastic.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;CACb;AAUD,eAAO,MAAM,WAAW,GAAI,qDAOzB,gBAAgB,KAAG,MAiBrB,CAAC"}
@@ -0,0 +1,25 @@
1
+ import { createHash } from "node:crypto";
2
+ const TWO_POW_53 = 2 ** 53;
3
+ const normalizeSeed = (value) => value.trim();
4
+ const sampleUnitInterval = (input) => {
5
+ const digest = createHash("sha256").update(input, "utf8").digest();
6
+ const value = Number(digest.readBigUInt64BE(0) >> 11n) / TWO_POW_53;
7
+ return value;
8
+ };
9
+ export const drawUniform = ({ runSeed, generatorId, tick, drawIndex, min, max }) => {
10
+ if (!Number.isFinite(tick) || !Number.isInteger(tick) || tick < 0) {
11
+ throw new Error(`tick must be a non-negative integer: ${tick}`);
12
+ }
13
+ if (!Number.isFinite(drawIndex) || !Number.isInteger(drawIndex) || drawIndex < 0) {
14
+ throw new Error(`drawIndex must be a non-negative integer: ${drawIndex}`);
15
+ }
16
+ if (!Number.isFinite(min) || !Number.isFinite(max)) {
17
+ throw new Error("distribution bounds must be finite numbers");
18
+ }
19
+ if (max < min) {
20
+ throw new Error(`max must be >= min: ${min}..${max}`);
21
+ }
22
+ const key = `${normalizeSeed(runSeed)}:${normalizeSeed(generatorId)}:${tick}:${drawIndex}`;
23
+ const unitValue = sampleUnitInterval(key);
24
+ return min + (max - min) * unitValue;
25
+ };
@@ -0,0 +1,4 @@
1
+ export * from "./markers.js";
2
+ export * from "./stable.js";
3
+ export * from "./validation.js";
4
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/ledger/index.ts"],"names":[],"mappings":"AAAA,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from "./markers.js";
2
+ export * from "./stable.js";
3
+ export * from "./validation.js";
@@ -0,0 +1,46 @@
1
+ export interface LedgerEvent {
2
+ event_id?: string;
3
+ kind: string;
4
+ sim_time?: number;
5
+ actor?: string;
6
+ target?: string;
7
+ scope?: string;
8
+ payload?: unknown;
9
+ }
10
+ export interface MarkerDefinition {
11
+ text?: string[];
12
+ mode: "containment" | "propagation";
13
+ scopes: string[];
14
+ }
15
+ export interface MarkerHit {
16
+ markerId: string;
17
+ eventId: string;
18
+ eventKind: string;
19
+ scope: string;
20
+ simTime: number;
21
+ alias: string;
22
+ }
23
+ export interface MarkerScanResult {
24
+ markerId: string;
25
+ hits: MarkerHit[];
26
+ }
27
+ export interface MarkerCoverageResult {
28
+ markerId: string;
29
+ mode: "containment" | "propagation";
30
+ passed: boolean;
31
+ evidence: string[];
32
+ detail: string;
33
+ }
34
+ /** Exported for reuse by `../observe/spreadMatcher.ts`'s exact matcher: the same
35
+ * word-boundary, case-insensitive alias check `scanMarker` uses internally,
36
+ * applied directly to already-joined content strings (transcript messages,
37
+ * mneme bank content, recalled memory content) rather than `LedgerEvent`s. */
38
+ export declare const containsAlias: (payload: string, alias: string) => boolean;
39
+ export declare const scanMarker: (events: readonly LedgerEvent[], markerId: string, marker: MarkerDefinition) => MarkerScanResult;
40
+ export declare const scanMarkers: (events: readonly LedgerEvent[], markers: Record<string, MarkerDefinition>) => Record<string, MarkerHit[]>;
41
+ export declare const evaluateContainmentMarker: (markerId: string, marker: MarkerDefinition, hits: readonly MarkerHit[]) => MarkerCoverageResult;
42
+ export interface EvaluatePropagationOptions {
43
+ requireAllScopes?: boolean;
44
+ }
45
+ export declare const evaluatePropagationMarker: (markerId: string, marker: MarkerDefinition, hits: readonly MarkerHit[], options?: EvaluatePropagationOptions) => MarkerCoverageResult;
46
+ //# sourceMappingURL=markers.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"markers.d.ts","sourceRoot":"","sources":["../../src/ledger/markers.ts"],"names":[],"mappings":"AAAA,MAAM,WAAW,WAAW;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,IAAI,EAAE,aAAa,GAAG,aAAa,CAAC;IACpC,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED,MAAM,WAAW,SAAS;IACxB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,SAAS,EAAE,CAAC;CACnB;AAED,MAAM,WAAW,oBAAoB;IACnC,QAAQ,EAAE,MAAM,CAAC;IACjB,IAAI,EAAE,aAAa,GAAG,aAAa,CAAC;IACpC,MAAM,EAAE,OAAO,CAAC;IAChB,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;CAChB;AAWD;;;8EAG8E;AAC9E,eAAO,MAAM,aAAa,GAAI,SAAS,MAAM,EAAE,OAAO,MAAM,KAAG,OAI9D,CAAC;AAiCF,eAAO,MAAM,UAAU,GACrB,QAAQ,SAAS,WAAW,EAAE,EAC9B,UAAU,MAAM,EAChB,QAAQ,gBAAgB,KACvB,gBAoCF,CAAC;AAEF,eAAO,MAAM,WAAW,GACtB,QAAQ,SAAS,WAAW,EAAE,EAC9B,SAAS,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAAC,KACxC,MAAM,CAAC,MAAM,EAAE,SAAS,EAAE,CAO5B,CAAC;AAIF,eAAO,MAAM,yBAAyB,GACpC,UAAU,MAAM,EAChB,QAAQ,gBAAgB,EACxB,MAAM,SAAS,SAAS,EAAE,KACzB,oBAaF,CAAC;AAEF,MAAM,WAAW,0BAA0B;IACzC,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,eAAO,MAAM,yBAAyB,GACpC,UAAU,MAAM,EAChB,QAAQ,gBAAgB,EACxB,MAAM,SAAS,SAAS,EAAE,EAC1B,UAAS,0BAA+B,KACvC,oBAiBF,CAAC"}
@@ -0,0 +1,108 @@
1
+ const normalizeAlias = (text) => text.trim().toLocaleLowerCase();
2
+ const escapeRegExp = (value) => value.replace(/[.*+?^${}()|[\]\\]/gu, "\\$&");
3
+ /** Exported for reuse by `../observe/spreadMatcher.ts`'s exact matcher: the same
4
+ * word-boundary, case-insensitive alias check `scanMarker` uses internally,
5
+ * applied directly to already-joined content strings (transcript messages,
6
+ * mneme bank content, recalled memory content) rather than `LedgerEvent`s. */
7
+ export const containsAlias = (payload, alias) => {
8
+ const boundary = "(?<![\\p{L}\\p{N}_])";
9
+ const endBoundary = "(?![\\p{L}\\p{N}_])";
10
+ return new RegExp(`${boundary}${escapeRegExp(alias)}${endBoundary}`, "iu").test(payload);
11
+ };
12
+ const extractTextCandidates = (payload) => {
13
+ if (typeof payload === "string") {
14
+ return [payload];
15
+ }
16
+ if (!payload || typeof payload !== "object") {
17
+ return [];
18
+ }
19
+ const record = payload;
20
+ const fields = ["content", "text", "message", "body"];
21
+ const values = fields
22
+ .map((field) => record[field])
23
+ .filter((entry) => typeof entry === "string");
24
+ if (values.length > 0) {
25
+ return values;
26
+ }
27
+ if (typeof record.content === "object" && record.content !== null && "text" in record.content) {
28
+ const nested = record.content.text;
29
+ if (typeof nested === "string") {
30
+ return [nested];
31
+ }
32
+ }
33
+ return [];
34
+ };
35
+ const eventScope = (event) => event.scope ?? event.target ?? "global";
36
+ const eventIdForHit = (event, fallback) => event.event_id ?? fallback;
37
+ export const scanMarker = (events, markerId, marker) => {
38
+ const aliases = (marker.text && marker.text.length > 0 ? marker.text : [markerId]).map(normalizeAlias);
39
+ const hits = new Map();
40
+ for (let index = 0; index < events.length; index += 1) {
41
+ const event = events[index];
42
+ const payloadText = extractTextCandidates(event.payload).join(" ");
43
+ const lowerPayload = payloadText.toLocaleLowerCase();
44
+ const matchedAlias = aliases.find((alias) => containsAlias(lowerPayload, alias));
45
+ if (!matchedAlias) {
46
+ continue;
47
+ }
48
+ const normalized = {
49
+ eventId: eventIdForHit(event, `index:${index}`),
50
+ scope: eventScope(event)
51
+ };
52
+ const key = normalized.eventId;
53
+ if (hits.has(key)) {
54
+ continue;
55
+ }
56
+ hits.set(key, {
57
+ markerId,
58
+ eventId: normalized.eventId,
59
+ eventKind: event.kind,
60
+ scope: normalized.scope,
61
+ simTime: event.sim_time ?? 0,
62
+ alias: matchedAlias
63
+ });
64
+ }
65
+ return {
66
+ markerId,
67
+ hits: [...hits.values()]
68
+ };
69
+ };
70
+ export const scanMarkers = (events, markers) => {
71
+ const output = {};
72
+ for (const [markerId, marker] of Object.entries(markers)) {
73
+ const result = scanMarker(events, markerId, marker);
74
+ output[markerId] = result.hits;
75
+ }
76
+ return output;
77
+ };
78
+ const withinScope = (scope, scopes) => scopes.includes(scope);
79
+ export const evaluateContainmentMarker = (markerId, marker, hits) => {
80
+ const inScope = hits.filter((hit) => withinScope(hit.scope, marker.scopes));
81
+ const outOfScope = hits.filter((hit) => !withinScope(hit.scope, marker.scopes));
82
+ const passed = inScope.length > 0 && outOfScope.length === 0;
83
+ return {
84
+ markerId,
85
+ mode: "containment",
86
+ passed,
87
+ evidence: hits.map((hit) => hit.eventId),
88
+ detail: passed
89
+ ? "contained marker stayed within declared scopes"
90
+ : "marker violated containment policy"
91
+ };
92
+ };
93
+ export const evaluatePropagationMarker = (markerId, marker, hits, options = {}) => {
94
+ const inScope = hits.filter((hit) => withinScope(hit.scope, marker.scopes));
95
+ const required = options.requireAllScopes === true;
96
+ const passed = required
97
+ ? marker.scopes.every((scope) => inScope.some((hit) => hit.scope === scope))
98
+ : inScope.length > 0;
99
+ return {
100
+ markerId,
101
+ mode: "propagation",
102
+ passed,
103
+ evidence: inScope.map((hit) => hit.eventId),
104
+ detail: passed
105
+ ? "marker reached required propagation scope(s)"
106
+ : "marker did not reach required propagation scope(s)"
107
+ };
108
+ };
@@ -0,0 +1,65 @@
1
+ export type Provenance = "mechanical" | "agentic" | "external";
2
+ /**
3
+ * Causal envelope constants shared with `specs/causal-event.v1.schema.json`
4
+ * (root, canonical) and `specs/CAUSAL.md`. Simfile does not import that
5
+ * schema file directly — this is simfile's own native TS copy of the wire
6
+ * contract, per the "type sharing" rule: siblings do not vendor the schema,
7
+ * they each hand-write a native type and stay conformant with the wire JSON.
8
+ */
9
+ export declare const CAUSAL_ENVELOPE_VERSION: "noopolis.causal-event.v1";
10
+ export declare const SIMFILE_EMITTER_SYSTEM: "simfile";
11
+ export declare const DEFAULT_EMITTER_STREAM_ID: "world";
12
+ export declare const DEFAULT_PRINCIPAL_ID: "system:simfile.world";
13
+ export interface CausalEmitter {
14
+ system: typeof SIMFILE_EMITTER_SYSTEM;
15
+ stream_id: string;
16
+ seq: number;
17
+ }
18
+ export interface LedgerEventEnvelopeInput<TPayload = unknown> {
19
+ runId: string;
20
+ seq: number;
21
+ kind: string;
22
+ simTime: number;
23
+ provenance: Provenance;
24
+ actor: string;
25
+ target: string;
26
+ scope: string;
27
+ payload: TPayload;
28
+ /** Logical stream within simfile's emitter identity. Defaults to "world". */
29
+ streamId?: string;
30
+ /** Authenticated principal that caused this event. Defaults to "system:simfile.world". */
31
+ principalId?: string;
32
+ /** Direct parent event_ids only (no trace_id, no transitive closure). */
33
+ causeEventIds?: readonly string[];
34
+ /** ISO 8601 diagnostics-only timestamp override. Defaults to a deterministic value derived from simTime. */
35
+ observedAt?: string;
36
+ }
37
+ export interface LedgerEventEnvelope<TPayload = unknown> {
38
+ /** Causal envelope schema version. Always noopolis.causal-event.v1 once stamped. */
39
+ version?: typeof CAUSAL_ENVELOPE_VERSION;
40
+ /** Identifier shared by every authority participating in a single run. */
41
+ run_id?: string;
42
+ event_id: string;
43
+ /** simfile's emitter identity: system + logical stream + per-stream seq. */
44
+ emitter?: CausalEmitter;
45
+ kind: string;
46
+ /** Authenticated principal that caused this event. Never model-supplied. */
47
+ principal_id?: string;
48
+ /** ISO 8601 timestamp. Diagnostics only; never used to order or trust events. */
49
+ recorded_at?: string;
50
+ /** Direct parent event_ids only. */
51
+ cause_event_ids?: string[];
52
+ sim_time: number;
53
+ provenance: Provenance;
54
+ actor: string;
55
+ target: string;
56
+ scope: string;
57
+ payload: TPayload;
58
+ }
59
+ export declare const stableStringify: (value: unknown) => string;
60
+ /** simfile's event_id convention: `simfile:<runId>:<seq>` (system:local, per the shared schema). */
61
+ export declare const createEventId: (runId: string, seq: number) => string;
62
+ export declare const createCanonicalEventEnvelope: <TPayload = unknown>(input: LedgerEventEnvelopeInput<TPayload>) => LedgerEventEnvelope<TPayload>;
63
+ export declare const stableEventLine: <TPayload = unknown>(input: LedgerEventEnvelopeInput<TPayload>) => string;
64
+ export declare const createEventDigest: (input: LedgerEventEnvelopeInput<unknown>) => string;
65
+ //# sourceMappingURL=stable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable.d.ts","sourceRoot":"","sources":["../../src/ledger/stable.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,UAAU,GAAG,YAAY,GAAG,SAAS,GAAG,UAAU,CAAC;AAE/D;;;;;;GAMG;AACH,eAAO,MAAM,uBAAuB,EAAG,0BAAmC,CAAC;AAC3E,eAAO,MAAM,sBAAsB,EAAG,SAAkB,CAAC;AACzD,eAAO,MAAM,yBAAyB,EAAG,OAAgB,CAAC;AAC1D,eAAO,MAAM,oBAAoB,EAAG,sBAA+B,CAAC;AAEpE,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,OAAO,sBAAsB,CAAC;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,GAAG,EAAE,MAAM,CAAC;CACb;AAED,MAAM,WAAW,wBAAwB,CAAC,QAAQ,GAAG,OAAO;IAC1D,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC;IAClB,6EAA6E;IAC7E,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0FAA0F;IAC1F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,yEAAyE;IACzE,aAAa,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;IAClC,4GAA4G;IAC5G,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,mBAAmB,CAAC,QAAQ,GAAG,OAAO;IACrD,oFAAoF;IACpF,OAAO,CAAC,EAAE,OAAO,uBAAuB,CAAC;IACzC,0EAA0E;IAC1E,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,OAAO,CAAC,EAAE,aAAa,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,4EAA4E;IAC5E,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,oCAAoC;IACpC,eAAe,CAAC,EAAE,MAAM,EAAE,CAAC;IAC3B,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,UAAU,CAAC;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,QAAQ,CAAC;CACnB;AAiCD,eAAO,MAAM,eAAe,GAAI,OAAO,OAAO,KAAG,MAEhD,CAAC;AAEF,oGAAoG;AACpG,eAAO,MAAM,aAAa,GAAI,OAAO,MAAM,EAAE,KAAK,MAAM,KAAG,MACd,CAAC;AAK9C,eAAO,MAAM,4BAA4B,GAAI,QAAQ,GAAG,OAAO,EAC7D,OAAO,wBAAwB,CAAC,QAAQ,CAAC,KACxC,mBAAmB,CAAC,QAAQ,CAmC9B,CAAC;AAEF,eAAO,MAAM,eAAe,GAAI,QAAQ,GAAG,OAAO,EAChD,OAAO,wBAAwB,CAAC,QAAQ,CAAC,KACxC,MAA8D,CAAC;AAElE,eAAO,MAAM,iBAAiB,GAAI,OAAO,wBAAwB,CAAC,OAAO,CAAC,KAAG,MACV,CAAC"}