memory-journal-mcp 9.0.0 → 9.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +165 -124
- package/dist/audit/interceptor.d.ts.map +1 -1
- package/dist/auth/authorization-server-discovery.d.ts.map +1 -1
- package/dist/auth/middleware.d.ts +11 -22
- package/dist/auth/middleware.d.ts.map +1 -1
- package/dist/auth/scope-map.d.ts.map +1 -1
- package/dist/auth/scopes.d.ts.map +1 -1
- package/dist/auth/token-validator.d.ts.map +1 -1
- package/dist/auth/transport-agnostic.d.ts +4 -0
- package/dist/auth/transport-agnostic.d.ts.map +1 -1
- package/dist/auth/validation.d.ts +1 -0
- package/dist/auth/validation.d.ts.map +1 -1
- package/dist/{chunk-6RCZ4IYV.js → chunk-4FZCHFB5.js} +28 -5
- package/dist/{chunk-AIWHVEOW.js → chunk-D2FY6XS5.js} +99 -7
- package/dist/chunk-FZLB6NAV.js +746 -0
- package/dist/{chunk-NVXCRDCO.js → chunk-LE6ZWUPK.js} +216 -138
- package/dist/chunk-SGJU2DHU.js +2102 -0
- package/dist/{chunk-2UIMA6JF.js → chunk-T7SROBBV.js} +32375 -29351
- package/dist/{chunk-IYZWMAA4.js → chunk-Y6MMKR2Z.js} +957 -1333
- package/dist/cli/commands/admin.d.ts +1 -1
- package/dist/cli/commands/admin.d.ts.map +1 -1
- package/dist/cli/commands/entry-payload.d.ts +38 -0
- package/dist/cli/commands/entry-payload.d.ts.map +1 -0
- package/dist/cli/commands/entry.d.ts +10 -0
- package/dist/cli/commands/entry.d.ts.map +1 -1
- package/dist/cli/commands/exec.d.ts.map +1 -1
- package/dist/cli/commands/io.d.ts +1 -0
- package/dist/cli/commands/io.d.ts.map +1 -1
- package/dist/cli/commands/visualize.d.ts.map +1 -1
- package/dist/cli/index.js +7 -10
- package/dist/cli/schemas.d.ts +14 -1
- package/dist/cli/schemas.d.ts.map +1 -1
- package/dist/cli/server-options-builder.d.ts.map +1 -1
- package/dist/cli.js +7 -10
- package/dist/codemode/api/journal-api.d.ts +5 -23
- package/dist/codemode/api/journal-api.d.ts.map +1 -1
- package/dist/codemode/api/key-normalizer.d.ts +8 -0
- package/dist/codemode/api/key-normalizer.d.ts.map +1 -0
- package/dist/codemode/api/param-normalizer.d.ts +2 -4
- package/dist/codemode/api/param-normalizer.d.ts.map +1 -1
- package/dist/codemode/api/project-registry-ops.d.ts +26 -0
- package/dist/codemode/api/project-registry-ops.d.ts.map +1 -0
- package/dist/codemode/api/sandbox-bindings.d.ts +25 -0
- package/dist/codemode/api/sandbox-bindings.d.ts.map +1 -0
- package/dist/codemode/api/types.d.ts.map +1 -1
- package/dist/codemode/api-constants.d.ts +3 -39
- package/dist/codemode/api-constants.d.ts.map +1 -1
- package/dist/codemode/constants/examples-and-params.d.ts +31 -0
- package/dist/codemode/constants/examples-and-params.d.ts.map +1 -0
- package/dist/codemode/constants/method-aliases.d.ts +8 -0
- package/dist/codemode/constants/method-aliases.d.ts.map +1 -0
- package/dist/codemode/normalizers/domain-tool-interceptions.d.ts +6 -0
- package/dist/codemode/normalizers/domain-tool-interceptions.d.ts.map +1 -0
- package/dist/codemode/normalizers/entry-and-search-interceptions.d.ts +6 -0
- package/dist/codemode/normalizers/entry-and-search-interceptions.d.ts.map +1 -0
- package/dist/codemode/normalizers/generic-interceptions.d.ts +6 -0
- package/dist/codemode/normalizers/generic-interceptions.d.ts.map +1 -0
- package/dist/codemode/normalizers/github-and-backup-interceptions.d.ts +6 -0
- package/dist/codemode/normalizers/github-and-backup-interceptions.d.ts.map +1 -0
- package/dist/codemode/normalizers/shared-utils.d.ts +31 -0
- package/dist/codemode/normalizers/shared-utils.d.ts.map +1 -0
- package/dist/codemode/param-normalizer.d.ts +5 -1
- package/dist/codemode/param-normalizer.d.ts.map +1 -1
- package/dist/codemode/proxy-helpers.d.ts +34 -0
- package/dist/codemode/proxy-helpers.d.ts.map +1 -0
- package/dist/codemode/proxy-namespaces.d.ts +30 -0
- package/dist/codemode/proxy-namespaces.d.ts.map +1 -0
- package/dist/codemode/security.d.ts +11 -0
- package/dist/codemode/security.d.ts.map +1 -1
- package/dist/codemode/type-generator.d.ts.map +1 -1
- package/dist/codemode/types.d.ts.map +1 -1
- package/dist/codemode/worker/mj-shim-domains.d.ts +15 -0
- package/dist/codemode/worker/mj-shim-domains.d.ts.map +1 -0
- package/dist/codemode/worker/mj-shim-proxy.d.ts +18 -0
- package/dist/codemode/worker/mj-shim-proxy.d.ts.map +1 -0
- package/dist/codemode/worker/namespace-shims.d.ts +32 -0
- package/dist/codemode/worker/namespace-shims.d.ts.map +1 -0
- package/dist/codemode/worker/node-shims.d.ts +65 -0
- package/dist/codemode/worker/node-shims.d.ts.map +1 -0
- package/dist/codemode/worker/prototype-hardening.d.ts +18 -0
- package/dist/codemode/worker/prototype-hardening.d.ts.map +1 -0
- package/dist/codemode/worker/result-compactor.d.ts +20 -0
- package/dist/codemode/worker/result-compactor.d.ts.map +1 -0
- package/dist/codemode/worker/sandbox-globals.d.ts +19 -0
- package/dist/codemode/worker/sandbox-globals.d.ts.map +1 -0
- package/dist/codemode/worker-api-proxy.d.ts +1 -6
- package/dist/codemode/worker-api-proxy.d.ts.map +1 -1
- package/dist/codemode/worker-result-proxy.d.ts.map +1 -1
- package/dist/codemode/worker-sandbox.d.ts.map +1 -1
- package/dist/constants/instructions/admin.d.ts +1 -1
- package/dist/constants/instructions/admin.d.ts.map +1 -1
- package/dist/constants/instructions/base.d.ts +2 -2
- package/dist/constants/instructions/base.d.ts.map +1 -1
- package/dist/constants/instructions/codemode.d.ts +1 -1
- package/dist/constants/instructions/codemode.d.ts.map +1 -1
- package/dist/constants/instructions/core.d.ts +1 -1
- package/dist/constants/instructions/core.d.ts.map +1 -1
- package/dist/constants/instructions/github.d.ts +1 -1
- package/dist/constants/instructions/github.d.ts.map +1 -1
- package/dist/constants/instructions/gotchas.d.ts +1 -1
- package/dist/constants/instructions/gotchas.d.ts.map +1 -1
- package/dist/constants/instructions/io.d.ts +1 -1
- package/dist/constants/instructions/io.d.ts.map +1 -1
- package/dist/constants/instructions/templates.d.ts +1 -1
- package/dist/constants/instructions/templates.d.ts.map +1 -1
- package/dist/constants/server-instructions.d.ts +2 -2
- package/dist/constants/server-instructions.d.ts.map +1 -1
- package/dist/database/core/interfaces.d.ts +6 -6
- package/dist/database/core/interfaces.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/adapter-delegates.d.ts +161 -0
- package/dist/database/sqlite-adapter/adapter-delegates.d.ts.map +1 -0
- package/dist/database/sqlite-adapter/backup.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/database-adapter.d.ts +17 -147
- package/dist/database/sqlite-adapter/database-adapter.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/entries/crud-read.d.ts +16 -0
- package/dist/database/sqlite-adapter/entries/crud-read.d.ts.map +1 -0
- package/dist/database/sqlite-adapter/entries/crud-write.d.ts +62 -0
- package/dist/database/sqlite-adapter/entries/crud-write.d.ts.map +1 -0
- package/dist/database/sqlite-adapter/entries/crud.d.ts +3 -92
- package/dist/database/sqlite-adapter/entries/crud.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/entries/importance.d.ts +7 -0
- package/dist/database/sqlite-adapter/entries/importance.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/entries/index.d.ts +9 -4
- package/dist/database/sqlite-adapter/entries/index.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/entries/revisions.d.ts +16 -0
- package/dist/database/sqlite-adapter/entries/revisions.d.ts.map +1 -0
- package/dist/database/sqlite-adapter/entries/search/date-and-pagination.d.ts +37 -0
- package/dist/database/sqlite-adapter/entries/search/date-and-pagination.d.ts.map +1 -0
- package/dist/database/sqlite-adapter/entries/search/entity-lookups.d.ts +31 -0
- package/dist/database/sqlite-adapter/entries/search/entity-lookups.d.ts.map +1 -0
- package/dist/database/sqlite-adapter/entries/search/fts-and-hybrid.d.ts +44 -0
- package/dist/database/sqlite-adapter/entries/search/fts-and-hybrid.d.ts.map +1 -0
- package/dist/database/sqlite-adapter/entries/search/index.d.ts +1 -1
- package/dist/database/sqlite-adapter/entries/search/index.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/entries/search/query.d.ts +3 -82
- package/dist/database/sqlite-adapter/entries/search/query.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/entries/statistics.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/insights/cross-project.d.ts +42 -0
- package/dist/database/sqlite-adapter/insights/cross-project.d.ts.map +1 -0
- package/dist/database/sqlite-adapter/insights/entry-digest-queries.d.ts +17 -0
- package/dist/database/sqlite-adapter/insights/entry-digest-queries.d.ts.map +1 -0
- package/dist/database/sqlite-adapter/insights/team-collaboration.d.ts +29 -0
- package/dist/database/sqlite-adapter/insights/team-collaboration.d.ts.map +1 -0
- package/dist/database/sqlite-adapter/insights-operations.d.ts +11 -50
- package/dist/database/sqlite-adapter/insights-operations.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/lifecycle-operations.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/members.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/native-connection.d.ts +5 -0
- package/dist/database/sqlite-adapter/native-connection.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/relationships.d.ts +1 -2
- package/dist/database/sqlite-adapter/relationships.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/tags.d.ts.map +1 -1
- package/dist/database/sqlite-adapter/vector-operations.d.ts.map +1 -1
- package/dist/filtering/tool-constants.d.ts +1 -1
- package/dist/{fts-T466O2JP.js → fts-YHUVPPYF.js} +2 -2
- package/dist/github/commit-references/enricher.d.ts.map +1 -1
- package/dist/github/github-integration/projects.d.ts.map +1 -1
- package/dist/handlers/prompts/adversarial-helpers.d.ts +75 -0
- package/dist/handlers/prompts/adversarial-helpers.d.ts.map +1 -0
- package/dist/handlers/prompts/adversarial.d.ts +3 -5
- package/dist/handlers/prompts/adversarial.d.ts.map +1 -1
- package/dist/handlers/prompts/cms-supervisor.d.ts +8 -0
- package/dist/handlers/prompts/cms-supervisor.d.ts.map +1 -0
- package/dist/handlers/prompts/index.d.ts.map +1 -1
- package/dist/handlers/prompts/optimizer.d.ts.map +1 -1
- package/dist/handlers/prompts/workflow.d.ts.map +1 -1
- package/dist/handlers/resources/core/briefing/context-section.d.ts.map +1 -1
- package/dist/handlers/resources/core/briefing/github-repo-and-kanban.d.ts +57 -0
- package/dist/handlers/resources/core/briefing/github-repo-and-kanban.d.ts.map +1 -0
- package/dist/handlers/resources/core/briefing/github-section.d.ts +23 -20
- package/dist/handlers/resources/core/briefing/github-section.d.ts.map +1 -1
- package/dist/handlers/resources/core/briefing/system-section.d.ts.map +1 -1
- package/dist/handlers/resources/core/briefing/user-message.d.ts.map +1 -1
- package/dist/handlers/resources/help.d.ts.map +1 -1
- package/dist/handlers/resources/index.d.ts.map +1 -1
- package/dist/handlers/resources/shared.d.ts +1 -0
- package/dist/handlers/resources/shared.d.ts.map +1 -1
- package/dist/handlers/resources/staleness.d.ts.map +1 -1
- package/dist/handlers/tools/admin/batch-tools.d.ts.map +1 -1
- package/dist/handlers/tools/admin/core-tools.d.ts.map +1 -1
- package/dist/handlers/tools/admin/index.d.ts.map +1 -1
- package/dist/handlers/tools/admin/lifecycle-tools.d.ts.map +1 -1
- package/dist/handlers/tools/admin/project-tools.d.ts +1 -1
- package/dist/handlers/tools/admin/project-tools.d.ts.map +1 -1
- package/dist/handlers/tools/admin/schemas/crud-batch-schemas.d.ts +609 -0
- package/dist/handlers/tools/admin/schemas/crud-batch-schemas.d.ts.map +1 -0
- package/dist/handlers/tools/admin/schemas/project-and-ops-schemas.d.ts +136 -0
- package/dist/handlers/tools/admin/schemas/project-and-ops-schemas.d.ts.map +1 -0
- package/dist/handlers/tools/admin/schemas.d.ts +2 -733
- package/dist/handlers/tools/admin/schemas.d.ts.map +1 -1
- package/dist/handlers/tools/admin/update_configuration.d.ts +14 -0
- package/dist/handlers/tools/admin/update_configuration.d.ts.map +1 -1
- package/dist/handlers/tools/admin/vector-tools.d.ts.map +1 -1
- package/dist/handlers/tools/analytics.d.ts.map +1 -1
- package/dist/handlers/tools/arg-interceptions.d.ts +51 -0
- package/dist/handlers/tools/arg-interceptions.d.ts.map +1 -0
- package/dist/handlers/tools/codemode/code-healer.d.ts +11 -0
- package/dist/handlers/tools/codemode/code-healer.d.ts.map +1 -0
- package/dist/handlers/tools/codemode/handler.d.ts +4 -23
- package/dist/handlers/tools/codemode/handler.d.ts.map +1 -1
- package/dist/handlers/tools/codemode/json-entry-recovery.d.ts +13 -0
- package/dist/handlers/tools/codemode/json-entry-recovery.d.ts.map +1 -0
- package/dist/handlers/tools/codemode/payload-synthesizer.d.ts +17 -0
- package/dist/handlers/tools/codemode/payload-synthesizer.d.ts.map +1 -0
- package/dist/handlers/tools/codemode/secure-dispatcher.d.ts +25 -0
- package/dist/handlers/tools/codemode/secure-dispatcher.d.ts.map +1 -0
- package/dist/handlers/tools/codemode/sql-recovery.d.ts +14 -0
- package/dist/handlers/tools/codemode/sql-recovery.d.ts.map +1 -0
- package/dist/handlers/tools/core/dummy-healing/alias-catalog.d.ts +21 -0
- package/dist/handlers/tools/core/dummy-healing/alias-catalog.d.ts.map +1 -0
- package/dist/handlers/tools/core/dummy-healing/entry-fallbacks.d.ts +4 -0
- package/dist/handlers/tools/core/dummy-healing/entry-fallbacks.d.ts.map +1 -0
- package/dist/handlers/tools/core/dummy-healing/fs-fallbacks.d.ts +19 -0
- package/dist/handlers/tools/core/dummy-healing/fs-fallbacks.d.ts.map +1 -0
- package/dist/handlers/tools/core/dummy-healing/index.d.ts +7 -0
- package/dist/handlers/tools/core/dummy-healing/index.d.ts.map +1 -0
- package/dist/handlers/tools/core/dummy-healing/mcp-fallbacks.d.ts +12 -0
- package/dist/handlers/tools/core/dummy-healing/mcp-fallbacks.d.ts.map +1 -0
- package/dist/handlers/tools/core/dummy-healing.d.ts +1 -29
- package/dist/handlers/tools/core/dummy-healing.d.ts.map +1 -1
- package/dist/handlers/tools/core/index.d.ts +1 -1
- package/dist/handlers/tools/core/index.d.ts.map +1 -1
- package/dist/handlers/tools/core/schemas.d.ts +33 -9
- package/dist/handlers/tools/core/schemas.d.ts.map +1 -1
- package/dist/handlers/tools/core/staleness-tools.d.ts +17 -0
- package/dist/handlers/tools/core/staleness-tools.d.ts.map +1 -1
- package/dist/handlers/tools/core/tools.d.ts.map +1 -1
- package/dist/handlers/tools/git.d.ts +5 -11
- package/dist/handlers/tools/git.d.ts.map +1 -1
- package/dist/handlers/tools/github/close-issue-tool.d.ts +6 -0
- package/dist/handlers/tools/github/close-issue-tool.d.ts.map +1 -0
- package/dist/handlers/tools/github/create-issue-tool.d.ts +6 -0
- package/dist/handlers/tools/github/create-issue-tool.d.ts.map +1 -0
- package/dist/handlers/tools/github/issue-tools.d.ts +3 -0
- package/dist/handlers/tools/github/issue-tools.d.ts.map +1 -1
- package/dist/handlers/tools/github/kanban-tools.d.ts.map +1 -1
- package/dist/handlers/tools/github/milestone-tools.d.ts.map +1 -1
- package/dist/handlers/tools/index.d.ts +2 -2
- package/dist/handlers/tools/index.d.ts.map +1 -1
- package/dist/handlers/tools/io/schemas.d.ts +5 -2
- package/dist/handlers/tools/io/schemas.d.ts.map +1 -1
- package/dist/handlers/tools/relationships.d.ts.map +1 -1
- package/dist/handlers/tools/schemas/constants-and-primitives.d.ts +53 -0
- package/dist/handlers/tools/schemas/constants-and-primitives.d.ts.map +1 -0
- package/dist/handlers/tools/schemas/hallucination-healer.d.ts +8 -0
- package/dist/handlers/tools/schemas/hallucination-healer.d.ts.map +1 -0
- package/dist/handlers/tools/schemas/output-schemas.d.ts +247 -0
- package/dist/handlers/tools/schemas/output-schemas.d.ts.map +1 -0
- package/dist/handlers/tools/schemas.d.ts +4 -306
- package/dist/handlers/tools/schemas.d.ts.map +1 -1
- package/dist/handlers/tools/search/cross-team.d.ts +14 -0
- package/dist/handlers/tools/search/cross-team.d.ts.map +1 -1
- package/dist/handlers/tools/search/helpers.d.ts.map +1 -1
- package/dist/handlers/tools/search/hybrid.d.ts.map +1 -1
- package/dist/handlers/tools/search/misc-tools.d.ts.map +1 -1
- package/dist/handlers/tools/search/schemas.d.ts +6 -3
- package/dist/handlers/tools/search/schemas.d.ts.map +1 -1
- package/dist/handlers/tools/search/search-entries.d.ts.map +1 -1
- package/dist/handlers/tools/search/semantic-search.d.ts.map +1 -1
- package/dist/handlers/tools/team/admin-tools/batch.d.ts.map +1 -1
- package/dist/handlers/tools/team/admin-tools/crud.d.ts.map +1 -1
- package/dist/handlers/tools/team/backup-tools.d.ts.map +1 -1
- package/dist/handlers/tools/team/core-tools.d.ts.map +1 -1
- package/dist/handlers/tools/team/helpers.d.ts.map +1 -1
- package/dist/handlers/tools/team/io-tools.d.ts.map +1 -1
- package/dist/handlers/tools/team/member-tools.d.ts.map +1 -1
- package/dist/handlers/tools/team/rbac.d.ts.map +1 -1
- package/dist/handlers/tools/team/relationship-tools.d.ts.map +1 -1
- package/dist/handlers/tools/team/schemas/admin-batch-schemas.d.ts +618 -0
- package/dist/handlers/tools/team/schemas/admin-batch-schemas.d.ts.map +1 -0
- package/dist/handlers/tools/team/schemas/analytics-vector-schemas.d.ts +464 -0
- package/dist/handlers/tools/team/schemas/analytics-vector-schemas.d.ts.map +1 -0
- package/dist/handlers/tools/team/schemas/core-search-schemas.d.ts +525 -0
- package/dist/handlers/tools/team/schemas/core-search-schemas.d.ts.map +1 -0
- package/dist/handlers/tools/team/schemas/io-backup-schemas.d.ts +419 -0
- package/dist/handlers/tools/team/schemas/io-backup-schemas.d.ts.map +1 -0
- package/dist/handlers/tools/team/schemas.d.ts +5 -2002
- package/dist/handlers/tools/team/schemas.d.ts.map +1 -1
- package/dist/handlers/tools/team/search-tools.d.ts.map +1 -1
- package/dist/handlers/tools/team/vector-tools.d.ts.map +1 -1
- package/dist/index.js +6 -9
- package/dist/markdown/exporter.d.ts.map +1 -1
- package/dist/markdown/importer.d.ts.map +1 -1
- package/dist/observability/latency-tracker.d.ts.map +1 -1
- package/dist/observability/metrics-server.d.ts +1 -1
- package/dist/observability/metrics-server.d.ts.map +1 -1
- package/dist/observability/token-estimator.d.ts.map +1 -1
- package/dist/{security-utils-HNTROJAG.js → security-utils-P4P6A2DG.js} +1 -1
- package/dist/server/digest-reporter.d.ts +1 -0
- package/dist/server/digest-reporter.d.ts.map +1 -1
- package/dist/server/mcp-server/core.d.ts.map +1 -1
- package/dist/server/mcp-server/tool-registration/call-interceptor.d.ts +6 -0
- package/dist/server/mcp-server/tool-registration/call-interceptor.d.ts.map +1 -0
- package/dist/server/mcp-server/tool-registration/index.d.ts +4 -0
- package/dist/server/mcp-server/tool-registration/index.d.ts.map +1 -0
- package/dist/server/mcp-server/tool-registration/list-interceptor.d.ts +4 -0
- package/dist/server/mcp-server/tool-registration/list-interceptor.d.ts.map +1 -0
- package/dist/server/mcp-server/tool-registration/register-tools.d.ts +18 -0
- package/dist/server/mcp-server/tool-registration/register-tools.d.ts.map +1 -0
- package/dist/server/mcp-server/tool-registration.d.ts +1 -17
- package/dist/server/mcp-server/tool-registration.d.ts.map +1 -1
- package/dist/server/registration.d.ts +2 -0
- package/dist/server/registration.d.ts.map +1 -1
- package/dist/server/scheduler.d.ts +1 -0
- package/dist/server/scheduler.d.ts.map +1 -1
- package/dist/server/subscription-manager.d.ts +2 -0
- package/dist/server/subscription-manager.d.ts.map +1 -1
- package/dist/tools-BOQV7QD3.js +6 -0
- package/dist/transports/http/security.d.ts.map +1 -1
- package/dist/transports/http/server/http-transport.d.ts +25 -0
- package/dist/transports/http/server/http-transport.d.ts.map +1 -0
- package/dist/transports/http/server/index.d.ts +3 -30
- package/dist/transports/http/server/index.d.ts.map +1 -1
- package/dist/transports/http/server/legacy-sse.d.ts.map +1 -1
- package/dist/transports/http/server/protocol-handlers.d.ts +9 -0
- package/dist/transports/http/server/protocol-handlers.d.ts.map +1 -0
- package/dist/types/entities.d.ts +41 -1
- package/dist/types/entities.d.ts.map +1 -1
- package/dist/types/index.d.ts +11 -4
- package/dist/types/index.d.ts.map +1 -1
- package/dist/utils/config-manager.d.ts +2 -0
- package/dist/utils/config-manager.d.ts.map +1 -1
- package/dist/utils/error-helpers.d.ts.map +1 -1
- package/dist/utils/issue-logger.d.ts.map +1 -1
- package/dist/utils/mcp-logger.d.ts +14 -2
- package/dist/utils/mcp-logger.d.ts.map +1 -1
- package/dist/utils/security-utils.d.ts.map +1 -1
- package/dist/utils/vector-index-helpers.d.ts +1 -1
- package/dist/utils/vector-index-helpers.d.ts.map +1 -1
- package/dist/utils/workspace-resolver.d.ts.map +1 -1
- package/dist/vector/vector-search-manager/manager.d.ts +2 -2
- package/dist/vector/vector-search-manager/manager.d.ts.map +1 -1
- package/dist/vector/vector-search-manager/rebuild.d.ts.map +1 -1
- package/dist/vendor/lib-agent-exec/interceptors/git-interceptor.d.ts.map +1 -1
- package/dist/vendor/lib-agent-exec/schema.d.ts +18 -18
- package/dist/vendor/lib-agent-exec/schema.d.ts.map +1 -1
- package/dist/vendor/lib-agent-exec/stream-manager.d.ts.map +1 -1
- package/dist/worker-script.js +2662 -2645
- package/package.json +3 -4
- package/skills/memory-journal-mcp/SKILL.md +8 -8
- package/dist/auth/context.d.ts +0 -7
- package/dist/auth/context.d.ts.map +0 -1
- package/dist/chunk-ELMJYRTT.js +0 -29
- package/dist/chunk-F6WSLZVN.js +0 -675
- package/dist/chunk-JVGY2GHK.js +0 -776
- package/dist/chunk-KWSBCSFM.js +0 -411
- package/dist/chunk-SP5D3XYY.js +0 -1550
- package/dist/chunk-XJMEPP36.js +0 -57
- package/dist/database/core/entry-columns.d.ts +0 -8
- package/dist/database/core/entry-columns.d.ts.map +0 -1
- package/dist/database/core/schema.d.ts +0 -69
- package/dist/database/core/schema.d.ts.map +0 -1
- package/dist/error-helpers-STR7IPUR.js +0 -2
- package/dist/git-runner-6OE7PVKA.js +0 -1
- package/dist/journal-api-UG43ZD7Y.js +0 -1289
- package/dist/tools-RBNFDWIE.js +0 -9
package/README.md
CHANGED
|
@@ -5,8 +5,7 @@
|
|
|
5
5
|
[](https://github.com/neverinfamous/memory-journal-mcp) [](https://www.npmjs.com/package/memory-journal-mcp) [](https://hub.docker.com/r/writenotenow/memory-journal-mcp)
|
|
6
6
|
[](https://opensource.org/licenses/MIT) 
|
|
7
7
|
[](https://registry.modelcontextprotocol.io/v0/servers?search=io.github.neverinfamous/memory-journal-mcp) [](SECURITY.md) [](https://github.com/neverinfamous/memory-journal-mcp)
|
|
8
|
-
 [](https://github.com/neverinfamous/memory-journal-mcp/actions/workflows/gatekeeper.yml)
|
|
8
|
+
   [](https://github.com/neverinfamous/memory-journal-mcp/wiki/Performance) [](https://github.com/neverinfamous/memory-journal-mcp/actions/workflows/gatekeeper.yml)
|
|
10
9
|
|
|
11
10
|
**[📚 Full Documentation (Wiki)](https://github.com/neverinfamous/memory-journal-mcp/wiki)** • **[Changelog](CHANGELOG.md)** • **[Security](SECURITY.md)** • **[Release Article](https://adamic.tech/articles/memory-journal-mcp-server)**
|
|
12
11
|
|
|
@@ -24,23 +23,23 @@
|
|
|
24
23
|
Large projects face a critical challenge. You lose context between sessions.
|
|
25
24
|
|
|
26
25
|
- **Stop Thread Amnesia** - AI conversations start fresh. They ignore previous work.
|
|
27
|
-
- **Retain Deep Context** -
|
|
28
|
-
- **End Repeated Work** - AI repeats failed solutions
|
|
29
|
-
- **Prevent Context Overload** -
|
|
26
|
+
- **Retain Deep Context** - Decisions and code scatter across threads; Memory Journal preserves them automatically.
|
|
27
|
+
- **End Repeated Work** - AI repeats failed solutions; persistent history tracks every prior attempt.
|
|
28
|
+
- **Prevent Context Overload** - Manual history copying wastes tokens; dynamic briefings deliver targeted context automatically.
|
|
30
29
|
|
|
31
|
-
Memory Journal builds your project's long-term memory. It
|
|
30
|
+
Memory Journal builds your project's long-term memory. It acts as a **Project Context Graph** for AI-assisted engineering. It bridges **human workflows** (Issues, PRs, Kanban, Milestones) with **agent execution** (Git, tests, decisions).
|
|
32
31
|
|
|
33
32
|
---
|
|
34
33
|
|
|
35
34
|
**Experience true context-aware development:**
|
|
36
35
|
|
|
37
36
|
- _"Why did we choose SQLite over Postgres for this service last month?"_ (Semantic search)
|
|
38
|
-
- _"Run the `/issue-triage` workflow on the top priority ticket in the Kanban board."_ (GitHub operations)
|
|
37
|
+
- _"Run the `/issue-commander` (`triage` workflow) on the top priority ticket in the Kanban board."_ (GitHub operations)
|
|
39
38
|
- _"Who has been touching the auth module recently, and what's our team collaboration density?"_ (Team analytics)
|
|
40
39
|
- _"Commit the changes and automatically generate a structured journal entry using the \`--journal\` wrapper flag."_ (Automated lifecycles)
|
|
41
40
|
- _"Draw a visual graph showing how my last 10 architectural decisions relate to each other."_ (Knowledge graph)
|
|
42
41
|
|
|
43
|
-
**Comprehensive access to internal state via resources (`memory://briefing`, `memory://workflows`, `memory://rules`, `memory://health`, `memory://help`, `memory://staleness`, GitHub status/
|
|
42
|
+
**Comprehensive access to internal state via resources (`memory://briefing`, `memory://workflows`, `memory://rules`, `memory://health`, `memory://help`, `memory://staleness`, GitHub status/milestones, team stats, and metrics/latency). Dynamic repo variants also support cross-repo targeting (like `memory://briefing/{+repo}` or `memory://kanban/{+repo}/{project_number}`).** **[Resources documentation →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Resources)**
|
|
44
43
|
|
|
45
44
|
---
|
|
46
45
|
|
|
@@ -75,10 +74,10 @@ Memory Journal builds your project's long-term memory. It bridges fragmented AI
|
|
|
75
74
|
|
|
76
75
|
Memory Journal supports multi-tenancy out of the box via the `workspace_id` construct, acting as a strict isolation barrier for multiple journals sharing the same SQLite database file.
|
|
77
76
|
|
|
78
|
-
- **
|
|
79
|
-
- **Data Partitioning:** Core CRUD, Search, and Analytics tools
|
|
80
|
-
- **Immutability:**
|
|
81
|
-
- **Server Config:** Set `--default-workspace-id` (or the `DEFAULT_WORKSPACE_ID` environment variable) to configure the default fallback workspace for the server instance
|
|
77
|
+
- **Auto-Resolution:** When `workspace_id` is omitted, the server automatically resolves the target workspace. It matches `project_number` against `PROJECT_REGISTRY`, checks content/tag keyword aliases, or inspects `process.cwd()` before falling back to `DEFAULT_WORKSPACE_ID` (default: `default`).
|
|
78
|
+
- **Data Partitioning & Cross-Workspace Queries:** Core CRUD, Soft-Delete/Restore, FTS5 Search, Vector Semantic Search (`semantic_search`), and Analytics tools enforce `workspace_id` isolation end-to-end. Read and search tools accept `workspace_id: "*"` to query across all workspaces. External write and mutation paths reject wildcard overrides.
|
|
79
|
+
- **Immutability & Controlled Migration:** Entries receive a `workspace_id` upon creation that standard updates cannot overwrite directly. To migrate an entry across workspaces, call `update_entry` with `workspace_id: "*"` and `target_workspace_id`.
|
|
80
|
+
- **Server Config:** Set `--default-workspace-id` (or the `DEFAULT_WORKSPACE_ID` environment variable) to configure the default fallback workspace for the server instance. This lets you run multiple isolated journal interfaces on a single physical database.
|
|
82
81
|
|
|
83
82
|
---
|
|
84
83
|
|
|
@@ -147,18 +146,22 @@ When the user initializes the session context by executing the `load-briefing` p
|
|
|
147
146
|
### Control Access with Tool Filtering
|
|
148
147
|
|
|
149
148
|
> [!IMPORTANT]
|
|
150
|
-
> All shortcuts and tool groups include **Code Mode** (`mj_execute_code`)
|
|
151
|
-
|
|
152
|
-
Control which tools are exposed
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
|
158
|
-
|
|
|
159
|
-
| `
|
|
160
|
-
|
|
|
161
|
-
|
|
|
149
|
+
> All shortcuts and tool groups always include **Code Mode** (`mj_execute_code`) and **Runtime Configuration** (`update_configuration`) as escape-hatch tools so agents can never lock themselves out of the configuration system or Code Mode.
|
|
150
|
+
|
|
151
|
+
Control which tools are exposed using any of the 3 configuration sources (precedence: CLI flag > environment variable > config file):
|
|
152
|
+
- **CLI flag**: `--tool-filter <filter>`
|
|
153
|
+
- **Environment variable**: `MEMORY_JOURNAL_MCP_TOOL_FILTER` *(Note: `TOOL_FILTER` is only a fallback display variable in the session briefing and does **not** activate tool filtering on its own)*
|
|
154
|
+
- **`memory-journal.config.{yaml,yml,json}` key**: `"toolFilter"`
|
|
155
|
+
|
|
156
|
+
| Filter | Use Case |
|
|
157
|
+
| -------------------- | ----------------------------------- |
|
|
158
|
+
| `full` | All tools (default) |
|
|
159
|
+
| `starter` | Core + search + codemode |
|
|
160
|
+
| `essential` | Minimal footprint |
|
|
161
|
+
| `readonly` | Disable all mutations |
|
|
162
|
+
| `codemode` | `mj_execute_code` + runtime config |
|
|
163
|
+
| `-github` | Exclude a group |
|
|
164
|
+
| `-github,-analytics` | Exclude multiple groups |
|
|
162
165
|
|
|
163
166
|
**Filter Syntax:** `shortcut` or `group` or `tool_name` (whitelist mode) · `-group` (disable group) · `-tool` (disable tool) · `+tool` (re-enable after group disable)
|
|
164
167
|
|
|
@@ -177,83 +180,75 @@ Control which tools are exposed via `MEMORY_JOURNAL_MCP_TOOL_FILTER` (or CLI: `-
|
|
|
177
180
|
| Group | Description |
|
|
178
181
|
| --------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
179
182
|
| `codemode` | Code Mode (sandboxed code execution) 🌟 **Recommended** |
|
|
180
|
-
| `core` | Entry
|
|
181
|
-
| `search` | Text search, date range, semantic, vector stats, cross-team
|
|
183
|
+
| `core` | Entry creation/read/history, tags, resource & briefing helpers, anchor staleness, test |
|
|
184
|
+
| `search` | Text search, date range, semantic, vector stats, deleted entries, cross-team |
|
|
182
185
|
| `analytics` | Statistics, cross-project insights |
|
|
183
186
|
| `relationships` | Link entries, visualize graphs |
|
|
184
|
-
| `io` | JSON/Markdown export and
|
|
185
|
-
| `admin` | Update configuration,
|
|
187
|
+
| `io` | JSON/Markdown export, Markdown directory import/export, and external knowledge base import (Notion, Obsidian, Logseq) |
|
|
188
|
+
| `admin` | Update configuration, project registry management, entry update/delete/restore, rebuild/add to vector index, merge tags, search audit log, auto-prune, bulk operations (batch create/update/delete) |
|
|
186
189
|
| `github` | Issues, PRs, context, Kanban, **Milestones**, **Insights**, **issue lifecycle**, **Copilot Reviews** |
|
|
187
190
|
| `git` | Commit history, search, release info, patterns, staleness checks |
|
|
188
191
|
| `backup` | Backup, list, restore, cleanup |
|
|
189
|
-
| `team` | CRUD, search, stats, relationships, IO (Markdown import/export), backup, vector search, cross-project insights, matrix, RBAC member management (requires `TEAM_DB_PATH`) |
|
|
192
|
+
| `team` | CRUD, search, stats, relationships, IO (Markdown & external import/export), backup, vector search, cross-project insights, matrix, RBAC member management, author aliases (requires `TEAM_DB_PATH`) |
|
|
190
193
|
|
|
191
194
|
**[Complete tools reference →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Tools)**
|
|
192
195
|
|
|
193
196
|
### 🎯 **Workflow Prompts**
|
|
194
197
|
|
|
195
|
-
|
|
198
|
+
Specialized workflow prompts cover session briefing, standup & retro prep, goal tracking, PR & issue command, session summaries, and journal optimization. Additional prompts support CMS REM supervision, adversarial plan reviews, code & security audits, secure commit workflows, and anti-hallucination healing. **[Complete prompts guide →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Prompts)**
|
|
196
199
|
|
|
197
200
|
### 📡 **Resources**
|
|
198
201
|
See the **[Complete resources guide →](https://github.com/neverinfamous/memory-journal-mcp/wiki/Resources)** for the full list of dynamic context resources, including `memory://briefing`, `memory://instructions`, GitHub integration endpoints, telemetry metrics, and templated views.
|
|
199
202
|
|
|
200
|
-
|
|
203
|
+
- **Dynamic Resource Templates**: Resources `memory://briefing/{+repo}`, `memory://agent-context/{+repo}`, `memory://agent-id/{+repo}`, `memory://actions/recent/{+repo}`, `memory://github/status/{+repo}`, `memory://github/milestones/{+repo}`, `memory://milestones/{+repo}/{number}`, and `memory://kanban/{+repo}/{project_number}` accept an RFC 6570 `{+repo}` path parameter for targeted project context.
|
|
201
204
|
|
|
202
205
|
---
|
|
203
206
|
|
|
204
207
|
## ⚡ Code Mode: Maximum Efficiency (90% Token Savings)
|
|
205
208
|
|
|
206
|
-
Code Mode (`mj_execute_code`)
|
|
209
|
+
Code Mode (`mj_execute_code`) **reduces token usage by up to 90%** and is included by default in all presets. Instead of spending thousands of tokens on sequential tool calls, AI agents use a single sandboxed execution to reason faster.
|
|
207
210
|
|
|
208
|
-
Code executes in a **worker_threads
|
|
211
|
+
Code executes in a **pre-warmed `worker_threads` V8 isolate pool + secondary `vm.createContext` boundary** designed as a secure multi-tenant process isolation environment. All `mj.*` API calls execute against the journal within the sandbox, providing:
|
|
209
212
|
|
|
210
213
|
- **V8 code generation restrictions** — `eval()` and `Function()` construction from strings disabled at the V8 engine level via `codeGeneration: { strings: false, wasm: false }`
|
|
211
|
-
- **Frozen prototypes** — all built-in prototypes (Object
|
|
212
|
-
- **
|
|
214
|
+
- **Frozen prototypes & cross-realm constructor lockdown** — all built-in prototypes (`Object`, `Function`, `Array`, `Error`, etc.) and `mj.*` API bindings are frozen, and `.constructor` is neutered across `Object`, `Function`, `AsyncFunction`, `GeneratorFunction`, and `AsyncGeneratorFunction` prototypes in both the inner `vm` realm and outer worker realm to prevent dynamic constructor chain escapes
|
|
215
|
+
- **Single-pass lexical validation** — pre-validation rate-limiting and 50KB byte caps run before any code normalization, followed by a single-pass lexical comment/string scanner (preserving `${...}` template expressions) and static rules blocking `require()`, `import()`, `process`, `eval()`, `Reflect.*`, `Symbol.*`, `Object.getPrototypeOf`/`setPrototypeOf`/`defineProperty`, `new Proxy()`, and filesystem/network access
|
|
213
216
|
- **Proxy constructor nullified** — `Proxy: undefined` in the sandbox prevents meta-object protocol abuse
|
|
214
|
-
- **RPC allowlist** — host-side validation
|
|
217
|
+
- **Prototype-safe RPC allowlist** — host-side `Object.hasOwn()` validation, recursion-bounded argument normalization, and `--tool-filter` enforcement prevent workers from invoking unauthorized or filtered API methods
|
|
215
218
|
- **Rate limiting** — 60 executions per minute per client
|
|
216
|
-
- **Hard timeouts** — configurable execution limit (default 30s)
|
|
217
|
-
- **Egress boundary enforcement** — result serialization capped to prevent OOM via oversized payloads
|
|
219
|
+
- **Hard timeouts** — configurable execution limit (default 30s) with bounded async timer tracking (`setTimeout`/`sleep` capped and cleared on completion)
|
|
220
|
+
- **Egress boundary enforcement** — result serialization capped (default 100KB via `CODE_MODE_MAX_RESULT_SIZE`) with automatic payload compaction to prevent OOM via oversized payloads
|
|
218
221
|
- **Full API access** — all tool groups are available via `mj.*` (e.g., `mj.core.createEntry()`, `mj.search.searchEntries()`, `mj.github.getGithubIssues()`)
|
|
219
222
|
- **Strict Readonly Contract** — Calling any mutation method under `--tool-filter readonly` safely halts the sandbox to prevent execution, returning a structured `{ success: false, error: "..." }` response to the agent instead of a raw MCP protocol exception.
|
|
220
223
|
|
|
221
|
-
### ⚡ Code Mode
|
|
224
|
+
### ⚡ Code Mode Minimal Surface (Maximum Token Savings)
|
|
222
225
|
|
|
223
|
-
Run with
|
|
226
|
+
Run with the `codemode` filter and `--codemode-internal-full-access` to expose only the escape-hatch tools (`mj_execute_code` and `update_configuration`) on the MCP tool list while retaining full internal access to the `mj.*` API inside the sandbox:
|
|
224
227
|
|
|
225
228
|
```json
|
|
226
229
|
{
|
|
227
230
|
"mcpServers": {
|
|
228
231
|
"memory-journal-mcp": {
|
|
229
232
|
"command": "memory-journal-mcp",
|
|
230
|
-
"args": ["--tool-filter", "codemode"]
|
|
233
|
+
"args": ["--tool-filter", "codemode", "--codemode-internal-full-access"]
|
|
231
234
|
}
|
|
232
235
|
}
|
|
233
236
|
}
|
|
234
237
|
```
|
|
235
238
|
|
|
236
|
-
This exposes
|
|
237
|
-
|
|
238
|
-
#### Disabling Code Mode
|
|
239
|
-
|
|
240
|
-
If you prefer individual tool calls, exclude codemode:
|
|
241
|
-
|
|
242
|
-
```json
|
|
243
|
-
{
|
|
244
|
-
"args": ["--tool-filter", "starter,-codemode"]
|
|
245
|
-
}
|
|
246
|
-
```
|
|
239
|
+
This exposes only `mj_execute_code` and `update_configuration` to the client's `tools/list`, reducing tool schema overhead to the minimum while preserving full programmatic capability via `mj.*`. The agent writes JavaScript against the typed `mj.*` SDK — composing operations across all tool groups and returning exactly the data it needs — in one execution. This mirrors the [Code Mode pattern](https://blog.cloudflare.com/code-mode-mcp/) pioneered by Cloudflare for their entire API: fixed token cost regardless of how many capabilities exist. Without `--codemode-internal-full-access` (or `CODEMODE_INTERNAL_FULL_ACCESS=true`), internal `mj.*` methods are scoped to the active `--tool-filter`.
|
|
247
240
|
|
|
248
241
|
---
|
|
249
242
|
|
|
243
|
+
## 🚀 Quick Start & Deployment
|
|
244
|
+
|
|
250
245
|
_Note: Configuration is resolved using strict precedence: `CLI flags > Environment Variables > Config File > Defaults`._
|
|
251
246
|
|
|
252
247
|
> 🛠️ **Debugging Configuration:** Run `memory-journal-mcp --dump-config` (or pass `--dump-config` as an arg) to print the fully resolved configuration payload with automatically redacted secrets. This is the primary method for diagnosing overriding issues.
|
|
253
248
|
|
|
254
249
|
### Configure Basics Quickly
|
|
255
250
|
|
|
256
|
-
> 💡 **Tip:** Don't want to manually escape JSON strings for `PROJECT_REGISTRY`? Run `npx memory-journal-mcp project create` in your terminal to automatically bootstrap and update your MCP configuration!
|
|
251
|
+
> 💡 **Tip:** Don't want to manually escape JSON strings for `PROJECT_REGISTRY`? Run `npx memory-journal-mcp project create <name> --path <repo-path> [--number <project-number>]` in your terminal to automatically bootstrap and update your MCP configuration!
|
|
257
252
|
|
|
258
253
|
```json
|
|
259
254
|
{
|
|
@@ -274,7 +269,7 @@ _Note: Configuration is resolved using strict precedence: `CLI flags > Environme
|
|
|
274
269
|
|
|
275
270
|
Showcasing the full power of the server, including Multi-Project Routing, Team Collaboration, Copilot awareness, and Context Injections.
|
|
276
271
|
|
|
277
|
-
> 💡 **Tip:** Use `npx memory-journal-mcp project create` to easily configure multiple repositories into your `PROJECT_REGISTRY` without manual JSON escaping!
|
|
272
|
+
> 💡 **Tip:** Use `npx memory-journal-mcp project create <name> --path <repo-path> [--number <project-number>]` to easily configure multiple repositories into your `PROJECT_REGISTRY` without manual JSON escaping!
|
|
278
273
|
|
|
279
274
|
```json
|
|
280
275
|
{
|
|
@@ -324,13 +319,13 @@ You control exactly what additional content your agent sees across three dimensi
|
|
|
324
319
|
|
|
325
320
|
| Dimension | Variables | What It Controls |
|
|
326
321
|
| --------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------- |
|
|
327
|
-
| **Focus** | `
|
|
328
|
-
| **Journal Content** | `BRIEFING_ENTRY_COUNT`, `BRIEFING_SUMMARY_COUNT`, `BRIEFING_INCLUDE_TEAM`
|
|
322
|
+
| **Focus** | `MEMORY_JOURNAL_MCP_TOOL_FILTER` (CLI: `--tool-filter`, config: `"toolFilter"`) | Control tool exposure: `full` (default), `starter`, `essential`, `readonly`, `codemode` |
|
|
323
|
+
| **Journal Content** | `BRIEFING_ENTRY_COUNT`, `BRIEFING_SUMMARY_COUNT`, `BRIEFING_COMMIT_COUNT`, `BRIEFING_IMPORTANCE_THRESHOLD`, `BRIEFING_INCLUDE_TEAM` | How many recent entries, session summaries, commits, and whether team entries appear |
|
|
329
324
|
| **GitHub Enrichment** | `BRIEFING_ISSUE_COUNT`, `BRIEFING_PR_COUNT`, `BRIEFING_PR_STATUS`, `BRIEFING_MILESTONE_COUNT`, `BRIEFING_WORKFLOW_COUNT`, `BRIEFING_WORKFLOW_STATUS`, `BRIEFING_COPILOT_REVIEWS` | Issues, PRs, milestones, CI runs, and Copilot review state surfaced in the briefing |
|
|
330
325
|
|
|
331
326
|
**Context Injections:** Set `RULES_FILE_PATH` and `SKILLS_DIR_PATH` to surface user rules and agent skills as companion resources (`memory://rules`, `memory://skills`) alongside the briefing.
|
|
332
327
|
|
|
333
|
-
**Repo Targeting:** In multi-repo setups, agents read `memory://briefing/{repo}` to get a briefing scoped to a specific repository registered in `PROJECT_REGISTRY`.
|
|
328
|
+
**Repo Targeting:** In multi-repo setups, agents read `memory://briefing/{+repo}` to get a briefing scoped to a specific repository registered in `PROJECT_REGISTRY`.
|
|
334
329
|
|
|
335
330
|
<details>
|
|
336
331
|
<summary><strong>Briefing Presets (click to expand)</strong></summary>
|
|
@@ -340,7 +335,7 @@ You control exactly what additional content your agent sees across three dimensi
|
|
|
340
335
|
```json
|
|
341
336
|
"BRIEFING_ENTRY_COUNT": "1",
|
|
342
337
|
"BRIEFING_SUMMARY_COUNT": "0",
|
|
343
|
-
"
|
|
338
|
+
"MEMORY_JOURNAL_MCP_TOOL_FILTER": "essential"
|
|
344
339
|
```
|
|
345
340
|
|
|
346
341
|
**Full Context (onboarding agents)** — Maximize context for agents unfamiliar with the project:
|
|
@@ -353,7 +348,7 @@ You control exactly what additional content your agent sees across three dimensi
|
|
|
353
348
|
"BRIEFING_PR_COUNT": "3",
|
|
354
349
|
"BRIEFING_PR_STATUS": "true",
|
|
355
350
|
"BRIEFING_COPILOT_REVIEWS": "true",
|
|
356
|
-
"
|
|
351
|
+
"MEMORY_JOURNAL_MCP_TOOL_FILTER": "full"
|
|
357
352
|
```
|
|
358
353
|
|
|
359
354
|
**DevOps-Heavy** — Emphasize CI/CD and GitHub state for infrastructure workflows:
|
|
@@ -378,51 +373,57 @@ You control exactly what additional content your agent sees across three dimensi
|
|
|
378
373
|
| **Minimal (no GitHub)** | Remove the `env` block entirely |
|
|
379
374
|
| **npx (no install)** | Replace `"command"` with `"npx"` and add `"args": ["-y", "memory-journal-mcp"]` |
|
|
380
375
|
| **From source** | Replace `"command"` with `"node"` and add `"args": ["dist/cli.js"]` |
|
|
381
|
-
| **Code Mode
|
|
382
|
-
| **Docker** | Replace `"command"` with `"docker"` and
|
|
376
|
+
| **Code Mode minimal** | Add `"args": ["--tool-filter", "codemode", "--codemode-internal-full-access"]` (`mj_execute_code` + `update_configuration`, all `mj.*` capabilities) |
|
|
377
|
+
| **Docker** | Replace `"command"` with `"docker"` and add `"args": ["run", "-i", "--rm", "-v", "./data:/app/data", "-e", "GITHUB_TOKEN", "-e", "PROJECT_REGISTRY", "-e", "ALLOWED_IO_ROOTS", "writenotenow/memory-journal-mcp:latest"]` (forward any `"env"` keys via `-e <VAR>`) |
|
|
383
378
|
| **Team collaboration** | Add `"TEAM_DB_PATH": "./team.db"` to `env` |
|
|
384
379
|
|
|
385
380
|
Restart your MCP client and start journaling!
|
|
386
381
|
|
|
387
382
|
### Connect Remotely with HTTP/SSE Transport
|
|
388
383
|
|
|
389
|
-
>
|
|
384
|
+
> [!IMPORTANT]
|
|
385
|
+
> **Security Posture: Stdio vs HTTP (Fail-Closed Startup Guards)**
|
|
390
386
|
>
|
|
391
|
-
> - **Stdio (Default):** Runs implicitly within the secure boundaries of your local IDE or command-line environment. No explicit authentication is required because the execution context is already trusted.
|
|
392
|
-
> - **HTTP/SSE:** Exposes the server over a network socket
|
|
387
|
+
> - **Stdio (Default):** Runs implicitly within the secure boundaries of your local IDE or command-line environment. No explicit authentication is required because the execution context is already trusted (`ALLOWED_IO_ROOTS` defaults to fail-closed `[]` unless configured).
|
|
388
|
+
> - **HTTP/SSE (`--transport http`):** Exposes the server over a network socket and enforces **three fail-closed startup guards**:
|
|
389
|
+
> 1. **Mandatory Filesystem Boundary (`ALLOWED_IO_ROOTS` / `--allowed-io-roots`):** Always required in HTTP mode so filesystem boundaries are explicitly declared.
|
|
390
|
+
> 2. **Mandatory Public Authentication:** By default, HTTP binds ONLY to `localhost` and blocks wildcard CORS to prevent unauthorized access and CSRF attacks. Binding to a non-loopback address (`--server-host 0.0.0.0`) requires explicit authentication (`MCP_AUTH_TOKEN` / `--auth-token` or `--oauth-enabled`).
|
|
391
|
+
> 3. **Mandatory Public Origin for Non-Loopback OAuth (`PUBLIC_ORIGIN` / `--public-origin`):** When `--oauth-enabled` is bound to a non-loopback address, `--public-origin` (`PUBLIC_ORIGIN`) is strictly required so RFC 9728 Protected Resource Metadata cannot be spoofed via `Host` headers.
|
|
393
392
|
|
|
394
393
|
For remote access or web-based clients, run the server in HTTP mode:
|
|
395
394
|
|
|
396
395
|
```bash
|
|
397
|
-
memory-journal-mcp --transport http --port 3000
|
|
396
|
+
memory-journal-mcp --transport http --port 3000 --allowed-io-roots /path/to/allowed/dir
|
|
398
397
|
```
|
|
399
398
|
|
|
400
|
-
To bind to all interfaces (required for containers) and enable the automated proactive analytics scheduler (e.g. daily digest), you MUST provide an authentication token:
|
|
399
|
+
To bind to all interfaces (required for containers) and enable the automated proactive analytics scheduler (e.g. daily digest), you MUST provide both `ALLOWED_IO_ROOTS` and an authentication token:
|
|
401
400
|
|
|
402
401
|
```bash
|
|
403
402
|
export MCP_AUTH_TOKEN="your_secure_random_token"
|
|
403
|
+
export MCP_AUTH_SCOPES="full" # Defaults to "read" if omitted
|
|
404
|
+
export ALLOWED_IO_ROOTS="/path/to/allowed/dir"
|
|
404
405
|
memory-journal-mcp --transport http --port 3000 --server-host 0.0.0.0 --digest-interval 1440
|
|
405
406
|
```
|
|
406
407
|
|
|
407
408
|
**Endpoints:**
|
|
408
409
|
|
|
409
|
-
| Endpoint | Description
|
|
410
|
-
| ------------------------------------------- |
|
|
411
|
-
| `GET /` | Server info and available endpoints
|
|
412
|
-
| `POST /mcp` | JSON-RPC requests (initialize, tools/call, etc.)
|
|
413
|
-
| `GET /mcp` | SSE stream for server-to-client notifications
|
|
414
|
-
| `DELETE /mcp` | Session termination
|
|
415
|
-
| `GET /sse`
|
|
416
|
-
| `POST /messages` | Legacy SSE message endpoint
|
|
417
|
-
| `GET /health` | Health check (`{ status, timestamp }`)
|
|
418
|
-
| `GET /metrics` | Prometheus metrics export (requires flag)
|
|
419
|
-
| `GET /.well-known/oauth-protected-resource` | RFC 9728 Protected Resource Metadata
|
|
410
|
+
| Endpoint | Description | Mode |
|
|
411
|
+
| ------------------------------------------- | ------------------------------------------------------------------ | -------- |
|
|
412
|
+
| `GET /` | Server info and available endpoints | Both |
|
|
413
|
+
| `POST /mcp` | JSON-RPC requests (initialize, tools/call, etc.) | Both |
|
|
414
|
+
| `GET /mcp` | SSE stream for server-to-client notifications | Stateful |
|
|
415
|
+
| `DELETE /mcp` | Session termination (`204 No Content`) | Both |
|
|
416
|
+
| `GET / POST /sse` | Legacy SSE connection & stateless/stateful POST (MCP 2024-11-05) | GET: Stateful / POST: Both |
|
|
417
|
+
| `POST /messages` | Legacy SSE message endpoint | Stateful |
|
|
418
|
+
| `GET /health` | Health check (`{ status, timestamp }`) | Both |
|
|
419
|
+
| `GET /metrics` | Prometheus metrics export (requires flag) | Both |
|
|
420
|
+
| `GET /.well-known/oauth-protected-resource` | RFC 9728 Protected Resource Metadata (requires `--oauth-enabled`) | Both |
|
|
420
421
|
|
|
421
422
|
**Session Management:** The server uses stateful sessions by default. Include the `mcp-session-id` header (returned from initialization) in subsequent requests.
|
|
422
423
|
|
|
423
424
|
- **OAuth 2.1** — RFC 9728/8414, JWT/JWKS, granular scopes (opt-in via `--oauth-enabled`)
|
|
424
425
|
- **Comprehensive Security Headers** — CSP, HSTS (opt-in), X-Frame-Options, and more
|
|
425
|
-
- **Rate Limiting** — 100 req/min per IP · **CORS** — configurable multi-origin (exact-match) · **1MB body limit**
|
|
426
|
+
- **Rate Limiting** — 100 req/min per subject/IP · **CORS** — configurable multi-origin (exact-match) · **1MB body limit**
|
|
426
427
|
- **Server Timeouts** — Request (120s), keep-alive (65s), headers (66s) · **404 handler** · **Cross-protocol guard**
|
|
427
428
|
- **Build Provenance** · **SBOM** · **Supply Chain Attestations** · **Non-root execution**
|
|
428
429
|
|
|
@@ -452,7 +453,7 @@ curl -X POST http://localhost:3000/mcp \
|
|
|
452
453
|
For serverless deployments (Lambda, Workers, Vercel), use stateless mode:
|
|
453
454
|
|
|
454
455
|
```bash
|
|
455
|
-
memory-journal-mcp --transport http --port 3000 --stateless
|
|
456
|
+
memory-journal-mcp --transport http --port 3000 --stateless --allowed-io-roots /path/to/projects
|
|
456
457
|
```
|
|
457
458
|
|
|
458
459
|
| Mode | Progress Notifications | Legacy SSE | Serverless |
|
|
@@ -468,19 +469,30 @@ When running in HTTP/SSE mode, enable periodic maintenance jobs with CLI flags.
|
|
|
468
469
|
|
|
469
470
|
```bash
|
|
470
471
|
memory-journal-mcp --transport http --port 3000 \
|
|
472
|
+
--allowed-io-roots /path/to/projects \
|
|
471
473
|
--backup-interval 60 --keep-backups 10 \
|
|
472
474
|
--vacuum-interval 1440 \
|
|
473
475
|
--rebuild-index-interval 720
|
|
474
476
|
```
|
|
475
477
|
|
|
476
|
-
| Flag
|
|
477
|
-
|
|
|
478
|
-
| `--backup-interval <min>`
|
|
479
|
-
| `--keep-backups <count>`
|
|
480
|
-
| `--vacuum-interval <min>`
|
|
481
|
-
| `--rebuild-index-interval <min>`
|
|
482
|
-
| `--report-interval <min>`
|
|
483
|
-
| `--
|
|
478
|
+
| Flag | Default | Description |
|
|
479
|
+
| --------------------------------------- | ------------------------ | --------------------------------------------------------------------- |
|
|
480
|
+
| `--backup-interval <min>` | 0 (off) | Create timestamped database backups and prune old ones automatically |
|
|
481
|
+
| `--keep-backups <count>` | 5 | Max backups retained during automated cleanup |
|
|
482
|
+
| `--vacuum-interval <min>` | 0 (off) | Run `PRAGMA optimize` and flush database to disk |
|
|
483
|
+
| `--rebuild-index-interval <min>` | 0 (off) | Full vector index rebuild to maintain semantic search quality |
|
|
484
|
+
| `--report-interval <min>` | 0 (off) | Scheduled report generation interval in minutes |
|
|
485
|
+
| `--report-webhook-url <url>` | — | HTTPS webhook URL for scheduled report delivery |
|
|
486
|
+
| `--report-webhook-auth <header>` | — | Custom `Authorization` header for webhook requests |
|
|
487
|
+
| `--report-content-type <type>` | `slack` | Webhook payload format: `slack`, `discord`, or `json` (env: `REPORT_CONTENT_TYPE`) |
|
|
488
|
+
| `--digest-interval <min>` | 0 (off) | Scheduled periodic digest analysis report |
|
|
489
|
+
| `--auto-prune-interval <min>` | 0 (off) | Run autonomous garbage collection (archive, soft-delete, hard-delete) |
|
|
490
|
+
| `--archive-older-than-days <days>` | 0 (off) | Auto-archive low-importance entries older than N days |
|
|
491
|
+
| `--prune-older-than-days <days>` | 0 (off) | Auto soft-delete entries older than N days |
|
|
492
|
+
| `--hard-delete-older-than-days <days>` | 0 (off) | Permanently purge soft-deleted entries older than N days |
|
|
493
|
+
| `--prune-importance-threshold <score>` | 0.15 | Max importance score (`0.0`–`1.0`) eligible for archiving/pruning |
|
|
494
|
+
| `--prune-dry-run` | false | Log auto-prune candidates without mutating entries |
|
|
495
|
+
| `--prune-exclude-tags <tags>` | — | Comma-separated tags exempt from auto-prune (`archived` always kept) |
|
|
484
496
|
|
|
485
497
|
Each job is error-isolated — a failure in one job won't affect the others. Scheduler status (last run, result, next run) is visible via `memory://health`.
|
|
486
498
|
|
|
@@ -489,7 +501,7 @@ Each job is error-isolated — a failure in one job won't affect the others. Sch
|
|
|
489
501
|
The GitHub tools (`get_github_issues`, `get_github_prs`, etc.) auto-detect the repository from your git context when `PROJECT_REGISTRY` is configured or the MCP server is run inside a git repository.
|
|
490
502
|
|
|
491
503
|
|
|
492
|
-
**Multi-Project Workflows**: For agents to seamlessly support multiple projects, configure your **`PROJECT_REGISTRY`** (tip: use `npx memory-journal-mcp project create`).
|
|
504
|
+
**Multi-Project Workflows**: For agents to seamlessly support multiple projects, configure your **`PROJECT_REGISTRY`** (tip: use `npx memory-journal-mcp project create <name> --path <repo-path> [--number <project-number>]`).
|
|
493
505
|
|
|
494
506
|
#### Dynamic Context Resolution & Auto-Detection
|
|
495
507
|
|
|
@@ -516,21 +528,25 @@ For production deployments, enable OAuth 2.1 authentication on the HTTP transpor
|
|
|
516
528
|
| Protected Resource Metadata | ✅ | RFC 9728 `/.well-known/oauth-protected-resource` |
|
|
517
529
|
| Auth Server Discovery | ✅ | RFC 8414 metadata discovery with caching |
|
|
518
530
|
| Token Validation | ✅ | JWT validation with JWKS support |
|
|
519
|
-
| Scope Enforcement | ✅ | Granular `read`, `write`, `admin` scopes
|
|
531
|
+
| Scope Enforcement | ✅ | Granular `read`, `write`, `team`, `audit`, `admin`, `full` scopes |
|
|
520
532
|
| HTTP Transport | ✅ | Streamable HTTP with OAuth middleware |
|
|
521
533
|
|
|
522
534
|
**Supported Scopes:**
|
|
523
535
|
|
|
524
|
-
| Scope | Tool Groups
|
|
525
|
-
| ------- |
|
|
526
|
-
| `read` | core, search, analytics, relationships, io
|
|
527
|
-
| `write` | github
|
|
528
|
-
| `
|
|
536
|
+
| Scope | Tool Groups |
|
|
537
|
+
| ------- | ------------------------------------------------------------------ |
|
|
538
|
+
| `read` | `core (read-only), search, analytics, relationships (visualize_relationships), io (export_entries), git` |
|
|
539
|
+
| `write` | `github (+ all read groups and create_entry / create_entry_minimal / link_entries / mark_anchors_stale / import_external / import_markdown / export_markdown)` |
|
|
540
|
+
| `team` | `team (dedicated team collaboration scope; combine with read/write for personal journal access)` |
|
|
541
|
+
| `audit` | `memory://audit resource access (included in admin/full; search_audit_log requires admin or full)` |
|
|
542
|
+
| `admin` | `admin, backup, codemode (+ all read/write/team/audit groups)` |
|
|
543
|
+
| `full` | `Unrestricted access to all operations` |
|
|
529
544
|
|
|
530
545
|
**Quick Start:**
|
|
531
546
|
|
|
532
547
|
```bash
|
|
533
548
|
memory-journal-mcp --transport http --port 3000 \
|
|
549
|
+
--allowed-io-roots /path/to/projects \
|
|
534
550
|
--oauth-enabled \
|
|
535
551
|
--oauth-issuer https://auth.example.com/realms/mcp \
|
|
536
552
|
--oauth-audience memory-journal-mcp \
|
|
@@ -540,10 +556,12 @@ memory-journal-mcp --transport http --port 3000 \
|
|
|
540
556
|
Or via environment variables:
|
|
541
557
|
|
|
542
558
|
```bash
|
|
559
|
+
export ALLOWED_IO_ROOTS="/path/to/projects"
|
|
543
560
|
export OAUTH_ENABLED=true
|
|
544
561
|
export OAUTH_ISSUER=https://auth.example.com/realms/mcp
|
|
545
562
|
export OAUTH_AUDIENCE=memory-journal-mcp
|
|
546
|
-
export
|
|
563
|
+
export OAUTH_JWKS_URI=https://auth.example.com/realms/mcp/protocol/openid-connect/certs
|
|
564
|
+
export OAUTH_CLOCK_TOLERANCE=60
|
|
547
565
|
memory-journal-mcp --transport http --port 3000
|
|
548
566
|
```
|
|
549
567
|
|
|
@@ -561,34 +579,54 @@ memory-journal-mcp --transport http --port 3000
|
|
|
561
579
|
|
|
562
580
|
| Variable | Description |
|
|
563
581
|
| ---------------------------------------------- | ---------------------------------------------------------- |
|
|
564
|
-
| **Core Database** | |
|
|
565
|
-
| `DB_PATH` | Path to the personal journal SQLite database
|
|
566
|
-
| `
|
|
582
|
+
| **Core Database & Server** | |
|
|
583
|
+
| `DB_PATH` | Path to the personal journal SQLite database (CLI: `--db`, `--database`, default: `./memory_journal.db`) |
|
|
584
|
+
| `DB_ENCRYPTION_KEY` | SQLCipher at-rest database encryption key (alias: `MJ_DB_ENCRYPTION_KEY`) |
|
|
585
|
+
| `TEAM_DB_PATH` | Path to the shared team SQLite database (CLI: `--team-db`, `--team-database`) |
|
|
586
|
+
| `TEAM_AUTHOR` | Display name attached to team entries (used for local author identity; OAuth identity claims take precedence when creating team entries and RBAC ownership under active OAuth) |
|
|
587
|
+
| `TEAM_DEFAULT_ROLE` | Default RBAC role for unlisted team authors: `admin`, `member`, `viewer`, `denied` (CLI: `--team-default-role`, default: `denied`) |
|
|
588
|
+
| `TEAM_ADMIN` | Bootstrap admin author name when the `team_members` table is empty (CLI: `--team-admin`) |
|
|
589
|
+
| `ADDITIONAL_TEAM_DBS` | JSON mapping of label to path for additional read-only team SQLite databases (CLI: `--additional-team-dbs`) |
|
|
590
|
+
| `DEFAULT_WORKSPACE_ID` | Default workspace ID for multi-tenant isolation (CLI: `--default-workspace-id`, default: `default`; `MCP_WORKSPACE_ID` provides a session-scoped schema-healing fallback on tool payloads) |
|
|
591
|
+
| `MEMORY_JOURNAL_CONFIG` | Path to configuration file (`.yaml`, `.yml`, `.json`; CLI: `--config`) |
|
|
592
|
+
| `LOG_LEVEL` | Server log verbosity: `debug`, `info`, `notice`, `warning`, `error`, `critical` (CLI `--log-level` accepts `debug`, `info`, `warning`, `error`; default: `info`) |
|
|
593
|
+
| `TRANSPORT` / `PORT` / `MCP_HOST` / `STATELESS` | Transport mode (`stdio` or `http`; CLI: `--transport`), HTTP port (`--port`, default: `3000`), bind address (`--server-host`, fallback: `HOST`, default: `localhost`), and stateless HTTP mode (`--stateless`, default: `false`) |
|
|
594
|
+
| `CORS_ORIGIN` / `MCP_CORS_ORIGIN` / `MCP_RATE_LIMIT_MAX` | Allowed CORS origins (`--cors-origin`) and per-IP/minute HTTP rate limit (default: `100`) |
|
|
567
595
|
| `GITHUB_TOKEN` | Personal access token for GitHub integrations |
|
|
596
|
+
| `DEFAULT_PROJECT_NUMBER` | Default GitHub Project number for issue auto-assignment (CLI: `--default-project`) |
|
|
568
597
|
| `PROJECT_REGISTRY` | JSON map of repo names to local paths and project numbers |
|
|
598
|
+
| `EMBEDDING_MODEL` | HuggingFace transformers model for semantic search (CLI: `--embedding-model`, default: `Xenova/all-MiniLM-L6-v2`) |
|
|
599
|
+
| `AUTO_REBUILD_INDEX` | Rebuild vector search index on startup (`true`/`false`, CLI: `--auto-rebuild-index`) |
|
|
569
600
|
| **Security & Tooling** | |
|
|
570
|
-
| `ALLOWED_IO_ROOTS` | Comma-separated paths for Code Mode filesystem boundaries
|
|
571
|
-
| `
|
|
572
|
-
| `CODE_MODE_MAX_RESULT_SIZE` | Max execution payload buffer size in Code Mode (bytes)
|
|
573
|
-
| `CODEMODE_INTERNAL_FULL_ACCESS` | Allow Code Mode to bypass tool filters internally
|
|
601
|
+
| `ALLOWED_IO_ROOTS` | Comma-separated paths for Code Mode and IO filesystem boundaries (fail-closed in stdio; mandatory when `--transport http` is used) |
|
|
602
|
+
| `MEMORY_JOURNAL_MCP_TOOL_FILTER` | Control tool exposure (`full`, `starter`, `essential`, `codemode`, `readonly`, `-github`; CLI: `--tool-filter`, `memory-journal.config.{yaml,yml,json}` key: `"toolFilter"`. Note: `TOOL_FILTER` is a display fallback only) |
|
|
603
|
+
| `CODE_MODE_MAX_RESULT_SIZE` | Max execution payload buffer size in Code Mode (bytes, default: `102400`) |
|
|
604
|
+
| `CODEMODE_INTERNAL_FULL_ACCESS` | Allow Code Mode to bypass tool filters internally (default: `false`) |
|
|
574
605
|
| `MCP_AGENT_HEALING` | Enable/disable autonomous tool & parameter healing (`true`/`false`, CLI: `--no-agent-healing`) |
|
|
575
|
-
| `MAX_TOOL_INPUT_ELEMENTS` | Max array/object elements in tool inputs (default: `25000`, `0` = disabled) |
|
|
606
|
+
| `MAX_TOOL_INPUT_ELEMENTS` | Max array/object elements in tool inputs (default: `25000`, `0` or `Infinity` = disabled) |
|
|
607
|
+
| `MCP_AUTH_TOKEN` / `MCP_AUTH_SCOPES` | Static Bearer authentication token (`--auth-token`, `--auth-scopes`) and comma-separated granted scopes for HTTP transport (default: `read`) |
|
|
608
|
+
| `MCP_ENABLE_HSTS` / `TRUST_PROXY` | Enable `Strict-Transport-Security` header (`--enable-hsts`) and reverse-proxy `X-Forwarded-For` trust (`--trust-proxy`) |
|
|
576
609
|
| **Briefing & Context** | |
|
|
577
610
|
| `BRIEFING_ENTRY_COUNT` | Number of granular journal entries in briefing (default: 3)|
|
|
578
611
|
| `BRIEFING_SUMMARY_COUNT` | Number of session summaries in briefing (default: 1) |
|
|
612
|
+
| `BRIEFING_COMMIT_COUNT` | Number of git commits in briefing (default: 3) |
|
|
613
|
+
| `BRIEFING_IMPORTANCE_THRESHOLD` | Minimum importance score for briefing entries (default: 0.3)|
|
|
579
614
|
| `BRIEFING_INCLUDE_TEAM` | Include entries from the team database (default: false) |
|
|
580
|
-
| `BRIEFING_ISSUE_COUNT` / `BRIEFING_PR_COUNT`
|
|
581
|
-
| `BRIEFING_MILESTONE_COUNT` | GitHub Milestones to list with titles
|
|
582
|
-
| `BRIEFING_WORKFLOW_COUNT`
|
|
583
|
-
| `
|
|
615
|
+
| `BRIEFING_ISSUE_COUNT` / `BRIEFING_PR_COUNT` / `BRIEFING_PR_STATUS` | GitHub Issues (default: `0`), PRs (default: `0`), and PR status breakdown (default: `false`) in briefing |
|
|
616
|
+
| `BRIEFING_MILESTONE_COUNT` | GitHub Milestones to list with titles (default: `3`) |
|
|
617
|
+
| `BRIEFING_WORKFLOW_COUNT` / `BRIEFING_WORKFLOW_STATUS` / `BRIEFING_COPILOT_REVIEWS` | CI workflow runs (default: `0`), status breakdown (default: `false`), and Copilot review state (default: `false`) |
|
|
618
|
+
| `STALENESS_ACTIVE_HOURS` / `STALENESS_RECENT_DAYS` / `STALENESS_STALE_DAYS` | Thresholds for `memory://staleness` project classification (defaults: `24`h / `7`d / `30`d) |
|
|
619
|
+
| `RULES_FILE_PATH` / `SKILLS_DIR_PATH` / `MEMORY_JOURNAL_WORKFLOW_SUMMARY` | Injected behavioral rules, skills boundaries, and workflow summary |
|
|
584
620
|
| **OAuth (HTTP Mode)** | |
|
|
585
621
|
| `OAUTH_ENABLED` | Enable OAuth 2.1 authentication (default: false) |
|
|
586
|
-
| `OAUTH_ISSUER` / `OAUTH_AUDIENCE`
|
|
622
|
+
| `OAUTH_ISSUER` / `OAUTH_AUDIENCE` / `OAUTH_JWKS_URI` / `OAUTH_CLOCK_TOLERANCE` / `PUBLIC_ORIGIN` / `OAUTH_ALLOW_PLAINTEXT_LOOPBACK` | OAuth token verification parameters (clock tolerance default: 60s), non-loopback RFC 9728 public origin (`--public-origin`), and local dev plaintext loopback issuer flag (`--oauth-allow-plaintext-loopback`) |
|
|
587
623
|
| **Telemetry & Administration** | |
|
|
588
|
-
| `AUDIT_LOG_PATH` / `AUDIT_REDACT`
|
|
589
|
-
| `
|
|
590
|
-
| `PRUNE_OLDER_THAN_DAYS` / `PRUNE_EXCLUDE_TAGS` |
|
|
591
|
-
| `
|
|
624
|
+
| `AUDIT_LOG_PATH` / `AUDIT_REDACT` / `AUDIT_READS` / `AUDIT_LOG_MAX_SIZE` | Path to JSONL audit log file, argument/result redaction, read-call logging, and rotation size limit (default: 10MB) |
|
|
625
|
+
| `METRICS_EXPORT` / `PERSIST_METRICS` / `METRICS_PATH` / `MJ_METRICS_PORT` / `MJ_METRICS_HOST` | Prometheus export (`METRICS_EXPORT=prometheus` auto-starts the standalone metrics server on `127.0.0.1:9465` in addition to mounting `/metrics` on the HTTP transport), disk-persisted metrics (`--persist-metrics`, `--metrics-path`), and dedicated scrape port/host |
|
|
626
|
+
| `AUTO_PRUNE_INTERVAL_MINUTES` / `ARCHIVE_OLDER_THAN_DAYS` / `PRUNE_OLDER_THAN_DAYS` / `HARD_DELETE_OLDER_THAN_DAYS` / `PRUNE_IMPORTANCE_THRESHOLD` / `PRUNE_DRY_RUN` / `PRUNE_EXCLUDE_TAGS` | Autonomous lifecycle pruning, archiving (interval/days default: `0` = disabled), importance threshold (default: `0.15`), dry-run (default: `false`), and exclusion tags |
|
|
627
|
+
| `BACKUP_INTERVAL` / `KEEP_BACKUPS` / `VACUUM_INTERVAL` / `REBUILD_INDEX_INTERVAL` / `DIGEST_INTERVAL` | Scheduled HTTP maintenance intervals in minutes (`--backup-interval`, `--vacuum-interval`, `--rebuild-index-interval`, `--digest-interval`) and backup retention count (`--keep-backups`, default: `5`) |
|
|
628
|
+
| `REPORT_INTERVAL` / `REPORT_WEBHOOK_URL` / `REPORT_WEBHOOK_AUTH` / `REPORT_CONTENT_TYPE` / `ALLOW_INSECURE_WEBHOOK_HTTP` | Scheduled HTTP reports, webhook delivery headers/content-type, and local dev HTTP webhook override |
|
|
629
|
+
| `DEBUG` / `DISABLE_ISSUE_LOGGING` | Verbose debug logging and suppression of automated runtime issue logging |
|
|
592
630
|
|
|
593
631
|
### GitHub Integration (Optional)
|
|
594
632
|
|
|
@@ -617,7 +655,7 @@ See the **[Complete tools reference](https://github.com/neverinfamous/memory-jou
|
|
|
617
655
|
|
|
618
656
|
### Automate with GitHub Commander Workflows
|
|
619
657
|
|
|
620
|
-
The server natively bundles the `
|
|
658
|
+
The server natively bundles the `memory-journal-mcp` agent skill (served via SEP-2640 and `memory://skills`). It also provides built-in `issue-commander`, `pr-commander`, and `cms-rem-supervisor` MCP workflow prompts for autonomous DevOps stewardship: **Issue Triage**, **Milestone Sprints**, **PR Reviews**, **Copilot Audits**, **Security Audits**, **Code Quality Audits**, **Performance Audits**, **Roadmap Kickoffs**, and **Dependency Updates**. These workflows enforce multi-gate validation (`lint`, `typecheck`, `test`, and security checks) locally during agent tasks.
|
|
621
659
|
|
|
622
660
|
## 🏗️ Architecture
|
|
623
661
|
|
|
@@ -687,11 +725,11 @@ flowchart TB
|
|
|
687
725
|
|
|
688
726
|
### Performance Benchmarks
|
|
689
727
|
|
|
690
|
-
Memory Journal is designed for extremely low overhead during AI task execution. We include a `vitest bench` suite to maintain these baseline guarantees:
|
|
728
|
+
Memory Journal is designed for extremely low overhead during AI task execution. We include a `vitest bench` suite across database, vector search, and MCP server routines to maintain these baseline guarantees:
|
|
691
729
|
|
|
692
|
-
- **Database
|
|
693
|
-
- **Vector Search Engine**: Both search (
|
|
694
|
-
- **Core MCP Routines**: `getTools` uses cached O(1) dispatch (~
|
|
730
|
+
- **Database Operations (`sqlite-adapter.bench.ts`)**: `calculateImportance` runs at **~51,600 ops/sec** (~0.03ms mean, ~27x faster than retrieving 50 recent entries) via a 256-entry LRU prepared statement cache. `getRecentEntries (limit 50)` executes at **~1,870 ops/sec** (~0.63ms mean), `updateEntry` at **~2,380 ops/sec** (~0.79ms mean), `createEntry` at **~1,060 ops/sec** (~1.69ms mean), and `searchEntries` (FTS5 BM25 + batch importance hydration) at **~176 ops/sec** (~6.2ms mean).
|
|
731
|
+
- **Vector Search Engine (`vector-search.bench.ts`)**: Both k-NN similarity search (**~1,050 ops/sec**, ~1.8ms mean with batch entry hydration) and vector indexing (**~4,220 ops/sec**, ~0.41ms mean) are high-throughput via `sqlite-vec` (`vec0` with `chunk_size=256`).
|
|
732
|
+
- **Core MCP Routines (`mcp-server.bench.ts`)**: `getTools` uses cached O(1) dispatch (**~7.2M–9.4M ops/sec**, ~0.0001ms). Full end-to-end `callTool` invocations (including interceptor, token estimation, and project registry resolution) run at **~1,775 ops/sec** (~0.65ms) for `get_recent_entries`, **~205 ops/sec** (~5.4ms) for `search_entries`, and **~800 ops/sec** (~2.4ms) for `create_entry`.
|
|
695
733
|
|
|
696
734
|
To run the benchmarking suite locally:
|
|
697
735
|
|
|
@@ -705,7 +743,7 @@ Extensively tested across two frameworks:
|
|
|
705
743
|
|
|
706
744
|
| Suite | Command | Covers |
|
|
707
745
|
| ------------------------- | ------------------- | ------------------------------------------------------------------------------- |
|
|
708
|
-
| Vitest (unit/integration) | `pnpm test` |
|
|
746
|
+
| Vitest (unit/integration) | `pnpm test` | Extensive Vitest unit and integration suite with strict quality gates (database, tools, resources, handlers, security, GitHub, vector search, codemode) |
|
|
709
747
|
| Playwright (e2e) | `pnpm run test:e2e` | HTTP/SSE transport, auth, sessions, CORS, security headers, scheduler |
|
|
710
748
|
|
|
711
749
|
```bash
|
|
@@ -719,11 +757,12 @@ pnpm run test:e2e # End-to-end HTTP/SSE transport tests
|
|
|
719
757
|
|
|
720
758
|
- **Deterministic error handling** - Every tool returns structured `{success, error, code, category, suggestion, recoverable}` responses with actionable context — no raw exceptions, no silent failures, no misleading messages
|
|
721
759
|
- **Local-first** - All data stored locally, no external API calls (except optional GitHub)
|
|
722
|
-
- **Input validation** - Zod schemas, content size limits, SQL injection prevention
|
|
723
|
-
- **Path traversal protection** -
|
|
724
|
-
- **
|
|
725
|
-
- **
|
|
726
|
-
- **
|
|
760
|
+
- **Input validation** - Zod schemas, content size limits, SQL injection prevention, and `<untrusted_remote_content>` prompt-injection boundary tagging
|
|
761
|
+
- **Path traversal & SSRF protection** - `ALLOWED_IO_ROOTS` sandbox containment with URL-decode/symlink verification, backup path validation, and outbound webhook DNS/IP SSRF blocking
|
|
762
|
+
- **Multi-tenant & filter enforcement** - End-to-end `workspace_id` isolation across SQLite and Vector search, plus execution-layer `--tool-filter` enforcement across `tools/call`, Code Mode (`mj.*`), and fallback handlers
|
|
763
|
+
- **MCP 2025-11-25 annotations & icons** - Behavioral hints (`readOnlyHint`, `destructiveHint`, etc.) and capability icons
|
|
764
|
+
- **HTTP transport hardening** - OAuth 2.1 `tokenClaims` propagation, principal-bound stateful sessions (`100` max active sessions), comprehensive security headers, configurable multi-origin CORS, 1MB body/stream limit, built-in per-subject/IP rate limiting (100 req/min), server timeouts, HSTS (opt-in), 30-min session timeout, and localhost-bound metrics (`METRICS_EXPORT=prometheus` automatically starts the standalone metrics server on `127.0.0.1:9465`, customizable via `MJ_METRICS_PORT` and `MJ_METRICS_HOST`, in addition to mounting `/metrics` on the HTTP transport)
|
|
765
|
+
- **Token scrubbing** - GitHub tokens and credentials automatically redacted from error and audit logs
|
|
727
766
|
|
|
728
767
|
### Data & Privacy
|
|
729
768
|
|
|
@@ -751,4 +790,6 @@ MIT License - See [LICENSE](LICENSE) file for details.
|
|
|
751
790
|
|
|
752
791
|
## 🤝 Contributing
|
|
753
792
|
|
|
754
|
-
Built by developers, for developers. PRs welcome! See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
793
|
+
Built by developers, for developers. PRs welcome! Ensure all unit and E2E tests, linting, and typechecks pass. See [CONTRIBUTING.md](CONTRIBUTING.md) for guidelines.
|
|
794
|
+
|
|
795
|
+
_Upgrading from an earlier version?_ Your existing SQLite database is automatically migrated on startup.
|