@guardiojs/guardio 0.0.2 → 0.0.5

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/cli.js +50 -54
  2. package/dist/cli.js.map +1 -1
  3. package/dist/config/PluginManager.d.ts +4 -0
  4. package/dist/config/PluginManager.d.ts.map +1 -1
  5. package/dist/config/PluginManager.js +69 -60
  6. package/dist/config/PluginManager.js.map +1 -1
  7. package/dist/config/index.d.ts +2 -2
  8. package/dist/config/index.d.ts.map +1 -1
  9. package/dist/config/index.js +1 -1
  10. package/dist/config/index.js.map +1 -1
  11. package/dist/config/types.d.ts +29 -25
  12. package/dist/config/types.d.ts.map +1 -1
  13. package/dist/core/GuardioActions.d.ts +12 -0
  14. package/dist/core/GuardioActions.d.ts.map +1 -0
  15. package/dist/core/GuardioActions.js +12 -0
  16. package/dist/core/GuardioActions.js.map +1 -0
  17. package/dist/core/GuardioCore.d.ts +22 -9
  18. package/dist/core/GuardioCore.d.ts.map +1 -1
  19. package/dist/core/GuardioCore.js +175 -74
  20. package/dist/core/GuardioCore.js.map +1 -1
  21. package/dist/core/GuardioErrorCodes.d.ts +42 -0
  22. package/dist/core/GuardioErrorCodes.d.ts.map +1 -0
  23. package/dist/core/GuardioErrorCodes.js +71 -0
  24. package/dist/core/GuardioErrorCodes.js.map +1 -0
  25. package/dist/core/transports/create-client-transport.d.ts +14 -0
  26. package/dist/core/transports/create-client-transport.d.ts.map +1 -0
  27. package/dist/core/transports/create-client-transport.js +19 -0
  28. package/dist/core/transports/create-client-transport.js.map +1 -0
  29. package/dist/core/transports/http-client.d.ts +27 -0
  30. package/dist/core/transports/http-client.d.ts.map +1 -0
  31. package/dist/core/transports/http-client.js +86 -0
  32. package/dist/core/transports/http-client.js.map +1 -0
  33. package/dist/core/transports/index.d.ts +13 -0
  34. package/dist/core/transports/index.d.ts.map +1 -0
  35. package/dist/core/transports/index.js +11 -0
  36. package/dist/core/transports/index.js.map +1 -0
  37. package/dist/core/transports/sse-url-transport.d.ts +26 -0
  38. package/dist/core/transports/sse-url-transport.d.ts.map +1 -0
  39. package/dist/core/transports/sse-url-transport.js +111 -0
  40. package/dist/core/transports/sse-url-transport.js.map +1 -0
  41. package/dist/core/transports/stdio-client.d.ts +12 -0
  42. package/dist/core/transports/stdio-client.d.ts.map +1 -0
  43. package/dist/core/transports/stdio-client.js +25 -0
  44. package/dist/core/transports/stdio-client.js.map +1 -0
  45. package/dist/core/transports/types.d.ts +21 -0
  46. package/dist/core/transports/types.d.ts.map +1 -0
  47. package/dist/core/transports/types.js +2 -0
  48. package/dist/core/transports/types.js.map +1 -0
  49. package/dist/core/types.d.ts +40 -4
  50. package/dist/core/types.d.ts.map +1 -1
  51. package/dist/core/types.js +11 -1
  52. package/dist/core/types.js.map +1 -1
  53. package/dist/index.d.ts +6 -2
  54. package/dist/index.d.ts.map +1 -1
  55. package/dist/index.js +4 -2
  56. package/dist/index.js.map +1 -1
  57. package/dist/logger.d.ts +4 -0
  58. package/dist/logger.d.ts.map +1 -0
  59. package/dist/logger.js +16 -0
  60. package/dist/logger.js.map +1 -0
  61. package/dist/plugins/intervention/HttpInterventionPlugin.d.ts.map +1 -1
  62. package/dist/plugins/intervention/HttpInterventionPlugin.js +4 -7
  63. package/dist/plugins/intervention/HttpInterventionPlugin.js.map +1 -1
  64. package/dist/plugins/notification/DefaultNotificationPlugin.d.ts +1 -1
  65. package/dist/plugins/notification/DefaultNotificationPlugin.d.ts.map +1 -1
  66. package/dist/plugins/notification/DefaultNotificationPlugin.js +3 -2
  67. package/dist/plugins/notification/DefaultNotificationPlugin.js.map +1 -1
  68. package/dist/plugins/policy/DefaultPolicyPlugin.d.ts.map +1 -1
  69. package/dist/plugins/policy/DefaultPolicyPlugin.js +4 -1
  70. package/dist/plugins/policy/DefaultPolicyPlugin.js.map +1 -1
  71. package/dist/plugins/policy/RegexPolicyPlugin.d.ts.map +1 -1
  72. package/dist/plugins/policy/RegexPolicyPlugin.js +2 -1
  73. package/dist/plugins/policy/RegexPolicyPlugin.js.map +1 -1
  74. package/dist/server/index.d.ts +20 -0
  75. package/dist/server/index.d.ts.map +1 -0
  76. package/dist/server/index.js +27 -0
  77. package/dist/server/index.js.map +1 -0
  78. package/package.json +4 -6
  79. package/README.md +0 -225
  80. package/bin/guardio.mjs +0 -2
