perttool 0.2.0 → 0.4.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 (259) hide show
  1. package/CHANGELOG.md +81 -1
  2. package/README.md +121 -28
  3. package/dist/analysis/temporal-deadline.d.ts +59 -0
  4. package/dist/analysis/temporal-deadline.d.ts.map +1 -0
  5. package/dist/analysis/temporal-deadline.js +387 -0
  6. package/dist/analysis/temporal-deadline.js.map +1 -0
  7. package/dist/analysis/temporal-precedence.d.ts +45 -0
  8. package/dist/analysis/temporal-precedence.d.ts.map +1 -0
  9. package/dist/analysis/temporal-precedence.js +123 -0
  10. package/dist/analysis/temporal-precedence.js.map +1 -0
  11. package/dist/analysis/temporal-resource.d.ts +66 -0
  12. package/dist/analysis/temporal-resource.d.ts.map +1 -0
  13. package/dist/analysis/temporal-resource.js +292 -0
  14. package/dist/analysis/temporal-resource.js.map +1 -0
  15. package/dist/application/check.d.ts +16 -0
  16. package/dist/application/check.d.ts.map +1 -1
  17. package/dist/application/check.js +51 -0
  18. package/dist/application/check.js.map +1 -1
  19. package/dist/application/contract4.d.ts +17 -0
  20. package/dist/application/contract4.d.ts.map +1 -0
  21. package/dist/application/contract4.js +27 -0
  22. package/dist/application/contract4.js.map +1 -0
  23. package/dist/application/contract5-governance.d.ts +8 -0
  24. package/dist/application/contract5-governance.d.ts.map +1 -0
  25. package/dist/application/contract5-governance.js +12 -0
  26. package/dist/application/contract5-governance.js.map +1 -0
  27. package/dist/application/init.d.ts +3 -11
  28. package/dist/application/init.d.ts.map +1 -1
  29. package/dist/application/init.js +16 -129
  30. package/dist/application/init.js.map +1 -1
  31. package/dist/application/mutate.d.ts +19 -0
  32. package/dist/application/mutate.d.ts.map +1 -1
  33. package/dist/application/mutate.js +34 -16
  34. package/dist/application/mutate.js.map +1 -1
  35. package/dist/application/next.d.ts +2 -0
  36. package/dist/application/next.d.ts.map +1 -1
  37. package/dist/application/next.js +7 -1
  38. package/dist/application/next.js.map +1 -1
  39. package/dist/application/project.d.ts +4 -22
  40. package/dist/application/project.d.ts.map +1 -1
  41. package/dist/application/project.js +3 -51
  42. package/dist/application/project.js.map +1 -1
  43. package/dist/application/target-check.d.ts +34 -0
  44. package/dist/application/target-check.d.ts.map +1 -0
  45. package/dist/application/target-check.js +90 -0
  46. package/dist/application/target-check.js.map +1 -0
  47. package/dist/application/target-governance-init.d.ts +36 -0
  48. package/dist/application/target-governance-init.d.ts.map +1 -0
  49. package/dist/application/target-governance-init.js +185 -0
  50. package/dist/application/target-governance-init.js.map +1 -0
  51. package/dist/application/target-governance-mutation.d.ts +20 -0
  52. package/dist/application/target-governance-mutation.d.ts.map +1 -0
  53. package/dist/application/target-governance-mutation.js +175 -0
  54. package/dist/application/target-governance-mutation.js.map +1 -0
  55. package/dist/application/target-governance-project.d.ts +34 -0
  56. package/dist/application/target-governance-project.d.ts.map +1 -0
  57. package/dist/application/target-governance-project.js +80 -0
  58. package/dist/application/target-governance-project.js.map +1 -0
  59. package/dist/application/target-governance-projection.d.ts +18 -0
  60. package/dist/application/target-governance-projection.d.ts.map +1 -0
  61. package/dist/application/target-governance-projection.js +248 -0
  62. package/dist/application/target-governance-projection.js.map +1 -0
  63. package/dist/application/target-governance-write.d.ts +17 -0
  64. package/dist/application/target-governance-write.d.ts.map +1 -0
  65. package/dist/application/target-governance-write.js +55 -0
  66. package/dist/application/target-governance-write.js.map +1 -0
  67. package/dist/application/target-grammar-boundary.d.ts +22 -0
  68. package/dist/application/target-grammar-boundary.d.ts.map +1 -0
  69. package/dist/application/target-grammar-boundary.js +91 -0
  70. package/dist/application/target-grammar-boundary.js.map +1 -0
  71. package/dist/application/target-mutate.d.ts +10 -0
  72. package/dist/application/target-mutate.d.ts.map +1 -0
  73. package/dist/application/target-mutate.js +81 -0
  74. package/dist/application/target-mutate.js.map +1 -0
  75. package/dist/application/target-project.d.ts +28 -0
  76. package/dist/application/target-project.d.ts.map +1 -0
  77. package/dist/application/target-project.js +60 -0
  78. package/dist/application/target-project.js.map +1 -0
  79. package/dist/application/target-temporal-analysis.d.ts +140 -0
  80. package/dist/application/target-temporal-analysis.d.ts.map +1 -0
  81. package/dist/application/target-temporal-analysis.js +414 -0
  82. package/dist/application/target-temporal-analysis.js.map +1 -0
  83. package/dist/application/target-temporal-input.d.ts +86 -0
  84. package/dist/application/target-temporal-input.d.ts.map +1 -0
  85. package/dist/application/target-temporal-input.js +240 -0
  86. package/dist/application/target-temporal-input.js.map +1 -0
  87. package/dist/application/target-unit-migration-candidate.d.ts +60 -0
  88. package/dist/application/target-unit-migration-candidate.d.ts.map +1 -0
  89. package/dist/application/target-unit-migration-candidate.js +294 -0
  90. package/dist/application/target-unit-migration-candidate.js.map +1 -0
  91. package/dist/application/target-unit-migration-request.d.ts +35 -0
  92. package/dist/application/target-unit-migration-request.d.ts.map +1 -0
  93. package/dist/application/target-unit-migration-request.js +70 -0
  94. package/dist/application/target-unit-migration-request.js.map +1 -0
  95. package/dist/application/target-unit-migration-result.d.ts +66 -0
  96. package/dist/application/target-unit-migration-result.d.ts.map +1 -0
  97. package/dist/application/target-unit-migration-result.js +86 -0
  98. package/dist/application/target-unit-migration-result.js.map +1 -0
  99. package/dist/application/unit-migration.d.ts +16 -0
  100. package/dist/application/unit-migration.d.ts.map +1 -0
  101. package/dist/application/unit-migration.js +11 -0
  102. package/dist/application/unit-migration.js.map +1 -0
  103. package/dist/cli.js +383 -132
  104. package/dist/cli.js.map +1 -1
  105. package/dist/command/discovery.d.ts +3 -3
  106. package/dist/command/discovery.d.ts.map +1 -1
  107. package/dist/command/discovery.js +149 -22
  108. package/dist/command/discovery.js.map +1 -1
  109. package/dist/command/registry.d.ts +8 -2
  110. package/dist/command/registry.d.ts.map +1 -1
  111. package/dist/command/registry.js +14 -1
  112. package/dist/command/registry.js.map +1 -1
  113. package/dist/command/target-governance-discovery.d.ts +31 -0
  114. package/dist/command/target-governance-discovery.d.ts.map +1 -0
  115. package/dist/command/target-governance-discovery.js +390 -0
  116. package/dist/command/target-governance-discovery.js.map +1 -0
  117. package/dist/command/target-governance-usage.d.ts +22 -0
  118. package/dist/command/target-governance-usage.d.ts.map +1 -0
  119. package/dist/command/target-governance-usage.js +116 -0
  120. package/dist/command/target-governance-usage.js.map +1 -0
  121. package/dist/command/usage.d.ts +2 -0
  122. package/dist/command/usage.d.ts.map +1 -1
  123. package/dist/command/usage.js +44 -26
  124. package/dist/command/usage.js.map +1 -1
  125. package/dist/conversion/mermaid-import.d.ts.map +1 -1
  126. package/dist/conversion/mermaid-import.js +3 -2
  127. package/dist/conversion/mermaid-import.js.map +1 -1
  128. package/dist/conversion/mermaid.d.ts.map +1 -1
  129. package/dist/conversion/mermaid.js +27 -0
  130. package/dist/conversion/mermaid.js.map +1 -1
  131. package/dist/formatter/source-formatter.d.ts +12 -0
  132. package/dist/formatter/source-formatter.d.ts.map +1 -1
  133. package/dist/formatter/source-formatter.js +59 -6
  134. package/dist/formatter/source-formatter.js.map +1 -1
  135. package/dist/formatter/target-source-formatter.d.ts +9 -0
  136. package/dist/formatter/target-source-formatter.d.ts.map +1 -0
  137. package/dist/formatter/target-source-formatter.js +52 -0
  138. package/dist/formatter/target-source-formatter.js.map +1 -0
  139. package/dist/governance/authority.d.ts +21 -0
  140. package/dist/governance/authority.d.ts.map +1 -0
  141. package/dist/governance/authority.js +206 -0
  142. package/dist/governance/authority.js.map +1 -0
  143. package/dist/governance/guidance.d.ts +2 -0
  144. package/dist/governance/guidance.d.ts.map +1 -0
  145. package/dist/governance/guidance.js +2 -0
  146. package/dist/governance/guidance.js.map +1 -0
  147. package/dist/governance/source.d.ts +37 -0
  148. package/dist/governance/source.d.ts.map +1 -0
  149. package/dist/governance/source.js +103 -0
  150. package/dist/governance/source.js.map +1 -0
  151. package/dist/governance/types.d.ts +41 -0
  152. package/dist/governance/types.d.ts.map +1 -0
  153. package/dist/governance/types.js +2 -0
  154. package/dist/governance/types.js.map +1 -0
  155. package/dist/help/guide.d.ts +8 -5
  156. package/dist/help/guide.d.ts.map +1 -1
  157. package/dist/help/guide.js +1 -1
  158. package/dist/help/guide.js.map +1 -1
  159. package/dist/help/registry.d.ts.map +1 -1
  160. package/dist/help/registry.js +124 -13
  161. package/dist/help/registry.js.map +1 -1
  162. package/dist/help/target-governance-guide.d.ts +10 -0
  163. package/dist/help/target-governance-guide.d.ts.map +1 -0
  164. package/dist/help/target-governance-guide.js +57 -0
  165. package/dist/help/target-governance-guide.js.map +1 -0
  166. package/dist/index.d.ts +25 -17
  167. package/dist/index.d.ts.map +1 -1
  168. package/dist/index.js +8 -8
  169. package/dist/index.js.map +1 -1
  170. package/dist/io/safe-write.d.ts +11 -0
  171. package/dist/io/safe-write.d.ts.map +1 -1
  172. package/dist/io/safe-write.js +40 -10
  173. package/dist/io/safe-write.js.map +1 -1
  174. package/dist/io/target-safe-write.d.ts +10 -0
  175. package/dist/io/target-safe-write.d.ts.map +1 -0
  176. package/dist/io/target-safe-write.js +51 -0
  177. package/dist/io/target-safe-write.js.map +1 -0
  178. package/dist/migration/conversion.d.ts +40 -0
  179. package/dist/migration/conversion.d.ts.map +1 -0
  180. package/dist/migration/conversion.js +106 -0
  181. package/dist/migration/conversion.js.map +1 -0
  182. package/dist/migration/grammar-boundary.d.ts +20 -0
  183. package/dist/migration/grammar-boundary.d.ts.map +1 -0
  184. package/dist/migration/grammar-boundary.js +95 -0
  185. package/dist/migration/grammar-boundary.js.map +1 -0
  186. package/dist/migration/request.d.ts +79 -0
  187. package/dist/migration/request.d.ts.map +1 -0
  188. package/dist/migration/request.js +308 -0
  189. package/dist/migration/request.js.map +1 -0
  190. package/dist/model/calendar-arithmetic.d.ts +46 -0
  191. package/dist/model/calendar-arithmetic.d.ts.map +1 -0
  192. package/dist/model/calendar-arithmetic.js +236 -0
  193. package/dist/model/calendar-arithmetic.js.map +1 -0
  194. package/dist/model/calendar.d.ts +22 -0
  195. package/dist/model/calendar.d.ts.map +1 -0
  196. package/dist/model/calendar.js +83 -0
  197. package/dist/model/calendar.js.map +1 -0
  198. package/dist/model/declaration-fields.d.ts +22 -0
  199. package/dist/model/declaration-fields.d.ts.map +1 -0
  200. package/dist/model/declaration-fields.js +72 -0
  201. package/dist/model/declaration-fields.js.map +1 -0
  202. package/dist/model/exact-duration-source.d.ts +10 -0
  203. package/dist/model/exact-duration-source.d.ts.map +1 -0
  204. package/dist/model/exact-duration-source.js +69 -0
  205. package/dist/model/exact-duration-source.js.map +1 -0
  206. package/dist/model/rational.d.ts +2 -2
  207. package/dist/model/rational.d.ts.map +1 -1
  208. package/dist/model/rational.js +3 -1
  209. package/dist/model/rational.js.map +1 -1
  210. package/dist/model/syntax.d.ts +9 -2
  211. package/dist/model/syntax.d.ts.map +1 -1
  212. package/dist/model/syntax.js +20 -4
  213. package/dist/model/syntax.js.map +1 -1
  214. package/dist/model/target-calendar.d.ts +25 -0
  215. package/dist/model/target-calendar.d.ts.map +1 -0
  216. package/dist/model/target-calendar.js +56 -0
  217. package/dist/model/target-calendar.js.map +1 -0
  218. package/dist/mutation/advance.d.ts +11 -0
  219. package/dist/mutation/advance.d.ts.map +1 -1
  220. package/dist/mutation/advance.js +37 -7
  221. package/dist/mutation/advance.js.map +1 -1
  222. package/dist/mutation/milestone.d.ts +10 -1
  223. package/dist/mutation/milestone.d.ts.map +1 -1
  224. package/dist/mutation/milestone.js +77 -21
  225. package/dist/mutation/milestone.js.map +1 -1
  226. package/dist/mutation/project.d.ts +11 -1
  227. package/dist/mutation/project.d.ts.map +1 -1
  228. package/dist/mutation/project.js +117 -11
  229. package/dist/mutation/project.js.map +1 -1
  230. package/dist/mutation/target-types.d.ts +59 -0
  231. package/dist/mutation/target-types.d.ts.map +1 -0
  232. package/dist/mutation/target-types.js +2 -0
  233. package/dist/mutation/target-types.js.map +1 -0
  234. package/dist/mutation/task.d.ts +12 -1
  235. package/dist/mutation/task.d.ts.map +1 -1
  236. package/dist/mutation/task.js +108 -49
  237. package/dist/mutation/task.js.map +1 -1
  238. package/dist/mutation/types.d.ts +16 -3
  239. package/dist/mutation/types.d.ts.map +1 -1
  240. package/dist/parser/document-parser.d.ts +21 -0
  241. package/dist/parser/document-parser.d.ts.map +1 -1
  242. package/dist/parser/document-parser.js +197 -38
  243. package/dist/parser/document-parser.js.map +1 -1
  244. package/dist/recommendation/override-types.d.ts +2 -2
  245. package/dist/recommendation/override.d.ts +2 -2
  246. package/dist/recommendation/override.d.ts.map +1 -1
  247. package/dist/recommendation/override.js +49 -12
  248. package/dist/recommendation/override.js.map +1 -1
  249. package/dist/semantic/target-validator.d.ts +46 -0
  250. package/dist/semantic/target-validator.d.ts.map +1 -0
  251. package/dist/semantic/target-validator.js +130 -0
  252. package/dist/semantic/target-validator.js.map +1 -0
  253. package/dist/semantic/validator.d.ts +3 -0
  254. package/dist/semantic/validator.d.ts.map +1 -1
  255. package/dist/semantic/validator.js +78 -5
  256. package/dist/semantic/validator.js.map +1 -1
  257. package/dist/version.d.ts +1 -1
  258. package/dist/version.js +1 -1
  259. package/package.json +1 -1
