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
package/dist/plans.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"plans.js","sourceRoot":"","sources":["../src/plans.ts"],"names":[],"mappings":"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"}
@@ -10,7 +10,7 @@ Use these tools in order of preference (smallest first):
10
10
  2. projectionlab_describe_schema - plan names, account IDs (small)
11
11
  3. projectionlab_get_summary - Current Finances inventory only; never treat its
12
12
  net worth as a projected outcome (small)
13
- 4. projectionlab_get_plan_settings - assumptions, tax, Monte Carlo, and withdrawal configuration as discrete paths (small)
13
+ 4. projectionlab_get_plan_settings - assumptions, tax, Chance of Success (montecarlo), and withdrawal configuration as discrete paths (small)
14
14
  5. projectionlab_get_plan_section - one section; supports eventIdentifier and dot-path filters for single events/fields (smallest targeted read)
15
15
  6. projectionlab_get_current_finances - account balances (medium)
16
16
  7. projectionlab_get_plan - full single plan (large)
@@ -26,9 +26,12 @@ section), and prefer section replacement over restore tools (full replacement).
26
26
 
27
27
  Do NOT rely on memorized tax figures (brackets, IRMAA tiers, ACA subsidy
28
28
  cliffs, 0% LTCG thresholds, standard deductions, contribution limits) - they
29
- change annually. Look up current-year figures with web search when available,
30
- state the tax year you are using, and flag any figure you could not verify.
31
- Account for the user's state of residence rather than assuming one.
29
+ change annually. ProjectionLab models with the current-year figures, and the
30
+ user can read them in the app (Tax Analytics): ask the user what the app shows
31
+ instead of supplying your own. Use web search only to explain a figure the user
32
+ asks about, not to recompute what ProjectionLab already models. State the tax
33
+ year you are using, flag anything you could not verify, and account for the
34
+ user's state of residence rather than assuming one.
32
35
 
33
36
  ## ProjectionLab Data Model
