perttool 0.10.6 → 0.11.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 (241) hide show
  1. package/CHANGELOG.md +39 -1
  2. package/README.md +274 -609
  3. package/dist/application/cli-facade.d.ts +4 -10
  4. package/dist/application/cli-facade.d.ts.map +1 -1
  5. package/dist/application/cli-facade.js +1 -1
  6. package/dist/application/cli-facade.js.map +1 -1
  7. package/dist/application/contract10-candidate.d.ts +33 -0
  8. package/dist/application/contract10-candidate.d.ts.map +1 -0
  9. package/dist/application/contract10-candidate.js +38 -0
  10. package/dist/application/contract10-candidate.js.map +1 -0
  11. package/dist/application/contract10-planning-history.d.ts +4 -0
  12. package/dist/application/contract10-planning-history.d.ts.map +1 -0
  13. package/dist/application/contract10-planning-history.js +28 -0
  14. package/dist/application/contract10-planning-history.js.map +1 -0
  15. package/dist/application/contract10-planning.d.ts +61 -0
  16. package/dist/application/contract10-planning.d.ts.map +1 -0
  17. package/dist/application/contract10-planning.js +165 -0
  18. package/dist/application/contract10-planning.js.map +1 -0
  19. package/dist/application/contract10-runtime.d.ts +185 -0
  20. package/dist/application/contract10-runtime.d.ts.map +1 -0
  21. package/dist/application/contract10-runtime.js +236 -0
  22. package/dist/application/contract10-runtime.js.map +1 -0
  23. package/dist/application/contract8-milestone-acceptance.d.ts +6 -22
  24. package/dist/application/contract8-milestone-acceptance.d.ts.map +1 -1
  25. package/dist/application/contract8-milestone-acceptance.js +21 -99
  26. package/dist/application/contract8-milestone-acceptance.js.map +1 -1
  27. package/dist/application/contract8-milestone-read.d.ts +25 -0
  28. package/dist/application/contract8-milestone-read.d.ts.map +1 -0
  29. package/dist/application/contract8-milestone-read.js +111 -0
  30. package/dist/application/contract8-milestone-read.js.map +1 -0
  31. package/dist/application/contract9-assurance-evaluate.d.ts +3 -0
  32. package/dist/application/contract9-assurance-evaluate.d.ts.map +1 -0
  33. package/dist/application/contract9-assurance-evaluate.js +75 -0
  34. package/dist/application/contract9-assurance-evaluate.js.map +1 -0
  35. package/dist/application/contract9-assurance.d.ts +1 -2
  36. package/dist/application/contract9-assurance.d.ts.map +1 -1
  37. package/dist/application/contract9-assurance.js +2 -56
  38. package/dist/application/contract9-assurance.js.map +1 -1
  39. package/dist/application/contract9-candidate.d.ts +8 -0
  40. package/dist/application/contract9-candidate.d.ts.map +1 -1
  41. package/dist/application/contract9-candidate.js +36 -11
  42. package/dist/application/contract9-candidate.js.map +1 -1
  43. package/dist/application/contract9-mixed-mutation.d.ts +3 -0
  44. package/dist/application/contract9-mixed-mutation.d.ts.map +1 -1
  45. package/dist/application/contract9-mixed-mutation.js +5 -4
  46. package/dist/application/contract9-mixed-mutation.js.map +1 -1
  47. package/dist/application/contract9-temporal.js +1 -1
  48. package/dist/application/contract9-temporal.js.map +1 -1
  49. package/dist/application/target-actuals-analysis.d.ts.map +1 -1
  50. package/dist/application/target-actuals-analysis.js +10 -6
  51. package/dist/application/target-actuals-analysis.js.map +1 -1
  52. package/dist/application/target-temporal-analysis.d.ts +1 -0
  53. package/dist/application/target-temporal-analysis.d.ts.map +1 -1
  54. package/dist/application/target-temporal-analysis.js +5 -1
  55. package/dist/application/target-temporal-analysis.js.map +1 -1
  56. package/dist/cli.js +761 -87
  57. package/dist/cli.js.map +1 -1
  58. package/dist/command/contract10-discovery.d.ts +17 -0
  59. package/dist/command/contract10-discovery.d.ts.map +1 -0
  60. package/dist/command/contract10-discovery.js +304 -0
  61. package/dist/command/contract10-discovery.js.map +1 -0
  62. package/dist/command/contract10-usage.d.ts +24 -0
  63. package/dist/command/contract10-usage.d.ts.map +1 -0
  64. package/dist/command/contract10-usage.js +49 -0
  65. package/dist/command/contract10-usage.js.map +1 -0
  66. package/dist/core/index.d.ts +11 -2
  67. package/dist/core/index.d.ts.map +1 -1
  68. package/dist/core/index.js +3 -1
  69. package/dist/core/index.js.map +1 -1
  70. package/dist/help/assurance-guide.js +1 -1
  71. package/dist/help/assurance-guide.js.map +1 -1
  72. package/dist/help/contract10-guide.d.ts +10 -0
  73. package/dist/help/contract10-guide.d.ts.map +1 -0
  74. package/dist/help/contract10-guide.js +244 -0
  75. package/dist/help/contract10-guide.js.map +1 -0
  76. package/dist/index.d.ts +18 -8
  77. package/dist/index.d.ts.map +1 -1
  78. package/dist/index.js +8 -5
  79. package/dist/index.js.map +1 -1
  80. package/dist/milestone-acceptance/advance.d.ts +9 -0
  81. package/dist/milestone-acceptance/advance.d.ts.map +1 -1
  82. package/dist/milestone-acceptance/advance.js +29 -2
  83. package/dist/milestone-acceptance/advance.js.map +1 -1
  84. package/dist/milestone-acceptance/mutation.d.ts +2 -0
  85. package/dist/milestone-acceptance/mutation.d.ts.map +1 -1
  86. package/dist/milestone-acceptance/mutation.js +48 -12
  87. package/dist/milestone-acceptance/mutation.js.map +1 -1
  88. package/dist/model/source-result.d.ts +12 -0
  89. package/dist/model/source-result.d.ts.map +1 -0
  90. package/dist/model/source-result.js +16 -0
  91. package/dist/model/source-result.js.map +1 -0
  92. package/dist/mutation/advance-deletion.d.ts +1 -0
  93. package/dist/mutation/advance-deletion.d.ts.map +1 -1
  94. package/dist/mutation/advance-deletion.js +4 -1
  95. package/dist/mutation/advance-deletion.js.map +1 -1
  96. package/dist/mutation/validated-source.d.ts +30 -0
  97. package/dist/mutation/validated-source.d.ts.map +1 -0
  98. package/dist/mutation/validated-source.js +58 -0
  99. package/dist/mutation/validated-source.js.map +1 -0
  100. package/dist/node/planning-token-store.d.ts +3 -0
  101. package/dist/node/planning-token-store.d.ts.map +1 -0
  102. package/dist/node/planning-token-store.js +90 -0
  103. package/dist/node/planning-token-store.js.map +1 -0
  104. package/dist/parser/document-parser.d.ts +1 -0
  105. package/dist/parser/document-parser.d.ts.map +1 -1
  106. package/dist/parser/document-parser.js +1 -1
  107. package/dist/parser/document-parser.js.map +1 -1
  108. package/dist/perttool-vscode-private-0.0.0-d1578b9.vsix +0 -0
  109. package/dist/planning-pool/advance.d.ts +10 -0
  110. package/dist/planning-pool/advance.d.ts.map +1 -0
  111. package/dist/planning-pool/advance.js +158 -0
  112. package/dist/planning-pool/advance.js.map +1 -0
  113. package/dist/planning-pool/format.d.ts +12 -0
  114. package/dist/planning-pool/format.d.ts.map +1 -0
  115. package/dist/planning-pool/format.js +199 -0
  116. package/dist/planning-pool/format.js.map +1 -0
  117. package/dist/planning-pool/history-guard.d.ts +19 -0
  118. package/dist/planning-pool/history-guard.d.ts.map +1 -0
  119. package/dist/planning-pool/history-guard.js +123 -0
  120. package/dist/planning-pool/history-guard.js.map +1 -0
  121. package/dist/planning-pool/history-types.d.ts +174 -0
  122. package/dist/planning-pool/history-types.d.ts.map +1 -0
  123. package/dist/planning-pool/history-types.js +2 -0
  124. package/dist/planning-pool/history-types.js.map +1 -0
  125. package/dist/planning-pool/history.d.ts +11 -0
  126. package/dist/planning-pool/history.d.ts.map +1 -0
  127. package/dist/planning-pool/history.js +977 -0
  128. package/dist/planning-pool/history.js.map +1 -0
  129. package/dist/planning-pool/human.d.ts +9 -0
  130. package/dist/planning-pool/human.d.ts.map +1 -0
  131. package/dist/planning-pool/human.js +305 -0
  132. package/dist/planning-pool/human.js.map +1 -0
  133. package/dist/planning-pool/intent-types.d.ts +76 -0
  134. package/dist/planning-pool/intent-types.d.ts.map +1 -0
  135. package/dist/planning-pool/intent-types.js +2 -0
  136. package/dist/planning-pool/intent-types.js.map +1 -0
  137. package/dist/planning-pool/intent.d.ts +7 -0
  138. package/dist/planning-pool/intent.d.ts.map +1 -0
  139. package/dist/planning-pool/intent.js +590 -0
  140. package/dist/planning-pool/intent.js.map +1 -0
  141. package/dist/planning-pool/observation-types.d.ts +143 -0
  142. package/dist/planning-pool/observation-types.d.ts.map +1 -0
  143. package/dist/planning-pool/observation-types.js +2 -0
  144. package/dist/planning-pool/observation-types.js.map +1 -0
  145. package/dist/planning-pool/observation.d.ts +8 -0
  146. package/dist/planning-pool/observation.d.ts.map +1 -0
  147. package/dist/planning-pool/observation.js +582 -0
  148. package/dist/planning-pool/observation.js.map +1 -0
  149. package/dist/planning-pool/projection.d.ts +28 -0
  150. package/dist/planning-pool/projection.d.ts.map +1 -0
  151. package/dist/planning-pool/projection.js +148 -0
  152. package/dist/planning-pool/projection.js.map +1 -0
  153. package/dist/planning-pool/public-core.d.ts +32 -0
  154. package/dist/planning-pool/public-core.d.ts.map +1 -0
  155. package/dist/planning-pool/public-core.js +122 -0
  156. package/dist/planning-pool/public-core.js.map +1 -0
  157. package/dist/planning-pool/reshape-normalize.d.ts +15 -0
  158. package/dist/planning-pool/reshape-normalize.d.ts.map +1 -0
  159. package/dist/planning-pool/reshape-normalize.js +688 -0
  160. package/dist/planning-pool/reshape-normalize.js.map +1 -0
  161. package/dist/planning-pool/reshape-token.d.ts +20 -0
  162. package/dist/planning-pool/reshape-token.d.ts.map +1 -0
  163. package/dist/planning-pool/reshape-token.js +193 -0
  164. package/dist/planning-pool/reshape-token.js.map +1 -0
  165. package/dist/planning-pool/reshape-types.d.ts +183 -0
  166. package/dist/planning-pool/reshape-types.d.ts.map +1 -0
  167. package/dist/planning-pool/reshape-types.js +2 -0
  168. package/dist/planning-pool/reshape-types.js.map +1 -0
  169. package/dist/planning-pool/reshape.d.ts +13 -0
  170. package/dist/planning-pool/reshape.d.ts.map +1 -0
  171. package/dist/planning-pool/reshape.js +1434 -0
  172. package/dist/planning-pool/reshape.js.map +1 -0
  173. package/dist/planning-pool/source-lexical.d.ts +30 -0
  174. package/dist/planning-pool/source-lexical.d.ts.map +1 -0
  175. package/dist/planning-pool/source-lexical.js +158 -0
  176. package/dist/planning-pool/source-lexical.js.map +1 -0
  177. package/dist/planning-pool/source-types.d.ts +169 -0
  178. package/dist/planning-pool/source-types.d.ts.map +1 -0
  179. package/dist/planning-pool/source-types.js +2 -0
  180. package/dist/planning-pool/source-types.js.map +1 -0
  181. package/dist/planning-pool/source-values.d.ts +16 -0
  182. package/dist/planning-pool/source-values.d.ts.map +1 -0
  183. package/dist/planning-pool/source-values.js +120 -0
  184. package/dist/planning-pool/source-values.js.map +1 -0
  185. package/dist/planning-pool/source.d.ts +18 -0
  186. package/dist/planning-pool/source.d.ts.map +1 -0
  187. package/dist/planning-pool/source.js +811 -0
  188. package/dist/planning-pool/source.js.map +1 -0
  189. package/dist/planning-pool/window-types.d.ts +133 -0
  190. package/dist/planning-pool/window-types.d.ts.map +1 -0
  191. package/dist/planning-pool/window-types.js +2 -0
  192. package/dist/planning-pool/window-types.js.map +1 -0
  193. package/dist/planning-pool/window.d.ts +6 -0
  194. package/dist/planning-pool/window.d.ts.map +1 -0
  195. package/dist/planning-pool/window.js +625 -0
  196. package/dist/planning-pool/window.js.map +1 -0
  197. package/dist/schema/registry.d.ts +1 -1
  198. package/dist/schema/registry.d.ts.map +1 -1
  199. package/dist/schema/registry.js +17 -3
  200. package/dist/schema/registry.js.map +1 -1
  201. package/dist/temporal-schedule/format.d.ts.map +1 -1
  202. package/dist/temporal-schedule/format.js +4 -54
  203. package/dist/temporal-schedule/format.js.map +1 -1
  204. package/dist/temporal-schedule/source-lexical.d.ts +9 -0
  205. package/dist/temporal-schedule/source-lexical.d.ts.map +1 -1
  206. package/dist/temporal-schedule/source-lexical.js +21 -10
  207. package/dist/temporal-schedule/source-lexical.js.map +1 -1
  208. package/dist/temporal-schedule/source.d.ts.map +1 -1
  209. package/dist/temporal-schedule/source.js +3 -13
  210. package/dist/temporal-schedule/source.js.map +1 -1
  211. package/dist/version.d.ts +1 -1
  212. package/dist/version.js +1 -1
  213. package/package.json +1 -1
  214. package/schemas/{Perttool.AdvanceResult.v3.schema.json → Perttool.AdvanceResult.v4.schema.json} +42 -4
  215. package/schemas/Perttool.AgentGuidanceResult.v1.schema.json +1 -1
  216. package/schemas/Perttool.AnalysisResult.v7.schema.json +1 -1
  217. package/schemas/Perttool.CheckResult.v6.schema.json +1 -1
  218. package/schemas/Perttool.CliError.v1.schema.json +1 -1
  219. package/schemas/Perttool.CommandHelpResult.v1.schema.json +2 -2
  220. package/schemas/Perttool.ExportResult.v1.schema.json +1 -1
  221. package/schemas/Perttool.FormatResult.v1.schema.json +1 -1
  222. package/schemas/Perttool.GuideResult.v1.schema.json +1 -1
  223. package/schemas/Perttool.HistoricalGraphResult.v1.schema.json +1 -1
  224. package/schemas/Perttool.ImportResult.v1.schema.json +1 -1
  225. package/schemas/Perttool.InitResult.v1.schema.json +1 -1
  226. package/schemas/Perttool.MilestoneAcceptanceMigrationResult.v1.schema.json +1 -1
  227. package/schemas/Perttool.MilestoneAcceptanceResult.v1.schema.json +1 -1
  228. package/schemas/Perttool.MutationResult.v6.schema.json +1 -1
  229. package/schemas/Perttool.NextResult.v8.schema.json +7 -4
  230. package/schemas/Perttool.PlanAssuranceResult.v2.schema.json +1 -1
  231. package/schemas/Perttool.PlanningMutationResult.v1.schema.json +567 -0
  232. package/schemas/Perttool.PlanningObservationRequest.v1.schema.json +6 -0
  233. package/schemas/Perttool.PlanningPoolResult.v1.schema.json +469 -0
  234. package/schemas/Perttool.PlanningReshapePreflightResult.v1.schema.json +906 -0
  235. package/schemas/Perttool.PlanningReshapeRequest.v1.schema.json +19 -0
  236. package/schemas/Perttool.ProjectHistoryResult.v1.schema.json +1 -1
  237. package/schemas/Perttool.ProjectResult.v5.schema.json +1 -1
  238. package/schemas/Perttool.SchemaResult.v1.schema.json +1 -1
  239. package/schemas/{Perttool.UnitMigrationResult.v4.schema.json → Perttool.UnitMigrationResult.v5.schema.json} +42 -17
  240. package/schemas/Perttool.VelocityObservationResult.v1.schema.json +1 -1
  241. package/schemas/Perttool.WindowMutationRequest.v1.schema.json +6 -0