@@ -0,0 +1,390 @@
1
+ import { TOOL_VERSION } from "../version.js";
2
+ import { CONTRACT4_COMMAND_REGISTRY, getCommandDiscovery, } from "./discovery.js";
3
+ const commonProjectionOptionNames = new Set([
4
+ "diff",
5
+ "write",
6
+ "expect-digest",
7
+ "out",
8
+ "max-diagnostics",
9
+ "warnings-as-errors",
10
+ "format",
11
+ "color",
12
+ ]);
13
+ const governedOperations = new Set([
14
+ "project.set",
15
+ "dag.advance",
16
+ "task.add",
17
+ "task.set",
18
+ "task.remove",
19
+ "gate.add",
20
+ "gate.set",
21
+ "gate.remove",
22
+ "milestone.add",
23
+ "milestone.remove",
24
+ "batch.apply",
25
+ ]);
26
+ function valueOption(name, valueType, config = {}) {
27
+ return Object.freeze({
28
+ name,
29
+ kind: "value",
30
+ valueType,
31
+ required: false,
32
+ repeatable: config.repeatable ?? false,
33
+ defaultValue: null,
34
+ enumValues: Object.freeze([]),
35
+ conflicts: Object.freeze([]),
36
+ requires: Object.freeze([]),
37
+ sharedGroup: config.sharedGroup ?? null,
38
+ description: config.description ?? null,
39
+ spelling: Object.freeze({
40
+ cli: `--${name}`,
41
+ dsl: config.dsl ?? null,
42
+ json: name.replaceAll("-", "_"),
43
+ }),
44
+ });
45
+ }
46
+ const governanceAssertionOptions = Object.freeze([
47
+ valueOption("actor", "principal-id", {
48
+ sharedGroup: "governance",
49
+ description: "Caller principal evaluated against the pre-change owner and delegates.",
50
+ }),
51
+ valueOption("accepted-by-owner", "principal-id", {
52
+ repeatable: true,
53
+ sharedGroup: "governance",
54
+ description: "Caller assertion that the named effective owner was consulted.",
55
+ }),
56
+ ]);
57
+ const governanceProjectOptions = Object.freeze([
58
+ valueOption("goal-owner", "principal-id", {
59
+ dsl: "goal_owner",
60
+ description: "Declares the goal owner.",
61
+ }),
62
+ valueOption("goal-delegates", "principal-list", {
63
+ dsl: "goal_delegates",
64
+ description: "Declares the goal delegate set.",
65
+ }),
66
+ valueOption("dag-owner", "principal-id", {
67
+ dsl: "dag_owner",
68
+ description: "Declares the DAG owner.",
69
+ }),
70
+ valueOption("dag-delegates", "principal-list", {
71
+ dsl: "dag_delegates",
72
+ description: "Declares the DAG delegate set.",
73
+ }),
74
+ ]);
75
+ function insertDomainOptions(options, additions) {
76
+ const existing = new Set(options.map(({ name }) => name));
77
+ for (const option of additions) {
78
+ if (existing.has(option.name)) {
79
+ throw new Error(`Contract 5 option --${option.name} already exists`);
80
+ }
81
+ existing.add(option.name);
82
+ }
83
+ const insertionIndex = options.findIndex(({ name }) => commonProjectionOptionNames.has(name));
84
+ return Object.freeze(insertionIndex < 0
85
+ ? [...options, ...additions]
86
+ : [
87
+ ...options.slice(0, insertionIndex),
88
+ ...additions,
89
+ ...options.slice(insertionIndex),
90
+ ]);
91
+ }
92
+ function targetOptions(descriptor) {
93
+ let options = Object.freeze(descriptor.options.map((option) => Object.freeze({
94
+ ...option,
95
+ description: null,
96
+ })));
97
+ if (descriptor.operation === "project.init" ||
98
+ descriptor.operation === "project.set") {
99
+ options = insertDomainOptions(options, governanceProjectOptions);
100
+ }
101
+ if (descriptor.operation === "project.set") {
102
+ options = Object.freeze(options.map((option) => option.name !== "clear"
103
+ ? option
104
+ : Object.freeze({
105
+ ...option,
106
+ enumValues: Object.freeze([
107
+ ...option.enumValues,
108
+ "goal_owner",
109
+ "goal_delegates",
110
+ "dag_owner",
111
+ "dag_delegates",
112
+ ]),
113
+ })));
114
+ }
115
+ if (governedOperations.has(descriptor.operation)) {
116
+ options = insertDomainOptions(options, governanceAssertionOptions);
117
+ }
118
+ return options;
119
+ }
120
+ function targetExamples(descriptor) {
121
+ if (descriptor.operation !== "project.set") {
122
+ return descriptor.examples;
123
+ }
124
+ return Object.freeze([
125
+ ...descriptor.examples,
126
+ Object.freeze({
127
+ id: "governed-preview",
128
+ invocation: "perttool project set plan.pert --finish NEW_FINISH --actor codex --diff",
129
+ summary: "Preview goal authority facts without requiring owner confirmation.",
130
+ }),
131
+ Object.freeze({
132
+ id: "governed-write",
133
+ invocation: "perttool project set plan.pert --finish NEW_FINISH --actor codex --accepted-by-owner user --write",
134
+ summary: "Persist with a caller assertion that the effective owner was consulted.",
135
+ }),
136
+ ]);
137
+ }
138
+ function targetSchemas(descriptor) {
139
+ return Object.freeze(descriptor.resultSchemas.map((schema) => schema === "Perttool.ProjectResult.v2"
140
+ ? "Perttool.ProjectResult.v3"
141
+ : schema === "Perttool.MutationResult.v1"
142
+ ? "Perttool.MutationResult.v2"
143
+ : schema));
144
+ }
145
+ function targetDescriptor(descriptor) {
146
+ return Object.freeze({
147
+ ...descriptor,
148
+ contractVersion: 5,
149
+ options: targetOptions(descriptor),
150
+ resultSchemas: targetSchemas(descriptor),
151
+ examples: targetExamples(descriptor),
152
+ });
153
+ }
154
+ export const TARGET_GOVERNANCE_COMMAND_REGISTRY = Object.freeze(CONTRACT4_COMMAND_REGISTRY.map(targetDescriptor));
155
+ const activeCatalog = getCommandDiscovery({
156
+ resource: null,
157
+ action: null,
158
+ });
159
+ if (!activeCatalog.ok) {
160
+ throw new Error("Contract 4 command catalog is unavailable");
161
+ }
162
+ const resourceSummaries = activeCatalog.resources;
163
+ const targetCommandsByPath = new Map(TARGET_GOVERNANCE_COMMAND_REGISTRY.map((descriptor) => [
164
+ descriptor.path.join("\0"),
165
+ descriptor,
166
+ ]));
167
+ function diagnostic(code, message, query) {
168
+ return Object.freeze({
169
+ code,
170
+ severity: "error",
171
+ message,
172
+ data: Object.freeze({
173
+ resource: query.resource,
174
+ action: query.action,
175
+ }),
176
+ });
177
+ }
178
+ function result(query, resources, commands, diagnostics) {
179
+ return Object.freeze({
180
+ schemaVersion: "Perttool.CommandHelpResult.v1",
181
+ cliContractVersion: 5,
182
+ toolVersion: TOOL_VERSION,
183
+ operation: "help",
184
+ ok: diagnostics.length === 0,
185
+ query: Object.freeze({ ...query }),
186
+ resources: Object.freeze([...resources]),
187
+ commands: Object.freeze([...commands]),
188
+ diagnostics: Object.freeze([...diagnostics]),
189
+ });
190
+ }
191
+ export function getTargetGovernanceCommandDiscovery(query) {
192
+ if (query.resource === null) {
193
+ if (query.action !== null) {
194
+ return result(query, [], [], [
195
+ diagnostic("PTHLP-002", "a command action requires a resource", query),
196
+ ]);
197
+ }
198
+ return result(query, resourceSummaries, TARGET_GOVERNANCE_COMMAND_REGISTRY, []);
199
+ }
200
+ if (query.action === null) {
201
+ const topLevel = targetCommandsByPath.get(query.resource);
202
+ if (topLevel !== undefined && topLevel.path.length === 1) {
203
+ return result(query, [], [topLevel], []);
204
+ }
205
+ const resource = resourceSummaries.find(({ name }) => name === query.resource);
206
+ if (resource === undefined) {
207
+ return result(query, [], [], [
208
+ diagnostic("PTHLP-002", `unknown command resource or top-level command: ${query.resource}`, query),
209
+ ]);
210
+ }
211
+ return result(query, [resource], TARGET_GOVERNANCE_COMMAND_REGISTRY.filter((descriptor) => descriptor.path.length === 2 &&
212
+ descriptor.path[0] === query.resource), []);
213
+ }
214
+ const resource = resourceSummaries.find(({ name }) => name === query.resource);
215
+ if (resource === undefined) {
216
+ return result(query, [], [], [
217
+ diagnostic("PTHLP-002", `unknown command resource: ${query.resource}`, query),
218
+ ]);
219
+ }
220
+ const command = targetCommandsByPath.get(`${query.resource}\0${query.action}`);
221
+ if (command === undefined) {
222
+ return result(query, [], [], [
223
+ diagnostic("PTHLP-003", `unknown action ${query.action} for command resource ${query.resource}`, query),
224
+ ]);
225
+ }
226
+ return result(query, [resource], [command], []);
227
+ }
228
+ function optionToJson(option) {
229
+ return {
230
+ name: option.name,
231
+ kind: option.kind,
232
+ value_type: option.valueType,
233
+ required: option.required,
234
+ repeatable: option.repeatable,
235
+ default: option.defaultValue,
236
+ enum_values: option.enumValues,
237
+ conflicts: option.conflicts,
238
+ requires: option.requires,
239
+ shared_group: option.sharedGroup,
240
+ description: option.description,
241
+ spelling: option.spelling,
242
+ };
243
+ }
244
+ export function targetGovernanceCommandDescriptorToJson(descriptor) {
245
+ return {
246
+ cli_contract_version: descriptor.contractVersion,
247
+ path: descriptor.path,
248
+ operation: descriptor.operation,
249
+ summary: descriptor.summary,
250
+ operands: descriptor.operands.map((operand) => ({
251
+ name: operand.name,
252
+ value_type: operand.valueType,
253
+ required: operand.required,
254
+ position: operand.position,
255
+ })),
256
+ options: descriptor.options.map(optionToJson),
257
+ input: descriptor.input,
258
+ output: {
259
+ formats: descriptor.output.formats,
260
+ payload: descriptor.output.payload,
261
+ file_effect: descriptor.output.fileEffect,
262
+ },
263
+ stdin: {
264
+ document: descriptor.stdin.document,
265
+ artifact: descriptor.stdin.artifact,
266
+ request: descriptor.stdin.request,
267
+ mutually_exclusive: descriptor.stdin.mutuallyExclusive,
268
+ },
269
+ effect: descriptor.effect,
270
+ result_schemas: descriptor.resultSchemas,
271
+ exit_statuses: descriptor.exitStatuses,
272
+ examples: descriptor.examples,
273
+ };
274
+ }
275
+ export function targetGovernanceCommandRegistryToJson() {
276
+ return TARGET_GOVERNANCE_COMMAND_REGISTRY.map(targetGovernanceCommandDescriptorToJson);
277
+ }
278
+ function diagnosticToJson(value) {
279
+ return {
280
+ code: value.code,
281
+ severity: value.severity,
282
+ message: value.message,
283
+ data: value.data ?? null,
284
+ };
285
+ }
286
+ export function targetGovernanceCommandHelpResultToJson(value) {
287
+ return {
288
+ schema_version: value.schemaVersion,
289
+ cli_contract_version: value.cliContractVersion,
290
+ tool_version: value.toolVersion,
291
+ operation: value.operation,
292
+ ok: value.ok,
293
+ query: {
294
+ resource: value.query.resource,
295
+ action: value.query.action,
296
+ },
297
+ resources: value.resources.map((resource) => ({
298
+ name: resource.name,
299
+ summary: resource.summary,
300
+ actions: resource.actions,
301
+ })),
302
+ commands: value.commands.map(targetGovernanceCommandDescriptorToJson),
303
+ diagnostics: value.diagnostics.map(diagnosticToJson),
304
+ };
305
+ }
306
+ export function serializeTargetGovernanceCommandHelpResult(value) {
307
+ return `${JSON.stringify(targetGovernanceCommandHelpResultToJson(value), null, 2)}\n`;
308
+ }
309
+ function list(values) {
310
+ return values.length === 0 ? "-" : values.join(", ");
311
+ }
312
+ function renderDescriptor(descriptor) {
313
+ const lines = [
314
+ `Command: perttool ${descriptor.path.join(" ")}`,
315
+ `Summary: ${descriptor.summary}`,
316
+ `Operation: ${descriptor.operation}`,
317
+ `CLI contract: ${descriptor.contractVersion}`,
318
+ "Operands:",
319
+ ];
320
+ if (descriptor.operands.length === 0)
321
+ lines.push(" -");
322
+ for (const operand of descriptor.operands) {
323
+ lines.push(` ${operand.position}: ${operand.name} type=${operand.valueType} required=${operand.required}`);
324
+ }
325
+ lines.push("Options:");
326
+ if (descriptor.options.length === 0)
327
+ lines.push(" -");
328
+ for (const option of descriptor.options) {
329
+ lines.push(` --${option.name} kind=${option.kind} type=${option.valueType ?? "-"} required=${option.required} repeatable=${option.repeatable}`, ` default=${JSON.stringify(option.defaultValue)} enum=${list(option.enumValues)} shared=${option.sharedGroup ?? "-"}`, ` description=${option.description ?? "-"}`, ` conflicts=${list(option.conflicts)} requires=${list(option.requires)}`, ` spelling cli=${option.spelling.cli} dsl=${option.spelling.dsl ?? "-"} json=${option.spelling.json}`);
330
+ }
331
+ lines.push(`Input: ${descriptor.input}`, `Stdin: document=${descriptor.stdin.document} artifact=${descriptor.stdin.artifact} request=${descriptor.stdin.request} mutually-exclusive=${descriptor.stdin.mutuallyExclusive}`, `Effect: ${descriptor.effect}`, `Output: formats=${descriptor.output.formats.join(",")} payload=${descriptor.output.payload} file-effect=${descriptor.output.fileEffect}`, `Result schemas: ${list(descriptor.resultSchemas)}`, "Exit statuses:");
332
+ for (const status of descriptor.exitStatuses) {
333
+ lines.push(` ${status.code}: ${status.meaning}`);
334
+ }
335
+ lines.push("Examples:");
336
+ for (const example of descriptor.examples) {
337
+ lines.push(` ${example.id}: ${example.invocation}`, ` ${example.summary}`);
338
+ }
339
+ return lines;
340
+ }
341
+ export function renderTargetGovernanceCommandHelpResult(value) {
342
+ if (!value.ok) {
343
+ return `${[
344
+ "Command help lookup failed.",
345
+ ...value.diagnostics.map(({ code, severity, message }) => `${code} ${severity}: ${message}`),
346
+ ].join("\n")}\n`;
347
+ }
348
+ if (value.query.resource === null) {
349
+ const topLevel = value.commands.filter(({ path }) => path.length === 1);
350
+ const lines = [
351
+ "perttool command catalog (CLI Contract 5)",
352
+ "",
353
+ "Top-level commands:",
354
+ ...topLevel.map((descriptor) => ` ${descriptor.path[0]} ${descriptor.summary}`),
355
+ "",
356
+ "Resources:",
357
+ ];
358
+ for (const resource of value.resources) {
359
+ lines.push(` ${resource.name} ${resource.summary}`, ...resource.actions.map((action) => {
360
+ const command = value.commands.find(({ path }) => path.length === 2 &&
361
+ path[0] === resource.name &&
362
+ path[1] === action);
363
+ if (command === undefined) {
364
+ throw new Error("target command resource projection invariant failed");
365
+ }
366
+ return ` ${action} ${command.summary}`;
367
+ }));
368
+ }
369
+ return `${lines.join("\n")}\n`;
370
+ }
371
+ if (value.query.action === null && value.resources.length === 1) {
372
+ const resource = value.resources[0];
373
+ if (resource === undefined) {
374
+ throw new Error("target command resource projection invariant failed");
375
+ }
376
+ return `${[
377
+ `perttool ${resource.name} commands`,
378
+ resource.summary,
379
+ "",
380
+ "Actions:",
381
+ ...value.commands.map((descriptor) => ` ${descriptor.path[1]} ${descriptor.summary}`),
382
+ ].join("\n")}\n`;
383
+ }
384
+ const descriptor = value.commands[0];
385
+ if (descriptor === undefined) {
386
+ throw new Error("target command help result has no descriptor");
387
+ }
388
+ return `${renderDescriptor(descriptor).join("\n")}\n`;
389
+ }
390
+ //# sourceMappingURL=target-governance-discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-governance-discovery.js","sourceRoot":"","sources":["../../src/command/target-governance-discovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { GovernanceRequestInput } from "../governance/types.js";
2
+ import type { CommandOptionOccurrence, CommandUsageError } from "./usage.js";
3
+ import { renderCommandUsageError } from "./usage.js";
4
+ import { type TargetGovernanceCommandDescriptor } from "./target-governance-discovery.js";
5
+ export interface TargetGovernanceValidCommandInvocation {
6
+ readonly ok: true;
7
+ readonly descriptor: TargetGovernanceCommandDescriptor;
8
+ readonly helpAlias: boolean;
9
+ readonly operands: readonly string[];
10
+ readonly options: readonly CommandOptionOccurrence[];
11
+ }
12
+ export interface TargetGovernanceInvalidCommandInvocation {
13
+ readonly ok: false;
14
+ readonly error: CommandUsageError;
15
+ }
16
+ export type TargetGovernanceCommandInvocationValidation = TargetGovernanceValidCommandInvocation | TargetGovernanceInvalidCommandInvocation;
17
+ export declare function validateTargetGovernanceCommandInvocation(argv: readonly string[]): TargetGovernanceCommandInvocationValidation;
18
+ export declare function governanceRequestFromTargetInvocation(invocation: TargetGovernanceValidCommandInvocation): GovernanceRequestInput;
19
+ export declare function targetGovernanceCommandUsageErrorToJson(error: CommandUsageError): Readonly<Record<string, unknown>>;
20
+ export declare function serializeTargetGovernanceCommandUsageError(error: CommandUsageError): string;
21
+ export { renderCommandUsageError as renderTargetGovernanceCommandUsageError };
22
+ //# sourceMappingURL=target-governance-usage.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-governance-usage.d.ts","sourceRoot":"","sources":["../../src/command/target-governance-usage.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AACrE,OAAO,KAAK,EAGV,uBAAuB,EACvB,iBAAiB,EAClB,MAAM,YAAY,CAAC;AACpB,OAAO,EAEL,uBAAuB,EAExB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAEL,KAAK,iCAAiC,EACvC,MAAM,kCAAkC,CAAC;AAY1C,MAAM,WAAW,sCAAsC;IACrD,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,UAAU,EAAE,iCAAiC,CAAC;IACvD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,wCAAwC;IACvD,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,MAAM,2CAA2C,GACnD,sCAAsC,GACtC,wCAAwC,CAAC;AAsH7C,wBAAgB,yCAAyC,CACvD,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,2CAA2C,CAa7C;AAED,wBAAgB,qCAAqC,CACnD,UAAU,EAAE,sCAAsC,GACjD,sBAAsB,CAwBxB;AAED,wBAAgB,uCAAuC,CACrD,KAAK,EAAE,iBAAiB,GACvB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAEnC;AAED,wBAAgB,0CAA0C,CACxD,KAAK,EAAE,iBAAiB,GACvB,MAAM,CAIR;AAED,OAAO,EAAE,uBAAuB,IAAI,uCAAuC,EAAE,CAAC"}
@@ -0,0 +1,116 @@
1
+ import { commandUsageErrorToJsonForContract, renderCommandUsageError, validateCommandInvocationAgainstRegistry, } from "./usage.js";
2
+ import { TARGET_GOVERNANCE_COMMAND_REGISTRY, } from "./target-governance-discovery.js";
3
+ const principalPattern = /^[A-Za-z][A-Za-z0-9_-]*$/;
4
+ const principalListPattern = /^\[[ \t]*(?:[A-Za-z][A-Za-z0-9_-]*(?:[ \t]*,[ \t]*[A-Za-z][A-Za-z0-9_-]*)*)?[ \t]*\]$/;
5
+ const projectGovernanceOptionNames = new Set([
6
+ "goal-owner",
7
+ "goal-delegates",
8
+ "dag-owner",
9
+ "dag-delegates",
10
+ ]);
11
+ function helpTarget(descriptor) {
12
+ return descriptor.path.length === 1
13
+ ? Object.freeze({
14
+ resource: descriptor.path[0],
15
+ action: null,
16
+ })
17
+ : Object.freeze({
18
+ resource: descriptor.path[0],
19
+ action: descriptor.path[1],
20
+ });
21
+ }
22
+ function invalid(descriptor, kind, message, token) {
23
+ return {
24
+ ok: false,
25
+ error: Object.freeze({
26
+ code: "PTCLI-001",
27
+ kind,
28
+ message,
29
+ operation: descriptor.operation,
30
+ token,
31
+ helpTarget: helpTarget(descriptor),
32
+ suggestion: null,
33
+ }),
34
+ };
35
+ }
36
+ function principalList(value) {
37
+ if (!principalListPattern.test(value))
38
+ return null;
39
+ const interior = value.slice(1, -1).trim();
40
+ if (interior === "")
41
+ return Object.freeze([]);
42
+ const principals = interior.split(",").map((item) => item.trim());
43
+ return new Set(principals).size === principals.length
44
+ ? Object.freeze(principals)
45
+ : null;
46
+ }
47
+ function validateGovernanceValues(invocation) {
48
+ const optionByName = new Map(invocation.descriptor.options.map((option) => [
49
+ option.name,
50
+ option,
51
+ ]));
52
+ const seenAcceptedOwners = new Set();
53
+ const occurrenceByName = new Map(invocation.options.map((occurrence) => [
54
+ occurrence.name,
55
+ occurrence,
56
+ ]));
57
+ for (const occurrence of invocation.options) {
58
+ const descriptor = optionByName.get(occurrence.name);
59
+ if (descriptor === undefined || occurrence.value === null)
60
+ continue;
61
+ if (descriptor.valueType === "principal-id" &&
62
+ !principalPattern.test(occurrence.value)) {
63
+ return invalid(invocation.descriptor, "invalid_option_value", `option --${occurrence.name} requires an ASCII principal ID`, occurrence.value);
64
+ }
65
+ if (occurrence.name === "accepted-by-owner") {
66
+ if (seenAcceptedOwners.has(occurrence.value)) {
67
+ return invalid(invocation.descriptor, "duplicate_option", `option --accepted-by-owner repeats principal ${occurrence.value}`, occurrence.value);
68
+ }
69
+ seenAcceptedOwners.add(occurrence.value);
70
+ }
71
+ if (descriptor.valueType === "principal-list" &&
72
+ principalList(occurrence.value) === null) {
73
+ return invalid(invocation.descriptor, "invalid_option_value", `option --${occurrence.name} requires a duplicate-free bracketed principal list`, occurrence.value);
74
+ }
75
+ }
76
+ if (invocation.descriptor.operation === "project.init" &&
77
+ invocation.options.some(({ name }) => projectGovernanceOptionNames.has(name))) {
78
+ const version = occurrenceByName.get("version");
79
+ if (version !== undefined && version.value !== "4") {
80
+ return invalid(invocation.descriptor, "option_conflict", "project init governance options conflict with an explicit version other than 4", version.value);
81
+ }
82
+ }
83
+ return invocation;
84
+ }
85
+ export function validateTargetGovernanceCommandInvocation(argv) {
86
+ const validation = validateCommandInvocationAgainstRegistry(argv, TARGET_GOVERNANCE_COMMAND_REGISTRY);
87
+ if (!validation.ok)
88
+ return validation;
89
+ return validateGovernanceValues({
90
+ ...validation,
91
+ descriptor: validation.descriptor,
92
+ });
93
+ }
94
+ export function governanceRequestFromTargetInvocation(invocation) {
95
+ if (!invocation.descriptor.options.some(({ sharedGroup }) => sharedGroup === "governance")) {
96
+ throw new TypeError(`${invocation.descriptor.operation} has no governance assertion group`);
97
+ }
98
+ const actor = invocation.options.find(({ name }) => name === "actor")?.value ?? null;
99
+ const acceptedByOwner = invocation.options
100
+ .filter(({ name }) => name === "accepted-by-owner")
101
+ .map(({ value }) => value);
102
+ const persist = invocation.options.some(({ name }) => name === "write" || name === "out");
103
+ return Object.freeze({
104
+ intent: persist ? "persist" : "preview",
105
+ actor,
106
+ acceptedByOwner: Object.freeze(acceptedByOwner),
107
+ });
108
+ }
109
+ export function targetGovernanceCommandUsageErrorToJson(error) {
110
+ return commandUsageErrorToJsonForContract(error, 5);
111
+ }
112
+ export function serializeTargetGovernanceCommandUsageError(error) {
113
+ return `${JSON.stringify(targetGovernanceCommandUsageErrorToJson(error), null, 2)}\n`;
114
+ }
115
+ export { renderCommandUsageError as renderTargetGovernanceCommandUsageError };
116
+ //# sourceMappingURL=target-governance-usage.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-governance-usage.js","sourceRoot":"","sources":["../../src/command/target-governance-usage.ts"],"names":[],"mappings":"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"}
@@ -34,7 +34,9 @@ export interface InvalidCommandInvocation {
34
34
  readonly error: CommandUsageError;
35
35
  }
