@brainpilot/runtime 0.0.8 → 0.0.10

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 (80) hide show
  1. package/dist/agent-error.d.ts.map +1 -1
  2. package/dist/agent-error.js +10 -3
  3. package/dist/agent-error.js.map +1 -1
  4. package/dist/events.d.ts +18 -1
  5. package/dist/events.d.ts.map +1 -1
  6. package/dist/events.js +16 -0
  7. package/dist/events.js.map +1 -1
  8. package/dist/extensions/agent-status.d.ts +13 -11
  9. package/dist/extensions/agent-status.d.ts.map +1 -1
  10. package/dist/extensions/agent-status.js +37 -21
  11. package/dist/extensions/agent-status.js.map +1 -1
  12. package/dist/extensions/trace-reminder.d.ts +7 -19
  13. package/dist/extensions/trace-reminder.d.ts.map +1 -1
  14. package/dist/extensions/trace-reminder.js +57 -33
  15. package/dist/extensions/trace-reminder.js.map +1 -1
  16. package/dist/index.d.ts +1 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/mas-agent.d.ts +2 -0
  21. package/dist/mas-agent.d.ts.map +1 -1
  22. package/dist/mas-agent.js +54 -3
  23. package/dist/mas-agent.js.map +1 -1
  24. package/dist/mcp-bridge.d.ts +21 -0
  25. package/dist/mcp-bridge.d.ts.map +1 -1
  26. package/dist/mcp-bridge.js +31 -1
  27. package/dist/mcp-bridge.js.map +1 -1
  28. package/dist/personas.d.ts.map +1 -1
  29. package/dist/personas.js +66 -14
  30. package/dist/personas.js.map +1 -1
  31. package/dist/platform.d.ts +32 -0
  32. package/dist/platform.d.ts.map +1 -0
  33. package/dist/platform.js +33 -0
  34. package/dist/platform.js.map +1 -0
  35. package/dist/server.d.ts +0 -12
  36. package/dist/server.d.ts.map +1 -1
  37. package/dist/server.js +27 -11
  38. package/dist/server.js.map +1 -1
  39. package/dist/session-manager.d.ts +50 -3
  40. package/dist/session-manager.d.ts.map +1 -1
  41. package/dist/session-manager.js +162 -36
  42. package/dist/session-manager.js.map +1 -1
  43. package/dist/tools/kb/paths.d.ts +24 -0
  44. package/dist/tools/kb/paths.d.ts.map +1 -0
  45. package/dist/tools/kb/paths.js +69 -0
  46. package/dist/tools/kb/paths.js.map +1 -0
  47. package/dist/tools/kb/python.d.ts +2 -0
  48. package/dist/tools/kb/python.d.ts.map +1 -0
  49. package/dist/tools/kb/python.js +42 -0
  50. package/dist/tools/kb/python.js.map +1 -0
  51. package/dist/tools/kb/retrieve.d.ts +20 -0
  52. package/dist/tools/kb/retrieve.d.ts.map +1 -0
  53. package/dist/tools/kb/retrieve.js +122 -0
  54. package/dist/tools/kb/retrieve.js.map +1 -0
  55. package/dist/tools/kb/search-papers.d.ts +39 -0
  56. package/dist/tools/kb/search-papers.d.ts.map +1 -0
  57. package/dist/tools/kb/search-papers.js +188 -0
  58. package/dist/tools/kb/search-papers.js.map +1 -0
  59. package/dist/tools/kb/sidecar.d.ts +11 -0
  60. package/dist/tools/kb/sidecar.d.ts.map +1 -0
  61. package/dist/tools/kb/sidecar.js +161 -0
  62. package/dist/tools/kb/sidecar.js.map +1 -0
  63. package/dist/tools/kb/store.d.ts +45 -0
  64. package/dist/tools/kb/store.d.ts.map +1 -0
  65. package/dist/tools/kb/store.js +157 -0
  66. package/dist/tools/kb/store.js.map +1 -0
  67. package/dist/tools/kb/tools.d.ts +24 -0
  68. package/dist/tools/kb/tools.d.ts.map +1 -0
  69. package/dist/tools/kb/tools.js +192 -0
  70. package/dist/tools/kb/tools.js.map +1 -0
  71. package/dist/tools/skill-search.d.ts +8 -1
  72. package/dist/tools/skill-search.d.ts.map +1 -1
  73. package/dist/tools/skill-search.js +54 -12
  74. package/dist/tools/skill-search.js.map +1 -1
  75. package/dist/tools/system-tools.d.ts.map +1 -1
  76. package/dist/tools/system-tools.js +41 -6
  77. package/dist/tools/system-tools.js.map +1 -1
  78. package/dist/types.d.ts +16 -0
  79. package/dist/types.d.ts.map +1 -1
  80. package/package.json +3 -3
