@chozzz/vargos 2.0.3
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/.templates/vargos/agent/extensions/anthropic-custom-payload.patch.json +34 -0
- package/.templates/vargos/agent/extensions/anthropic-custom-payload.ts +74 -0
- package/.templates/vargos/agent/mcp.json +9 -0
- package/.templates/vargos/agent/skills/skill-creator/SKILL.md +77 -0
- package/.templates/vargos/agent/skills/token-capture/SKILL.md +33 -0
- package/.templates/vargos/agent/skills/token-capture/scripts/capture-bearer-token.sh +139 -0
- package/.templates/vargos/agents/README +5 -0
- package/.templates/vargos/agents/default.md +7 -0
- package/.templates/vargos/config.json +1 -0
- package/.templates/vargos/cron/heartbeat.md +11 -0
- package/.templates/vargos/workspace/AGENTS.md +70 -0
- package/.templates/vargos/workspace/HEARTBEAT.md +26 -0
- package/.templates/vargos/workspace/MEMORY.md +15 -0
- package/.templates/vargos/workspace/SOUL.md +51 -0
- package/.templates/vargos/workspace/TOOLS.md +36 -0
- package/CHANGELOG.md +23 -0
- package/CODE_OF_CONDUCT.md +47 -0
- package/CONTRIBUTING.md +65 -0
- package/LICENSE +191 -0
- package/README.md +117 -0
- package/SECURITY.md +30 -0
- package/dist/.templates/vargos/agent/extensions/anthropic-custom-payload.patch.json +34 -0
- package/dist/.templates/vargos/agent/extensions/anthropic-custom-payload.ts +74 -0
- package/dist/.templates/vargos/agent/mcp.json +9 -0
- package/dist/.templates/vargos/agent/skills/skill-creator/SKILL.md +77 -0
- package/dist/.templates/vargos/agent/skills/token-capture/SKILL.md +33 -0
- package/dist/.templates/vargos/agent/skills/token-capture/scripts/capture-bearer-token.sh +139 -0
- package/dist/.templates/vargos/agents/README +5 -0
- package/dist/.templates/vargos/agents/default.md +7 -0
- package/dist/.templates/vargos/config.json +1 -0
- package/dist/.templates/vargos/cron/heartbeat.md +11 -0
- package/dist/.templates/vargos/workspace/AGENTS.md +70 -0
- package/dist/.templates/vargos/workspace/HEARTBEAT.md +26 -0
- package/dist/.templates/vargos/workspace/MEMORY.md +15 -0
- package/dist/.templates/vargos/workspace/SOUL.md +51 -0
- package/dist/.templates/vargos/workspace/TOOLS.md +36 -0
- package/dist/cli/onboard.d.ts +10 -0
- package/dist/cli/onboard.d.ts.map +1 -0
- package/dist/cli/onboard.js +207 -0
- package/dist/cli/onboard.js.map +1 -0
- package/dist/cli.d.ts +13 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +118 -0
- package/dist/cli.js.map +1 -0
- package/dist/edge/mcp/index.d.ts +33 -0
- package/dist/edge/mcp/index.d.ts.map +1 -0
- package/dist/edge/mcp/index.js +217 -0
- package/dist/edge/mcp/index.js.map +1 -0
- package/dist/edge/webhooks/index.d.ts +33 -0
- package/dist/edge/webhooks/index.d.ts.map +1 -0
- package/dist/edge/webhooks/index.js +231 -0
- package/dist/edge/webhooks/index.js.map +1 -0
- package/dist/edge/webhooks/transform.d.ts +8 -0
- package/dist/edge/webhooks/transform.d.ts.map +1 -0
- package/dist/edge/webhooks/transform.js +29 -0
- package/dist/edge/webhooks/transform.js.map +1 -0
- package/dist/gateway/bus.d.ts +48 -0
- package/dist/gateway/bus.d.ts.map +1 -0
- package/dist/gateway/bus.js +2 -0
- package/dist/gateway/bus.js.map +1 -0
- package/dist/gateway/decorators.d.ts +40 -0
- package/dist/gateway/decorators.d.ts.map +1 -0
- package/dist/gateway/decorators.js +43 -0
- package/dist/gateway/decorators.js.map +1 -0
- package/dist/gateway/emitter.d.ts +42 -0
- package/dist/gateway/emitter.d.ts.map +1 -0
- package/dist/gateway/emitter.js +259 -0
- package/dist/gateway/emitter.js.map +1 -0
- package/dist/gateway/events.d.ts +343 -0
- package/dist/gateway/events.d.ts.map +1 -0
- package/dist/gateway/events.js +7 -0
- package/dist/gateway/events.js.map +1 -0
- package/dist/gateway/tcp-server.d.ts +7 -0
- package/dist/gateway/tcp-server.d.ts.map +1 -0
- package/dist/gateway/tcp-server.js +115 -0
- package/dist/gateway/tcp-server.js.map +1 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +74 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/async-handlers.d.ts +13 -0
- package/dist/lib/async-handlers.d.ts.map +1 -0
- package/dist/lib/async-handlers.js +6 -0
- package/dist/lib/async-handlers.js.map +1 -0
- package/dist/lib/error-store.d.ts +19 -0
- package/dist/lib/error-store.d.ts.map +1 -0
- package/dist/lib/error-store.js +19 -0
- package/dist/lib/error-store.js.map +1 -0
- package/dist/lib/error.d.ts +11 -0
- package/dist/lib/error.d.ts.map +1 -0
- package/dist/lib/error.js +41 -0
- package/dist/lib/error.js.map +1 -0
- package/dist/lib/frontmatter.d.ts +23 -0
- package/dist/lib/frontmatter.d.ts.map +1 -0
- package/dist/lib/frontmatter.js +136 -0
- package/dist/lib/frontmatter.js.map +1 -0
- package/dist/lib/glob.d.ts +14 -0
- package/dist/lib/glob.d.ts.map +1 -0
- package/dist/lib/glob.js +22 -0
- package/dist/lib/glob.js.map +1 -0
- package/dist/lib/heartbeat.d.ts +23 -0
- package/dist/lib/heartbeat.d.ts.map +1 -0
- package/dist/lib/heartbeat.js +62 -0
- package/dist/lib/heartbeat.js.map +1 -0
- package/dist/lib/html.d.ts +8 -0
- package/dist/lib/html.d.ts.map +1 -0
- package/dist/lib/html.js +28 -0
- package/dist/lib/html.js.map +1 -0
- package/dist/lib/http-validate.d.ts +12 -0
- package/dist/lib/http-validate.d.ts.map +1 -0
- package/dist/lib/http-validate.js +11 -0
- package/dist/lib/http-validate.js.map +1 -0
- package/dist/lib/id.d.ts +3 -0
- package/dist/lib/id.d.ts.map +1 -0
- package/dist/lib/id.js +5 -0
- package/dist/lib/id.js.map +1 -0
- package/dist/lib/logger.d.ts +12 -0
- package/dist/lib/logger.d.ts.map +1 -0
- package/dist/lib/logger.js +28 -0
- package/dist/lib/logger.js.map +1 -0
- package/dist/lib/media-transcribe.d.ts +57 -0
- package/dist/lib/media-transcribe.d.ts.map +1 -0
- package/dist/lib/media-transcribe.js +98 -0
- package/dist/lib/media-transcribe.js.map +1 -0
- package/dist/lib/media.d.ts +7 -0
- package/dist/lib/media.d.ts.map +1 -0
- package/dist/lib/media.js +18 -0
- package/dist/lib/media.js.map +1 -0
- package/dist/lib/mime.d.ts +6 -0
- package/dist/lib/mime.d.ts.map +1 -0
- package/dist/lib/mime.js +71 -0
- package/dist/lib/mime.js.map +1 -0
- package/dist/lib/paginate.d.ts +3 -0
- package/dist/lib/paginate.d.ts.map +1 -0
- package/dist/lib/paginate.js +5 -0
- package/dist/lib/paginate.js.map +1 -0
- package/dist/lib/paths.d.ts +14 -0
- package/dist/lib/paths.d.ts.map +1 -0
- package/dist/lib/paths.js +29 -0
- package/dist/lib/paths.js.map +1 -0
- package/dist/lib/provider-loader.d.ts +10 -0
- package/dist/lib/provider-loader.d.ts.map +1 -0
- package/dist/lib/provider-loader.js +24 -0
- package/dist/lib/provider-loader.js.map +1 -0
- package/dist/lib/retry.d.ts +20 -0
- package/dist/lib/retry.d.ts.map +1 -0
- package/dist/lib/retry.js +40 -0
- package/dist/lib/retry.js.map +1 -0
- package/dist/lib/safe-async.d.ts +27 -0
- package/dist/lib/safe-async.d.ts.map +1 -0
- package/dist/lib/safe-async.js +38 -0
- package/dist/lib/safe-async.js.map +1 -0
- package/dist/lib/skills.d.ts +9 -0
- package/dist/lib/skills.d.ts.map +1 -0
- package/dist/lib/skills.js +15 -0
- package/dist/lib/skills.js.map +1 -0
- package/dist/lib/sleep.d.ts +6 -0
- package/dist/lib/sleep.d.ts.map +1 -0
- package/dist/lib/sleep.js +22 -0
- package/dist/lib/sleep.js.map +1 -0
- package/dist/lib/strip-markdown.d.ts +7 -0
- package/dist/lib/strip-markdown.d.ts.map +1 -0
- package/dist/lib/strip-markdown.js +32 -0
- package/dist/lib/strip-markdown.js.map +1 -0
- package/dist/lib/subagent.d.ts +14 -0
- package/dist/lib/subagent.d.ts.map +1 -0
- package/dist/lib/subagent.js +25 -0
- package/dist/lib/subagent.js.map +1 -0
- package/dist/lib/templates.d.ts +8 -0
- package/dist/lib/templates.d.ts.map +1 -0
- package/dist/lib/templates.js +39 -0
- package/dist/lib/templates.js.map +1 -0
- package/dist/lib/timeout.d.ts +6 -0
- package/dist/lib/timeout.d.ts.map +1 -0
- package/dist/lib/timeout.js +11 -0
- package/dist/lib/timeout.js.map +1 -0
- package/dist/lib/truncate.d.ts +11 -0
- package/dist/lib/truncate.d.ts.map +1 -0
- package/dist/lib/truncate.js +17 -0
- package/dist/lib/truncate.js.map +1 -0
- package/dist/lib/url-expand.d.ts +22 -0
- package/dist/lib/url-expand.d.ts.map +1 -0
- package/dist/lib/url-expand.js +74 -0
- package/dist/lib/url-expand.js.map +1 -0
- package/dist/scripts/migrate-cron-sessions.d.ts +10 -0
- package/dist/scripts/migrate-cron-sessions.d.ts.map +1 -0
- package/dist/scripts/migrate-cron-sessions.js +139 -0
- package/dist/scripts/migrate-cron-sessions.js.map +1 -0
- package/dist/scripts/seed.d.ts +2 -0
- package/dist/scripts/seed.d.ts.map +1 -0
- package/dist/scripts/seed.js +4 -0
- package/dist/scripts/seed.js.map +1 -0
- package/dist/services/agent/directives.d.ts +14 -0
- package/dist/services/agent/directives.d.ts.map +1 -0
- package/dist/services/agent/directives.js +32 -0
- package/dist/services/agent/directives.js.map +1 -0
- package/dist/services/agent/index.d.ts +104 -0
- package/dist/services/agent/index.d.ts.map +1 -0
- package/dist/services/agent/index.js +534 -0
- package/dist/services/agent/index.js.map +1 -0
- package/dist/services/agent/persona.d.ts +15 -0
- package/dist/services/agent/persona.d.ts.map +1 -0
- package/dist/services/agent/persona.js +63 -0
- package/dist/services/agent/persona.js.map +1 -0
- package/dist/services/agent/prompt-interpolate.d.ts +41 -0
- package/dist/services/agent/prompt-interpolate.d.ts.map +1 -0
- package/dist/services/agent/prompt-interpolate.js +102 -0
- package/dist/services/agent/prompt-interpolate.js.map +1 -0
- package/dist/services/agent/schema.d.ts +10 -0
- package/dist/services/agent/schema.d.ts.map +1 -0
- package/dist/services/agent/schema.js +5 -0
- package/dist/services/agent/schema.js.map +1 -0
- package/dist/services/agent/tools.d.ts +26 -0
- package/dist/services/agent/tools.d.ts.map +1 -0
- package/dist/services/agent/tools.js +85 -0
- package/dist/services/agent/tools.js.map +1 -0
- package/dist/services/channels/base-adapter.d.ts +61 -0
- package/dist/services/channels/base-adapter.d.ts.map +1 -0
- package/dist/services/channels/base-adapter.js +181 -0
- package/dist/services/channels/base-adapter.js.map +1 -0
- package/dist/services/channels/contracts.d.ts +75 -0
- package/dist/services/channels/contracts.d.ts.map +1 -0
- package/dist/services/channels/contracts.js +6 -0
- package/dist/services/channels/contracts.js.map +1 -0
- package/dist/services/channels/debounce.d.ts +22 -0
- package/dist/services/channels/debounce.d.ts.map +1 -0
- package/dist/services/channels/debounce.js +53 -0
- package/dist/services/channels/debounce.js.map +1 -0
- package/dist/services/channels/dedupe.d.ts +19 -0
- package/dist/services/channels/dedupe.d.ts.map +1 -0
- package/dist/services/channels/dedupe.js +52 -0
- package/dist/services/channels/dedupe.js.map +1 -0
- package/dist/services/channels/delivery.d.ts +12 -0
- package/dist/services/channels/delivery.d.ts.map +1 -0
- package/dist/services/channels/delivery.js +53 -0
- package/dist/services/channels/delivery.js.map +1 -0
- package/dist/services/channels/index.d.ts +53 -0
- package/dist/services/channels/index.d.ts.map +1 -0
- package/dist/services/channels/index.js +405 -0
- package/dist/services/channels/index.js.map +1 -0
- package/dist/services/channels/link-expand.d.ts +8 -0
- package/dist/services/channels/link-expand.d.ts.map +1 -0
- package/dist/services/channels/link-expand.js +28 -0
- package/dist/services/channels/link-expand.js.map +1 -0
- package/dist/services/channels/media-extract.d.ts +7 -0
- package/dist/services/channels/media-extract.d.ts.map +1 -0
- package/dist/services/channels/media-extract.js +31 -0
- package/dist/services/channels/media-extract.js.map +1 -0
- package/dist/services/channels/pipeline.d.ts +29 -0
- package/dist/services/channels/pipeline.d.ts.map +1 -0
- package/dist/services/channels/pipeline.js +120 -0
- package/dist/services/channels/pipeline.js.map +1 -0
- package/dist/services/channels/provider-loader.d.ts +7 -0
- package/dist/services/channels/provider-loader.d.ts.map +1 -0
- package/dist/services/channels/provider-loader.js +13 -0
- package/dist/services/channels/provider-loader.js.map +1 -0
- package/dist/services/channels/providers/telegram/adapter.d.ts +34 -0
- package/dist/services/channels/providers/telegram/adapter.d.ts.map +1 -0
- package/dist/services/channels/providers/telegram/adapter.js +278 -0
- package/dist/services/channels/providers/telegram/adapter.js.map +1 -0
- package/dist/services/channels/providers/telegram/index.d.ts +11 -0
- package/dist/services/channels/providers/telegram/index.d.ts.map +1 -0
- package/dist/services/channels/providers/telegram/index.js +11 -0
- package/dist/services/channels/providers/telegram/index.js.map +1 -0
- package/dist/services/channels/providers/telegram/normalizer.d.ts +12 -0
- package/dist/services/channels/providers/telegram/normalizer.d.ts.map +1 -0
- package/dist/services/channels/providers/telegram/normalizer.js +50 -0
- package/dist/services/channels/providers/telegram/normalizer.js.map +1 -0
- package/dist/services/channels/providers/telegram/types.d.ts +72 -0
- package/dist/services/channels/providers/telegram/types.d.ts.map +1 -0
- package/dist/services/channels/providers/telegram/types.js +3 -0
- package/dist/services/channels/providers/telegram/types.js.map +1 -0
- package/dist/services/channels/providers/whatsapp/adapter.d.ts +36 -0
- package/dist/services/channels/providers/whatsapp/adapter.d.ts.map +1 -0
- package/dist/services/channels/providers/whatsapp/adapter.js +261 -0
- package/dist/services/channels/providers/whatsapp/adapter.js.map +1 -0
- package/dist/services/channels/providers/whatsapp/index.d.ts +11 -0
- package/dist/services/channels/providers/whatsapp/index.d.ts.map +1 -0
- package/dist/services/channels/providers/whatsapp/index.js +11 -0
- package/dist/services/channels/providers/whatsapp/index.js.map +1 -0
- package/dist/services/channels/providers/whatsapp/normalizer.d.ts +11 -0
- package/dist/services/channels/providers/whatsapp/normalizer.d.ts.map +1 -0
- package/dist/services/channels/providers/whatsapp/normalizer.js +47 -0
- package/dist/services/channels/providers/whatsapp/normalizer.js.map +1 -0
- package/dist/services/channels/providers/whatsapp/session.d.ts +9 -0
- package/dist/services/channels/providers/whatsapp/session.d.ts.map +1 -0
- package/dist/services/channels/providers/whatsapp/session.js +118 -0
- package/dist/services/channels/providers/whatsapp/session.js.map +1 -0
- package/dist/services/channels/providers/whatsapp/types.d.ts +23 -0
- package/dist/services/channels/providers/whatsapp/types.d.ts.map +1 -0
- package/dist/services/channels/providers/whatsapp/types.js +3 -0
- package/dist/services/channels/providers/whatsapp/types.js.map +1 -0
- package/dist/services/channels/reconnect.d.ts +23 -0
- package/dist/services/channels/reconnect.d.ts.map +1 -0
- package/dist/services/channels/reconnect.js +32 -0
- package/dist/services/channels/reconnect.js.map +1 -0
- package/dist/services/channels/status-reactions.d.ts +27 -0
- package/dist/services/channels/status-reactions.d.ts.map +1 -0
- package/dist/services/channels/status-reactions.js +63 -0
- package/dist/services/channels/status-reactions.js.map +1 -0
- package/dist/services/channels/types.d.ts +16 -0
- package/dist/services/channels/types.d.ts.map +1 -0
- package/dist/services/channels/types.js +2 -0
- package/dist/services/channels/types.js.map +1 -0
- package/dist/services/channels/typing-state.d.ts +22 -0
- package/dist/services/channels/typing-state.d.ts.map +1 -0
- package/dist/services/channels/typing-state.js +88 -0
- package/dist/services/channels/typing-state.js.map +1 -0
- package/dist/services/config/index.d.ts +2426 -0
- package/dist/services/config/index.d.ts.map +1 -0
- package/dist/services/config/index.js +232 -0
- package/dist/services/config/index.js.map +1 -0
- package/dist/services/config/schemas/agent.d.ts +720 -0
- package/dist/services/config/schemas/agent.d.ts.map +1 -0
- package/dist/services/config/schemas/agent.js +86 -0
- package/dist/services/config/schemas/agent.js.map +1 -0
- package/dist/services/config/schemas/auth.d.ts +60 -0
- package/dist/services/config/schemas/auth.d.ts.map +1 -0
- package/dist/services/config/schemas/auth.js +18 -0
- package/dist/services/config/schemas/auth.js.map +1 -0
- package/dist/services/config/schemas/channels.d.ts +117 -0
- package/dist/services/config/schemas/channels.d.ts.map +1 -0
- package/dist/services/config/schemas/channels.js +22 -0
- package/dist/services/config/schemas/channels.js.map +1 -0
- package/dist/services/config/schemas/cron.d.ts +97 -0
- package/dist/services/config/schemas/cron.d.ts.map +1 -0
- package/dist/services/config/schemas/cron.js +18 -0
- package/dist/services/config/schemas/cron.js.map +1 -0
- package/dist/services/config/schemas/features.d.ts +43 -0
- package/dist/services/config/schemas/features.d.ts.map +1 -0
- package/dist/services/config/schemas/features.js +20 -0
- package/dist/services/config/schemas/features.js.map +1 -0
- package/dist/services/config/schemas/index.d.ts +24 -0
- package/dist/services/config/schemas/index.d.ts.map +1 -0
- package/dist/services/config/schemas/index.js +24 -0
- package/dist/services/config/schemas/index.js.map +1 -0
- package/dist/services/config/schemas/mcp.d.ts +31 -0
- package/dist/services/config/schemas/mcp.d.ts.map +1 -0
- package/dist/services/config/schemas/mcp.js +39 -0
- package/dist/services/config/schemas/mcp.js.map +1 -0
- package/dist/services/config/schemas/primitives.d.ts +13 -0
- package/dist/services/config/schemas/primitives.d.ts.map +1 -0
- package/dist/services/config/schemas/primitives.js +17 -0
- package/dist/services/config/schemas/primitives.js.map +1 -0
- package/dist/services/config/schemas/providers.d.ts +335 -0
- package/dist/services/config/schemas/providers.d.ts.map +1 -0
- package/dist/services/config/schemas/providers.js +27 -0
- package/dist/services/config/schemas/providers.js.map +1 -0
- package/dist/services/config/schemas/storage.d.ts +16 -0
- package/dist/services/config/schemas/storage.d.ts.map +1 -0
- package/dist/services/config/schemas/storage.js +9 -0
- package/dist/services/config/schemas/storage.js.map +1 -0
- package/dist/services/config/schemas/webhooks.d.ts +25 -0
- package/dist/services/config/schemas/webhooks.d.ts.map +1 -0
- package/dist/services/config/schemas/webhooks.js +12 -0
- package/dist/services/config/schemas/webhooks.js.map +1 -0
- package/dist/services/cron/index.d.ts +50 -0
- package/dist/services/cron/index.d.ts.map +1 -0
- package/dist/services/cron/index.js +460 -0
- package/dist/services/cron/index.js.map +1 -0
- package/dist/services/log/index.d.ts +14 -0
- package/dist/services/log/index.d.ts.map +1 -0
- package/dist/services/log/index.js +137 -0
- package/dist/services/log/index.js.map +1 -0
- package/dist/services/mcp-client/index.d.ts +37 -0
- package/dist/services/mcp-client/index.d.ts.map +1 -0
- package/dist/services/mcp-client/index.js +258 -0
- package/dist/services/mcp-client/index.js.map +1 -0
- package/dist/services/media/extract-document.d.ts +8 -0
- package/dist/services/media/extract-document.d.ts.map +1 -0
- package/dist/services/media/extract-document.js +85 -0
- package/dist/services/media/extract-document.js.map +1 -0
- package/dist/services/media/index.d.ts +21 -0
- package/dist/services/media/index.d.ts.map +1 -0
- package/dist/services/media/index.js +116 -0
- package/dist/services/media/index.js.map +1 -0
- package/dist/services/media/providers/anthropic.d.ts +6 -0
- package/dist/services/media/providers/anthropic.d.ts.map +1 -0
- package/dist/services/media/providers/anthropic.js +38 -0
- package/dist/services/media/providers/anthropic.js.map +1 -0
- package/dist/services/media/providers/index.d.ts +6 -0
- package/dist/services/media/providers/index.d.ts.map +1 -0
- package/dist/services/media/providers/index.js +15 -0
- package/dist/services/media/providers/index.js.map +1 -0
- package/dist/services/media/providers/openai.d.ts +6 -0
- package/dist/services/media/providers/openai.d.ts.map +1 -0
- package/dist/services/media/providers/openai.js +48 -0
- package/dist/services/media/providers/openai.js.map +1 -0
- package/dist/services/media/providers/provider.d.ts +5 -0
- package/dist/services/media/providers/provider.d.ts.map +1 -0
- package/dist/services/media/providers/provider.js +2 -0
- package/dist/services/media/providers/provider.js.map +1 -0
- package/dist/services/memory/chunker.d.ts +7 -0
- package/dist/services/memory/chunker.d.ts.map +1 -0
- package/dist/services/memory/chunker.js +46 -0
- package/dist/services/memory/chunker.js.map +1 -0
- package/dist/services/memory/context.d.ts +68 -0
- package/dist/services/memory/context.d.ts.map +1 -0
- package/dist/services/memory/context.js +223 -0
- package/dist/services/memory/context.js.map +1 -0
- package/dist/services/memory/embedding.d.ts +9 -0
- package/dist/services/memory/embedding.d.ts.map +1 -0
- package/dist/services/memory/embedding.js +49 -0
- package/dist/services/memory/embedding.js.map +1 -0
- package/dist/services/memory/index.d.ts +24 -0
- package/dist/services/memory/index.d.ts.map +1 -0
- package/dist/services/memory/index.js +140 -0
- package/dist/services/memory/index.js.map +1 -0
- package/dist/services/memory/session-indexer.d.ts +5 -0
- package/dist/services/memory/session-indexer.d.ts.map +1 -0
- package/dist/services/memory/session-indexer.js +62 -0
- package/dist/services/memory/session-indexer.js.map +1 -0
- package/dist/services/memory/sqlite-storage.d.ts +23 -0
- package/dist/services/memory/sqlite-storage.d.ts.map +1 -0
- package/dist/services/memory/sqlite-storage.js +75 -0
- package/dist/services/memory/sqlite-storage.js.map +1 -0
- package/dist/services/memory/types.d.ts +31 -0
- package/dist/services/memory/types.d.ts.map +1 -0
- package/dist/services/memory/types.js +2 -0
- package/dist/services/memory/types.js.map +1 -0
- package/dist/services/web/index.d.ts +9 -0
- package/dist/services/web/index.d.ts.map +1 -0
- package/dist/services/web/index.js +101 -0
- package/dist/services/web/index.js.map +1 -0
- package/dist/vitest.config.d.ts +3 -0
- package/dist/vitest.config.d.ts.map +1 -0
- package/dist/vitest.config.js +9 -0
- package/dist/vitest.config.js.map +1 -0
- package/package.json +102 -0
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TCP/JSON-RPC server for the bus
|
|
3
|
+
* Minimal wrapper around EventEmitterBus to expose it over TCP
|
|
4
|
+
*/
|
|
5
|
+
import { createServer } from 'node:net';
|
|
6
|
+
import { createLogger } from '../lib/logger.js';
|
|
7
|
+
const log = createLogger('tcp-server');
|
|
8
|
+
export function startTCPServer(bus, host, port, socketTimeoutMs = 30_000) {
|
|
9
|
+
return new Promise((resolve, reject) => {
|
|
10
|
+
const server = createServer((socket) => {
|
|
11
|
+
log.debug(`Client connected from ${socket.remoteAddress}:${socket.remotePort}`);
|
|
12
|
+
const state = { subscriptions: new Set(), buffer: '' };
|
|
13
|
+
socket.on('data', (data) => {
|
|
14
|
+
state.buffer += data.toString();
|
|
15
|
+
processBuffer(socket, state, bus);
|
|
16
|
+
});
|
|
17
|
+
socket.on('end', () => {
|
|
18
|
+
log.debug(`Client disconnected from ${socket.remoteAddress}:${socket.remotePort}`);
|
|
19
|
+
});
|
|
20
|
+
socket.on('error', (err) => {
|
|
21
|
+
log.error(`Socket error: ${err.message}`);
|
|
22
|
+
});
|
|
23
|
+
socket.setTimeout(socketTimeoutMs);
|
|
24
|
+
socket.on('timeout', () => {
|
|
25
|
+
log.warn(`Client timeout: ${socket.remoteAddress}:${socket.remotePort}`);
|
|
26
|
+
socket.destroy();
|
|
27
|
+
});
|
|
28
|
+
});
|
|
29
|
+
server.listen(port, host, () => {
|
|
30
|
+
log.info(`Bus server listening on ${host}:${port}`);
|
|
31
|
+
resolve(async () => {
|
|
32
|
+
return new Promise((resolveClose, rejectClose) => {
|
|
33
|
+
server.close((err) => {
|
|
34
|
+
if (err)
|
|
35
|
+
rejectClose(err);
|
|
36
|
+
else
|
|
37
|
+
resolveClose();
|
|
38
|
+
});
|
|
39
|
+
});
|
|
40
|
+
});
|
|
41
|
+
});
|
|
42
|
+
server.on('error', (err) => {
|
|
43
|
+
log.error(`Server error: ${err.message}`);
|
|
44
|
+
reject(err);
|
|
45
|
+
});
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
function processBuffer(socket, state, bus) {
|
|
49
|
+
const lines = state.buffer.split('\n');
|
|
50
|
+
state.buffer = lines[lines.length - 1];
|
|
51
|
+
for (let i = 0; i < lines.length - 1; i++) {
|
|
52
|
+
const line = lines[i].trim();
|
|
53
|
+
if (!line)
|
|
54
|
+
continue;
|
|
55
|
+
try {
|
|
56
|
+
const req = JSON.parse(line);
|
|
57
|
+
handleRequest(socket, state, bus, req);
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
log.error(`Failed to parse request: ${err}`);
|
|
61
|
+
socket.write(JSON.stringify({
|
|
62
|
+
jsonrpc: '2.0',
|
|
63
|
+
error: { code: -32700, message: 'Parse error' },
|
|
64
|
+
id: null,
|
|
65
|
+
}) + '\n');
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async function handleRequest(socket, state, bus, req) {
|
|
70
|
+
const { method, params, id } = req;
|
|
71
|
+
// Handle subscription
|
|
72
|
+
if (method === 'bus.subscribe') {
|
|
73
|
+
const { event } = params;
|
|
74
|
+
if (!state.subscriptions.has(event)) {
|
|
75
|
+
state.subscriptions.add(event);
|
|
76
|
+
// Subscribe to the event and send notifications to client
|
|
77
|
+
bus.on(event, ((payload) => {
|
|
78
|
+
socket.write(JSON.stringify({
|
|
79
|
+
jsonrpc: '2.0',
|
|
80
|
+
method: 'bus.notify',
|
|
81
|
+
params: { event, payload },
|
|
82
|
+
}) + '\n');
|
|
83
|
+
}));
|
|
84
|
+
}
|
|
85
|
+
return; // No response for subscription
|
|
86
|
+
}
|
|
87
|
+
// Handle RPC call
|
|
88
|
+
if (!bus.isCallable(method)) {
|
|
89
|
+
socket.write(JSON.stringify({
|
|
90
|
+
jsonrpc: '2.0',
|
|
91
|
+
error: { code: -32601, message: `Method not found: ${method}` },
|
|
92
|
+
id,
|
|
93
|
+
}) + '\n');
|
|
94
|
+
return;
|
|
95
|
+
}
|
|
96
|
+
try {
|
|
97
|
+
const result = await bus.call(method, params);
|
|
98
|
+
socket.write(JSON.stringify({
|
|
99
|
+
jsonrpc: '2.0',
|
|
100
|
+
result,
|
|
101
|
+
id,
|
|
102
|
+
}) + '\n');
|
|
103
|
+
}
|
|
104
|
+
catch (err) {
|
|
105
|
+
socket.write(JSON.stringify({
|
|
106
|
+
jsonrpc: '2.0',
|
|
107
|
+
error: {
|
|
108
|
+
code: -32603,
|
|
109
|
+
message: err instanceof Error ? err.message : String(err),
|
|
110
|
+
},
|
|
111
|
+
id,
|
|
112
|
+
}) + '\n');
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=tcp-server.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tcp-server.js","sourceRoot":"","sources":["../../gateway/tcp-server.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":""}
|
package/dist/index.js
ADDED
|
@@ -0,0 +1,74 @@
|
|
|
1
|
+
import { EventEmitterBus } from './gateway/emitter.js';
|
|
2
|
+
import { startTCPServer } from './gateway/tcp-server.js';
|
|
3
|
+
import { createLogger } from './lib/logger.js';
|
|
4
|
+
import { getDataPaths } from './lib/paths.js';
|
|
5
|
+
import { seedDataDir } from './lib/templates.js';
|
|
6
|
+
// ── Boot order ────────────────────────────────────────────────────────────────
|
|
7
|
+
// Each entry: [label, () => import(module)]
|
|
8
|
+
// Comment out services not yet built — add them back as they land.
|
|
9
|
+
const SERVICES = [
|
|
10
|
+
['config', () => import('./services/config/index.js')],
|
|
11
|
+
['log', () => import('./services/log/index.js')],
|
|
12
|
+
['web', () => import('./services/web/index.js')],
|
|
13
|
+
['memory', () => import('./services/memory/index.js')],
|
|
14
|
+
['media', () => import('./services/media/index.js')],
|
|
15
|
+
['agent', () => import('./services/agent/index.js')],
|
|
16
|
+
['channels', () => import('./services/channels/index.js')],
|
|
17
|
+
['cron', () => import('./services/cron/index.js')],
|
|
18
|
+
['mcp-client', () => import('./services/mcp-client/index.js')],
|
|
19
|
+
// ['webhooks', () => import('./edge/webhooks/index.js')],
|
|
20
|
+
// ['mcp', () => import('./edge/mcp/index.js')],
|
|
21
|
+
];
|
|
22
|
+
// ── Boot ──────────────────────────────────────────────────────────────────────
|
|
23
|
+
const bus = new EventEmitterBus();
|
|
24
|
+
const log = createLogger('boot');
|
|
25
|
+
const stoppers = [];
|
|
26
|
+
// Bootstrap the bus itself (registers bus.search and bus.inspect)
|
|
27
|
+
bus.bootstrap();
|
|
28
|
+
// First-run seed: copy any missing entries from .templates/vargos/ into the data dir
|
|
29
|
+
await seedDataDir(getDataPaths().dataDir, log);
|
|
30
|
+
for (const [label, load] of SERVICES) {
|
|
31
|
+
try {
|
|
32
|
+
const { boot } = await load();
|
|
33
|
+
const { stop } = await boot(bus);
|
|
34
|
+
log.info(` ✅ "${label}" service booted`);
|
|
35
|
+
if (stop)
|
|
36
|
+
stoppers.push(stop);
|
|
37
|
+
}
|
|
38
|
+
catch (err) {
|
|
39
|
+
log.error(`❌ failed to boot ${label}: ${err instanceof Error ? err.message : String(err)}`);
|
|
40
|
+
process.exit(1);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
// Start TCP server for CLI access
|
|
44
|
+
const config = await bus.call('config.get', {});
|
|
45
|
+
const tcpHost = config.gateway.host ?? (process.env.BUS_HOST || '127.0.0.1');
|
|
46
|
+
const tcpPort = parseInt(config.gateway.port ? String(config.gateway.port) : (process.env.BUS_PORT || '9000'), 10);
|
|
47
|
+
try {
|
|
48
|
+
const socketTimeoutMs = config.gateway.requestTimeout ?? 30_000;
|
|
49
|
+
const tcpStopper = await startTCPServer(bus, tcpHost, tcpPort, socketTimeoutMs);
|
|
50
|
+
stoppers.push(tcpStopper);
|
|
51
|
+
}
|
|
52
|
+
catch (err) {
|
|
53
|
+
log.error(`failed to start TCP server: ${err instanceof Error ? err.message : String(err)}`);
|
|
54
|
+
process.exit(1);
|
|
55
|
+
}
|
|
56
|
+
// Signal that boot is complete — deferred startup can proceed
|
|
57
|
+
bus.emit('bus.onReady', {});
|
|
58
|
+
log.info('✅ Vargos is ready\n\n');
|
|
59
|
+
// ── Global error handlers ────────────────────────────────────────────────────
|
|
60
|
+
// Prevent undici socket errors (UND_ERR_SOCKET "other side closed") from
|
|
61
|
+
// crashing the process when LLM providers close connections after streaming.
|
|
62
|
+
process.on('uncaughtException', (err) => {
|
|
63
|
+
log.error(`uncaughtException: ${err.stack ?? err.message ?? err}`);
|
|
64
|
+
// Do NOT exit — most undici/stream errors are non-fatal teardown noise.
|
|
65
|
+
});
|
|
66
|
+
// ── Shutdown ──────────────────────────────────────────────────────────────────
|
|
67
|
+
process.on('SIGTERM', shutdown);
|
|
68
|
+
process.on('SIGINT', shutdown);
|
|
69
|
+
async function shutdown() {
|
|
70
|
+
log.info('shutting down');
|
|
71
|
+
await Promise.allSettled(stoppers.map(s => s()));
|
|
72
|
+
process.exit(0);
|
|
73
|
+
}
|
|
74
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Generic async handler and callback type definitions.
|
|
3
|
+
* Reusable across services for consistent typing of async operations.
|
|
4
|
+
*/
|
|
5
|
+
/** Basic async handler: input → Promise<output> */
|
|
6
|
+
export type AsyncHandler<I, O = void> = (input: I) => Promise<O>;
|
|
7
|
+
/** Batch async handler: multiple inputs → Promise<output> */
|
|
8
|
+
export type AsyncBatchHandler<I, O = void> = (batch: I[]) => Promise<O>;
|
|
9
|
+
/** Optional async handler (may not be implemented) */
|
|
10
|
+
export type OptionalAsyncHandler<I, O = void> = AsyncHandler<I, O> | undefined;
|
|
11
|
+
/** Variadic async handler: any arguments → Promise<output> */
|
|
12
|
+
export type AsyncFunction<O = void> = (...args: unknown[]) => Promise<O>;
|
|
13
|
+
//# sourceMappingURL=async-handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-handlers.d.ts","sourceRoot":"","sources":["../../lib/async-handlers.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,mDAAmD;AACnD,MAAM,MAAM,YAAY,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAEjE,6DAA6D;AAC7D,MAAM,MAAM,iBAAiB,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC;AAExE,sDAAsD;AACtD,MAAM,MAAM,oBAAoB,CAAC,CAAC,EAAE,CAAC,GAAG,IAAI,IAAI,YAAY,CAAC,CAAC,EAAE,CAAC,CAAC,GAAG,SAAS,CAAC;AAE/E,8DAA8D;AAC9D,MAAM,MAAM,aAAa,CAAC,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"async-handlers.js","sourceRoot":"","sources":["../../lib/async-handlers.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized error store — append-only JSONL at ~/.vargos/errors.jsonl
|
|
3
|
+
* Persists classified errors for pattern analysis and self-healing.
|
|
4
|
+
*/
|
|
5
|
+
import { type ErrorClass } from './error.js';
|
|
6
|
+
export interface ErrorRecord {
|
|
7
|
+
ts: string;
|
|
8
|
+
runId?: string;
|
|
9
|
+
sessionKey?: string;
|
|
10
|
+
tool?: string;
|
|
11
|
+
errorClass: ErrorClass | 'validation' | 'fatal';
|
|
12
|
+
message: string;
|
|
13
|
+
model?: string;
|
|
14
|
+
resolved?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function appendError(entry: Omit<ErrorRecord, 'ts' | 'errorClass'> & {
|
|
17
|
+
errorClass?: ErrorClass | 'validation' | 'fatal';
|
|
18
|
+
}): Promise<void>;
|
|
19
|
+
//# sourceMappingURL=error-store.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-store.d.ts","sourceRoot":"","sources":["../../lib/error-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAgC,KAAK,UAAU,EAAE,MAAM,YAAY,CAAC;AAE3E,MAAM,WAAW,WAAW;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,UAAU,GAAG,YAAY,GAAG,OAAO,CAAC;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,wBAAsB,WAAW,CAC/B,KAAK,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,YAAY,CAAC,GAAG;IAAE,UAAU,CAAC,EAAE,UAAU,GAAG,YAAY,GAAG,OAAO,CAAA;CAAE,GACnG,OAAO,CAAC,IAAI,CAAC,CASf"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Centralized error store — append-only JSONL at ~/.vargos/errors.jsonl
|
|
3
|
+
* Persists classified errors for pattern analysis and self-healing.
|
|
4
|
+
*/
|
|
5
|
+
import { promises as fs } from 'node:fs';
|
|
6
|
+
import path from 'node:path';
|
|
7
|
+
import { getDataPaths } from './paths.js';
|
|
8
|
+
import { sanitizeError, classifyError } from './error.js';
|
|
9
|
+
export async function appendError(entry) {
|
|
10
|
+
const full = {
|
|
11
|
+
ts: new Date().toISOString(),
|
|
12
|
+
errorClass: entry.errorClass ?? classifyError(entry.message),
|
|
13
|
+
...entry,
|
|
14
|
+
message: sanitizeError(entry.message),
|
|
15
|
+
};
|
|
16
|
+
const filePath = path.join(getDataPaths().dataDir, 'errors.jsonl');
|
|
17
|
+
await fs.appendFile(filePath, JSON.stringify(full) + '\n', 'utf-8');
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=error-store.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error-store.js","sourceRoot":"","sources":["../../lib/error-store.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,SAAS,CAAC;AACzC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,aAAa,EAAmB,MAAM,YAAY,CAAC;AAa3E,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,KAAoG;IAEpG,MAAM,IAAI,GAAgB;QACxB,EAAE,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QAC5B,UAAU,EAAE,KAAK,CAAC,UAAU,IAAI,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;QAC5D,GAAG,KAAK;QACR,OAAO,EAAE,aAAa,CAAC,KAAK,CAAC,OAAO,CAAC;KACtC,CAAC;IACF,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,CAAC,OAAO,EAAE,cAAc,CAAC,CAAC;IACnE,MAAM,EAAE,CAAC,UAAU,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC;AACtE,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error utilities — message extraction, sanitization, classification.
|
|
3
|
+
*/
|
|
4
|
+
/** Extract a human-readable message from an unknown error value. */
|
|
5
|
+
export declare function toMessage(err: unknown): string;
|
|
6
|
+
/** Scrub API keys, bearer tokens, and credentials from error strings. */
|
|
7
|
+
export declare function sanitizeError(msg: string): string;
|
|
8
|
+
export type ErrorClass = 'transient' | 'auth' | 'timeout' | 'rate_limit' | 'capability' | 'unknown';
|
|
9
|
+
/** Classify an error message for user-facing display. */
|
|
10
|
+
export declare function classifyError(msg: string): ErrorClass;
|
|
11
|
+
//# sourceMappingURL=error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.d.ts","sourceRoot":"","sources":["../../lib/error.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oEAAoE;AACpE,wBAAgB,SAAS,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAE9C;AAED,yEAAyE;AACzE,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAUjD;AAED,MAAM,MAAM,UAAU,GAAG,WAAW,GAAG,MAAM,GAAG,SAAS,GAAG,YAAY,GAAG,YAAY,GAAG,SAAS,CAAC;AAEpG,yDAAyD;AACzD,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAoBrD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Error utilities — message extraction, sanitization, classification.
|
|
3
|
+
*/
|
|
4
|
+
/** Extract a human-readable message from an unknown error value. */
|
|
5
|
+
export function toMessage(err) {
|
|
6
|
+
return err instanceof Error ? err.message : String(err);
|
|
7
|
+
}
|
|
8
|
+
/** Scrub API keys, bearer tokens, and credentials from error strings. */
|
|
9
|
+
export function sanitizeError(msg) {
|
|
10
|
+
return msg
|
|
11
|
+
// URL-embedded credentials (postgresql://user:pass@host)
|
|
12
|
+
.replace(/:\/\/([^:]+):([^@]+)@/g, '://$1:***@')
|
|
13
|
+
// Bearer tokens (including JWT with +/=)
|
|
14
|
+
.replace(/Bearer\s+[A-Za-z0-9_\-.+/=]+/gi, 'Bearer ***')
|
|
15
|
+
// Common API key formats (sk-..., xoxb-..., etc.)
|
|
16
|
+
.replace(/\b(sk|xoxb|xoxp|ghp|gho|ghu|ghs|ghr|glpat)-[A-Za-z0-9_-]{8,}/g, '$1-***')
|
|
17
|
+
// Generic key=value patterns for common secret field names
|
|
18
|
+
.replace(/(api[_-]?key|token|secret|password|authorization)[=:]\s*["']?[^\s"',}{]+/gi, '$1=***');
|
|
19
|
+
}
|
|
20
|
+
/** Classify an error message for user-facing display. */
|
|
21
|
+
export function classifyError(msg) {
|
|
22
|
+
const lower = msg.toLowerCase();
|
|
23
|
+
if (/\b(401|403|unauthorized|forbidden|invalid.*auth|invalid.*key)\b/.test(lower)) {
|
|
24
|
+
return 'auth';
|
|
25
|
+
}
|
|
26
|
+
if (/\b(429|rate.?limit|too many requests|quota|billing)\b/.test(lower)) {
|
|
27
|
+
return 'rate_limit';
|
|
28
|
+
}
|
|
29
|
+
if (/\b(timeout|timed?\s*out|etimedout|deadline exceeded)\b/.test(lower)) {
|
|
30
|
+
return 'timeout';
|
|
31
|
+
}
|
|
32
|
+
if (/\b(502|503|529|econnreset|econnrefused|network|socket hang up|fetch failed|retry)\b/.test(lower)) {
|
|
33
|
+
return 'transient';
|
|
34
|
+
}
|
|
35
|
+
// Model capability mismatches — not retryable
|
|
36
|
+
if (/no endpoints found|not support|unsupported.*model|model.*not.*available/i.test(lower)) {
|
|
37
|
+
return 'capability';
|
|
38
|
+
}
|
|
39
|
+
return 'unknown';
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"error.js","sourceRoot":"","sources":["../../lib/error.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,oEAAoE;AACpE,MAAM,UAAU,SAAS,CAAC,GAAY;IACpC,OAAO,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC;AAC1D,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,OAAO,GAAG;QACR,yDAAyD;SACxD,OAAO,CAAC,wBAAwB,EAAE,YAAY,CAAC;QAChD,yCAAyC;SACxC,OAAO,CAAC,gCAAgC,EAAE,YAAY,CAAC;QACxD,kDAAkD;SACjD,OAAO,CAAC,+DAA+D,EAAE,QAAQ,CAAC;QACnF,2DAA2D;SAC1D,OAAO,CAAC,4EAA4E,EAAE,QAAQ,CAAC,CAAC;AACrG,CAAC;AAID,yDAAyD;AACzD,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,KAAK,GAAG,GAAG,CAAC,WAAW,EAAE,CAAC;IAEhC,IAAI,iEAAiE,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAClF,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,IAAI,uDAAuD,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACxE,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,IAAI,wDAAwD,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACzE,OAAO,SAAS,CAAC;IACnB,CAAC;IACD,IAAI,qFAAqF,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QACtG,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,8CAA8C;IAC9C,IAAI,0EAA0E,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;QAC3F,OAAO,YAAY,CAAC;IACtB,CAAC;IACD,OAAO,SAAS,CAAC;AACnB,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared YAML frontmatter parser for markdown files.
|
|
3
|
+
* Supports the format:
|
|
4
|
+
* ---
|
|
5
|
+
* key: value
|
|
6
|
+
* multiline:
|
|
7
|
+
* - item1
|
|
8
|
+
* - item2
|
|
9
|
+
* ---
|
|
10
|
+
* body content
|
|
11
|
+
*/
|
|
12
|
+
export interface FrontmatterResult<T = Record<string, unknown>> {
|
|
13
|
+
meta: T;
|
|
14
|
+
body: string;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Parse YAML-ish frontmatter. The optional generic `T` lets callers declare the expected
|
|
18
|
+
* meta shape — at runtime the parsed value is just cast (no validation), so callers should
|
|
19
|
+
* still treat fields as optional unless they validate downstream (Zod, manual checks).
|
|
20
|
+
*/
|
|
21
|
+
export declare function parseFrontmatter<T = Record<string, unknown>>(content: string): FrontmatterResult<T> | null;
|
|
22
|
+
export declare function serializeFrontmatter(meta: Record<string, unknown>, body: string): string;
|
|
23
|
+
//# sourceMappingURL=frontmatter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontmatter.d.ts","sourceRoot":"","sources":["../../lib/frontmatter.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAEH,MAAM,WAAW,iBAAiB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAC5D,IAAI,EAAE,CAAC,CAAC;IACR,IAAI,EAAE,MAAM,CAAC;CACd;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,CAAC,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,OAAO,EAAE,MAAM,GAAG,iBAAiB,CAAC,CAAC,CAAC,GAAG,IAAI,CA+D1G;AAsBD,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAOxF"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Shared YAML frontmatter parser for markdown files.
|
|
3
|
+
* Supports the format:
|
|
4
|
+
* ---
|
|
5
|
+
* key: value
|
|
6
|
+
* multiline:
|
|
7
|
+
* - item1
|
|
8
|
+
* - item2
|
|
9
|
+
* ---
|
|
10
|
+
* body content
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* Parse YAML-ish frontmatter. The optional generic `T` lets callers declare the expected
|
|
14
|
+
* meta shape — at runtime the parsed value is just cast (no validation), so callers should
|
|
15
|
+
* still treat fields as optional unless they validate downstream (Zod, manual checks).
|
|
16
|
+
*/
|
|
17
|
+
export function parseFrontmatter(content) {
|
|
18
|
+
if (!content || typeof content !== 'string') {
|
|
19
|
+
return null;
|
|
20
|
+
}
|
|
21
|
+
const match = content.match(/^---\n([\s\S]*?)\n?---\n?([\s\S]*)/);
|
|
22
|
+
if (!match) {
|
|
23
|
+
return null;
|
|
24
|
+
}
|
|
25
|
+
const meta = {};
|
|
26
|
+
const metaStr = match[1].trim();
|
|
27
|
+
const body = match[2]?.trim() ?? '';
|
|
28
|
+
// Empty frontmatter (e.g. `---\n---\n\n`) is valid — return empty meta + body so callers
|
|
29
|
+
// can distinguish "no frontmatter wrapper" (parse returns null) from "wrapper but empty".
|
|
30
|
+
if (!metaStr) {
|
|
31
|
+
return { meta: {}, body };
|
|
32
|
+
}
|
|
33
|
+
const lines = metaStr.split('\n');
|
|
34
|
+
let i = 0;
|
|
35
|
+
while (i < lines.length) {
|
|
36
|
+
const line = lines[i];
|
|
37
|
+
if (!line.trim()) {
|
|
38
|
+
i++;
|
|
39
|
+
continue;
|
|
40
|
+
}
|
|
41
|
+
const colonIdx = line.indexOf(':');
|
|
42
|
+
if (colonIdx === -1) {
|
|
43
|
+
i++;
|
|
44
|
+
continue;
|
|
45
|
+
}
|
|
46
|
+
const key = line.substring(0, colonIdx).trim();
|
|
47
|
+
if (!key) {
|
|
48
|
+
i++;
|
|
49
|
+
continue;
|
|
50
|
+
}
|
|
51
|
+
const rawValue = line.substring(colonIdx + 1).trim();
|
|
52
|
+
// Check if this is a multi-line array (next line starts with -)
|
|
53
|
+
if (!rawValue && i + 1 < lines.length && lines[i + 1].trim().startsWith('-')) {
|
|
54
|
+
const arrayItems = [];
|
|
55
|
+
i++;
|
|
56
|
+
while (i < lines.length && lines[i].trim().startsWith('-')) {
|
|
57
|
+
const item = lines[i].trim().substring(1).trim();
|
|
58
|
+
// Strip quotes from array items (e.g., "0 9 * * *" -> 0 9 * * *)
|
|
59
|
+
const unquoted = item.replace(/^["']|["']$/g, '');
|
|
60
|
+
arrayItems.push(unquoted);
|
|
61
|
+
i++;
|
|
62
|
+
}
|
|
63
|
+
meta[key] = arrayItems;
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
meta[key] = parseFrontmatterValue(rawValue);
|
|
67
|
+
i++;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
return { meta: meta, body };
|
|
71
|
+
}
|
|
72
|
+
function parseFrontmatterValue(value) {
|
|
73
|
+
if (value === 'true')
|
|
74
|
+
return true;
|
|
75
|
+
if (value === 'false')
|
|
76
|
+
return false;
|
|
77
|
+
if (value.startsWith('[') && value.endsWith(']')) {
|
|
78
|
+
try {
|
|
79
|
+
return JSON.parse(value);
|
|
80
|
+
}
|
|
81
|
+
catch {
|
|
82
|
+
return value;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
// Try to parse as number (integer or float)
|
|
86
|
+
if (/^-?\d+(\.\d+)?$/.test(value)) {
|
|
87
|
+
return Number(value);
|
|
88
|
+
}
|
|
89
|
+
return value.replace(/^["']|["']$/g, '');
|
|
90
|
+
}
|
|
91
|
+
export function serializeFrontmatter(meta, body) {
|
|
92
|
+
const frontmatter = Object.entries(meta)
|
|
93
|
+
.filter(([, value]) => value !== undefined && value !== null)
|
|
94
|
+
.map(([key, value]) => formatEntry(key, value))
|
|
95
|
+
.join('\n');
|
|
96
|
+
return `---\n${frontmatter}\n---\n\n${body}\n`;
|
|
97
|
+
}
|
|
98
|
+
function formatEntry(key, value) {
|
|
99
|
+
if (Array.isArray(value)) {
|
|
100
|
+
if (value.length === 0)
|
|
101
|
+
return `${key}: []`;
|
|
102
|
+
if (value.every(v => typeof v === 'number')) {
|
|
103
|
+
return `${key}: [${value.join(', ')}]`;
|
|
104
|
+
}
|
|
105
|
+
return `${key}:\n${value.map(v => ` - ${formatScalar(v)}`).join('\n')}`;
|
|
106
|
+
}
|
|
107
|
+
return `${key}: ${formatScalar(value)}`;
|
|
108
|
+
}
|
|
109
|
+
function formatScalar(value) {
|
|
110
|
+
if (typeof value === 'boolean' || typeof value === 'number')
|
|
111
|
+
return String(value);
|
|
112
|
+
const s = String(value);
|
|
113
|
+
return needsQuotes(s) ? `"${s.replace(/\\/g, '\\\\').replace(/"/g, '\\"')}"` : s;
|
|
114
|
+
}
|
|
115
|
+
function needsQuotes(s) {
|
|
116
|
+
if (s === '')
|
|
117
|
+
return true;
|
|
118
|
+
if (/^(true|false|null|yes|no|on|off|~)$/i.test(s))
|
|
119
|
+
return true;
|
|
120
|
+
if (/^-?\d+(\.\d+)?$/.test(s))
|
|
121
|
+
return true;
|
|
122
|
+
// Starts with a YAML-special character or whitespace
|
|
123
|
+
if (/^[\s!&*?|>%@`[\]{},#"'-]/.test(s))
|
|
124
|
+
return true;
|
|
125
|
+
// Contains ": ", " #", tab, or newline
|
|
126
|
+
if (/:\s|\s#|\t|\n/.test(s))
|
|
127
|
+
return true;
|
|
128
|
+
// Trailing whitespace
|
|
129
|
+
if (/\s$/.test(s))
|
|
130
|
+
return true;
|
|
131
|
+
// Contains chars conventionally quoted for safety (cron expressions, etc.)
|
|
132
|
+
if (/[*?&!|>%`]/.test(s))
|
|
133
|
+
return true;
|
|
134
|
+
return false;
|
|
135
|
+
}
|
|
136
|
+
//# sourceMappingURL=frontmatter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"frontmatter.js","sourceRoot":"","sources":["../../lib/frontmatter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Match a string against a glob pattern. Only `*` wildcard is supported (matches any
|
|
3
|
+
* characters, zero or more). Patterns without `*` must match exactly. Other regex
|
|
4
|
+
* specials in the pattern are escaped.
|
|
5
|
+
*
|
|
6
|
+
* Examples:
|
|
7
|
+
* matchesGlob('memory.*', 'memory.search') // true
|
|
8
|
+
* matchesGlob('memory.*', 'channel.send') // false
|
|
9
|
+
* matchesGlob('mcp.atlassian.*', 'mcp.atlassian.create_issue') // true
|
|
10
|
+
* matchesGlob('*', 'anything') // true
|
|
11
|
+
* matchesGlob('exact', 'exact') // true
|
|
12
|
+
*/
|
|
13
|
+
export declare function matchesGlob(pattern: string, str: string): boolean;
|
|
14
|
+
//# sourceMappingURL=glob.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glob.d.ts","sourceRoot":"","sources":["../../lib/glob.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,wBAAgB,WAAW,CAAC,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAMjE"}
|
package/dist/lib/glob.js
ADDED
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Match a string against a glob pattern. Only `*` wildcard is supported (matches any
|
|
3
|
+
* characters, zero or more). Patterns without `*` must match exactly. Other regex
|
|
4
|
+
* specials in the pattern are escaped.
|
|
5
|
+
*
|
|
6
|
+
* Examples:
|
|
7
|
+
* matchesGlob('memory.*', 'memory.search') // true
|
|
8
|
+
* matchesGlob('memory.*', 'channel.send') // false
|
|
9
|
+
* matchesGlob('mcp.atlassian.*', 'mcp.atlassian.create_issue') // true
|
|
10
|
+
* matchesGlob('*', 'anything') // true
|
|
11
|
+
* matchesGlob('exact', 'exact') // true
|
|
12
|
+
*/
|
|
13
|
+
export function matchesGlob(pattern, str) {
|
|
14
|
+
if (!pattern.includes('*'))
|
|
15
|
+
return pattern === str;
|
|
16
|
+
const re = new RegExp('^' + pattern.split('*').map(escapeRegex).join('.*') + '$');
|
|
17
|
+
return re.test(str);
|
|
18
|
+
}
|
|
19
|
+
function escapeRegex(s) {
|
|
20
|
+
return s.replace(/[.+?^${}()|[\]\\]/g, '\\$&');
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=glob.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"glob.js","sourceRoot":"","sources":["../../lib/glob.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,WAAW,CAAC,OAAe,EAAE,GAAW;IACtD,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAC;QAAE,OAAO,OAAO,KAAK,GAAG,CAAC;IACnD,MAAM,EAAE,GAAG,IAAI,MAAM,CACnB,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,GAAG,GAAG,CAC3D,CAAC;IACF,OAAO,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;AACtB,CAAC;AAED,SAAS,WAAW,CAAC,CAAS;IAC5B,OAAO,CAAC,CAAC,OAAO,CAAC,oBAAoB,EAAE,MAAM,CAAC,CAAC;AACjD,CAAC"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heartbeat utilities — pure functions for heartbeat poll logic
|
|
3
|
+
*/
|
|
4
|
+
/**
|
|
5
|
+
* Returns true if HEARTBEAT.md content has no actionable tasks.
|
|
6
|
+
* Skips blank lines, markdown headers, empty list items, and HTML comments.
|
|
7
|
+
*/
|
|
8
|
+
export declare function isHeartbeatContentEffectivelyEmpty(content: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* Strip HEARTBEAT_OK token from response text.
|
|
11
|
+
* Returns null if the entire response was only the token (signal to skip delivery).
|
|
12
|
+
* Returns cleaned text otherwise.
|
|
13
|
+
*/
|
|
14
|
+
export declare function stripHeartbeatToken(text: string): string | null;
|
|
15
|
+
/**
|
|
16
|
+
* Check if the current hour is within active hours.
|
|
17
|
+
* Returns true if no config (always active).
|
|
18
|
+
* Supports overnight ranges (e.g. 22→6).
|
|
19
|
+
*
|
|
20
|
+
* @param activeHours [startHour, endHour] (0–23). Interpreted in `timeZone` when set, else UTC.
|
|
21
|
+
*/
|
|
22
|
+
export declare function isWithinActiveHours(activeHours?: [number, number], timeZone?: string): boolean;
|
|
23
|
+
//# sourceMappingURL=heartbeat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"heartbeat.d.ts","sourceRoot":"","sources":["../../lib/heartbeat.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH;;;GAGG;AACH,wBAAgB,kCAAkC,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAU3E;AAKD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAI/D;AAYD;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CACjC,WAAW,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC,EAC9B,QAAQ,CAAC,EAAE,MAAM,GAChB,OAAO,CAOT"}
|