36
36
  export type CommandInvocationValidation = ValidCommandInvocation | InvalidCommandInvocation;
37
+ export declare function validateCommandInvocationAgainstRegistry(argv: readonly string[], registry: readonly ProjectedCommandDescriptor[]): CommandInvocationValidation;
37
38
  export declare function validateCommandInvocation(argv: readonly string[]): CommandInvocationValidation;
39
+ export declare function commandUsageErrorToJsonForContract(error: CommandUsageError, cliContractVersion: number): Readonly<Record<string, unknown>>;
38
40
  export declare function commandUsageErrorToJson(error: CommandUsageError): Readonly<Record<string, unknown>>;
39
41
  export declare function handlerCommandUsageError(descriptor: ProjectedCommandDescriptor, message: string): CommandUsageError;
40
42
  export declare function serializeCommandUsageError(error: CommandUsageError): string;
@@ -1 +1 @@
1
- {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/command/usage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAEhE,MAAM,MAAM,qBAAqB,GAC7B,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,sBAAsB,GACtB,yBAAyB,GACzB,kBAAkB,GAClB,sBAAsB,GACtB,iBAAiB,GACjB,eAAe,GACf,yBAAyB,GACzB,iBAAiB,GACjB,iBAAiB,CAAC;AAEtB,MAAM,MAAM,0BAA0B,GAClC,UAAU,GACV,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,UAAU,EAAE,0BAA0B,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,MAAM,2BAA2B,GACnC,sBAAsB,GACtB,wBAAwB,CAAC;AAwZ7B,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,2BAA2B,CAkD7B;AAmBD,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,GACvB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA+CnC;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,0BAA0B,EACtC,OAAO,EAAE,MAAM,GACd,iBAAiB,CAUnB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,iBAAiB,GACvB,MAAM,CAER;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,GACvB,MAAM,CASR"}
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/command/usage.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,0BAA0B,EAAE,MAAM,eAAe,CAAC;AAEhE,MAAM,MAAM,qBAAqB,GAC7B,kBAAkB,GAClB,kBAAkB,GAClB,gBAAgB,GAChB,gBAAgB,GAChB,gBAAgB,GAChB,sBAAsB,GACtB,yBAAyB,GACzB,kBAAkB,GAClB,sBAAsB,GACtB,iBAAiB,GACjB,eAAe,GACf,yBAAyB,GACzB,iBAAiB,GACjB,iBAAiB,CAAC;AAEtB,MAAM,MAAM,0BAA0B,GAClC,UAAU,GACV,QAAQ,GACR,QAAQ,CAAC;AAEb,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,QAAQ,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,IAAI,EAAE,0BAA0B,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,QAAQ,CAAC,IAAI,EAAE,WAAW,CAAC;IAC3B,QAAQ,CAAC,IAAI,EAAE,qBAAqB,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,QAAQ,CAAC,UAAU,EAAE,iBAAiB,CAAC;IACvC,QAAQ,CAAC,UAAU,EAAE,sBAAsB,GAAG,IAAI,CAAC;CACpD;AAED,MAAM,WAAW,uBAAuB;IACtC,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC;IACtB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,sBAAsB;IACrC,QAAQ,CAAC,EAAE,EAAE,IAAI,CAAC;IAClB,QAAQ,CAAC,UAAU,EAAE,0BAA0B,CAAC;IAChD,QAAQ,CAAC,SAAS,EAAE,OAAO,CAAC;IAC5B,QAAQ,CAAC,QAAQ,EAAE,SAAS,MAAM,EAAE,CAAC;IACrC,QAAQ,CAAC,OAAO,EAAE,SAAS,uBAAuB,EAAE,CAAC;CACtD;AAED,MAAM,WAAW,wBAAwB;IACvC,QAAQ,CAAC,EAAE,EAAE,KAAK,CAAC;IACnB,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC;CACnC;AAED,MAAM,MAAM,2BAA2B,GACnC,sBAAsB,GACtB,wBAAwB,CAAC;AAye7B,wBAAgB,wCAAwC,CACtD,IAAI,EAAE,SAAS,MAAM,EAAE,EACvB,QAAQ,EAAE,SAAS,0BAA0B,EAAE,GAC9C,2BAA2B,CAK7B;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,SAAS,MAAM,EAAE,GACtB,2BAA2B,CAK7B;AAmBD,wBAAgB,kCAAkC,CAChD,KAAK,EAAE,iBAAiB,EACxB,kBAAkB,EAAE,MAAM,GACzB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CA+CnC;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,GACvB,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAEnC;AAED,wBAAgB,wBAAwB,CACtC,UAAU,EAAE,0BAA0B,EACtC,OAAO,EAAE,MAAM,GACd,iBAAiB,CAUnB;AAED,wBAAgB,0BAA0B,CACxC,KAAK,EAAE,iBAAiB,GACvB,MAAM,CAER;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,iBAAiB,GACvB,MAAM,CASR"}