projectionlab-mcp 1.1.0 → 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/README.md +1 -0
- package/REFERENCE.md +11 -2
- package/dist/bootstrap.js +5 -3
- package/dist/bootstrap.js.map +1 -1
- package/dist/bridge.d.ts +2 -0
- package/dist/config.d.ts +4 -0
- package/dist/config.js +41 -6
- package/dist/config.js.map +1 -1
- package/dist/errors.d.ts +6 -0
- package/dist/errors.js +10 -0
- package/dist/errors.js.map +1 -1
- package/dist/extensionBridge.d.ts +14 -1
- package/dist/extensionBridge.js +74 -20
- package/dist/extensionBridge.js.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/instructions.d.ts +1 -1
- package/dist/instructions.js +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.js +5 -0
- package/dist/pathPatch.js.map +1 -1
- package/dist/plans.d.ts +45 -10
- package/dist/plans.js +139 -42
- package/dist/plans.js.map +1 -1
- package/dist/redact.d.ts +24 -0
- package/dist/redact.js +91 -0
- package/dist/redact.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.js +18 -11
- package/dist/snapshot.js.map +1 -1
- package/dist/tools/clonePlan.js +3 -3
- package/dist/tools/clonePlan.js.map +1 -1
- package/dist/tools/connection.js +21 -3
- package/dist/tools/connection.js.map +1 -1
- package/dist/tools/diff.js +7 -7
- package/dist/tools/diff.js.map +1 -1
- package/dist/tools/getPlan.js +4 -4
- package/dist/tools/getPlan.js.map +1 -1
- package/dist/tools/getPlanSection.js +5 -5
- package/dist/tools/getPlanSection.js.map +1 -1
- package/dist/tools/getPlanSettings.js +3 -3
- 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/snapshots.js +17 -1
- package/dist/tools/snapshots.js.map +1 -1
- package/dist/tools/updatePlanEvent.js +63 -37
- package/dist/tools/updatePlanEvent.js.map +1 -1
- package/dist/tools/updatePlanSection.js +11 -6
- package/dist/tools/updatePlanSection.js.map +1 -1
- package/dist/tools/updatePlanSettings.js +3 -3
- package/dist/tools/updatePlanSettings.js.map +1 -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 +1 -1
- package/skills/projectionlab/SKILL.md +55 -15
package/dist/instructions.js
CHANGED
|
@@ -15,7 +15,7 @@ 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.
|
|
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
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.
|
package/dist/largeOutput.js
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { readdir, stat, unlink } from "node:fs/promises";
|
|
1
2
|
import { join } from "node:path";
|
|
2
3
|
import { homedir } from "node:os";
|
|
3
4
|
import { toJson } from "./json.js";
|
|
@@ -5,6 +6,28 @@ import { secureMkdir, secureWriteFile } from "./secureFs.js";
|
|
|
5
6
|
import { log } from "./logger.js";
|
|
6
7
|
export const FILE_THRESHOLD = 100_000;
|
|
7
8
|
export const EXPORT_DIR = join(homedir(), ".projectionlab-mcp", "exports");
|
|
9
|
+
const RETENTION_DAYS = 30;
|
|
10
|
+
/** Delete export files whose last modification is older than the retention
|
|
11
|
+
* window. Only .json files this module writes are touched. */
|
|
12
|
+
async function prune() {
|
|
13
|
+
const cutoff = Date.now() - RETENTION_DAYS * 24 * 60 * 60 * 1000;
|
|
14
|
+
const files = await readdir(EXPORT_DIR);
|
|
15
|
+
for (const file of files) {
|
|
16
|
+
if (!file.endsWith(".json"))
|
|
17
|
+
continue;
|
|
18
|
+
const filePath = join(EXPORT_DIR, file);
|
|
19
|
+
try {
|
|
20
|
+
const info = await stat(filePath);
|
|
21
|
+
if (info.mtimeMs < cutoff) {
|
|
22
|
+
await unlink(filePath);
|
|
23
|
+
log.info("largeOutput", `Pruned expired export ${file}`);
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
catch {
|
|
27
|
+
// Skip unreadable files.
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
8
31
|
/**
|
|
9
32
|
* Returns the text as-is when small enough; otherwise writes it to a file
|
|
10
33
|
* and returns a pointer message so MCP clients don't truncate mid-JSON.
|
|
@@ -17,6 +40,8 @@ export async function textOrFile(text, label, summary = {}) {
|
|
|
17
40
|
const filePath = join(EXPORT_DIR, `${label}-${timestamp}.json`);
|
|
18
41
|
await secureWriteFile(filePath, text);
|
|
19
42
|
log.info("largeOutput", `Wrote ${text.length} chars to ${filePath}`);
|
|
43
|
+
// Prune expired exports in the background, the way snapshots do.
|
|
44
|
+
prune().catch((err) => log.warn("largeOutput", `Prune failed: ${err}`));
|
|
20
45
|
return toJson({
|
|
21
46
|
truncated: true,
|
|
22
47
|
reason: `Result is ${text.length} chars, larger than the ${FILE_THRESHOLD} char inline limit`,
|
package/dist/largeOutput.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"largeOutput.js","sourceRoot":"","sources":["../src/largeOutput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"largeOutput.js","sourceRoot":"","sources":["../src/largeOutput.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,MAAM,EAAE,MAAM,WAAW,CAAC;AACnC,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,eAAe,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,aAAa,CAAC;AAElC,MAAM,CAAC,MAAM,cAAc,GAAG,OAAO,CAAC;AACtC,MAAM,CAAC,MAAM,UAAU,GAAG,IAAI,CAAC,OAAO,EAAE,EAAE,oBAAoB,EAAE,SAAS,CAAC,CAAC;AAC3E,MAAM,cAAc,GAAG,EAAE,CAAC;AAE1B;8DAC8D;AAC9D,KAAK,UAAU,KAAK;IAClB,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,cAAc,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC;IACjE,MAAM,KAAK,GAAG,MAAM,OAAO,CAAC,UAAU,CAAC,CAAC;IAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;YAAE,SAAS;QACtC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;QACxC,IAAI,CAAC;YACH,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,CAAC;YAClC,IAAI,IAAI,CAAC,OAAO,GAAG,MAAM,EAAE,CAAC;gBAC1B,MAAM,MAAM,CAAC,QAAQ,CAAC,CAAC;gBACvB,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,yBAAyB,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,yBAAyB;QAC3B,CAAC;IACH,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAY,EACZ,KAAa,EACb,UAAmC,EAAE;IAErC,IAAI,IAAI,CAAC,MAAM,IAAI,cAAc;QAAE,OAAO,IAAI,CAAC;IAE/C,MAAM,WAAW,CAAC,UAAU,CAAC,CAAC;IAC9B,MAAM,SAAS,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,OAAO,CAAC,OAAO,EAAE,GAAG,CAAC,CAAC;IACjE,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,GAAG,KAAK,IAAI,SAAS,OAAO,CAAC,CAAC;IAChE,MAAM,eAAe,CAAC,QAAQ,EAAE,IAAI,CAAC,CAAC;IACtC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,SAAS,IAAI,CAAC,MAAM,aAAa,QAAQ,EAAE,CAAC,CAAC;IAErE,iEAAiE;IACjE,KAAK,EAAE,CAAC,KAAK,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,EAAE,iBAAiB,GAAG,EAAE,CAAC,CAAC,CAAC;IAExE,OAAO,MAAM,CACX;QACE,SAAS,EAAE,IAAI;QACf,MAAM,EAAE,aAAa,IAAI,CAAC,MAAM,2BAA2B,cAAc,oBAAoB;QAC7F,QAAQ;QACR,IAAI,EAAE,8DAA8D;QACpE,GAAG,OAAO;KACX,CACF,CAAC;AACJ,CAAC"}
|
package/dist/logger.js
CHANGED
|
@@ -1,25 +1,32 @@
|
|
|
1
1
|
import { config } from "./config.js";
|
|
2
|
+
import { redactSecrets } from "./redact.js";
|
|
2
3
|
const LEVELS = { error: 0, warn: 1, info: 2, debug: 3 };
|
|
3
4
|
const threshold = LEVELS[config.logLevel] ?? LEVELS.info;
|
|
4
5
|
function timestamp() {
|
|
5
6
|
return new Date().toISOString();
|
|
6
7
|
}
|
|
8
|
+
// Messages often carry an error from the browser executor, which can echo
|
|
9
|
+
// request data. Every line is scrubbed here so no call site can log the
|
|
10
|
+
// Plugin API key.
|
|
11
|
+
function write(label, op, msg) {
|
|
12
|
+
console.error(`[${timestamp()}] ${label} [${op}] ${redactSecrets(msg)}`);
|
|
13
|
+
}
|
|
7
14
|
export const log = {
|
|
8
15
|
error(op, msg) {
|
|
9
16
|
if (threshold >= LEVELS.error)
|
|
10
|
-
|
|
17
|
+
write("ERROR", op, msg);
|
|
11
18
|
},
|
|
12
19
|
warn(op, msg) {
|
|
13
20
|
if (threshold >= LEVELS.warn)
|
|
14
|
-
|
|
21
|
+
write("WARN ", op, msg);
|
|
15
22
|
},
|
|
16
23
|
info(op, msg) {
|
|
17
24
|
if (threshold >= LEVELS.info)
|
|
18
|
-
|
|
25
|
+
write("INFO ", op, msg);
|
|
19
26
|
},
|
|
20
27
|
debug(op, msg) {
|
|
21
28
|
if (threshold >= LEVELS.debug)
|
|
22
|
-
|
|
29
|
+
write("DEBUG", op, msg);
|
|
23
30
|
},
|
|
24
31
|
};
|
|
25
32
|
//# sourceMappingURL=logger.js.map
|
package/dist/logger.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../src/logger.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,MAAM,MAAM,GAAG,EAAE,KAAK,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAW,CAAC;AAEjE,MAAM,SAAS,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,MAAM,CAAC,IAAI,CAAC;AAEzD,SAAS,SAAS;IAChB,OAAO,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,0EAA0E;AAC1E,wEAAwE;AACxE,kBAAkB;AAClB,SAAS,KAAK,CAAC,KAAa,EAAE,EAAU,EAAE,GAAW;IACnD,OAAO,CAAC,KAAK,CAAC,IAAI,SAAS,EAAE,KAAK,KAAK,KAAK,EAAE,KAAK,aAAa,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAC3E,CAAC;AAED,MAAM,CAAC,MAAM,GAAG,GAAG;IACjB,KAAK,CAAC,EAAU,EAAE,GAAW;QAC3B,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK;YAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;IACD,IAAI,CAAC,EAAU,EAAE,GAAW;QAC1B,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI;YAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,IAAI,CAAC,EAAU,EAAE,GAAW;QAC1B,IAAI,SAAS,IAAI,MAAM,CAAC,IAAI;YAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACxD,CAAC;IACD,KAAK,CAAC,EAAU,EAAE,GAAW;QAC3B,IAAI,SAAS,IAAI,MAAM,CAAC,KAAK;YAAE,KAAK,CAAC,OAAO,EAAE,EAAE,EAAE,GAAG,CAAC,CAAC;IACzD,CAAC;CACF,CAAC"}
|
package/dist/pathPatch.js
CHANGED
|
@@ -98,6 +98,11 @@ function assertCompatibleType(path, current, incoming, context) {
|
|
|
98
98
|
}
|
|
99
99
|
function replaceAtPath(root, parts, incoming, fullPath, context) {
|
|
100
100
|
const [head, ...tail] = parts;
|
|
101
|
+
// "length" is an own property of arrays, so hasOwnProperty alone would let
|
|
102
|
+
// a leaf patch resize the array through copy[Number("length")].
|
|
103
|
+
if (Array.isArray(root) && !/^(0|[1-9]\d*)$/.test(head)) {
|
|
104
|
+
throw new ProjectionLabError("INVALID_INPUT", `Array segment "${head}" in ${context.label} path "${fullPath}" is not an index`, `Use a numeric array index returned by ${context.discoveryTool}`);
|
|
105
|
+
}
|
|
101
106
|
if (!Object.prototype.hasOwnProperty.call(root, head)) {
|
|
102
107
|
throw new ProjectionLabError("INVALID_INPUT", `Unknown ${context.label} path "${fullPath}"`, `Only existing paths returned by ${context.discoveryTool} can be changed`);
|
|
103
108
|
}
|
package/dist/pathPatch.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"pathPatch.js","sourceRoot":"","sources":["../src/pathPatch.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"pathPatch.js","sourceRoot":"","sources":["../src/pathPatch.ts"],"names":[],"mappings":"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"}
|
package/dist/plans.d.ts
CHANGED
|
@@ -2,13 +2,34 @@ import { ProjectionLabError } from "./errors.js";
|
|
|
2
2
|
export type PlanObj = Record<string, unknown>;
|
|
3
3
|
export declare const PLAN_SECTIONS: readonly ["income", "expenses", "accounts", "assets", "milestones", "variables", "withdrawalStrategy", "montecarlo", "priorities"];
|
|
4
4
|
export type PlanSection = (typeof PLAN_SECTIONS)[number];
|
|
5
|
+
/** Sections whose members are events addressed by id or name; the
|
|
6
|
+
* settings-like sections use projectionlab_update_plan_settings instead. */
|
|
7
|
+
export declare const EVENT_SECTIONS: readonly ["income", "expenses", "accounts", "assets", "milestones", "priorities"];
|
|
8
|
+
/** The container each section holds, known from its name alone and not from
|
|
9
|
+
* what a plan happens to store: milestones is a direct array, the event
|
|
10
|
+
* sections are objects with an events array, and the settings-like sections
|
|
11
|
+
* are plain objects. Per DATA-MODEL.md sections 5.1 to 5.6 and the
|
|
12
|
+
* `variables`, `montecarlo` and `withdrawalStrategy` field trees. */
|
|
13
|
+
export declare const SECTION_CONTAINERS: {
|
|
14
|
+
readonly income: "events";
|
|
15
|
+
readonly expenses: "events";
|
|
16
|
+
readonly accounts: "events";
|
|
17
|
+
readonly assets: "events";
|
|
18
|
+
readonly milestones: "array";
|
|
19
|
+
readonly variables: "object";
|
|
20
|
+
readonly withdrawalStrategy: "object";
|
|
21
|
+
readonly montecarlo: "object";
|
|
22
|
+
readonly priorities: "events";
|
|
23
|
+
};
|
|
5
24
|
/**
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
25
|
+
* Index of the plan the identifier names, -1 when nothing matches. Throws
|
|
26
|
+
* INVALID_INPUT when several plans match the same way, so a read and the
|
|
27
|
+
* following write can never target different plans.
|
|
9
28
|
*/
|
|
10
|
-
export declare function
|
|
11
|
-
|
|
29
|
+
export declare function resolvePlanIndex(plans: unknown[], identifier: string): number;
|
|
30
|
+
/** The plan the identifier names, or null when nothing matches. Refuses
|
|
31
|
+
* ambiguous identifiers the way resolvePlanIndex does. */
|
|
32
|
+
export declare function resolvePlan(plans: unknown[], identifier: string): PlanObj | null;
|
|
12
33
|
export declare function planNotFoundError(plans: unknown[], identifier: string): ProjectionLabError;
|
|
13
34
|
export declare function requirePlans(data: {
|
|
14
35
|
plans?: unknown[];
|
|
@@ -24,8 +45,12 @@ export declare function planEventCounts(plan: unknown): {
|
|
|
24
45
|
expenseCount: number;
|
|
25
46
|
milestoneCount: number;
|
|
26
47
|
};
|
|
27
|
-
/**
|
|
28
|
-
|
|
48
|
+
/**
|
|
49
|
+
* Index of the event the identifier names: exact id, then exact name
|
|
50
|
+
* (case-insensitive), then name substring. -1 when nothing matches. Throws
|
|
51
|
+
* INVALID_INPUT when several events match the same way.
|
|
52
|
+
*/
|
|
53
|
+
export declare function resolveEventIndex(events: unknown[], identifier: string): number;
|
|
29
54
|
export declare function eventLabel(event: unknown): string;
|
|
30
55
|
/**
|
|
31
56
|
* Key events for diffing by label plus occurrence number, so events sharing a
|
|
@@ -37,11 +62,21 @@ export declare function keyEvents(events: unknown[]): Map<string, {
|
|
|
37
62
|
name: string;
|
|
38
63
|
event: unknown;
|
|
39
64
|
}>;
|
|
65
|
+
/** The container kind of a section value, or null when it is not a usable
|
|
66
|
+
* container (null, undefined, a primitive, or a non-plain object). */
|
|
67
|
+
export declare function sectionContainer(value: unknown): "array" | "events" | "object" | null;
|
|
40
68
|
/**
|
|
41
|
-
*
|
|
42
|
-
*
|
|
43
|
-
*
|
|
69
|
+
* Refuse sectionData whose container shape does not match the section named.
|
|
70
|
+
* The expected container comes from the section's name, not from what the
|
|
71
|
+
* plan currently stores, so an event section held as {} still accepts the
|
|
72
|
+
* correct { events: [...] } replacement. One exception: when the stored
|
|
73
|
+
* section is itself a usable container that contradicts the table, a
|
|
74
|
+
* replacement in the stored shape is accepted too, so the tool never refuses
|
|
75
|
+
* to write back what it just read. An omitted value would delete the
|
|
76
|
+
* section, and a container of the wrong kind would store data ProjectionLab
|
|
77
|
+
* cannot read.
|
|
44
78
|
*/
|
|
79
|
+
export declare function assertSectionShape(section: string, planName: string, current: unknown, incoming: unknown): void;
|
|
45
80
|
/**
|
|
46
81
|
* True when every value in `expected` is present and equal in `actual`.
|
|
47
82
|
* Objects may carry extra keys; arrays must match in length and order.
|
package/dist/plans.js
CHANGED
|
@@ -10,34 +10,93 @@ export const PLAN_SECTIONS = [
|
|
|
10
10
|
"montecarlo",
|
|
11
11
|
"priorities",
|
|
12
12
|
];
|
|
13
|
+
/** Sections whose members are events addressed by id or name; the
|
|
14
|
+
* settings-like sections use projectionlab_update_plan_settings instead. */
|
|
15
|
+
export const EVENT_SECTIONS = [
|
|
16
|
+
"income",
|
|
17
|
+
"expenses",
|
|
18
|
+
"accounts",
|
|
19
|
+
"assets",
|
|
20
|
+
"milestones",
|
|
21
|
+
"priorities",
|
|
22
|
+
];
|
|
23
|
+
/** The container each section holds, known from its name alone and not from
|
|
24
|
+
* what a plan happens to store: milestones is a direct array, the event
|
|
25
|
+
* sections are objects with an events array, and the settings-like sections
|
|
26
|
+
* are plain objects. Per DATA-MODEL.md sections 5.1 to 5.6 and the
|
|
27
|
+
* `variables`, `montecarlo` and `withdrawalStrategy` field trees. */
|
|
28
|
+
export const SECTION_CONTAINERS = {
|
|
29
|
+
income: "events",
|
|
30
|
+
expenses: "events",
|
|
31
|
+
accounts: "events",
|
|
32
|
+
assets: "events",
|
|
33
|
+
milestones: "array",
|
|
34
|
+
variables: "object",
|
|
35
|
+
withdrawalStrategy: "object",
|
|
36
|
+
montecarlo: "object",
|
|
37
|
+
priorities: "events",
|
|
38
|
+
};
|
|
13
39
|
/**
|
|
14
|
-
*
|
|
15
|
-
* (case-insensitive), then
|
|
16
|
-
*
|
|
40
|
+
* Resolve one identifier against a list of { id, name } items. Match
|
|
41
|
+
* priority: exact ID, then exact name (case-insensitive), then name
|
|
42
|
+
* substring. Anything beyond a single match at the level reached is
|
|
43
|
+
* ambiguous: picking the first would silently target whichever item happens
|
|
44
|
+
* to come first, so the caller must refuse and ask for an exact name or ID.
|
|
17
45
|
*/
|
|
18
|
-
|
|
46
|
+
function matchOne(items, identifier) {
|
|
19
47
|
if (!identifier.trim())
|
|
20
|
-
return
|
|
48
|
+
return { kind: "none" };
|
|
21
49
|
const lower = identifier.toLowerCase();
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
for (let i = 0; i <
|
|
25
|
-
const
|
|
26
|
-
if (!
|
|
50
|
+
const exact = [];
|
|
51
|
+
const partial = [];
|
|
52
|
+
for (let i = 0; i < items.length; i++) {
|
|
53
|
+
const item = items[i];
|
|
54
|
+
if (!item || typeof item !== "object")
|
|
27
55
|
continue;
|
|
28
|
-
const obj =
|
|
56
|
+
const obj = item;
|
|
29
57
|
if (String(obj.id ?? "") === identifier)
|
|
30
|
-
return i;
|
|
58
|
+
return { kind: "found", index: i };
|
|
31
59
|
const name = String(obj.name ?? "").toLowerCase();
|
|
32
|
-
if (name === lower
|
|
33
|
-
|
|
34
|
-
else if (name.includes(lower)
|
|
35
|
-
partial
|
|
60
|
+
if (name === lower)
|
|
61
|
+
exact.push(i);
|
|
62
|
+
else if (name.includes(lower))
|
|
63
|
+
partial.push(i);
|
|
64
|
+
}
|
|
65
|
+
if (exact.length === 1)
|
|
66
|
+
return { kind: "found", index: exact[0] };
|
|
67
|
+
if (exact.length > 1)
|
|
68
|
+
return { kind: "ambiguous", indexes: exact };
|
|
69
|
+
if (partial.length === 1)
|
|
70
|
+
return { kind: "found", index: partial[0] };
|
|
71
|
+
if (partial.length > 1)
|
|
72
|
+
return { kind: "ambiguous", indexes: partial };
|
|
73
|
+
return { kind: "none" };
|
|
74
|
+
}
|
|
75
|
+
function ambiguousMatchError(kind, identifier, items, indexes) {
|
|
76
|
+
const candidates = indexes
|
|
77
|
+
.map((i) => {
|
|
78
|
+
const obj = items[i];
|
|
79
|
+
return ` - "${obj.name ?? "(unnamed)"}" (ID: ${obj.id ?? "?"})`;
|
|
80
|
+
})
|
|
81
|
+
.join("\n");
|
|
82
|
+
return new ProjectionLabError("INVALID_INPUT", `More than one ${kind} matches "${identifier}"`, `Candidates:\n${candidates}\nSupply an exact name or one of the IDs`);
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Index of the plan the identifier names, -1 when nothing matches. Throws
|
|
86
|
+
* INVALID_INPUT when several plans match the same way, so a read and the
|
|
87
|
+
* following write can never target different plans.
|
|
88
|
+
*/
|
|
89
|
+
export function resolvePlanIndex(plans, identifier) {
|
|
90
|
+
const outcome = matchOne(plans, identifier);
|
|
91
|
+
if (outcome.kind === "ambiguous") {
|
|
92
|
+
throw ambiguousMatchError("plan", identifier, plans, outcome.indexes);
|
|
36
93
|
}
|
|
37
|
-
return
|
|
94
|
+
return outcome.kind === "found" ? outcome.index : -1;
|
|
38
95
|
}
|
|
39
|
-
|
|
40
|
-
|
|
96
|
+
/** The plan the identifier names, or null when nothing matches. Refuses
|
|
97
|
+
* ambiguous identifiers the way resolvePlanIndex does. */
|
|
98
|
+
export function resolvePlan(plans, identifier) {
|
|
99
|
+
const i = resolvePlanIndex(plans, identifier);
|
|
41
100
|
return i === -1 ? null : plans[i];
|
|
42
101
|
}
|
|
43
102
|
export function planNotFoundError(plans, identifier) {
|
|
@@ -87,27 +146,17 @@ function eventId(event) {
|
|
|
87
146
|
}
|
|
88
147
|
return undefined;
|
|
89
148
|
}
|
|
90
|
-
/**
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
if (!e || typeof e !== "object")
|
|
100
|
-
continue;
|
|
101
|
-
const obj = e;
|
|
102
|
-
if (String(obj.id ?? "") === identifier)
|
|
103
|
-
return i;
|
|
104
|
-
const name = String(obj.name ?? "").toLowerCase();
|
|
105
|
-
if (name === lower && exactName === -1)
|
|
106
|
-
exactName = i;
|
|
107
|
-
else if (name.includes(lower) && partial === -1)
|
|
108
|
-
partial = i;
|
|
149
|
+
/**
|
|
150
|
+
* Index of the event the identifier names: exact id, then exact name
|
|
151
|
+
* (case-insensitive), then name substring. -1 when nothing matches. Throws
|
|
152
|
+
* INVALID_INPUT when several events match the same way.
|
|
153
|
+
*/
|
|
154
|
+
export function resolveEventIndex(events, identifier) {
|
|
155
|
+
const outcome = matchOne(events, identifier);
|
|
156
|
+
if (outcome.kind === "ambiguous") {
|
|
157
|
+
throw ambiguousMatchError("event", identifier, events, outcome.indexes);
|
|
109
158
|
}
|
|
110
|
-
return
|
|
159
|
+
return outcome.kind === "found" ? outcome.index : -1;
|
|
111
160
|
}
|
|
112
161
|
export function eventLabel(event) {
|
|
113
162
|
if (event && typeof event === "object") {
|
|
@@ -147,11 +196,59 @@ function sectionIsEventBased(section) {
|
|
|
147
196
|
typeof section === "object" &&
|
|
148
197
|
Array.isArray(section.events));
|
|
149
198
|
}
|
|
199
|
+
function isPlainSectionObject(value) {
|
|
200
|
+
if (!value || typeof value !== "object" || Array.isArray(value))
|
|
201
|
+
return false;
|
|
202
|
+
const prototype = Object.getPrototypeOf(value);
|
|
203
|
+
return prototype === Object.prototype || prototype === null;
|
|
204
|
+
}
|
|
205
|
+
/** The container kind of a section value, or null when it is not a usable
|
|
206
|
+
* container (null, undefined, a primitive, or a non-plain object). */
|
|
207
|
+
export function sectionContainer(value) {
|
|
208
|
+
if (Array.isArray(value))
|
|
209
|
+
return "array";
|
|
210
|
+
if (isPlainSectionObject(value)) {
|
|
211
|
+
return Array.isArray(value.events) ? "events" : "object";
|
|
212
|
+
}
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
const CONTAINER_WORDS = {
|
|
216
|
+
array: "an array of events",
|
|
217
|
+
events: "an object with an events array",
|
|
218
|
+
object: "an object",
|
|
219
|
+
};
|
|
150
220
|
/**
|
|
151
|
-
*
|
|
152
|
-
*
|
|
153
|
-
*
|
|
221
|
+
* Refuse sectionData whose container shape does not match the section named.
|
|
222
|
+
* The expected container comes from the section's name, not from what the
|
|
223
|
+
* plan currently stores, so an event section held as {} still accepts the
|
|
224
|
+
* correct { events: [...] } replacement. One exception: when the stored
|
|
225
|
+
* section is itself a usable container that contradicts the table, a
|
|
226
|
+
* replacement in the stored shape is accepted too, so the tool never refuses
|
|
227
|
+
* to write back what it just read. An omitted value would delete the
|
|
228
|
+
* section, and a container of the wrong kind would store data ProjectionLab
|
|
229
|
+
* cannot read.
|
|
154
230
|
*/
|
|
231
|
+
export function assertSectionShape(section, planName, current, incoming) {
|
|
232
|
+
const incomingShape = sectionContainer(incoming);
|
|
233
|
+
if (incomingShape === null) {
|
|
234
|
+
const got = incoming === undefined
|
|
235
|
+
? "missing"
|
|
236
|
+
: incoming === null
|
|
237
|
+
? "null"
|
|
238
|
+
: Array.isArray(incoming)
|
|
239
|
+
? "an array"
|
|
240
|
+
: typeof incoming;
|
|
241
|
+
throw new ProjectionLabError("INVALID_INPUT", `sectionData for "${section}" of plan "${planName}" is ${got}; a section is ${CONTAINER_WORDS.array} or ${CONTAINER_WORDS.object}`, "Send the complete section in the same shape projectionlab_get_plan_section returns: an array for milestones, an object with an events array for event sections, an object for settings-like sections");
|
|
242
|
+
}
|
|
243
|
+
const expected = SECTION_CONTAINERS[section];
|
|
244
|
+
const accepted = new Set([expected]);
|
|
245
|
+
const currentShape = sectionContainer(current);
|
|
246
|
+
if (currentShape !== null && currentShape !== expected)
|
|
247
|
+
accepted.add(currentShape);
|
|
248
|
+
if (!accepted.has(incomingShape)) {
|
|
249
|
+
throw new ProjectionLabError("INVALID_INPUT", `sectionData for "${section}" of plan "${planName}" must be ${CONTAINER_WORDS[expected]}, which is how this section is stored; received ${CONTAINER_WORDS[incomingShape]}`, `Read the section with projectionlab_get_plan_section and send the replacement in the container shape the section name calls for`);
|
|
250
|
+
}
|
|
251
|
+
}
|
|
155
252
|
/**
|
|
156
253
|
* True when every value in `expected` is present and equal in `actual`.
|
|
157
254
|
* Objects may carry extra keys; arrays must match in length and order.
|
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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"}
|
package/dist/redact.d.ts
CHANGED
|
@@ -1,6 +1,30 @@
|
|
|
1
1
|
/** The stand-in every redacted value carries; shared with the diff engine. */
|
|
2
2
|
export declare const REDACTED = "[REDACTED]";
|
|
3
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;
|
|
4
28
|
export interface RedactOptions {
|
|
5
29
|
/**
|
|
6
30
|
* Also redact any field whose *name* looks like a secret (apiKey, token,
|