@spences10/pi-lsp 0.0.51 → 0.0.52

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
@@ -145,10 +145,22 @@ trust prompts follow tool cancellation and time out after 30 seconds,
145
145
  returning a tool error instead of leaving the session indefinitely in
146
146
  `Working`.
147
147
 
148
- Language servers receive a restricted child-process environment by
149
- default. Use `MY_PI_LSP_ENV_ALLOWLIST=NAME,OTHER_NAME` or the shared
150
- `MY_PI_CHILD_ENV_ALLOWLIST` to pass selected ambient variables
151
- through.
148
+ ### Language-server environment
149
+
150
+ LSP filters its language-server environment directly, passing only
151
+ `PATH`, `PI_CODING_AGENT_DIR`, home/user, locale (`LANG` and `LC_*`),
152
+ terminal/color, shell, temporary-directory, and CI variables by
153
+ default. Provider credentials, Pi session metadata, `NODE_OPTIONS`,
154
+ and other ambient variables are not inherited unless explicitly
155
+ allowlisted.
156
+
157
+ Use `MY_PI_LSP_ENV_ALLOWLIST=NAME,OTHER_NAME` to pass toolchain
158
+ configuration such as `RUSTUP_HOME`, `CARGO_HOME`, or `JAVA_HOME` when
159
+ needed. `MY_PI_CHILD_ENV_ALLOWLIST` remains supported; entries from
160
+ both lists are combined.
161
+
162
+ This reduces ambient credential exposure, but is not a sandbox:
163
+ language servers retain the current user's filesystem permissions.
152
164
 
153
165
  ## Tools
154
166
 
package/dist/env.js CHANGED
@@ -1,9 +1,47 @@
1
- import { create_child_process_env as create_shared_child_process_env } from '@spences10/pi-child-env';
1
+ const BASE_CHILD_ENV_KEYS = new Set([
2
+ 'CI',
3
+ 'COLORTERM',
4
+ 'FORCE_COLOR',
5
+ 'HOME',
6
+ 'LANG',
7
+ 'LOGNAME',
8
+ 'NO_COLOR',
9
+ 'PATH',
10
+ 'PI_CODING_AGENT_DIR',
11
+ 'SHELL',
12
+ 'TEMP',
13
+ 'TERM',
14
+ 'TMP',
15
+ 'TMPDIR',
16
+ 'USER',
17
+ ]);
18
+ const ENV_ALLOWLIST_KEYS = [
19
+ 'MY_PI_CHILD_ENV_ALLOWLIST',
20
+ 'MY_PI_LSP_ENV_ALLOWLIST',
21
+ ];
2
22
  export function create_child_process_env(explicit_env = {}, source_env = process.env) {
3
- return create_shared_child_process_env({
4
- profile: 'lsp',
5
- explicit_env,
6
- source_env,
7
- });
23
+ const env = {};
24
+ const allowed_keys = new Set(BASE_CHILD_ENV_KEYS);
25
+ for (const key of Object.keys(source_env)) {
26
+ if (key.startsWith('LC_'))
27
+ allowed_keys.add(key);
28
+ }
29
+ for (const allowlist_key of ENV_ALLOWLIST_KEYS) {
30
+ for (const entry of (source_env[allowlist_key] ?? '').split(',')) {
31
+ const key = entry.trim();
32
+ if (key)
33
+ allowed_keys.add(key);
34
+ }
35
+ }
36
+ for (const key of allowed_keys) {
37
+ const value = source_env[key];
38
+ if (typeof value === 'string')
39
+ env[key] = value;
40
+ }
41
+ for (const [key, value] of Object.entries(explicit_env)) {
42
+ if (typeof value === 'string')
43
+ env[key] = value;
44
+ }
45
+ return env;
8
46
  }
9
47
  //# sourceMappingURL=env.js.map
package/dist/env.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,IAAI,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAEtG,MAAM,UAAU,wBAAwB,CACvC,YAAY,GAA2B,EAAE,EACzC,UAAU,GAAsB,OAAO,CAAC,GAAG;IAE3C,OAAO,+BAA+B,CAAC;QACtC,OAAO,EAAE,KAAK;QACd,YAAY;QACZ,UAAU;KACV,CAAC,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../src/env.ts"],"names":[],"mappings":"AAAA,MAAM,mBAAmB,GAAG,IAAI,GAAG,CAAC;IACnC,IAAI;IACJ,WAAW;IACX,aAAa;IACb,MAAM;IACN,MAAM;IACN,SAAS;IACT,UAAU;IACV,MAAM;IACN,qBAAqB;IACrB,OAAO;IACP,MAAM;IACN,MAAM;IACN,KAAK;IACL,QAAQ;IACR,MAAM;CACN,CAAC,CAAC;AAEH,MAAM,kBAAkB,GAAG;IAC1B,2BAA2B;IAC3B,yBAAyB;CACzB,CAAC;AAEF,MAAM,UAAU,wBAAwB,CACvC,YAAY,GAA2B,EAAE,EACzC,UAAU,GAAsB,OAAO,CAAC,GAAG;IAE3C,MAAM,GAAG,GAAsB,EAAE,CAAC;IAClC,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,mBAAmB,CAAC,CAAC;IAElD,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,EAAE,CAAC;QAC3C,IAAI,GAAG,CAAC,UAAU,CAAC,KAAK,CAAC;YAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;IAClD,CAAC;IACD,KAAK,MAAM,aAAa,IAAI,kBAAkB,EAAE,CAAC;QAChD,KAAK,MAAM,KAAK,IAAI,CAAC,UAAU,CAAC,aAAa,CAAC,IAAI,EAAE,CAAC,CAAC,KAAK,CAC1D,GAAG,CACH,EAAE,CAAC;YACH,MAAM,GAAG,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;YACzB,IAAI,GAAG;gBAAE,YAAY,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAChC,CAAC;IACF,CAAC;IAED,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAChC,MAAM,KAAK,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;QAC9B,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACjD,CAAC;IACD,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACzD,IAAI,OAAO,KAAK,KAAK,QAAQ;YAAE,GAAG,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;IACjD,CAAC;IAED,OAAO,GAAG,CAAC;AACZ,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@spences10/pi-lsp",
3
- "version": "0.0.51",
3
+ "version": "0.0.52",
4
4
  "description": "Language Server Protocol tools for Pi agents to inspect diagnostics, hovers, definitions, references, and symbols",
5
5
  "keywords": [
6
6
  "language-server",
@@ -33,7 +33,6 @@
33
33
  "access": "public"
34
34
  },
35
35
  "dependencies": {
36
- "@spences10/pi-child-env": "0.2.0",
37
36
  "@spences10/pi-project-trust": "0.1.0",
38
37
  "@spences10/pi-tui-modal": "0.0.24"
39
38
  },