trickle-observe 0.2.138 → 0.2.140
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/observe-register.js +31 -29
- package/package.json +1 -1
- package/src/observe-register.ts +28 -26
package/dist/observe-register.js
CHANGED
|
@@ -1248,36 +1248,38 @@ if (enabled) {
|
|
|
1248
1248
|
(0, llm_observer_1.initLlmObserver)();
|
|
1249
1249
|
// ── Hook 0b4: Initialize MCP observer ──
|
|
1250
1250
|
(0, mcp_observer_1.initMcpObserver)();
|
|
1251
|
-
// ── Hook 0c: Capture environment snapshot ──
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1267
|
-
|
|
1268
|
-
|
|
1269
|
-
|
|
1270
|
-
|
|
1271
|
-
|
|
1272
|
-
|
|
1273
|
-
|
|
1274
|
-
|
|
1275
|
-
|
|
1276
|
-
|
|
1277
|
-
|
|
1278
|
-
|
|
1251
|
+
// ── Hook 0c: Capture environment snapshot (opt-in via TRICKLE_CAPTURE_ENV=1) ──
|
|
1252
|
+
if (process.env.TRICKLE_CAPTURE_ENV === '1') {
|
|
1253
|
+
try {
|
|
1254
|
+
const envDir = process.env.TRICKLE_LOCAL_DIR || path_1.default.join(process.cwd(), '.trickle');
|
|
1255
|
+
fs_1.default.mkdirSync(envDir, { recursive: true });
|
|
1256
|
+
const SENSITIVE = ['KEY', 'SECRET', 'TOKEN', 'PASSWORD', 'AUTH', 'CREDENTIAL', 'PRIVATE'];
|
|
1257
|
+
const isSensitive = (k) => SENSITIVE.some(s => k.toUpperCase().includes(s));
|
|
1258
|
+
const redact = (k, v) => isSensitive(k) ? (v.length <= 4 ? '****' : v.slice(0, 2) + '*'.repeat(v.length - 4) + v.slice(-2)) : v;
|
|
1259
|
+
const skip = new Set(['PATH', 'HOME', 'USER', 'SHELL', 'TERM', 'LANG', 'LOGNAME', 'PWD', 'OLDPWD', 'SHLVL', 'TMPDIR']);
|
|
1260
|
+
const trickleVars = {};
|
|
1261
|
+
const appVars = {};
|
|
1262
|
+
for (const [k, v] of Object.entries(process.env)) {
|
|
1263
|
+
if (!v || k.startsWith('_'))
|
|
1264
|
+
continue;
|
|
1265
|
+
if (k.startsWith('TRICKLE_'))
|
|
1266
|
+
trickleVars[k] = v;
|
|
1267
|
+
else if (!skip.has(k))
|
|
1268
|
+
appVars[k] = redact(k, v);
|
|
1269
|
+
}
|
|
1270
|
+
const envSnapshot = {
|
|
1271
|
+
kind: 'environment',
|
|
1272
|
+
timestamp: Date.now(),
|
|
1273
|
+
node: { version: process.version, platform: process.platform, arch: process.arch },
|
|
1274
|
+
cwd: process.cwd(),
|
|
1275
|
+
argv: process.argv.slice(0, 10),
|
|
1276
|
+
trickle: trickleVars,
|
|
1277
|
+
env: appVars,
|
|
1278
|
+
};
|
|
1279
|
+
fs_1.default.writeFileSync(path_1.default.join(envDir, 'environment.json'), JSON.stringify(envSnapshot, null, 2));
|
|
1280
|
+
}
|
|
1281
|
+
catch { }
|
|
1279
1282
|
}
|
|
1280
|
-
catch { }
|
|
1281
1283
|
// ── Hook 0d: Memory profiling ──
|
|
1282
1284
|
try {
|
|
1283
1285
|
const profileDir = process.env.TRICKLE_LOCAL_DIR || path_1.default.join(process.cwd(), '.trickle');
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "trickle-observe",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.140",
|
|
4
4
|
"description": "Zero-code runtime observability for JavaScript/TypeScript. Auto-instruments Express, Fastify, Koa, Hono, OpenAI, Anthropic, Gemini, MCP. Captures functions, variables, LLM calls, agent workflows.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
package/src/observe-register.ts
CHANGED
|
@@ -1238,32 +1238,34 @@ if (enabled) {
|
|
|
1238
1238
|
// ── Hook 0b4: Initialize MCP observer ──
|
|
1239
1239
|
initMcpObserver();
|
|
1240
1240
|
|
|
1241
|
-
// ── Hook 0c: Capture environment snapshot ──
|
|
1242
|
-
|
|
1243
|
-
|
|
1244
|
-
|
|
1245
|
-
|
|
1246
|
-
|
|
1247
|
-
|
|
1248
|
-
|
|
1249
|
-
|
|
1250
|
-
|
|
1251
|
-
|
|
1252
|
-
|
|
1253
|
-
|
|
1254
|
-
|
|
1255
|
-
|
|
1256
|
-
|
|
1257
|
-
|
|
1258
|
-
|
|
1259
|
-
|
|
1260
|
-
|
|
1261
|
-
|
|
1262
|
-
|
|
1263
|
-
|
|
1264
|
-
|
|
1265
|
-
|
|
1266
|
-
|
|
1241
|
+
// ── Hook 0c: Capture environment snapshot (opt-in via TRICKLE_CAPTURE_ENV=1) ──
|
|
1242
|
+
if (process.env.TRICKLE_CAPTURE_ENV === '1') {
|
|
1243
|
+
try {
|
|
1244
|
+
const envDir = process.env.TRICKLE_LOCAL_DIR || path.join(process.cwd(), '.trickle');
|
|
1245
|
+
fs.mkdirSync(envDir, { recursive: true });
|
|
1246
|
+
const SENSITIVE = ['KEY', 'SECRET', 'TOKEN', 'PASSWORD', 'AUTH', 'CREDENTIAL', 'PRIVATE'];
|
|
1247
|
+
const isSensitive = (k: string) => SENSITIVE.some(s => k.toUpperCase().includes(s));
|
|
1248
|
+
const redact = (k: string, v: string) => isSensitive(k) ? (v.length <= 4 ? '****' : v.slice(0, 2) + '*'.repeat(v.length - 4) + v.slice(-2)) : v;
|
|
1249
|
+
const skip = new Set(['PATH', 'HOME', 'USER', 'SHELL', 'TERM', 'LANG', 'LOGNAME', 'PWD', 'OLDPWD', 'SHLVL', 'TMPDIR']);
|
|
1250
|
+
const trickleVars: Record<string, string> = {};
|
|
1251
|
+
const appVars: Record<string, string> = {};
|
|
1252
|
+
for (const [k, v] of Object.entries(process.env)) {
|
|
1253
|
+
if (!v || k.startsWith('_')) continue;
|
|
1254
|
+
if (k.startsWith('TRICKLE_')) trickleVars[k] = v;
|
|
1255
|
+
else if (!skip.has(k)) appVars[k] = redact(k, v);
|
|
1256
|
+
}
|
|
1257
|
+
const envSnapshot = {
|
|
1258
|
+
kind: 'environment',
|
|
1259
|
+
timestamp: Date.now(),
|
|
1260
|
+
node: { version: process.version, platform: process.platform, arch: process.arch },
|
|
1261
|
+
cwd: process.cwd(),
|
|
1262
|
+
argv: process.argv.slice(0, 10),
|
|
1263
|
+
trickle: trickleVars,
|
|
1264
|
+
env: appVars,
|
|
1265
|
+
};
|
|
1266
|
+
fs.writeFileSync(path.join(envDir, 'environment.json'), JSON.stringify(envSnapshot, null, 2));
|
|
1267
|
+
} catch {}
|
|
1268
|
+
}
|
|
1267
1269
|
|
|
1268
1270
|
// ── Hook 0d: Memory profiling ──
|
|
1269
1271
|
try {
|