Files
agent-radar 2ed3415fb7
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
源码快照 @ 2026-09-01 (source-only, 剔除非源码素材)
2026-09-01 20:17:27 +08:00

184 lines
5.6 KiB
JavaScript
Executable File

#!/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`);
}