@agent-beam/beam 0.1.0 → 0.2.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/dist/server.js CHANGED
@@ -4,12 +4,14 @@ import { Store } from "./store.js";
4
4
  import { inventory } from "./inventory.js";
5
5
  import { studioPage } from "./studio.js";
6
6
  import { loadCustomRules } from "./custom-rules.js";
7
+ import { ForwardQueue, forwardReview, forwardScan } from "./forward.js";
7
8
  export async function createCollector(options) {
8
9
  const store = new Store(options.directory);
9
10
  await store.init();
11
+ const forwardQueue = new ForwardQueue();
10
12
  const origins = new Set(options.origins ?? ["http://localhost:3200", "http://127.0.0.1:3200"]);
11
13
  const secret = Buffer.from(`Bearer ${options.token}`);
12
- return { store, async fetch(req) {
14
+ return { store, forwardQueue, async fetch(req) {
13
15
  const origin = req.headers.get("origin");
14
16
  const url = new URL(req.url);
15
17
  const headers = { "Cache-Control": "no-store", "X-Content-Type-Options": "nosniff", "Vary": "Origin" };
@@ -75,18 +77,29 @@ export async function createCollector(options) {
75
77
  throw new Error("Batch exceeds 2,000 records.");
76
78
  // Some exporters also emit indicator, summary and enforcement records; those are not action events.
77
79
  const supported = records.filter(r => !r.record_type || ["event", "finding"].includes(String(r.record_type)));
78
- const result = await store.addEvents(supported.map(normalize));
80
+ const normalized = supported.map(normalize);
81
+ const result = await store.addEvents(normalized);
82
+ forwardQueue.push(normalized);
79
83
  return json(url.pathname === "/v1/logs" ? {} : { ...result, skipped: records.length - supported.length });
80
84
  }
81
85
  const data = JSON.parse(body);
82
86
  if (url.pathname === "/scan") {
83
87
  if (typeof data.content !== "string" || typeof data.name !== "string" || !["skill", "mcp"].includes(data.kind))
84
88
  throw new Error("Expected name, content and kind (skill or mcp).");
85
- return json(await store.addScan(scanText(data.name, data.content, data.kind)));
89
+ const scan = await store.addScan(scanText(data.name, data.content, data.kind));
90
+ try {
91
+ await forwardScan(scan);
92
+ }
93
+ catch { /* offline */ }
94
+ return json(scan);
86
95
  }
87
96
  if (typeof data.id !== "string" || typeof data.reviewed !== "boolean")
88
97
  throw new Error("Expected event id and reviewed boolean.");
89
98
  await store.review(data.id, data.reviewed);
99
+ try {
100
+ await forwardReview(data.id, data.reviewed);
101
+ }
102
+ catch { /* offline */ }
90
103
  return json({ ok: true });
91
104
  }
92
105
  catch (e) {
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export declare function promptYesNo(question: string, defaultYes?: boolean): Promise<boolean>;
2
+ export declare function runSetup(): Promise<void>;
package/dist/setup.js ADDED
@@ -0,0 +1,91 @@
1
+ import { createInterface } from "node:readline/promises";
2
+ import { installAllDetectedHooks } from "./install.js";
3
+ import { readIdentity } from "./enroll.js";
4
+ import { startConnect } from "./connect.js";
5
+ import { installEnterprisePackage } from "./enterprise-install.js";
6
+ import { installService } from "./service.js";
7
+ import { openBrowser } from "./open-browser.js";
8
+ import { getIdentityPath } from "./config.js";
9
+ export async function promptYesNo(question, defaultYes = true) {
10
+ const suffix = defaultYes ? "[Y/n]" : "[y/N]";
11
+ if (!process.stdin.isTTY) {
12
+ console.log(`${question} ${suffix} (non-interactive shell, defaulting to ${defaultYes ? "yes" : "no"})`);
13
+ return defaultYes;
14
+ }
15
+ const rl = createInterface({ input: process.stdin, output: process.stdout });
16
+ try {
17
+ const answer = (await rl.question(`${question} ${suffix} `)).trim().toLowerCase();
18
+ if (!answer)
19
+ return defaultYes;
20
+ return answer.startsWith("y");
21
+ }
22
+ finally {
23
+ rl.close();
24
+ }
25
+ }
26
+ // One-shot onboarding for a machine that already has `beam` installed: wires beam's hook into
27
+ // every detected agent, connects the device if it isn't already, and optionally starts the
28
+ // background service. Any step that genuinely needs root (currently just installing the
29
+ // beam-enterprise package into global node_modules) transparently falls back to sudo via
30
+ // runWithSudoFallback -- service install never does, since it must write into the invoking
31
+ // user's own home directory, not root's.
32
+ export async function runSetup() {
33
+ console.log("Setting up Beam...\n");
34
+ console.log("Detecting installed AI agents and wiring beam's hook into each one...");
35
+ const hookResults = await installAllDetectedHooks();
36
+ for (const r of hookResults) {
37
+ if (r.status === "installed")
38
+ console.log(` ✔ Installed for ${r.name}`);
39
+ else if (r.status === "already-installed")
40
+ console.log(` ✔ Already installed for ${r.name}`);
41
+ else if (r.status === "not-supported")
42
+ console.log(` — ${r.name} detected, but hook install isn't built for it yet`);
43
+ else if (r.status === "error")
44
+ console.log(` ✖ ${r.name}: ${r.error}`);
45
+ }
46
+ if (!hookResults.some(r => r.status === "installed" || r.status === "already-installed")) {
47
+ console.log(" No supported agents detected on this machine.");
48
+ }
49
+ let identity = await readIdentity();
50
+ if (identity) {
51
+ console.log(`\n✔ Already connected (device ${identity.deviceId}).`);
52
+ }
53
+ else {
54
+ const shouldConnect = await promptYesNo("\nConnect this device to your Beam workspace now?");
55
+ if (shouldConnect) {
56
+ const session = await startConnect();
57
+ console.log(`\nConnect Beam CLI to Agentbeam:\n${session.url}`);
58
+ openBrowser(session.url);
59
+ console.log("Waiting for you to finish in the browser…");
60
+ identity = await session.poll();
61
+ console.log(`✔ Connected device ${identity.deviceId}\n` +
62
+ ` org: ${identity.orgId}\n` +
63
+ ` api: ${identity.apiBase}\n` +
64
+ ` identity: ${getIdentityPath()} (0600)`);
65
+ const enterprise = await installEnterprisePackage(identity);
66
+ if (enterprise.status === "installed")
67
+ console.log("✔ beam-enterprise installed (OS-level monitoring enabled).");
68
+ else if (enterprise.status === "error")
69
+ console.error(`✖ Could not install beam-enterprise: ${enterprise.message}`);
70
+ // "not-entitled": org isn't on the enterprise plan -- nothing to print, this is the normal case.
71
+ }
72
+ else {
73
+ console.log("Skipped. Run 'beam connect' whenever you're ready.");
74
+ }
75
+ }
76
+ const shouldStart = await promptYesNo("\nStart the beam background service now (survives reboot/logout)?");
77
+ if (shouldStart) {
78
+ try {
79
+ const result = await installService();
80
+ console.log(`✔ Installed and started the beam service (${result.platform})\n config: ${result.configPath}`);
81
+ }
82
+ catch (err) {
83
+ console.error(`✖ Could not start the beam service: ${err.message}`);
84
+ }
85
+ }
86
+ else {
87
+ console.log("Skipped. Run 'beam service install' (background) or 'beam start' (foreground) whenever you want it running.");
88
+ }
89
+ console.log("\nSetup complete. Run 'beam studio' to see activity, or 'beam agent list' to check hook status.");
90
+ }
91
+ //# sourceMappingURL=setup.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"setup.js","sourceRoot":"","sources":["../src/setup.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agent-beam/beam",
3
- "version": "0.1.0",
3
+ "version": "0.2.0",
4
4
  "description": "Beam - local observation and heuristic risk scanning for AI agent activity",
5
5
  "license": "AGPL-3.0-only",
6
6
  "type": "module",
@@ -29,9 +29,6 @@
29
29
  "dependencies": {
30
30
  "commander": "^13.0.0"
31
31
  },
32
- "optionalDependencies": {
33
- "beam-enterprise": "^0.1.0"
34
- },
35
32
  "devDependencies": {
36
33
  "@types/jest": "^30.0.0",
37
34
  "@types/node": "^22.10.5",