@yadsh/dsh-kv-persist 0.2.0 → 0.2.1
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/lib/observability/diagnostics.js +1 -1
- package/lib/observability/diagnostics.js.map +1 -1
- package/lib/service.d.ts.map +1 -1
- package/lib/service.js +12 -8
- package/lib/service.js.map +1 -1
- package/package.json +2 -2
- package/lib/logging/dsh-home.d.ts +0 -13
- package/lib/logging/dsh-home.d.ts.map +0 -1
- package/lib/logging/dsh-home.js +0 -18
- package/lib/logging/dsh-home.js.map +0 -1
- package/lib/logging/index.d.ts +0 -10
- package/lib/logging/index.d.ts.map +0 -1
- package/lib/logging/index.js +0 -10
- package/lib/logging/index.js.map +0 -1
- package/lib/logging/plugin-logger.d.ts +0 -94
- package/lib/logging/plugin-logger.d.ts.map +0 -1
- package/lib/logging/plugin-logger.js +0 -397
- package/lib/logging/plugin-logger.js.map +0 -1
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* `<$DSH_HOME>/logs/dsh-kv-persist/<YYYY-MM-DD>.log` (NDJSON); `warn` and
|
|
8
8
|
* above are additionally mirrored to the host context logger.
|
|
9
9
|
*/
|
|
10
|
-
import { getPluginLogger } from "
|
|
10
|
+
import { getPluginLogger } from "@yadsh/dsh-plugin-log";
|
|
11
11
|
import { sha256Hex } from "../snapshots/fingerprint.js";
|
|
12
12
|
/** Abbreviated session hash for logs (SPEC §45: avoid full ids). */
|
|
13
13
|
export function abbreviateSessionId(sessionId) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/observability/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,
|
|
1
|
+
{"version":3,"file":"diagnostics.js","sourceRoot":"","sources":["../../src/observability/diagnostics.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EAAE,SAAS,EAAE,MAAM,6BAA6B,CAAC;AAexD,oEAAoE;AACpE,MAAM,UAAU,mBAAmB,CAAC,SAAiB;IACnD,OAAO,SAAS,CAAC,SAAS,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,yDAAyD;AACzD,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;AAEhD,SAAS,aAAa,CAAC,MAA2C;IAChE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,EAAE,CAAC;IACpC,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,KAAK,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAClD,QAAQ,CAAC,GAAG,CAAC;YACX,gBAAgB,CAAC,GAAG,CAAC,GAAG,CAAC,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAChG,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AASD;;;;;GAKG;AACH,MAAM,UAAU,qBAAqB,CAAC,IAAoB,EAAE,KAAwB;IAClF,MAAM,MAAM,GAAG,eAAe,CAAC;QAC7B,QAAQ,EAAE,gBAAgB;QAC1B,KAAK,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;QACzC,OAAO,EAAE,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM;QAC5C,WAAW,EAAE,CAAC,QAAQ,EAAE,OAAO,EAAE,EAAE;YACjC,IAAI,QAAQ,KAAK,OAAO,IAAI,QAAQ,KAAK,OAAO,EAAE,CAAC;gBACjD,IAAI,OAAO,IAAI,CAAC,KAAK,KAAK,UAAU;oBAAE,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;;oBACrD,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC1B,CAAC;iBAAM,IAAI,QAAQ,KAAK,MAAM;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;iBAC9C,IAAI,QAAQ,KAAK,MAAM;gBAAE,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;;gBAC5C,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QAC3B,CAAC;KACF,CAAC,CAAC;IACH,OAAO;QACL,KAAK,CAAC,KAAK,EAAE,MAAM;YACjB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,MAAM;YAChB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,CAAC,KAAK,EAAE,MAAM;YAChB,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAC5C,CAAC;QACD,KAAK,CAAC,KAAK,EAAE,MAAM;YACjB,MAAM,CAAC,KAAK,CAAC,KAAK,EAAE,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAC7C,CAAC;QACD,KAAK;YACH,MAAM,CAAC,KAAK,EAAE,CAAC;QACjB,CAAC;QACD,KAAK;YACH,OAAO,MAAM,CAAC,KAAK,EAAE,CAAC;QACxB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/lib/service.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"service.d.ts","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/lib/service.js
CHANGED
|
@@ -200,16 +200,20 @@ export class KvPersistService extends Service {
|
|
|
200
200
|
* `next()` is invoked exactly once, after preparation, inside the slot
|
|
201
201
|
* lease; chunks pass through unchanged and unbuffered.
|
|
202
202
|
*/
|
|
203
|
-
|
|
203
|
+
handleStream(options, next) {
|
|
204
204
|
if (!this.handles(options.provider))
|
|
205
205
|
return next();
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
206
|
+
const coordinator = this.coordinator;
|
|
207
|
+
return (async function* () {
|
|
208
|
+
const stream = await coordinator.runSessionRequest({
|
|
209
|
+
sessionId: options.sessionId === undefined ? null : String(options.sessionId),
|
|
210
|
+
provider: options.provider,
|
|
211
|
+
model: options.model,
|
|
212
|
+
purpose: options.purpose,
|
|
213
|
+
next,
|
|
214
|
+
});
|
|
215
|
+
yield* stream;
|
|
216
|
+
})();
|
|
213
217
|
}
|
|
214
218
|
async checkMetadataWritable() {
|
|
215
219
|
const dir = resolveMetadataDir(this.config);
|
package/lib/service.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACxD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AACjC,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAEvD,OAAO,EAAE,qBAAqB,EAAE,sBAAsB,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAG/F,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAElE,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AAErE,OAAO,EAAE,qBAAqB,EAAE,MAAM,gCAAgC,CAAC;AAEvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,4BAA4B,CAAC;AAC9D,OAAO,EAAE,kBAAkB,EAAE,MAAM,2BAA2B,CAAC;AAE/D;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAA+B;IAChE,IAAI,MAAM,CAAC,YAAY,KAAK,IAAI;QAAE,OAAO,MAAM,CAAC,YAAY,CAAC;IAC7D,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;IACnD,OAAO,IAAI,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,OAAO,EAAE,gBAAgB,CAAC,CAAC;AACvF,CAAC;AAkED;;;;;GAKG;AACH,SAAS,iBAAiB,CACxB,GAAY,EACZ,KAAa,EACb,QAAuC;IAEtC,GAAG,CAAC,EAAyE,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAC;AAClG,CAAC;AAED,MAAM,OAAO,gBAAiB,SAAQ,OAAO;IAC3C,MAAM,CAAC,MAAM,GAAG,qBAAqB,CAAC;IAErB,MAAM,CAA0B;IAChC,OAAO,CAAuB;IAC9B,UAAU,CAAqB;IAC/B,MAAM,CAAkB;IACxB,OAAO,GAAG,IAAI,gBAAgB,EAAE,CAAC;IACjC,WAAW,CAAwB;IAEpD,YAAY,GAAY,EAAE,SAA0B,EAAE,EAAE,OAA6B,EAAE;QACrF,KAAK,CAAC,GAAG,EAAE,WAAW,CAAC,CAAC;QACxB,MAAM,QAAQ,GAAG,sBAAsB,CAAC,MAAM,CAAC,CAAC;QAChD,IAAI,CAAC,MAAM,GAAG,QAAQ,CAAC;QACvB,IAAI,CAAC,MAAM;YACT,IAAI,CAAC,MAAM;gBACX,qBAAqB,CAAC,GAAG,CAAC,MAAwB,EAAE,QAAQ,CAAC,QAAQ,CAAC,CAAC;QACzE,IAAI,CAAC,UAAU;YACb,IAAI,CAAC,UAAU,IAAI,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC1E,IAAI,CAAC,OAAO;YACV,IAAI,CAAC,OAAO;gBACZ,IAAI,eAAe,CACjB;oBACE,OAAO,EAAE,QAAQ,CAAC,OAAO;oBACzB,MAAM,EAAE,QAAQ,CAAC,MAAM;oBACvB,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;iBAC5C,EACD,QAAQ,CAAC,MAAM,CAChB,CAAC;QACJ,IAAI,CAAC,WAAW,GAAG,IAAI,qBAAqB,CAAC;YAC3C,MAAM,EAAE,QAAQ;YAChB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,IAAI,CAAC,UAAU;YAC3B,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,GAAG,EAAE,IAAI,CAAC,GAAG;SACd,CAAC,CAAC;QACH,IAAI,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC;IACrB,CAAC;IAED,qCAAqC;IACrC,IAAI,cAAc;QAChB,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED,yEAAyE;IAEzE,uCAAuC;IACvC,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,UAAU,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAChG,MAAM,QAAQ,GAAG,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC;QACzC,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC;QACnC,OAAO;YACL,OAAO,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;YAC5B,OAAO,EAAE;gBACP,IAAI,EAAE,WAAW;gBACjB,KAAK,EAAE,IAAI,CAAC,WAAW,CAAC,YAAY;gBACpC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,OAAO;aAC9B;YACD,IAAI,EAAE,aAAa;YACnB,KAAK,EAAE;gBACL;oBACE,EAAE,EAAE,IAAI,CAAC,EAAE;oBACX,KAAK,EAAE,IAAI,CAAC,cAAc;oBAC1B,KAAK,EAAE,IAAI,CAAC,KAAK;iBAClB;aACF;YACD,SAAS,EAAE,MAAM;YACjB,KAAK,EAAE;gBACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;gBAC3B,WAAW,EAAE,QAAQ,CAAC,WAAW;gBACjC,UAAU,EAAE,QAAQ,CAAC,YAAY;gBACjC,KAAK,EAAE,QAAQ,CAAC,KAAK;aACtB;SACF,CAAC;IACJ,CAAC;IAED,gDAAgD;IAChD,eAAe,CAAC,SAAiB;QAC/B,MAAM,OAAO,GAAG,IAAI,CAAC,WAAW,CAAC,eAAe,CAAC,SAAS,CAAC,CAAC;QAC5D,IAAI,OAAO,KAAK,SAAS;YAAE,OAAO,SAAS,CAAC;QAC5C,OAAO;YACL,SAAS;YACT,SAAS,EAAE,OAAO,CAAC,SAAS;YAC5B,QAAQ,EAAE,OAAO,CAAC,KAAK,CAAC,QAAQ;YAChC,KAAK,EAAE,OAAO,CAAC,KAAK,CAAC,KAAK;YAC1B,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,iBAAiB,EAAE,OAAO,CAAC,iBAAiB;YAC5C,QAAQ,EAAE,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,cAAc,KAAK,SAAS;SAC7D,CAAC;IACJ,CAAC;IAED,2DAA2D;IAC3D,IAAI,CAAC,SAAiB;QACpB,OAAO,IAAI,CAAC,WAAW,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC7C,CAAC;IAED,4DAA4D;IAC5D,OAAO,CAAC,SAAiB;QACvB,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,CAAC,CAAC;IAChD,CAAC;IAED,0EAA0E;IAC1E,UAAU,CAAC,SAAiB,EAAE,MAAmC;QAC/D,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,SAAS,EAAE,MAAM,IAAI,UAAU,CAAC,CAAC;IACtE,CAAC;IAED,2EAA2E;IAC3E,KAAK,CAAC,SAAiB;QACrB,OAAO,IAAI,CAAC,WAAW,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;IAC3C,CAAC;IAED,yEAAyE;IACzE,KAAK;QACH,OAAO,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC/C,CAAC;IAED,mFAAmF;IACnF,OAAO,CAAC,QAAgB;QACtB,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,iBAAiB,CAAC,IAAI,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC;IACzE,CAAC;IAED,oEAAoE;IACpE,KAAK,CAAC,MAAM;QACV,MAAM,MAAM,GAAoD,EAAE,CAAC;QACnE,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC;QACpD,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,WAAW;YACjB,EAAE,EAAE,KAAK,CAAC,OAAO;YACjB,MAAM,EAAE,KAAK,CAAC,OAAO;gBACnB,CAAC,CAAC,sBAAsB,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG;gBACnD,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,IAAI,aAAa,CAAC;SACnC,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,IAAI,EAAE,iBAAiB;YACvB,EAAE,EAAE,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9C,MAAM,EAAE,QAAQ,IAAI,CAAC,MAAM,CAAC,MAAM,oBAAoB,IAAI,CAAC,MAAM,CAAC,IAAI,GAAG;SAC1E,CAAC,CAAC;QACH,MAAM,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,qBAAqB,EAAE,CAAC,CAAC;QAChD,OAAO;YACL,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAC/D,MAAM;SACP,CAAC;IACJ,CAAC;IAED,0EAA0E;IAElE,QAAQ,CAAC,GAAY;QAC3B,uEAAuE;QACvE,0EAA0E;QAC1E,yEAAyE;QACzE,GAAG,CAAC,EAAE,CACJ,YAAY,EACZ,CAAC,CAAC,OAAwB,EAAE,IAAsC,EAAE,EAAE,CACpE,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,IAAI,CAAC,CAAU,EAC5C,EAAE,MAAM,EAAE,IAAI,EAAE,CACjB,CAAC;QAEF,iEAAiE;QACjE,uEAAuE;QACvE,iBAAiB,CAAC,GAAG,EAAE,eAAe,EAAE,CAAC,OAAgC,EAAE,EAAE,CAC3E,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CACxF,CAAC;QACF,iBAAiB,CAAC,GAAG,EAAE,kBAAkB,EAAE,CAAC,OAAgC,EAAE,EAAE;YAC9E,KAAK,IAAI,CAAC,WAAW,CAAC,qBAAqB,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QACzF,CAAC,CAAC,CAAC;QACH,iBAAiB,CACf,GAAG,EACH,eAAe,EACf,CAAC,OAAgC,EAAE,KAAgC,EAAE,EAAE;YACrE,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU;gBAAE,OAAO;YACtC,KAAK,IAAI,CAAC,WAAW,CAAC,UAAU,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,UAAU,CAAC,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;QAC1F,CAAC,CACF,CAAC;QAEF,qEAAqE;QACrE,oEAAoE;QACpE,GAAG,CAAC,MAAM,CAAC,GAAG,EAAE;YACd,KAAK,IAAI,CAAC,WAAW,CAAC,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,CAAC,SAAS,CAAC,CAAC;YAC5D,OAAO,KAAK,IAAI,EAAE;gBAChB,MAAM,IAAI,CAAC,WAAW,CAAC,OAAO,EAAE,CAAC;gBACjC,sEAAsE;gBACtE,MAAM,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,CAAC;YAC9B,CAAC,CAAC;QACJ,CAAC,EAAE,0BAA0B,CAAC,CAAC;IACjC,CAAC;IAED;;;;OAIG;IACK,
|
|
1
|
+
{"version":3,"file":"service.js","sourceRoot":"","sources":["../src/service.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@yadsh/dsh-kv-persist",
|
|
3
|
-
"version": "0.2.
|
|
3
|
+
"version": "0.2.1",
|
|
4
4
|
"description": "Persistent KV-cache/session-state manager for DeepSeek Harness (llama.cpp slot snapshots)",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"deepseek",
|
|
@@ -68,7 +68,7 @@
|
|
|
68
68
|
"@yadsh/dsh-config": "^0.0.0"
|
|
69
69
|
},
|
|
70
70
|
"dependencies": {
|
|
71
|
-
"
|
|
71
|
+
"@yadsh/dsh-plugin-log": "^0.2.0"
|
|
72
72
|
},
|
|
73
73
|
"scripts": {
|
|
74
74
|
"build": "tsc -p tsconfig.build.json",
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DSH home resolution for plugin runtime helpers.
|
|
3
|
-
*
|
|
4
|
-
* Part of the future `@yadsh/dsh-plugin-log` package seed: this folder is a
|
|
5
|
-
* verbatim, self-contained copy in every adopting plugin (guidelines §5.2),
|
|
6
|
-
* so keep it free of imports outside `./`.
|
|
7
|
-
*/
|
|
8
|
-
/**
|
|
9
|
-
* Resolve the DSH home directory: `$DSH_HOME` when set to a non-blank value,
|
|
10
|
-
* otherwise `~/.dsh` (the same convention as `dsh-draft-sessions` storage).
|
|
11
|
-
*/
|
|
12
|
-
export declare function resolveDshHome(env?: NodeJS.ProcessEnv): string;
|
|
13
|
-
//# sourceMappingURL=dsh-home.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dsh-home.d.ts","sourceRoot":"","sources":["../../src/logging/dsh-home.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH;;;GAGG;AACH,wBAAgB,cAAc,CAAC,GAAG,GAAE,MAAM,CAAC,UAAwB,GAAG,MAAM,CAG3E"}
|
package/lib/logging/dsh-home.js
DELETED
|
@@ -1,18 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* DSH home resolution for plugin runtime helpers.
|
|
3
|
-
*
|
|
4
|
-
* Part of the future `@yadsh/dsh-plugin-log` package seed: this folder is a
|
|
5
|
-
* verbatim, self-contained copy in every adopting plugin (guidelines §5.2),
|
|
6
|
-
* so keep it free of imports outside `./`.
|
|
7
|
-
*/
|
|
8
|
-
import { homedir } from "node:os";
|
|
9
|
-
import { join, resolve } from "node:path";
|
|
10
|
-
/**
|
|
11
|
-
* Resolve the DSH home directory: `$DSH_HOME` when set to a non-blank value,
|
|
12
|
-
* otherwise `~/.dsh` (the same convention as `dsh-draft-sessions` storage).
|
|
13
|
-
*/
|
|
14
|
-
export function resolveDshHome(env = process.env) {
|
|
15
|
-
const configured = env.DSH_HOME?.trim();
|
|
16
|
-
return configured ? resolve(configured) : join(homedir(), ".dsh");
|
|
17
|
-
}
|
|
18
|
-
//# sourceMappingURL=dsh-home.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"dsh-home.js","sourceRoot":"","sources":["../../src/logging/dsh-home.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,SAAS,CAAC;AAClC,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAE1C;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,MAAyB,OAAO,CAAC,GAAG;IACjE,MAAM,UAAU,GAAG,GAAG,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC;IACxC,OAAO,UAAU,CAAC,CAAC,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,CAAC;AACpE,CAAC"}
|
package/lib/logging/index.d.ts
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin logging bundle (future `@yadsh/dsh-plugin-log`).
|
|
3
|
-
*
|
|
4
|
-
* Self-contained by design: every import stays inside this folder so the
|
|
5
|
-
* whole directory can be copied between plugins verbatim, or replaced by the
|
|
6
|
-
* extracted package import once it exists.
|
|
7
|
-
*/
|
|
8
|
-
export * from "./dsh-home.js";
|
|
9
|
-
export * from "./plugin-logger.js";
|
|
10
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC"}
|
package/lib/logging/index.js
DELETED
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin logging bundle (future `@yadsh/dsh-plugin-log`).
|
|
3
|
-
*
|
|
4
|
-
* Self-contained by design: every import stays inside this folder so the
|
|
5
|
-
* whole directory can be copied between plugins verbatim, or replaced by the
|
|
6
|
-
* extracted package import once it exists.
|
|
7
|
-
*/
|
|
8
|
-
export * from "./dsh-home.js";
|
|
9
|
-
export * from "./plugin-logger.js";
|
|
10
|
-
//# sourceMappingURL=index.js.map
|
package/lib/logging/index.js.map
DELETED
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/logging/index.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,cAAc,eAAe,CAAC;AAC9B,cAAc,oBAAoB,CAAC"}
|
|
@@ -1,94 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin file logger — the seed of the future `@yadsh/dsh-plugin-log` package.
|
|
3
|
-
*
|
|
4
|
-
* Every plugin currently carries its own verbatim copy of `src/logging/`
|
|
5
|
-
* (guidelines §5.2); the exported API below is frozen so that switching to
|
|
6
|
-
* the extracted package later is a one-line import change. The wrapper:
|
|
7
|
-
*
|
|
8
|
-
* - wraps `pino` for severity levels and NDJSON serialization;
|
|
9
|
-
* - writes daily files `<dir>/<YYYY-MM-DD>.log`, by default under
|
|
10
|
-
* `<$DSH_HOME>/logs/<pluginId>`;
|
|
11
|
-
* - mirrors selected records to an injectable console sink (default level
|
|
12
|
-
* `warn`) so operators still see problems live;
|
|
13
|
-
* - never throws at runtime: file-system failures degrade to console-only
|
|
14
|
-
* logging (fail-open), and closed loggers silently drop records;
|
|
15
|
-
* - disables file output when `DSH_LOG_DISABLED=1`, and under `NODE_ENV=test`
|
|
16
|
-
* unless `dir` is set explicitly (unit tests never touch a real home).
|
|
17
|
-
*
|
|
18
|
-
* Record shape (one JSON object per line): pino's `level` (numeric),
|
|
19
|
-
* `time` (epoch ms) and `msg` (= the event code), plus `plugin` and the
|
|
20
|
-
* caller's fields; `child(module)` adds `module`. Reserved pino keys
|
|
21
|
-
* (`level`, `time`, `msg`, `plugin`, `module`) must not be used as field
|
|
22
|
-
* names.
|
|
23
|
-
*/
|
|
24
|
-
/** Ordered severity levels; `silent` disables the logger entirely. */
|
|
25
|
-
export declare const PLUGIN_LOG_LEVELS: readonly ["trace", "debug", "info", "warn", "error", "fatal", "silent"];
|
|
26
|
-
export type PluginLogLevel = (typeof PLUGIN_LOG_LEVELS)[number];
|
|
27
|
-
/** Every level except `silent` (which also disables the console mirror). */
|
|
28
|
-
export type ConsoleLevel = Exclude<PluginLogLevel, "silent">;
|
|
29
|
-
/**
|
|
30
|
-
* Receives console-mirrored records. Must not throw; the wrapper guards every
|
|
31
|
-
* call regardless.
|
|
32
|
-
*/
|
|
33
|
-
export type PluginConsoleSink = (level: ConsoleLevel, message: string) => void;
|
|
34
|
-
/** Default console mirror threshold. */
|
|
35
|
-
export declare const DEFAULT_CONSOLE_LEVEL: PluginLogLevel;
|
|
36
|
-
/** Daily log files kept per plugin by default (0 = keep forever). */
|
|
37
|
-
export declare const DEFAULT_LOG_RETENTION_DAYS = 14;
|
|
38
|
-
/** Type guard for level strings (config parsing, env overrides). */
|
|
39
|
-
export declare function isPluginLogLevel(value: unknown): value is PluginLogLevel;
|
|
40
|
-
/** Logger configuration; every field except `pluginId` is optional. */
|
|
41
|
-
export interface PluginLoggerOptions {
|
|
42
|
-
/**
|
|
43
|
-
* Plugin id: directory name, `plugin` record field and env-prefix source
|
|
44
|
-
* (`DSH_LOG_LEVEL_<ID>`). Must match `[A-Za-z0-9][A-Za-z0-9._-]*`.
|
|
45
|
-
*/
|
|
46
|
-
readonly pluginId: string;
|
|
47
|
-
/** Severity threshold. Default: `DSH_LOG_LEVEL_<ID>` / `DSH_LOG_LEVEL` env, else `info`. */
|
|
48
|
-
readonly level?: PluginLogLevel;
|
|
49
|
-
/** Absolute log directory. Default: `<$DSH_HOME>/logs/<pluginId>`. */
|
|
50
|
-
readonly dir?: string;
|
|
51
|
-
/** Overrides the DSH home used to build the default `dir` (tests). */
|
|
52
|
-
readonly dshHome?: string;
|
|
53
|
-
/** Console mirror threshold; `silent` disables mirroring. Default: `warn`. */
|
|
54
|
-
readonly console?: PluginLogLevel;
|
|
55
|
-
/** Mirror target. Default: the global `console`. */
|
|
56
|
-
readonly consoleSink?: PluginConsoleSink;
|
|
57
|
-
/** Daily files older than this are deleted on rollover. Default: 14; 0 disables. */
|
|
58
|
-
readonly retentionDays?: number;
|
|
59
|
-
/** Master switch for file output. Default: auto (see the module docs). */
|
|
60
|
-
readonly file?: boolean;
|
|
61
|
-
/** Record fields to redact (pino `redact` paths), e.g. `["apiKey"]`. */
|
|
62
|
-
readonly redact?: readonly string[];
|
|
63
|
-
/** Clock for file naming, rollover and retention (tests). */
|
|
64
|
-
readonly now?: () => number;
|
|
65
|
-
}
|
|
66
|
-
/** Stable logging surface shared by every plugin (future package contract). */
|
|
67
|
-
export interface PluginLogger {
|
|
68
|
-
trace(event: string, fields?: Record<string, unknown>): void;
|
|
69
|
-
debug(event: string, fields?: Record<string, unknown>): void;
|
|
70
|
-
info(event: string, fields?: Record<string, unknown>): void;
|
|
71
|
-
warn(event: string, fields?: Record<string, unknown>): void;
|
|
72
|
-
error(event: string, fields?: Record<string, unknown>): void;
|
|
73
|
-
fatal(event: string, fields?: Record<string, unknown>): void;
|
|
74
|
-
/** Bound sub-logger that adds a `module` field to every record. */
|
|
75
|
-
child(module: string): PluginLogger;
|
|
76
|
-
/** Current severity threshold. */
|
|
77
|
-
get level(): PluginLogLevel;
|
|
78
|
-
/** Change the severity threshold at runtime. */
|
|
79
|
-
setLevel(level: PluginLogLevel): void;
|
|
80
|
-
/** Best-effort synchronous flush of buffered file output. */
|
|
81
|
-
flush(): void;
|
|
82
|
-
/** Flush and close the destination; idempotent; later writes are dropped. */
|
|
83
|
-
close(): Promise<void>;
|
|
84
|
-
}
|
|
85
|
-
/** Create a standalone logger instance (no caching). */
|
|
86
|
-
export declare function createPluginLogger(options: PluginLoggerOptions): PluginLogger;
|
|
87
|
-
/**
|
|
88
|
-
* Create or return the cached logger for `pluginId` + resolved `dir`. A later
|
|
89
|
-
* call with an explicit `level` updates the cached instance's threshold, so
|
|
90
|
-
* plugin config reloads take effect. `close()` evicts the cache entry; the
|
|
91
|
-
* next call creates a fresh instance.
|
|
92
|
-
*/
|
|
93
|
-
export declare function getPluginLogger(options: PluginLoggerOptions): PluginLogger;
|
|
94
|
-
//# sourceMappingURL=plugin-logger.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-logger.d.ts","sourceRoot":"","sources":["../../src/logging/plugin-logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,397 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Plugin file logger — the seed of the future `@yadsh/dsh-plugin-log` package.
|
|
3
|
-
*
|
|
4
|
-
* Every plugin currently carries its own verbatim copy of `src/logging/`
|
|
5
|
-
* (guidelines §5.2); the exported API below is frozen so that switching to
|
|
6
|
-
* the extracted package later is a one-line import change. The wrapper:
|
|
7
|
-
*
|
|
8
|
-
* - wraps `pino` for severity levels and NDJSON serialization;
|
|
9
|
-
* - writes daily files `<dir>/<YYYY-MM-DD>.log`, by default under
|
|
10
|
-
* `<$DSH_HOME>/logs/<pluginId>`;
|
|
11
|
-
* - mirrors selected records to an injectable console sink (default level
|
|
12
|
-
* `warn`) so operators still see problems live;
|
|
13
|
-
* - never throws at runtime: file-system failures degrade to console-only
|
|
14
|
-
* logging (fail-open), and closed loggers silently drop records;
|
|
15
|
-
* - disables file output when `DSH_LOG_DISABLED=1`, and under `NODE_ENV=test`
|
|
16
|
-
* unless `dir` is set explicitly (unit tests never touch a real home).
|
|
17
|
-
*
|
|
18
|
-
* Record shape (one JSON object per line): pino's `level` (numeric),
|
|
19
|
-
* `time` (epoch ms) and `msg` (= the event code), plus `plugin` and the
|
|
20
|
-
* caller's fields; `child(module)` adds `module`. Reserved pino keys
|
|
21
|
-
* (`level`, `time`, `msg`, `plugin`, `module`) must not be used as field
|
|
22
|
-
* names.
|
|
23
|
-
*/
|
|
24
|
-
import { mkdirSync } from "node:fs";
|
|
25
|
-
import { readdir, unlink } from "node:fs/promises";
|
|
26
|
-
import { join } from "node:path";
|
|
27
|
-
import { Writable } from "node:stream";
|
|
28
|
-
import pino from "pino";
|
|
29
|
-
import { resolveDshHome } from "./dsh-home.js";
|
|
30
|
-
/** Ordered severity levels; `silent` disables the logger entirely. */
|
|
31
|
-
export const PLUGIN_LOG_LEVELS = [
|
|
32
|
-
"trace",
|
|
33
|
-
"debug",
|
|
34
|
-
"info",
|
|
35
|
-
"warn",
|
|
36
|
-
"error",
|
|
37
|
-
"fatal",
|
|
38
|
-
"silent",
|
|
39
|
-
];
|
|
40
|
-
/** Default console mirror threshold. */
|
|
41
|
-
export const DEFAULT_CONSOLE_LEVEL = "warn";
|
|
42
|
-
/** Daily log files kept per plugin by default (0 = keep forever). */
|
|
43
|
-
export const DEFAULT_LOG_RETENTION_DAYS = 14;
|
|
44
|
-
const LEVEL_WEIGHT = {
|
|
45
|
-
trace: 10,
|
|
46
|
-
debug: 20,
|
|
47
|
-
info: 30,
|
|
48
|
-
warn: 40,
|
|
49
|
-
error: 50,
|
|
50
|
-
fatal: 60,
|
|
51
|
-
};
|
|
52
|
-
const DAY_MS = 86_400_000;
|
|
53
|
-
const LOG_FILE_PATTERN = /^(\d{4}-\d{2}-\d{2})\.log$/;
|
|
54
|
-
function weightOf(level) {
|
|
55
|
-
return level === "silent" ? Number.POSITIVE_INFINITY : LEVEL_WEIGHT[level];
|
|
56
|
-
}
|
|
57
|
-
/** Type guard for level strings (config parsing, env overrides). */
|
|
58
|
-
export function isPluginLogLevel(value) {
|
|
59
|
-
return typeof value === "string" && PLUGIN_LOG_LEVELS.includes(value);
|
|
60
|
-
}
|
|
61
|
-
function formatConsole(event, fields) {
|
|
62
|
-
if (fields === undefined)
|
|
63
|
-
return event;
|
|
64
|
-
const parts = Object.entries(fields).map(([key, value]) => {
|
|
65
|
-
const rendered = typeof value === "string" ? value : JSON.stringify(value);
|
|
66
|
-
return `${key}=${rendered}`;
|
|
67
|
-
});
|
|
68
|
-
return parts.length === 0 ? event : `${event} ${parts.join(" ")}`;
|
|
69
|
-
}
|
|
70
|
-
/** Local-calendar date stamp used in file names (sorts lexically). */
|
|
71
|
-
function dayStamp(ms) {
|
|
72
|
-
const date = new Date(ms);
|
|
73
|
-
const month = String(date.getMonth() + 1).padStart(2, "0");
|
|
74
|
-
const day = String(date.getDate()).padStart(2, "0");
|
|
75
|
-
return `${date.getFullYear()}-${month}-${day}`;
|
|
76
|
-
}
|
|
77
|
-
function envLevelOverride(pluginId) {
|
|
78
|
-
const env = process.env;
|
|
79
|
-
const specific = env[`DSH_LOG_LEVEL_${pluginId.replaceAll("-", "_").toUpperCase()}`];
|
|
80
|
-
if (isPluginLogLevel(specific))
|
|
81
|
-
return specific;
|
|
82
|
-
return isPluginLogLevel(env.DSH_LOG_LEVEL) ? env.DSH_LOG_LEVEL : undefined;
|
|
83
|
-
}
|
|
84
|
-
function envFileDisabled(explicitDir) {
|
|
85
|
-
const flag = process.env.DSH_LOG_DISABLED ?? process.env.DSH_PLUGIN_LOG_DISABLED;
|
|
86
|
-
if (flag === "1" || flag === "true")
|
|
87
|
-
return true;
|
|
88
|
-
// Unit tests must never write into a real DSH home unless a dir is explicit.
|
|
89
|
-
return process.env.NODE_ENV === "test" && !explicitDir;
|
|
90
|
-
}
|
|
91
|
-
async function sweepOldLogFiles(dir, retentionDays, nowMs) {
|
|
92
|
-
if (retentionDays <= 0)
|
|
93
|
-
return;
|
|
94
|
-
const cutoff = nowMs - retentionDays * DAY_MS;
|
|
95
|
-
const entries = await readdir(dir).catch(() => []);
|
|
96
|
-
for (const entry of entries) {
|
|
97
|
-
const match = LOG_FILE_PATTERN.exec(entry);
|
|
98
|
-
if (match === null || match[1] === undefined)
|
|
99
|
-
continue;
|
|
100
|
-
const stampMs = Date.parse(`${match[1]}T00:00:00`);
|
|
101
|
-
if (!Number.isFinite(stampMs) || stampMs >= cutoff)
|
|
102
|
-
continue;
|
|
103
|
-
await unlink(join(dir, entry)).catch(() => undefined);
|
|
104
|
-
}
|
|
105
|
-
}
|
|
106
|
-
let sharedDevNull;
|
|
107
|
-
function devNull() {
|
|
108
|
-
sharedDevNull ??= new Writable({
|
|
109
|
-
write(_chunk, _encoding, callback) {
|
|
110
|
-
callback();
|
|
111
|
-
},
|
|
112
|
-
});
|
|
113
|
-
return sharedDevNull;
|
|
114
|
-
}
|
|
115
|
-
function closeQuietly(destination) {
|
|
116
|
-
try {
|
|
117
|
-
destination.end?.();
|
|
118
|
-
}
|
|
119
|
-
catch {
|
|
120
|
-
// Fail-open: closing must never surface.
|
|
121
|
-
}
|
|
122
|
-
}
|
|
123
|
-
/**
|
|
124
|
-
* SonicBoom's `end()` takes no callback — completion is signaled by the
|
|
125
|
-
* `close` event. A bounded guard keeps a wedged stream from hanging plugin
|
|
126
|
-
* disposal forever.
|
|
127
|
-
*/
|
|
128
|
-
function closeDestination(destination) {
|
|
129
|
-
return new Promise((resolve) => {
|
|
130
|
-
if (destination.destroyed === true) {
|
|
131
|
-
resolve();
|
|
132
|
-
return;
|
|
133
|
-
}
|
|
134
|
-
let settled = false;
|
|
135
|
-
const done = () => {
|
|
136
|
-
if (settled)
|
|
137
|
-
return;
|
|
138
|
-
settled = true;
|
|
139
|
-
clearTimeout(guard);
|
|
140
|
-
resolve();
|
|
141
|
-
};
|
|
142
|
-
const guard = setTimeout(done, 1000);
|
|
143
|
-
guard.unref();
|
|
144
|
-
try {
|
|
145
|
-
destination.once?.("close", done);
|
|
146
|
-
destination.end?.();
|
|
147
|
-
}
|
|
148
|
-
catch {
|
|
149
|
-
done();
|
|
150
|
-
}
|
|
151
|
-
});
|
|
152
|
-
}
|
|
153
|
-
function errorMessage(error) {
|
|
154
|
-
return error instanceof Error ? error.message : String(error);
|
|
155
|
-
}
|
|
156
|
-
const defaultSink = (level, message) => {
|
|
157
|
-
if (level === "warn")
|
|
158
|
-
console.warn(message);
|
|
159
|
-
else if (level === "error" || level === "fatal")
|
|
160
|
-
console.error(message);
|
|
161
|
-
else if (level === "trace" || level === "debug")
|
|
162
|
-
console.log(message);
|
|
163
|
-
else
|
|
164
|
-
console.info(message);
|
|
165
|
-
};
|
|
166
|
-
/** Mutable state shared by a root logger and all of its `child()` views. */
|
|
167
|
-
class LoggerCore {
|
|
168
|
-
pluginId;
|
|
169
|
-
dir;
|
|
170
|
-
levelName;
|
|
171
|
-
consoleLevel;
|
|
172
|
-
sink;
|
|
173
|
-
retentionDays;
|
|
174
|
-
redact;
|
|
175
|
-
clock;
|
|
176
|
-
fileEnabled;
|
|
177
|
-
closed = false;
|
|
178
|
-
destination;
|
|
179
|
-
destinationDay = "";
|
|
180
|
-
root;
|
|
181
|
-
children = new Map();
|
|
182
|
-
retention;
|
|
183
|
-
constructor(options) {
|
|
184
|
-
if (!/^[A-Za-z0-9][A-Za-z0-9._-]*$/.test(options.pluginId)) {
|
|
185
|
-
throw new TypeError(`pluginId must match [A-Za-z0-9][A-Za-z0-9._-]*, got ${JSON.stringify(options.pluginId)}`);
|
|
186
|
-
}
|
|
187
|
-
this.pluginId = options.pluginId;
|
|
188
|
-
const home = options.dshHome ?? resolveDshHome();
|
|
189
|
-
this.dir = options.dir ?? join(home, "logs", options.pluginId);
|
|
190
|
-
this.levelName = options.level ?? envLevelOverride(options.pluginId) ?? "info";
|
|
191
|
-
this.consoleLevel = options.console ?? DEFAULT_CONSOLE_LEVEL;
|
|
192
|
-
this.sink = options.consoleSink ?? defaultSink;
|
|
193
|
-
this.retentionDays = Math.max(0, Math.floor(options.retentionDays ?? DEFAULT_LOG_RETENTION_DAYS));
|
|
194
|
-
this.redact = options.redact ?? [];
|
|
195
|
-
this.clock = options.now ?? Date.now;
|
|
196
|
-
this.fileEnabled = (options.file ?? true) && !envFileDisabled(options.dir !== undefined);
|
|
197
|
-
}
|
|
198
|
-
isClosed() {
|
|
199
|
-
return this.closed;
|
|
200
|
-
}
|
|
201
|
-
key() {
|
|
202
|
-
return `${this.pluginId}\u0000${this.dir}`;
|
|
203
|
-
}
|
|
204
|
-
get level() {
|
|
205
|
-
return this.levelName;
|
|
206
|
-
}
|
|
207
|
-
setLevel(level) {
|
|
208
|
-
if (!isPluginLogLevel(level)) {
|
|
209
|
-
throw new TypeError(`unknown plugin log level: ${JSON.stringify(level)}`);
|
|
210
|
-
}
|
|
211
|
-
if (level === this.levelName)
|
|
212
|
-
return;
|
|
213
|
-
this.levelName = level;
|
|
214
|
-
// Rebuild the destination on the next write so the new threshold takes
|
|
215
|
-
// effect without touching the file handle while silent.
|
|
216
|
-
this.destinationDay = "";
|
|
217
|
-
}
|
|
218
|
-
write(moduleField, level, event, fields) {
|
|
219
|
-
if (this.closed || this.levelName === "silent")
|
|
220
|
-
return;
|
|
221
|
-
if (weightOf(level) < weightOf(this.levelName)) {
|
|
222
|
-
this.mirror(moduleField, level, event, fields);
|
|
223
|
-
return;
|
|
224
|
-
}
|
|
225
|
-
this.open();
|
|
226
|
-
const target = this.targetFor(moduleField);
|
|
227
|
-
if (target !== undefined) {
|
|
228
|
-
try {
|
|
229
|
-
target[level](fields ?? {}, event);
|
|
230
|
-
}
|
|
231
|
-
catch {
|
|
232
|
-
// Fail-open: serialization problems must never break the plugin.
|
|
233
|
-
}
|
|
234
|
-
}
|
|
235
|
-
this.mirror(moduleField, level, event, fields);
|
|
236
|
-
}
|
|
237
|
-
flush() {
|
|
238
|
-
try {
|
|
239
|
-
this.destination?.flushSync?.();
|
|
240
|
-
}
|
|
241
|
-
catch {
|
|
242
|
-
// Fail-open.
|
|
243
|
-
}
|
|
244
|
-
}
|
|
245
|
-
async close() {
|
|
246
|
-
if (this.closed)
|
|
247
|
-
return;
|
|
248
|
-
this.closed = true;
|
|
249
|
-
registry.delete(this.key());
|
|
250
|
-
const destination = this.destination;
|
|
251
|
-
this.destination = undefined;
|
|
252
|
-
this.root = undefined;
|
|
253
|
-
this.children.clear();
|
|
254
|
-
this.destinationDay = "";
|
|
255
|
-
await this.retention;
|
|
256
|
-
if (destination !== undefined)
|
|
257
|
-
await closeDestination(destination);
|
|
258
|
-
}
|
|
259
|
-
/** Open (or roll over to) the destination file for the current day. */
|
|
260
|
-
open() {
|
|
261
|
-
const stamp = dayStamp(this.clock());
|
|
262
|
-
if (this.root !== undefined && stamp === this.destinationDay)
|
|
263
|
-
return;
|
|
264
|
-
this.rollover(stamp);
|
|
265
|
-
}
|
|
266
|
-
rollover(stamp) {
|
|
267
|
-
this.destinationDay = stamp;
|
|
268
|
-
let next;
|
|
269
|
-
if (this.fileEnabled) {
|
|
270
|
-
try {
|
|
271
|
-
mkdirSync(this.dir, { recursive: true });
|
|
272
|
-
next = pino.destination({
|
|
273
|
-
dest: join(this.dir, `${stamp}.log`),
|
|
274
|
-
append: true,
|
|
275
|
-
mkdir: true,
|
|
276
|
-
sync: false,
|
|
277
|
-
minLength: 0,
|
|
278
|
-
});
|
|
279
|
-
}
|
|
280
|
-
catch (error) {
|
|
281
|
-
// Fail-open: an unusable log directory degrades to console-only.
|
|
282
|
-
this.fileEnabled = false;
|
|
283
|
-
next = undefined;
|
|
284
|
-
this.mirror(undefined, "warn", "logging.file_disabled", { reason: errorMessage(error) });
|
|
285
|
-
}
|
|
286
|
-
}
|
|
287
|
-
const previous = this.destination;
|
|
288
|
-
this.destination = next;
|
|
289
|
-
this.children.clear();
|
|
290
|
-
this.root = pino({
|
|
291
|
-
level: this.levelName,
|
|
292
|
-
base: { plugin: this.pluginId },
|
|
293
|
-
...(this.redact.length > 0 ? { redact: [...this.redact] } : {}),
|
|
294
|
-
}, next ?? devNull());
|
|
295
|
-
if (previous !== undefined && previous !== next)
|
|
296
|
-
closeQuietly(previous);
|
|
297
|
-
if (this.fileEnabled)
|
|
298
|
-
this.scheduleRetentionSweep();
|
|
299
|
-
}
|
|
300
|
-
targetFor(moduleField) {
|
|
301
|
-
const root = this.root;
|
|
302
|
-
if (root === undefined)
|
|
303
|
-
return undefined;
|
|
304
|
-
if (moduleField === undefined)
|
|
305
|
-
return root;
|
|
306
|
-
const cached = this.children.get(moduleField);
|
|
307
|
-
if (cached !== undefined)
|
|
308
|
-
return cached;
|
|
309
|
-
const created = root.child({ module: moduleField });
|
|
310
|
-
this.children.set(moduleField, created);
|
|
311
|
-
return created;
|
|
312
|
-
}
|
|
313
|
-
mirror(moduleField, level, event, fields) {
|
|
314
|
-
if (this.consoleLevel === "silent")
|
|
315
|
-
return;
|
|
316
|
-
if (weightOf(level) < weightOf(this.consoleLevel))
|
|
317
|
-
return;
|
|
318
|
-
const scope = moduleField === undefined ? "" : `/${moduleField}`;
|
|
319
|
-
try {
|
|
320
|
-
this.sink(level, `[${this.pluginId}${scope}] ${formatConsole(event, fields)}`);
|
|
321
|
-
}
|
|
322
|
-
catch {
|
|
323
|
-
// Fail-open.
|
|
324
|
-
}
|
|
325
|
-
}
|
|
326
|
-
scheduleRetentionSweep() {
|
|
327
|
-
if (this.retentionDays <= 0 || this.retention !== undefined)
|
|
328
|
-
return;
|
|
329
|
-
this.retention = sweepOldLogFiles(this.dir, this.retentionDays, this.clock()).then(() => undefined, () => undefined);
|
|
330
|
-
}
|
|
331
|
-
}
|
|
332
|
-
const registry = new Map();
|
|
333
|
-
class PluginLoggerImpl {
|
|
334
|
-
core;
|
|
335
|
-
moduleField;
|
|
336
|
-
constructor(core, moduleField) {
|
|
337
|
-
this.core = core;
|
|
338
|
-
this.moduleField = moduleField;
|
|
339
|
-
}
|
|
340
|
-
trace(event, fields) {
|
|
341
|
-
this.core.write(this.moduleField, "trace", event, fields);
|
|
342
|
-
}
|
|
343
|
-
debug(event, fields) {
|
|
344
|
-
this.core.write(this.moduleField, "debug", event, fields);
|
|
345
|
-
}
|
|
346
|
-
info(event, fields) {
|
|
347
|
-
this.core.write(this.moduleField, "info", event, fields);
|
|
348
|
-
}
|
|
349
|
-
warn(event, fields) {
|
|
350
|
-
this.core.write(this.moduleField, "warn", event, fields);
|
|
351
|
-
}
|
|
352
|
-
error(event, fields) {
|
|
353
|
-
this.core.write(this.moduleField, "error", event, fields);
|
|
354
|
-
}
|
|
355
|
-
fatal(event, fields) {
|
|
356
|
-
this.core.write(this.moduleField, "fatal", event, fields);
|
|
357
|
-
}
|
|
358
|
-
child(module) {
|
|
359
|
-
return new PluginLoggerImpl(this.core, module);
|
|
360
|
-
}
|
|
361
|
-
get level() {
|
|
362
|
-
return this.core.level;
|
|
363
|
-
}
|
|
364
|
-
setLevel(level) {
|
|
365
|
-
this.core.setLevel(level);
|
|
366
|
-
}
|
|
367
|
-
flush() {
|
|
368
|
-
this.core.flush();
|
|
369
|
-
}
|
|
370
|
-
close() {
|
|
371
|
-
return this.core.close();
|
|
372
|
-
}
|
|
373
|
-
}
|
|
374
|
-
/** Create a standalone logger instance (no caching). */
|
|
375
|
-
export function createPluginLogger(options) {
|
|
376
|
-
return new PluginLoggerImpl(new LoggerCore(options));
|
|
377
|
-
}
|
|
378
|
-
/**
|
|
379
|
-
* Create or return the cached logger for `pluginId` + resolved `dir`. A later
|
|
380
|
-
* call with an explicit `level` updates the cached instance's threshold, so
|
|
381
|
-
* plugin config reloads take effect. `close()` evicts the cache entry; the
|
|
382
|
-
* next call creates a fresh instance.
|
|
383
|
-
*/
|
|
384
|
-
export function getPluginLogger(options) {
|
|
385
|
-
const candidate = new LoggerCore(options);
|
|
386
|
-
const key = candidate.key();
|
|
387
|
-
const existing = registry.get(key);
|
|
388
|
-
if (existing === undefined || existing.core.isClosed()) {
|
|
389
|
-
const entry = { core: candidate, root: new PluginLoggerImpl(candidate) };
|
|
390
|
-
registry.set(key, entry);
|
|
391
|
-
return entry.root;
|
|
392
|
-
}
|
|
393
|
-
if (options.level !== undefined)
|
|
394
|
-
existing.core.setLevel(options.level);
|
|
395
|
-
return existing.root;
|
|
396
|
-
}
|
|
397
|
-
//# sourceMappingURL=plugin-logger.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"plugin-logger.js","sourceRoot":"","sources":["../../src/logging/plugin-logger.ts"],"names":[],"mappings":"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"}
|