perttool 0.7.0 → 0.8.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 (231) hide show
  1. package/CHANGELOG.md +55 -1
  2. package/README.md +113 -22
  3. package/dist/actuals/lifecycle.d.ts +6 -20
  4. package/dist/actuals/lifecycle.d.ts.map +1 -1
  5. package/dist/actuals/lifecycle.js +5 -176
  6. package/dist/actuals/lifecycle.js.map +1 -1
  7. package/dist/actuals/reduction.d.ts +20 -0
  8. package/dist/actuals/reduction.d.ts.map +1 -0
  9. package/dist/actuals/reduction.js +175 -0
  10. package/dist/actuals/reduction.js.map +1 -0
  11. package/dist/analysis/service.d.ts +33 -0
  12. package/dist/analysis/service.d.ts.map +1 -0
  13. package/dist/analysis/service.js +153 -0
  14. package/dist/analysis/service.js.map +1 -0
  15. package/dist/analysis/target-temporal-input.d.ts +88 -0
  16. package/dist/analysis/target-temporal-input.d.ts.map +1 -0
  17. package/dist/analysis/target-temporal-input.js +249 -0
  18. package/dist/analysis/target-temporal-input.js.map +1 -0
  19. package/dist/analysis/temporal-deadline.d.ts +1 -1
  20. package/dist/analysis/temporal-deadline.d.ts.map +1 -1
  21. package/dist/analysis/temporal-precedence.d.ts +1 -1
  22. package/dist/analysis/temporal-precedence.d.ts.map +1 -1
  23. package/dist/analysis/temporal-precedence.js +1 -1
  24. package/dist/analysis/temporal-precedence.js.map +1 -1
  25. package/dist/analysis/temporal-resource.d.ts +1 -1
  26. package/dist/analysis/temporal-resource.d.ts.map +1 -1
  27. package/dist/analysis/temporal-resource.js +1 -1
  28. package/dist/analysis/temporal-resource.js.map +1 -1
  29. package/dist/application/advance-history.d.ts +2 -1
  30. package/dist/application/advance-history.d.ts.map +1 -1
  31. package/dist/application/advance-history.js +1 -1
  32. package/dist/application/advance-history.js.map +1 -1
  33. package/dist/application/analyze.d.ts +1 -32
  34. package/dist/application/analyze.d.ts.map +1 -1
  35. package/dist/application/analyze.js +1 -152
  36. package/dist/application/analyze.js.map +1 -1
  37. package/dist/application/check.d.ts +1 -42
  38. package/dist/application/check.d.ts.map +1 -1
  39. package/dist/application/check.js +1 -109
  40. package/dist/application/check.js.map +1 -1
  41. package/dist/application/cli-facade.d.ts +85 -0
  42. package/dist/application/cli-facade.d.ts.map +1 -0
  43. package/dist/application/cli-facade.js +108 -0
  44. package/dist/application/cli-facade.js.map +1 -0
  45. package/dist/application/contract6-mutation.js +2 -2
  46. package/dist/application/contract6-mutation.js.map +1 -1
  47. package/dist/application/contract7-mermaid.d.ts.map +1 -1
  48. package/dist/application/contract7-mermaid.js +3 -3
  49. package/dist/application/contract7-mermaid.js.map +1 -1
  50. package/dist/application/contract7-source.d.ts +1 -7
  51. package/dist/application/contract7-source.d.ts.map +1 -1
  52. package/dist/application/contract7-source.js +4 -12
  53. package/dist/application/contract7-source.js.map +1 -1
  54. package/dist/application/editor-dag-focus.d.ts +52 -0
  55. package/dist/application/editor-dag-focus.d.ts.map +1 -0
  56. package/dist/application/editor-dag-focus.js +132 -0
  57. package/dist/application/editor-dag-focus.js.map +1 -0
  58. package/dist/application/format.js +2 -2
  59. package/dist/application/format.js.map +1 -1
  60. package/dist/application/mutate.d.ts +1 -26
  61. package/dist/application/mutate.d.ts.map +1 -1
  62. package/dist/application/mutate.js +1 -205
  63. package/dist/application/mutate.js.map +1 -1
  64. package/dist/application/next.js +2 -2
  65. package/dist/application/next.js.map +1 -1
  66. package/dist/application/target-actuals-advance.js +2 -2
  67. package/dist/application/target-actuals-advance.js.map +1 -1
  68. package/dist/application/target-actuals-analysis.js +2 -2
  69. package/dist/application/target-actuals-analysis.js.map +1 -1
  70. package/dist/application/target-actuals-mutation.d.ts.map +1 -1
  71. package/dist/application/target-actuals-mutation.js +6 -5
  72. package/dist/application/target-actuals-mutation.js.map +1 -1
  73. package/dist/application/target-assurance-analysis.js +2 -2
  74. package/dist/application/target-assurance-analysis.js.map +1 -1
  75. package/dist/application/target-assurance-write.d.ts +2 -1
  76. package/dist/application/target-assurance-write.d.ts.map +1 -1
  77. package/dist/application/target-assurance-write.js +36 -12
  78. package/dist/application/target-assurance-write.js.map +1 -1
  79. package/dist/application/target-governance-mutation.js +2 -2
  80. package/dist/application/target-governance-mutation.js.map +1 -1
  81. package/dist/application/target-historical-graph.d.ts +124 -0
  82. package/dist/application/target-historical-graph.d.ts.map +1 -0
  83. package/dist/application/target-historical-graph.js +547 -0
  84. package/dist/application/target-historical-graph.js.map +1 -0
  85. package/dist/application/target-mutate.d.ts +1 -17
  86. package/dist/application/target-mutate.d.ts.map +1 -1
  87. package/dist/application/target-mutate.js +1 -159
  88. package/dist/application/target-mutate.js.map +1 -1
  89. package/dist/application/target-project-history.d.ts +2 -1
  90. package/dist/application/target-project-history.d.ts.map +1 -1
  91. package/dist/application/target-project-history.js +4 -4
  92. package/dist/application/target-project-history.js.map +1 -1
  93. package/dist/application/target-temporal-analysis.js +2 -2
  94. package/dist/application/target-temporal-analysis.js.map +1 -1
  95. package/dist/application/target-temporal-input.d.ts +1 -87
  96. package/dist/application/target-temporal-input.d.ts.map +1 -1
  97. package/dist/application/target-temporal-input.js +1 -248
  98. package/dist/application/target-temporal-input.js.map +1 -1
  99. package/dist/application/target-unit-migration-candidate.js +4 -4
  100. package/dist/application/target-unit-migration-candidate.js.map +1 -1
  101. package/dist/assurance/advance.js +2 -2
  102. package/dist/assurance/advance.js.map +1 -1
  103. package/dist/assurance/canonical.js +2 -2
  104. package/dist/assurance/canonical.js.map +1 -1
  105. package/dist/assurance/compatibility.js +2 -2
  106. package/dist/assurance/compatibility.js.map +1 -1
  107. package/dist/assurance/mermaid.d.ts +4 -2
  108. package/dist/assurance/mermaid.d.ts.map +1 -1
  109. package/dist/assurance/mermaid.js +11 -7
  110. package/dist/assurance/mermaid.js.map +1 -1
  111. package/dist/assurance/mutation.d.ts.map +1 -1
  112. package/dist/assurance/mutation.js +9 -23
  113. package/dist/assurance/mutation.js.map +1 -1
  114. package/dist/cli.js +66 -26
  115. package/dist/cli.js.map +1 -1
  116. package/dist/command/assurance-discovery.d.ts.map +1 -1
  117. package/dist/command/assurance-discovery.js +73 -3
  118. package/dist/command/assurance-discovery.js.map +1 -1
  119. package/dist/command/assurance-usage.d.ts.map +1 -1
  120. package/dist/command/assurance-usage.js +11 -0
  121. package/dist/command/assurance-usage.js.map +1 -1
  122. package/dist/conversion/mermaid-import.js +3 -3
  123. package/dist/conversion/mermaid-import.js.map +1 -1
  124. package/dist/conversion/mermaid.d.ts +1 -1
  125. package/dist/conversion/mermaid.d.ts.map +1 -1
  126. package/dist/conversion/mermaid.js +4 -4
  127. package/dist/conversion/mermaid.js.map +1 -1
  128. package/dist/core/index.d.ts +33 -0
  129. package/dist/core/index.d.ts.map +1 -0
  130. package/dist/core/index.js +13 -0
  131. package/dist/core/index.js.map +1 -0
  132. package/dist/core/source.d.ts +8 -0
  133. package/dist/core/source.d.ts.map +1 -0
  134. package/dist/core/source.js +11 -0
  135. package/dist/core/source.js.map +1 -0
  136. package/dist/formatter/source-formatter.d.ts +1 -1
  137. package/dist/formatter/source-formatter.d.ts.map +1 -1
  138. package/dist/formatter/source-formatter.js +1 -1
  139. package/dist/formatter/source-formatter.js.map +1 -1
  140. package/dist/guidance/validator.js +2 -2
  141. package/dist/guidance/validator.js.map +1 -1
  142. package/dist/help/assurance-guide.d.ts.map +1 -1
  143. package/dist/help/assurance-guide.js +209 -19
  144. package/dist/help/assurance-guide.js.map +1 -1
  145. package/dist/history/git-probe.d.ts +71 -0
  146. package/dist/history/git-probe.d.ts.map +1 -1
  147. package/dist/history/git-probe.js +517 -0
  148. package/dist/history/git-probe.js.map +1 -1
  149. package/dist/history/historical-graph.d.ts +174 -0
  150. package/dist/history/historical-graph.d.ts.map +1 -0
  151. package/dist/history/historical-graph.js +870 -0
  152. package/dist/history/historical-graph.js.map +1 -0
  153. package/dist/history/historical-transition.d.ts +311 -0
  154. package/dist/history/historical-transition.d.ts.map +1 -0
  155. package/dist/history/historical-transition.js +998 -0
  156. package/dist/history/historical-transition.js.map +1 -0
  157. package/dist/history/project-history.d.ts.map +1 -1
  158. package/dist/history/project-history.js +4 -4
  159. package/dist/history/project-history.js.map +1 -1
  160. package/dist/history/velocity-observation.js +1 -1
  161. package/dist/history/velocity-observation.js.map +1 -1
  162. package/dist/index.d.ts +2 -0
  163. package/dist/index.d.ts.map +1 -1
  164. package/dist/index.js +1 -0
  165. package/dist/index.js.map +1 -1
  166. package/dist/io/document-file.js +2 -2
  167. package/dist/io/document-file.js.map +1 -1
  168. package/dist/io/safe-write.js +1 -1
  169. package/dist/io/safe-write.js.map +1 -1
  170. package/dist/model/sha256.d.ts +5 -0
  171. package/dist/model/sha256.d.ts.map +1 -0
  172. package/dist/model/sha256.js +105 -0
  173. package/dist/model/sha256.js.map +1 -0
  174. package/dist/mutation/advance.js +3 -3
  175. package/dist/mutation/advance.js.map +1 -1
  176. package/dist/mutation/diagnostics.d.ts +2 -2
  177. package/dist/mutation/diagnostics.d.ts.map +1 -1
  178. package/dist/mutation/diagnostics.js.map +1 -1
  179. package/dist/mutation/planner.d.ts +27 -0
  180. package/dist/mutation/planner.d.ts.map +1 -0
  181. package/dist/mutation/planner.js +206 -0
  182. package/dist/mutation/planner.js.map +1 -0
  183. package/dist/mutation/source.d.ts +2 -1
  184. package/dist/mutation/source.d.ts.map +1 -1
  185. package/dist/mutation/source.js +14 -0
  186. package/dist/mutation/source.js.map +1 -1
  187. package/dist/mutation/target-planner.d.ts +18 -0
  188. package/dist/mutation/target-planner.d.ts.map +1 -0
  189. package/dist/mutation/target-planner.js +160 -0
  190. package/dist/mutation/target-planner.js.map +1 -0
  191. package/dist/mutation/task.d.ts.map +1 -1
  192. package/dist/mutation/task.js +19 -11
  193. package/dist/mutation/task.js.map +1 -1
  194. package/dist/mutation/types.d.ts +1 -1
  195. package/dist/mutation/types.d.ts.map +1 -1
  196. package/dist/node/historical-host.d.ts +6 -0
  197. package/dist/node/historical-host.d.ts.map +1 -0
  198. package/dist/node/historical-host.js +8 -0
  199. package/dist/node/historical-host.js.map +1 -0
  200. package/dist/node/host.d.ts +3 -0
  201. package/dist/node/host.d.ts.map +1 -0
  202. package/dist/node/host.js +48 -0
  203. package/dist/node/host.js.map +1 -0
  204. package/dist/node/index.d.ts +2 -0
  205. package/dist/node/index.d.ts.map +1 -0
  206. package/dist/node/index.js +2 -0
  207. package/dist/node/index.js.map +1 -0
  208. package/dist/perttool-vscode-private-0.0.0-d1578b9.vsix +0 -0
  209. package/dist/ports/node-host.d.ts +41 -0
  210. package/dist/ports/node-host.d.ts.map +1 -0
  211. package/dist/ports/node-host.js +2 -0
  212. package/dist/ports/node-host.js.map +1 -0
  213. package/dist/recommendation/override.d.ts +40 -2
  214. package/dist/recommendation/override.d.ts.map +1 -1
  215. package/dist/recommendation/override.js +5 -6
  216. package/dist/recommendation/override.js.map +1 -1
  217. package/dist/schema/registry.d.ts.map +1 -1
  218. package/dist/schema/registry.js +1 -0
  219. package/dist/schema/registry.js.map +1 -1
  220. package/dist/semantic/check.d.ts +43 -0
  221. package/dist/semantic/check.d.ts.map +1 -0
  222. package/dist/semantic/check.js +110 -0
  223. package/dist/semantic/check.js.map +1 -0
  224. package/dist/session/document-session.d.ts +109 -0
  225. package/dist/session/document-session.d.ts.map +1 -0
  226. package/dist/session/document-session.js +432 -0
  227. package/dist/session/document-session.js.map +1 -0
  228. package/dist/version.d.ts +1 -1
  229. package/dist/version.js +1 -1
  230. package/package.json +18 -4
  231. package/schemas/Perttool.HistoricalGraphResult.v1.schema.json +654 -0
