@agent-beam/beam 0.2.38 → 0.2.40

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.
Files changed (121) hide show
  1. package/README.md +7 -13
  2. package/dist/access-risk.d.ts +10 -0
  3. package/dist/access-risk.js +43 -0
  4. package/dist/access-risk.js.map +1 -0
  5. package/dist/action-context.d.ts +30 -0
  6. package/dist/action-context.js +203 -0
  7. package/dist/action-context.js.map +1 -0
  8. package/dist/activity.d.ts +22 -0
  9. package/dist/activity.js +132 -0
  10. package/dist/activity.js.map +1 -0
  11. package/dist/agent-hook-install.d.ts +8 -0
  12. package/dist/agent-hook-install.js +278 -0
  13. package/dist/agent-hook-install.js.map +1 -0
  14. package/dist/agent-installers.js +16 -3
  15. package/dist/agent-installers.js.map +1 -1
  16. package/dist/agent-plugins.d.ts +3 -0
  17. package/dist/agent-plugins.js +66 -0
  18. package/dist/agent-plugins.js.map +1 -0
  19. package/dist/agents.d.ts +1 -0
  20. package/dist/agents.js +30 -184
  21. package/dist/agents.js.map +1 -1
  22. package/dist/approvals.d.ts +13 -1
  23. package/dist/approvals.js +14 -3
  24. package/dist/approvals.js.map +1 -1
  25. package/dist/approved-actions.d.ts +11 -0
  26. package/dist/approved-actions.js +53 -0
  27. package/dist/approved-actions.js.map +1 -0
  28. package/dist/behavioral-anomaly.d.ts +16 -0
  29. package/dist/behavioral-anomaly.js +66 -0
  30. package/dist/behavioral-anomaly.js.map +1 -0
  31. package/dist/cli.js +77 -9
  32. package/dist/cli.js.map +1 -1
  33. package/dist/client.d.ts +18 -1
  34. package/dist/client.js +359 -80
  35. package/dist/client.js.map +1 -1
  36. package/dist/core.d.ts +55 -2
  37. package/dist/core.js +85 -26
  38. package/dist/core.js.map +1 -1
  39. package/dist/credential-egress.d.ts +17 -0
  40. package/dist/credential-egress.js +325 -0
  41. package/dist/credential-egress.js.map +1 -0
  42. package/dist/custom-rules.js +3 -2
  43. package/dist/custom-rules.js.map +1 -1
  44. package/dist/data-detectors.js +60 -4
  45. package/dist/data-detectors.js.map +1 -1
  46. package/dist/destructive-risk.d.ts +1 -0
  47. package/dist/destructive-risk.js +70 -0
  48. package/dist/destructive-risk.js.map +1 -0
  49. package/dist/edit-stats.js +5 -5
  50. package/dist/edit-stats.js.map +1 -1
  51. package/dist/entity-redaction.d.ts +11 -0
  52. package/dist/entity-redaction.js +88 -0
  53. package/dist/entity-redaction.js.map +1 -0
  54. package/dist/file-lock.d.ts +1 -0
  55. package/dist/file-lock.js +54 -0
  56. package/dist/file-lock.js.map +1 -0
  57. package/dist/forward.d.ts +13 -6
  58. package/dist/forward.js +120 -42
  59. package/dist/forward.js.map +1 -1
  60. package/dist/hook-adapters.d.ts +2 -2
  61. package/dist/hook-adapters.js +59 -60
  62. package/dist/hook-adapters.js.map +1 -1
  63. package/dist/hook-catalog.d.ts +12 -0
  64. package/dist/hook-catalog.js +469 -0
  65. package/dist/hook-catalog.js.map +1 -0
  66. package/dist/hook-config.d.ts +8 -0
  67. package/dist/hook-config.js +80 -0
  68. package/dist/hook-config.js.map +1 -0
  69. package/dist/hook-spool.d.ts +3 -0
  70. package/dist/hook-spool.js +56 -0
  71. package/dist/hook-spool.js.map +1 -0
  72. package/dist/install.d.ts +5 -5
  73. package/dist/install.js +48 -199
  74. package/dist/install.js.map +1 -1
  75. package/dist/inventory.js +1 -1
  76. package/dist/inventory.js.map +1 -1
  77. package/dist/jev.js +2 -1
  78. package/dist/jev.js.map +1 -1
  79. package/dist/judge.js +2 -1
  80. package/dist/judge.js.map +1 -1
  81. package/dist/mitigation-pattern.d.ts +1 -0
  82. package/dist/mitigation-pattern.js +140 -0
  83. package/dist/mitigation-pattern.js.map +1 -0
  84. package/dist/package-risk-rules.js +2 -2
  85. package/dist/package-risk-rules.js.map +1 -1
  86. package/dist/package-scan.js +1 -1
  87. package/dist/package-scan.js.map +1 -1
  88. package/dist/packages.js +1 -1
  89. package/dist/packages.js.map +1 -1
  90. package/dist/policy-paths.d.ts +20 -0
  91. package/dist/policy-paths.js +145 -0
  92. package/dist/policy-paths.js.map +1 -0
  93. package/dist/policy.d.ts +10 -0
  94. package/dist/policy.js +99 -11
  95. package/dist/policy.js.map +1 -1
  96. package/dist/rule-catalog.d.ts +4 -2
  97. package/dist/rule-catalog.js +124 -24
  98. package/dist/rule-catalog.js.map +1 -1
  99. package/dist/rule-matches.d.ts +13 -0
  100. package/dist/rule-matches.js +42 -0
  101. package/dist/rule-matches.js.map +1 -0
  102. package/dist/serve.js +55 -5
  103. package/dist/serve.js.map +1 -1
  104. package/dist/server.js +34 -7
  105. package/dist/server.js.map +1 -1
  106. package/dist/setup.js +5 -3
  107. package/dist/setup.js.map +1 -1
  108. package/dist/skill-risk-rules.js +2 -2
  109. package/dist/skill-risk-rules.js.map +1 -1
  110. package/dist/skill-scan.js +1 -1
  111. package/dist/skill-scan.js.map +1 -1
  112. package/dist/skill-setup.js +4 -5
  113. package/dist/skill-setup.js.map +1 -1
  114. package/dist/skill-sync.d.ts +5 -1
  115. package/dist/skill-sync.js +115 -14
  116. package/dist/skill-sync.js.map +1 -1
  117. package/dist/store.js +6 -9
  118. package/dist/store.js.map +1 -1
  119. package/dist/studio.js +4 -4
  120. package/package.json +5 -2
  121. package/stress-report.json +45 -45
