@andre.li/memoark 0.3.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/README.en.md +606 -0
- package/README.md +560 -0
- package/bin/memoark.mjs +36 -0
- package/dist/adapters/file.d.ts +19 -0
- package/dist/adapters/file.d.ts.map +1 -0
- package/dist/adapters/file.js +61 -0
- package/dist/adapters/file.js.map +1 -0
- package/dist/adapters/gbrain.d.ts +29 -0
- package/dist/adapters/gbrain.d.ts.map +1 -0
- package/dist/adapters/gbrain.js +622 -0
- package/dist/adapters/gbrain.js.map +1 -0
- package/dist/adapters/index.d.ts +6 -0
- package/dist/adapters/index.d.ts.map +1 -0
- package/dist/adapters/index.js +5 -0
- package/dist/adapters/index.js.map +1 -0
- package/dist/adapters/registry.d.ts +18 -0
- package/dist/adapters/registry.d.ts.map +1 -0
- package/dist/adapters/registry.js +18 -0
- package/dist/adapters/registry.js.map +1 -0
- package/dist/adapters/stdout.d.ts +12 -0
- package/dist/adapters/stdout.d.ts.map +1 -0
- package/dist/adapters/stdout.js +29 -0
- package/dist/adapters/stdout.js.map +1 -0
- package/dist/adapters/store.d.ts +47 -0
- package/dist/adapters/store.d.ts.map +1 -0
- package/dist/adapters/store.js +641 -0
- package/dist/adapters/store.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +694 -0
- package/dist/cli.js.map +1 -0
- package/dist/collectors/agent/claude-code.d.ts +12 -0
- package/dist/collectors/agent/claude-code.d.ts.map +1 -0
- package/dist/collectors/agent/claude-code.js +94 -0
- package/dist/collectors/agent/claude-code.js.map +1 -0
- package/dist/collectors/agent/codex.d.ts +16 -0
- package/dist/collectors/agent/codex.d.ts.map +1 -0
- package/dist/collectors/agent/codex.js +149 -0
- package/dist/collectors/agent/codex.js.map +1 -0
- package/dist/collectors/agent/collector.d.ts +20 -0
- package/dist/collectors/agent/collector.d.ts.map +1 -0
- package/dist/collectors/agent/collector.js +108 -0
- package/dist/collectors/agent/collector.js.map +1 -0
- package/dist/collectors/agent/hermes.d.ts +13 -0
- package/dist/collectors/agent/hermes.d.ts.map +1 -0
- package/dist/collectors/agent/hermes.js +90 -0
- package/dist/collectors/agent/hermes.js.map +1 -0
- package/dist/collectors/agent/index.d.ts +6 -0
- package/dist/collectors/agent/index.d.ts.map +1 -0
- package/dist/collectors/agent/index.js +5 -0
- package/dist/collectors/agent/index.js.map +1 -0
- package/dist/collectors/agent/types.d.ts +61 -0
- package/dist/collectors/agent/types.d.ts.map +1 -0
- package/dist/collectors/agent/types.js +6 -0
- package/dist/collectors/agent/types.js.map +1 -0
- package/dist/collectors/feishu/auth.d.ts +13 -0
- package/dist/collectors/feishu/auth.d.ts.map +1 -0
- package/dist/collectors/feishu/auth.js +72 -0
- package/dist/collectors/feishu/auth.js.map +1 -0
- package/dist/collectors/feishu/collector.d.ts +23 -0
- package/dist/collectors/feishu/collector.d.ts.map +1 -0
- package/dist/collectors/feishu/collector.js +113 -0
- package/dist/collectors/feishu/collector.js.map +1 -0
- package/dist/collectors/feishu/cursor-staging.d.ts +11 -0
- package/dist/collectors/feishu/cursor-staging.d.ts.map +1 -0
- package/dist/collectors/feishu/cursor-staging.js +37 -0
- package/dist/collectors/feishu/cursor-staging.js.map +1 -0
- package/dist/collectors/feishu/http-client.d.ts +26 -0
- package/dist/collectors/feishu/http-client.d.ts.map +1 -0
- package/dist/collectors/feishu/http-client.js +94 -0
- package/dist/collectors/feishu/http-client.js.map +1 -0
- package/dist/collectors/feishu/index.d.ts +3 -0
- package/dist/collectors/feishu/index.d.ts.map +1 -0
- package/dist/collectors/feishu/index.js +2 -0
- package/dist/collectors/feishu/index.js.map +1 -0
- package/dist/collectors/feishu/lark-cli-client.d.ts +16 -0
- package/dist/collectors/feishu/lark-cli-client.d.ts.map +1 -0
- package/dist/collectors/feishu/lark-cli-client.js +69 -0
- package/dist/collectors/feishu/lark-cli-client.js.map +1 -0
- package/dist/collectors/feishu/rate-limiter.d.ts +10 -0
- package/dist/collectors/feishu/rate-limiter.d.ts.map +1 -0
- package/dist/collectors/feishu/rate-limiter.js +33 -0
- package/dist/collectors/feishu/rate-limiter.js.map +1 -0
- package/dist/collectors/feishu/sources/base.d.ts +9 -0
- package/dist/collectors/feishu/sources/base.d.ts.map +1 -0
- package/dist/collectors/feishu/sources/base.js +2 -0
- package/dist/collectors/feishu/sources/base.js.map +1 -0
- package/dist/collectors/feishu/sources/calendar.d.ts +16 -0
- package/dist/collectors/feishu/sources/calendar.d.ts.map +1 -0
- package/dist/collectors/feishu/sources/calendar.js +93 -0
- package/dist/collectors/feishu/sources/calendar.js.map +1 -0
- package/dist/collectors/feishu/sources/dm.d.ts +28 -0
- package/dist/collectors/feishu/sources/dm.d.ts.map +1 -0
- package/dist/collectors/feishu/sources/dm.js +152 -0
- package/dist/collectors/feishu/sources/dm.js.map +1 -0
- package/dist/collectors/feishu/sources/docs.d.ts +23 -0
- package/dist/collectors/feishu/sources/docs.d.ts.map +1 -0
- package/dist/collectors/feishu/sources/docs.js +154 -0
- package/dist/collectors/feishu/sources/docs.js.map +1 -0
- package/dist/collectors/feishu/sources/mail.d.ts +27 -0
- package/dist/collectors/feishu/sources/mail.d.ts.map +1 -0
- package/dist/collectors/feishu/sources/mail.js +136 -0
- package/dist/collectors/feishu/sources/mail.js.map +1 -0
- package/dist/collectors/feishu/sources/message-search.d.ts +37 -0
- package/dist/collectors/feishu/sources/message-search.d.ts.map +1 -0
- package/dist/collectors/feishu/sources/message-search.js +140 -0
- package/dist/collectors/feishu/sources/message-search.js.map +1 -0
- package/dist/collectors/feishu/sources/messages.d.ts +26 -0
- package/dist/collectors/feishu/sources/messages.d.ts.map +1 -0
- package/dist/collectors/feishu/sources/messages.js +148 -0
- package/dist/collectors/feishu/sources/messages.js.map +1 -0
- package/dist/collectors/feishu/sources/tasks.d.ts +15 -0
- package/dist/collectors/feishu/sources/tasks.d.ts.map +1 -0
- package/dist/collectors/feishu/sources/tasks.js +74 -0
- package/dist/collectors/feishu/sources/tasks.js.map +1 -0
- package/dist/collectors/feishu/types.d.ts +224 -0
- package/dist/collectors/feishu/types.d.ts.map +1 -0
- package/dist/collectors/feishu/types.js +17 -0
- package/dist/collectors/feishu/types.js.map +1 -0
- package/dist/collectors/index.d.ts +10 -0
- package/dist/collectors/index.d.ts.map +1 -0
- package/dist/collectors/index.js +18 -0
- package/dist/collectors/index.js.map +1 -0
- package/dist/config-center/connection-checks.d.ts +28 -0
- package/dist/config-center/connection-checks.d.ts.map +1 -0
- package/dist/config-center/connection-checks.js +114 -0
- package/dist/config-center/connection-checks.js.map +1 -0
- package/dist/config-center/document.d.ts +21 -0
- package/dist/config-center/document.d.ts.map +1 -0
- package/dist/config-center/document.js +93 -0
- package/dist/config-center/document.js.map +1 -0
- package/dist/config-center/index.d.ts +9 -0
- package/dist/config-center/index.d.ts.map +1 -0
- package/dist/config-center/index.js +29 -0
- package/dist/config-center/index.js.map +1 -0
- package/dist/config-center/recommendations.d.ts +16 -0
- package/dist/config-center/recommendations.d.ts.map +1 -0
- package/dist/config-center/recommendations.js +50 -0
- package/dist/config-center/recommendations.js.map +1 -0
- package/dist/config-center/reducer.d.ts +57 -0
- package/dist/config-center/reducer.d.ts.map +1 -0
- package/dist/config-center/reducer.js +192 -0
- package/dist/config-center/reducer.js.map +1 -0
- package/dist/config-center/schema.d.ts +31 -0
- package/dist/config-center/schema.d.ts.map +1 -0
- package/dist/config-center/schema.js +365 -0
- package/dist/config-center/schema.js.map +1 -0
- package/dist/config-center/secrets.d.ts +4 -0
- package/dist/config-center/secrets.d.ts.map +1 -0
- package/dist/config-center/secrets.js +27 -0
- package/dist/config-center/secrets.js.map +1 -0
- package/dist/config-center/source-dirs.d.ts +16 -0
- package/dist/config-center/source-dirs.d.ts.map +1 -0
- package/dist/config-center/source-dirs.js +81 -0
- package/dist/config-center/source-dirs.js.map +1 -0
- package/dist/config-center/tui/app.d.ts +22 -0
- package/dist/config-center/tui/app.d.ts.map +1 -0
- package/dist/config-center/tui/app.js +142 -0
- package/dist/config-center/tui/app.js.map +1 -0
- package/dist/config-center/tui/render.d.ts +20 -0
- package/dist/config-center/tui/render.d.ts.map +1 -0
- package/dist/config-center/tui/render.js +166 -0
- package/dist/config-center/tui/render.js.map +1 -0
- package/dist/config-center/validation.d.ts +9 -0
- package/dist/config-center/validation.d.ts.map +1 -0
- package/dist/config-center/validation.js +59 -0
- package/dist/config-center/validation.js.map +1 -0
- package/dist/consolidator/consolidator.d.ts +31 -0
- package/dist/consolidator/consolidator.d.ts.map +1 -0
- package/dist/consolidator/consolidator.js +57 -0
- package/dist/consolidator/consolidator.js.map +1 -0
- package/dist/consolidator/dead-link.d.ts +7 -0
- package/dist/consolidator/dead-link.d.ts.map +1 -0
- package/dist/consolidator/dead-link.js +57 -0
- package/dist/consolidator/dead-link.js.map +1 -0
- package/dist/consolidator/hot-warm.d.ts +9 -0
- package/dist/consolidator/hot-warm.d.ts.map +1 -0
- package/dist/consolidator/hot-warm.js +88 -0
- package/dist/consolidator/hot-warm.js.map +1 -0
- package/dist/consolidator/infer-preferences.d.ts +14 -0
- package/dist/consolidator/infer-preferences.d.ts.map +1 -0
- package/dist/consolidator/infer-preferences.js +73 -0
- package/dist/consolidator/infer-preferences.js.map +1 -0
- package/dist/consolidator/rules.d.ts +5 -0
- package/dist/consolidator/rules.d.ts.map +1 -0
- package/dist/consolidator/rules.js +53 -0
- package/dist/consolidator/rules.js.map +1 -0
- package/dist/consolidator/warm-cold.d.ts +13 -0
- package/dist/consolidator/warm-cold.d.ts.map +1 -0
- package/dist/consolidator/warm-cold.js +91 -0
- package/dist/consolidator/warm-cold.js.map +1 -0
- package/dist/core/block-builder.d.ts +15 -0
- package/dist/core/block-builder.d.ts.map +1 -0
- package/dist/core/block-builder.js +185 -0
- package/dist/core/block-builder.js.map +1 -0
- package/dist/core/canonicalize.d.ts +3 -0
- package/dist/core/canonicalize.d.ts.map +1 -0
- package/dist/core/canonicalize.js +137 -0
- package/dist/core/canonicalize.js.map +1 -0
- package/dist/core/concurrency.d.ts +2 -0
- package/dist/core/concurrency.d.ts.map +1 -0
- package/dist/core/concurrency.js +14 -0
- package/dist/core/concurrency.js.map +1 -0
- package/dist/core/config.d.ts +184 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +136 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/cursors.d.ts +36 -0
- package/dist/core/cursors.d.ts.map +1 -0
- package/dist/core/cursors.js +90 -0
- package/dist/core/cursors.js.map +1 -0
- package/dist/core/dedup.d.ts +45 -0
- package/dist/core/dedup.d.ts.map +1 -0
- package/dist/core/dedup.js +111 -0
- package/dist/core/dedup.js.map +1 -0
- package/dist/core/entity-extract.d.ts +3 -0
- package/dist/core/entity-extract.d.ts.map +1 -0
- package/dist/core/entity-extract.js +54 -0
- package/dist/core/entity-extract.js.map +1 -0
- package/dist/core/helpers.d.ts +3 -0
- package/dist/core/helpers.d.ts.map +1 -0
- package/dist/core/helpers.js +10 -0
- package/dist/core/helpers.js.map +1 -0
- package/dist/core/identity-resolver.d.ts +21 -0
- package/dist/core/identity-resolver.d.ts.map +1 -0
- package/dist/core/identity-resolver.js +62 -0
- package/dist/core/identity-resolver.js.map +1 -0
- package/dist/core/pipeline-factory.d.ts +13 -0
- package/dist/core/pipeline-factory.d.ts.map +1 -0
- package/dist/core/pipeline-factory.js +32 -0
- package/dist/core/pipeline-factory.js.map +1 -0
- package/dist/core/pipeline.d.ts +61 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +261 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/core/schemas.d.ts +2470 -0
- package/dist/core/schemas.d.ts.map +1 -0
- package/dist/core/schemas.js +229 -0
- package/dist/core/schemas.js.map +1 -0
- package/dist/core/signal-scoring.d.ts +3 -0
- package/dist/core/signal-scoring.d.ts.map +1 -0
- package/dist/core/signal-scoring.js +124 -0
- package/dist/core/signal-scoring.js.map +1 -0
- package/dist/core/state.d.ts +22 -0
- package/dist/core/state.d.ts.map +1 -0
- package/dist/core/state.js +32 -0
- package/dist/core/state.js.map +1 -0
- package/dist/core/types.d.ts +231 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +6 -0
- package/dist/core/types.js.map +1 -0
- package/dist/daemon/alerts.d.ts +12 -0
- package/dist/daemon/alerts.d.ts.map +1 -0
- package/dist/daemon/alerts.js +34 -0
- package/dist/daemon/alerts.js.map +1 -0
- package/dist/daemon/index.d.ts +6 -0
- package/dist/daemon/index.d.ts.map +1 -0
- package/dist/daemon/index.js +6 -0
- package/dist/daemon/index.js.map +1 -0
- package/dist/daemon/logger.d.ts +8 -0
- package/dist/daemon/logger.d.ts.map +1 -0
- package/dist/daemon/logger.js +35 -0
- package/dist/daemon/logger.js.map +1 -0
- package/dist/daemon/run-history.d.ts +29 -0
- package/dist/daemon/run-history.d.ts.map +1 -0
- package/dist/daemon/run-history.js +54 -0
- package/dist/daemon/run-history.js.map +1 -0
- package/dist/daemon/scheduler.d.ts +37 -0
- package/dist/daemon/scheduler.d.ts.map +1 -0
- package/dist/daemon/scheduler.js +142 -0
- package/dist/daemon/scheduler.js.map +1 -0
- package/dist/daemon/source-schedule.d.ts +25 -0
- package/dist/daemon/source-schedule.d.ts.map +1 -0
- package/dist/daemon/source-schedule.js +87 -0
- package/dist/daemon/source-schedule.js.map +1 -0
- package/dist/embedded-assets.generated.d.ts +4 -0
- package/dist/embedded-assets.generated.d.ts.map +1 -0
- package/dist/embedded-assets.generated.js +12 -0
- package/dist/embedded-assets.generated.js.map +1 -0
- package/dist/extractors/noise-filter.d.ts +30 -0
- package/dist/extractors/noise-filter.d.ts.map +1 -0
- package/dist/extractors/noise-filter.js +185 -0
- package/dist/extractors/noise-filter.js.map +1 -0
- package/dist/extractors/providers/anthropic.d.ts +13 -0
- package/dist/extractors/providers/anthropic.d.ts.map +1 -0
- package/dist/extractors/providers/anthropic.js +67 -0
- package/dist/extractors/providers/anthropic.js.map +1 -0
- package/dist/extractors/providers/index.d.ts +12 -0
- package/dist/extractors/providers/index.d.ts.map +1 -0
- package/dist/extractors/providers/index.js +41 -0
- package/dist/extractors/providers/index.js.map +1 -0
- package/dist/extractors/providers/mock.d.ts +14 -0
- package/dist/extractors/providers/mock.d.ts.map +1 -0
- package/dist/extractors/providers/mock.js +37 -0
- package/dist/extractors/providers/mock.js.map +1 -0
- package/dist/extractors/providers/openai.d.ts +15 -0
- package/dist/extractors/providers/openai.d.ts.map +1 -0
- package/dist/extractors/providers/openai.js +109 -0
- package/dist/extractors/providers/openai.js.map +1 -0
- package/dist/extractors/providers/types.d.ts +27 -0
- package/dist/extractors/providers/types.d.ts.map +1 -0
- package/dist/extractors/providers/types.js +6 -0
- package/dist/extractors/providers/types.js.map +1 -0
- package/dist/extractors/signal-extractor.d.ts +29 -0
- package/dist/extractors/signal-extractor.d.ts.map +1 -0
- package/dist/extractors/signal-extractor.js +279 -0
- package/dist/extractors/signal-extractor.js.map +1 -0
- package/dist/formatters/index.d.ts +3 -0
- package/dist/formatters/index.d.ts.map +1 -0
- package/dist/formatters/index.js +3 -0
- package/dist/formatters/index.js.map +1 -0
- package/dist/formatters/json.d.ts +6 -0
- package/dist/formatters/json.d.ts.map +1 -0
- package/dist/formatters/json.js +16 -0
- package/dist/formatters/json.js.map +1 -0
- package/dist/formatters/markdown.d.ts +6 -0
- package/dist/formatters/markdown.d.ts.map +1 -0
- package/dist/formatters/markdown.js +198 -0
- package/dist/formatters/markdown.js.map +1 -0
- package/dist/processors/privacy.d.ts +98 -0
- package/dist/processors/privacy.d.ts.map +1 -0
- package/dist/processors/privacy.js +271 -0
- package/dist/processors/privacy.js.map +1 -0
- package/dist/server/api.d.ts +35 -0
- package/dist/server/api.d.ts.map +1 -0
- package/dist/server/api.js +453 -0
- package/dist/server/api.js.map +1 -0
- package/dist/server/backfill-job.d.ts +36 -0
- package/dist/server/backfill-job.d.ts.map +1 -0
- package/dist/server/backfill-job.js +88 -0
- package/dist/server/backfill-job.js.map +1 -0
- package/dist/server/backfill-routes.d.ts +7 -0
- package/dist/server/backfill-routes.d.ts.map +1 -0
- package/dist/server/backfill-routes.js +123 -0
- package/dist/server/backfill-routes.js.map +1 -0
- package/dist/server/config-routes.d.ts +8 -0
- package/dist/server/config-routes.d.ts.map +1 -0
- package/dist/server/config-routes.js +114 -0
- package/dist/server/config-routes.js.map +1 -0
- package/dist/server/context.d.ts +13 -0
- package/dist/server/context.d.ts.map +1 -0
- package/dist/server/context.js +47 -0
- package/dist/server/context.js.map +1 -0
- package/dist/server/entity.d.ts +25 -0
- package/dist/server/entity.d.ts.map +1 -0
- package/dist/server/entity.js +34 -0
- package/dist/server/entity.js.map +1 -0
- package/dist/server/event-bus.d.ts +35 -0
- package/dist/server/event-bus.d.ts.map +1 -0
- package/dist/server/event-bus.js +4 -0
- package/dist/server/event-bus.js.map +1 -0
- package/dist/server/mcp.d.ts +126 -0
- package/dist/server/mcp.d.ts.map +1 -0
- package/dist/server/mcp.js +103 -0
- package/dist/server/mcp.js.map +1 -0
- package/dist/server/setup-server.d.ts +7 -0
- package/dist/server/setup-server.d.ts.map +1 -0
- package/dist/server/setup-server.js +52 -0
- package/dist/server/setup-server.js.map +1 -0
- package/dist/setup/assess-hardware.d.ts +34 -0
- package/dist/setup/assess-hardware.d.ts.map +1 -0
- package/dist/setup/assess-hardware.js +179 -0
- package/dist/setup/assess-hardware.js.map +1 -0
- package/dist/setup/connection-tests.d.ts +17 -0
- package/dist/setup/connection-tests.d.ts.map +1 -0
- package/dist/setup/connection-tests.js +67 -0
- package/dist/setup/connection-tests.js.map +1 -0
- package/dist/setup/detect-api-keys.d.ts +13 -0
- package/dist/setup/detect-api-keys.d.ts.map +1 -0
- package/dist/setup/detect-api-keys.js +41 -0
- package/dist/setup/detect-api-keys.js.map +1 -0
- package/dist/setup/detect-runtime.d.ts +14 -0
- package/dist/setup/detect-runtime.d.ts.map +1 -0
- package/dist/setup/detect-runtime.js +43 -0
- package/dist/setup/detect-runtime.js.map +1 -0
- package/dist/setup/detect-sources.d.ts +14 -0
- package/dist/setup/detect-sources.d.ts.map +1 -0
- package/dist/setup/detect-sources.js +75 -0
- package/dist/setup/detect-sources.js.map +1 -0
- package/dist/setup/generate-config.d.ts +5 -0
- package/dist/setup/generate-config.d.ts.map +1 -0
- package/dist/setup/generate-config.js +103 -0
- package/dist/setup/generate-config.js.map +1 -0
- package/dist/setup/index.d.ts +9 -0
- package/dist/setup/index.d.ts.map +1 -0
- package/dist/setup/index.js +9 -0
- package/dist/setup/index.js.map +1 -0
- package/dist/setup/init-wizard.d.ts +19 -0
- package/dist/setup/init-wizard.d.ts.map +1 -0
- package/dist/setup/init-wizard.js +501 -0
- package/dist/setup/init-wizard.js.map +1 -0
- package/dist/setup/terminal.d.ts +28 -0
- package/dist/setup/terminal.d.ts.map +1 -0
- package/dist/setup/terminal.js +258 -0
- package/dist/setup/terminal.js.map +1 -0
- package/dist/setup/validate-config.d.ts +26 -0
- package/dist/setup/validate-config.d.ts.map +1 -0
- package/dist/setup/validate-config.js +27 -0
- package/dist/setup/validate-config.js.map +1 -0
- package/dist/store/chunks.d.ts +19 -0
- package/dist/store/chunks.d.ts.map +1 -0
- package/dist/store/chunks.js +70 -0
- package/dist/store/chunks.js.map +1 -0
- package/dist/store/database.d.ts +24 -0
- package/dist/store/database.d.ts.map +1 -0
- package/dist/store/database.js +62 -0
- package/dist/store/database.js.map +1 -0
- package/dist/store/embedding.d.ts +23 -0
- package/dist/store/embedding.d.ts.map +1 -0
- package/dist/store/embedding.js +62 -0
- package/dist/store/embedding.js.map +1 -0
- package/dist/store/graph.d.ts +53 -0
- package/dist/store/graph.d.ts.map +1 -0
- package/dist/store/graph.js +186 -0
- package/dist/store/graph.js.map +1 -0
- package/dist/store/migrations/index.d.ts +9 -0
- package/dist/store/migrations/index.d.ts.map +1 -0
- package/dist/store/migrations/index.js +68 -0
- package/dist/store/migrations/index.js.map +1 -0
- package/dist/store/pages.d.ts +39 -0
- package/dist/store/pages.d.ts.map +1 -0
- package/dist/store/pages.js +150 -0
- package/dist/store/pages.js.map +1 -0
- package/dist/store/search.d.ts +37 -0
- package/dist/store/search.d.ts.map +1 -0
- package/dist/store/search.js +200 -0
- package/dist/store/search.js.map +1 -0
- package/dist/store/tags.d.ts +10 -0
- package/dist/store/tags.d.ts.map +1 -0
- package/dist/store/tags.js +31 -0
- package/dist/store/tags.js.map +1 -0
- package/dist/store/timeline.d.ts +26 -0
- package/dist/store/timeline.d.ts.map +1 -0
- package/dist/store/timeline.js +43 -0
- package/dist/store/timeline.js.map +1 -0
- package/dist/sync/obsidian.d.ts +136 -0
- package/dist/sync/obsidian.d.ts.map +1 -0
- package/dist/sync/obsidian.js +539 -0
- package/dist/sync/obsidian.js.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Anthropic-compatible LLM Provider
|
|
3
|
+
* Uses fetch to call Anthropic Messages API directly
|
|
4
|
+
*/
|
|
5
|
+
export function createAnthropicProvider(config) {
|
|
6
|
+
const { apiKey, model, baseUrl = "https://api.anthropic.com" } = config;
|
|
7
|
+
return {
|
|
8
|
+
async chat(messages, opts) {
|
|
9
|
+
const url = `${baseUrl}/v1/messages`;
|
|
10
|
+
const system = messages
|
|
11
|
+
.filter((m) => m.role === "system")
|
|
12
|
+
.map((m) => m.content)
|
|
13
|
+
.join("\n\n");
|
|
14
|
+
const anthropicMessages = messages
|
|
15
|
+
.filter((m) => m.role !== "system")
|
|
16
|
+
.map((m) => ({ role: m.role, content: m.content }));
|
|
17
|
+
const requestBody = {
|
|
18
|
+
model,
|
|
19
|
+
messages: anthropicMessages,
|
|
20
|
+
max_tokens: opts?.maxTokens ?? 4096,
|
|
21
|
+
thinking: { type: "disabled" },
|
|
22
|
+
};
|
|
23
|
+
if (system)
|
|
24
|
+
requestBody.system = system;
|
|
25
|
+
if (opts?.temperature !== undefined)
|
|
26
|
+
requestBody.temperature = opts.temperature;
|
|
27
|
+
const controller = new AbortController();
|
|
28
|
+
const timeout = setTimeout(() => controller.abort(), 180_000);
|
|
29
|
+
let response;
|
|
30
|
+
try {
|
|
31
|
+
response = await fetch(url, {
|
|
32
|
+
method: "POST",
|
|
33
|
+
headers: {
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
"x-api-key": apiKey,
|
|
36
|
+
"anthropic-version": "2023-06-01",
|
|
37
|
+
},
|
|
38
|
+
body: JSON.stringify(requestBody),
|
|
39
|
+
signal: controller.signal,
|
|
40
|
+
});
|
|
41
|
+
}
|
|
42
|
+
catch (err) {
|
|
43
|
+
throw new Error(`Anthropic API request failed: ${err instanceof Error ? err.message : String(err)}`);
|
|
44
|
+
}
|
|
45
|
+
finally {
|
|
46
|
+
clearTimeout(timeout);
|
|
47
|
+
}
|
|
48
|
+
const data = (await response.json());
|
|
49
|
+
if (data.error) {
|
|
50
|
+
throw new Error(`Anthropic API error: ${data.error.message}`);
|
|
51
|
+
}
|
|
52
|
+
if (!data.content || data.content.length === 0) {
|
|
53
|
+
throw new Error("Anthropic API returned no content");
|
|
54
|
+
}
|
|
55
|
+
let content = data.content
|
|
56
|
+
.filter((b) => b.type === "text" && b.text && b.text.trim().length > 0)
|
|
57
|
+
.map((b) => b.text ?? "")
|
|
58
|
+
.join("");
|
|
59
|
+
content = content.replace(/<think>[\s\S]*?<\/think>\s*/g, "").trim();
|
|
60
|
+
if (!content) {
|
|
61
|
+
throw new Error("Anthropic API returned empty text content");
|
|
62
|
+
}
|
|
63
|
+
return content;
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
//# sourceMappingURL=anthropic.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"anthropic.js","sourceRoot":"","sources":["../../../src/extractors/providers/anthropic.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Provider factory
|
|
3
|
+
* Creates provider instances based on configuration
|
|
4
|
+
*/
|
|
5
|
+
import type { LLMConfig } from "../../core/config.js";
|
|
6
|
+
import type { LLMProvider } from "./types.js";
|
|
7
|
+
export declare function createLLMProvider(config: LLMConfig): LLMProvider;
|
|
8
|
+
export { createAnthropicProvider } from "./anthropic.js";
|
|
9
|
+
export { createMockProvider } from "./mock.js";
|
|
10
|
+
export { createOpenAIProvider } from "./openai.js";
|
|
11
|
+
export type { ChatMessage, LLMOpts, LLMProvider } from "./types.js";
|
|
12
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/extractors/providers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAItD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAE9C,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,SAAS,GAAG,WAAW,CAiChE;AAED,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACnD,YAAY,EAAE,WAAW,EAAE,OAAO,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Provider factory
|
|
3
|
+
* Creates provider instances based on configuration
|
|
4
|
+
*/
|
|
5
|
+
import { createAnthropicProvider } from "./anthropic.js";
|
|
6
|
+
import { createMockProvider } from "./mock.js";
|
|
7
|
+
import { createOpenAIProvider } from "./openai.js";
|
|
8
|
+
export function createLLMProvider(config) {
|
|
9
|
+
const { provider, model, api_key, base_url } = config;
|
|
10
|
+
switch (provider) {
|
|
11
|
+
case "openai": {
|
|
12
|
+
if (!api_key) {
|
|
13
|
+
throw new Error("OpenAI provider requires api_key in config");
|
|
14
|
+
}
|
|
15
|
+
return createOpenAIProvider({
|
|
16
|
+
apiKey: api_key,
|
|
17
|
+
model,
|
|
18
|
+
baseUrl: base_url,
|
|
19
|
+
});
|
|
20
|
+
}
|
|
21
|
+
case "anthropic": {
|
|
22
|
+
if (!api_key) {
|
|
23
|
+
throw new Error("Anthropic provider requires api_key in config");
|
|
24
|
+
}
|
|
25
|
+
return createAnthropicProvider({
|
|
26
|
+
apiKey: api_key,
|
|
27
|
+
model,
|
|
28
|
+
baseUrl: base_url,
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
case "mock": {
|
|
32
|
+
return createMockProvider(new Map());
|
|
33
|
+
}
|
|
34
|
+
default:
|
|
35
|
+
throw new Error(`Unsupported LLM provider: ${provider}. Supported: openai, anthropic, mock`);
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
export { createAnthropicProvider } from "./anthropic.js";
|
|
39
|
+
export { createMockProvider } from "./mock.js";
|
|
40
|
+
export { createOpenAIProvider } from "./openai.js";
|
|
41
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/extractors/providers/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AAGnD,MAAM,UAAU,iBAAiB,CAAC,MAAiB;IACjD,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,GAAG,MAAM,CAAC;IAEtD,QAAQ,QAAQ,EAAE,CAAC;QACjB,KAAK,QAAQ,CAAC,CAAC,CAAC;YACd,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;YAChE,CAAC;YACD,OAAO,oBAAoB,CAAC;gBAC1B,MAAM,EAAE,OAAO;gBACf,KAAK;gBACL,OAAO,EAAE,QAAQ;aAClB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,WAAW,CAAC,CAAC,CAAC;YACjB,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,MAAM,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC;YACnE,CAAC;YACD,OAAO,uBAAuB,CAAC;gBAC7B,MAAM,EAAE,OAAO;gBACf,KAAK;gBACL,OAAO,EAAE,QAAQ;aAClB,CAAC,CAAC;QACL,CAAC;QAED,KAAK,MAAM,CAAC,CAAC,CAAC;YACZ,OAAO,kBAAkB,CAAC,IAAI,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;QAED;YACE,MAAM,IAAI,KAAK,CAAC,6BAA6B,QAAQ,sCAAsC,CAAC,CAAC;IACjG,CAAC;AACH,CAAC;AAED,OAAO,EAAE,uBAAuB,EAAE,MAAM,gBAAgB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock LLM Provider for testing
|
|
3
|
+
* Returns predefined responses based on prompt matching
|
|
4
|
+
*/
|
|
5
|
+
import type { LLMProvider } from "./types.js";
|
|
6
|
+
/**
|
|
7
|
+
* Create a mock LLM provider that returns predefined responses
|
|
8
|
+
* Useful for testing and development without real API calls
|
|
9
|
+
*
|
|
10
|
+
* @param responses - Map of prompt patterns to responses (matched case-insensitively)
|
|
11
|
+
* @returns Mock LLM provider
|
|
12
|
+
*/
|
|
13
|
+
export declare function createMockProvider(responses: Map<string, string>): LLMProvider;
|
|
14
|
+
//# sourceMappingURL=mock.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.d.ts","sourceRoot":"","sources":["../../../src/extractors/providers/mock.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,KAAK,EAAwB,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpE;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,WAAW,CA2B9E"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Mock LLM Provider for testing
|
|
3
|
+
* Returns predefined responses based on prompt matching
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Create a mock LLM provider that returns predefined responses
|
|
7
|
+
* Useful for testing and development without real API calls
|
|
8
|
+
*
|
|
9
|
+
* @param responses - Map of prompt patterns to responses (matched case-insensitively)
|
|
10
|
+
* @returns Mock LLM provider
|
|
11
|
+
*/
|
|
12
|
+
export function createMockProvider(responses) {
|
|
13
|
+
return {
|
|
14
|
+
async chat(messages, _opts) {
|
|
15
|
+
// Concatenate all message content to form the prompt
|
|
16
|
+
const prompt = messages
|
|
17
|
+
.map((msg) => msg.content)
|
|
18
|
+
.join(" ")
|
|
19
|
+
.toLowerCase();
|
|
20
|
+
// Try to find a matching response
|
|
21
|
+
// First try exact matches, then try partial matches
|
|
22
|
+
for (const [pattern, response] of responses.entries()) {
|
|
23
|
+
if (prompt === pattern.toLowerCase()) {
|
|
24
|
+
return response;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Try partial matches (pattern contained in prompt)
|
|
28
|
+
for (const [pattern, response] of responses.entries()) {
|
|
29
|
+
if (pattern === "" || prompt.includes(pattern.toLowerCase())) {
|
|
30
|
+
return response;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
throw new Error(`No mock response found for prompt: "${prompt.substring(0, 100)}..."`);
|
|
34
|
+
},
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=mock.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mock.js","sourceRoot":"","sources":["../../../src/extractors/providers/mock.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAIH;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,SAA8B;IAC/D,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,QAAuB,EAAE,KAAe;YACjD,qDAAqD;YACrD,MAAM,MAAM,GAAG,QAAQ;iBACpB,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,OAAO,CAAC;iBACzB,IAAI,CAAC,GAAG,CAAC;iBACT,WAAW,EAAE,CAAC;YAEjB,kCAAkC;YAClC,oDAAoD;YACpD,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;gBACtD,IAAI,MAAM,KAAK,OAAO,CAAC,WAAW,EAAE,EAAE,CAAC;oBACrC,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,oDAAoD;YACpD,KAAK,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,IAAI,SAAS,CAAC,OAAO,EAAE,EAAE,CAAC;gBACtD,IAAI,OAAO,KAAK,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;oBAC7D,OAAO,QAAQ,CAAC;gBAClB,CAAC;YACH,CAAC;YAED,MAAM,IAAI,KAAK,CAAC,uCAAuC,MAAM,CAAC,SAAS,CAAC,CAAC,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;QACzF,CAAC;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI-compatible LLM Provider
|
|
3
|
+
* Uses fetch to call OpenAI API directly, supports custom base_url for proxies/local servers.
|
|
4
|
+
* Auto-detects unsupported parameters (temperature, response_format) on first call
|
|
5
|
+
* and falls back gracefully for third-party proxy compatibility.
|
|
6
|
+
*/
|
|
7
|
+
import type { LLMProvider } from "./types.js";
|
|
8
|
+
interface OpenAIConfig {
|
|
9
|
+
apiKey: string;
|
|
10
|
+
model: string;
|
|
11
|
+
baseUrl?: string;
|
|
12
|
+
}
|
|
13
|
+
export declare function createOpenAIProvider(config: OpenAIConfig): LLMProvider;
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=openai.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../../src/extractors/providers/openai.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAwB,WAAW,EAAE,MAAM,YAAY,CAAC;AAEpE,UAAU,YAAY;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAOD,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,WAAW,CA6GtE"}
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenAI-compatible LLM Provider
|
|
3
|
+
* Uses fetch to call OpenAI API directly, supports custom base_url for proxies/local servers.
|
|
4
|
+
* Auto-detects unsupported parameters (temperature, response_format) on first call
|
|
5
|
+
* and falls back gracefully for third-party proxy compatibility.
|
|
6
|
+
*/
|
|
7
|
+
export function createOpenAIProvider(config) {
|
|
8
|
+
const { apiKey, model } = config;
|
|
9
|
+
// Normalise base_url: strip trailing slash and trailing /v1 so we always append /v1/...
|
|
10
|
+
const baseUrl = (config.baseUrl ?? "https://api.openai.com")
|
|
11
|
+
.replace(/\/+$/, "")
|
|
12
|
+
.replace(/\/v1$/, "");
|
|
13
|
+
const url = `${baseUrl}/v1/chat/completions`;
|
|
14
|
+
// Track which optional features the endpoint supports (auto-detected on first use)
|
|
15
|
+
let supportsTemperature = null;
|
|
16
|
+
let supportsJsonFormat = null;
|
|
17
|
+
async function doFetch(body) {
|
|
18
|
+
const response = await fetch(url, {
|
|
19
|
+
method: "POST",
|
|
20
|
+
headers: {
|
|
21
|
+
"Content-Type": "application/json",
|
|
22
|
+
Authorization: `Bearer ${apiKey}`,
|
|
23
|
+
},
|
|
24
|
+
body: JSON.stringify(body),
|
|
25
|
+
});
|
|
26
|
+
return (await response.json());
|
|
27
|
+
}
|
|
28
|
+
function buildBody(messages, opts) {
|
|
29
|
+
const body = { model, messages };
|
|
30
|
+
if (opts?.maxTokens !== undefined)
|
|
31
|
+
body.max_tokens = opts.maxTokens;
|
|
32
|
+
if (opts?.temperature !== undefined && supportsTemperature !== false) {
|
|
33
|
+
body.temperature = opts.temperature;
|
|
34
|
+
}
|
|
35
|
+
if (opts?.responseFormat === "json" && supportsJsonFormat !== false) {
|
|
36
|
+
body.response_format = { type: "json_object" };
|
|
37
|
+
}
|
|
38
|
+
return body;
|
|
39
|
+
}
|
|
40
|
+
function isApiError(data) {
|
|
41
|
+
return Boolean(data.error);
|
|
42
|
+
}
|
|
43
|
+
function extractContent(data) {
|
|
44
|
+
if (!data.choices || data.choices.length === 0) {
|
|
45
|
+
throw new Error("API returned no choices in response");
|
|
46
|
+
}
|
|
47
|
+
const choice = data.choices[0];
|
|
48
|
+
if (!choice.message) {
|
|
49
|
+
throw new Error("API response choice has no message");
|
|
50
|
+
}
|
|
51
|
+
let content = choice.message.content ?? "";
|
|
52
|
+
content = content.replace(/<think>[\s\S]*?<\/think>\s*/g, "").trim();
|
|
53
|
+
return content;
|
|
54
|
+
}
|
|
55
|
+
return {
|
|
56
|
+
async chat(messages, opts) {
|
|
57
|
+
// First attempt: with all supported optional params
|
|
58
|
+
const body = buildBody(messages, opts);
|
|
59
|
+
const data = await doFetch(body);
|
|
60
|
+
if (!isApiError(data)) {
|
|
61
|
+
// Success — mark features as supported if we sent them
|
|
62
|
+
if (body.temperature !== undefined)
|
|
63
|
+
supportsTemperature = true;
|
|
64
|
+
if (body.response_format !== undefined)
|
|
65
|
+
supportsJsonFormat = true;
|
|
66
|
+
return extractContent(data);
|
|
67
|
+
}
|
|
68
|
+
// API error — try stripping optional params one at a time
|
|
69
|
+
const errorMsg = data.error?.message ?? "";
|
|
70
|
+
const errorCode = data.error?.code ?? "";
|
|
71
|
+
const errorType = data.error?.type ?? "";
|
|
72
|
+
const isParamError = errorCode === "bad_response_status_code" ||
|
|
73
|
+
errorType === "bad_response_status_code" ||
|
|
74
|
+
errorType === "invalid_request_error" ||
|
|
75
|
+
/temperature|response_format|json/i.test(errorMsg);
|
|
76
|
+
if (!isParamError) {
|
|
77
|
+
throw new Error(`API error: ${errorMsg}`);
|
|
78
|
+
}
|
|
79
|
+
// Retry without optional params
|
|
80
|
+
const retryBody = { model, messages };
|
|
81
|
+
if (opts?.maxTokens !== undefined)
|
|
82
|
+
retryBody.max_tokens = opts.maxTokens;
|
|
83
|
+
// Try without response_format first (most common culprit)
|
|
84
|
+
if (body.response_format !== undefined) {
|
|
85
|
+
const noFormatBody = { ...body };
|
|
86
|
+
delete noFormatBody.response_format;
|
|
87
|
+
const retryData = await doFetch(noFormatBody);
|
|
88
|
+
if (!isApiError(retryData)) {
|
|
89
|
+
supportsJsonFormat = false;
|
|
90
|
+
if (noFormatBody.temperature !== undefined)
|
|
91
|
+
supportsTemperature = true;
|
|
92
|
+
return extractContent(retryData);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
// Try with only required params (no temperature, no response_format)
|
|
96
|
+
const minimalData = await doFetch(retryBody);
|
|
97
|
+
if (!isApiError(minimalData)) {
|
|
98
|
+
if (body.temperature !== undefined)
|
|
99
|
+
supportsTemperature = false;
|
|
100
|
+
if (body.response_format !== undefined)
|
|
101
|
+
supportsJsonFormat = false;
|
|
102
|
+
return extractContent(minimalData);
|
|
103
|
+
}
|
|
104
|
+
// Everything failed
|
|
105
|
+
throw new Error(`API error: ${minimalData.error?.message ?? errorMsg}`);
|
|
106
|
+
},
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
//# sourceMappingURL=openai.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai.js","sourceRoot":"","sources":["../../../src/extractors/providers/openai.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* LLM Provider interface and types
|
|
3
|
+
* Unified interface for calling Language Models
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Chat message in the OpenAI format
|
|
7
|
+
*/
|
|
8
|
+
export interface ChatMessage {
|
|
9
|
+
role: "system" | "user" | "assistant";
|
|
10
|
+
content: string;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Options for LLM chat completion
|
|
14
|
+
*/
|
|
15
|
+
export interface LLMOpts {
|
|
16
|
+
temperature?: number;
|
|
17
|
+
maxTokens?: number;
|
|
18
|
+
responseFormat?: "json" | "text";
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* LLM Provider interface
|
|
22
|
+
* Implementations provide chat completion functionality
|
|
23
|
+
*/
|
|
24
|
+
export interface LLMProvider {
|
|
25
|
+
chat(messages: ChatMessage[], opts?: LLMOpts): Promise<string>;
|
|
26
|
+
}
|
|
27
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/extractors/providers/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;GAEG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;GAEG;AACH,MAAM,WAAW,OAAO;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,GAAG,MAAM,CAAC;CAClC;AAED;;;GAGG;AACH,MAAM,WAAW,WAAW;IAC1B,IAAI,CAAC,QAAQ,EAAE,WAAW,EAAE,EAAE,IAAI,CAAC,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAChE"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/extractors/providers/types.ts"],"names":[],"mappings":"AAAA;;;GAGG"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Signal Extractor - Core LLM-based signal extraction
|
|
3
|
+
*
|
|
4
|
+
* Orchestrates the extraction of structured signals from conversation blocks:
|
|
5
|
+
* 1. Formats conversation into readable text
|
|
6
|
+
* 2. Calls LLM with structured JSON schema
|
|
7
|
+
* 3. Validates output with Zod
|
|
8
|
+
* 4. Retries once on validation failure with error feedback
|
|
9
|
+
* 5. Returns BlockResult (ok/failed) - never returns empty on failure
|
|
10
|
+
*/
|
|
11
|
+
import type { BlockResult, CanonicalisedBlock, ConversationBlock } from "../core/types.js";
|
|
12
|
+
import type { LLMProvider } from "./providers/types.js";
|
|
13
|
+
/**
|
|
14
|
+
* Signal Extractor interface
|
|
15
|
+
*/
|
|
16
|
+
export interface SignalExtractor {
|
|
17
|
+
extract(input: CanonicalisedBlock | ConversationBlock): Promise<BlockResult>;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Build a "Detected Structural Signals" hint section from quick-entity extraction.
|
|
21
|
+
* Returns empty string when no entities are found (no section injected).
|
|
22
|
+
* Exported for unit testing.
|
|
23
|
+
*/
|
|
24
|
+
export declare function buildEntityHintsSection(text: string): string;
|
|
25
|
+
/**
|
|
26
|
+
* Create a signal extractor with the given LLM provider
|
|
27
|
+
*/
|
|
28
|
+
export declare function createSignalExtractor(provider: LLMProvider): SignalExtractor;
|
|
29
|
+
//# sourceMappingURL=signal-extractor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signal-extractor.d.ts","sourceRoot":"","sources":["../../src/extractors/signal-extractor.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAKH,OAAO,KAAK,EACV,WAAW,EACX,kBAAkB,EAClB,iBAAiB,EAIlB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,KAAK,EAAe,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAsDrE;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,OAAO,CAAC,KAAK,EAAE,kBAAkB,GAAG,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAAC;CAC9E;AAWD;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAkB5D;AAgED;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,QAAQ,EAAE,WAAW,GAAG,eAAe,CAwH5E"}
|