@spences10/pi-svelte-guardrails 0.0.2 → 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 CHANGED
@@ -1,16 +1,70 @@
1
1
  # @spences10/pi-svelte-guardrails
2
2
 
3
3
  Pi extension that blocks agents from writing discouraged Svelte
4
- patterns.
4
+ patterns. In `my-pi`, this guardrail is built in and enabled by
5
+ default. In vanilla Pi, install it explicitly with this package.
5
6
 
6
- Currently blocks `$effect` in `.svelte` `write`/`edit` tool calls and
7
- tells the agent to prefer `$derived`, event handlers, actions, or
8
- explicit lifecycle alternatives.
7
+ By default, blocks `$effect` in `.svelte` `write`/`edit` tool calls
8
+ and bash writes, then tells the agent to prefer `$derived`, event
9
+ handlers, actions, or explicit lifecycle alternatives.
9
10
 
10
11
  ```bash
11
12
  pi install npm:@spences10/pi-svelte-guardrails
12
13
  ```
13
14
 
14
- This is opt-in: installing the package globally applies it to your Pi
15
- sessions, but projects and downstream users do not inherit it unless
16
- they install the package.
15
+ Standalone package use is opt-in: installing the package globally
16
+ applies it to your Pi sessions, but projects and downstream users do
17
+ not inherit it unless they install the package.
18
+
19
+ ## Status and disabling
20
+
21
+ Use `/extensions` or `/extensions list` in `my-pi` to inspect whether
22
+ Svelte guardrails are enabled, disabled by saved settings, or
23
+ force-disabled for the current process.
24
+
25
+ Disable options:
26
+
27
+ - CLI: start `my-pi` with `--no-svelte-guardrails`.
28
+ - TUI: toggle `Svelte guardrails` in `/extensions` and reload.
29
+ - SDK/API: pass `svelte_guardrails: false` to `create_my_pi()`.
30
+ - Rule config: set `"mode": "off"` or `"blockEffect": false` in the
31
+ config file below.
32
+
33
+ ## Configuration
34
+
35
+ Create `~/.config/my-pi/svelte-guardrails.json` to tune the guardrail
36
+ globally, or `.pi/svelte-guardrails.json` in a project to override it
37
+ locally:
38
+
39
+ ```json
40
+ {
41
+ "blockEffect": true,
42
+ "allow": ["examples/**", "legacy/**"],
43
+ "mode": "block"
44
+ }
45
+ ```
46
+
47
+ - `blockEffect`: set to `false` to disable the `$effect` rule while
48
+ keeping the extension installed.
49
+ - `allow`: glob patterns for paths where the rule is skipped.
50
+ - `mode`: `block` prevents the write, `warn` allows it with a warning,
51
+ and `off` skips the rule.
52
+
53
+ Current default:
54
+
55
+ ```json
56
+ {
57
+ "version": 1,
58
+ "blockEffect": true,
59
+ "allow": [],
60
+ "mode": "block"
61
+ }
62
+ ```
63
+
64
+ Use `block` for strict enforcement, `warn` to observe violations
65
+ before enforcing them, and `off` for projects that intentionally allow
66
+ the pattern. The current default remains `block`.
67
+
68
+ When a tool result says a write was blocked, the target file was not
69
+ created or modified. Rewrite the change without `$effect` and run the
70
+ write/edit again before reporting success.
@@ -0,0 +1,13 @@
1
+ export type SvelteGuardrailsMode = 'block' | 'warn' | 'off';
2
+ export interface SvelteGuardrailsConfig {
3
+ version: 1;
4
+ blockEffect: boolean;
5
+ allow: string[];
6
+ mode: SvelteGuardrailsMode;
7
+ }
8
+ export declare const DEFAULT_SVELTE_GUARDRAILS_CONFIG: SvelteGuardrailsConfig;
9
+ export declare function get_svelte_guardrails_config_path(): string;
10
+ export declare function normalize_svelte_guardrails_config(value: Partial<SvelteGuardrailsConfig>): SvelteGuardrailsConfig;
11
+ export declare function get_project_svelte_guardrails_config_path(cwd?: string): string;
12
+ export declare function load_svelte_guardrails_config(cwd?: string): SvelteGuardrailsConfig;
13
+ export declare function is_path_allowed(path: string, patterns: readonly string[], cwd?: string): boolean;
package/dist/config.js ADDED
@@ -0,0 +1,94 @@
1
+ import { existsSync, readFileSync } from 'node:fs';
2
+ import { homedir } from 'node:os';
3
+ import { isAbsolute, join, relative, resolve } from 'node:path';
4
+ export const DEFAULT_SVELTE_GUARDRAILS_CONFIG = {
5
+ version: 1,
6
+ blockEffect: true,
7
+ allow: [],
8
+ mode: 'block',
9
+ };
10
+ export function get_svelte_guardrails_config_path() {
11
+ if (process.env.MY_PI_SVELTE_GUARDRAILS_CONFIG)
12
+ return process.env.MY_PI_SVELTE_GUARDRAILS_CONFIG;
13
+ const xdg = process.env.XDG_CONFIG_HOME || join(homedir(), '.config');
14
+ return join(xdg, 'my-pi', 'svelte-guardrails.json');
15
+ }
16
+ export function normalize_svelte_guardrails_config(value) {
17
+ return {
18
+ version: 1,
19
+ blockEffect: typeof value.blockEffect === 'boolean'
20
+ ? value.blockEffect
21
+ : DEFAULT_SVELTE_GUARDRAILS_CONFIG.blockEffect,
22
+ allow: Array.isArray(value.allow)
23
+ ? value.allow.filter((item) => typeof item === 'string')
24
+ : DEFAULT_SVELTE_GUARDRAILS_CONFIG.allow,
25
+ mode: is_svelte_guardrails_mode(value.mode)
26
+ ? value.mode
27
+ : DEFAULT_SVELTE_GUARDRAILS_CONFIG.mode,
28
+ };
29
+ }
30
+ export function get_project_svelte_guardrails_config_path(cwd = process.cwd()) {
31
+ return join(cwd, '.pi', 'svelte-guardrails.json');
32
+ }
33
+ export function load_svelte_guardrails_config(cwd = process.cwd()) {
34
+ const global_config = read_svelte_guardrails_config_file(get_svelte_guardrails_config_path());
35
+ const project_config = read_svelte_guardrails_config_file(get_project_svelte_guardrails_config_path(cwd));
36
+ return normalize_svelte_guardrails_config({
37
+ ...global_config,
38
+ ...project_config,
39
+ });
40
+ }
41
+ function read_svelte_guardrails_config_file(path) {
42
+ if (!existsSync(path))
43
+ return {};
44
+ try {
45
+ return JSON.parse(readFileSync(path, 'utf-8'));
46
+ }
47
+ catch {
48
+ return {};
49
+ }
50
+ }
51
+ function is_svelte_guardrails_mode(value) {
52
+ return value === 'block' || value === 'warn' || value === 'off';
53
+ }
54
+ export function is_path_allowed(path, patterns, cwd = process.cwd()) {
55
+ const normalized = normalize_path(path, cwd);
56
+ return patterns.some((pattern) => glob_matches(normalized, pattern));
57
+ }
58
+ function normalize_path(path, cwd) {
59
+ const resolved = isAbsolute(path) ? path : resolve(cwd, path);
60
+ return relative(cwd, resolved).replaceAll('\\', '/');
61
+ }
62
+ function glob_matches(path, pattern) {
63
+ const normalized_pattern = pattern.replaceAll('\\', '/');
64
+ return glob_to_regexp(normalized_pattern).test(path);
65
+ }
66
+ function glob_to_regexp(glob) {
67
+ let source = '^';
68
+ for (let i = 0; i < glob.length; i++) {
69
+ const char = glob[i];
70
+ const next = glob[i + 1];
71
+ if (char === '*' && next === '*') {
72
+ const after = glob[i + 2];
73
+ if (after === '/') {
74
+ source += '(?:.*/)?';
75
+ i += 2;
76
+ }
77
+ else {
78
+ source += '.*';
79
+ i++;
80
+ }
81
+ }
82
+ else if (char === '*') {
83
+ source += '[^/]*';
84
+ }
85
+ else {
86
+ source += escape_regexp(char);
87
+ }
88
+ }
89
+ return new RegExp(`${source}$`);
90
+ }
91
+ function escape_regexp(value) {
92
+ return value.replace(/[|\\{}()[\]^$+?.]/g, '\\$&');
93
+ }
94
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,7 +1,13 @@
1
1
  import type { ExtensionAPI, ToolCallEvent } from '@earendil-works/pi-coding-agent';
