@map-audio/pam-mcp-server 1.25.0 → 1.28.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/README.md +32 -10
- package/dist/audioAnalysis.d.ts +1 -1
- package/dist/audioAnalysis.js +3 -4
- package/dist/audioAnalysis.js.map +1 -1
- package/dist/bridge.d.ts +5 -1
- package/dist/bridge.js +48 -48
- package/dist/bridge.js.map +1 -1
- package/dist/daemon.d.ts +32 -0
- package/dist/daemon.js +871 -0
- package/dist/daemon.js.map +7 -0
- package/dist/drumSynth.d.ts +12 -0
- package/dist/drumSynth.js +15 -3
- package/dist/drumSynth.js.map +1 -1
- package/dist/drumSynthEngines.json +9 -1
- package/dist/{fgemma-format.d.ts → functiongemma-format.d.ts} +25 -7
- package/dist/{fgemma-format.js → functiongemma-format.js} +34 -11
- package/dist/functiongemma-format.js.map +1 -0
- package/dist/functiongemma-grammar.d.ts +14 -0
- package/dist/functiongemma-grammar.js +140 -0
- package/dist/functiongemma-grammar.js.map +1 -0
- package/dist/functiongemma-params.d.ts +33 -0
- package/dist/functiongemma-params.js +128 -0
- package/dist/functiongemma-params.js.map +1 -0
- package/dist/{fgemma-runner.d.ts → functiongemma-runner.d.ts} +8 -5
- package/dist/{fgemma-runner.js → functiongemma-runner.js} +107 -25
- package/dist/functiongemma-runner.js.map +1 -0
- package/dist/generated/kvWriteOptions.d.ts +20 -0
- package/dist/generated/kvWriteOptions.js +45 -0
- package/dist/generated/kvWriteOptions.js.map +1 -0
- package/dist/generated/variationSnapshot.js +0 -19
- package/dist/generated/variationSnapshot.js.map +1 -1
- package/dist/generativePlayerPresets.json +9 -0
- package/dist/generativePlayers.json +15 -1
- package/dist/launcher.d.ts +2 -0
- package/dist/launcher.js +36 -0
- package/dist/launcher.js.map +1 -0
- package/dist/manifest-mfx.json +12944 -311
- package/dist/manifest-msq.json +11446 -0
- package/dist/manifest.d.ts +2 -0
- package/dist/manifest.js +12 -27
- package/dist/manifest.js.map +1 -1
- package/dist/manifest.json +37047 -6487
- package/dist/mfxCombos.d.ts +2 -0
- package/dist/mfxCombos.js +179 -56
- package/dist/mfxCombos.js.map +1 -1
- package/dist/midiFile.d.ts +20 -6
- package/dist/midiFile.js +22 -14
- package/dist/midiFile.js.map +1 -1
- package/dist/mixAssist.d.ts +35 -0
- package/dist/mixAssist.js +250 -21
- package/dist/mixAssist.js.map +1 -1
- package/dist/patternLanes.d.ts +40 -0
- package/dist/patternLanes.js +108 -0
- package/dist/patternLanes.js.map +1 -0
- package/dist/players.d.ts +22 -0
- package/dist/players.js +70 -0
- package/dist/players.js.map +1 -1
- package/dist/presetSave.d.ts +3 -0
- package/dist/presetSave.js +13 -0
- package/dist/presetSave.js.map +1 -1
- package/dist/productProfile.d.ts +4 -4
- package/dist/productProfile.js +10 -1
- package/dist/productProfile.js.map +1 -1
- package/dist/qwen-format.d.ts +85 -0
- package/dist/qwen-format.js +355 -0
- package/dist/qwen-format.js.map +1 -0
- package/dist/registration.mjs +41 -0
- package/dist/server.js +2112 -470
- package/dist/server.js.map +1 -1
- package/dist/targetDenylist.json +20 -0
- package/dist/variationSessionKeys.json +7 -5
- package/package.json +13 -7
- package/dist/fgemma-format.js.map +0 -1
- package/dist/fgemma-runner.js.map +0 -1
- package/dist/manifest-cell1.json +0 -12968
|
@@ -1,20 +1,23 @@
|
|
|
1
1
|
#!/usr/bin/env node
|
|
2
2
|
/**
|
|
3
3
|
* PAM FunctionGemma runner — drives a (fine-tuned) FunctionGemma model against
|
|
4
|
-
* the PAM MCP server using the model's native wire format (
|
|
4
|
+
* the PAM MCP server using the model's native wire format (functiongemma-format.ts),
|
|
5
5
|
* NOT the OpenAI chat+tools API: raw /completions + our own renderer/parser is
|
|
6
6
|
* deterministic and byte-matches training (agent.ts remains the big-model
|
|
7
7
|
* OpenAI-style baseline harness).
|
|
8
8
|
*
|
|
9
9
|
* Modes:
|
|
10
|
-
* REPL (default) npx tsx src/
|
|
11
|
-
* Offline eval ... --eval ../
|
|
12
|
-
* Live e2e ... --live ../
|
|
10
|
+
* REPL (default) npx tsx src/functiongemma-runner.ts [--url http://localhost:1234/v1] [--model id]
|
|
11
|
+
* Offline eval ... --eval ../ml-research/out/dev.jsonl --out ../ml-research/out/predictions.jsonl
|
|
12
|
+
* Live e2e ... --live ../ml-research/data/seeds/live_scenarios.jsonl [--gold]
|
|
13
13
|
*
|
|
14
14
|
* Flags: --toolpack <path> --bos text|none (default none; use text if the
|
|
15
15
|
* serving layer does NOT add BOS itself) --max-tokens N --final (generate a
|
|
16
16
|
* model NL summary after write-tool calls; read-tools always continue)
|
|
17
17
|
* --no-ctx (skip the live [ctx] session line).
|
|
18
|
+
* --grammar [--grammar-mode lazy|full] constrains calls to the toolpack's GBNF (functiongemma-grammar.ts);
|
|
19
|
+
* --probs [K] records P(first token = <start_function_call>) per eval row from a one-token probe;
|
|
20
|
+
* --token-probs streams the main request and records each generated token's [id, logprob, text].
|
|
18
21
|
*
|
|
19
22
|
* Session context (dataset v3): each command's user turn is prefixed with the
|
|
20
23
|
* [ctx] state line built live from the bridge (get_transport +
|
|
@@ -22,7 +25,7 @@
|
|
|
22
25
|
* additionally threads the last completed exchanges as history — the same
|
|
23
26
|
* shapes the in-plugin executor produces. Within one command the runner does
|
|
24
27
|
* up to MAX_ROUNDS call→response continuations inside the same model turn
|
|
25
|
-
* (the trained repair/
|
|
28
|
+
* (the trained repair/state_read pattern).
|
|
26
29
|
*/
|
|
27
30
|
import { Client } from "@modelcontextprotocol/sdk/client/index.js";
|
|
28
31
|
import { StdioClientTransport } from "@modelcontextprotocol/sdk/client/stdio.js";
|
|
@@ -30,9 +33,10 @@ import { createInterface } from "node:readline";
|
|
|
30
33
|
import { readFileSync, writeFileSync } from "node:fs";
|
|
31
34
|
import { resolve, dirname } from "node:path";
|
|
32
35
|
import { fileURLToPath } from "node:url";
|
|
33
|
-
import { STOP_SEQUENCES, buildGenerationPrompt, renderFunctionCall, renderFunctionResponse, parseFunctionCalls, truncateAtFabricatedResponse, withContext, } from "./
|
|
36
|
+
import { STOP_SEQUENCES, buildGenerationPrompt, renderFunctionCall, renderFunctionResponse, parseFunctionCalls, truncateAtFabricatedResponse, withContext, } from "./functiongemma-format.js";
|
|
37
|
+
import { CALL_TRIGGER, buildToolGrammar, lazyGrammarRequest } from "./functiongemma-grammar.js";
|
|
34
38
|
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
35
|
-
const DEFAULT_TOOLPACK = resolve(__dirname, "../../
|
|
39
|
+
const DEFAULT_TOOLPACK = resolve(__dirname, "../../ml-research/out/toolpack.json");
|
|
36
40
|
const MAX_ROUNDS = 3;
|
|
37
41
|
const RESULT_TRUNC = 400; // chars of tool-result JSON fed back as function response
|
|
38
42
|
function parseArgs() {
|
|
@@ -53,6 +57,9 @@ function parseArgs() {
|
|
|
53
57
|
outPath: get("--out"),
|
|
54
58
|
livePath: get("--live"),
|
|
55
59
|
gold: a.includes("--gold"),
|
|
60
|
+
grammar: a.includes("--grammar") ? (get("--grammar-mode") || "lazy") : null,
|
|
61
|
+
probs: a.includes("--probs") ? Number(/^\d+$/.test(get("--probs") ?? "") ? get("--probs") : 20) : 0,
|
|
62
|
+
tokenProbs: a.includes("--token-probs"),
|
|
56
63
|
};
|
|
57
64
|
}
|
|
58
65
|
const config = parseArgs();
|
|
@@ -73,8 +80,10 @@ function resolveAlias(call, pack) {
|
|
|
73
80
|
}
|
|
74
81
|
const READ_TOOL_RE = /^(get_|list_|connection_status)/;
|
|
75
82
|
// --- generation ----------------------------------------------------------
|
|
83
|
+
let grammarFields = {};
|
|
76
84
|
async function complete(prompt) {
|
|
77
85
|
const t0 = Date.now();
|
|
86
|
+
const stream = config.tokenProbs;
|
|
78
87
|
const resp = await fetch(`${config.url}/completions`, {
|
|
79
88
|
method: "POST",
|
|
80
89
|
headers: { "Content-Type": "application/json" },
|
|
@@ -84,13 +93,58 @@ async function complete(prompt) {
|
|
|
84
93
|
max_tokens: config.maxTokens,
|
|
85
94
|
temperature: 0,
|
|
86
95
|
stop: STOP_SEQUENCES,
|
|
87
|
-
stream
|
|
96
|
+
stream,
|
|
97
|
+
...(stream ? { n_probs: 1 } : {}),
|
|
98
|
+
...grammarFields,
|
|
88
99
|
}),
|
|
89
100
|
});
|
|
101
|
+
if (!resp.ok)
|
|
102
|
+
throw new Error(`LLM API error ${resp.status}: ${await resp.text()}`);
|
|
103
|
+
if (!stream) {
|
|
104
|
+
const data = (await resp.json());
|
|
105
|
+
return { text: data.choices[0].text, ms: Date.now() - t0 };
|
|
106
|
+
}
|
|
107
|
+
// Streamed chunks carry every token's probability; the final non-streamed response trims them by the stop word.
|
|
108
|
+
let text = "";
|
|
109
|
+
let buffer = "";
|
|
110
|
+
const tokens = [];
|
|
111
|
+
const decoder = new TextDecoder();
|
|
112
|
+
for await (const chunk of resp.body) {
|
|
113
|
+
buffer += decoder.decode(chunk, { stream: true });
|
|
114
|
+
for (let nl = buffer.indexOf("\n"); nl >= 0; nl = buffer.indexOf("\n")) {
|
|
115
|
+
const line = buffer.slice(0, nl).trim();
|
|
116
|
+
buffer = buffer.slice(nl + 1);
|
|
117
|
+
if (!line.startsWith("data:") || line.endsWith("[DONE]"))
|
|
118
|
+
continue;
|
|
119
|
+
const choice = JSON.parse(line.slice(5)).choices?.[0];
|
|
120
|
+
text += choice?.text ?? "";
|
|
121
|
+
for (const t of choice?.logprobs?.content ?? []) {
|
|
122
|
+
tokens.push([t.id, Math.round(t.logprob * 1e4) / 1e4, t.top_logprobs?.[0]?.id === t.id ? t.top_logprobs[0].token : t.token]);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
return { text, ms: Date.now() - t0, tokens };
|
|
127
|
+
}
|
|
128
|
+
/** The unconstrained first-token distribution; a separate request because llama-server trims
|
|
129
|
+
* final-response probs by the stop word's text tokenization, which can eat a short call's first token. */
|
|
130
|
+
async function probeFirstToken(prompt) {
|
|
131
|
+
const t0 = Date.now();
|
|
132
|
+
const resp = await fetch(`${config.url}/completions`, {
|
|
133
|
+
method: "POST",
|
|
134
|
+
headers: { "Content-Type": "application/json" },
|
|
135
|
+
body: JSON.stringify({ model: config.model, prompt, max_tokens: 1, temperature: 0, n_probs: config.probs, stream: false }),
|
|
136
|
+
});
|
|
90
137
|
if (!resp.ok)
|
|
91
138
|
throw new Error(`LLM API error ${resp.status}: ${await resp.text()}`);
|
|
92
139
|
const data = (await resp.json());
|
|
93
|
-
|
|
140
|
+
const top = (data.choices[0].logprobs?.content?.[0]?.top_logprobs ?? []).map((t) => ({
|
|
141
|
+
token: t.token,
|
|
142
|
+
p: Math.exp(t.logprob),
|
|
143
|
+
}));
|
|
144
|
+
if (top.length === 0)
|
|
145
|
+
throw new Error("probe returned no top_logprobs (server too old, or n_probs ignored)");
|
|
146
|
+
const call = top.find((t) => t.token === CALL_TRIGGER);
|
|
147
|
+
return { p_call: call?.p ?? 0, top: top.slice(0, 5), probe_ms: Date.now() - t0 };
|
|
94
148
|
}
|
|
95
149
|
// --- MCP -----------------------------------------------------------------
|
|
96
150
|
async function createMcpClient() {
|
|
@@ -99,7 +153,7 @@ async function createMcpClient() {
|
|
|
99
153
|
args: ["tsx", resolve(__dirname, "server.ts")],
|
|
100
154
|
stderr: "inherit",
|
|
101
155
|
});
|
|
102
|
-
const client = new Client({ name: "pam-
|
|
156
|
+
const client = new Client({ name: "pam-functiongemma-runner", version: "1.0.0" });
|
|
103
157
|
await client.connect(transport);
|
|
104
158
|
return client;
|
|
105
159
|
}
|
|
@@ -191,7 +245,7 @@ async function runCommandExec(userText, tools, client, log, opts = {}) {
|
|
|
191
245
|
const { text: rawFull, ms } = await complete(prompt);
|
|
192
246
|
const raw = truncateAtFabricatedResponse(rawFull);
|
|
193
247
|
if (raw !== rawFull) {
|
|
194
|
-
trace.
|
|
248
|
+
trace.droppedHistory = true;
|
|
195
249
|
log(" (dropped fabricated function-response continuation)");
|
|
196
250
|
}
|
|
197
251
|
const calls = parseFunctionCalls(raw);
|
|
@@ -203,7 +257,7 @@ async function runCommandExec(userText, tools, client, log, opts = {}) {
|
|
|
203
257
|
}
|
|
204
258
|
const unknown = calls.filter((c) => !declared.has(c.name));
|
|
205
259
|
if (unknown.length) {
|
|
206
|
-
trace.
|
|
260
|
+
trace.droppedHistory = true;
|
|
207
261
|
log(` refusing undeclared tool(s): ${unknown.map((c) => c.name).join(", ")}`);
|
|
208
262
|
return trace;
|
|
209
263
|
}
|
|
@@ -213,7 +267,7 @@ async function runCommandExec(userText, tools, client, log, opts = {}) {
|
|
|
213
267
|
for (const call of calls) {
|
|
214
268
|
const signature = `${call.name} ${JSON.stringify(call.arguments)}`;
|
|
215
269
|
if (failedCalls.has(signature)) {
|
|
216
|
-
trace.
|
|
270
|
+
trace.droppedHistory = true;
|
|
217
271
|
log(` stopped — the model repeated a call that already failed (${call.name}).`);
|
|
218
272
|
return trace;
|
|
219
273
|
}
|
|
@@ -221,7 +275,7 @@ async function runCommandExec(userText, tools, client, log, opts = {}) {
|
|
|
221
275
|
const { text, isError } = await execCall(client, call, tools);
|
|
222
276
|
if (isError) {
|
|
223
277
|
failedCalls.add(signature);
|
|
224
|
-
trace.
|
|
278
|
+
trace.droppedHistory = true;
|
|
225
279
|
}
|
|
226
280
|
trace.executed.push({ call, resultText: text, isError });
|
|
227
281
|
log(` → ${text.length > 200 ? text.slice(0, 200) + "…" : text || "(ok)"}`);
|
|
@@ -272,6 +326,23 @@ function historyFromMessages(messages, lastUser) {
|
|
|
272
326
|
}
|
|
273
327
|
return history;
|
|
274
328
|
}
|
|
329
|
+
/** An assistant turn whose own calls came back as errors (a repair row's scripted first try). */
|
|
330
|
+
function failedTurn(messages, index) {
|
|
331
|
+
const names = new Set((messages[index].tool_calls ?? []).map((tc) => tc.function.name));
|
|
332
|
+
for (const m of messages.slice(index + 1)) {
|
|
333
|
+
if (m.role !== "tool")
|
|
334
|
+
break;
|
|
335
|
+
for (const item of Array.isArray(m.content) ? m.content : [m.content]) {
|
|
336
|
+
if (!item || typeof item !== "object")
|
|
337
|
+
continue;
|
|
338
|
+
const { name, response } = item;
|
|
339
|
+
const value = (response ?? item);
|
|
340
|
+
if (name && names.has(name) && typeof value === "object" && value && (value.error || value.isError))
|
|
341
|
+
return true;
|
|
342
|
+
}
|
|
343
|
+
}
|
|
344
|
+
return false;
|
|
345
|
+
}
|
|
275
346
|
async function runEval(tools) {
|
|
276
347
|
const rows = readFileSync(config.evalPath, "utf-8")
|
|
277
348
|
.trim()
|
|
@@ -282,16 +353,15 @@ async function runEval(tools) {
|
|
|
282
353
|
const latencies = [];
|
|
283
354
|
for (let i = 0; i < rows.length; i++) {
|
|
284
355
|
const row = rows[i];
|
|
285
|
-
// Replay to the LAST user turn
|
|
286
|
-
//
|
|
287
|
-
// own [ctx] line inside the user content — nothing to inject here.
|
|
356
|
+
// Replay to the LAST user turn; gold = the first assistant turn after it that did not
|
|
357
|
+
// fail, so a repair row scores the working call. Rows carry their own [ctx] line.
|
|
288
358
|
const lastUser = row.messages.reduce((acc, m, idx) => (m.role === "user" ? idx : acc), -1);
|
|
289
359
|
const user = row.messages[lastUser];
|
|
290
|
-
const firstAssistant = row.messages.
|
|
360
|
+
const firstAssistant = row.messages.find((m, idx) => idx > lastUser && m.role === "assistant" && !failedTurn(row.messages, idx));
|
|
291
361
|
const utterance = String(user?.content ?? "");
|
|
292
362
|
const gold = firstAssistant?.tool_calls
|
|
293
363
|
? firstAssistant.tool_calls.map((tc) => ({ name: tc.function.name, arguments: tc.function.arguments }))
|
|
294
|
-
: null; // null =
|
|
364
|
+
: null; // null = an irrelevance row: no call expected
|
|
295
365
|
// Protocol: always generate against the FULL toolpack (deployment prompt),
|
|
296
366
|
// regardless of the subset recorded in the row.
|
|
297
367
|
const prompt = buildGenerationPrompt(tools, utterance, {
|
|
@@ -300,25 +370,33 @@ async function runEval(tools) {
|
|
|
300
370
|
});
|
|
301
371
|
let raw = "";
|
|
302
372
|
let ms = -1;
|
|
373
|
+
let probs = {};
|
|
374
|
+
let tokenLp = {};
|
|
303
375
|
try {
|
|
304
376
|
const r = await complete(prompt);
|
|
305
377
|
raw = r.text;
|
|
306
378
|
ms = r.ms;
|
|
307
379
|
latencies.push(ms);
|
|
380
|
+
if (r.tokens)
|
|
381
|
+
tokenLp = { token_lp: r.tokens };
|
|
382
|
+
if (config.probs > 0)
|
|
383
|
+
probs = await probeFirstToken(prompt);
|
|
308
384
|
}
|
|
309
385
|
catch (e) {
|
|
310
386
|
raw = `__GENERATION_ERROR__ ${e.message}`;
|
|
311
387
|
}
|
|
312
388
|
const calls = parseFunctionCalls(raw);
|
|
313
|
-
out.push(JSON.stringify({ idx: i, meta: row._meta, utterance, gold, raw, calls, ms }));
|
|
389
|
+
out.push(JSON.stringify({ idx: i, meta: row._meta, utterance, gold, raw, calls, ms, ...probs, ...tokenLp }));
|
|
314
390
|
if ((i + 1) % 25 === 0)
|
|
315
391
|
console.error(`eval ${i + 1}/${rows.length}`);
|
|
316
392
|
}
|
|
317
393
|
writeFileSync(outPath, out.join("\n") + "\n");
|
|
318
394
|
latencies.sort((a, b) => a - b);
|
|
319
395
|
const p = (q) => latencies[Math.min(latencies.length - 1, Math.floor(q * latencies.length))] ?? -1;
|
|
320
|
-
|
|
321
|
-
console.log(
|
|
396
|
+
const total = latencies.reduce((sum, ms) => sum + ms, 0);
|
|
397
|
+
console.log(`wrote ${out.length} predictions -> ${outPath}\nlatency ms p50=${p(0.5)} p95=${p(0.95)} total=${total} (n=${latencies.length})` +
|
|
398
|
+
(config.grammar ? ` grammar=${config.grammar}` : ""));
|
|
399
|
+
console.log("score with: uv run --project packages/ml-research pam-ml scoring calls " + outPath);
|
|
322
400
|
}
|
|
323
401
|
function callMatches(call, tool, argsSubset) {
|
|
324
402
|
if (call.name !== tool)
|
|
@@ -362,7 +440,7 @@ async function runLive(tools) {
|
|
|
362
440
|
let this_ok = false;
|
|
363
441
|
let detail = "";
|
|
364
442
|
const allCalls = trace.rounds.flatMap((r) => r.calls);
|
|
365
|
-
if (ex.kind === "
|
|
443
|
+
if (ex.kind === "irrelevance") {
|
|
366
444
|
this_ok = allCalls.length === 0;
|
|
367
445
|
detail = this_ok ? "" : `emitted ${allCalls.map((c) => c.name).join(",")}`;
|
|
368
446
|
}
|
|
@@ -437,7 +515,7 @@ async function runRepl(tools) {
|
|
|
437
515
|
history: history.slice(-HISTORY_MAX_EXCHANGES),
|
|
438
516
|
failedCalls,
|
|
439
517
|
});
|
|
440
|
-
if (!trace.
|
|
518
|
+
if (!trace.droppedHistory && trace.modelTurn && trace.modelTurn.length <= HISTORY_TURN_MAX_CHARS) {
|
|
441
519
|
history.push({ user: input, model: trace.modelTurn });
|
|
442
520
|
}
|
|
443
521
|
if (trace.finalText)
|
|
@@ -462,6 +540,10 @@ async function runRepl(tools) {
|
|
|
462
540
|
}
|
|
463
541
|
async function main() {
|
|
464
542
|
const tools = loadToolpack();
|
|
543
|
+
if (config.grammar) {
|
|
544
|
+
const grammar = buildToolGrammar(tools, { mode: config.grammar });
|
|
545
|
+
grammarFields = config.grammar === "lazy" ? lazyGrammarRequest(grammar) : { grammar };
|
|
546
|
+
}
|
|
465
547
|
if (config.evalPath)
|
|
466
548
|
return runEval(tools);
|
|
467
549
|
if (config.livePath)
|
|
@@ -472,4 +554,4 @@ main().catch((e) => {
|
|
|
472
554
|
console.error("Fatal:", e.message);
|
|
473
555
|
process.exit(1);
|
|
474
556
|
});
|
|
475
|
-
//# sourceMappingURL=
|
|
557
|
+
//# sourceMappingURL=functiongemma-runner.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"functiongemma-runner.js","sourceRoot":"","sources":["../src/functiongemma-runner.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
export interface KvWriteOptions {
|
|
2
|
+
shouldDispatch: boolean;
|
|
3
|
+
syncKVResources: boolean;
|
|
4
|
+
syncConfigResources: boolean;
|
|
5
|
+
skipFileLoadingIfUnchanged: boolean;
|
|
6
|
+
resyncKVAfterDispatch: boolean;
|
|
7
|
+
updateParameters: boolean;
|
|
8
|
+
clearRecordingSession: boolean;
|
|
9
|
+
broadcastFollowers: boolean;
|
|
10
|
+
}
|
|
11
|
+
/** applyStateUpdate / applyStateDelta: graph dispatch, KV + config sync, followers told. */
|
|
12
|
+
export declare const STATE_UPDATE_KV_OPTIONS: Readonly<KvWriteOptions>;
|
|
13
|
+
/** updateCellConfig: live-polled from cell config KV, so no graph dispatch. */
|
|
14
|
+
export declare const CELL_CONFIG_KV_OPTIONS: Readonly<KvWriteOptions>;
|
|
15
|
+
/** updateEffectConfig: CELL_CONFIG plus the follower broadcast. */
|
|
16
|
+
export declare const EFFECT_CONFIG_KV_OPTIONS: Readonly<KvWriteOptions>;
|
|
17
|
+
/** updateMasterConfig: every master key is live-polled from master_config; a rebuild only risks dropouts. */
|
|
18
|
+
export declare const MASTER_CONFIG_KV_OPTIONS: Readonly<KvWriteOptions>;
|
|
19
|
+
/** updatePattern: sequence lanes adopt the KV publication; parameters and config are untouched. */
|
|
20
|
+
export declare const PATTERN_EDIT_KV_OPTIONS: Readonly<KvWriteOptions>;
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
// GENERATED COPY of shared/kvWriteOptions.ts — do not edit here.
|
|
2
|
+
// Regenerate: node scripts/generate-variation-session-keys.mjs
|
|
3
|
+
/** applyStateUpdate / applyStateDelta: graph dispatch, KV + config sync, followers told. */
|
|
4
|
+
export const STATE_UPDATE_KV_OPTIONS = {
|
|
5
|
+
shouldDispatch: true,
|
|
6
|
+
syncKVResources: true,
|
|
7
|
+
syncConfigResources: true,
|
|
8
|
+
skipFileLoadingIfUnchanged: true,
|
|
9
|
+
resyncKVAfterDispatch: true,
|
|
10
|
+
updateParameters: true,
|
|
11
|
+
clearRecordingSession: true,
|
|
12
|
+
broadcastFollowers: true
|
|
13
|
+
};
|
|
14
|
+
/** updateCellConfig: live-polled from cell config KV, so no graph dispatch. */
|
|
15
|
+
export const CELL_CONFIG_KV_OPTIONS = {
|
|
16
|
+
shouldDispatch: false,
|
|
17
|
+
syncKVResources: true,
|
|
18
|
+
syncConfigResources: true,
|
|
19
|
+
skipFileLoadingIfUnchanged: true,
|
|
20
|
+
resyncKVAfterDispatch: false,
|
|
21
|
+
updateParameters: true,
|
|
22
|
+
clearRecordingSession: false,
|
|
23
|
+
broadcastFollowers: false
|
|
24
|
+
};
|
|
25
|
+
/** updateEffectConfig: CELL_CONFIG plus the follower broadcast. */
|
|
26
|
+
export const EFFECT_CONFIG_KV_OPTIONS = {
|
|
27
|
+
...CELL_CONFIG_KV_OPTIONS,
|
|
28
|
+
broadcastFollowers: true
|
|
29
|
+
};
|
|
30
|
+
/** updateMasterConfig: every master key is live-polled from master_config; a rebuild only risks dropouts. */
|
|
31
|
+
export const MASTER_CONFIG_KV_OPTIONS = {
|
|
32
|
+
...CELL_CONFIG_KV_OPTIONS
|
|
33
|
+
};
|
|
34
|
+
/** updatePattern: sequence lanes adopt the KV publication; parameters and config are untouched. */
|
|
35
|
+
export const PATTERN_EDIT_KV_OPTIONS = {
|
|
36
|
+
shouldDispatch: true,
|
|
37
|
+
syncKVResources: true,
|
|
38
|
+
syncConfigResources: false,
|
|
39
|
+
skipFileLoadingIfUnchanged: true,
|
|
40
|
+
resyncKVAfterDispatch: false,
|
|
41
|
+
updateParameters: false,
|
|
42
|
+
clearRecordingSession: false,
|
|
43
|
+
broadcastFollowers: false
|
|
44
|
+
};
|
|
45
|
+
//# sourceMappingURL=kvWriteOptions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"kvWriteOptions.js","sourceRoot":"","sources":["../../src/generated/kvWriteOptions.ts"],"names":[],"mappings":"AAAA,iEAAiE;AACjE,+DAA+D;AAgB/D,4FAA4F;AAC5F,MAAM,CAAC,MAAM,uBAAuB,GAA6B;IAC/D,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,mBAAmB,EAAE,IAAI;IACzB,0BAA0B,EAAE,IAAI;IAChC,qBAAqB,EAAE,IAAI;IAC3B,gBAAgB,EAAE,IAAI;IACtB,qBAAqB,EAAE,IAAI;IAC3B,kBAAkB,EAAE,IAAI;CACzB,CAAA;AAED,+EAA+E;AAC/E,MAAM,CAAC,MAAM,sBAAsB,GAA6B;IAC9D,cAAc,EAAE,KAAK;IACrB,eAAe,EAAE,IAAI;IACrB,mBAAmB,EAAE,IAAI;IACzB,0BAA0B,EAAE,IAAI;IAChC,qBAAqB,EAAE,KAAK;IAC5B,gBAAgB,EAAE,IAAI;IACtB,qBAAqB,EAAE,KAAK;IAC5B,kBAAkB,EAAE,KAAK;CAC1B,CAAA;AAED,mEAAmE;AACnE,MAAM,CAAC,MAAM,wBAAwB,GAA6B;IAChE,GAAG,sBAAsB;IACzB,kBAAkB,EAAE,IAAI;CACzB,CAAA;AAED,6GAA6G;AAC7G,MAAM,CAAC,MAAM,wBAAwB,GAA6B;IAChE,GAAG,sBAAsB;CAC1B,CAAA;AAED,mGAAmG;AACnG,MAAM,CAAC,MAAM,uBAAuB,GAA6B;IAC/D,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;IACrB,mBAAmB,EAAE,KAAK;IAC1B,0BAA0B,EAAE,IAAI;IAChC,qBAAqB,EAAE,KAAK;IAC5B,gBAAgB,EAAE,KAAK;IACvB,qBAAqB,EAAE,KAAK;IAC5B,kBAAkB,EAAE,KAAK;CAC1B,CAAA"}
|
|
@@ -1,24 +1,5 @@
|
|
|
1
1
|
// GENERATED COPY of shared/variationSnapshot.ts — do not edit here.
|
|
2
2
|
// Regenerate: node scripts/generate-variation-session-keys.mjs
|
|
3
|
-
// The variation-snapshot shaping both save paths run.
|
|
4
|
-
//
|
|
5
|
-
// The UI (interface/src/interop.ts) and MCP (packages/mcp-server) both shape
|
|
6
|
-
// through here, because two implementations drift: the MCP side was missing 16
|
|
7
|
-
// session keys, the visual-param strip and the LFO-generator reconcile, so a
|
|
8
|
-
// variation saved over MCP was not the same bytes as one saved from the window.
|
|
9
|
-
//
|
|
10
|
-
// This is the PURE half. It takes state plus the contract data and returns the
|
|
11
|
-
// shaped snapshot, so both callers produce identical bytes for identical input
|
|
12
|
-
// (pinned by interface/test/variationSnapshotParity.test.ts).
|
|
13
|
-
//
|
|
14
|
-
// The IMPURE half stays per-caller and is genuinely different: the UI can await
|
|
15
|
-
// `refreshLoadedPluginStateBlobs()` and stamp hosted-plugin identity/bypass from
|
|
16
|
-
// `pluginHostStore`; the headless bridge cannot reach either, and says so on the
|
|
17
|
-
// save result instead of writing a silently lossy slot.
|
|
18
|
-
//
|
|
19
|
-
// GENERATED COPY: packages/mcp-server/src/generated/variationSnapshot.ts is
|
|
20
|
-
// produced from this file by scripts/generate-variation-session-keys.mjs.
|
|
21
|
-
// Edit THIS file; the drift check fails if the copy is stale.
|
|
22
3
|
/**
|
|
23
4
|
* Force each `lfo{g}_enabled` flag to match whether that generator still has a
|
|
24
5
|
* live link.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"variationSnapshot.js","sourceRoot":"","sources":["../../src/generated/variationSnapshot.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,+DAA+D;
|
|
1
|
+
{"version":3,"file":"variationSnapshot.js","sourceRoot":"","sources":["../../src/generated/variationSnapshot.ts"],"names":[],"mappings":"AAAA,oEAAoE;AACpE,+DAA+D;AA+C/D;;;;;;;GAOG;AACH,MAAM,UAAU,iCAAiC,CAC/C,QAAiC,EACjC,iBAAyB;IAEzB,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,OAAM;IACzC,MAAM,IAAI,GAAG,QAAQ,CAAC,IAAiB,CAAA;IAEvC,KAAK,IAAI,cAAc,GAAG,CAAC,EAAE,cAAc,IAAI,iBAAiB,EAAE,cAAc,EAAE,EAAE,CAAC;QACnF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAC/B,CAAC,GAAG,EAAE,EAAE,CACN,GAAG,EAAE,iBAAiB,KAAK,cAAc;YACzC,CAAC,GAAG,EAAE,OAAO,IAAI,CAAC,CAAC,KAAK,CAAC;YACzB,OAAO,GAAG,EAAE,OAAO,KAAK,QAAQ;YAChC,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CACzB,CAAA;QACD,QAAQ,CAAC,MAAM,cAAc,UAAU,CAAC,GAAG,eAAe,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAA;IACpE,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CACxC,KAA8B,EAC9B,QAAmC,EACnC,UAAoC,EAAE;IAEtC,MAAM,QAAQ,GAA4B,EAAE,GAAG,KAAK,EAAE,CAAA;IAEtD,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,WAAW;QAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC5D,KAAK,MAAM,GAAG,IAAI,QAAQ,CAAC,aAAa;QAAE,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAA;IAC9D,OAAO,QAAQ,CAAC,gBAAgB,CAAA;IAChC,KAAK,MAAM,OAAO,IAAI,QAAQ,CAAC,cAAc;QAAE,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAA;IACvE,IAAI,OAAO,CAAC,WAAW;QAAE,OAAO,QAAQ,CAAC,IAAI,CAAA;IAE7C,iCAAiC,CAAC,QAAQ,EAAE,QAAQ,CAAC,iBAAiB,CAAC,CAAA;IACvE,OAAO,QAAQ,CAAA;AACjB,CAAC"}
|
|
@@ -65,6 +65,15 @@
|
|
|
65
65
|
{ "name": "Filled In", "density": 0.72, "mutate": 0, "p": [0.35, 0.5] },
|
|
66
66
|
{ "name": "Breathing", "density": 0.5, "mutate": 0.35, "p": [0.5, 0.4] },
|
|
67
67
|
{ "name": "Skeleton", "density": 0.16, "mutate": 0.12, "p": [0.9, 0.85] }
|
|
68
|
+
],
|
|
69
|
+
"10": [
|
|
70
|
+
{ "name": "Conga Tumbao", "density": 0.7, "mutate": 0, "p": [0, 0, 0, 0.5] },
|
|
71
|
+
{ "name": "Bongo Martillo", "density": 0.7, "mutate": 0, "p": [0.16666666666666666, 0, 0, 0.5] },
|
|
72
|
+
{ "name": "Cascara 3-2", "density": 0.7, "mutate": 0, "p": [0.3333333333333333, 0, 0, 0.5] },
|
|
73
|
+
{ "name": "Son Clave 3-2", "density": 0.7, "mutate": 0, "p": [0.5, 0, 0, 0.5] },
|
|
74
|
+
{ "name": "Djembe Kuku", "density": 0.7, "mutate": 0, "p": [0.6666666666666666, 0, 0, 0.5] },
|
|
75
|
+
{ "name": "Darbuka Maqsum", "density": 0.7, "mutate": 0, "p": [0.8333333333333334, 0, 0, 0.5] },
|
|
76
|
+
{ "name": "Tabla Keherwa", "density": 0.7, "mutate": 0, "p": [1, 0, 0, 0.5] }
|
|
68
77
|
]
|
|
69
78
|
}
|
|
70
79
|
}
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"tag": "melodic",
|
|
66
66
|
"replay": true,
|
|
67
67
|
"doc": "Order-1 chain over scale-degree intervals learned from the cell's own drawn pattern, blended toward the metric-hierarchy prior when the clip is thin. P2 is the temperature (argmax replay to uniform).",
|
|
68
|
-
"blurb": "Learns from the pattern you drew and improvises around it. Fidelity holds the line,
|
|
68
|
+
"blurb": "Learns from the pattern you drew and improvises around it. Fidelity holds the line, Freedom loosens it.",
|
|
69
69
|
"defaults": { "density": 0.6, "mutate": 0.3 },
|
|
70
70
|
"slots": [
|
|
71
71
|
{ "label": "Fidelity", "default": 0.7, "hint": "How closely it follows the pattern it learnt" },
|
|
@@ -129,6 +129,20 @@
|
|
|
129
129
|
{ "label": "Accent", "default": 0.5, "hint": "How far the off-beats duck under the strong beats" },
|
|
130
130
|
{ "label": "Gate", "default": 0.35, "hint": "Note length, as a share of the step" }
|
|
131
131
|
]
|
|
132
|
+
},
|
|
133
|
+
"10": {
|
|
134
|
+
"name": "PERC",
|
|
135
|
+
"tag": "drum",
|
|
136
|
+
"replay": false,
|
|
137
|
+
"doc": "A hand drum's traditional part from the idiom table in shared/randomizer/patternBank.json (#1138), the same parts the pattern dice writes for a perc cell holding that drum. Drum picks the family (its detents are that table's order), Rhythm the form within it, wrapping where a family has fewer. The part's own strokes are its gate weights, accent over hit over ghost, so density thins ghosts first and the accents go last. Ghosts adds low strokes on the empty 16ths and, under each hit, an inverse twin that sounds once density takes the hit; Feel pushes or drags the whole part; MUTATE jitters the weights per cycle.",
|
|
138
|
+
"blurb": "Plays a hand drum's traditional part: tumbao, martillo, cascara, clave, kuku, maqsum, keherwa. Pick the drum, then the rhythm.",
|
|
139
|
+
"defaults": { "density": 0.7, "mutate": 0.0 },
|
|
140
|
+
"slots": [
|
|
141
|
+
{ "label": "Drum", "default": 0.0, "steps": 7, "stepLabels": ["Conga", "Bongo", "Timbale", "Clave", "Djembe", "Darbuka", "Tabla"] },
|
|
142
|
+
{ "label": "Rhythm", "default": 0.0, "steps": 5, "stepLabels": ["1", "2", "3", "4", "5"] },
|
|
143
|
+
{ "label": "Ghosts", "default": 0.0, "hint": "How many quiet extra strokes fill the gaps" },
|
|
144
|
+
{ "label": "Feel", "default": 0.5, "center": true, "hint": "Drag behind or push ahead of the beat — the centre is straight" }
|
|
145
|
+
]
|
|
132
146
|
}
|
|
133
147
|
}
|
|
134
148
|
}
|
package/dist/launcher.js
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { spawn } from "node:child_process";
|
|
3
|
+
import { existsSync, readFileSync } from "node:fs";
|
|
4
|
+
import { dirname, isAbsolute, resolve } from "node:path";
|
|
5
|
+
import { fileURLToPath } from "node:url";
|
|
6
|
+
const args = process.argv.slice(2);
|
|
7
|
+
if (args.includes("--version") || args.includes("-v")) {
|
|
8
|
+
const metadata = JSON.parse(readFileSync(resolve(dirname(fileURLToPath(import.meta.url)), "../package.json"), "utf8"));
|
|
9
|
+
console.log(metadata.version);
|
|
10
|
+
}
|
|
11
|
+
else {
|
|
12
|
+
const configured = process.env.PAM_CLI_EXECUTABLE;
|
|
13
|
+
if (configured && !isAbsolute(configured))
|
|
14
|
+
throw new Error("PAM_CLI_EXECUTABLE must be absolute");
|
|
15
|
+
const installed = "/Library/Application Support/MAP Audio/PAM/bin/pam";
|
|
16
|
+
const executable = configured ?? (process.platform === "darwin" && existsSync(installed) ? installed : "pam");
|
|
17
|
+
const child = spawn(executable, ["mcp", ...args], { stdio: "inherit" });
|
|
18
|
+
const forward = (signal) => child.kill(signal);
|
|
19
|
+
process.on("SIGINT", forward);
|
|
20
|
+
process.on("SIGTERM", forward);
|
|
21
|
+
child.on("error", (error) => {
|
|
22
|
+
process.off("SIGINT", forward);
|
|
23
|
+
process.off("SIGTERM", forward);
|
|
24
|
+
if (!configured && error.code === "ENOENT") {
|
|
25
|
+
console.error("[pam-mcp] no installed pam CLI; running the bundled PAM MCP server");
|
|
26
|
+
void import("./server.js");
|
|
27
|
+
return;
|
|
28
|
+
}
|
|
29
|
+
console.error(`plugin_unavailable: install a current PAM with pam mcp, or set PAM_CLI_EXECUTABLE to its absolute path (${error.message})`);
|
|
30
|
+
process.exitCode = 1;
|
|
31
|
+
});
|
|
32
|
+
child.on("exit", (code, signal) => {
|
|
33
|
+
process.exitCode = code ?? (signal ? 1 : 0);
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
//# sourceMappingURL=launcher.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"launcher.js","sourceRoot":"","sources":["../src/launcher.ts"],"names":[],"mappings":";AACA,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAC;AAC3C,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AAEzC,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,IAAI,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;IACtD,MAAM,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,iBAAiB,CAAC,EAAE,MAAM,CAAC,CAAC,CAAC;IACvH,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;AAChC,CAAC;KAAM,CAAC;IACN,MAAM,UAAU,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,CAAC;IAClD,IAAI,UAAU,IAAI,CAAC,UAAU,CAAC,UAAU,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IAClG,MAAM,SAAS,GAAG,oDAAoD,CAAC;IACvE,MAAM,UAAU,GAAG,UAAU,IAAI,CAAC,OAAO,CAAC,QAAQ,KAAK,QAAQ,IAAI,UAAU,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;IAC9G,MAAM,KAAK,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,GAAG,IAAI,CAAC,EAAE,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,CAAC;IACxE,MAAM,OAAO,GAAG,CAAC,MAAsB,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/D,OAAO,CAAC,EAAE,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IAC9B,OAAO,CAAC,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;IAC/B,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;QACjD,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,SAAS,EAAE,OAAO,CAAC,CAAC;QAChC,IAAI,CAAC,UAAU,IAAI,KAAK,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;YAC3C,OAAO,CAAC,KAAK,CAAC,oEAAoE,CAAC,CAAC;YACpF,KAAK,MAAM,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO;QACT,CAAC;QACD,OAAO,CAAC,KAAK,CAAC,2GAA2G,KAAK,CAAC,OAAO,GAAG,CAAC,CAAC;QAC3I,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACvB,CAAC,CAAC,CAAC;IACH,KAAK,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE;QAChC,OAAO,CAAC,QAAQ,GAAG,IAAI,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;AACL,CAAC"}
|