@noesis-brain/mcp-server 2.1.3 → 2.1.5
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/dist/agent/runner.d.ts +97 -0
- package/dist/agent/runner.d.ts.map +1 -1
- package/dist/agent/runner.js +119 -15
- package/dist/agent/runner.js.map +1 -1
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +22 -18
- package/dist/tools/index.js.map +1 -1
- package/package.json +1 -1
- package/scripts/start-agent.sh +292 -0
package/dist/agent/runner.d.ts
CHANGED
|
@@ -20,6 +20,16 @@ export interface AgentConfig {
|
|
|
20
20
|
fake: boolean;
|
|
21
21
|
}
|
|
22
22
|
export declare function resolveAgentConfig(): AgentConfig;
|
|
23
|
+
interface JobPayload {
|
|
24
|
+
prompt?: string;
|
|
25
|
+
system?: string;
|
|
26
|
+
allowedTools?: string[];
|
|
27
|
+
maxTurns?: number;
|
|
28
|
+
images?: Array<{
|
|
29
|
+
mimeType: string;
|
|
30
|
+
data: string;
|
|
31
|
+
}>;
|
|
32
|
+
}
|
|
23
33
|
/** Drop anything the server asked for that is not on the read-only allowlist. */
|
|
24
34
|
export declare function clampAllowedTools(raw: unknown): string[];
|
|
25
35
|
/** Clamp the server-requested turn budget into a sane range. */
|
|
@@ -74,6 +84,93 @@ export declare function buildSdkPrompt(prompt: string, images: Array<{
|
|
|
74
84
|
mimeType: string;
|
|
75
85
|
data: string;
|
|
76
86
|
}> | undefined): string | AsyncGenerator<unknown>;
|
|
87
|
+
/** What the SDK expects back from a canUseTool decision. */
|
|
88
|
+
type PermissionDecision = {
|
|
89
|
+
behavior: 'allow';
|
|
90
|
+
updatedInput: Record<string, unknown>;
|
|
91
|
+
} | {
|
|
92
|
+
behavior: 'deny';
|
|
93
|
+
message: string;
|
|
94
|
+
};
|
|
95
|
+
/**
|
|
96
|
+
* SECOND, INDEPENDENT LAYER on the tool boundary.
|
|
97
|
+
*
|
|
98
|
+
* `tools: []` below is the primary control, but it works by way of the CLI's `--tools ""`
|
|
99
|
+
* flag, whose handling lives in a minified `cli.js` we cannot audit. This callback is a
|
|
100
|
+
* gate we own outright: the SDK routes every permission request through it
|
|
101
|
+
* (`--permission-prompt-tool stdio`), and the request carries an `agentID`, so calls made
|
|
102
|
+
* by a spawned `Task` SUBAGENT are covered too — which matters, because a subagent, not
|
|
103
|
+
* the main loop, did the file reading in the 2026-08-14 incident.
|
|
104
|
+
*
|
|
105
|
+
* Deliberately reuses ALLOWED_TOOLS so the daemon has ONE definition of what may run.
|
|
106
|
+
*
|
|
107
|
+
* DO NOT DELETE THIS AS DEAD CODE. It is the ONLY daemon-owned control over MCP tools.
|
|
108
|
+
* `tools: []` governs the SDK's BUILT-IN set and nothing else; the Noesis MCP server we
|
|
109
|
+
* spawn registers ~55 tools, and their definitions are not filtered by `allowedTools`, so
|
|
110
|
+
* the model can see and attempt every one of them — including `pull_notes`, which writes
|
|
111
|
+
* to an arbitrary local path, plus `add_root`, `sync_notes`, `trash_note`, `move_note`.
|
|
112
|
+
* For those, this callback is the whole boundary.
|
|
113
|
+
*
|
|
114
|
+
* MEASURED (30 runs, 2026-08-15), correcting an earlier comment that said the opposite:
|
|
115
|
+
* the gate DOES fire — it denied `mcp__noesis__list_roots` and `mcp__noesis__list_codebases`
|
|
116
|
+
* in real traffic, and the model received `is_error` results naming the refusal. An earlier
|
|
117
|
+
* 2-job sample saw zero firings and wrongly concluded the gate was inert; a permission tool
|
|
118
|
+
* is simply not consulted for calls that are already pre-approved, and that sample happened
|
|
119
|
+
* to exercise only pre-approved tools.
|
|
120
|
+
*
|
|
121
|
+
* KNOWN GAP, stated rather than glossed: the SDK's cache-warming sidechain
|
|
122
|
+
* (`isSidechain: true`) is a real model turn that emits genuine `Bash`/`Glob` calls against
|
|
123
|
+
* the daemon's cwd, with only the RESULT stubbed. `tools: []` does not reach it and this
|
|
124
|
+
* callback is never consulted there. Nothing executes — but that is Claude Code internal
|
|
125
|
+
* behaviour we neither own nor test, which is why the daemon is rooted at a neutral cwd
|
|
126
|
+
* (`scripts/start-agent.sh`), so the warmup probes an empty directory, not a source tree.
|
|
127
|
+
*/
|
|
128
|
+
export declare function buildCanUseTool(
|
|
129
|
+
/**
|
|
130
|
+
* The tools permitted for THIS job — i.e. the output of `clampAllowedTools`, not the
|
|
131
|
+
* module-wide `ALLOWED_TOOLS`. Required, deliberately: an earlier version closed over
|
|
132
|
+
* `ALLOWED_TOOLS` and so turned a per-job clamp into a union. `clampAllowedTools`
|
|
133
|
+
* narrows to (what the server asked for ∩ ALLOWED_TOOLS); the gate then re-allowed all
|
|
134
|
+
* four regardless, so a job clamped to `get_note` could still execute `search_semantic`.
|
|
135
|
+
* The sets happen to coincide for chat today, which is exactly why it would have gone
|
|
136
|
+
* unnoticed until the first job kind with a narrower allowlist.
|
|
137
|
+
*/
|
|
138
|
+
permitted: Iterable<string>, onDecision?: (toolName: string, allowed: boolean, agentID?: string) => void): (toolName: string, input?: unknown, ctx?: {
|
|
139
|
+
agentID?: string;
|
|
140
|
+
}) => Promise<PermissionDecision>;
|
|
141
|
+
/**
|
|
142
|
+
* The `options` object handed to sdk.query() — extracted, like buildSdkPrompt above, so
|
|
143
|
+
* the tool boundary is asserted by a test instead of resting on a comment. `tools: []`
|
|
144
|
+
* is the security-relevant field: see the note at its assignment. Takes the MCP-server
|
|
145
|
+
* factory as an argument so a test can supply a stub instead of a real spawn config.
|
|
146
|
+
*/
|
|
147
|
+
export declare function buildQueryOptions(payload: JobPayload, mcpServersFor: () => Record<string, unknown>): Record<string, unknown>;
|
|
148
|
+
/** The prompt text for a job, with the fallback used when a payload carries none. */
|
|
149
|
+
export declare function resolveJobPrompt(payload: JobPayload, kindLabel: string): string;
|
|
150
|
+
/** The minimum of the Agent SDK this daemon uses — enough for a test to substitute a fake. */
|
|
151
|
+
export interface SdkLike {
|
|
152
|
+
query(args: {
|
|
153
|
+
prompt: unknown;
|
|
154
|
+
options: Record<string, unknown>;
|
|
155
|
+
}): AsyncIterable<unknown>;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* The ONE place the SDK is invoked. Exported so a test can pass a fake `sdk` and assert
|
|
159
|
+
* what actually reaches `query()`.
|
|
160
|
+
*
|
|
161
|
+
* This exists because of a real gap: the suite pinned `buildQueryOptions` with a
|
|
162
|
+
* power-set mutation battery, but NOTHING pinned the call. Restoring the pre-fix inline
|
|
163
|
+
* options literal here — deleting `tools: []` and `canUseTool` outright — reverted the
|
|
164
|
+
* entire tool boundary with all 79 tests still green. The builder being correct is
|
|
165
|
+
* worthless if the caller stops using it, so both the seam below and the source-fitness
|
|
166
|
+
* test in `agentToolClamp.test.ts` guard this.
|
|
167
|
+
*/
|
|
168
|
+
export declare function runSdkQuery(sdk: SdkLike, payload: JobPayload, kindLabel: string, mcpServersFor: () => Record<string, unknown>): AsyncIterable<unknown>;
|
|
169
|
+
/**
|
|
170
|
+
* The daemon's startup banner line — pulled out of runAgentDaemon() so the printed
|
|
171
|
+
* version string is directly unit-testable without starting the real (infinite) loop.
|
|
172
|
+
*/
|
|
173
|
+
export declare function startupBanner(cfg: AgentConfig): string;
|
|
77
174
|
/** Run the daemon loop until aborted. */
|
|
78
175
|
export declare function runAgentDaemon(cfg: AgentConfig, signal?: AbortSignal): Promise<void>;
|
|
79
176
|
export {};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agent/runner.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAUH,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,CAAC;CACf;AAED,wBAAgB,kBAAkB,IAAI,WAAW,CAUhD;
|
|
1
|
+
{"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../../src/agent/runner.ts"],"names":[],"mappings":"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"}
|
package/dist/agent/runner.js
CHANGED
|
@@ -208,14 +208,122 @@ export function buildSdkPrompt(prompt, images) {
|
|
|
208
208
|
return singleUserMessage(buildImageContent(prompt, images));
|
|
209
209
|
return prompt;
|
|
210
210
|
}
|
|
211
|
+
/**
|
|
212
|
+
* SECOND, INDEPENDENT LAYER on the tool boundary.
|
|
213
|
+
*
|
|
214
|
+
* `tools: []` below is the primary control, but it works by way of the CLI's `--tools ""`
|
|
215
|
+
* flag, whose handling lives in a minified `cli.js` we cannot audit. This callback is a
|
|
216
|
+
* gate we own outright: the SDK routes every permission request through it
|
|
217
|
+
* (`--permission-prompt-tool stdio`), and the request carries an `agentID`, so calls made
|
|
218
|
+
* by a spawned `Task` SUBAGENT are covered too — which matters, because a subagent, not
|
|
219
|
+
* the main loop, did the file reading in the 2026-08-14 incident.
|
|
220
|
+
*
|
|
221
|
+
* Deliberately reuses ALLOWED_TOOLS so the daemon has ONE definition of what may run.
|
|
222
|
+
*
|
|
223
|
+
* DO NOT DELETE THIS AS DEAD CODE. It is the ONLY daemon-owned control over MCP tools.
|
|
224
|
+
* `tools: []` governs the SDK's BUILT-IN set and nothing else; the Noesis MCP server we
|
|
225
|
+
* spawn registers ~55 tools, and their definitions are not filtered by `allowedTools`, so
|
|
226
|
+
* the model can see and attempt every one of them — including `pull_notes`, which writes
|
|
227
|
+
* to an arbitrary local path, plus `add_root`, `sync_notes`, `trash_note`, `move_note`.
|
|
228
|
+
* For those, this callback is the whole boundary.
|
|
229
|
+
*
|
|
230
|
+
* MEASURED (30 runs, 2026-08-15), correcting an earlier comment that said the opposite:
|
|
231
|
+
* the gate DOES fire — it denied `mcp__noesis__list_roots` and `mcp__noesis__list_codebases`
|
|
232
|
+
* in real traffic, and the model received `is_error` results naming the refusal. An earlier
|
|
233
|
+
* 2-job sample saw zero firings and wrongly concluded the gate was inert; a permission tool
|
|
234
|
+
* is simply not consulted for calls that are already pre-approved, and that sample happened
|
|
235
|
+
* to exercise only pre-approved tools.
|
|
236
|
+
*
|
|
237
|
+
* KNOWN GAP, stated rather than glossed: the SDK's cache-warming sidechain
|
|
238
|
+
* (`isSidechain: true`) is a real model turn that emits genuine `Bash`/`Glob` calls against
|
|
239
|
+
* the daemon's cwd, with only the RESULT stubbed. `tools: []` does not reach it and this
|
|
240
|
+
* callback is never consulted there. Nothing executes — but that is Claude Code internal
|
|
241
|
+
* behaviour we neither own nor test, which is why the daemon is rooted at a neutral cwd
|
|
242
|
+
* (`scripts/start-agent.sh`), so the warmup probes an empty directory, not a source tree.
|
|
243
|
+
*/
|
|
244
|
+
export function buildCanUseTool(
|
|
245
|
+
/**
|
|
246
|
+
* The tools permitted for THIS job — i.e. the output of `clampAllowedTools`, not the
|
|
247
|
+
* module-wide `ALLOWED_TOOLS`. Required, deliberately: an earlier version closed over
|
|
248
|
+
* `ALLOWED_TOOLS` and so turned a per-job clamp into a union. `clampAllowedTools`
|
|
249
|
+
* narrows to (what the server asked for ∩ ALLOWED_TOOLS); the gate then re-allowed all
|
|
250
|
+
* four regardless, so a job clamped to `get_note` could still execute `search_semantic`.
|
|
251
|
+
* The sets happen to coincide for chat today, which is exactly why it would have gone
|
|
252
|
+
* unnoticed until the first job kind with a narrower allowlist.
|
|
253
|
+
*/
|
|
254
|
+
permitted, onDecision = logToolDecision) {
|
|
255
|
+
const permittedSet = new Set(permitted);
|
|
256
|
+
return async (toolName, input, ctx) => {
|
|
257
|
+
const allowed = permittedSet.has(toolName);
|
|
258
|
+
onDecision(toolName, allowed, ctx?.agentID);
|
|
259
|
+
return allowed
|
|
260
|
+
? { behavior: 'allow', updatedInput: (input ?? {}) }
|
|
261
|
+
: { behavior: 'deny', message: `Tool "${toolName}" is not permitted for a Noesis job.` };
|
|
262
|
+
};
|
|
263
|
+
}
|
|
264
|
+
/** Default sink: stderr, so the daemon log is the evidence for whether the gate ever fires. */
|
|
265
|
+
function logToolDecision(toolName, allowed, agentID) {
|
|
266
|
+
console.error(`[noesis-agent] canUseTool ${allowed ? 'ALLOW' : 'DENY'} ${toolName}${agentID ? ` (agent=${agentID})` : ''}`);
|
|
267
|
+
}
|
|
268
|
+
/**
|
|
269
|
+
* The `options` object handed to sdk.query() — extracted, like buildSdkPrompt above, so
|
|
270
|
+
* the tool boundary is asserted by a test instead of resting on a comment. `tools: []`
|
|
271
|
+
* is the security-relevant field: see the note at its assignment. Takes the MCP-server
|
|
272
|
+
* factory as an argument so a test can supply a stub instead of a real spawn config.
|
|
273
|
+
*/
|
|
274
|
+
export function buildQueryOptions(payload, mcpServersFor) {
|
|
275
|
+
const allowedTools = clampAllowedTools(payload.allowedTools);
|
|
276
|
+
return {
|
|
277
|
+
...(payload.system ? { systemPrompt: payload.system } : {}),
|
|
278
|
+
// Suppress the SDK's built-in tool set entirely (`--tools ""`). Without it the CLI
|
|
279
|
+
// defaults to ALL built-ins — Bash, Read, Write, Edit, Grep, WebSearch — and
|
|
280
|
+
// ALLOWED_TOOLS above does NOT stop them: `allowedTools` is a PERMISSION allowlist,
|
|
281
|
+
// so unlisted tools are un-pre-approved, not absent, and their definitions still
|
|
282
|
+
// reach the model. Worse, the read-only built-ins need no approval at all, so they
|
|
283
|
+
// actually EXECUTE headless: on 2026-08-14 an English-coach Navi grepped this
|
|
284
|
+
// daemon's cwd and returned ~100 strings from the user's source tree (jobs 527/528);
|
|
285
|
+
// only the follow-up file Write stopped, at the permission gate. Unconditional by
|
|
286
|
+
// design — a server-supplied payload must never be able to ask for a filesystem
|
|
287
|
+
// primitive. MCP tools travel a separate channel (`--mcp-config`) and are
|
|
288
|
+
// unaffected: a `use_knowledge_base` Navi still calls search_notes (verified).
|
|
289
|
+
tools: [],
|
|
290
|
+
// Independent second layer — see buildCanUseTool. Covers subagent (`Task`) calls too.
|
|
291
|
+
canUseTool: buildCanUseTool(allowedTools),
|
|
292
|
+
allowedTools,
|
|
293
|
+
// Only spawn the Noesis MCP server when a tool actually survived clamping.
|
|
294
|
+
...(allowedTools.length > 0 ? { mcpServers: mcpServersFor() } : {}),
|
|
295
|
+
maxTurns: clampMaxTurns(payload.maxTurns),
|
|
296
|
+
includePartialMessages: true,
|
|
297
|
+
};
|
|
298
|
+
}
|
|
299
|
+
/** The prompt text for a job, with the fallback used when a payload carries none. */
|
|
300
|
+
export function resolveJobPrompt(payload, kindLabel) {
|
|
301
|
+
return payload.prompt ?? `(${kindLabel} job with empty prompt)`;
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* The ONE place the SDK is invoked. Exported so a test can pass a fake `sdk` and assert
|
|
305
|
+
* what actually reaches `query()`.
|
|
306
|
+
*
|
|
307
|
+
* This exists because of a real gap: the suite pinned `buildQueryOptions` with a
|
|
308
|
+
* power-set mutation battery, but NOTHING pinned the call. Restoring the pre-fix inline
|
|
309
|
+
* options literal here — deleting `tools: []` and `canUseTool` outright — reverted the
|
|
310
|
+
* entire tool boundary with all 79 tests still green. The builder being correct is
|
|
311
|
+
* worthless if the caller stops using it, so both the seam below and the source-fitness
|
|
312
|
+
* test in `agentToolClamp.test.ts` guard this.
|
|
313
|
+
*/
|
|
314
|
+
export function runSdkQuery(sdk, payload, kindLabel, mcpServersFor) {
|
|
315
|
+
return sdk.query({
|
|
316
|
+
prompt: buildSdkPrompt(resolveJobPrompt(payload, kindLabel), payload.images),
|
|
317
|
+
options: buildQueryOptions(payload, mcpServersFor),
|
|
318
|
+
});
|
|
319
|
+
}
|
|
211
320
|
/**
|
|
212
321
|
* Execute a claimed job and stream its output through the sink. Returns the final
|
|
213
322
|
* text. Real mode runs the Claude Agent SDK on the user's subscription; fake mode
|
|
214
323
|
* emits a canned response so the queue plumbing can be verified without a login.
|
|
215
324
|
*/
|
|
216
325
|
async function executeJob(cfg, job, sink) {
|
|
217
|
-
const prompt = job.payload
|
|
218
|
-
const images = job.payload.images;
|
|
326
|
+
const prompt = resolveJobPrompt(job.payload, job.kind);
|
|
219
327
|
if (cfg.fake) {
|
|
220
328
|
const canned = `Noesis local agent (fake mode) processed a "${job.kind}" job. Prompt was: ${prompt.slice(0, 80)}`;
|
|
221
329
|
for (const word of canned.split(' ')) {
|
|
@@ -238,18 +346,7 @@ async function executeJob(cfg, job, sink) {
|
|
|
238
346
|
let finalText = '';
|
|
239
347
|
let sawDelta = false;
|
|
240
348
|
let terminalText = '';
|
|
241
|
-
const
|
|
242
|
-
const stream = sdk.query({
|
|
243
|
-
prompt: buildSdkPrompt(prompt, images),
|
|
244
|
-
options: {
|
|
245
|
-
...(job.payload.system ? { systemPrompt: job.payload.system } : {}),
|
|
246
|
-
allowedTools,
|
|
247
|
-
// Only spawn the Noesis MCP server when a tool actually survived clamping.
|
|
248
|
-
...(allowedTools.length > 0 ? { mcpServers: noesisMcpServers(cfg) } : {}),
|
|
249
|
-
maxTurns: clampMaxTurns(job.payload.maxTurns),
|
|
250
|
-
includePartialMessages: true,
|
|
251
|
-
},
|
|
252
|
-
});
|
|
349
|
+
const stream = runSdkQuery(sdk, job.payload, job.kind, () => noesisMcpServers(cfg));
|
|
253
350
|
// With includePartialMessages the stream carries BOTH incremental `stream_event`
|
|
254
351
|
// deltas AND a terminal `assistant` message holding the whole reply. Taking both
|
|
255
352
|
// would emit the answer twice, so deltas win and the terminal message is only a
|
|
@@ -330,6 +427,13 @@ async function runJob(cfg, job) {
|
|
|
330
427
|
});
|
|
331
428
|
}
|
|
332
429
|
}
|
|
430
|
+
/**
|
|
431
|
+
* The daemon's startup banner line — pulled out of runAgentDaemon() so the printed
|
|
432
|
+
* version string is directly unit-testable without starting the real (infinite) loop.
|
|
433
|
+
*/
|
|
434
|
+
export function startupBanner(cfg) {
|
|
435
|
+
return `[noesis-agent] v${agentVersion()} started (concurrency=${cfg.concurrency}${cfg.fake ? ', FAKE mode' : ''}) → ${cfg.apiBaseUrl}`;
|
|
436
|
+
}
|
|
333
437
|
/** Run the daemon loop until aborted. */
|
|
334
438
|
export async function runAgentDaemon(cfg, signal) {
|
|
335
439
|
// Footgun guard: keep billing on the subscription, not the metered API.
|
|
@@ -337,7 +441,7 @@ export async function runAgentDaemon(cfg, signal) {
|
|
|
337
441
|
console.error('[noesis-agent] WARNING: ANTHROPIC_API_KEY is set — unsetting it so the Claude Agent SDK uses your subscription, not the metered API.');
|
|
338
442
|
delete process.env.ANTHROPIC_API_KEY;
|
|
339
443
|
}
|
|
340
|
-
console.error(
|
|
444
|
+
console.error(startupBanner(cfg));
|
|
341
445
|
const workers = Array.from({ length: cfg.concurrency }, (_, i) => workerLoop(cfg, `worker-${i + 1}`, signal));
|
|
342
446
|
await Promise.all(workers);
|
|
343
447
|
}
|
package/dist/agent/runner.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agent/runner.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"runner.js","sourceRoot":"","sources":["../../src/agent/runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAyC,KAAK,IAAI,EAA2D,MAAM,wBAAwB,CAAC;AAsIjK;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1C;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAejD;AAqBD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CA64F7E;AA0DD;;;;GAIG;AACH,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAYxF;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,YAAY,EACpB,KAAK,GAAE,OAAe,EACtB,kBAAkB,GAAE,OAAe,GAClC,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAigBhF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAI9F;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,EAAE,YAAY,EAAyC,KAAK,IAAI,EAA2D,MAAM,wBAAwB,CAAC;AAsIjK;;;;;;;;;;;;GAYG;AACH,wBAAgB,iBAAiB,CAC/B,QAAQ,EAAE,MAAM,EAChB,KAAK,EAAE,KAAK,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,GAC1C;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,YAAY,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAejD;AAqBD,MAAM,WAAW,YAAY;IAC3B,MAAM,EAAE,YAAY,CAAC;IACrB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,YAAY,GAAG,IAAI,CA64F7E;AA0DD;;;;GAIG;AACH,KAAK,YAAY,GAAG;IAClB,EAAE,EAAE,MAAM,CAAC;IACX,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;IACrB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,MAAM,GAAG,MAAM,EAAE,GAAG,IAAI,CAAC;IACnC,gBAAgB,EAAE,MAAM,GAAG,IAAI,CAAC;CACjC,CAAC;AAEF,sFAAsF;AACtF,wBAAgB,cAAc,CAAC,CAAC,EAAE,IAAI,EAAE,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,YAAY,CAYxF;AAED;;;;GAIG;AACH,wBAAsB,iBAAiB,CACrC,SAAS,EAAE,MAAM,EAAE,EACnB,MAAM,EAAE,OAAO,EACf,MAAM,EAAE,YAAY,EACpB,KAAK,GAAE,OAAe,EACtB,kBAAkB,GAAE,OAAe,GAClC,OAAO,CAAC;IAAE,OAAO,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,CAAC,CAigBhF;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,CAI9F;AA8ED;;;GAGG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,OAAO,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAA;CAAE,GACrE,MAAM,CAkFR;AAED;;GAEG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG;IACvD,WAAW,EAAE,MAAM,CAAC;IACpB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;CACd,CAqBA;AA4SD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,YAAY,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,GAAG,MAAM,CAY/E"}
|
package/dist/tools/index.js
CHANGED
|
@@ -3276,6 +3276,19 @@ function parseCloudKeywords(keywords) {
|
|
|
3276
3276
|
return [];
|
|
3277
3277
|
}
|
|
3278
3278
|
}
|
|
3279
|
+
/**
|
|
3280
|
+
* Serialize a single frontmatter scalar (title/description) via js-yaml so values
|
|
3281
|
+
* containing YAML-significant characters (colons, quotes, etc.) round-trip safely.
|
|
3282
|
+
* lineWidth: -1 disables js-yaml's 80-col folding, which would otherwise turn long
|
|
3283
|
+
* values into a multi-line `>-` block instead of keeping the one-line-per-field style.
|
|
3284
|
+
*/
|
|
3285
|
+
function yamlScalarLine(key, value) {
|
|
3286
|
+
return yaml.dump({ [key]: value }, { lineWidth: -1 }).trimEnd();
|
|
3287
|
+
}
|
|
3288
|
+
/** Serialize a frontmatter list (keywords) the same way, one array entry per line. */
|
|
3289
|
+
function yamlListLines(key, items) {
|
|
3290
|
+
return yaml.dump({ [key]: items }, { lineWidth: -1 }).trimEnd().split('\n');
|
|
3291
|
+
}
|
|
3279
3292
|
/**
|
|
3280
3293
|
* Update frontmatter in file content with new metadata values
|
|
3281
3294
|
* Preserves existing frontmatter structure and only updates specified fields
|
|
@@ -3290,14 +3303,11 @@ export function updateFrontmatter(content, updates) {
|
|
|
3290
3303
|
}
|
|
3291
3304
|
const frontmatterLines = ['---'];
|
|
3292
3305
|
if (updates.title)
|
|
3293
|
-
frontmatterLines.push(
|
|
3306
|
+
frontmatterLines.push(yamlScalarLine('title', updates.title));
|
|
3294
3307
|
if (updates.description)
|
|
3295
|
-
frontmatterLines.push(
|
|
3308
|
+
frontmatterLines.push(yamlScalarLine('description', updates.description));
|
|
3296
3309
|
if (updates.keywords && updates.keywords.length > 0) {
|
|
3297
|
-
frontmatterLines.push('keywords
|
|
3298
|
-
for (const kw of updates.keywords) {
|
|
3299
|
-
frontmatterLines.push(` - ${kw}`);
|
|
3300
|
-
}
|
|
3310
|
+
frontmatterLines.push(...yamlListLines('keywords', updates.keywords));
|
|
3301
3311
|
}
|
|
3302
3312
|
frontmatterLines.push('---');
|
|
3303
3313
|
return frontmatterLines.join('\n') + '\n' + content;
|
|
@@ -3326,24 +3336,21 @@ export function updateFrontmatter(content, updates) {
|
|
|
3326
3336
|
const key = line.substring(0, colonIndex).trim().toLowerCase();
|
|
3327
3337
|
if (key === 'title' && updates.title !== undefined) {
|
|
3328
3338
|
if (!updatedKeys.has('title')) {
|
|
3329
|
-
newLines.push(
|
|
3339
|
+
newLines.push(yamlScalarLine('title', updates.title));
|
|
3330
3340
|
updatedKeys.add('title');
|
|
3331
3341
|
}
|
|
3332
3342
|
lastReplacedKey = 'title';
|
|
3333
3343
|
}
|
|
3334
3344
|
else if (key === 'description' && updates.description !== undefined) {
|
|
3335
3345
|
if (!updatedKeys.has('description')) {
|
|
3336
|
-
newLines.push(
|
|
3346
|
+
newLines.push(yamlScalarLine('description', updates.description));
|
|
3337
3347
|
updatedKeys.add('description');
|
|
3338
3348
|
}
|
|
3339
3349
|
lastReplacedKey = 'description';
|
|
3340
3350
|
}
|
|
3341
3351
|
else if ((key === 'keywords' || key === 'tags') && updates.keywords !== undefined) {
|
|
3342
3352
|
if (!updatedKeys.has('keywords')) {
|
|
3343
|
-
newLines.push('keywords
|
|
3344
|
-
for (const kw of updates.keywords) {
|
|
3345
|
-
newLines.push(` - ${kw}`);
|
|
3346
|
-
}
|
|
3353
|
+
newLines.push(...yamlListLines('keywords', updates.keywords));
|
|
3347
3354
|
updatedKeys.add('keywords');
|
|
3348
3355
|
}
|
|
3349
3356
|
lastReplacedKey = 'keywords';
|
|
@@ -3355,16 +3362,13 @@ export function updateFrontmatter(content, updates) {
|
|
|
3355
3362
|
}
|
|
3356
3363
|
// Add any new keys that weren't in original frontmatter
|
|
3357
3364
|
if (updates.title !== undefined && !updatedKeys.has('title')) {
|
|
3358
|
-
newLines.push(
|
|
3365
|
+
newLines.push(yamlScalarLine('title', updates.title));
|
|
3359
3366
|
}
|
|
3360
3367
|
if (updates.description !== undefined && !updatedKeys.has('description')) {
|
|
3361
|
-
newLines.push(
|
|
3368
|
+
newLines.push(yamlScalarLine('description', updates.description));
|
|
3362
3369
|
}
|
|
3363
3370
|
if (updates.keywords !== undefined && !updatedKeys.has('keywords')) {
|
|
3364
|
-
newLines.push('keywords
|
|
3365
|
-
for (const kw of updates.keywords) {
|
|
3366
|
-
newLines.push(` - ${kw}`);
|
|
3367
|
-
}
|
|
3371
|
+
newLines.push(...yamlListLines('keywords', updates.keywords));
|
|
3368
3372
|
}
|
|
3369
3373
|
return '---\n' + newLines.filter(l => l.trim() !== '').join('\n') + '\n---\n' + bodyContent;
|
|
3370
3374
|
}
|