figjam-context-mcp 0.4.0 → 0.5.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/.env.example +9 -0
- package/CHANGELOG.md +29 -0
- package/README.md +10 -4
- package/dist/lib/figmaApi.d.ts +5 -1
- package/dist/lib/figmaApi.js +10 -3
- package/dist/lib/figmaApi.js.map +1 -1
- package/dist/lib/llmClient.d.ts +4 -0
- package/dist/lib/llmClient.js +26 -8
- package/dist/lib/llmClient.js.map +1 -1
- package/dist/lib/llmTimeouts.d.ts +8 -0
- package/dist/lib/llmTimeouts.js +12 -0
- package/dist/lib/llmTimeouts.js.map +1 -1
- package/dist/lib/nodeTree.js +6 -3
- package/dist/lib/nodeTree.js.map +1 -1
- package/dist/lib/persistentCache.d.ts +2 -2
- package/dist/lib/persistentCache.js +2 -2
- package/dist/lib/redact.d.ts +14 -0
- package/dist/lib/redact.js +62 -0
- package/dist/lib/redact.js.map +1 -0
- package/dist/lib/visionInterpreter.js +6 -2
- package/dist/lib/visionInterpreter.js.map +1 -1
- package/dist/server.js +2 -2
- package/dist/server.js.map +1 -1
- package/dist/tools/answerFromBoard.js +9 -2
- package/dist/tools/answerFromBoard.js.map +1 -1
- package/dist/tools/diagnoseLlmConfig.js +15 -4
- package/dist/tools/diagnoseLlmConfig.js.map +1 -1
- package/dist/tools/diffBoard.js +3 -1
- package/dist/tools/diffBoard.js.map +1 -1
- package/dist/tools/getBoardContext.js +5 -2
- package/dist/tools/getBoardContext.js.map +1 -1
- package/dist/tools/ingestBoard.js +76 -3
- package/dist/tools/ingestBoard.js.map +1 -1
- package/package.json +4 -4
- package/server.json +2 -2
package/.env.example
CHANGED
|
@@ -37,7 +37,11 @@ LLM_MODEL_PRESET=student-free
|
|
|
37
37
|
# Increase these only if your MCP client/request timeout is also higher.
|
|
38
38
|
# FIGMA_REQUEST_TIMEOUT_MS=15000
|
|
39
39
|
# FIGMA_FILE_REQUEST_TIMEOUT_MS=60000
|
|
40
|
+
# Global LLM request timeout; when set, it applies to roles without their own value.
|
|
40
41
|
# LLM_REQUEST_TIMEOUT_MS=20000
|
|
42
|
+
# Answers and text diagnostics: explicit role value > explicit global value > 40000 ms.
|
|
43
|
+
# answer_from_board stops after 50000 ms across all model candidates (or this value, if larger).
|
|
44
|
+
# LLM_ANSWER_REQUEST_TIMEOUT_MS=40000
|
|
41
45
|
# Vision: explicit role value > explicit global value > 60000 ms.
|
|
42
46
|
# LLM_VISION_REQUEST_TIMEOUT_MS=60000
|
|
43
47
|
# LLM_SDK_MAX_RETRIES=0
|
|
@@ -52,6 +56,11 @@ LLM_MODEL_PRESET=student-free
|
|
|
52
56
|
# INGEST_BOARD_VISION_CONCURRENCY=3
|
|
53
57
|
# FIGMA_SCREENSHOT_DOWNLOAD_CONCURRENCY=3
|
|
54
58
|
|
|
59
|
+
# --- Privacy ---------------------------------------------------------------
|
|
60
|
+
# Explicit credentials on the board ("Passwort: …", "API key: …", known key
|
|
61
|
+
# formats) are replaced with [redacted] before cache, tool output and providers.
|
|
62
|
+
# FIGJAM_MCP_REDACT_CREDENTIALS=true
|
|
63
|
+
|
|
55
64
|
# --- Cache controls ------------------------------------------------------
|
|
56
65
|
# Maximum full boards retained in process memory. Older entries remain on
|
|
57
66
|
# disk and are restored on demand.
|
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.5.0 — 2026-10-19
|
|
4
|
+
|
|
5
|
+
- Explicit credentials are redacted as `[redacted]` during extraction, before they
|
|
6
|
+
reach the cache, tool output or an LLM provider: labelled values such as
|
|
7
|
+
`Passwort: …`, `PIN: …`, `API key: …` or `Client Secret: …` up to the end of the
|
|
8
|
+
line, in node names, text and table cells, and known key formats (GitHub,
|
|
9
|
+
OpenAI/OpenRouter, Figma, AWS, Slack, private key blocks). Snapshots cached by
|
|
10
|
+
earlier versions are redacted when `get_board_context`, `answer_from_board` and
|
|
11
|
+
`diff_board` read them. Turn it off with `FIGJAM_MCP_REDACT_CREDENTIALS=false`.
|
|
12
|
+
- **Re-ingest each board once** so its cached snapshot is stored redacted; the
|
|
13
|
+
next `ingest_board` re-extracts even when Figma reports no change.
|
|
14
|
+
- The release workflow waits until npm serves the new version before publishing
|
|
15
|
+
to the MCP Registry, retries that step, and creates the GitHub release independently.
|
|
16
|
+
|
|
17
|
+
## 0.4.1 — 2026-10-19
|
|
18
|
+
|
|
19
|
+
- `answer_from_board` waits up to 40 s per model request (`LLM_ANSWER_REQUEST_TIMEOUT_MS`)
|
|
20
|
+
instead of 20 s and stops after 50 s across all model candidates, so large prompts
|
|
21
|
+
on free reasoning models finish inside a 60-second client timeout. The text checks of
|
|
22
|
+
`diagnose_llm_config` use the same timeout, and timeout errors name the setting to change.
|
|
23
|
+
- Tool descriptions point overviews and whole-board summaries to `get_board_context`;
|
|
24
|
+
`answer_from_board` is for one specific question.
|
|
25
|
+
- `ingest_board` renders screenshots of several clusters per Figma request (up to
|
|
26
|
+
18 nodes) instead of one request per cluster, saving Tier 1 Figma requests.
|
|
27
|
+
- Vision summaries keep table values and statistical notation literally and name
|
|
28
|
+
a statistic such as a confidence interval only when a legend identifies it.
|
|
29
|
+
- Releases are published from CI with npm provenance.
|
|
30
|
+
- Dependency updates: `openai` 7.34, `dotenv` 18.0.8.
|
|
31
|
+
|
|
3
32
|
## 0.4.0 — 2026-10-18
|
|
4
33
|
|
|
5
34
|
- New `student-free` defaults: text uses `nvidia/nemotron-3-super-120b-a12b:free`,
|
package/README.md
CHANGED
|
@@ -18,8 +18,8 @@ every answer to the nodes it came from.
|
|
|
18
18
|
| Tool | What it does | LLM call |
|
|
19
19
|
| --- | --- | --- |
|
|
20
20
|
| `ingest_board` | Reads a board, clusters it and saves a local snapshot. Re-ingests reuse unchanged clusters. | In `balanced` (default) and `max_quality` mode |
|
|
21
|
-
| `get_board_context` | Returns
|
|
22
|
-
| `answer_from_board` | Answers
|
|
21
|
+
| `get_board_context` | Returns paginated, source-linked context, optionally for a topic or exact node IDs. Use it for overviews, summaries and documentation. | No |
|
|
22
|
+
| `answer_from_board` | Answers one specific question (a number, status or decision) from the most relevant excerpts, with node-level citations or an insufficient-evidence result. Not meant for whole-board summaries. | Yes |
|
|
23
23
|
| `diff_board` | Compares two snapshots: new, removed and changed clusters, nodes, table cells and arrows. | No |
|
|
24
24
|
| `diagnose_llm_config` | Tests the configured models with small text and image JSON checks. | Yes |
|
|
25
25
|
|
|
@@ -96,8 +96,9 @@ and time out.
|
|
|
96
96
|
- Figma limits file downloads and image renders by seat and plan: Dev and Full
|
|
97
97
|
seats on paid plans get 10–20 requests per minute, View and Collab seats and
|
|
98
98
|
files in Starter plans at most 20 per month
|
|
99
|
-
([rate limits](https://developers.figma.com/docs/rest-api/rate-limits/))
|
|
100
|
-
|
|
99
|
+
([rate limits](https://developers.figma.com/docs/rest-api/rate-limits/)).
|
|
100
|
+
One render request covers up to 18 screenshots (about three clusters), so a
|
|
101
|
+
default ingest usually needs at most four; `max_speed` needs none.
|
|
101
102
|
- For a team, configure your own model: `LLM_BASE_URL` takes any
|
|
102
103
|
OpenAI-compatible endpoint, and `LLM_TEXT_MODELS` / `LLM_VISION_MODELS` set
|
|
103
104
|
the model lists.
|
|
@@ -113,6 +114,11 @@ and time out.
|
|
|
113
114
|
to an LLM provider.
|
|
114
115
|
- Snapshots stay in a private per-user cache on your machine. Delete the cache
|
|
115
116
|
directory to remove them.
|
|
117
|
+
- Explicit credentials such as `Passwort: …` or API keys are redacted before they
|
|
118
|
+
reach the cache, tool output or an LLM provider
|
|
119
|
+
([`FIGJAM_MCP_REDACT_CREDENTIALS`](docs/configuration.md#privacy)). This is a
|
|
120
|
+
safety net, not a guarantee: screenshots are not redacted, so keep credentials
|
|
121
|
+
off the board.
|
|
116
122
|
- Keep tokens in the client's environment. A token passed as a tool argument can
|
|
117
123
|
appear in client logs.
|
|
118
124
|
|
package/dist/lib/figmaApi.d.ts
CHANGED
|
@@ -21,4 +21,8 @@ export declare function fetchFileMetadata(fileKey: string, token: string, signal
|
|
|
21
21
|
version: string;
|
|
22
22
|
}>;
|
|
23
23
|
export declare function fetchImageRefs(fileKey: string, token: string, signal?: AbortSignal): Promise<Record<string, string>>;
|
|
24
|
-
export
|
|
24
|
+
export type RenderUrls = Record<string, string | null | undefined>;
|
|
25
|
+
/** One GET /v1/images request (Tier 1) for all given nodes; images are downloaded separately. */
|
|
26
|
+
export declare function fetchRenderUrls(fileKey: string, nodeIds: string[], token: string, signal?: AbortSignal, version?: string): Promise<RenderUrls>;
|
|
27
|
+
/** Downloads the rendered images of `nodeIds` in order; every node needs a render URL. */
|
|
28
|
+
export declare function downloadRenders(nodeIds: string[], renderUrls: RenderUrls, signal?: AbortSignal, budget?: DownloadBudget): Promise<Buffer[]>;
|
package/dist/lib/figmaApi.js
CHANGED
|
@@ -113,9 +113,10 @@ export async function fetchImageRefs(fileKey, token, signal) {
|
|
|
113
113
|
const data = await readJson(await figmaFetch(apiPath, token, FIGMA_REQUEST_TIMEOUT_MS, signal), apiPath, FIGMA_REQUEST_TIMEOUT_MS, signal);
|
|
114
114
|
return data.meta?.images ?? data.images ?? {};
|
|
115
115
|
}
|
|
116
|
-
|
|
116
|
+
/** One GET /v1/images request (Tier 1) for all given nodes; images are downloaded separately. */
|
|
117
|
+
export async function fetchRenderUrls(fileKey, nodeIds, token, signal, version) {
|
|
117
118
|
if (!nodeIds.length)
|
|
118
|
-
throw new Error("
|
|
119
|
+
throw new Error("fetchRenderUrls: nodeIds must not be empty");
|
|
119
120
|
const params = new URLSearchParams({ ids: nodeIds.join(","), format: "png", scale: "1" });
|
|
120
121
|
if (version)
|
|
121
122
|
params.set("version", version);
|
|
@@ -123,7 +124,13 @@ export async function fetchScreenshot(fileKey, nodeIds, token, signal, budget, v
|
|
|
123
124
|
const data = await readJson(await figmaFetch(apiPath, token, FIGMA_REQUEST_TIMEOUT_MS, signal), apiPath, FIGMA_REQUEST_TIMEOUT_MS, signal);
|
|
124
125
|
if (data.err)
|
|
125
126
|
throw new Error("Figma could not render the requested nodes");
|
|
126
|
-
|
|
127
|
+
return data.images ?? {};
|
|
128
|
+
}
|
|
129
|
+
/** Downloads the rendered images of `nodeIds` in order; every node needs a render URL. */
|
|
130
|
+
export async function downloadRenders(nodeIds, renderUrls, signal, budget) {
|
|
131
|
+
if (!nodeIds.length)
|
|
132
|
+
throw new Error("downloadRenders: nodeIds must not be empty");
|
|
133
|
+
const urls = nodeIds.map(id => renderUrls[id]).filter((url) => Boolean(url));
|
|
127
134
|
if (!urls.length)
|
|
128
135
|
throw new Error("Figma image render returned no URLs for the requested nodes");
|
|
129
136
|
if (urls.length !== nodeIds.length)
|
package/dist/lib/figmaApi.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"figmaApi.js","sourceRoot":"","sources":["../../src/lib/figmaApi.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,MAAM,cAAc,GAAG,0BAA0B,CAAC;AAClD,MAAM,wBAAwB,GAAG,UAAU,CAAC,0BAA0B,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AACrF,MAAM,6BAA6B,GAAG,UAAU,CAAC,+BAA+B,EAAE,KAAK,EAAE,IAAI,CAAC,CAAC;AAC/F,MAAM,oBAAoB,GAAG,UAAU,CAAC,uCAAuC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;AACvF,MAAM,CAAC,MAAM,cAAc,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AAC/C,MAAM,CAAC,MAAM,sBAAsB,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AAEvD,MAAM,OAAO,aAAc,SAAQ,KAAK;IACA;IAAyB;IAA/D,YAAY,OAAe,EAAW,MAAc,EAAW,UAAmB;QAAI,KAAK,CAAC,OAAO,CAAC,CAAC;QAA/D,WAAM,GAAN,MAAM,CAAQ;QAAW,eAAU,GAAV,UAAU,CAAS;IAAoB,CAAC;CACxG;AACD,MAAM,OAAO,wBAAyB,SAAQ,KAAK;IACjD,gBAAgB,KAAK,CAAC,mDAAmD,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,0BAA0B,CAAC,CAAC,CAAC;CACtH;AACD,MAAM,OAAO,iBAAkB,SAAQ,KAAK;IAC1C,YAAY,OAAe,IAAI,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,GAAG,mBAAmB,CAAC,CAAC,CAAC;CAClF;AACD,SAAS,cAAc,CAAC,SAAiB,EAAE,MAAoB;IAC7D,OAAO,MAAM,CAAC,CAAC,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;AAC7G,CAAC;AACD,KAAK,UAAU,UAAU,CAAC,OAAe,EAAE,KAAa,EAAE,SAAiB,EAAE,cAA4B;IACvG,cAAc,EAAE,cAAc,EAAE,CAAC;IACjC,IAAI,QAAkB,CAAC;IACvB,IAAI,CAAC;QACH,QAAQ,GAAG,MAAM,KAAK,CAAC,GAAG,cAAc,GAAG,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,eAAe,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,cAAc,CAAC,SAAS,EAAE,cAAc,CAAC,EAAE,CAAC,CAAC;IACpJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,cAAc,EAAE,cAAc,EAAE,CAAC;QACjC,IAAI,SAAS,CAAC,KAAK,CAAC;YAAE,MAAM,YAAY,CAAC,mBAAmB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QAClF,MAAM,KAAK,CAAC;IACd,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,UAAU,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;QAC/D,MAAM,OAAO,GAAG,QAAQ,CAAC,MAAM,KAAK,GAAG,IAAI,QAAQ,CAAC,MAAM,KAAK,GAAG;YAChE,CAAC,CAAC,wBAAwB,QAAQ,CAAC,MAAM,0DAA0D;YACnG,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,+BAA+B,OAAO,EAAE;gBACpE,CAAC,CAAC,QAAQ,CAAC,MAAM,KAAK,GAAG,CAAC,CAAC,CAAC,uCAAuC,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,gBAAgB,UAAU,WAAW,CAAC,CAAC,CAAC,eAAe,EAAE;oBAC7I,CAAC,CAAC,6BAA6B,QAAQ,CAAC,MAAM,IAAI,QAAQ,CAAC,UAAU,MAAM,OAAO,EAAE,CAAC;QACvF,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,aAAa,CAAC,OAAO,EAAE,QAAQ,CAAC,MAAM,EAAE,UAAU,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;IAC7F,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AACD,sFAAsF;AACtF,KAAK,UAAU,WAAW,CAAC,QAAkB,EAAE,QAAgB,EAAE,MAAoB,EAAE,MAAuB;IAC5G,MAAM,EAAE,cAAc,EAAE,CAAC;IACzB,MAAM,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;IACjE,IAAI,SAAS,GAAG,QAAQ,IAAI,CAAC,MAAM,IAAI,SAAS,GAAG,MAAM,CAAC,QAAQ,GAAG,MAAM,CAAC,SAAS,CAAC,EAAE,CAAC;QACvF,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,CAAC;QAC9B,MAAM,IAAI,wBAAwB,EAAE,CAAC;IACvC,CAAC;IACD,IAAI,CAAC,QAAQ,CAAC,IAAI;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,QAAQ,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;IACzC,MAAM,MAAM,GAAiB,EAAE,CAAC;IAChC,IAAI,KAAK,GAAG,CAAC,CAAC;IACd,MAAM,MAAM,GAAG,GAAG,EAAE,GAAG,KAAK,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC;IACpF,MAAM,EAAE,gBAAgB,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC;IAC1D,IAAI,CAAC;QACH,SAAS,CAAC;YACR,MAAM,EAAE,cAAc,EAAE,CAAC;YACzB,MAAM,EAAE,IAAI,EAAE,KAAK,EAAE,GAAG,MAAM,MAAM,CAAC,IAAI,EAAE,CAAC;YAC5C,MAAM,EAAE,cAAc,EAAE,CAAC;YACzB,IAAI,IAAI;gBAAE,MAAM;YAChB,KAAK,IAAI,KAAK,CAAC,UAAU,CAAC;YAC1B,IAAI,MAAM;gBAAE,MAAM,CAAC,SAAS,IAAI,KAAK,CAAC,UAAU,CAAC;YACjD,IAAI,KAAK,GAAG,QAAQ,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,SAAS,GAAG,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC;gBACvE,MAAM,MAAM,CAAC,MAAM,EAAE,CAAC;gBACtB,MAAM,IAAI,wBAAwB,EAAE,CAAC;YACvC,CAAC;YACD,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC;QACD,OAAO,MAAM,CAAC,MAAM,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;IACtC,CAAC;YAAS,CAAC;QACT,MAAM,EAAE,mBAAmB,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;QAC7C,MAAM,CAAC,WAAW,EAAE,CAAC;IACvB,CAAC;AACH,CAAC;AACD,KAAK,UAAU,QAAQ,CAAI,QAAkB,EAAE,OAAe,EAAE,SAAiB,EAAE,MAAoB;IACrG,IAAI,CAAC;QAAC,OAAO,IAAI,CAAC,KAAK,CAAC,CAAC,MAAM,WAAW,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAM,CAAC;IAAC,CAAC;IACvG,OAAO,KAAK,EAAE,CAAC;QACb,MAAM,EAAE,cAAc,EAAE,CAAC;QACzB,IAAI,SAAS,CAAC,KAAK,CAAC;YAAE,MAAM,YAAY,CAAC,yBAAyB,EAAE,OAAO,EAAE,SAAS,CAAC,CAAC;QACxF,MAAM,KAAK,CAAC;IACd,CAAC;AACH,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,OAAe,EAAE,KAAa,EAAE,MAAoB;IACtF,MAAM,OAAO,GAAG,UAAU,OAAO,EAAE,CAAC;IACpC,OAAO,QAAQ,CAAC,MAAM,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,6BAA6B,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,6BAA6B,EAAE,MAAM,CAAC,CAAC;AAC3I,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,OAAe,EAAE,KAAa,EAAE,MAAoB;IAC1F,MAAM,OAAO,GAAG,UAAU,OAAO,OAAO,CAAC;IACzC,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAmC,MAAM,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,CAAC,CAAC;IAC7K,IAAI,OAAO,IAAI,CAAC,IAAI,EAAE,OAAO,KAAK,QAAQ,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,8EAA8E,CAAC,CAAC;IAClK,OAAO,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;AACxC,CAAC;AACD,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe,EAAE,KAAa,EAAE,MAAoB;IACvF,MAAM,OAAO,GAAG,UAAU,OAAO,SAAS,CAAC;IAC3C,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAkF,MAAM,UAAU,CAAC,OAAO,EAAE,KAAK,EAAE,wBAAwB,EAAE,MAAM,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,MAAM,CAAC,CAAC;IAC5N,OAAO,IAAI,CAAC,IAAI,EAAE,MAAM,IAAI,IAAI,CAAC,MAAM,IAAI,EAAE,CAAC;AAChD,CAAC;
|
|
1
|
+
{"version":3,"file":"figmaApi.js","sourceRoot":"","sources":["../../src/lib/figmaApi.ts"],"names":[],"mappings":"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"}
|
package/dist/lib/llmClient.d.ts
CHANGED
|
@@ -21,6 +21,10 @@ export interface ChatJsonOptions {
|
|
|
21
21
|
reasoningEffort?: LlmReasoningEffort;
|
|
22
22
|
/** Per-HTTP-attempt deadline, including the response body; caller cancellation can end it earlier. */
|
|
23
23
|
requestTimeoutMs?: number;
|
|
24
|
+
/** Deadline across all model candidates and retries; a fallback candidate gets only the time left. */
|
|
25
|
+
totalTimeoutMs?: number;
|
|
26
|
+
/** Setting named in a timeout error; defaults to LLM_REQUEST_TIMEOUT_MS. */
|
|
27
|
+
timeoutSetting?: string;
|
|
24
28
|
schemaName?: string;
|
|
25
29
|
jsonSchema?: JsonSchema;
|
|
26
30
|
onModelUsed?: (model: string) => void;
|
package/dist/lib/llmClient.js
CHANGED
|
@@ -39,6 +39,8 @@ export class LlmInvalidJsonError extends Error {
|
|
|
39
39
|
this.name = "LlmInvalidJsonError";
|
|
40
40
|
}
|
|
41
41
|
}
|
|
42
|
+
/** Requests shorter than this cannot complete; the caller's deadline is treated as reached. */
|
|
43
|
+
const MIN_REQUEST_TIMEOUT_MS = 1000;
|
|
42
44
|
const REASONING_EFFORTS = ["none", "low", "medium", "high"];
|
|
43
45
|
/** Applies only to answer_from_board; vision and other roles keep their own defaults. */
|
|
44
46
|
export function getAnswerReasoningEffort() {
|
|
@@ -125,12 +127,17 @@ const MAX_OUTPUT_TOKENS = readIntEnv("LLM_MAX_OUTPUT_TOKENS", 14096, 1);
|
|
|
125
127
|
* block extracted) and failures surface as clear errors.
|
|
126
128
|
*/
|
|
127
129
|
export async function chatJson(model, messages, options = {}) {
|
|
130
|
+
const { totalTimeoutMs } = options;
|
|
131
|
+
if (totalTimeoutMs !== undefined && (!Number.isInteger(totalTimeoutMs) || totalTimeoutMs < MIN_REQUEST_TIMEOUT_MS)) {
|
|
132
|
+
throw new LLMConfigurationError(`totalTimeoutMs must be an integer >= ${MIN_REQUEST_TIMEOUT_MS}`);
|
|
133
|
+
}
|
|
128
134
|
const llm = getLlmClient();
|
|
129
135
|
const models = Array.isArray(model) ? model : [model];
|
|
130
136
|
const errors = [];
|
|
137
|
+
const requestOptions = totalTimeoutMs === undefined ? options : { ...options, deadlineAt: Date.now() + totalTimeoutMs };
|
|
131
138
|
for (const candidate of models) {
|
|
132
139
|
try {
|
|
133
|
-
const completion = await createJsonCompletion(llm, candidate, messages,
|
|
140
|
+
const completion = await createJsonCompletion(llm, candidate, messages, requestOptions);
|
|
134
141
|
const choice = completion.choices[0];
|
|
135
142
|
const raw = choice?.message?.content;
|
|
136
143
|
if (!raw) {
|
|
@@ -145,7 +152,7 @@ export async function chatJson(model, messages, options = {}) {
|
|
|
145
152
|
throw abortReason(options.signal, error);
|
|
146
153
|
}
|
|
147
154
|
errors.push(error);
|
|
148
|
-
if (candidate !== models.at(-1) && shouldTryNextModel(error)) {
|
|
155
|
+
if (candidate !== models.at(-1) && shouldTryNextModel(error) && remainingMs(requestOptions) >= MIN_REQUEST_TIMEOUT_MS) {
|
|
149
156
|
console.error(`LLM model ${candidate} failed; trying the next explicitly configured candidate.`);
|
|
150
157
|
continue;
|
|
151
158
|
}
|
|
@@ -306,15 +313,21 @@ function normalizeLlmError(error) {
|
|
|
306
313
|
async function createCompletion(llm, params, options = {}) {
|
|
307
314
|
const { signal } = options;
|
|
308
315
|
const requestTimeoutMs = options.requestTimeoutMs ?? getLlmRequestTimeoutMs();
|
|
309
|
-
if (!Number.isInteger(requestTimeoutMs) || requestTimeoutMs <
|
|
310
|
-
throw new LLMConfigurationError(
|
|
316
|
+
if (!Number.isInteger(requestTimeoutMs) || requestTimeoutMs < MIN_REQUEST_TIMEOUT_MS) {
|
|
317
|
+
throw new LLMConfigurationError(`requestTimeoutMs must be an integer >= ${MIN_REQUEST_TIMEOUT_MS}`);
|
|
311
318
|
}
|
|
319
|
+
const setting = options.timeoutSetting ?? "LLM_REQUEST_TIMEOUT_MS";
|
|
312
320
|
for (let attempt = 0;; attempt++) {
|
|
313
321
|
throwIfAborted(signal);
|
|
322
|
+
const timeoutMs = Math.min(requestTimeoutMs, Math.floor(remainingMs(options)));
|
|
323
|
+
if (timeoutMs < MIN_REQUEST_TIMEOUT_MS) {
|
|
324
|
+
throw new LlmTimeoutError(`LLM request did not finish within the ${options.totalTimeoutMs / 1000}s total deadline across model candidates. ` +
|
|
325
|
+
`Check the model and output-token budget, or adjust ${setting}.`);
|
|
326
|
+
}
|
|
314
327
|
let completion;
|
|
315
328
|
try {
|
|
316
329
|
options.onRequest?.(params.model);
|
|
317
|
-
completion = await llm.chat.completions.create(params, { signal, timeout:
|
|
330
|
+
completion = await llm.chat.completions.create(params, { signal, timeout: timeoutMs });
|
|
318
331
|
options.onUsage?.({ model: params.model, promptTokens: completion.usage?.prompt_tokens,
|
|
319
332
|
completionTokens: completion.usage?.completion_tokens, totalTokens: completion.usage?.total_tokens });
|
|
320
333
|
}
|
|
@@ -323,9 +336,11 @@ async function createCompletion(llm, params, options = {}) {
|
|
|
323
336
|
throw abortReason(signal, error);
|
|
324
337
|
}
|
|
325
338
|
if (isLlmTimeout(error)) {
|
|
326
|
-
|
|
327
|
-
|
|
328
|
-
|
|
339
|
+
const clamped = timeoutMs < requestTimeoutMs
|
|
340
|
+
? `, the time left of the ${options.totalTimeoutMs / 1000}s total deadline across model candidates`
|
|
341
|
+
: "";
|
|
342
|
+
throw new LlmTimeoutError(`LLM request timed out after ${Math.round(timeoutMs / 1000)}s${clamped}. ` +
|
|
343
|
+
`Check the model, output-token budget and caller deadline, or adjust ${setting}.`);
|
|
329
344
|
}
|
|
330
345
|
if (!(error instanceof OpenAI.RateLimitError) || attempt >= MAX_RATE_LIMIT_RETRIES) {
|
|
331
346
|
throw error;
|
|
@@ -379,6 +394,9 @@ function retryDelayMs(error, attempt) {
|
|
|
379
394
|
const retryAfter = Number(error.headers?.get("retry-after"));
|
|
380
395
|
return Number.isFinite(retryAfter) && retryAfter > 0 ? retryAfter * 1000 : 2 ** attempt * 2000;
|
|
381
396
|
}
|
|
397
|
+
function remainingMs(options) {
|
|
398
|
+
return options.deadlineAt === undefined ? Infinity : options.deadlineAt - Date.now();
|
|
399
|
+
}
|
|
382
400
|
function isLlmTimeout(error) {
|
|
383
401
|
const TimeoutError = OpenAI.APIConnectionTimeoutError;
|
|
384
402
|
return ((typeof TimeoutError === "function" && error instanceof TimeoutError) ||
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llmClient.js","sourceRoot":"","sources":["../../src/lib/llmClient.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"llmClient.js","sourceRoot":"","sources":["../../src/lib/llmClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,3 +2,11 @@
|
|
|
2
2
|
export declare function getLlmRequestTimeoutMs(): number;
|
|
3
3
|
/** A role-specific override wins; an existing global override keeps its previous meaning. */
|
|
4
4
|
export declare function getVisionRequestTimeoutMs(): number;
|
|
5
|
+
/** Answers send large prompts, often to reasoning models, so they get a longer default than other text requests. */
|
|
6
|
+
export declare function getAnswerRequestTimeoutMs(): number;
|
|
7
|
+
/**
|
|
8
|
+
* Total time for one answer across all model candidates, so answer_from_board
|
|
9
|
+
* replies inside a 60 s client timeout. A larger explicit per-request setting
|
|
10
|
+
* still applies to the first candidate.
|
|
11
|
+
*/
|
|
12
|
+
export declare function getAnswerTotalTimeoutMs(): number;
|
package/dist/lib/llmTimeouts.js
CHANGED
|
@@ -7,4 +7,16 @@ export function getLlmRequestTimeoutMs() {
|
|
|
7
7
|
export function getVisionRequestTimeoutMs() {
|
|
8
8
|
return readIntEnv("LLM_VISION_REQUEST_TIMEOUT_MS", readIntEnv("LLM_REQUEST_TIMEOUT_MS", 60_000, 1000), 1000);
|
|
9
9
|
}
|
|
10
|
+
/** Answers send large prompts, often to reasoning models, so they get a longer default than other text requests. */
|
|
11
|
+
export function getAnswerRequestTimeoutMs() {
|
|
12
|
+
return readIntEnv("LLM_ANSWER_REQUEST_TIMEOUT_MS", readIntEnv("LLM_REQUEST_TIMEOUT_MS", 40_000, 1000), 1000);
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Total time for one answer across all model candidates, so answer_from_board
|
|
16
|
+
* replies inside a 60 s client timeout. A larger explicit per-request setting
|
|
17
|
+
* still applies to the first candidate.
|
|
18
|
+
*/
|
|
19
|
+
export function getAnswerTotalTimeoutMs() {
|
|
20
|
+
return Math.max(50_000, getAnswerRequestTimeoutMs());
|
|
21
|
+
}
|
|
10
22
|
//# sourceMappingURL=llmTimeouts.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llmTimeouts.js","sourceRoot":"","sources":["../../src/lib/llmTimeouts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,iGAAiG;AACjG,MAAM,UAAU,sBAAsB;IACpC,OAAO,UAAU,CAAC,wBAAwB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,yBAAyB;IACvC,OAAO,UAAU,CAAC,+BAA+B,EAC/C,UAAU,CAAC,wBAAwB,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC"}
|
|
1
|
+
{"version":3,"file":"llmTimeouts.js","sourceRoot":"","sources":["../../src/lib/llmTimeouts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,iGAAiG;AACjG,MAAM,UAAU,sBAAsB;IACpC,OAAO,UAAU,CAAC,wBAAwB,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;AAC5D,CAAC;AAED,6FAA6F;AAC7F,MAAM,UAAU,yBAAyB;IACvC,OAAO,UAAU,CAAC,+BAA+B,EAC/C,UAAU,CAAC,wBAAwB,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED,oHAAoH;AACpH,MAAM,UAAU,yBAAyB;IACvC,OAAO,UAAU,CAAC,+BAA+B,EAC/C,UAAU,CAAC,wBAAwB,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC;AAC9D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB;IACrC,OAAO,IAAI,CAAC,GAAG,CAAC,MAAM,EAAE,yBAAyB,EAAE,CAAC,CAAC;AACvD,CAAC"}
|
package/dist/lib/nodeTree.js
CHANGED
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { createHash } from "node:crypto";
|
|
2
|
+
import { redactCredentials } from "./redact.js";
|
|
2
3
|
export const STRUCTURAL_TYPES = new Set(["DOCUMENT", "CANVAS", "PAGE", "FRAME", "GROUP", "SECTION"]);
|
|
3
4
|
export const MAX_BOARD_NODES = 100_000;
|
|
4
5
|
const MAX_BOARD_DEPTH = 1024;
|
|
@@ -138,7 +139,7 @@ export function flattenNodeTree(rawFigmaJson) {
|
|
|
138
139
|
for (const entry of entries) {
|
|
139
140
|
if (entry.tableOwner === undefined || entry.raw.type !== "TABLE_CELL")
|
|
140
141
|
continue;
|
|
141
|
-
const cell = { id: entry.raw.id, text: cellText(entry, entries) };
|
|
142
|
+
const cell = { id: entry.raw.id, text: redactCredentials(cellText(entry, entries)) };
|
|
142
143
|
// Only report positions explicitly present in the source; IDs are opaque.
|
|
143
144
|
if (Number.isInteger(entry.raw.rowIndex) && Number(entry.raw.rowIndex) >= 0)
|
|
144
145
|
cell.row = Number(entry.raw.rowIndex);
|
|
@@ -155,11 +156,13 @@ export function flattenNodeTree(rawFigmaJson) {
|
|
|
155
156
|
const node = entry.raw;
|
|
156
157
|
const box = node.absoluteBoundingBox ?? { x: 0, y: 0, width: 0, height: 0 };
|
|
157
158
|
const cells = node.type === "TABLE" ? cellsByTable.get(index) ?? [] : undefined;
|
|
159
|
+
// FigJam names text nodes after their content, so names need the same redaction as text.
|
|
160
|
+
const characters = node.characters === undefined ? undefined : redactCredentials(node.characters);
|
|
158
161
|
result.push({
|
|
159
|
-
id: node.id, name: node.name, type: node.type,
|
|
162
|
+
id: node.id, name: redactCredentials(node.name), type: node.type,
|
|
160
163
|
x: box.x, y: box.y, width: box.width, height: box.height,
|
|
161
164
|
rotation: node.rotation ?? 0, imageRef: extractImageRef(node),
|
|
162
|
-
text: cells ? [
|
|
165
|
+
text: cells ? [characters, ...cells.map((cell) => cell.text)].filter((text) => text !== undefined && text !== "").join("\n") : characters,
|
|
163
166
|
parentId: entry.parentId, pageId: entry.pageId, sectionIds: entry.sectionIds,
|
|
164
167
|
renderNodeId: node.id, table: cells ? { cells } : undefined,
|
|
165
168
|
contentFingerprint: entry.contentFingerprint,
|
package/dist/lib/nodeTree.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"nodeTree.js","sourceRoot":"","sources":["../../src/lib/nodeTree.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"nodeTree.js","sourceRoot":"","sources":["../../src/lib/nodeTree.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { BoardData, DocStructureHint, IngestMode, NormalizedNode } from "../types.js";
|
|
2
2
|
export declare const CACHE_SCHEMA_VERSION = 4;
|
|
3
|
-
export declare const EXTRACTION_VERSION =
|
|
4
|
-
export declare const PROMPT_VERSION =
|
|
3
|
+
export declare const EXTRACTION_VERSION = 6;
|
|
4
|
+
export declare const PROMPT_VERSION = 8;
|
|
5
5
|
export interface BoardCacheIdentity {
|
|
6
6
|
fileKey: string;
|
|
7
7
|
figmaLastModified?: string;
|
|
@@ -7,8 +7,8 @@ import { z } from "zod";
|
|
|
7
7
|
import { getModelConfigSignature } from "./modelRegistry.js";
|
|
8
8
|
import { MAX_BOARD_NODES } from "./nodeTree.js";
|
|
9
9
|
export const CACHE_SCHEMA_VERSION = 4;
|
|
10
|
-
export const EXTRACTION_VERSION =
|
|
11
|
-
export const PROMPT_VERSION =
|
|
10
|
+
export const EXTRACTION_VERSION = 6;
|
|
11
|
+
export const PROMPT_VERSION = 8;
|
|
12
12
|
const defaultRoot = process.platform === "darwin"
|
|
13
13
|
? path.join(homedir(), "Library", "Caches", "figjam-context-mcp")
|
|
14
14
|
: process.platform === "win32"
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { BoardData } from "../types.js";
|
|
2
|
+
export declare const REDACTED = "[redacted]";
|
|
3
|
+
export declare function isCredentialRedactionEnabled(): boolean;
|
|
4
|
+
/**
|
|
5
|
+
* Replaces explicit credentials with "[redacted]": labelled values up to the end of
|
|
6
|
+
* the line and well-known key formats anywhere. Idempotent; mentions without a value stay.
|
|
7
|
+
*/
|
|
8
|
+
export declare function redactCredentials(text: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Redacted view of a stored board, so snapshots cached before redaction existed
|
|
11
|
+
* never reach a prompt or tool output unredacted. Memoized per board object so
|
|
12
|
+
* evidence indexes stay cached.
|
|
13
|
+
*/
|
|
14
|
+
export declare function redactBoard(board: BoardData): BoardData;
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
import { readBoolEnv } from "./env.js";
|
|
2
|
+
export const REDACTED = "[redacted]";
|
|
3
|
+
// A bare "token" or "secret" label is left alone: on design boards "Token:" usually names a design token.
|
|
4
|
+
const LABELS = String.raw `pass(?:wor[dt]|code)|kennwort|pwd?|pin|api[\s_-]?(?:key|token)|(?:access|auth|bearer)[\s_-]?token|client[\s_-]?secret|(?:secret|access|private)[\s_-]?key`;
|
|
5
|
+
const LABELED_VALUE = new RegExp(String.raw `(?<![\p{L}\p{N}_])((?:${LABELS})[^\S\r\n]*[:=][^\S\r\n]*)(?=\S)[^\r\n]*`, "giu");
|
|
6
|
+
const PRIVATE_KEY_BLOCK = /-----BEGIN (?:[A-Z0-9]+ )*PRIVATE KEY-----[\s\S]*?(?:-----END (?:[A-Z0-9]+ )*PRIVATE KEY-----|$)/gi;
|
|
7
|
+
const KEY_FORMATS = [
|
|
8
|
+
/(?<![A-Za-z0-9_])(?:gh[pous]_[A-Za-z0-9]{16,}|github_pat_[A-Za-z0-9_]{16,})/g,
|
|
9
|
+
/(?<![A-Za-z0-9_-])sk-(?=[A-Za-z0-9_-]*\d)[A-Za-z0-9_-]{16,}/g,
|
|
10
|
+
/(?<![A-Za-z0-9_])figd_[A-Za-z0-9_-]{16,}/g,
|
|
11
|
+
/(?<![A-Za-z0-9])AKIA[0-9A-Z]{16}(?![A-Za-z0-9])/g,
|
|
12
|
+
/(?<![A-Za-z0-9_])xox[abprs]-[A-Za-z0-9-]{10,}/g,
|
|
13
|
+
];
|
|
14
|
+
const redactedBoards = new WeakMap();
|
|
15
|
+
export function isCredentialRedactionEnabled() {
|
|
16
|
+
return readBoolEnv("FIGJAM_MCP_REDACT_CREDENTIALS", true);
|
|
17
|
+
}
|
|
18
|
+
/**
|
|
19
|
+
* Replaces explicit credentials with "[redacted]": labelled values up to the end of
|
|
20
|
+
* the line and well-known key formats anywhere. Idempotent; mentions without a value stay.
|
|
21
|
+
*/
|
|
22
|
+
export function redactCredentials(text) {
|
|
23
|
+
if (!text || !isCredentialRedactionEnabled())
|
|
24
|
+
return text;
|
|
25
|
+
let result = text.replace(PRIVATE_KEY_BLOCK, REDACTED);
|
|
26
|
+
for (const pattern of KEY_FORMATS)
|
|
27
|
+
result = result.replace(pattern, REDACTED);
|
|
28
|
+
return result.replace(LABELED_VALUE, `$1${REDACTED}`);
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Redacted view of a stored board, so snapshots cached before redaction existed
|
|
32
|
+
* never reach a prompt or tool output unredacted. Memoized per board object so
|
|
33
|
+
* evidence indexes stay cached.
|
|
34
|
+
*/
|
|
35
|
+
export function redactBoard(board) {
|
|
36
|
+
if (!isCredentialRedactionEnabled())
|
|
37
|
+
return board;
|
|
38
|
+
const existing = redactedBoards.get(board);
|
|
39
|
+
if (existing)
|
|
40
|
+
return existing;
|
|
41
|
+
const redacted = {
|
|
42
|
+
...board,
|
|
43
|
+
nodes: board.nodes.map((node) => ({
|
|
44
|
+
...node,
|
|
45
|
+
name: redactCredentials(node.name),
|
|
46
|
+
...(node.text === undefined ? {} : { text: redactCredentials(node.text) }),
|
|
47
|
+
...(node.table ? { table: { cells: node.table.cells.map((cell) => ({ ...cell, text: redactCredentials(cell.text) })) } } : {}),
|
|
48
|
+
})),
|
|
49
|
+
clusters: board.clusters.map((cluster) => ({
|
|
50
|
+
...cluster, label: redactCredentials(cluster.label), summary: redactCredentials(cluster.summary),
|
|
51
|
+
})),
|
|
52
|
+
connectorEdges: board.connectorEdges?.map((edge) => ({
|
|
53
|
+
...edge, ...(edge.label === undefined ? {} : { label: redactCredentials(edge.label) }),
|
|
54
|
+
})),
|
|
55
|
+
clusterRelations: board.clusterRelations?.map((relation) => ({
|
|
56
|
+
...relation, labels: relation.labels.map(redactCredentials),
|
|
57
|
+
})),
|
|
58
|
+
};
|
|
59
|
+
redactedBoards.set(board, redacted);
|
|
60
|
+
return redacted;
|
|
61
|
+
}
|
|
62
|
+
//# sourceMappingURL=redact.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redact.js","sourceRoot":"","sources":["../../src/lib/redact.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { getVisionRequestTimeoutMs } from "./llmTimeouts.js";
|
|
2
2
|
import { chatJson, getVisionModels, LlmInvalidJsonError } from "./llmClient.js";
|
|
3
3
|
import { VISION_MAX_OUTPUT_TOKENS } from "./llmOutputBudgets.js";
|
|
4
|
+
import { redactCredentials } from "./redact.js";
|
|
4
5
|
/**
|
|
5
6
|
* Hard prompt bounds for one cluster. These are intentionally fixed safety
|
|
6
7
|
* limits: provider configuration may tune the reply budget, but board content
|
|
@@ -47,6 +48,7 @@ export async function refineClusterWithVision(cluster, screenshots, clusterNodes
|
|
|
47
48
|
jsonSchema: VISION_REPLY_SCHEMA,
|
|
48
49
|
maxOutputTokens: VISION_MAX_OUTPUT_TOKENS,
|
|
49
50
|
requestTimeoutMs: getVisionRequestTimeoutMs(),
|
|
51
|
+
timeoutSetting: "LLM_VISION_REQUEST_TIMEOUT_MS",
|
|
50
52
|
signal,
|
|
51
53
|
onModelUsed: (model) => {
|
|
52
54
|
modelId = model;
|
|
@@ -75,6 +77,7 @@ function buildPrompt(clusterNodes) {
|
|
|
75
77
|
"3. Write a compact summary of the group in 3-5 sentences. If elements contain images/screenshots, describe their visible content in 1-2 of those sentences. Use concise quotations of visible wording when its status or meaning could otherwise change. Use remaining sentences for other observations or relevant evidence limits, never speculative filler.",
|
|
76
78
|
"Use the extracted original text as the primary source; images add visible evidence. Preserve amounts, units, negation, and whether an item is a question, proposal, open task, or confirmed decision. Report a label or stated figure as such, without promoting it to an established real-world state. A budget figure alone does not establish that funds are available, approved, allocated, sufficient, or spent. Apply the same rule to dates, capacity figures, and task labels: a stated value alone does not prove scheduling, availability, or completion.",
|
|
77
79
|
"An unconfirmed item proves neither completion nor non-completion; retain uncertainty and any conflicting evidence. Only make a positive or negative status claim when the source explicitly supports that status. If a relevant status is absent, say that the supplied evidence does not establish it.",
|
|
80
|
+
"For tables and statistical notation, preserve visible values, units, column alignment, brackets, and parentheses. Name a statistic (such as median, mean, confidence interval, quartile, standard deviation, standard error, or sample size) only when an explicit legend or source label identifies it. Punctuation and familiar notation alone do not establish those meanings. If the meaning is unlabelled, quote the notation and leave its interpretation open; if a legend is present, apply it accurately. Never infer significance, equivalence, or causality from descriptive values alone.",
|
|
78
81
|
"For diagrams, preserve visible arrow directions and explicitly distinguish separate, unconnected elements. Visible positions, colors, and shapes can be described directly. Describe only visible content and supplied connections; do not infer unstated priority, status, purpose, causality, or missing links from labels or proximity. Thematic grouping is not evidence of a workflow, dependency, funding link, or decision. Do not add a concluding synthesis that connects otherwise unconnected items.",
|
|
79
82
|
"Before replying, check every status and relationship in both label and summary against the supplied evidence. Remove unsupported claims instead of softening them with uncertainty words. confirmedNodeIds can contain only the exact listed IDs; shapes or labels inside an image are not additional node IDs.",
|
|
80
83
|
"",
|
|
@@ -166,8 +169,9 @@ function compareStrings(left, right) {
|
|
|
166
169
|
/** Validates the model's JSON reply and merges it into a RefinedCluster. */
|
|
167
170
|
function applyReply(cluster, reply, listedNodeIds) {
|
|
168
171
|
const parsed = reply;
|
|
169
|
-
|
|
170
|
-
const
|
|
172
|
+
// Screenshots are not redacted; keep credentials a model read from them out of the cache.
|
|
173
|
+
const label = typeof parsed?.label === "string" ? redactCredentials(parsed.label.trim()) : "";
|
|
174
|
+
const summary = typeof parsed?.summary === "string" ? redactCredentials(parsed.summary.trim()) : "";
|
|
171
175
|
if (!label || !summary) {
|
|
172
176
|
throw new LlmInvalidJsonError(`Vision model reply for ${cluster.id} is missing "label" or "summary"`, "");
|
|
173
177
|
}
|