源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
Publish Claude Code Binaries / Stage and publish binaries (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-arm64 (push) Canceled after 0s
Publish Tutti App Runtime / Build darwin-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build linux-amd64 (push) Canceled after 0s
Publish Tutti App Runtime / Build windows-amd64 (push) Canceled after 0s
Sync Tutti Agent Skills / sync (push) Canceled after 0s
Windows Agent Adapters / Test Windows agent adapters (push) Canceled after 0s
Windows Daemon Adapters / Test Windows daemon adapters (push) Canceled after 0s
Publish Tutti App Runtime / Publish runtime catalog (push) Canceled after 0s
This commit is contained in:
+183
@@ -0,0 +1,183 @@
|
||||
#!/usr/bin/env node
|
||||
import process from "node:process";
|
||||
import readline from "node:readline";
|
||||
|
||||
const args = process.argv.slice(2);
|
||||
|
||||
if (args.includes("about")) {
|
||||
process.stdout.write(
|
||||
`${JSON.stringify({
|
||||
cliVersion: "tutti-perf-fixture",
|
||||
subscriptionTier: "Fixture",
|
||||
userEmail: "performance-fixture@localhost"
|
||||
})}\n`
|
||||
);
|
||||
} else if (args.includes("--version") || args.includes("version")) {
|
||||
process.stdout.write("cursor-agent tutti-perf-fixture\n");
|
||||
} else if (args.includes("acp")) {
|
||||
runACPFixture();
|
||||
} else {
|
||||
process.stdout.write("Logged in as performance-fixture@localhost\n");
|
||||
}
|
||||
|
||||
function runACPFixture() {
|
||||
const input = readline.createInterface({ input: process.stdin });
|
||||
let canceled = false;
|
||||
let activeSessionId = "tutti-perf-cursor-session";
|
||||
input.on("line", (line) => {
|
||||
void handleMessage(line).catch((error) => {
|
||||
process.stderr.write(`${error.stack ?? error.message}\n`);
|
||||
process.exitCode = 1;
|
||||
});
|
||||
});
|
||||
|
||||
async function handleMessage(line) {
|
||||
const message = JSON.parse(line);
|
||||
switch (message.method) {
|
||||
case "initialize":
|
||||
respond(message.id, {
|
||||
protocolVersion: 1,
|
||||
agentInfo: { name: "tutti-perf-cursor", title: "Tutti Perf Cursor" },
|
||||
agentCapabilities: { loadSession: true }
|
||||
});
|
||||
return;
|
||||
case "session/new":
|
||||
activeSessionId =
|
||||
message.params?.sessionId?.trim?.() || activeSessionId;
|
||||
respond(message.id, {
|
||||
configOptions: [],
|
||||
sessionId: activeSessionId
|
||||
});
|
||||
return;
|
||||
case "session/load":
|
||||
case "session/resume":
|
||||
activeSessionId =
|
||||
message.params?.sessionId?.trim?.() || activeSessionId;
|
||||
respond(message.id, { configOptions: [] });
|
||||
return;
|
||||
case "session/set_mode":
|
||||
case "session/set_config_option":
|
||||
respond(message.id, { configOptions: [] });
|
||||
return;
|
||||
case "session/cancel":
|
||||
canceled = true;
|
||||
return;
|
||||
case "session/prompt":
|
||||
activeSessionId =
|
||||
message.params?.sessionId?.trim?.() || activeSessionId;
|
||||
canceled = false;
|
||||
await streamPrompt(message.id, fixtureExpectedToken(message.params));
|
||||
return;
|
||||
default:
|
||||
if (message.id !== undefined) {
|
||||
write({
|
||||
jsonrpc: "2.0",
|
||||
id: message.id,
|
||||
error: {
|
||||
code: -32601,
|
||||
message: `method not found: ${message.method}`
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
async function streamPrompt(promptID, expectedToken) {
|
||||
const oversizedToolCallCount = Number.parseInt(
|
||||
process.env.TUTTI_PERF_OVERSIZED_TOOL_CALLS ?? "",
|
||||
10
|
||||
);
|
||||
if (Number.isFinite(oversizedToolCallCount) && oversizedToolCallCount > 0) {
|
||||
await streamOversizedToolCalls(promptID, oversizedToolCallCount);
|
||||
return;
|
||||
}
|
||||
for (let index = 0; index < 48 && !canceled; index += 1) {
|
||||
notify("session/update", {
|
||||
sessionId: activeSessionId,
|
||||
update: {
|
||||
sessionUpdate: "agent_message_chunk",
|
||||
content: {
|
||||
type: "text",
|
||||
text: `Virtualized streaming fixture chunk ${String(index + 1).padStart(2, "0")}: ${"layout-safe-content ".repeat(8)}\n\n`
|
||||
}
|
||||
}
|
||||
});
|
||||
await new Promise((resolve) => setTimeout(resolve, 30));
|
||||
}
|
||||
if (expectedToken && !canceled) {
|
||||
notify("session/update", {
|
||||
sessionId: activeSessionId,
|
||||
update: {
|
||||
sessionUpdate: "agent_message_chunk",
|
||||
content: { type: "text", text: expectedToken }
|
||||
}
|
||||
});
|
||||
}
|
||||
respond(promptID, { stopReason: canceled ? "canceled" : "end_turn" });
|
||||
}
|
||||
|
||||
async function streamOversizedToolCalls(promptID, toolCallCount) {
|
||||
for (let index = 0; index < toolCallCount && !canceled; index += 1) {
|
||||
const toolCallId = `tutti-perf-oversized-tool-${index}`;
|
||||
const title = `Inspect fixture path ${index + 1}`;
|
||||
notify("session/update", {
|
||||
sessionId: activeSessionId,
|
||||
update: {
|
||||
sessionUpdate: "tool_call",
|
||||
toolCallId,
|
||||
title,
|
||||
kind: "execute",
|
||||
status: "pending",
|
||||
rawInput: {
|
||||
command: `printf oversized-tool-${index + 1}`
|
||||
}
|
||||
}
|
||||
});
|
||||
notify("session/update", {
|
||||
sessionId: activeSessionId,
|
||||
update: {
|
||||
sessionUpdate: "tool_call_update",
|
||||
toolCallId,
|
||||
title,
|
||||
kind: "execute",
|
||||
status: "completed",
|
||||
rawOutput: {
|
||||
output: `oversized tool ${index + 1} completed`
|
||||
}
|
||||
}
|
||||
});
|
||||
await new Promise((resolve) => setTimeout(resolve, 12));
|
||||
}
|
||||
for (let index = 0; index < 100 && !canceled; index += 1) {
|
||||
await new Promise((resolve) => setTimeout(resolve, 100));
|
||||
}
|
||||
respond(promptID, { stopReason: canceled ? "canceled" : "end_turn" });
|
||||
}
|
||||
}
|
||||
|
||||
function fixtureExpectedToken(params) {
|
||||
const prefix = "Reply with exactly this text: ";
|
||||
const text = collectText(params?.prompt ?? params?.content);
|
||||
const index = text.indexOf(prefix);
|
||||
return index < 0 ? "" : text.slice(index + prefix.length).trim();
|
||||
}
|
||||
|
||||
function collectText(value) {
|
||||
if (typeof value === "string") return value;
|
||||
if (Array.isArray(value)) return value.map(collectText).join("");
|
||||
if (!value || typeof value !== "object") return "";
|
||||
if (typeof value.text === "string") return value.text;
|
||||
return Object.values(value).map(collectText).join("");
|
||||
}
|
||||
|
||||
function respond(id, result) {
|
||||
write({ jsonrpc: "2.0", id, result });
|
||||
}
|
||||
|
||||
function notify(method, params) {
|
||||
write({ jsonrpc: "2.0", method, params });
|
||||
}
|
||||
|
||||
function write(value) {
|
||||
process.stdout.write(`${JSON.stringify(value)}\n`);
|
||||
}
|
||||
Reference in New Issue
Block a user