perttool 0.1.0 → 0.3.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 (213) hide show
  1. package/CHANGELOG.md +112 -33
  2. package/README.md +206 -111
  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/analyze.js +5 -5
  16. package/dist/application/analyze.js.map +1 -1
  17. package/dist/application/check.d.ts +16 -0
  18. package/dist/application/check.d.ts.map +1 -1
  19. package/dist/application/check.js +51 -0
  20. package/dist/application/check.js.map +1 -1
  21. package/dist/application/contract4.d.ts +17 -0
  22. package/dist/application/contract4.d.ts.map +1 -0
  23. package/dist/application/contract4.js +27 -0
  24. package/dist/application/contract4.js.map +1 -0
  25. package/dist/application/init.d.ts +43 -0
  26. package/dist/application/init.d.ts.map +1 -0
  27. package/dist/application/init.js +226 -0
  28. package/dist/application/init.js.map +1 -0
  29. package/dist/application/mutate.d.ts +19 -0
  30. package/dist/application/mutate.d.ts.map +1 -1
  31. package/dist/application/mutate.js +47 -25
  32. package/dist/application/mutate.js.map +1 -1
  33. package/dist/application/next.d.ts +2 -0
  34. package/dist/application/next.d.ts.map +1 -1
  35. package/dist/application/next.js +7 -1
  36. package/dist/application/next.js.map +1 -1
  37. package/dist/application/project.d.ts +3 -1
  38. package/dist/application/project.d.ts.map +1 -1
  39. package/dist/application/project.js +2 -1
  40. package/dist/application/project.js.map +1 -1
  41. package/dist/application/target-check.d.ts +34 -0
  42. package/dist/application/target-check.d.ts.map +1 -0
  43. package/dist/application/target-check.js +90 -0
  44. package/dist/application/target-check.js.map +1 -0
  45. package/dist/application/target-grammar-boundary.d.ts +22 -0
  46. package/dist/application/target-grammar-boundary.d.ts.map +1 -0
  47. package/dist/application/target-grammar-boundary.js +91 -0
  48. package/dist/application/target-grammar-boundary.js.map +1 -0
  49. package/dist/application/target-mutate.d.ts +8 -0
  50. package/dist/application/target-mutate.d.ts.map +1 -0
  51. package/dist/application/target-mutate.js +56 -0
  52. package/dist/application/target-mutate.js.map +1 -0
  53. package/dist/application/target-project.d.ts +28 -0
  54. package/dist/application/target-project.d.ts.map +1 -0
  55. package/dist/application/target-project.js +60 -0
  56. package/dist/application/target-project.js.map +1 -0
  57. package/dist/application/target-temporal-analysis.d.ts +138 -0
  58. package/dist/application/target-temporal-analysis.d.ts.map +1 -0
  59. package/dist/application/target-temporal-analysis.js +409 -0
  60. package/dist/application/target-temporal-analysis.js.map +1 -0
  61. package/dist/application/target-temporal-input.d.ts +86 -0
  62. package/dist/application/target-temporal-input.d.ts.map +1 -0
  63. package/dist/application/target-temporal-input.js +238 -0
  64. package/dist/application/target-temporal-input.js.map +1 -0
  65. package/dist/application/target-unit-migration-candidate.d.ts +60 -0
  66. package/dist/application/target-unit-migration-candidate.d.ts.map +1 -0
  67. package/dist/application/target-unit-migration-candidate.js +290 -0
  68. package/dist/application/target-unit-migration-candidate.js.map +1 -0
  69. package/dist/application/target-unit-migration-request.d.ts +35 -0
  70. package/dist/application/target-unit-migration-request.d.ts.map +1 -0
  71. package/dist/application/target-unit-migration-request.js +68 -0
  72. package/dist/application/target-unit-migration-request.js.map +1 -0
  73. package/dist/application/target-unit-migration-result.d.ts +66 -0
  74. package/dist/application/target-unit-migration-result.d.ts.map +1 -0
  75. package/dist/application/target-unit-migration-result.js +86 -0
  76. package/dist/application/target-unit-migration-result.js.map +1 -0
  77. package/dist/application/unit-migration.d.ts +13 -0
  78. package/dist/application/unit-migration.d.ts.map +1 -0
  79. package/dist/application/unit-migration.js +9 -0
  80. package/dist/application/unit-migration.js.map +1 -0
  81. package/dist/cli.js +494 -383
  82. package/dist/cli.js.map +1 -1
  83. package/dist/command/discovery.d.ts +30 -0
  84. package/dist/command/discovery.d.ts.map +1 -0
  85. package/dist/command/discovery.js +752 -0
  86. package/dist/command/discovery.js.map +1 -0
  87. package/dist/command/registry.d.ts +84 -0
  88. package/dist/command/registry.d.ts.map +1 -0
  89. package/dist/command/registry.js +964 -0
  90. package/dist/command/registry.js.map +1 -0
  91. package/dist/command/usage.d.ts +42 -0
  92. package/dist/command/usage.d.ts.map +1 -0
  93. package/dist/command/usage.js +337 -0
  94. package/dist/command/usage.js.map +1 -0
  95. package/dist/conversion/mermaid-import.js +56 -56
  96. package/dist/conversion/mermaid-import.js.map +1 -1
  97. package/dist/conversion/mermaid.js +1 -1
  98. package/dist/conversion/mermaid.js.map +1 -1
  99. package/dist/formatter/source-formatter.d.ts +12 -0
  100. package/dist/formatter/source-formatter.d.ts.map +1 -1
  101. package/dist/formatter/source-formatter.js +48 -6
  102. package/dist/formatter/source-formatter.js.map +1 -1
  103. package/dist/formatter/target-source-formatter.d.ts +8 -0
  104. package/dist/formatter/target-source-formatter.d.ts.map +1 -0
  105. package/dist/formatter/target-source-formatter.js +36 -0
  106. package/dist/formatter/target-source-formatter.js.map +1 -0
  107. package/dist/help/guide.d.ts +12 -0
  108. package/dist/help/guide.d.ts.map +1 -0
  109. package/dist/help/guide.js +103 -0
  110. package/dist/help/guide.js.map +1 -0
  111. package/dist/help/registry.d.ts +0 -6
  112. package/dist/help/registry.d.ts.map +1 -1
  113. package/dist/help/registry.js +186 -86
  114. package/dist/help/registry.js.map +1 -1
  115. package/dist/index.d.ts +20 -7
  116. package/dist/index.d.ts.map +1 -1
  117. package/dist/index.js +8 -3
  118. package/dist/index.js.map +1 -1
  119. package/dist/io/safe-write.d.ts +7 -0
  120. package/dist/io/safe-write.d.ts.map +1 -1
  121. package/dist/io/safe-write.js +36 -27
  122. package/dist/io/safe-write.js.map +1 -1
  123. package/dist/io/target-safe-write.d.ts +7 -0
  124. package/dist/io/target-safe-write.d.ts.map +1 -0
  125. package/dist/io/target-safe-write.js +33 -0
  126. package/dist/io/target-safe-write.js.map +1 -0
  127. package/dist/migration/conversion.d.ts +40 -0
  128. package/dist/migration/conversion.d.ts.map +1 -0
  129. package/dist/migration/conversion.js +106 -0
  130. package/dist/migration/conversion.js.map +1 -0
  131. package/dist/migration/grammar-boundary.d.ts +20 -0
  132. package/dist/migration/grammar-boundary.d.ts.map +1 -0
  133. package/dist/migration/grammar-boundary.js +92 -0
  134. package/dist/migration/grammar-boundary.js.map +1 -0
  135. package/dist/migration/request.d.ts +79 -0
  136. package/dist/migration/request.d.ts.map +1 -0
  137. package/dist/migration/request.js +308 -0
  138. package/dist/migration/request.js.map +1 -0
  139. package/dist/model/calendar-arithmetic.d.ts +46 -0
  140. package/dist/model/calendar-arithmetic.d.ts.map +1 -0
  141. package/dist/model/calendar-arithmetic.js +236 -0
  142. package/dist/model/calendar-arithmetic.js.map +1 -0
  143. package/dist/model/calendar.d.ts +22 -0
  144. package/dist/model/calendar.d.ts.map +1 -0
  145. package/dist/model/calendar.js +83 -0
  146. package/dist/model/calendar.js.map +1 -0
  147. package/dist/model/declaration-fields.d.ts +15 -0
  148. package/dist/model/declaration-fields.d.ts.map +1 -0
  149. package/dist/model/declaration-fields.js +54 -0
  150. package/dist/model/declaration-fields.js.map +1 -0
  151. package/dist/model/exact-duration-source.d.ts +10 -0
  152. package/dist/model/exact-duration-source.d.ts.map +1 -0
  153. package/dist/model/exact-duration-source.js +69 -0
  154. package/dist/model/exact-duration-source.js.map +1 -0
  155. package/dist/model/rational.d.ts +2 -2
  156. package/dist/model/rational.d.ts.map +1 -1
  157. package/dist/model/rational.js +3 -1
  158. package/dist/model/rational.js.map +1 -1
  159. package/dist/model/syntax.d.ts +9 -2
  160. package/dist/model/syntax.d.ts.map +1 -1
  161. package/dist/model/syntax.js +20 -4
  162. package/dist/model/syntax.js.map +1 -1
  163. package/dist/model/target-calendar.d.ts +25 -0
  164. package/dist/model/target-calendar.d.ts.map +1 -0
  165. package/dist/model/target-calendar.js +56 -0
  166. package/dist/model/target-calendar.js.map +1 -0
  167. package/dist/mutation/advance.d.ts.map +1 -1
  168. package/dist/mutation/advance.js +21 -4
  169. package/dist/mutation/advance.js.map +1 -1
  170. package/dist/mutation/gate.d.ts +5 -0
  171. package/dist/mutation/gate.d.ts.map +1 -0
  172. package/dist/mutation/gate.js +156 -0
  173. package/dist/mutation/gate.js.map +1 -0
  174. package/dist/mutation/milestone.d.ts +10 -1
  175. package/dist/mutation/milestone.d.ts.map +1 -1
  176. package/dist/mutation/milestone.js +104 -48
  177. package/dist/mutation/milestone.js.map +1 -1
  178. package/dist/mutation/project.d.ts +7 -1
  179. package/dist/mutation/project.d.ts.map +1 -1
  180. package/dist/mutation/project.js +32 -19
  181. package/dist/mutation/project.js.map +1 -1
  182. package/dist/mutation/resource.js +22 -22
  183. package/dist/mutation/resource.js.map +1 -1
  184. package/dist/mutation/target-types.d.ts +42 -0
  185. package/dist/mutation/target-types.d.ts.map +1 -0
  186. package/dist/mutation/target-types.js +2 -0
  187. package/dist/mutation/target-types.js.map +1 -0
  188. package/dist/mutation/task.d.ts +12 -1
  189. package/dist/mutation/task.d.ts.map +1 -1
  190. package/dist/mutation/task.js +148 -89
  191. package/dist/mutation/task.js.map +1 -1
  192. package/dist/mutation/types.d.ts +34 -3
  193. package/dist/mutation/types.d.ts.map +1 -1
  194. package/dist/parser/document-parser.d.ts +14 -0
  195. package/dist/parser/document-parser.d.ts.map +1 -1
  196. package/dist/parser/document-parser.js +159 -55
  197. package/dist/parser/document-parser.js.map +1 -1
  198. package/dist/recommendation/override-types.d.ts +2 -2
  199. package/dist/recommendation/override.d.ts +2 -2
  200. package/dist/recommendation/override.d.ts.map +1 -1
  201. package/dist/recommendation/override.js +49 -12
  202. package/dist/recommendation/override.js.map +1 -1
  203. package/dist/semantic/target-validator.d.ts +36 -0
  204. package/dist/semantic/target-validator.d.ts.map +1 -0
  205. package/dist/semantic/target-validator.js +87 -0
  206. package/dist/semantic/target-validator.js.map +1 -0
  207. package/dist/semantic/validator.d.ts +2 -0
  208. package/dist/semantic/validator.d.ts.map +1 -1
  209. package/dist/semantic/validator.js +90 -45
  210. package/dist/semantic/validator.js.map +1 -1
  211. package/dist/version.d.ts +1 -1
  212. package/dist/version.js +1 -1
  213. package/package.json +3 -3