2
+ import { type SvelteGuardrailsConfig } from './config.js';
2
3
  export declare function is_svelte_path(value: unknown): boolean;
3
4
  export declare function contains_disallowed_effect(value: unknown): boolean;
4
5
  export declare function find_svelte_path(input: Record<string, unknown>): string | undefined;
5
6
  export declare function extract_bash_svelte_path(command: string): string | undefined;
6
- export declare function should_block_svelte_effect(event: ToolCallEvent): string | undefined;
7
+ export interface SvelteEffectAssessment {
8
+ mode: Exclude<SvelteGuardrailsConfig['mode'], 'off'>;
9
+ reason: string;
10
+ }
11
+ export declare function assess_svelte_effect(event: ToolCallEvent, config?: SvelteGuardrailsConfig): SvelteEffectAssessment | undefined;
12
+ export declare function should_block_svelte_effect(event: ToolCallEvent, config?: SvelteGuardrailsConfig): string | undefined;
7
13
  export default function svelte_guardrails(pi: ExtensionAPI): void;
package/dist/index.js CHANGED
@@ -1,4 +1,5 @@
1
1
  // Svelte guardrails for Pi agents.
2
+ import { is_path_allowed, load_svelte_guardrails_config, } from './config.js';
2
3
  const SVELTE_FILE_RE = /\.svelte(?:\.|$|\?)/;