package/CHANGELOG.md CHANGED
@@ -4,6 +4,58 @@ This project records its notable changes here. The format is based on [Keep a Ch
4
4
 
5
5
  ## [Unreleased]
6
6
 
7
+ ## [0.8.0] - 2026-08-07
8
+
9
+ Additive Grammar 6 and CLI Contract 7 beta minor. This version publishes the
10
+ adapter-platform library boundary, read-only historical DAG reconstruction,
11
+ and the declaration-identity correction.
12
+
13
+ ### Added
14
+
15
+ - Added the read-only `dag history` command with bounded inclusive Git revision
16
+ inputs, explicit first-parent scope, snapshot, proved-lineage, and timeline
17
+ views, optional single-checkpoint analysis, immutable source bindings,
18
+ `Perttool.HistoricalGraphResult.v1`, and the `historical-dag` Guide topic.
19
+ Three-way ancestry remains fail-closed and release selection remains
20
+ separate.
21
+ - Added source-package `perttool/core` and `perttool/node` subpath exports.
22
+ Core provides a closed platform-neutral Grammar 6 source, graph-analysis,
23
+ exact-arithmetic, diagnostic, Help, Guide, and projection surface; Node is
24
+ reference-identical to the 122-name package-root facade.
25
+
26
+ ### Changed
27
+
28
+ - Increased the Contract 7 registry from 44 to 45 commands, the root schema
29
+ catalog from 20 to 21 identities, and the root facade from 121 to 122 runtime
30
+ exports without changing Grammar or CLI Contract versions.
31
+
32
+ ### Fixed
33
+
34
+ - Made task insertion, mutation, lifecycle, and LSP definition distinguish a
35
+ task declaration from its same-ID `plan_seal` while preserving existing
36
+ valid noncanonical source order.
37
+
38
+ ## [0.7.1] - 2026-08-05
39
+
40
+ Compatible Grammar 6 and CLI Contract 7 beta patch. This version corrects
41
+ installed Help, Guide, and diagnostic navigation without changing command,
42
+ option, result, schema, payload-structure, package-root, or authority
43
+ identities.
44
+
45
+ ### Fixed
46
+
47
+ - Corrected the active Guide to state Grammar 6, AnalysisResult v5,
48
+ NextResult v6, and the combined release, temporal, and plan-assurance start
49
+ authority directly while preserving additive version history.
50
+ - Made every registered Help example pass active argument validation,
51
+ including complete operands and required options for all eight assurance
52
+ mutation commands.
53
+ - Made every literal runtime diagnostic topic resolvable, specified and
54
+ directly tested `PTCNV-210`, and added bounded reciprocal navigation for
55
+ the plan-assurance Guide topic.
56
+ - Reconciled current and historical documentation labels without rewriting
57
+ time-bound release evidence.
58
+
7
59
  ## [0.7.0] - 2026-08-04
8
60
 
9
61
  Grammar 6 and CLI Contract 7 beta minor. This version adds conditional plan
@@ -367,7 +419,9 @@ First public development preview. Intended to evaluate the DSL and CLI, read-onl
367
419
  - Not published to the npm registry; use the GitHub Release asset
368
420
  - Requires Node.js 24 or later
369
421
 
370
- [Unreleased]: https://github.com/mako10k/perttool/compare/v0.7.0...HEAD
422
+ [Unreleased]: https://github.com/mako10k/perttool/compare/v0.8.0...HEAD
423
+ [0.8.0]: https://github.com/mako10k/perttool/compare/v0.7.1...v0.8.0
424
+ [0.7.1]: https://github.com/mako10k/perttool/compare/v0.7.0...v0.7.1
371
425
  [0.7.0]: https://github.com/mako10k/perttool/compare/v0.6.0...v0.7.0
372
426
  [0.6.0]: https://github.com/mako10k/perttool/compare/v0.5.5...v0.6.0
373
427
  [0.5.5]: https://github.com/mako10k/perttool/compare/v0.5.4...v0.5.5
package/README.md CHANGED
@@ -16,43 +16,68 @@ governance-not-applicable candidate and when a governed preview already
16
16
  carries one. It also protects destructive in-place `dag advance` writes with
17
17
  exact `HEAD` and stage-0 evidence, returns `Perttool.AdvanceResult.v1`, and
18
18
  keeps preview, separate output, and written candidates repository-clean and
19
- byte-identical. It remains the npm `latest` compatibility line for this beta
20
- release.
19
+ byte-identical. It remains available as the exact Contract 6 compatibility
20
+ pin `perttool@0.6.0`.
21
21
  Beta releases may contain breaking CLI or schema changes.
22
22
 
23
23
  Version `0.7.0` beta atomically activates Grammar 6 and CLI Contract 7
24
24
  conditional plan assurance. It exposes 44 commands, 20 root schemas,
25
25
  `Perttool.PlanAssuranceResult.v1`, assurance-aware Check/Project/Analysis/Next/
26
26
  Mutation/Advance results, `Perttool.GovernanceDecision.v2`, and Mermaid
27
- semantic profile 2. Its package and CLI identity is `0.7.0`, and `beta` is its
28
- publication channel. This release does not move npm `latest` from Contract 6
29
- `0.6.0`; channel promotion remains a separate decision. Both versions require
30
- Node.js 22 or later.
27
+ semantic profile 2. Its package and CLI identity is `0.7.0`. At its publication
28
+ boundary, this release does not move npm `latest` from Contract 6 `0.6.0`;
29
+ one separately authorized post-publication operation later made
30
+ `beta=latest=0.7.0`. These Contract 6 and Contract 7 releases require Node.js
31
+ 22 or later.
32
+ Version `0.7.1` is a backward-compatible Contract 7 patch that corrects the
33
+ installed Guide, command Help examples, and diagnostic navigation. It retains
34
+ all 44 command paths, 20 root schemas, result and payload identities,
35
+ package-root exports, and authority policies. Its beta publication does not
36
+ move npm `latest`; one separately authorized post-publication operation later
37
+ made `beta=latest=0.7.1`. Version `0.7.0` remains the exact rollback pin.
31
38
  The complete-schema Contract 6 artifact remains available by pinning `0.5.2`,
32
39
  and the first machine-schema Contract 6 artifact remains available by pinning
33
40
  `0.5.1`; Contract 5, Contract 4, and Contract 3 remain available by pinning
34
41
  `0.4.0`, `0.3.0`, and `0.2.0`, respectively. npm has no maintained `alpha`
35
42
  dist-tag; historical `0.1.0-alpha.2` remains available by exact pin.
36
43
 
44
+ Version `0.8.0` adds the public `perttool/core` and `perttool/node` subpaths,
45
+ the read-only `dag history` command, `Perttool.HistoricalGraphResult.v1`, and
46
+ the declaration-identity correction without changing Grammar 6 or CLI
47
+ Contract 7. It exposes 45 commands, 21 root schemas, 122 reference-identical
48
+ root and Node runtime exports, and 45 portable Core runtime exports. Its beta
49
+ publication moves only npm `beta` and leaves independently managed
50
+ `latest=0.7.1`; use `0.7.1` as the exact rollback pin.
51
+ The repository-only VSIX also adds separately negotiated historical snapshot,
52
+ proved-lineage, and timeline views for trusted local Git workspaces plus
53
+ verified read-only immutable source navigation. Those adapter results are not
54
+ CLI schemas or public package exports, and no public VSIX release is selected.
55
+ The private DAG presentation additionally bundles a deterministic left-to-right
56
+ Dagre layout, one-step historical defaults, bounded zoom/fit/scroll/pan, and a
57
+ separately negotiated exact current-frontier and NextResult v6 start-authority
58
+ focus result. Compact `Mnn`/`Tnn`/`Gnn` graph labels link to original-identity
59
+ details, and exact residual, resource-remaining, and task-time summaries keep
60
+ qualified Point forecasts distinct. Layout never becomes project semantics.
61
+
37
62
  ## Run without installing
38
63
 
39
64
  After beta publication, use `npx` for an occasional Contract 7 invocation and
40
65
  select the version explicitly:
41
66
 
42
67
  ```sh
43
- npx --yes --package=perttool@0.7.0 -- perttool --version
44
- npx --yes --package=perttool@0.7.0 -- perttool document check PLAN.pert
45
- npx --yes --package=perttool@0.7.0 -- perttool dag next PLAN.pert --format json
46
- npx --yes --package=perttool@0.7.0 -- perttool plan-assurance show PLAN.pert --format json
68
+ npx --yes --package=perttool@0.8.0 -- perttool --version
69
+ npx --yes --package=perttool@0.8.0 -- perttool document check PLAN.pert
70
+ npx --yes --package=perttool@0.8.0 -- perttool dag next PLAN.pert --format json
71
+ npx --yes --package=perttool@0.8.0 -- perttool dag history PLAN.pert --rev HEAD --format json
47
72
  ```
48
73
 
49
74
  The equivalent explicit `npm exec` form is:
50
75
 
51
76
  ```sh
52
- npm exec --yes --package=perttool@0.7.0 -- perttool --version
53
- npm exec --yes --package=perttool@0.7.0 -- perttool document check PLAN.pert
54
- npm exec --yes --package=perttool@0.7.0 -- perttool dag analyze PLAN.pert
55
- npm exec --yes --package=perttool@0.7.0 -- perttool plan-assurance hash PLAN.pert WORK --kind contract
77
+ npm exec --yes --package=perttool@0.8.0 -- perttool --version
78
+ npm exec --yes --package=perttool@0.8.0 -- perttool document check PLAN.pert
79
+ npm exec --yes --package=perttool@0.8.0 -- perttool dag analyze PLAN.pert
80
+ npm exec --yes --package=perttool@0.8.0 -- perttool plan-assurance hash PLAN.pert WORK --kind contract
56
81
  ```
57
82
 
58
83
  `npx` and `npm exec` may download the selected package version into the npm
@@ -62,21 +87,65 @@ Contract 3.
62
87
 
63
88
  ## Install
64
89
 
65
- Install the Contract 7 CLI globally by exact version when it is used regularly:
90
+ Install the additive Contract 7 CLI globally by exact version when it is used
91
+ regularly:
66
92
 
67
93
  ```sh
68
- npm install --global perttool@0.7.0
94
+ npm install --global perttool@0.8.0
69
95
  perttool --version
70
96
  ```
71
97
 
72
- This beta release does not move npm `latest`; an unqualified install therefore
73
- remains on Contract 6 `0.6.0`. The pre-schema Contract 6 artifact remains available as
74
- `perttool@0.5.0`; Contract 5,
98
+ The `0.8.0` release procedure publishes only npm `beta` and leaves the
99
+ independently managed `latest` tag at `0.7.1`. Select `0.8.0` explicitly for
100
+ the new public subpaths and historical DAG command; an unqualified install
101
+ continues to select `0.7.1` unless a later operation separately promotes
102
+ `latest`.
103
+ Contract 6 remains available by exact pinning `perttool@0.6.0`; the pre-schema
104
+ Contract 6 artifact remains available as
105
+ `perttool@0.5.0`. Contract 5,
75
106
  Contract 4, and Contract 3 remain available as exact pins
76
107
  `perttool@0.4.0`, `perttool@0.3.0`, and `perttool@0.2.0`. The retired alpha
77
108
  preview remains installable only as the exact pin
78
109
  `perttool@0.1.0-alpha.2`.
79
110
 
111
+ ## Library subpaths in `0.8.0`
112
+
113
+ Version `0.8.0` provides two additive library boundaries:
114
+
115
+ ```js
116
+ import {
117
+ analyzeDocumentSnapshot,
118
+ createDocumentSession,
119
+ createDocumentSnapshot,
120
+ documentOffsetToPosition,
121
+ documentPositionToOffset,
122
+ formatDocument,
123
+ getGuide,
124
+ parseDocument,
125
+ validateDocument,
126
+ } from "perttool/core";
127
+ import {
128
+ getJsonSchemaCatalog,
129
+ readDocumentFile,
130
+ } from "perttool/node";
131
+ ```
132
+
133
+ `perttool/core` is the closed platform-neutral Grammar 6 source, graph,
134
+ exact-arithmetic, diagnostic, Help, Guide, projection, and document-session
135
+ surface. Immutable snapshots and sessions bind exact URI, generation, version,
136
+ text digest, parse/semantic state, UTF-16 positions, analysis options, and
137
+ cancellation-safe caches without filesystem or editor access. The caller
138
+ supplies the SHA-256 function. Its runtime closure has no Node builtin or
139
+ external package. `perttool/node` exposes the same 122 runtime values as the
140
+ existing `perttool` root, including file, schema, Git, hashing, and safe-write
141
+ APIs that still require Node.js 22 or later. Bundled JSON artifacts remain
142
+ available through `perttool/schemas/<schema-id>.schema.json`.
143
+
144
+ These subpaths are absent from the `0.7.1` rollback package. See the
145
+ [Shared Library Boundary](docs/specs/shared-library.md).
146
+ The protocol-neutral state contract is the
147
+ [Document Session Core](docs/specs/document-session.md).
148
+
80
149
  ## Plan files
81
150
 
82
151
  A `.pert` file is the source of truth and is intended to remain directly
@@ -385,6 +454,7 @@ new-start authority from unsealed, review-required, or unavailable plans.
385
454
  | Analyze schedules | `perttool dag analyze <file>` |
386
455
  | Select next work | `perttool dag next <file>` |
387
456
  | Remove completed history | `perttool dag advance <file>` |
457
+ | Reconstruct committed DAG history | `perttool dag history <file> ...` |
388
458
  | Inspect plan assurance | `perttool plan-assurance show|hash <file> ...` |
389
459
  | Seal or reseal reviewed plans | `perttool plan-assurance seal|reseal <file> ...` |
390
460
  | Maintain planning dependencies | `perttool plan-dependency add|set|remove` |
@@ -404,10 +474,12 @@ domain concepts. Both run without a document:
404
474
  ```sh
405
475
  perttool task set --help
406
476
  perttool help dag next --format json
477
+ perttool help dag history --format json
407
478
  perttool schema --format json
408
479
  perttool schema Perttool.NextResult.v6 --format json
409
480
  perttool schema Perttool.NextResult.v6 --view outline --format json
410
481
  perttool guide editing --level detail --format json
482
+ perttool guide historical-dag --level detail --format json
411
483
  ```
412
484
 
413
485
  ### JSON Schema artifacts
@@ -437,12 +509,13 @@ against the bundled `Perttool.Common.v1.schema.json`. The stable `$id` is an
437
509
  identifier only: validation does not require network access. Consumers must
438
510
  select compatibility from each result's `schema_version`, not from
439
511
  `tool_version`. See the
440
- [JSON Schema Artifact Contract](docs/specs/json-schema.md) for the complete
441
- 20-root inventory and versioning rules.
512
+ [JSON Schema Artifact Contract](docs/specs/json-schema.md) for the current
513
+ 21-root source inventory and versioning rules.
442
514
 
443
515
  ## LLM and automation use
444
516
 
445
- Use `--format json` for machine consumers. Version `0.7.0` requires
517
+ Use `--format json` for machine consumers. Versions `0.7.0`, `0.7.1`, and
518
+ `0.8.0` require
446
519
  `cli_contract_version == 7`. Published `0.6.0`, `0.5.5`, `0.5.4`, `0.5.3`,
447
520
  `0.5.2`, `0.5.1`, and `0.5.0` consumers must check
448
521
  `cli_contract_version == 6`;
@@ -463,6 +536,9 @@ assurance-aware result identities; see the
463
536
  [`0.6.0` to `0.7.0` migration](docs/process/0.6.0-to-0.7.0-migration.md).
464
537
  In every case, check the result-specific `schema_version` before reading the
465
538
  rest of a result.
539
+ Version `0.8.0` adds `dag history`, `Perttool.HistoricalGraphResult.v1`, and
540
+ the Core and Node subpaths without changing CLI Contract 7; see the
541
+ [`0.7.1` to `0.8.0` migration](docs/process/0.7.1-to-0.8.0-migration.md).
466
542
  A complete, known, non-truncated `Perttool.NextResult.v6` with policy
467
543
  `recommendation_v1_plus_release_gate_plus_plan_assurance_v1` is required for
468
544
  the current source. Start only task IDs in
@@ -491,7 +567,18 @@ diagnostics, and future or unavailable temporal eligibility must fail closed.
491
567
  - [Conditional Plan Assurance public-contract acceptance](docs/process/plan-assurance-public-contract-acceptance.md)
492
568
  - [`0.6.0` to `0.7.0` migration](docs/process/0.6.0-to-0.7.0-migration.md)
493
569
  - [`v0.7.0` release procedure](docs/process/0.7.0-release.md)
570
+ - [`v0.7.1` Help and Guide consistency patch procedure](docs/process/0.7.1-release.md)
571
+ - [`0.7.1` to `0.8.0` migration](docs/process/0.7.1-to-0.8.0-migration.md)
572
+ - [`v0.8.0` release procedure](docs/process/0.8.0-release.md)
494
573
  - [Conditional Plan Assurance interface acceptance](docs/process/plan-assurance-interface-acceptance.md)
574
+ - [Shared Library Boundary](docs/specs/shared-library.md)
575
+ - [Editor Protocol Contract](docs/specs/editor-protocol.md)
576
+ - [Historical Editor Protocol Contract](docs/specs/historical-editor-protocol.md)
577
+ - [DAG Presentation and Focus Contract](docs/specs/dag-presentation.md)
578
+ - [DAG presentation and focus acceptance](docs/process/dag-presentation-acceptance.md)
579
+ - [DAG Compact Labels and Exact Time Summary Contract](docs/specs/dag-compact-presentation.md)
580
+ - [DAG compact presentation acceptance](docs/process/dag-compact-presentation-acceptance.md)
581
+ - [Document Session Core](docs/specs/document-session.md)
495
582
  - [Conditional Plan Assurance internal hash Core acceptance](docs/process/plan-assurance-hash-core-acceptance.md)
496
583
  - [Conditional Plan Assurance internal source Core acceptance](docs/process/plan-assurance-source-core-acceptance.md)
497
584
  - [Conditional Plan Assurance internal mutation Core acceptance](docs/process/plan-assurance-mutation-core-acceptance.md)
@@ -501,6 +588,10 @@ diagnostics, and future or unavailable temporal eligibility must fail closed.
501
588
  - [Conditional Plan Assurance internal hash inspection acceptance](docs/process/plan-assurance-hash-inspection-acceptance.md)
502
589
  - [Conditional Plan Assurance design review](docs/process/plan-assurance-design-review.md)
503
590
  - [Conditional Plan Assurance implementation plan](plans/plan-assurance.pert)
591
+ - [Help and Guide consistency correction](docs/specs/help-guide-consistency.md)
592
+ - [Help and Guide consistency implementation plan](plans/help-guide-consistency.pert)
593
+ - [`v0.7.1` release plan](plans/release-0.7.1.pert)
594
+ - [`v0.8.0` release plan](plans/release-0.8.0.pert)
504
595
  - [JSON Schema Artifact Contract](docs/specs/json-schema.md)
505
596
  - [JSON Schema source acceptance](docs/process/json-schema-acceptance.md)
506
597
  - [Contract 5-to-6 migration](docs/process/cli-contract-6-migration.md)
@@ -1,10 +1,9 @@
1
- import type { Diagnostic, SourceSpan } from "../model/diagnostics.js";
2
- import { type Rational } from "../model/rational.js";
3
- import type { DeclarationNode, TargetDeclarationKind, WorkEventKind } from "../model/syntax.js";
4
- import { type ActualWorkEvent } from "./source.js";
5
- import type { TargetGrammar5ValidatedDocument } from "../semantic/target-validator.js";
6
- export type TaskLifecycleState = "planned" | "active" | "blocked" | "suspended" | "done";
7
- export type ActualsCoverage = "complete" | "open" | "finish_only" | "unrecorded" | "unavailable";
1
+ import type { Diagnostic } from "../model/diagnostics.js";
2
+ import type { WorkEventKind } from "../model/syntax.js";
3
+ import { actualsDiagnostic } from "./reduction.js";
4
+ export { reduceTaskLifecycle, taskStatus, taskStatusSpan, validateStoredLifecycleState, } from "./reduction.js";
5
+ export { actualsDiagnostic };
6
+ export type { ActualsCoverage, LifecycleReduction, TaskLifecycleState, } from "./reduction.js";
8
7
  export interface LifecycleEventInput {
9
8
  readonly id?: string;
10
9
  readonly occurredAt: string;
@@ -82,20 +81,7 @@ export interface FinishActualsRequestNormalization {
82
81
  readonly request: NormalizedFinishActualsRequest | null;
83
82
  readonly diagnostics: readonly Diagnostic[];
84
83
  }
85
- export interface LifecycleReduction {
86
- readonly ok: boolean;
87
- readonly coverage: ActualsCoverage;
88
- readonly state: "active" | "suspended" | "done" | null;
89
- readonly derivedActiveTime: Rational | null;
90
- readonly diagnostics: readonly Diagnostic[];
91
- }
92
- export declare function actualsDiagnostic(code: "PTACT-104" | "PTACT-105" | "PTACT-106" | "PTACT-107" | "PTACT-108", message: string, cause: string, entityId: string | null, span?: SourceSpan, data?: Readonly<Record<string, unknown>>): Diagnostic;
93
84
  export declare function deriveWorkEventId(taskId: string, kind: WorkEventKind, canonicalOccurredAt: string): string;
94
85
  export declare function normalizeLifecycleMutationRequest(input: unknown): LifecycleMutationRequestNormalization;
95
86
  export declare function normalizeFinishActualsRequest(input: unknown): FinishActualsRequestNormalization;
96
- export declare function reduceTaskLifecycle(events: readonly ActualWorkEvent[]): LifecycleReduction;
97
- export declare function taskStatus(task: DeclarationNode<TargetDeclarationKind>): TaskLifecycleState;
98
- export declare function taskStatusSpan(task: DeclarationNode<TargetDeclarationKind>): SourceSpan;
99
- export declare function validateStoredLifecycleState(validated: TargetGrammar5ValidatedDocument): readonly Diagnostic[];
100
- export {};
101
87
  //# sourceMappingURL=lifecycle.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/actuals/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.d.ts","sourceRoot":"","sources":["../../src/actuals/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -1,30 +1,11 @@
1
- import { createHash } from "node:crypto";
1
+ import { sha256HexUtf8 } from "../model/sha256.js";
2
2
  import { canonicalizeEventDateTimeSourceToken, } from "../model/calendar.js";
3
- import { instantKey } from "../model/calendar-arithmetic.js";
4
- import { compareStableStrings } from "../model/diagnostics.js";
5
3
  import { canonicalizeExactDurationSourceToken } from "../model/exact-duration-source.js";
6
4
  import { canonicalizeExactPersonHoursSourceToken } from "../model/exact-person-hours-source.js";
7
- import { add, compare, divide, rational, subtract, ZERO, } from "../model/rational.js";
8
- import { fieldNamed } from "../model/syntax.js";
9
- import { projectActualsSourceModel, workEventsForTask, } from "./source.js";
5
+ import { actualsDiagnostic } from "./reduction.js";
6
+ export { reduceTaskLifecycle, taskStatus, taskStatusSpan, validateStoredLifecycleState, } from "./reduction.js";
7
+ export { actualsDiagnostic };
10
8
  const identifierPattern = /^[A-Za-z][A-Za-z0-9_-]*$/;
11
- const eventKindOrder = Object.freeze({
12
- start: 0,
13
- suspend: 1,
14
- resume: 2,
15
- finish: 3,
16
- });
17
- export function actualsDiagnostic(code, message, cause, entityId, span, data = {}) {
18
- return Object.freeze({
19
- code,
20
- severity: "error",
21
- message,
22
- ...(entityId === null ? {} : { entityId }),
23
- ...(span === undefined ? {} : { span }),
24
- helpTopic: "syntax.work-event",
25
- data: Object.freeze({ cause, ...data }),
26
- });
27
- }
28
9
  function invalidRequest(taskId, detail) {
29
10
  return Object.freeze({
30
11
  ok: false,
@@ -37,7 +18,7 @@ function invalidRequest(taskId, detail) {
37
18
  export function deriveWorkEventId(taskId, kind, canonicalOccurredAt) {
38
19
  const payload = `perttool.work-event-id.v1\u0000${taskId}\u0000${kind}` +
39
20
  `\u0000${canonicalOccurredAt}`;
40
- return `WE-${createHash("sha256").update(payload, "utf8").digest("hex")}`;
21
+ return `WE-${sha256HexUtf8(payload)}`;
41
22
  }
42
23
  export function normalizeLifecycleMutationRequest(input) {
43
24
  if (input === null || typeof input !== "object" || Array.isArray(input)) {
@@ -174,156 +155,4 @@ export function normalizeFinishActualsRequest(input) {
174
155
  }
175
156
  return normalized;
176
157
  }
177
- function eventInstant(event) {
178
- return instantKey(event.occurredAt);
179
- }
180
- function compareEvents(left, right) {
181
- const instantOrder = compare(eventInstant(left), eventInstant(right));
182
- if (instantOrder !== 0)
183
- return instantOrder;
184
- const kindOrder = eventKindOrder[left.kind] - eventKindOrder[right.kind];
185
- return kindOrder !== 0
186
- ? kindOrder
187
- : compareStableStrings(left.id, right.id);
188
- }
189
- function sequenceFailure(event, cause) {
190
- return Object.freeze({
191
- ok: false,
192
- coverage: "unavailable",
193
- state: null,
194
- derivedActiveTime: null,
195
- diagnostics: Object.freeze([
196
- actualsDiagnostic("PTACT-104", "invalid work-event lifecycle sequence", cause, event.id, event.idSpan),
197
- ]),
198
- });
199
- }
200
- export function reduceTaskLifecycle(events) {
201
- if (events.length === 0) {
202
- return Object.freeze({
203
- ok: true,
204
- coverage: "unrecorded",
205
- state: null,
206
- derivedActiveTime: null,
207
- diagnostics: Object.freeze([]),
208
- });
209
- }
210
- const ordered = [...events].sort(compareEvents);
211
- for (let index = 1; index < ordered.length; index += 1) {
212
- const previous = ordered[index - 1];
213
- const current = ordered[index];
214
- if (compare(eventInstant(previous), eventInstant(current)) === 0 &&
215
- previous.kind === current.kind) {
216
- return sequenceFailure(current, "duplicate_kind_at_instant");
217
- }
218
- }
219
- let state = null;
220
- let coverage = "open";
221
- let activeIntervalStart = null;
222
- let derivedActiveTime = ZERO;
223
- for (const [index, event] of ordered.entries()) {
224
- const instant = eventInstant(event);
225
- if (state === "done")
226
- return sequenceFailure(event, "event_after_finish");
227
- switch (event.kind) {
228
- case "start":
229
- if (index !== 0 || state !== null) {
230
- return sequenceFailure(event, "invalid_transition");
231
- }
232
- state = "active";
233
- activeIntervalStart = instant;
234
- break;
235
- case "suspend":
236
- if (state !== "active" || activeIntervalStart === null) {
237
- return sequenceFailure(event, "invalid_transition");
238
- }
239
- derivedActiveTime = add(derivedActiveTime, subtract(instant, activeIntervalStart));
240
- if (derivedActiveTime.numerator < 0n) {
241
- return sequenceFailure(event, "invalid_transition");
242
- }
243
- state = "suspended";
244
- activeIntervalStart = null;
245
- break;
246
- case "resume":
247
- if (state !== "suspended") {
248
- return sequenceFailure(event, "invalid_transition");
249
- }
250
- state = "active";
251
- activeIntervalStart = instant;
252
- break;
253
- case "finish":
254
- if (index === 0 && state === null) {
255
- state = "done";
256
- coverage = "finish_only";
257
- break;
258
- }
259
- if (state !== "active" && state !== "suspended") {
260
- return sequenceFailure(event, "invalid_transition");
261
- }
262
- if (state === "active" && activeIntervalStart !== null) {
263
- derivedActiveTime = add(derivedActiveTime, subtract(instant, activeIntervalStart));
264
- if (derivedActiveTime.numerator < 0n) {
265
- return sequenceFailure(event, "invalid_transition");
266
- }
267
- }
268
- state = "done";
269
- activeIntervalStart = null;
270
- coverage = "complete";
271
- break;
272
- }
273
- }
274
- return Object.freeze({
275
- ok: true,
276
- coverage,
277
- state,
278
- derivedActiveTime: coverage === "complete"
279
- ? divide(derivedActiveTime, rational(3600n))
280
- : null,
281
- diagnostics: Object.freeze([]),
282
- });
283
- }
284
- export function taskStatus(task) {
285
- return (fieldNamed(task, "status")?.value ?? "planned");
286
- }
287
- export function taskStatusSpan(task) {
288
- return fieldNamed(task, "status")?.valueSpan ?? task.idSpan;
289
- }
290
- export function validateStoredLifecycleState(validated) {
291
- const model = projectActualsSourceModel(validated);
292
- const diagnostics = [];
293
- for (const task of validated.document.declarations) {
294
- if (task.kind !== "task")
295
- continue;
296
- const events = workEventsForTask(model, task.id);
297
- const reduction = reduceTaskLifecycle(events);
298
- if (!reduction.ok) {
299
- diagnostics.push(...reduction.diagnostics);
300
- continue;
301
- }
302
- if (reduction.coverage === "unrecorded")
303
- continue;
304
- const stored = taskStatus(task);
305
- if (reduction.state !== stored) {
306
- diagnostics.push(actualsDiagnostic("PTACT-104", "invalid work-event lifecycle sequence", "state_event_mismatch", task.id, taskStatusSpan(task), {
307
- stored_state: stored,
308
- event_state: reduction.state,
309
- }));
310
- continue;
311
- }
312
- if (reduction.coverage !== "complete")
313
- continue;
314
- const finish = events.find(({ kind }) => kind === "finish");
315
- if (finish?.activeTime !== null &&
316
- finish?.activeTime !== undefined &&
317
- reduction.derivedActiveTime !== null &&
318
- compare(finish.activeTime.value, reduction.derivedActiveTime) !== 0) {
319
- diagnostics.push(actualsDiagnostic("PTACT-107", "explicit active time differs from the event-derived active time", "active_time_mismatch", finish.id, finish.activeTime.valueSpan, {
320
- explicit_numerator: finish.activeTime.value.numerator.toString(),
321
- explicit_denominator: finish.activeTime.value.denominator.toString(),
322
- derived_numerator: reduction.derivedActiveTime.numerator.toString(),
323
- derived_denominator: reduction.derivedActiveTime.denominator.toString(),
324
- }));
325
- }
326
- }
327
- return Object.freeze(diagnostics);
328
- }
329
158
  //# sourceMappingURL=lifecycle.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/actuals/lifecycle.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"lifecycle.js","sourceRoot":"","sources":["../../src/actuals/lifecycle.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import type { Diagnostic, SourceSpan } from "../model/diagnostics.js";
2
+ import { type Rational } from "../model/rational.js";
3
+ import type { DeclarationNode, TargetDeclarationKind } from "../model/syntax.js";
4
+ import type { TargetGrammar5ValidatedDocument } from "../semantic/target-validator.js";
5
+ import { type ActualWorkEvent } from "./source.js";
6
+ export type TaskLifecycleState = "planned" | "active" | "blocked" | "suspended" | "done";
7
+ export type ActualsCoverage = "complete" | "open" | "finish_only" | "unrecorded" | "unavailable";
8
+ export interface LifecycleReduction {
9
+ readonly ok: boolean;
10
+ readonly coverage: ActualsCoverage;
11
+ readonly state: "active" | "suspended" | "done" | null;
12
+ readonly derivedActiveTime: Rational | null;
13
+ readonly diagnostics: readonly Diagnostic[];
14
+ }
15
+ export declare function actualsDiagnostic(code: "PTACT-104" | "PTACT-105" | "PTACT-106" | "PTACT-107" | "PTACT-108", message: string, cause: string, entityId: string | null, span?: SourceSpan, data?: Readonly<Record<string, unknown>>): Diagnostic;
16
+ export declare function reduceTaskLifecycle(events: readonly ActualWorkEvent[]): LifecycleReduction;
17
+ export declare function taskStatus(task: DeclarationNode<TargetDeclarationKind>): TaskLifecycleState;
18
+ export declare function taskStatusSpan(task: DeclarationNode<TargetDeclarationKind>): SourceSpan;
19
+ export declare function validateStoredLifecycleState(validated: TargetGrammar5ValidatedDocument): readonly Diagnostic[];
20
+ //# sourceMappingURL=reduction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reduction.d.ts","sourceRoot":"","sources":["../../src/actuals/reduction.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AAEtE,OAAO,EAOL,KAAK,QAAQ,EACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,KAAK,EACV,eAAe,EACf,qBAAqB,EAEtB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,EAGL,KAAK,eAAe,EACrB,MAAM,aAAa,CAAC;AASrB,MAAM,MAAM,kBAAkB,GAC1B,SAAS,GACT,QAAQ,GACR,SAAS,GACT,WAAW,GACX,MAAM,CAAC;AAEX,MAAM,MAAM,eAAe,GACvB,UAAU,GACV,MAAM,GACN,aAAa,GACb,YAAY,GACZ,aAAa,CAAC;AAElB,MAAM,WAAW,kBAAkB;IACjC,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC;IACnC,QAAQ,CAAC,KAAK,EAAE,QAAQ,GAAG,WAAW,GAAG,MAAM,GAAG,IAAI,CAAC;IACvD,QAAQ,CAAC,iBAAiB,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC5C,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;CAC7C;AAED,wBAAgB,iBAAiB,CAC/B,IAAI,EACA,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,GACX,WAAW,EACf,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,MAAM,EACb,QAAQ,EAAE,MAAM,GAAG,IAAI,EACvB,IAAI,CAAC,EAAE,UAAU,EACjB,IAAI,GAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAM,GAC3C,UAAU,CAUZ;AAoCD,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,SAAS,eAAe,EAAE,GACjC,kBAAkB,CA4FpB;AAED,wBAAgB,UAAU,CACxB,IAAI,EAAE,eAAe,CAAC,qBAAqB,CAAC,GAC3C,kBAAkB,CAEpB;AAED,wBAAgB,cAAc,CAC5B,IAAI,EAAE,eAAe,CAAC,qBAAqB,CAAC,GAC3C,UAAU,CAEZ;AAED,wBAAgB,4BAA4B,CAC1C,SAAS,EAAE,+BAA+B,GACzC,SAAS,UAAU,EAAE,CAwDvB"}