worldvm 0.0.0-stage → 0.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 (426) hide show
  1. package/AUTHORING.md +833 -0
  2. package/README.md +154 -2
  3. package/bin/worldvm.mjs +3 -0
  4. package/dist/_internal/forma/index.d.ts +1 -0
  5. package/dist/_internal/forma/index.js +1 -0
  6. package/dist/_internal/forma/world/authoring-help.d.ts +25 -0
  7. package/dist/_internal/forma/world/authoring-help.js +130 -0
  8. package/dist/_internal/forma/world/citations.d.ts +3 -0
  9. package/dist/_internal/forma/world/citations.js +26 -0
  10. package/dist/_internal/forma/world/clock-bindings.d.ts +4 -0
  11. package/dist/_internal/forma/world/clock-bindings.js +45 -0
  12. package/dist/_internal/forma/world/compile.d.ts +13 -0
  13. package/dist/_internal/forma/world/compile.js +190 -0
  14. package/dist/_internal/forma/world/coverage.d.ts +10 -0
  15. package/dist/_internal/forma/world/coverage.js +242 -0
  16. package/dist/_internal/forma/world/digest.d.ts +1 -0
  17. package/dist/_internal/forma/world/digest.js +1 -0
  18. package/dist/_internal/forma/world/documentation.d.ts +3 -0
  19. package/dist/_internal/forma/world/documentation.js +38 -0
  20. package/dist/_internal/forma/world/homes.d.ts +4 -0
  21. package/dist/_internal/forma/world/homes.js +202 -0
  22. package/dist/_internal/forma/world/index.d.ts +6 -0
  23. package/dist/_internal/forma/world/index.js +5 -0
  24. package/dist/_internal/forma/world/lowering/accounts.d.ts +4 -0
  25. package/dist/_internal/forma/world/lowering/accounts.js +36 -0
  26. package/dist/_internal/forma/world/lowering/action-policy.d.ts +5 -0
  27. package/dist/_internal/forma/world/lowering/action-policy.js +16 -0
  28. package/dist/_internal/forma/world/lowering/agents.d.ts +6 -0
  29. package/dist/_internal/forma/world/lowering/agents.js +116 -0
  30. package/dist/_internal/forma/world/lowering/bundles.d.ts +3 -0
  31. package/dist/_internal/forma/world/lowering/bundles.js +13 -0
  32. package/dist/_internal/forma/world/lowering/child-parameters.d.ts +14 -0
  33. package/dist/_internal/forma/world/lowering/child-parameters.js +36 -0
  34. package/dist/_internal/forma/world/lowering/collects.d.ts +3 -0
  35. package/dist/_internal/forma/world/lowering/collects.js +51 -0
  36. package/dist/_internal/forma/world/lowering/component-operations.d.ts +6 -0
  37. package/dist/_internal/forma/world/lowering/component-operations.js +26 -0
  38. package/dist/_internal/forma/world/lowering/components.d.ts +7 -0
  39. package/dist/_internal/forma/world/lowering/components.js +236 -0
  40. package/dist/_internal/forma/world/lowering/connectors.d.ts +4 -0
  41. package/dist/_internal/forma/world/lowering/connectors.js +31 -0
  42. package/dist/_internal/forma/world/lowering/context.d.ts +80 -0
  43. package/dist/_internal/forma/world/lowering/context.js +316 -0
  44. package/dist/_internal/forma/world/lowering/contracts.d.ts +7 -0
  45. package/dist/_internal/forma/world/lowering/contracts.js +73 -0
  46. package/dist/_internal/forma/world/lowering/decisions.d.ts +3 -0
  47. package/dist/_internal/forma/world/lowering/decisions.js +164 -0
  48. package/dist/_internal/forma/world/lowering/derives.d.ts +3 -0
  49. package/dist/_internal/forma/world/lowering/derives.js +22 -0
  50. package/dist/_internal/forma/world/lowering/discretionary.d.ts +7 -0
  51. package/dist/_internal/forma/world/lowering/discretionary.js +15 -0
  52. package/dist/_internal/forma/world/lowering/documents.d.ts +3 -0
  53. package/dist/_internal/forma/world/lowering/documents.js +68 -0
  54. package/dist/_internal/forma/world/lowering/effective.d.ts +5 -0
  55. package/dist/_internal/forma/world/lowering/effective.js +26 -0
  56. package/dist/_internal/forma/world/lowering/entities.d.ts +3 -0
  57. package/dist/_internal/forma/world/lowering/entities.js +43 -0
  58. package/dist/_internal/forma/world/lowering/escalations.d.ts +6 -0
  59. package/dist/_internal/forma/world/lowering/escalations.js +31 -0
  60. package/dist/_internal/forma/world/lowering/evidence.d.ts +3 -0
  61. package/dist/_internal/forma/world/lowering/evidence.js +75 -0
  62. package/dist/_internal/forma/world/lowering/files.d.ts +4 -0
  63. package/dist/_internal/forma/world/lowering/files.js +56 -0
  64. package/dist/_internal/forma/world/lowering/holds.d.ts +6 -0
  65. package/dist/_internal/forma/world/lowering/holds.js +35 -0
  66. package/dist/_internal/forma/world/lowering/index.d.ts +89 -0
  67. package/dist/_internal/forma/world/lowering/index.js +115 -0
  68. package/dist/_internal/forma/world/lowering/interactions.d.ts +7 -0
  69. package/dist/_internal/forma/world/lowering/interactions.js +190 -0
  70. package/dist/_internal/forma/world/lowering/library.d.ts +5 -0
  71. package/dist/_internal/forma/world/lowering/library.js +41 -0
  72. package/dist/_internal/forma/world/lowering/milestones.d.ts +6 -0
  73. package/dist/_internal/forma/world/lowering/milestones.js +17 -0
  74. package/dist/_internal/forma/world/lowering/notices.d.ts +3 -0
  75. package/dist/_internal/forma/world/lowering/notices.js +33 -0
  76. package/dist/_internal/forma/world/lowering/param-bounds.d.ts +15 -0
  77. package/dist/_internal/forma/world/lowering/param-bounds.js +71 -0
  78. package/dist/_internal/forma/world/lowering/policies.d.ts +6 -0
  79. package/dist/_internal/forma/world/lowering/policies.js +95 -0
  80. package/dist/_internal/forma/world/lowering/principals.d.ts +62 -0
  81. package/dist/_internal/forma/world/lowering/principals.js +32 -0
  82. package/dist/_internal/forma/world/lowering/recurrences.d.ts +9 -0
  83. package/dist/_internal/forma/world/lowering/recurrences.js +56 -0
  84. package/dist/_internal/forma/world/lowering/renewal.d.ts +5 -0
  85. package/dist/_internal/forma/world/lowering/renewal.js +21 -0
  86. package/dist/_internal/forma/world/lowering/resources.d.ts +6 -0
  87. package/dist/_internal/forma/world/lowering/resources.js +19 -0
  88. package/dist/_internal/forma/world/lowering/reuse.d.ts +5 -0
  89. package/dist/_internal/forma/world/lowering/reuse.js +75 -0
  90. package/dist/_internal/forma/world/lowering/sources.d.ts +10 -0
  91. package/dist/_internal/forma/world/lowering/sources.js +47 -0
  92. package/dist/_internal/forma/world/lowering/syntax.d.ts +84 -0
  93. package/dist/_internal/forma/world/lowering/syntax.js +94 -0
  94. package/dist/_internal/forma/world/lowering/vaults.d.ts +11 -0
  95. package/dist/_internal/forma/world/lowering/vaults.js +148 -0
  96. package/dist/_internal/forma/world/prelude.generated.d.ts +1 -0
  97. package/dist/_internal/forma/world/prelude.generated.js +2 -0
  98. package/dist/_internal/forma/world/properties.d.ts +9 -0
  99. package/dist/_internal/forma/world/properties.js +387 -0
  100. package/dist/_internal/forma/world/scenarios.d.ts +10 -0
  101. package/dist/_internal/forma/world/scenarios.js +757 -0
  102. package/dist/_internal/forma/world/sensitivity.d.ts +3 -0
  103. package/dist/_internal/forma/world/sensitivity.js +118 -0
  104. package/dist/_internal/forma/world/source-syntax.d.ts +6 -0
  105. package/dist/_internal/forma/world/source-syntax.js +27 -0
  106. package/dist/_internal/forma/world/status-handling.d.ts +3 -0
  107. package/dist/_internal/forma/world/status-handling.js +143 -0
  108. package/dist/_internal/forma/world/surface.d.ts +30 -0
  109. package/dist/_internal/forma/world/surface.js +213 -0
  110. package/dist/_internal/forma/world/table-expressions.d.ts +3 -0
  111. package/dist/_internal/forma/world/table-expressions.js +41 -0
  112. package/dist/_internal/forma-tools/index.d.ts +17 -0
  113. package/dist/_internal/forma-tools/index.js +124 -0
  114. package/dist/_internal/ir-checks/advances.d.ts +7 -0
  115. package/dist/_internal/ir-checks/advances.js +6 -0
  116. package/dist/_internal/ir-checks/agent-reads.d.ts +14 -0
  117. package/dist/_internal/ir-checks/agent-reads.js +118 -0
  118. package/dist/_internal/ir-checks/amendments.d.ts +3 -0
  119. package/dist/_internal/ir-checks/amendments.js +21 -0
  120. package/dist/_internal/ir-checks/canonical-json.d.ts +3 -0
  121. package/dist/_internal/ir-checks/canonical-json.js +85 -0
  122. package/dist/_internal/ir-checks/child-parameters.d.ts +2 -0
  123. package/dist/_internal/ir-checks/child-parameters.js +43 -0
  124. package/dist/_internal/ir-checks/clock-bindings.d.ts +3 -0
  125. package/dist/_internal/ir-checks/clock-bindings.js +43 -0
  126. package/dist/_internal/ir-checks/collect-types.d.ts +14 -0
  127. package/dist/_internal/ir-checks/collect-types.js +34 -0
  128. package/dist/_internal/ir-checks/component-operations.d.ts +4 -0
  129. package/dist/_internal/ir-checks/component-operations.js +23 -0
  130. package/dist/_internal/ir-checks/content-digest.d.ts +4 -0
  131. package/dist/_internal/ir-checks/content-digest.js +78 -0
  132. package/dist/_internal/ir-checks/contract-validation.d.ts +3 -0
  133. package/dist/_internal/ir-checks/contract-validation.js +307 -0
  134. package/dist/_internal/ir-checks/contracts.d.ts +25 -0
  135. package/dist/_internal/ir-checks/contracts.js +80 -0
  136. package/dist/_internal/ir-checks/dates.d.ts +2 -0
  137. package/dist/_internal/ir-checks/dates.js +7 -0
  138. package/dist/_internal/ir-checks/documents.d.ts +3 -0
  139. package/dist/_internal/ir-checks/documents.js +45 -0
  140. package/dist/_internal/ir-checks/evidence.d.ts +20 -0
  141. package/dist/_internal/ir-checks/evidence.js +56 -0
  142. package/dist/_internal/ir-checks/files.d.ts +7 -0
  143. package/dist/_internal/ir-checks/files.js +47 -0
  144. package/dist/_internal/ir-checks/index.d.ts +59 -0
  145. package/dist/_internal/ir-checks/index.js +166 -0
  146. package/dist/_internal/ir-checks/instants.d.ts +7 -0
  147. package/dist/_internal/ir-checks/instants.js +61 -0
  148. package/dist/_internal/ir-checks/notices.d.ts +4 -0
  149. package/dist/_internal/ir-checks/notices.js +58 -0
  150. package/dist/_internal/ir-checks/policy-bounds.d.ts +5 -0
  151. package/dist/_internal/ir-checks/policy-bounds.js +28 -0
  152. package/dist/_internal/ir-checks/principals.d.ts +26 -0
  153. package/dist/_internal/ir-checks/principals.js +162 -0
  154. package/dist/_internal/ir-checks/prior-cycle.d.ts +41 -0
  155. package/dist/_internal/ir-checks/prior-cycle.js +21 -0
  156. package/dist/_internal/ir-checks/read-classification.d.ts +12 -0
  157. package/dist/_internal/ir-checks/read-classification.js +67 -0
  158. package/dist/_internal/ir-checks/read-types.d.ts +2 -0
  159. package/dist/_internal/ir-checks/read-types.js +40 -0
  160. package/dist/_internal/ir-checks/resource-proofs.d.ts +4 -0
  161. package/dist/_internal/ir-checks/resource-proofs.js +98 -0
  162. package/dist/_internal/ir-checks/resources.d.ts +3 -0
  163. package/dist/_internal/ir-checks/resources.js +30 -0
  164. package/dist/_internal/ir-checks/reuse.d.ts +10 -0
  165. package/dist/_internal/ir-checks/reuse.js +99 -0
  166. package/dist/_internal/ir-checks/sealing.d.ts +14 -0
  167. package/dist/_internal/ir-checks/sealing.js +123 -0
  168. package/dist/_internal/ir-checks/sensitive-flow.d.ts +4 -0
  169. package/dist/_internal/ir-checks/sensitive-flow.js +240 -0
  170. package/dist/_internal/ir-checks/sensitivity.d.ts +19 -0
  171. package/dist/_internal/ir-checks/sensitivity.js +133 -0
  172. package/dist/_internal/ir-checks/signatures.d.ts +4 -0
  173. package/dist/_internal/ir-checks/signatures.js +22 -0
  174. package/dist/_internal/ir-checks/vaults.d.ts +10 -0
  175. package/dist/_internal/ir-checks/vaults.js +140 -0
  176. package/dist/_internal/protocol/index.d.ts +1234 -0
  177. package/dist/_internal/protocol/index.js +215 -0
  178. package/dist/_internal/reconciler/action-intents.d.ts +17 -0
  179. package/dist/_internal/reconciler/action-intents.js +161 -0
  180. package/dist/_internal/reconciler/actions.d.ts +7 -0
  181. package/dist/_internal/reconciler/actions.js +134 -0
  182. package/dist/_internal/reconciler/amendments.d.ts +12 -0
  183. package/dist/_internal/reconciler/amendments.js +52 -0
  184. package/dist/_internal/reconciler/basis.d.ts +253 -0
  185. package/dist/_internal/reconciler/basis.js +16 -0
  186. package/dist/_internal/reconciler/bundles.d.ts +22 -0
  187. package/dist/_internal/reconciler/bundles.js +110 -0
  188. package/dist/_internal/reconciler/change-detection.d.ts +5 -0
  189. package/dist/_internal/reconciler/change-detection.js +82 -0
  190. package/dist/_internal/reconciler/collection-rules.d.ts +7 -0
  191. package/dist/_internal/reconciler/collection-rules.js +46 -0
  192. package/dist/_internal/reconciler/collection-state.d.ts +11 -0
  193. package/dist/_internal/reconciler/collection-state.js +62 -0
  194. package/dist/_internal/reconciler/collection-values.d.ts +5 -0
  195. package/dist/_internal/reconciler/collection-values.js +60 -0
  196. package/dist/_internal/reconciler/collections.d.ts +35 -0
  197. package/dist/_internal/reconciler/collections.js +141 -0
  198. package/dist/_internal/reconciler/commands.d.ts +60 -0
  199. package/dist/_internal/reconciler/commands.js +468 -0
  200. package/dist/_internal/reconciler/component-operations.d.ts +48 -0
  201. package/dist/_internal/reconciler/component-operations.js +256 -0
  202. package/dist/_internal/reconciler/context.d.ts +38 -0
  203. package/dist/_internal/reconciler/context.js +44 -0
  204. package/dist/_internal/reconciler/coverage.d.ts +31 -0
  205. package/dist/_internal/reconciler/coverage.js +124 -0
  206. package/dist/_internal/reconciler/dates.d.ts +38 -0
  207. package/dist/_internal/reconciler/dates.js +121 -0
  208. package/dist/_internal/reconciler/decide.d.ts +25 -0
  209. package/dist/_internal/reconciler/decide.js +263 -0
  210. package/dist/_internal/reconciler/decision-evaluation.d.ts +9 -0
  211. package/dist/_internal/reconciler/decision-evaluation.js +67 -0
  212. package/dist/_internal/reconciler/decision-records.d.ts +14 -0
  213. package/dist/_internal/reconciler/decision-records.js +77 -0
  214. package/dist/_internal/reconciler/decision-release.d.ts +3 -0
  215. package/dist/_internal/reconciler/decision-release.js +12 -0
  216. package/dist/_internal/reconciler/dependencies.d.ts +179 -0
  217. package/dist/_internal/reconciler/dependencies.js +372 -0
  218. package/dist/_internal/reconciler/discovery.d.ts +9 -0
  219. package/dist/_internal/reconciler/discovery.js +65 -0
  220. package/dist/_internal/reconciler/document-corrections.d.ts +18 -0
  221. package/dist/_internal/reconciler/document-corrections.js +59 -0
  222. package/dist/_internal/reconciler/documents.d.ts +26 -0
  223. package/dist/_internal/reconciler/documents.js +88 -0
  224. package/dist/_internal/reconciler/effective.d.ts +6 -0
  225. package/dist/_internal/reconciler/effective.js +17 -0
  226. package/dist/_internal/reconciler/escalations.d.ts +4 -0
  227. package/dist/_internal/reconciler/escalations.js +76 -0
  228. package/dist/_internal/reconciler/evaluation.d.ts +56 -0
  229. package/dist/_internal/reconciler/evaluation.js +704 -0
  230. package/dist/_internal/reconciler/evidence-authority.d.ts +6 -0
  231. package/dist/_internal/reconciler/evidence-authority.js +70 -0
  232. package/dist/_internal/reconciler/evidence-history.d.ts +5 -0
  233. package/dist/_internal/reconciler/evidence-history.js +22 -0
  234. package/dist/_internal/reconciler/evidence-validity.d.ts +17 -0
  235. package/dist/_internal/reconciler/evidence-validity.js +135 -0
  236. package/dist/_internal/reconciler/fact-validation.d.ts +5 -0
  237. package/dist/_internal/reconciler/fact-validation.js +49 -0
  238. package/dist/_internal/reconciler/files.d.ts +9 -0
  239. package/dist/_internal/reconciler/files.js +56 -0
  240. package/dist/_internal/reconciler/graph.d.ts +40 -0
  241. package/dist/_internal/reconciler/graph.js +298 -0
  242. package/dist/_internal/reconciler/holds.d.ts +6 -0
  243. package/dist/_internal/reconciler/holds.js +18 -0
  244. package/dist/_internal/reconciler/home-definitions.d.ts +11 -0
  245. package/dist/_internal/reconciler/home-definitions.js +25 -0
  246. package/dist/_internal/reconciler/homes.d.ts +6 -0
  247. package/dist/_internal/reconciler/homes.js +32 -0
  248. package/dist/_internal/reconciler/index.d.ts +42 -0
  249. package/dist/_internal/reconciler/index.js +58 -0
  250. package/dist/_internal/reconciler/instants.d.ts +17 -0
  251. package/dist/_internal/reconciler/instants.js +56 -0
  252. package/dist/_internal/reconciler/interaction-fields.d.ts +10 -0
  253. package/dist/_internal/reconciler/interaction-fields.js +30 -0
  254. package/dist/_internal/reconciler/invariants.d.ts +8 -0
  255. package/dist/_internal/reconciler/invariants.js +34 -0
  256. package/dist/_internal/reconciler/journal.d.ts +3 -0
  257. package/dist/_internal/reconciler/journal.js +4 -0
  258. package/dist/_internal/reconciler/linking.d.ts +10 -0
  259. package/dist/_internal/reconciler/linking.js +259 -0
  260. package/dist/_internal/reconciler/memory.d.ts +32 -0
  261. package/dist/_internal/reconciler/memory.js +190 -0
  262. package/dist/_internal/reconciler/milestones.d.ts +7 -0
  263. package/dist/_internal/reconciler/milestones.js +58 -0
  264. package/dist/_internal/reconciler/missing.d.ts +18 -0
  265. package/dist/_internal/reconciler/missing.js +79 -0
  266. package/dist/_internal/reconciler/model.d.ts +350 -0
  267. package/dist/_internal/reconciler/model.js +9 -0
  268. package/dist/_internal/reconciler/notices.d.ts +14 -0
  269. package/dist/_internal/reconciler/notices.js +80 -0
  270. package/dist/_internal/reconciler/occurrences.d.ts +3 -0
  271. package/dist/_internal/reconciler/occurrences.js +30 -0
  272. package/dist/_internal/reconciler/outputs.d.ts +12 -0
  273. package/dist/_internal/reconciler/outputs.js +132 -0
  274. package/dist/_internal/reconciler/parameters.d.ts +4 -0
  275. package/dist/_internal/reconciler/parameters.js +27 -0
  276. package/dist/_internal/reconciler/policies.d.ts +22 -0
  277. package/dist/_internal/reconciler/policies.js +94 -0
  278. package/dist/_internal/reconciler/policy-edits.d.ts +11 -0
  279. package/dist/_internal/reconciler/policy-edits.js +42 -0
  280. package/dist/_internal/reconciler/policy-linking.d.ts +4 -0
  281. package/dist/_internal/reconciler/policy-linking.js +104 -0
  282. package/dist/_internal/reconciler/principal-types.d.ts +2 -0
  283. package/dist/_internal/reconciler/principal-types.js +38 -0
  284. package/dist/_internal/reconciler/prior-decisions.d.ts +3 -0
  285. package/dist/_internal/reconciler/prior-decisions.js +34 -0
  286. package/dist/_internal/reconciler/projections.d.ts +4 -0
  287. package/dist/_internal/reconciler/projections.js +85 -0
  288. package/dist/_internal/reconciler/proofs.d.ts +9 -0
  289. package/dist/_internal/reconciler/proofs.js +24 -0
  290. package/dist/_internal/reconciler/properties.d.ts +25 -0
  291. package/dist/_internal/reconciler/properties.js +67 -0
  292. package/dist/_internal/reconciler/property-eval.d.ts +5 -0
  293. package/dist/_internal/reconciler/property-eval.js +101 -0
  294. package/dist/_internal/reconciler/property-generator.d.ts +9 -0
  295. package/dist/_internal/reconciler/property-generator.js +288 -0
  296. package/dist/_internal/reconciler/property-shrink.d.ts +14 -0
  297. package/dist/_internal/reconciler/property-shrink.js +183 -0
  298. package/dist/_internal/reconciler/provenance.d.ts +8 -0
  299. package/dist/_internal/reconciler/provenance.js +61 -0
  300. package/dist/_internal/reconciler/reconcile.d.ts +32 -0
  301. package/dist/_internal/reconciler/reconcile.js +164 -0
  302. package/dist/_internal/reconciler/recurrence.d.ts +9 -0
  303. package/dist/_internal/reconciler/recurrence.js +44 -0
  304. package/dist/_internal/reconciler/requirements.d.ts +5 -0
  305. package/dist/_internal/reconciler/requirements.js +331 -0
  306. package/dist/_internal/reconciler/resource-generation.d.ts +9 -0
  307. package/dist/_internal/reconciler/resource-generation.js +17 -0
  308. package/dist/_internal/reconciler/resource-scenarios.d.ts +26 -0
  309. package/dist/_internal/reconciler/resource-scenarios.js +78 -0
  310. package/dist/_internal/reconciler/resources.d.ts +24 -0
  311. package/dist/_internal/reconciler/resources.js +178 -0
  312. package/dist/_internal/reconciler/result-digest.d.ts +13 -0
  313. package/dist/_internal/reconciler/result-digest.js +66 -0
  314. package/dist/_internal/reconciler/reuse.d.ts +16 -0
  315. package/dist/_internal/reconciler/reuse.js +119 -0
  316. package/dist/_internal/reconciler/scenarios.d.ts +32 -0
  317. package/dist/_internal/reconciler/scenarios.js +442 -0
  318. package/dist/_internal/reconciler/scheduling.d.ts +9 -0
  319. package/dist/_internal/reconciler/scheduling.js +203 -0
  320. package/dist/_internal/reconciler/sha256.d.ts +1 -0
  321. package/dist/_internal/reconciler/sha256.js +1 -0
  322. package/dist/_internal/reconciler/signatures.d.ts +13 -0
  323. package/dist/_internal/reconciler/signatures.js +37 -0
  324. package/dist/_internal/reconciler/temporal.d.ts +10 -0
  325. package/dist/_internal/reconciler/temporal.js +46 -0
  326. package/dist/_internal/reconciler/upgrades.d.ts +6 -0
  327. package/dist/_internal/reconciler/upgrades.js +65 -0
  328. package/dist/_internal/reconciler/wire.d.ts +2 -0
  329. package/dist/_internal/reconciler/wire.js +5 -0
  330. package/dist/_internal/reconciler/work.d.ts +32 -0
  331. package/dist/_internal/reconciler/work.js +101 -0
  332. package/dist/_internal/world-ir/schema.generated.d.ts +180 -0
  333. package/dist/_internal/world-ir/schema.generated.js +1127 -0
  334. package/dist/_internal/world-ir/types.generated.d.ts +1011 -0
  335. package/dist/_internal/world-ir/types.generated.js +1 -0
  336. package/dist/authoring.d.ts +9 -0
  337. package/dist/authoring.js +10 -0
  338. package/dist/catalogue.d.ts +20 -0
  339. package/dist/catalogue.js +531 -0
  340. package/dist/cli.d.ts +2 -0
  341. package/dist/cli.js +553 -0
  342. package/dist/codegen.d.ts +6 -0
  343. package/dist/codegen.js +89 -0
  344. package/dist/coverage.d.ts +60 -0
  345. package/dist/coverage.js +128 -0
  346. package/dist/deploy.d.ts +21 -0
  347. package/dist/deploy.js +72 -0
  348. package/dist/diagnostics.d.ts +9 -0
  349. package/dist/diagnostics.js +37 -0
  350. package/dist/diff.d.ts +17 -0
  351. package/dist/diff.js +19 -0
  352. package/dist/durable-object.d.ts +14 -0
  353. package/dist/durable-object.js +30 -0
  354. package/dist/explain.d.ts +113 -0
  355. package/dist/explain.js +225 -0
  356. package/dist/fixes.d.ts +4 -0
  357. package/dist/fixes.js +70 -0
  358. package/dist/fmt.d.ts +12 -0
  359. package/dist/fmt.js +39 -0
  360. package/dist/handle/open.d.ts +18 -0
  361. package/dist/handle/open.js +28 -0
  362. package/dist/handle/protocol.d.ts +12 -0
  363. package/dist/handle/protocol.js +96 -0
  364. package/dist/handle/store.d.ts +31 -0
  365. package/dist/handle/store.js +11 -0
  366. package/dist/handle/types.d.ts +37 -0
  367. package/dist/handle/types.js +1 -0
  368. package/dist/handle/world.d.ts +190 -0
  369. package/dist/handle/world.js +533 -0
  370. package/dist/http.d.ts +3 -0
  371. package/dist/http.js +72 -0
  372. package/dist/impact.d.ts +21 -0
  373. package/dist/impact.js +57 -0
  374. package/dist/index.d.ts +30 -0
  375. package/dist/index.js +43 -0
  376. package/dist/init.d.ts +13 -0
  377. package/dist/init.js +99 -0
  378. package/dist/ir-schema.json +4213 -0
  379. package/dist/lints.d.ts +8 -0
  380. package/dist/lints.js +154 -0
  381. package/dist/lsp.d.ts +14 -0
  382. package/dist/lsp.js +380 -0
  383. package/dist/manual/catalog.d.ts +12 -0
  384. package/dist/manual/catalog.js +23 -0
  385. package/dist/manual/examples.d.ts +15 -0
  386. package/dist/manual/examples.js +39 -0
  387. package/dist/manual/projections.d.ts +77 -0
  388. package/dist/manual/projections.js +344 -0
  389. package/dist/manual/prose.d.ts +19 -0
  390. package/dist/manual/prose.js +215 -0
  391. package/dist/manual/render.d.ts +76 -0
  392. package/dist/manual/render.js +250 -0
  393. package/dist/manual/text.d.ts +7 -0
  394. package/dist/manual/text.js +15 -0
  395. package/dist/mcp.d.ts +32 -0
  396. package/dist/mcp.js +269 -0
  397. package/dist/mutate.d.ts +36 -0
  398. package/dist/mutate.js +123 -0
  399. package/dist/project.d.ts +26 -0
  400. package/dist/project.js +80 -0
  401. package/dist/refine.d.ts +18 -0
  402. package/dist/refine.js +197 -0
  403. package/dist/release/diff.d.ts +45 -0
  404. package/dist/release/diff.js +103 -0
  405. package/dist/release/impact.d.ts +83 -0
  406. package/dist/release/impact.js +214 -0
  407. package/dist/release/nodes.d.ts +20 -0
  408. package/dist/release/nodes.js +118 -0
  409. package/dist/render.d.ts +19 -0
  410. package/dist/render.js +43 -0
  411. package/dist/serve.d.ts +18 -0
  412. package/dist/serve.js +140 -0
  413. package/dist/snapshot.d.ts +19 -0
  414. package/dist/snapshot.js +45 -0
  415. package/dist/sqlite.d.ts +16 -0
  416. package/dist/sqlite.js +151 -0
  417. package/dist/test.d.ts +54 -0
  418. package/dist/test.js +131 -0
  419. package/dist/world.d.ts +7 -0
  420. package/dist/world.js +5 -0
  421. package/docs/authoring/vendor-risk/example.forma +11 -0
  422. package/docs/authoring/vendor-risk/library/vendor.forma +76 -0
  423. package/docs/authoring/vendor-risk/scenarios/reviews.forma +107 -0
  424. package/docs/protocol.md +195 -0
  425. package/docs/reference.md +258 -0
  426. package/package.json +81 -3