@@ -0,0 +1,582 @@
1
+ import { computeEffectiveReached } from "../analysis/graph.js";
2
+ import { projectActualsSourceModel, workEventsForTask, } from "../actuals/source.js";
3
+ import { reduceTaskLifecycle, taskStatus, validateStoredLifecycleState, } from "../actuals/lifecycle.js";
4
+ import { evaluateMilestoneAcceptance, } from "../milestone-acceptance/evaluate.js";
5
+ import { MILESTONE_ACCEPTANCE_SOURCE_CAPABILITY, milestoneAcceptanceBaseText, parseMilestoneAcceptanceSource, } from "../milestone-acceptance/source.js";
6
+ import { parseDeclaredCalendarValue } from "../model/calendar.js";
7
+ import { sha256DigestUtf8 } from "../model/sha256.js";
8
+ import { fieldLine, scanTemporalDeclarationBlocks, temporalScheduleBaseText } from "../temporal-schedule/source-lexical.js";
9
+ import { TARGET_GRAMMAR_6_CAPABILITY } from "../parser/document-parser.js";
10
+ import { validateTargetGrammar6Document } from "../semantic/target-validator.js";
11
+ import { canonicalPlanningCalendar, comparePlanningCalendarValues } from "./source-values.js";
12
+ import { planningPoolBaseText, scanPlanningDeclarationBlocks, } from "./source-lexical.js";
13
+ import { parsePlanningPoolSource, PLANNING_POOL_SOURCE_CAPABILITY, } from "./source.js";
14
+ import { inspectPlanningWindowSelection, PLANNING_WINDOW_CORE_CAPABILITY, } from "./window.js";
15
+ export const PLANNING_OBSERVATION_CORE_CAPABILITY = Object.freeze({
16
+ id: "perttool.planning-observation-core",
17
+ version: 1,
18
+ });
19
+ export const PLANNING_OBSERVATION_CORE_LIMITS = Object.freeze({
20
+ requestUtf8Bytes: 8_388_608,
21
+ derivedEntityRecords: 100_000,
22
+ });
23
+ const requestSchema = "Perttool.PlanningObservationRequest.v1";
24
+ const digestPattern = /^sha256:[0-9a-f]{64}$/u;
25
+ const qualifiedPattern = /^[A-Za-z][A-Za-z0-9_-]*::[A-Za-z][A-Za-z0-9_-]*$/u;
26
+ function diagnostic(code, message, entityId) {
27
+ return Object.freeze({
28
+ code,
29
+ severity: code === "PTPOOL-114" ? "warning" : "error",
30
+ message,
31
+ ...(entityId === undefined ? {} : { entityId }),
32
+ data: Object.freeze({}),
33
+ });
34
+ }
35
+ function requireCapability(capability) {
36
+ if (capability !== PLANNING_OBSERVATION_CORE_CAPABILITY) {
37
+ throw new TypeError("the private planning observation Core capability is required");
38
+ }
39
+ }
40
+ function closed(value, keys, label, diagnostics) {
41
+ if (value === null || typeof value !== "object" || Array.isArray(value)) {
42
+ diagnostics.push(diagnostic("PTPOOL-107", `${label} must be an object`));
43
+ return null;
44
+ }
45
+ const parsed = value;
46
+ const unknown = Object.keys(parsed).filter((key) => !keys.has(key));
47
+ const missing = [...keys].filter((key) => !(key in parsed));
48
+ if (unknown.length > 0 || missing.length > 0) {
49
+ diagnostics.push(diagnostic("PTPOOL-107", `${label} has${missing.length === 0 ? "" : ` missing ${missing.join(", ")}`}${unknown.length === 0 ? "" : ` unknown ${unknown.join(", ")}`}`));
50
+ }
51
+ return parsed;
52
+ }
53
+ function qualifiedIds(value, label, diagnostics) {
54
+ if (!Array.isArray(value)) {
55
+ diagnostics.push(diagnostic("PTPOOL-107", `${label} must be an array`));
56
+ return null;
57
+ }
58
+ const ids = [];
59
+ for (const item of value) {
60
+ if (typeof item !== "string" || !qualifiedPattern.test(item)) {
61
+ diagnostics.push(diagnostic("PTPOOL-102", `${label} must contain qualified identities`));
62
+ }
63
+ else {
64
+ ids.push(item);
65
+ }
66
+ }
67
+ if (new Set(ids).size !== ids.length) {
68
+ diagnostics.push(diagnostic("PTPOOL-107", `${label} contains a duplicate`));
69
+ }
70
+ return Object.freeze(ids);
71
+ }
72
+ function optionalString(value, label, diagnostics) {
73
+ if (value === null)
74
+ return null;
75
+ if (typeof value !== "string" || value.length === 0) {
76
+ diagnostics.push(diagnostic("PTPOOL-107", `${label} must be null or a non-empty string`));
77
+ return undefined;
78
+ }
79
+ return value;
80
+ }
81
+ function poolSelection(value, diagnostics) {
82
+ return closed(value, new Set(["kind"]), "Pool selection", diagnostics) === null
83
+ ? null
84
+ : Object.freeze({ kind: "pool" });
85
+ }
86
+ function workSelection(value, diagnostics) {
87
+ const parsed = closed(value, new Set(["kind", "work_ids"]), "Work selection", diagnostics);
88
+ const ids = qualifiedIds(parsed?.["work_ids"], "Work selection", diagnostics);
89
+ return parsed === null || ids === null
90
+ ? null
91
+ : Object.freeze({ kind: "work", work_ids: ids });
92
+ }
93
+ function persistedSelection(value, diagnostics) {
94
+ const parsed = closed(value, new Set(["kind", "window_id"]), "persisted Window selection", diagnostics);
95
+ const id = parsed?.["window_id"];
96
+ if (typeof id !== "string" || !qualifiedPattern.test(id)) {
97
+ diagnostics.push(diagnostic("PTPOOL-102", "Window selection requires a qualified identity"));
98
+ return null;
99
+ }
100
+ return Object.freeze({ kind: "persisted", window_id: id });
101
+ }
102
+ function adHocSelection(value, diagnostics) {
103
+ const parsed = closed(value, new Set(["kind", "title", "objective", "start", "end", "work_ids"]), "ad hoc Window selection", diagnostics);
104
+ if (parsed === null)
105
+ return null;
106
+ const title = optionalString(parsed["title"], "ad hoc title", diagnostics);
107
+ const objective = optionalString(parsed["objective"], "ad hoc objective", diagnostics);
108
+ const start = parsed["start"] === null ? null : canonicalPlanningCalendar(String(parsed["start"]));
109
+ const end = parsed["end"] === null ? null : canonicalPlanningCalendar(String(parsed["end"]));
110
+ const works = qualifiedIds(parsed["work_ids"], "ad hoc Work", diagnostics);
111
+ if (parsed["start"] !== null && start === null)
112
+ diagnostics.push(diagnostic("PTPOOL-107", "ad hoc start is invalid"));
113
+ if (parsed["end"] !== null && end === null)
114
+ diagnostics.push(diagnostic("PTPOOL-107", "ad hoc end is invalid"));
115
+ if (title === undefined || objective === undefined || works === null || diagnostics.length > 0)
116
+ return null;
117
+ return Object.freeze({ kind: "ad_hoc", title, objective, start, end, work_ids: works });
118
+ }
119
+ function normalizeSelection(value, diagnostics) {
120
+ const kind = value !== null && typeof value === "object" && !Array.isArray(value)
121
+ ? value["kind"]
122
+ : undefined;
123
+ switch (kind) {
124
+ case "pool": return poolSelection(value, diagnostics);
125
+ case "work": return workSelection(value, diagnostics);
126
+ case "persisted": return persistedSelection(value, diagnostics);
127
+ case "ad_hoc": return adHocSelection(value, diagnostics);
128
+ default:
129
+ diagnostics.push(diagnostic("PTPOOL-107", "Observation selection kind must be pool, work, persisted, or ad_hoc"));
130
+ return null;
131
+ }
132
+ }
133
+ function normalizeDispositions(value, diagnostics) {
134
+ if (!Array.isArray(value)) {
135
+ diagnostics.push(diagnostic("PTPOOL-107", "close_dispositions must be an array"));
136
+ return null;
137
+ }
138
+ const result = [];
139
+ for (const item of value) {
140
+ const parsed = closed(item, new Set(["work_id", "disposition"]), "close disposition", diagnostics);
141
+ const workId = parsed?.["work_id"];
142
+ const disposition = parsed?.["disposition"];
143
+ if (typeof workId !== "string" || !qualifiedPattern.test(workId)) {
144
+ diagnostics.push(diagnostic("PTPOOL-102", "close disposition Work must be qualified"));
145
+ continue;
146
+ }
147
+ if (disposition !== "carried_over" && disposition !== "retained_backlog" && disposition !== "archive_requested") {
148
+ diagnostics.push(diagnostic("PTPOOL-107", "close disposition is unsupported", workId));
149
+ continue;
150
+ }
151
+ result.push(Object.freeze({ work_id: workId, disposition }));
152
+ }
153
+ if (new Set(result.map(({ work_id }) => work_id)).size !== result.length) {
154
+ diagnostics.push(diagnostic("PTPOOL-107", "close disposition Work is duplicated"));
155
+ }
156
+ return Object.freeze(result);
157
+ }
158
+ function normalizeRequest(input, diagnostics) {
159
+ try {
160
+ if (new TextEncoder().encode(JSON.stringify(input)).byteLength > PLANNING_OBSERVATION_CORE_LIMITS.requestUtf8Bytes) {
161
+ diagnostics.push(diagnostic("PTPOOL-115", "Planning observation request exceeds 8388608 UTF-8 bytes"));
162
+ return null;
163
+ }
164
+ }
165
+ catch {
166
+ diagnostics.push(diagnostic("PTPOOL-107", "Planning observation request is not JSON-compatible"));
167
+ return null;
168
+ }
169
+ const parsed = closed(input, new Set(["request_schema_version", "source_digest", "selection", "observation_at", "close_dispositions"]), "Planning observation request", diagnostics);
170
+ if (parsed === null)
171
+ return null;
172
+ if (parsed["request_schema_version"] !== requestSchema) {
173
+ diagnostics.push(diagnostic("PTPOOL-107", "Planning observation request schema identity is unsupported"));
174
+ }
175
+ const sourceDigest = parsed["source_digest"];
176
+ if (typeof sourceDigest !== "string" || !digestPattern.test(sourceDigest)) {
177
+ diagnostics.push(diagnostic("PTPOOL-111", "source_digest must be a lowercase SHA-256 identity"));
178
+ }
179
+ const selection = normalizeSelection(parsed["selection"], diagnostics);
180
+ const rawObservation = parsed["observation_at"];
181
+ const observationAt = rawObservation === null ? null : canonicalPlanningCalendar(String(rawObservation));
182
+ if (rawObservation !== null && observationAt === null) {
183
+ diagnostics.push(diagnostic("PTPOOL-107", "observation_at must be null or an ISO date or fixed-offset date-time"));
184
+ }
185
+ const dispositions = normalizeDispositions(parsed["close_dispositions"], diagnostics);
186
+ if (typeof sourceDigest !== "string" || selection === null || dispositions === null || diagnostics.length > 0)
187
+ return null;
188
+ return Object.freeze({
189
+ request_schema_version: requestSchema,
190
+ source_digest: sourceDigest,
191
+ selection,
192
+ observation_at: observationAt,
193
+ close_dispositions: dispositions,
194
+ });
195
+ }
196
+ function localId(qualifiedId, documentId) {
197
+ const prefix = `${documentId}::`;
198
+ return qualifiedId.startsWith(prefix) ? qualifiedId.slice(prefix.length) : null;
199
+ }
200
+ function validateExecutionContext(context, sourceDigest, model, diagnostics) {
201
+ if (context.source_digest !== sourceDigest) {
202
+ diagnostics.push(diagnostic("PTPOOL-111", "global execution context does not match current source"));
203
+ }
204
+ if (!["complete", "incomplete", "unavailable"].includes(context.evidence_state)) {
205
+ diagnostics.push(diagnostic("PTPOOL-107", "global execution evidence state is unsupported"));
206
+ }
207
+ for (const ids of [context.recommended_task_ids, context.startable_task_ids]) {
208
+ if (new Set(ids).size !== ids.length ||
209
+ ids.some((id) => !qualifiedPattern.test(id) || localId(id, model.documentId) === null)) {
210
+ diagnostics.push(diagnostic("PTPOOL-107", "global execution context requires unique qualified Task identities"));
211
+ }
212
+ }
213
+ if (context.startable_task_ids.some((id) => !context.recommended_task_ids.includes(id))) {
214
+ diagnostics.push(diagnostic("PTPOOL-107", "startable Task facts must remain a subset of recommendations"));
215
+ }
216
+ }
217
+ function currentStrictFacts(text) {
218
+ const grammar8 = planningPoolBaseText(text, scanPlanningDeclarationBlocks(text));
219
+ const grammar7 = temporalScheduleBaseText(grammar8, scanTemporalDeclarationBlocks(grammar8));
220
+ const acceptanceSource = parseMilestoneAcceptanceSource(grammar7, MILESTONE_ACCEPTANCE_SOURCE_CAPABILITY);
221
+ const grammar6 = milestoneAcceptanceBaseText(grammar7);
222
+ const checked = validateTargetGrammar6Document(grammar6, TARGET_GRAMMAR_6_CAPABILITY);
223
+ if (!acceptanceSource.ok || !checked.ok || checked.validatedDocument === null)
224
+ return null;
225
+ const validated = checked.validatedDocument;
226
+ if (validateStoredLifecycleState(validated).length > 0)
227
+ return null;
228
+ const milestoneIds = validated.document.declarations
229
+ .filter(({ kind }) => kind === "milestone")
230
+ .map(({ id }) => id);
231
+ const acceptance = evaluateMilestoneAcceptance({
232
+ source: acceptanceSource,
233
+ milestoneIds,
234
+ closureReachedMilestoneIds: computeEffectiveReached(validated.document),
235
+ });
236
+ return acceptance.ok ? Object.freeze({ validated, acceptance }) : null;
237
+ }
238
+ function validateExecutionTaskIdentities(context, strict, documentId, diagnostics) {
239
+ const known = new Set(strict.validated.document.declarations
240
+ .filter(({ kind }) => kind === "task")
241
+ .map(({ id }) => `${documentId}::${id}`));
242
+ const unknown = [...context.recommended_task_ids, ...context.startable_task_ids]
243
+ .find((id) => !known.has(id));
244
+ if (unknown !== undefined)
245
+ diagnostics.push(diagnostic("PTPOOL-107", "global execution context names an unknown Task", unknown));
246
+ }
247
+ function allWorkIds(model) {
248
+ return Object.freeze(model.workOrder.map(({ qualifiedId }) => qualifiedId));
249
+ }
250
+ function selectedObservation(text, request, model, diagnostics) {
251
+ if (request.selection.kind === "pool") {
252
+ return Object.freeze({ workIds: allWorkIds(model), window: null, temporalOverlaps: Object.freeze([]) });
253
+ }
254
+ if (request.selection.kind === "work") {
255
+ const known = new Set(model.works.map(({ qualifiedId }) => qualifiedId));
256
+ const foreign = request.selection.work_ids.find((id) => localId(id, model.documentId) === null || !known.has(id));
257
+ if (foreign !== undefined) {
258
+ diagnostics.push(diagnostic("PTPOOL-107", `Work ${foreign} does not exist`, foreign));
259
+ return null;
260
+ }
261
+ const selected = new Set(request.selection.work_ids);
262
+ return Object.freeze({
263
+ workIds: Object.freeze(allWorkIds(model).filter((id) => selected.has(id))),
264
+ window: null,
265
+ temporalOverlaps: Object.freeze([]),
266
+ });
267
+ }
268
+ const inspected = inspectPlanningWindowSelection(text, request.selection, PLANNING_WINDOW_CORE_CAPABILITY);
269
+ if (!inspected.ok || inspected.selection === null) {
270
+ diagnostics.push(...inspected.diagnostics);
271
+ return null;
272
+ }
273
+ return Object.freeze({
274
+ workIds: inspected.orderedWorkIds,
275
+ window: inspected.selection,
276
+ temporalOverlaps: inspected.temporalOverlaps,
277
+ });
278
+ }
279
+ function projectAsOf(text) {
280
+ const project = scanTemporalDeclarationBlocks(text).find(({ kind }) => kind === "project");
281
+ const raw = project?.lines.map(fieldLine).find((field) => field?.name === "as_of")?.rawValue;
282
+ return raw === undefined ? null : canonicalPlanningCalendar(raw);
283
+ }
284
+ function temporalObservationBasis(requestValue, fallbackValue) {
285
+ return requestValue !== null
286
+ ? Object.freeze({ value: requestValue, source: "request" })
287
+ : fallbackValue !== null
288
+ ? Object.freeze({ value: fallbackValue, source: "project_as_of" })
289
+ : Object.freeze({ value: null, source: null });
290
+ }
291
+ function unavailableTemporalPosition(basis, cause) {
292
+ return Object.freeze({
293
+ state: "unavailable",
294
+ observationValue: basis.value,
295
+ source: basis.source,
296
+ cause,
297
+ });
298
+ }
299
+ function boundedTemporalPosition(window, basis) {
300
+ if (basis.value === null)
301
+ return unavailableTemporalPosition(basis, "missing_observation_value");
302
+ const value = parsePlanningCalendar(basis.value);
303
+ const representativeBound = parsePlanningCalendar(window.start ?? window.end);
304
+ if (value === null || representativeBound === null ||
305
+ comparePlanningCalendarValues(value, representativeBound) === null) {
306
+ return unavailableTemporalPosition(basis, "incomparable_temporal_kinds");
307
+ }
308
+ const start = window.start === null ? null : parsePlanningCalendar(window.start);
309
+ const end = window.end === null ? null : parsePlanningCalendar(window.end);
310
+ const state = start !== null && comparePlanningCalendarValues(value, start) < 0
311
+ ? "before"
312
+ : end !== null && comparePlanningCalendarValues(value, end) >= 0
313
+ ? "after"
314
+ : "inside";
315
+ return Object.freeze({
316
+ state,
317
+ observationValue: basis.value,
318
+ source: basis.source,
319
+ cause: null,
320
+ });
321
+ }
322
+ function temporalPosition(window, requestValue, fallbackValue) {
323
+ const basis = temporalObservationBasis(requestValue, fallbackValue);
324
+ if (window.start === null && window.end === null) {
325
+ return Object.freeze({
326
+ state: "unbounded",
327
+ observationValue: basis.value,
328
+ source: basis.source,
329
+ cause: null,
330
+ });
331
+ }
332
+ return boundedTemporalPosition(window, basis);
333
+ }
334
+ function parsePlanningCalendar(value) {
335
+ return parseDeclaredCalendarValue(value) ?? null;
336
+ }
337
+ function workArchiveable(work, model) {
338
+ const incoming = model.works.some((candidate) => candidate.qualifiedId !== work.qualifiedId &&
339
+ candidate.dependsOn.some(({ qualifiedId }) => qualifiedId === work.qualifiedId));
340
+ const membership = model.windows.some((window) => window.works.some(({ qualifiedId }) => qualifiedId === work.qualifiedId));
341
+ const meaning = (work.description?.value ?? "").length > 0 || work.events.length > 0 || work.activities.length > 0 ||
342
+ work.milestoneLinks.length > 0 || work.taskLinks.length > 0;
343
+ return !meaning && work.dependsOn.length === 0 && !incoming && !membership;
344
+ }
345
+ function taskFacts(work, model, strict) {
346
+ const actuals = projectActualsSourceModel(strict.validated);
347
+ const consumers = new Map();
348
+ for (const candidate of model.works) {
349
+ for (const link of candidate.taskLinks)
350
+ consumers.set(link.qualifiedId, (consumers.get(link.qualifiedId) ?? 0) + 1);
351
+ }
352
+ return Object.freeze(work.taskLinks.map((link) => {
353
+ const local = localId(link.qualifiedId, model.documentId);
354
+ const declaration = strict.validated.document.declarations.find(({ kind, id }) => kind === "task" && id === local);
355
+ const events = workEventsForTask(actuals, local);
356
+ const lifecycle = reduceTaskLifecycle(events);
357
+ const status = taskStatus(declaration);
358
+ return Object.freeze({
359
+ taskId: link.qualifiedId,
360
+ status,
361
+ actualsCoverage: lifecycle.coverage,
362
+ workEventIds: Object.freeze(events.map(({ id }) => `${model.documentId}::${id}`)),
363
+ complete: status === "done",
364
+ attribution: (consumers.get(link.qualifiedId) ?? 0) > 1 ? "non_exclusive" : "exclusive",
365
+ });
366
+ }));
367
+ }
368
+ function executionFacts(work, tasks) {
369
+ const obligations = Object.freeze([...work.activities.map(({ qualifiedId }) => qualifiedId), ...work.taskLinks.map(({ qualifiedId }) => qualifiedId)]);
370
+ const unprojected = Object.freeze(work.activities.map(({ qualifiedId }) => qualifiedId));
371
+ const state = obligations.length === 0
372
+ ? "uncovered"
373
+ : unprojected.length === 0 && tasks.every(({ complete }) => complete)
374
+ ? "complete"
375
+ : "partial";
376
+ return Object.freeze({ state, activityObligationIds: obligations, unprojectedActivityIds: unprojected, tasks });
377
+ }
378
+ function milestoneFacts(work, model, strict) {
379
+ const consumers = new Map();
380
+ for (const candidate of model.works) {
381
+ for (const link of candidate.milestoneLinks)
382
+ consumers.set(link.qualifiedId, (consumers.get(link.qualifiedId) ?? 0) + 1);
383
+ }
384
+ return Object.freeze(work.milestoneLinks.map((link) => {
385
+ const local = localId(link.qualifiedId, model.documentId);
386
+ const evaluation = strict.acceptance.milestones.find(({ milestoneId }) => milestoneId === local);
387
+ return Object.freeze({
388
+ milestoneId: link.qualifiedId,
389
+ closure: evaluation.closure,
390
+ acceptance: evaluation.acceptance,
391
+ criteria: evaluation.criteria,
392
+ evidenceComplete: evaluation.acceptance !== "unavailable",
393
+ attribution: (consumers.get(link.qualifiedId) ?? 0) > 1 ? "non_exclusive" : "exclusive",
394
+ });
395
+ }));
396
+ }
397
+ function cycleIds(work, model) {
398
+ const cycle = model.dependencyCycles.find((ids) => ids.includes(work.id));
399
+ return Object.freeze((cycle ?? []).map((id) => `${model.documentId}::${id}`));
400
+ }
401
+ function workFacts(work, selected, model, strict, dispositions) {
402
+ const tasks = taskFacts(work, model, strict);
403
+ const milestones = milestoneFacts(work, model, strict);
404
+ const dependentIds = model.works.filter((candidate) => candidate.dependsOn.some(({ qualifiedId }) => qualifiedId === work.qualifiedId))
405
+ .map(({ qualifiedId }) => qualifiedId);
406
+ const windowIds = model.windows.filter((window) => window.works.some(({ qualifiedId }) => qualifiedId === work.qualifiedId))
407
+ .map(({ qualifiedId }) => qualifiedId);
408
+ const traceUseful = work.taskLinks.length > 0 || work.milestoneLinks.length > 0 || work.dependsOn.length > 0 || dependentIds.length > 0 || windowIds.length > 0;
409
+ return Object.freeze({
410
+ workId: work.qualifiedId,
411
+ title: work.title,
412
+ refinement: Object.freeze({
413
+ residualDescriptionPresent: (work.description?.value ?? "").length > 0,
414
+ eventIds: Object.freeze(work.events.map(({ qualifiedId }) => qualifiedId)),
415
+ activityIds: Object.freeze(work.activities.map(({ qualifiedId }) => qualifiedId)),
416
+ milestoneLinkIds: Object.freeze(work.milestoneLinks.map(({ qualifiedId }) => qualifiedId)),
417
+ taskLinkIds: Object.freeze(work.taskLinks.map(({ qualifiedId }) => qualifiedId)),
418
+ uncoveredDependencyIds: Object.freeze(work.dependsOn.map(({ qualifiedId }) => qualifiedId).filter((id) => !selected.has(id))),
419
+ }),
420
+ execution: executionFacts(work, tasks),
421
+ outcome: Object.freeze({ state: "complete", milestones }),
422
+ organization: Object.freeze({
423
+ globalRank: model.workOrder.findIndex(({ qualifiedId }) => qualifiedId === work.qualifiedId),
424
+ dependencyIds: Object.freeze(work.dependsOn.map(({ qualifiedId }) => qualifiedId)),
425
+ dependentIds: Object.freeze(dependentIds),
426
+ dependencyCycleIds: cycleIds(work, model),
427
+ windowIds: Object.freeze(windowIds),
428
+ traceUseful,
429
+ archiveable: workArchiveable(work, model),
430
+ }),
431
+ closeDisposition: dispositions.get(work.qualifiedId) ?? "not_applicable",
432
+ });
433
+ }
434
+ function membershipOccurrences(model, selected) {
435
+ return Object.freeze(model.windows.flatMap((window) => window.works.map((work) => Object.freeze({
436
+ windowId: window.qualifiedId,
437
+ workId: work.qualifiedId,
438
+ selected: selected.has(work.qualifiedId),
439
+ }))));
440
+ }
441
+ function unique(values) {
442
+ return Object.freeze([...new Set(values)].sort());
443
+ }
444
+ function aggregates(works, occurrences) {
445
+ const tasks = works.flatMap(({ execution }) => execution.tasks);
446
+ const milestones = works.flatMap(({ outcome }) => outcome.milestones);
447
+ return Object.freeze({
448
+ uniqueWorkIds: unique(works.map(({ workId }) => workId)),
449
+ uniqueTaskIds: unique(tasks.map(({ taskId }) => taskId)),
450
+ uniqueMilestoneIds: unique(milestones.map(({ milestoneId }) => milestoneId)),
451
+ uniqueWorkEventIds: unique(tasks.flatMap(({ workEventIds }) => workEventIds)),
452
+ completedTaskIds: unique(tasks.filter(({ complete }) => complete).map(({ taskId }) => taskId)),
453
+ acceptedMilestoneIds: unique(milestones.filter(({ acceptance }) => acceptance === "accepted").map(({ milestoneId }) => milestoneId)),
454
+ membershipOccurrenceCount: occurrences.filter(({ selected }) => selected).length,
455
+ });
456
+ }
457
+ function derivedRecordCount(works, occurrences) {
458
+ return works.length + occurrences.length + works.reduce((sum, work) => sum + work.execution.tasks.length + work.outcome.milestones.length +
459
+ work.execution.tasks.reduce((events, task) => events + task.workEventIds.length, 0), 0);
460
+ }
461
+ function selectedExecution(works) {
462
+ const states = works.map(({ execution }) => execution.state);
463
+ if (states.length === 0 || states.every((state) => state === "uncovered"))
464
+ return "uncovered";
465
+ if (states.some((state) => state === "unavailable"))
466
+ return "unavailable";
467
+ if (states.some((state) => state === "unknown"))
468
+ return "unknown";
469
+ return states.every((state) => state === "complete") ? "complete" : "partial";
470
+ }
471
+ function emptyAggregates() {
472
+ return Object.freeze({
473
+ uniqueWorkIds: Object.freeze([]), uniqueTaskIds: Object.freeze([]), uniqueMilestoneIds: Object.freeze([]),
474
+ uniqueWorkEventIds: Object.freeze([]), completedTaskIds: Object.freeze([]), acceptedMilestoneIds: Object.freeze([]),
475
+ membershipOccurrenceCount: 0,
476
+ });
477
+ }
478
+ function globalExecution(context) {
479
+ return Object.freeze({
480
+ evidenceState: context.evidence_state,
481
+ recommendedTaskIds: Object.freeze([...context.recommended_task_ids]),
482
+ startableTaskIds: Object.freeze([...context.startable_task_ids]),
483
+ });
484
+ }
485
+ function failed(documentId, sourceDigest, request, context, diagnostics) {
486
+ return Object.freeze({
487
+ schemaVersion: "Perttool.PlanningPoolResult.v1",
488
+ observationCapability: "perttool.planning-observation-core@1",
489
+ operation: "observe",
490
+ ok: false,
491
+ documentId,
492
+ sourceDigest,
493
+ normalizedRequest: request,
494
+ evidence: Object.freeze({ mode: "current", state: "unavailable", sourceDigest, historyRequested: false }),
495
+ selectedWorkOrder: Object.freeze([]),
496
+ works: Object.freeze([]),
497
+ window: null,
498
+ membershipOccurrences: Object.freeze([]),
499
+ aggregates: emptyAggregates(),
500
+ globalExecution: globalExecution(context),
501
+ diagnostics: Object.freeze(diagnostics),
502
+ });
503
+ }
504
+ function hasErrors(diagnostics) {
505
+ return diagnostics.some(({ severity }) => severity === "error");
506
+ }
507
+ function prepareObservation(text, input, context, sourceDigest, diagnostics) {
508
+ const source = parsePlanningPoolSource(text, PLANNING_POOL_SOURCE_CAPABILITY);
509
+ const request = normalizeRequest(input, diagnostics);
510
+ if (!source.ok || source.model === null) {
511
+ diagnostics.push(...source.diagnostics, diagnostic("PTPOOL-116", "Planning observation requires a valid Grammar 9 source"));
512
+ }
513
+ if (request !== null && request.source_digest !== sourceDigest) {
514
+ diagnostics.push(diagnostic("PTPOOL-111", "Planning observation source digest does not match current source"));
515
+ }
516
+ if (source.model !== null)
517
+ validateExecutionContext(context, sourceDigest, source.model, diagnostics);
518
+ const strict = source.model === null ? null : currentStrictFacts(text);
519
+ if (strict === null)
520
+ diagnostics.push(diagnostic("PTPOOL-114", "current strict execution or outcome evidence is unavailable"));
521
+ if (source.model !== null && strict !== null) {
522
+ validateExecutionTaskIdentities(context, strict, source.model.documentId, diagnostics);
523
+ }
524
+ const selected = request !== null && source.model !== null && strict !== null && !hasErrors(diagnostics)
525
+ ? selectedObservation(text, request, source.model, diagnostics)
526
+ : null;
527
+ return Object.freeze({ source, request, strict, selected });
528
+ }
529
+ function invalidDisposition(request, selected) {
530
+ return request.close_dispositions.find(({ work_id }) => !selected.has(work_id));
531
+ }
532
+ export function observePlanningPool(text, input, context, capability) {
533
+ requireCapability(capability);
534
+ const sourceDigest = sha256DigestUtf8(text);
535
+ const diagnostics = [];
536
+ const prepared = prepareObservation(text, input, context, sourceDigest, diagnostics);
537
+ const { source, request, strict, selected } = prepared;
538
+ if (request === null || source.model === null || strict === null || selected === null || hasErrors(diagnostics)) {
539
+ return failed(source.documentId, sourceDigest, request, context, diagnostics);
540
+ }
541
+ const selectedSet = new Set(selected.workIds);
542
+ const dispositions = new Map(request.close_dispositions.map(({ work_id, disposition }) => [work_id, disposition]));
543
+ const invalid = invalidDisposition(request, selectedSet);
544
+ if (invalid !== undefined) {
545
+ diagnostics.push(diagnostic("PTPOOL-107", "close disposition must name selected Work", invalid.work_id));
546
+ return failed(source.documentId, sourceDigest, request, context, diagnostics);
547
+ }
548
+ const works = Object.freeze(selected.workIds.map((id) => {
549
+ const work = source.model.works.find(({ qualifiedId }) => qualifiedId === id);
550
+ return workFacts(work, selectedSet, source.model, strict, dispositions);
551
+ }));
552
+ const occurrences = membershipOccurrences(source.model, selectedSet);
553
+ if (derivedRecordCount(works, occurrences) > PLANNING_OBSERVATION_CORE_LIMITS.derivedEntityRecords) {
554
+ diagnostics.push(diagnostic("PTPOOL-115", "Planning observation derived entity records exceed 100000"));
555
+ return failed(source.documentId, sourceDigest, request, context, diagnostics);
556
+ }
557
+ const window = selected.window === null ? null : Object.freeze({
558
+ window: selected.window,
559
+ objective: selected.window.objective,
560
+ temporalPosition: temporalPosition(selected.window, request.observation_at, projectAsOf(text)),
561
+ temporalOverlaps: selected.temporalOverlaps,
562
+ selectedExecution: selectedExecution(works),
563
+ });
564
+ return Object.freeze({
565
+ schemaVersion: "Perttool.PlanningPoolResult.v1",
566
+ observationCapability: "perttool.planning-observation-core@1",
567
+ operation: "observe",
568
+ ok: true,
569
+ documentId: source.model.documentId,
570
+ sourceDigest,
571
+ normalizedRequest: request,
572
+ evidence: Object.freeze({ mode: "current", state: context.evidence_state, sourceDigest, historyRequested: false }),
573
+ selectedWorkOrder: selected.workIds,
574
+ works,
575
+ window,
576
+ membershipOccurrences: occurrences,
577
+ aggregates: aggregates(works, occurrences),
578
+ globalExecution: globalExecution(context),
579
+ diagnostics: Object.freeze(diagnostics),
580
+ });
581
+ }
582
+ //# sourceMappingURL=observation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"observation.js","sourceRoot":"","sources":["../../src/planning-pool/observation.ts"],"names":[],"mappings":"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"}