← Home

@pi-unipi/compactor

Context engine for Pi — zero-LLM compaction, session continuity, sandbox execution, FTS5 search, and tool display optimization

21
Versions
MIT
License
No
Install Scripts
Missing
Provenance

Supply chain provenance

Status for the latest visible version.

No SLSA provenance npm registry signatures gitHead linked

Without SLSA provenance there is no cryptographic link between this tarball and the public source — the axios compromise (March 2026) relied on exactly this gap.

Maintainers

neuron-mr-white

Keywords

pi-packagepi-extensionpi-coding-agentunipicompactorcontextsandboxfts5

Accepted risks

Findings the reviewer chose to accept rather than block on.

SourceRuleReasonAccepted byWhen
semgrep semgrep:env-spread AI (semgrep): env spread is used to pass environment to a child process with a single override; standard pattern, not exfiltration. ai
provenance no-provenance AI (provenance): No provenance is common; no other risk signals present for this package. ai

Versions (showing 21 of 21)

Version Deps Published
2.0.12 3 / 2
2.0.11 3 / 2
2.0.10 3 / 2
2.0.9 3 / 2
2.0.8 3 / 2
2.0.7 2 / 2
2.0.5 2 / 2
2.0.4 2 / 2
2.0.3 2 / 2
2.0.2 2 / 2
2.0.1 2 / 2
2.0.0 2 / 2
0.2.3 2 / 2
0.2.2 2 / 2
0.2.1 1 / 2
0.1.7 1 / 2
0.1.6 1 / 2
0.1.5 1 / 2
0.1.4 1 / 2
0.1.2 1 / 2
0.1.1 1 / 2

v2.0.12

1 finding
INFO No provenance attestation provenance

[Accepted risk] Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.

v2.0.11

1 finding
INFO No provenance attestation provenance

[Accepted risk] Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.

v2.0.10

1 finding
INFO No provenance attestation provenance

[Accepted risk] Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.

v2.0.9

1 finding
INFO No provenance attestation provenance

[Accepted risk] Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.

v2.0.8

1 finding
INFO No provenance attestation provenance

[Accepted risk] Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.

v2.0.7

1 finding
INFO No provenance attestation provenance

[Accepted risk] Package was published without Sigstore provenance. Consider requesting the maintainer enable provenance via CI/CD.

v2.0.5

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/d6660d266b8a82ac67724d079b347dd5ce62f4ca/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/d6660d266b8a82ac67724d079b347dd5ce62f4ca/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v2.0.4

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/f018a7800d0a1db0aab71ad03f8dfe6f483d2d00/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/f018a7800d0a1db0aab71ad03f8dfe6f483d2d00/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v2.0.3

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/33f7ffd940143242845e0298284cdff6b38ae978/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/33f7ffd940143242845e0298284cdff6b38ae978/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v2.0.2

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/6eac7836ecd8cd6df4eb70934b0c9d33c483c506/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/6eac7836ecd8cd6df4eb70934b0c9d33c483c506/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v2.0.1

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/b16fb671bd84cddb90aea3436df409433d4f3c35/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/b16fb671bd84cddb90aea3436df409433d4f3c35/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v2.0.0

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/40601bdb1f4595fbed0daf7a66c7f51866758aaa/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/40601bdb1f4595fbed0daf7a66c7f51866758aaa/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v0.2.3

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/78ef1f2e36c237b7b9ed56e83eb4862d8bf86304/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/78ef1f2e36c237b7b9ed56e83eb4862d8bf86304/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v0.2.2

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/037803d998209266e700ce0802f9221f46123aa5/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/037803d998209266e700ce0802f9221f46123aa5/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v0.2.1

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/804b1a7b3a9280459cd4c6573a0403724310357f/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/804b1a7b3a9280459cd4c6573a0403724310357f/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v0.1.7

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/9db6035dd3256238cba59ba39a99b884ac1e731d/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/9db6035dd3256238cba59ba39a99b884ac1e731d/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v0.1.6

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/f4774ff93b4c0d6083e34b981bbd274c986d2526/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/f4774ff93b4c0d6083e34b981bbd274c986d2526/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v0.1.5

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/d17df760a74f1c2c2fac5b71cb244a400d071f1e/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/d17df760a74f1c2c2fac5b71cb244a400d071f1e/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v0.1.4

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/0741e989d71e27bf14fdb72095a902810d7c1b60/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/0741e989d71e27bf14fdb72095a902810d7c1b60/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v0.1.2

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/969cb247cd516f81a8958719db24f039ecde3601/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/969cb247cd516f81a8958719db24f039ecde3601/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.

v0.1.1

3 findings
HIGH env-spread: src/executor/executor.ts:20 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/969cb247cd516f81a8958719db24f039ecde3601/src/executor/executor.ts#L20 18 | process.platform === "darwin" ? "getconf" : "mktemp", 19 | process.platform === "darwin" ? ["DARWIN_USER_TEMP_DIR"] : ["-u", "-d"], > 20 | { env: { ...process.env, TMPDIR: undefined as unknown as string }, encoding: "utf-8" }, 21 | ).trim(); 22 | const dir = process.platform === "darwin" ? result : resolve(result, "..");

HIGH env-spread: src/executor/executor.ts:55 semgrep

Spreading entire process.env into an object — may capture all secrets Source: https://github.com/Neuron-Mr-White/unipi/blob/969cb247cd516f81a8958719db24f039ecde3601/src/executor/executor.ts#L55 53 | 54 | function sanitizeEnv(): NodeJS.ProcessEnv { > 55 | const env = { ...process.env }; 56 | for (const key of DANGEROUS_ENV_VARS) { 57 | delete env[key];

LOW No provenance attestation provenance

Package was published without Sigstore provenance. Only ~12% of npm packages have provenance, so this is common but not ideal.