package/dist/mas-agent.js CHANGED
@@ -193,6 +193,10 @@ export class MasAgent {
193
193
  this.session.dispose();
194
194
  this.setStatus("stopped");
195
195
  }
196
+ /** Emit a compaction-related system_message with the agent tag pre-filled. */
197
+ emitCompactionSystemMessage(level, message, details) {
198
+ this.bus.emit(ev.systemMessage(this.sessionId, level, message, { agent: this.name, details, recoverable: true }));
199
+ }
196
200
  recordError(message, details, raw) {
197
201
  const prev = this.lastError?.consecutiveCount ?? 0;
198
202
  this.lastError = { message, timestamp: new Date().toISOString(), consecutiveCount: prev + 1 };
@@ -214,13 +218,51 @@ export class MasAgent {
214
218
  case "agent_end":
215
219
  case "turn_start":
216
220
  case "turn_end":
217
- case "compaction_start":
218
- case "compaction_end":
219
221
  case "queue_update":
220
- // Internal / suppressed (§6 table: turn_*, compaction_* not exposed).
222
+ // Internal / suppressed (§6 table: turn_*, queue_update not exposed).
221
223
  // Behavioural reactions to turn_*/agent_end now live in the Pi-native
222
224
  // trace-reminder extension, not here.
223
225
  return;
226
+ // Pi auto-compacts when context nears the model window (threshold) or an
227
+ // overflow error came back. Surface both edges on the AG-UI CUSTOM channel
228
+ // (structured, name:"compaction") plus a `system_message` so text-only UIs
229
+ // see them too.
230
+ case "compaction_start": {
231
+ const cs = e;
232
+ const reason = normalizeCompactionReason(cs.reason);
233
+ this.bus.emit(ev.compactionStart(ctx, reason));
234
+ this.emitCompactionSystemMessage("info", `🗜️ Agent ${this.name} 正在压缩上下文 (${COMPACTION_REASON_LABEL[reason]})…`);
235
+ return;
236
+ }
237
+ case "compaction_end": {
238
+ const ce = e;
239
+ const reason = normalizeCompactionReason(ce.reason);
240
+ const { aborted, willRetry, errorMessage } = ce;
241
+ const r = ce.result;
242
+ this.bus.emit(ev.compactionEnd(ctx, {
243
+ reason,
244
+ aborted: Boolean(aborted),
245
+ willRetry: Boolean(willRetry),
246
+ errorMessage,
247
+ tokensBefore: r?.tokensBefore,
248
+ estimatedTokensAfter: r?.estimatedTokensAfter,
249
+ firstKeptEntryId: r?.firstKeptEntryId,
250
+ }));
251
+ const label = COMPACTION_REASON_LABEL[reason];
252
+ if (errorMessage) {
253
+ this.emitCompactionSystemMessage("warning", `⚠️ Agent ${this.name} 上下文压缩失败 (${label})`, errorMessage);
254
+ }
255
+ else if (aborted) {
256
+ this.emitCompactionSystemMessage("info", `🛑 Agent ${this.name} 上下文压缩已中止`);
257
+ }
258
+ else {
259
+ const delta = r?.tokensBefore !== undefined && r?.estimatedTokensAfter !== undefined
260
+ ? `:${r.tokensBefore.toLocaleString()} → ~${r.estimatedTokensAfter.toLocaleString()} tokens`
261
+ : "";
262
+ this.emitCompactionSystemMessage("info", `✅ Agent ${this.name} 上下文压缩完成 (${label})${delta}`);
263
+ }
264
+ return;
265
+ }
224
266
  case "message_start": {
225
267
  const msg = e;
226
268
  if (msg.message?.role === "assistant") {
@@ -354,6 +396,15 @@ export class MasAgent {
354
396
  }
355
397
  }
356
398
  }
399
+ /** Coerce Pi's `reason` field to the wire enum. Defaults to "manual" on unknown. */
400
+ function normalizeCompactionReason(r) {
401
+ return r === "threshold" || r === "overflow" ? r : "manual";
402
+ }
403
+ const COMPACTION_REASON_LABEL = {
404
+ manual: "手动",
405
+ threshold: "接近上下文上限",
406
+ overflow: "上下文溢出",
407
+ };
357
408
  function safeStringify(v) {
358
409
  if (v === undefined || v === null)
359
410
  return "";
@@ -1 +1 @@
1
- {"version":3,"file":"mas-agent.js","sourceRoot":"","sources":["../src/mas-agent.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mas-agent.js","sourceRoot":"","sources":["../src/mas-agent.ts"],"names":[],"mappings":"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"}
@@ -49,6 +49,27 @@ export declare function loadMcpServersConfig(dataRoot: string): Promise<McpServe
49
49
  export declare const defaultMcpConnect: McpConnectFn;
50
50
  /** Build the SDK transport for a server spec; defaults to stdio. Exported for tests. */
51
51
  export declare function openTransport(name: string, spec: McpServerSpec): Promise<import("@modelcontextprotocol/sdk/client/streamableHttp.js").StreamableHTTPClientTransport | import("@modelcontextprotocol/sdk/client/sse.js").SSEClientTransport | import("@modelcontextprotocol/sdk/client/stdio.js").StdioClientTransport>;
52
+ /**
53
+ * Windows shim resolution for stdio MCP servers (#7 — cross-platform pass).
54
+ *
55
+ * On Windows the npm-ecosystem launchers (`npx`, `npm`, `yarn`, `pnpm`) only
56
+ * exist as `.cmd` batch shims, never as a bare-name executable. Node ≥20.12's
57
+ * CVE-2024-27980 fix made `child_process.spawn("npx", …, { shell: false })`
58
+ * fail with EINVAL/ENOENT instead of silently routing through cmd.exe — so the
59
+ * de-facto MCP install form (`npx -y @modelcontextprotocol/server-*`) which
60
+ * appears in every published config and in our own scaffold blows up on Windows
61
+ * unless callers know to write `npx.cmd` themselves.
62
+ *
63
+ * We auto-append `.cmd` for that exact short list on Windows when the caller
64
+ * didn't already provide an extension. `node` is intentionally excluded — it's
65
+ * `node.exe` on Windows and Node's own launcher handles the `.exe` fallback.
66
+ * Anything outside the allow-list is passed through verbatim (we don't want to
67
+ * second-guess a user-supplied binary path).
68
+ *
69
+ * Exported so unit tests can exercise both branches without OS mocking — the
70
+ * `windows` flag is injected, not read from `process.platform`, here.
71
+ */
72
+ export declare function resolveStdioCommand(cmd: string, windows: boolean): string;
52
73
  export declare class McpBridge {
53
74
  private readonly connect;
54
75
  private clients;
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-bridge.d.ts","sourceRoot":"","sources":["../src/mcp-bridge.ts"],"names":[],"mappings":"AAoBA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAC;AAE/D,wEAAwE;AACxE,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC3C;AAED,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,SAAS,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAEzF;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAa7F;AAED,yFAAyF;AACzF,eAAO,MAAM,iBAAiB,EAAE,YAS/B,CAAC;AAEF,wFAAwF;AACxF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,yPA2BpE;AAED,qBAAa,SAAS;IAIR,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,MAAM,CAAoB;gBAEL,OAAO,GAAE,YAAgC;IAEtE,IAAI,KAAK,IAAI,UAAU,EAAE,CAExB;IAED,kEAAkE;IAC5D,UAAU,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAsB9D,OAAO,CAAC,IAAI;IAYZ,mDAAmD;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
1
+ {"version":3,"file":"mcp-bridge.d.ts","sourceRoot":"","sources":["../src/mcp-bridge.ts"],"names":[],"mappings":"AAqBA,OAAO,KAAK,EAAE,UAAU,EAAoB,MAAM,YAAY,CAAC;AAE/D,wEAAwE;AACxE,MAAM,MAAM,gBAAgB,GAAG,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;AAExD,MAAM,WAAW,aAAa;IAC5B,mDAAmD;IACnD,IAAI,CAAC,EAAE,gBAAgB,CAAC;IACxB,kCAAkC;IAClC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,sCAAsC;IACtC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,wDAAwD;IACxD,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAC7B,uDAAuD;IACvD,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,+EAA+E;IAC/E,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CAClC;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;CAC3C;AAED,yEAAyE;AACzE,MAAM,WAAW,aAAa;IAC5B,SAAS,IAAI,OAAO,CAAC;QAAE,KAAK,EAAE,iBAAiB,EAAE,CAAA;KAAE,CAAC,CAAC;IACrD,QAAQ,CAAC,IAAI,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;IAC7F,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACxB;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACvC;AAED,MAAM,WAAW,aAAa;IAC5B,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,MAAM,YAAY,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAEzF;;;;GAIG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,GAAG,IAAI,CAAC,CAa7F;AAED,yFAAyF;AACzF,eAAO,MAAM,iBAAiB,EAAE,YAS/B,CAAC;AAEF,wFAAwF;AACxF,wBAAsB,aAAa,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,yPA2BpE;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,MAAM,CAKzE;AAED,qBAAa,SAAS;IAIR,OAAO,CAAC,QAAQ,CAAC,OAAO;IAHpC,OAAO,CAAC,OAAO,CAAuB;IACtC,OAAO,CAAC,MAAM,CAAoB;gBAEL,OAAO,GAAE,YAAgC;IAEtE,IAAI,KAAK,IAAI,UAAU,EAAE,CAExB;IAED,kEAAkE;IAC5D,UAAU,CAAC,GAAG,EAAE,gBAAgB,GAAG,OAAO,CAAC,UAAU,EAAE,CAAC;IAsB9D,OAAO,CAAC,IAAI;IAYZ,mDAAmD;IAC7C,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;CAK7B"}
@@ -18,6 +18,7 @@
18
18
  */
19
19
  import { readFile } from "node:fs/promises";
20
20
  import { join } from "node:path";
21
+ import { isWindows } from "./platform.js";
21
22
  /**
22
23
  * Load `mcp_servers.json` from the data root. Looks under `bp_template/` first
23
24
  * (the user-editable global template, §11A.2), then `.bp/`. Returns null when
@@ -71,11 +72,40 @@ export async function openTransport(name, spec) {
71
72
  }
72
73
  const { StdioClientTransport } = await import("@modelcontextprotocol/sdk/client/stdio.js");
73
74
  return new StdioClientTransport({
74
- command: spec.command,
75
+ command: resolveStdioCommand(spec.command, isWindows),
75
76
  args: spec.args ?? [],
76
77
  ...(spec.env ? { env: spec.env } : {}),
77
78
  });
78
79
  }
80
+ /**
81
+ * Windows shim resolution for stdio MCP servers (#7 — cross-platform pass).
82
+ *
83
+ * On Windows the npm-ecosystem launchers (`npx`, `npm`, `yarn`, `pnpm`) only
84
+ * exist as `.cmd` batch shims, never as a bare-name executable. Node ≥20.12's
85
+ * CVE-2024-27980 fix made `child_process.spawn("npx", …, { shell: false })`
86
+ * fail with EINVAL/ENOENT instead of silently routing through cmd.exe — so the
87
+ * de-facto MCP install form (`npx -y @modelcontextprotocol/server-*`) which
88
+ * appears in every published config and in our own scaffold blows up on Windows
89
+ * unless callers know to write `npx.cmd` themselves.
90
+ *
91
+ * We auto-append `.cmd` for that exact short list on Windows when the caller
92
+ * didn't already provide an extension. `node` is intentionally excluded — it's
93
+ * `node.exe` on Windows and Node's own launcher handles the `.exe` fallback.
94
+ * Anything outside the allow-list is passed through verbatim (we don't want to
95
+ * second-guess a user-supplied binary path).
96
+ *
97
+ * Exported so unit tests can exercise both branches without OS mocking — the
98
+ * `windows` flag is injected, not read from `process.platform`, here.
99
+ */
100
+ export function resolveStdioCommand(cmd, windows) {
101
+ if (!windows)
102
+ return cmd;
103
+ if (/\.(cmd|bat|exe|ps1|com)$/i.test(cmd))
104
+ return cmd;
105
+ if (/^(npx|npm|yarn|pnpm)$/i.test(cmd))
106
+ return `${cmd}.cmd`;
107
+ return cmd;
108
+ }
79
109
  export class McpBridge {
80
110
  connect;
81
111
  clients = [];
@@ -1 +1 @@
1
- {"version":3,"file":"mcp-bridge.js","sourceRoot":"","sources":["../src/mcp-bridge.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mcp-bridge.js","sourceRoot":"","sources":["../src/mcp-bridge.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../src/personas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,sXAMd,CAAC;AAElB;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D;AA04BD,mEAAmE;AACnE,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ3C,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,qBAAqB,UAAwB,CAAC;AAoB3D;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpE"}
1
+ {"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../src/personas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH;;;;;;;;;GASG;AACH,eAAO,MAAM,kBAAkB,sXAMd,CAAC;AAElB;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAE7D;AA87BD,mEAAmE;AACnE,eAAO,MAAM,QAAQ,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAQ3C,CAAC;AAEF,6DAA6D;AAC7D,eAAO,MAAM,qBAAqB,UAAwB,CAAC;AAoB3D;;;;;GAKG;AACH,wBAAgB,UAAU,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,CAAC,EAAE,MAAM,GAAG,MAAM,CAEpE"}
package/dist/personas.js CHANGED
@@ -387,11 +387,26 @@ Procedure:
387
387
  clarification, "I'll start by ...", asking the user a question), skip the audit.
388
388
  The audit is for substantive deliverables, not every turn.
389
389
 
390
- ## Keeping the user informed
391
-
392
- Show progress and delegation status ("I've asked the librarian to survey X"),
393
- synthesized findings, decisions, and next steps. State assumptions, rationale,
394
- and risks for any direction you commit to. Be concise and rigorous.`;
390
+ ## User-facing communication style
391
+
392
+ Keep user-facing replies concise and result-first. Use internal state only to
393
+ decide what to do next; do not expose mailbox state, unread-message counts,
394
+ trace reminders, tool protocol, agent-status blocks, or audit workflow unless it
395
+ directly affects the user's decision.
396
+
397
+ For progress replies, use at most one short sentence about what is being checked
398
+ or what is ready. For final replies, lead with the answer or deliverable, then
399
+ include only what was done, the main result, important caveats, and the next
400
+ action if needed.
401
+
402
+ When you need the user to choose, call \`ask_user\` with the choices. Never claim
403
+ you have offered options, opened a prompt, or are waiting for a user choice
404
+ unless an \`ask_user\` call actually happened or the choices are visibly present
405
+ in the same user-facing reply.
406
+
407
+ Mention delegation only when it helps the user understand progress, risk, or a
408
+ decision. Do not narrate every reminder, tool call, internal review step, or
409
+ pending message.`;
395
410
  /* ------------------------------- librarian ------------------------------- */
396
411
  const LIBRARIAN = `# Librarian
397
412
 
@@ -618,6 +633,24 @@ logical structure, and audience awareness.
618
633
  tighten prose, enforce consistency.
619
634
  4. **Polish** — check citations, format to the venue, proofread.
620
635
 
636
+ ## Academic report narrative
637
+
638
+ Default to a purpose-driven structure. Each section or paragraph should make
639
+ clear:
640
+
641
+ 1. **Purpose** - what question or problem this part addresses.
642
+ 2. **Action** - what was inspected, designed, run, compared, or written.
643
+ 3. **Result** - what was found, produced, or decided.
644
+ 4. **Link** - how this result supports the user's goal and connects to the
645
+ previous or next part.
646
+
647
+ For reports, prefer this order unless the user asks otherwise: Objective /
648
+ Context, Approach, Results, Interpretation, Limitations, Next steps.
649
+
650
+ Write in a coherent academic voice: topic sentence first, evidence after,
651
+ interpretation last. Do not dump raw agent handoff packets, tool logs, mailbox
652
+ state, or internal process notes. Translate them into a clean narrative.
653
+
621
654
  ## Skills-driven writing
622
655
 
623
656
  Before drafting, ground your work in the skills library — a curated collection
@@ -653,15 +686,34 @@ ambiguous and materially changes the document. If the user's stated preference
653
686
  contradicts a skill's prescription, flag the tension and ask for clarification
654
687
  rather than silently overriding either.
655
688
 
656
- ### 3. Visualization guidance
657
-
658
- If the document calls for figures, charts, or data presentation, search both
659
- libraries for a visualization skill (router category **13_Visualization** is
660
- the usual home) and load it. Apply relevant guidance on figure design, chart
661
- selection, colour accessibility, and data-presentation best practices
662
- alongside the writing skill. When the visualisation skill conflicts with the
663
- writing skill (e.g. figure placement, caption style), defer to the writing
664
- skill for document-level conventions and to the visualisation skill for
689
+ ### 3. Visualization-first presentation
690
+
691
+ For every report-like deliverable, actively look for at least one useful
692
+ visualization or table. Visual presentation is the default way to make results
693
+ scannable: statistical charts for numeric results, comparison tables for
694
+ alternatives, timelines for processes, flow diagrams for methods, and conceptual
695
+ schematics for mechanisms or system designs.
696
+
697
+ If the task includes data, measurements, model outputs, survey results, or
698
+ comparisons, prefer concrete statistical charts over prose-only summaries. Pick
699
+ chart types that match the evidence: distributions, confidence intervals,
700
+ effect-size plots, paired comparisons, confusion matrices, ablations, or
701
+ time-series views as appropriate. Always include a caption that states what the
702
+ reader should learn from the figure.
703
+
704
+ If the document has no valid data to plot, still consider whether a structured
705
+ visual aid would clarify the story. Do not invent numbers, fake trends, or add a
706
+ decorative chart just to fill space. When plot generation, statistical
707
+ calculation, or image rendering is needed, ask the engineer for the artifact or
708
+ describe the required figure clearly in your handoff.
709
+
710
+ Search both libraries for a visualization skill (router category
711
+ **13_Visualization** is the usual home) and load it when a figure, chart, table,
712
+ or diagram would improve the deliverable. Apply relevant guidance on figure
713
+ design, chart selection, colour accessibility, and data-presentation best
714
+ practices alongside the writing skill. When the visualisation skill conflicts
715
+ with the writing skill (e.g. figure placement, caption style), defer to the
716
+ writing skill for document-level conventions and to the visualisation skill for
665
717
  figure-level execution.
666
718
 
667
719
  ### 4. Report skill grounding
@@ -1 +1 @@
1
- {"version":3,"file":"personas.js","sourceRoot":"","sources":["../src/personas.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"personas.js","sourceRoot":"","sources":["../src/personas.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,32 @@
1
+ /**
2
+ * platform.ts — single source of truth for cross-platform branch logic.
3
+ *
4
+ * Centralizes `process.platform` checks so callers consume semantic constants
5
+ * (`isWindows`, `gracefulSignalsSupported`) instead of scattering raw string
6
+ * comparisons (`process.platform === "win32"`) across the codebase. Re-exported
7
+ * from `@brainpilot/runtime` so `backend-core` and the CLI consume the same
8
+ * helpers without duplicating the detection.
9
+ *
10
+ * Resolved once at module load; we never observe `process.platform` mutating
11
+ * inside a single Node process, so caching as `const` is safe and lets V8
12
+ * fold the branches.
13
+ */
14
+ /** True when running on Windows (`win32`). Use this instead of literal compares. */
15
+ export declare const isWindows: boolean;
16
+ /** True on macOS / Darwin. */
17
+ export declare const isMacOS: boolean;
18
+ /** True on Linux. */
19
+ export declare const isLinux: boolean;
20
+ /**
21
+ * Whether the OS surfaces graceful POSIX signals (SIGINT/SIGTERM) to a Node
22
+ * child process via `process.kill` / `child.kill`. On Windows, Node maps any
23
+ * inter-process signal to `TerminateProcess`, which is a forceful kill that
24
+ * the target process cannot intercept — so a `SIGTERM` issued to a Windows
25
+ * BrainPilot server will NOT run the registered handlers, and any code that
26
+ * waits for "graceful exit" after SIGTERM will time out for no reason.
27
+ *
28
+ * Callers should use this to short-circuit the SIGTERM-then-wait path on
29
+ * Windows and proceed straight to the force-kill code.
30
+ */
31
+ export declare const gracefulSignalsSupported: boolean;
32
+ //# sourceMappingURL=platform.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,oFAAoF;AACpF,eAAO,MAAM,SAAS,SAAuB,CAAC;AAE9C,8BAA8B;AAC9B,eAAO,MAAM,OAAO,SAAwB,CAAC;AAE7C,qBAAqB;AACrB,eAAO,MAAM,OAAO,SAAuB,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,eAAO,MAAM,wBAAwB,SAAa,CAAC"}
@@ -0,0 +1,33 @@
1
+ /**
2
+ * platform.ts — single source of truth for cross-platform branch logic.
3
+ *
4
+ * Centralizes `process.platform` checks so callers consume semantic constants
5
+ * (`isWindows`, `gracefulSignalsSupported`) instead of scattering raw string
6
+ * comparisons (`process.platform === "win32"`) across the codebase. Re-exported
7
+ * from `@brainpilot/runtime` so `backend-core` and the CLI consume the same
8
+ * helpers without duplicating the detection.
9
+ *
10
+ * Resolved once at module load; we never observe `process.platform` mutating
11
+ * inside a single Node process, so caching as `const` is safe and lets V8
12
+ * fold the branches.
13
+ */
14
+ const platform = process.platform;
15
+ /** True when running on Windows (`win32`). Use this instead of literal compares. */
16
+ export const isWindows = platform === "win32";
17
+ /** True on macOS / Darwin. */
18
+ export const isMacOS = platform === "darwin";
19
+ /** True on Linux. */
20
+ export const isLinux = platform === "linux";
21
+ /**
22
+ * Whether the OS surfaces graceful POSIX signals (SIGINT/SIGTERM) to a Node
23
+ * child process via `process.kill` / `child.kill`. On Windows, Node maps any
24
+ * inter-process signal to `TerminateProcess`, which is a forceful kill that
25
+ * the target process cannot intercept — so a `SIGTERM` issued to a Windows
26
+ * BrainPilot server will NOT run the registered handlers, and any code that
27
+ * waits for "graceful exit" after SIGTERM will time out for no reason.
28
+ *
29
+ * Callers should use this to short-circuit the SIGTERM-then-wait path on
30
+ * Windows and proceed straight to the force-kill code.
31
+ */
32
+ export const gracefulSignalsSupported = !isWindows;
33
+ //# sourceMappingURL=platform.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"platform.js","sourceRoot":"","sources":["../src/platform.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,QAAQ,GAAG,OAAO,CAAC,QAAQ,CAAC;AAElC,oFAAoF;AACpF,MAAM,CAAC,MAAM,SAAS,GAAG,QAAQ,KAAK,OAAO,CAAC;AAE9C,8BAA8B;AAC9B,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,KAAK,QAAQ,CAAC;AAE7C,qBAAqB;AACrB,MAAM,CAAC,MAAM,OAAO,GAAG,QAAQ,KAAK,OAAO,CAAC;AAE5C;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,SAAS,CAAC"}
package/dist/server.d.ts CHANGED
@@ -1,15 +1,3 @@
1
- /**
2
- * HTTP server (§15.4 / RUNTIME_ROUTES) — implements every Runtime route on top
3
- * of the SessionManager. Uses hono + @hono/node-server. The SSE endpoint
4
- * streams AG-UI events for a session.
5
- *
6
- * Routes (from `@brainpilot/protocol` RUNTIME_ROUTES):
7
- * GET /health, GET /metrics
8
- * POST /sessions, GET /sessions, GET /sessions/:id, DELETE /sessions/:id
9
- * GET /sessions/:id/state, POST /sessions/:id/messages
10
- * GET /sse/:id (+ alias GET /sessions/:id/events)
11
- * POST /sessions/:id/interrupt, GET /sessions/:id/agents, POST /sessions/:id/evict
12
- */
13
1
  import { Hono } from "hono";
14
2
  import { SessionManager, type SessionManagerOptions } from "./session-manager.js";
15
3
  export declare function createServer(opts?: SessionManagerOptions & {
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElF,wBAAgB,YAAY,CAAC,IAAI,GAAE,qBAAqB,GAAG;IAAE,OAAO,CAAC,EAAE,cAAc,CAAA;CAAO,GAAG;IAC7F,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,EAAE,cAAc,CAAC;CACzB,CAsMA;AAUD,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,wBAAsB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC;IACxE,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC,CAwED"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../src/server.ts"],"names":[],"mappings":"AAaA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAS5B,OAAO,EAAE,cAAc,EAAE,KAAK,qBAAqB,EAAE,MAAM,sBAAsB,CAAC;AAElF,wBAAgB,YAAY,CAAC,IAAI,GAAE,qBAAqB,GAAG;IAAE,OAAO,CAAC,EAAE,cAAc,CAAA;CAAO,GAAG;IAC7F,GAAG,EAAE,IAAI,CAAC;IACV,OAAO,EAAE,cAAc,CAAC;CACzB,CAmNA;AAUD,MAAM,WAAW,kBAAmB,SAAQ,qBAAqB;IAC/D,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,cAAc,CAAC;CAC1B;AAED,wBAAsB,WAAW,CAAC,IAAI,GAAE,kBAAuB,GAAG,OAAO,CAAC;IACxE,OAAO,EAAE,cAAc,CAAC;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC5B,CAAC,CAwED"}
package/dist/server.js CHANGED
@@ -10,6 +10,7 @@
10
10
  * GET /sse/:id (+ alias GET /sessions/:id/events)
11
11
  * POST /sessions/:id/interrupt, GET /sessions/:id/agents, POST /sessions/:id/evict
12
12
  */
13
+ import { pathToFileURL } from "node:url";
13
14
  import { Hono } from "hono";
14
15
  import { serve } from "@hono/node-server";
15
16
  import { stream } from "hono/streaming";
@@ -27,9 +28,11 @@ export function createServer(opts = {}) {
27
28
  const session = await manager.createSession(input);
28
29
  return c.json({ id: session.id, session }, 201);
29
30
  });
30
- app.get("/sessions", (c) => c.json({ sessions: manager.listSessions() }));
31
- app.get("/sessions/:id", (c) => {
32
- const s = manager.getSession(c.req.param("id"));
31
+ app.get("/sessions", async (c) => c.json({ sessions: await manager.listSessions() }));
32
+ app.get("/sessions/:id", async (c) => {
33
+ const id = c.req.param("id");
34
+ await manager.ensureLoaded(id);
35
+ const s = manager.getSession(id);
33
36
  return s ? c.json(s) : c.json({ error: "not found" }, 404);
34
37
  });
35
38
  // #29: rename — PUT the session title and persist it to meta.json.
@@ -43,12 +46,16 @@ export function createServer(opts = {}) {
43
46
  const deleted = await manager.deleteSession(id);
44
47
  return c.json({ id, deleted }, deleted ? 200 : 404);
45
48
  });
46
- app.get("/sessions/:id/state", (c) => {
47
- const state = manager.getSessionState(c.req.param("id"));
49
+ app.get("/sessions/:id/state", async (c) => {
50
+ const id = c.req.param("id");
51
+ await manager.ensureLoaded(id);
52
+ const state = manager.getSessionState(id);
48
53
  return state ? c.json(state) : c.json({ error: "not found" }, 404);
49
54
  });
50
- app.get("/sessions/:id/trace", (c) => {
51
- const graph = manager.getTrace(c.req.param("id"));
55
+ app.get("/sessions/:id/trace", async (c) => {
56
+ const id = c.req.param("id");
57
+ await manager.ensureLoaded(id);
58
+ const graph = manager.getTrace(id);
52
59
  return graph ? c.json(graph) : c.json({ error: "not found" }, 404);
53
60
  });
54
61
  // Persisted event history (events.jsonl) — see RUNTIME_ROUTES.getSessionHistory.
@@ -71,6 +78,7 @@ export function createServer(opts = {}) {
71
78
  const parsed = SendMessageRequestSchema.safeParse(body);
72
79
  if (!parsed.success)
73
80
  return c.json({ error: "invalid body" }, 400);
81
+ await manager.ensureLoaded(id);
74
82
  if (!manager.getSession(id))
75
83
  return c.json({ error: "not found" }, 404);
76
84
  // ask_user reply branch: resolve the outstanding request.
@@ -92,10 +100,15 @@ export function createServer(opts = {}) {
92
100
  const body = await safeBody(c);
93
101
  const parsed = InterruptRequestSchema.safeParse(body);
94
102
  const agent = parsed.success ? parsed.data.agent : undefined;
103
+ await manager.ensureLoaded(id);
95
104
  const interrupted = await manager.interrupt(id, agent);
96
105
  return c.json({ interrupted });
97
106
  });
98
- app.get("/sessions/:id/agents", (c) => c.json({ agents: manager.listAgents(c.req.param("id")) }));
107
+ app.get("/sessions/:id/agents", async (c) => {
108
+ const id = c.req.param("id");
109
+ await manager.ensureLoaded(id);
110
+ return c.json({ agents: manager.listAgents(id) });
111
+ });
99
112
  app.post("/sessions/:id/evict", async (c) => {
100
113
  const res = await manager.evictSession(c.req.param("id"));
101
114
  return c.json(res, res.evicted ? 200 : 404);
@@ -164,7 +177,8 @@ export function createServer(opts = {}) {
164
177
  return c.json({ error: msg }, 400);
165
178
  }
166
179
  });
167
- const sseHandler = (id, c) => {
180
+ const sseHandler = async (id, c) => {
181
+ await manager.ensureLoaded(id);
168
182
  if (!manager.getSession(id))
169
183
  return c.json({ error: "not found" }, 404);
170
184
  c.header("Content-Type", "text/event-stream");
@@ -277,8 +291,10 @@ export async function startServer(opts = {}) {
277
291
  }),
278
292
  };
279
293
  }
280
- // Allow `node dist/server.js` to boot directly.
281
- if (process.argv[1] && import.meta.url === `file://${process.argv[1]}`) {
294
+ // Allow `node dist/server.js` to boot directly. Use pathToFileURL for the
295
+ // main-module check so it works on Windows too — a naive `file://${argv[1]}`
296
+ // never matches import.meta.url there (backslashes, drive letter, file:///).
297
+ if (process.argv[1] && import.meta.url === pathToFileURL(process.argv[1]).href) {
282
298
  void startServer().then(({ port }) => {
283
299
  // eslint-disable-next-line no-console
284
300
  console.log(`[runtime] listening on :${port} (mock=${process.env.BP_MOCK ?? "0"})`);