34
37
 
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/prompts/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { PlanObj } from "./plans.js";
2
+ /**
3
+ * Labeled view of a property asset, or null for non-real-estate records.
4
+ *
5
+ * ProjectionLab stores a property's loan balance in `balance` and its market
6
+ * value in `amount`; the block labels both so a reader cannot mistake the
7
+ * loan for the value. Labels beyond `amount`/`balance` name observed stored
8
+ * fields whose UI meaning is not yet verified.
9
+ *
10
+ * Values come from the Current Finances record only, the master record
11
+ * writes target. Plan-modeled values (per-plan asset events) are never
12
+ * mixed in; plan-side values are read with projectionlab_get_plan_section
13
+ * on the `assets` section.
14
+ */
15
+ export declare function buildRealEstateBlock(asset: PlanObj): PlanObj | null;
16
+ /**
17
+ * Copy of `today` with a `realEstate` block added to each real-estate asset.
18
+ * The export comes from a shared cache, so entries are only replaced, never
19
+ * mutated in place; the original object is returned unchanged when no asset
20
+ * qualifies.
21
+ */
22
+ export declare function withRealEstateBlocks(today: PlanObj): PlanObj;
@@ -0,0 +1,118 @@
1
+ /**
2
+ * `type` value that marks a Current Finances `assets` entry as a property.
3
+ * Observed in live exports; the ProjectionLab UI shows these records on the
4
+ * real-estate tile.
5
+ */
6
+ const REAL_ESTATE_TYPE = "real-estate";
7
+ /**
8
+ * `paymentMethod` value under which ProjectionLab records loan terms.
9
+ * Observed in live exports.
10
+ */
11
+ const FINANCED = "financed";
12
+ function pick(source, keys) {
13
+ const out = {};
14
+ for (const key of keys) {
15
+ if (source[key] !== undefined)
16
+ out[key] = source[key];
17
+ }
18
+ return out;
19
+ }
20
+ function ratePair(source, rateKey, rateTypeKey) {
21
+ const pair = {};
22
+ if (source[rateKey] !== undefined)
23
+ pair.rate = source[rateKey];
24
+ if (source[rateTypeKey] !== undefined)
25
+ pair.rateType = source[rateTypeKey];
26
+ return Object.keys(pair).length > 0 ? pair : null;
27
+ }
28
+ /**
29
+ * Labeled view of a property asset, or null for non-real-estate records.
30
+ *
31
+ * ProjectionLab stores a property's loan balance in `balance` and its market
32
+ * value in `amount`; the block labels both so a reader cannot mistake the
33
+ * loan for the value. Labels beyond `amount`/`balance` name observed stored
34
+ * fields whose UI meaning is not yet verified.
35
+ *
36
+ * Values come from the Current Finances record only, the master record
37
+ * writes target. Plan-modeled values (per-plan asset events) are never
38
+ * mixed in; plan-side values are read with projectionlab_get_plan_section
39
+ * on the `assets` section.
40
+ */
41
+ export function buildRealEstateBlock(asset) {
42
+ if (asset.type !== REAL_ESTATE_TYPE)
43
+ return null;
44
+ const block = {};
45
+ const loanBalance = asset.balance ?? 0;
46
+ block.loanBalance = loanBalance;
47
+ if (asset.amount !== undefined)
48
+ block.marketValue = asset.amount;
49
+ if (typeof asset.amount === "number" && typeof loanBalance === "number") {
50
+ block.netEquity = asset.amount - loanBalance;
51
+ }
52
+ Object.assign(block, pick(asset, ["paymentMethod", "classification", "excludeLoanFromLNW"]));
53
+ if (asset.paymentMethod === FINANCED) {
54
+ const loan = pick(asset, [
55
+ "interestType",
56
+ "monthlyPayment",
57
+ "compounding",
58
+ ]);
59
+ if (asset.interestRate !== undefined)
60
+ loan.apr = asset.interestRate;
61
+ if (Object.keys(loan).length > 0)
62
+ block.loan = loan;
63
+ }
64
+ const propertyTax = ratePair(asset, "taxRate", "taxRateType");
65
+ if (propertyTax)
66
+ block.propertyTax = propertyTax;
67
+ const insurance = ratePair(asset, "insuranceRate", "insuranceRateType");
68
+ if (insurance)
69
+ block.insurance = insurance;
70
+ const maintenance = ratePair(asset, "maintenanceRate", "maintenanceRateType");
71
+ if (maintenance)
72
+ block.maintenance = maintenance;
73
+ const monthlyHOA = {};
74
+ if (asset.monthlyHOA !== undefined)
75
+ monthlyHOA.amount = asset.monthlyHOA;
76
+ if (asset.monthlyHOAType !== undefined)
77
+ monthlyHOA.type = asset.monthlyHOAType;
78
+ if (Object.keys(monthlyHOA).length > 0)
79
+ block.monthlyHOA = monthlyHOA;
80
+ const yearlyChange = asset.yearlyChange;
81
+ if (yearlyChange &&
82
+ typeof yearlyChange === "object" &&
83
+ !Array.isArray(yearlyChange)) {
84
+ const change = yearlyChange;
85
+ const appreciation = {};
86
+ if (change.amount !== undefined)
87
+ appreciation.rate = change.amount;
88
+ if (change.type !== undefined)
89
+ appreciation.type = change.type;
90
+ if (Object.keys(appreciation).length > 0)
91
+ block.appreciation = appreciation;
92
+ }
93
+ return block;
94
+ }
95
+ /**
96
+ * Copy of `today` with a `realEstate` block added to each real-estate asset.
97
+ * The export comes from a shared cache, so entries are only replaced, never
98
+ * mutated in place; the original object is returned unchanged when no asset
99
+ * qualifies.
100
+ */
101
+ export function withRealEstateBlocks(today) {
102
+ const assets = today.assets;
103
+ if (!Array.isArray(assets))
104
+ return today;
105
+ let changed = false;
106
+ const nextAssets = assets.map((asset) => {
107
+ if (!asset || typeof asset !== "object" || Array.isArray(asset)) {
108
+ return asset;
109
+ }
110
+ const block = buildRealEstateBlock(asset);
111
+ if (!block)
112
+ return asset;
113
+ changed = true;
114
+ return { ...asset, realEstate: block };
115
+ });
116
+ return changed ? { ...today, assets: nextAssets } : today;
117
+ }
118
+ //# sourceMappingURL=realEstate.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"realEstate.js","sourceRoot":"","sources":["../src/realEstate.ts"],"names":[],"mappings":"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"}
package/dist/redact.d.ts CHANGED
@@ -1,4 +1,30 @@
1
+ /** The stand-in every redacted value carries; shared with the diff engine. */
2
+ export declare const REDACTED = "[REDACTED]";
1
3
  export declare function isSecretFieldName(name: string): boolean;
