perttool 0.7.1 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/CHANGELOG.md +33 -1
  2. package/README.md +94 -18
  3. package/dist/actuals/lifecycle.d.ts +6 -20
  4. package/dist/actuals/lifecycle.d.ts.map +1 -1
  5. package/dist/actuals/lifecycle.js +5 -176
  6. package/dist/actuals/lifecycle.js.map +1 -1
  7. package/dist/actuals/reduction.d.ts +20 -0
  8. package/dist/actuals/reduction.d.ts.map +1 -0
  9. package/dist/actuals/reduction.js +175 -0
  10. package/dist/actuals/reduction.js.map +1 -0
  11. package/dist/analysis/service.d.ts +33 -0
  12. package/dist/analysis/service.d.ts.map +1 -0
  13. package/dist/analysis/service.js +153 -0
  14. package/dist/analysis/service.js.map +1 -0
  15. package/dist/analysis/target-temporal-input.d.ts +88 -0
  16. package/dist/analysis/target-temporal-input.d.ts.map +1 -0
  17. package/dist/analysis/target-temporal-input.js +249 -0
  18. package/dist/analysis/target-temporal-input.js.map +1 -0
  19. package/dist/analysis/temporal-deadline.d.ts +1 -1
  20. package/dist/analysis/temporal-deadline.d.ts.map +1 -1
  21. package/dist/analysis/temporal-precedence.d.ts +1 -1
  22. package/dist/analysis/temporal-precedence.d.ts.map +1 -1
  23. package/dist/analysis/temporal-precedence.js +1 -1
  24. package/dist/analysis/temporal-precedence.js.map +1 -1
  25. package/dist/analysis/temporal-resource.d.ts +1 -1
  26. package/dist/analysis/temporal-resource.d.ts.map +1 -1
  27. package/dist/analysis/temporal-resource.js +1 -1
  28. package/dist/analysis/temporal-resource.js.map +1 -1
  29. package/dist/application/advance-history.d.ts +2 -1
  30. package/dist/application/advance-history.d.ts.map +1 -1
  31. package/dist/application/advance-history.js +1 -1
  32. package/dist/application/advance-history.js.map +1 -1
  33. package/dist/application/analyze.d.ts +1 -32
  34. package/dist/application/analyze.d.ts.map +1 -1
  35. package/dist/application/analyze.js +1 -152
  36. package/dist/application/analyze.js.map +1 -1
  37. package/dist/application/check.d.ts +1 -42
  38. package/dist/application/check.d.ts.map +1 -1
  39. package/dist/application/check.js +1 -109
  40. package/dist/application/check.js.map +1 -1
  41. package/dist/application/cli-facade.d.ts +85 -0
  42. package/dist/application/cli-facade.d.ts.map +1 -0
  43. package/dist/application/cli-facade.js +108 -0
  44. package/dist/application/cli-facade.js.map +1 -0
  45. package/dist/application/contract6-mutation.js +2 -2
  46. package/dist/application/contract6-mutation.js.map +1 -1
  47. package/dist/application/contract7-mermaid.d.ts.map +1 -1
  48. package/dist/application/contract7-mermaid.js +3 -3
  49. package/dist/application/contract7-mermaid.js.map +1 -1
  50. package/dist/application/contract7-source.d.ts +1 -7
  51. package/dist/application/contract7-source.d.ts.map +1 -1
  52. package/dist/application/contract7-source.js +4 -12
  53. package/dist/application/contract7-source.js.map +1 -1
  54. package/dist/application/editor-dag-focus.d.ts +52 -0
  55. package/dist/application/editor-dag-focus.d.ts.map +1 -0
  56. package/dist/application/editor-dag-focus.js +132 -0
  57. package/dist/application/editor-dag-focus.js.map +1 -0
  58. package/dist/application/format.js +2 -2
  59. package/dist/application/format.js.map +1 -1
  60. package/dist/application/mutate.d.ts +1 -26
  61. package/dist/application/mutate.d.ts.map +1 -1
  62. package/dist/application/mutate.js +1 -205
  63. package/dist/application/mutate.js.map +1 -1
  64. package/dist/application/next.js +2 -2
  65. package/dist/application/next.js.map +1 -1
  66. package/dist/application/target-actuals-advance.js +2 -2
  67. package/dist/application/target-actuals-advance.js.map +1 -1
  68. package/dist/application/target-actuals-analysis.js +2 -2
  69. package/dist/application/target-actuals-analysis.js.map +1 -1
  70. package/dist/application/target-actuals-mutation.d.ts.map +1 -1
  71. package/dist/application/target-actuals-mutation.js +6 -5
  72. package/dist/application/target-actuals-mutation.js.map +1 -1
  73. package/dist/application/target-assurance-analysis.js +2 -2
  74. package/dist/application/target-assurance-analysis.js.map +1 -1
  75. package/dist/application/target-assurance-write.d.ts +2 -1
  76. package/dist/application/target-assurance-write.d.ts.map +1 -1
  77. package/dist/application/target-assurance-write.js +36 -12
  78. package/dist/application/target-assurance-write.js.map +1 -1
  79. package/dist/application/target-governance-mutation.js +2 -2
  80. package/dist/application/target-governance-mutation.js.map +1 -1
  81. package/dist/application/target-historical-graph.d.ts +124 -0
  82. package/dist/application/target-historical-graph.d.ts.map +1 -0
  83. package/dist/application/target-historical-graph.js +547 -0
  84. package/dist/application/target-historical-graph.js.map +1 -0
  85. package/dist/application/target-mutate.d.ts +1 -17
  86. package/dist/application/target-mutate.d.ts.map +1 -1
  87. package/dist/application/target-mutate.js +1 -159
  88. package/dist/application/target-mutate.js.map +1 -1
  89. package/dist/application/target-project-history.d.ts +2 -1
  90. package/dist/application/target-project-history.d.ts.map +1 -1
  91. package/dist/application/target-project-history.js +3 -3
  92. package/dist/application/target-project-history.js.map +1 -1
  93. package/dist/application/target-temporal-analysis.js +2 -2
  94. package/dist/application/target-temporal-analysis.js.map +1 -1
  95. package/dist/application/target-temporal-input.d.ts +1 -87
  96. package/dist/application/target-temporal-input.d.ts.map +1 -1
  97. package/dist/application/target-temporal-input.js +1 -248
  98. package/dist/application/target-temporal-input.js.map +1 -1
  99. package/dist/application/target-unit-migration-candidate.js +2 -2
  100. package/dist/application/target-unit-migration-candidate.js.map +1 -1
  101. package/dist/assurance/advance.js +2 -2
  102. package/dist/assurance/advance.js.map +1 -1
  103. package/dist/assurance/canonical.js +2 -2
  104. package/dist/assurance/canonical.js.map +1 -1
  105. package/dist/assurance/compatibility.js +2 -2
  106. package/dist/assurance/compatibility.js.map +1 -1
  107. package/dist/assurance/mermaid.d.ts +4 -2
  108. package/dist/assurance/mermaid.d.ts.map +1 -1
  109. package/dist/assurance/mermaid.js +11 -7
  110. package/dist/assurance/mermaid.js.map +1 -1
  111. package/dist/assurance/mutation.d.ts.map +1 -1
  112. package/dist/assurance/mutation.js +9 -23
  113. package/dist/assurance/mutation.js.map +1 -1
  114. package/dist/cli.js +66 -26
  115. package/dist/cli.js.map +1 -1
  116. package/dist/command/assurance-discovery.d.ts.map +1 -1
  117. package/dist/command/assurance-discovery.js +62 -2
  118. package/dist/command/assurance-discovery.js.map +1 -1
  119. package/dist/command/assurance-usage.d.ts.map +1 -1
  120. package/dist/command/assurance-usage.js +11 -0
  121. package/dist/command/assurance-usage.js.map +1 -1
  122. package/dist/conversion/mermaid-import.js +3 -3
  123. package/dist/conversion/mermaid-import.js.map +1 -1
  124. package/dist/conversion/mermaid.d.ts +1 -1
  125. package/dist/conversion/mermaid.d.ts.map +1 -1
  126. package/dist/conversion/mermaid.js +4 -4
  127. package/dist/conversion/mermaid.js.map +1 -1
  128. package/dist/core/index.d.ts +33 -0
  129. package/dist/core/index.d.ts.map +1 -0
  130. package/dist/core/index.js +13 -0
  131. package/dist/core/index.js.map +1 -0
  132. package/dist/core/source.d.ts +8 -0
  133. package/dist/core/source.d.ts.map +1 -0
  134. package/dist/core/source.js +11 -0
  135. package/dist/core/source.js.map +1 -0
  136. package/dist/formatter/source-formatter.d.ts +1 -1
  137. package/dist/formatter/source-formatter.d.ts.map +1 -1
  138. package/dist/formatter/source-formatter.js +1 -1
  139. package/dist/formatter/source-formatter.js.map +1 -1
  140. package/dist/guidance/validator.js +2 -2
  141. package/dist/guidance/validator.js.map +1 -1
  142. package/dist/help/assurance-guide.d.ts.map +1 -1
  143. package/dist/help/assurance-guide.js +78 -0
  144. package/dist/help/assurance-guide.js.map +1 -1
  145. package/dist/history/git-probe.d.ts +71 -0
  146. package/dist/history/git-probe.d.ts.map +1 -1
  147. package/dist/history/git-probe.js +517 -0
  148. package/dist/history/git-probe.js.map +1 -1
  149. package/dist/history/historical-graph.d.ts +174 -0
  150. package/dist/history/historical-graph.d.ts.map +1 -0
  151. package/dist/history/historical-graph.js +870 -0
  152. package/dist/history/historical-graph.js.map +1 -0
  153. package/dist/history/historical-transition.d.ts +311 -0
  154. package/dist/history/historical-transition.d.ts.map +1 -0
  155. package/dist/history/historical-transition.js +998 -0
  156. package/dist/history/historical-transition.js.map +1 -0
  157. package/dist/history/project-history.d.ts.map +1 -1
  158. package/dist/history/project-history.js +2 -2
  159. package/dist/history/project-history.js.map +1 -1
  160. package/dist/index.d.ts +2 -0
  161. package/dist/index.d.ts.map +1 -1
  162. package/dist/index.js +1 -0
  163. package/dist/index.js.map +1 -1
  164. package/dist/io/document-file.js +2 -2
  165. package/dist/io/document-file.js.map +1 -1
  166. package/dist/io/safe-write.js +1 -1
  167. package/dist/io/safe-write.js.map +1 -1
  168. package/dist/model/sha256.d.ts +5 -0
  169. package/dist/model/sha256.d.ts.map +1 -0
  170. package/dist/model/sha256.js +105 -0
  171. package/dist/model/sha256.js.map +1 -0
  172. package/dist/mutation/advance.js +3 -3
  173. package/dist/mutation/advance.js.map +1 -1
  174. package/dist/mutation/diagnostics.d.ts +2 -2
  175. package/dist/mutation/diagnostics.d.ts.map +1 -1
  176. package/dist/mutation/diagnostics.js.map +1 -1
  177. package/dist/mutation/planner.d.ts +27 -0
  178. package/dist/mutation/planner.d.ts.map +1 -0
  179. package/dist/mutation/planner.js +206 -0
  180. package/dist/mutation/planner.js.map +1 -0
  181. package/dist/mutation/source.d.ts +2 -1
  182. package/dist/mutation/source.d.ts.map +1 -1
  183. package/dist/mutation/source.js +14 -0
  184. package/dist/mutation/source.js.map +1 -1
  185. package/dist/mutation/target-planner.d.ts +18 -0
  186. package/dist/mutation/target-planner.d.ts.map +1 -0
  187. package/dist/mutation/target-planner.js +160 -0
  188. package/dist/mutation/target-planner.js.map +1 -0
  189. package/dist/mutation/task.d.ts.map +1 -1
  190. package/dist/mutation/task.js +19 -11
  191. package/dist/mutation/task.js.map +1 -1
  192. package/dist/mutation/types.d.ts +1 -1
  193. package/dist/mutation/types.d.ts.map +1 -1
  194. package/dist/node/historical-host.d.ts +6 -0
  195. package/dist/node/historical-host.d.ts.map +1 -0
  196. package/dist/node/historical-host.js +8 -0
  197. package/dist/node/historical-host.js.map +1 -0
  198. package/dist/node/host.d.ts +3 -0
  199. package/dist/node/host.d.ts.map +1 -0
  200. package/dist/node/host.js +48 -0
  201. package/dist/node/host.js.map +1 -0
  202. package/dist/node/index.d.ts +2 -0
  203. package/dist/node/index.d.ts.map +1 -0
  204. package/dist/node/index.js +2 -0
  205. package/dist/node/index.js.map +1 -0
  206. package/dist/perttool-vscode-private-0.0.0-d1578b9.vsix +0 -0
  207. package/dist/ports/node-host.d.ts +41 -0
  208. package/dist/ports/node-host.d.ts.map +1 -0
  209. package/dist/ports/node-host.js +2 -0
  210. package/dist/ports/node-host.js.map +1 -0
  211. package/dist/recommendation/override.d.ts +40 -2
  212. package/dist/recommendation/override.d.ts.map +1 -1
  213. package/dist/recommendation/override.js +5 -6
  214. package/dist/recommendation/override.js.map +1 -1
  215. package/dist/schema/registry.d.ts.map +1 -1
  216. package/dist/schema/registry.js +1 -0
  217. package/dist/schema/registry.js.map +1 -1
  218. package/dist/semantic/check.d.ts +43 -0
  219. package/dist/semantic/check.d.ts.map +1 -0
  220. package/dist/semantic/check.js +110 -0
  221. package/dist/semantic/check.js.map +1 -0
  222. package/dist/session/document-session.d.ts +109 -0
  223. package/dist/session/document-session.d.ts.map +1 -0
  224. package/dist/session/document-session.js +432 -0
  225. package/dist/session/document-session.js.map +1 -0
  226. package/dist/version.d.ts +1 -1
  227. package/dist/version.js +1 -1
  228. package/package.json +18 -4
  229. package/schemas/Perttool.HistoricalGraphResult.v1.schema.json +654 -0
