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,414 @@
1
+ import { createHash } from "node:crypto";
2
+ import { evaluateTemporalDeadlines, } from "../analysis/temporal-deadline.js";
3
+ import { analyzeTemporalPrecedenceSchedule, } from "../analysis/temporal-precedence.js";
4
+ import { analyzeTemporalResourceSchedule, } from "../analysis/temporal-resource.js";
5
+ import { analyzeDocument as analyzeBaseDocument, } from "./analyze.js";
6
+ import { selectNextTasksFromAnalysis, } from "./next.js";
7
+ import { projectRelativeCalendarValue, } from "../model/calendar-arithmetic.js";
8
+ import { ZERO, compare, divide, multiply, rational, } from "../model/rational.js";
9
+ import { fieldNamed } from "../model/syntax.js";
10
+ import { validateTargetGrammar4Document, validateTargetGrammar3Document, } from "../semantic/target-validator.js";
11
+ import { projectTargetTemporalInputs, } from "./target-temporal-input.js";
12
+ function validateTargetTemporalDocument(text, capability, options) {
13
+ return capability.grammarVersion === 4
14
+ ? validateTargetGrammar4Document(text, capability, options)
15
+ : validateTargetGrammar3Document(text, capability, options);
16
+ }
17
+ export const TARGET_ANALYSIS_RESULT_SCHEMA_VERSION = "Perttool.AnalysisResult.v3";
18
+ export const TARGET_NEXT_RESULT_SCHEMA_VERSION = "Perttool.NextResult.v4";
19
+ export const TARGET_TEMPORAL_INTERFACE_IDENTITY = Object.freeze({
20
+ id: "perttool.temporal-unit-interface",
21
+ version: 2,
22
+ });
23
+ function declaredCalendar(value) {
24
+ return value.kind === "date"
25
+ ? {
26
+ kind: "date",
27
+ sourceText: value.sourceText ?? "",
28
+ year: value.year,
29
+ month: value.month,
30
+ day: value.day,
31
+ }
32
+ : {
33
+ kind: "date_time",
34
+ sourceText: value.sourceText ?? "",
35
+ year: value.year,
36
+ month: value.month,
37
+ day: value.day,
38
+ hour: value.hour,
39
+ minute: value.minute,
40
+ second: rational(BigInt(value.second.numerator), BigInt(value.second.denominator)),
41
+ offsetMinutes: value.offsetMinutes,
42
+ };
43
+ }
44
+ function exactValue(value, unit) {
45
+ return Object.freeze({
46
+ numerator: value.numerator,
47
+ denominator: value.denominator,
48
+ unit,
49
+ });
50
+ }
51
+ function projectionVelocity(projection) {
52
+ return projection.velocity === null
53
+ ? null
54
+ : {
55
+ points: projection.velocity.points,
56
+ period: projection.velocity.period,
57
+ periodUnit: projection.velocity.period.unit,
58
+ };
59
+ }
60
+ function effectiveRelative(value, projection) {
61
+ if (projection.baseUnit !== "point")
62
+ return value;
63
+ const velocity = projectionVelocity(projection);
64
+ return multiply(value, divide(velocity.period, velocity.points));
65
+ }
66
+ function temporalCause(cause, subjectKind, subjectId, taskId) {
67
+ return Object.freeze({
68
+ cause,
69
+ underlyingCause: null,
70
+ subjectKind,
71
+ subjectId,
72
+ taskId,
73
+ });
74
+ }
75
+ function temporalPoint(value, inputs, subjectKind, subjectId) {
76
+ if (inputs.anchor === null) {
77
+ return Object.freeze({
78
+ state: "unavailable",
79
+ relative: exactValue(value, inputs.effectiveProjection.baseUnit),
80
+ calendar: null,
81
+ unavailableCauses: Object.freeze([
82
+ temporalCause("missing_temporal_anchor", subjectKind, subjectId, subjectKind === "task" ? subjectId : null),
83
+ ]),
84
+ });
85
+ }
86
+ const projected = projectRelativeCalendarValue(declaredCalendar(inputs.anchor), inputs.effectiveProjection.effectiveUnit, effectiveRelative(value, inputs.effectiveProjection));
87
+ if (projected.state === "unavailable") {
88
+ return Object.freeze({
89
+ state: "unavailable",
90
+ relative: exactValue(value, inputs.effectiveProjection.baseUnit),
91
+ calendar: null,
92
+ unavailableCauses: Object.freeze(projected.unavailableCauses.map((cause) => temporalCause(cause, subjectKind, subjectId, subjectKind === "task" ? subjectId : null))),
93
+ });
94
+ }
95
+ return Object.freeze({
96
+ state: "available",
97
+ relative: exactValue(value, inputs.effectiveProjection.baseUnit),
98
+ calendar: projected.value,
99
+ unavailableCauses: Object.freeze(projected.unavailableCauses.map((cause) => temporalCause(cause, subjectKind, subjectId, subjectKind === "task" ? subjectId : null))),
100
+ });
101
+ }
102
+ function notApplicablePoint() {
103
+ return Object.freeze({
104
+ state: "not_applicable",
105
+ relative: null,
106
+ calendar: null,
107
+ unavailableCauses: Object.freeze([]),
108
+ });
109
+ }
110
+ function hasTemporalSource(inputs) {
111
+ return (inputs.anchor !== null ||
112
+ inputs.milestoneDeadlines.length > 0 ||
113
+ inputs.tasks.some((task) => task.declaredNotBefore !== null || task.deadline !== null));
114
+ }
115
+ function scheduleProjection(validated, inputs, schedule, view) {
116
+ if (!hasTemporalSource(inputs)) {
117
+ return Object.freeze({
118
+ state: "absent",
119
+ view,
120
+ algorithm: null,
121
+ conditionalOnBlocksResolved: false,
122
+ blockedTaskIds: Object.freeze([]),
123
+ unavailableCauses: Object.freeze([]),
124
+ tasks: Object.freeze([]),
125
+ milestones: Object.freeze([]),
126
+ });
127
+ }
128
+ const inputByTask = new Map(inputs.tasks.map((task) => [task.taskId, task]));
129
+ const reached = new Set(validated.document.declarations
130
+ .filter((declaration) => declaration.kind === "milestone" &&
131
+ fieldNamed(declaration, "state")?.value === "reached")
132
+ .map(({ id }) => id));
133
+ const algorithm = view === "precedence"
134
+ ? {
135
+ id: schedule.algorithm.id,
136
+ version: schedule.algorithm.version,
137
+ optimal: null,
138
+ schedulerId: null,
139
+ schedulerVersion: null,
140
+ }
141
+ : {
142
+ id: schedule.algorithm.id,
143
+ version: schedule.algorithm.version,
144
+ optimal: false,
145
+ schedulerId: "scheduler" in schedule
146
+ ? schedule.scheduler.id
147
+ : "parallel-sgs",
148
+ schedulerVersion: "scheduler" in schedule
149
+ ? schedule.scheduler.version
150
+ : 1,
151
+ };
152
+ if (schedule.state === "unavailable") {
153
+ return Object.freeze({
154
+ state: "unavailable",
155
+ view,
156
+ algorithm: Object.freeze(algorithm),
157
+ conditionalOnBlocksResolved: schedule.conditionalOnBlocksResolved,
158
+ blockedTaskIds: schedule.blockedTaskIds,
159
+ unavailableCauses: schedule.unavailableCauses,
160
+ tasks: Object.freeze(inputs.tasks.map((input) => Object.freeze({
161
+ taskId: input.taskId,
162
+ declaredNotBefore: input.declaredNotBefore,
163
+ releaseState: input.release.state,
164
+ releaseBound: input.release.bound,
165
+ start: Object.freeze({
166
+ state: "unavailable",
167
+ relative: null,
168
+ calendar: null,
169
+ unavailableCauses: input.release.unavailableCauses,
170
+ }),
171
+ finish: Object.freeze({
172
+ state: "unavailable",
173
+ relative: null,
174
+ calendar: null,
175
+ unavailableCauses: input.release.unavailableCauses,
176
+ }),
177
+ unavailableCauses: input.release.unavailableCauses,
178
+ }))),
179
+ milestones: Object.freeze([]),
180
+ });
181
+ }
182
+ const tasks = schedule.tasks.map((task) => {
183
+ const input = inputByTask.get(task.id);
184
+ const start = task.status === "active"
185
+ ? notApplicablePoint()
186
+ : temporalPoint(task.start, inputs, "task", task.id);
187
+ const finish = temporalPoint(task.finish, inputs, "task", task.id);
188
+ return Object.freeze({
189
+ taskId: task.id,
190
+ declaredNotBefore: input.declaredNotBefore,
191
+ releaseState: input.release.state,
192
+ releaseBound: input.release.bound,
193
+ start,
194
+ finish,
195
+ unavailableCauses: Object.freeze([
196
+ ...input.release.unavailableCauses,
197
+ ...start.unavailableCauses,
198
+ ...finish.unavailableCauses,
199
+ ]),
200
+ });
201
+ });
202
+ const milestones = schedule.milestones.map((milestone) => {
203
+ const reach = reached.has(milestone.id)
204
+ ? notApplicablePoint()
205
+ : temporalPoint(milestone.reach, inputs, "milestone", milestone.id);
206
+ return Object.freeze({
207
+ milestoneId: milestone.id,
208
+ reach,
209
+ unavailableCauses: reach.unavailableCauses,
210
+ });
211
+ });
212
+ return Object.freeze({
213
+ state: "available",
214
+ view,
215
+ algorithm: Object.freeze(algorithm),
216
+ conditionalOnBlocksResolved: schedule.conditionalOnBlocksResolved,
217
+ blockedTaskIds: schedule.blockedTaskIds,
218
+ unavailableCauses: Object.freeze([]),
219
+ tasks: Object.freeze(tasks),
220
+ milestones: Object.freeze(milestones),
221
+ });
222
+ }
223
+ function failure(documentId, grammarVersion, diagnostics, diagnosticsTruncated) {
224
+ return Object.freeze({
225
+ schemaVersion: TARGET_ANALYSIS_RESULT_SCHEMA_VERSION,
226
+ ok: false,
227
+ documentId,
228
+ grammarVersion,
229
+ base: null,
230
+ temporal: null,
231
+ diagnostics,
232
+ diagnosticsTruncated,
233
+ });
234
+ }
235
+ export function analyzeTargetTemporalDocument(text, capability, options = {}) {
236
+ const checked = validateTargetTemporalDocument(text, capability, options);
237
+ if (!checked.ok || checked.validatedDocument === null) {
238
+ return failure(checked.documentId, checked.grammarVersion, checked.diagnostics, checked.diagnosticsTruncated);
239
+ }
240
+ const validated = checked.validatedDocument;
241
+ const inputs = projectTargetTemporalInputs(validated);
242
+ const base = analyzeBaseDocument(text, options);
243
+ if (!base.ok || base.document === null) {
244
+ return failure(base.documentId, validated.grammarVersion, base.diagnostics, base.diagnosticsTruncated);
245
+ }
246
+ const precedenceSchedule = analyzeTemporalPrecedenceSchedule(validated, inputs);
247
+ const resourceSchedule = analyzeTemporalResourceSchedule(validated, inputs, {
248
+ ...(options.capacityOverrides === undefined
249
+ ? {}
250
+ : { capacityOverrides: options.capacityOverrides }),
251
+ ...(options.maxPaths === undefined
252
+ ? {}
253
+ : { maxPaths: options.maxPaths }),
254
+ });
255
+ const deadlineEvaluations = evaluateTemporalDeadlines(validated, inputs, precedenceSchedule, resourceSchedule);
256
+ return Object.freeze({
257
+ schemaVersion: TARGET_ANALYSIS_RESULT_SCHEMA_VERSION,
258
+ ok: true,
259
+ documentId: checked.documentId,
260
+ grammarVersion: validated.grammarVersion,
261
+ base,
262
+ temporal: Object.freeze({
263
+ interface: TARGET_TEMPORAL_INTERFACE_IDENTITY,
264
+ calendar: inputs.calendar,
265
+ deadline: Object.freeze({
266
+ id: "perttool.deadline-evaluation",
267
+ version: 1,
268
+ }),
269
+ anchor: inputs.anchor,
270
+ precedence: scheduleProjection(validated, inputs, precedenceSchedule, "precedence"),
271
+ resource: scheduleProjection(validated, inputs, resourceSchedule, "resource"),
272
+ deadlineEvaluations,
273
+ }),
274
+ diagnostics: base.diagnostics,
275
+ diagnosticsTruncated: base.diagnosticsTruncated,
276
+ });
277
+ }
278
+ function timeEligibility(input) {
279
+ const factId = `temporal:task:${input.taskId}:release`;
280
+ let state;
281
+ let code;
282
+ if (input.status === "active" || input.status === "done") {
283
+ state = "not_applicable";
284
+ code = "task_already_started";
285
+ }
286
+ else if (input.declaredNotBefore === null) {
287
+ state = "eligible";
288
+ code = "no_not_before";
289
+ }
290
+ else if (input.release.state === "unavailable") {
291
+ state = "unavailable";
292
+ code = "temporal_eligibility_unavailable";
293
+ }
294
+ else if (input.release.bound !== null &&
295
+ compare(input.release.bound, ZERO) > 0) {
296
+ state = "not_yet_eligible";
297
+ code = "not_before_future";
298
+ }
299
+ else {
300
+ state = "eligible";
301
+ code = input.declaredNotBefore === null
302
+ ? "no_not_before"
303
+ : "not_before_reached";
304
+ }
305
+ const fact = Object.freeze({
306
+ id: factId,
307
+ kind: "temporal_release_bound",
308
+ value: Object.freeze({
309
+ state,
310
+ releaseBound: input.release.bound,
311
+ }),
312
+ entityRefs: Object.freeze([
313
+ Object.freeze({ kind: "task", id: input.taskId }),
314
+ ]),
315
+ });
316
+ return Object.freeze({
317
+ state,
318
+ releaseBound: input.release.bound,
319
+ explanation: Object.freeze({
320
+ code,
321
+ factIds: Object.freeze([factId]),
322
+ }),
323
+ facts: Object.freeze([fact]),
324
+ unavailableCauses: state === "unavailable" ? input.release.unavailableCauses : [],
325
+ });
326
+ }
327
+ function temporalTaskRecords(validated, inputs, analysis) {
328
+ const declarationById = new Map(validated.document.declarations
329
+ .filter(({ kind }) => kind === "task")
330
+ .map((declaration) => [declaration.id, declaration]));
331
+ const milestoneDeadlineById = new Map(inputs.milestoneDeadlines.map((item) => [
332
+ item.milestoneId,
333
+ item.deadline.deadline,
334
+ ]));
335
+ const evaluationBySubject = new Map(analysis.deadlineEvaluations.map((evaluation) => [
336
+ `${evaluation.subject.kind}:${evaluation.subject.id}`,
337
+ evaluation,
338
+ ]));
339
+ const taskByView = (projection, id) => projection.tasks.find(({ taskId }) => taskId === id) ?? null;
340
+ return Object.freeze(inputs.tasks
341
+ .filter(({ status }) => status !== "done")
342
+ .map((input) => {
343
+ const declaration = declarationById.get(input.taskId);
344
+ const destinationMilestoneId = declaration.to;
345
+ const precedence = taskByView(analysis.precedence, input.taskId);
346
+ const resource = taskByView(analysis.resource, input.taskId);
347
+ return Object.freeze({
348
+ taskId: input.taskId,
349
+ declaredNotBefore: input.declaredNotBefore,
350
+ timeEligibility: timeEligibility(input),
351
+ taskDeadline: input.deadline?.deadline ?? null,
352
+ destinationMilestoneId,
353
+ destinationDeadline: milestoneDeadlineById.get(destinationMilestoneId) ?? null,
354
+ precedenceStart: precedence?.start ?? null,
355
+ precedenceFinish: precedence?.finish ?? null,
356
+ resourceStart: resource?.start ?? null,
357
+ resourceFinish: resource?.finish ?? null,
358
+ taskDeadlineEvaluation: evaluationBySubject.get(`task:${input.taskId}`) ?? null,
359
+ destinationDeadlineEvaluation: evaluationBySubject.get(`milestone:${destinationMilestoneId}`) ?? null,
360
+ });
361
+ }));
362
+ }
363
+ export function selectTargetTemporalTasks(text, capability, options = {}) {
364
+ const analyzed = analyzeTargetTemporalDocument(text, capability, options);
365
+ if (!analyzed.ok || analyzed.base === null || analyzed.temporal === null) {
366
+ return analyzed;
367
+ }
368
+ const sourceDigest = options.sourceDigest ??
369
+ `sha256:${createHash("sha256").update(text, "utf8").digest("hex")}`;
370
+ const base = selectNextTasksFromAnalysis(analyzed.base, sourceDigest, options);
371
+ if (!base.ok || base.recommendation === null) {
372
+ return failure(analyzed.documentId, analyzed.grammarVersion, base.diagnostics, base.diagnosticsTruncated);
373
+ }
374
+ const checked = validateTargetTemporalDocument(text, capability, options);
375
+ const validated = checked.validatedDocument;
376
+ const inputs = projectTargetTemporalInputs(validated);
377
+ const tasks = temporalTaskRecords(validated, inputs, analyzed.temporal);
378
+ const eligibilityById = new Map(tasks.map((task) => [task.taskId, task.timeEligibility]));
379
+ const ids = (state) => tasks
380
+ .filter(({ timeEligibility }) => timeEligibility.state === state)
381
+ .map(({ taskId }) => taskId);
382
+ const recommended = base.recommendation.recommendedTaskIds;
383
+ const startable = recommended.filter((id) => eligibilityById.get(id)?.state === "eligible");
384
+ const delayed = recommended.filter((id) => eligibilityById.get(id)?.state === "not_yet_eligible");
385
+ const unavailable = recommended.filter((id) => eligibilityById.get(id)?.state === "unavailable");
386
+ const runnableNow = base.groups.runnableNow.filter((id) => eligibilityById.get(id)?.state === "eligible");
387
+ return Object.freeze({
388
+ ...base,
389
+ schemaVersion: TARGET_NEXT_RESULT_SCHEMA_VERSION,
390
+ grammarVersion: validated.grammarVersion,
391
+ groups: Object.freeze({
392
+ ...base.groups,
393
+ runnableNow: Object.freeze(runnableNow),
394
+ }),
395
+ temporal: Object.freeze({
396
+ authority: Object.freeze({
397
+ policy: "recommendation_v1_plus_release_gate",
398
+ recommendationAlgorithm: Object.freeze({
399
+ id: base.recommendation.algorithm.id,
400
+ version: base.recommendation.algorithm.version,
401
+ }),
402
+ deadlineFactsUsedForRanking: false,
403
+ timeEligibleTaskIds: Object.freeze(ids("eligible")),
404
+ timeIneligibleTaskIds: Object.freeze(ids("not_yet_eligible")),
405
+ timeEligibilityUnavailableTaskIds: Object.freeze(ids("unavailable")),
406
+ startableRecommendedTaskIds: Object.freeze(startable),
407
+ delayedRecommendedTaskIds: Object.freeze(delayed),
408
+ unavailableRecommendedTaskIds: Object.freeze(unavailable),
409
+ }),
410
+ tasks,
411
+ }),
412
+ });
413
+ }
414
+ //# sourceMappingURL=target-temporal-analysis.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-temporal-analysis.js","sourceRoot":"","sources":["../../src/application/target-temporal-analysis.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,86 @@
1
+ import type { Diagnostic } from "../model/diagnostics.js";
2
+ import { CALENDAR_ARITHMETIC_IDENTITY, type CalendarDifference, type CalendarUnavailableCause } from "../model/calendar-arithmetic.js";
3
+ import { type TargetCalendarValue } from "../model/target-calendar.js";
4
+ import type { CalendarUnit, DurationUnit } from "../model/units.js";
5
+ import type { TargetGrammar3Capability, TargetGrammar4Capability } from "../parser/document-parser.js";
6
+ import { type TargetGrammar3ValidatedDocument, type TargetGrammar4ValidatedDocument, type TargetValidationOptions } from "../semantic/target-validator.js";
7
+ export interface TargetTemporalCause {
8
+ readonly cause: CalendarUnavailableCause;
9
+ readonly underlyingCause: null;
10
+ readonly subjectKind: "project" | "milestone" | "task" | null;
11
+ readonly subjectId: string | null;
12
+ readonly taskId: string | null;
13
+ }
14
+ export interface TargetTemporalExactValue {
15
+ readonly numerator: bigint;
16
+ readonly denominator: bigint;
17
+ readonly unit: DurationUnit;
18
+ }
19
+ export interface TargetCalendarDifference {
20
+ readonly kind: CalendarDifference["kind"];
21
+ readonly exact: {
22
+ readonly numerator: bigint;
23
+ readonly denominator: bigint;
24
+ };
25
+ }
26
+ export interface TargetEffectiveProjection {
27
+ readonly baseUnit: DurationUnit;
28
+ readonly effectiveUnit: CalendarUnit;
29
+ readonly qualifier: "base_unit" | "velocity_forecast";
30
+ readonly velocity: {
31
+ readonly points: TargetTemporalExactValue & {
32
+ readonly unit: "point";
33
+ };
34
+ readonly period: TargetTemporalExactValue & {
35
+ readonly unit: CalendarUnit;
36
+ };
37
+ } | null;
38
+ }
39
+ export interface TargetTemporalRelationship {
40
+ readonly state: "unavailable" | "available";
41
+ readonly calendarDifference: TargetCalendarDifference | null;
42
+ readonly baseUnitValue: TargetTemporalExactValue | null;
43
+ readonly unavailableCauses: readonly TargetTemporalCause[];
44
+ }
45
+ export interface TargetReleaseInput {
46
+ readonly state: "not_applicable" | "unavailable" | "available";
47
+ readonly bound: TargetTemporalExactValue | null;
48
+ readonly relationship: TargetTemporalRelationship | null;
49
+ readonly unavailableCauses: readonly TargetTemporalCause[];
50
+ }
51
+ export interface TargetDeadlineInput {
52
+ readonly deadline: TargetCalendarValue;
53
+ readonly completionState: "incomplete" | "complete_actual_time_unavailable";
54
+ readonly anchorRelationship: TargetTemporalRelationship | null;
55
+ }
56
+ export interface TargetMilestoneTemporalInput {
57
+ readonly milestoneId: string;
58
+ readonly deadline: TargetDeadlineInput;
59
+ }
60
+ export interface TargetTaskTemporalInput {
61
+ readonly taskId: string;
62
+ readonly status: "planned" | "active" | "blocked" | "done";
63
+ readonly declaredNotBefore: TargetCalendarValue | null;
64
+ readonly release: TargetReleaseInput;
65
+ readonly deadline: TargetDeadlineInput | null;
66
+ }
67
+ export interface TargetTemporalInputProjection {
68
+ readonly calendar: typeof CALENDAR_ARITHMETIC_IDENTITY;
69
+ readonly documentId: string;
70
+ readonly grammarVersion: 1 | 2 | 3 | 4;
71
+ readonly anchor: TargetCalendarValue | null;
72
+ readonly effectiveProjection: TargetEffectiveProjection;
73
+ readonly milestoneDeadlines: readonly TargetMilestoneTemporalInput[];
74
+ readonly tasks: readonly TargetTaskTemporalInput[];
75
+ }
76
+ export interface TargetTemporalInputResult {
77
+ readonly ok: boolean;
78
+ readonly documentId: string | null;
79
+ readonly grammarVersion: number | null;
80
+ readonly projection: TargetTemporalInputProjection | null;
81
+ readonly diagnostics: readonly Diagnostic[];
82
+ readonly diagnosticsTruncated: boolean;
83
+ }
84
+ export declare function projectTargetTemporalInputs(validated: TargetGrammar3ValidatedDocument | TargetGrammar4ValidatedDocument): TargetTemporalInputProjection;
85
+ export declare function prepareTargetTemporalInputs(text: string, capability: TargetGrammar3Capability | TargetGrammar4Capability, options?: TargetValidationOptions): TargetTemporalInputResult;
86
+ //# sourceMappingURL=target-temporal-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-temporal-input.d.ts","sourceRoot":"","sources":["../../src/application/target-temporal-input.ts"],"names":[],"mappings":"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"}