@@ -39,6 +39,21 @@ const reservedWords = new Set([
39
39
  "hour",
40
40
  "point",
41
41
  ]);
42
+ const grammar1ValidationProfile = {
43
+ supportedGrammarVersions: new Set([1]),
44
+ unsupportedVersionMessage: "Only grammar version 1 is supported",
45
+ temporalAnchorGrammarVersions: new Set(),
46
+ };
47
+ const targetValidationProfile = {
48
+ supportedGrammarVersions: new Set([1, 2]),
49
+ unsupportedVersionMessage: "Only grammar versions 1 and 2 are supported",
50
+ temporalAnchorGrammarVersions: new Set([2]),
51
+ };
52
+ const targetGrammar3ValidationProfile = {
53
+ supportedGrammarVersions: new Set([1, 2, 3]),
54
+ unsupportedVersionMessage: "Only grammar versions 1, 2, and 3 are supported",
55
+ temporalAnchorGrammarVersions: new Set([2, 3]),
56
+ };
42
57
  function makeDiagnostic(code, severity, message, diagnosticSpan, helpTopic, entityId, related) {
43
58
  return {
44
59
  code,
@@ -59,7 +74,7 @@ function zeroSpan(document) {
59
74
  function requireField(declaration, fieldName, diagnostics) {
60
75
  const fields = fieldsNamed(declaration, fieldName);
61
76
  if (fields.length === 0) {
62
- diagnostics.push(makeDiagnostic("PTSEM-101", "error", `${declaration.kind} ${declaration.id}にrequired field ${fieldName}がありません`, declaration.idSpan, `syntax.${declaration.kind}`, declaration.id));
77
+ diagnostics.push(makeDiagnostic("PTSEM-101", "error", `${declaration.kind} ${declaration.id} is missing required field ${fieldName}`, declaration.idSpan, `syntax.${declaration.kind}`, declaration.id));
63
78
  return undefined;
64
79
  }
65
80
  return fields[0];
@@ -72,14 +87,17 @@ function validateDuplicateFields(declaration, diagnostics) {
72
87
  firstByName.set(field.name, field);
73
88
  continue;
74
89
  }
75
- diagnostics.push(makeDiagnostic("PTSEM-102", "error", `${declaration.kind} ${declaration.id}でfield ${field.name}が重複しています`, field.span, `syntax.${declaration.kind}`, declaration.id, [{ message: "最初のfield", span: first.span }]));
90
+ diagnostics.push(makeDiagnostic("PTSEM-102", "error", `Field ${field.name} is duplicated in ${declaration.kind} ${declaration.id}`, field.span, `syntax.${declaration.kind}`, declaration.id, [{ message: "First field", span: first.span }]));
76
91
  }
77
92
  }
78
93
  function durationValue(field) {
79
94
  if (field === undefined || typeof field.value !== "object" || field.value === null) {
80
95
  return undefined;
81
96
  }
82
- return "digits" in field.value && "suffix" in field.value
97
+ if (!("suffix" in field.value))
98
+ return undefined;
99
+ return (("digits" in field.value && "scale" in field.value) ||
100
+ ("numerator" in field.value && "denominator" in field.value))
83
101
  ? field.value
84
102
  : undefined;
85
103
  }
@@ -94,7 +112,7 @@ function velocityValue(field) {
94
112
  function validateNonemptyText(declaration, fieldName, diagnostics) {
95
113
  const field = fieldNamed(declaration, fieldName);
96
114
  if (field !== undefined && typeof field.value === "string" && field.value.length === 0) {
97
- diagnostics.push(makeDiagnostic("PTSEM-106", "error", `${fieldName}は空にできません`, field.valueSpan, `syntax.${declaration.kind}`, declaration.id));
115
+ diagnostics.push(makeDiagnostic("PTSEM-106", "error", `${fieldName} must not be empty`, field.valueSpan, `syntax.${declaration.kind}`, declaration.id));
98
116
  }
99
117
  }
100
118
  function validateTags(declaration, diagnostics) {
@@ -106,7 +124,7 @@ function validateTags(declaration, diagnostics) {
106
124
  if (typeof tag !== "string")
107
125
  continue;
108
126
  if (seen.has(tag)) {
109
- diagnostics.push(makeDiagnostic("PTSEM-107", "error", `tag ${tag}が重複しています`, field.valueSpan, "syntax.tags", declaration.id));
127
+ diagnostics.push(makeDiagnostic("PTSEM-107", "error", `Tag ${tag} is duplicated`, field.valueSpan, "syntax.tags", declaration.id));
110
128
  return;
111
129
  }
112
130
  seen.add(tag);
@@ -126,20 +144,20 @@ function isValidIsoDate(raw) {
126
144
  return (/^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(?:\.\d+)?(?:Z|[+-]\d{2}:\d{2})$/.test(raw) &&
127
145
  !Number.isNaN(Date.parse(raw)));
128
146
  }
129
- function validateFieldConstraints(document, diagnostics) {
147
+ function validateFieldConstraints(document, diagnostics, profile) {
130
148
  const projects = document.declarations.filter((declaration) => declaration.kind === "project");
131
149
  if (projects.length === 0) {
132
- diagnostics.push(makeDiagnostic("PTSEM-101", "error", "project declarationがありません", zeroSpan(document), "syntax.project"));
150
+ diagnostics.push(makeDiagnostic("PTSEM-101", "error", "Missing project declaration", zeroSpan(document), "syntax.project"));
133
151
  }
134
152
  if (projects.length > 1) {
135
153
  const first = projects[0];
136
154
  for (const project of projects.slice(1)) {
137
- diagnostics.push(makeDiagnostic("PTSEM-201", "error", "project declarationはexactly oneです", project.idSpan, "syntax.project", project.id, [{ message: "最初のproject", span: first.idSpan }]));
155
+ diagnostics.push(makeDiagnostic("PTSEM-201", "error", "There must be exactly one project declaration", project.idSpan, "syntax.project", project.id, [{ message: "First project", span: first.idSpan }]));
138
156
  }
139
157
  }
140
158
  const firstDeclaration = document.declarations[0];
141
159
  if (firstDeclaration !== undefined && firstDeclaration.kind !== "project") {
142
- diagnostics.push(makeDiagnostic("PTDSL-003", "error", "projectは最初のdeclarationでなければなりません", firstDeclaration.idSpan, "syntax.top-level", firstDeclaration.id));
160
+ diagnostics.push(makeDiagnostic("PTDSL-003", "error", "The project must be the first declaration", firstDeclaration.idSpan, "syntax.top-level", firstDeclaration.id));
143
161
  }
144
162
  for (const declaration of document.declarations) {
145
163
  validateDuplicateFields(declaration, diagnostics);
@@ -153,17 +171,19 @@ function validateFieldConstraints(document, diagnostics) {
153
171
  const velocity = velocityValue(velocityField);
154
172
  requireField(declaration, "finish", diagnostics);
155
173
  const version = fieldNamed(declaration, "version");
156
- if (version !== undefined && version.value !== 1) {
157
- diagnostics.push(makeDiagnostic("PTSEM-108", "error", "grammar version 1だけを受理します", version.valueSpan, "syntax.project", declaration.id));
174
+ if (version !== undefined &&
175
+ typeof version.value === "number" &&
176
+ !profile.supportedGrammarVersions.has(version.value)) {
177
+ diagnostics.push(makeDiagnostic("PTSEM-108", "error", profile.unsupportedVersionMessage, version.valueSpan, "syntax.project", declaration.id));
158
178
  }
159
179
  const asOf = fieldNamed(declaration, "as_of");
160
180
  if (asOf !== undefined && typeof asOf.value === "string" && !isValidIsoDate(asOf.value)) {
161
- diagnostics.push(makeDiagnostic("PTDSL-008", "error", "as_ofが有効なISO date/date-timeではありません", asOf.valueSpan, "syntax.project", declaration.id));
181
+ diagnostics.push(makeDiagnostic("PTDSL-008", "error", "as_of is not a valid ISO date or date-time", asOf.valueSpan, "syntax.project", declaration.id));
162
182
  }
163
183
  const criticalEpsilon = durationValue(fieldNamed(declaration, "critical_epsilon"));
164
184
  const targetDuration = durationValue(fieldNamed(declaration, "target_duration"));
165
185
  if (targetDuration !== undefined && isZeroDuration(targetDuration)) {
166
- diagnostics.push(makeDiagnostic("PTSEM-104", "error", "target_durationは0より大きくしてください", fieldNamed(declaration, "target_duration").valueSpan, "syntax.duration", declaration.id));
186
+ diagnostics.push(makeDiagnostic("PTSEM-104", "error", "target_duration must be greater than 0", fieldNamed(declaration, "target_duration").valueSpan, "syntax.duration", declaration.id));
167
187
  }
168
188
  void title;
169
189
  void criticalEpsilon;
@@ -178,21 +198,21 @@ function validateFieldConstraints(document, diagnostics) {
178
198
  for (const valueField of values) {
179
199
  const value = durationValue(valueField);
180
200
  if (value !== undefined && value.suffix !== expectedSuffix) {
181
- diagnostics.push(makeDiagnostic("PTSEM-105", "error", `project unit ${durationUnit.value}とduration suffixが一致しません`, valueField.valueSpan, "syntax.duration", candidate.id));
201
+ diagnostics.push(makeDiagnostic("PTSEM-105", "error", `Duration suffix does not match project unit ${durationUnit.value}`, valueField.valueSpan, "syntax.duration", candidate.id));
182
202
  }
183
203
  }
184
204
  }
185
205
  }
186
206
  if (durationUnit.value === "point" && velocityField === undefined) {
187
- diagnostics.push(makeDiagnostic("PTSEM-111", "error", "duration_unit pointにはvelocityが必要です", durationUnit.valueSpan, "syntax.velocity", declaration.id));
207
+ diagnostics.push(makeDiagnostic("PTSEM-111", "error", "duration_unit point requires velocity", durationUnit.valueSpan, "syntax.velocity", declaration.id));
188
208
  }
189
209
  if (velocity !== undefined) {
190
210
  if (isZeroDuration(velocity.points) || isZeroDuration(velocity.period)) {
191
- diagnostics.push(makeDiagnostic("PTSEM-111", "error", "velocityのPoint量と期間量は0より大きくしてください", velocityField.valueSpan, "syntax.velocity", declaration.id));
211
+ diagnostics.push(makeDiagnostic("PTSEM-111", "error", "Velocity point and period values must be greater than 0", velocityField.valueSpan, "syntax.velocity", declaration.id));
192
212
  }
193
213
  if (durationUnit.value !== "point" &&
194
214
  velocity.period.suffix !== expectedSuffix) {
195
- diagnostics.push(makeDiagnostic("PTSEM-111", "error", `project unit ${durationUnit.value}とvelocity期間suffixが一致しません`, velocityField.valueSpan, "syntax.velocity", declaration.id));
215
+ diagnostics.push(makeDiagnostic("PTSEM-111", "error", `Velocity period suffix does not match project unit ${durationUnit.value}`, velocityField.valueSpan, "syntax.velocity", declaration.id));
196
216
  }
197
217
  }
198
218
  }
@@ -201,7 +221,7 @@ function validateFieldConstraints(document, diagnostics) {
201
221
  requireField(declaration, "title", diagnostics);
202
222
  const capacity = requireField(declaration, "capacity", diagnostics);
203
223
  if (capacity !== undefined && typeof capacity.value === "number" && capacity.value < 1) {
204
- diagnostics.push(makeDiagnostic("PTSEM-109", "error", "resource capacityは1以上です", capacity.valueSpan, "syntax.resource", declaration.id));
224
+ diagnostics.push(makeDiagnostic("PTSEM-109", "error", "Resource capacity must be at least 1", capacity.valueSpan, "syntax.resource", declaration.id));
205
225
  }
206
226
  }
207
227
  if (declaration.kind === "milestone") {
@@ -212,11 +232,11 @@ function validateFieldConstraints(document, diagnostics) {
212
232
  const durations = fieldsNamed(declaration, "duration");
213
233
  const estimates = fieldsNamed(declaration, "estimate");
214
234
  if (durations.length + estimates.length !== 1) {
215
- diagnostics.push(makeDiagnostic("PTSEM-103", "error", "taskはdurationまたはestimateのどちらかexactly oneを必要とします", declaration.idSpan, "syntax.task", declaration.id));
235
+ diagnostics.push(makeDiagnostic("PTSEM-103", "error", "A task must have exactly one of duration or estimate", declaration.idSpan, "syntax.task", declaration.id));
216
236
  }
217
237
  const duration = durationValue(durations[0]);
218
238
  if (duration !== undefined && isZeroDuration(duration)) {
219
- diagnostics.push(makeDiagnostic("PTSEM-104", "error", "task durationは0より大きくしてください", durations[0].valueSpan, "syntax.duration", declaration.id));
239
+ diagnostics.push(makeDiagnostic("PTSEM-104", "error", "Task duration must be greater than 0", durations[0].valueSpan, "syntax.duration", declaration.id));
220
240
  }
221
241
  const estimate = estimates[0];
222
242
  if (estimate !== undefined) {
@@ -224,7 +244,7 @@ function validateFieldConstraints(document, diagnostics) {
224
244
  for (const name of ["optimistic", "most_likely", "pessimistic"]) {
225
245
  const matching = children.filter((child) => child.name === name);
226
246
  if (matching.length !== 1) {
227
- diagnostics.push(makeDiagnostic(matching.length === 0 ? "PTSEM-101" : "PTSEM-102", "error", `estimate ${name}はexactly one必要です`, estimate.span, "syntax.estimate", declaration.id));
247
+ diagnostics.push(makeDiagnostic(matching.length === 0 ? "PTSEM-101" : "PTSEM-102", "error", `Estimate requires exactly one ${name} value`, estimate.span, "syntax.estimate", declaration.id));
228
248
  }
229
249
  }
230
250
  const optimistic = durationValue(children.find((child) => child.name === "optimistic"));
@@ -236,31 +256,31 @@ function validateFieldConstraints(document, diagnostics) {
236
256
  (compareDurations(optimistic, mostLikely) > 0 ||
237
257
  compareDurations(mostLikely, pessimistic) > 0 ||
238
258
  isZeroDuration(pessimistic))) {
239
- diagnostics.push(makeDiagnostic("PTSEM-104", "error", "estimateはoptimistic <= most_likely <= pessimisticかつpessimistic > 0を満たしてください", estimate.span, "syntax.estimate", declaration.id));
259
+ diagnostics.push(makeDiagnostic("PTSEM-104", "error", "An estimate must satisfy optimistic <= most_likely <= pessimistic and pessimistic > 0", estimate.span, "syntax.estimate", declaration.id));
240
260
  }
241
261
  }
242
262
  const status = fieldNamed(declaration, "status")?.value ?? "planned";
243
263
  const blockedReason = fieldNamed(declaration, "blocked_reason");
244
264
  if ((status === "blocked") !== (blockedReason !== undefined)) {
245
- diagnostics.push(makeDiagnostic("PTSEM-103", "error", "blocked_reasonはstatus=blockedの場合だけ必須です", blockedReason?.span ?? fieldNamed(declaration, "status")?.span ?? declaration.idSpan, "syntax.task", declaration.id));
265
+ diagnostics.push(makeDiagnostic("PTSEM-103", "error", "blocked_reason is required only when status=blocked", blockedReason?.span ?? fieldNamed(declaration, "status")?.span ?? declaration.idSpan, "syntax.task", declaration.id));
246
266
  }
247
267
  validateNonemptyText(declaration, "blocked_reason", diagnostics);
248
268
  const requirements = fieldNamed(declaration, "requires");
249
269
  if (requirements !== undefined && Array.isArray(requirements.value)) {
250
270
  if (requirements.value.length === 0) {
251
- diagnostics.push(makeDiagnostic("PTSEM-101", "error", "requires blockは1件以上必要です", requirements.span, "syntax.task", declaration.id));
271
+ diagnostics.push(makeDiagnostic("PTSEM-101", "error", "The requires block must contain at least one requirement", requirements.span, "syntax.task", declaration.id));
252
272
  }
253
273
  const seen = new Map();
254
274
  for (const requirement of requirements.value) {
255
275
  const first = seen.get(requirement.resourceId);
256
276
  if (first !== undefined) {
257
- diagnostics.push(makeDiagnostic("PTSEM-110", "error", `resource requirement ${requirement.resourceId}が重複しています`, requirement.resourceSpan, "syntax.task", declaration.id, [{ message: "最初のrequirement", span: first.resourceSpan }]));
277
+ diagnostics.push(makeDiagnostic("PTSEM-110", "error", `Resource requirement ${requirement.resourceId} is duplicated`, requirement.resourceSpan, "syntax.task", declaration.id, [{ message: "First requirement", span: first.resourceSpan }]));
258
278
  }
259
279
  else {
260
280
  seen.set(requirement.resourceId, requirement);
261
281
  }
262
282
  if (requirement.units < 1) {
263
- diagnostics.push(makeDiagnostic("PTSEM-109", "error", "requirement unitsは1以上です", requirement.unitsSpan, "syntax.resource", declaration.id));
283
+ diagnostics.push(makeDiagnostic("PTSEM-109", "error", "Requirement units must be at least 1", requirement.unitsSpan, "syntax.resource", declaration.id));
264
284
  }
265
285
  }
266
286
  }
@@ -270,16 +290,32 @@ function validateFieldConstraints(document, diagnostics) {
270
290
  validateNonemptyText(declaration, "reason", diagnostics);
271
291
  }
272
292
  }
293
+ if (projects.length !== 1)
294
+ return;
295
+ const project = projects[0];
296
+ const version = fieldNamed(project, "version")?.value ?? 1;
297
+ if (typeof version !== "number" ||
298
+ !profile.temporalAnchorGrammarVersions.has(version) ||
299
+ fieldNamed(project, "as_of") !== undefined) {
300
+ return;
301
+ }
302
+ for (const declaration of document.declarations) {
303
+ for (const field of declaration.fields) {
304
+ if (field.name !== "deadline" && field.name !== "not_before")
305
+ continue;
306
+ diagnostics.push(makeDiagnostic("PTSEM-112", "error", `${declaration.kind} ${declaration.id}.${field.name} requires project.as_of`, field.valueSpan, "syntax.temporal", declaration.id));
307
+ }
308
+ }
273
309
  }
274
310
  function validateGraph(document, diagnostics) {
275
311
  const firstById = new Map();
276
312
  for (const declaration of document.declarations) {
277
313
  if (reservedWords.has(declaration.id)) {
278
- diagnostics.push(makeDiagnostic("PTSEM-202", "error", `reserved word ${declaration.id}はentity IDに使用できません`, declaration.idSpan, "syntax", declaration.id));
314
+ diagnostics.push(makeDiagnostic("PTSEM-202", "error", `Reserved word ${declaration.id} cannot be used as an entity ID`, declaration.idSpan, "syntax", declaration.id));
279
315
  }
280
316
  const first = firstById.get(declaration.id);
281
317
  if (first !== undefined) {
282
- diagnostics.push(makeDiagnostic("PTSEM-201", "error", `entity ID ${declaration.id}が重複しています`, declaration.idSpan, "errors", declaration.id, [{ message: "最初のdeclaration", span: first.idSpan }]));
318
+ diagnostics.push(makeDiagnostic("PTSEM-201", "error", `Entity ID ${declaration.id} is duplicated`, declaration.idSpan, "errors", declaration.id, [{ message: "First declaration", span: first.idSpan }]));
283
319
  }
284
320
  else {
285
321
  firstById.set(declaration.id, declaration);
@@ -306,10 +342,10 @@ function validateGraph(document, diagnostics) {
306
342
  const finish = finishField.value;
307
343
  const finishEntity = firstById.get(finish);
308
344
  if (finishEntity === undefined) {
309
- diagnostics.push(makeDiagnostic("PTSEM-203", "error", `project.finish ${finish}が未定義です`, finishField.valueSpan, "syntax.project", project.id));
345
+ diagnostics.push(makeDiagnostic("PTSEM-203", "error", `project.finish ${finish} is undefined`, finishField.valueSpan, "syntax.project", project.id));
310
346
  }
311
347
  else if (finishEntity.kind !== "milestone") {
312
- diagnostics.push(makeDiagnostic("PTSEM-205", "error", `project.finish ${finish}はmilestoneではありません`, finishField.valueSpan, "syntax.project", project.id));
348
+ diagnostics.push(makeDiagnostic("PTSEM-205", "error", `project.finish ${finish} is not a milestone`, finishField.valueSpan, "syntax.project", project.id));
313
349
  }
314
350
  for (const edge of edges) {
315
351
  for (const [endpoint, endpointSpan] of [
@@ -318,14 +354,14 @@ function validateGraph(document, diagnostics) {
318
354
  ]) {
319
355
  const entity = firstById.get(endpoint);
320
356
  if (entity === undefined) {
321
- diagnostics.push(makeDiagnostic("PTSEM-204", "error", `endpoint ${endpoint}が未定義です`, endpointSpan, `syntax.${edge.declaration.kind}`, edge.id));
357
+ diagnostics.push(makeDiagnostic("PTSEM-204", "error", `Endpoint ${endpoint} is undefined`, endpointSpan, `syntax.${edge.declaration.kind}`, edge.id));
322
358
  }
323
359
  else if (entity.kind !== "milestone") {
324
- diagnostics.push(makeDiagnostic("PTSEM-205", "error", `endpoint ${endpoint}はmilestoneではありません`, endpointSpan, `syntax.${edge.declaration.kind}`, edge.id));
360
+ diagnostics.push(makeDiagnostic("PTSEM-205", "error", `Endpoint ${endpoint} is not a milestone`, endpointSpan, `syntax.${edge.declaration.kind}`, edge.id));
325
361
  }
326
362
  }
327
363
  if (edge.source === edge.target) {
328
- diagnostics.push(makeDiagnostic("PTDAG-201", "error", `edge ${edge.id}はself-loopです`, edge.declaration.arrowSpan, "errors", edge.id));
364
+ diagnostics.push(makeDiagnostic("PTDAG-201", "error", `Edge ${edge.id} is a self-loop`, edge.declaration.arrowSpan, "errors", edge.id));
329
365
  }
330
366
  }
331
367
  for (const task of document.declarations.filter((declaration) => declaration.kind === "task")) {
@@ -335,15 +371,15 @@ function validateGraph(document, diagnostics) {
335
371
  for (const requirement of requirements) {
336
372
  const entity = firstById.get(requirement.resourceId);
337
373
  if (entity === undefined) {
338
- diagnostics.push(makeDiagnostic("PTSEM-206", "error", `resource ${requirement.resourceId}が未定義です`, requirement.resourceSpan, "syntax.resource", task.id));
374
+ diagnostics.push(makeDiagnostic("PTSEM-206", "error", `Resource ${requirement.resourceId} is undefined`, requirement.resourceSpan, "syntax.resource", task.id));
339
375
  }
340
376
  else if (entity.kind !== "resource") {
341
- diagnostics.push(makeDiagnostic("PTSEM-207", "error", `${requirement.resourceId}はresourceではありません`, requirement.resourceSpan, "syntax.resource", task.id));
377
+ diagnostics.push(makeDiagnostic("PTSEM-207", "error", `${requirement.resourceId} is not a resource`, requirement.resourceSpan, "syntax.resource", task.id));
342
378
  }
343
379
  else {
344
380
  const capacity = fieldNamed(entity, "capacity").value;
345
381
  if (requirement.units > capacity) {
346
- diagnostics.push(makeDiagnostic("PTSEM-208", "error", `requirement ${requirement.units}がcapacity ${capacity}を超えています`, requirement.unitsSpan, "syntax.resource", task.id));
382
+ diagnostics.push(makeDiagnostic("PTSEM-208", "error", `Requirement ${requirement.units} exceeds capacity ${capacity}`, requirement.unitsSpan, "syntax.resource", task.id));
347
383
  }
348
384
  }
349
385
  }
@@ -382,12 +418,12 @@ function validateGraph(document, diagnostics) {
382
418
  const cycleEdge = edges
383
419
  .filter((edge) => (indegree.get(edge.source) ?? 0) > 0 && (indegree.get(edge.target) ?? 0) > 0)
384
420
  .sort((left, right) => compareStableStrings(left.id, right.id))[0];
385
- diagnostics.push(makeDiagnostic("PTDAG-202", "error", "directed cycleを検出しました", cycleEdge?.declaration.headerSpan ?? project.idSpan, "errors", cycleEdge?.id));
421
+ diagnostics.push(makeDiagnostic("PTDAG-202", "error", "Detected a directed cycle", cycleEdge?.declaration.headerSpan ?? project.idSpan, "errors", cycleEdge?.id));
386
422
  return;
387
423
  }
388
424
  if (finishEntity?.kind === "milestone" && outgoing.get(finish).length > 0) {
389
425
  const firstOutgoing = outgoing.get(finish)[0];
390
- diagnostics.push(makeDiagnostic("PTDAG-203", "error", `finish milestone ${finish}にoutgoing edgeがあります`, firstOutgoing.declaration.headerSpan, "errors", firstOutgoing.id));
426
+ diagnostics.push(makeDiagnostic("PTDAG-203", "error", `Finish milestone ${finish} has an outgoing edge`, firstOutgoing.declaration.headerSpan, "errors", firstOutgoing.id));
391
427
  }
392
428
  if (finishEntity?.kind === "milestone") {
393
429
  const canReachFinish = new Set([finish]);
@@ -403,7 +439,7 @@ function validateGraph(document, diagnostics) {
403
439
  }
404
440
  for (const milestone of milestones.values()) {
405
441
  if (!canReachFinish.has(milestone.id)) {
406
- diagnostics.push(makeDiagnostic("PTDAG-204", "error", `milestone ${milestone.id}はfinishへ到達できません`, milestone.idSpan, "errors", milestone.id));
442
+ diagnostics.push(makeDiagnostic("PTDAG-204", "error", `Milestone ${milestone.id} cannot reach the finish`, milestone.idSpan, "errors", milestone.id));
407
443
  }
408
444
  }
409
445
  }
@@ -412,7 +448,7 @@ function validateGraph(document, diagnostics) {
412
448
  .map((milestone) => milestone.id));
413
449
  for (const milestone of milestones.values()) {
414
450
  if (incoming.get(milestone.id).length === 0 && !explicitReached.has(milestone.id)) {
415
- diagnostics.push(makeDiagnostic("PTDAG-205", "error", `root milestone ${milestone.id}はstate reachedでなければなりません`, fieldNamed(milestone, "state")?.valueSpan ?? milestone.idSpan, "errors", milestone.id));
451
+ diagnostics.push(makeDiagnostic("PTDAG-205", "error", `Root milestone ${milestone.id} must have state reached`, fieldNamed(milestone, "state")?.valueSpan ?? milestone.idSpan, "errors", milestone.id));
416
452
  }
417
453
  }
418
454
  if (hasErrors(diagnostics))
@@ -442,19 +478,19 @@ function validateGraph(document, diagnostics) {
442
478
  const edgesIn = incoming.get(milestoneId);
443
479
  if (edgesIn.length > 0 && !edgesIn.every(satisfied)) {
444
480
  const milestone = milestones.get(milestoneId);
445
- diagnostics.push(makeDiagnostic("PTDAG-206", "error", `reached milestone ${milestoneId}にunsatisfied incoming edgeがあります`, fieldNamed(milestone, "state")?.valueSpan ?? milestone.idSpan, "errors", milestoneId));
481
+ diagnostics.push(makeDiagnostic("PTDAG-206", "error", `Reached milestone ${milestoneId} has an unsatisfied incoming edge`, fieldNamed(milestone, "state")?.valueSpan ?? milestone.idSpan, "errors", milestoneId));
446
482
  }
447
483
  }
448
484
  for (const task of document.declarations.filter((declaration) => declaration.kind === "task")) {
449
485
  const status = fieldNamed(task, "status")?.value ?? "planned";
450
486
  if ((status === "active" || status === "done") && !reached.has(task.from)) {
451
- diagnostics.push(makeDiagnostic("PTDAG-207", "error", `${status} task ${task.id}のsourceがreachedではありません`, fieldNamed(task, "status")?.valueSpan ?? task.idSpan, "errors", task.id));
487
+ diagnostics.push(makeDiagnostic("PTDAG-207", "error", `Source of ${status} task ${task.id} is not reached`, fieldNamed(task, "status")?.valueSpan ?? task.idSpan, "errors", task.id));
452
488
  }
453
489
  }
454
490
  for (const milestoneId of [...reached].sort()) {
455
491
  const milestone = milestones.get(milestoneId);
456
492
  if (!explicitReached.has(milestoneId)) {
457
- diagnostics.push(makeDiagnostic("PTDAG-208", "warning", `milestone ${milestoneId}はclosureでreachedです。advanceを検討してください`, milestone.idSpan, "workflows", milestoneId));
493
+ diagnostics.push(makeDiagnostic("PTDAG-208", "warning", `Milestone ${milestoneId} is reached by closure; consider advance`, milestone.idSpan, "workflows", milestoneId));
458
494
  }
459
495
  }
460
496
  for (const resource of resources.values()) {
@@ -474,17 +510,26 @@ function validateGraph(document, diagnostics) {
474
510
  }
475
511
  }
476
512
  if (usage > capacity) {
477
- diagnostics.push(makeDiagnostic("PTRES-201", "error", `active usage ${usage}がresource ${resource.id} capacity ${capacity}を超えています`, fieldNamed(resource, "capacity").valueSpan, "analysis.resources", resource.id, activeTasks.map((task) => ({ message: `active task ${task.id}`, span: task.idSpan }))));
513
+ diagnostics.push(makeDiagnostic("PTRES-201", "error", `Active usage ${usage} exceeds capacity ${capacity} of resource ${resource.id}`, fieldNamed(resource, "capacity").valueSpan, "analysis.resources", resource.id, activeTasks.map((task) => ({ message: `active task ${task.id}`, span: task.idSpan }))));
478
514
  }
479
515
  }
480
516
  }
481
517
  export function validateDocument(document, parseDiagnostics = []) {
518
+ return validateDocumentWithProfile(document, parseDiagnostics, targetGrammar3ValidationProfile);
519
+ }
520
+ function validateDocumentWithProfile(document, parseDiagnostics, profile) {
482
521
  const diagnostics = [...parseDiagnostics];
483
522
  if (hasErrors(diagnostics))
484
523
  return sortDiagnostics(diagnostics);
485
- validateFieldConstraints(document, diagnostics);
524
+ validateFieldConstraints(document, diagnostics, profile);
486
525
  if (!hasErrors(diagnostics))
487
526
  validateGraph(document, diagnostics);
488
527
  return sortDiagnostics(diagnostics);
489
528
  }
529
+ export function validateTargetDocumentSemantics(document, parseDiagnostics = []) {
530
+ return validateDocumentWithProfile(document, parseDiagnostics, targetValidationProfile);
531
+ }
532
+ export function validateTargetGrammar3DocumentSemantics(document, parseDiagnostics = []) {
533
+ return validateDocumentWithProfile(document, parseDiagnostics, targetGrammar3ValidationProfile);
534
+ }
490
535
  //# sourceMappingURL=validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/semantic/validator.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"validator.js","sourceRoot":"","sources":["../../src/semantic/validator.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const TOOL_VERSION = "0.1.0";
1
+ export declare const TOOL_VERSION = "0.3.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const TOOL_VERSION = "0.1.0";
1
+ export const TOOL_VERSION = "0.3.0";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "perttool",
3
- "version": "0.1.0",
3
+ "version": "0.3.0",
4
4
  "description": "Document-based PERT/CPM and resource scheduling CLI",
5
5
  "keywords": [
6
6
  "pert",
@@ -40,7 +40,7 @@
40
40
  }
41
41
  },
42
42
  "engines": {
43
- "node": ">=24"
43
+ "node": ">=22"
44
44
  },
45
45
  "scripts": {
46
46
  "build": "tsc -p tsconfig.json",
@@ -55,7 +55,7 @@
55
55
  "check": "npm run typecheck && npm test && npm run check:docs && npm run check:self-use && npm run check:link && npm run check:package"
56
56
  },
57
57
  "devDependencies": {
58
- "@types/node": "24.13.3",
58
+ "@types/node": "22.20.1",
59
59
  "typescript": "7.0.2"
60
60
  }
61
61
  }