@@ -0,0 +1,175 @@
1
+ import { instantKey } from "../model/calendar-arithmetic.js";
2
+ import { compareStableStrings } from "../model/diagnostics.js";
3
+ import { add, compare, divide, rational, subtract, ZERO, } from "../model/rational.js";
4
+ import { fieldNamed } from "../model/syntax.js";
5
+ import { projectActualsSourceModel, workEventsForTask, } from "./source.js";
6
+ const eventKindOrder = Object.freeze({
7
+ start: 0,
8
+ suspend: 1,
9
+ resume: 2,
10
+ finish: 3,
11
+ });
12
+ export function actualsDiagnostic(code, message, cause, entityId, span, data = {}) {
13
+ return Object.freeze({
14
+ code,
15
+ severity: "error",
16
+ message,
17
+ ...(entityId === null ? {} : { entityId }),
18
+ ...(span === undefined ? {} : { span }),
19
+ helpTopic: "syntax.work-event",
20
+ data: Object.freeze({ cause, ...data }),
21
+ });
22
+ }
23
+ function eventInstant(event) {
24
+ return instantKey(event.occurredAt);
25
+ }
26
+ function compareEvents(left, right) {
27
+ const instantOrder = compare(eventInstant(left), eventInstant(right));
28
+ if (instantOrder !== 0)
29
+ return instantOrder;
30
+ const kindOrder = eventKindOrder[left.kind] - eventKindOrder[right.kind];
31
+ return kindOrder !== 0
32
+ ? kindOrder
33
+ : compareStableStrings(left.id, right.id);
34
+ }
35
+ function sequenceFailure(event, cause) {
36
+ return Object.freeze({
37
+ ok: false,
38
+ coverage: "unavailable",
39
+ state: null,
40
+ derivedActiveTime: null,
41
+ diagnostics: Object.freeze([
42
+ actualsDiagnostic("PTACT-104", "invalid work-event lifecycle sequence", cause, event.id, event.idSpan),
43
+ ]),
44
+ });
45
+ }
46
+ export function reduceTaskLifecycle(events) {
47
+ if (events.length === 0) {
48
+ return Object.freeze({
49
+ ok: true,
50
+ coverage: "unrecorded",
51
+ state: null,
52
+ derivedActiveTime: null,
53
+ diagnostics: Object.freeze([]),
54
+ });
55
+ }
56
+ const ordered = [...events].sort(compareEvents);
57
+ for (let index = 1; index < ordered.length; index += 1) {
58
+ const previous = ordered[index - 1];
59
+ const current = ordered[index];
60
+ if (compare(eventInstant(previous), eventInstant(current)) === 0 &&
61
+ previous.kind === current.kind) {
62
+ return sequenceFailure(current, "duplicate_kind_at_instant");
63
+ }
64
+ }
65
+ let state = null;
66
+ let coverage = "open";
67
+ let activeIntervalStart = null;
68
+ let derivedActiveTime = ZERO;
69
+ for (const [index, event] of ordered.entries()) {
70
+ const instant = eventInstant(event);
71
+ if (state === "done")
72
+ return sequenceFailure(event, "event_after_finish");
73
+ switch (event.kind) {
74
+ case "start":
75
+ if (index !== 0 || state !== null) {
76
+ return sequenceFailure(event, "invalid_transition");
77
+ }
78
+ state = "active";
79
+ activeIntervalStart = instant;
80
+ break;
81
+ case "suspend":
82
+ if (state !== "active" || activeIntervalStart === null) {
83
+ return sequenceFailure(event, "invalid_transition");
84
+ }
85
+ derivedActiveTime = add(derivedActiveTime, subtract(instant, activeIntervalStart));
86
+ if (derivedActiveTime.numerator < 0n) {
87
+ return sequenceFailure(event, "invalid_transition");
88
+ }
89
+ state = "suspended";
90
+ activeIntervalStart = null;
91
+ break;
92
+ case "resume":
93
+ if (state !== "suspended") {
94
+ return sequenceFailure(event, "invalid_transition");
95
+ }
96
+ state = "active";
97
+ activeIntervalStart = instant;
98
+ break;
99
+ case "finish":
100
+ if (index === 0 && state === null) {
101
+ state = "done";
102
+ coverage = "finish_only";
103
+ break;
104
+ }
105
+ if (state !== "active" && state !== "suspended") {
106
+ return sequenceFailure(event, "invalid_transition");
107
+ }
108
+ if (state === "active" && activeIntervalStart !== null) {
109
+ derivedActiveTime = add(derivedActiveTime, subtract(instant, activeIntervalStart));
110
+ if (derivedActiveTime.numerator < 0n) {
111
+ return sequenceFailure(event, "invalid_transition");
112
+ }
113
+ }
114
+ state = "done";
115
+ activeIntervalStart = null;
116
+ coverage = "complete";
117
+ break;
118
+ }
119
+ }
120
+ return Object.freeze({
121
+ ok: true,
122
+ coverage,
123
+ state,
124
+ derivedActiveTime: coverage === "complete"
125
+ ? divide(derivedActiveTime, rational(3600n))
126
+ : null,
127
+ diagnostics: Object.freeze([]),
128
+ });
129
+ }
130
+ export function taskStatus(task) {
131
+ return (fieldNamed(task, "status")?.value ?? "planned");
132
+ }
133
+ export function taskStatusSpan(task) {
134
+ return fieldNamed(task, "status")?.valueSpan ?? task.idSpan;
135
+ }
136
+ export function validateStoredLifecycleState(validated) {
137
+ const model = projectActualsSourceModel(validated);
138
+ const diagnostics = [];
139
+ for (const task of validated.document.declarations) {
140
+ if (task.kind !== "task")
141
+ continue;
142
+ const events = workEventsForTask(model, task.id);
143
+ const reduction = reduceTaskLifecycle(events);
144
+ if (!reduction.ok) {
145
+ diagnostics.push(...reduction.diagnostics);
146
+ continue;
147
+ }
148
+ if (reduction.coverage === "unrecorded")
149
+ continue;
150
+ const stored = taskStatus(task);
151
+ if (reduction.state !== stored) {
152
+ diagnostics.push(actualsDiagnostic("PTACT-104", "invalid work-event lifecycle sequence", "state_event_mismatch", task.id, taskStatusSpan(task), {
153
+ stored_state: stored,
154
+ event_state: reduction.state,
155
+ }));
156
+ continue;
157
+ }
158
+ if (reduction.coverage !== "complete")
159
+ continue;
160
+ const finish = events.find(({ kind }) => kind === "finish");
161
+ if (finish?.activeTime !== null &&
162
+ finish?.activeTime !== undefined &&
163
+ reduction.derivedActiveTime !== null &&
164
+ compare(finish.activeTime.value, reduction.derivedActiveTime) !== 0) {
165
+ diagnostics.push(actualsDiagnostic("PTACT-107", "explicit active time differs from the event-derived active time", "active_time_mismatch", finish.id, finish.activeTime.valueSpan, {
166
+ explicit_numerator: finish.activeTime.value.numerator.toString(),
167
+ explicit_denominator: finish.activeTime.value.denominator.toString(),
168
+ derived_numerator: reduction.derivedActiveTime.numerator.toString(),
169
+ derived_denominator: reduction.derivedActiveTime.denominator.toString(),
170
+ }));
171
+ }
172
+ }
173
+ return Object.freeze(diagnostics);
174
+ }
175
+ //# sourceMappingURL=reduction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reduction.js","sourceRoot":"","sources":["../../src/actuals/reduction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { Diagnostic } from "../model/diagnostics.js";
2
+ import type { DocumentNode } from "../model/syntax.js";
3
+ import type { PrecedenceResult } from "../analysis/precedence.js";
4
+ import type { ResourceScheduleResult } from "../analysis/resource.js";
5
+ import type { Rational } from "../model/rational.js";
6
+ import type { DurationUnit, Velocity, VelocityConversion } from "../model/units.js";
7
+ export type AnalysisMode = "precedence" | "resource" | "both";
8
+ export interface AnalyzeOptions {
9
+ readonly mode?: AnalysisMode;
10
+ readonly capacityOverrides?: ReadonlyMap<string, number>;
11
+ readonly maxPaths?: number;
12
+ readonly precision?: number;
13
+ readonly maxDiagnostics?: number;
14
+ }
15
+ export interface AnalysisResult {
16
+ readonly ok: boolean;
17
+ readonly document: DocumentNode;
18
+ readonly documentId: string | null;
19
+ readonly diagnostics: readonly Diagnostic[];
20
+ readonly diagnosticsTruncated: boolean;
21
+ readonly mode: AnalysisMode;
22
+ readonly precision: number;
23
+ readonly capacityOverrides: ReadonlyMap<string, number>;
24
+ readonly durationUnit: DurationUnit | null;
25
+ readonly velocity: Velocity | null;
26
+ readonly velocityForecast: VelocityConversion | null;
27
+ readonly criticalEpsilon: Rational | null;
28
+ readonly precedence: PrecedenceResult | null;
29
+ readonly resource: ResourceScheduleResult | null;
30
+ }
31
+ export declare function analyzeValidatedDocument(document: DocumentNode, documentId: string, initialDiagnostics: readonly Diagnostic[], diagnosticsAlreadyTruncated: boolean, options?: AnalyzeOptions): AnalysisResult;
32
+ export declare function analyzeDocument(text: string, options?: AnalyzeOptions): AnalysisResult;
33
+ //# sourceMappingURL=service.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../../src/analysis/service.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,UAAU,EAAmB,MAAM,yBAAyB,CAAC;AAQ3E,OAAO,KAAK,EAAE,YAAY,EAAoB,MAAM,oBAAoB,CAAC;AAIzE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,2BAA2B,CAAC;AAElE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAIpF,MAAM,MAAM,YAAY,GAAG,YAAY,GAAG,UAAU,GAAG,MAAM,CAAC;AAE9D,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,IAAI,CAAC,EAAE,YAAY,CAAC;IAC7B,QAAQ,CAAC,iBAAiB,CAAC,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACzD,QAAQ,CAAC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,SAAS,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,CAAC,cAAc,CAAC,EAAE,MAAM,CAAC;CAClC;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,CAAC,EAAE,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAC;IAChC,QAAQ,CAAC,UAAU,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,WAAW,EAAE,SAAS,UAAU,EAAE,CAAC;IAC5C,QAAQ,CAAC,oBAAoB,EAAE,OAAO,CAAC;IACvC,QAAQ,CAAC,IAAI,EAAE,YAAY,CAAC;IAC5B,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,QAAQ,CAAC,iBAAiB,EAAE,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACxD,QAAQ,CAAC,YAAY,EAAE,YAAY,GAAG,IAAI,CAAC;IAC3C,QAAQ,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IACnC,QAAQ,CAAC,gBAAgB,EAAE,kBAAkB,GAAG,IAAI,CAAC;IACrD,QAAQ,CAAC,eAAe,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,UAAU,EAAE,gBAAgB,GAAG,IAAI,CAAC;IAC7C,QAAQ,CAAC,QAAQ,EAAE,sBAAsB,GAAG,IAAI,CAAC;CAClD;AAgFD,wBAAgB,wBAAwB,CACtC,QAAQ,EAAE,YAAY,EACtB,UAAU,EAAE,MAAM,EAClB,kBAAkB,EAAE,SAAS,UAAU,EAAE,EACzC,2BAA2B,EAAE,OAAO,EACpC,OAAO,GAAE,cAAmB,GAC3B,cAAc,CAoFhB;AAED,wBAAgB,eAAe,CAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,GAAE,cAAmB,GAC3B,cAAc,CAgChB"}
@@ -0,0 +1,153 @@
1
+ import { hasErrors, limitDiagnostics, normalizeMaxDiagnostics, sortDiagnostics, } from "../model/diagnostics.js";
2
+ import { fieldNamed } from "../model/syntax.js";
3
+ import { buildResidualGraph } from "../analysis/graph.js";
4
+ import { analyzePrecedence } from "../analysis/precedence.js";
5
+ import { analyzeResources } from "../analysis/resource.js";
6
+ import { createVelocityConversion } from "../model/units.js";
7
+ import { checkDocument } from "../semantic/check.js";
8
+ function diagnostic(code, severity, message, entityId, related, helpTopic = "analysis.resources") {
9
+ return {
10
+ code,
11
+ severity,
12
+ message,
13
+ helpTopic,
14
+ ...(entityId === undefined ? {} : { entityId }),
15
+ ...(related === undefined || related.length === 0 ? {} : { related }),
16
+ };
17
+ }
18
+ function validateCapacityOverrides(graph, overrides) {
19
+ const diagnostics = [];
20
+ for (const [id] of overrides) {
21
+ if (!graph.resources.has(id)) {
22
+ diagnostics.push(diagnostic("PTSEM-206", "error", `resource ${id} in capacity override is undefined`, id));
23
+ }
24
+ }
25
+ if (hasErrors(diagnostics))
26
+ return diagnostics;
27
+ const effective = new Map([...graph.resources].map(([id, resource]) => [id, overrides.get(id) ?? resource.capacity]));
28
+ for (const declaration of graph.document.declarations.filter((candidate) => candidate.kind === "task")) {
29
+ const requirements = (fieldNamed(declaration, "requires")?.value ?? []);
30
+ for (const requirement of requirements) {
31
+ if (requirement.units > effective.get(requirement.resourceId)) {
32
+ diagnostics.push({
33
+ code: "PTSEM-208",
34
+ severity: "error",
35
+ message: `requirement ${requirement.units} exceeds what-if capacity ${effective.get(requirement.resourceId)}`,
36
+ entityId: declaration.id,
37
+ span: requirement.unitsSpan,
38
+ helpTopic: "analysis.resources",
39
+ });
40
+ }
41
+ }
42
+ }
43
+ for (const [id, resource] of graph.resources) {
44
+ const activeTasks = graph.document.declarations.filter((declaration) => declaration.kind === "task" && fieldNamed(declaration, "status")?.value === "active");
45
+ const usage = activeTasks.reduce((sum, task) => {
46
+ const requirements = (fieldNamed(task, "requires")?.value ?? []);
47
+ return sum + (requirements.find((requirement) => requirement.resourceId === id)?.units ?? 0);
48
+ }, 0);
49
+ if (usage > effective.get(id)) {
50
+ diagnostics.push({
51
+ code: "PTRES-202",
52
+ severity: "error",
53
+ message: `what-if capacity ${effective.get(id)} is less than active usage ${usage}`,
54
+ entityId: id,
55
+ span: fieldNamed(resource.declaration, "capacity").valueSpan,
56
+ helpTopic: "analysis.resources",
57
+ related: activeTasks
58
+ .filter((task) => {
59
+ const requirements = (fieldNamed(task, "requires")?.value ?? []);
60
+ return requirements.some((requirement) => requirement.resourceId === id);
61
+ })
62
+ .map((task) => ({ message: `active task ${task.id}`, span: task.idSpan })),
63
+ });
64
+ }
65
+ }
66
+ return diagnostics;
67
+ }
68
+ export function analyzeValidatedDocument(document, documentId, initialDiagnostics, diagnosticsAlreadyTruncated, options = {}) {
69
+ const mode = options.mode ?? "both";
70
+ const maxPaths = options.maxPaths ?? 1;
71
+ const precision = options.precision ?? 3;
72
+ const maxDiagnostics = normalizeMaxDiagnostics(options.maxDiagnostics);
73
+ const overrides = options.capacityOverrides ?? new Map();
74
+ const diagnostics = [...initialDiagnostics];
75
+ const graph = buildResidualGraph(document);
76
+ diagnostics.push(...validateCapacityOverrides(graph, overrides));
77
+ if (hasErrors(diagnostics)) {
78
+ const limited = limitDiagnostics(sortDiagnostics(diagnostics), maxDiagnostics);
79
+ return {
80
+ ok: false,
81
+ document,
82
+ documentId,
83
+ diagnostics: limited.diagnostics,
84
+ diagnosticsTruncated: diagnosticsAlreadyTruncated || limited.truncated,
85
+ mode,
86
+ precision,
87
+ capacityOverrides: overrides,
88
+ durationUnit: graph.durationUnit,
89
+ velocity: graph.velocity,
90
+ velocityForecast: createVelocityConversion(graph.durationUnit, graph.velocity),
91
+ criticalEpsilon: graph.criticalEpsilon,
92
+ precedence: null,
93
+ resource: null,
94
+ };
95
+ }
96
+ const internalPrecedence = analyzePrecedence(graph, maxPaths);
97
+ const resource = mode === "precedence"
98
+ ? null
99
+ : analyzeResources(graph, internalPrecedence, overrides, maxPaths);
100
+ const precedence = mode === "resource" ? null : internalPrecedence;
101
+ if (precedence?.critical.pathsTruncated === true ||
102
+ resource?.scheduleCritical.pathsTruncated === true) {
103
+ diagnostics.push(diagnostic("PTDAG-302", "warning", `critical path enumeration was truncated at max-paths ${maxPaths}`, undefined, undefined, "analysis"));
104
+ }
105
+ if (resource?.conditionalOnBlocksResolved === true) {
106
+ diagnostics.push(diagnostic("PTRES-303", "warning", "resource schedule is conditional on blocked tasks being resolved at time 0", resource.blockedTaskIds[0]));
107
+ }
108
+ const limited = limitDiagnostics(sortDiagnostics(diagnostics), maxDiagnostics);
109
+ return {
110
+ ok: !hasErrors(diagnostics),
111
+ document,
112
+ documentId,
113
+ diagnostics: limited.diagnostics,
114
+ diagnosticsTruncated: diagnosticsAlreadyTruncated || limited.truncated,
115
+ mode,
116
+ precision,
117
+ capacityOverrides: overrides,
118
+ durationUnit: graph.durationUnit,
119
+ velocity: graph.velocity,
120
+ velocityForecast: createVelocityConversion(graph.durationUnit, graph.velocity),
121
+ criticalEpsilon: graph.criticalEpsilon,
122
+ precedence,
123
+ resource,
124
+ };
125
+ }
126
+ export function analyzeDocument(text, options = {}) {
127
+ const mode = options.mode ?? "both";
128
+ const precision = options.precision ?? 3;
129
+ const maxDiagnostics = normalizeMaxDiagnostics(options.maxDiagnostics);
130
+ const overrides = options.capacityOverrides ?? new Map();
131
+ const checked = checkDocument(text, { maxDiagnostics });
132
+ const diagnostics = [...checked.diagnostics];
133
+ if (!checked.ok) {
134
+ return {
135
+ ok: false,
136
+ document: checked.document,
137
+ documentId: checked.documentId,
138
+ diagnostics,
139
+ diagnosticsTruncated: checked.diagnosticsTruncated,
140
+ mode,
141
+ precision,
142
+ capacityOverrides: overrides,
143
+ durationUnit: null,
144
+ velocity: null,
145
+ velocityForecast: null,
146
+ criticalEpsilon: null,
147
+ precedence: null,
148
+ resource: null,
149
+ };
150
+ }
151
+ return analyzeValidatedDocument(checked.document, checked.documentId, diagnostics, checked.diagnosticsTruncated, options);
152
+ }
153
+ //# sourceMappingURL=service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"service.js","sourceRoot":"","sources":["../../src/analysis/service.ts"],"names":[],"mappings":"AACA,OAAO,EACL,SAAS,EACT,gBAAgB,EAChB,uBAAuB,EACvB,eAAe,GAChB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAEhD,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,iBAAiB,EAAE,MAAM,2BAA2B,CAAC;AAE9D,OAAO,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAI3D,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AA6BrD,SAAS,UAAU,CACjB,IAAY,EACZ,QAA6B,EAC7B,OAAe,EACf,QAAiB,EACjB,OAAoC,EACpC,SAAS,GAAG,oBAAoB;IAEhC,OAAO;QACL,IAAI;QACJ,QAAQ;QACR,OAAO;QACP,SAAS;QACT,GAAG,CAAC,QAAQ,KAAK,SAAS,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC;QAC/C,GAAG,CAAC,OAAO,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC;KACtE,CAAC;AACJ,CAAC;AAED,SAAS,yBAAyB,CAChC,KAAoB,EACpB,SAAsC;IAEtC,MAAM,WAAW,GAAiB,EAAE,CAAC;IACrC,KAAK,MAAM,CAAC,EAAE,CAAC,IAAI,SAAS,EAAE,CAAC;QAC7B,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,CAAC;YAC7B,WAAW,CAAC,IAAI,CACd,UAAU,CAAC,WAAW,EAAE,OAAO,EAAE,YAAY,EAAE,oCAAoC,EAAE,EAAE,CAAC,CACzF,CAAC;QACJ,CAAC;IACH,CAAC;IACD,IAAI,SAAS,CAAC,WAAW,CAAC;QAAE,OAAO,WAAW,CAAC;IAC/C,MAAM,SAAS,GAAG,IAAI,GAAG,CACvB,CAAC,GAAG,KAAK,CAAC,SAAS,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,QAAQ,CAAC,EAAE,EAAE,CAAC,CAAC,EAAE,EAAE,SAAS,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,QAAQ,CAAC,QAAQ,CAAC,CAAC,CAC3F,CAAC;IACF,KAAK,MAAM,WAAW,IAAI,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,SAAS,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,CAAC;QACvG,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,WAAW,EAAE,UAAU,CAAC,EAAE,KAAK,IAAI,EAAE,CAAgC,CAAC;QACvG,KAAK,MAAM,WAAW,IAAI,YAAY,EAAE,CAAC;YACvC,IAAI,WAAW,CAAC,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAE,EAAE,CAAC;gBAC/D,WAAW,CAAC,IAAI,CAAC;oBACf,IAAI,EAAE,WAAW;oBACjB,QAAQ,EAAE,OAAO;oBACjB,OAAO,EAAE,eAAe,WAAW,CAAC,KAAK,6BAA6B,SAAS,CAAC,GAAG,CAAC,WAAW,CAAC,UAAU,CAAE,EAAE;oBAC9G,QAAQ,EAAE,WAAW,CAAC,EAAE;oBACxB,IAAI,EAAE,WAAW,CAAC,SAAS;oBAC3B,SAAS,EAAE,oBAAoB;iBAChC,CAAC,CAAC;YACL,CAAC;QACH,CAAC;IACH,CAAC;IACD,KAAK,MAAM,CAAC,EAAE,EAAE,QAAQ,CAAC,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;QAC7C,MAAM,WAAW,GAAG,KAAK,CAAC,QAAQ,CAAC,YAAY,CAAC,MAAM,CACpD,CAAC,WAAW,EAAE,EAAE,CACd,WAAW,CAAC,IAAI,KAAK,MAAM,IAAI,UAAU,CAAC,WAAW,EAAE,QAAQ,CAAC,EAAE,KAAK,KAAK,QAAQ,CACvF,CAAC;QACF,MAAM,KAAK,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE;YAC7C,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,KAAK,IAAI,EAAE,CAAgC,CAAC;YAChG,OAAO,GAAG,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,KAAK,EAAE,CAAC,EAAE,KAAK,IAAI,CAAC,CAAC,CAAC;QAC/F,CAAC,EAAE,CAAC,CAAC,CAAC;QACN,IAAI,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,EAAE,CAAE,EAAE,CAAC;YAC/B,WAAW,CAAC,IAAI,CAAC;gBACf,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,OAAO;gBACjB,OAAO,EAAE,oBAAoB,SAAS,CAAC,GAAG,CAAC,EAAE,CAAE,8BAA8B,KAAK,EAAE;gBACpF,QAAQ,EAAE,EAAE;gBACZ,IAAI,EAAE,UAAU,CAAC,QAAQ,CAAC,WAAW,EAAE,UAAU,CAAE,CAAC,SAAS;gBAC7D,SAAS,EAAE,oBAAoB;gBAC/B,OAAO,EAAE,WAAW;qBACjB,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE;oBACf,MAAM,YAAY,GAAG,CAAC,UAAU,CAAC,IAAI,EAAE,UAAU,CAAC,EAAE,KAAK,IAAI,EAAE,CAAgC,CAAC;oBAChG,OAAO,YAAY,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,WAAW,CAAC,UAAU,KAAK,EAAE,CAAC,CAAC;gBAC3E,CAAC,CAAC;qBACD,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,EAAE,OAAO,EAAE,eAAe,IAAI,CAAC,EAAE,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;aAC7E,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IACD,OAAO,WAAW,CAAC;AACrB,CAAC;AAED,MAAM,UAAU,wBAAwB,CACtC,QAAsB,EACtB,UAAkB,EAClB,kBAAyC,EACzC,2BAAoC,EACpC,OAAO,GAAmB,EAAE;IAE5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC;IACpC,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,IAAI,CAAC,CAAC;IACvC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;IACzC,MAAM,cAAc,GAAG,uBAAuB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,IAAI,IAAI,GAAG,EAAkB,CAAC;IACzE,MAAM,WAAW,GAAiB,CAAC,GAAG,kBAAkB,CAAC,CAAC;IAC1D,MAAM,KAAK,GAAG,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC3C,WAAW,CAAC,IAAI,CAAC,GAAG,yBAAyB,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,CAAC;IACjE,IAAI,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,gBAAgB,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC;QAC/E,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ;YACR,UAAU;YACV,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,oBAAoB,EAClB,2BAA2B,IAAI,OAAO,CAAC,SAAS;YAClD,IAAI;YACJ,SAAS;YACT,iBAAiB,EAAE,SAAS;YAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;YAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,gBAAgB,EAAE,wBAAwB,CACxC,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,QAAQ,CACf;YACD,eAAe,EAAE,KAAK,CAAC,eAAe;YACtC,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;SACf,CAAC;IACJ,CAAC;IACD,MAAM,kBAAkB,GAAG,iBAAiB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;IAC9D,MAAM,QAAQ,GACZ,IAAI,KAAK,YAAY;QACnB,CAAC,CAAC,IAAI;QACN,CAAC,CAAC,gBAAgB,CAAC,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;IACvE,MAAM,UAAU,GAAG,IAAI,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,kBAAkB,CAAC;IACnE,IACE,UAAU,EAAE,QAAQ,CAAC,cAAc,KAAK,IAAI;QAC5C,QAAQ,EAAE,gBAAgB,CAAC,cAAc,KAAK,IAAI,EAClD,CAAC;QACD,WAAW,CAAC,IAAI,CACd,UAAU,CACR,WAAW,EACX,SAAS,EACT,wDAAwD,QAAQ,EAAE,EAClE,SAAS,EACT,SAAS,EACT,UAAU,CACX,CACF,CAAC;IACJ,CAAC;IACD,IAAI,QAAQ,EAAE,2BAA2B,KAAK,IAAI,EAAE,CAAC;QACnD,WAAW,CAAC,IAAI,CACd,UAAU,CACR,WAAW,EACX,SAAS,EACT,4EAA4E,EAC5E,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,CAC3B,CACF,CAAC;IACJ,CAAC;IACD,MAAM,OAAO,GAAG,gBAAgB,CAAC,eAAe,CAAC,WAAW,CAAC,EAAE,cAAc,CAAC,CAAC;IAC/E,OAAO;QACL,EAAE,EAAE,CAAC,SAAS,CAAC,WAAW,CAAC;QAC3B,QAAQ;QACR,UAAU;QACV,WAAW,EAAE,OAAO,CAAC,WAAW;QAChC,oBAAoB,EAClB,2BAA2B,IAAI,OAAO,CAAC,SAAS;QAClD,IAAI;QACJ,SAAS;QACT,iBAAiB,EAAE,SAAS;QAC5B,YAAY,EAAE,KAAK,CAAC,YAAY;QAChC,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,gBAAgB,EAAE,wBAAwB,CACxC,KAAK,CAAC,YAAY,EAClB,KAAK,CAAC,QAAQ,CACf;QACD,eAAe,EAAE,KAAK,CAAC,eAAe;QACtC,UAAU;QACV,QAAQ;KACT,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,eAAe,CAC7B,IAAY,EACZ,OAAO,GAAmB,EAAE;IAE5B,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC;IACpC,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,CAAC,CAAC;IACzC,MAAM,cAAc,GAAG,uBAAuB,CAAC,OAAO,CAAC,cAAc,CAAC,CAAC;IACvE,MAAM,SAAS,GAAG,OAAO,CAAC,iBAAiB,IAAI,IAAI,GAAG,EAAkB,CAAC;IACzE,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,EAAE,EAAE,cAAc,EAAE,CAAC,CAAC;IACxD,MAAM,WAAW,GAAiB,CAAC,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;IAC3D,IAAI,CAAC,OAAO,CAAC,EAAE,EAAE,CAAC;QAChB,OAAO;YACL,EAAE,EAAE,KAAK;YACT,QAAQ,EAAE,OAAO,CAAC,QAAQ;YAC1B,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,WAAW;YACX,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;YAClD,IAAI;YACJ,SAAS;YACT,iBAAiB,EAAE,SAAS;YAC5B,YAAY,EAAE,IAAI;YAClB,QAAQ,EAAE,IAAI;YACd,gBAAgB,EAAE,IAAI;YACtB,eAAe,EAAE,IAAI;YACrB,UAAU,EAAE,IAAI;YAChB,QAAQ,EAAE,IAAI;SACf,CAAC;IACJ,CAAC;IACD,OAAO,wBAAwB,CAC7B,OAAO,CAAC,QAAQ,EAChB,OAAO,CAAC,UAAW,EACnB,WAAW,EACX,OAAO,CAAC,oBAAoB,EAC5B,OAAO,CACR,CAAC;AACJ,CAAC"}
@@ -0,0 +1,88 @@
1
+ import type { Diagnostic } from "../model/diagnostics.js";
2
+ import type { DocumentNode, TargetDeclarationKind } from "../model/syntax.js";
3
+ import { CALENDAR_ARITHMETIC_IDENTITY, type CalendarDifference, type CalendarUnavailableCause } from "../model/calendar-arithmetic.js";
4
+ import { type TargetCalendarValue } from "../model/target-calendar.js";
5
+ import type { CalendarUnit, DurationUnit } from "../model/units.js";
6
+ import type { TargetGrammar3Capability, TargetGrammar4Capability } from "../parser/document-parser.js";
7
+ import { type TargetGrammar3ValidatedDocument, type TargetGrammar4ValidatedDocument, type TargetGrammar5ValidatedDocument, type TargetValidationOptions } from "../semantic/target-validator.js";
8
+ export interface TargetTemporalCause {
9
+ readonly cause: CalendarUnavailableCause;
10
+ readonly underlyingCause: null;
11
+ readonly subjectKind: "project" | "milestone" | "task" | null;
12
+ readonly subjectId: string | null;
13
+ readonly taskId: string | null;
14
+ }
15
+ export interface TargetTemporalExactValue {
16
+ readonly numerator: bigint;
17
+ readonly denominator: bigint;
18
+ readonly unit: DurationUnit;
19
+ }
20
+ export interface TargetCalendarDifference {
21
+ readonly kind: CalendarDifference["kind"];
22
+ readonly exact: {
23
+ readonly numerator: bigint;
24
+ readonly denominator: bigint;
25
+ };
26
+ }
27
+ export interface TargetEffectiveProjection {
28
+ readonly baseUnit: DurationUnit;
29
+ readonly effectiveUnit: CalendarUnit;
30
+ readonly qualifier: "base_unit" | "velocity_forecast";
31
+ readonly velocity: {
32
+ readonly points: TargetTemporalExactValue & {
33
+ readonly unit: "point";
34
+ };
35
+ readonly period: TargetTemporalExactValue & {
36
+ readonly unit: CalendarUnit;
37
+ };
38
+ } | null;
39
+ }
40
+ export interface TargetTemporalRelationship {
41
+ readonly state: "unavailable" | "available";
42
+ readonly calendarDifference: TargetCalendarDifference | null;
43
+ readonly baseUnitValue: TargetTemporalExactValue | null;
44
+ readonly unavailableCauses: readonly TargetTemporalCause[];
45
+ }
46
+ export interface TargetReleaseInput {
47
+ readonly state: "not_applicable" | "unavailable" | "available";
48
+ readonly bound: TargetTemporalExactValue | null;
49
+ readonly relationship: TargetTemporalRelationship | null;
50
+ readonly unavailableCauses: readonly TargetTemporalCause[];
51
+ }
52
+ export interface TargetDeadlineInput {
53
+ readonly deadline: TargetCalendarValue;
54
+ readonly completionState: "incomplete" | "complete_actual_time_unavailable";
55
+ readonly anchorRelationship: TargetTemporalRelationship | null;
56
+ }
57
+ export interface TargetMilestoneTemporalInput {
58
+ readonly milestoneId: string;
59
+ readonly deadline: TargetDeadlineInput;
60
+ }
61
+ export interface TargetTaskTemporalInput {
62
+ readonly taskId: string;
63
+ readonly status: "planned" | "active" | "blocked" | "suspended" | "done";
64
+ readonly declaredNotBefore: TargetCalendarValue | null;
65
+ readonly release: TargetReleaseInput;
66
+ readonly deadline: TargetDeadlineInput | null;
67
+ }
68
+ export interface TargetTemporalInputProjection {
69
+ readonly calendar: typeof CALENDAR_ARITHMETIC_IDENTITY;
70
+ readonly documentId: string;
71
+ readonly grammarVersion: 1 | 2 | 3 | 4 | 5;
72
+ readonly anchor: TargetCalendarValue | null;
73
+ readonly effectiveProjection: TargetEffectiveProjection;
74
+ readonly milestoneDeadlines: readonly TargetMilestoneTemporalInput[];
75
+ readonly tasks: readonly TargetTaskTemporalInput[];
76
+ }
77
+ export interface TargetTemporalInputResult {
78
+ readonly ok: boolean;
79
+ readonly documentId: string | null;
80
+ readonly grammarVersion: number | null;
81
+ readonly projection: TargetTemporalInputProjection | null;
82
+ readonly diagnostics: readonly Diagnostic[];
83
+ readonly diagnosticsTruncated: boolean;
84
+ }
85
+ export declare function assertTemporalScheduleStatusProjection(document: DocumentNode<TargetDeclarationKind>): void;
86
+ export declare function projectTargetTemporalInputs(validated: TargetGrammar3ValidatedDocument | TargetGrammar4ValidatedDocument | TargetGrammar5ValidatedDocument): TargetTemporalInputProjection;
87
+ export declare function prepareTargetTemporalInputs(text: string, capability: TargetGrammar3Capability | TargetGrammar4Capability, options?: TargetValidationOptions): TargetTemporalInputResult;
88
+ //# sourceMappingURL=target-temporal-input.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"target-temporal-input.d.ts","sourceRoot":"","sources":["../../src/analysis/target-temporal-input.ts"],"names":[],"mappings":"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"}