sandstream-kit 1.8.0 → 1.10.0
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/dist/cli.js +80 -5
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +10 -0
- package/dist/config.js +8 -1
- package/dist/config.js.map +1 -1
- package/dist/fix.js +3 -1
- package/dist/fix.js.map +1 -1
- package/dist/heal.d.ts +7 -0
- package/dist/heal.js +45 -5
- package/dist/heal.js.map +1 -1
- package/dist/install.d.ts +15 -2
- package/dist/install.js +18 -2
- package/dist/install.js.map +1 -1
- package/dist/memory/hook.js +32 -4
- package/dist/memory/hook.js.map +1 -1
- package/dist/triage-gate.d.ts +51 -0
- package/dist/triage-gate.js +96 -0
- package/dist/triage-gate.js.map +1 -0
- package/dist/update-check.d.ts +9 -0
- package/dist/update-check.js +35 -2
- package/dist/update-check.js.map +1 -1
- package/package.json +1 -1
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Triage gate — kit installs NOTHING untriaged.
|
|
3
|
+
*
|
|
4
|
+
* Every third-party tool/package kit would install (mise scanners pinned as
|
|
5
|
+
* `aqua:`/`npm:`/`pipx:` refs, etc.) is run through `kit triage` first. Only an
|
|
6
|
+
* explicit triage PASS lets an install proceed. This is WATERTIGHT / fail-closed:
|
|
7
|
+
* a WARN, a FAIL, an offline triage, a missing triage script, or a ref we cannot
|
|
8
|
+
* map to a triage target ALL block the install. The only escape is an explicit
|
|
9
|
+
* `--no-triage` override at the command layer, which itself requires elevation
|
|
10
|
+
* and is audit-logged — heal never takes that escape.
|
|
11
|
+
*
|
|
12
|
+
* Core language runtimes (bare mise names like `node`, `pnpm`) are the trusted
|
|
13
|
+
* base: mise installs them from its registry with checksum verification, and
|
|
14
|
+
* they are the language floor kit itself runs on. They pass without a reputation
|
|
15
|
+
* triage. Anything carrying a `scheme:` (a third-party package/binary) is the
|
|
16
|
+
* supply-chain surface and is always triaged.
|
|
17
|
+
*/
|
|
18
|
+
import { runTriage } from "./triage.js";
|
|
19
|
+
/** Core language runtimes managed by mise core — the trusted base, not triaged. */
|
|
20
|
+
export const CORE_RUNTIMES = new Set([
|
|
21
|
+
"node", "nodejs", "pnpm", "npm", "yarn", "bun", "deno",
|
|
22
|
+
"python", "python3", "go", "golang", "ruby", "java", "openjdk",
|
|
23
|
+
"rust", "cargo", "dotnet", "php", "zig", "elixir", "erlang",
|
|
24
|
+
]);
|
|
25
|
+
/** Extract `owner/repo` from `owner/repo`, a github URL, or a `host/owner/repo`. */
|
|
26
|
+
function extractOwnerRepo(rest) {
|
|
27
|
+
const cleaned = rest
|
|
28
|
+
.replace(/^https?:\/\//, "")
|
|
29
|
+
.replace(/^github\.com\//, "")
|
|
30
|
+
.replace(/\.git$/, "");
|
|
31
|
+
const m = cleaned.match(/([^/\s]+\/[^/\s@]+)/);
|
|
32
|
+
return m ? m[1] : null;
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Map a mise tool identifier to a triage (type, target), mark it a trusted core
|
|
36
|
+
* runtime, or mark it untriageable (→ the gate will fail-closed on it). PURE.
|
|
37
|
+
*/
|
|
38
|
+
export function triageTargetFor(tool) {
|
|
39
|
+
const ref = tool.trim();
|
|
40
|
+
if (!ref.includes(":")) {
|
|
41
|
+
return CORE_RUNTIMES.has(ref.toLowerCase()) ? { kind: "runtime" } : { kind: "untriageable", ref };
|
|
42
|
+
}
|
|
43
|
+
const idx = ref.indexOf(":");
|
|
44
|
+
const scheme = ref.slice(0, idx).toLowerCase();
|
|
45
|
+
const rest = ref.slice(idx + 1);
|
|
46
|
+
if (scheme === "npm")
|
|
47
|
+
return { kind: "triage", type: "npm", target: rest };
|
|
48
|
+
if (scheme === "pip" || scheme === "pipx")
|
|
49
|
+
return { kind: "triage", type: "pip", target: rest };
|
|
50
|
+
// Everything else that names a repo (aqua/ubi/go/github/cargo/...) → repo triage.
|
|
51
|
+
const ownerRepo = extractOwnerRepo(rest);
|
|
52
|
+
if (ownerRepo)
|
|
53
|
+
return { kind: "triage", type: "repo", target: `https://github.com/${ownerRepo}` };
|
|
54
|
+
return { kind: "untriageable", ref };
|
|
55
|
+
}
|
|
56
|
+
const defaultDeps = { runTriage };
|
|
57
|
+
/** First non-empty line of triage output, for a compact block reason. */
|
|
58
|
+
function firstLine(output) {
|
|
59
|
+
return output.split("\n").map((l) => l.trim()).find(Boolean) ?? "no triage output";
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Watertight gate: returns `pass` ONLY for a trusted core runtime or an explicit
|
|
63
|
+
* triage PASS. WARN / FAIL / offline / missing-script / unmappable-ref all return
|
|
64
|
+
* `blocked` (fail-closed).
|
|
65
|
+
*/
|
|
66
|
+
export async function gateInstall(tool, deps = defaultDeps) {
|
|
67
|
+
const t = triageTargetFor(tool);
|
|
68
|
+
if (t.kind === "runtime") {
|
|
69
|
+
return { tool, decision: "pass", reason: "core language runtime (trusted base)" };
|
|
70
|
+
}
|
|
71
|
+
if (t.kind === "untriageable") {
|
|
72
|
+
return {
|
|
73
|
+
tool,
|
|
74
|
+
decision: "blocked",
|
|
75
|
+
reason: `no triage path for "${t.ref}" — cannot verify, refusing to install (fail-closed)`,
|
|
76
|
+
};
|
|
77
|
+
}
|
|
78
|
+
const res = await deps.runTriage(t.type, t.target);
|
|
79
|
+
if (res.passed) {
|
|
80
|
+
return {
|
|
81
|
+
tool,
|
|
82
|
+
decision: "pass",
|
|
83
|
+
reason: `triage passed (${t.type} ${t.target})`,
|
|
84
|
+
triageType: t.type,
|
|
85
|
+
triageTarget: t.target,
|
|
86
|
+
};
|
|
87
|
+
}
|
|
88
|
+
return {
|
|
89
|
+
tool,
|
|
90
|
+
decision: "blocked",
|
|
91
|
+
reason: `triage did not pass (${t.type} ${t.target}): ${firstLine(res.output)}`,
|
|
92
|
+
triageType: t.type,
|
|
93
|
+
triageTarget: t.target,
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=triage-gate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"triage-gate.js","sourceRoot":"","sources":["../src/triage-gate.ts"],"names":[],"mappings":"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"}
|
package/dist/update-check.d.ts
CHANGED
|
@@ -9,5 +9,14 @@ export interface UpdateInfo {
|
|
|
9
9
|
* Never throws — all errors are caught silently.
|
|
10
10
|
*/
|
|
11
11
|
export declare function checkForUpdate(currentVersion: string): Promise<UpdateInfo | null>;
|
|
12
|
+
/** Current kit version from the installed package.json (sync, fail-safe). */
|
|
13
|
+
export declare function getKitVersionSync(): string;
|
|
14
|
+
/**
|
|
15
|
+
* Cache-only update check — NO network. For hot paths (the Claude Code hooks that
|
|
16
|
+
* run on every prompt): reads the cache the post-command banner / `kit check`
|
|
17
|
+
* already refresh, never fetches. Returns null on cache miss, error, suppression,
|
|
18
|
+
* or when current is already latest.
|
|
19
|
+
*/
|
|
20
|
+
export declare function readCachedUpdateSync(currentVersion: string): UpdateInfo | null;
|
|
12
21
|
/** Format and print the update notice after command output. */
|
|
13
22
|
export declare function printUpdateNotice(info: UpdateInfo): void;
|
package/dist/update-check.js
CHANGED
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
import { readFile, writeFile, mkdir } from "node:fs/promises";
|
|
2
|
-
import {
|
|
2
|
+
import { readFileSync } from "node:fs";
|
|
3
|
+
import { dirname, join } from "node:path";
|
|
4
|
+
import { fileURLToPath } from "node:url";
|
|
3
5
|
import { homedir } from "node:os";
|
|
6
|
+
const __dirname = dirname(fileURLToPath(import.meta.url));
|
|
4
7
|
const PACKAGE_NAME = "sandstream-kit";
|
|
5
8
|
const CHECK_INTERVAL_MS = 24 * 60 * 60 * 1000; // 24 hours
|
|
6
9
|
const CACHE_DIR = join(homedir(), ".kit");
|
|
@@ -63,6 +66,36 @@ export async function checkForUpdate(currentVersion) {
|
|
|
63
66
|
return null;
|
|
64
67
|
}
|
|
65
68
|
}
|
|
69
|
+
/** Current kit version from the installed package.json (sync, fail-safe). */
|
|
70
|
+
export function getKitVersionSync() {
|
|
71
|
+
try {
|
|
72
|
+
const pkg = JSON.parse(readFileSync(join(__dirname, "..", "package.json"), "utf8"));
|
|
73
|
+
return pkg.version ?? "unknown";
|
|
74
|
+
}
|
|
75
|
+
catch {
|
|
76
|
+
return "unknown";
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
/**
|
|
80
|
+
* Cache-only update check — NO network. For hot paths (the Claude Code hooks that
|
|
81
|
+
* run on every prompt): reads the cache the post-command banner / `kit check`
|
|
82
|
+
* already refresh, never fetches. Returns null on cache miss, error, suppression,
|
|
83
|
+
* or when current is already latest.
|
|
84
|
+
*/
|
|
85
|
+
export function readCachedUpdateSync(currentVersion) {
|
|
86
|
+
try {
|
|
87
|
+
if (process.env.KIT_NO_UPDATE_CHECK === "1")
|
|
88
|
+
return null;
|
|
89
|
+
const cache = JSON.parse(readFileSync(CACHE_FILE, "utf8"));
|
|
90
|
+
if (cache?.latestVersion && isNewer(cache.latestVersion, currentVersion)) {
|
|
91
|
+
return { available: true, latest: cache.latestVersion, current: currentVersion };
|
|
92
|
+
}
|
|
93
|
+
return null;
|
|
94
|
+
}
|
|
95
|
+
catch {
|
|
96
|
+
return null;
|
|
97
|
+
}
|
|
98
|
+
}
|
|
66
99
|
/** Returns true if `latest` is strictly newer than `current` (semver comparison). */
|
|
67
100
|
function isNewer(latest, current) {
|
|
68
101
|
try {
|
|
@@ -86,6 +119,6 @@ export function printUpdateNotice(info) {
|
|
|
86
119
|
const yellow = "\x1b[33m";
|
|
87
120
|
const cyan = "\x1b[36m";
|
|
88
121
|
console.log(`\n ${dim}╰─${reset} ${yellow}Update available${reset}: ${dim}${info.current}${reset} → ${cyan}${info.latest}${reset} ` +
|
|
89
|
-
`${dim}
|
|
122
|
+
`${dim}run ${reset}${cyan}kit upgrade --self${reset}${dim} (triages before installing)${reset}`);
|
|
90
123
|
}
|
|
91
124
|
//# sourceMappingURL=update-check.js.map
|
package/dist/update-check.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"update-check.js","sourceRoot":"","sources":["../src/update-check.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sandstream-kit",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.10.0",
|
|
4
4
|
"description": "developer kit. zero LLM, local-first, multi-vault. one command from git clone to working dev environment.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"funding": "https://buymeacoffee.com/sandstream",
|