@andre.li/memoark 0.3.1 → 0.3.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.en.md +388 -69
- package/README.md +674 -309
- package/README.zh-CN.md +816 -0
- package/bin/memoark.mjs +7 -2
- package/dist/adapters/store.d.ts.map +1 -1
- package/dist/adapters/store.js +6 -5
- package/dist/adapters/store.js.map +1 -1
- 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.js +682 -126
- package/dist/cli.js.map +1 -1
- 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 +4 -0
- package/dist/collectors/feishu/collector.d.ts.map +1 -1
- package/dist/collectors/feishu/collector.js +27 -4
- package/dist/collectors/feishu/collector.js.map +1 -1
- 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/lark-cli-client.d.ts +12 -0
- package/dist/collectors/feishu/lark-cli-client.d.ts.map +1 -1
- package/dist/collectors/feishu/lark-cli-client.js +37 -2
- package/dist/collectors/feishu/lark-cli-client.js.map +1 -1
- 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/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/dm.d.ts.map +1 -1
- package/dist/collectors/feishu/sources/dm.js +4 -0
- package/dist/collectors/feishu/sources/dm.js.map +1 -1
- package/dist/collectors/feishu/sources/mail.d.ts.map +1 -1
- package/dist/collectors/feishu/sources/mail.js +18 -20
- package/dist/collectors/feishu/sources/mail.js.map +1 -1
- package/dist/collectors/feishu/sources/messages.d.ts +2 -0
- package/dist/collectors/feishu/sources/messages.d.ts.map +1 -1
- package/dist/collectors/feishu/sources/messages.js +28 -1
- package/dist/collectors/feishu/sources/messages.js.map +1 -1
- package/dist/collectors/feishu/types.d.ts +37 -3
- package/dist/collectors/feishu/types.d.ts.map +1 -1
- package/dist/collectors/feishu/types.js.map +1 -1
- package/dist/config-center/connection-checks.d.ts.map +1 -1
- package/dist/config-center/connection-checks.js +1 -1
- package/dist/config-center/connection-checks.js.map +1 -1
- package/dist/config-center/schema.d.ts.map +1 -1
- package/dist/config-center/schema.js +77 -0
- package/dist/config-center/schema.js.map +1 -1
- package/dist/consolidator/consolidator.d.ts +13 -1
- package/dist/consolidator/consolidator.d.ts.map +1 -1
- package/dist/consolidator/consolidator.js +12 -2
- package/dist/consolidator/consolidator.js.map +1 -1
- package/dist/core/canonicalize.js +5 -1
- package/dist/core/canonicalize.js.map +1 -1
- package/dist/core/config.d.ts +52 -9
- package/dist/core/config.d.ts.map +1 -1
- package/dist/core/config.js +86 -24
- package/dist/core/config.js.map +1 -1
- 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/identity-resolver.d.ts +24 -3
- package/dist/core/identity-resolver.d.ts.map +1 -1
- package/dist/core/identity-resolver.js +147 -2
- package/dist/core/identity-resolver.js.map +1 -1
- package/dist/core/person-identity.d.ts +124 -0
- package/dist/core/person-identity.d.ts.map +1 -0
- package/dist/core/person-identity.js +342 -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 +1 -1
- package/dist/core/pipeline-factory.d.ts.map +1 -1
- package/dist/core/pipeline-factory.js +8 -3
- package/dist/core/pipeline-factory.js.map +1 -1
- package/dist/core/pipeline.d.ts +16 -0
- package/dist/core/pipeline.d.ts.map +1 -1
- package/dist/core/pipeline.js +49 -1
- package/dist/core/pipeline.js.map +1 -1
- 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 +2981 -309
- package/dist/core/schemas.d.ts.map +1 -1
- package/dist/core/schemas.js +27 -0
- package/dist/core/schemas.js.map +1 -1
- package/dist/core/signal-scoring.d.ts.map +1 -1
- package/dist/core/signal-scoring.js +5 -1
- package/dist/core/signal-scoring.js.map +1 -1
- 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 +1 -1
- package/dist/core/state.d.ts.map +1 -1
- package/dist/core/state.js +3 -2
- package/dist/core/state.js.map +1 -1
- package/dist/core/types.d.ts +34 -6
- package/dist/core/types.d.ts.map +1 -1
- package/dist/daemon/reload-manager.d.ts +27 -0
- package/dist/daemon/reload-manager.d.ts.map +1 -0
- package/dist/daemon/reload-manager.js +67 -0
- package/dist/daemon/reload-manager.js.map +1 -0
- package/dist/daemon/scheduler.d.ts +9 -1
- package/dist/daemon/scheduler.d.ts.map +1 -1
- package/dist/daemon/scheduler.js +113 -38
- package/dist/daemon/scheduler.js.map +1 -1
- 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/embedded-assets.generated.d.ts.map +1 -1
- package/dist/embedded-assets.generated.js +3 -3
- package/dist/embedded-assets.generated.js.map +1 -1
- 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/prompts/examples/agent-session.md +257 -0
- package/dist/extractors/prompts/signal-extract.md +199 -0
- package/dist/extractors/prompts/system.md +45 -0
- package/dist/extractors/signal-extractor.d.ts +2 -1
- package/dist/extractors/signal-extractor.d.ts.map +1 -1
- package/dist/extractors/signal-extractor.js +99 -7
- package/dist/extractors/signal-extractor.js.map +1 -1
- 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 +30 -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 +31 -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 +32 -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 +35 -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 +35 -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 +32 -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 +26 -0
- package/dist/install/index.d.ts.map +1 -0
- package/dist/install/index.js +117 -0
- package/dist/install/index.js.map +1 -0
- package/dist/install/json-config.d.ts +11 -0
- package/dist/install/json-config.d.ts.map +1 -0
- package/dist/install/json-config.js +39 -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/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 +51 -0
- package/dist/install/toml-config.js.map +1 -0
- package/dist/install/types.d.ts +37 -0
- package/dist/install/types.d.ts.map +1 -0
- package/dist/install/types.js +4 -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 +18 -0
- package/dist/install/yaml-config.js.map +1 -0
- package/dist/processors/privacy.d.ts +4 -1
- package/dist/processors/privacy.d.ts.map +1 -1
- package/dist/processors/privacy.js +5 -3
- package/dist/processors/privacy.js.map +1 -1
- 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 +8 -2
- package/dist/server/api.d.ts.map +1 -1
- package/dist/server/api.js +69 -34
- package/dist/server/api.js.map +1 -1
- package/dist/server/backfill-routes.d.ts.map +1 -1
- package/dist/server/backfill-routes.js +14 -1
- package/dist/server/backfill-routes.js.map +1 -1
- 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 +2 -0
- package/dist/server/config-routes.d.ts.map +1 -1
- package/dist/server/config-routes.js +2 -1
- package/dist/server/config-routes.js.map +1 -1
- package/dist/server/mcp-http.d.ts +26 -0
- package/dist/server/mcp-http.d.ts.map +1 -0
- package/dist/server/mcp-http.js +102 -0
- package/dist/server/mcp-http.js.map +1 -0
- package/dist/server/mcp.d.ts +191 -25
- package/dist/server/mcp.d.ts.map +1 -1
- package/dist/server/mcp.js +1111 -68
- package/dist/server/mcp.js.map +1 -1
- 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/setup-server.d.ts.map +1 -1
- package/dist/server/setup-server.js +8 -11
- package/dist/server/setup-server.js.map +1 -1
- package/dist/setup/connection-tests.d.ts +1 -1
- package/dist/setup/connection-tests.d.ts.map +1 -1
- package/dist/setup/connection-tests.js +4 -2
- package/dist/setup/connection-tests.js.map +1 -1
- package/dist/setup/generate-config.d.ts.map +1 -1
- package/dist/setup/generate-config.js +31 -1
- package/dist/setup/generate-config.js.map +1 -1
- package/dist/setup/init-wizard.d.ts +1 -0
- package/dist/setup/init-wizard.d.ts.map +1 -1
- package/dist/setup/init-wizard.js +38 -21
- package/dist/setup/init-wizard.js.map +1 -1
- package/dist/setup/validate-config.d.ts +5 -1
- package/dist/setup/validate-config.d.ts.map +1 -1
- package/dist/setup/validate-config.js +18 -0
- package/dist/setup/validate-config.js.map +1 -1
- 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 +2 -0
- package/dist/store/database.d.ts.map +1 -1
- package/dist/store/database.js +23 -10
- package/dist/store/database.js.map +1 -1
- package/dist/store/graph.d.ts +22 -0
- package/dist/store/graph.d.ts.map +1 -1
- package/dist/store/graph.js +97 -7
- package/dist/store/graph.js.map +1 -1
- package/dist/store/migrations/index.d.ts.map +1 -1
- package/dist/store/migrations/index.js +52 -0
- package/dist/store/migrations/index.js.map +1 -1
- package/dist/store/pages.d.ts +7 -0
- package/dist/store/pages.d.ts.map +1 -1
- package/dist/store/pages.js +56 -1
- package/dist/store/pages.js.map +1 -1
- package/dist/store/person-behavior.d.ts +28 -0
- package/dist/store/person-behavior.d.ts.map +1 -0
- package/dist/store/person-behavior.js +127 -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/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/schema.sql +107 -0
- package/dist/store/search.d.ts +36 -8
- package/dist/store/search.d.ts.map +1 -1
- package/dist/store/search.js +188 -76
- package/dist/store/search.js.map +1 -1
- package/dist/store/tags.d.ts.map +1 -1
- package/dist/store/tags.js +6 -2
- package/dist/store/tags.js.map +1 -1
- package/dist/store/timeline.d.ts +13 -1
- package/dist/store/timeline.d.ts.map +1 -1
- package/dist/store/timeline.js +134 -4
- package/dist/store/timeline.js.map +1 -1
- 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.map +1 -1
- package/dist/sync/obsidian.js +5 -1
- package/dist/sync/obsidian.js.map +1 -1
- 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 +18 -6
|
@@ -0,0 +1,117 @@
|
|
|
1
|
+
import { spawnSync } from "node:child_process";
|
|
2
|
+
import { existsSync, mkdirSync, readFileSync, rmSync, writeFileSync } from "node:fs";
|
|
3
|
+
import { homedir } from "node:os";
|
|
4
|
+
import { dirname } from "node:path";
|
|
5
|
+
import { ADAPTERS, getAdapter } from "./clients/index.js";
|
|
6
|
+
import { resolveLaunchCmd } from "./command.js";
|
|
7
|
+
import { parseJsonConfig, removeMcpServer, stringifyJsonConfig, upsertMcpServer, } from "./json-config.js";
|
|
8
|
+
import { removeBlock, upsertBlock } from "./marked-block.js";
|
|
9
|
+
import { removeMcpServerToml, upsertMcpServerToml } from "./toml-config.js";
|
|
10
|
+
import { removeMcpServerYaml, upsertMcpServerYaml } from "./yaml-config.js";
|
|
11
|
+
function readFileOr(path, fallback) {
|
|
12
|
+
return existsSync(path) ? readFileSync(path, "utf8") : fallback;
|
|
13
|
+
}
|
|
14
|
+
function ensureDir(dir) {
|
|
15
|
+
if (!existsSync(dir))
|
|
16
|
+
mkdirSync(dir, { recursive: true });
|
|
17
|
+
}
|
|
18
|
+
function applyOp(op) {
|
|
19
|
+
if (op.kind === "cli") {
|
|
20
|
+
spawnSync(op.args[0], op.args.slice(1), { stdio: "ignore" });
|
|
21
|
+
return;
|
|
22
|
+
}
|
|
23
|
+
ensureDir(dirname(op.path));
|
|
24
|
+
switch (op.kind) {
|
|
25
|
+
case "json-mcp": {
|
|
26
|
+
const obj = parseJsonConfig(readFileOr(op.path, ""), op.path);
|
|
27
|
+
const next = op.action === "upsert" && op.entry
|
|
28
|
+
? upsertMcpServer(obj, "memoark", op.entry)
|
|
29
|
+
: removeMcpServer(obj, "memoark");
|
|
30
|
+
writeFileSync(op.path, stringifyJsonConfig(next));
|
|
31
|
+
break;
|
|
32
|
+
}
|
|
33
|
+
case "toml-mcp": {
|
|
34
|
+
const text = readFileOr(op.path, "");
|
|
35
|
+
const next = op.action === "upsert" && op.entry
|
|
36
|
+
? upsertMcpServerToml(text, "memoark", op.entry)
|
|
37
|
+
: removeMcpServerToml(text, "memoark");
|
|
38
|
+
writeFileSync(op.path, next);
|
|
39
|
+
break;
|
|
40
|
+
}
|
|
41
|
+
case "yaml-mcp": {
|
|
42
|
+
const text = readFileOr(op.path, "");
|
|
43
|
+
const next = op.action === "upsert" && op.entry
|
|
44
|
+
? upsertMcpServerYaml(text, "memoark", op.entry)
|
|
45
|
+
: removeMcpServerYaml(text, "memoark");
|
|
46
|
+
writeFileSync(op.path, next);
|
|
47
|
+
break;
|
|
48
|
+
}
|
|
49
|
+
case "marked-block": {
|
|
50
|
+
const text = readFileOr(op.path, "");
|
|
51
|
+
const next = op.action === "upsert" && op.content ? upsertBlock(text, op.content) : removeBlock(text);
|
|
52
|
+
writeFileSync(op.path, next);
|
|
53
|
+
break;
|
|
54
|
+
}
|
|
55
|
+
case "managed-file": {
|
|
56
|
+
if (op.action === "upsert" && op.content) {
|
|
57
|
+
ensureDir(dirname(op.path));
|
|
58
|
+
writeFileSync(op.path, op.content);
|
|
59
|
+
}
|
|
60
|
+
else if (existsSync(op.path)) {
|
|
61
|
+
rmSync(op.path);
|
|
62
|
+
}
|
|
63
|
+
break;
|
|
64
|
+
}
|
|
65
|
+
}
|
|
66
|
+
}
|
|
67
|
+
function selectAdapters(opts) {
|
|
68
|
+
if (opts.agent && opts.agent.length > 0) {
|
|
69
|
+
return opts.agent.map((id) => {
|
|
70
|
+
const a = getAdapter(id);
|
|
71
|
+
if (!a) {
|
|
72
|
+
throw new Error(`Unknown agent "${id}". Known: ${ADAPTERS.map((x) => x.id).join(", ")}`);
|
|
73
|
+
}
|
|
74
|
+
return a;
|
|
75
|
+
});
|
|
76
|
+
}
|
|
77
|
+
const home = opts.home ?? homedir();
|
|
78
|
+
const platform = opts.platform ?? process.platform;
|
|
79
|
+
return ADAPTERS.filter((a) => a.detect(home, platform));
|
|
80
|
+
}
|
|
81
|
+
function planFor(adapter, opts, action) {
|
|
82
|
+
const ctx = {
|
|
83
|
+
home: opts.home ?? homedir(),
|
|
84
|
+
platform: opts.platform ?? process.platform,
|
|
85
|
+
scope: opts.scope ?? "global",
|
|
86
|
+
cwd: opts.cwd ?? process.cwd(),
|
|
87
|
+
launch: opts.launch ?? resolveLaunchCmd({ http: opts.http }),
|
|
88
|
+
action,
|
|
89
|
+
};
|
|
90
|
+
return { id: adapter.id, displayName: adapter.displayName, ops: adapter.plan(ctx) };
|
|
91
|
+
}
|
|
92
|
+
/** Plan without touching disk (for `--dry-run`). */
|
|
93
|
+
export function planInstall(opts, action) {
|
|
94
|
+
return selectAdapters(opts).map((a) => planFor(a, opts, action));
|
|
95
|
+
}
|
|
96
|
+
function execute(opts, action) {
|
|
97
|
+
const planned = planInstall(opts, action);
|
|
98
|
+
if (!opts.dryRun) {
|
|
99
|
+
for (const client of planned) {
|
|
100
|
+
for (const op of client.ops)
|
|
101
|
+
applyOp(op);
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
return planned;
|
|
105
|
+
}
|
|
106
|
+
export function runInstall(opts = {}) {
|
|
107
|
+
return execute(opts, "upsert");
|
|
108
|
+
}
|
|
109
|
+
export function runUninstall(opts = {}) {
|
|
110
|
+
return execute(opts, "remove");
|
|
111
|
+
}
|
|
112
|
+
/** Ids of clients detected as installed on this machine. */
|
|
113
|
+
export function detectInstalledAgents(home = homedir(), platform = process.platform) {
|
|
114
|
+
return ADAPTERS.filter((a) => a.detect(home, platform)).map((a) => a.id);
|
|
115
|
+
}
|
|
116
|
+
export { ADAPTERS } from "./clients/index.js";
|
|
117
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/install/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export interface McpEntry {
|
|
2
|
+
command: string;
|
|
3
|
+
args: string[];
|
|
4
|
+
}
|
|
5
|
+
type Json = Record<string, unknown>;
|
|
6
|
+
export declare function parseJsonConfig(text: string, path: string): Json;
|
|
7
|
+
export declare function upsertMcpServer(obj: Json, name: string, entry: McpEntry): Json;
|
|
8
|
+
export declare function removeMcpServer(obj: Json, name: string): Json;
|
|
9
|
+
export declare function stringifyJsonConfig(obj: Json): string;
|
|
10
|
+
export {};
|
|
11
|
+
//# sourceMappingURL=json-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-config.d.ts","sourceRoot":"","sources":["../../src/install/json-config.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,QAAQ;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,EAAE,CAAC;CAChB;AAED,KAAK,IAAI,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;AAEpC,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAYhE;AAOD,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,IAAI,CAI9E;AAED,wBAAgB,eAAe,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,MAAM,GAAG,IAAI,CAM7D;AAED,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,IAAI,GAAG,MAAM,CAErD"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
// JSON-based MCP config editing (Claude Code ~/.claude.json, Claude Desktop,
|
|
2
|
+
// Cursor ~/.cursor/mcp.json, Windsurf). Operates on parsed objects; the
|
|
3
|
+
// orchestrator handles file IO. Other keys/servers are preserved.
|
|
4
|
+
export function parseJsonConfig(text, path) {
|
|
5
|
+
const trimmed = text.trim();
|
|
6
|
+
if (trimmed === "")
|
|
7
|
+
return {};
|
|
8
|
+
try {
|
|
9
|
+
const parsed = JSON.parse(trimmed);
|
|
10
|
+
if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
|
|
11
|
+
throw new Error("expected a top-level JSON object");
|
|
12
|
+
}
|
|
13
|
+
return parsed;
|
|
14
|
+
}
|
|
15
|
+
catch (e) {
|
|
16
|
+
throw new Error(`Invalid JSON in ${path}: ${e.message}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
function servers(obj) {
|
|
20
|
+
const mcp = obj.mcpServers;
|
|
21
|
+
return mcp && typeof mcp === "object" && !Array.isArray(mcp) ? { ...mcp } : {};
|
|
22
|
+
}
|
|
23
|
+
export function upsertMcpServer(obj, name, entry) {
|
|
24
|
+
const next = servers(obj);
|
|
25
|
+
next[name] = entry;
|
|
26
|
+
return { ...obj, mcpServers: next };
|
|
27
|
+
}
|
|
28
|
+
export function removeMcpServer(obj, name) {
|
|
29
|
+
const mcp = obj.mcpServers;
|
|
30
|
+
if (!mcp || typeof mcp !== "object" || Array.isArray(mcp))
|
|
31
|
+
return obj;
|
|
32
|
+
const next = { ...mcp };
|
|
33
|
+
delete next[name];
|
|
34
|
+
return { ...obj, mcpServers: next };
|
|
35
|
+
}
|
|
36
|
+
export function stringifyJsonConfig(obj) {
|
|
37
|
+
return `${JSON.stringify(obj, null, 2)}\n`;
|
|
38
|
+
}
|
|
39
|
+
//# sourceMappingURL=json-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"json-config.js","sourceRoot":"","sources":["../../src/install/json-config.ts"],"names":[],"mappings":"AAAA,6EAA6E;AAC7E,wEAAwE;AACxE,kEAAkE;AASlE,MAAM,UAAU,eAAe,CAAC,IAAY,EAAE,IAAY;IACxD,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5B,IAAI,OAAO,KAAK,EAAE;QAAE,OAAO,EAAE,CAAC;IAC9B,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;QACnC,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;YAC3E,MAAM,IAAI,KAAK,CAAC,kCAAkC,CAAC,CAAC;QACtD,CAAC;QACD,OAAO,MAAc,CAAC;IACxB,CAAC;IAAC,OAAO,CAAC,EAAE,CAAC;QACX,MAAM,IAAI,KAAK,CAAC,mBAAmB,IAAI,KAAM,CAAW,CAAC,OAAO,EAAE,CAAC,CAAC;IACtE,CAAC;AACH,CAAC;AAED,SAAS,OAAO,CAAC,GAAS;IACxB,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC;IAC3B,OAAO,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,GAAI,GAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC3F,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAS,EAAE,IAAY,EAAE,KAAe;IACtE,MAAM,IAAI,GAAG,OAAO,CAAC,GAAG,CAAC,CAAC;IAC1B,IAAI,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC;IACnB,OAAO,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,eAAe,CAAC,GAAS,EAAE,IAAY;IACrD,MAAM,GAAG,GAAG,GAAG,CAAC,UAAU,CAAC;IAC3B,IAAI,CAAC,GAAG,IAAI,OAAO,GAAG,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC;QAAE,OAAO,GAAG,CAAC;IACtE,MAAM,IAAI,GAAG,EAAE,GAAI,GAAY,EAAE,CAAC;IAClC,OAAO,IAAI,CAAC,IAAI,CAAC,CAAC;IAClB,OAAO,EAAE,GAAG,GAAG,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;AACtC,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,GAAS;IAC3C,OAAO,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Insert or replace the memoark block in `existing`.
|
|
3
|
+
* `block` must already include the start/end markers (e.g. DIRECTIVE_L1).
|
|
4
|
+
* Idempotent: re-running with changed content replaces in place, never appends a duplicate.
|
|
5
|
+
*/
|
|
6
|
+
export declare function upsertBlock(existing: string, block: string): string;
|
|
7
|
+
/** Remove the memoark block, tidying surrounding whitespace. No-op if absent. */
|
|
8
|
+
export declare function removeBlock(existing: string): string;
|
|
9
|
+
/** True if `existing` already contains a memoark block. */
|
|
10
|
+
export declare function hasBlock(existing: string): boolean;
|
|
11
|
+
//# sourceMappingURL=marked-block.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marked-block.d.ts","sourceRoot":"","sources":["../../src/install/marked-block.ts"],"names":[],"mappings":"AAWA;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,MAAM,CAMnE;AAED,iFAAiF;AACjF,wBAAgB,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAOpD;AAED,2DAA2D;AAC3D,wBAAgB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAElD"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { MEMOARK_BLOCK_END, MEMOARK_BLOCK_START } from "./directive.js";
|
|
2
|
+
function escapeRegExp(s) {
|
|
3
|
+
return s.replace(/[.*+?^${}()|[\]\\]/g, "\\$&");
|
|
4
|
+
}
|
|
5
|
+
// Matches a single memoark-delimited block (non-greedy, spans newlines).
|
|
6
|
+
const blockRegex = new RegExp(`${escapeRegExp(MEMOARK_BLOCK_START)}[\\s\\S]*?${escapeRegExp(MEMOARK_BLOCK_END)}`);
|
|
7
|
+
/**
|
|
8
|
+
* Insert or replace the memoark block in `existing`.
|
|
9
|
+
* `block` must already include the start/end markers (e.g. DIRECTIVE_L1).
|
|
10
|
+
* Idempotent: re-running with changed content replaces in place, never appends a duplicate.
|
|
11
|
+
*/
|
|
12
|
+
export function upsertBlock(existing, block) {
|
|
13
|
+
if (blockRegex.test(existing)) {
|
|
14
|
+
return existing.replace(blockRegex, block);
|
|
15
|
+
}
|
|
16
|
+
if (existing.trim() === "")
|
|
17
|
+
return `${block}\n`;
|
|
18
|
+
return `${existing.replace(/\s*$/, "")}\n\n${block}\n`;
|
|
19
|
+
}
|
|
20
|
+
/** Remove the memoark block, tidying surrounding whitespace. No-op if absent. */
|
|
21
|
+
export function removeBlock(existing) {
|
|
22
|
+
if (!blockRegex.test(existing))
|
|
23
|
+
return existing;
|
|
24
|
+
const tidied = existing
|
|
25
|
+
.replace(blockRegex, "")
|
|
26
|
+
.replace(/\n{3,}/g, "\n\n")
|
|
27
|
+
.replace(/\s*$/, "");
|
|
28
|
+
return tidied === "" ? "" : `${tidied}\n`;
|
|
29
|
+
}
|
|
30
|
+
/** True if `existing` already contains a memoark block. */
|
|
31
|
+
export function hasBlock(existing) {
|
|
32
|
+
return blockRegex.test(existing);
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=marked-block.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"marked-block.js","sourceRoot":"","sources":["../../src/install/marked-block.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAExE,SAAS,YAAY,CAAC,CAAS;IAC7B,OAAO,CAAC,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAC;AAClD,CAAC;AAED,yEAAyE;AACzE,MAAM,UAAU,GAAG,IAAI,MAAM,CAC3B,GAAG,YAAY,CAAC,mBAAmB,CAAC,aAAa,YAAY,CAAC,iBAAiB,CAAC,EAAE,CACnF,CAAC;AAEF;;;;GAIG;AACH,MAAM,UAAU,WAAW,CAAC,QAAgB,EAAE,KAAa;IACzD,IAAI,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC9B,OAAO,QAAQ,CAAC,OAAO,CAAC,UAAU,EAAE,KAAK,CAAC,CAAC;IAC7C,CAAC;IACD,IAAI,QAAQ,CAAC,IAAI,EAAE,KAAK,EAAE;QAAE,OAAO,GAAG,KAAK,IAAI,CAAC;IAChD,OAAO,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,OAAO,KAAK,IAAI,CAAC;AACzD,CAAC;AAED,iFAAiF;AACjF,MAAM,UAAU,WAAW,CAAC,QAAgB;IAC1C,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC;QAAE,OAAO,QAAQ,CAAC;IAChD,MAAM,MAAM,GAAG,QAAQ;SACpB,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;SACvB,OAAO,CAAC,SAAS,EAAE,MAAM,CAAC;SAC1B,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACvB,OAAO,MAAM,KAAK,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,CAAC;AAC5C,CAAC;AAED,2DAA2D;AAC3D,MAAM,UAAU,QAAQ,CAAC,QAAgB;IACvC,OAAO,UAAU,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACnC,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
export declare const MEMOARK_SKILL = "---\nname: memoark\ndescription: The user's local-first personal memory (people, projects, decisions, tasks, history). Use it to recall who/what/why before answering, and to write durable decisions back.\n---\n\n# Memoark \u2014 your personal memory\n\nMemoark is the user's **local-first** personal memory and the source of truth about their\npeople, projects, decisions, tasks, and history. It is exposed over MCP.\n\n## When to use it\nConsult Memoark **before answering** whenever a request concerns:\n- a specific person or colleague (\"what did X tell me last week?\", \"who is X?\")\n- a project's status / progress / history (\"where is this project at?\", \"what did we decide?\")\n- the user's todos, preferences, or habits\n- anything phrased as recall: \"last week / earlier / last time / what did we\u2026\"\n\nDo **not** consult Memoark for generic questions unrelated to the user's world\n(pure syntax, general algorithms).\n\n## How to query (cheap-first)\n1. `search` \u2014 keyword FTS, zero cost. Start here.\n2. `query` / `recall` \u2014 semantic + cited; only if `search` is thin.\n3. Accept good results; don't over-escalate.\n\nAt the start of a session, call `get_session_context` for a compact digest of active\nprojects, recent decisions, open tasks, and key people.\n\nFor **project-status** questions, combine Memoark (decisions / tasks / timeline) **with**\nrepo reality (git / code) \u2014 don't answer from code alone.\n\n## Tool catalogue\n- **Retrieval**: `query`, `search`, `get_session_context`, `get_entity_profile`, `list_signals_by_entity`\n- **Synthesis**: `recall`, `synthesize`, `prep_for_person`, `daily_report`, `troubleshoot`\n- **Write**: `put_page`, `add_timeline_entry`, `manage_links`, `manage_tags`\n- **Graph / health**: `explore_graph`, `get_health`\n\n## Writing back (conservative)\nOn a clear **decision** or **discovery**, or when the user says \"remember this\", persist it:\n- `put_page(slug=\"decisions/<kebab>\", content=\"---\\ntitle: \u2026\\ntype: decision\\n---\\n<reasoning>\")`\n- `add_timeline_entry` for dated project events.\nSlugs follow stable conventions: `decisions/\u2026`, `entities/\u2026`, `projects/\u2026`. If unsure, ask.\n\n## Examples\n- *\"Where is the memoark project at?\"* \u2192 `get_session_context` + `query(\"memoark \u8FDB\u5C55\")`, then merge with the repo's git/code reality.\n- *\"What did Xu Lizi talk to me about last week?\"* \u2192 `recall(entity=\"entities/xu-lizi\")` or `query(\"\u8BB8\u529B\u5B50 \u4E0A\u5468\")`.\n";
|
|
2
|
+
/** Write the memoark skill into `<dir>/memoark/SKILL.md`. Idempotent. Returns the path. */
|
|
3
|
+
export declare function scaffoldSkill(dir: string): string;
|
|
4
|
+
//# sourceMappingURL=skill.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.d.ts","sourceRoot":"","sources":["../../src/install/skill.ts"],"names":[],"mappings":"AAMA,eAAO,MAAM,aAAa,29EA8CzB,CAAC;AAEF,2FAA2F;AAC3F,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAMjD"}
|
|
@@ -0,0 +1,61 @@
|
|
|
1
|
+
import { mkdirSync, writeFileSync } from "node:fs";
|
|
2
|
+
import { join } from "node:path";
|
|
3
|
+
// L3 of the progressive-disclosure stack: the full capability doc, loaded on
|
|
4
|
+
// demand as a skill. Single source of truth for `memoark skill scaffold` and
|
|
5
|
+
// the Hermes adapter.
|
|
6
|
+
export const MEMOARK_SKILL = `---
|
|
7
|
+
name: memoark
|
|
8
|
+
description: The user's local-first personal memory (people, projects, decisions, tasks, history). Use it to recall who/what/why before answering, and to write durable decisions back.
|
|
9
|
+
---
|
|
10
|
+
|
|
11
|
+
# Memoark — your personal memory
|
|
12
|
+
|
|
13
|
+
Memoark is the user's **local-first** personal memory and the source of truth about their
|
|
14
|
+
people, projects, decisions, tasks, and history. It is exposed over MCP.
|
|
15
|
+
|
|
16
|
+
## When to use it
|
|
17
|
+
Consult Memoark **before answering** whenever a request concerns:
|
|
18
|
+
- a specific person or colleague ("what did X tell me last week?", "who is X?")
|
|
19
|
+
- a project's status / progress / history ("where is this project at?", "what did we decide?")
|
|
20
|
+
- the user's todos, preferences, or habits
|
|
21
|
+
- anything phrased as recall: "last week / earlier / last time / what did we…"
|
|
22
|
+
|
|
23
|
+
Do **not** consult Memoark for generic questions unrelated to the user's world
|
|
24
|
+
(pure syntax, general algorithms).
|
|
25
|
+
|
|
26
|
+
## How to query (cheap-first)
|
|
27
|
+
1. \`search\` — keyword FTS, zero cost. Start here.
|
|
28
|
+
2. \`query\` / \`recall\` — semantic + cited; only if \`search\` is thin.
|
|
29
|
+
3. Accept good results; don't over-escalate.
|
|
30
|
+
|
|
31
|
+
At the start of a session, call \`get_session_context\` for a compact digest of active
|
|
32
|
+
projects, recent decisions, open tasks, and key people.
|
|
33
|
+
|
|
34
|
+
For **project-status** questions, combine Memoark (decisions / tasks / timeline) **with**
|
|
35
|
+
repo reality (git / code) — don't answer from code alone.
|
|
36
|
+
|
|
37
|
+
## Tool catalogue
|
|
38
|
+
- **Retrieval**: \`query\`, \`search\`, \`get_session_context\`, \`get_entity_profile\`, \`list_signals_by_entity\`
|
|
39
|
+
- **Synthesis**: \`recall\`, \`synthesize\`, \`prep_for_person\`, \`daily_report\`, \`troubleshoot\`
|
|
40
|
+
- **Write**: \`put_page\`, \`add_timeline_entry\`, \`manage_links\`, \`manage_tags\`
|
|
41
|
+
- **Graph / health**: \`explore_graph\`, \`get_health\`
|
|
42
|
+
|
|
43
|
+
## Writing back (conservative)
|
|
44
|
+
On a clear **decision** or **discovery**, or when the user says "remember this", persist it:
|
|
45
|
+
- \`put_page(slug="decisions/<kebab>", content="---\\ntitle: …\\ntype: decision\\n---\\n<reasoning>")\`
|
|
46
|
+
- \`add_timeline_entry\` for dated project events.
|
|
47
|
+
Slugs follow stable conventions: \`decisions/…\`, \`entities/…\`, \`projects/…\`. If unsure, ask.
|
|
48
|
+
|
|
49
|
+
## Examples
|
|
50
|
+
- *"Where is the memoark project at?"* → \`get_session_context\` + \`query("memoark 进展")\`, then merge with the repo's git/code reality.
|
|
51
|
+
- *"What did Xu Lizi talk to me about last week?"* → \`recall(entity="entities/xu-lizi")\` or \`query("许力子 上周")\`.
|
|
52
|
+
`;
|
|
53
|
+
/** Write the memoark skill into `<dir>/memoark/SKILL.md`. Idempotent. Returns the path. */
|
|
54
|
+
export function scaffoldSkill(dir) {
|
|
55
|
+
const skillDir = join(dir, "memoark");
|
|
56
|
+
mkdirSync(skillDir, { recursive: true });
|
|
57
|
+
const path = join(skillDir, "SKILL.md");
|
|
58
|
+
writeFileSync(path, MEMOARK_SKILL);
|
|
59
|
+
return path;
|
|
60
|
+
}
|
|
61
|
+
//# sourceMappingURL=skill.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skill.js","sourceRoot":"","sources":["../../src/install/skill.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AACnD,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAEjC,6EAA6E;AAC7E,6EAA6E;AAC7E,sBAAsB;AACtB,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8C5B,CAAC;AAEF,2FAA2F;AAC3F,MAAM,UAAU,aAAa,CAAC,GAAW;IACvC,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;IACtC,SAAS,CAAC,QAAQ,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACzC,MAAM,IAAI,GAAG,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC;IACxC,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IACnC,OAAO,IAAI,CAAC;AACd,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { McpEntry } from "./json-config.js";
|
|
2
|
+
export declare function upsertMcpServerToml(text: string, name: string, entry: McpEntry): string;
|
|
3
|
+
export declare function removeMcpServerToml(text: string, name: string): string;
|
|
4
|
+
//# sourceMappingURL=toml-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toml-config.d.ts","sourceRoot":"","sources":["../../src/install/toml-config.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AA0BjD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,CAcvF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAOtE"}
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
// Minimal TOML editing for Codex ~/.codex/config.toml `[mcp_servers.<name>]`
|
|
2
|
+
// tables. Intentionally dependency-free and scoped to this one table shape;
|
|
3
|
+
// other tables are preserved verbatim.
|
|
4
|
+
function renderTable(header, entry) {
|
|
5
|
+
const args = entry.args.map((a) => JSON.stringify(a)).join(", ");
|
|
6
|
+
return `[${header}]\ncommand = ${JSON.stringify(entry.command)}\nargs = [${args}]`;
|
|
7
|
+
}
|
|
8
|
+
// Returns [startLine, endLineExclusive] of the `[header]` table, or null.
|
|
9
|
+
function findTable(lines, header) {
|
|
10
|
+
const start = lines.findIndex((l) => l.trim() === `[${header}]`);
|
|
11
|
+
if (start === -1)
|
|
12
|
+
return null;
|
|
13
|
+
let end = lines.length;
|
|
14
|
+
for (let i = start + 1; i < lines.length; i++) {
|
|
15
|
+
if (lines[i].trim().startsWith("[")) {
|
|
16
|
+
end = i;
|
|
17
|
+
break;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return [start, end];
|
|
21
|
+
}
|
|
22
|
+
function normalize(text) {
|
|
23
|
+
const tidied = text.replace(/\n{3,}/g, "\n\n").replace(/\s*$/, "");
|
|
24
|
+
return tidied === "" ? "" : `${tidied}\n`;
|
|
25
|
+
}
|
|
26
|
+
export function upsertMcpServerToml(text, name, entry) {
|
|
27
|
+
const header = `mcp_servers.${name}`;
|
|
28
|
+
const block = renderTable(header, entry);
|
|
29
|
+
const lines = text.split("\n");
|
|
30
|
+
const region = findTable(lines, header);
|
|
31
|
+
if (region) {
|
|
32
|
+
const [start, end] = region;
|
|
33
|
+
let e = end;
|
|
34
|
+
while (e > start + 1 && lines[e - 1].trim() === "")
|
|
35
|
+
e--;
|
|
36
|
+
const rebuilt = [...lines.slice(0, start), ...block.split("\n"), "", ...lines.slice(e)];
|
|
37
|
+
return normalize(rebuilt.join("\n"));
|
|
38
|
+
}
|
|
39
|
+
const base = text.replace(/\s*$/, "");
|
|
40
|
+
return base === "" ? `${block}\n` : `${base}\n\n${block}\n`;
|
|
41
|
+
}
|
|
42
|
+
export function removeMcpServerToml(text, name) {
|
|
43
|
+
const header = `mcp_servers.${name}`;
|
|
44
|
+
const lines = text.split("\n");
|
|
45
|
+
const region = findTable(lines, header);
|
|
46
|
+
if (!region)
|
|
47
|
+
return text;
|
|
48
|
+
const [start, end] = region;
|
|
49
|
+
return normalize([...lines.slice(0, start), ...lines.slice(end)].join("\n"));
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=toml-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"toml-config.js","sourceRoot":"","sources":["../../src/install/toml-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import type { LaunchCmd } from "./command.js";
|
|
2
|
+
import type { McpEntry } from "./json-config.js";
|
|
3
|
+
export type Scope = "global" | "project";
|
|
4
|
+
export type InstallAction = "upsert" | "remove";
|
|
5
|
+
export interface PlanCtx {
|
|
6
|
+
home: string;
|
|
7
|
+
platform: NodeJS.Platform;
|
|
8
|
+
scope: Scope;
|
|
9
|
+
cwd: string;
|
|
10
|
+
launch: LaunchCmd;
|
|
11
|
+
action: InstallAction;
|
|
12
|
+
}
|
|
13
|
+
export type InstallOp = {
|
|
14
|
+
path: string;
|
|
15
|
+
kind: "json-mcp" | "toml-mcp" | "yaml-mcp";
|
|
16
|
+
action: InstallAction;
|
|
17
|
+
entry?: McpEntry;
|
|
18
|
+
} | {
|
|
19
|
+
path: string;
|
|
20
|
+
kind: "marked-block" | "managed-file";
|
|
21
|
+
action: InstallAction;
|
|
22
|
+
content?: string;
|
|
23
|
+
} | {
|
|
24
|
+
kind: "cli";
|
|
25
|
+
action: InstallAction;
|
|
26
|
+
args: string[];
|
|
27
|
+
};
|
|
28
|
+
export interface ClientAdapter {
|
|
29
|
+
id: string;
|
|
30
|
+
displayName: string;
|
|
31
|
+
/** Is this client installed on the machine? */
|
|
32
|
+
detect(home: string, platform: NodeJS.Platform): boolean;
|
|
33
|
+
/** Planned ops for the requested action; never touches disk. */
|
|
34
|
+
plan(ctx: PlanCtx): InstallOp[];
|
|
35
|
+
}
|
|
36
|
+
export declare function mcpEntry(ctx: PlanCtx): McpEntry;
|
|
37
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/install/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAC9C,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAEjD,MAAM,MAAM,KAAK,GAAG,QAAQ,GAAG,SAAS,CAAC;AACzC,MAAM,MAAM,aAAa,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAEhD,MAAM,WAAW,OAAO;IACtB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;IAC1B,KAAK,EAAE,KAAK,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,SAAS,CAAC;IAClB,MAAM,EAAE,aAAa,CAAC;CACvB;AAGD,MAAM,MAAM,SAAS,GACjB;IACE,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,UAAU,GAAG,UAAU,GAAG,UAAU,CAAC;IAC3C,MAAM,EAAE,aAAa,CAAC;IACtB,KAAK,CAAC,EAAE,QAAQ,CAAC;CAClB,GACD;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,cAAc,GAAG,cAAc,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAChG;IAAE,IAAI,EAAE,KAAK,CAAC;IAAC,MAAM,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE,MAAM,EAAE,CAAA;CAAE,CAAC;AAE3D,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,+CAA+C;IAC/C,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,CAAC,QAAQ,GAAG,OAAO,CAAC;IACzD,gEAAgE;IAChE,IAAI,CAAC,GAAG,EAAE,OAAO,GAAG,SAAS,EAAE,CAAC;CACjC;AAED,wBAAgB,QAAQ,CAAC,GAAG,EAAE,OAAO,GAAG,QAAQ,CAE/C"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/install/types.ts"],"names":[],"mappings":"AAmCA,MAAM,UAAU,QAAQ,CAAC,GAAY;IACnC,OAAO,EAAE,OAAO,EAAE,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,GAAG,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;AAChE,CAAC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { McpEntry } from "./json-config.js";
|
|
2
|
+
export declare function upsertMcpServerYaml(text: string, name: string, entry: McpEntry): string;
|
|
3
|
+
export declare function removeMcpServerYaml(text: string, name: string): string;
|
|
4
|
+
//# sourceMappingURL=yaml-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml-config.d.ts","sourceRoot":"","sources":["../../src/install/yaml-config.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AASjD,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,QAAQ,GAAG,MAAM,CAIvF;AAED,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,MAAM,CAItE"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { Document, parseDocument } from "yaml";
|
|
2
|
+
// Minimal YAML editing for Hermes config.yaml `mcp_servers.<name>`. Uses the
|
|
3
|
+
// Document API so comments and other keys/servers are preserved.
|
|
4
|
+
function load(text) {
|
|
5
|
+
return text?.trim() ? parseDocument(text) : new Document({});
|
|
6
|
+
}
|
|
7
|
+
export function upsertMcpServerYaml(text, name, entry) {
|
|
8
|
+
const doc = load(text);
|
|
9
|
+
doc.setIn(["mcp_servers", name], { command: entry.command, args: [...entry.args] });
|
|
10
|
+
return doc.toString();
|
|
11
|
+
}
|
|
12
|
+
export function removeMcpServerYaml(text, name) {
|
|
13
|
+
const doc = load(text);
|
|
14
|
+
if (doc.hasIn(["mcp_servers", name]))
|
|
15
|
+
doc.deleteIn(["mcp_servers", name]);
|
|
16
|
+
return doc.toString();
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=yaml-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"yaml-config.js","sourceRoot":"","sources":["../../src/install/yaml-config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,MAAM,CAAC;AAG/C,6EAA6E;AAC7E,iEAAiE;AAEjE,SAAS,IAAI,CAAC,IAAY;IACxB,OAAO,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,IAAI,QAAQ,CAAC,EAAE,CAAC,CAAC;AAC/D,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAAY,EAAE,KAAe;IAC7E,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,EAAE,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACpF,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,IAAY,EAAE,IAAY;IAC5D,MAAM,GAAG,GAAG,IAAI,CAAC,IAAI,CAAC,CAAC;IACvB,IAAI,GAAG,CAAC,KAAK,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAAE,GAAG,CAAC,QAAQ,CAAC,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC,CAAC;IAC1E,OAAO,GAAG,CAAC,QAAQ,EAAE,CAAC;AACxB,CAAC"}
|
|
@@ -23,11 +23,14 @@ import type { ExtractionResult } from "../core/types.js";
|
|
|
23
23
|
export declare class PrivacyProcessor {
|
|
24
24
|
private config;
|
|
25
25
|
private redactionMap;
|
|
26
|
+
private stateBase?;
|
|
26
27
|
private phoneRegex;
|
|
27
28
|
private idCardRegex;
|
|
28
29
|
private bankCardRegex;
|
|
29
30
|
private ipRegex;
|
|
30
|
-
constructor(config: PrivacyConfig
|
|
31
|
+
constructor(config: PrivacyConfig, options?: {
|
|
32
|
+
stateBase?: string;
|
|
33
|
+
});
|
|
31
34
|
/**
|
|
32
35
|
* Main entry point - process ExtractionResult and apply redactions
|
|
33
36
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../src/processors/privacy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EAIV,gBAAgB,EAOjB,MAAM,kBAAkB,CAAC;AAY1B;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,YAAY,CAAwB;
|
|
1
|
+
{"version":3,"file":"privacy.d.ts","sourceRoot":"","sources":["../../src/processors/privacy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAGH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAEvD,OAAO,KAAK,EAIV,gBAAgB,EAOjB,MAAM,kBAAkB,CAAC;AAY1B;;;;;;;;;;;;;;;GAeG;AACH,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAgB;IAC9B,OAAO,CAAC,YAAY,CAAwB;IAC5C,OAAO,CAAC,SAAS,CAAC,CAAS;IAG3B,OAAO,CAAC,UAAU,CAAkB;IACpC,OAAO,CAAC,WAAW,CAAmB;IACtC,OAAO,CAAC,aAAa,CAAgB;IAGrC,OAAO,CAAC,OAAO,CAAyC;gBAE5C,MAAM,EAAE,aAAa,EAAE,OAAO,GAAE;QAAE,SAAS,CAAC,EAAE,MAAM,CAAA;KAAO;IAKvE;;OAEG;IACH,OAAO,CAAC,MAAM,EAAE,gBAAgB,GAAG,gBAAgB;IAkCnD;;OAEG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,aAAa;IAQrB;;OAEG;IACH,OAAO,CAAC,eAAe;IAWvB;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACH,OAAO,CAAC,WAAW;IAQnB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;;OAIG;IACH,OAAO,CAAC,gBAAgB;IASxB;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAWzB;;;OAGG;IACH,OAAO,CAAC,gBAAgB;IAWxB;;;OAGG;IACH,OAAO,CAAC,sBAAsB;IAS9B;;;OAGG;IACH,OAAO,CAAC,UAAU;IA8BlB;;;OAGG;IACH,OAAO,CAAC,cAAc;IA2CtB;;OAEG;IACH,OAAO,CAAC,WAAW;IAInB;;OAEG;IACH,OAAO,CAAC,iBAAiB;CAY1B"}
|
|
@@ -23,14 +23,16 @@ import { ensureStateDir, statePath } from "../core/state.js";
|
|
|
23
23
|
export class PrivacyProcessor {
|
|
24
24
|
config;
|
|
25
25
|
redactionMap = [];
|
|
26
|
+
stateBase;
|
|
26
27
|
// L1 Patterns
|
|
27
28
|
phoneRegex = /1[3-9]\d{9}/g;
|
|
28
29
|
idCardRegex = /\d{17}[\dXx]/g;
|
|
29
30
|
bankCardRegex = /\d{16,19}/g;
|
|
30
31
|
// L2 Patterns
|
|
31
32
|
ipRegex = /\d{1,3}\.\d{1,3}\.\d{1,3}\.\d{1,3}/g;
|
|
32
|
-
constructor(config) {
|
|
33
|
+
constructor(config, options = {}) {
|
|
33
34
|
this.config = config;
|
|
35
|
+
this.stateBase = options.stateBase;
|
|
34
36
|
}
|
|
35
37
|
/**
|
|
36
38
|
* Main entry point - process ExtractionResult and apply redactions
|
|
@@ -257,8 +259,8 @@ export class PrivacyProcessor {
|
|
|
257
259
|
*/
|
|
258
260
|
writeRedactionMap() {
|
|
259
261
|
try {
|
|
260
|
-
ensureStateDir();
|
|
261
|
-
const mapPath = statePath("redaction_map.jsonl");
|
|
262
|
+
ensureStateDir(this.stateBase);
|
|
263
|
+
const mapPath = statePath("redaction_map.jsonl", this.stateBase);
|
|
262
264
|
for (const entry of this.redactionMap) {
|
|
263
265
|
appendFileSync(mapPath, `${JSON.stringify(entry)}\n`);
|
|
264
266
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"privacy.js","sourceRoot":"","sources":["../../src/processors/privacy.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,OAAO,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAEzC,OAAO,EAAE,cAAc,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAwB7D;;;;;;;;;;;;;;;GAeG;AACH,MAAM,OAAO,gBAAgB;IACnB,MAAM,CAAgB;IACtB,YAAY,GAAqB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"privacy.js","sourceRoot":"","sources":["../../src/processors/privacy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pipeline-side behavior accumulation (Spec 8 §4.1 / §9).
|
|
3
|
+
*
|
|
4
|
+
* Gated by config.profile: when disabled, nothing is written. Per-person
|
|
5
|
+
* allow/deny lists (canonical slugs) further gate which people are profiled.
|
|
6
|
+
* Group vs DM is inferred from the block channel ("group/..." → group).
|
|
7
|
+
*/
|
|
8
|
+
import type { ProfileConfig } from "../core/config.js";
|
|
9
|
+
import type { ConversationBlock } from "../core/types.js";
|
|
10
|
+
import type { PersonBehaviorStore } from "../store/person-behavior.js";
|
|
11
|
+
export interface AccumulateDeps {
|
|
12
|
+
store: PersonBehaviorStore;
|
|
13
|
+
config: ProfileConfig;
|
|
14
|
+
/**
|
|
15
|
+
* Map a message's `contact` (sender id) to its canonical person slug.
|
|
16
|
+
* May be sync or async (e.g. an identity-handle lookup); senders are
|
|
17
|
+
* pre-resolved once per block before the (sync) contribution computation.
|
|
18
|
+
*/
|
|
19
|
+
resolveSender: (contact: string) => string | Promise<string>;
|
|
20
|
+
}
|
|
21
|
+
/** Whether a person (by canonical slug) is allowed to be profiled. */
|
|
22
|
+
export declare function isPersonProfilable(slug: string, config: ProfileConfig): boolean;
|
|
23
|
+
/**
|
|
24
|
+
* Accumulate behavior counters for a single conversation block.
|
|
25
|
+
* No-op when profiling is disabled (the pipeline writes 0 rows in that case).
|
|
26
|
+
*/
|
|
27
|
+
export declare function accumulateBehavior(block: ConversationBlock, deps: AccumulateDeps): Promise<void>;
|
|
28
|
+
//# sourceMappingURL=accumulate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"accumulate.d.ts","sourceRoot":"","sources":["../../src/profile/accumulate.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAC1D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,6BAA6B,CAAC;AAGvE,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,mBAAmB,CAAC;IAC3B,MAAM,EAAE,aAAa,CAAC;IACtB;;;;OAIG;IACH,aAAa,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC;CAC9D;AAED,sEAAsE;AACtE,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,GAAG,OAAO,CAI/E;AAMD;;;GAGG;AACH,wBAAsB,kBAAkB,CACtC,KAAK,EAAE,iBAAiB,EACxB,IAAI,EAAE,cAAc,GACnB,OAAO,CAAC,IAAI,CAAC,CAuBf"}
|