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.
- package/HOW-IT-WORKS.md +2 -2
- package/MANUAL-SETUP.md +64 -0
- package/README.md +34 -271
- package/REFERENCE.md +221 -0
- package/SETUP-FOR-AGENTS.md +37 -0
- package/dist/bootstrap.js +20 -3
- package/dist/bootstrap.js.map +1 -1
- package/dist/bridge.d.ts +2 -0
- package/dist/clonePlan.d.ts +9 -0
- package/dist/clonePlan.js +15 -14
- package/dist/clonePlan.js.map +1 -1
- package/dist/config.d.ts +4 -0
- package/dist/config.js +41 -6
- package/dist/config.js.map +1 -1
- package/dist/currentFinances.d.ts +12 -1
- package/dist/currentFinances.js +60 -0
- package/dist/currentFinances.js.map +1 -1
- package/dist/dataModel.d.ts +58 -0
- package/dist/dataModel.js +1429 -0
- package/dist/dataModel.js.map +1 -0
- package/dist/deletePlan.d.ts +17 -0
- package/dist/deletePlan.js +72 -0
- package/dist/deletePlan.js.map +1 -0
- package/dist/diff.d.ts +288 -0
- package/dist/diff.js +744 -0
- package/dist/diff.js.map +1 -0
- package/dist/errors.d.ts +6 -0
- package/dist/errors.js +14 -1
- package/dist/errors.js.map +1 -1
- package/dist/extensionBridge.d.ts +16 -2
- package/dist/extensionBridge.js +104 -23
- package/dist/extensionBridge.js.map +1 -1
- package/dist/index.js +27 -1
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.js +3 -2
- package/dist/instructions.js.map +1 -1
- package/dist/largeOutput.js +25 -0
- package/dist/largeOutput.js.map +1 -1
- package/dist/logger.js +11 -4
- package/dist/logger.js.map +1 -1
- package/dist/pathPatch.d.ts +5 -2
- package/dist/pathPatch.js +16 -2
- package/dist/pathPatch.js.map +1 -1
- package/dist/planSettings.d.ts +1 -1
- package/dist/planSettings.js +3 -3
- package/dist/planSettings.js.map +1 -1
- package/dist/plans.d.ts +73 -10
- package/dist/plans.js +206 -42
- package/dist/plans.js.map +1 -1
- package/dist/prompts/index.js +7 -4
- package/dist/prompts/index.js.map +1 -1
- package/dist/realEstate.d.ts +22 -0
- package/dist/realEstate.js +118 -0
- package/dist/realEstate.js.map +1 -0
- package/dist/redact.d.ts +26 -0
- package/dist/redact.js +93 -1
- package/dist/redact.js.map +1 -1
- package/dist/resources/dataModel.d.ts +3 -0
- package/dist/resources/dataModel.js +66 -0
- package/dist/resources/dataModel.js.map +1 -0
- package/dist/resources/knowledge.js +189 -47
- package/dist/resources/knowledge.js.map +1 -1
- package/dist/resources/planData.js +3 -1
- package/dist/resources/planData.js.map +1 -1
- package/dist/resources/summary.js +4 -1
- package/dist/resources/summary.js.map +1 -1
- package/dist/snapshot.d.ts +21 -0
- package/dist/snapshot.js +116 -12
- package/dist/snapshot.js.map +1 -1
- package/dist/summary.js +19 -6
- package/dist/summary.js.map +1 -1
- package/dist/tools/clonePlan.js +17 -8
- package/dist/tools/clonePlan.js.map +1 -1
- package/dist/tools/connection.js +29 -4
- package/dist/tools/connection.js.map +1 -1
- package/dist/tools/deletePlan.d.ts +4 -0
- package/dist/tools/deletePlan.js +103 -0
- package/dist/tools/deletePlan.js.map +1 -0
- package/dist/tools/diff.d.ts +4 -0
- package/dist/tools/diff.js +417 -0
- package/dist/tools/diff.js.map +1 -0
- package/dist/tools/getCurrentFinances.js +27 -4
- package/dist/tools/getCurrentFinances.js.map +1 -1
- package/dist/tools/getPlan.js +4 -4
- package/dist/tools/getPlan.js.map +1 -1
- package/dist/tools/getPlanSection.js +7 -6
- package/dist/tools/getPlanSection.js.map +1 -1
- package/dist/tools/getPlanSettings.js +10 -6
- package/dist/tools/getPlanSettings.js.map +1 -1
- package/dist/tools/restore.js +18 -1
- package/dist/tools/restore.js.map +1 -1
- package/dist/tools/schema.js +28 -4
- package/dist/tools/schema.js.map +1 -1
- package/dist/tools/snapshots.d.ts +1 -1
- package/dist/tools/snapshots.js +53 -6
- package/dist/tools/snapshots.js.map +1 -1
- package/dist/tools/summary.js +3 -2
- package/dist/tools/summary.js.map +1 -1
- package/dist/tools/updateAccount.js +9 -7
- package/dist/tools/updateAccount.js.map +1 -1
- package/dist/tools/updatePlanEvent.js +71 -33
- package/dist/tools/updatePlanEvent.js.map +1 -1
- package/dist/tools/updatePlanSection.js +17 -32
- package/dist/tools/updatePlanSection.js.map +1 -1
- package/dist/tools/updatePlanSettings.js +11 -7
- package/dist/tools/updatePlanSettings.js.map +1 -1
- package/dist/types/projectionlab.d.ts +3 -1
- package/dist/types/wire.d.ts +27 -2
- package/dist/types/wire.js +6 -2
- package/dist/types/wire.js.map +1 -1
- package/dist/updateCheck.d.ts +22 -0
- package/dist/updateCheck.js +58 -0
- package/dist/updateCheck.js.map +1 -0
- package/dist/versionCompare.d.ts +5 -0
- package/dist/versionCompare.js +33 -0
- package/dist/versionCompare.js.map +1 -0
- package/dist/versionNotices.d.ts +9 -0
- package/dist/versionNotices.js +42 -0
- package/dist/versionNotices.js.map +1 -0
- package/package.json +6 -3
- package/skills/projectionlab/SKILL.md +329 -29
|
@@ -0,0 +1,58 @@
|
|
|
1
|
+
// One request per server process asks the npm registry for the latest
|
|
2
|
+
// published version of this package, so check_connection can tell the user
|
|
3
|
+
// an update is available. The request carries no user data: no query string,
|
|
4
|
+
// no custom headers beyond Accept, nothing from config or the plan.
|
|
5
|
+
// PL_UPDATE_CHECK=false turns the lookup off entirely.
|
|
6
|
+
import { config } from "./config.js";
|
|
7
|
+
import { log } from "./logger.js";
|
|
8
|
+
import { compareVersions } from "./versionCompare.js";
|
|
9
|
+
import { VERSION } from "./version.js";
|
|
10
|
+
const REGISTRY_URL = "https://registry.npmjs.org/projectionlab-mcp/latest";
|
|
11
|
+
const DEFAULT_TIMEOUT_MS = 3000;
|
|
12
|
+
/**
|
|
13
|
+
* Read the `version` field of the registry's latest-release document.
|
|
14
|
+
* Any failure (offline, timeout, non-200, bad JSON, missing or unparsable
|
|
15
|
+
* version) resolves to null; this never rejects.
|
|
16
|
+
*/
|
|
17
|
+
export async function fetchLatestVersion(fetchImpl = fetch, timeoutMs = DEFAULT_TIMEOUT_MS) {
|
|
18
|
+
try {
|
|
19
|
+
const response = await fetchImpl(REGISTRY_URL, {
|
|
20
|
+
headers: { Accept: "application/json" },
|
|
21
|
+
signal: AbortSignal.timeout(timeoutMs),
|
|
22
|
+
});
|
|
23
|
+
if (!response.ok)
|
|
24
|
+
return null;
|
|
25
|
+
const body = (await response.json());
|
|
26
|
+
if (typeof body?.version !== "string")
|
|
27
|
+
return null;
|
|
28
|
+
// Unparsable versions are as good as unknown.
|
|
29
|
+
return compareVersions(body.version, "0.0.0") === null ? null : body.version;
|
|
30
|
+
}
|
|
31
|
+
catch (err) {
|
|
32
|
+
log.debug("updateCheck", `update lookup failed: ${err}`);
|
|
33
|
+
return null;
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
/** A fresh holder; the module-level one is what the server uses. */
|
|
37
|
+
export function createUpdateCheck() {
|
|
38
|
+
let latest = null;
|
|
39
|
+
let started = false;
|
|
40
|
+
return {
|
|
41
|
+
start(fetchImpl = fetch) {
|
|
42
|
+
if (started || !config.updateCheck)
|
|
43
|
+
return;
|
|
44
|
+
started = true;
|
|
45
|
+
void fetchLatestVersion(fetchImpl).then((found) => {
|
|
46
|
+
latest = found;
|
|
47
|
+
if (found && compareVersions(found, VERSION) === 1) {
|
|
48
|
+
log.info("updateCheck", `projectionlab-mcp ${found} is available (running ${VERSION})`);
|
|
49
|
+
}
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
latest() {
|
|
53
|
+
return latest;
|
|
54
|
+
},
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
export const updateCheck = createUpdateCheck();
|
|
58
|
+
//# sourceMappingURL=updateCheck.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"updateCheck.js","sourceRoot":"","sources":["../src/updateCheck.ts"],"names":[],"mappings":"AAAA,sEAAsE;AACtE,2EAA2E;AAC3E,6EAA6E;AAC7E,oEAAoE;AACpE,uDAAuD;AAEvD,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AACtD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAEvC,MAAM,YAAY,GAAG,qDAAqD,CAAC;AAC3E,MAAM,kBAAkB,GAAG,IAAI,CAAC;AAUhC;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CACtC,YAAuB,KAA6B,EACpD,YAAoB,kBAAkB;IAEtC,IAAI,CAAC;QACH,MAAM,QAAQ,GAAG,MAAM,SAAS,CAAC,YAAY,EAAE;YAC7C,OAAO,EAAE,EAAE,MAAM,EAAE,kBAAkB,EAAE;YACvC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC;SACvC,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,EAAE;YAAE,OAAO,IAAI,CAAC;QAC9B,MAAM,IAAI,GAAG,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,CAA0B,CAAC;QAC9D,IAAI,OAAO,IAAI,EAAE,OAAO,KAAK,QAAQ;YAAE,OAAO,IAAI,CAAC;QACnD,8CAA8C;QAC9C,OAAO,eAAe,CAAC,IAAI,CAAC,OAAO,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC;IAC/E,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,GAAG,CAAC,KAAK,CAAC,aAAa,EAAE,yBAAyB,GAAG,EAAE,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AASD,oEAAoE;AACpE,MAAM,UAAU,iBAAiB;IAC/B,IAAI,MAAM,GAAkB,IAAI,CAAC;IACjC,IAAI,OAAO,GAAG,KAAK,CAAC;IACpB,OAAO;QACL,KAAK,CAAC,YAAuB,KAA6B;YACxD,IAAI,OAAO,IAAI,CAAC,MAAM,CAAC,WAAW;gBAAE,OAAO;YAC3C,OAAO,GAAG,IAAI,CAAC;YACf,KAAK,kBAAkB,CAAC,SAAS,CAAC,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE;gBAChD,MAAM,GAAG,KAAK,CAAC;gBACf,IAAI,KAAK,IAAI,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;oBACnD,GAAG,CAAC,IAAI,CACN,aAAa,EACb,qBAAqB,KAAK,0BAA0B,OAAO,GAAG,CAC/D,CAAC;gBACJ,CAAC;YACH,CAAC,CAAC,CAAC;QACL,CAAC;QACD,MAAM;YACJ,OAAO,MAAM,CAAC;QAChB,CAAC;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,iBAAiB,EAAE,CAAC"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
// Release versions are major.minor.patch triples of non-negative integers.
|
|
2
|
+
// Anything else (a leading v, prerelease or build suffixes, extra segments)
|
|
3
|
+
// is unparsable, and callers treat unparsable as "say nothing".
|
|
4
|
+
function parse(version) {
|
|
5
|
+
if (typeof version !== "string")
|
|
6
|
+
return null;
|
|
7
|
+
const parts = version.split(".");
|
|
8
|
+
if (parts.length !== 3)
|
|
9
|
+
return null;
|
|
10
|
+
const numbers = [];
|
|
11
|
+
for (const part of parts) {
|
|
12
|
+
if (!/^(0|[1-9]\d*)$/.test(part))
|
|
13
|
+
return null;
|
|
14
|
+
numbers.push(Number(part));
|
|
15
|
+
}
|
|
16
|
+
return [numbers[0], numbers[1], numbers[2]];
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Compare two `major.minor.patch` versions numerically. Returns -1, 0, or 1,
|
|
20
|
+
* or null when either input is not three dot-separated non-negative integers.
|
|
21
|
+
*/
|
|
22
|
+
export function compareVersions(a, b) {
|
|
23
|
+
const left = parse(a);
|
|
24
|
+
const right = parse(b);
|
|
25
|
+
if (!left || !right)
|
|
26
|
+
return null;
|
|
27
|
+
for (let i = 0; i < 3; i++) {
|
|
28
|
+
if (left[i] !== right[i])
|
|
29
|
+
return left[i] < right[i] ? -1 : 1;
|
|
30
|
+
}
|
|
31
|
+
return 0;
|
|
32
|
+
}
|
|
33
|
+
//# sourceMappingURL=versionCompare.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versionCompare.js","sourceRoot":"","sources":["../src/versionCompare.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAC3E,4EAA4E;AAC5E,gEAAgE;AAEhE,SAAS,KAAK,CAAC,OAAe;IAC5B,IAAI,OAAO,OAAO,KAAK,QAAQ;QAAE,OAAO,IAAI,CAAC;IAC7C,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IACjC,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,gBAAgB,CAAC,IAAI,CAAC,IAAI,CAAC;YAAE,OAAO,IAAI,CAAC;QAC9C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC;IAC7B,CAAC;IACD,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;AAC9C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,CAAS,EAAE,CAAS;IAClD,MAAM,IAAI,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACtB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;IACvB,IAAI,CAAC,IAAI,IAAI,CAAC,KAAK;QAAE,OAAO,IAAI,CAAC;IACjC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QAC3B,IAAI,IAAI,CAAC,CAAC,CAAC,KAAK,KAAK,CAAC,CAAC,CAAC;YAAE,OAAO,IAAI,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/D,CAAC;IACD,OAAO,CAAC,CAAC;AACX,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export interface VersionInfo {
|
|
2
|
+
/** The server's own release. */
|
|
3
|
+
server: string;
|
|
4
|
+
/** Connected executor, "extension/<v>" or "bootstrap/<v>", or null. */
|
|
5
|
+
executor: string | null;
|
|
6
|
+
/** Newest release on npm, or null when unknown or the check is off. */
|
|
7
|
+
latest: string | null;
|
|
8
|
+
}
|
|
9
|
+
export declare function versionNotices(info: VersionInfo): string[];
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// Plain-language update notices for projectionlab_check_connection. Each
|
|
2
|
+
// rule says nothing whenever a needed comparison is unparsable or a version
|
|
3
|
+
// is unknown; being out of date is never reported as a connection failure.
|
|
4
|
+
import { compareVersions } from "./versionCompare.js";
|
|
5
|
+
const SERVER_FIX = "To update it, fully quit and reopen the AI assistant's host so npx fetches the new release; " +
|
|
6
|
+
"if the old version is still reported afterwards, set the server args in the host " +
|
|
7
|
+
"configuration to -y projectionlab-mcp@latest.";
|
|
8
|
+
const EXTENSION_FIX = "To update it, download the zip for the browser from " +
|
|
9
|
+
"https://github.com/Backroads4Me/projectionlab-mcp/releases/latest, replace the unpacked " +
|
|
10
|
+
"extension folder with its contents, and reload the extension from the browser's extensions " +
|
|
11
|
+
"page. Settings are kept.";
|
|
12
|
+
export function versionNotices(info) {
|
|
13
|
+
const notices = [];
|
|
14
|
+
const serverOutOfDate = info.latest !== null && compareVersions(info.latest, info.server) === 1;
|
|
15
|
+
if (serverOutOfDate) {
|
|
16
|
+
notices.push(`The ProjectionLab MCP server is running version ${info.server}, but version ` +
|
|
17
|
+
`${info.latest} is available on npm. ${SERVER_FIX}`);
|
|
18
|
+
}
|
|
19
|
+
if (info.executor) {
|
|
20
|
+
const slash = info.executor.lastIndexOf("/");
|
|
21
|
+
const kind = slash === -1 ? "" : info.executor.slice(0, slash);
|
|
22
|
+
const version = slash === -1 ? "" : info.executor.slice(slash + 1);
|
|
23
|
+
const cmp = compareVersions(version, info.server);
|
|
24
|
+
if (kind === "extension" && cmp === -1) {
|
|
25
|
+
notices.push(`The ProjectionLab browser extension is version ${version}, older than the server ` +
|
|
26
|
+
`(${info.server}). ${EXTENSION_FIX}`);
|
|
27
|
+
}
|
|
28
|
+
else if (kind === "extension" && cmp === 1 && !serverOutOfDate) {
|
|
29
|
+
// Only worth saying when npm has nothing newer to offer as well.
|
|
30
|
+
notices.push(`The ProjectionLab MCP server is version ${info.server}, older than the browser ` +
|
|
31
|
+
`extension (${version}). ${SERVER_FIX}`);
|
|
32
|
+
}
|
|
33
|
+
else if (kind === "bootstrap" && cmp !== null && cmp !== 0) {
|
|
34
|
+
notices.push(`The bootstrap snippet in the ProjectionLab tab is version ${version}, pasted from a ` +
|
|
35
|
+
`different server release than the running server (${info.server}). Ask the user to ` +
|
|
36
|
+
`reload the tab, then call projectionlab_get_bootstrap and paste the fresh snippet ` +
|
|
37
|
+
`into the browser console.`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
return notices;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=versionNotices.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"versionNotices.js","sourceRoot":"","sources":["../src/versionNotices.ts"],"names":[],"mappings":"AAAA,yEAAyE;AACzE,4EAA4E;AAC5E,2EAA2E;AAE3E,OAAO,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAEtD,MAAM,UAAU,GACd,8FAA8F;IAC9F,mFAAmF;IACnF,+CAA+C,CAAC;AAClD,MAAM,aAAa,GACjB,sDAAsD;IACtD,0FAA0F;IAC1F,6FAA6F;IAC7F,0BAA0B,CAAC;AAW7B,MAAM,UAAU,cAAc,CAAC,IAAiB;IAC9C,MAAM,OAAO,GAAa,EAAE,CAAC;IAC7B,MAAM,eAAe,GACnB,IAAI,CAAC,MAAM,KAAK,IAAI,IAAI,eAAe,CAAC,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAE1E,IAAI,eAAe,EAAE,CAAC;QACpB,OAAO,CAAC,IAAI,CACV,mDAAmD,IAAI,CAAC,MAAM,gBAAgB;YAC5E,GAAG,IAAI,CAAC,MAAM,yBAAyB,UAAU,EAAE,CACtD,CAAC;IACJ,CAAC;IAED,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;QAClB,MAAM,KAAK,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;QAC7C,MAAM,IAAI,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,KAAK,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC;QACnE,MAAM,GAAG,GAAG,eAAe,CAAC,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAClD,IAAI,IAAI,KAAK,WAAW,IAAI,GAAG,KAAK,CAAC,CAAC,EAAE,CAAC;YACvC,OAAO,CAAC,IAAI,CACV,kDAAkD,OAAO,0BAA0B;gBACjF,IAAI,IAAI,CAAC,MAAM,MAAM,aAAa,EAAE,CACvC,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,KAAK,WAAW,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;YACjE,iEAAiE;YACjE,OAAO,CAAC,IAAI,CACV,2CAA2C,IAAI,CAAC,MAAM,2BAA2B;gBAC/E,cAAc,OAAO,MAAM,UAAU,EAAE,CAC1C,CAAC;QACJ,CAAC;aAAM,IAAI,IAAI,KAAK,WAAW,IAAI,GAAG,KAAK,IAAI,IAAI,GAAG,KAAK,CAAC,EAAE,CAAC;YAC7D,OAAO,CAAC,IAAI,CACV,6DAA6D,OAAO,kBAAkB;gBACpF,qDAAqD,IAAI,CAAC,MAAM,qBAAqB;gBACrF,oFAAoF;gBACpF,2BAA2B,CAC9B,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "projectionlab-mcp",
|
|
3
|
-
"version": "1.0
|
|
3
|
+
"version": "1.2.0",
|
|
4
4
|
"description": "MCP server for ProjectionLab: read and safely edit your retirement plan from any MCP-compatible AI assistant",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "MIT",
|
|
@@ -30,6 +30,9 @@
|
|
|
30
30
|
"skills",
|
|
31
31
|
"README.md",
|
|
32
32
|
"HOW-IT-WORKS.md",
|
|
33
|
+
"SETUP-FOR-AGENTS.md",
|
|
34
|
+
"MANUAL-SETUP.md",
|
|
35
|
+
"REFERENCE.md",
|
|
33
36
|
"LICENSE"
|
|
34
37
|
],
|
|
35
38
|
"publishConfig": {
|
|
@@ -48,13 +51,13 @@
|
|
|
48
51
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
49
52
|
"dotenv": "^16.4.7",
|
|
50
53
|
"ws": "^8.21.1",
|
|
51
|
-
"zod": "^
|
|
54
|
+
"zod": "^4.6.7"
|
|
52
55
|
},
|
|
53
56
|
"//overrides": "Patched transitive deps of the MCP SDK, kept within each parent's declared range (in-major) for compatibility. All except fast-uri live only in the SDK's HTTP/SSE transport, which this stdio-only server never loads; fast-uri is used by ajv for schema validation.",
|
|
54
57
|
"overrides": {
|
|
55
58
|
"fast-uri": "^3.1.6",
|
|
56
59
|
"hono": "^4.13.4",
|
|
57
|
-
"@hono/node-server": "^1.
|
|
60
|
+
"@hono/node-server": "^2.1.3",
|
|
58
61
|
"path-to-regexp": "^8.4.2",
|
|
59
62
|
"body-parser": "^2.3.0",
|
|
60
63
|
"qs": "^6.15.3",
|