@wrongstack/core 0.313.0 → 0.316.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/dist/chronicle/index.js +84 -6391
- package/dist/chronicle/legacy-journal-import.d.ts +0 -6
- package/dist/chronicle/metrics-ingest.d.ts +14 -0
- package/dist/chronicle/metrics-schema.d.ts +10 -1
- package/dist/chronicle/metrics-store.d.ts +20 -2
- package/dist/chronicle/project-server.js +98 -4874
- package/dist/chronicle/sink.d.ts +13 -0
- package/dist/chronicle/sqlite-journal.d.ts +20 -2
- package/dist/chunk-25LSLC3G.js +334 -0
- package/dist/chunk-27QIURLN.js +1073 -0
- package/dist/chunk-2FK4WTFF.js +207 -0
- package/dist/chunk-2YU4WVBW.js +134 -0
- package/dist/chunk-3AGWVSS7.js +4608 -0
- package/dist/chunk-3BDV7RL3.js +211 -0
- package/dist/chunk-3ECENVHL.js +325 -0
- package/dist/chunk-3XPVB7BA.js +135 -0
- package/dist/chunk-45WI72ZB.js +16884 -0
- package/dist/chunk-4BMVPOHO.js +3748 -0
- package/dist/chunk-4I7HGVVA.js +363 -0
- package/dist/chunk-4LCZVJVF.js +317 -0
- package/dist/chunk-4SJNS7OB.js +217 -0
- package/dist/chunk-4VWO3ZXL.js +342 -0
- package/dist/chunk-57GEWK5X.js +26 -0
- package/dist/chunk-5BMIE7QG.js +46 -0
- package/dist/chunk-5S437PRC.js +50 -0
- package/dist/chunk-5XDUGTKN.js +511 -0
- package/dist/chunk-5YPSXQXM.js +1443 -0
- package/dist/chunk-6FHWXLPT.js +10 -0
- package/dist/chunk-6H5GEOET.js +2406 -0
- package/dist/chunk-6NWEVFEL.js +151 -0
- package/dist/chunk-AYW5YINX.js +58 -0
- package/dist/chunk-B4AMLZPB.js +9 -0
- package/dist/chunk-B7F4WVP4.js +65 -0
- package/dist/chunk-BJHVULHO.js +55 -0
- package/dist/chunk-BPBKKBUK.js +2085 -0
- package/dist/chunk-BYD345OX.js +589 -0
- package/dist/chunk-C27KDLOX.js +279 -0
- package/dist/chunk-CU546ESW.js +597 -0
- package/dist/chunk-DLHHXUAM.js +172 -0
- package/dist/chunk-DOTHQSJ2.js +429 -0
- package/dist/chunk-DYLPMV4Q.js +711 -0
- package/dist/chunk-EODDVJBM.js +82 -0
- package/dist/chunk-F3JWNST7.js +361 -0
- package/dist/chunk-FC2ZGRF3.js +140 -0
- package/dist/chunk-FCBTO76Z.js +5786 -0
- package/dist/chunk-FHZVFYSL.js +396 -0
- package/dist/chunk-FNXVT7HF.js +52 -0
- package/dist/chunk-FWNLEZYG.js +259 -0
- package/dist/chunk-FXQLIX3K.js +211 -0
- package/dist/chunk-G5S3S5ZN.js +38 -0
- package/dist/chunk-GDQ7CZRQ.js +116 -0
- package/dist/chunk-GJJGJB2R.js +1374 -0
- package/dist/chunk-GTCU6DZ3.js +1 -0
- package/dist/chunk-HA4ZYA6T.js +178 -0
- package/dist/chunk-HI3JGZR2.js +188 -0
- package/dist/chunk-HMLIGAU7.js +395 -0
- package/dist/chunk-HXKZ7OBQ.js +303 -0
- package/dist/chunk-I7DALG7J.js +292 -0
- package/dist/chunk-IRUTEHCE.js +960 -0
- package/dist/chunk-IYFBFX34.js +86 -0
- package/dist/chunk-J2WRWR37.js +1104 -0
- package/dist/chunk-JFPJ6LLQ.js +129 -0
- package/dist/chunk-JMULFFLN.js +9 -0
- package/dist/chunk-JO4MGB6Z.js +1264 -0
- package/dist/chunk-JVKB2TBL.js +48 -0
- package/dist/chunk-JX7VBZDK.js +31 -0
- package/dist/chunk-K6BXGITA.js +931 -0
- package/dist/chunk-KDQJCT2J.js +45 -0
- package/dist/chunk-KJ2ZTQSL.js +47 -0
- package/dist/chunk-KZMSZV32.js +187 -0
- package/dist/chunk-LA7CLDRW.js +129 -0
- package/dist/chunk-LHOA5DWA.js +28 -0
- package/dist/chunk-LSMMOS2Z.js +119 -0
- package/dist/chunk-LX5QWLBL.js +27 -0
- package/dist/chunk-LXWCMQNJ.js +789 -0
- package/dist/chunk-M27LIEKV.js +2829 -0
- package/dist/chunk-MJPHJRAL.js +663 -0
- package/dist/chunk-MTL4O5YR.js +228 -0
- package/dist/chunk-NDBIPFNY.js +102 -0
- package/dist/chunk-NEMIWEXC.js +1199 -0
- package/dist/chunk-NHJ75HXY.js +1 -0
- package/dist/chunk-NIOAGFPB.js +1510 -0
- package/dist/chunk-NS52ISWS.js +355 -0
- package/dist/chunk-NSOFPKGT.js +5352 -0
- package/dist/chunk-NVIZG63R.js +757 -0
- package/dist/chunk-O37BQ65S.js +21 -0
- package/dist/chunk-OOYZPOXM.js +308 -0
- package/dist/chunk-OSGLYW5J.js +28 -0
- package/dist/chunk-PFCMSSUF.js +1640 -0
- package/dist/chunk-PFZO3C6H.js +14 -0
- package/dist/chunk-PGRVXIMY.js +158 -0
- package/dist/chunk-PHH7LD45.js +113 -0
- package/dist/chunk-PISBFBJN.js +109 -0
- package/dist/chunk-POOOIWE5.js +9 -0
- package/dist/chunk-PQNS3U7Z.js +1240 -0
- package/dist/chunk-QSTSJOCK.js +402 -0
- package/dist/chunk-RFQMOKWK.js +282 -0
- package/dist/chunk-RJIZEJ42.js +30 -0
- package/dist/chunk-RTOTNK3P.js +484 -0
- package/dist/chunk-RXKSDUAU.js +1172 -0
- package/dist/chunk-S45JPKQN.js +3317 -0
- package/dist/chunk-SAFHACFA.js +152 -0
- package/dist/chunk-SQJVFEBV.js +41 -0
- package/dist/chunk-SVT4RNTR.js +49 -0
- package/dist/chunk-SWUFN7XM.js +43 -0
- package/dist/chunk-SXMVYC5H.js +174 -0
- package/dist/chunk-SZ6AYUIZ.js +23 -0
- package/dist/chunk-TBRL2RCC.js +9 -0
- package/dist/chunk-TCCHINEF.js +655 -0
- package/dist/chunk-THEGTRAG.js +316 -0
- package/dist/chunk-TR4LQE7L.js +2256 -0
- package/dist/chunk-TRT2HRWZ.js +18 -0
- package/dist/chunk-TWJMGXCI.js +900 -0
- package/dist/chunk-U45AXT5D.js +1023 -0
- package/dist/chunk-U4FWBSO3.js +509 -0
- package/dist/chunk-UBGDX6FI.js +147 -0
- package/dist/chunk-UJILKYES.js +75 -0
- package/dist/chunk-ULMAQV3T.js +234 -0
- package/dist/chunk-VVBP6KGT.js +9 -0
- package/dist/chunk-W5VITDM2.js +168 -0
- package/dist/chunk-WAHQVNWT.js +194 -0
- package/dist/chunk-WBPVKEEE.js +227 -0
- package/dist/chunk-WGGYRBXH.js +5434 -0
- package/dist/chunk-WLYKU45P.js +5770 -0
- package/dist/chunk-WP7BVANJ.js +53 -0
- package/dist/chunk-WQQON3SV.js +473 -0
- package/dist/chunk-WQTOVMGV.js +119 -0
- package/dist/chunk-XBDP4QPW.js +7 -0
- package/dist/chunk-XEBHSJLT.js +103 -0
- package/dist/chunk-XF4VUMKW.js +231 -0
- package/dist/chunk-XQ2ECNK3.js +1 -0
- package/dist/chunk-Y5YXDM7D.js +74 -0
- package/dist/chunk-YOPAUVU4.js +2588 -0
- package/dist/chunk-YPT4A46F.js +362 -0
- package/dist/chunk-YWXT3JNM.js +425 -0
- package/dist/chunk-YY6APYUM.js +49 -0
- package/dist/chunk-Z2IJUO45.js +691 -0
- package/dist/chunk-ZHZ2Y2DH.js +1643 -0
- package/dist/chunk-ZT7JNIGX.js +152 -0
- package/dist/coordination/agent-monitor.d.ts +9 -1
- package/dist/coordination/agent-subagent-runner.d.ts +1 -1
- package/dist/coordination/agents/agent-prompts.d.ts +8 -0
- package/dist/coordination/agents/index.d.ts +33 -1
- package/dist/coordination/agents/index.js +184 -6269
- package/dist/coordination/agents/phase3-wave1-platform.d.ts +1 -3
- package/dist/coordination/agents/phase3-wave2-meta.d.ts +1 -3
- package/dist/coordination/agents/phase8-wave3-products.d.ts +1 -3
- package/dist/coordination/agents/phase9-wave4-platform-meta.d.ts +1 -3
- package/dist/coordination/agents/project-agent-identity.d.ts +11 -11
- package/dist/coordination/agents/types.d.ts +13 -2
- package/dist/coordination/brain-monitor.d.ts +30 -7
- package/dist/coordination/collab-debug.d.ts +1 -1
- package/dist/coordination/collab-pause.d.ts +1 -1
- package/dist/coordination/delegate-tool.d.ts +7 -5
- package/dist/coordination/director-kanban-queue-helpers.d.ts +1 -0
- package/dist/coordination/director-options.d.ts +7 -0
- package/dist/coordination/director-spawn-model.d.ts +17 -0
- package/dist/coordination/director-tools.d.ts +2 -2
- package/dist/coordination/director.d.ts +12 -0
- package/dist/coordination/dispatcher.d.ts +8 -0
- package/dist/coordination/fleet-bus.d.ts +35 -4
- package/dist/coordination/fleet-supervisor.d.ts +10 -2
- package/dist/coordination/fleet.d.ts +16 -7
- package/dist/coordination/index.d.ts +4 -0
- package/dist/coordination/index.js +402 -34324
- package/dist/coordination/kanban-dispatch-port.d.ts +2 -2
- package/dist/coordination/mailbox-http-router.d.ts +4 -3
- package/dist/coordination/mailbox-http-validation.d.ts +1 -1
- package/dist/coordination/mailbox-project-server.js +48 -3276
- package/dist/coordination/mailbox-types.d.ts +24 -6
- package/dist/coordination/model-tier-leader.d.ts +122 -0
- package/dist/coordination/model-tier.d.ts +122 -0
- package/dist/coordination/multi-agent-coordinator.d.ts +24 -0
- package/dist/coordination/origin-session.d.ts +16 -0
- package/dist/coordination/provider-status-tracker.d.ts +41 -5
- package/dist/coordination/session-note-hub.d.ts +44 -0
- package/dist/coordination/session-note-tool.d.ts +10 -0
- package/dist/core/agent.d.ts +15 -2
- package/dist/core/context.d.ts +22 -3
- package/dist/core/index.d.ts +2 -0
- package/dist/core/index.js +239 -12360
- package/dist/core/model-ref.js +5 -23
- package/dist/core/provider-runner.d.ts +36 -1
- package/dist/core/request-conversation-binding.d.ts +37 -0
- package/dist/core/session-notes.d.ts +25 -0
- package/dist/core/system-prompt-builder.d.ts +11 -2
- package/dist/core/system-prompt-variants.d.ts +78 -0
- package/dist/design/index.js +50 -1087
- package/dist/execution/auto-compaction-middleware.d.ts +11 -0
- package/dist/execution/autonomy-brain.d.ts +2 -1
- package/dist/execution/autonomy-prompt-contributor.d.ts +7 -2
- package/dist/execution/compaction-core.d.ts +4 -4
- package/dist/execution/eternal-autonomy.d.ts +1 -1
- package/dist/execution/index.d.ts +1 -1
- package/dist/execution/index.js +1615 -21895
- package/dist/execution/model-runtime.d.ts +0 -7
- package/dist/execution/parallel-eternal-engine.d.ts +7 -7
- package/dist/execution/prompt-enhancer.js +16 -535
- package/dist/execution/retry-policy.d.ts +31 -1
- package/dist/extension/index.js +7 -311
- package/dist/goal/index.js +33 -3435
- package/dist/hooks/index.js +14 -1138
- package/dist/hq/index.js +114 -5139
- package/dist/hq/persistence/event-log.d.ts +0 -1
- package/dist/hq/persistence.d.ts +4 -4
- package/dist/hq/protocol.js +21 -668
- package/dist/hq/publisher.d.ts +2 -0
- package/dist/index.d.ts +14 -11
- package/dist/index.js +1502 -92655
- package/dist/infrastructure/index.d.ts +4 -4
- package/dist/infrastructure/index.js +504 -5230
- package/dist/infrastructure/token-counter.d.ts +9 -0
- package/dist/kernel/events/agent-events.d.ts +77 -3
- package/dist/kernel/events/brain-events.d.ts +12 -0
- package/dist/kernel/events/provider-events.d.ts +22 -1
- package/dist/kernel/events/session-events.d.ts +14 -0
- package/dist/kernel/events/tool-events.d.ts +13 -0
- package/dist/kernel/index.js +14 -992
- package/dist/mailbox-attach.d.ts +1 -1
- package/dist/models/index.js +41 -1117
- package/dist/notifications/index.js +3 -108
- package/dist/observability/event-bridge.d.ts +25 -5
- package/dist/observability/index.d.ts +9 -8
- package/dist/observability/index.js +477 -631
- package/dist/observability/tool-usage-source.d.ts +65 -0
- package/dist/plugin/index.d.ts +5 -0
- package/dist/plugin/index.js +600 -14835
- package/dist/plugins/auto-review-plugin.d.ts +3 -2
- package/dist/plugins/review-finding-commands.d.ts +0 -8
- package/dist/plugins/review-finding-store.js +22 -0
- package/dist/plugins/review-finding-types.js +19 -0
- package/dist/plugins/review-report-integration.js +21 -0
- package/dist/plugins/review-report-store.js +20 -0
- package/dist/plugins/review-report-types.js +13 -0
- package/dist/prompts/index.js +14 -948
- package/dist/registry/index.js +9 -822
- package/dist/registry/tool-registry.d.ts +59 -9
- package/dist/registry-7N4O3E7W.js +14 -0
- package/dist/replay/index.js +6 -84
- package/dist/security/capabilities.d.ts +6 -0
- package/dist/security/file-permissions.d.ts +1 -1
- package/dist/security/index.js +161 -2235
- package/dist/security/permission-policy.d.ts +12 -1
- package/dist/security/secret-scrubber.d.ts +15 -0
- package/dist/session-catalog/index.d.ts +1 -0
- package/dist/session-catalog/index.js +41 -2103
- package/dist/session-catalog/project-server.js +59 -1435
- package/dist/session-catalog/protocol.d.ts +32 -1
- package/dist/session-catalog/registry.d.ts +17 -1
- package/dist/session-catalog/session-agents.d.ts +56 -0
- package/dist/session-catalog/store-rebuild.d.ts +14 -0
- package/dist/session-catalog/store-schema.d.ts +26 -0
- package/dist/session-catalog/store.d.ts +27 -1
- package/dist/session-note-attach.d.ts +9 -0
- package/dist/skills/index.js +35 -1578
- package/dist/statusline/index.d.ts +43 -0
- package/dist/statusline/index.js +102 -0
- package/dist/storage/board-store-port.d.ts +2 -2
- package/dist/storage/config-loader/in-project-policy.d.ts +29 -0
- package/dist/storage/config-loader.d.ts +3 -2
- package/dist/storage/file-session-writer.d.ts +4 -2
- package/dist/storage/goal-coordination.d.ts +6 -1
- package/dist/storage/goal-kanban.d.ts +4 -1
- package/dist/storage/index.d.ts +12 -4
- package/dist/storage/index.js +198 -15601
- package/dist/storage/input-history-store.d.ts +2 -4
- package/dist/storage/memory-curator.d.ts +133 -0
- package/dist/storage/session-agent-attribution.d.ts +39 -0
- package/dist/storage/session-doctor.d.ts +109 -0
- package/dist/storage/session-event-bridge.d.ts +5 -7
- package/dist/storage/session-outcome.d.ts +42 -0
- package/dist/storage/session-recovery.d.ts +55 -0
- package/dist/storage/session-store/load-session-data.d.ts +11 -0
- package/dist/storage/session-store/prune-helpers.d.ts +1 -1
- package/dist/storage/session-store/resume-session.d.ts +0 -2
- package/dist/storage/session-store/types.d.ts +8 -0
- package/dist/storage/session-store.d.ts +3 -3
- package/dist/storage/session-summary-tracker.d.ts +8 -1
- package/dist/storage/session-write-buffer.d.ts +18 -0
- package/dist/storage/session-writer-truncate.d.ts +2 -0
- package/dist/tasking/index.js +10 -676
- package/dist/tools/fallback-manage-tools.d.ts +6 -4
- package/dist/tools/index.js +52 -9590
- package/dist/tools/model-tier-set-tool.d.ts +66 -0
- package/dist/types/agent-bridge.d.ts +2 -1
- package/dist/types/config/autonomy.d.ts +5 -0
- package/dist/types/config/mcp-features.d.ts +7 -0
- package/dist/types/config/model-tiers.d.ts +148 -0
- package/dist/types/config/root.d.ts +9 -0
- package/dist/types/config/tools.d.ts +73 -0
- package/dist/types/config/ui.d.ts +1 -1
- package/dist/types/config.d.ts +1 -0
- package/dist/types/context.d.ts +2 -0
- package/dist/types/default-config.d.ts +6 -0
- package/dist/types/errors.d.ts +20 -1
- package/dist/types/index.d.ts +11 -9
- package/dist/types/index.js +131 -1342
- package/dist/types/multi-agent.d.ts +43 -0
- package/dist/types/plugin.d.ts +1 -1
- package/dist/types/provider-runner.d.ts +8 -0
- package/dist/types/provider.d.ts +15 -0
- package/dist/types/runtime-capability-manifest.d.ts +1 -1
- package/dist/types/secret-scrubber.d.ts +15 -0
- package/dist/types/session-markers.d.ts +37 -10
- package/dist/types/session-markers.js +8 -144
- package/dist/types/session-timeline.d.ts +197 -0
- package/dist/types/session-timeline.js +12 -0
- package/dist/types/session.d.ts +172 -11
- package/dist/types/system-prompt.d.ts +27 -0
- package/dist/utils/config-backup.d.ts +9 -1
- package/dist/utils/error.js +3 -4
- package/dist/utils/expect-defined.js +3 -9
- package/dist/utils/heap-watchdog.js +6 -706
- package/dist/utils/index.js +271 -5685
- package/dist/utils/message-invariants.d.ts +4 -1
- package/dist/utils/regex-guard.d.ts +1 -1
- package/dist/utils/sage-output-block.js +5 -42
- package/dist/utils/socket-path.d.ts +1 -1
- package/dist/utils/token-estimate.d.ts +6 -2
- package/dist/utils/wstack-paths.d.ts +2 -0
- package/dist/wiring/proxy-rewrite.d.ts +46 -0
- package/dist/wiring/proxy-rewrite.js +24 -121
- package/dist/worktree/index.js +6 -887
- package/instructions/agents/explore-companion.md +45 -18
- package/instructions/agents/memory-curator.md +34 -22
- package/instructions/coordination/director-preamble.md +12 -7
- package/instructions/coordination/subagent-baseline.md +26 -5
- package/instructions/leader-after-task.md +4 -1
- package/instructions/llm/chimera-review.md +30 -9
- package/instructions/llm/memory-curator.md +31 -0
- package/instructions/sections/tool/delegation-compact.md +2 -0
- package/instructions/sections/tool/delegation-full.md +5 -1
- package/instructions/sections/tool/mailbox-compact.md +5 -1
- package/instructions/sections/tool/mailbox-full.md +3 -0
- package/instructions/sections/tool/session-note-compact.md +3 -0
- package/instructions/sections/tool/session-note-full.md +15 -0
- package/instructions/system-lite.md +9 -4
- package/instructions/system-pro.md +66 -143
- package/instructions/system.md +73 -175
- package/package.json +32 -4
- package/dist/coordination/agents.d.ts +0 -8
- package/dist/coordination/transport.d.ts +0 -2
- package/dist/storage/session-writer/session-writer-summary-tracker.d.ts +0 -28
|
@@ -0,0 +1,227 @@
|
|
|
1
|
+
import {
|
|
2
|
+
color,
|
|
3
|
+
writeErr
|
|
4
|
+
} from "./chunk-4VWO3ZXL.js";
|
|
5
|
+
|
|
6
|
+
// src/infrastructure/logger.ts
|
|
7
|
+
import * as fsp from "node:fs/promises";
|
|
8
|
+
import * as path from "node:path";
|
|
9
|
+
var LEVEL_RANK = {
|
|
10
|
+
error: 0,
|
|
11
|
+
warn: 1,
|
|
12
|
+
info: 2,
|
|
13
|
+
debug: 3,
|
|
14
|
+
trace: 4
|
|
15
|
+
};
|
|
16
|
+
var COLORS = {
|
|
17
|
+
error: color.red,
|
|
18
|
+
warn: color.yellow,
|
|
19
|
+
info: color.cyan,
|
|
20
|
+
debug: color.gray,
|
|
21
|
+
trace: color.dim
|
|
22
|
+
};
|
|
23
|
+
var LOG_LEVELS = /* @__PURE__ */ new Set(["error", "warn", "info", "debug", "trace"]);
|
|
24
|
+
var LOG_FORMATS = /* @__PURE__ */ new Set(["pretty", "json"]);
|
|
25
|
+
var DefaultLogger = class _DefaultLogger {
|
|
26
|
+
/** How many file writes between rotation size checks (statSync is not free). */
|
|
27
|
+
static ROTATE_CHECK_EVERY = 100;
|
|
28
|
+
static MAX_PENDING_FILE_WRITES = 2e3;
|
|
29
|
+
static MAX_PENDING_FILE_BYTES = 8 * 1024 * 1024;
|
|
30
|
+
level;
|
|
31
|
+
file;
|
|
32
|
+
bindings;
|
|
33
|
+
format;
|
|
34
|
+
stderr;
|
|
35
|
+
maxFileBytes;
|
|
36
|
+
writesSinceRotateCheck = 0;
|
|
37
|
+
/**
|
|
38
|
+
* Serialized async tail for file writes. Every appendFile (and any
|
|
39
|
+
* chained rotation) is awaited through this promise so file I/O
|
|
40
|
+
* never overlaps itself — preserving the per-line ordering the
|
|
41
|
+
* sync version had, but without blocking the caller thread. Any
|
|
42
|
+
* rejection is swallowed (`catch(() => {})`) because logging must
|
|
43
|
+
* never crash the host.
|
|
44
|
+
*
|
|
45
|
+
* Children share the parent's tail: `child.tail === parent.tail`
|
|
46
|
+
* for the lifetime of the chain. Read/write access goes through
|
|
47
|
+
* `_tail` so that, when a child has been wired to a parent, both
|
|
48
|
+
* `enqueueRotate` and `log` always observe the parent's current tail
|
|
49
|
+
* rather than a stale snapshot taken at `child()` time.
|
|
50
|
+
*/
|
|
51
|
+
tail = Promise.resolve();
|
|
52
|
+
parent = null;
|
|
53
|
+
pendingFileWrites = 0;
|
|
54
|
+
pendingFileBytes = 0;
|
|
55
|
+
get root() {
|
|
56
|
+
return this.parent ? this.parent.root : this;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Resolve the current tail. For the root logger this is the field;
|
|
60
|
+
* for a child logger we always read through the parent so that a
|
|
61
|
+
* child's appends land on the parent's most recent tail, and a
|
|
62
|
+
* parent's `flush()` waits for everything the child chained.
|
|
63
|
+
*/
|
|
64
|
+
get _tail() {
|
|
65
|
+
return this.parent ? this.parent._tail : this.tail;
|
|
66
|
+
}
|
|
67
|
+
set _tail(next) {
|
|
68
|
+
if (this.parent) this.parent.tail = next;
|
|
69
|
+
else this.tail = next;
|
|
70
|
+
}
|
|
71
|
+
constructor(opts = {}) {
|
|
72
|
+
this.level = opts.level ?? parseLogLevel(process.env.WRONGSTACK_LOG_LEVEL);
|
|
73
|
+
this.file = opts.file;
|
|
74
|
+
this.bindings = opts.bindings ?? {};
|
|
75
|
+
this.format = opts.format ?? parseLogFormat(process.env.WRONGSTACK_LOG_FORMAT);
|
|
76
|
+
this.stderr = opts.stderr !== false;
|
|
77
|
+
this.maxFileBytes = opts.maxFileBytes ?? 10 * 1024 * 1024;
|
|
78
|
+
if (this.file) {
|
|
79
|
+
const dir = path.dirname(this.file);
|
|
80
|
+
this._tail = this._tail.then(async () => {
|
|
81
|
+
await fsp.mkdir(dir, { recursive: true });
|
|
82
|
+
}).catch(() => void 0);
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
error(msg, ctx) {
|
|
86
|
+
this.log("error", msg, ctx);
|
|
87
|
+
}
|
|
88
|
+
warn(msg, ctx) {
|
|
89
|
+
this.log("warn", msg, ctx);
|
|
90
|
+
}
|
|
91
|
+
info(msg, ctx) {
|
|
92
|
+
this.log("info", msg, ctx);
|
|
93
|
+
}
|
|
94
|
+
debug(msg, ctx) {
|
|
95
|
+
this.log("debug", msg, ctx);
|
|
96
|
+
}
|
|
97
|
+
trace(msg, ctx) {
|
|
98
|
+
this.log("trace", msg, ctx);
|
|
99
|
+
}
|
|
100
|
+
child(bindings) {
|
|
101
|
+
const child = Object.create(_DefaultLogger.prototype);
|
|
102
|
+
child.level = this.level;
|
|
103
|
+
child.file = this.file;
|
|
104
|
+
child.bindings = { ...this.bindings, ...bindings };
|
|
105
|
+
child.format = this.format;
|
|
106
|
+
child.stderr = this.stderr;
|
|
107
|
+
child.maxFileBytes = this.maxFileBytes;
|
|
108
|
+
child.parent = this;
|
|
109
|
+
child.writesSinceRotateCheck = this.writesSinceRotateCheck;
|
|
110
|
+
return child;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Wait until all queued file writes (and any pending rotation) have
|
|
114
|
+
* completed. `log()` is fire-and-forget by design — the caller never
|
|
115
|
+
* blocks on disk — so tests, shutdown handlers, and processes that
|
|
116
|
+
* need a deterministic "everything is on disk now" guarantee should
|
|
117
|
+
* `await logger.flush()` before reading the file or exiting.
|
|
118
|
+
*/
|
|
119
|
+
flush() {
|
|
120
|
+
return this._tail;
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Size-based rotation: when the file outgrows `maxFileBytes`, rename it to
|
|
124
|
+
* `<file>.1` (dropping the previous `.1`) so the live file restarts empty.
|
|
125
|
+
* Checked on the first write and every ROTATE_CHECK_EVERY writes after.
|
|
126
|
+
* Best-effort: a rename can fail on Windows while another process holds
|
|
127
|
+
* the file — the next check retries. Multiple processes appending to the
|
|
128
|
+
* same log all run this check; whoever crosses the threshold first wins.
|
|
129
|
+
*
|
|
130
|
+
* Async: the rotation runs on the file-write tail (so its writes don't
|
|
131
|
+
* interleave with the next append), and the caller never blocks on a
|
|
132
|
+
* statSync / renameSync syscall on the hot log path.
|
|
133
|
+
*/
|
|
134
|
+
enqueueRotate(file) {
|
|
135
|
+
if (this.writesSinceRotateCheck++ % _DefaultLogger.ROTATE_CHECK_EVERY !== 0) return;
|
|
136
|
+
this._tail = this._tail.then(async () => {
|
|
137
|
+
let st;
|
|
138
|
+
try {
|
|
139
|
+
st = await fsp.stat(file);
|
|
140
|
+
} catch {
|
|
141
|
+
return;
|
|
142
|
+
}
|
|
143
|
+
if (st.size < this.maxFileBytes) return;
|
|
144
|
+
try {
|
|
145
|
+
await fsp.rm(`${file}.1`, { force: true });
|
|
146
|
+
await fsp.rename(file, `${file}.1`);
|
|
147
|
+
} catch {
|
|
148
|
+
}
|
|
149
|
+
}).catch(() => void 0);
|
|
150
|
+
}
|
|
151
|
+
log(level, msg, ctx) {
|
|
152
|
+
const r = LEVEL_RANK[level];
|
|
153
|
+
const allowed = LEVEL_RANK[this.level];
|
|
154
|
+
if (r > allowed) return;
|
|
155
|
+
const ts = (/* @__PURE__ */ new Date()).toISOString();
|
|
156
|
+
const entry = { ts, level, msg, ...this.bindings };
|
|
157
|
+
if (ctx !== void 0) {
|
|
158
|
+
entry.ctx = ctx instanceof Error ? { message: ctx.message, stack: ctx.stack } : ctx;
|
|
159
|
+
}
|
|
160
|
+
if (this.file) {
|
|
161
|
+
const line = `${JSON.stringify(entry)}
|
|
162
|
+
`;
|
|
163
|
+
const bytes = Buffer.byteLength(line, "utf8");
|
|
164
|
+
const root = this.root;
|
|
165
|
+
if (root.pendingFileWrites < _DefaultLogger.MAX_PENDING_FILE_WRITES && bytes <= _DefaultLogger.MAX_PENDING_FILE_BYTES && root.pendingFileBytes + bytes <= _DefaultLogger.MAX_PENDING_FILE_BYTES) {
|
|
166
|
+
root.pendingFileWrites += 1;
|
|
167
|
+
root.pendingFileBytes += bytes;
|
|
168
|
+
this.enqueueRotate(this.file);
|
|
169
|
+
this._tail = this._tail.then(() => fsp.appendFile(this.file, line, { mode: 384 })).catch(() => void 0).finally(() => {
|
|
170
|
+
root.pendingFileWrites = Math.max(0, root.pendingFileWrites - 1);
|
|
171
|
+
root.pendingFileBytes = Math.max(0, root.pendingFileBytes - bytes);
|
|
172
|
+
});
|
|
173
|
+
}
|
|
174
|
+
}
|
|
175
|
+
if (!this.stderr) return;
|
|
176
|
+
if (this.format === "json") {
|
|
177
|
+
writeErr(`${JSON.stringify(entry)}
|
|
178
|
+
`);
|
|
179
|
+
} else {
|
|
180
|
+
const head = `${color.dim(ts)} ${COLORS[level](level.toUpperCase().padEnd(5))} ${msg}`;
|
|
181
|
+
if (ctx !== void 0) {
|
|
182
|
+
writeErr(`${head} ${formatCtx(ctx)}
|
|
183
|
+
`);
|
|
184
|
+
} else {
|
|
185
|
+
writeErr(`${head}
|
|
186
|
+
`);
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
};
|
|
191
|
+
function parseLogLevel(raw) {
|
|
192
|
+
return raw && LOG_LEVELS.has(raw) ? raw : "info";
|
|
193
|
+
}
|
|
194
|
+
function parseLogFormat(raw) {
|
|
195
|
+
return raw && LOG_FORMATS.has(raw) ? raw : "pretty";
|
|
196
|
+
}
|
|
197
|
+
function formatCtx(ctx) {
|
|
198
|
+
if (ctx instanceof Error) return color.dim(ctx.message);
|
|
199
|
+
if (typeof ctx === "string") return color.dim(ctx);
|
|
200
|
+
try {
|
|
201
|
+
return color.dim(JSON.stringify(ctx));
|
|
202
|
+
} catch {
|
|
203
|
+
return color.dim(String(ctx));
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
var noOpLogger = {
|
|
207
|
+
// 'error' is the quietest level the Logger contract offers; the methods
|
|
208
|
+
// discard everything regardless, this only matters to level checks.
|
|
209
|
+
level: "error",
|
|
210
|
+
error: () => {
|
|
211
|
+
},
|
|
212
|
+
warn: () => {
|
|
213
|
+
},
|
|
214
|
+
info: () => {
|
|
215
|
+
},
|
|
216
|
+
debug: () => {
|
|
217
|
+
},
|
|
218
|
+
trace: () => {
|
|
219
|
+
},
|
|
220
|
+
child: () => noOpLogger
|
|
221
|
+
};
|
|
222
|
+
|
|
223
|
+
export {
|
|
224
|
+
DefaultLogger,
|
|
225
|
+
noOpLogger
|
|
226
|
+
};
|
|
227
|
+
//# sourceMappingURL=chunk-WBPVKEEE.js.map
|