@guardiojs/guardio 0.0.1 → 0.0.3
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 +12 -1
- package/dist/cli.js +4 -3
- package/dist/cli.js.map +1 -1
- package/dist/config/PluginManager.d.ts.map +1 -1
- package/dist/config/PluginManager.js +59 -9
- package/dist/config/PluginManager.js.map +1 -1
- package/dist/config/types.d.ts +6 -0
- package/dist/config/types.d.ts.map +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -1
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -55,7 +55,7 @@ Guardio loads a config file either from **current working directory** (when run
|
|
|
55
55
|
|
|
56
56
|
The config must have a **plugins** array. It can optionally have **server** (used when you run with `--config`):
|
|
57
57
|
|
|
58
|
-
- **`server`** – optional. When present and you use `--config`, Guardio uses this instead of argv/env to run the MCP server: **`{ "type": "command", "command": "node", "args": ["path/to/server.js"] }`**.
|
|
58
|
+
- **`server`** – optional. When present and you use `--config`, Guardio uses this instead of argv/env to run the MCP server: **`{ "type": "command", "command": "node", "args": ["path/to/server.js"] }`**. Paths in **`args`** can be **relative** (resolved from the config file’s directory) or **absolute** (used as-is).
|
|
59
59
|
|
|
60
60
|
Each **plugins** entry has:
|
|
61
61
|
|
|
@@ -98,6 +98,17 @@ Each **plugins** entry has:
|
|
|
98
98
|
|
|
99
99
|
When using **`--config /path/to/guardio.config.json`**, the **server** block above is used automatically; you don’t pass the MCP server command on the command line.
|
|
100
100
|
|
|
101
|
+
### Custom plugins (path in config)
|
|
102
|
+
|
|
103
|
+
Use a **`path`** on a plugin entry to load a custom plugin from a directory (relative to the config file or absolute). That directory must contain **`index.js`** or **`index.mjs`** (compile from `index.ts` with your build script). The module's **default export must be the plugin instance** (no descriptor).
|
|
104
|
+
|
|
105
|
+
- **Policy**: `{ "type": "policy", "name": "my-policy", "path": "./plugins/my-policy" }` — default export must implement **`PolicyPluginInterface`** (name, evaluate).
|
|
106
|
+
- **Intervention** (path): In each subdirectory Guardio looks for **`index.js`** or **`index.mjs`** (compiled output). Write your plugin in TypeScript (`index.ts`) and **compile** it with the project’s build script (e.g. `npm run build`).
|
|
107
|
+
- **Descriptor**: The entry module must **default-export a descriptor** `{ type, name, create }`:
|
|
108
|
+
- **Policy**: `type: "policy"`, `name: string`, `create: (config) => instance` where the instance implements **`PolicyPluginInterface`** (readonly `name`, method `evaluate(context) => "allowed" | "blocked" | "require_approval"`).
|
|
109
|
+
- **Intervention**: `type: "intervention"`, `name: string`, `create: (config) => instance` where the instance implements **`InterventionPluginInterface`** (readonly `name`, method `act(context) => void | boolean | Promise<...>`).
|
|
110
|
+
Import types from `@guardiojs/guardio`.’s Run your build so the directory has `index.js` or `index.mjs` before Guardio.
|
|
111
|
+
|
|
101
112
|
## Running Guardio (CLI)
|
|
102
113
|
|
|
103
114
|
You must tell Guardio **which command to run** for the real MCP server (unless you use `--config` with a config that has **server**). Options:
|
package/dist/cli.js
CHANGED
|
@@ -20,7 +20,8 @@ async function main() {
|
|
|
20
20
|
cwd = dirname(resolved);
|
|
21
21
|
if (config.server?.type === "command") {
|
|
22
22
|
command = config.server.command;
|
|
23
|
-
|
|
23
|
+
const configDir = dirname(resolved);
|
|
24
|
+
args = (config.server.args ?? []).map((arg) => resolve(configDir, arg));
|
|
24
25
|
}
|
|
25
26
|
else {
|
|
26
27
|
command =
|
|
@@ -31,7 +32,7 @@ async function main() {
|
|
|
31
32
|
? process.env.GUARDIO_ARGS.split(",").map((s) => s.trim())
|
|
32
33
|
: process.env.MCP_REAL_TOOL_ARGS
|
|
33
34
|
? process.env.MCP_REAL_TOOL_ARGS.split(",").map((s) => s.trim())
|
|
34
|
-
: ["/path/to/your/actual-mcp-server/index.
|
|
35
|
+
: ["/path/to/your/actual-mcp-server/index.ts"];
|
|
35
36
|
}
|
|
36
37
|
}
|
|
37
38
|
else {
|
|
@@ -57,7 +58,7 @@ async function main() {
|
|
|
57
58
|
? process.env.GUARDIO_ARGS.split(",").map((s) => s.trim())
|
|
58
59
|
: process.env.MCP_REAL_TOOL_ARGS
|
|
59
60
|
? process.env.MCP_REAL_TOOL_ARGS.split(",").map((s) => s.trim())
|
|
60
|
-
: ["/path/to/your/actual-mcp-server/index.
|
|
61
|
+
: ["/path/to/your/actual-mcp-server/index.ts"];
|
|
61
62
|
}
|
|
62
63
|
const core = new GuardioCore({
|
|
63
64
|
command,
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAC7C,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,MAAM,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;AACnD,MAAM,aAAa,GACjB,SAAS,IAAI,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IAC3C,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC;IAC7B,CAAC,CAAC,IAAI,CAAC;AAEX,KAAK,UAAU,IAAI;IACjB,IAAI,OAAe,CAAC;IACpB,IAAI,IAAc,CAAC;IACnB,IAAI,GAAuB,CAAC;IAC5B,IAAI,UAA8B,CAAC;IAEnC,IAAI,aAAa,EAAE,CAAC;QAClB,MAAM,QAAQ,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;QAClD,UAAU,GAAG,QAAQ,CAAC;QACtB,GAAG,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC;QACxB,IAAI,MAAM,CAAC,MAAM,EAAE,IAAI,KAAK,SAAS,EAAE,CAAC;YACtC,OAAO,GAAG,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC;YAChC,IAAI,GAAG,MAAM,CAAC,MAAM,CAAC,IAAI,IAAI,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginManager.d.ts","sourceRoot":"","sources":["../../src/config/PluginManager.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,
|
|
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;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;AA4DjC;;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;IAiBzB;;OAEG;IACG,gBAAgB,CACpB,GAAG,GAAE,MAAsB,EAC3B,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,qBAAqB,EAAE,CAAC;IA0CnC;;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;CA0C1C"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { readFileSync, existsSync } from "node:fs";
|
|
2
|
-
import { join } from "node:path";
|
|
2
|
+
import { join, dirname, resolve } from "node:path";
|
|
3
3
|
import { pathToFileURL } from "node:url";
|
|
4
4
|
import { DefaultPolicyPlugin, RegexPolicyPlugin, } from "../plugins/policy/index.js";
|
|
5
5
|
import { DefaultInterventionPlugin, HttpInterventionPlugin, } from "../plugins/intervention/index.js";
|
|
@@ -11,6 +11,32 @@ const interventionRegistry = {
|
|
|
11
11
|
default: (config) => new DefaultInterventionPlugin(config),
|
|
12
12
|
http: (config) => new HttpInterventionPlugin(config),
|
|
13
13
|
};
|
|
14
|
+
/** Entry filenames to load from a plugin directory (first found wins). */
|
|
15
|
+
const PLUGIN_ENTRY_NAMES = ["index.js", "index.mjs"];
|
|
16
|
+
/**
|
|
17
|
+
* Resolve plugin directory to an entry file (index.js or index.mjs). Path is relative to configDir or absolute.
|
|
18
|
+
*/
|
|
19
|
+
function resolvePluginEntryPath(pluginPath, configDir) {
|
|
20
|
+
const dir = resolve(configDir, pluginPath);
|
|
21
|
+
for (const name of PLUGIN_ENTRY_NAMES) {
|
|
22
|
+
const p = join(dir, name);
|
|
23
|
+
if (existsSync(p))
|
|
24
|
+
return p;
|
|
25
|
+
}
|
|
26
|
+
throw new Error(`Plugin at ${pluginPath} must contain index.js or index.mjs (run build to compile index.ts).`);
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Load plugin instance from a directory: import index.js/index.mjs, return default export (the instance).
|
|
30
|
+
*/
|
|
31
|
+
async function loadPluginInstance(entryPath) {
|
|
32
|
+
const url = pathToFileURL(entryPath).href;
|
|
33
|
+
const mod = await import(url);
|
|
34
|
+
const instance = mod?.default ?? mod;
|
|
35
|
+
if (!instance || typeof instance !== "object") {
|
|
36
|
+
throw new Error(`Plugin at ${entryPath}: default export must be the plugin instance.`);
|
|
37
|
+
}
|
|
38
|
+
return instance;
|
|
39
|
+
}
|
|
14
40
|
/**
|
|
15
41
|
* Resolves path to config file: first .js, then .ts, then .json (from cwd).
|
|
16
42
|
*/
|
|
@@ -87,12 +113,24 @@ export class PluginManager {
|
|
|
87
113
|
return this.policyPlugins;
|
|
88
114
|
const plugins = (this.config.plugins ?? []).filter((p) => p.type === "policy");
|
|
89
115
|
const instances = [];
|
|
116
|
+
const configDir = dirname(this.configPath);
|
|
90
117
|
for (const entry of plugins) {
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
118
|
+
if (entry.path) {
|
|
119
|
+
const entryPath = resolvePluginEntryPath(entry.path, configDir);
|
|
120
|
+
const instance = await loadPluginInstance(entryPath);
|
|
121
|
+
if (typeof instance.name !== "string" ||
|
|
122
|
+
typeof instance.evaluate !== "function") {
|
|
123
|
+
throw new Error(`Plugin at ${entry.path}: default export must be a policy instance (name, evaluate).`);
|
|
124
|
+
}
|
|
125
|
+
instances.push(instance);
|
|
126
|
+
}
|
|
127
|
+
else {
|
|
128
|
+
const factory = policyRegistry[entry.name];
|
|
129
|
+
if (!factory) {
|
|
130
|
+
throw new Error(`Unknown policy plugin name: "${entry.name}". Registered: ${Object.keys(policyRegistry).join(", ")}`);
|
|
131
|
+
}
|
|
132
|
+
instances.push(factory(entry.config ?? {}));
|
|
94
133
|
}
|
|
95
|
-
instances.push(factory(entry.config ?? {}));
|
|
96
134
|
}
|
|
97
135
|
this.policyPlugins = instances;
|
|
98
136
|
return instances;
|
|
@@ -116,12 +154,24 @@ export class PluginManager {
|
|
|
116
154
|
return this.interventionPlugins;
|
|
117
155
|
const plugins = (this.config.plugins ?? []).filter((p) => p.type === "intervention");
|
|
118
156
|
const instances = [];
|
|
157
|
+
const configDir = dirname(this.configPath);
|
|
119
158
|
for (const entry of plugins) {
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
159
|
+
if (entry.path) {
|
|
160
|
+
const entryPath = resolvePluginEntryPath(entry.path, configDir);
|
|
161
|
+
const instance = await loadPluginInstance(entryPath);
|
|
162
|
+
if (typeof instance.name !== "string" ||
|
|
163
|
+
typeof instance.act !== "function") {
|
|
164
|
+
throw new Error(`Plugin at ${entry.path}: default export must be an intervention instance (name, act).`);
|
|
165
|
+
}
|
|
166
|
+
instances.push(instance);
|
|
167
|
+
}
|
|
168
|
+
else {
|
|
169
|
+
const factory = interventionRegistry[entry.name];
|
|
170
|
+
if (!factory) {
|
|
171
|
+
throw new Error(`Unknown intervention plugin name: "${entry.name}". Registered: ${Object.keys(interventionRegistry).join(", ")}`);
|
|
172
|
+
}
|
|
173
|
+
instances.push(factory(entry.config ?? {}));
|
|
123
174
|
}
|
|
124
|
-
instances.push(factory(entry.config ?? {}));
|
|
125
175
|
}
|
|
126
176
|
this.interventionPlugins = instances;
|
|
127
177
|
return instances;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PluginManager.js","sourceRoot":"","sources":["../../src/config/PluginManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"PluginManager.js","sourceRoot":"","sources":["../../src/config/PluginManager.ts"],"names":[],"mappings":"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"}
|
package/dist/config/types.d.ts
CHANGED
|
@@ -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
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/config/types.ts"],"names":[],"mappings":"AAAA
|
|
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,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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
export { GuardioCore } from "./core/index.js";
|
|
2
2
|
export type { GuardioCoreConfig, JsonRpcRequest, JsonRpcResponse, } from "./core/index.js";
|
|
3
|
+
export { PluginManager, loadConfigFromPath } from "./config/index.js";
|
|
4
|
+
export type { PolicyPluginFactory, InterventionPluginFactory, GuardioConfig, GuardioServerConfig, PolicyPluginConfigEntry, InterventionPluginConfigEntry, PluginConfigEntry, } from "./config/index.js";
|
|
3
5
|
export type { PolicyPluginInterface, NotificationPluginInterface, InterventionPluginInterface, InterventionResult, PolicyRequestContext, PolicyResult, InterventionRequestContext, } from "./interfaces/index.js";
|
|
4
6
|
export { DefaultPolicyPlugin, RegexPolicyPlugin, type DefaultPolicyPluginConfig, type RegexPolicyPluginConfig, type RegexPolicyRule, type RegexPolicyRuleResult, } from "./plugins/policy/index.js";
|
|
5
7
|
export { DefaultNotificationPlugin } from "./plugins/notification/index.js";
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,YAAY,EACV,qBAAqB,EACrB,2BAA2B,EAC3B,2BAA2B,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,4BAA4B,GAClC,MAAM,iCAAiC,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAC9C,YAAY,EACV,iBAAiB,EACjB,cAAc,EACd,eAAe,GAChB,MAAM,iBAAiB,CAAC;AACzB,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACtE,YAAY,EACV,mBAAmB,EACnB,yBAAyB,EACzB,aAAa,EACb,mBAAmB,EACnB,uBAAuB,EACvB,6BAA6B,EAC7B,iBAAiB,GAClB,MAAM,mBAAmB,CAAC;AAC3B,YAAY,EACV,qBAAqB,EACrB,2BAA2B,EAC3B,2BAA2B,EAC3B,kBAAkB,EAClB,oBAAoB,EACpB,YAAY,EACZ,0BAA0B,GAC3B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,mBAAmB,EACnB,iBAAiB,EACjB,KAAK,yBAAyB,EAC9B,KAAK,uBAAuB,EAC5B,KAAK,eAAe,EACpB,KAAK,qBAAqB,GAC3B,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EACtB,KAAK,4BAA4B,GAClC,MAAM,iCAAiC,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
// Programmatic API: core, interfaces, and default plugins
|
|
1
|
+
// Programmatic API: core, interfaces, config, and default plugins
|
|
2
2
|
export { GuardioCore } from "./core/index.js";
|
|
3
|
+
export { PluginManager, loadConfigFromPath } from "./config/index.js";
|
|
3
4
|
export { DefaultPolicyPlugin, RegexPolicyPlugin, } from "./plugins/policy/index.js";
|
|
4
5
|
export { DefaultNotificationPlugin } from "./plugins/notification/index.js";
|
|
5
6
|
export { DefaultInterventionPlugin, HttpInterventionPlugin, } from "./plugins/intervention/index.js";
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,kEAAkE;AAClE,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAM9C,OAAO,EAAE,aAAa,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAmBtE,OAAO,EACL,mBAAmB,EACnB,iBAAiB,GAKlB,MAAM,2BAA2B,CAAC;AACnC,OAAO,EAAE,yBAAyB,EAAE,MAAM,iCAAiC,CAAC;AAC5E,OAAO,EACL,yBAAyB,EACzB,sBAAsB,GAEvB,MAAM,iCAAiC,CAAC"}
|