@@ -1,11 +1,11 @@
1
- import { mkdir, readFile, rename, writeFile } from "node:fs/promises";
1
+ import { mkdir, readFile, rename, rm, writeFile } from "node:fs/promises";
2
2
  import { homedir } from "node:os";
3
3
  import { basename, join } from "node:path";
4
4
  import { getDataDirectory } from "./config.js";
5
5
  import { readIdentity } from "./enroll.js";
6
6
  import { forwardSkillInventory } from "./forward.js";
7
7
  import { readInventory, trustedHashes } from "./skill-inventory.js";
8
- import { createHash } from "node:crypto";
8
+ import { createHash, randomUUID } from "node:crypto";
9
9
  export const MAX_REPORT_SKILLS = 1000;
10
10
  // The matched line of each finding is sent so the dashboard can show what exactly triggered it.
11
11
  // That is skill text leaving the machine (secrets are redacted first, and it is capped at a few
@@ -15,6 +15,7 @@ export function sendMatchedLines(env = process.env) {
15
15
  return !["0", "false", "off", "no"].includes(String(env.BEAM_SKILL_SEND_LINES ?? "").trim().toLowerCase());
16
16
  }
17
17
  const stateFile = () => join(getDataDirectory(), "skills-sync.json");
18
+ const pendingFile = () => join(getDataDirectory(), "skills-sync-pending.json");
18
19
  const today = () => new Date().toISOString().slice(0, 10);
