@xopcai/xopcbot 0.1.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/README.md +132 -0
- package/README.zh-CN.md +130 -0
- package/dist/__tests__/core.test.d.ts +1 -0
- package/dist/__tests__/core.test.js +72 -0
- package/dist/__tests__/core.test.js.map +1 -0
- package/dist/agent/fallback/__tests__/index.test.d.ts +1 -0
- package/dist/agent/fallback/__tests__/index.test.js +111 -0
- package/dist/agent/fallback/__tests__/index.test.js.map +1 -0
- package/dist/agent/fallback/candidates.d.ts +23 -0
- package/dist/agent/fallback/candidates.js +62 -0
- package/dist/agent/fallback/candidates.js.map +1 -0
- package/dist/agent/fallback/error.d.ts +22 -0
- package/dist/agent/fallback/error.js +27 -0
- package/dist/agent/fallback/error.js.map +1 -0
- package/dist/agent/fallback/index.d.ts +6 -0
- package/dist/agent/fallback/index.js +5 -0
- package/dist/agent/fallback/index.js.map +1 -0
- package/dist/agent/fallback/reason.d.ts +7 -0
- package/dist/agent/fallback/reason.js +78 -0
- package/dist/agent/fallback/reason.js.map +1 -0
- package/dist/agent/fallback/runner.d.ts +22 -0
- package/dist/agent/fallback/runner.js +34 -0
- package/dist/agent/fallback/runner.js.map +1 -0
- package/dist/agent/helpers.d.ts +38 -0
- package/dist/agent/helpers.js +122 -0
- package/dist/agent/helpers.js.map +1 -0
- package/dist/agent/index.d.ts +7 -0
- package/dist/agent/index.js +7 -0
- package/dist/agent/index.js.map +1 -0
- package/dist/agent/memory/compaction.d.ts +63 -0
- package/dist/agent/memory/compaction.js +233 -0
- package/dist/agent/memory/compaction.js.map +1 -0
- package/dist/agent/memory/window.d.ts +29 -0
- package/dist/agent/memory/window.js +64 -0
- package/dist/agent/memory/window.js.map +1 -0
- package/dist/agent/model-manager.d.ts +80 -0
- package/dist/agent/model-manager.js +213 -0
- package/dist/agent/model-manager.js.map +1 -0
- package/dist/agent/prompt/heartbeat.d.ts +97 -0
- package/dist/agent/prompt/heartbeat.js +313 -0
- package/dist/agent/prompt/heartbeat.js.map +1 -0
- package/dist/agent/prompt/index.d.ts +65 -0
- package/dist/agent/prompt/index.js +215 -0
- package/dist/agent/prompt/index.js.map +1 -0
- package/dist/agent/prompt/memory/index.d.ts +37 -0
- package/dist/agent/prompt/memory/index.js +241 -0
- package/dist/agent/prompt/memory/index.js.map +1 -0
- package/dist/agent/prompt/modes.d.ts +44 -0
- package/dist/agent/prompt/modes.js +167 -0
- package/dist/agent/prompt/modes.js.map +1 -0
- package/dist/agent/prompt/safety.d.ts +88 -0
- package/dist/agent/prompt/safety.js +290 -0
- package/dist/agent/prompt/safety.js.map +1 -0
- package/dist/agent/service.d.ts +91 -0
- package/dist/agent/service.js +641 -0
- package/dist/agent/service.js.map +1 -0
- package/dist/agent/session-tracker.d.ts +73 -0
- package/dist/agent/session-tracker.js +137 -0
- package/dist/agent/session-tracker.js.map +1 -0
- package/dist/agent/skills/__tests__/test-framework.test.d.ts +4 -0
- package/dist/agent/skills/__tests__/test-framework.test.js +343 -0
- package/dist/agent/skills/__tests__/test-framework.test.js.map +1 -0
- package/dist/agent/skills/config.d.ts +58 -0
- package/dist/agent/skills/config.js +212 -0
- package/dist/agent/skills/config.js.map +1 -0
- package/dist/agent/skills/index.d.ts +25 -0
- package/dist/agent/skills/index.js +349 -0
- package/dist/agent/skills/index.js.map +1 -0
- package/dist/agent/skills/installer.d.ts +38 -0
- package/dist/agent/skills/installer.js +352 -0
- package/dist/agent/skills/installer.js.map +1 -0
- package/dist/agent/skills/scanner.d.ts +32 -0
- package/dist/agent/skills/scanner.js +265 -0
- package/dist/agent/skills/scanner.js.map +1 -0
- package/dist/agent/skills/test-framework.d.ts +107 -0
- package/dist/agent/skills/test-framework.js +607 -0
- package/dist/agent/skills/test-framework.js.map +1 -0
- package/dist/agent/skills/types.d.ts +181 -0
- package/dist/agent/skills/types.js +7 -0
- package/dist/agent/skills/types.js.map +1 -0
- package/dist/agent/skills/watcher.d.ts +37 -0
- package/dist/agent/skills/watcher.js +124 -0
- package/dist/agent/skills/watcher.js.map +1 -0
- package/dist/agent/tools/communication.d.ts +18 -0
- package/dist/agent/tools/communication.js +56 -0
- package/dist/agent/tools/communication.js.map +1 -0
- package/dist/agent/tools/edit-diff.d.ts +21 -0
- package/dist/agent/tools/edit-diff.js +69 -0
- package/dist/agent/tools/edit-diff.js.map +1 -0
- package/dist/agent/tools/edit.d.ts +13 -0
- package/dist/agent/tools/edit.js +65 -0
- package/dist/agent/tools/edit.js.map +1 -0
- package/dist/agent/tools/find.d.ts +24 -0
- package/dist/agent/tools/find.js +99 -0
- package/dist/agent/tools/find.js.map +1 -0
- package/dist/agent/tools/grep.d.ts +33 -0
- package/dist/agent/tools/grep.js +183 -0
- package/dist/agent/tools/grep.js.map +1 -0
- package/dist/agent/tools/index.d.ts +13 -0
- package/dist/agent/tools/index.js +18 -0
- package/dist/agent/tools/index.js.map +1 -0
- package/dist/agent/tools/list-dir.d.ts +6 -0
- package/dist/agent/tools/list-dir.js +37 -0
- package/dist/agent/tools/list-dir.js.map +1 -0
- package/dist/agent/tools/memory-tool.d.ts +14 -0
- package/dist/agent/tools/memory-tool.js +81 -0
- package/dist/agent/tools/memory-tool.js.map +1 -0
- package/dist/agent/tools/path-utils.d.ts +4 -0
- package/dist/agent/tools/path-utils.js +13 -0
- package/dist/agent/tools/path-utils.js.map +1 -0
- package/dist/agent/tools/read.d.ts +7 -0
- package/dist/agent/tools/read.js +47 -0
- package/dist/agent/tools/read.js.map +1 -0
- package/dist/agent/tools/send-media.d.ts +18 -0
- package/dist/agent/tools/send-media.js +104 -0
- package/dist/agent/tools/send-media.js.map +1 -0
- package/dist/agent/tools/shell.d.ts +13 -0
- package/dist/agent/tools/shell.js +114 -0
- package/dist/agent/tools/shell.js.map +1 -0
- package/dist/agent/tools/truncate.d.ts +36 -0
- package/dist/agent/tools/truncate.js +98 -0
- package/dist/agent/tools/truncate.js.map +1 -0
- package/dist/agent/tools/web.d.ts +14 -0
- package/dist/agent/tools/web.js +109 -0
- package/dist/agent/tools/web.js.map +1 -0
- package/dist/agent/tools/write.d.ts +7 -0
- package/dist/agent/tools/write.js +35 -0
- package/dist/agent/tools/write.js.map +1 -0
- package/dist/agent/types.d.ts +8 -0
- package/dist/agent/types.js +2 -0
- package/dist/agent/types.js.map +1 -0
- package/dist/agent/typing.d.ts +9 -0
- package/dist/agent/typing.js +32 -0
- package/dist/agent/typing.js.map +1 -0
- package/dist/auth/index.d.ts +12 -0
- package/dist/auth/index.js +14 -0
- package/dist/auth/index.js.map +1 -0
- package/dist/auth/oauth/anthropic.d.ts +7 -0
- package/dist/auth/oauth/anthropic.js +89 -0
- package/dist/auth/oauth/anthropic.js.map +1 -0
- package/dist/auth/oauth/github-copilot.d.ts +8 -0
- package/dist/auth/oauth/github-copilot.js +35 -0
- package/dist/auth/oauth/github-copilot.js.map +1 -0
- package/dist/auth/oauth/google-antigravity.d.ts +7 -0
- package/dist/auth/oauth/google-antigravity.js +27 -0
- package/dist/auth/oauth/google-antigravity.js.map +1 -0
- package/dist/auth/oauth/google-gemini-cli.d.ts +7 -0
- package/dist/auth/oauth/google-gemini-cli.js +28 -0
- package/dist/auth/oauth/google-gemini-cli.js.map +1 -0
- package/dist/auth/oauth/index.d.ts +14 -0
- package/dist/auth/oauth/index.js +15 -0
- package/dist/auth/oauth/index.js.map +1 -0
- package/dist/auth/oauth/kimi.d.ts +8 -0
- package/dist/auth/oauth/kimi.js +104 -0
- package/dist/auth/oauth/kimi.js.map +1 -0
- package/dist/auth/oauth/minimax.d.ts +8 -0
- package/dist/auth/oauth/minimax.js +109 -0
- package/dist/auth/oauth/minimax.js.map +1 -0
- package/dist/auth/oauth/openai-codex.d.ts +7 -0
- package/dist/auth/oauth/openai-codex.js +33 -0
- package/dist/auth/oauth/openai-codex.js.map +1 -0
- package/dist/auth/oauth/pkce.d.ts +8 -0
- package/dist/auth/oauth/pkce.js +22 -0
- package/dist/auth/oauth/pkce.js.map +1 -0
- package/dist/auth/oauth/qwen.d.ts +7 -0
- package/dist/auth/oauth/qwen.js +114 -0
- package/dist/auth/oauth/qwen.js.map +1 -0
- package/dist/auth/oauth/types.d.ts +46 -0
- package/dist/auth/oauth/types.js +7 -0
- package/dist/auth/oauth/types.js.map +1 -0
- package/dist/auth/profiles/index.d.ts +16 -0
- package/dist/auth/profiles/index.js +17 -0
- package/dist/auth/profiles/index.js.map +1 -0
- package/dist/auth/profiles/oauth.d.ts +12 -0
- package/dist/auth/profiles/oauth.js +106 -0
- package/dist/auth/profiles/oauth.js.map +1 -0
- package/dist/auth/profiles/order.d.ts +19 -0
- package/dist/auth/profiles/order.js +63 -0
- package/dist/auth/profiles/order.js.map +1 -0
- package/dist/auth/profiles/profiles.d.ts +27 -0
- package/dist/auth/profiles/profiles.js +110 -0
- package/dist/auth/profiles/profiles.js.map +1 -0
- package/dist/auth/profiles/store.d.ts +17 -0
- package/dist/auth/profiles/store.js +234 -0
- package/dist/auth/profiles/store.js.map +1 -0
- package/dist/auth/profiles/types.d.ts +64 -0
- package/dist/auth/profiles/types.js +7 -0
- package/dist/auth/profiles/types.js.map +1 -0
- package/dist/auth/profiles/usage.d.ts +24 -0
- package/dist/auth/profiles/usage.js +99 -0
- package/dist/auth/profiles/usage.js.map +1 -0
- package/dist/auth/storage.d.ts +99 -0
- package/dist/auth/storage.js +315 -0
- package/dist/auth/storage.js.map +1 -0
- package/dist/bus/index.d.ts +3 -0
- package/dist/bus/index.js +2 -0
- package/dist/bus/index.js.map +1 -0
- package/dist/bus/queue.d.ts +20 -0
- package/dist/bus/queue.js +57 -0
- package/dist/bus/queue.js.map +1 -0
- package/dist/channels/__tests__/access-control.test.d.ts +4 -0
- package/dist/channels/__tests__/access-control.test.js +310 -0
- package/dist/channels/__tests__/access-control.test.js.map +1 -0
- package/dist/channels/__tests__/draft-stream.test.d.ts +4 -0
- package/dist/channels/__tests__/draft-stream.test.js +243 -0
- package/dist/channels/__tests__/draft-stream.test.js.map +1 -0
- package/dist/channels/__tests__/format.test.d.ts +4 -0
- package/dist/channels/__tests__/format.test.js +146 -0
- package/dist/channels/__tests__/format.test.js.map +1 -0
- package/dist/channels/__tests__/manager.test.d.ts +6 -0
- package/dist/channels/__tests__/manager.test.js +34 -0
- package/dist/channels/__tests__/manager.test.js.map +1 -0
- package/dist/channels/__tests__/typing-controller.test.d.ts +4 -0
- package/dist/channels/__tests__/typing-controller.test.js +109 -0
- package/dist/channels/__tests__/typing-controller.test.js.map +1 -0
- package/dist/channels/__tests__/update-offset-store.test.d.ts +7 -0
- package/dist/channels/__tests__/update-offset-store.test.js +35 -0
- package/dist/channels/__tests__/update-offset-store.test.js.map +1 -0
- package/dist/channels/access-control.d.ts +93 -0
- package/dist/channels/access-control.js +201 -0
- package/dist/channels/access-control.js.map +1 -0
- package/dist/channels/draft-stream.d.ts +55 -0
- package/dist/channels/draft-stream.js +211 -0
- package/dist/channels/draft-stream.js.map +1 -0
- package/dist/channels/format.d.ts +38 -0
- package/dist/channels/format.js +187 -0
- package/dist/channels/format.js.map +1 -0
- package/dist/channels/index.d.ts +22 -0
- package/dist/channels/index.js +23 -0
- package/dist/channels/index.js.map +1 -0
- package/dist/channels/manager.d.ts +30 -0
- package/dist/channels/manager.js +125 -0
- package/dist/channels/manager.js.map +1 -0
- package/dist/channels/telegram/__tests__/index.test.d.ts +4 -0
- package/dist/channels/telegram/__tests__/index.test.js +153 -0
- package/dist/channels/telegram/__tests__/index.test.js.map +1 -0
- package/dist/channels/telegram/__tests__/inline-keyboards.test.d.ts +4 -0
- package/dist/channels/telegram/__tests__/inline-keyboards.test.js +99 -0
- package/dist/channels/telegram/__tests__/inline-keyboards.test.js.map +1 -0
- package/dist/channels/telegram/client.d.ts +48 -0
- package/dist/channels/telegram/client.js +177 -0
- package/dist/channels/telegram/client.js.map +1 -0
- package/dist/channels/telegram/command-handler.d.ts +28 -0
- package/dist/channels/telegram/command-handler.js +209 -0
- package/dist/channels/telegram/command-handler.js.map +1 -0
- package/dist/channels/telegram/index.d.ts +8 -0
- package/dist/channels/telegram/index.js +9 -0
- package/dist/channels/telegram/index.js.map +1 -0
- package/dist/channels/telegram/inline-keyboards.d.ts +20 -0
- package/dist/channels/telegram/inline-keyboards.js +38 -0
- package/dist/channels/telegram/inline-keyboards.js.map +1 -0
- package/dist/channels/telegram/plugin.d.ts +33 -0
- package/dist/channels/telegram/plugin.js +640 -0
- package/dist/channels/telegram/plugin.js.map +1 -0
- package/dist/channels/telegram/webhook.d.ts +31 -0
- package/dist/channels/telegram/webhook.js +129 -0
- package/dist/channels/telegram/webhook.js.map +1 -0
- package/dist/channels/types.d.ts +186 -0
- package/dist/channels/types.js +7 -0
- package/dist/channels/types.js.map +1 -0
- package/dist/channels/typing-controller.d.ts +47 -0
- package/dist/channels/typing-controller.js +117 -0
- package/dist/channels/typing-controller.js.map +1 -0
- package/dist/channels/update-offset-store.d.ts +37 -0
- package/dist/channels/update-offset-store.js +165 -0
- package/dist/channels/update-offset-store.js.map +1 -0
- package/dist/channels/whatsapp/index.d.ts +4 -0
- package/dist/channels/whatsapp/index.js +5 -0
- package/dist/channels/whatsapp/index.js.map +1 -0
- package/dist/channels/whatsapp/plugin.d.ts +27 -0
- package/dist/channels/whatsapp/plugin.js +66 -0
- package/dist/channels/whatsapp/plugin.js.map +1 -0
- package/dist/cli/__tests__/registry.test.d.ts +1 -0
- package/dist/cli/__tests__/registry.test.js +366 -0
- package/dist/cli/__tests__/registry.test.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +1 -0
- package/dist/cli/commands/agent.js +216 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +6 -0
- package/dist/cli/commands/auth.js +440 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/config.d.ts +1 -0
- package/dist/cli/commands/config.js +135 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/configure.d.ts +1 -0
- package/dist/cli/commands/configure.js +173 -0
- package/dist/cli/commands/configure.js.map +1 -0
- package/dist/cli/commands/cron.d.ts +1 -0
- package/dist/cli/commands/cron.js +81 -0
- package/dist/cli/commands/cron.js.map +1 -0
- package/dist/cli/commands/gateway.d.ts +1 -0
- package/dist/cli/commands/gateway.js +91 -0
- package/dist/cli/commands/gateway.js.map +1 -0
- package/dist/cli/commands/index.d.ts +0 -0
- package/dist/cli/commands/index.js +2 -0
- package/dist/cli/commands/index.js.map +1 -0
- package/dist/cli/commands/models.d.ts +1 -0
- package/dist/cli/commands/models.js +79 -0
- package/dist/cli/commands/models.js.map +1 -0
- package/dist/cli/commands/onboard.d.ts +1 -0
- package/dist/cli/commands/onboard.js +621 -0
- package/dist/cli/commands/onboard.js.map +1 -0
- package/dist/cli/commands/plugin.d.ts +1 -0
- package/dist/cli/commands/plugin.js +341 -0
- package/dist/cli/commands/plugin.js.map +1 -0
- package/dist/cli/commands/session.d.ts +1 -0
- package/dist/cli/commands/session.js +450 -0
- package/dist/cli/commands/session.js.map +1 -0
- package/dist/cli/commands/skills-test.d.ts +9 -0
- package/dist/cli/commands/skills-test.js +195 -0
- package/dist/cli/commands/skills-test.js.map +1 -0
- package/dist/cli/commands/skills.d.ts +9 -0
- package/dist/cli/commands/skills.js +385 -0
- package/dist/cli/commands/skills.js.map +1 -0
- package/dist/cli/index.d.ts +19 -0
- package/dist/cli/index.js +40 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/registry.d.ts +43 -0
- package/dist/cli/registry.js +82 -0
- package/dist/cli/registry.js.map +1 -0
- package/dist/cli/templates.d.ts +19 -0
- package/dist/cli/templates.js +191 -0
- package/dist/cli/templates.js.map +1 -0
- package/dist/cli/utils/colors.d.ts +13 -0
- package/dist/cli/utils/colors.js +16 -0
- package/dist/cli/utils/colors.js.map +1 -0
- package/dist/config/__tests__/diff.test.d.ts +1 -0
- package/dist/config/__tests__/diff.test.js +192 -0
- package/dist/config/__tests__/diff.test.js.map +1 -0
- package/dist/config/__tests__/loader.test.d.ts +1 -0
- package/dist/config/__tests__/loader.test.js +356 -0
- package/dist/config/__tests__/loader.test.js.map +1 -0
- package/dist/config/__tests__/paths.test.d.ts +1 -0
- package/dist/config/__tests__/paths.test.js +192 -0
- package/dist/config/__tests__/paths.test.js.map +1 -0
- package/dist/config/__tests__/reload.test.d.ts +1 -0
- package/dist/config/__tests__/reload.test.js +374 -0
- package/dist/config/__tests__/reload.test.js.map +1 -0
- package/dist/config/__tests__/rules.test.d.ts +1 -0
- package/dist/config/__tests__/rules.test.js +204 -0
- package/dist/config/__tests__/rules.test.js.map +1 -0
- package/dist/config/__tests__/schema.test.d.ts +1 -0
- package/dist/config/__tests__/schema.test.js +672 -0
- package/dist/config/__tests__/schema.test.js.map +1 -0
- package/dist/config/diff.d.ts +7 -0
- package/dist/config/diff.js +46 -0
- package/dist/config/diff.js.map +1 -0
- package/dist/config/index.d.ts +6 -0
- package/dist/config/index.js +7 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/loader.d.ts +5 -0
- package/dist/config/loader.js +81 -0
- package/dist/config/loader.js.map +1 -0
- package/dist/config/paths.d.ts +35 -0
- package/dist/config/paths.js +79 -0
- package/dist/config/paths.js.map +1 -0
- package/dist/config/reload.d.ts +78 -0
- package/dist/config/reload.js +190 -0
- package/dist/config/reload.js.map +1 -0
- package/dist/config/rules.d.ts +42 -0
- package/dist/config/rules.js +114 -0
- package/dist/config/rules.js.map +1 -0
- package/dist/config/schema.d.ts +1340 -0
- package/dist/config/schema.js +611 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/cron/executor.d.ts +54 -0
- package/dist/cron/executor.js +364 -0
- package/dist/cron/executor.js.map +1 -0
- package/dist/cron/index.d.ts +5 -0
- package/dist/cron/index.js +6 -0
- package/dist/cron/index.js.map +1 -0
- package/dist/cron/persistence.d.ts +61 -0
- package/dist/cron/persistence.js +188 -0
- package/dist/cron/persistence.js.map +1 -0
- package/dist/cron/service.d.ts +94 -0
- package/dist/cron/service.js +382 -0
- package/dist/cron/service.js.map +1 -0
- package/dist/cron/types.d.ts +119 -0
- package/dist/cron/types.js +3 -0
- package/dist/cron/types.js.map +1 -0
- package/dist/cron/validation.d.ts +144 -0
- package/dist/cron/validation.js +113 -0
- package/dist/cron/validation.js.map +1 -0
- package/dist/errors/__tests__/index.test.d.ts +1 -0
- package/dist/errors/__tests__/index.test.js +301 -0
- package/dist/errors/__tests__/index.test.js.map +1 -0
- package/dist/errors/index.d.ts +114 -0
- package/dist/errors/index.js +278 -0
- package/dist/errors/index.js.map +1 -0
- package/dist/gateway/hono/app.d.ts +7 -0
- package/dist/gateway/hono/app.js +668 -0
- package/dist/gateway/hono/app.js.map +1 -0
- package/dist/gateway/hono/index.d.ts +2 -0
- package/dist/gateway/hono/index.js +3 -0
- package/dist/gateway/hono/index.js.map +1 -0
- package/dist/gateway/hono/middleware/auth.d.ts +18 -0
- package/dist/gateway/hono/middleware/auth.js +79 -0
- package/dist/gateway/hono/middleware/auth.js.map +1 -0
- package/dist/gateway/hono/middleware/logger.d.ts +1 -0
- package/dist/gateway/hono/middleware/logger.js +17 -0
- package/dist/gateway/hono/middleware/logger.js.map +1 -0
- package/dist/gateway/hono/sse.d.ts +55 -0
- package/dist/gateway/hono/sse.js +224 -0
- package/dist/gateway/hono/sse.js.map +1 -0
- package/dist/gateway/index.d.ts +4 -0
- package/dist/gateway/index.js +5 -0
- package/dist/gateway/index.js.map +1 -0
- package/dist/gateway/protocol.d.ts +28 -0
- package/dist/gateway/protocol.js +14 -0
- package/dist/gateway/protocol.js.map +1 -0
- package/dist/gateway/server.d.ts +19 -0
- package/dist/gateway/server.js +64 -0
- package/dist/gateway/server.js.map +1 -0
- package/dist/gateway/service.d.ts +265 -0
- package/dist/gateway/service.js +621 -0
- package/dist/gateway/service.js.map +1 -0
- package/dist/gateway/static/root/assets/main-CfIxL-cL.js +2105 -0
- package/dist/gateway/static/root/assets/main-CfIxL-cL.js.map +1 -0
- package/dist/gateway/static/root/assets/main-DndcTCgX.css +1 -0
- package/dist/gateway/static/root/index.html +116 -0
- package/dist/heartbeat/index.d.ts +1 -0
- package/dist/heartbeat/index.js +2 -0
- package/dist/heartbeat/index.js.map +1 -0
- package/dist/heartbeat/service.d.ts +19 -0
- package/dist/heartbeat/service.js +61 -0
- package/dist/heartbeat/service.js.map +1 -0
- package/dist/plugin-sdk/index.d.ts +21 -0
- package/dist/plugin-sdk/index.js +12 -0
- package/dist/plugin-sdk/index.js.map +1 -0
- package/dist/plugins/__tests__/api.test.d.ts +1 -0
- package/dist/plugins/__tests__/api.test.js +164 -0
- package/dist/plugins/__tests__/api.test.js.map +1 -0
- package/dist/plugins/__tests__/hooks.test.d.ts +1 -0
- package/dist/plugins/__tests__/hooks.test.js +159 -0
- package/dist/plugins/__tests__/hooks.test.js.map +1 -0
- package/dist/plugins/__tests__/loader.test.d.ts +1 -0
- package/dist/plugins/__tests__/loader.test.js +120 -0
- package/dist/plugins/__tests__/loader.test.js.map +1 -0
- package/dist/plugins/api.d.ts +41 -0
- package/dist/plugins/api.js +131 -0
- package/dist/plugins/api.js.map +1 -0
- package/dist/plugins/hooks.d.ts +153 -0
- package/dist/plugins/hooks.js +172 -0
- package/dist/plugins/hooks.js.map +1 -0
- package/dist/plugins/index.d.ts +11 -0
- package/dist/plugins/index.js +16 -0
- package/dist/plugins/index.js.map +1 -0
- package/dist/plugins/install.d.ts +59 -0
- package/dist/plugins/install.js +324 -0
- package/dist/plugins/install.js.map +1 -0
- package/dist/plugins/loader.d.ts +84 -0
- package/dist/plugins/loader.js +545 -0
- package/dist/plugins/loader.js.map +1 -0
- package/dist/plugins/types.d.ts +190 -0
- package/dist/plugins/types.js +7 -0
- package/dist/plugins/types.js.map +1 -0
- package/dist/providers/__tests__/registry.test.d.ts +1 -0
- package/dist/providers/__tests__/registry.test.js +110 -0
- package/dist/providers/__tests__/registry.test.js.map +1 -0
- package/dist/providers/api-strategies.d.ts +15 -0
- package/dist/providers/api-strategies.js +96 -0
- package/dist/providers/api-strategies.js.map +1 -0
- package/dist/providers/auto-discovery.d.ts +84 -0
- package/dist/providers/auto-discovery.js +236 -0
- package/dist/providers/auto-discovery.js.map +1 -0
- package/dist/providers/config.d.ts +25 -0
- package/dist/providers/config.js +42 -0
- package/dist/providers/config.js.map +1 -0
- package/dist/providers/index.d.ts +25 -0
- package/dist/providers/index.js +55 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/model-catalog.d.ts +205 -0
- package/dist/providers/model-catalog.js +1071 -0
- package/dist/providers/model-catalog.js.map +1 -0
- package/dist/providers/models-dev-data.d.ts +11 -0
- package/dist/providers/models-dev-data.js +1035 -0
- package/dist/providers/models-dev-data.js.map +1 -0
- package/dist/providers/models-dev.d.ts +30 -0
- package/dist/providers/models-dev.js +42 -0
- package/dist/providers/models-dev.js.map +1 -0
- package/dist/providers/pi-ai.d.ts +62 -0
- package/dist/providers/pi-ai.js +221 -0
- package/dist/providers/pi-ai.js.map +1 -0
- package/dist/providers/provider-catalog.d.ts +173 -0
- package/dist/providers/provider-catalog.js +834 -0
- package/dist/providers/provider-catalog.js.map +1 -0
- package/dist/providers/registry.d.ts +155 -0
- package/dist/providers/registry.js +524 -0
- package/dist/providers/registry.js.map +1 -0
- package/dist/providers/types.d.ts +95 -0
- package/dist/providers/types.js +7 -0
- package/dist/providers/types.js.map +1 -0
- package/dist/session/chat-manager.d.ts +49 -0
- package/dist/session/chat-manager.js +167 -0
- package/dist/session/chat-manager.js.map +1 -0
- package/dist/session/chat-types.d.ts +53 -0
- package/dist/session/chat-types.js +63 -0
- package/dist/session/chat-types.js.map +1 -0
- package/dist/session/index.d.ts +5 -0
- package/dist/session/index.js +5 -0
- package/dist/session/index.js.map +1 -0
- package/dist/session/manager.d.ts +103 -0
- package/dist/session/manager.js +200 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/session/store.d.ts +114 -0
- package/dist/session/store.js +687 -0
- package/dist/session/store.js.map +1 -0
- package/dist/session/types.d.ts +88 -0
- package/dist/session/types.js +10 -0
- package/dist/session/types.js.map +1 -0
- package/dist/types/index.d.ts +177 -0
- package/dist/types/index.js +4 -0
- package/dist/types/index.js.map +1 -0
- package/dist/types/providers.d.ts +67 -0
- package/dist/types/providers.js +7 -0
- package/dist/types/providers.js.map +1 -0
- package/dist/utils/frontmatter.d.ts +17 -0
- package/dist/utils/frontmatter.js +104 -0
- package/dist/utils/frontmatter.js.map +1 -0
- package/dist/utils/helpers.d.ts +5 -0
- package/dist/utils/helpers.js +36 -0
- package/dist/utils/helpers.js.map +1 -0
- package/dist/utils/index.d.ts +2 -0
- package/dist/utils/index.js +3 -0
- package/dist/utils/index.js.map +1 -0
- package/dist/utils/log-store.d.ts +78 -0
- package/dist/utils/log-store.js +432 -0
- package/dist/utils/log-store.js.map +1 -0
- package/dist/utils/logger.d.ts +127 -0
- package/dist/utils/logger.js +481 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/logger.types.d.ts +152 -0
- package/dist/utils/logger.types.js +30 -0
- package/dist/utils/logger.types.js.map +1 -0
- package/package.json +93 -0
|
@@ -0,0 +1,481 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger Module - Optimized Version
|
|
3
|
+
*
|
|
4
|
+
* Centralized logging system using pino with enhanced features:
|
|
5
|
+
* - Contextual logging with requestId/sessionId tracking
|
|
6
|
+
* - Log rotation with automatic cleanup
|
|
7
|
+
* - Sampling for high-frequency debug logs
|
|
8
|
+
* - Async logging with proper flush on shutdown
|
|
9
|
+
* - Unified configuration via XOPCBOT_* environment variables
|
|
10
|
+
*
|
|
11
|
+
* Log Levels (in order of severity):
|
|
12
|
+
* - trace: Most detailed, for development debugging only
|
|
13
|
+
* - debug: Detailed info for troubleshooting (supports sampling)
|
|
14
|
+
* - info: General operational events (startup, shutdown, major state changes)
|
|
15
|
+
* - warn: Unexpected but non-fatal issues
|
|
16
|
+
* - error: Errors that affect functionality
|
|
17
|
+
* - fatal: Critical errors that prevent operation
|
|
18
|
+
*/
|
|
19
|
+
import pino from 'pino';
|
|
20
|
+
import path from 'path';
|
|
21
|
+
import { fileURLToPath } from 'url';
|
|
22
|
+
import { existsSync, mkdirSync, createWriteStream, unlinkSync, readdirSync, statSync, readFileSync } from 'fs';
|
|
23
|
+
import { gzip } from 'zlib';
|
|
24
|
+
import { promisify } from 'util';
|
|
25
|
+
const __dirname = path.dirname(fileURLToPath(import.meta.url));
|
|
26
|
+
const compressAsync = promisify(gzip);
|
|
27
|
+
// ============================================
|
|
28
|
+
// Configuration
|
|
29
|
+
// ============================================
|
|
30
|
+
const DEFAULT_CONFIG = {
|
|
31
|
+
level: 'info',
|
|
32
|
+
logDir: path.join(process.env.HOME || '.', '.xopcbot', 'logs'),
|
|
33
|
+
consoleOutput: true,
|
|
34
|
+
fileOutput: true,
|
|
35
|
+
errorFileOutput: true,
|
|
36
|
+
retentionDays: 7,
|
|
37
|
+
maxFileSizeMB: 100,
|
|
38
|
+
prettyPrint: false,
|
|
39
|
+
async: true,
|
|
40
|
+
debugSampleRate: 1.0,
|
|
41
|
+
};
|
|
42
|
+
function loadConfig() {
|
|
43
|
+
const config = { ...DEFAULT_CONFIG };
|
|
44
|
+
// Log level - unified environment variable
|
|
45
|
+
const logLevel = process.env.XOPCBOT_LOG_LEVEL || process.env.LOG_LEVEL;
|
|
46
|
+
if (logLevel) {
|
|
47
|
+
config.level = logLevel.toLowerCase();
|
|
48
|
+
}
|
|
49
|
+
else if (process.env.DEBUG) {
|
|
50
|
+
config.level = 'debug';
|
|
51
|
+
}
|
|
52
|
+
// Log directory
|
|
53
|
+
if (process.env.XOPCBOT_LOG_DIR) {
|
|
54
|
+
config.logDir = process.env.XOPCBOT_LOG_DIR;
|
|
55
|
+
}
|
|
56
|
+
// Output options
|
|
57
|
+
if (process.env.XOPCBOT_LOG_CONSOLE === 'false') {
|
|
58
|
+
config.consoleOutput = false;
|
|
59
|
+
}
|
|
60
|
+
if (process.env.XOPCBOT_LOG_FILE === 'false') {
|
|
61
|
+
config.fileOutput = false;
|
|
62
|
+
}
|
|
63
|
+
// Retention
|
|
64
|
+
if (process.env.XOPCBOT_LOG_RETENTION_DAYS) {
|
|
65
|
+
config.retentionDays = parseInt(process.env.XOPCBOT_LOG_RETENTION_DAYS, 10);
|
|
66
|
+
}
|
|
67
|
+
// Pretty print for development
|
|
68
|
+
if (process.env.NODE_ENV === 'development' || process.env.XOPCBOT_PRETTY_LOGS === 'true') {
|
|
69
|
+
config.prettyPrint = true;
|
|
70
|
+
}
|
|
71
|
+
return config;
|
|
72
|
+
}
|
|
73
|
+
const config = loadConfig();
|
|
74
|
+
// Ensure log directory exists
|
|
75
|
+
if (!existsSync(config.logDir)) {
|
|
76
|
+
mkdirSync(config.logDir, { recursive: true });
|
|
77
|
+
}
|
|
78
|
+
// ============================================
|
|
79
|
+
// Log File Management
|
|
80
|
+
// ============================================
|
|
81
|
+
function getLogPath(type = 'app', date = new Date()) {
|
|
82
|
+
const dateStr = date.toISOString().split('T')[0];
|
|
83
|
+
return path.join(config.logDir, `${type}-${dateStr}.log`);
|
|
84
|
+
}
|
|
85
|
+
function getCompressedLogPath(originalPath) {
|
|
86
|
+
return `${originalPath}.gz`;
|
|
87
|
+
}
|
|
88
|
+
function createLogStream(filePath) {
|
|
89
|
+
return createWriteStream(filePath, { flags: 'a', encoding: 'utf-8' });
|
|
90
|
+
}
|
|
91
|
+
// Create streams
|
|
92
|
+
const streams = [];
|
|
93
|
+
if (config.consoleOutput) {
|
|
94
|
+
streams.push({
|
|
95
|
+
stream: process.stdout,
|
|
96
|
+
level: config.level,
|
|
97
|
+
});
|
|
98
|
+
}
|
|
99
|
+
if (config.fileOutput) {
|
|
100
|
+
streams.push({
|
|
101
|
+
stream: createLogStream(getLogPath('app')),
|
|
102
|
+
level: config.level,
|
|
103
|
+
});
|
|
104
|
+
}
|
|
105
|
+
if (config.errorFileOutput) {
|
|
106
|
+
streams.push({
|
|
107
|
+
stream: createLogStream(getLogPath('error')),
|
|
108
|
+
level: 'error',
|
|
109
|
+
});
|
|
110
|
+
}
|
|
111
|
+
// ============================================
|
|
112
|
+
// Custom Log Levels with Sampling
|
|
113
|
+
// ============================================
|
|
114
|
+
const customLevels = {
|
|
115
|
+
trace: 10,
|
|
116
|
+
debug: 20,
|
|
117
|
+
info: 30,
|
|
118
|
+
warn: 40,
|
|
119
|
+
error: 50,
|
|
120
|
+
fatal: 60,
|
|
121
|
+
};
|
|
122
|
+
// ============================================
|
|
123
|
+
// Base Logger Creation
|
|
124
|
+
// ============================================
|
|
125
|
+
const pinoOptions = {
|
|
126
|
+
level: config.level,
|
|
127
|
+
base: {
|
|
128
|
+
service: 'xopcbot',
|
|
129
|
+
version: process.env.npm_package_version || '0.1.0',
|
|
130
|
+
},
|
|
131
|
+
timestamp: pino.stdTimeFunctions.isoTime,
|
|
132
|
+
formatters: {
|
|
133
|
+
level: (label) => ({ level: label }),
|
|
134
|
+
bindings: (bindings) => ({
|
|
135
|
+
pid: bindings.pid,
|
|
136
|
+
host: bindings.host,
|
|
137
|
+
}),
|
|
138
|
+
},
|
|
139
|
+
customLevels,
|
|
140
|
+
};
|
|
141
|
+
// Add pretty print for development
|
|
142
|
+
if (config.prettyPrint) {
|
|
143
|
+
pinoOptions.transport = {
|
|
144
|
+
target: 'pino-pretty',
|
|
145
|
+
options: {
|
|
146
|
+
colorize: true,
|
|
147
|
+
translateTime: 'SYS:standard',
|
|
148
|
+
ignore: 'pid,host',
|
|
149
|
+
},
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
const baseLogger = pino(pinoOptions, pino.multistream(streams));
|
|
153
|
+
// ============================================
|
|
154
|
+
// Context Tracking
|
|
155
|
+
// ============================================
|
|
156
|
+
const contextStore = new Map();
|
|
157
|
+
function mergeContext(base, additional) {
|
|
158
|
+
return { ...base, ...additional };
|
|
159
|
+
}
|
|
160
|
+
function createProxyLogger(logger, defaultContext = {}) {
|
|
161
|
+
const contextRef = { current: defaultContext };
|
|
162
|
+
const proxy = new Proxy(logger, {
|
|
163
|
+
get(target, prop) {
|
|
164
|
+
const propKey = prop;
|
|
165
|
+
if (prop === 'withContext') {
|
|
166
|
+
return (context) => {
|
|
167
|
+
contextRef.current = mergeContext(contextRef.current, context);
|
|
168
|
+
return proxy;
|
|
169
|
+
};
|
|
170
|
+
}
|
|
171
|
+
if (prop === 'childContext') {
|
|
172
|
+
return (context) => {
|
|
173
|
+
const merged = mergeContext(contextRef.current, context);
|
|
174
|
+
const child = target.child({ ...merged });
|
|
175
|
+
return createProxyLogger(child, merged);
|
|
176
|
+
};
|
|
177
|
+
}
|
|
178
|
+
return target[propKey];
|
|
179
|
+
},
|
|
180
|
+
});
|
|
181
|
+
// Wrap logging methods to inject context
|
|
182
|
+
const wrappedLogger = proxy;
|
|
183
|
+
return wrappedLogger;
|
|
184
|
+
}
|
|
185
|
+
// ============================================
|
|
186
|
+
// Public API
|
|
187
|
+
// ============================================
|
|
188
|
+
export const logger = createProxyLogger(baseLogger);
|
|
189
|
+
export { pino as Pino };
|
|
190
|
+
/**
|
|
191
|
+
* Create a child logger with a specific prefix/context
|
|
192
|
+
*/
|
|
193
|
+
export function createLogger(prefix, context) {
|
|
194
|
+
const child = baseLogger.child({ prefix });
|
|
195
|
+
return createProxyLogger(child, { module: prefix, ...context });
|
|
196
|
+
}
|
|
197
|
+
/**
|
|
198
|
+
* Create a logger for a specific module/component
|
|
199
|
+
*/
|
|
200
|
+
export function createModuleLogger(moduleName, modulePath) {
|
|
201
|
+
const base = modulePath
|
|
202
|
+
? path.relative(path.join(__dirname, '..'), modulePath).replace(/\.ts$/, '')
|
|
203
|
+
: moduleName;
|
|
204
|
+
const child = baseLogger.child({ module: base });
|
|
205
|
+
return createProxyLogger(child, { module: base });
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Create a logger for plugins with consistent interface
|
|
209
|
+
*/
|
|
210
|
+
export function createPluginLogger(pluginName) {
|
|
211
|
+
const child = baseLogger.child({ plugin: pluginName });
|
|
212
|
+
return createProxyLogger(child, { plugin: pluginName });
|
|
213
|
+
}
|
|
214
|
+
/**
|
|
215
|
+
* Create a logger for cron services
|
|
216
|
+
*/
|
|
217
|
+
export function createServiceLogger(serviceId) {
|
|
218
|
+
const child = baseLogger.child({ service: 'cron', scope: serviceId });
|
|
219
|
+
return createProxyLogger(child, { service: 'cron', scope: serviceId });
|
|
220
|
+
}
|
|
221
|
+
/**
|
|
222
|
+
* Create a request-scoped logger with tracking ID
|
|
223
|
+
*/
|
|
224
|
+
export function createRequestLogger(requestId, initialContext) {
|
|
225
|
+
const context = { requestId, ...initialContext };
|
|
226
|
+
contextStore.set(requestId, context);
|
|
227
|
+
const child = baseLogger.child({ requestId });
|
|
228
|
+
const proxy = createProxyLogger(child, context);
|
|
229
|
+
return proxy;
|
|
230
|
+
}
|
|
231
|
+
/**
|
|
232
|
+
* Remove request context when done
|
|
233
|
+
*/
|
|
234
|
+
export function clearRequestContext(requestId) {
|
|
235
|
+
contextStore.delete(requestId);
|
|
236
|
+
}
|
|
237
|
+
/**
|
|
238
|
+
* Get context for a request ID
|
|
239
|
+
*/
|
|
240
|
+
export function getRequestContext(requestId) {
|
|
241
|
+
return contextStore.get(requestId);
|
|
242
|
+
}
|
|
243
|
+
export function setLogLevel(level) {
|
|
244
|
+
baseLogger.level = level;
|
|
245
|
+
}
|
|
246
|
+
export function getLogLevel() {
|
|
247
|
+
return baseLogger.level;
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Temporarily change log level for a block of code
|
|
251
|
+
*/
|
|
252
|
+
export function withLogLevel(level, fn) {
|
|
253
|
+
const previous = baseLogger.level;
|
|
254
|
+
baseLogger.level = level;
|
|
255
|
+
try {
|
|
256
|
+
return fn();
|
|
257
|
+
}
|
|
258
|
+
finally {
|
|
259
|
+
baseLogger.level = previous;
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
// ============================================
|
|
263
|
+
// Log Rotation
|
|
264
|
+
// ============================================
|
|
265
|
+
/**
|
|
266
|
+
* Rotate logs if they exceed max size
|
|
267
|
+
*/
|
|
268
|
+
export async function rotateLogs() {
|
|
269
|
+
const result = {
|
|
270
|
+
rotated: 0,
|
|
271
|
+
deleted: 0,
|
|
272
|
+
compressed: 0,
|
|
273
|
+
errors: [],
|
|
274
|
+
};
|
|
275
|
+
try {
|
|
276
|
+
const files = readdirSync(config.logDir);
|
|
277
|
+
const maxSizeBytes = config.maxFileSizeMB * 1024 * 1024;
|
|
278
|
+
for (const file of files) {
|
|
279
|
+
if (!file.endsWith('.log') || file.endsWith('.gz'))
|
|
280
|
+
continue;
|
|
281
|
+
const filePath = path.join(config.logDir, file);
|
|
282
|
+
const stats = statSync(filePath);
|
|
283
|
+
if (stats.size >= maxSizeBytes) {
|
|
284
|
+
// Rotate: compress and create new file
|
|
285
|
+
const compressedPath = getCompressedLogPath(filePath);
|
|
286
|
+
try {
|
|
287
|
+
const content = readFileSync(filePath);
|
|
288
|
+
const compressed = await compressAsync(content);
|
|
289
|
+
// Write compressed file
|
|
290
|
+
const { writeFile } = await import('fs/promises');
|
|
291
|
+
await writeFile(compressedPath, compressed);
|
|
292
|
+
unlinkSync(filePath);
|
|
293
|
+
result.compressed++;
|
|
294
|
+
result.rotated++;
|
|
295
|
+
}
|
|
296
|
+
catch (err) {
|
|
297
|
+
result.errors.push(`Failed to compress ${file}: ${err}`);
|
|
298
|
+
}
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
catch (err) {
|
|
303
|
+
result.errors.push(`Rotation failed: ${err}`);
|
|
304
|
+
}
|
|
305
|
+
return result;
|
|
306
|
+
}
|
|
307
|
+
/**
|
|
308
|
+
* Clean old logs based on retention policy
|
|
309
|
+
*/
|
|
310
|
+
export function cleanOldLogs(keepDays = config.retentionDays) {
|
|
311
|
+
const result = {
|
|
312
|
+
rotated: 0,
|
|
313
|
+
deleted: 0,
|
|
314
|
+
compressed: 0,
|
|
315
|
+
errors: [],
|
|
316
|
+
};
|
|
317
|
+
try {
|
|
318
|
+
const cutoff = new Date();
|
|
319
|
+
cutoff.setDate(cutoff.getDate() - keepDays);
|
|
320
|
+
const files = readdirSync(config.logDir);
|
|
321
|
+
for (const file of files) {
|
|
322
|
+
if (!file.endsWith('.log') && !file.endsWith('.log.gz'))
|
|
323
|
+
continue;
|
|
324
|
+
const filePath = path.join(config.logDir, file);
|
|
325
|
+
const stats = statSync(filePath);
|
|
326
|
+
if (new Date(stats.mtime) < cutoff) {
|
|
327
|
+
try {
|
|
328
|
+
unlinkSync(filePath);
|
|
329
|
+
result.deleted++;
|
|
330
|
+
}
|
|
331
|
+
catch (err) {
|
|
332
|
+
result.errors.push(`Failed to delete ${file}: ${err}`);
|
|
333
|
+
}
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
catch (err) {
|
|
338
|
+
result.errors.push(`Cleanup failed: ${err}`);
|
|
339
|
+
}
|
|
340
|
+
return result;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Get current log directory
|
|
344
|
+
*/
|
|
345
|
+
export function getLogDir() {
|
|
346
|
+
return config.logDir;
|
|
347
|
+
}
|
|
348
|
+
/**
|
|
349
|
+
* Get logger configuration
|
|
350
|
+
*/
|
|
351
|
+
export function getLoggerConfig() {
|
|
352
|
+
return { ...config };
|
|
353
|
+
}
|
|
354
|
+
// ============================================
|
|
355
|
+
// Graceful Shutdown
|
|
356
|
+
// ============================================
|
|
357
|
+
let shutdownHandler = null;
|
|
358
|
+
/**
|
|
359
|
+
* Register shutdown handler to flush logs
|
|
360
|
+
*/
|
|
361
|
+
export function registerShutdownHandler() {
|
|
362
|
+
if (shutdownHandler)
|
|
363
|
+
return;
|
|
364
|
+
shutdownHandler = async () => {
|
|
365
|
+
try {
|
|
366
|
+
// Flush any pending logs
|
|
367
|
+
await new Promise((resolve) => {
|
|
368
|
+
baseLogger.flush();
|
|
369
|
+
setTimeout(resolve, 100);
|
|
370
|
+
});
|
|
371
|
+
}
|
|
372
|
+
catch {
|
|
373
|
+
// Ignore flush errors on shutdown
|
|
374
|
+
}
|
|
375
|
+
};
|
|
376
|
+
process.on('SIGINT', shutdownHandler);
|
|
377
|
+
process.on('SIGTERM', shutdownHandler);
|
|
378
|
+
process.on('exit', () => {
|
|
379
|
+
if (shutdownHandler) {
|
|
380
|
+
shutdownHandler();
|
|
381
|
+
}
|
|
382
|
+
});
|
|
383
|
+
}
|
|
384
|
+
// Auto-register shutdown handler
|
|
385
|
+
registerShutdownHandler();
|
|
386
|
+
// ============================================
|
|
387
|
+
// Utilities
|
|
388
|
+
// ============================================
|
|
389
|
+
/**
|
|
390
|
+
* Check if a log level is enabled
|
|
391
|
+
*/
|
|
392
|
+
export function isLevelEnabled(level) {
|
|
393
|
+
const levelValue = {
|
|
394
|
+
trace: 10,
|
|
395
|
+
debug: 20,
|
|
396
|
+
info: 30,
|
|
397
|
+
warn: 40,
|
|
398
|
+
error: 50,
|
|
399
|
+
fatal: 60,
|
|
400
|
+
silent: Number.MAX_VALUE,
|
|
401
|
+
}[level];
|
|
402
|
+
const currentLevelValue = {
|
|
403
|
+
trace: 10,
|
|
404
|
+
debug: 20,
|
|
405
|
+
info: 30,
|
|
406
|
+
warn: 40,
|
|
407
|
+
error: 50,
|
|
408
|
+
fatal: 60,
|
|
409
|
+
silent: Number.MAX_VALUE,
|
|
410
|
+
}[getLogLevel()];
|
|
411
|
+
return levelValue >= currentLevelValue;
|
|
412
|
+
}
|
|
413
|
+
/**
|
|
414
|
+
* Log with sampling (for high-frequency debug logs)
|
|
415
|
+
*/
|
|
416
|
+
export function logWithSample(logger, level, sampleRate, message, data) {
|
|
417
|
+
if (Math.random() > sampleRate)
|
|
418
|
+
return;
|
|
419
|
+
switch (level) {
|
|
420
|
+
case 'trace':
|
|
421
|
+
logger.trace(data, message);
|
|
422
|
+
break;
|
|
423
|
+
case 'debug':
|
|
424
|
+
logger.debug(data, message);
|
|
425
|
+
break;
|
|
426
|
+
case 'info':
|
|
427
|
+
logger.info(data, message);
|
|
428
|
+
break;
|
|
429
|
+
case 'warn':
|
|
430
|
+
logger.warn(data, message);
|
|
431
|
+
break;
|
|
432
|
+
case 'error':
|
|
433
|
+
logger.error(data, message);
|
|
434
|
+
break;
|
|
435
|
+
case 'fatal':
|
|
436
|
+
logger.fatal(data, message);
|
|
437
|
+
break;
|
|
438
|
+
}
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Logging Best Practices:
|
|
442
|
+
*
|
|
443
|
+
* 1. TRACE (development only):
|
|
444
|
+
* - Function entry/exit with parameters
|
|
445
|
+
* - Variable values during execution
|
|
446
|
+
* - Loop iterations and detailed state
|
|
447
|
+
*
|
|
448
|
+
* 2. DEBUG:
|
|
449
|
+
* - Detailed troubleshooting information
|
|
450
|
+
* - Request/response payloads (sanitized)
|
|
451
|
+
* - State transitions and decisions
|
|
452
|
+
* - Use sampling for high-frequency logs
|
|
453
|
+
*
|
|
454
|
+
* 3. INFO (default level):
|
|
455
|
+
* - Service startup/shutdown
|
|
456
|
+
* - Major state transitions
|
|
457
|
+
* - Important business events
|
|
458
|
+
* - Configuration changes
|
|
459
|
+
* - User actions (login, logout, etc.)
|
|
460
|
+
*
|
|
461
|
+
* 4. WARN:
|
|
462
|
+
* - Deprecated feature usage
|
|
463
|
+
* - Recoverable errors with fallback
|
|
464
|
+
* - Performance degradation
|
|
465
|
+
* - Missing optional configuration
|
|
466
|
+
* - Rate limit approaching
|
|
467
|
+
*
|
|
468
|
+
* 5. ERROR:
|
|
469
|
+
* - Failed operations with impact
|
|
470
|
+
* - Unhandled exceptions
|
|
471
|
+
* - Data validation failures
|
|
472
|
+
* - External service failures
|
|
473
|
+
* - Always include error context
|
|
474
|
+
*
|
|
475
|
+
* 6. FATAL:
|
|
476
|
+
* - System cannot continue operating
|
|
477
|
+
* - Critical initialization failure
|
|
478
|
+
* - Data corruption detected
|
|
479
|
+
* - Requires immediate attention
|
|
480
|
+
*/
|
|
481
|
+
//# sourceMappingURL=logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../src/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger Types
|
|
3
|
+
*
|
|
4
|
+
* Centralized type definitions for the logging system.
|
|
5
|
+
*/
|
|
6
|
+
import type { Logger } from 'pino';
|
|
7
|
+
/**
|
|
8
|
+
* Basic log entry structure
|
|
9
|
+
*/
|
|
10
|
+
export interface LogEntry {
|
|
11
|
+
timestamp: string;
|
|
12
|
+
level: string;
|
|
13
|
+
message: string;
|
|
14
|
+
module?: string;
|
|
15
|
+
prefix?: string;
|
|
16
|
+
service?: string;
|
|
17
|
+
plugin?: string;
|
|
18
|
+
requestId?: string;
|
|
19
|
+
sessionId?: string;
|
|
20
|
+
userId?: string;
|
|
21
|
+
[key: string]: unknown;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Log levels in order of severity
|
|
25
|
+
*/
|
|
26
|
+
export declare const LogLevel: {
|
|
27
|
+
readonly TRACE: "trace";
|
|
28
|
+
readonly DEBUG: "debug";
|
|
29
|
+
readonly INFO: "info";
|
|
30
|
+
readonly WARN: "warn";
|
|
31
|
+
readonly ERROR: "error";
|
|
32
|
+
readonly FATAL: "fatal";
|
|
33
|
+
readonly SILENT: "silent";
|
|
34
|
+
};
|
|
35
|
+
export type LogLevel = typeof LogLevel[keyof typeof LogLevel];
|
|
36
|
+
/**
|
|
37
|
+
* Log level numeric values (for comparison)
|
|
38
|
+
*/
|
|
39
|
+
export declare const LogLevelValue: Record<LogLevel, number>;
|
|
40
|
+
/**
|
|
41
|
+
* Common log context fields
|
|
42
|
+
*/
|
|
43
|
+
export interface LogContext {
|
|
44
|
+
/** Request/operation ID for tracing */
|
|
45
|
+
requestId?: string;
|
|
46
|
+
/** Session ID for user tracking */
|
|
47
|
+
sessionId?: string;
|
|
48
|
+
/** User ID */
|
|
49
|
+
userId?: string;
|
|
50
|
+
/** Module/component name */
|
|
51
|
+
module?: string;
|
|
52
|
+
/** Plugin name */
|
|
53
|
+
plugin?: string;
|
|
54
|
+
/** Service name */
|
|
55
|
+
service?: string;
|
|
56
|
+
/** Additional context */
|
|
57
|
+
[key: string]: unknown;
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Extended logger with context support
|
|
61
|
+
*/
|
|
62
|
+
export interface ContextualLogger extends Logger {
|
|
63
|
+
/**
|
|
64
|
+
* Set default context for all subsequent logs
|
|
65
|
+
*/
|
|
66
|
+
withContext(context: LogContext): ContextualLogger;
|
|
67
|
+
/**
|
|
68
|
+
* Create a child logger with additional context
|
|
69
|
+
*/
|
|
70
|
+
childContext(context: LogContext): ContextualLogger;
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* Logger configuration options
|
|
74
|
+
*/
|
|
75
|
+
export interface LoggerConfig {
|
|
76
|
+
/** Minimum log level */
|
|
77
|
+
level: LogLevel;
|
|
78
|
+
/** Log directory */
|
|
79
|
+
logDir: string;
|
|
80
|
+
/** Enable console output */
|
|
81
|
+
consoleOutput: boolean;
|
|
82
|
+
/** Enable file output */
|
|
83
|
+
fileOutput: boolean;
|
|
84
|
+
/** Enable error-only file output */
|
|
85
|
+
errorFileOutput: boolean;
|
|
86
|
+
/** Log rotation: max days to keep */
|
|
87
|
+
retentionDays: number;
|
|
88
|
+
/** Log rotation: max file size in MB */
|
|
89
|
+
maxFileSizeMB: number;
|
|
90
|
+
/** Enable pretty print for console (dev only) */
|
|
91
|
+
prettyPrint: boolean;
|
|
92
|
+
/** Enable async logging */
|
|
93
|
+
async: boolean;
|
|
94
|
+
/** Sample rate for debug logs (0-1, 1 = all) */
|
|
95
|
+
debugSampleRate?: number;
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Log file metadata
|
|
99
|
+
*/
|
|
100
|
+
export interface LogFileMeta {
|
|
101
|
+
name: string;
|
|
102
|
+
path: string;
|
|
103
|
+
size: number;
|
|
104
|
+
created: string;
|
|
105
|
+
modified: string;
|
|
106
|
+
type: 'app' | 'error' | 'audit' | 'access';
|
|
107
|
+
lines?: number;
|
|
108
|
+
}
|
|
109
|
+
/**
|
|
110
|
+
* Log query options
|
|
111
|
+
*/
|
|
112
|
+
export interface LogQuery {
|
|
113
|
+
/** Filter by log levels */
|
|
114
|
+
levels?: LogLevel[];
|
|
115
|
+
/** Start timestamp (ISO 8601) */
|
|
116
|
+
from?: string;
|
|
117
|
+
/** End timestamp (ISO 8601) */
|
|
118
|
+
to?: string;
|
|
119
|
+
/** Keyword search */
|
|
120
|
+
q?: string;
|
|
121
|
+
/** Filter by module */
|
|
122
|
+
module?: string;
|
|
123
|
+
/** Filter by plugin */
|
|
124
|
+
plugin?: string;
|
|
125
|
+
/** Filter by service */
|
|
126
|
+
service?: string;
|
|
127
|
+
/** Filter by request ID */
|
|
128
|
+
requestId?: string;
|
|
129
|
+
/** Filter by session ID */
|
|
130
|
+
sessionId?: string;
|
|
131
|
+
/** Pagination offset */
|
|
132
|
+
offset?: number;
|
|
133
|
+
/** Pagination limit */
|
|
134
|
+
limit?: number;
|
|
135
|
+
/** Sort order: 'asc' | 'desc' */
|
|
136
|
+
order?: 'asc' | 'desc';
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Log statistics
|
|
140
|
+
*/
|
|
141
|
+
export interface LogStats {
|
|
142
|
+
byLevel: Record<LogLevel, number>;
|
|
143
|
+
}
|
|
144
|
+
/**
|
|
145
|
+
* Log rotation result
|
|
146
|
+
*/
|
|
147
|
+
export interface RotationResult {
|
|
148
|
+
rotated: number;
|
|
149
|
+
deleted: number;
|
|
150
|
+
compressed: number;
|
|
151
|
+
errors: string[];
|
|
152
|
+
}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Logger Types
|
|
3
|
+
*
|
|
4
|
+
* Centralized type definitions for the logging system.
|
|
5
|
+
*/
|
|
6
|
+
/**
|
|
7
|
+
* Log levels in order of severity
|
|
8
|
+
*/
|
|
9
|
+
export const LogLevel = {
|
|
10
|
+
TRACE: 'trace',
|
|
11
|
+
DEBUG: 'debug',
|
|
12
|
+
INFO: 'info',
|
|
13
|
+
WARN: 'warn',
|
|
14
|
+
ERROR: 'error',
|
|
15
|
+
FATAL: 'fatal',
|
|
16
|
+
SILENT: 'silent',
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Log level numeric values (for comparison)
|
|
20
|
+
*/
|
|
21
|
+
export const LogLevelValue = {
|
|
22
|
+
trace: 10,
|
|
23
|
+
debug: 20,
|
|
24
|
+
info: 30,
|
|
25
|
+
warn: 40,
|
|
26
|
+
error: 50,
|
|
27
|
+
fatal: 60,
|
|
28
|
+
silent: Number.MAX_VALUE,
|
|
29
|
+
};
|
|
30
|
+
//# sourceMappingURL=logger.types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"logger.types.js","sourceRoot":"","sources":["../../src/utils/logger.types.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAqBH;;GAEG;AACH,MAAM,CAAC,MAAM,QAAQ,GAAG;IACtB,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,IAAI,EAAE,MAAM;IACZ,IAAI,EAAE,MAAM;IACZ,KAAK,EAAE,OAAO;IACd,KAAK,EAAE,OAAO;IACd,MAAM,EAAE,QAAQ;CACR,CAAC;AAIX;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAA6B;IACrD,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,IAAI,EAAE,EAAE;IACR,IAAI,EAAE,EAAE;IACR,KAAK,EAAE,EAAE;IACT,KAAK,EAAE,EAAE;IACT,MAAM,EAAE,MAAM,CAAC,SAAS;CACzB,CAAC"}
|