@rubytech/create-maxy-code 0.1.457 → 0.1.459
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/package.json +1 -1
- package/payload/platform/lib/mcp-lifeline/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/mcp-lifeline/dist/index.js +22 -1
- package/payload/platform/lib/mcp-lifeline/dist/index.js.map +1 -1
- package/payload/platform/lib/mcp-lifeline/src/__tests__/lifeline.test.ts +26 -0
- package/payload/platform/lib/mcp-lifeline/src/index.ts +24 -1
- package/payload/platform/lib/storage-broker/dist/__tests__/cf-exec.test.js +322 -2
- package/payload/platform/lib/storage-broker/dist/__tests__/cf-exec.test.js.map +1 -1
- package/payload/platform/lib/storage-broker/dist/__tests__/object-limits.test.d.ts +2 -0
- package/payload/platform/lib/storage-broker/dist/__tests__/object-limits.test.d.ts.map +1 -0
- package/payload/platform/lib/storage-broker/dist/__tests__/object-limits.test.js +59 -0
- package/payload/platform/lib/storage-broker/dist/__tests__/object-limits.test.js.map +1 -0
- package/payload/platform/lib/storage-broker/dist/cf-exec.d.ts +12 -1
- package/payload/platform/lib/storage-broker/dist/cf-exec.d.ts.map +1 -1
- package/payload/platform/lib/storage-broker/dist/cf-exec.js +156 -26
- package/payload/platform/lib/storage-broker/dist/cf-exec.js.map +1 -1
- package/payload/platform/lib/storage-broker/dist/house-credential.d.ts.map +1 -1
- package/payload/platform/lib/storage-broker/dist/house-credential.js +8 -2
- package/payload/platform/lib/storage-broker/dist/house-credential.js.map +1 -1
- package/payload/platform/lib/storage-broker/dist/index.d.ts +1 -0
- package/payload/platform/lib/storage-broker/dist/index.d.ts.map +1 -1
- package/payload/platform/lib/storage-broker/dist/index.js +1 -0
- package/payload/platform/lib/storage-broker/dist/index.js.map +1 -1
- package/payload/platform/lib/storage-broker/dist/object-limits.d.ts +53 -0
- package/payload/platform/lib/storage-broker/dist/object-limits.d.ts.map +1 -0
- package/payload/platform/lib/storage-broker/dist/object-limits.js +72 -0
- package/payload/platform/lib/storage-broker/dist/object-limits.js.map +1 -0
- package/payload/platform/lib/storage-broker/src/__tests__/cf-exec.test.ts +362 -3
- package/payload/platform/lib/storage-broker/src/__tests__/object-limits.test.ts +76 -0
- package/payload/platform/lib/storage-broker/src/cf-exec.ts +230 -44
- package/payload/platform/lib/storage-broker/src/house-credential.ts +8 -2
- package/payload/platform/lib/storage-broker/src/index.ts +1 -0
- package/payload/platform/lib/storage-broker/src/object-limits.ts +75 -0
- package/payload/platform/plugins/admin/skills/platform-architecture/SKILL.md +5 -5
- package/payload/platform/plugins/cloudflare/bin/__tests__/cf-token.test.sh +145 -4
- package/payload/platform/plugins/cloudflare/bin/cf-token.sh +61 -3
- package/payload/platform/plugins/cloudflare/references/api.md +1 -1
- package/payload/platform/plugins/cloudflare/skills/cloudflare/SKILL.md +1 -1
- package/payload/platform/plugins/docs/references/outlook-guide.md +4 -4
- package/payload/platform/plugins/outlook/.claude-plugin/plugin.json +1 -1
- package/payload/platform/plugins/outlook/PLUGIN.md +2 -2
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/attach.test.d.ts +2 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/attach.test.d.ts.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/attach.test.js +138 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/attach.test.js.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-attachments.test.d.ts +2 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-attachments.test.d.ts.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-attachments.test.js +121 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-attachments.test.js.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit-attachments.test.d.ts +2 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit-attachments.test.d.ts.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit-attachments.test.js +102 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit-attachments.test.js.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit.test.js +16 -3
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/draft-edit.test.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js +108 -1
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/graph-client.test.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-send-attachments.test.d.ts +2 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-send-attachments.test.d.ts.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-send-attachments.test.js +209 -0
- package/payload/platform/plugins/outlook/mcp/dist/__tests__/mail-send-attachments.test.js.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/index.js +10 -7
- package/payload/platform/plugins/outlook/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/attach.d.ts +37 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/attach.d.ts.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/attach.js +79 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/attach.js.map +1 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts +42 -15
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js +32 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/graph-client.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/message.d.ts +8 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/message.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/message.js +4 -0
- package/payload/platform/plugins/outlook/mcp/dist/lib/message.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/outbound-attachments.d.ts +31 -8
- package/payload/platform/plugins/outlook/mcp/dist/lib/outbound-attachments.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/outbound-attachments.js +40 -13
- package/payload/platform/plugins/outlook/mcp/dist/lib/outbound-attachments.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/upload-session.d.ts +9 -5
- package/payload/platform/plugins/outlook/mcp/dist/lib/upload-session.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/lib/upload-session.js +12 -8
- package/payload/platform/plugins/outlook/mcp/dist/lib/upload-session.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.js +3 -5
- package/payload/platform/plugins/outlook/mcp/dist/tools/calendar-event.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/draft-edit.d.ts +36 -4
- package/payload/platform/plugins/outlook/mcp/dist/tools/draft-edit.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/draft-edit.js +56 -9
- package/payload/platform/plugins/outlook/mcp/dist/tools/draft-edit.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/draft.d.ts +13 -2
- package/payload/platform/plugins/outlook/mcp/dist/tools/draft.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/draft.js +18 -4
- package/payload/platform/plugins/outlook/mcp/dist/tools/draft.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-attachment.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-attachment.js +3 -4
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-attachment.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-fetch-body.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-fetch-body.js +2 -4
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-fetch-body.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-reply.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-reply.js +3 -20
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-reply.js.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-send.d.ts +27 -3
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-send.d.ts.map +1 -1
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-send.js +53 -8
- package/payload/platform/plugins/outlook/mcp/dist/tools/mail-send.js.map +1 -1
- package/payload/platform/plugins/outlook/references/graph-surfaces.md +41 -6
- package/payload/platform/plugins/outlook/skills/outlook/SKILL.md +22 -5
- package/payload/platform/plugins/storage-broker/PLUGIN.md +41 -2
- package/payload/platform/plugins/storage-broker/mcp/dist/__tests__/confine-path.test.d.ts +2 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/__tests__/confine-path.test.d.ts.map +1 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/__tests__/confine-path.test.js +85 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/__tests__/confine-path.test.js.map +1 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/__tests__/put-source.test.d.ts +2 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/__tests__/put-source.test.d.ts.map +1 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/__tests__/put-source.test.js +77 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/__tests__/put-source.test.js.map +1 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/confine-path.d.ts +12 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/confine-path.d.ts.map +1 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/confine-path.js +107 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/confine-path.js.map +1 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/index.js +86 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/index.js.map +1 -1
- package/payload/platform/plugins/storage-broker/mcp/dist/put-source.d.ts +11 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/put-source.d.ts.map +1 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/put-source.js +35 -0
- package/payload/platform/plugins/storage-broker/mcp/dist/put-source.js.map +1 -0
- package/payload/platform/scripts/logs-read-jsonl.test.sh +118 -0
- package/payload/platform/scripts/logs-read.sh +63 -9
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.d.ts.map +1 -1
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js +4 -0
- package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map +1 -1
- package/payload/server/{chunk-F4D35LKL.js → chunk-POBXIHOF.js} +34 -0
- package/payload/server/{chunk-SDYRKIYY.js → chunk-Q6W4U6HL.js} +153 -27
- package/payload/server/maxy-edge.js +1 -1
- package/payload/server/server.js +206 -6
- package/payload/server/{src-554BYJMN.js → src-3I2RYZFB.js} +9 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"confine-path.js","sourceRoot":"","sources":["../src/confine-path.ts"],"names":[],"mappings":"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"}
|
|
@@ -6,10 +6,14 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import { initStderrTee } from "../../../../lib/mcp-stderr-tee/dist/index.js";
|
|
8
8
|
initStderrTee("storage-broker");
|
|
9
|
+
import { writeFileSync } from "node:fs";
|
|
9
10
|
import { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
10
11
|
import { StdioServerTransport } from "@modelcontextprotocol/sdk/server/stdio.js";
|
|
11
12
|
import { z } from "zod";
|
|
12
13
|
import { callApi as rawCallApi } from "./call-api.js";
|
|
14
|
+
import { confineToAccountDir } from "./confine-path.js";
|
|
15
|
+
import { readPutSource } from "./put-source.js";
|
|
16
|
+
import { R2_OBJECT_MAX_BYTES } from "../../../../lib/storage-broker/dist/object-limits.js";
|
|
13
17
|
import { callerScopeHeaders } from "./caller-scope-headers.js";
|
|
14
18
|
import { requirePortEnv } from "../../../../lib/require-port-env/dist/index.js";
|
|
15
19
|
import { lifelineTool } from "../../../../lib/mcp-lifeline/dist/index.js";
|
|
@@ -87,6 +91,88 @@ lifelineTool(server, "storage-r2-bucket-create", "Create a Cloudflare R2 bucket
|
|
|
87
91
|
return textResult(`R2 create failed: ${err}`, true);
|
|
88
92
|
return textResult(`Created R2 bucket ${name}.`);
|
|
89
93
|
});
|
|
94
|
+
// ─── R2 objects (Task 1691) ───────────────────────────────────────────────
|
|
95
|
+
//
|
|
96
|
+
// get/put move bytes through a file rather than the tool result: these objects
|
|
97
|
+
// are photos and scans, and base64 in a tool result would push megabytes into
|
|
98
|
+
// the agent's context window. The file I/O lives here, in this account-scoped
|
|
99
|
+
// process, and never in the house-level route that holds the credential — see
|
|
100
|
+
// confine-path.ts for why that split is the part that matters.
|
|
101
|
+
// ─── storage-r2-object-list ───────────────────────────────────────────────
|
|
102
|
+
lifelineTool(server, "storage-r2-object-list", "List the objects in an R2 bucket your account owns.", {
|
|
103
|
+
bucket: z.string().describe("Bucket name"),
|
|
104
|
+
prefix: z.string().optional().describe("Only list keys starting with this prefix"),
|
|
105
|
+
}, async ({ bucket, prefix }) => {
|
|
106
|
+
const result = await callApi("storage-r2-object-list", "/api/storage/r2/object/list", "POST", { bucket, prefix });
|
|
107
|
+
const err = errorOf(result);
|
|
108
|
+
if (err)
|
|
109
|
+
return textResult(`R2 object list failed: ${err}`, true);
|
|
110
|
+
const objects = result.objects ?? [];
|
|
111
|
+
return textResult(objects.length ? objects.map((o) => `${o.key}\t${o.size}`).join("\n") : "No objects.");
|
|
112
|
+
});
|
|
113
|
+
// ─── storage-r2-object-get ────────────────────────────────────────────────
|
|
114
|
+
lifelineTool(server, "storage-r2-object-get", `Download an object from an R2 bucket your account owns to a file in your account directory. Objects larger than ${R2_OBJECT_MAX_BYTES / 1024 / 1024} MiB are rejected.`, {
|
|
115
|
+
bucket: z.string().describe("Bucket name"),
|
|
116
|
+
key: z.string().describe("Object key"),
|
|
117
|
+
destPath: z.string().describe("Destination file path, inside your account directory"),
|
|
118
|
+
}, async ({ bucket, key, destPath }) => {
|
|
119
|
+
// Confine before the fetch: a rejected destination should cost no download.
|
|
120
|
+
let dest;
|
|
121
|
+
try {
|
|
122
|
+
dest = confineToAccountDir(destPath, false);
|
|
123
|
+
}
|
|
124
|
+
catch (e) {
|
|
125
|
+
return textResult(`R2 object get failed: ${e instanceof Error ? e.message : String(e)}`, true);
|
|
126
|
+
}
|
|
127
|
+
const result = await callApi("storage-r2-object-get", "/api/storage/r2/object/get", "POST", { bucket, key });
|
|
128
|
+
const err = errorOf(result);
|
|
129
|
+
if (err)
|
|
130
|
+
return textResult(`R2 object get failed: ${err}`, true);
|
|
131
|
+
const b64 = result.contentBase64;
|
|
132
|
+
if (typeof b64 !== "string")
|
|
133
|
+
return textResult("R2 object get failed: no content in response", true);
|
|
134
|
+
const bytes = Buffer.from(b64, "base64");
|
|
135
|
+
try {
|
|
136
|
+
writeFileSync(dest, bytes);
|
|
137
|
+
}
|
|
138
|
+
catch (e) {
|
|
139
|
+
return textResult(`R2 object get failed: ${e instanceof Error ? e.message : String(e)}`, true);
|
|
140
|
+
}
|
|
141
|
+
return textResult(`Wrote ${bytes.length} bytes to ${dest}`);
|
|
142
|
+
});
|
|
143
|
+
// ─── storage-r2-object-put ────────────────────────────────────────────────
|
|
144
|
+
lifelineTool(server, "storage-r2-object-put", `Upload a file from your account directory to an R2 bucket your account owns. Files larger than ${R2_OBJECT_MAX_BYTES / 1024 / 1024} MiB are rejected.`, {
|
|
145
|
+
bucket: z.string().describe("Bucket name"),
|
|
146
|
+
key: z.string().describe("Object key"),
|
|
147
|
+
srcPath: z.string().describe("Source file path, inside your account directory"),
|
|
148
|
+
}, async ({ bucket, key, srcPath }) => {
|
|
149
|
+
let bytes;
|
|
150
|
+
try {
|
|
151
|
+
// Confined and size-checked before the read: an over-cap file costs no
|
|
152
|
+
// buffer here and never reaches the house process.
|
|
153
|
+
({ bytes } = readPutSource(srcPath));
|
|
154
|
+
}
|
|
155
|
+
catch (e) {
|
|
156
|
+
return textResult(`R2 object put failed: ${e instanceof Error ? e.message : String(e)}`, true);
|
|
157
|
+
}
|
|
158
|
+
const result = await callApi("storage-r2-object-put", "/api/storage/r2/object/put", "POST", {
|
|
159
|
+
bucket,
|
|
160
|
+
key,
|
|
161
|
+
contentBase64: bytes.toString("base64"),
|
|
162
|
+
});
|
|
163
|
+
const err = errorOf(result);
|
|
164
|
+
if (err)
|
|
165
|
+
return textResult(`R2 object put failed: ${err}`, true);
|
|
166
|
+
return textResult(`Uploaded ${bytes.length} bytes to ${bucket}/${key}.`);
|
|
167
|
+
});
|
|
168
|
+
// ─── storage-r2-object-delete ─────────────────────────────────────────────
|
|
169
|
+
lifelineTool(server, "storage-r2-object-delete", "Delete an object from an R2 bucket your account owns.", { bucket: z.string().describe("Bucket name"), key: z.string().describe("Object key") }, async ({ bucket, key }) => {
|
|
170
|
+
const result = await callApi("storage-r2-object-delete", "/api/storage/r2/object/delete", "POST", { bucket, key });
|
|
171
|
+
const err = errorOf(result);
|
|
172
|
+
if (err)
|
|
173
|
+
return textResult(`R2 object delete failed: ${err}`, true);
|
|
174
|
+
return textResult(`Deleted ${bucket}/${key}.`);
|
|
175
|
+
});
|
|
90
176
|
async function main() {
|
|
91
177
|
const transport = new StdioServerTransport();
|
|
92
178
|
await server.connect(transport);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Returns the confined absolute path and the file's bytes.
|
|
3
|
+
*
|
|
4
|
+
* Throws naming the offending file and the limit when the file is over the cap,
|
|
5
|
+
* and naming the path when it is outside the account directory or unreadable.
|
|
6
|
+
*/
|
|
7
|
+
export declare function readPutSource(srcPath: string): {
|
|
8
|
+
path: string;
|
|
9
|
+
bytes: Buffer;
|
|
10
|
+
};
|
|
11
|
+
//# sourceMappingURL=put-source.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"put-source.d.ts","sourceRoot":"","sources":["../src/put-source.ts"],"names":[],"mappings":"AAuBA;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAQ9E"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve a put's source file: confine it to the caller's account directory,
|
|
3
|
+
* size it, reject it if it is over the cap, and only then read it.
|
|
4
|
+
*
|
|
5
|
+
* The order is the point (Task 1695). An over-cap file must cost no buffer, in
|
|
6
|
+
* this process or the house one, so the size is checked before the read rather
|
|
7
|
+
* than after — the same pre-read statSync rule the email plugin's
|
|
8
|
+
* resolveOutboundAttachments already proves for the same class of payload.
|
|
9
|
+
* Checking after the read would bound the upload while leaving the local OOM
|
|
10
|
+
* exactly where it was.
|
|
11
|
+
*
|
|
12
|
+
* This lives in its own module rather than inline in the put tool because the
|
|
13
|
+
* ordering is the behaviour worth testing, and index.ts constructs an MCP server
|
|
14
|
+
* on import.
|
|
15
|
+
*/
|
|
16
|
+
import { readFileSync, statSync } from "node:fs";
|
|
17
|
+
import { basename } from "node:path";
|
|
18
|
+
import { confineToAccountDir } from "./confine-path.js";
|
|
19
|
+
import { R2_OBJECT_MAX_BYTES, tooLargeMessage, } from "../../../../lib/storage-broker/dist/object-limits.js";
|
|
20
|
+
/**
|
|
21
|
+
* Returns the confined absolute path and the file's bytes.
|
|
22
|
+
*
|
|
23
|
+
* Throws naming the offending file and the limit when the file is over the cap,
|
|
24
|
+
* and naming the path when it is outside the account directory or unreadable.
|
|
25
|
+
*/
|
|
26
|
+
export function readPutSource(srcPath) {
|
|
27
|
+
const path = confineToAccountDir(srcPath, true);
|
|
28
|
+
// confineToAccountDir has already proven this is a regular file.
|
|
29
|
+
const { size } = statSync(path);
|
|
30
|
+
if (size > R2_OBJECT_MAX_BYTES) {
|
|
31
|
+
throw new Error(tooLargeMessage(basename(path), size));
|
|
32
|
+
}
|
|
33
|
+
return { path, bytes: readFileSync(path) };
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=put-source.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"put-source.js","sourceRoot":"","sources":["../src/put-source.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AACH,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACjD,OAAO,EAAE,QAAQ,EAAE,MAAM,WAAW,CAAC;AACrC,OAAO,EAAE,mBAAmB,EAAE,MAAM,mBAAmB,CAAC;AACxD,OAAO,EACL,mBAAmB,EACnB,eAAe,GAChB,MAAM,sDAAsD,CAAC;AAE9D;;;;;GAKG;AACH,MAAM,UAAU,aAAa,CAAC,OAAe;IAC3C,MAAM,IAAI,GAAG,mBAAmB,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;IAChD,iEAAiE;IACjE,MAAM,EAAE,IAAI,EAAE,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAChC,IAAI,IAAI,GAAG,mBAAmB,EAAE,CAAC;QAC/B,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC;IACzD,CAAC;IACD,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,YAAY,CAAC,IAAI,CAAC,EAAE,CAAC;AAC7C,CAAC"}
|
|
@@ -87,6 +87,52 @@ write_parent_with_error() {
|
|
|
87
87
|
} > "$f"
|
|
88
88
|
}
|
|
89
89
|
|
|
90
|
+
# Write a parent JSONL carrying BOTH harness rejections and the classes that
|
|
91
|
+
# must NOT be treated as rejections. A rejection is a call the CLI refused to
|
|
92
|
+
# dispatch, so the tool never ran; everything else here either ran and failed or
|
|
93
|
+
# is a different fault. Both InputValidationError sub-classes are covered:
|
|
94
|
+
# unparseable JSON (carries __unparsedToolInput) and schema-valid JSON that
|
|
95
|
+
# failed validation (no such marker, and the majority class in practice).
|
|
96
|
+
write_parent_with_rejections() {
|
|
97
|
+
local cfg="$1" uuid="$2"
|
|
98
|
+
local f="$cfg/projects/-fake-cwd/${uuid}.jsonl"
|
|
99
|
+
{
|
|
100
|
+
printf '%s\n' '{"type":"user","timestamp":"2026-07-16T15:59:00.000Z","uuid":"r0","message":{"role":"user","content":"send it"}}'
|
|
101
|
+
# 2 x rejection sub-class A (unparseable JSON) on ONE tool -> census x2
|
|
102
|
+
printf '%s\n' '{"type":"assistant","timestamp":"2026-07-16T15:59:01.000Z","uuid":"r1","message":{"role":"assistant","content":[{"type":"tool_use","id":"toolu_R1","name":"outlook-mail-send","input":{"__unparsedToolInput":"{\"to\": bare@x.co}"}}]}}'
|
|
103
|
+
printf '%s\n' '{"type":"user","timestamp":"2026-07-16T15:59:02.000Z","uuid":"r2","message":{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_R1","is_error":true,"content":"<tool_use_error>InputValidationError: outlook-mail-send was called with input that could not be parsed as JSON.\nYou sent (first 200 of 670 bytes): {\"to\": bare@x.co} REJECT_A_ONE</tool_use_error>"}]}}'
|
|
104
|
+
printf '%s\n' '{"type":"assistant","timestamp":"2026-07-16T15:59:03.000Z","uuid":"r3","message":{"role":"assistant","content":[{"type":"tool_use","id":"toolu_R2","name":"outlook-mail-send","input":{"__unparsedToolInput":"{\"to\": bare@x.co}"}}]}}'
|
|
105
|
+
printf '%s\n' '{"type":"user","timestamp":"2026-07-16T15:59:04.000Z","uuid":"r4","message":{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_R2","is_error":true,"content":"<tool_use_error>InputValidationError: outlook-mail-send was called with input that could not be parsed as JSON.\nYou sent (first 200 of 670 bytes): {\"to\": bare@x.co} REJECT_A_TWO</tool_use_error>"}]}}'
|
|
106
|
+
# rejection sub-class B: JSON parsed fine, schema validation failed
|
|
107
|
+
printf '%s\n' '{"type":"assistant","timestamp":"2026-07-16T15:59:05.000Z","uuid":"r5","message":{"role":"assistant","content":[{"type":"tool_use","id":"toolu_R3","name":"Read","input":{"offset":"x"}}]}}'
|
|
108
|
+
printf '%s\n' '{"type":"user","timestamp":"2026-07-16T15:59:06.000Z","uuid":"r6","message":{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_R3","is_error":true,"content":"<tool_use_error>InputValidationError: Read failed due to the following issue: The parameter `offset` type is expected as `number` REJECT_B_ONE</tool_use_error>"}]}}'
|
|
109
|
+
# NOT a rejection: unknown tool (different fault, has its own PostToolUse hook)
|
|
110
|
+
printf '%s\n' '{"type":"assistant","timestamp":"2026-07-16T15:59:07.000Z","uuid":"r7","message":{"role":"assistant","content":[{"type":"tool_use","id":"toolu_N1","name":"work-create","input":{}}]}}'
|
|
111
|
+
printf '%s\n' '{"type":"user","timestamp":"2026-07-16T15:59:08.000Z","uuid":"r8","message":{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_N1","is_error":true,"content":"<tool_use_error>Error: No such tool available: work-create NOTREJ_NOTOOL</tool_use_error>"}]}}'
|
|
112
|
+
# NOT a rejection: MCP server-side validation (the call DID reach the server)
|
|
113
|
+
printf '%s\n' '{"type":"assistant","timestamp":"2026-07-16T15:59:09.000Z","uuid":"r9","message":{"role":"assistant","content":[{"type":"tool_use","id":"toolu_N2","name":"outlook-mail-fetch-body","input":{}}]}}'
|
|
114
|
+
printf '%s\n' '{"type":"user","timestamp":"2026-07-16T15:59:10.000Z","uuid":"rA","message":{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_N2","is_error":true,"content":"MCP error -32602: Input validation error: id: Required NOTREJ_32602"}]}}'
|
|
115
|
+
# NOT a rejection: built-in tool that RAN and failed its precondition
|
|
116
|
+
printf '%s\n' '{"type":"assistant","timestamp":"2026-07-16T15:59:11.000Z","uuid":"rB","message":{"role":"assistant","content":[{"type":"tool_use","id":"toolu_N3","name":"Edit","input":{}}]}}'
|
|
117
|
+
printf '%s\n' '{"type":"user","timestamp":"2026-07-16T15:59:12.000Z","uuid":"rC","message":{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_N3","is_error":true,"content":"<tool_use_error>File has not been read yet. Read it first before writing to it. NOTREJ_UNREAD</tool_use_error>"}]}}'
|
|
118
|
+
} > "$f"
|
|
119
|
+
}
|
|
120
|
+
|
|
121
|
+
# Write a subagent transcript whose ONLY error is a harness rejection. Used to
|
|
122
|
+
# prove --scan-subagent-errors does not report a rejection-only subagent as an
|
|
123
|
+
# error-carrying one: the subagent did not fail, a call was never dispatched.
|
|
124
|
+
write_subagent_rejection_only() {
|
|
125
|
+
local cfg="$1" parent_uuid="$2" agent="$3" atype="$4"
|
|
126
|
+
local d="$cfg/projects/-fake-cwd/${parent_uuid}/subagents"
|
|
127
|
+
mkdir -p "$d"
|
|
128
|
+
{
|
|
129
|
+
printf '%s\n' '{"type":"user","timestamp":"2026-07-16T16:00:00.000Z","uuid":"j1","message":{"role":"user","content":"read it"}}'
|
|
130
|
+
printf '%s\n' '{"type":"assistant","timestamp":"2026-07-16T16:00:01.000Z","uuid":"j2","message":{"role":"assistant","content":[{"type":"tool_use","id":"toolu_SR","name":"Read","input":{"__unparsedToolInput":"{\"file_path\": /x}"}}]}}'
|
|
131
|
+
printf '%s\n' '{"type":"user","timestamp":"2026-07-16T16:00:02.000Z","uuid":"j3","message":{"role":"user","content":[{"type":"tool_result","tool_use_id":"toolu_SR","is_error":true,"content":"<tool_use_error>InputValidationError: Read was called with input that could not be parsed as JSON.\nYou sent (first 200 of 30 bytes): {\"file_path\": /x} SUBREJ_ONLY</tool_use_error>"}]}}'
|
|
132
|
+
} > "$d/${agent}.jsonl"
|
|
133
|
+
printf '{"agentType":"%s","description":"read a file"}\n' "$atype" > "$d/${agent}.meta.json"
|
|
134
|
+
}
|
|
135
|
+
|
|
90
136
|
# Write a CLEAN subagent transcript (no errors) + its meta.
|
|
91
137
|
write_subagent_clean() {
|
|
92
138
|
local cfg="$1" parent_uuid="$2" agent="$3" atype="$4"
|
|
@@ -248,6 +294,75 @@ case_parent_error_not_subagent() {
|
|
|
248
294
|
return 0
|
|
249
295
|
}
|
|
250
296
|
|
|
297
|
+
# --- Case J: harness rejection is distinguished from a tool that RAN and failed ---
|
|
298
|
+
# The 1692 defect: a call the CLI refused to dispatch rendered identically to a
|
|
299
|
+
# tool that ran and returned a failure, so a rejection loop read as "the tool is
|
|
300
|
+
# broken" while the tool was healthy. Only InputValidationError may be relabelled.
|
|
301
|
+
case_rejection_classified_and_counted() {
|
|
302
|
+
local root="/tmp/maxy-1692-J-$$"; local out
|
|
303
|
+
out=$(setup_tree "$root"); local script="${out% *}"; local cfg="${out#* }"
|
|
304
|
+
write_parent_with_rejections "$cfg" "$UUID_A"
|
|
305
|
+
write_pidfile "$cfg" 4255 "$UUID_A" "$BRIDGE"
|
|
306
|
+
|
|
307
|
+
invoke "$script" "$cfg" "session_${BRIDGE}"
|
|
308
|
+
cleanup_tree "$root"
|
|
309
|
+
|
|
310
|
+
[[ $RC -eq 0 ]] || { echo " expected exit 0, got $RC; err=$ERR"; return 1; }
|
|
311
|
+
|
|
312
|
+
# Both InputValidationError sub-classes are rejections (neither dispatched).
|
|
313
|
+
[[ "$OUT" == *"REJECTED"*"REJECT_A_ONE"* ]] || { echo " sub-class A (unparseable) not flagged REJECTED"; return 1; }
|
|
314
|
+
[[ "$OUT" == *"REJECTED"*"REJECT_B_ONE"* ]] || { echo " sub-class B (schema-invalid) not flagged REJECTED"; return 1; }
|
|
315
|
+
|
|
316
|
+
# The exclusions MUST keep the plain tool-error rendering. Widening the
|
|
317
|
+
# predicate to the bare <tool_use_error> wrapper is the regression this pins.
|
|
318
|
+
local l
|
|
319
|
+
for l in NOTREJ_NOTOOL NOTREJ_32602 NOTREJ_UNREAD; do
|
|
320
|
+
grep -q "tool error.*$l" <<<"$OUT" || { echo " $l lost its '‼ tool error' rendering"; return 1; }
|
|
321
|
+
grep -q "REJECTED.*$l" <<<"$OUT" && { echo " $l wrongly flagged REJECTED"; return 1; }
|
|
322
|
+
done
|
|
323
|
+
|
|
324
|
+
# Repetition is the diagnostic fact: 2 identical calls on one tool, counted.
|
|
325
|
+
[[ "$OUT" == *"rejections: 3"* ]] || { echo " census missing or miscounted (want 3)"; return 1; }
|
|
326
|
+
[[ "$OUT" == *"outlook-mail-send x2"* ]] || { echo " census does not count the repeat per tool"; return 1; }
|
|
327
|
+
return 0
|
|
328
|
+
}
|
|
329
|
+
|
|
330
|
+
# --- Case K: a clean session emits NO census line (non-regression) ---
|
|
331
|
+
case_no_rejections_no_census() {
|
|
332
|
+
local root="/tmp/maxy-1692-K-$$"; local out
|
|
333
|
+
out=$(setup_tree "$root"); local script="${out% *}"; local cfg="${out#* }"
|
|
334
|
+
write_parent_with_error "$cfg" "$UUID_A"
|
|
335
|
+
write_pidfile "$cfg" 4256 "$UUID_A" "$BRIDGE"
|
|
336
|
+
|
|
337
|
+
invoke "$script" "$cfg" "session_${BRIDGE}"
|
|
338
|
+
cleanup_tree "$root"
|
|
339
|
+
|
|
340
|
+
[[ $RC -eq 0 ]] || { echo " expected exit 0, got $RC"; return 1; }
|
|
341
|
+
[[ "$OUT" != *"rejections:"* ]] || { echo " census line emitted for a session with no rejections"; return 1; }
|
|
342
|
+
[[ "$OUT" != *"REJECTED"* ]] || { echo " genuine tool error wrongly flagged REJECTED"; return 1; }
|
|
343
|
+
return 0
|
|
344
|
+
}
|
|
345
|
+
|
|
346
|
+
# --- Case L: --scan-subagent-errors does not report a rejection-only subagent ---
|
|
347
|
+
# A rejection is not a subagent failure: the subagent did not fail, a call was
|
|
348
|
+
# never dispatched. Counting it re-creates the 1692 conflation one mode over.
|
|
349
|
+
case_scan_ignores_rejection_only_subagent() {
|
|
350
|
+
local root="/tmp/maxy-1692-L-$$"; local out
|
|
351
|
+
out=$(setup_tree "$root"); local script="${out% *}"; local cfg="${out#* }"
|
|
352
|
+
write_parent "$cfg" "$UUID_A"
|
|
353
|
+
write_subagent_rejection_only "$cfg" "$UUID_A" "agent-aREJ00001" "content-producer"
|
|
354
|
+
write_subagent_failed "$cfg" "$UUID_A" "agent-aFAIL0001" "pdf-renderer"
|
|
355
|
+
|
|
356
|
+
invoke "$script" "$cfg" --scan-subagent-errors
|
|
357
|
+
cleanup_tree "$root"
|
|
358
|
+
|
|
359
|
+
[[ $RC -eq 0 ]] || { echo " expected exit 0, got $RC; err=$ERR"; return 1; }
|
|
360
|
+
[[ "$OUT" == *"aFAIL0001"* ]] || { echo " genuinely failed subagent missing from scan"; return 1; }
|
|
361
|
+
[[ "$OUT" != *"SUBREJ_ONLY"* ]] || { echo " rejection-only subagent reported as error-carrying"; return 1; }
|
|
362
|
+
[[ "$OUT" != *"aREJ00001"* ]] || { echo " rejection-only subagent listed by scan"; return 1; }
|
|
363
|
+
return 0
|
|
364
|
+
}
|
|
365
|
+
|
|
251
366
|
# --- Case I: content-grep resolves a unique body match (last-resort tier) ---
|
|
252
367
|
case_content_grep_single() {
|
|
253
368
|
local root="/tmp/maxy-585-I-$$"; local out
|
|
@@ -299,6 +414,9 @@ run_case "parent's own tool error not mislabelled SUBAGENT ERROR" case_pare
|
|
|
299
414
|
run_case "content-grep resolves a unique body match" case_content_grep_single
|
|
300
415
|
run_case "content-grep refuses an ambiguous (multi) body match" case_content_grep_ambiguous_refuses
|
|
301
416
|
run_case "unresolvable key → exit 1" case_unresolvable_miss
|
|
417
|
+
run_case "harness rejection classified + counted, exclusions intact" case_rejection_classified_and_counted
|
|
418
|
+
run_case "no rejections → no census line" case_no_rejections_no_census
|
|
419
|
+
run_case "scan ignores a rejection-only subagent" case_scan_ignores_rejection_only_subagent
|
|
302
420
|
|
|
303
421
|
echo ""
|
|
304
422
|
echo "================================================"
|
|
@@ -627,7 +627,7 @@ tail_mode() {
|
|
|
627
627
|
# non-interactive SSH PATH. argv[1] selects the mode (timeline|scan); the
|
|
628
628
|
# program is fed via -c so logs-read.sh stays a single self-contained file.
|
|
629
629
|
JSONL_PY=$(cat <<'PY'
|
|
630
|
-
import sys, os, re, json, glob
|
|
630
|
+
import sys, os, re, json, glob, collections
|
|
631
631
|
|
|
632
632
|
MODE = sys.argv[1] if len(sys.argv) > 1 else ''
|
|
633
633
|
|
|
@@ -776,7 +776,40 @@ def subagent_dir(projects_root, uuid):
|
|
|
776
776
|
# failure (the task's target, flagged 'SUBAGENT ERROR' and counted) from the
|
|
777
777
|
# parent session's own tool error (shown plainly, never counted as a subagent
|
|
778
778
|
# error). Returns the count of SUBAGENT errors found (0 for the parent).
|
|
779
|
-
|
|
779
|
+
# A harness rejection is a call that NEVER REACHED its tool: the CLI refused the
|
|
780
|
+
# model's arguments, so no MCP dispatch happened and no plugin line exists
|
|
781
|
+
# anywhere (not in server.log, not in mcp-<server>-<sessionId>.log, not in
|
|
782
|
+
# mcp-lifeline). Rendering it as a plain tool error reads as "the tool is broken"
|
|
783
|
+
# when the tool was never called -- the confusion that produced a false
|
|
784
|
+
# customer-facing fault report (task 1692).
|
|
785
|
+
#
|
|
786
|
+
# InputValidationError has two sub-classes and BOTH are rejections, because
|
|
787
|
+
# neither dispatches. The label says 'never dispatched', not 'malformed', because
|
|
788
|
+
# only the first is malformed:
|
|
789
|
+
# A. "...could not be parsed as JSON" -- args unparseable; the tool_use block
|
|
790
|
+
# carries __unparsedToolInput. 52 of 170 measured 2026-07-16.
|
|
791
|
+
# B. "...failed due to the following issue(s)" -- the JSON parsed fine and
|
|
792
|
+
# violated the schema (wrong type, missing required). No __unparsedToolInput.
|
|
793
|
+
# 118 of 170, so the majority; calling it 'malformed' would be wrong.
|
|
794
|
+
#
|
|
795
|
+
# This is the ONLY class relabelled. Deliberately NOT covered, all of which keep
|
|
796
|
+
# rendering as '‼ tool error':
|
|
797
|
+
# 'Error: No such tool available:' / 'Unknown skill:' -- different fault, and
|
|
798
|
+
# the missing-tool case already has a PostToolUse hook (mcp-tool-missing.sh)
|
|
799
|
+
# 'MCP error -32602' -- reached the server; its SDK rejected it
|
|
800
|
+
# every unwrapped is_error payload -- the tool ran and returned a failure
|
|
801
|
+
#
|
|
802
|
+
# The <tool_use_error> wrapper alone is NOT a rejection discriminator: measured
|
|
803
|
+
# 2026-07-16 across 733 SiteDesk transcripts it wraps mostly built-in tools that
|
|
804
|
+
# RAN and failed ('File has not been read yet' x60, 'File has been modified
|
|
805
|
+
# since read' x16). Match the error class, not the wrapper.
|
|
806
|
+
def is_rejection(text):
|
|
807
|
+
if not isinstance(text, str):
|
|
808
|
+
return False
|
|
809
|
+
return text.lstrip().startswith('<tool_use_error>InputValidationError:')
|
|
810
|
+
|
|
811
|
+
|
|
812
|
+
def collect_events(path, source, events, is_sub, rejects=None):
|
|
780
813
|
rows = load_jsonl(path)
|
|
781
814
|
id2tool = {}
|
|
782
815
|
for r in rows:
|
|
@@ -812,10 +845,18 @@ def collect_events(path, source, events, is_sub):
|
|
|
812
845
|
for b in content:
|
|
813
846
|
if isinstance(b, dict) and b.get('type') == 'tool_result' and b.get('is_error'):
|
|
814
847
|
tool = id2tool.get(b.get('tool_use_id'))
|
|
815
|
-
|
|
816
|
-
|
|
817
|
-
|
|
818
|
-
|
|
848
|
+
body = result_text(b, r)
|
|
849
|
+
if is_rejection(body):
|
|
850
|
+
# Not a tool failure: the call never ran. Never
|
|
851
|
+
# counted as a subagent error for the same reason.
|
|
852
|
+
flag = '‼ REJECTED (never dispatched)'
|
|
853
|
+
if rejects is not None:
|
|
854
|
+
rejects[tool or '?'] += 1
|
|
855
|
+
else:
|
|
856
|
+
flag = '‼ SUBAGENT ERROR' if is_sub else '‼ tool error'
|
|
857
|
+
if is_sub:
|
|
858
|
+
n_err += 1
|
|
859
|
+
events.append((ts, source, 'error', '%s tool=%s error="%s"' % (flag, tool or '?', clip(body, 200))))
|
|
819
860
|
elif isinstance(content, str) and content.strip():
|
|
820
861
|
events.append((ts, source, 'text', 'user: ' + clip(content, 160)))
|
|
821
862
|
return n_err
|
|
@@ -826,18 +867,25 @@ def timeline(projects_root, sessions_dir, key):
|
|
|
826
867
|
sys.stderr.write('-- trailer: key=%s resolved=no reason=%s\n' % (key, via))
|
|
827
868
|
return 1
|
|
828
869
|
events = []
|
|
870
|
+
rejects = collections.Counter()
|
|
829
871
|
if parent_path and os.path.exists(parent_path):
|
|
830
|
-
collect_events(parent_path, 'parent', events, False)
|
|
872
|
+
collect_events(parent_path, 'parent', events, False, rejects)
|
|
831
873
|
sdir = subagent_dir(projects_root, uuid)
|
|
832
874
|
sub_count = err_count = 0
|
|
833
875
|
if sdir:
|
|
834
876
|
for af in sorted(glob.glob(os.path.join(sdir, 'agent-*.jsonl'))):
|
|
835
877
|
sub_count += 1
|
|
836
|
-
err_count += collect_events(af, agent_type(af) or os.path.basename(af)[:-6], events, True)
|
|
878
|
+
err_count += collect_events(af, agent_type(af) or os.path.basename(af)[:-6], events, True, rejects)
|
|
837
879
|
events.sort(key=lambda e: e[0])
|
|
838
880
|
print('# session %s (resolved via %s)' % (uuid, via))
|
|
839
881
|
print('# parent: %s' % (parent_path or '(no parent transcript on disk)'))
|
|
840
882
|
print('# subagents: %d subagent-errors: %d' % (sub_count, err_count))
|
|
883
|
+
# Repetition is the diagnostic fact: one fat-fingered call is a typo, N
|
|
884
|
+
# identical ones against a single tool is a wedged loop. Counting it here
|
|
885
|
+
# makes that one greppable line instead of N unrelated ones.
|
|
886
|
+
if rejects:
|
|
887
|
+
top = ' '.join('%s x%d' % (t, n) for t, n in rejects.most_common())
|
|
888
|
+
print('# rejections: %d (%s)' % (sum(rejects.values()), top))
|
|
841
889
|
print('')
|
|
842
890
|
for ts, source, _kind, text in events:
|
|
843
891
|
print('%s [%s] %s' % (ts or ('-' * 24), source, text))
|
|
@@ -871,7 +919,13 @@ def scan(projects_root, limit):
|
|
|
871
919
|
if isinstance(content, list):
|
|
872
920
|
for b in content:
|
|
873
921
|
if isinstance(b, dict) and b.get('type') == 'tool_result' and b.get('is_error'):
|
|
874
|
-
|
|
922
|
+
body = result_text(b, r)
|
|
923
|
+
# A rejection is not a subagent failure: the subagent did
|
|
924
|
+
# not fail, a call was never dispatched. Counting it here
|
|
925
|
+
# would re-create the conflation the timeline just fixed.
|
|
926
|
+
if is_rejection(body):
|
|
927
|
+
continue
|
|
928
|
+
errs.append((id2tool.get(b.get('tool_use_id')), body))
|
|
875
929
|
if errs:
|
|
876
930
|
parent_uuid = os.path.basename(os.path.dirname(os.path.dirname(af)))
|
|
877
931
|
findings.append((af, agent_type(af), parent_uuid, errs))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAuB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,
|
|
1
|
+
{"version":3,"file":"canonical-tool-names.generated.d.ts","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"AAQA,+EAA+E;AAC/E,eAAO,MAAM,gBAAgB,EAAE,SAAS,MAAM,EAuB7C,CAAA;AAED,gEAAgE;AAChE,eAAO,MAAM,yBAAyB,EAAE,SAAS,MAAM,EAoStD,CAAA"}
|
package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js
CHANGED
|
@@ -276,6 +276,10 @@ export const CANONICAL_MAXY_TOOL_NAMES = [
|
|
|
276
276
|
"mcp__plugin_storage-broker_storage-broker__storage-d1-query",
|
|
277
277
|
"mcp__plugin_storage-broker_storage-broker__storage-r2-bucket-create",
|
|
278
278
|
"mcp__plugin_storage-broker_storage-broker__storage-r2-bucket-list",
|
|
279
|
+
"mcp__plugin_storage-broker_storage-broker__storage-r2-object-delete",
|
|
280
|
+
"mcp__plugin_storage-broker_storage-broker__storage-r2-object-get",
|
|
281
|
+
"mcp__plugin_storage-broker_storage-broker__storage-r2-object-list",
|
|
282
|
+
"mcp__plugin_storage-broker_storage-broker__storage-r2-object-put",
|
|
279
283
|
"mcp__plugin_telegram_telegram__message",
|
|
280
284
|
"mcp__plugin_telegram_telegram__message-history",
|
|
281
285
|
"mcp__plugin_telegram_telegram__telegram-webhook-register",
|
package/payload/platform/services/claude-session-manager/dist/canonical-tool-names.generated.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"canonical-tool-names.generated.js","sourceRoot":"","sources":["../src/canonical-tool-names.generated.ts"],"names":[],"mappings":"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"}
|
|
@@ -44,6 +44,39 @@ var compose = (middleware, onError, onNotFound) => {
|
|
|
44
44
|
};
|
|
45
45
|
};
|
|
46
46
|
|
|
47
|
+
// node_modules/hono/dist/http-exception.js
|
|
48
|
+
var HTTPException = class extends Error {
|
|
49
|
+
res;
|
|
50
|
+
status;
|
|
51
|
+
/**
|
|
52
|
+
* Creates an instance of `HTTPException`.
|
|
53
|
+
* @param status - HTTP status code for the exception. Defaults to 500.
|
|
54
|
+
* @param options - Additional options for the exception.
|
|
55
|
+
*/
|
|
56
|
+
constructor(status = 500, options) {
|
|
57
|
+
super(options?.message, { cause: options?.cause });
|
|
58
|
+
this.res = options?.res;
|
|
59
|
+
this.status = status;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Returns the response object associated with the exception.
|
|
63
|
+
* If a response object is not provided, a new response is created with the error message and status code.
|
|
64
|
+
* @returns The response object.
|
|
65
|
+
*/
|
|
66
|
+
getResponse() {
|
|
67
|
+
if (this.res) {
|
|
68
|
+
const newResponse = new Response(this.res.body, {
|
|
69
|
+
status: this.status,
|
|
70
|
+
headers: this.res.headers
|
|
71
|
+
});
|
|
72
|
+
return newResponse;
|
|
73
|
+
}
|
|
74
|
+
return new Response(this.message, {
|
|
75
|
+
status: this.status
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
};
|
|
79
|
+
|
|
47
80
|
// node_modules/hono/dist/request/constants.js
|
|
48
81
|
var GET_MATCH_RESULT = /* @__PURE__ */ Symbol();
|
|
49
82
|
|
|
@@ -5886,6 +5919,7 @@ var clientIpMiddleware = async (c, next) => {
|
|
|
5886
5919
|
};
|
|
5887
5920
|
|
|
5888
5921
|
export {
|
|
5922
|
+
HTTPException,
|
|
5889
5923
|
HtmlEscapedCallbackPhase,
|
|
5890
5924
|
resolveCallback,
|
|
5891
5925
|
Hono2 as Hono,
|