projectionlab-mcp 1.0.1 → 1.2.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 (122) hide show
  1. package/HOW-IT-WORKS.md +2 -2
  2. package/MANUAL-SETUP.md +64 -0
  3. package/README.md +34 -271
  4. package/REFERENCE.md +221 -0
  5. package/SETUP-FOR-AGENTS.md +37 -0
  6. package/dist/bootstrap.js +20 -3
  7. package/dist/bootstrap.js.map +1 -1
  8. package/dist/bridge.d.ts +2 -0
  9. package/dist/clonePlan.d.ts +9 -0
  10. package/dist/clonePlan.js +15 -14
  11. package/dist/clonePlan.js.map +1 -1
  12. package/dist/config.d.ts +4 -0
  13. package/dist/config.js +41 -6
  14. package/dist/config.js.map +1 -1
  15. package/dist/currentFinances.d.ts +12 -1
  16. package/dist/currentFinances.js +60 -0
  17. package/dist/currentFinances.js.map +1 -1
  18. package/dist/dataModel.d.ts +58 -0
  19. package/dist/dataModel.js +1429 -0
  20. package/dist/dataModel.js.map +1 -0
  21. package/dist/deletePlan.d.ts +17 -0
  22. package/dist/deletePlan.js +72 -0
  23. package/dist/deletePlan.js.map +1 -0
  24. package/dist/diff.d.ts +288 -0
  25. package/dist/diff.js +744 -0
  26. package/dist/diff.js.map +1 -0
  27. package/dist/errors.d.ts +6 -0
  28. package/dist/errors.js +14 -1
  29. package/dist/errors.js.map +1 -1
  30. package/dist/extensionBridge.d.ts +16 -2
  31. package/dist/extensionBridge.js +104 -23
  32. package/dist/extensionBridge.js.map +1 -1
  33. package/dist/index.js +27 -1
  34. package/dist/index.js.map +1 -1
  35. package/dist/instructions.d.ts +1 -1
  36. package/dist/instructions.js +3 -2
  37. package/dist/instructions.js.map +1 -1
  38. package/dist/largeOutput.js +25 -0
  39. package/dist/largeOutput.js.map +1 -1
  40. package/dist/logger.js +11 -4
  41. package/dist/logger.js.map +1 -1
  42. package/dist/pathPatch.d.ts +5 -2
  43. package/dist/pathPatch.js +16 -2
  44. package/dist/pathPatch.js.map +1 -1
  45. package/dist/planSettings.d.ts +1 -1
  46. package/dist/planSettings.js +3 -3
  47. package/dist/planSettings.js.map +1 -1
  48. package/dist/plans.d.ts +73 -10
  49. package/dist/plans.js +206 -42
  50. package/dist/plans.js.map +1 -1
  51. package/dist/prompts/index.js +7 -4
  52. package/dist/prompts/index.js.map +1 -1
  53. package/dist/realEstate.d.ts +22 -0
  54. package/dist/realEstate.js +118 -0
  55. package/dist/realEstate.js.map +1 -0
  56. package/dist/redact.d.ts +26 -0
  57. package/dist/redact.js +93 -1
  58. package/dist/redact.js.map +1 -1
  59. package/dist/resources/dataModel.d.ts +3 -0
  60. package/dist/resources/dataModel.js +66 -0
  61. package/dist/resources/dataModel.js.map +1 -0
  62. package/dist/resources/knowledge.js +189 -47
  63. package/dist/resources/knowledge.js.map +1 -1
  64. package/dist/resources/planData.js +3 -1
  65. package/dist/resources/planData.js.map +1 -1
  66. package/dist/resources/summary.js +4 -1
  67. package/dist/resources/summary.js.map +1 -1
  68. package/dist/snapshot.d.ts +21 -0
  69. package/dist/snapshot.js +116 -12
  70. package/dist/snapshot.js.map +1 -1
  71. package/dist/summary.js +19 -6
  72. package/dist/summary.js.map +1 -1
  73. package/dist/tools/clonePlan.js +17 -8
  74. package/dist/tools/clonePlan.js.map +1 -1
  75. package/dist/tools/connection.js +29 -4
  76. package/dist/tools/connection.js.map +1 -1
  77. package/dist/tools/deletePlan.d.ts +4 -0
  78. package/dist/tools/deletePlan.js +103 -0
  79. package/dist/tools/deletePlan.js.map +1 -0
  80. package/dist/tools/diff.d.ts +4 -0
  81. package/dist/tools/diff.js +417 -0
  82. package/dist/tools/diff.js.map +1 -0
  83. package/dist/tools/getCurrentFinances.js +27 -4
  84. package/dist/tools/getCurrentFinances.js.map +1 -1
  85. package/dist/tools/getPlan.js +4 -4
  86. package/dist/tools/getPlan.js.map +1 -1
  87. package/dist/tools/getPlanSection.js +7 -6
  88. package/dist/tools/getPlanSection.js.map +1 -1
  89. package/dist/tools/getPlanSettings.js +10 -6
  90. package/dist/tools/getPlanSettings.js.map +1 -1
  91. package/dist/tools/restore.js +18 -1
  92. package/dist/tools/restore.js.map +1 -1
  93. package/dist/tools/schema.js +28 -4
  94. package/dist/tools/schema.js.map +1 -1
  95. package/dist/tools/snapshots.d.ts +1 -1
  96. package/dist/tools/snapshots.js +53 -6
  97. package/dist/tools/snapshots.js.map +1 -1
  98. package/dist/tools/summary.js +3 -2
  99. package/dist/tools/summary.js.map +1 -1
  100. package/dist/tools/updateAccount.js +9 -7
  101. package/dist/tools/updateAccount.js.map +1 -1
  102. package/dist/tools/updatePlanEvent.js +71 -33
  103. package/dist/tools/updatePlanEvent.js.map +1 -1
  104. package/dist/tools/updatePlanSection.js +17 -32
  105. package/dist/tools/updatePlanSection.js.map +1 -1
  106. package/dist/tools/updatePlanSettings.js +11 -7
  107. package/dist/tools/updatePlanSettings.js.map +1 -1
  108. package/dist/types/projectionlab.d.ts +3 -1
  109. package/dist/types/wire.d.ts +27 -2
  110. package/dist/types/wire.js +6 -2
  111. package/dist/types/wire.js.map +1 -1
  112. package/dist/updateCheck.d.ts +22 -0
  113. package/dist/updateCheck.js +58 -0
  114. package/dist/updateCheck.js.map +1 -0
  115. package/dist/versionCompare.d.ts +5 -0
  116. package/dist/versionCompare.js +33 -0
  117. package/dist/versionCompare.js.map +1 -0
  118. package/dist/versionNotices.d.ts +9 -0
  119. package/dist/versionNotices.js +42 -0
  120. package/dist/versionNotices.js.map +1 -0
  121. package/package.json +6 -3
  122. package/skills/projectionlab/SKILL.md +329 -29
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataModel.js","sourceRoot":"","sources":["../src/dataModel.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { type PlanObj } from "./plans.js";
2
+ /**
3
+ * Check `planId` against `plans` and return the plan it names. Deletion is
4
+ * irreversible from the UI's point of view, so only an exact plan ID matches:
5
+ * names and partial matches are refused. The last remaining plan cannot be
6
+ * deleted.
7
+ */
8
+ export declare function selectPlanForDeletion(plans: unknown[], planId: string): PlanObj;
9
+ /** `plans` without the plan whose id equals `planId`; every other entry stays. */
10
+ export declare function withoutPlan(plans: unknown[], planId: string): unknown[];
11
+ /**
12
+ * Check a fresh read after removing the plan `deletedId` from `before`: the
13
+ * deleted plan is gone, every other original plan is still present with its
14
+ * input content and passes `keptPlanIdentityProblems`, and the count dropped
15
+ * by exactly one. Returns the problems found; empty means verified.
16
+ */
17
+ export declare function verifyPlanDeletion(before: unknown[], after: unknown[], deletedId: string): string[];
@@ -0,0 +1,72 @@
1
+ import { ProjectionLabError } from "./errors.js";
2
+ import { keptPlanIdentityProblems, samePlanContent, } from "./plans.js";
3
+ function planObjs(plans) {
4
+ return plans.filter((p) => !!p && typeof p === "object");
5
+ }
6
+ function planIdOf(plan) {
7
+ return String(plan.id ?? "");
8
+ }
9
+ function availablePlansHint(plans) {
10
+ const available = planObjs(plans)
11
+ .map((p) => ` - "${String(p.name)}" (${planIdOf(p)})`)
12
+ .join("\n");
13
+ return `Available plans:\n${available}`;
14
+ }
15
+ /**
16
+ * Check `planId` against `plans` and return the plan it names. Deletion is
17
+ * irreversible from the UI's point of view, so only an exact plan ID matches:
18
+ * names and partial matches are refused. The last remaining plan cannot be
19
+ * deleted.
20
+ */
21
+ export function selectPlanForDeletion(plans, planId) {
22
+ const objs = planObjs(plans);
23
+ const target = objs.find((p) => planIdOf(p) === planId);
24
+ if (!target) {
25
+ throw new ProjectionLabError("INVALID_INPUT", `No plan with id "${planId}" found. Deletion takes an exact plan ID, not a name`, `${availablePlansHint(plans)}\nPass one of these IDs, taken from projectionlab_describe_schema`);
26
+ }
27
+ // Null and malformed array entries are not plans: only the real plan
28
+ // objects may remain after a delete.
29
+ if (objs.length <= 1) {
30
+ throw new ProjectionLabError("INVALID_INPUT", `Plan "${String(target.name)}" is the only plan; at least one plan must remain`, "Delete a different plan, or create another one first (projectionlab_clone_plan can copy one)");
31
+ }
32
+ return target;
33
+ }
34
+ /** `plans` without the plan whose id equals `planId`; every other entry stays. */
35
+ export function withoutPlan(plans, planId) {
36
+ return plans.filter((p) => !(!!p && typeof p === "object" && planIdOf(p) === planId));
37
+ }
38
+ /**
39
+ * Check a fresh read after removing the plan `deletedId` from `before`: the
40
+ * deleted plan is gone, every other original plan is still present with its
41
+ * input content and passes `keptPlanIdentityProblems`, and the count dropped
42
+ * by exactly one. Returns the problems found; empty means verified.
43
+ */
44
+ export function verifyPlanDeletion(before, after, deletedId) {
45
+ const problems = [];
46
+ const afterById = new Map();
47
+ for (const p of planObjs(after)) {
48
+ afterById.set(planIdOf(p), p);
49
+ }
50
+ if (afterById.has(deletedId)) {
51
+ problems.push(`deleted plan ${deletedId} is still present`);
52
+ }
53
+ for (const p of planObjs(before)) {
54
+ const id = planIdOf(p);
55
+ if (id === deletedId)
56
+ continue;
57
+ const post = afterById.get(id);
58
+ if (!post) {
59
+ problems.push(`plan ${id} is missing`);
60
+ continue;
61
+ }
62
+ if (!samePlanContent(p, post)) {
63
+ problems.push(`plan ${id} was modified`);
64
+ }
65
+ problems.push(...keptPlanIdentityProblems(`plan ${id}`, p, post));
66
+ }
67
+ if (after.length !== before.length - 1) {
68
+ problems.push(`plan count is ${after.length}, expected ${before.length - 1}`);
69
+ }
70
+ return problems;
71
+ }
72
+ //# sourceMappingURL=deletePlan.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"deletePlan.js","sourceRoot":"","sources":["../src/deletePlan.ts"],"names":[],"mappings":"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"}
package/dist/diff.d.ts ADDED
@@ -0,0 +1,288 @@
1
+ import { type PlanObj, type PlanSection } from "./plans.js";
2
+ /**
3
+ * Field-level diff of two readings of ProjectionLab data, shared by
4
+ * projectionlab_diff. It compares the same data at two points in time
5
+ * (`diffSectionData`, `diffPlan`) or two different plans field by field
6
+ * (`diffPlanPair`), where each event's own id is dropped and each reference to
7
+ * another event of the same plan is compared by the event it names. Values
8
+ * render as `before → after` the way `diffFields` renders them, and every path
9
+ * is a dot path in the form `projectionlab_get_plan_section` and the patch
10
+ * tools use (`events.2.amount`), so a reported path can be read back or patched
11
+ * with it.
12
+ *
13
+ * The engine is pure and bounds its own output: `DiffBudget` caps how many
14
+ * field changes and how many list entries one call may report, so the payload
15
+ * stays small enough for a local model to hold in context, and it can ask for
16
+ * the differing paths with the values withheld. Omitted items are counted
17
+ * rather than dropped silently, and whether something counts as changed is
18
+ * decided from the data, never from what was left to report.
19
+ *
20
+ * A change whose path names a credential (`credentials.apiKey`,
21
+ * `access.0.password`) is recorded as `[REDACTED]`, so neither value leaves
22
+ * the process, and a value longer than `MAX_VALUE_CHARS` is truncated with its
23
+ * original length so one long note cannot flood the diff.
24
+ */
25
+ /** Field changes one diff reports before it starts omitting. */
26
+ export declare const FIELD_CHANGE_CAP = 200;
27
+ /** Added/removed names and ids one diff reports before it starts omitting. */
28
+ export declare const ENTRY_CAP = 200;
29
+ /** Serialized values longer than this are truncated in a change entry. */
30
+ export declare const MAX_VALUE_CHARS = 200;
31
+ /**
32
+ * How much one diff call reports: how many field changes and how many list
33
+ * entries it may name, and whether it names their values at all. The reporting
34
+ * policy rides with the caps because every comparison thread already carries
35
+ * the budget, so no call site can leak a value by forgetting to pass along a
36
+ * separate flag.
37
+ */
38
+ export interface DiffBudget {
39
+ readonly fieldChangeCap: number;
40
+ readonly entryCap: number;
41
+ /** Report only the paths that differ, never their values. */
42
+ readonly pathsOnly: boolean;
43
+ fieldChangesUsed: number;
44
+ entriesUsed: number;
45
+ omittedFieldChanges: number;
46
+ omittedEntries: number;
47
+ }
48
+ export interface DiffBudgetOptions {
49
+ fieldChangeCap?: number;
50
+ entryCap?: number;
51
+ /** Report only the paths that differ, with no values. */
52
+ pathsOnly?: boolean;
53
+ }
54
+ export declare function createDiffBudget(options?: DiffBudgetOptions): DiffBudget;
55
+ export interface LeafDiff {
56
+ /**
57
+ * The changes the budget had room to record, `path: "before → after"`.
58
+ * Empty when the budget reports paths only.
59
+ */
60
+ changes: Record<string, string>;
61
+ /**
62
+ * The paths the budget had room to record, present only when the budget
63
+ * reports paths only, which is when `changes` stays empty.
64
+ */
65
+ paths?: string[];
66
+ /**
67
+ * Differences found, whether or not the budget had room to record them.
68
+ * Callers decide "modified" from this, never from `changes`, so a difference
69
+ * that falls after the cap is still counted as a change.
70
+ */
71
+ detected: number;
72
+ }
73
+ /**
74
+ * Leaf-by-leaf diff of two values as `path: "before → after"`. Arrays carry
75
+ * their index in the path, so a reordered list reads as changed leaves rather
76
+ * than as nothing.
77
+ */
78
+ export declare function diffLeafValues(before: unknown, after: unknown, budget: DiffBudget): LeafDiff;
79
+ export interface ChangeEntry {
80
+ name?: string;
81
+ id?: string;
82
+ changes?: Record<string, string>;
83
+ /** The differing paths, reported instead of `changes` when values are withheld. */
84
+ paths?: string[];
85
+ /** Field changes found for this entry that the cap left out. */
86
+ omittedChanges?: number;
87
+ }
88
+ export interface EventSectionDiff {
89
+ kind: "events";
90
+ count: string;
91
+ changed: boolean;
92
+ addedCount: number;
93
+ added?: string[];
94
+ removedCount: number;
95
+ removed?: string[];
96
+ modifiedCount: number;
97
+ modified?: ChangeEntry[];
98
+ unchangedCount: number;
99
+ }
100
+ /**
101
+ * One event-shaped section compared between two different plans. Events match
102
+ * by name plus occurrence, so `onlyInA` and `onlyInB` name the events only one
103
+ * of the plans carries, `different` names the shared events whose fields do not
104
+ * match, and `sameCount` counts the events that match field for field.
105
+ */
106
+ export interface PairEventDiff {
107
+ kind: "events";
108
+ count: string;
109
+ changed: boolean;
110
+ onlyInACount: number;
111
+ onlyInA?: string[];
112
+ onlyInBCount: number;
113
+ onlyInB?: string[];
114
+ differentCount: number;
115
+ different?: ChangeEntry[];
116
+ sameCount: number;
117
+ }
118
+ /** What comparing one event-shaped section comes back as, in either mode. */
119
+ export type EventCompareDiff = EventSectionDiff | PairEventDiff;
120
+ export interface FieldSectionDiff {
121
+ kind: "fields";
122
+ changed: boolean;
123
+ changes?: Record<string, string>;
124
+ /** The differing paths, reported instead of `changes` when values are withheld. */
125
+ paths?: string[];
126
+ /** Field changes found that the cap left out of `changes`. */
127
+ omittedChanges?: number;
128
+ }
129
+ /**
130
+ * Diff one plan section. Event-shaped sections (`{ events: [] }`, or a bare
131
+ * array such as `milestones`) compare events by name plus occurrence, the same
132
+ * keying the section dry run uses, so events sharing a name each keep their
133
+ * own entry. Anything else (`variables`, `montecarlo`,
134
+ * `withdrawalStrategy`) compares leaf by leaf.
135
+ */
136
+ export declare function diffEventSection(before: unknown, after: unknown, budget: DiffBudget): EventSectionDiff;
137
+ /**
138
+ * Diff a data area that holds neither events nor rows: a plan's `variables`,
139
+ * `montecarlo` or `withdrawalStrategy`, and the whole `progress` or `settings`
140
+ * section.
141
+ */
142
+ export declare function diffFieldSection(before: unknown, after: unknown, budget: DiffBudget): FieldSectionDiff;
143
+ /** Match plans across two reads: by id when they carry one, else by name. */
144
+ export declare function planKey(plan: unknown): string;
145
+ export declare function planIdentity(plan: unknown): {
146
+ id: string;
147
+ name: string;
148
+ };
149
+ export interface PlanDiff {
150
+ id: string;
151
+ name: string;
152
+ changed: boolean;
153
+ changes?: Record<string, string>;
154
+ /** The differing paths, reported instead of `changes` when values are withheld. */
155
+ paths?: string[];
156
+ /** Plan setting changes the cap left out of `changes`. */
157
+ omittedChanges?: number;
158
+ sections?: Record<string, EventSectionDiff | FieldSectionDiff>;
159
+ changedSections?: string[];
160
+ }
161
+ /**
162
+ * Diff two copies of one plan. `section` narrows the comparison to a single
163
+ * plan section; the plan's own settings (every field that is not a known
164
+ * section, such as `retirementAge` or `endAge`) are always compared, minus the
165
+ * computed fields.
166
+ */
167
+ export declare function diffPlan(before: PlanObj, after: PlanObj, budget: DiffBudget, section?: PlanSection): PlanDiff;
168
+ /**
169
+ * Tokens that name each event of `plan` by its section and display name, keyed
170
+ * by the id that plan's own events use to point at it.
171
+ *
172
+ * Events refer to other events of the same plan by id (`start: { type:
173
+ * "milestone", value: "<milestone id>" }`, a priority's `accountId`), and two
174
+ * plans built independently give the same milestone unrelated ids. Comparing
175
+ * the raw ids would report a difference at every reference of a hand-rebuilt
176
+ * plan; comparing tokens makes a reference to the same-named event compare
177
+ * equal and a reference to a differently named one read as a difference. An id
178
+ * that is not an event of this plan (a Current Finances `accountId`, which
179
+ * every plan shares) gets no token and is compared as it is.
180
+ */
181
+ export declare function eventReferenceTokens(plan: unknown): Map<string, string>;
182
+ /**
183
+ * Compare one event-shaped section of two different plans. `a` is plan A and
184
+ * `b` is plan B, so each change reads `A's value → B's value`. Both sides carry
185
+ * the ids and random keys dropped and the references tokened by `planForPair`.
186
+ */
187
+ export declare function diffEventPair(a: unknown, b: unknown, budget: DiffBudget): PairEventDiff;
188
+ export interface PlanPairDiff {
189
+ a: {
190
+ id: string;
191
+ name: string;
192
+ };
193
+ b: {
194
+ id: string;
195
+ name: string;
196
+ };
197
+ changed: boolean;
198
+ /** The plan's own fields: every field outside the compared sections and outside the computed ones. */
199
+ settings: FieldSectionDiff;
200
+ sections?: Record<string, EventCompareDiff | FieldSectionDiff>;
201
+ changedSections?: string[];
202
+ }
203
+ /**
204
+ * Compare two different plans field by field, so a plan rebuilt by hand can be
205
+ * checked against the original. Plan A's values are reported first in every
206
+ * `A → B` pair. Events match by name plus occurrence, the same keying the
207
+ * time diff uses; the fields that say which plan an object is (`id`, `name`),
208
+ * the fields ProjectionLab computes (`lastUpdated`, `simKey`, `meta`) and each
209
+ * event's own `id` and randomly assigned `key` are left out, and references
210
+ * between a plan's own events are compared by the event they name. `section`
211
+ * narrows the section comparison; plan settings outside the sections are always
212
+ * compared.
213
+ */
214
+ export declare function diffPlanPair(planA: PlanObj, planB: PlanObj, budget: DiffBudget, section?: PlanSection): PlanPairDiff;
215
+ export interface PlanListDiff {
216
+ changed: boolean;
217
+ planCount: string;
218
+ addedCount: number;
219
+ added?: {
220
+ id: string;
221
+ name: string;
222
+ }[];
223
+ removedCount: number;
224
+ removed?: {
225
+ id: string;
226
+ name: string;
227
+ }[];
228
+ changedCount: number;
229
+ changedPlans?: PlanDiff[];
230
+ unchangedCount: number;
231
+ unchanged?: string[];
232
+ }
233
+ /**
234
+ * Diff two plans arrays. `onlyKey` (from `planKey`) reports one plan alone, so
235
+ * a caller narrowed to a single plan gets just that plan's entry.
236
+ */
237
+ export declare function diffPlanList(before: unknown, after: unknown, budget: DiffBudget, options?: {
238
+ section?: PlanSection;
239
+ onlyKey?: string;
240
+ }): PlanListDiff;
241
+ export interface RowDiff extends ChangeEntry {
242
+ id: string;
243
+ name: string;
244
+ }
245
+ export interface CollectionDiff {
246
+ kind: "rows";
247
+ count: string;
248
+ changed: boolean;
249
+ addedCount: number;
250
+ added?: {
251
+ id: string;
252
+ name: string;
253
+ }[];
254
+ removedCount: number;
255
+ removed?: {
256
+ id: string;
257
+ name: string;
258
+ }[];
259
+ modifiedCount: number;
260
+ modified?: RowDiff[];
261
+ unchangedCount: number;
262
+ }
263
+ export interface CurrentFinancesDiff {
264
+ changed: boolean;
265
+ collections: Record<string, CollectionDiff>;
266
+ /** Changes to `today` fields outside the account collections. */
267
+ changes?: Record<string, string>;
268
+ /** The differing paths, reported instead of `changes` when values are withheld. */
269
+ paths?: string[];
270
+ omittedChanges?: number;
271
+ }
272
+ /**
273
+ * Diff Current Finances collection by collection, matching rows by id. Fields
274
+ * outside the account collections (a `today` key that is not one of the four
275
+ * collections) are compared leaf by leaf.
276
+ */
277
+ export declare function diffCurrentFinances(before: unknown, after: unknown, budget: DiffBudget): CurrentFinancesDiff;
278
+ export interface SectionDiffOptions {
279
+ planSection?: PlanSection;
280
+ planOnlyKey?: string;
281
+ }
282
+ /** Every shape one compared section can come back as; all report `changed`. */
283
+ export type SectionDiff = EventSectionDiff | FieldSectionDiff | CollectionDiff | PlanListDiff | CurrentFinancesDiff;
284
+ /**
285
+ * Diff one snapshot data section (`plans`, `currentFinances`, `progress`,
286
+ * `settings`) by its stored key.
287
+ */
288
+ export declare function diffSectionData(section: string, before: unknown, after: unknown, budget: DiffBudget, options?: SectionDiffOptions): SectionDiff;