4
+ /**
5
+ * Dot paths (array indices joined with dots) where a secret-named key holds
6
+ * exactly the `REDACTED` sentinel. A payload built from a redacted read
7
+ * carries these; writing one back would store the sentinel as real data.
8
+ */
9
+ export declare function findRedactedSecretPaths(value: unknown, prefix?: string): string[];
10
+ /**
11
+ * Snapshot-only stand-in for the Plugin API key. Unlike REDACTED it is
12
+ * restorable: snapshot files hold it in place of the key, and every read
13
+ * path (SnapshotManager.get) puts the current config.apiKey back, so a
14
+ * rollback writes the real key while no snapshot file ever holds it.
15
+ */
16
+ export declare const SNAPSHOT_KEY_PLACEHOLDER = "[[PL_API_KEY]]";
17
+ /** Snapshot-write direction: every occurrence of the Plugin API key inside
18
+ * any string becomes SNAPSHOT_KEY_PLACEHOLDER. */
19
+ export declare function redactApiKeyToPlaceholder<T>(value: T): T;
20
+ /** Snapshot-read direction: SNAPSHOT_KEY_PLACEHOLDER inside any string
21
+ * becomes the current Plugin API key. Without a configured key the value is
22
+ * returned unchanged, so callers can detect placeholder-bound writes. */
23
+ export declare function restoreApiKeyFromPlaceholder<T>(value: T): T;
24
+ /** True when any string inside `value` contains `needle`. */
25
+ export declare function containsText(value: unknown, needle: string): boolean;
26
+ /** True when any string in `value` still holds SNAPSHOT_KEY_PLACEHOLDER. */
27
+ export declare function hasApiKeyPlaceholder(value: unknown): boolean;
2
28
  export interface RedactOptions {
3
29
  /**
4
30
  * Also redact any field whose *name* looks like a secret (apiKey, token,
package/dist/redact.js CHANGED
@@ -1,5 +1,6 @@
1
1
  import { config } from "./config.js";
2
- const REDACTED = "[REDACTED]";
2
+ /** The stand-in every redacted value carries; shared with the diff engine. */
3
+ export const REDACTED = "[REDACTED]";
3
4
  // Field names whose values are secrets regardless of content. Used only for
4
5
  // read-only artifacts (exports, resources) - NOT for snapshots, since redacting
5
6
  // by name could corrupt a later restore.
@@ -7,6 +8,97 @@ const SECRET_KEY_PATTERN = /^(.*[-_])?(api[-_]?key|plugin[-_]?api[-_]?key|token|
7
8
  export function isSecretFieldName(name) {
8
9
  return SECRET_KEY_PATTERN.test(name);
9
10
  }
11
+ /**
12
+ * Dot paths (array indices joined with dots) where a secret-named key holds
13
+ * exactly the `REDACTED` sentinel. A payload built from a redacted read
14
+ * carries these; writing one back would store the sentinel as real data.
15
+ */
16
+ export function findRedactedSecretPaths(value, prefix = "") {
17
+ const paths = [];
18
+ const walk = (v, at) => {
19
+ if (Array.isArray(v)) {
20
+ v.forEach((item, i) => walk(item, at ? `${at}.${i}` : String(i)));
21
+ return;
22
+ }
23
+ if (v && typeof v === "object") {
24
+ for (const [k, val] of Object.entries(v)) {
25
+ const path = at ? `${at}.${k}` : k;
26
+ if (isSecretFieldName(k) && val === REDACTED)
27
+ paths.push(path);
28
+ else
29
+ walk(val, path);
30
+ }
31
+ }
32
+ };
33
+ walk(value, prefix);
34
+ return paths;
35
+ }
36
+ /**
37
+ * Snapshot-only stand-in for the Plugin API key. Unlike REDACTED it is
38
+ * restorable: snapshot files hold it in place of the key, and every read
39
+ * path (SnapshotManager.get) puts the current config.apiKey back, so a
40
+ * rollback writes the real key while no snapshot file ever holds it.
41
+ */
42
+ export const SNAPSHOT_KEY_PLACEHOLDER = "[[PL_API_KEY]]";
43
+ /** Deep copy with `find` replaced by `replace` inside every string. */
44
+ function replaceInStrings(value, find, replace) {
45
+ if (!find)
46
+ return value;
47
+ const seen = new WeakSet();
48
+ const walk = (v) => {
49
+ if (typeof v === "string")
50
+ return v.includes(find) ? v.split(find).join(replace) : v;
51
+ if (Array.isArray(v))
52
+ return v.map(walk);
53
+ if (v && typeof v === "object") {
54
+ if (seen.has(v))
55
+ return v; // guard cycles
56
+ seen.add(v);
57
+ const out = {};
58
+ for (const [k, val] of Object.entries(v)) {
59
+ out[k] = walk(val);
60
+ }
61
+ return out;
62
+ }
63
+ return v;
64
+ };
65
+ return walk(value);
66
+ }
67
+ /** Snapshot-write direction: every occurrence of the Plugin API key inside
68
+ * any string becomes SNAPSHOT_KEY_PLACEHOLDER. */
69
+ export function redactApiKeyToPlaceholder(value) {
70
+ return replaceInStrings(value, config.apiKey ?? "", SNAPSHOT_KEY_PLACEHOLDER);
71
+ }
72
+ /** Snapshot-read direction: SNAPSHOT_KEY_PLACEHOLDER inside any string
73
+ * becomes the current Plugin API key. Without a configured key the value is
74
+ * returned unchanged, so callers can detect placeholder-bound writes. */
75
+ export function restoreApiKeyFromPlaceholder(value) {
76
+ if (!config.apiKey)
77
+ return value;
78
+ return replaceInStrings(value, SNAPSHOT_KEY_PLACEHOLDER, config.apiKey);
79
+ }
80
+ /** True when any string inside `value` contains `needle`. */
81
+ export function containsText(value, needle) {
82
+ const seen = new WeakSet();
83
+ const walk = (v) => {
84
+ if (typeof v === "string")
85
+ return v.includes(needle);
86
+ if (Array.isArray(v))
87
+ return v.some(walk);
88
+ if (v && typeof v === "object") {
89
+ if (seen.has(v))
90
+ return false;
91
+ seen.add(v);
92
+ return Object.values(v).some(walk);
93
+ }
94
+ return false;
95
+ };
96
+ return walk(value);
97
+ }
98
+ /** True when any string in `value` still holds SNAPSHOT_KEY_PLACEHOLDER. */
99
+ export function hasApiKeyPlaceholder(value) {
100
+ return containsText(value, SNAPSHOT_KEY_PLACEHOLDER);
101
+ }
10
102
  /**
11
103
  * Returns a deep copy of `value` with secrets scrubbed:
12
104
  * - The literal Plugin API key (config.apiKey) is replaced wherever it appears
@@ -1 +1 @@
1
- {"version":3,"file":"redact.js","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AAErC,MAAM,QAAQ,GAAG,YAAY,CAAC;AAE9B,4EAA4E;AAC5E,gFAAgF;AAChF,yCAAyC;AACzC,MAAM,kBAAkB,GACtB,uIAAuI,CAAC;AAE1I,MAAM,UAAU,iBAAiB,CAAC,IAAY;IAC5C,OAAO,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACvC,CAAC;AAWD;;;;;;;GAOG;AACH,MAAM,UAAU,aAAa,CAAI,KAAQ,EAAE,OAAsB,EAAE;IACjE,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,CAAC;IACpC,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC;IAC1B,MAAM,IAAI,GAAG,IAAI,OAAO,EAAU,CAAC;IAEnC,MAAM,WAAW,GAAG,CAAC,CAAS,EAAU,EAAE,CACxC,GAAG,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE7E,MAAM,IAAI,GAAG,CAAC,CAAU,EAAW,EAAE;QACnC,IAAI,OAAO,CAAC,KAAK,QAAQ;YAAE,OAAO,WAAW,CAAC,CAAC,CAAC,CAAC;QACjD,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;YAAE,OAAO,CAAC,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,OAAO,CAAC,KAAK,QAAQ,EAAE,CAAC;YAC/B,IAAI,IAAI,CAAC,GAAG,CAAC,CAAW,CAAC;gBAAE,OAAO,CAAC,CAAC,CAAC,eAAe;YACpD,IAAI,CAAC,GAAG,CAAC,CAAW,CAAC,CAAC;YACtB,MAAM,GAAG,GAA4B,EAAE,CAAC;YACxC,KAAK,MAAM,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,CAA4B,CAAC,EAAE,CAAC;gBACpE,GAAG,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,iBAAiB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;YACjE,CAAC;YACD,OAAO,GAAG,CAAC;QACb,CAAC;QACD,OAAO,CAAC,CAAC;IACX,CAAC,CAAC;IAEF,OAAO,IAAI,CAAC,KAAK,CAAM,CAAC;AAC1B,CAAC"}
1
+ {"version":3,"file":"redact.js","sourceRoot":"","sources":["../src/redact.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
2
+ export declare function renderDataModelMarkdown(): string;
3
+ export declare function registerDataModelResource(server: McpServer): void;
@@ -0,0 +1,66 @@
1
+ import { DATA_MODEL_GROUPS, DATA_MODEL_PROJECTIONLAB_VERSION, } from "../dataModel.js";
2
+ function renderField(pattern, field) {
3
+ const parts = [`- \`${pattern}\` [${field.evidence}]: ${field.description}`];
4
+ if (field.units)
5
+ parts.push(`Units: ${field.units}.`);
6
+ if (field.allowedValues) {
7
+ parts.push(`Allowed values: ${field.allowedValues.join(", ")}.`);
8
+ }
9
+ if (field.enabledBy)
10
+ parts.push(`Enabled by: ${field.enabledBy}.`);
11
+ if (field.note)
12
+ parts.push(`Note: ${field.note}`);
13
+ return parts.join(" ");
14
+ }
15
+ export function renderDataModelMarkdown() {
16
+ const lines = [
17
+ `# ProjectionLab Data Model (ProjectionLab ${DATA_MODEL_PROJECTIONLAB_VERSION})`,
18
+ "",
19
+ `Field reference for the values this server reads with \`listPaths\` and writes with the ` +
20
+ `update tools. Paths are dot paths exactly as \`listPaths\` lists them and as ` +
21
+ "`pathChanges` addresses them, relative to the listed object; `*` stands for any single " +
22
+ "path segment, such as an array index or a withdrawal strategy name. Each group names " +
23
+ "the scope the paths are listed and written under.",
24
+ "",
25
+ `Everything here describes ProjectionLab ${DATA_MODEL_PROJECTIONLAB_VERSION}. A future ` +
26
+ "version (v5 and beyond) may rename fields, change units, or add and remove options. " +
27
+ "Check the live values before writing.",
28
+ "",
29
+ "Evidence tags: [observed] means a value was set through the UI and the stored value was " +
30
+ "read back (or matched field-for-field against a known plan). [ui-label] means the " +
31
+ "control was seen in the UI but the entry is not yet confirmed by a stored-value test. " +
32
+ "Writes are refused only on [observed] option lists.",
33
+ "",
34
+ "The most dangerous trap is the rate scale: most rates are stored in percentage points " +
35
+ "(`variables.inflation: 3` means 3%), but the tax strategy bracket rates are stored as " +
36
+ "decimal fractions (`variables.taxStrategy.bracketRate: 0.22` means 22%). Read the " +
37
+ "current value first and write the new one on the same scale.",
38
+ "",
39
+ ];
40
+ for (const group of DATA_MODEL_GROUPS) {
41
+ lines.push(`## ${group.title}`, "");
42
+ for (const [pattern, field] of Object.entries(group.fields)) {
43
+ lines.push(renderField(pattern, field));
44
+ }
45
+ lines.push("");
46
+ }
47
+ return lines.join("\n");
48
+ }
49
+ export function registerDataModelResource(server) {
50
+ server.registerResource("data-model", "projectionlab://data-model", {
51
+ title: "ProjectionLab Data Model",
52
+ description: `Field meanings, units, and allowed values for path-addressable reads and writes, ` +
53
+ `version-stamped to ProjectionLab ${DATA_MODEL_PROJECTIONLAB_VERSION}. Static. ` +
54
+ "Entries tagged ui-label are not yet confirmed by a stored-value test.",
55
+ mimeType: "text/markdown",
56
+ }, async (uri) => ({
57
+ contents: [
58
+ {
59
+ uri: uri.href,
60
+ text: renderDataModelMarkdown(),
61
+ mimeType: "text/markdown",
62
+ },
63
+ ],
64
+ }));
65
+ }
66
+ //# sourceMappingURL=dataModel.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dataModel.js","sourceRoot":"","sources":["../../src/resources/dataModel.ts"],"names":[],"mappings":"AACA,OAAO,EACL,iBAAiB,EACjB,gCAAgC,GAEjC,MAAM,iBAAiB,CAAC;AAEzB,SAAS,WAAW,CAAC,OAAe,EAAE,KAAqB;IACzD,MAAM,KAAK,GAAG,CAAC,OAAO,OAAO,OAAO,KAAK,CAAC,QAAQ,MAAM,KAAK,CAAC,WAAW,EAAE,CAAC,CAAC;IAC7E,IAAI,KAAK,CAAC,KAAK;QAAE,KAAK,CAAC,IAAI,CAAC,UAAU,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC;IACtD,IAAI,KAAK,CAAC,aAAa,EAAE,CAAC;QACxB,KAAK,CAAC,IAAI,CAAC,mBAAmB,KAAK,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,KAAK,CAAC,SAAS;QAAE,KAAK,CAAC,IAAI,CAAC,eAAe,KAAK,CAAC,SAAS,GAAG,CAAC,CAAC;IACnE,IAAI,KAAK,CAAC,IAAI;QAAE,KAAK,CAAC,IAAI,CAAC,SAAS,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;IAClD,OAAO,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACzB,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,MAAM,KAAK,GAAa;QACtB,6CAA6C,gCAAgC,GAAG;QAChF,EAAE;QACF,0FAA0F;YACxF,+EAA+E;YAC/E,yFAAyF;YACzF,uFAAuF;YACvF,mDAAmD;QACrD,EAAE;QACF,2CAA2C,gCAAgC,aAAa;YACtF,sFAAsF;YACtF,uCAAuC;QACzC,EAAE;QACF,0FAA0F;YACxF,oFAAoF;YACpF,wFAAwF;YACxF,qDAAqD;QACvD,EAAE;QACF,wFAAwF;YACtF,wFAAwF;YACxF,oFAAoF;YACpF,8DAA8D;QAChE,EAAE;KACH,CAAC;IACF,KAAK,MAAM,KAAK,IAAI,iBAAiB,EAAE,CAAC;QACtC,KAAK,CAAC,IAAI,CAAC,MAAM,KAAK,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC;QACpC,KAAK,MAAM,CAAC,OAAO,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC;YAC5D,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IACD,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,MAAiB;IACzD,MAAM,CAAC,gBAAgB,CACrB,YAAY,EACZ,4BAA4B,EAC5B;QACE,KAAK,EAAE,0BAA0B;QACjC,WAAW,EACT,mFAAmF;YACnF,oCAAoC,gCAAgC,YAAY;YAChF,uEAAuE;QACzE,QAAQ,EAAE,eAAe;KAC1B,EACD,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,CAAC;QACd,QAAQ,EAAE;YACR;gBACE,GAAG,EAAE,GAAG,CAAC,IAAI;gBACb,IAAI,EAAE,uBAAuB,EAAE;gBAC/B,QAAQ,EAAE,eAAe;aAC1B;SACF;KACF,CAAC,CACH,CAAC;AACJ,CAAC"}