perttool 0.7.0 → 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 (231) hide show
  1. package/CHANGELOG.md +55 -1
  2. package/README.md +113 -22
  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 +4 -4
  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 +4 -4
  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 +73 -3
  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 +209 -19
  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 +4 -4
  159. package/dist/history/project-history.js.map +1 -1
  160. package/dist/history/velocity-observation.js +1 -1
  161. package/dist/history/velocity-observation.js.map +1 -1
  162. package/dist/index.d.ts +2 -0
  163. package/dist/index.d.ts.map +1 -1
  164. package/dist/index.js +1 -0
  165. package/dist/index.js.map +1 -1
  166. package/dist/io/document-file.js +2 -2
  167. package/dist/io/document-file.js.map +1 -1
  168. package/dist/io/safe-write.js +1 -1
  169. package/dist/io/safe-write.js.map +1 -1
  170. package/dist/model/sha256.d.ts +5 -0
  171. package/dist/model/sha256.d.ts.map +1 -0
  172. package/dist/model/sha256.js +105 -0
  173. package/dist/model/sha256.js.map +1 -0
  174. package/dist/mutation/advance.js +3 -3
  175. package/dist/mutation/advance.js.map +1 -1
  176. package/dist/mutation/diagnostics.d.ts +2 -2
  177. package/dist/mutation/diagnostics.d.ts.map +1 -1
  178. package/dist/mutation/diagnostics.js.map +1 -1
  179. package/dist/mutation/planner.d.ts +27 -0
  180. package/dist/mutation/planner.d.ts.map +1 -0
  181. package/dist/mutation/planner.js +206 -0
  182. package/dist/mutation/planner.js.map +1 -0
  183. package/dist/mutation/source.d.ts +2 -1
  184. package/dist/mutation/source.d.ts.map +1 -1
  185. package/dist/mutation/source.js +14 -0
  186. package/dist/mutation/source.js.map +1 -1
  187. package/dist/mutation/target-planner.d.ts +18 -0
  188. package/dist/mutation/target-planner.d.ts.map +1 -0
  189. package/dist/mutation/target-planner.js +160 -0
  190. package/dist/mutation/target-planner.js.map +1 -0
  191. package/dist/mutation/task.d.ts.map +1 -1
  192. package/dist/mutation/task.js +19 -11
  193. package/dist/mutation/task.js.map +1 -1
  194. package/dist/mutation/types.d.ts +1 -1
  195. package/dist/mutation/types.d.ts.map +1 -1
  196. package/dist/node/historical-host.d.ts +6 -0
  197. package/dist/node/historical-host.d.ts.map +1 -0
  198. package/dist/node/historical-host.js +8 -0
  199. package/dist/node/historical-host.js.map +1 -0
  200. package/dist/node/host.d.ts +3 -0
  201. package/dist/node/host.d.ts.map +1 -0
  202. package/dist/node/host.js +48 -0
  203. package/dist/node/host.js.map +1 -0
  204. package/dist/node/index.d.ts +2 -0
  205. package/dist/node/index.d.ts.map +1 -0
  206. package/dist/node/index.js +2 -0
  207. package/dist/node/index.js.map +1 -0
  208. package/dist/perttool-vscode-private-0.0.0-d1578b9.vsix +0 -0
  209. package/dist/ports/node-host.d.ts +41 -0
  210. package/dist/ports/node-host.d.ts.map +1 -0
  211. package/dist/ports/node-host.js +2 -0
  212. package/dist/ports/node-host.js.map +1 -0
  213. package/dist/recommendation/override.d.ts +40 -2
  214. package/dist/recommendation/override.d.ts.map +1 -1
  215. package/dist/recommendation/override.js +5 -6
  216. package/dist/recommendation/override.js.map +1 -1
  217. package/dist/schema/registry.d.ts.map +1 -1
  218. package/dist/schema/registry.js +1 -0
  219. package/dist/schema/registry.js.map +1 -1
  220. package/dist/semantic/check.d.ts +43 -0
  221. package/dist/semantic/check.d.ts.map +1 -0
  222. package/dist/semantic/check.js +110 -0
  223. package/dist/semantic/check.js.map +1 -0
  224. package/dist/session/document-session.d.ts +109 -0
  225. package/dist/session/document-session.d.ts.map +1 -0
  226. package/dist/session/document-session.js +432 -0
  227. package/dist/session/document-session.js.map +1 -0
  228. package/dist/version.d.ts +1 -1
  229. package/dist/version.js +1 -1
  230. package/package.json +18 -4
  231. package/schemas/Perttool.HistoricalGraphResult.v1.schema.json +654 -0