@@ -0,0 +1,6 @@
1
+ import type { Cx } from "./model.js";
2
+ /** A declared signer is an additional restriction, never a replacement for assignment. */
3
+ export declare const canAttestEvidence: (cx: Cx, type: string, actor: {
4
+ readonly id: string;
5
+ readonly groups: readonly string[];
6
+ }) => boolean;
@@ -0,0 +1,70 @@
1
+ import { evaluateIn } from "./evaluation.js";
2
+ /** A declared signer is an additional restriction, never a replacement for assignment. */
3
+ export const canAttestEvidence = (cx, type, actor) => {
4
+ const evidence = cx.p.evidence.get(type);
5
+ if (!evidence || evidence.of !== cx.inst?.component)
6
+ return false;
7
+ const signer = evidence.attest?.signer;
8
+ if (signer === undefined || signer === "assignee")
9
+ return true;
10
+ const [root, ...path] = signer.split(".");
11
+ const component = cx.p.components.get(cx.inst.component);
12
+ let declared = component.inputs.find((f) => f.name === root)?.type;
13
+ let expr = { k: "var", name: root, at: evidence.at };
14
+ const unwrap = (type) => {
15
+ const seen = new Set();
16
+ while (type !== undefined) {
17
+ if (Array.isArray(type) && (type[0] === "Option" || type[0] === "Brand")) {
18
+ type = type[1];
19
+ }
20
+ else if (typeof type === "string") {
21
+ const alias = cx.p.ir.types.find((a) => a.name === type);
22
+ if (!alias)
23
+ return type;
24
+ if (seen.has(type))
25
+ return undefined;
26
+ seen.add(type);
27
+ type = alias.type;
28
+ }
29
+ else
30
+ return type;
31
+ }
32
+ return undefined;
33
+ };
34
+ for (const field of path) {
35
+ const ref = unwrap(declared);
36
+ if (!Array.isArray(ref) || ref[0] !== "Id" || typeof ref[1] !== "string")
37
+ return false;
38
+ const owner = ref[1];
39
+ const nested = cx.p.components.get(owner);
40
+ if (nested) {
41
+ declared = nested.inputs.find((f) => f.name === field)?.type;
42
+ expr = { k: "inst", of: expr, field, at: evidence.at };
43
+ continue;
44
+ }
45
+ const role = cx.p.ir.roles.find((r) => r.name === owner);
46
+ const entity = cx.p.ir.entities.find((e) => e.name === owner);
47
+ declared = (role ?? entity)?.fields.find((f) => f.name === field)?.type;
48
+ const attrs = role
49
+ ? cx.p.bindings.get(`${owner}.${field}`)?.attrs
50
+ : entity?.fields.some((f) => f.name === field)
51
+ ? [`${entity.ns}/${field}`]
52
+ : undefined;
53
+ if (!attrs?.length)
54
+ return false;
55
+ for (const attr of attrs)
56
+ expr = { k: "attr", of: expr, attr, meta: { path: signer }, at: evidence.at };
57
+ }
58
+ const resolved = unwrap(declared);
59
+ // Unknown, malformed and non-principal declarations cannot grant signing authority.
60
+ if (resolved !== "Group" &&
61
+ !(Array.isArray(resolved) &&
62
+ resolved[0] === "Id" &&
63
+ (cx.p.ir.roles.some((r) => r.name === resolved[1]) ||
64
+ cx.p.ir.entities.some((e) => e.name === resolved[1]))))
65
+ return false;
66
+ const value = evaluateIn(cx, expr);
67
+ return (typeof value === "string" &&
68
+ value.length > 0 &&
69
+ (resolved === "Group" ? actor.groups.includes(value) : actor.id === value));
70
+ };
@@ -0,0 +1,5 @@
1
+ import type { Basis, EvidenceRecord } from "./basis.js";
2
+ export declare const evidenceOccurrences: (record: EvidenceRecord) => readonly string[];
3
+ /** A damaged replacement cannot make the version it superseded standing again. */
4
+ export declare const supersededEvidence: (records: readonly EvidenceRecord[]) => ReadonlySet<string>;
5
+ export declare const evidenceSuperseded: (basis: Basis, record: EvidenceRecord) => boolean;
@@ -0,0 +1,22 @@
1
+ import { timeOrder } from "./instants.js";
2
+ export const evidenceOccurrences = (record) => [...new Set([record.occurrence, ...(record.occurrences ?? [])])].sort();
3
+ /** A damaged replacement cannot make the version it superseded standing again. */
4
+ export const supersededEvidence = (records) => {
5
+ const ids = new Map(records.map((record, index) => [record.id, { record, index }])), superseded = new Set();
6
+ records.forEach((record, index) => {
7
+ const link = record.amendment, previous = link && ids.get(link.previous);
8
+ if (record.status === "attested" &&
9
+ link &&
10
+ previous &&
11
+ previous.index < index &&
12
+ link.reason.trim() &&
13
+ link.reason.length <= 2000 &&
14
+ record.type === previous.record.type &&
15
+ timeOrder(previous.record.at, record.at) <= 0 &&
16
+ JSON.stringify(evidenceOccurrences(record)) ===
17
+ JSON.stringify(evidenceOccurrences(previous.record)))
18
+ superseded.add(link.previous);
19
+ });
20
+ return superseded;
21
+ };
22
+ export const evidenceSuperseded = (basis, record) => supersededEvidence(basis.evidence(record.occurrence)).has(record.id);
@@ -0,0 +1,17 @@
1
+ import type * as IR from "../world-ir/types.generated.js";
2
+ import type { EvidenceRecord } from "./basis.js";
3
+ import { type LocalDate } from "./dates.js";
4
+ import { type Cx, type RenewalResult, type Value } from "./model.js";
5
+ interface Validity {
6
+ readonly value: Value;
7
+ readonly record: EvidenceRecord | null;
8
+ readonly expiresAt: LocalDate | null;
9
+ readonly unknown: string | null;
10
+ }
11
+ /** Attestation remains historical; validity additionally queries the signed expiry. */
12
+ export declare const readValidity: (cx: Cx, type: string) => Validity;
13
+ /** Validate a specifically referenced signed record without widening an occurrence's evidence. */
14
+ export declare const recordValidity: (cx: Cx, type: string, record: EvidenceRecord) => Validity;
15
+ /** One replacement challenge per deadline, including when the deadline has passed. */
16
+ export declare const readRenewal: (cx: Cx, requirement: IR.Requirement, occurrence: string) => RenewalResult | null;
17
+ export {};
@@ -0,0 +1,135 @@
1
+ import { localDateAt, timeOrder } from "./instants.js";
2
+ import { isLocalDate, sensitivePayload } from "../ir-checks/index.js";
3
+ import { addDays, addYears } from "./dates.js";
4
+ import { attested, evaluateIn, isUnknown, vars } from "./evaluation.js";
5
+ import { Unknown, } from "./model.js";
6
+ const fieldValue = (p, type, value, seen = new Set()) => {
7
+ if (value === undefined || value.trim() === "")
8
+ return new Unknown("signed field is missing");
9
+ const payload = sensitivePayload(type);
10
+ if (payload)
11
+ return fieldValue(p, payload, value, seen);
12
+ if (Array.isArray(type) && ["Option", "Brand"].includes(String(type[0])))
13
+ return fieldValue(p, type[1], value, seen);
14
+ if (typeof type === "string") {
15
+ const alias = p.ir.types.find((a) => a.name === type);
16
+ if (alias) {
17
+ if (seen.has(type))
18
+ return new Unknown("cyclic field type");
19
+ return fieldValue(p, alias.type, value, new Set([...seen, type]));
20
+ }
21
+ if (type === "Bool")
22
+ return value === "true"
23
+ ? true
24
+ : value === "false"
25
+ ? false
26
+ : new Unknown("invalid signed Boolean");
27
+ if (type === "Int" || type === "Float") {
28
+ const n = Number(value);
29
+ return Number.isFinite(n) && (type !== "Int" || Number.isSafeInteger(n))
30
+ ? n
31
+ : new Unknown("invalid signed number");
32
+ }
33
+ }
34
+ return value;
35
+ };
36
+ /** Attestation remains historical; validity additionally queries the signed expiry. */
37
+ export const readValidity = (cx, type) => {
38
+ const trace = cx.trace ?? { steps: [] }, probe = { ...cx, trace };
39
+ const signed = attested(probe, type), record = signed === true ? (trace.witness?.evidence ?? null) : null;
40
+ if (!record)
41
+ return { value: false, record: null, expiresAt: null, unknown: null };
42
+ return recordValidity({ ...cx, trace }, type, record);
43
+ };
44
+ /** Validate a specifically referenced signed record without widening an occurrence's evidence. */
45
+ export const recordValidity = (cx, type, record) => {
46
+ const trace = cx.trace ?? { steps: [] };
47
+ trace.witness ??= {
48
+ evidence: record,
49
+ type,
50
+ via: "evidence",
51
+ detail: `${cx.p.evidence.get(type).label ?? type} attested by ${record.by} on ${record.at}`,
52
+ };
53
+ const probe = { ...cx, trace };
54
+ const definition = cx.p.evidence.get(type);
55
+ if (!definition.expires)
56
+ return { value: true, record, expiresAt: null, unknown: null };
57
+ const env = vars([
58
+ // The signing date; a declared field named signed-on overrides it below.
59
+ ["signed-on", localDateAt(record.at)],
60
+ ...definition.fields.map((field) => {
61
+ const raw = Object.hasOwn(record.values, field.name) ? record.values[field.name] : undefined;
62
+ const value = fieldValue(cx.p, field.type, raw);
63
+ return [
64
+ field.name,
65
+ isUnknown(value) ? new Unknown(`${field.name}: ${value.why}`) : value,
66
+ ];
67
+ }),
68
+ ]);
69
+ let expiry;
70
+ try {
71
+ expiry = evaluateIn({ ...probe, env }, definition.expires);
72
+ }
73
+ catch (error) {
74
+ if (!(error instanceof RangeError))
75
+ throw error;
76
+ expiry = new Unknown("expiry is outside the supported calendar");
77
+ }
78
+ if (!isLocalDate(expiry)) {
79
+ const why = `${definition.label ?? type} expiry is unknown: ${isUnknown(expiry) ? expiry.why : "invalid local date"}`;
80
+ trace.witness = { ...trace.witness, detail: why };
81
+ return { value: new Unknown(why), record, expiresAt: null, unknown: why };
82
+ }
83
+ cx.temporal?.add(expiry);
84
+ const value = timeOrder(cx.b.now, expiry) < 0;
85
+ trace.witness = {
86
+ ...trace.witness,
87
+ detail: `${trace.witness.detail}; ${value ? "valid until" : "expired on"} ${expiry} (exclusive)`,
88
+ };
89
+ return { value, record, expiresAt: expiry, unknown: null };
90
+ };
91
+ /** One replacement challenge per deadline, including when the deadline has passed. */
92
+ export const readRenewal = (cx, requirement, occurrence) => {
93
+ if (!requirement.renewWithin ||
94
+ requirement.satisfiedBy.k !== "call" ||
95
+ requirement.satisfiedBy.fn !== "valid")
96
+ return null;
97
+ const ref = requirement.satisfiedBy.args[0];
98
+ if (ref?.k !== "ref" || ref.kind !== "evidence")
99
+ return null;
100
+ const validity = readValidity({ ...cx, occurrence, trace: { steps: [] } }, ref.name);
101
+ if (!validity.record)
102
+ return null;
103
+ const { n, unit } = requirement.renewWithin;
104
+ if (!validity.expiresAt || !Number.isSafeInteger(n) || n < 0)
105
+ return {
106
+ evidence: validity.record.id,
107
+ expiresAt: validity.expiresAt,
108
+ availableAt: null,
109
+ state: "unknown",
110
+ unknown: validity.unknown ?? "Invalid renewal window",
111
+ };
112
+ let availableAt;
113
+ try {
114
+ const shifted = unit === "years" ? addYears(validity.expiresAt, -n) : addDays(validity.expiresAt, -n);
115
+ // Subtracting a nonnegative duration can only overflow below the supported calendar.
116
+ availableAt = isLocalDate(shifted) ? shifted : "0000-01-01";
117
+ }
118
+ catch (error) {
119
+ if (!(error instanceof RangeError))
120
+ throw error;
121
+ availableAt = "0000-01-01";
122
+ }
123
+ cx.temporal?.add(availableAt);
124
+ return {
125
+ evidence: validity.record.id,
126
+ expiresAt: validity.expiresAt,
127
+ availableAt,
128
+ state: timeOrder(cx.b.now, validity.expiresAt) >= 0
129
+ ? "expired"
130
+ : timeOrder(cx.b.now, availableAt) >= 0
131
+ ? "ready"
132
+ : "waiting",
133
+ unknown: null,
134
+ };
135
+ };
@@ -0,0 +1,5 @@
1
+ import type { Scalar } from "./basis.js";
2
+ import { type World } from "./memory.js";
3
+ import type { Program } from "./model.js";
4
+ /** Only scalar facts whose declared types can be checked are admitted by the first host. */
5
+ export declare const validFact: (program: Program, world: World, subject: string, attribute: string, value: Scalar | null, now: string) => boolean;
@@ -0,0 +1,49 @@
1
+ import { sensitivePayload } from "../ir-checks/index.js";
2
+ import { factFileAllowed, fileDigest } from "./files.js";
3
+ import { basis } from "./memory.js";
4
+ /** Only scalar facts whose declared types can be checked are admitted by the first host. */
5
+ export const validFact = (program, world, subject, attribute, value, now) => {
6
+ const entity = [...program.entities.values()].find((e) => e.ns.split(".")[0] === program.account.package.name && attribute.startsWith(e.ns + "/")), field = entity?.fields.find((f) => f.attr === attribute), existing = basis(world, now).nsOf(subject);
7
+ if (!field || (existing && existing !== entity.ns))
8
+ return false;
9
+ if (value === null)
10
+ return true;
11
+ if (!factFileAllowed(program, basis(world, now), subject, attribute, value))
12
+ return false;
13
+ const valid = (type, seen = new Set()) => {
14
+ if (typeof type === "string") {
15
+ const alias = program.ir.types.find((a) => a.name === type);
16
+ if (alias && !seen.has(type))
17
+ return valid(alias.type, new Set([...seen, type]));
18
+ if (type.startsWith(":"))
19
+ return value === type.slice(1);
20
+ if (["String", "Keyword", "Group"].includes(type))
21
+ return typeof value === "string";
22
+ if (type === "File")
23
+ return fileDigest(value);
24
+ if (type === "Bool")
25
+ return typeof value === "boolean";
26
+ if (type === "Int")
27
+ return typeof value === "number" && Number.isSafeInteger(value);
28
+ if (type === "Date")
29
+ return (typeof value === "string" &&
30
+ /^\d{4}-\d{2}-\d{2}$/.test(value) &&
31
+ Number.isFinite(Date.parse(value)) &&
32
+ new Date(value).toISOString().slice(0, 10) === value);
33
+ if (type === "Instant")
34
+ return (typeof value === "string" &&
35
+ /^\d{4}-\d{2}-\d{2}T/.test(value) &&
36
+ Number.isFinite(Date.parse(value)));
37
+ return false;
38
+ }
39
+ const payload = sensitivePayload(type);
40
+ if (payload)
41
+ return valid(payload, seen);
42
+ if (type[0] === "Option" || type[0] === "Brand")
43
+ return valid(type[1], seen);
44
+ if (type[0] === "Union")
45
+ return type.slice(1).some((t) => valid(t, seen));
46
+ return type[0] === "Id" && typeof value === "string" && value.length > 0;
47
+ };
48
+ return valid(field.type);
49
+ };
@@ -0,0 +1,9 @@
1
+ import type * as IR from "../world-ir/types.generated.js";
2
+ import type { Basis, Scalar } from "./basis.js";
3
+ import type { Program, Cx } from "./model.js";
4
+ export { fileDigest } from "../ir-checks/index.js";
5
+ /** Pure metadata admission; neither a digest nor a signed snapshot grants byte access. */
6
+ export declare const fileAllowed: (p: Program, b: Basis, home: string, field: IR.Field, value: Scalar) => boolean;
7
+ export declare const evidenceFilesAllowed: (p: Program, b: Basis, home: string | undefined, type: string, values: Readonly<Record<string, Scalar>>) => boolean;
8
+ export declare const signedFilesAllowed: (cx: Cx, type: string, values: Readonly<Record<string, string>>) => boolean;
9
+ export declare const factFileAllowed: (p: Program, b: Basis, home: string, attribute: string, value: Scalar) => boolean;
@@ -0,0 +1,56 @@
1
+ import { fileDigest, fileShape, sensitivePayload } from "../ir-checks/index.js";
2
+ import { occurrenceHome } from "./homes.js";
3
+ export { fileDigest } from "../ir-checks/index.js";
4
+ /** Pure metadata admission; neither a digest nor a signed snapshot grants byte access. */
5
+ export const fileAllowed = (p, b, home, field, value) => {
6
+ if (fileShape(field.type, p.ir.types) !== "file")
7
+ return true;
8
+ if (!field.file || !fileDigest(value))
9
+ return false;
10
+ const record = b.file?.(p.account.name, home, value);
11
+ return (!!record &&
12
+ record.scan === "clean" &&
13
+ record.redacted === false &&
14
+ Number.isSafeInteger(record.size) &&
15
+ record.size >= 0 &&
16
+ record.size <= field.file.maxBytes &&
17
+ field.file.accept.includes(record.mediaType));
18
+ };
19
+ const optionalFile = (p, type, seen = new Set()) => {
20
+ if (Array.isArray(type)) {
21
+ const payload = sensitivePayload(type);
22
+ return payload
23
+ ? optionalFile(p, payload, seen)
24
+ : type[0] === "Option" || (type[0] === "Brand" && optionalFile(p, type[1], seen));
25
+ }
26
+ if (typeof type !== "string" || seen.has(type))
27
+ return false;
28
+ const alias = p.ir.types.find((a) => a.name === type);
29
+ return !!alias && optionalFile(p, alias.type, new Set([...seen, type]));
30
+ };
31
+ export const evidenceFilesAllowed = (p, b, home, type, values) => (p.evidence.get(type)?.fields ?? []).every((field) => fileShape(field.type, p.ir.types) !== "file" ||
32
+ (values[field.name] === undefined || values[field.name] === ""
33
+ ? optionalFile(p, field.type)
34
+ : !!home && fileAllowed(p, b, home, field, values[field.name])));
35
+ export const signedFilesAllowed = (cx, type, values) => {
36
+ if (!(cx.p.evidence.get(type)?.fields ?? []).some((f) => fileShape(f.type, cx.p.ir.types) === "file"))
37
+ return true;
38
+ const home = cx.inst && cx.k ? occurrenceHome(cx.p, cx.inst, cx.k.instances)?.id : undefined;
39
+ return evidenceFilesAllowed(cx.p, cx.b, home, type, values);
40
+ };
41
+ export const factFileAllowed = (p, b, home, attribute, value) => {
42
+ const field = p.entities
43
+ .get(attribute.slice(0, attribute.indexOf("/")))
44
+ ?.fields.find((f) => f.attr === attribute);
45
+ if (field && !fileAllowed(p, b, home, field, value))
46
+ return false;
47
+ for (const role of p.ir.roles)
48
+ for (const rf of role.fields) {
49
+ const binding = p.bindings.get(`${role.name}.${rf.name}`);
50
+ if (binding?.attrs.length === 1 &&
51
+ binding.attrs[0] === attribute &&
52
+ !fileAllowed(p, b, home, rf, value))
53
+ return false;
54
+ }
55
+ return true;
56
+ };
@@ -0,0 +1,40 @@
1
+ import { type EvaluationContext } from "./context.js";
2
+ import { ReadSet } from "./dependencies.js";
3
+ import type * as IR from "../world-ir/types.generated.js";
4
+ import { type ChildSlot, type Cx, type Instance, type Program, type Truth, Unknown, type Value } from "./model.js";
5
+ export declare const rankCache: WeakMap<Program, ReadonlyMap<string, number> | null>;
6
+ export declare const componentRanks: (p: Program) => ReadonlyMap<string, number> | null;
7
+ export declare const make: (ctx: EvaluationContext, p: Program, component: string, key: readonly Value[], inputs: ReadonlyMap<string, Value>, cycle: number, parameters?: ReadonlyMap<string, Value>) => Instance;
8
+ export declare const truthOf: (cx: Cx, e: IR.Expr | undefined) => {
9
+ truth: Truth;
10
+ reason: string;
11
+ };
12
+ export declare const bindKey: (ctx: EvaluationContext, cx: Cx, slot: IR.Slot, child: IR.Component) => {
13
+ inputs: Map<string, Value>;
14
+ key: (string | number | boolean | Unknown | readonly Value[] | import("./model.js").InstRef | import("./model.js").MachineRef | import("./model.js").Duration | import("./model.js").Ref | import("./model.js").Closure)[];
15
+ };
16
+ export declare const unresolvedKey: (parent: Instance, slot: ChildSlot, key: readonly Value[]) => boolean;
17
+ export declare const cyclesOf: (ctx: EvaluationContext, p: Program, component: IR.Component, attached: readonly string[], inputs: ReadonlyMap<string, Value>, reads: ReadSet, parameters?: ReadonlyMap<string, Value>) => (readonly string[])[];
18
+ export declare const slotFor: (slot: IR.Slot, applies: {
19
+ truth: Truth;
20
+ reason: string;
21
+ }) => ChildSlot;
22
+ export declare const membersOf: (group: Group) => readonly string[];
23
+ interface Group {
24
+ id: string;
25
+ p: Program;
26
+ component: IR.Component;
27
+ key: readonly Value[];
28
+ inputs: ReadonlyMap<string, Value>;
29
+ members: Set<string>;
30
+ links: Array<{
31
+ parent: Instance;
32
+ slot: ChildSlot;
33
+ members: readonly string[];
34
+ with?: IR.Slot["with"];
35
+ }>;
36
+ resolved: Instance[];
37
+ root: boolean;
38
+ }
39
+ export declare const buildInstanceGraph: (ctx: EvaluationContext) => void;
40
+ export {};