memkin 0.4.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/LICENSE +191 -0
- package/README.en.md +934 -0
- package/README.md +934 -0
- package/README.zh-CN.md +825 -0
- package/bin/memkin.mjs +41 -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 +642 -0
- package/dist/adapters/store.js.map +1 -0
- package/dist/cli-helpers.d.ts +12 -0
- package/dist/cli-helpers.d.ts.map +1 -0
- package/dist/cli-helpers.js +11 -0
- package/dist/cli-helpers.js.map +1 -0
- package/dist/cli-stores.d.ts +61 -0
- package/dist/cli-stores.d.ts.map +1 -0
- package/dist/cli-stores.js +130 -0
- package/dist/cli-stores.js.map +1 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +1579 -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/chat-name-resolver.d.ts +33 -0
- package/dist/collectors/feishu/chat-name-resolver.d.ts.map +1 -0
- package/dist/collectors/feishu/chat-name-resolver.js +63 -0
- package/dist/collectors/feishu/chat-name-resolver.js.map +1 -0
- package/dist/collectors/feishu/collector.d.ts +27 -0
- package/dist/collectors/feishu/collector.d.ts.map +1 -0
- package/dist/collectors/feishu/collector.js +136 -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/docs/blocks.d.ts +25 -0
- package/dist/collectors/feishu/docs/blocks.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/blocks.js +34 -0
- package/dist/collectors/feishu/docs/blocks.js.map +1 -0
- package/dist/collectors/feishu/docs/candidate.d.ts +17 -0
- package/dist/collectors/feishu/docs/candidate.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/candidate.js +36 -0
- package/dist/collectors/feishu/docs/candidate.js.map +1 -0
- package/dist/collectors/feishu/docs/config.d.ts +41 -0
- package/dist/collectors/feishu/docs/config.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/config.js +30 -0
- package/dist/collectors/feishu/docs/config.js.map +1 -0
- package/dist/collectors/feishu/docs/decision.d.ts +14 -0
- package/dist/collectors/feishu/docs/decision.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/decision.js +43 -0
- package/dist/collectors/feishu/docs/decision.js.map +1 -0
- package/dist/collectors/feishu/docs/full-builder.d.ts +17 -0
- package/dist/collectors/feishu/docs/full-builder.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/full-builder.js +136 -0
- package/dist/collectors/feishu/docs/full-builder.js.map +1 -0
- package/dist/collectors/feishu/docs/hash.d.ts +8 -0
- package/dist/collectors/feishu/docs/hash.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/hash.js +15 -0
- package/dist/collectors/feishu/docs/hash.js.map +1 -0
- package/dist/collectors/feishu/docs/ingest.d.ts +54 -0
- package/dist/collectors/feishu/docs/ingest.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/ingest.js +120 -0
- package/dist/collectors/feishu/docs/ingest.js.map +1 -0
- package/dist/collectors/feishu/docs/llm-json.d.ts +13 -0
- package/dist/collectors/feishu/docs/llm-json.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/llm-json.js +40 -0
- package/dist/collectors/feishu/docs/llm-json.js.map +1 -0
- package/dist/collectors/feishu/docs/pointer-builder.d.ts +7 -0
- package/dist/collectors/feishu/docs/pointer-builder.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/pointer-builder.js +11 -0
- package/dist/collectors/feishu/docs/pointer-builder.js.map +1 -0
- package/dist/collectors/feishu/docs/render.d.ts +8 -0
- package/dist/collectors/feishu/docs/render.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/render.js +105 -0
- package/dist/collectors/feishu/docs/render.js.map +1 -0
- package/dist/collectors/feishu/docs/run.d.ts +37 -0
- package/dist/collectors/feishu/docs/run.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/run.js +143 -0
- package/dist/collectors/feishu/docs/run.js.map +1 -0
- package/dist/collectors/feishu/docs/status.d.ts +16 -0
- package/dist/collectors/feishu/docs/status.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/status.js +24 -0
- package/dist/collectors/feishu/docs/status.js.map +1 -0
- package/dist/collectors/feishu/docs/store-writer.d.ts +32 -0
- package/dist/collectors/feishu/docs/store-writer.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/store-writer.js +71 -0
- package/dist/collectors/feishu/docs/store-writer.js.map +1 -0
- package/dist/collectors/feishu/docs/toc.d.ts +3 -0
- package/dist/collectors/feishu/docs/toc.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/toc.js +19 -0
- package/dist/collectors/feishu/docs/toc.js.map +1 -0
- package/dist/collectors/feishu/docs/triggers.d.ts +7 -0
- package/dist/collectors/feishu/docs/triggers.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/triggers.js +31 -0
- package/dist/collectors/feishu/docs/triggers.js.map +1 -0
- package/dist/collectors/feishu/docs/types.d.ts +109 -0
- package/dist/collectors/feishu/docs/types.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/types.js +2 -0
- package/dist/collectors/feishu/docs/types.js.map +1 -0
- package/dist/collectors/feishu/docs/upgrade-queue.d.ts +19 -0
- package/dist/collectors/feishu/docs/upgrade-queue.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/upgrade-queue.js +36 -0
- package/dist/collectors/feishu/docs/upgrade-queue.js.map +1 -0
- package/dist/collectors/feishu/docs/url-parser.d.ts +3 -0
- package/dist/collectors/feishu/docs/url-parser.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/url-parser.js +39 -0
- package/dist/collectors/feishu/docs/url-parser.js.map +1 -0
- package/dist/collectors/feishu/docs/walkers.d.ts +24 -0
- package/dist/collectors/feishu/docs/walkers.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/walkers.js +90 -0
- package/dist/collectors/feishu/docs/walkers.js.map +1 -0
- package/dist/collectors/feishu/docs/wiki-resolver.d.ts +15 -0
- package/dist/collectors/feishu/docs/wiki-resolver.d.ts.map +1 -0
- package/dist/collectors/feishu/docs/wiki-resolver.js +24 -0
- package/dist/collectors/feishu/docs/wiki-resolver.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 +28 -0
- package/dist/collectors/feishu/lark-cli-client.d.ts.map +1 -0
- package/dist/collectors/feishu/lark-cli-client.js +104 -0
- package/dist/collectors/feishu/lark-cli-client.js.map +1 -0
- package/dist/collectors/feishu/lark-cli-identity-backend.d.ts +28 -0
- package/dist/collectors/feishu/lark-cli-identity-backend.d.ts.map +1 -0
- package/dist/collectors/feishu/lark-cli-identity-backend.js +110 -0
- package/dist/collectors/feishu/lark-cli-identity-backend.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/self-open-id.d.ts +20 -0
- package/dist/collectors/feishu/self-open-id.d.ts.map +1 -0
- package/dist/collectors/feishu/self-open-id.js +31 -0
- package/dist/collectors/feishu/self-open-id.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 +98 -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 +156 -0
- package/dist/collectors/feishu/sources/dm.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 +149 -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 +28 -0
- package/dist/collectors/feishu/sources/messages.d.ts.map +1 -0
- package/dist/collectors/feishu/sources/messages.js +175 -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 +258 -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 +442 -0
- package/dist/config-center/schema.js.map +1 -0
- package/dist/config-center/secrets.d.ts +9 -0
- package/dist/config-center/secrets.d.ts.map +1 -0
- package/dist/config-center/secrets.js +51 -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 +43 -0
- package/dist/consolidator/consolidator.d.ts.map +1 -0
- package/dist/consolidator/consolidator.js +67 -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 +141 -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 +257 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +247 -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/env-validation.d.ts +9 -0
- package/dist/core/env-validation.d.ts.map +1 -0
- package/dist/core/env-validation.js +94 -0
- package/dist/core/env-validation.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 +42 -0
- package/dist/core/identity-resolver.d.ts.map +1 -0
- package/dist/core/identity-resolver.js +207 -0
- package/dist/core/identity-resolver.js.map +1 -0
- package/dist/core/person-identity.d.ts +140 -0
- package/dist/core/person-identity.d.ts.map +1 -0
- package/dist/core/person-identity.js +428 -0
- package/dist/core/person-identity.js.map +1 -0
- package/dist/core/person-slug.d.ts +21 -0
- package/dist/core/person-slug.d.ts.map +1 -0
- package/dist/core/person-slug.js +93 -0
- package/dist/core/person-slug.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 +37 -0
- package/dist/core/pipeline-factory.js.map +1 -0
- package/dist/core/pipeline.d.ts +77 -0
- package/dist/core/pipeline.d.ts.map +1 -0
- package/dist/core/pipeline.js +332 -0
- package/dist/core/pipeline.js.map +1 -0
- package/dist/core/resource-loader.d.ts +2 -0
- package/dist/core/resource-loader.d.ts.map +1 -0
- package/dist/core/resource-loader.js +12 -0
- package/dist/core/resource-loader.js.map +1 -0
- package/dist/core/schemas.d.ts +5142 -0
- package/dist/core/schemas.d.ts.map +1 -0
- package/dist/core/schemas.js +256 -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 +128 -0
- package/dist/core/signal-scoring.js.map +1 -0
- package/dist/core/source-ref.d.ts +4 -0
- package/dist/core/source-ref.d.ts.map +1 -0
- package/dist/core/source-ref.js +24 -0
- package/dist/core/source-ref.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 +33 -0
- package/dist/core/state.js.map +1 -0
- package/dist/core/types.d.ts +266 -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/autostart/argv.d.ts +21 -0
- package/dist/daemon/autostart/argv.d.ts.map +1 -0
- package/dist/daemon/autostart/argv.js +37 -0
- package/dist/daemon/autostart/argv.js.map +1 -0
- package/dist/daemon/autostart/daemon-state.d.ts +19 -0
- package/dist/daemon/autostart/daemon-state.d.ts.map +1 -0
- package/dist/daemon/autostart/daemon-state.js +34 -0
- package/dist/daemon/autostart/daemon-state.js.map +1 -0
- package/dist/daemon/autostart/index.d.ts +40 -0
- package/dist/daemon/autostart/index.d.ts.map +1 -0
- package/dist/daemon/autostart/index.js +146 -0
- package/dist/daemon/autostart/index.js.map +1 -0
- package/dist/daemon/autostart/launchd.d.ts +13 -0
- package/dist/daemon/autostart/launchd.d.ts.map +1 -0
- package/dist/daemon/autostart/launchd.js +51 -0
- package/dist/daemon/autostart/launchd.js.map +1 -0
- package/dist/daemon/autostart/runner.d.ts +14 -0
- package/dist/daemon/autostart/runner.d.ts.map +1 -0
- package/dist/daemon/autostart/runner.js +30 -0
- package/dist/daemon/autostart/runner.js.map +1 -0
- package/dist/daemon/autostart/systemd.d.ts +11 -0
- package/dist/daemon/autostart/systemd.d.ts.map +1 -0
- package/dist/daemon/autostart/systemd.js +40 -0
- package/dist/daemon/autostart/systemd.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/reload-manager.d.ts +41 -0
- package/dist/daemon/reload-manager.d.ts.map +1 -0
- package/dist/daemon/reload-manager.js +89 -0
- package/dist/daemon/reload-manager.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 +45 -0
- package/dist/daemon/scheduler.d.ts.map +1 -0
- package/dist/daemon/scheduler.js +217 -0
- package/dist/daemon/scheduler.js.map +1 -0
- package/dist/daemon/serve-runtime.d.ts +31 -0
- package/dist/daemon/serve-runtime.d.ts.map +1 -0
- package/dist/daemon/serve-runtime.js +230 -0
- package/dist/daemon/serve-runtime.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/playbook-extractor.d.ts +35 -0
- package/dist/extractors/playbook-extractor.d.ts.map +1 -0
- package/dist/extractors/playbook-extractor.js +98 -0
- package/dist/extractors/playbook-extractor.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 +30 -0
- package/dist/extractors/signal-extractor.d.ts.map +1 -0
- package/dist/extractors/signal-extractor.js +371 -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/hooks/handlers.d.ts +21 -0
- package/dist/hooks/handlers.d.ts.map +1 -0
- package/dist/hooks/handlers.js +22 -0
- package/dist/hooks/handlers.js.map +1 -0
- package/dist/hooks/inject.d.ts +7 -0
- package/dist/hooks/inject.d.ts.map +1 -0
- package/dist/hooks/inject.js +18 -0
- package/dist/hooks/inject.js.map +1 -0
- package/dist/hooks/install.d.ts +14 -0
- package/dist/hooks/install.d.ts.map +1 -0
- package/dist/hooks/install.js +34 -0
- package/dist/hooks/install.js.map +1 -0
- package/dist/hooks/output.d.ts +19 -0
- package/dist/hooks/output.d.ts.map +1 -0
- package/dist/hooks/output.js +13 -0
- package/dist/hooks/output.js.map +1 -0
- package/dist/hooks/recall-client.d.ts +25 -0
- package/dist/hooks/recall-client.d.ts.map +1 -0
- package/dist/hooks/recall-client.js +56 -0
- package/dist/hooks/recall-client.js.map +1 -0
- package/dist/hooks/run-event.d.ts +13 -0
- package/dist/hooks/run-event.d.ts.map +1 -0
- package/dist/hooks/run-event.js +20 -0
- package/dist/hooks/run-event.js.map +1 -0
- package/dist/hooks/settings-edit.d.ts +10 -0
- package/dist/hooks/settings-edit.d.ts.map +1 -0
- package/dist/hooks/settings-edit.js +44 -0
- package/dist/hooks/settings-edit.js.map +1 -0
- package/dist/hooks/writeback.d.ts +12 -0
- package/dist/hooks/writeback.d.ts.map +1 -0
- package/dist/hooks/writeback.js +48 -0
- package/dist/hooks/writeback.js.map +1 -0
- package/dist/install/clients/claude-code.d.ts +3 -0
- package/dist/install/clients/claude-code.d.ts.map +1 -0
- package/dist/install/clients/claude-code.js +31 -0
- package/dist/install/clients/claude-code.js.map +1 -0
- package/dist/install/clients/claude-desktop.d.ts +3 -0
- package/dist/install/clients/claude-desktop.d.ts.map +1 -0
- package/dist/install/clients/claude-desktop.js +33 -0
- package/dist/install/clients/claude-desktop.js.map +1 -0
- package/dist/install/clients/codex.d.ts +3 -0
- package/dist/install/clients/codex.d.ts.map +1 -0
- package/dist/install/clients/codex.js +33 -0
- package/dist/install/clients/codex.js.map +1 -0
- package/dist/install/clients/cursor.d.ts +3 -0
- package/dist/install/clients/cursor.d.ts.map +1 -0
- package/dist/install/clients/cursor.js +37 -0
- package/dist/install/clients/cursor.js.map +1 -0
- package/dist/install/clients/hermes.d.ts +3 -0
- package/dist/install/clients/hermes.d.ts.map +1 -0
- package/dist/install/clients/hermes.js +37 -0
- package/dist/install/clients/hermes.js.map +1 -0
- package/dist/install/clients/index.d.ts +4 -0
- package/dist/install/clients/index.d.ts.map +1 -0
- package/dist/install/clients/index.js +18 -0
- package/dist/install/clients/index.js.map +1 -0
- package/dist/install/clients/windsurf.d.ts +3 -0
- package/dist/install/clients/windsurf.d.ts.map +1 -0
- package/dist/install/clients/windsurf.js +34 -0
- package/dist/install/clients/windsurf.js.map +1 -0
- package/dist/install/command.d.ts +14 -0
- package/dist/install/command.d.ts.map +1 -0
- package/dist/install/command.js +34 -0
- package/dist/install/command.js.map +1 -0
- package/dist/install/directive.d.ts +7 -0
- package/dist/install/directive.d.ts.map +1 -0
- package/dist/install/directive.js +31 -0
- package/dist/install/directive.js.map +1 -0
- package/dist/install/index.d.ts +28 -0
- package/dist/install/index.d.ts.map +1 -0
- package/dist/install/index.js +122 -0
- package/dist/install/index.js.map +1 -0
- package/dist/install/json-config.d.ts +8 -0
- package/dist/install/json-config.d.ts.map +1 -0
- package/dist/install/json-config.js +44 -0
- package/dist/install/json-config.js.map +1 -0
- package/dist/install/marked-block.d.ts +11 -0
- package/dist/install/marked-block.d.ts.map +1 -0
- package/dist/install/marked-block.js +34 -0
- package/dist/install/marked-block.js.map +1 -0
- package/dist/install/mcp-entry.d.ts +11 -0
- package/dist/install/mcp-entry.d.ts.map +1 -0
- package/dist/install/mcp-entry.js +7 -0
- package/dist/install/mcp-entry.js.map +1 -0
- package/dist/install/skill.d.ts +4 -0
- package/dist/install/skill.d.ts.map +1 -0
- package/dist/install/skill.js +61 -0
- package/dist/install/skill.js.map +1 -0
- package/dist/install/toml-config.d.ts +4 -0
- package/dist/install/toml-config.d.ts.map +1 -0
- package/dist/install/toml-config.js +54 -0
- package/dist/install/toml-config.js.map +1 -0
- package/dist/install/types.d.ts +40 -0
- package/dist/install/types.d.ts.map +1 -0
- package/dist/install/types.js +10 -0
- package/dist/install/types.js.map +1 -0
- package/dist/install/yaml-config.d.ts +4 -0
- package/dist/install/yaml-config.d.ts.map +1 -0
- package/dist/install/yaml-config.js +19 -0
- package/dist/install/yaml-config.js.map +1 -0
- package/dist/lifecycle/down.d.ts +19 -0
- package/dist/lifecycle/down.d.ts.map +1 -0
- package/dist/lifecycle/down.js +24 -0
- package/dist/lifecycle/down.js.map +1 -0
- package/dist/lifecycle/health-poll.d.ts +19 -0
- package/dist/lifecycle/health-poll.d.ts.map +1 -0
- package/dist/lifecycle/health-poll.js +39 -0
- package/dist/lifecycle/health-poll.js.map +1 -0
- package/dist/lifecycle/install-state.d.ts +34 -0
- package/dist/lifecycle/install-state.d.ts.map +1 -0
- package/dist/lifecycle/install-state.js +70 -0
- package/dist/lifecycle/install-state.js.map +1 -0
- package/dist/lifecycle/legacy-migration.d.ts +58 -0
- package/dist/lifecycle/legacy-migration.d.ts.map +1 -0
- package/dist/lifecycle/legacy-migration.js +212 -0
- package/dist/lifecycle/legacy-migration.js.map +1 -0
- package/dist/lifecycle/lifecycle-lock.d.ts +20 -0
- package/dist/lifecycle/lifecycle-lock.d.ts.map +1 -0
- package/dist/lifecycle/lifecycle-lock.js +98 -0
- package/dist/lifecycle/lifecycle-lock.js.map +1 -0
- package/dist/lifecycle/run-up.d.ts +38 -0
- package/dist/lifecycle/run-up.d.ts.map +1 -0
- package/dist/lifecycle/run-up.js +307 -0
- package/dist/lifecycle/run-up.js.map +1 -0
- package/dist/lifecycle/status.d.ts +38 -0
- package/dist/lifecycle/status.d.ts.map +1 -0
- package/dist/lifecycle/status.js +41 -0
- package/dist/lifecycle/status.js.map +1 -0
- package/dist/lifecycle/up.d.ts +35 -0
- package/dist/lifecycle/up.d.ts.map +1 -0
- package/dist/lifecycle/up.js +45 -0
- package/dist/lifecycle/up.js.map +1 -0
- package/dist/processors/privacy.d.ts +101 -0
- package/dist/processors/privacy.d.ts.map +1 -0
- package/dist/processors/privacy.js +273 -0
- package/dist/processors/privacy.js.map +1 -0
- package/dist/profile/accumulate.d.ts +28 -0
- package/dist/profile/accumulate.d.ts.map +1 -0
- package/dist/profile/accumulate.js +48 -0
- package/dist/profile/accumulate.js.map +1 -0
- package/dist/profile/behavior.d.ts +32 -0
- package/dist/profile/behavior.d.ts.map +1 -0
- package/dist/profile/behavior.js +122 -0
- package/dist/profile/behavior.js.map +1 -0
- package/dist/profile/four-color.d.ts +12 -0
- package/dist/profile/four-color.d.ts.map +1 -0
- package/dist/profile/four-color.js +39 -0
- package/dist/profile/four-color.js.map +1 -0
- package/dist/profile/profile-synth.d.ts +27 -0
- package/dist/profile/profile-synth.d.ts.map +1 -0
- package/dist/profile/profile-synth.js +174 -0
- package/dist/profile/profile-synth.js.map +1 -0
- package/dist/profile/types.d.ts +84 -0
- package/dist/profile/types.d.ts.map +1 -0
- package/dist/profile/types.js +11 -0
- package/dist/profile/types.js.map +1 -0
- package/dist/server/api.d.ts +49 -0
- package/dist/server/api.d.ts.map +1 -0
- package/dist/server/api.js +502 -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 +146 -0
- package/dist/server/backfill-routes.js.map +1 -0
- package/dist/server/chat-name-refresh-job.d.ts +33 -0
- package/dist/server/chat-name-refresh-job.d.ts.map +1 -0
- package/dist/server/chat-name-refresh-job.js +120 -0
- package/dist/server/chat-name-refresh-job.js.map +1 -0
- package/dist/server/chat-name-routes.d.ts +13 -0
- package/dist/server/chat-name-routes.d.ts.map +1 -0
- package/dist/server/chat-name-routes.js +81 -0
- package/dist/server/chat-name-routes.js.map +1 -0
- package/dist/server/config-routes.d.ts +10 -0
- package/dist/server/config-routes.d.ts.map +1 -0
- package/dist/server/config-routes.js +122 -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-http-runtime.d.ts +28 -0
- package/dist/server/mcp-http-runtime.d.ts.map +1 -0
- package/dist/server/mcp-http-runtime.js +24 -0
- package/dist/server/mcp-http-runtime.js.map +1 -0
- package/dist/server/mcp-http.d.ts +41 -0
- package/dist/server/mcp-http.d.ts.map +1 -0
- package/dist/server/mcp-http.js +139 -0
- package/dist/server/mcp-http.js.map +1 -0
- package/dist/server/mcp.d.ts +292 -0
- package/dist/server/mcp.d.ts.map +1 -0
- package/dist/server/mcp.js +1146 -0
- package/dist/server/mcp.js.map +1 -0
- package/dist/server/open-browser.d.ts +3 -0
- package/dist/server/open-browser.d.ts.map +1 -0
- package/dist/server/open-browser.js +12 -0
- package/dist/server/open-browser.js.map +1 -0
- package/dist/server/runtime.d.ts +13 -0
- package/dist/server/runtime.d.ts.map +1 -0
- package/dist/server/runtime.js +27 -0
- package/dist/server/runtime.js.map +1 -0
- package/dist/server/server-security.d.ts +51 -0
- package/dist/server/server-security.d.ts.map +1 -0
- package/dist/server/server-security.js +76 -0
- package/dist/server/server-security.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 +49 -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 +69 -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/doctor.d.ts +48 -0
- package/dist/setup/doctor.d.ts.map +1 -0
- package/dist/setup/doctor.js +157 -0
- package/dist/setup/doctor.js.map +1 -0
- package/dist/setup/generate-config.d.ts +13 -0
- package/dist/setup/generate-config.d.ts.map +1 -0
- package/dist/setup/generate-config.js +163 -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 +20 -0
- package/dist/setup/init-wizard.d.ts.map +1 -0
- package/dist/setup/init-wizard.js +531 -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 +30 -0
- package/dist/setup/validate-config.d.ts.map +1 -0
- package/dist/setup/validate-config.js +45 -0
- package/dist/setup/validate-config.js.map +1 -0
- package/dist/store/chunks.d.ts +25 -0
- package/dist/store/chunks.d.ts.map +1 -0
- package/dist/store/chunks.js +78 -0
- package/dist/store/chunks.js.map +1 -0
- package/dist/store/data-dir-lock.d.ts +15 -0
- package/dist/store/data-dir-lock.d.ts.map +1 -0
- package/dist/store/data-dir-lock.js +96 -0
- package/dist/store/data-dir-lock.js.map +1 -0
- package/dist/store/database.d.ts +31 -0
- package/dist/store/database.d.ts.map +1 -0
- package/dist/store/database.js +113 -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/engine-factory.d.ts +4 -0
- package/dist/store/engine-factory.d.ts.map +1 -0
- package/dist/store/engine-factory.js +18 -0
- package/dist/store/engine-factory.js.map +1 -0
- package/dist/store/graph.d.ts +75 -0
- package/dist/store/graph.d.ts.map +1 -0
- package/dist/store/graph.js +276 -0
- package/dist/store/graph.js.map +1 -0
- package/dist/store/managed/managed-engine.d.ts +35 -0
- package/dist/store/managed/managed-engine.d.ts.map +1 -0
- package/dist/store/managed/managed-engine.js +40 -0
- package/dist/store/managed/managed-engine.js.map +1 -0
- package/dist/store/managed/managed-lock.d.ts +2 -0
- package/dist/store/managed/managed-lock.d.ts.map +1 -0
- package/dist/store/managed/managed-lock.js +68 -0
- package/dist/store/managed/managed-lock.js.map +1 -0
- package/dist/store/managed/new-install.d.ts +12 -0
- package/dist/store/managed/new-install.d.ts.map +1 -0
- package/dist/store/managed/new-install.js +23 -0
- package/dist/store/managed/new-install.js.map +1 -0
- package/dist/store/managed/pg-paths.d.ts +28 -0
- package/dist/store/managed/pg-paths.d.ts.map +1 -0
- package/dist/store/managed/pg-paths.js +41 -0
- package/dist/store/managed/pg-paths.js.map +1 -0
- package/dist/store/managed/pg-runtime-provider.d.ts +47 -0
- package/dist/store/managed/pg-runtime-provider.d.ts.map +1 -0
- package/dist/store/managed/pg-runtime-provider.js +249 -0
- package/dist/store/managed/pg-runtime-provider.js.map +1 -0
- package/dist/store/managed/pg-supervisor.d.ts +30 -0
- package/dist/store/managed/pg-supervisor.d.ts.map +1 -0
- package/dist/store/managed/pg-supervisor.js +308 -0
- package/dist/store/managed/pg-supervisor.js.map +1 -0
- package/dist/store/managed/recovery-loop.d.ts +41 -0
- package/dist/store/managed/recovery-loop.d.ts.map +1 -0
- package/dist/store/managed/recovery-loop.js +87 -0
- package/dist/store/managed/recovery-loop.js.map +1 -0
- package/dist/store/managed/stop-from-state.d.ts +11 -0
- package/dist/store/managed/stop-from-state.d.ts.map +1 -0
- package/dist/store/managed/stop-from-state.js +26 -0
- package/dist/store/managed/stop-from-state.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 +121 -0
- package/dist/store/migrations/index.js.map +1 -0
- package/dist/store/pages.d.ts +81 -0
- package/dist/store/pages.d.ts.map +1 -0
- package/dist/store/pages.js +286 -0
- package/dist/store/pages.js.map +1 -0
- package/dist/store/person-behavior.d.ts +37 -0
- package/dist/store/person-behavior.d.ts.map +1 -0
- package/dist/store/person-behavior.js +134 -0
- package/dist/store/person-behavior.js.map +1 -0
- package/dist/store/pglite-assets.d.ts +15 -0
- package/dist/store/pglite-assets.d.ts.map +1 -0
- package/dist/store/pglite-assets.js +47 -0
- package/dist/store/pglite-assets.js.map +1 -0
- package/dist/store/pglite-executor.d.ts +21 -0
- package/dist/store/pglite-executor.d.ts.map +1 -0
- package/dist/store/pglite-executor.js +61 -0
- package/dist/store/pglite-executor.js.map +1 -0
- package/dist/store/postgres-executor.d.ts +16 -0
- package/dist/store/postgres-executor.d.ts.map +1 -0
- package/dist/store/postgres-executor.js +77 -0
- package/dist/store/postgres-executor.js.map +1 -0
- package/dist/store/query-rewrite.d.ts +28 -0
- package/dist/store/query-rewrite.d.ts.map +1 -0
- package/dist/store/query-rewrite.js +97 -0
- package/dist/store/query-rewrite.js.map +1 -0
- package/dist/store/search.d.ts +65 -0
- package/dist/store/search.d.ts.map +1 -0
- package/dist/store/search.js +312 -0
- package/dist/store/search.js.map +1 -0
- package/dist/store/sequence-sync.d.ts +22 -0
- package/dist/store/sequence-sync.d.ts.map +1 -0
- package/dist/store/sequence-sync.js +46 -0
- package/dist/store/sequence-sync.js.map +1 -0
- package/dist/store/sql-executor.d.ts +17 -0
- package/dist/store/sql-executor.d.ts.map +1 -0
- package/dist/store/sql-executor.js +3 -0
- package/dist/store/sql-executor.js.map +1 -0
- package/dist/store/store-meta.d.ts +10 -0
- package/dist/store/store-meta.d.ts.map +1 -0
- package/dist/store/store-meta.js +13 -0
- package/dist/store/store-meta.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 +35 -0
- package/dist/store/tags.js.map +1 -0
- package/dist/store/timeline.d.ts +38 -0
- package/dist/store/timeline.d.ts.map +1 -0
- package/dist/store/timeline.js +173 -0
- package/dist/store/timeline.js.map +1 -0
- package/dist/store/trgm-search.d.ts +13 -0
- package/dist/store/trgm-search.d.ts.map +1 -0
- package/dist/store/trgm-search.js +53 -0
- package/dist/store/trgm-search.js.map +1 -0
- package/dist/store/wikilink.d.ts +17 -0
- package/dist/store/wikilink.d.ts.map +1 -0
- package/dist/store/wikilink.js +58 -0
- package/dist/store/wikilink.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 +543 -0
- package/dist/sync/obsidian.js.map +1 -0
- package/dist/synth/cache.d.ts +17 -0
- package/dist/synth/cache.d.ts.map +1 -0
- package/dist/synth/cache.js +67 -0
- package/dist/synth/cache.js.map +1 -0
- package/dist/synth/citations.d.ts +12 -0
- package/dist/synth/citations.d.ts.map +1 -0
- package/dist/synth/citations.js +28 -0
- package/dist/synth/citations.js.map +1 -0
- package/dist/synth/context.d.ts +10 -0
- package/dist/synth/context.d.ts.map +1 -0
- package/dist/synth/context.js +67 -0
- package/dist/synth/context.js.map +1 -0
- package/dist/synth/engine.d.ts +16 -0
- package/dist/synth/engine.d.ts.map +1 -0
- package/dist/synth/engine.js +111 -0
- package/dist/synth/engine.js.map +1 -0
- package/dist/synth/gaps.d.ts +17 -0
- package/dist/synth/gaps.d.ts.map +1 -0
- package/dist/synth/gaps.js +57 -0
- package/dist/synth/gaps.js.map +1 -0
- package/dist/synth/index.d.ts +6 -0
- package/dist/synth/index.d.ts.map +1 -0
- package/dist/synth/index.js +6 -0
- package/dist/synth/index.js.map +1 -0
- package/dist/synth/intent.d.ts +6 -0
- package/dist/synth/intent.d.ts.map +1 -0
- package/dist/synth/intent.js +13 -0
- package/dist/synth/intent.js.map +1 -0
- package/dist/synth/intents/daily-report.d.ts +7 -0
- package/dist/synth/intents/daily-report.d.ts.map +1 -0
- package/dist/synth/intents/daily-report.js +37 -0
- package/dist/synth/intents/daily-report.js.map +1 -0
- package/dist/synth/intents/index.d.ts +2 -0
- package/dist/synth/intents/index.d.ts.map +1 -0
- package/dist/synth/intents/index.js +12 -0
- package/dist/synth/intents/index.js.map +1 -0
- package/dist/synth/intents/person-strategy.d.ts +40 -0
- package/dist/synth/intents/person-strategy.d.ts.map +1 -0
- package/dist/synth/intents/person-strategy.js +66 -0
- package/dist/synth/intents/person-strategy.js.map +1 -0
- package/dist/synth/intents/recall.d.ts +8 -0
- package/dist/synth/intents/recall.d.ts.map +1 -0
- package/dist/synth/intents/recall.js +26 -0
- package/dist/synth/intents/recall.js.map +1 -0
- package/dist/synth/intents/troubleshoot.d.ts +11 -0
- package/dist/synth/intents/troubleshoot.d.ts.map +1 -0
- package/dist/synth/intents/troubleshoot.js +66 -0
- package/dist/synth/intents/troubleshoot.js.map +1 -0
- package/dist/synth/scope.d.ts +13 -0
- package/dist/synth/scope.d.ts.map +1 -0
- package/dist/synth/scope.js +139 -0
- package/dist/synth/scope.js.map +1 -0
- package/dist/synth/types.d.ts +117 -0
- package/dist/synth/types.d.ts.map +1 -0
- package/dist/synth/types.js +2 -0
- package/dist/synth/types.js.map +1 -0
- package/package.json +98 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
import { appendFileSync, existsSync, readFileSync, statSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
const DEFAULT_MAX_BYTES = 5 * 1024 * 1024;
|
|
4
|
+
const MS_24H = 24 * 3600 * 1000;
|
|
5
|
+
export class RunHistory {
|
|
6
|
+
filePath;
|
|
7
|
+
maxBytes;
|
|
8
|
+
constructor(stateDir, maxBytes = DEFAULT_MAX_BYTES) {
|
|
9
|
+
this.filePath = join(stateDir, "scheduler-runs.jsonl");
|
|
10
|
+
this.maxBytes = maxBytes;
|
|
11
|
+
}
|
|
12
|
+
append(record) {
|
|
13
|
+
appendFileSync(this.filePath, `${JSON.stringify(record)}\n`);
|
|
14
|
+
this.rotateIfNeeded();
|
|
15
|
+
}
|
|
16
|
+
stats24h(now = Date.now()) {
|
|
17
|
+
const cutoff = now - MS_24H;
|
|
18
|
+
const records = this.readRecords().filter((r) => r.ts >= cutoff);
|
|
19
|
+
return {
|
|
20
|
+
total_runs: records.length,
|
|
21
|
+
total_msgs: records.reduce((sum, r) => sum + r.msgs, 0),
|
|
22
|
+
total_blocks: records.reduce((sum, r) => sum + r.blocks, 0),
|
|
23
|
+
ok_blocks: records.reduce((sum, r) => sum + r.ok, 0),
|
|
24
|
+
skipped_blocks: records.reduce((sum, r) => sum + r.skipped, 0),
|
|
25
|
+
failed_blocks: records.reduce((sum, r) => sum + r.failed, 0),
|
|
26
|
+
};
|
|
27
|
+
}
|
|
28
|
+
readRecords() {
|
|
29
|
+
if (!existsSync(this.filePath))
|
|
30
|
+
return [];
|
|
31
|
+
const lines = readFileSync(this.filePath, "utf-8").trim().split("\n").filter(Boolean);
|
|
32
|
+
const records = [];
|
|
33
|
+
for (const line of lines) {
|
|
34
|
+
try {
|
|
35
|
+
records.push(JSON.parse(line));
|
|
36
|
+
}
|
|
37
|
+
catch {
|
|
38
|
+
// skip malformed lines
|
|
39
|
+
}
|
|
40
|
+
}
|
|
41
|
+
return records;
|
|
42
|
+
}
|
|
43
|
+
rotateIfNeeded() {
|
|
44
|
+
if (!existsSync(this.filePath))
|
|
45
|
+
return;
|
|
46
|
+
const size = statSync(this.filePath).size;
|
|
47
|
+
if (size <= this.maxBytes)
|
|
48
|
+
return;
|
|
49
|
+
const lines = readFileSync(this.filePath, "utf-8").trim().split("\n");
|
|
50
|
+
const keep = lines.slice(Math.floor(lines.length / 2));
|
|
51
|
+
writeFileSync(this.filePath, `${keep.join("\n")}\n`);
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=run-history.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-history.js","sourceRoot":"","sources":["../../src/daemon/run-history.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import type { SchedulerConfig } from "../core/config.js";
|
|
2
|
+
import type { PipelineResult } from "../core/pipeline.js";
|
|
3
|
+
import { type SourceState } from "./source-schedule.js";
|
|
4
|
+
export type RunSourceFn = (sourceId: string) => Promise<PipelineResult>;
|
|
5
|
+
export declare class Scheduler {
|
|
6
|
+
private schedules;
|
|
7
|
+
private timer;
|
|
8
|
+
private running;
|
|
9
|
+
private daemon_started_at;
|
|
10
|
+
private last_heartbeat_at;
|
|
11
|
+
private tick_interval_ms;
|
|
12
|
+
private readonly state_path;
|
|
13
|
+
private onTick?;
|
|
14
|
+
private runSource?;
|
|
15
|
+
private pending;
|
|
16
|
+
private tickPromise;
|
|
17
|
+
private draining;
|
|
18
|
+
private aborter;
|
|
19
|
+
constructor(config: SchedulerConfig, stateDir: string);
|
|
20
|
+
getSourceIds(): string[];
|
|
21
|
+
getSourceState(sourceId: string): (SourceState & {
|
|
22
|
+
interval_secs: number;
|
|
23
|
+
}) | undefined;
|
|
24
|
+
setRunSource(fn: RunSourceFn): void;
|
|
25
|
+
setOnTick(fn: (sourceId: string, result: PipelineResult, duration_ms: number) => void): void;
|
|
26
|
+
start(): Promise<void>;
|
|
27
|
+
stop(): void;
|
|
28
|
+
tick(): Promise<void>;
|
|
29
|
+
private fatalResult;
|
|
30
|
+
drain(): Promise<void>;
|
|
31
|
+
getHeartbeat(): {
|
|
32
|
+
daemon_started_at: number;
|
|
33
|
+
last_heartbeat_at: number;
|
|
34
|
+
};
|
|
35
|
+
getAlertSources(): string[];
|
|
36
|
+
getAlertDetails(): Array<{
|
|
37
|
+
source_id: string;
|
|
38
|
+
state: SourceState;
|
|
39
|
+
}>;
|
|
40
|
+
reconcile(config: SchedulerConfig): void;
|
|
41
|
+
private applyConfig;
|
|
42
|
+
private persistState;
|
|
43
|
+
private loadState;
|
|
44
|
+
}
|
|
45
|
+
//# sourceMappingURL=scheduler.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.d.ts","sourceRoot":"","sources":["../../src/daemon/scheduler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AACzD,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAkC,KAAK,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAQxF,MAAM,MAAM,WAAW,GAAG,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC;AAExE,qBAAa,SAAS;IACpB,OAAO,CAAC,SAAS,CAA0C;IAC3D,OAAO,CAAC,KAAK,CAA+C;IAC5D,OAAO,CAAC,OAAO,CAAS;IACxB,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,iBAAiB,CAAS;IAClC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,MAAM,CAAC,CAA0E;IACzF,OAAO,CAAC,SAAS,CAAC,CAAc;IAChC,OAAO,CAAC,OAAO,CAAgC;IAC/C,OAAO,CAAC,WAAW,CAA8B;IACjD,OAAO,CAAC,QAAQ,CAAS;IACzB,OAAO,CAAC,OAAO,CAAgC;gBAEnC,MAAM,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM;IA0BrD,YAAY,IAAI,MAAM,EAAE;IAIxB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,CAAC,WAAW,GAAG;QAAE,aAAa,EAAE,MAAM,CAAA;KAAE,CAAC,GAAG,SAAS;IAMvF,YAAY,CAAC,EAAE,EAAE,WAAW,GAAG,IAAI;IAInC,SAAS,CAAC,EAAE,EAAE,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,cAAc,EAAE,WAAW,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAItF,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAK5B,IAAI,IAAI,IAAI;IAMN,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAmD3B,OAAO,CAAC,WAAW;IAgBb,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAW5B,YAAY,IAAI;QAAE,iBAAiB,EAAE,MAAM,CAAC;QAAC,iBAAiB,EAAE,MAAM,CAAA;KAAE;IAIxE,eAAe,IAAI,MAAM,EAAE;IAM3B,eAAe,IAAI,KAAK,CAAC;QAAE,SAAS,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,WAAW,CAAA;KAAE,CAAC;IAMnE,SAAS,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI;IASxC,OAAO,CAAC,WAAW;IA8BnB,OAAO,CAAC,YAAY;IAYpB,OAAO,CAAC,SAAS;CAQlB"}
|
|
@@ -0,0 +1,217 @@
|
|
|
1
|
+
import { existsSync, readFileSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
import { classifyResult, SourceSchedule } from "./source-schedule.js";
|
|
4
|
+
export class Scheduler {
|
|
5
|
+
schedules = new Map();
|
|
6
|
+
timer = null;
|
|
7
|
+
running = false;
|
|
8
|
+
daemon_started_at;
|
|
9
|
+
last_heartbeat_at;
|
|
10
|
+
tick_interval_ms;
|
|
11
|
+
state_path;
|
|
12
|
+
onTick;
|
|
13
|
+
runSource;
|
|
14
|
+
pending = null;
|
|
15
|
+
tickPromise = null;
|
|
16
|
+
draining = false;
|
|
17
|
+
aborter = null;
|
|
18
|
+
constructor(config, stateDir) {
|
|
19
|
+
this.tick_interval_ms = config.tick_interval_secs * 1000;
|
|
20
|
+
this.state_path = join(stateDir, "scheduler-state.json");
|
|
21
|
+
this.daemon_started_at = Date.now();
|
|
22
|
+
this.last_heartbeat_at = Date.now();
|
|
23
|
+
const saved = this.loadState();
|
|
24
|
+
for (const [sourceId, sourceConfig] of Object.entries(config.sources)) {
|
|
25
|
+
if (sourceConfig.enabled === false)
|
|
26
|
+
continue;
|
|
27
|
+
const interval = sourceConfig.interval_secs ?? config.defaults.interval_secs;
|
|
28
|
+
if (saved?.sources[sourceId]) {
|
|
29
|
+
this.schedules.set(sourceId, SourceSchedule.fromSerialized(sourceId, interval, saved.sources[sourceId]));
|
|
30
|
+
}
|
|
31
|
+
else {
|
|
32
|
+
this.schedules.set(sourceId, new SourceSchedule(sourceId, interval));
|
|
33
|
+
}
|
|
34
|
+
}
|
|
35
|
+
if (saved) {
|
|
36
|
+
this.daemon_started_at = saved.daemon_started_at;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
getSourceIds() {
|
|
40
|
+
return Array.from(this.schedules.keys());
|
|
41
|
+
}
|
|
42
|
+
getSourceState(sourceId) {
|
|
43
|
+
const s = this.schedules.get(sourceId);
|
|
44
|
+
if (!s)
|
|
45
|
+
return undefined;
|
|
46
|
+
return { ...s.state, interval_secs: s.interval_secs };
|
|
47
|
+
}
|
|
48
|
+
setRunSource(fn) {
|
|
49
|
+
this.runSource = fn;
|
|
50
|
+
}
|
|
51
|
+
setOnTick(fn) {
|
|
52
|
+
this.onTick = fn;
|
|
53
|
+
}
|
|
54
|
+
async start() {
|
|
55
|
+
this.tick();
|
|
56
|
+
this.timer = setInterval(() => this.tick(), this.tick_interval_ms);
|
|
57
|
+
}
|
|
58
|
+
stop() {
|
|
59
|
+
if (this.timer)
|
|
60
|
+
clearInterval(this.timer);
|
|
61
|
+
this.timer = null;
|
|
62
|
+
this.persistState();
|
|
63
|
+
}
|
|
64
|
+
async tick() {
|
|
65
|
+
if (this.running)
|
|
66
|
+
return;
|
|
67
|
+
if (this.draining)
|
|
68
|
+
return;
|
|
69
|
+
this.running = true;
|
|
70
|
+
this.aborter = new AbortController();
|
|
71
|
+
const signal = this.aborter.signal;
|
|
72
|
+
const run = (async () => {
|
|
73
|
+
this.last_heartbeat_at = Date.now();
|
|
74
|
+
try {
|
|
75
|
+
// Snapshot eligible sources before applying pending so that sources
|
|
76
|
+
// newly added by applyConfig are not run in the same tick they appear.
|
|
77
|
+
const eligible = [...this.schedules.keys()];
|
|
78
|
+
if (this.pending) {
|
|
79
|
+
this.applyConfig(this.pending);
|
|
80
|
+
this.pending = null;
|
|
81
|
+
}
|
|
82
|
+
const now = Date.now();
|
|
83
|
+
for (const sourceId of eligible) {
|
|
84
|
+
if (signal.aborted)
|
|
85
|
+
break;
|
|
86
|
+
const schedule = this.schedules.get(sourceId);
|
|
87
|
+
if (!schedule)
|
|
88
|
+
continue; // removed by applyConfig
|
|
89
|
+
if (!schedule.isDue(now))
|
|
90
|
+
continue;
|
|
91
|
+
if (!this.runSource)
|
|
92
|
+
continue;
|
|
93
|
+
this.last_heartbeat_at = Date.now();
|
|
94
|
+
const start = Date.now();
|
|
95
|
+
try {
|
|
96
|
+
const result = await this.runSource(sourceId);
|
|
97
|
+
const duration_ms = Date.now() - start;
|
|
98
|
+
schedule.recordResult(classifyResult(result), Date.now(), result.error);
|
|
99
|
+
this.onTick?.(sourceId, result, duration_ms);
|
|
100
|
+
}
|
|
101
|
+
catch (err) {
|
|
102
|
+
const duration_ms = Date.now() - start;
|
|
103
|
+
schedule.recordResult("failed", Date.now(), err instanceof Error ? err.message : String(err));
|
|
104
|
+
this.onTick?.(sourceId, this.fatalResult(err), duration_ms);
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
}
|
|
108
|
+
finally {
|
|
109
|
+
this.running = false;
|
|
110
|
+
this.last_heartbeat_at = Date.now();
|
|
111
|
+
this.persistState();
|
|
112
|
+
}
|
|
113
|
+
})();
|
|
114
|
+
this.tickPromise = run;
|
|
115
|
+
await run;
|
|
116
|
+
this.tickPromise = null;
|
|
117
|
+
}
|
|
118
|
+
fatalResult(err) {
|
|
119
|
+
return {
|
|
120
|
+
fatal: true,
|
|
121
|
+
error: err instanceof Error ? err.message : String(err),
|
|
122
|
+
totalMessages: 0,
|
|
123
|
+
totalBlocks: 0,
|
|
124
|
+
okBlocks: 0,
|
|
125
|
+
skippedBlocks: 0,
|
|
126
|
+
failedBlocks: 0,
|
|
127
|
+
okMessages: [],
|
|
128
|
+
skippedMessages: [],
|
|
129
|
+
failedMessages: [],
|
|
130
|
+
warnings: [],
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
async drain() {
|
|
134
|
+
this.draining = true;
|
|
135
|
+
if (this.timer) {
|
|
136
|
+
clearInterval(this.timer);
|
|
137
|
+
this.timer = null;
|
|
138
|
+
}
|
|
139
|
+
this.aborter?.abort();
|
|
140
|
+
if (this.tickPromise)
|
|
141
|
+
await this.tickPromise;
|
|
142
|
+
this.persistState();
|
|
143
|
+
}
|
|
144
|
+
getHeartbeat() {
|
|
145
|
+
return { daemon_started_at: this.daemon_started_at, last_heartbeat_at: this.last_heartbeat_at };
|
|
146
|
+
}
|
|
147
|
+
getAlertSources() {
|
|
148
|
+
return Array.from(this.schedules.entries())
|
|
149
|
+
.filter(([_, s]) => s.shouldAlert())
|
|
150
|
+
.map(([id]) => id);
|
|
151
|
+
}
|
|
152
|
+
getAlertDetails() {
|
|
153
|
+
return Array.from(this.schedules.entries())
|
|
154
|
+
.filter(([_, s]) => s.shouldAlert())
|
|
155
|
+
.map(([id, s]) => ({ source_id: id, state: s.serialize() }));
|
|
156
|
+
}
|
|
157
|
+
reconcile(config) {
|
|
158
|
+
if (this.running) {
|
|
159
|
+
// most-recent wins; earlier pending superseded
|
|
160
|
+
this.pending = config;
|
|
161
|
+
return;
|
|
162
|
+
}
|
|
163
|
+
this.applyConfig(config);
|
|
164
|
+
}
|
|
165
|
+
applyConfig(config) {
|
|
166
|
+
const nextIds = new Set(Object.entries(config.sources)
|
|
167
|
+
.filter(([, c]) => c.enabled !== false)
|
|
168
|
+
.map(([id]) => id));
|
|
169
|
+
for (const id of [...this.schedules.keys()]) {
|
|
170
|
+
if (!nextIds.has(id))
|
|
171
|
+
this.schedules.delete(id);
|
|
172
|
+
}
|
|
173
|
+
for (const [id, sourceConfig] of Object.entries(config.sources)) {
|
|
174
|
+
if (sourceConfig.enabled === false)
|
|
175
|
+
continue;
|
|
176
|
+
const interval = sourceConfig.interval_secs ?? config.defaults.interval_secs;
|
|
177
|
+
const existing = this.schedules.get(id);
|
|
178
|
+
if (!existing) {
|
|
179
|
+
this.schedules.set(id, new SourceSchedule(id, interval));
|
|
180
|
+
}
|
|
181
|
+
else if (existing.interval_secs !== interval) {
|
|
182
|
+
this.schedules.set(id, SourceSchedule.fromSerialized(id, interval, existing.serialize()));
|
|
183
|
+
}
|
|
184
|
+
}
|
|
185
|
+
const newTick = config.tick_interval_secs * 1000;
|
|
186
|
+
if (newTick !== this.tick_interval_ms) {
|
|
187
|
+
this.tick_interval_ms = newTick;
|
|
188
|
+
if (this.timer) {
|
|
189
|
+
clearInterval(this.timer);
|
|
190
|
+
this.timer = setInterval(() => this.tick(), this.tick_interval_ms);
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
this.persistState();
|
|
194
|
+
}
|
|
195
|
+
persistState() {
|
|
196
|
+
const data = {
|
|
197
|
+
daemon_started_at: this.daemon_started_at,
|
|
198
|
+
last_heartbeat_at: this.last_heartbeat_at,
|
|
199
|
+
sources: {},
|
|
200
|
+
};
|
|
201
|
+
for (const [id, s] of this.schedules) {
|
|
202
|
+
data.sources[id] = s.serialize();
|
|
203
|
+
}
|
|
204
|
+
writeFileSync(this.state_path, `${JSON.stringify(data, null, 2)}\n`);
|
|
205
|
+
}
|
|
206
|
+
loadState() {
|
|
207
|
+
if (!existsSync(this.state_path))
|
|
208
|
+
return null;
|
|
209
|
+
try {
|
|
210
|
+
return JSON.parse(readFileSync(this.state_path, "utf-8"));
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
//# sourceMappingURL=scheduler.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"scheduler.js","sourceRoot":"","sources":["../../src/daemon/scheduler.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import type { LoadedConfig } from "../core/config.js";
|
|
2
|
+
import type { DaemonStatus, StoreContext } from "../server/api.js";
|
|
3
|
+
import { ChatNameRefreshJob } from "../server/chat-name-refresh-job.js";
|
|
4
|
+
import { Scheduler } from "./scheduler.js";
|
|
5
|
+
/** A serve session's config-derived runtime, rebuilt/replaced as a whole on reload. */
|
|
6
|
+
export interface ServeRuntime {
|
|
7
|
+
scheduler: Scheduler | undefined;
|
|
8
|
+
chatNameRefreshJob: ChatNameRefreshJob | undefined;
|
|
9
|
+
getDaemonStatus: () => DaemonStatus | undefined;
|
|
10
|
+
/** Stop timers, release docsClient/docsCursor/chatNameRefreshJob and other resources. */
|
|
11
|
+
dispose: () => Promise<void>;
|
|
12
|
+
}
|
|
13
|
+
/** Mutable holder: route handlers read `.current` (indirection) — never capture the runtime by value. */
|
|
14
|
+
export declare class ServeRuntimeHolder {
|
|
15
|
+
current: ServeRuntime;
|
|
16
|
+
constructor(initial: ServeRuntime);
|
|
17
|
+
swap(next: ServeRuntime): void;
|
|
18
|
+
}
|
|
19
|
+
/**
|
|
20
|
+
* Build the config-derived serve runtime (scheduler, chatNameRefreshJob,
|
|
21
|
+
* getDaemonStatus, dispose). Extracted from the `serve` command action so
|
|
22
|
+
* it can be rebuilt on config change (Task 8).
|
|
23
|
+
*
|
|
24
|
+
* NOTE: The scheduler is constructed even when `config.scheduler.enabled` is
|
|
25
|
+
* false, so the holder always has a Scheduler instance available for cold-start
|
|
26
|
+
* logic. `scheduler.start()` is NOT called here — the caller decides.
|
|
27
|
+
*
|
|
28
|
+
* Assembly is covered by the serve integration test wired in Task 8.
|
|
29
|
+
*/
|
|
30
|
+
export declare function buildServeRuntime(config: LoadedConfig, stores: StoreContext, stateDir: string): Promise<ServeRuntime>;
|
|
31
|
+
//# sourceMappingURL=serve-runtime.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-runtime.d.ts","sourceRoot":"","sources":["../../src/daemon/serve-runtime.ts"],"names":[],"mappings":"AAiBA,OAAO,KAAK,EAAE,YAAY,EAAiB,MAAM,mBAAmB,CAAC;AAOrE,OAAO,KAAK,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AACnE,OAAO,EAAE,kBAAkB,EAAE,MAAM,oCAAoC,CAAC;AAExE,OAAO,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAE3C,uFAAuF;AACvF,MAAM,WAAW,YAAY;IAC3B,SAAS,EAAE,SAAS,GAAG,SAAS,CAAC;IACjC,kBAAkB,EAAE,kBAAkB,GAAG,SAAS,CAAC;IACnD,eAAe,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC;IAChD,yFAAyF;IACzF,OAAO,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;CAC9B;AAED,yGAAyG;AACzG,qBAAa,kBAAkB;IAC7B,OAAO,EAAE,YAAY,CAAC;gBACV,OAAO,EAAE,YAAY;IAGjC,IAAI,CAAC,IAAI,EAAE,YAAY,GAAG,IAAI;CAG/B;AAiCD;;;;;;;;;;GAUG;AACH,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,MAAM,EAAE,YAAY,EACpB,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,YAAY,CAAC,CAkLvB"}
|
|
@@ -0,0 +1,230 @@
|
|
|
1
|
+
import { homedir } from "node:os";
|
|
2
|
+
import { isAbsolute, resolve } from "node:path";
|
|
3
|
+
import { ChatNameResolver } from "../collectors/feishu/chat-name-resolver.js";
|
|
4
|
+
import { normalizeDocsConfig } from "../collectors/feishu/docs/config.js";
|
|
5
|
+
import { runDocSource } from "../collectors/feishu/docs/run.js";
|
|
6
|
+
import { LarkCliHttpClient } from "../collectors/feishu/lark-cli-client.js";
|
|
7
|
+
import { LarkCliIdentityBackend } from "../collectors/feishu/lark-cli-identity-backend.js";
|
|
8
|
+
import { resolveSelfOpenId } from "../collectors/feishu/self-open-id.js";
|
|
9
|
+
import { createClaudeCodeCollector, createCodexCollector, createFeishuCollector, createHermesCollector, getCollector, registerCollector, resetRegistry, } from "../collectors/index.js";
|
|
10
|
+
import { CursorStore } from "../core/cursors.js";
|
|
11
|
+
import { PersonIdentityStore } from "../core/person-identity.js";
|
|
12
|
+
import { runPipeline } from "../core/pipeline.js";
|
|
13
|
+
import { statePath } from "../core/state.js";
|
|
14
|
+
import { createLLMProvider, createMockProvider } from "../extractors/providers/index.js";
|
|
15
|
+
import { ChatNameRefreshJob } from "../server/chat-name-refresh-job.js";
|
|
16
|
+
import { PersonBehaviorStore } from "../store/person-behavior.js";
|
|
17
|
+
import { Scheduler } from "./scheduler.js";
|
|
18
|
+
/** Mutable holder: route handlers read `.current` (indirection) — never capture the runtime by value. */
|
|
19
|
+
export class ServeRuntimeHolder {
|
|
20
|
+
current;
|
|
21
|
+
constructor(initial) {
|
|
22
|
+
this.current = initial;
|
|
23
|
+
}
|
|
24
|
+
swap(next) {
|
|
25
|
+
this.current = next;
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// ── Helpers (replicated from cli.ts; factored here for rebuildability) ───────
|
|
29
|
+
function resolveProjectPath(path, projectRoot) {
|
|
30
|
+
if (!path)
|
|
31
|
+
return undefined;
|
|
32
|
+
if (path.startsWith("~/"))
|
|
33
|
+
return resolve(homedir(), path.slice(2));
|
|
34
|
+
if (path === "~")
|
|
35
|
+
return homedir();
|
|
36
|
+
if (isAbsolute(path))
|
|
37
|
+
return path;
|
|
38
|
+
return resolve(projectRoot, path);
|
|
39
|
+
}
|
|
40
|
+
function bootstrapCollectors(sources, projectRoot) {
|
|
41
|
+
resetRegistry();
|
|
42
|
+
const agentConfigs = {
|
|
43
|
+
"claude-code": { factory: createClaudeCodeCollector, config: sources["claude-code"] },
|
|
44
|
+
codex: { factory: createCodexCollector, config: sources.codex },
|
|
45
|
+
hermes: { factory: createHermesCollector, config: sources.hermes },
|
|
46
|
+
};
|
|
47
|
+
for (const { factory, config } of Object.values(agentConfigs)) {
|
|
48
|
+
if (config?.enabled !== false) {
|
|
49
|
+
registerCollector(factory(resolveProjectPath(config?.base_dir, projectRoot)));
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
if (sources.feishu?.enabled !== false && sources.feishu?.app_id) {
|
|
53
|
+
registerCollector(createFeishuCollector(sources.feishu));
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
// ── buildServeRuntime ─────────────────────────────────────────────────────────
|
|
57
|
+
/**
|
|
58
|
+
* Build the config-derived serve runtime (scheduler, chatNameRefreshJob,
|
|
59
|
+
* getDaemonStatus, dispose). Extracted from the `serve` command action so
|
|
60
|
+
* it can be rebuilt on config change (Task 8).
|
|
61
|
+
*
|
|
62
|
+
* NOTE: The scheduler is constructed even when `config.scheduler.enabled` is
|
|
63
|
+
* false, so the holder always has a Scheduler instance available for cold-start
|
|
64
|
+
* logic. `scheduler.start()` is NOT called here — the caller decides.
|
|
65
|
+
*
|
|
66
|
+
* Assembly is covered by the serve integration test wired in Task 8.
|
|
67
|
+
*/
|
|
68
|
+
export async function buildServeRuntime(config, stores, stateDir) {
|
|
69
|
+
let scheduler;
|
|
70
|
+
// Track resources that need cleanup so dispose() can release them.
|
|
71
|
+
let docsClient;
|
|
72
|
+
let docsCursor;
|
|
73
|
+
let chatNameRefreshJob;
|
|
74
|
+
if (config.scheduler) {
|
|
75
|
+
// Always construct Scheduler when the block is present (even if enabled=false),
|
|
76
|
+
// so ServeRuntimeHolder always holds a Scheduler for future cold-start wiring.
|
|
77
|
+
scheduler = new Scheduler(config.scheduler, stateDir);
|
|
78
|
+
if (config.scheduler.enabled) {
|
|
79
|
+
bootstrapCollectors(config.sources, config.__context.projectRoot);
|
|
80
|
+
const llmConfig = { ...config.llm };
|
|
81
|
+
const envKey = llmConfig.provider === "anthropic"
|
|
82
|
+
? process.env.ANTHROPIC_API_KEY
|
|
83
|
+
: process.env.OPENAI_API_KEY;
|
|
84
|
+
if (!llmConfig.api_key && envKey)
|
|
85
|
+
llmConfig.api_key = envKey;
|
|
86
|
+
const provider = llmConfig.api_key
|
|
87
|
+
? createLLMProvider(llmConfig)
|
|
88
|
+
: createMockProvider(new Map());
|
|
89
|
+
const pipelineConfig = {
|
|
90
|
+
dedup_checkpoint: statePath("dedup.jsonl"),
|
|
91
|
+
cursor_checkpoint: statePath("cursors.yaml"),
|
|
92
|
+
block_gap_minutes: config.block_builder.block_gap_minutes,
|
|
93
|
+
max_block_tokens: config.block_builder.max_block_tokens,
|
|
94
|
+
max_block_messages: config.block_builder.max_block_messages,
|
|
95
|
+
privacy: config.privacy,
|
|
96
|
+
output_dir: process.cwd(),
|
|
97
|
+
block_concurrency: config.pipeline?.block_concurrency,
|
|
98
|
+
};
|
|
99
|
+
// ── Person communication profile (Spec 8): behavior-layer accumulation.
|
|
100
|
+
// No-op unless config.profile.enabled (checked inside accumulateBehavior),
|
|
101
|
+
// so it is wired unconditionally. resolveSender maps a sender open id to its
|
|
102
|
+
// canonical person slug via the identity handle table, falling back to a
|
|
103
|
+
// deterministic slug when unknown.
|
|
104
|
+
const behaviorIdentity = new PersonIdentityStore(stores.db.executor, { pages: stores.pages });
|
|
105
|
+
const behaviorDeps = {
|
|
106
|
+
store: new PersonBehaviorStore(stores.db.executor),
|
|
107
|
+
config: config.profile,
|
|
108
|
+
resolveSender: async (contact) => (await behaviorIdentity.resolveHandle("feishu_open_id", contact)) ?? `people/${contact}`,
|
|
109
|
+
};
|
|
110
|
+
// ── G2: feishu.docs special case ────────────────────────────────────────
|
|
111
|
+
// docs uses runDocSource (not runPipeline) and manages its own cursor state.
|
|
112
|
+
docsCursor = new CursorStore(statePath("cursors.yaml"));
|
|
113
|
+
const feishuCfg = config.sources.feishu;
|
|
114
|
+
docsClient =
|
|
115
|
+
feishuCfg?.enabled && feishuCfg.sources?.docs?.enabled
|
|
116
|
+
? new LarkCliHttpClient(feishuCfg.lark_bin)
|
|
117
|
+
: undefined;
|
|
118
|
+
const docsResolved = feishuCfg?.sources?.docs?.enabled
|
|
119
|
+
? normalizeDocsConfig(feishuCfg.sources.docs)
|
|
120
|
+
: undefined;
|
|
121
|
+
const runDocsAsPipelineResult = async () => {
|
|
122
|
+
if (!docsClient || !docsResolved || !docsCursor)
|
|
123
|
+
throw new Error("feishu.docs scheduled but docs source not enabled");
|
|
124
|
+
docsCursor.load();
|
|
125
|
+
const selfOpenId = docsResolved.self_open_id ??
|
|
126
|
+
(await resolveSelfOpenId(docsClient, feishuCfg?.sources?.dm?.self_open_id)) ??
|
|
127
|
+
"";
|
|
128
|
+
const stats = await runDocSource({
|
|
129
|
+
client: docsClient,
|
|
130
|
+
stores,
|
|
131
|
+
provider,
|
|
132
|
+
config: docsResolved,
|
|
133
|
+
cursor: docsCursor,
|
|
134
|
+
selfOpenId,
|
|
135
|
+
nowMs: Date.now(),
|
|
136
|
+
nowIso: () => new Date().toISOString(),
|
|
137
|
+
});
|
|
138
|
+
console.log(`[scheduler] feishu.docs: scanned=${stats.candidates_scanned} pointer=${stats.pointer_saved} full=${stats.full_card_generated} refreshed=${stats.full_card_refreshed} queue=${stats.upgrade_queue_size}`);
|
|
139
|
+
return {
|
|
140
|
+
fatal: false,
|
|
141
|
+
error: undefined,
|
|
142
|
+
totalMessages: stats.candidates_scanned,
|
|
143
|
+
totalBlocks: stats.full_card_generated + stats.pointer_saved + stats.full_card_refreshed,
|
|
144
|
+
okBlocks: stats.full_card_generated + stats.pointer_saved + stats.full_card_refreshed,
|
|
145
|
+
skippedBlocks: stats.skipped,
|
|
146
|
+
failedBlocks: stats.llm_failed,
|
|
147
|
+
okMessages: [],
|
|
148
|
+
skippedMessages: [],
|
|
149
|
+
failedMessages: [],
|
|
150
|
+
warnings: [],
|
|
151
|
+
};
|
|
152
|
+
};
|
|
153
|
+
// ── end feishu.docs special case ─────────────────────────────────────────
|
|
154
|
+
scheduler.setRunSource(async (sourceId) => {
|
|
155
|
+
if (sourceId === "feishu.docs") {
|
|
156
|
+
return runDocsAsPipelineResult();
|
|
157
|
+
}
|
|
158
|
+
const collector = getCollector(sourceId);
|
|
159
|
+
if (!collector)
|
|
160
|
+
throw new Error(`Unknown source: ${sourceId}`);
|
|
161
|
+
return runPipeline(pipelineConfig, {
|
|
162
|
+
source: collector,
|
|
163
|
+
provider,
|
|
164
|
+
format: "json",
|
|
165
|
+
adapter: "store",
|
|
166
|
+
stores,
|
|
167
|
+
dryRun: false,
|
|
168
|
+
behavior: behaviorDeps,
|
|
169
|
+
});
|
|
170
|
+
});
|
|
171
|
+
scheduler.setOnTick((sourceId, result, duration_ms) => {
|
|
172
|
+
const status = result.fatal ? "failed" : "ok";
|
|
173
|
+
console.log(`[scheduler] ${sourceId}: ${status} (${duration_ms}ms)`);
|
|
174
|
+
});
|
|
175
|
+
// NOTE: scheduler.start() is NOT called here — the caller (cli.ts / ReloadManager) starts it.
|
|
176
|
+
}
|
|
177
|
+
}
|
|
178
|
+
// ── G1: getDaemonStatus closure ──────────────────────────────────────────────
|
|
179
|
+
const getDaemonStatus = scheduler
|
|
180
|
+
? () => {
|
|
181
|
+
const hb = scheduler?.getHeartbeat();
|
|
182
|
+
const now = Date.now();
|
|
183
|
+
let lastRunAt = null;
|
|
184
|
+
let nextAt = null;
|
|
185
|
+
for (const id of scheduler?.getSourceIds() ?? []) {
|
|
186
|
+
const s = scheduler?.getSourceState(id);
|
|
187
|
+
if (!s)
|
|
188
|
+
continue;
|
|
189
|
+
if (s.last_run_at !== null && (lastRunAt === null || s.last_run_at > lastRunAt)) {
|
|
190
|
+
lastRunAt = s.last_run_at;
|
|
191
|
+
}
|
|
192
|
+
const next = s.last_run_at !== null ? s.last_run_at + s.interval_secs * 1000 : now;
|
|
193
|
+
if (nextAt === null || next < nextAt)
|
|
194
|
+
nextAt = next;
|
|
195
|
+
}
|
|
196
|
+
return {
|
|
197
|
+
running: true,
|
|
198
|
+
uptime_seconds: Math.floor((now - (hb?.daemon_started_at ?? now)) / 1000),
|
|
199
|
+
last_run: lastRunAt ? new Date(lastRunAt).toISOString() : null,
|
|
200
|
+
next_scheduled: nextAt !== null ? new Date(nextAt).toISOString() : null,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
: () => undefined;
|
|
204
|
+
// ── G1: chatNameRefreshJob (config/credential-derived; rebuilt on Tier 2 reload) ──
|
|
205
|
+
let chatNameRefreshLarkClient;
|
|
206
|
+
if (config.sources.feishu?.enabled) {
|
|
207
|
+
chatNameRefreshLarkClient = new LarkCliHttpClient(config.sources.feishu.lark_bin);
|
|
208
|
+
const selfOpenId = await resolveSelfOpenId(chatNameRefreshLarkClient, config.sources.feishu.sources?.dm?.self_open_id);
|
|
209
|
+
const backend = new LarkCliIdentityBackend(chatNameRefreshLarkClient, selfOpenId ?? undefined);
|
|
210
|
+
const resolver = new ChatNameResolver(stores.db.executor, backend);
|
|
211
|
+
chatNameRefreshJob = new ChatNameRefreshJob(stores.db.executor, resolver);
|
|
212
|
+
}
|
|
213
|
+
// ── dispose ───────────────────────────────────────────────────────────────────
|
|
214
|
+
const dispose = async () => {
|
|
215
|
+
// Stop the scheduler timer (safe to call even if never started).
|
|
216
|
+
scheduler?.stop();
|
|
217
|
+
// ChatNameRefreshJob is on-demand only (no setInterval/timer); no teardown needed.
|
|
218
|
+
// Drop docs resource references to release the lark-cli handles.
|
|
219
|
+
docsClient = undefined;
|
|
220
|
+
docsCursor = undefined;
|
|
221
|
+
chatNameRefreshLarkClient = undefined;
|
|
222
|
+
};
|
|
223
|
+
return {
|
|
224
|
+
scheduler,
|
|
225
|
+
chatNameRefreshJob,
|
|
226
|
+
getDaemonStatus,
|
|
227
|
+
dispose,
|
|
228
|
+
};
|
|
229
|
+
}
|
|
230
|
+
//# sourceMappingURL=serve-runtime.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"serve-runtime.js","sourceRoot":"","sources":["../../src/daemon/serve-runtime.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { PipelineResult } from "../core/pipeline.js";
|
|
2
|
+
export type RunResult = "ok" | "partial" | "failed";
|
|
3
|
+
export declare function classifyResult(r: PipelineResult): RunResult;
|
|
4
|
+
export declare function computeBackoff(base_interval_secs: number, consecutive_failures: number): number;
|
|
5
|
+
export interface SourceState {
|
|
6
|
+
last_run_at: number | null;
|
|
7
|
+
last_result: RunResult | null;
|
|
8
|
+
last_error: string | null;
|
|
9
|
+
consecutive_failures: number;
|
|
10
|
+
consecutive_partials: number;
|
|
11
|
+
}
|
|
12
|
+
export declare class SourceSchedule {
|
|
13
|
+
readonly source_id: string;
|
|
14
|
+
readonly interval_secs: number;
|
|
15
|
+
state: SourceState;
|
|
16
|
+
constructor(source_id: string, interval_secs: number);
|
|
17
|
+
isDue(now: number): boolean;
|
|
18
|
+
recordResult(result: RunResult, timestamp: number, error?: string): void;
|
|
19
|
+
shouldAlert(): boolean;
|
|
20
|
+
nextRunAt(): number;
|
|
21
|
+
serialize(): SourceState;
|
|
22
|
+
static fromSerialized(source_id: string, interval_secs: number, saved: SourceState): SourceSchedule;
|
|
23
|
+
private effectiveIntervalMs;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=source-schedule.d.ts.map
|