@@ -0,0 +1,432 @@
1
+ import { analyzeValidatedDocument, } from "../analysis/service.js";
2
+ import { hasErrors, limitDiagnostics, normalizeMaxDiagnostics, } from "../model/diagnostics.js";
3
+ import { parseDocument, validateDocument } from "../core/source.js";
4
+ const sha256Pattern = /^sha256:[0-9a-f]{64}$/;
5
+ function lineExtents(text) {
6
+ const lines = [];
7
+ let start = 0;
8
+ let offset = 0;
9
+ while (offset < text.length) {
10
+ const code = text.charCodeAt(offset);
11
+ if (code === 0x0d) {
12
+ lines.push({ start, end: offset });
13
+ offset += text.charCodeAt(offset + 1) === 0x0a ? 2 : 1;
14
+ start = offset;
15
+ continue;
16
+ }
17
+ if (code === 0x0a) {
18
+ lines.push({ start, end: offset });
19
+ offset += 1;
20
+ start = offset;
21
+ continue;
22
+ }
23
+ offset += 1;
24
+ }
25
+ lines.push({ start, end: text.length });
26
+ return lines;
27
+ }
28
+ function isInsideSurrogatePair(text, offset) {
29
+ if (offset <= 0 || offset >= text.length)
30
+ return false;
31
+ const previous = text.charCodeAt(offset - 1);
32
+ const current = text.charCodeAt(offset);
33
+ return (previous >= 0xd800 &&
34
+ previous <= 0xdbff &&
35
+ current >= 0xdc00 &&
36
+ current <= 0xdfff);
37
+ }
38
+ export function documentPositionToOffset(text, position) {
39
+ if (!Number.isSafeInteger(position.line) ||
40
+ !Number.isSafeInteger(position.character) ||
41
+ position.line < 0 ||
42
+ position.character < 0) {
43
+ return null;
44
+ }
45
+ const line = lineExtents(text)[position.line];
46
+ if (line === undefined || position.character > line.end - line.start) {
47
+ return null;
48
+ }
49
+ const offset = line.start + position.character;
50
+ return isInsideSurrogatePair(text, offset) ? null : offset;
51
+ }
52
+ export function documentOffsetToPosition(text, offset) {
53
+ if (!Number.isSafeInteger(offset) ||
54
+ offset < 0 ||
55
+ offset > text.length ||
56
+ isInsideSurrogatePair(text, offset) ||
57
+ (offset > 0 &&
58
+ text.charCodeAt(offset - 1) === 0x0d &&
59
+ text.charCodeAt(offset) === 0x0a)) {
60
+ return null;
61
+ }
62
+ const lines = lineExtents(text);
63
+ for (let line = 0; line < lines.length; line += 1) {
64
+ const extent = lines[line];
65
+ if (offset >= extent.start && offset <= extent.end) {
66
+ return Object.freeze({ line, character: offset - extent.start });
67
+ }
68
+ }
69
+ return null;
70
+ }
71
+ function freezeTree(value, seen = new WeakSet()) {
72
+ if (typeof value !== "object" || value === null || seen.has(value)) {
73
+ return value;
74
+ }
75
+ seen.add(value);
76
+ for (const child of Object.values(value))
77
+ freezeTree(child, seen);
78
+ return Object.freeze(value);
79
+ }
80
+ function validateSnapshotInput(input) {
81
+ if (typeof input.uri !== "string" ||
82
+ input.uri.length === 0 ||
83
+ typeof input.generation !== "string" ||
84
+ input.generation.length === 0 ||
85
+ !Number.isSafeInteger(input.version) ||
86
+ typeof input.text !== "string") {
87
+ throw new TypeError("document snapshot binding is invalid");
88
+ }
89
+ }
90
+ function digestText(text, digester) {
91
+ const digest = digester(text);
92
+ if (!sha256Pattern.test(digest)) {
93
+ throw new TypeError("document text digester returned an invalid SHA-256 digest");
94
+ }
95
+ return digest;
96
+ }
97
+ export function createDocumentSnapshot(input, options) {
98
+ validateSnapshotInput(input);
99
+ const maximum = normalizeMaxDiagnostics(options.maxDiagnostics);
100
+ const parse = parseDocument(input.text, { maxDiagnostics: maximum });
101
+ const semanticDiagnostics = validateDocument(parse.document, parse.diagnostics);
102
+ const limited = limitDiagnostics(semanticDiagnostics, maximum);
103
+ const binding = {
104
+ uri: input.uri,
105
+ generation: input.generation,
106
+ version: input.version,
107
+ sourceDigest: digestText(input.text, options.digestText),
108
+ };
109
+ const semantic = {
110
+ ok: !hasErrors(semanticDiagnostics),
111
+ diagnostics: Object.freeze([...limited.diagnostics]),
112
+ diagnosticsTruncated: parse.diagnosticsTruncated || limited.truncated,
113
+ };
114
+ freezeTree(parse);
115
+ freezeTree(binding);
116
+ freezeTree(semantic);
117
+ return Object.freeze({
118
+ binding,
119
+ text: input.text,
120
+ parse,
121
+ semantic,
122
+ });
123
+ }
124
+ function normalizedAnalysisMode(options) {
125
+ const mode = options.mode ?? "both";
126
+ if (mode !== "none" &&
127
+ mode !== "precedence" &&
128
+ mode !== "resource" &&
129
+ mode !== "both") {
130
+ throw new RangeError("document analysis mode is invalid");
131
+ }
132
+ return mode;
133
+ }
134
+ function snapshotAnalysisOptions(options) {
135
+ return {
136
+ ...(options.mode === undefined ? {} : { mode: options.mode }),
137
+ ...(options.capacityOverrides === undefined
138
+ ? {}
139
+ : { capacityOverrides: new Map(options.capacityOverrides) }),
140
+ ...(options.maxPaths === undefined ? {} : { maxPaths: options.maxPaths }),
141
+ ...(options.precision === undefined ? {} : { precision: options.precision }),
142
+ ...(options.maxDiagnostics === undefined
143
+ ? {}
144
+ : { maxDiagnostics: options.maxDiagnostics }),
145
+ };
146
+ }
147
+ function analysisProjection(snapshot, status, mode, diagnostics, analysis) {
148
+ return Object.freeze({
149
+ status,
150
+ binding: snapshot.binding,
151
+ analysisMode: mode,
152
+ complete: status === "current",
153
+ diagnostics,
154
+ analysis,
155
+ });
156
+ }
157
+ export function analyzeDocumentSnapshot(snapshot, options = {}) {
158
+ const acceptedOptions = snapshotAnalysisOptions(options);
159
+ const mode = normalizedAnalysisMode(acceptedOptions);
160
+ if (!snapshot.semantic.ok) {
161
+ return analysisProjection(snapshot, "invalid", mode, snapshot.semantic.diagnostics, null);
162
+ }
163
+ if (snapshot.semantic.diagnosticsTruncated) {
164
+ return analysisProjection(snapshot, "unavailable", mode, snapshot.semantic.diagnostics, null);
165
+ }
166
+ if (mode === "none") {
167
+ return analysisProjection(snapshot, "current", mode, snapshot.semantic.diagnostics, null);
168
+ }
169
+ const analysis = analyzeValidatedDocument(snapshot.parse.document, snapshot.parse.document.declarations.find((declaration) => declaration.kind === "project").id, snapshot.semantic.diagnostics, false, {
170
+ ...acceptedOptions,
171
+ mode,
172
+ });
173
+ if (!analysis.ok || analysis.diagnosticsTruncated) {
174
+ return analysisProjection(snapshot, "unavailable", mode, analysis.diagnostics, null);
175
+ }
176
+ return analysisProjection(snapshot, "current", mode, analysis.diagnostics, analysis);
177
+ }
178
+ function applyChanges(text, changes) {
179
+ if (changes.length === 0)
180
+ return null;
181
+ let candidate = text;
182
+ for (const change of changes) {
183
+ if (typeof change.text !== "string")
184
+ return null;
185
+ const start = documentPositionToOffset(candidate, change.range.start);
186
+ const end = documentPositionToOffset(candidate, change.range.end);
187
+ if (start === null || end === null || start > end)
188
+ return null;
189
+ candidate = candidate.slice(0, start) + change.text + candidate.slice(end);
190
+ }
191
+ return candidate;
192
+ }
193
+ function sameBinding(left, right) {
194
+ return (left.uri === right.uri &&
195
+ left.generation === right.generation &&
196
+ left.version === right.version &&
197
+ left.sourceDigest === right.sourceDigest);
198
+ }
199
+ function analysisCacheKey(options) {
200
+ const capacities = [...(options.capacityOverrides ?? new Map())]
201
+ .sort(([left], [right]) => left < right ? -1 : left > right ? 1 : 0);
202
+ return JSON.stringify({
203
+ mode: normalizedAnalysisMode(options),
204
+ capacityOverrides: capacities,
205
+ maxPaths: options.maxPaths ?? null,
206
+ precision: options.precision ?? null,
207
+ maxDiagnostics: options.maxDiagnostics ?? null,
208
+ });
209
+ }
210
+ function projectionResult(status, binding, snapshot, value, cached) {
211
+ return Object.freeze({ status, binding, snapshot, value, cached });
212
+ }
213
+ function isAborted(signal) {
214
+ return signal?.aborted === true;
215
+ }
216
+ async function cancellable(work, signal) {
217
+ if (signal === undefined) {
218
+ return { cancelled: false, value: await work };
219
+ }
220
+ if (signal.aborted)
221
+ return { cancelled: true };
222
+ return await new Promise((resolve, reject) => {
223
+ const onAbort = () => {
224
+ signal.removeEventListener("abort", onAbort);
225
+ resolve({ cancelled: true });
226
+ };
227
+ signal.addEventListener("abort", onAbort, { once: true });
228
+ work.then((value) => {
229
+ signal.removeEventListener("abort", onAbort);
230
+ resolve({ cancelled: false, value });
231
+ }, (error) => {
232
+ signal.removeEventListener("abort", onAbort);
233
+ reject(error);
234
+ });
235
+ });
236
+ }
237
+ class ProtocolNeutralDocumentSession {
238
+ #options;
239
+ #documents = new Map();
240
+ #cache = new WeakMap();
241
+ #generation = 0;
242
+ #state = "active";
243
+ constructor(options) {
244
+ this.#options = Object.freeze({
245
+ digestText: options.digestText,
246
+ ...(options.maxDiagnostics === undefined
247
+ ? {}
248
+ : { maxDiagnostics: options.maxDiagnostics }),
249
+ });
250
+ }
251
+ get state() {
252
+ return this.#state;
253
+ }
254
+ #transition(status, snapshot, reason) {
255
+ return Object.freeze({ status, snapshot, reason });
256
+ }
257
+ #desynchronize(reason) {
258
+ this.#documents.clear();
259
+ this.#state = "desynchronized";
260
+ return this.#transition("desynchronized", null, reason);
261
+ }
262
+ open(input) {
263
+ if (this.#state === "closed")
264
+ return this.#transition("closed", null, null);
265
+ if (this.#state === "desynchronized") {
266
+ return this.#transition("desynchronized", null, null);
267
+ }
268
+ if (typeof input.uri !== "string" ||
269
+ input.uri.length === 0 ||
270
+ !Number.isSafeInteger(input.version) ||
271
+ typeof input.text !== "string") {
272
+ return this.#desynchronize("invalid_binding");
273
+ }
274
+ if (this.#documents.has(input.uri)) {
275
+ return this.#desynchronize("document_already_open");
276
+ }
277
+ const generation = `g${this.#generation + 1}`;
278
+ let snapshot;
279
+ try {
280
+ snapshot = createDocumentSnapshot({ ...input, generation }, this.#options);
281
+ }
282
+ catch {
283
+ return this.#desynchronize("snapshot_unavailable");
284
+ }
285
+ this.#generation += 1;
286
+ this.#documents.set(input.uri, snapshot);
287
+ return this.#transition("current", snapshot, null);
288
+ }
289
+ change(input) {
290
+ if (this.#state === "closed")
291
+ return this.#transition("closed", null, null);
292
+ if (this.#state === "desynchronized") {
293
+ return this.#transition("desynchronized", null, null);
294
+ }
295
+ if (typeof input.uri !== "string" ||
296
+ input.uri.length === 0 ||
297
+ !Number.isSafeInteger(input.version)) {
298
+ return this.#desynchronize("invalid_binding");
299
+ }
300
+ const previous = this.#documents.get(input.uri);
301
+ if (previous === undefined)
302
+ return this.#desynchronize("document_not_open");
303
+ if (input.version <= previous.binding.version) {
304
+ return this.#desynchronize("version_not_increasing");
305
+ }
306
+ let text = null;
307
+ try {
308
+ text = applyChanges(previous.text, input.changes);
309
+ }
310
+ catch {
311
+ // A structurally malformed change has the same fail-closed meaning as an
312
+ // invalid range supplied through the typed boundary.
313
+ }
314
+ if (text === null)
315
+ return this.#desynchronize("invalid_change");
316
+ let snapshot;
317
+ try {
318
+ snapshot = createDocumentSnapshot({
319
+ uri: input.uri,
320
+ generation: previous.binding.generation,
321
+ version: input.version,
322
+ text,
323
+ }, this.#options);
324
+ }
325
+ catch {
326
+ return this.#desynchronize("snapshot_unavailable");
327
+ }
328
+ this.#documents.set(input.uri, snapshot);
329
+ return this.#transition("current", snapshot, null);
330
+ }
331
+ close(uri) {
332
+ if (this.#state !== "active")
333
+ return false;
334
+ return this.#documents.delete(uri);
335
+ }
336
+ current(uri) {
337
+ if (this.#state !== "active")
338
+ return null;
339
+ return this.#documents.get(uri) ?? null;
340
+ }
341
+ resolve(binding) {
342
+ if (this.#state === "desynchronized")
343
+ return "desynchronized";
344
+ if (this.#state === "closed")
345
+ return "closed";
346
+ const snapshot = this.#documents.get(binding.uri);
347
+ if (snapshot === undefined)
348
+ return "closed";
349
+ return sameBinding(snapshot.binding, binding) ? "current" : "stale";
350
+ }
351
+ async project(request) {
352
+ if (request.cacheKey.length === 0) {
353
+ throw new TypeError("document projection cache key must not be empty");
354
+ }
355
+ if (isAborted(request.signal)) {
356
+ return projectionResult("cancelled", request.binding, null, null, false);
357
+ }
358
+ const resolved = this.resolve(request.binding);
359
+ if (resolved !== "current") {
360
+ return projectionResult(resolved, request.binding, null, null, false);
361
+ }
362
+ const snapshot = this.#documents.get(request.binding.uri);
363
+ if (!snapshot.semantic.ok && request.allowInvalid !== true) {
364
+ return projectionResult("invalid", request.binding, snapshot, null, false);
365
+ }
366
+ if (snapshot.semantic.diagnosticsTruncated &&
367
+ request.allowTruncated !== true) {
368
+ return projectionResult("unavailable", request.binding, snapshot, null, false);
369
+ }
370
+ const cache = this.#cache.get(snapshot) ?? new Map();
371
+ this.#cache.set(snapshot, cache);
372
+ if (cache.has(request.cacheKey)) {
373
+ return projectionResult("current", request.binding, snapshot, cache.get(request.cacheKey), true);
374
+ }
375
+ const work = Promise.resolve().then(() => request.compute(snapshot));
376
+ const completed = await cancellable(work, request.signal);
377
+ if (completed.cancelled) {
378
+ void work.catch(() => undefined);
379
+ return projectionResult("cancelled", request.binding, null, null, false);
380
+ }
381
+ const after = this.resolve(request.binding);
382
+ if (after !== "current") {
383
+ return projectionResult(after, request.binding, null, null, false);
384
+ }
385
+ if (isAborted(request.signal)) {
386
+ return projectionResult("cancelled", request.binding, null, null, false);
387
+ }
388
+ cache.set(request.cacheKey, completed.value);
389
+ return projectionResult("current", request.binding, snapshot, completed.value, false);
390
+ }
391
+ async analyze(binding, options = {}, signal) {
392
+ const acceptedOptions = snapshotAnalysisOptions(options);
393
+ const analysisMode = normalizedAnalysisMode(acceptedOptions);
394
+ const projection = await this.project({
395
+ binding,
396
+ cacheKey: `analysis:${analysisCacheKey(acceptedOptions)}`,
397
+ ...(signal === undefined ? {} : { signal }),
398
+ compute: (snapshot) => analyzeDocumentSnapshot(snapshot, acceptedOptions),
399
+ });
400
+ if (projection.status !== "current" || projection.value === null) {
401
+ return Object.freeze({
402
+ status: projection.status,
403
+ binding,
404
+ snapshot: projection.snapshot,
405
+ analysisMode,
406
+ complete: false,
407
+ diagnostics: projection.snapshot?.semantic.diagnostics ?? Object.freeze([]),
408
+ analysis: null,
409
+ cached: false,
410
+ });
411
+ }
412
+ const value = projection.value;
413
+ return Object.freeze({
414
+ status: value.status,
415
+ binding,
416
+ snapshot: projection.snapshot,
417
+ analysisMode,
418
+ complete: value.complete,
419
+ diagnostics: value.diagnostics,
420
+ analysis: value.analysis,
421
+ cached: projection.cached,
422
+ });
423
+ }
424
+ dispose() {
425
+ this.#documents.clear();
426
+ this.#state = "closed";
427
+ }
428
+ }
429
+ export function createDocumentSession(options) {
430
+ return new ProtocolNeutralDocumentSession(options);
431
+ }
432
+ //# sourceMappingURL=document-session.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"document-session.js","sourceRoot":"","sources":["../../src/session/document-session.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1,2 +1,2 @@
1
- export declare const TOOL_VERSION = "0.7.0";
1
+ export declare const TOOL_VERSION = "0.8.0";
2
2
  //# sourceMappingURL=version.d.ts.map
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const TOOL_VERSION = "0.7.0";
1
+ export const TOOL_VERSION = "0.8.0";
2
2
  //# sourceMappingURL=version.js.map
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "perttool",
3
- "version": "0.7.0",
3
+ "version": "0.8.0",
4
4
  "description": "Document-based PERT/CPM and resource scheduling CLI",
5
5
  "keywords": [
6
6
  "pert",
@@ -24,6 +24,9 @@
24
24
  "tag": "beta"
25
25
  },
26
26
  "type": "module",
27
+ "workspaces": [
28
+ "adapters/*"
29
+ ],
27
30
  "files": [
28
31
  "dist",
29
32
  "schemas",
@@ -39,23 +42,34 @@
39
42
  "types": "./dist/index.d.ts",
40
43
  "import": "./dist/index.js"
41
44
  },
45
+ "./core": {
46
+ "types": "./dist/core/index.d.ts",
47
+ "import": "./dist/core/index.js"
48
+ },
49
+ "./node": {
50
+ "types": "./dist/node/index.d.ts",
51
+ "import": "./dist/node/index.js"
52
+ },
42
53
  "./schemas/*": "./schemas/*"
43
54
  },
44
55
  "engines": {
45
56
  "node": ">=22"
46
57
  },
47
58
  "scripts": {
48
- "build": "tsc -p tsconfig.json",
59
+ "build": "tsc -p tsconfig.json && npm run build --workspace perttool-language-server-private && npm run build --workspace perttool-vscode-private && npm run build --workspace perttool-mcp-private",
49
60
  "prepare": "npm run build",
50
- "typecheck": "tsc -p tsconfig.json --noEmit",
61
+ "typecheck": "tsc -p tsconfig.json --noEmit && npm run typecheck --workspace perttool-language-server-private && npm run typecheck --workspace perttool-vscode-private && npm run typecheck --workspace perttool-mcp-private",
51
62
  "test": "npm run build && node --test test/*.test.mjs",
52
63
  "test:e2e": "npm run build && node --test test/e2e.test.mjs",
53
64
  "check:english": "node scripts/check-english-baseline.mjs",
54
65
  "check:docs": "bash scripts/check-docs.sh",
66
+ "check:lsp-package": "bash scripts/check-lsp-package.sh",
67
+ "check:mcp-package": "bash scripts/check-mcp-package.sh",
68
+ "check:vsix-shell": "bash scripts/check-vsix-shell.sh",
55
69
  "check:link": "bash scripts/check-npm-link.sh",
56
70
  "check:package": "bash scripts/check-package.sh",
57
71
  "check:self-use": "bash scripts/check-self-use.sh",
58
- "check": "npm run typecheck && npm test && npm run check:english && npm run check:docs && npm run check:self-use && npm run check:link && npm run check:package"
72
+ "check": "npm run typecheck && npm test && npm run check:english && npm run check:docs && npm run check:self-use && npm run check:lsp-package && npm run check:mcp-package && npm run check:vsix-shell && npm run check:link && npm run check:package"
59
73
  },
60
74
  "devDependencies": {
61
75
  "@types/node": "22.20.1",