package/dist/cli.js CHANGED
@@ -1,75 +1,71 @@
1
1
  /**
2
- * CLI – parse argv (including --config), build config, run GuardioCore.
2
+ * CLI – load config, require server type "url" (HTTP/SSE only). Client can be stdio or http.
3
3
  */
4
4
  import { resolve, dirname } from "node:path";
5
5
  import { GuardioCore } from "./core/index.js";
6
- import { loadConfigFromPath } from "./config/index.js";
6
+ import { GuardioHttpServer } from "./server/index.js";
7
+ import { loadConfigFromPath, getConfigPath } from "./config/index.js";
8
+ import { logger } from "./logger.js";
7
9
  const configIdx = process.argv.indexOf("--config");
8
10
  const configPathArg = configIdx >= 0 && process.argv[configIdx + 1]
9
11
  ? process.argv[configIdx + 1]
10
12
  : null;
11
13
  async function main() {
12
- let command;
13
- let args;
14
- let cwd;
15
- let configPath;
16
- if (configPathArg) {
17
- const resolved = resolve(configPathArg);
18
- const config = await loadConfigFromPath(resolved);
19
- configPath = resolved;
20
- cwd = dirname(resolved);
21
- if (config.server?.type === "command") {
22
- command = config.server.command;
23
- const configDir = dirname(resolved);
24
- args = (config.server.args ?? []).map((arg) => resolve(configDir, arg));
25
- }
26
- else {
27
- command =
28
- process.env.GUARDIO_COMMAND ??
29
- process.env.MCP_REAL_TOOL_COMMAND ??
30
- "node";
31
- args = process.env.GUARDIO_ARGS
32
- ? process.env.GUARDIO_ARGS.split(",").map((s) => s.trim())
33
- : process.env.MCP_REAL_TOOL_ARGS
34
- ? process.env.MCP_REAL_TOOL_ARGS.split(",").map((s) => s.trim())
35
- : ["/path/to/your/actual-mcp-server/index.js"];
36
- }
14
+ logger.debug({ argv: process.argv }, "CLI starting");
15
+ const resolved = configPathArg
16
+ ? resolve(configPathArg)
17
+ : getConfigPath(process.cwd());
18
+ if (!resolved) {
19
+ logger.error("No guardio config found. Use --config guardio.config.json or add guardio.config.js/ts/json in cwd.");
20
+ process.exit(1);
37
21
  }
38
- else {
39
- const dashDashIdx = process.argv.indexOf("--");
40
- const argvAfterDash = dashDashIdx >= 0 ? process.argv.slice(dashDashIdx + 1) : [];
41
- const directArgs = dashDashIdx === -1 && process.argv.length >= 3
42
- ? process.argv.slice(2)
43
- : [];
44
- command =
45
- argvAfterDash.length > 0
46
- ? argvAfterDash[0]
47
- : directArgs.length > 0
48
- ? directArgs[0]
49
- : process.env.GUARDIO_COMMAND ??
50
- process.env.MCP_REAL_TOOL_COMMAND ??
51
- "node";
52
- args =
53
- argvAfterDash.length > 1
54
- ? argvAfterDash.slice(1)
55
- : directArgs.length > 1
56
- ? directArgs.slice(1)
57
- : process.env.GUARDIO_ARGS
58
- ? process.env.GUARDIO_ARGS.split(",").map((s) => s.trim())
59
- : process.env.MCP_REAL_TOOL_ARGS
60
- ? process.env.MCP_REAL_TOOL_ARGS.split(",").map((s) => s.trim())
61
- : ["/path/to/your/actual-mcp-server/index.js"];
22
+ logger.info({ configPath: resolved }, "Loading config");
23
+ const config = await loadConfigFromPath(resolved);
24
+ const configPath = resolved;
25
+ const cwd = dirname(resolved);
26
+ if (!config.server || config.server.type !== "url") {
27
+ logger.error('Guardio requires server: { type: "url", url: "<MCP_SSE_BASE_URL>" } in config.');
28
+ process.exit(1);
29
+ }
30
+ const server = {
31
+ type: "url",
32
+ url: config.server.url,
33
+ headers: config.server.headers,
34
+ timeoutMs: config.server.timeoutMs,
35
+ };
36
+ const clientConfig = config.client ?? { mode: "stdio" };
37
+ if (clientConfig.mode === "http") {
38
+ const portEnv = process.env.GUARDIO_HTTP_PORT ?? process.env.GUARDIO_CLIENT_PORT;
39
+ const port = portEnv != null && portEnv !== ""
40
+ ? parseInt(portEnv, 10)
41
+ : (clientConfig.port ?? 3939);
42
+ const host = process.env.GUARDIO_HTTP_HOST ?? clientConfig.host;
43
+ if (port == null || Number.isNaN(port)) {
44
+ logger.error("When client mode is 'http', set client.port or GUARDIO_HTTP_PORT.");
45
+ process.exit(1);
46
+ }
47
+ logger.info({ port, host }, "Starting HTTP server mode");
48
+ const httpServer = new GuardioHttpServer({
49
+ server,
50
+ listen: { port, host },
51
+ cwd,
52
+ configPath,
53
+ });
54
+ await httpServer.run();
55
+ return;
62
56
  }
57
+ const client = clientConfig;
58
+ logger.info("Starting stdio mode");
63
59
  const core = new GuardioCore({
64
- command,
65
- args,
60
+ server,
61
+ client,
66
62
  cwd,
67
63
  configPath,
68
64
  });
69
65
  await core.run();
70
66
  }
71
67
  main().catch((err) => {
72
- console.error("Guardio failed to start:", err);
68
+ logger.error({ err }, "Guardio failed to start");
73
69
  process.exit(1);
74
70
  });
75
71
  //# sourceMappingURL=cli.js.map
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,10 @@ import type { PolicyPluginInterface } from "../interfaces/PolicyPluginInterface.
3
3
  import type { InterventionPluginInterface } from "../interfaces/InterventionPluginInterface.js";
4
4
  export type PolicyPluginFactory = (config?: Record<string, unknown>) => PolicyPluginInterface;
5
5
  export type InterventionPluginFactory = (config?: Record<string, unknown>) => InterventionPluginInterface;
6
+ /**
7
+ * Resolves path to config file: first .js, then .ts, then .json (from cwd).
8
+ */
9
+ export declare function getConfigPath(cwd: string): string | null;
6
10
  /**
7
11
  * Loads GuardioConfig from a path. Supports .json (readFile + parse) and .js/.ts (dynamic import).
8
12
  */
@@ -1 +1 @@
1
- {"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/config/PluginManager.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,aAAa,EAGd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAUhG,MAAM,MAAM,mBAAmB,GAAG,CAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,qBAAqB,CAAC;AAE3B,MAAM,MAAM,yBAAyB,GAAG,CACtC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,2BAA2B,CAAC;AAiGjC;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAcxB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,mBAAmB,CAA8C;IAEzE;;OAEG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAItE;;OAEG;IACH,0BAA0B,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,yBAAyB,GACjC,IAAI;IAKP;;OAEG;IACG,UAAU,CACd,GAAG,GAAE,MAAsB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC;IAkBzB;;OAEG;IACG,gBAAgB,CACpB,GAAG,GAAE,MAAsB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,EAAE,CAAC;IAyBnC;;OAEG;IACG,eAAe,CACnB,GAAG,CAAC,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,CAAC;IAUjC;;OAEG;IACG,sBAAsB,CAC1B,GAAG,GAAE,MAAsB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,2BAA2B,EAAE,CAAC;CAwB1C"}
1
+ {"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/config/PluginManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EACV,aAAa,EAGd,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EAAE,qBAAqB,EAAE,MAAM,wCAAwC,CAAC;AACpF,OAAO,KAAK,EAAE,2BAA2B,EAAE,MAAM,8CAA8C,CAAC;AAWhG,MAAM,MAAM,mBAAmB,GAAG,CAChC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,qBAAqB,CAAC;AAE3B,MAAM,MAAM,yBAAyB,GAAG,CACtC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAC7B,2BAA2B,CAAC;AA4CjC;;GAEG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWxD;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,aAAa,CAAC,CAuBxB;AAED,qBAAa,aAAa;IACxB,OAAO,CAAC,MAAM,CAA8B;IAC5C,OAAO,CAAC,UAAU,CAAuB;IACzC,OAAO,CAAC,aAAa,CAAwC;IAC7D,OAAO,CAAC,mBAAmB,CAA8C;IAEzE;;OAEG;IACH,oBAAoB,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,GAAG,IAAI;IAItE;;OAEG;IACH,0BAA0B,CACxB,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,yBAAyB,GACjC,IAAI;IAKP;;OAEG;IACG,UAAU,CACd,GAAG,GAAE,MAAsB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,aAAa,CAAC;IAmBzB;;OAEG;IACG,gBAAgB,CACpB,GAAG,GAAE,MAAsB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,EAAE,CAAC;IA6DnC;;OAEG;IACG,eAAe,CACnB,GAAG,CAAC,EAAE,MAAM,EACZ,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,CAAC;IAUjC;;OAEG;IACG,sBAAsB,CAC1B,GAAG,GAAE,MAAsB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,2BAA2B,EAAE,CAAC;CA6D1C"}
@@ -1,9 +1,9 @@
1
- import { readFileSync, existsSync, readdirSync, statSync } from "node:fs";
2
- import { join, dirname } from "node:path";
1
+ import { readFileSync, existsSync } from "node:fs";
2
+ import { join, dirname, resolve } from "node:path";
3
3
  import { pathToFileURL } from "node:url";
4
- import { createRequire } from "node:module";
5
4
  import { DefaultPolicyPlugin, RegexPolicyPlugin, } from "../plugins/policy/index.js";
6
5
  import { DefaultInterventionPlugin, HttpInterventionPlugin, } from "../plugins/intervention/index.js";
6
+ import { logger } from "../logger.js";
7
7
  const policyRegistry = {
8
8
  default: (config) => new DefaultPolicyPlugin(config ?? {}),
9
9
  regex: (config) => new RegexPolicyPlugin(config ?? {}),
@@ -12,65 +12,36 @@ const interventionRegistry = {
12
12
  default: (config) => new DefaultInterventionPlugin(config),
13
13
  http: (config) => new HttpInterventionPlugin(config),
14
14
  };
15
- /** Entry filename to discover under each plugin directory. */
16
- const PLUGIN_ENTRY_NAME = "index.ts";
15
+ /** Entry filenames to load from a plugin directory (first found wins). */
16
+ const PLUGIN_ENTRY_NAMES = ["index.js", "index.mjs"];
17
17
  /**
18
- * Loads local plugins from the "plugins" directory next to the config file.
19
- * Each plugin is a subdirectory with index.ts (or index.js/mjs/cjs); default export must be a descriptor.
18
+ * Resolve plugin directory to an entry file (index.js or index.mjs). Path is relative to configDir or absolute.
20
19
  */
21
- async function loadLocalPlugins(pluginManager, configPath) {
22
- const configDir = dirname(configPath);
23
- const pluginsDir = join(configDir, "plugins");
24
- if (!existsSync(pluginsDir))
25
- return;
26
- if (!statSync(pluginsDir).isDirectory())
27
- return;
28
- const entries = readdirSync(pluginsDir, { withFileTypes: true });
29
- for (const dirent of entries) {
30
- if (!dirent.isDirectory())
31
- continue;
32
- const entryPath = join(pluginsDir, dirent.name, PLUGIN_ENTRY_NAME);
33
- if (!existsSync(entryPath))
34
- continue;
35
- const mod = await loadPluginModule(entryPath);
36
- const raw = mod?.default ?? mod;
37
- if (!raw || typeof raw !== "object")
38
- continue;
39
- const descriptor = raw;
40
- if (descriptor.type !== "policy" && descriptor.type !== "intervention")
41
- continue;
42
- if (typeof descriptor.name !== "string" ||
43
- typeof descriptor.create !== "function") {
44
- throw new Error(`Local plugin at ${entryPath}: default export must be { type, name, create } (name string, create function).`);
45
- }
46
- const desc = descriptor;
47
- if (desc.type === "policy") {
48
- pluginManager.registerPolicyPlugin(desc.name, (config) => desc.create(config ?? {}));
49
- }
50
- else {
51
- pluginManager.registerInterventionPlugin(desc.name, (config) => desc.create(config ?? {}));
52
- }
20
+ function resolvePluginEntryPath(pluginPath, configDir) {
21
+ const dir = resolve(configDir, pluginPath);
22
+ for (const name of PLUGIN_ENTRY_NAMES) {
23
+ const p = join(dir, name);
24
+ if (existsSync(p))
25
+ return p;
53
26
  }
27
+ throw new Error(`Plugin at ${pluginPath} must contain index.js or index.mjs (run build to compile index.ts).`);
54
28
  }
55
29
  /**
56
- * Load a plugin module from disk. Only index.ts is supported; uses ts-node when available.
30
+ * Load plugin instance from a directory: import index.js/index.mjs, return default export (the instance).
57
31
  */
58
- async function loadPluginModule(entryPath) {
59
- try {
60
- const require = createRequire(import.meta.url);
61
- require("ts-node/register");
62
- const mod = require(entryPath);
63
- return mod;
64
- }
65
- catch (e) {
66
- const msg = e instanceof Error ? e.message : String(e);
67
- throw new Error(`Failed to load TypeScript plugin ${entryPath}. Install ts-node (e.g. npm install ts-node). ${msg}`);
32
+ async function loadPluginInstance(entryPath) {
33
+ const url = pathToFileURL(entryPath).href;
34
+ const mod = await import(url);
35
+ const instance = mod?.default ?? mod;
36
+ if (!instance || typeof instance !== "object") {
37
+ throw new Error(`Plugin at ${entryPath}: default export must be the plugin instance.`);
68
38
  }
39
+ return instance;
69
40
  }
70
41
  /**
71
42
  * Resolves path to config file: first .js, then .ts, then .json (from cwd).
72
43
  */
73
- function getConfigPath(cwd) {
44
+ export function getConfigPath(cwd) {
74
45
  const names = [
75
46
  "guardio.config.js",
76
47
  "guardio.config.ts",
@@ -87,6 +58,7 @@ function getConfigPath(cwd) {
87
58
  * Loads GuardioConfig from a path. Supports .json (readFile + parse) and .js/.ts (dynamic import).
88
59
  */
89
60
  export async function loadConfigFromPath(configPath) {
61
+ logger.debug({ configPath }, "Loading config from path");
90
62
  if (configPath.endsWith(".json")) {
91
63
  const raw = readFileSync(configPath, "utf-8");
92
64
  return JSON.parse(raw);
@@ -95,8 +67,10 @@ export async function loadConfigFromPath(configPath) {
95
67
  const mod = await import(url);
96
68
  const config = mod.default ?? mod;
97
69
  if (!config || typeof config !== "object" || !Array.isArray(config.plugins)) {
70
+ logger.error({ configPath }, "Invalid guardio config: expected default export with plugins array");
98
71
  throw new Error(`Invalid guardio config: expected default export with plugins array (at ${configPath})`);
99
72
  }
73
+ logger.debug({ configPath, pluginCount: config.plugins.length }, "Config loaded");
100
74
  return config;
101
75
  }
102
76
  export class PluginManager {
@@ -123,16 +97,17 @@ export class PluginManager {
123
97
  async loadConfig(cwd = process.cwd(), configPath) {
124
98
  const path = configPath ?? getConfigPath(cwd);
125
99
  if (!path) {
100
+ logger.error({ cwd }, "No guardio config found");
126
101
  throw new Error(`No guardio config found in ${cwd}. Add guardio.config.js, guardio.config.ts, or guardio.config.json`);
127
102
  }
128
103
  if (this.configPath === path && this.config !== null) {
104
+ logger.debug("Using cached config");
129
105
  return this.config;
130
106
  }
131
107
  this.configPath = path;
132
108
  this.config = await loadConfigFromPath(path);
133
109
  this.policyPlugins = null;
134
110
  this.interventionPlugins = null;
135
- await loadLocalPlugins(this, path);
136
111
  return this.config;
137
112
  }
138
113
  /**
@@ -144,14 +119,31 @@ export class PluginManager {
144
119
  return this.policyPlugins;
145
120
  const plugins = (this.config.plugins ?? []).filter((p) => p.type === "policy");
146
121
  const instances = [];
122
+ const configDir = dirname(this.configPath);
147
123
  for (const entry of plugins) {
148
- const factory = policyRegistry[entry.name];
149
- if (!factory) {
150
- throw new Error(`Unknown policy plugin name: "${entry.name}". Registered: ${Object.keys(policyRegistry).join(", ")}`);
124
+ if (entry.path) {
125
+ const entryPath = resolvePluginEntryPath(entry.path, configDir);
126
+ logger.debug({ path: entry.path, entryPath }, "Loading policy plugin from path");
127
+ const instance = await loadPluginInstance(entryPath);
128
+ if (typeof instance.name !== "string" ||
129
+ typeof instance.evaluate !== "function") {
130
+ logger.error({ path: entry.path }, "Plugin default export must be a policy instance (name, evaluate)");
131
+ throw new Error(`Plugin at ${entry.path}: default export must be a policy instance (name, evaluate).`);
132
+ }
133
+ instances.push(instance);
134
+ }
135
+ else {
136
+ const factory = policyRegistry[entry.name];
137
+ if (!factory) {
138
+ logger.error({ name: entry.name, registered: Object.keys(policyRegistry) }, "Unknown policy plugin name");
139
+ throw new Error(`Unknown policy plugin name: "${entry.name}". Registered: ${Object.keys(policyRegistry).join(", ")}`);
140
+ }
141
+ logger.debug({ name: entry.name }, "Instantiating built-in policy plugin");
142
+ instances.push(factory(entry.config ?? {}));
151
143
  }
152
- instances.push(factory(entry.config ?? {}));
153
144
  }
154
145
  this.policyPlugins = instances;
146
+ logger.debug({ count: instances.length, names: instances.map((p) => p.name) }, "Policy plugins resolved");
155
147
  return instances;
156
148
  }
157
149
  /**
@@ -173,14 +165,31 @@ export class PluginManager {
173
165
  return this.interventionPlugins;
174
166
  const plugins = (this.config.plugins ?? []).filter((p) => p.type === "intervention");
175
167
  const instances = [];
168
+ const configDir = dirname(this.configPath);
176
169
  for (const entry of plugins) {
177
- const factory = interventionRegistry[entry.name];
178
- if (!factory) {
179
- throw new Error(`Unknown intervention plugin name: "${entry.name}". Registered: ${Object.keys(interventionRegistry).join(", ")}`);
170
+ if (entry.path) {
171
+ const entryPath = resolvePluginEntryPath(entry.path, configDir);
172
+ logger.debug({ path: entry.path, entryPath }, "Loading intervention plugin from path");
173
+ const instance = await loadPluginInstance(entryPath);
174
+ if (typeof instance.name !== "string" ||
175
+ typeof instance.act !== "function") {
176
+ logger.error({ path: entry.path }, "Plugin default export must be an intervention instance (name, act)");
177
+ throw new Error(`Plugin at ${entry.path}: default export must be an intervention instance (name, act).`);
178
+ }
179
+ instances.push(instance);
180
+ }
181
+ else {
182
+ const factory = interventionRegistry[entry.name];
183
+ if (!factory) {
184
+ logger.error({ name: entry.name, registered: Object.keys(interventionRegistry) }, "Unknown intervention plugin name");
185
+ throw new Error(`Unknown intervention plugin name: "${entry.name}". Registered: ${Object.keys(interventionRegistry).join(", ")}`);
186
+ }
187
+ logger.debug({ name: entry.name }, "Instantiating built-in intervention plugin");
188
+ instances.push(factory(entry.config ?? {}));
180
189
  }
181
- instances.push(factory(entry.config ?? {}));
182
190
  }
183
191
  this.interventionPlugins = instances;
192
+ logger.debug({ count: instances.length, names: instances.map((p) => p.name) }, "Intervention plugins resolved");
184
193
  return instances;
185
194
  }
186
195
  }
@@ -1 +1 @@
1
- {"version":3,"file":"PluginManager.js","sourceRoot":"","sources":["../../src/config/PluginManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"PluginManager.js","sourceRoot":"","sources":["../../src/config/PluginManager.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
- export { PluginManager, loadConfigFromPath } from "./PluginManager.js";
1
+ export { PluginManager, loadConfigFromPath, getConfigPath, } from "./PluginManager.js";
2
2
  export type { PolicyPluginFactory } from "./PluginManager.js";
3
- export type { GuardioConfig, GuardioServerConfig, PolicyPluginConfigEntry, InterventionPluginConfigEntry, PluginConfigEntry, PolicyPluginDescriptor, InterventionPluginDescriptor, LocalPluginDescriptor, } from "./types.js";
3
+ export type { GuardioConfig, GuardioServerConfig, GuardioServerConfigUrl, GuardioClientConfig, PolicyPluginConfigEntry, InterventionPluginConfigEntry, PluginConfigEntry, } from "./types.js";
4
4
  export type { InterventionPluginFactory } from "./PluginManager.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACvE,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,EAC7B,iBAAiB,EACjB,sBAAsB,EACtB,4BAA4B,EAC5B,qBAAqB,GACtB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,YAAY,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AAC9D,YAAY,EACV,aAAa,EACb,mBAAmB,EACnB,sBAAsB,EACtB,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,YAAY,CAAC;AACpB,YAAY,EAAE,yBAAyB,EAAE,MAAM,oBAAoB,CAAC"}
@@ -1,2 +1,2 @@
1
- export { PluginManager, loadConfigFromPath } from "./PluginManager.js";
1
+ export { PluginManager, loadConfigFromPath, getConfigPath, } from "./PluginManager.js";
2
2
  //# sourceMappingURL=index.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/config/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,kBAAkB,EAClB,aAAa,GACd,MAAM,oBAAoB,CAAC"}
@@ -1,17 +1,23 @@
1
1
  /**
2
2
  * Policy plugin entry in guardio config.
3
+ * Use "path" for a custom plugin (directory with index.js/index.mjs; default export = instance).
3
4
  */
4
5
  export interface PolicyPluginConfigEntry {
5
6
  type: "policy";
6
7
  name: string;
8
+ /** Directory to custom plugin (relative to config file or absolute). Must contain index.js or index.mjs with default export = policy instance. */
9
+ path?: string;
7
10
  config?: Record<string, unknown>;
8
11
  }
9
12
  /**
10
13
  * Intervention plugin entry in guardio config.
14
+ * Use "path" for a custom plugin (directory with index.js/index.mjs; default export = instance).
11
15
  */
12
16
  export interface InterventionPluginConfigEntry {
13
17
  type: "intervention";
14
18
  name: string;
19
+ /** Directory to custom plugin (relative to config file or absolute). Must contain index.js or index.mjs with default export = intervention instance. */
20
+ path?: string;
15
21
  config?: Record<string, unknown>;
16
22
  }
17
23
  /**
@@ -19,40 +25,38 @@ export interface InterventionPluginConfigEntry {
19
25
  */
20
26
  export type PluginConfigEntry = PolicyPluginConfigEntry | InterventionPluginConfigEntry;
21
27
  /**
22
- * Descriptor default export for a local plugin (plugins/<name>/index.ts or index.js).
23
- * create() must return an instance implementing PolicyPluginInterface or InterventionPluginInterface.
28
+ * MCP server to proxy to (HTTP/SSE URL only).
24
29
  */
25
- export interface PolicyPluginDescriptor {
26
- type: "policy";
27
- name: string;
28
- create: (config: Record<string, unknown>) => {
29
- name: string;
30
- evaluate: (context: unknown) => "allowed" | "blocked" | "require_approval";
31
- };
32
- }
33
- export interface InterventionPluginDescriptor {
34
- type: "intervention";
35
- name: string;
36
- create: (config: Record<string, unknown>) => {
37
- name: string;
38
- act: (context: unknown) => void | boolean | Promise<void> | Promise<boolean>;
39
- };
30
+ export interface GuardioServerConfigUrl {
31
+ type: "url";
32
+ url: string;
33
+ /** Optional headers (e.g. Authorization). */
34
+ headers?: Record<string, string>;
35
+ /** Request timeout in ms. Defaults to 30000. */
36
+ timeoutMs?: number;
40
37
  }
41
- export type LocalPluginDescriptor = PolicyPluginDescriptor | InterventionPluginDescriptor;
38
+ /** Server config: only HTTP/SSE URL is supported. */
39
+ export type GuardioServerConfig = GuardioServerConfigUrl;
42
40
  /**
43
- * MCP server to proxy to (spawn command).
41
+ * How the AI Agent (client) connects to Guardio: stdio (local pipe) or http (standalone server).
42
+ * When mode is "http", port and host are the address the proxy listens on.
44
43
  */
45
- export interface GuardioServerConfig {
46
- type: "command";
47
- command: string;
48
- args: string[];
44
+ export interface GuardioClientConfig {
45
+ /** "stdio" = read from stdin, write to stdout (default). "http" = run HTTP server for requests. */
46
+ mode: "stdio" | "http";
47
+ /** When mode is "http". Port the proxy listens on. Default 3939. */
48
+ port?: number;
49
+ /** When mode is "http". Host to bind (default "127.0.0.1"). Use "0.0.0.0" for external. */
50
+ host?: string;
49
51
  }
50
52
  /**
51
53
  * Guardio config file shape (default export of guardio.config.ts / .json).
52
54
  */
53
55
  export interface GuardioConfig {
54
- /** MCP server to proxy to. When present, CLI uses this instead of argv. */
55
- server?: GuardioServerConfig;
56
+ /** MCP server to proxy to (HTTP/SSE URL). Required. */
57
+ server: GuardioServerConfig;
58
+ /** How the AI client connects to Guardio. Default: { mode: "stdio" }. */
59
+ client?: GuardioClientConfig;
56
60
  plugins: PluginConfigEntry[];
57
61
  }
58
62
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,uBAAuB,GACvB,6BAA6B,CAAC;AAElC;;;GAGG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK;QAC3C,IAAI,EAAE,MAAM,CAAC;QACb,QAAQ,EAAE,CAAC,OAAO,EAAE,OAAO,KAAK,SAAS,GAAG,SAAS,GAAG,kBAAkB,CAAC;KAC5E,CAAC;CACH;AAED,MAAM,WAAW,4BAA4B;IAC3C,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK;QAC3C,IAAI,EAAE,MAAM,CAAC;QACb,GAAG,EAAE,CACH,OAAO,EAAE,OAAO,KACb,IAAI,GAAG,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC;KACxD,CAAC;CACH;AAED,MAAM,MAAM,qBAAqB,GAC7B,sBAAsB,GACtB,4BAA4B,CAAC;AAEjC;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,SAAS,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,2EAA2E;IAC3E,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,QAAQ,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,kJAAkJ;IAClJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,6BAA6B;IAC5C,IAAI,EAAE,cAAc,CAAC;IACrB,IAAI,EAAE,MAAM,CAAC;IACb,wJAAwJ;IACxJ,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GACzB,uBAAuB,GACvB,6BAA6B,CAAC;AAElC;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,IAAI,EAAE,KAAK,CAAC;IACZ,GAAG,EAAE,MAAM,CAAC;IACZ,6CAA6C;IAC7C,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,gDAAgD;IAChD,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,qDAAqD;AACrD,MAAM,MAAM,mBAAmB,GAAG,sBAAsB,CAAC;AAEzD;;;GAGG;AACH,MAAM,WAAW,mBAAmB;IAClC,mGAAmG;IACnG,IAAI,EAAE,OAAO,GAAG,MAAM,CAAC;IACvB,oEAAoE;IACpE,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,2FAA2F;IAC3F,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,uDAAuD;IACvD,MAAM,EAAE,mBAAmB,CAAC;IAC5B,yEAAyE;IACzE,MAAM,CAAC,EAAE,mBAAmB,CAAC;IAC7B,OAAO,EAAE,iBAAiB,EAAE,CAAC;CAC9B"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Action names for result._guardio.action when Guardio blocks or rejects a tool call.
3
+ * We return a successful JSON-RPC result (not an error), so numeric error codes are not used.
4
+ * These strings identify the kind of denial for the AI Agent / client.
5
+ */
6
+ export declare const GuardioAction: {
7
+ /** Tool was blocked by a policy plugin. */
8
+ readonly TOOL_BLOCKED: "TOOL_BLOCKED";
9
+ /** Tool call was rejected by an intervention plugin. */
10
+ readonly POLICY_VIOLATION: "POLICY_VIOLATION";
11
+ };
12
+ //# sourceMappingURL=GuardioActions.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuardioActions.d.ts","sourceRoot":"","sources":["../../src/core/GuardioActions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,eAAO,MAAM,aAAa;IACxB,2CAA2C;;IAE3C,wDAAwD;;CAEhD,CAAC"}
@@ -0,0 +1,12 @@
1
+ /**
2
+ * Action names for result._guardio.action when Guardio blocks or rejects a tool call.
3
+ * We return a successful JSON-RPC result (not an error), so numeric error codes are not used.
4
+ * These strings identify the kind of denial for the AI Agent / client.
5
+ */
6
+ export const GuardioAction = {
7
+ /** Tool was blocked by a policy plugin. */
8
+ TOOL_BLOCKED: "TOOL_BLOCKED",
9
+ /** Tool call was rejected by an intervention plugin. */
10
+ POLICY_VIOLATION: "POLICY_VIOLATION",
11
+ };
12
+ //# sourceMappingURL=GuardioActions.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GuardioActions.js","sourceRoot":"","sources":["../../src/core/GuardioActions.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,2CAA2C;IAC3C,YAAY,EAAE,cAAc;IAC5B,wDAAwD;IACxD,gBAAgB,EAAE,kBAAkB;CAC5B,CAAC"}
@@ -3,17 +3,30 @@ export declare class GuardioCore {
3
3
  private readonly config;
4
4
  private policyPlugins;
5
5
  private interventionPlugins;
6
- private child;
7
- private appInterface;
8
- private toolInterface;
9
- private pendingResponseId;
10
- private readonly appQueue;
6
+ private transport;
7
+ private clientTransport;
11
8
  constructor(config: GuardioCoreConfig);
12
9
  run(): Promise<void>;
13
- private sendErrorResponse;
10
+ private sendToClient;
11
+ /** Resolve Guardio package version from package.json when available. */
12
+ private getGuardioVersion;
13
+ /**
14
+ * Build a successful JSON-RPC response for blocked/rejected tool calls.
15
+ * Returns a result (not error) so AI Agent frameworks don't treat it as a fatal error;
16
+ * the agent can read the content and _guardio metadata.
17
+ */
18
+ private buildGuardioBlockedResponse;
19
+ /**
20
+ * Handle POST /messages (HTTP client): run policy/intervention, then forward to remote.
21
+ */
22
+ handlePostMessage(body: string): Promise<{
23
+ status: number;
24
+ body: string;
25
+ }>;
26
+ private sendBlockedResponse;
27
+ /**
28
+ * Process one line from client (stdio or from queue): run plugins, then forward to MCP.
29
+ */
14
30
  private processAppLine;
15
- private drainAppQueue;
16
- private attachAppHandler;
17
- private attachToolHandler;
18
31
  }
19
32
  //# sourceMappingURL=GuardioCore.d.ts.map