@brainpilot/runtime 0.0.4 → 0.0.6
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/README.md +61 -0
- package/dist/agent-error.d.ts +51 -0
- package/dist/agent-error.d.ts.map +1 -0
- package/dist/agent-error.js +163 -0
- package/dist/agent-error.js.map +1 -0
- package/dist/agent-factory.d.ts.map +1 -1
- package/dist/agent-factory.js +45 -10
- package/dist/agent-factory.js.map +1 -1
- package/dist/events.d.ts +18 -0
- package/dist/events.d.ts.map +1 -1
- package/dist/events.js +24 -0
- package/dist/events.js.map +1 -1
- package/dist/extensions/agent-status.d.ts +91 -0
- package/dist/extensions/agent-status.d.ts.map +1 -0
- package/dist/extensions/agent-status.js +103 -0
- package/dist/extensions/agent-status.js.map +1 -0
- package/dist/extensions/trace-reminder.d.ts +94 -0
- package/dist/extensions/trace-reminder.d.ts.map +1 -0
- package/dist/extensions/trace-reminder.js +153 -0
- package/dist/extensions/trace-reminder.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/mailbox.d.ts +37 -1
- package/dist/mailbox.d.ts.map +1 -1
- package/dist/mailbox.js +79 -2
- package/dist/mailbox.js.map +1 -1
- package/dist/mas-agent.d.ts +74 -12
- package/dist/mas-agent.d.ts.map +1 -1
- package/dist/mas-agent.js +158 -33
- package/dist/mas-agent.js.map +1 -1
- package/dist/materialize-skills.d.ts +40 -0
- package/dist/materialize-skills.d.ts.map +1 -0
- package/dist/materialize-skills.js +141 -0
- package/dist/materialize-skills.js.map +1 -0
- package/dist/mcp-bridge.d.ts +15 -2
- package/dist/mcp-bridge.d.ts.map +1 -1
- package/dist/mcp-bridge.js +53 -10
- package/dist/mcp-bridge.js.map +1 -1
- package/dist/mem-watchdog.d.ts +63 -0
- package/dist/mem-watchdog.d.ts.map +1 -0
- package/dist/mem-watchdog.js +81 -0
- package/dist/mem-watchdog.js.map +1 -0
- package/dist/mock-agent.d.ts.map +1 -1
- package/dist/mock-agent.js +13 -1
- package/dist/mock-agent.js.map +1 -1
- package/dist/personas.d.ts +16 -0
- package/dist/personas.d.ts.map +1 -1
- package/dist/personas.js +651 -8
- package/dist/personas.js.map +1 -1
- package/dist/pi-provider.d.ts +32 -1
- package/dist/pi-provider.d.ts.map +1 -1
- package/dist/pi-provider.js +70 -0
- package/dist/pi-provider.js.map +1 -1
- package/dist/provider-config.d.ts +23 -0
- package/dist/provider-config.d.ts.map +1 -0
- package/dist/provider-config.js +49 -0
- package/dist/provider-config.js.map +1 -0
- package/dist/server.d.ts +2 -2
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +146 -8
- package/dist/server.js.map +1 -1
- package/dist/session-manager.d.ts +367 -8
- package/dist/session-manager.d.ts.map +1 -1
- package/dist/session-manager.js +1082 -39
- package/dist/session-manager.js.map +1 -1
- package/dist/tools/skill-search.d.ts +53 -0
- package/dist/tools/skill-search.d.ts.map +1 -0
- package/dist/tools/skill-search.js +269 -0
- package/dist/tools/skill-search.js.map +1 -0
- package/dist/tools/system-tools.d.ts +22 -1
- package/dist/tools/system-tools.d.ts.map +1 -1
- package/dist/tools/system-tools.js +149 -21
- package/dist/tools/system-tools.js.map +1 -1
- package/dist/trace.d.ts +27 -1
- package/dist/trace.d.ts.map +1 -1
- package/dist/trace.js +60 -3
- package/dist/trace.js.map +1 -1
- package/dist/types.d.ts +61 -5
- package/dist/types.d.ts.map +1 -1
- package/package.json +6 -2
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"materialize-skills.js","sourceRoot":"","sources":["../src/materialize-skills.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAgCG;AACH,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAC5C,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAC;AACpE,OAAO,EAAE,SAAS,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AAC1C,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAE1C;;;;GAIG;AACH,MAAM,CAAC,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAoBnD;;;;;GAKG;AACH,MAAM,UAAU,uBAAuB,CAAC,OAAe,MAAM,CAAC,IAAI,CAAC,GAAG;IACpE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;QACpC,sEAAsE;QACtE,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;QACnE,OAAO,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,QAAQ,CAAC,CAAC;IAC1C,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,KAAK,UAAU,MAAM,CAAC,IAAY;IAChC,IAAI,CAAC;QACH,MAAM,MAAM,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC;QAC5B,OAAO,IAAI,CAAC;IACd,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,KAAK,CAAC;IACf,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,KAAK,UAAU,oBAAoB,CACjC,GAAW,EACX,GAAW,EACX,QAA6C;IAE7C,MAAM,KAAK,CAAC,GAAG,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACtC,MAAM,OAAO,GAAG,MAAM,OAAO,CAAC,GAAG,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;IAC5D,KAAK,MAAM,KAAK,IAAI,OAAO,EAAE,CAAC;QAC5B,MAAM,IAAI,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACnC,MAAM,EAAE,GAAG,IAAI,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;QACjC,IAAI,KAAK,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,oBAAoB,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;QACjD,CAAC;aAAM,IAAI,KAAK,CAAC,MAAM,EAAE,EAAE,CAAC;YAC1B,IAAI,MAAM,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC;gBACrB,QAAQ,CAAC,OAAO,EAAE,CAAC;gBACnB,SAAS;YACX,CAAC;YACD,MAAM,QAAQ,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;YACzB,QAAQ,CAAC,MAAM,EAAE,CAAC;QACpB,CAAC;QACD,sEAAsE;QACtE,+BAA+B;IACjC,CAAC;AACH,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,QAAgB;IACtD,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,QAAQ,CAAC,CAAC;IACrD,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IAClE,MAAM,MAAM,GAAG,uBAAuB,EAAE,CAAC;IACzC,MAAM,QAAQ,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAC3C,MAAM,MAAM,GAAG,EAAE,MAAM,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;IAEzC,yEAAyE;IACzE,+DAA+D;IAC/D,MAAM,KAAK,CAAC,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACvC,MAAM,KAAK,CAAC,UAAU,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAE7C,IAAI,MAAM,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;QACrC,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,CAAC,CAAC;QAChE,KAAK,MAAM,KAAK,IAAI,QAAQ,EAAE,CAAC;YAC7B,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE;gBAAE,SAAS,CAAC,sCAAsC;YAC1E,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;YACtC,IAAI,KAAK,CAAC,IAAI,KAAK,kBAAkB,EAAE,CAAC;gBACtC,uEAAuE;gBACvE,qEAAqE;gBACrE,MAAM,EAAE,GAAG,IAAI,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBAClC,MAAM,oBAAoB,CAAC,IAAI,EAAE,EAAE,EAAE,QAAQ,CAAC,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,MAAM,EAAE,GAAG,IAAI,CAAC,UAAU,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC;gBACxC,MAAM,oBAAoB,CAAC,IAAI,EAAE,EAAE,EAAE,MAAM,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO;QACL,IAAI;QACJ,UAAU;QACV,MAAM,EAAE,MAAM,IAAI,CAAC,MAAM,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,IAAI;QACxD,MAAM,EAAE,QAAQ,CAAC,MAAM;QACvB,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,YAAY,EAAE,MAAM,CAAC,MAAM;QAC3B,aAAa,EAAE,MAAM,CAAC,OAAO;KAC9B,CAAC;AACJ,CAAC"}
|
package/dist/mcp-bridge.d.ts
CHANGED
|
@@ -1,8 +1,19 @@
|
|
|
1
1
|
import type { SystemTool } from "./types.js";
|
|
2
|
+
/** Wire transport for an MCP server. Absent ⇒ "stdio" (back-compat). */
|
|
3
|
+
export type McpTransportType = "stdio" | "http" | "sse";
|
|
2
4
|
export interface McpServerSpec {
|
|
3
|
-
|
|
5
|
+
/** Transport. Defaults to "stdio" when omitted. */
|
|
6
|
+
type?: McpTransportType;
|
|
7
|
+
/** stdio: executable to spawn. */
|
|
8
|
+
command?: string;
|
|
9
|
+
/** stdio: arguments for `command`. */
|
|
4
10
|
args?: string[];
|
|
11
|
+
/** stdio: extra environment for the spawned process. */
|
|
5
12
|
env?: Record<string, string>;
|
|
13
|
+
/** http/sse: endpoint URL of the remote MCP server. */
|
|
14
|
+
url?: string;
|
|
15
|
+
/** http/sse: extra HTTP headers (e.g. Authorization) sent on every request. */
|
|
16
|
+
headers?: Record<string, string>;
|
|
6
17
|
}
|
|
7
18
|
export interface McpServersConfig {
|
|
8
19
|
mcpServers: Record<string, McpServerSpec>;
|
|
@@ -34,8 +45,10 @@ export type McpConnectFn = (name: string, spec: McpServerSpec) => Promise<McpCli
|
|
|
34
45
|
* absent — MCP is entirely opt-in and adds zero overhead when unconfigured.
|
|
35
46
|
*/
|
|
36
47
|
export declare function loadMcpServersConfig(dataRoot: string): Promise<McpServersConfig | null>;
|
|
37
|
-
/** Real connect:
|
|
48
|
+
/** Real connect: open the transport named by `spec.type` and hand back a thin client. */
|
|
38
49
|
export declare const defaultMcpConnect: McpConnectFn;
|
|
50
|
+
/** Build the SDK transport for a server spec; defaults to stdio. Exported for tests. */
|
|
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>;
|
|
39
52
|
export declare class McpBridge {
|
|
40
53
|
private readonly connect;
|
|
41
54
|
private clients;
|
package/dist/mcp-bridge.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-bridge.d.ts","sourceRoot":"","sources":["../src/mcp-bridge.ts"],"names":[],"mappings":"
|
|
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"}
|
package/dist/mcp-bridge.js
CHANGED
|
@@ -10,8 +10,11 @@
|
|
|
10
10
|
* Tools are namespaced `mcp__<server>__<tool>` to avoid cross-server collisions.
|
|
11
11
|
* A failing server is logged and skipped — it never aborts the others.
|
|
12
12
|
*
|
|
13
|
-
* Config shape (standard MCP/Claude format)
|
|
14
|
-
*
|
|
13
|
+
* Config shape (standard MCP/Claude format). Three transports are supported,
|
|
14
|
+
* selected by the optional `type` field (defaults to "stdio" for back-compat):
|
|
15
|
+
* stdio: { "fs": { "command": "npx", "args": ["-y", "..."], "env": {} } }
|
|
16
|
+
* http: { "api": { "type": "http", "url": "https://host/mcp", "headers": {} } }
|
|
17
|
+
* sse: { "evt": { "type": "sse", "url": "https://host/sse", "headers": {} } }
|
|
15
18
|
*/
|
|
16
19
|
import { readFile } from "node:fs/promises";
|
|
17
20
|
import { join } from "node:path";
|
|
@@ -35,23 +38,44 @@ export async function loadMcpServersConfig(dataRoot) {
|
|
|
35
38
|
}
|
|
36
39
|
return null;
|
|
37
40
|
}
|
|
38
|
-
/** Real connect:
|
|
41
|
+
/** Real connect: open the transport named by `spec.type` and hand back a thin client. */
|
|
39
42
|
export const defaultMcpConnect = async (name, spec) => {
|
|
40
43
|
const { Client } = await import("@modelcontextprotocol/sdk/client/index.js");
|
|
41
|
-
const { StdioClientTransport } = await import("@modelcontextprotocol/sdk/client/stdio.js");
|
|
42
|
-
const transport = new StdioClientTransport({
|
|
43
|
-
command: spec.command,
|
|
44
|
-
args: spec.args ?? [],
|
|
45
|
-
...(spec.env ? { env: spec.env } : {}),
|
|
46
|
-
});
|
|
47
44
|
const client = new Client({ name: `brainpilot-${name}`, version: "0.1.0" });
|
|
48
|
-
await client.connect(
|
|
45
|
+
await client.connect(await openTransport(name, spec));
|
|
49
46
|
return {
|
|
50
47
|
listTools: () => client.listTools(),
|
|
51
48
|
callTool: (a) => client.callTool(a),
|
|
52
49
|
close: () => client.close(),
|
|
53
50
|
};
|
|
54
51
|
};
|
|
52
|
+
/** Build the SDK transport for a server spec; defaults to stdio. Exported for tests. */
|
|
53
|
+
export async function openTransport(name, spec) {
|
|
54
|
+
const type = spec.type ?? "stdio";
|
|
55
|
+
if (type === "http" || type === "sse") {
|
|
56
|
+
if (!spec.url) {
|
|
57
|
+
throw new Error(`mcp server '${name}': type '${type}' requires a 'url'`);
|
|
58
|
+
}
|
|
59
|
+
const url = new URL(spec.url);
|
|
60
|
+
// Custom headers (e.g. Authorization) ride on `requestInit` for both transports.
|
|
61
|
+
const opts = spec.headers ? { requestInit: { headers: spec.headers } } : undefined;
|
|
62
|
+
if (type === "http") {
|
|
63
|
+
const { StreamableHTTPClientTransport } = await import("@modelcontextprotocol/sdk/client/streamableHttp.js");
|
|
64
|
+
return new StreamableHTTPClientTransport(url, opts);
|
|
65
|
+
}
|
|
66
|
+
const { SSEClientTransport } = await import("@modelcontextprotocol/sdk/client/sse.js");
|
|
67
|
+
return new SSEClientTransport(url, opts);
|
|
68
|
+
}
|
|
69
|
+
if (!spec.command) {
|
|
70
|
+
throw new Error(`mcp server '${name}': type 'stdio' requires a 'command'`);
|
|
71
|
+
}
|
|
72
|
+
const { StdioClientTransport } = await import("@modelcontextprotocol/sdk/client/stdio.js");
|
|
73
|
+
return new StdioClientTransport({
|
|
74
|
+
command: spec.command,
|
|
75
|
+
args: spec.args ?? [],
|
|
76
|
+
...(spec.env ? { env: spec.env } : {}),
|
|
77
|
+
});
|
|
78
|
+
}
|
|
55
79
|
export class McpBridge {
|
|
56
80
|
connect;
|
|
57
81
|
clients = [];
|
|
@@ -65,6 +89,13 @@ export class McpBridge {
|
|
|
65
89
|
/** Connect every server in the config and collect their tools. */
|
|
66
90
|
async connectAll(cfg) {
|
|
67
91
|
for (const [name, spec] of Object.entries(cfg.mcpServers)) {
|
|
92
|
+
if (isPlaceholderSpec(spec)) {
|
|
93
|
+
// A scaffolded slot whose url/command hasn't been filled in yet — skip
|
|
94
|
+
// quietly so the default config never delays launch or logs an error.
|
|
95
|
+
// eslint-disable-next-line no-console
|
|
96
|
+
console.info(`[mcp] server '${name}' not configured yet — skipping`);
|
|
97
|
+
continue;
|
|
98
|
+
}
|
|
68
99
|
try {
|
|
69
100
|
const client = await this.connect(name, spec);
|
|
70
101
|
this.clients.push(client);
|
|
@@ -97,6 +128,18 @@ export class McpBridge {
|
|
|
97
128
|
this._tools = [];
|
|
98
129
|
}
|
|
99
130
|
}
|
|
131
|
+
/**
|
|
132
|
+
* A spec is a "placeholder" when its required address field is blank: an
|
|
133
|
+
* http/sse entry with no `url`, or a stdio entry with no `command`. The scaffold
|
|
134
|
+
* ships one such slot (`type:"http", url:""`) so the runtime treats an unfilled
|
|
135
|
+
* default as opt-in rather than a misconfiguration.
|
|
136
|
+
*/
|
|
137
|
+
function isPlaceholderSpec(spec) {
|
|
138
|
+
const type = spec.type ?? "stdio";
|
|
139
|
+
if (type === "http" || type === "sse")
|
|
140
|
+
return !spec.url?.trim();
|
|
141
|
+
return !spec.command?.trim();
|
|
142
|
+
}
|
|
100
143
|
/** Map an MCP tool-call `content` payload into our text-content shape. */
|
|
101
144
|
function normalizeContent(content) {
|
|
102
145
|
if (Array.isArray(content)) {
|
package/dist/mcp-bridge.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-bridge.js","sourceRoot":"","sources":["../src/mcp-bridge.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"mcp-bridge.js","sourceRoot":"","sources":["../src/mcp-bridge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory watchdog (§R-4 / issue #20) — opt-in, in-process soft defense against
|
|
3
|
+
* the container memory budget.
|
|
4
|
+
*
|
|
5
|
+
* The hosted instance-per-user layer injects `BP_MEM_LIMIT_MB` and enforces a
|
|
6
|
+
* hard cgroup ceiling. This watchdog lets the runtime *self-throttle* before
|
|
7
|
+
* the kernel OOM-kills it: past a soft threshold (default 85% of the budget)
|
|
8
|
+
* the SessionManager refuses new sessions/messages and emits a system message.
|
|
9
|
+
*
|
|
10
|
+
* STRICT OPT-IN: `BP_MEM_LIMIT_MB` unset (or non-positive / unparseable) means
|
|
11
|
+
* the feature is entirely disabled — identical behavior to today. We never
|
|
12
|
+
* invent a ceiling for single-user self-hosting; the cgroup `--memory` (when
|
|
13
|
+
* present) remains the only backstop in that case.
|
|
14
|
+
*
|
|
15
|
+
* The RSS reader and interval are injectable so the policy is unit-testable
|
|
16
|
+
* without real memory pressure or wall-clock timers.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Parse `BP_MEM_LIMIT_MB` into a byte budget. Returns `null` (feature off)
|
|
20
|
+
* unless the value is a positive, finite number of megabytes.
|
|
21
|
+
*/
|
|
22
|
+
export declare function parseMemLimitMb(env?: NodeJS.ProcessEnv): number | null;
|
|
23
|
+
export interface MemWatchdogOptions {
|
|
24
|
+
/** Budget in bytes (typically from {@link parseMemLimitMb}). */
|
|
25
|
+
limitBytes: number;
|
|
26
|
+
/** Fraction of the budget at which to start throttling (default 0.85). */
|
|
27
|
+
softRatio?: number;
|
|
28
|
+
/** Poll interval in ms (default 2000). */
|
|
29
|
+
pollMs?: number;
|
|
30
|
+
/** RSS reader; default reads the real process RSS. Injected in tests. */
|
|
31
|
+
readRss?: () => number;
|
|
32
|
+
/**
|
|
33
|
+
* Called once on the rising edge into the throttled state (not every tick),
|
|
34
|
+
* so the caller can emit a single warning rather than spamming.
|
|
35
|
+
*/
|
|
36
|
+
onThrottle?: (snapshot: MemSnapshot) => void;
|
|
37
|
+
}
|
|
38
|
+
export interface MemSnapshot {
|
|
39
|
+
limitBytes: number;
|
|
40
|
+
rss: number;
|
|
41
|
+
/** rss / limitBytes. */
|
|
42
|
+
ratio: number;
|
|
43
|
+
}
|
|
44
|
+
export declare class MemWatchdog {
|
|
45
|
+
private readonly limitBytes;
|
|
46
|
+
private readonly softRatio;
|
|
47
|
+
private readonly pollMs;
|
|
48
|
+
private readonly readRss;
|
|
49
|
+
private readonly onThrottle?;
|
|
50
|
+
private timer;
|
|
51
|
+
private throttling;
|
|
52
|
+
constructor(opts: MemWatchdogOptions);
|
|
53
|
+
/** Current footprint relative to the budget. */
|
|
54
|
+
snapshot(): MemSnapshot;
|
|
55
|
+
/** True once RSS has reached the soft threshold — the signal to refuse work. */
|
|
56
|
+
isOverSoftLimit(): boolean;
|
|
57
|
+
/** Begin polling. The interval is `unref()`d so it never holds the process open. */
|
|
58
|
+
start(): void;
|
|
59
|
+
stop(): void;
|
|
60
|
+
/** Evaluate the threshold; fire {@link MemWatchdogOptions.onThrottle} on the rising edge. */
|
|
61
|
+
tick(): void;
|
|
62
|
+
}
|
|
63
|
+
//# sourceMappingURL=mem-watchdog.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mem-watchdog.d.ts","sourceRoot":"","sources":["../src/mem-watchdog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;GAGG;AACH,wBAAgB,eAAe,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,GAAG,IAAI,CAMnF;AAED,MAAM,WAAW,kBAAkB;IACjC,gEAAgE;IAChE,UAAU,EAAE,MAAM,CAAC;IACnB,0EAA0E;IAC1E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,0CAA0C;IAC1C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,yEAAyE;IACzE,OAAO,CAAC,EAAE,MAAM,MAAM,CAAC;IACvB;;;OAGG;IACH,UAAU,CAAC,EAAE,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC;CAC9C;AAED,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,GAAG,EAAE,MAAM,CAAC;IACZ,wBAAwB;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAS;IAChC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAe;IACvC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAkC;IAC9D,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,UAAU,CAAS;gBAEf,IAAI,EAAE,kBAAkB;IAQpC,gDAAgD;IAChD,QAAQ,IAAI,WAAW;IAKvB,gFAAgF;IAChF,eAAe,IAAI,OAAO;IAI1B,oFAAoF;IACpF,KAAK,IAAI,IAAI;IAMb,IAAI,IAAI,IAAI;IAOZ,6FAA6F;IAC7F,IAAI,IAAI,IAAI;CAUb"}
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory watchdog (§R-4 / issue #20) — opt-in, in-process soft defense against
|
|
3
|
+
* the container memory budget.
|
|
4
|
+
*
|
|
5
|
+
* The hosted instance-per-user layer injects `BP_MEM_LIMIT_MB` and enforces a
|
|
6
|
+
* hard cgroup ceiling. This watchdog lets the runtime *self-throttle* before
|
|
7
|
+
* the kernel OOM-kills it: past a soft threshold (default 85% of the budget)
|
|
8
|
+
* the SessionManager refuses new sessions/messages and emits a system message.
|
|
9
|
+
*
|
|
10
|
+
* STRICT OPT-IN: `BP_MEM_LIMIT_MB` unset (or non-positive / unparseable) means
|
|
11
|
+
* the feature is entirely disabled — identical behavior to today. We never
|
|
12
|
+
* invent a ceiling for single-user self-hosting; the cgroup `--memory` (when
|
|
13
|
+
* present) remains the only backstop in that case.
|
|
14
|
+
*
|
|
15
|
+
* The RSS reader and interval are injectable so the policy is unit-testable
|
|
16
|
+
* without real memory pressure or wall-clock timers.
|
|
17
|
+
*/
|
|
18
|
+
/**
|
|
19
|
+
* Parse `BP_MEM_LIMIT_MB` into a byte budget. Returns `null` (feature off)
|
|
20
|
+
* unless the value is a positive, finite number of megabytes.
|
|
21
|
+
*/
|
|
22
|
+
export function parseMemLimitMb(env = process.env) {
|
|
23
|
+
const raw = env.BP_MEM_LIMIT_MB;
|
|
24
|
+
if (raw === undefined || raw.trim() === "")
|
|
25
|
+
return null;
|
|
26
|
+
const mb = Number(raw);
|
|
27
|
+
if (!Number.isFinite(mb) || mb <= 0)
|
|
28
|
+
return null;
|
|
29
|
+
return Math.floor(mb) * 1024 * 1024;
|
|
30
|
+
}
|
|
31
|
+
export class MemWatchdog {
|
|
32
|
+
limitBytes;
|
|
33
|
+
softRatio;
|
|
34
|
+
pollMs;
|
|
35
|
+
readRss;
|
|
36
|
+
onThrottle;
|
|
37
|
+
timer = null;
|
|
38
|
+
throttling = false;
|
|
39
|
+
constructor(opts) {
|
|
40
|
+
this.limitBytes = opts.limitBytes;
|
|
41
|
+
this.softRatio = opts.softRatio ?? 0.85;
|
|
42
|
+
this.pollMs = opts.pollMs ?? 2000;
|
|
43
|
+
this.readRss = opts.readRss ?? (() => process.memoryUsage().rss);
|
|
44
|
+
this.onThrottle = opts.onThrottle;
|
|
45
|
+
}
|
|
46
|
+
/** Current footprint relative to the budget. */
|
|
47
|
+
snapshot() {
|
|
48
|
+
const rss = this.readRss();
|
|
49
|
+
return { limitBytes: this.limitBytes, rss, ratio: rss / this.limitBytes };
|
|
50
|
+
}
|
|
51
|
+
/** True once RSS has reached the soft threshold — the signal to refuse work. */
|
|
52
|
+
isOverSoftLimit() {
|
|
53
|
+
return this.readRss() >= this.limitBytes * this.softRatio;
|
|
54
|
+
}
|
|
55
|
+
/** Begin polling. The interval is `unref()`d so it never holds the process open. */
|
|
56
|
+
start() {
|
|
57
|
+
if (this.timer)
|
|
58
|
+
return;
|
|
59
|
+
this.timer = setInterval(() => this.tick(), this.pollMs);
|
|
60
|
+
this.timer.unref?.();
|
|
61
|
+
}
|
|
62
|
+
stop() {
|
|
63
|
+
if (this.timer) {
|
|
64
|
+
clearInterval(this.timer);
|
|
65
|
+
this.timer = null;
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
/** Evaluate the threshold; fire {@link MemWatchdogOptions.onThrottle} on the rising edge. */
|
|
69
|
+
tick() {
|
|
70
|
+
const over = this.isOverSoftLimit();
|
|
71
|
+
if (over && !this.throttling) {
|
|
72
|
+
this.throttling = true;
|
|
73
|
+
this.onThrottle?.(this.snapshot());
|
|
74
|
+
}
|
|
75
|
+
else if (!over && this.throttling) {
|
|
76
|
+
// Fell back below the threshold — re-arm so a later spike warns again.
|
|
77
|
+
this.throttling = false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=mem-watchdog.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mem-watchdog.js","sourceRoot":"","sources":["../src/mem-watchdog.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAEH;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,MAAyB,OAAO,CAAC,GAAG;IAClE,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC;IAChC,IAAI,GAAG,KAAK,SAAS,IAAI,GAAG,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,IAAI,CAAC;IACxD,MAAM,EAAE,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;IACvB,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,EAAE,CAAC,IAAI,EAAE,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACjD,OAAO,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,IAAI,GAAG,IAAI,CAAC;AACtC,CAAC;AAyBD,MAAM,OAAO,WAAW;IACL,UAAU,CAAS;IACnB,SAAS,CAAS;IAClB,MAAM,CAAS;IACf,OAAO,CAAe;IACtB,UAAU,CAAmC;IACtD,KAAK,GAA0C,IAAI,CAAC;IACpD,UAAU,GAAG,KAAK,CAAC;IAE3B,YAAY,IAAwB;QAClC,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;QAClC,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC;QACxC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,IAAI,IAAI,CAAC;QAClC,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,OAAO,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,GAAG,CAAC,CAAC;QACjE,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,UAAU,CAAC;IACpC,CAAC;IAED,gDAAgD;IAChD,QAAQ;QACN,MAAM,GAAG,GAAG,IAAI,CAAC,OAAO,EAAE,CAAC;QAC3B,OAAO,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;IAC5E,CAAC;IAED,gFAAgF;IAChF,eAAe;QACb,OAAO,IAAI,CAAC,OAAO,EAAE,IAAI,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC,SAAS,CAAC;IAC5D,CAAC;IAED,oFAAoF;IACpF,KAAK;QACH,IAAI,IAAI,CAAC,KAAK;YAAE,OAAO;QACvB,IAAI,CAAC,KAAK,GAAG,WAAW,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzD,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,EAAE,CAAC;IACvB,CAAC;IAED,IAAI;QACF,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC;YACf,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC1B,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC;QACpB,CAAC;IACH,CAAC;IAED,6FAA6F;IAC7F,IAAI;QACF,MAAM,IAAI,GAAG,IAAI,CAAC,eAAe,EAAE,CAAC;QACpC,IAAI,IAAI,IAAI,CAAC,IAAI,CAAC,UAAU,EAAE,CAAC;YAC7B,IAAI,CAAC,UAAU,GAAG,IAAI,CAAC;YACvB,IAAI,CAAC,UAAU,EAAE,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QACrC,CAAC;aAAM,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YACpC,uEAAuE;YACvE,IAAI,CAAC,UAAU,GAAG,KAAK,CAAC;QAC1B,CAAC;IACH,CAAC;CACF"}
|
package/dist/mock-agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-agent.d.ts","sourceRoot":"","sources":["../src/mock-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,qBAAa,gBAAiB,YAAW,aAAa;IAOxC,OAAO,CAAC,QAAQ,CAAC,GAAG;IANhC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEI,GAAG,EAAE,iBAAiB;IAKnD,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI;IAK1D,OAAO,CAAC,IAAI;IAUN,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"mock-agent.d.ts","sourceRoot":"","sources":["../src/mock-agent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,aAAa,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE1E,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,UAAU,EAAE,CAAC;IAC1B,kEAAkE;IAClE,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAID,qBAAa,gBAAiB,YAAW,aAAa;IAOxC,OAAO,CAAC,QAAQ,CAAC,GAAG;IANhC,QAAQ,CAAC,SAAS,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAwC;IAClE,OAAO,CAAC,QAAQ,CAAC,OAAO,CAA0B;IAClD,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,QAAQ,CAAS;gBAEI,GAAG,EAAE,iBAAiB;IAKnD,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,YAAY,KAAK,IAAI,GAAG,MAAM,IAAI;IAK1D,OAAO,CAAC,IAAI;IAUN,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IA4FnC,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAI5B,OAAO,IAAI,IAAI;CAIhB"}
|
package/dist/mock-agent.js
CHANGED
|
@@ -58,7 +58,19 @@ export class MockAgentSession {
|
|
|
58
58
|
}
|
|
59
59
|
this.emit({
|
|
60
60
|
type: "message_end",
|
|
61
|
-
message: {
|
|
61
|
+
message: {
|
|
62
|
+
role: "assistant",
|
|
63
|
+
content: [{ type: "text", text: script }],
|
|
64
|
+
// Deterministic token usage so token-stats tests can assert exact
|
|
65
|
+
// numbers without a real provider. Derived from the reply length.
|
|
66
|
+
usage: {
|
|
67
|
+
input: 10,
|
|
68
|
+
output: Math.max(1, Math.ceil(script.length / 4)),
|
|
69
|
+
cacheRead: 0,
|
|
70
|
+
cacheWrite: 0,
|
|
71
|
+
totalTokens: 10 + Math.max(1, Math.ceil(script.length / 4)),
|
|
72
|
+
},
|
|
73
|
+
},
|
|
62
74
|
});
|
|
63
75
|
// Optional tool invocation driven by the prompt.
|
|
64
76
|
const m = TOOL_RE.exec(text);
|
package/dist/mock-agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mock-agent.js","sourceRoot":"","sources":["../src/mock-agent.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"mock-agent.js","sourceRoot":"","sources":["../src/mock-agent.ts"],"names":[],"mappings":"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"}
|
package/dist/personas.d.ts
CHANGED
|
@@ -23,6 +23,22 @@
|
|
|
23
23
|
* `bp_template/agents/<name>/prompt.md` copies; the runtime loads the on-disk
|
|
24
24
|
* copy when present and falls back to these constants otherwise.
|
|
25
25
|
*/
|
|
26
|
+
/**
|
|
27
|
+
* Language-following directive (#97). Appended to EVERY agent persona at load
|
|
28
|
+
* time (see SessionManager.loadPersona) — kept out of the per-role persona text
|
|
29
|
+
* and the user-editable on-disk `prompt.md` copies so it also reaches users who
|
|
30
|
+
* scaffolded before this existed. Authored in English (all personas are), but it
|
|
31
|
+
* instructs the agent to mirror the USER's language, and to switch on request —
|
|
32
|
+
* a follow rule, not a fixed lock, so a mid-conversation "switch to English"
|
|
33
|
+
* is honored. Experts inherit this naturally: the Principal's delegated task
|
|
34
|
+
* text is in the user's language, so the expert answers in kind.
|
|
35
|
+
*/
|
|
36
|
+
export declare const LANGUAGE_DIRECTIVE = "## Response language\n\nRespond in the same language the user is currently writing in. This applies to\nall user-visible output, including progress updates and status messages. If the\nuser explicitly asks you to switch languages, comply immediately and keep using\nthe requested language until they change it again. Do not lock to one language \u2014\nfollow the user.";
|
|
37
|
+
/**
|
|
38
|
+
* Append the language-following directive to a resolved persona (#97). Used at
|
|
39
|
+
* persona load time so both built-in and on-disk personas get it.
|
|
40
|
+
*/
|
|
41
|
+
export declare function withLanguageDirective(persona: string): string;
|
|
26
42
|
/** Per-agent-name persona registry. The single source of truth. */
|
|
27
43
|
export declare const PERSONAS: Record<string, string>;
|
|
28
44
|
/** Built-in agent names that ship with a curated persona. */
|
package/dist/personas.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"personas.d.ts","sourceRoot":"","sources":["../src/personas.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;
|
|
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"}
|