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":"diff.js","sourceRoot":"","sources":["../src/diff.ts"],"names":[],"mappings":"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"}
package/dist/errors.d.ts CHANGED
@@ -11,6 +11,12 @@ export declare class ProjectionLabError extends Error {
11
11
  toResult(): PlError;
12
12
  }
13
13
  export declare function toPlError(err: unknown): PlError;
14
+ /**
15
+ * A whole-section or restore payload that still holds `[REDACTED]` under a
16
+ * secret-named key came from a redacted read; writing it back would store the
17
+ * sentinel in the user's data. Names the offending dot paths.
18
+ */
19
+ export declare function redactedSecretsError(payloadName: string, paths: string[]): ProjectionLabError;
14
20
  export declare function errorResult(err: unknown): {
15
21
  content: {
16
22
  type: "text";
package/dist/errors.js CHANGED
@@ -1,3 +1,4 @@
1
+ import { redactSecrets } from "./redact.js";
1
2
  export class ProjectionLabError extends Error {
2
3
  code;
3
4
  suggestion;
@@ -26,8 +27,20 @@ export function toPlError(err) {
26
27
  suggestion: "Check server logs for details",
27
28
  };
28
29
  }
30
+ /**
31
+ * A whole-section or restore payload that still holds `[REDACTED]` under a
32
+ * secret-named key came from a redacted read; writing it back would store the
33
+ * sentinel in the user's data. Names the offending dot paths.
34
+ */
35
+ export function redactedSecretsError(payloadName, paths) {
36
+ return new ProjectionLabError("INVALID_INPUT", `${payloadName} contains redacted secret values at: ${paths.join(", ")}`, "These values were hidden by the read that produced this payload, so it cannot be written back. " +
37
+ "Supply the real values, or change single fields with projectionlab_update_plan_event or " +
38
+ "projectionlab_update_plan_settings, which patch by path and never round-trip hidden values.");
39
+ }
29
40
  export function errorResult(err) {
30
- const plErr = toPlError(err);
41
+ // An error message can echo request data from the browser executor, so the
42
+ // Plugin API key is scrubbed from it like any other tool output.
43
+ const plErr = redactSecrets(toPlError(err));
31
44
  return {
32
45
  content: [{ type: "text", text: JSON.stringify(plErr) }],
33
46
  isError: true,
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAoBA,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAEzB;IAEA;IAHlB,YACkB,IAAe,EAC/B,OAAe,EACC,UAAkB;QAElC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAW;QAEf,eAAU,GAAV,UAAU,CAAQ;QAGlC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;IAED,QAAQ;QACN,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,OAAO;QACP,UAAU,EAAE,+BAA+B;KAC5C,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,MAAM,KAAK,GAAG,SAAS,CAAC,GAAG,CAAC,CAAC;IAC7B,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAsB5C,MAAM,OAAO,kBAAmB,SAAQ,KAAK;IAEzB;IAEA;IAHlB,YACkB,IAAe,EAC/B,OAAe,EACC,UAAkB;QAElC,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAW;QAEf,eAAU,GAAV,UAAU,CAAQ;QAGlC,IAAI,CAAC,IAAI,GAAG,oBAAoB,CAAC;IACnC,CAAC;IAED,QAAQ;QACN,OAAO;YACL,KAAK,EAAE,IAAI,CAAC,IAAI;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;SAC5B,CAAC;IACJ,CAAC;CACF;AAED,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,IAAI,GAAG,YAAY,kBAAkB,EAAE,CAAC;QACtC,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;IACxB,CAAC;IACD,MAAM,OAAO,GAAG,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;IACjE,OAAO;QACL,KAAK,EAAE,SAAS;QAChB,OAAO;QACP,UAAU,EAAE,+BAA+B;KAC5C,CAAC;AACJ,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAClC,WAAmB,EACnB,KAAe;IAEf,OAAO,IAAI,kBAAkB,CAC3B,eAAe,EACf,GAAG,WAAW,wCAAwC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACxE,iGAAiG;QAC/F,0FAA0F;QAC1F,6FAA6F,CAChG,CAAC;AACJ,CAAC;AAED,MAAM,UAAU,WAAW,CAAC,GAAY;IACtC,2EAA2E;IAC3E,iEAAiE;IACjE,MAAM,KAAK,GAAG,aAAa,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC,CAAC;IAC5C,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,CAAC;QACjE,OAAO,EAAE,IAAI;KACd,CAAC;AACJ,CAAC"}
@@ -4,6 +4,7 @@ export declare class ExtensionBridge implements Bridge {
4
4
  private wss;
5
5
  private conn;
6
6
  private connExecutor;
7
+ private connInstanceId;
7
8
  private readonly pending;
8
9
  private nextId;
9
10
  private heartbeat;
@@ -22,14 +23,27 @@ export declare class ExtensionBridge implements Bridge {
22
23
  * this machine) holds it, retries every PORT_RETRY_MS and takes over once
23
24
  * that instance exits; the extension reconnects on its own schedule. */
24
25
  private listen;
25
- /** New sockets must send a valid hello before anything else. */
26
+ /** New sockets must send a valid hello before anything else. `helloRead`
27
+ * runs once the first message arrives, whatever it holds. */
26
28
  private awaitHello;
27
- /** Promote an authenticated socket to the active connection (newest wins). */
29
+ /**
30
+ * Decide whether an authenticated hello becomes the active executor. The
31
+ * incumbent keeps the connection: a newcomer is refused with BUSY unless it
32
+ * requests takeover, or repeats the incumbent's instance id (an executor
33
+ * must never be locked out by its own stale socket). An incumbent whose
34
+ * socket is not open is dead and gets dropped first; the heartbeat is what
35
+ * clears a crashed incumbent that still looks open.
36
+ */
37
+ private admit;
38
+ /** Promote an authenticated socket to the active connection. Replacing a
39
+ * live incumbent (takeover or same instance id) closes it with 4003. */
28
40
  private adopt;
29
41
  private onFrame;
30
42
  private settle;
31
43
  private wireError;
32
44
  private startHeartbeat;
45
+ /** Reject every in-flight request; the executor that was sent to is gone. */
46
+ private abandonRequests;
33
47
  private dropConnection;
34
48
  private serialize;
35
49
  /** Why no executor can be reached, with the fix, for error messages. */
@@ -1,11 +1,12 @@
1
1
  import { randomBytes } from "node:crypto";
2
2
  import { chmodSync, mkdirSync, readFileSync, writeFileSync } from "node:fs";
3
3
  import { dirname, join } from "node:path";
4
- import { WebSocketServer } from "ws";
4
+ import { WebSocketServer, WebSocket } from "ws";
5
5
  import { buildBootstrapSnippet } from "./bootstrap.js";
6
6
  import { config, USER_ENV_FILE } from "./config.js";
7
7
  import { ProjectionLabError } from "./errors.js";
8
8
  import { log } from "./logger.js";
9
+ import { VERSION } from "./version.js";
9
10
  import { CLOSE_CODES, HEARTBEAT_INTERVAL_MS, PROTOCOL_VERSION, } from "./types/wire.js";
10
11
  /** Origins allowed to open the WebSocket. Extensions plus the PL app itself
11
12
  * (Tier 0 bootstrap snippet runs in page context, so the browser sends the
@@ -19,6 +20,10 @@ function originAllowed(origin) {
19
20
  origin === new URL(config.appUrl).origin);
20
21
  }
21
22
  const HELLO_TIMEOUT_MS = 5_000;
23
+ /** Bytes a connection may send before its hello is read. A hello frame is a
24
+ * few hundred bytes; the cap stops an unauthenticated peer from making the
25
+ * server buffer a large frame (ws allows 100 MiB by default). */
26
+ const MAX_PRE_HELLO_BYTES = 64 * 1024;
22
27
  /** How often to retry the WebSocket port while another instance holds it. */
23
28
  const PORT_RETRY_MS = 3_000;
24
29
  const EXTENSION_HELP = "Install the MCP Bridge for ProjectionLab extension (zips on the GitHub Releases page of " +
@@ -29,6 +34,17 @@ const EXTENSION_HELP = "Install the MCP Bridge for ProjectionLab extension (zips
29
34
  "it again from about:debugging (This Firefox > Load Temporary Add-on > manifest.json in the same " +
30
35
  "folder) and re-enter the port and token if its options page is empty.";
31
36
  const REQUEST_TIMEOUT_MS = 60_000;
37
+ /** Parses one text frame. Returns null unless it is a JSON object: valid JSON
38
+ * such as `null` or `42` has no `type` to read. */
39
+ function parseFrame(raw) {
40
+ try {
41
+ const frame = JSON.parse(String(raw));
42
+ return frame && typeof frame === "object" ? frame : null;
43
+ }
44
+ catch {
45
+ return null;
46
+ }
47
+ }
32
48
  /** Best-effort chmod; a file the process does not own keeps its mode. */
33
49
  function restrictMode(path, mode) {
34
50
  try {
@@ -42,6 +58,7 @@ export class ExtensionBridge {
42
58
  wss = null;
43
59
  conn = null;
44
60
  connExecutor = "";
61
+ connInstanceId = "";
45
62
  pending = new Map();
46
63
  nextId = 1;
47
64
  heartbeat = null;
@@ -119,27 +136,47 @@ export class ExtensionBridge {
119
136
  log.error("extension", `WebSocket server error: ${err.message}`);
120
137
  });
121
138
  wss.on("connection", (ws, req) => {
139
+ // A socket emits "error" on a malformed frame (RFC 6455 5.1: client
140
+ // frames must be masked), and an EventEmitter with no "error" listener
141
+ // throws, which would end the process. Listen from the first moment, so
142
+ // a peer that never authenticates cannot take the server down; an
143
+ // adopted executor's errors are logged by adopt().
144
+ ws.on("error", (err) => {
145
+ if (this.conn !== ws) {
146
+ log.warn("extension", `Socket error before authentication: ${err.message}`);
147
+ }
148
+ });
122
149
  const origin = req.headers.origin;
123
150
  if (!originAllowed(origin)) {
124
151
  log.warn("extension", `Rejected connection from origin ${origin}`);
125
152
  ws.close(CLOSE_CODES.AUTH_FAILED, "origin not allowed");
126
153
  return;
127
154
  }
128
- this.awaitHello(ws, origin ?? "(no origin)");
155
+ const socket = req.socket;
156
+ let preHelloBytes = 0;
157
+ const countPreHelloBytes = (chunk) => {
158
+ preHelloBytes += chunk.length;
159
+ if (preHelloBytes > MAX_PRE_HELLO_BYTES) {
160
+ log.warn("extension", `Dropped connection from ${origin ?? "(no origin)"}: too much data before hello`);
161
+ socket.off("data", countPreHelloBytes);
162
+ socket.destroy();
163
+ }
164
+ };
165
+ socket.on("data", countPreHelloBytes);
166
+ this.awaitHello(ws, origin ?? "(no origin)", () => socket.off("data", countPreHelloBytes));
129
167
  });
130
168
  }
131
- /** New sockets must send a valid hello before anything else. */
132
- awaitHello(ws, origin) {
169
+ /** New sockets must send a valid hello before anything else. `helloRead`
170
+ * runs once the first message arrives, whatever it holds. */
171
+ awaitHello(ws, origin, helloRead) {
133
172
  const timer = setTimeout(() => {
134
173
  ws.close(CLOSE_CODES.AUTH_FAILED, "hello timeout");
135
174
  }, HELLO_TIMEOUT_MS);
136
175
  ws.once("message", (raw) => {
137
176
  clearTimeout(timer);
138
- let hello;
139
- try {
140
- hello = JSON.parse(String(raw));
141
- }
142
- catch {
177
+ helloRead();
178
+ const hello = parseFrame(raw);
179
+ if (!hello) {
143
180
  ws.close(CLOSE_CODES.AUTH_FAILED, "malformed hello");
144
181
  return;
145
182
  }
@@ -153,19 +190,60 @@ export class ExtensionBridge {
153
190
  ws.close(CLOSE_CODES.VERSION_MISMATCH, "protocol version mismatch");
154
191
  return;
155
192
  }
156
- this.adopt(ws, hello.executor);
193
+ // Only authenticated hellos reach the connection decision, so an
194
+ // unauthenticated client can neither displace an executor nor learn
195
+ // that one is connected.
196
+ const instanceId = typeof hello.instanceId === "string" &&
197
+ hello.instanceId.length >= 1 &&
198
+ hello.instanceId.length <= 64
199
+ ? hello.instanceId
200
+ : "";
201
+ this.admit(ws, hello.executor, instanceId, hello.takeover === true);
157
202
  });
158
203
  }
159
- /** Promote an authenticated socket to the active connection (newest wins). */
160
- adopt(ws, executor) {
204
+ /**
205
+ * Decide whether an authenticated hello becomes the active executor. The
206
+ * incumbent keeps the connection: a newcomer is refused with BUSY unless it
207
+ * requests takeover, or repeats the incumbent's instance id (an executor
208
+ * must never be locked out by its own stale socket). An incumbent whose
209
+ * socket is not open is dead and gets dropped first; the heartbeat is what
210
+ * clears a crashed incumbent that still looks open.
211
+ */
212
+ admit(ws, executor, instanceId, takeover) {
213
+ const incumbent = this.conn;
214
+ if (!incumbent || incumbent.readyState !== WebSocket.OPEN) {
215
+ if (incumbent)
216
+ this.dropConnection("dropping a dead executor connection");
217
+ this.adopt(ws, executor, instanceId);
218
+ return;
219
+ }
220
+ if (takeover || (instanceId !== "" && instanceId === this.connInstanceId)) {
221
+ this.adopt(ws, executor, instanceId);
222
+ return;
223
+ }
224
+ log.info("extension", `Refusing ${executor} with BUSY: ${this.connExecutor} holds the connection`);
225
+ ws.close(CLOSE_CODES.BUSY, "another executor holds the connection");
226
+ }
227
+ /** Promote an authenticated socket to the active connection. Replacing a
228
+ * live incumbent (takeover or same instance id) closes it with 4003. */
229
+ adopt(ws, executor, instanceId) {
161
230
  if (this.conn && this.conn !== ws) {
162
231
  log.info("extension", `Replacing ${this.connExecutor} with ${executor}`);
163
232
  this.conn.close(CLOSE_CODES.REPLACED, "replaced by newer connection");
233
+ // The replaced executor's state must not leak into the new one: its
234
+ // cached export could be served from the previous browser, its
235
+ // unanswered requests would hang until the 60s timeout, and a pong the
236
+ // old executor never sent must not drop the new one at the next
237
+ // heartbeat tick. The new socket and the heartbeat stay as they are.
238
+ this.exportCache = null;
239
+ this.awaitingPong = false;
240
+ this.abandonRequests("executor was replaced");
164
241
  }
165
242
  this.conn = ws;
166
243
  this.connExecutor = executor;
244
+ this.connInstanceId = instanceId;
167
245
  log.info("extension", `Executor connected: ${executor}`);
168
- ws.send(JSON.stringify({ type: "helloAck", protocolVersion: PROTOCOL_VERSION }));
246
+ ws.send(JSON.stringify({ type: "helloAck", protocolVersion: PROTOCOL_VERSION, serverVersion: VERSION }));
169
247
  ws.on("message", (raw) => this.onFrame(ws, raw));
170
248
  ws.on("close", () => {
171
249
  if (this.conn === ws) {
@@ -181,11 +259,8 @@ export class ExtensionBridge {
181
259
  onFrame(ws, raw) {
182
260
  if (this.conn !== ws)
183
261
  return;
184
- let frame;
185
- try {
186
- frame = JSON.parse(String(raw));
187
- }
188
- catch {
262
+ const frame = parseFrame(raw);
263
+ if (!frame) {
189
264
  log.warn("extension", "Dropping malformed frame");
190
265
  return;
191
266
  }
@@ -244,6 +319,14 @@ export class ExtensionBridge {
244
319
  this.conn.send(JSON.stringify({ type: "ping" }));
245
320
  }, HEARTBEAT_INTERVAL_MS);
246
321
  }
322
+ /** Reject every in-flight request; the executor that was sent to is gone. */
323
+ abandonRequests(reason) {
324
+ for (const [id, pending] of this.pending) {
325
+ clearTimeout(pending.timer);
326
+ pending.reject(new ProjectionLabError("EXTENSION_NOT_CONNECTED", `Request ${id} aborted: ${reason}`, "The browser-side executor disconnected mid-request. Check the browser and retry."));
327
+ }
328
+ this.pending.clear();
329
+ }
247
330
  dropConnection(reason) {
248
331
  // Close the socket if it's still live - wss.close() waits for all
249
332
  // clients, so leaving it open would hang shutdown.
@@ -255,17 +338,14 @@ export class ExtensionBridge {
255
338
  }
256
339
  this.conn = null;
257
340
  this.connExecutor = "";
341
+ this.connInstanceId = "";
258
342
  this.awaitingPong = false;
259
343
  this.exportCache = null;
260
344
  if (this.heartbeat) {
261
345
  clearInterval(this.heartbeat);
262
346
  this.heartbeat = null;
263
347
  }
264
- for (const [id, pending] of this.pending) {
265
- clearTimeout(pending.timer);
266
- pending.reject(new ProjectionLabError("EXTENSION_NOT_CONNECTED", `Request ${id} aborted: ${reason}`, "The browser-side executor disconnected mid-request. Check the browser and retry."));
267
- }
268
- this.pending.clear();
348
+ this.abandonRequests(reason);
269
349
  }
270
350
  serialize(fn) {
271
351
  const next = this.opChain.then(fn, fn);
@@ -335,6 +415,7 @@ export class ExtensionBridge {
335
415
  return result;
336
416
  }
337
417
  result.browser = true;
418
+ result.executor = this.connExecutor || undefined;
338
419
  try {
339
420
  await this.request("waitForApi", [config.apiReadyTimeoutMs], config.apiReadyTimeoutMs + 5_000);
340
421
  result.pageLoaded = true;
@@ -1 +1 @@
1
- {"version":3,"file":"extensionBridge.js","sourceRoot":"","sources":["../src/extensionBridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"extensionBridge.js","sourceRoot":"","sources":["../src/extensionBridge.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -6,6 +6,8 @@ import { ExtensionBridge } from "./extensionBridge.js";
6
6
  import { registerBootstrapTool } from "./tools/bootstrap.js";
7
7
  import { SnapshotManager } from "./snapshot.js";
8
8
  import { log } from "./logger.js";
9
+ import { redactSecrets } from "./redact.js";
10
+ import { updateCheck } from "./updateCheck.js";
9
11
  import { SERVER_INSTRUCTIONS } from "./instructions.js";
10
12
  import { VERSION } from "./version.js";
11
13
  // Tools
@@ -17,10 +19,12 @@ import { registerGetPlanTool } from "./tools/getPlan.js";
17
19
  import { registerGetPlanSectionTool } from "./tools/getPlanSection.js";
18
20
  import { registerGetPlanSettingsTool } from "./tools/getPlanSettings.js";
19
21
  import { registerGetCurrentFinancesTool } from "./tools/getCurrentFinances.js";
22
+ import { registerDiffTool } from "./tools/diff.js";
20
23
  import { registerUpdateAccountTool } from "./tools/updateAccount.js";
21
24
  import { registerUpdatePlanSectionTool } from "./tools/updatePlanSection.js";
22
25
  import { registerUpdatePlanEventTool } from "./tools/updatePlanEvent.js";
23
26
  import { registerClonePlanTool } from "./tools/clonePlan.js";
27
+ import { registerDeletePlanTool } from "./tools/deletePlan.js";
24
28
  import { registerUpdatePlanSettingsTool } from "./tools/updatePlanSettings.js";
25
29
  import { registerRestoreTools } from "./tools/restore.js";
26
30
  import { registerSnapshotTools } from "./tools/snapshots.js";
@@ -29,6 +33,7 @@ import { registerPlanDataResource } from "./resources/planData.js";
29
33
  import { registerSummaryResource } from "./resources/summary.js";
30
34
  import { registerKnowledgeResource } from "./resources/knowledge.js";
31
35
  import { registerGuideResource } from "./resources/guide.js";
36
+ import { registerDataModelResource } from "./resources/dataModel.js";
32
37
  // Prompts
33
38
  import { registerPrompts } from "./prompts/index.js";
34
39
  async function main() {
@@ -44,6 +49,8 @@ async function main() {
44
49
  instructions: SERVER_INSTRUCTIONS,
45
50
  });
46
51
  const bridge = new ExtensionBridge();
52
+ // Fire-and-forget registry lookup; startup never waits on the network.
53
+ updateCheck.start();
47
54
  registerBootstrapTool(server, bridge);
48
55
  const snapshots = new SnapshotManager();
49
56
  // Register read tools
@@ -55,12 +62,16 @@ async function main() {
55
62
  registerGetPlanSectionTool(server, bridge);
56
63
  registerGetPlanSettingsTool(server, bridge);
57
64
  registerGetCurrentFinancesTool(server, bridge);
65
+ // Compares snapshots against each other or against the live export, so it
66
+ // needs the snapshot manager but never writes to it.
67
+ registerDiffTool(server, bridge, snapshots);
58
68
  // Register write tools
59
69
  registerUpdateAccountTool(server, bridge, snapshots);
60
70
  registerUpdatePlanSectionTool(server, bridge, snapshots);
61
71
  registerUpdatePlanEventTool(server, bridge, snapshots);
62
72
  registerUpdatePlanSettingsTool(server, bridge, snapshots);
63
73
  registerClonePlanTool(server, bridge, snapshots);
74
+ registerDeletePlanTool(server, bridge, snapshots);
64
75
  registerRestoreTools(server, bridge, snapshots);
65
76
  // Register snapshot/rollback tools
66
77
  registerSnapshotTools(server, bridge, snapshots);
@@ -69,26 +80,41 @@ async function main() {
69
80
  registerSummaryResource(server, bridge);
70
81
  registerKnowledgeResource(server);
71
82
  registerGuideResource(server);
83
+ registerDataModelResource(server);
72
84
  // Register prompts
73
85
  registerPrompts(server, bridge);
74
86
  log.info("server", `WebSocket port: ${config.wsPort}`);
75
87
  log.info("server", `Read-only mode: ${config.readOnly}`);
76
88
  log.info("server", `Snapshot dir: ${config.snapshotDir}`);
77
89
  // Graceful shutdown
90
+ let shuttingDown = false;
78
91
  const shutdown = async () => {
92
+ if (shuttingDown)
93
+ return;
94
+ shuttingDown = true;
79
95
  log.info("server", "Shutting down...");
80
96
  await bridge.close();
81
97
  process.exit(0);
82
98
  };
83
99
  process.on("SIGINT", shutdown);
84
100
  process.on("SIGTERM", shutdown);
101
+ // stdin EOF means the MCP host is gone; the SDK's stdio transport does not
102
+ // act on it, so without this the process would linger and keep holding the
103
+ // WebSocket port. Exiting releases it for the next session's server.
104
+ process.stdin.on("end", () => {
105
+ void shutdown();
106
+ });
85
107
  // Connect stdio transport
86
108
  const transport = new StdioServerTransport();
87
109
  await server.connect(transport);
88
110
  log.info("server", "ProjectionLab MCP server running on stdio");
89
111
  }
90
112
  main().catch((err) => {
91
- console.error("Fatal error:", err);
113
+ // The one console call outside the logger. An Error's stack can carry a
114
+ // message built from request data, so the text is scrubbed the same way
115
+ // every logged line is before it reaches stderr.
116
+ const text = err instanceof Error ? err.stack || err.message || String(err) : String(err);
117
+ console.error("Fatal error:", redactSecrets(text));
92
118
  process.exit(1);
93
119
  });
94
120
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -7,4 +7,4 @@ export declare function readGuide(): string;
7
7
  * instructions give these to the model; the full guide is the
8
8
  * `projectionlab://guide` resource and the bundled skill.
9
9
  */
10
- export declare const SERVER_INSTRUCTIONS = "ProjectionLab MCP: reads and edits the user's ProjectionLab retirement plan through their logged-in browser tab.\n\n- Call projectionlab_check_connection first in every session. If any check fails, read the resource projectionlab://guide and walk the user through the fix one step at a time.\n- Writes are disabled unless the user sets PL_READ_ONLY=false. Every write tool is a dry run unless confirm: true is passed; show the user the preview and confirm only the specific change they approved. Confirmed changes are snapshotted and can be undone with projectionlab_rollback.\n- Change the plan only when the user explicitly asks.\n- Plan figures are private: never send them outside the conversation. Never reveal PL_API_KEY or the WebSocket token.\n- The server reads plan definitions; projections and Chance of Success run only in the ProjectionLab UI.\n- Provide information and education, not personalized financial advice.";
10
+ export declare const SERVER_INSTRUCTIONS = "ProjectionLab MCP: reads and edits the user's ProjectionLab retirement plan through their logged-in browser tab.\n\n- Call projectionlab_check_connection first in every session. If any check fails, read the resource projectionlab://guide and walk the user through the fix one step at a time. If it returns notices, relay each one to the user once, in plain words, then carry on with their request; do not repeat them later in the session and do not refuse to work because of them.\n- Writes are disabled unless the user sets PL_READ_ONLY=false. Every write tool is a dry run unless confirm: true is passed; describe the preview to the user in plain words (which plan, which item, the old and new value), never as JSON, and confirm only the specific change they approved. Confirmed changes are snapshotted and can be undone with projectionlab_rollback.\n- Change the plan only when the user explicitly asks.\n- Plan figures are private: never send them outside the conversation. Never reveal PL_API_KEY or the WebSocket token.\n- The server reads plan definitions; projections and Chance of Success run only in the ProjectionLab UI.\n- The tools read ProjectionLab's backup export: a field being present does not mean the app uses it, and a write that stored a value does not prove the app acts on it. Check a change's effect in the ProjectionLab UI.\n- Provide information and education, not personalized financial advice.";
@@ -15,10 +15,11 @@ export function readGuide() {
15
15
  */
16
16
  export const SERVER_INSTRUCTIONS = `ProjectionLab MCP: reads and edits the user's ProjectionLab retirement plan through their logged-in browser tab.
17
17
 
18
- - Call projectionlab_check_connection first in every session. If any check fails, read the resource projectionlab://guide and walk the user through the fix one step at a time.
19
- - Writes are disabled unless the user sets PL_READ_ONLY=false. Every write tool is a dry run unless confirm: true is passed; show the user the preview and confirm only the specific change they approved. Confirmed changes are snapshotted and can be undone with projectionlab_rollback.
18
+ - Call projectionlab_check_connection first in every session. If any check fails, read the resource projectionlab://guide and walk the user through the fix one step at a time. If it returns notices, relay each one to the user once, in plain words, then carry on with their request; do not repeat them later in the session and do not refuse to work because of them.
19
+ - Writes are disabled unless the user sets PL_READ_ONLY=false. Every write tool is a dry run unless confirm: true is passed; describe the preview to the user in plain words (which plan, which item, the old and new value), never as JSON, and confirm only the specific change they approved. Confirmed changes are snapshotted and can be undone with projectionlab_rollback.
20
20
  - Change the plan only when the user explicitly asks.
21
21
  - Plan figures are private: never send them outside the conversation. Never reveal PL_API_KEY or the WebSocket token.
22
22
  - The server reads plan definitions; projections and Chance of Success run only in the ProjectionLab UI.
23
+ - The tools read ProjectionLab's backup export: a field being present does not mean the app uses it, and a write that stored a value does not prove the app acts on it. Check a change's effect in the ProjectionLab UI.
23
24
  - Provide information and education, not personalized financial advice.`;
24
25
  //# sourceMappingURL=instructions.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,gFAAgF;AAChF,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAC5B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvC,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,UAAU,CACX,CAAC;AAEF,+DAA+D;AAC/D,MAAM,UAAU,SAAS;IACvB,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;wEAOqC,CAAC"}
1
+ {"version":3,"file":"instructions.js","sourceRoot":"","sources":["../src/instructions.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,gFAAgF;AAChF,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAC5B,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EACvC,IAAI,EACJ,QAAQ,EACR,eAAe,EACf,UAAU,CACX,CAAC;AAEF,+DAA+D;AAC/D,MAAM,UAAU,SAAS;IACvB,MAAM,IAAI,GAAG,YAAY,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IAC9C,OAAO,IAAI,CAAC,OAAO,CAAC,wBAAwB,EAAE,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAAG;;;;;;;;wEAQqC,CAAC"}