3
4
  const EFFECT_RE = /\$effect(?:\s*\(|\s*\.)/;
4
5
  export function is_svelte_path(value) {
@@ -37,15 +38,17 @@ export function extract_bash_svelte_path(command) {
37
38
  function block_reason(path) {
38
39
  return `Blocked by Svelte guardrails: ${path} was not created or modified. Do not investigate this guardrail. Complete the user's request by rewriting the example without $effect; use $derived, event handlers, actions, or lifecycle APIs instead. Do not report success until a replacement file is actually written.`;
39
40
  }
40
- export function should_block_svelte_effect(event) {
41
+ export function assess_svelte_effect(event, config = load_svelte_guardrails_config()) {
42
+ if (!config.blockEffect || config.mode === 'off')
43
+ return undefined;
41
44
  const input = event.input;
42
45
  if (['write', 'edit'].includes(event.toolName)) {
43
46
  const path = find_svelte_path(input);
44
- if (!path)
47
+ if (!path || is_path_allowed(path, config.allow))
45
48
  return undefined;
46
49
  if (!input_strings(input).some(contains_disallowed_effect))
47
50
  return undefined;
48
- return block_reason(path);
51
+ return { mode: config.mode, reason: block_reason(path) };
49
52
  }
50
53
  if (event.toolName === 'bash') {
51
54
  const command = input.command;
@@ -54,18 +57,26 @@ export function should_block_svelte_effect(event) {
54
57
  if (typeof command !== 'string')
55
58
  return undefined;
56
59
  const path = extract_bash_svelte_path(command);
57
- if (!path)
60
+ if (!path || is_path_allowed(path, config.allow))
58
61
  return undefined;
59
- return block_reason(path);
62
+ return { mode: config.mode, reason: block_reason(path) };
60
63
  }
61
64
  return undefined;
62
65
  }
66
+ export function should_block_svelte_effect(event, config = load_svelte_guardrails_config()) {
67
+ const assessment = assess_svelte_effect(event, config);
68
+ return assessment?.mode === 'block' ? assessment.reason : undefined;
69
+ }
63
70
  export default function svelte_guardrails(pi) {
64
- pi.on('tool_call', async (event) => {
65
- const reason = should_block_svelte_effect(event);
66
- if (!reason)
71
+ pi.on('tool_call', async (event, ctx) => {
72
+ const assessment = assess_svelte_effect(event);
73
+ if (!assessment)
74
+ return undefined;
75
+ if (assessment.mode === 'warn') {
76
+ ctx.ui.notify(assessment.reason, 'warning');
67
77
  return undefined;
68
- return { block: true, reason };
78
+ }
79
+ return { block: true, reason: assessment.reason };
69
80
  });
70
81
  }
71
82
  //# sourceMappingURL=index.js.map
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spences10/pi-svelte-guardrails",
3
- "version": "0.0.2",
3
+ "version": "0.0.3",
4
4
  "description": "Pi extension that blocks discouraged Svelte patterns before agents write them",
5
5
  "keywords": [
6
6
  "agent-guardrails",