19
20
  export function redactPath(dir, home = homedir()) {
20
21
  return dir === home ? "~" : dir.startsWith(home + "/") || dir.startsWith(home + "\\") ? `~${dir.slice(home.length)}` : dir;
@@ -46,34 +47,134 @@ export function fingerprint(report) {
46
47
  async function lastSent() {
47
48
  try {
48
49
  const state = JSON.parse(await readFile(stateFile(), "utf8"));
49
- return { fingerprint: typeof state.fingerprint === "string" ? state.fingerprint : null };
50
+ return { fingerprint: typeof state.fingerprint === "string" ? state.fingerprint : null, deviceId: state.deviceId, orgId: state.orgId, apiBase: state.apiBase };
50
51
  }
51
52
  catch {
52
53
  return { fingerprint: null };
53
54
  }
54
55
  }
55
- async function recordSent(print, day) {
56
+ async function recordSent(print, day, identity) {
56
57
  await mkdir(getDataDirectory(), { recursive: true, mode: 0o700 });
57
- const temp = `${stateFile()}.tmp`;
58
- await writeFile(temp, JSON.stringify({ fingerprint: print, day, sentAt: new Date().toISOString() }) + "\n", { mode: 0o600 });
58
+ const temp = `${stateFile()}.${randomUUID()}.tmp`;
59
+ await writeFile(temp, JSON.stringify({ fingerprint: print, day, sentAt: new Date().toISOString(), ...identity }) + "\n", { mode: 0o600 });
59
60
  await rename(temp, stateFile());
60
61
  }
62
+ async function savePending(report, identity) {
63
+ await mkdir(getDataDirectory(), { recursive: true, mode: 0o700 });
64
+ const temp = `${pendingFile()}.${randomUUID()}.tmp`;
65
+ await writeFile(temp, JSON.stringify({ ...identity, syncId: randomUUID(), report }), { mode: 0o600 });
66
+ await rename(temp, pendingFile());
67
+ }
68
+ async function pendingMatches(report, identity) {
69
+ try {
70
+ const pending = JSON.parse(await readFile(pendingFile(), "utf8"));
71
+ return pending.deviceId === identity.deviceId && pending.orgId === identity.orgId &&
72
+ pending.apiBase === identity.apiBase && fingerprint(pending.report) === fingerprint(report);
73
+ }
74
+ catch {
75
+ return false;
76
+ }
77
+ }
78
+ async function hasPendingReport() {
79
+ try {
80
+ await readFile(pendingFile(), "utf8");
81
+ return true;
82
+ }
83
+ catch (error) {
84
+ return error.code !== "ENOENT";
85
+ }
86
+ }
87
+ let draining;
88
+ // Sends at most one persisted snapshot at a time. The fixed local file coalesces
89
+ // repeated scans while offline, retaining only the latest complete inventory.
90
+ export function drainSkillInventoryOutbox() {
91
+ if (draining)
92
+ return draining;
93
+ const current = (async () => {
94
+ const identity = await readIdentity();
95
+ if (!identity)
96
+ return { status: "not-enrolled" };
97
+ let pending;
98
+ try {
99
+ pending = JSON.parse(await readFile(pendingFile(), "utf8"));
100
+ }
101
+ catch (error) {
102
+ if (error.code === "ENOENT")
103
+ return { status: "no-inventory" };
104
+ return { status: "failed", reason: "Could not read the pending skill report." };
105
+ }
106
+ if (pending.deviceId !== identity.deviceId || pending.orgId !== identity.orgId || pending.apiBase !== identity.apiBase)
107
+ return { status: "failed", reason: "The pending report belongs to a different workspace; run beam setup to create a new one." };
108
+ const print = fingerprint(pending.report);
109
+ const sent = await forwardSkillInventory(pending.report, pending.syncId);
110
+ if (!sent.ok)
111
+ return { status: "failed", reason: sent.reason };
112
+ await recordSent(print, pending.report.day, identity);
113
+ // A fresh setup can replace the queued snapshot while this one is uploading.
114
+ // Delete only the report that was actually sent.
115
+ try {
116
+ const latest = JSON.parse(await readFile(pendingFile(), "utf8"));
117
+ if (latest.syncId === pending.syncId)
118
+ await rm(pendingFile(), { force: true });
119
+ }
120
+ catch { /* another drain or setup already removed/replaced the file */ }
121
+ return { status: "sent", skills: pending.report.skills.length };
122
+ })().catch((error) => ({ status: "failed", reason: error instanceof Error ? error.message : "unexpected error" }))
123
+ .finally(() => { if (draining === current)
124
+ draining = undefined; });
125
+ draining = current;
126
+ return current;
127
+ }
61
128
  // Sends the skill names and risk scores to the workspace collector only when they differ from what
62
129
  // was last sent -- a new skill, a changed one, or a removed one. An unchanged machine sends nothing,
63
130
  // however often this runs. A failed send isn't recorded, so the next run retries it.
64
131
  export async function syncSkillInventory(options = {}) {
65
- if (!await readIdentity())
132
+ const identity = await readIdentity();
133
+ if (!identity)
134
+ return { status: "not-enrolled" };
135
+ const report = await buildSkillReport(options.home);
136
+ if (!report)
137
+ return { status: "no-inventory" };
138
+ const print = fingerprint(report);
139
+ const previous = await lastSent();
140
+ const sameWorkspace = previous.deviceId === identity.deviceId && previous.orgId === identity.orgId && previous.apiBase === identity.apiBase;
141
+ if (!options.force && previous.fingerprint === print && sameWorkspace) {
142
+ if (await pendingMatches(report, identity))
143
+ return drainSkillInventoryOutbox();
144
+ if (!await hasPendingReport())
145
+ return { status: "unchanged" };
146
+ }
147
+ try {
148
+ await savePending(report, identity);
149
+ }
150
+ catch (error) {
151
+ return { status: "failed", reason: error instanceof Error ? error.message : "Could not save the pending skill report." };
152
+ }
153
+ return drainSkillInventoryOutbox();
154
+ }
155
+ // Setup calls this after local indexing and returns without waiting for workspace requests.
156
+ export async function queueSkillInventory(options = {}) {
157
+ const identity = await readIdentity();
158
+ if (!identity)
66
159
  return { status: "not-enrolled" };
67
160
  const report = await buildSkillReport(options.home);
68
161
  if (!report)
69
162
  return { status: "no-inventory" };
70
163
  const print = fingerprint(report);
71
- if (!options.force && (await lastSent()).fingerprint === print)
72
- return { status: "unchanged" };
73
- const sent = await forwardSkillInventory(report);
74
- if (!sent.ok)
75
- return { status: "failed", reason: sent.reason };
76
- await recordSent(print, report.day);
77
- return { status: "sent", skills: report.skills.length };
164
+ const previous = await lastSent();
165
+ const sameWorkspace = previous.deviceId === identity.deviceId && previous.orgId === identity.orgId && previous.apiBase === identity.apiBase;
166
+ if (previous.fingerprint === print && sameWorkspace) {
167
+ if (await pendingMatches(report, identity))
168
+ return { status: "queued", skills: report.skills.length };
169
+ if (!await hasPendingReport())
170
+ return { status: "unchanged" };
171
+ }
172
+ try {
173
+ await savePending(report, identity);
174
+ }
175
+ catch (error) {
176
+ return { status: "failed", reason: error instanceof Error ? error.message : "Could not save the pending skill report." };
177
+ }
178
+ return { status: "queued", skills: report.skills.length };
78
179
  }
79
180
  //# sourceMappingURL=skill-sync.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"skill-sync.js","sourceRoot":"","sources":["../src/skill-sync.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"skill-sync.js","sourceRoot":"","sources":["../src/skill-sync.ts"],"names":[],"mappings":"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"}
package/dist/store.js CHANGED
@@ -2,18 +2,15 @@ import { chmod, mkdir, readFile, rename, stat, writeFile } from "node:fs/promise
2
2
  import { join } from "node:path";
3
3
  import { detectSequenceFindings } from "./sequences.js";
4
4
  import { approvalAuditEvent, validateApprovalRequest } from "./approvals.js";
5
- // core.normalize()'s id already collapses two hook firings for the *same* tool call when both
6
- // carry an identical tool_use_id -- but a wrapping agent (e.g. Cursor's own preToolUse hook
7
- // firing for a tool call that also went through the Claude Agent SDK's own hook loading, which
8
- // reads the same ~/.claude/settings.json Claude Code uses regardless of which product embeds the
9
- // SDK) mints its own tool_use_id rather than forwarding the inner agent's, so that id-based dedup
10
- // never engages and the same physical command shows up twice under two different "agent" labels.
11
- // This is a second, looser pass: two events from *different* agents, same phase/type/summary/
12
- // project, within a few seconds of each other are almost certainly one physical action observed
13
- // by two hooks, not two independent runs.
5
+ // Older imported events have no native hook identity. Keep their historical
6
+ // proximity deduplication; native activity records are retained per agent/session.
14
7
  const CROSS_AGENT_DEDUP_WINDOW_MS = 3000;
15
8
  const CROSS_AGENT_DEDUP_SCAN_WINDOW = 200;
16
9
  function findCrossAgentDuplicate(candidate, pool) {
10
+ // Native hook activity is scoped to its agent/session; proximity alone cannot prove
11
+ // two independently issued actions are duplicates.
12
+ if (candidate.activity)
13
+ return undefined;
17
14
  const t = Date.parse(candidate.timestamp);
18
15
  if (!Number.isFinite(t))
19
16
  return undefined;
package/dist/store.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"store.js","sourceRoot":"","sources":["../src/store.ts"],"names":[],"mappings":"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"}
package/dist/studio.js CHANGED
@@ -91,7 +91,7 @@ tr.row:hover { background:#0e1013; cursor:pointer; }
91
91
  <div class="filters">
92
92
  <input id="search" placeholder="Search actions, sessions, or tools…">
93
93
  <select id="agentFilter"><option value="all">All agents</option></select>
94
- <select id="severityFilter"><option value="all">All risk levels</option><option>critical</option><option>high</option><option>medium</option><option>info</option></select>
94
+ <select id="severityFilter"><option value="all">All risk levels</option><option>critical</option><option>high</option><option>medium</option><option>low</option><option>info</option></select>
95
95
  </div>
96
96
  <div class="panel"><table><thead><tr><th>Time</th><th>Action / context</th><th>Agent</th><th>Risk</th><th>Review</th></tr></thead><tbody id="eventRows"></tbody></table><div class="empty" id="eventsEmpty" style="display:none">Your timeline starts with the first event. Run <code>beam agent install &lt;agent&gt;</code> or <code>beam hook &lt;agent&gt;</code> to send one.</div></div>
97
97
  </div>
@@ -211,7 +211,7 @@ tr.row:hover { background:#0e1013; cursor:pointer; }
211
211
  }
212
212
 
213
213
  function risk(event) {
214
- var order = { critical: 3, high: 2, medium: 1, info: 0 };
214
+ var order = { critical: 4, high: 3, medium: 2, low: 1, info: 0 };
215
215
  var top = "info";
216
216
  (event.findings || []).forEach(function (f) { if (order[f.severity] > order[top]) top = f.severity; });
217
217
  return top;
@@ -264,7 +264,7 @@ tr.row:hover { background:#0e1013; cursor:pointer; }
264
264
  if (activeTab === "findings" && (!e.findings || !e.findings.length)) return false;
265
265
  if (agentFilter !== "all" && e.agent !== agentFilter) return false;
266
266
  if (sevFilter !== "all" && risk(e) !== sevFilter) return false;
267
- var haystack = (e.summary + " " + e.agent + " " + e.session + " " + e.type).toLowerCase();
267
+ var haystack = (e.summary + " " + e.agent + " " + e.session + " " + e.type + " " + JSON.stringify(e.activity || {})).toLowerCase();
268
268
  return !q || haystack.indexOf(q) !== -1;
269
269
  });
270
270
  var rows = visible.slice(0, 500).map(function (e) {
@@ -306,7 +306,7 @@ tr.row:hover { background:#0e1013; cursor:pointer; }
306
306
  [["Agent", event.agent], ["MCP server", event.mcp && event.mcp.server], ["MCP tool", event.mcp && event.mcp.tool], ["MCP resource", event.mcp && event.mcp.resource], ["Session", event.session], ["Time", new Date(event.timestamp).toLocaleString()], ["Source", event.source], ["Status", event.phase], ["Project", event.project || "Not supplied"], ["Endpoint", event.endpoint], ["Model", event.model || "Not supplied"]]
307
307
  .filter(function (kv) { return kv[1]; })
308
308
  .map(function (kv) { return "<dt>" + kv[0] + "</dt><dd>" + escapeHtml(kv[1]) + "</dd>"; }).join("") +
309
- "</dl>" + findings + "</section></div>";
309
+ "</dl>" + (event.activity ? '<h3>Captured activity</h3><pre style="white-space:pre-wrap;overflow-wrap:anywhere">' + escapeHtml(JSON.stringify(event.activity, null, 2)) + '</pre>' : '') + findings + "</section></div>";
310
310
  root.querySelector(".close").addEventListener("click", function () { root.innerHTML = ""; });
311
311
  root.querySelector(".drawer-backdrop").addEventListener("click", function (e) { if (e.target === e.currentTarget) root.innerHTML = ""; });
312
312
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-beam/beam",
3
- "version": "0.2.38",
3
+ "version": "0.2.40",
4
4
  "description": "Local-first observation and heuristic risk scanning for AI coding agents (Claude Code, Codex, Cursor, Copilot CLI, Gemini). Redacts secrets, flags risky tool calls, scans skills and MCP configs offline.",
5
5
  "keywords": [
6
6
  "ai agent security",
@@ -76,7 +76,10 @@
76
76
  },
77
77
  "dependencies": {
78
78
  "@anthropic-ai/sdk": "^1.2.0",
79
- "commander": "^13.0.0"
79
+ "commander": "^13.0.0",
80
+ "jsonc-parser": "^3.3.1",
81
+ "smol-toml": "^1.9.1",
82
+ "yaml": "^2.9.1"
80
83
  },
81
84
  "devDependencies": {
82
85
  "@types/jest": "^30.0.0",
@@ -1,8 +1,8 @@
1
1
  {
2
2
  "schema": 1,
3
3
  "package": "@agent-beam/beam",
4
- "version": "0.2.38",
5
- "generatedAt": "2026-10-28T05:17:31.487Z",
4
+ "version": "0.2.40",
5
+ "generatedAt": "2026-11-04T11:58:07.533Z",
6
6
  "passed": true,
7
7
  "environment": {
8
8
  "node": "v24.18.1",
@@ -16,30 +16,30 @@
16
16
  "id": "hostile-input",
17
17
  "title": "Hostile input",
18
18
  "passed": true,
19
- "summary": "41 attack shapes at 16 KB; the slowest took 7.3 ms (unicode tags)",
19
+ "summary": "41 attack shapes at 16 KB; the slowest took 9.49 ms (curl|)",
20
20
  "measured": {
21
- "worstMs": 7.3,
21
+ "worstMs": 9.49,
22
22
  "cases": 41,
23
23
  "slowest": [
24
- {
25
- "input": "unicode tags",
26
- "ms": 7.3
27
- },
28
24
  {
29
25
  "input": "curl|",
30
- "ms": 7.17
26
+ "ms": 9.49
31
27
  },
32
28
  {
33
- "input": "![a](https://e/?",
34
- "ms": 5.01
29
+ "input": "unicode tags",
30
+ "ms": 7.86
35
31
  },
36
32
  {
37
33
  "input": "nc ",
38
- "ms": 3.91
34
+ "ms": 4.01
35
+ },
36
+ {
37
+ "input": "![a](https://e/?",
38
+ "ms": 3.66
39
39
  },
40
40
  {
41
41
  "input": "<img ",
42
- "ms": 3.03
42
+ "ms": 2.61
43
43
  }
44
44
  ]
45
45
  },
@@ -49,30 +49,30 @@
49
49
  "id": "package-scan",
50
50
  "title": "Package scanning, hostile files",
51
51
  "passed": true,
52
- "summary": "17 attack shapes at 3 MB; the slowest took 167.1 ms (curl )",
52
+ "summary": "17 attack shapes at 3 MB; the slowest took 183.1 ms (curl )",
53
53
  "measured": {
54
- "worstMs": 167.1,
54
+ "worstMs": 183.1,
55
55
  "cases": 17,
56
56
  "slowest": [
57
57
  {
58
58
  "input": "curl ",
59
- "ms": 167.1
59
+ "ms": 183.1
60
60
  },
61
61
  {
62
62
  "input": "short lines",
63
- "ms": 144.3
63
+ "ms": 144.2
64
64
  },
65
65
  {
66
66
  "input": "ngrok",
67
- "ms": 94.5
67
+ "ms": 93.2
68
68
  },
69
69
  {
70
70
  "input": "webhook",
71
- "ms": 73
71
+ "ms": 79.9
72
72
  },
73
73
  {
74
74
  "input": "hex escapes",
75
- "ms": 66.1
75
+ "ms": 70.2
76
76
  }
77
77
  ]
78
78
  },
@@ -82,9 +82,9 @@
82
82
  "id": "throughput",
83
83
  "title": "Log throughput",
84
84
  "passed": true,
85
- "summary": "44,225 log lines per second on one core, attacks included",
85
+ "summary": "39,361 log lines per second on one core, attacks included",
86
86
  "measured": {
87
- "linesPerSecond": 44225,
87
+ "linesPerSecond": 39361,
88
88
  "lines": 300000
89
89
  },
90
90
  "limit": "over 10,000 lines per second"
@@ -93,11 +93,11 @@
93
93
  "id": "per-call",
94
94
  "title": "Cost per call in your app",
95
95
  "passed": true,
96
- "summary": "request() 23.4 µs (29.9 µs with full headers and Cloudflare's bot fields), prompt() 10.1 µs on a short message",
96
+ "summary": "request() 26.1 µs (32.3 µs with full headers and Cloudflare's bot fields), prompt() 10.7 µs on a short message",
97
97
  "measured": {
98
- "requestMicros": 23.4,
99
- "requestWithHeadersMicros": 29.9,
100
- "promptMicros": 10.1
98
+ "requestMicros": 26.1,
99
+ "requestWithHeadersMicros": 32.3,
100
+ "promptMicros": 10.7
101
101
  },
102
102
  "limit": "request() under 100 µs and prompt() under 200 µs"
103
103
  },
@@ -105,17 +105,17 @@
105
105
  "id": "memory-cli",
106
106
  "title": "Memory under load (beam monitor)",
107
107
  "passed": true,
108
- "summary": "10.4 MB at start; 13.6, 13.7, 13.7, 12.7, 12.3, 12.2 MB after each 500,000 lines; -1.5 MB from 1M to 3M lines",
108
+ "summary": "10.6 MB at start; 13.9, 14, 13.1, 12.5, 12.5, 12.5 MB after each 500,000 lines; -1.5 MB from 1M to 3M lines",
109
109
  "measured": {
110
110
  "heapMb": [
111
- 13.6,
112
- 13.7,
113
- 13.7,
114
- 12.7,
115
- 12.3,
116
- 12.2
111
+ 13.9,
112
+ 14,
113
+ 13.1,
114
+ 12.5,
115
+ 12.5,
116
+ 12.5
117
117
  ],
118
- "startMb": 10.4,
118
+ "startMb": 10.6,
119
119
  "growthMb": -1.5,
120
120
  "footprint": {
121
121
  "seen": 200,
@@ -138,13 +138,13 @@
138
138
  "id": "memory-sdk",
139
139
  "title": "Memory in your app while AgentBeam is down",
140
140
  "passed": true,
141
- "summary": "8.9, 8.9, 8.9, 8.9 MB after each 250,000 requests and prompts",
141
+ "summary": "9.2, 9.2, 9.2, 9.2 MB after each 250,000 requests and prompts",
142
142
  "measured": {
143
143
  "heapMb": [
144
- 8.9,
145
- 8.9,
146
- 8.9,
147
- 8.9
144
+ 9.2,
145
+ 9.2,
146
+ 9.2,
147
+ 9.2
148
148
  ],
149
149
  "growthMb": 0
150
150
  },
@@ -154,9 +154,9 @@
154
154
  "id": "outage",
155
155
  "title": "AgentBeam down or slow",
156
156
  "passed": true,
157
- "summary": "request() stayed at 21.5 µs; 1 send attempt, then none while backing off; a hung connection was dropped after 5.0 s, off the request path",
157
+ "summary": "request() stayed at 23.7 µs; 1 send attempt, then none while backing off; a hung connection was dropped after 5.0 s, off the request path",
158
158
  "measured": {
159
- "requestMicros": 21.5,
159
+ "requestMicros": 23.7,
160
160
  "attemptsBeforeBackoff": 1,
161
161
  "attemptsDuringBackoff": 0,
162
162
  "hungFlushMs": 5003
@@ -167,13 +167,13 @@
167
167
  "id": "cpu-budget",
168
168
  "title": "CPU cap",
169
169
  "passed": true,
170
- "summary": "with a 1% cap (600 ms a minute), a flood of 200 KB documents got 640 ms of checking (72 documents); the rest were skipped, flagged as skipped, at 0.12 µs each",
170
+ "summary": "with a 1% cap (600 ms a minute), a flood of 200 KB documents got 643 ms of checking (69 documents); the rest were skipped, flagged as skipped, at 0.22 µs each",
171
171
  "measured": {
172
172
  "capMs": 600,
173
- "spentMs": 640,
174
- "checked": 72,
173
+ "spentMs": 643,
174
+ "checked": 69,
175
175
  "skipped": 100000,
176
- "skippedCallMicros": 0.12
176
+ "skippedCallMicros": 0.22
177
177
  },
178
178
  "limit": "under twice the cap (one check can finish after the cap is reached)"
179
179
  }