memory-journal-mcp 6.1.2 → 6.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +44 -28
- package/dist/{chunk-X4SWFATC.js → chunk-BI4ZNSKA.js} +38 -24
- package/dist/{chunk-HCEWINSB.js → chunk-N6EBIDN7.js} +99 -102
- package/dist/cli.js +2 -2
- package/dist/index.js +2 -2
- package/dist/tools-WPRY5MJ6.js +2 -0
- package/package.json +10 -1
- package/skills/github-commander/SKILL.md +151 -0
- package/skills/github-commander/config/project-config.example.md +125 -0
- package/skills/github-commander/workflows/code-quality-audit.md +80 -0
- package/skills/github-commander/workflows/full-audit.md +134 -0
- package/skills/github-commander/workflows/issue-triage.md +239 -0
- package/skills/github-commander/workflows/milestone-sprint.md +81 -0
- package/skills/github-commander/workflows/perf-audit.md +142 -0
- package/skills/github-commander/workflows/pr-review.md +123 -0
- package/skills/github-commander/workflows/security-audit.md +170 -0
- package/skills/github-commander/workflows/update-deps.md +109 -0
- package/.dockerignore +0 -139
- package/.gitattributes +0 -20
- package/.github/ISSUE_TEMPLATE/bug_report.md +0 -95
- package/.github/ISSUE_TEMPLATE/config.yml +0 -11
- package/.github/ISSUE_TEMPLATE/feature_request.md +0 -110
- package/.github/ISSUE_TEMPLATE/question.md +0 -78
- package/.github/aw/actions-lock.json +0 -14
- package/.github/copilot-instructions.md +0 -122
- package/.github/dependabot.yml +0 -93
- package/.github/pull_request_template.md +0 -135
- package/.github/workflows/README.md +0 -133
- package/.github/workflows/agentics-maintenance.yml +0 -141
- package/.github/workflows/auto-release.yml +0 -68
- package/.github/workflows/ci-health-monitor.lock.yml +0 -1121
- package/.github/workflows/ci-health-monitor.md +0 -87
- package/.github/workflows/codeql.yml +0 -41
- package/.github/workflows/dependabot-auto-merge.yml +0 -42
- package/.github/workflows/dependency-maintenance.lock.yml +0 -1182
- package/.github/workflows/dependency-maintenance.md +0 -147
- package/.github/workflows/docker-publish.yml +0 -254
- package/.github/workflows/docs-drift-detector.lock.yml +0 -1142
- package/.github/workflows/docs-drift-detector.md +0 -115
- package/.github/workflows/lint-and-test.yml +0 -60
- package/.github/workflows/publish-npm.yml +0 -85
- package/.github/workflows/secrets-scanning.yml +0 -32
- package/.github/workflows/security-update.yml +0 -127
- package/.gitleaks.toml +0 -9
- package/.prettierignore +0 -21
- package/.prettierrc +0 -33
- package/.scout-ignore +0 -12
- package/.trivyignore +0 -21
- package/CHANGELOG.md +0 -1814
- package/CODE_OF_CONDUCT.md +0 -133
- package/CONTRIBUTING.md +0 -263
- package/DOCKER_README.md +0 -331
- package/Dockerfile +0 -128
- package/SECURITY.md +0 -227
- package/UNRELEASED.md +0 -1
- package/dist/tools-T4U5A3X4.js +0 -2
- package/docker-compose.yml +0 -71
- package/docs/README.md +0 -18
- package/docs/agentic-journal-synergy.md +0 -175
- package/docs/copilot-setup.md +0 -72
- package/eslint.config.js +0 -110
- package/mcp-config-example.json +0 -21
- package/playwright.config.ts +0 -35
- package/releases/v2.1.0.md +0 -220
- package/releases/v2.2.0.md +0 -168
- package/releases/v3.0.0.md +0 -237
- package/releases/v3.1.0.md +0 -104
- package/releases/v3.1.1.md +0 -42
- package/releases/v3.1.2.md +0 -40
- package/releases/v3.1.3.md +0 -64
- package/releases/v3.1.4.md +0 -32
- package/releases/v3.1.5.md +0 -44
- package/releases/v4.0.0.md +0 -71
- package/releases/v4.1.0.md +0 -88
- package/releases/v4.2.0.md +0 -90
- package/releases/v4.3.0.md +0 -92
- package/releases/v4.3.1.md +0 -69
- package/releases/v4.4.0.md +0 -120
- package/releases/v4.4.1.md +0 -33
- package/releases/v4.4.2.md +0 -31
- package/releases/v4.5.0.md +0 -116
- package/releases/v5.0.0.md +0 -105
- package/releases/v5.0.1.md +0 -25
- package/releases/v5.1.0.md +0 -83
- package/releases/v5.1.1.md +0 -10
- package/releases/v6.0.0.md +0 -48
- package/releases/v6.0.1.md +0 -36
- package/releases/v6.1.0.md +0 -68
- package/releases/v6.1.1.md +0 -30
- package/releases/v6.1.2.md +0 -23
- package/scripts/generate-server-instructions.ts +0 -306
- package/scripts/server-instructions-function-body.ts +0 -107
- package/scripts/server-instructions-gotchas.ts +0 -45
- package/server.json +0 -42
- package/social-preview.png +0 -0
- package/src/auth/auth-context.ts +0 -78
- package/src/auth/authorization-server-discovery.ts +0 -263
- package/src/auth/errors.ts +0 -215
- package/src/auth/index.ts +0 -58
- package/src/auth/middleware.ts +0 -392
- package/src/auth/oauth-resource-server.ts +0 -170
- package/src/auth/scope-map.ts +0 -46
- package/src/auth/scopes.ts +0 -256
- package/src/auth/token-validator.ts +0 -293
- package/src/auth/transport-agnostic.ts +0 -164
- package/src/auth/types.ts +0 -372
- package/src/cli.ts +0 -279
- package/src/codemode/api-constants.ts +0 -263
- package/src/codemode/api.ts +0 -302
- package/src/codemode/auto-return.ts +0 -65
- package/src/codemode/index.ts +0 -47
- package/src/codemode/sandbox-factory.ts +0 -144
- package/src/codemode/sandbox.ts +0 -220
- package/src/codemode/security.ts +0 -155
- package/src/codemode/types.ts +0 -228
- package/src/codemode/worker-sandbox.ts +0 -277
- package/src/codemode/worker-script.ts +0 -239
- package/src/constants/icons.ts +0 -183
- package/src/constants/server-instructions.md +0 -166
- package/src/constants/server-instructions.ts +0 -514
- package/src/database/adapter-factory.ts +0 -16
- package/src/database/core/entry-columns.ts +0 -10
- package/src/database/core/interfaces.ts +0 -188
- package/src/database/core/schema.ts +0 -152
- package/src/database/sqlite-adapter/backup.ts +0 -167
- package/src/database/sqlite-adapter/entries/crud.ts +0 -233
- package/src/database/sqlite-adapter/entries/importance.ts +0 -76
- package/src/database/sqlite-adapter/entries/index.ts +0 -142
- package/src/database/sqlite-adapter/entries/search.ts +0 -294
- package/src/database/sqlite-adapter/entries/shared.ts +0 -102
- package/src/database/sqlite-adapter/entries/statistics.ts +0 -162
- package/src/database/sqlite-adapter/index.ts +0 -265
- package/src/database/sqlite-adapter/native-connection.ts +0 -301
- package/src/database/sqlite-adapter/relationships.ts +0 -70
- package/src/database/sqlite-adapter/tags.ts +0 -182
- package/src/filtering/tool-filter.ts +0 -312
- package/src/github/github-integration/client.ts +0 -114
- package/src/github/github-integration/index.ts +0 -297
- package/src/github/github-integration/insights.ts +0 -155
- package/src/github/github-integration/issues.ts +0 -213
- package/src/github/github-integration/milestones.ts +0 -262
- package/src/github/github-integration/projects.ts +0 -414
- package/src/github/github-integration/pull-requests.ts +0 -235
- package/src/github/github-integration/repository.ts +0 -110
- package/src/github/github-integration/types.ts +0 -43
- package/src/handlers/prompts/github.ts +0 -210
- package/src/handlers/prompts/index.ts +0 -97
- package/src/handlers/prompts/workflow.ts +0 -361
- package/src/handlers/resources/core/briefing/context-section.ts +0 -182
- package/src/handlers/resources/core/briefing/github-section.ts +0 -354
- package/src/handlers/resources/core/briefing/index.ts +0 -106
- package/src/handlers/resources/core/briefing/user-message.ts +0 -114
- package/src/handlers/resources/core/health.ts +0 -75
- package/src/handlers/resources/core/index.ts +0 -31
- package/src/handlers/resources/core/instructions.ts +0 -45
- package/src/handlers/resources/core/utilities.ts +0 -310
- package/src/handlers/resources/github.ts +0 -340
- package/src/handlers/resources/graph.ts +0 -218
- package/src/handlers/resources/help.ts +0 -410
- package/src/handlers/resources/index.ts +0 -143
- package/src/handlers/resources/shared.ts +0 -219
- package/src/handlers/resources/team.ts +0 -134
- package/src/handlers/resources/templates.ts +0 -334
- package/src/handlers/tools/admin.ts +0 -351
- package/src/handlers/tools/analytics.ts +0 -346
- package/src/handlers/tools/backup.ts +0 -272
- package/src/handlers/tools/codemode.ts +0 -188
- package/src/handlers/tools/core.ts +0 -359
- package/src/handlers/tools/error-fields-mixin.ts +0 -10
- package/src/handlers/tools/export.ts +0 -150
- package/src/handlers/tools/github/copilot-tools.ts +0 -72
- package/src/handlers/tools/github/helpers.ts +0 -125
- package/src/handlers/tools/github/insights-tools.ts +0 -112
- package/src/handlers/tools/github/issue-tools.ts +0 -442
- package/src/handlers/tools/github/kanban-tools.ts +0 -153
- package/src/handlers/tools/github/milestone-tools.ts +0 -371
- package/src/handlers/tools/github/mutation-tools.ts +0 -17
- package/src/handlers/tools/github/read-tools.ts +0 -302
- package/src/handlers/tools/github/schemas.ts +0 -435
- package/src/handlers/tools/github.ts +0 -39
- package/src/handlers/tools/index.ts +0 -255
- package/src/handlers/tools/relationships.ts +0 -390
- package/src/handlers/tools/schemas.ts +0 -165
- package/src/handlers/tools/search.ts +0 -448
- package/src/handlers/tools/team/admin-tools.ts +0 -164
- package/src/handlers/tools/team/analytics-tools.ts +0 -233
- package/src/handlers/tools/team/backup-tools.ts +0 -83
- package/src/handlers/tools/team/core-tools.ts +0 -197
- package/src/handlers/tools/team/export-tools.ts +0 -130
- package/src/handlers/tools/team/helpers.ts +0 -66
- package/src/handlers/tools/team/index.ts +0 -45
- package/src/handlers/tools/team/relationship-tools.ts +0 -219
- package/src/handlers/tools/team/schemas.ts +0 -558
- package/src/handlers/tools/team/search-tools.ts +0 -145
- package/src/handlers/tools/team/vector-tools.ts +0 -261
- package/src/index.ts +0 -57
- package/src/server/mcp-server.ts +0 -446
- package/src/server/registration.ts +0 -141
- package/src/server/scheduler.ts +0 -283
- package/src/transports/http/handlers.ts +0 -78
- package/src/transports/http/index.ts +0 -8
- package/src/transports/http/security.ts +0 -147
- package/src/transports/http/server/index.ts +0 -397
- package/src/transports/http/server/legacy-sse.ts +0 -87
- package/src/transports/http/server/stateful.ts +0 -222
- package/src/transports/http/server/stateless.ts +0 -42
- package/src/transports/http/types.ts +0 -132
- package/src/types/entities.ts +0 -145
- package/src/types/error-types.ts +0 -92
- package/src/types/errors.ts +0 -200
- package/src/types/filtering.ts +0 -55
- package/src/types/github.ts +0 -216
- package/src/types/index.ts +0 -348
- package/src/utils/error-helpers.ts +0 -78
- package/src/utils/errors/error-response-fields.ts +0 -29
- package/src/utils/errors/suggestions.ts +0 -94
- package/src/utils/github-helpers.ts +0 -33
- package/src/utils/logger.ts +0 -107
- package/src/utils/mcp-logger.ts +0 -155
- package/src/utils/progress-utils.ts +0 -100
- package/src/utils/query-helpers.ts +0 -78
- package/src/utils/resource-annotations.ts +0 -75
- package/src/utils/security-utils.ts +0 -198
- package/src/utils/vector-index-helpers.ts +0 -24
- package/src/vector/vector-search-manager.ts +0 -409
- package/src/version.ts +0 -15
- package/test-server/README.md +0 -193
- package/test-server/code-map.md +0 -399
- package/test-server/test-agent-experience.md +0 -213
- package/test-server/test-filter-instructions.mjs +0 -295
- package/test-server/test-instruction-levels.mjs +0 -102
- package/test-server/test-preflight.md +0 -55
- package/test-server/test-prompts.mjs +0 -185
- package/test-server/test-scheduler.mjs +0 -174
- package/test-server/test-tool-annotations.mjs +0 -115
- package/test-server/test-tools-codemode.md +0 -632
- package/test-server/test-tools-codemode2.md +0 -1218
- package/test-server/test-tools-team.md +0 -215
- package/test-server/test-tools.md +0 -429
- package/test-server/test-tools2.md +0 -361
- package/test-server/test-tools3.md +0 -396
- package/test-server/tool-reference.md +0 -231
- package/tests/README.md +0 -54
- package/tests/auth/auth-context.test.ts +0 -162
- package/tests/auth/authorization-server-discovery.test.ts +0 -265
- package/tests/auth/errors.test.ts +0 -170
- package/tests/auth/middleware.test.ts +0 -585
- package/tests/auth/oauth-resource-server.test.ts +0 -173
- package/tests/auth/scope-map.test.ts +0 -66
- package/tests/auth/scopes.test.ts +0 -347
- package/tests/auth/token-validator.test.ts +0 -271
- package/tests/codemode/api.test.ts +0 -396
- package/tests/codemode/auto-return.test.ts +0 -167
- package/tests/codemode/codemode-tool-handlers.test.ts +0 -197
- package/tests/codemode/sandbox-factory.test.ts +0 -152
- package/tests/codemode/sandbox.test.ts +0 -190
- package/tests/codemode/security.test.ts +0 -242
- package/tests/codemode/worker-sandbox.test.ts +0 -106
- package/tests/constants/icons.test.ts +0 -101
- package/tests/constants/server-instructions.test.ts +0 -514
- package/tests/database/crud-workflow-branches.test.ts +0 -418
- package/tests/database/database-branches.test.ts +0 -132
- package/tests/database/entries-auth-branches.test.ts +0 -390
- package/tests/database/native-connection.test.ts +0 -249
- package/tests/database/shared-helpers.test.ts +0 -103
- package/tests/database/sqlite-adapter.bench.ts +0 -63
- package/tests/database/sqlite-adapter.test.ts +0 -690
- package/tests/database/tags.test.ts +0 -134
- package/tests/e2e/README.md +0 -39
- package/tests/e2e/auth.spec.ts +0 -106
- package/tests/e2e/codemode-abuse.spec.ts +0 -75
- package/tests/e2e/health.spec.ts +0 -63
- package/tests/e2e/helpers.ts +0 -139
- package/tests/e2e/oauth-discovery.spec.ts +0 -102
- package/tests/e2e/oauth-scopes.spec.ts +0 -222
- package/tests/e2e/payloads-admin.spec.ts +0 -76
- package/tests/e2e/payloads-analytics.spec.ts +0 -37
- package/tests/e2e/payloads-backup-restore.spec.ts +0 -102
- package/tests/e2e/payloads-backup.spec.ts +0 -44
- package/tests/e2e/payloads-codemode-api.spec.ts +0 -131
- package/tests/e2e/payloads-codemode-readonly.spec.ts +0 -116
- package/tests/e2e/payloads-codemode.spec.ts +0 -116
- package/tests/e2e/payloads-core.spec.ts +0 -82
- package/tests/e2e/payloads-error-contracts.spec.ts +0 -159
- package/tests/e2e/payloads-export.spec.ts +0 -46
- package/tests/e2e/payloads-github-degradation.spec.ts +0 -73
- package/tests/e2e/payloads-github.spec.ts +0 -176
- package/tests/e2e/payloads-relationships.spec.ts +0 -56
- package/tests/e2e/payloads-search.spec.ts +0 -64
- package/tests/e2e/payloads-team-happy.spec.ts +0 -231
- package/tests/e2e/payloads-team.spec.ts +0 -174
- package/tests/e2e/prompts-expanded.spec.ts +0 -137
- package/tests/e2e/prompts.spec.ts +0 -62
- package/tests/e2e/protocols.spec.ts +0 -134
- package/tests/e2e/rate-limiting.spec.ts +0 -291
- package/tests/e2e/resources-briefing-env.spec.ts +0 -106
- package/tests/e2e/resources-complete.spec.ts +0 -180
- package/tests/e2e/resources-expanded.spec.ts +0 -83
- package/tests/e2e/resources-instructions-levels.spec.ts +0 -145
- package/tests/e2e/resources-templates.spec.ts +0 -123
- package/tests/e2e/resources.spec.ts +0 -103
- package/tests/e2e/scheduler.spec.ts +0 -79
- package/tests/e2e/security.spec.ts +0 -112
- package/tests/e2e/session-advanced.spec.ts +0 -152
- package/tests/e2e/sessions.spec.ts +0 -95
- package/tests/e2e/stateless.spec.ts +0 -79
- package/tests/e2e/streaming.spec.ts +0 -176
- package/tests/e2e/tool-filtering-presets.spec.ts +0 -192
- package/tests/e2e/tool-filtering.spec.ts +0 -77
- package/tests/e2e/tools.spec.ts +0 -111
- package/tests/filtering/tool-filter.test.ts +0 -314
- package/tests/github/client-issues-errors.test.ts +0 -433
- package/tests/github/github-integration-branches.test.ts +0 -490
- package/tests/github/github-integration.test.ts +0 -1015
- package/tests/github/github-managers-branches.test.ts +0 -907
- package/tests/github/pull-requests.test.ts +0 -334
- package/tests/handlers/analytics-branches.test.ts +0 -222
- package/tests/handlers/backup-branches.test.ts +0 -270
- package/tests/handlers/briefing-context-section.test.ts +0 -388
- package/tests/handlers/briefing-github-section.test.ts +0 -392
- package/tests/handlers/briefing-user-message.test.ts +0 -405
- package/tests/handlers/codemode-tools.test.ts +0 -85
- package/tests/handlers/copilot-tools.test.ts +0 -126
- package/tests/handlers/error-path-coverage.test.ts +0 -324
- package/tests/handlers/export-tools.test.ts +0 -203
- package/tests/handlers/github-resource-handlers.test.ts +0 -929
- package/tests/handlers/github-tool-handlers.test.ts +0 -1452
- package/tests/handlers/handler-error-branches.test.ts +0 -346
- package/tests/handlers/help-resource.test.ts +0 -92
- package/tests/handlers/prompt-handler-coverage.test.ts +0 -108
- package/tests/handlers/prompt-handlers.test.ts +0 -131
- package/tests/handlers/resource-handler-coverage.test.ts +0 -281
- package/tests/handlers/resource-handlers.test.ts +0 -357
- package/tests/handlers/resource-prompt-branches.test.ts +0 -495
- package/tests/handlers/search-tool-handlers.test.ts +0 -379
- package/tests/handlers/targeted-gap-closure.test.ts +0 -387
- package/tests/handlers/team-admin.test.ts +0 -291
- package/tests/handlers/team-analytics.test.ts +0 -220
- package/tests/handlers/team-core.test.ts +0 -148
- package/tests/handlers/team-data.test.ts +0 -198
- package/tests/handlers/team-relationships.test.ts +0 -271
- package/tests/handlers/team-resource-handlers.test.ts +0 -161
- package/tests/handlers/team-search.test.ts +0 -134
- package/tests/handlers/team-tool-handlers.test.ts +0 -301
- package/tests/handlers/team-vector.test.ts +0 -213
- package/tests/handlers/template-github-branches.test.ts +0 -676
- package/tests/handlers/tool-annotations.test.ts +0 -90
- package/tests/handlers/tool-handler-coverage.test.ts +0 -514
- package/tests/handlers/tool-handlers.test.ts +0 -510
- package/tests/handlers/tool-output-schemas.test.ts +0 -116
- package/tests/handlers/vector-tool-handlers.test.ts +0 -238
- package/tests/security/sql-injection.test.ts +0 -284
- package/tests/server/mcp-server.bench.ts +0 -55
- package/tests/server/mcp-server.test.ts +0 -1326
- package/tests/server/scheduler.test.ts +0 -400
- package/tests/transports/http-legacy-sse.test.ts +0 -275
- package/tests/transports/http-security.test.ts +0 -322
- package/tests/transports/http-stateful.test.ts +0 -487
- package/tests/transports/http-transport-server.test.ts +0 -301
- package/tests/transports/http-transport.test.ts +0 -771
- package/tests/utils/github-helpers.test.ts +0 -58
- package/tests/utils/logger.test.ts +0 -180
- package/tests/utils/mcp-logger.test.ts +0 -211
- package/tests/utils/progress-utils.test.ts +0 -156
- package/tests/utils/query-helpers.test.ts +0 -80
- package/tests/utils/security-utils.test.ts +0 -82
- package/tests/vector/vector-search-branches.test.ts +0 -111
- package/tests/vector/vector-search-manager.test.ts +0 -375
- package/tests/vector/vector-search.bench.ts +0 -48
- package/tsconfig.json +0 -42
- package/tsup.config.ts +0 -19
- package/vitest.config.ts +0 -25
|
@@ -1,429 +0,0 @@
|
|
|
1
|
-
# Test memory-journal-mcp — Core & Mutations
|
|
2
|
-
|
|
3
|
-
Exhaustively test the memory-journal-mcp server's core functionality using the phased plan below. **Please make sure to use the correct resource names/urls as documented below.**
|
|
4
|
-
|
|
5
|
-
**Scope:** 24 core tools (entry CRUD, search, analytics, relationships, admin, backup), seed data — this file covers happy paths, core error paths, and feature verification (Phases 0-6). GitHub tools (16 tools), all 27 resources, and prompt handlers are tested in `test-tools2.md`. Team tools (20 tools) are tested in `test-tools-team.md`.
|
|
6
|
-
|
|
7
|
-
**Seed data:** S1–S12 are general-purpose seeds. S13–S14 are personal journal entries for `project_number: 5` (needed alongside S7 to reach the `min_entries: 3` threshold for `get_cross_project_insights`). S15–S17 are team DB entries for `project_number: 5` (needed for `team_get_cross_project_insights`).
|
|
8
|
-
|
|
9
|
-
**Constraints:**
|
|
10
|
-
|
|
11
|
-
- Confirm MCP server instructions were auto-received before starting.
|
|
12
|
-
- Use the MCP server directly for all tests — not the terminal or scripts.
|
|
13
|
-
- Use https://github.com/users/neverinfamous/projects/5 for project/Kanban testing.
|
|
14
|
-
|
|
15
|
-
**Workflow after testing:**
|
|
16
|
-
|
|
17
|
-
1. Create a plan to implement any fixes and/or improvement opportunities, including changes to `server-instructions.md`/`server-instructions.ts` or this file (`test-server/test-tools.md`).
|
|
18
|
-
2. Use `code-map.md` as a source of truth and ensure fixes comply with `C:\Users\chris\Desktop\adamic\skills\mcp-builder`.
|
|
19
|
-
3. After implementation, update `UNRELEASED.md` and commit without pushing. Then, stop so the user can verify with `npm run lint && npm run typecheck`, `npm run test`, and `npm run test:e2e`.
|
|
20
|
-
4. After user completes verification, re-test fixes with direct MCP calls.
|
|
21
|
-
5. Provide a very brief final summary.
|
|
22
|
-
|
|
23
|
-
> [!IMPORTANT]
|
|
24
|
-
> **Test Session Prerequisites**
|
|
25
|
-
|
|
26
|
-
1. The server instructions are auto-injected by the MCP protocol. Confirm receipt (no need to read `memory://instructions` separately).
|
|
27
|
-
2. Confirm `memory://briefing` was auto-received and **present the `userMessage` to the user as a formatted bullet list of key facts as the server instructions required:**. Detailed briefing testing is below in Phase 1.2.
|
|
28
|
-
|
|
29
|
-
---
|
|
30
|
-
|
|
31
|
-
## Phase 0: Seed Test Data
|
|
32
|
-
|
|
33
|
-
> [!IMPORTANT]
|
|
34
|
-
> Create these entries **before Phase 2** to ensure FTS5, filter, semantic search, and relationship tests have matching data. Each entry is mapped to the test cases it enables.
|
|
35
|
-
>
|
|
36
|
-
> **Do NOT skip this phase** — without it, many Phase 3 search tests will return empty results and won't validate the underlying feature.
|
|
37
|
-
|
|
38
|
-
### 0.1 FTS5 Content Entries
|
|
39
|
-
|
|
40
|
-
These entries ensure every FTS5 query pattern in Phase 3.1 returns actual results.
|
|
41
|
-
|
|
42
|
-
| # | Tool | Params | Enables Tests |
|
|
43
|
-
| --- | -------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
|
|
44
|
-
| S1 | `create_entry` | `content: "Redesigned the authentication architecture for the OAuth 2.1 module"`, `entry_type: "technical_note"`, `tags: ["architecture", "auth"]` | `architecture`, `auth*`, `"authentication architecture"` phrase |
|
|
45
|
-
| S2 | `create_entry` | `content: "Improved error handling in the database adapter layer with typed error classes"`, `entry_type: "bug_fix"`, `significance_type: "lesson_learned"`, `tags: ["error-handling", "database"]` | `"error handling"` phrase, `significance_type` filter |
|
|
46
|
-
| S3 | `create_entry` | `content: "Deploy new release candidate to the CDN edge network"`, `entry_type: "feature_implementation"`, `tags: ["deploy", "release"]`, `is_personal: false` | `deploy NOT staging`, `deploy OR release` |
|
|
47
|
-
| S4 | `create_entry` | `content: "Released v5.0 with breaking API changes and migration guide"`, `entry_type: "milestone"`, `significance_type: "breakthrough"`, `tags: ["release"]` | `deploy OR release` (via "release"), semantic search for "release" |
|
|
48
|
-
| S5 | `create_entry` | `content: "Deploy to staging environment failed — rollback initiated"`, `entry_type: "bug_fix"`, `tags: ["deploy", "staging"]` | `deploy NOT staging` (negative match — verifies NOT exclusion) |
|
|
49
|
-
| S6 | `create_entry` | `content: "The test's scope was expanded to cover 100% of edge cases"`, `entry_type: "planning"`, `tags: ["testing"]` | `test's` LIKE fallback, `100%` LIKE fallback |
|
|
50
|
-
|
|
51
|
-
### 0.2 Filter & GitHub-Linked Entries
|
|
52
|
-
|
|
53
|
-
These entries ensure filter tests (`issue_number`, `pr_status`, `workflow_run_id`, `project_number`) return results.
|
|
54
|
-
|
|
55
|
-
| # | Tool | Params | Enables Tests |
|
|
56
|
-
| --- | -------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
|
|
57
|
-
| S7 | `create_entry` | `content: "Investigated performance regression in issue #44 — root cause was N+1 queries"`, `entry_type: "research"`, `issue_number: 44`, `project_number: 5`, `tags: ["performance", "investigation"]` | `issue_number: 44` filter, `project_number: 5` filter, semantic search for "performance" |
|
|
58
|
-
| S8 | `create_entry` | `content: "Code review feedback from PR #67 merged — refactored authentication middleware"`, `entry_type: "code_review"`, `pr_number: 67`, `pr_status: "merged"`, `tags: ["code-review", "auth"]` | `pr_status: "merged"` filter, `pr_number` filter, `auth*` prefix |
|
|
59
|
-
| S9 | `create_entry` | `content: "CI workflow run completed — all 910 tests passing across 3 test suites"`, `entry_type: "technical_note"`, `workflow_run_id: 12345`, `workflow_name: "lint-and-test"`, `workflow_status: "completed"`, `tags: ["ci", "testing"]` | `workflow_run_id` filter, workflow field persistence |
|
|
60
|
-
| S10 | `create_entry` | `content: "Personal reflection on improving development velocity and reducing technical debt"`, `entry_type: "personal_reflection"`, `is_personal: true`, `tags: ["personal", "velocity"]` | `is_personal: true` filter, semantic search for "improving performance" |
|
|
61
|
-
|
|
62
|
-
### 0.3 Team & Cross-DB Entries
|
|
63
|
-
|
|
64
|
-
These entries ensure cross-DB search merging (`source: 'personal' | 'team'`) returns results from both databases.
|
|
65
|
-
|
|
66
|
-
| # | Tool | Params | Enables Tests |
|
|
67
|
-
| --- | ------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | -------------------------------------------------------------------------------- |
|
|
68
|
-
| S11 | `create_entry` | `content: "Architecture decision: adopted event-driven design for webhook processing"`, `entry_type: "project_decision"`, `share_with_team: true`, `tags: ["architecture", "team-shared"]` | Cross-DB `search_entries` with `source` marker, team search, `architecture` FTS5 |
|
|
69
|
-
| S12 | `team_create_entry` | `content: "Team standup: discussed authorization flow improvements and deploy pipeline"`, `entry_type: "standup"`, `tags: ["standup", "auth", "deploy"]` | Team-only search, cross-DB date range, `auth*` and `deploy` in team DB |
|
|
70
|
-
|
|
71
|
-
### 0.5 Cross-Project Insights Seed
|
|
72
|
-
|
|
73
|
-
> [!IMPORTANT]
|
|
74
|
-
> `get_cross_project_insights` and `team_get_cross_project_insights` require a **minimum of 3 entries** sharing the same `project_number` before they appear in results (default `min_entries: 3`). S7 already has `project_number: 5` — add S13–S14 to reach the threshold in the personal journal. S15–S17 seed the team DB with project-linked entries.
|
|
75
|
-
|
|
76
|
-
**Personal journal — complete project #5 to 3 entries:**
|
|
77
|
-
|
|
78
|
-
| # | Tool | Params | Enables Tests |
|
|
79
|
-
| --- | -------------- | ---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
|
|
80
|
-
| S13 | `create_entry` | `content: "Completed sprint planning for project #5: scoped auth and deploy milestones"`, `entry_type: "planning"`, `project_number: 5`, `tags: ["planning", "sprint"]` | `project_number: 5` filter, `get_cross_project_insights` non-zero `project_count` |
|
|
81
|
-
| S14 | `create_entry` | `content: "Project #5 retrospective: identified bottlenecks in deployment pipeline and action items"`, `entry_type: "personal_reflection"`, `project_number: 5`, `tags: ["retrospective", "deploy"]` | `get_cross_project_insights` — 3rd entry to meet `min_entries: 3` for project 5 |
|
|
82
|
-
|
|
83
|
-
**Team DB — seed 3 project-linked entries:**
|
|
84
|
-
|
|
85
|
-
| # | Tool | Params | Enables Tests |
|
|
86
|
-
| --- | ------------------- | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
|
|
87
|
-
| S15 | `team_create_entry` | `content: "Team kickoff for project #5: aligned on goals and delivery timeline"`, `entry_type: "standup"`, `project_number: 5`, `tags: ["kickoff", "project"]` | `team_get_cross_project_insights` non-zero `project_count` |
|
|
88
|
-
| S16 | `team_create_entry` | `content: "Project #5 mid-sprint check-in: auth module ahead of schedule, deploy pipeline at risk"`, `entry_type: "standup"`, `project_number: 5`, `tags: ["standup", "project"]` | `team_get_cross_project_insights` — 2nd team entry for project 5 |
|
|
89
|
-
| S17 | `team_create_entry` | `content: "Project #5 release review: all acceptance criteria met, feature flags enabled for rollout"`, `entry_type: "standup"`, `project_number: 5`, `tags: ["release", "project", "team-shared"]` | `team_get_cross_project_insights` — 3rd team entry to meet `min_entries: 3` threshold |
|
|
90
|
-
|
|
91
|
-
### 0.4 Post-Seed Verification
|
|
92
|
-
|
|
93
|
-
After creating all 17 entries, verify the seed data is searchable:
|
|
94
|
-
|
|
95
|
-
| Check | Command | Expected |
|
|
96
|
-
| --------------------------- | ------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------- |
|
|
97
|
-
| FTS5 indexed | `search_entries(query: "architecture")` | ≥ 1 result (S1 or S11 depending on BM25 rank); use phrase `"authentication architecture"` to ensure S1 specifically |
|
|
98
|
-
| Filters work | `search_entries(issue_number: 44)` | ≥ 1 result (S7) |
|
|
99
|
-
| Cross-DB merged | `search_entries(query: "architecture")` | At least 1 result includes `source: 'team'` (S11); use `auth*` for cross-DB results spanning both DBs |
|
|
100
|
-
| Rebuild vector index | `rebuild_vector_index` | `entriesIndexed` > 0 |
|
|
101
|
-
| Semantic search | `semantic_search(query: "improving performance")` | ≥ 1 result (S7, S10 should be semantically similar) |
|
|
102
|
-
| Cross-project insights | `get_cross_project_insights({})` | `project_count ≥ 1`, project 5 appears with `entry_count ≥ 3` |
|
|
103
|
-
| Team cross-project insights | `team_get_cross_project_insights({})` | `project_count ≥ 1`, project 5 appears with `entry_count ≥ 3` |
|
|
104
|
-
|
|
105
|
-
---
|
|
106
|
-
|
|
107
|
-
## Phase 1: Core Infrastructure
|
|
108
|
-
|
|
109
|
-
### 1.1 Server Health & Connectivity
|
|
110
|
-
|
|
111
|
-
| Test | Command/Action | Expected Result |
|
|
112
|
-
| ------------------ | ---------------------- | ----------------------------------------------------------------------------------------------- |
|
|
113
|
-
| Basic connectivity | `test_simple` | Returns echo message |
|
|
114
|
-
| Health resource | Read `memory://health` | Shows DB stats, tool filter status, vector index health |
|
|
115
|
-
| Health team block | Read `memory://health` | Includes `teamDatabase` block with `configured`, `entryCount`, `path` (requires `TEAM_DB_PATH`) |
|
|
116
|
-
| Scheduler inactive | Read `memory://health` | `scheduler.active: false`, `scheduler.jobs: []` (scheduler is HTTP-only, inactive in stdio) |
|
|
117
|
-
| Statistics | `get_statistics` | Returns `structuredContent` with entry counts, types, periods |
|
|
118
|
-
| Enhanced analytics | `get_statistics` | Returns `decisionDensity`, `relationshipComplexity`, `activityTrend`, `causalMetrics` |
|
|
119
|
-
|
|
120
|
-
### 1.2 Briefing Resource
|
|
121
|
-
|
|
122
|
-
| Test | Command/Action | Expected Result |
|
|
123
|
-
| -------------------------------- | -------------------------------- | ------------------------------------------------------------------------------------------------------ |
|
|
124
|
-
| Read briefing | Read `memory://briefing` | Returns JSON with `userMessage`, `templateResources`, `journal`, `github` |
|
|
125
|
-
| Verify `lastModified` annotation | Check resource metadata | ISO 8601 timestamp (client-dependent — AntiGravity doesn't expose MCP annotations) |
|
|
126
|
-
| Confirm `userMessage` | Inspect briefing.userMessage | Formatted table with project/branch/CI/journal stats |
|
|
127
|
-
| Milestone progress row | Inspect briefing.userMessage | Table includes milestone progress row (e.g., "🚩 Milestones: X open") |
|
|
128
|
-
| Team DB row | Inspect briefing.userMessage | Table includes "Team DB" row with team entry count (requires `TEAM_DB_PATH`) |
|
|
129
|
-
| Template URIs | Check `templateResources` array | 7 template URIs listed (includes `memory://milestones/{number}`) |
|
|
130
|
-
| Workflow summary | Inspect `github.workflowSummary` | Present when `BRIEFING_WORKFLOW_STATUS=true` — has `passing`, `failing`, `pending`, `cancelled` counts |
|
|
131
|
-
| Workflow named runs | Inspect `workflowSummary.runs` | Array of `{name, conclusion}` when `BRIEFING_WORKFLOW_COUNT > 0`; CI row shows icons (✅/❌) |
|
|
132
|
-
| Rules metadata | Inspect `rulesFile` field | Present when `RULES_FILE_PATH` set — has `name`, `sizeKB`, `lastModified` |
|
|
133
|
-
| Skills metadata | Inspect `skillsDir` field | Present when `SKILLS_DIR_PATH` set — has `count`, `names` array |
|
|
134
|
-
| Enhanced CI row | Inspect briefing.userMessage | CI row shows breakdown or named runs (not just single-word status) when workflow env vars are set |
|
|
135
|
-
|
|
136
|
-
### 1.3 Protocol Validation — Run via Scripts - DO NOT SKIP!
|
|
137
|
-
|
|
138
|
-
> [!IMPORTANT]
|
|
139
|
-
> These tests require **separate server starts** — they cannot be run via MCP tool calls. Run the scripts below in a terminal. See `test-server/README.md` for full details and script locations.
|
|
140
|
-
|
|
141
|
-
```powershell
|
|
142
|
-
# Test A — Instruction levels (essential < standard < full)
|
|
143
|
-
node test-server/test-instruction-levels.mjs
|
|
144
|
-
|
|
145
|
-
# Test B — Tool annotations (61 tools, 45 openWorldHint=false, 16 openWorldHint=true, 0 missing)
|
|
146
|
-
node test-server/test-tool-annotations.mjs
|
|
147
|
-
```
|
|
148
|
-
|
|
149
|
-
| Check | Expected |
|
|
150
|
-
| ------------------ | -------------------------------------------------------------------- |
|
|
151
|
-
| Instruction levels | essential (~1.5K) < standard (~1.7K) < full (~2.7K tokens) |
|
|
152
|
-
| Tool annotations | 61 tools, all with `annotations`, 45 `false` + 16 `true` = 0 missing |
|
|
153
|
-
|
|
154
|
-
### 1.4 GitHub Status Resource
|
|
155
|
-
|
|
156
|
-
| Test | Command/Action | Expected Result |
|
|
157
|
-
| ----------------- | ----------------------------- | ---------------------------------------------------------------- |
|
|
158
|
-
| Read status | Read `memory://github/status` | Compact JSON with repo, branch, CI, issues, PRs, Kanban summary |
|
|
159
|
-
| CI status mapping | Verify CI status value | Shows `passing`, `failing`, `pending`, `cancelled`, or `unknown` |
|
|
160
|
-
| Milestone data | Inspect status data | Includes milestones summary (open count, completion percentages) |
|
|
161
|
-
|
|
162
|
-
---
|
|
163
|
-
|
|
164
|
-
## Phase 2: Entry CRUD Operations
|
|
165
|
-
|
|
166
|
-
### 2.1 Create Entry
|
|
167
|
-
|
|
168
|
-
| Test | Command/Action | Expected Result |
|
|
169
|
-
| -------------------- | ----------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
|
|
170
|
-
| Minimal create | `create_entry_minimal(content: "Test entry")` | Returns entry ID |
|
|
171
|
-
| Full create | `create_entry(content: "...", entry_type: "planning", tags: ["test"])` | Entry created with metadata |
|
|
172
|
-
| With GitHub linking | `create_entry(..., issue_number: <N>)` | Entry links to issue |
|
|
173
|
-
| issueUrl auto-pop | `create_entry(content: "...", issue_number: <N>)` — omit issueUrl | `issueUrl` auto-populated from cached repo info (requires prior `get_github_context`) |
|
|
174
|
-
| Invalid entry_type | `create_entry(content: "test", entry_type: "invalid")` | Structured error: `{ success: false, error: "..." }` listing valid enum values |
|
|
175
|
-
| Invalid significance | `create_entry(content: "test", significance_type: "invalid")` | Structured error: `{ success: false, error: "..." }` listing valid enum values |
|
|
176
|
-
| With PR fields | `create_entry(content: "PR test", pr_number: 67, pr_status: "merged")` | Entry created with `prNumber`, `prStatus` fields persisted |
|
|
177
|
-
| With workflow fields | `create_entry(content: "CI test", workflow_run_id: 123, workflow_name: "CI", workflow_status: "completed")` | Entry created with all workflow fields persisted |
|
|
178
|
-
| With project_owner | `create_entry(content: "...", project_number: 5, project_owner: "neverinfamous")` | Entry created with `projectOwner` field |
|
|
179
|
-
| auto_context off | `create_entry(content: "No context", auto_context: false)` | Entry created without auto-generated context |
|
|
180
|
-
| share_with_team | `create_entry(content: "Shared entry", share_with_team: true)` | Entry in personal DB + team DB; response has `sharedWithTeam: true`, `author` |
|
|
181
|
-
|
|
182
|
-
### 2.2 Read & Update
|
|
183
|
-
|
|
184
|
-
| Test | Command/Action | Expected Result |
|
|
185
|
-
| ------------------------- | -------------------------------------------------------------- | ------------------------------------------------------------------------ |
|
|
186
|
-
| Get by ID | `get_entry_by_id(entry_id: <N>)` | Returns `structuredContent` with relationships |
|
|
187
|
-
| Importance score | `get_entry_by_id(entry_id: <N>)` | Response includes `importance` field (0.0-1.0) and `importanceBreakdown` |
|
|
188
|
-
| No relationships | `get_entry_by_id(entry_id: <N>, include_relationships: false)` | Response omits `relationships` array (or returns empty) |
|
|
189
|
-
| Update tags | `update_entry(entry_id: <N>, tags: ["updated"])` | Tags changed |
|
|
190
|
-
| Update content | `update_entry(entry_id: <N>, content: "Updated content")` | Content changed; verify via `get_entry_by_id` |
|
|
191
|
-
| Update entry_type | `update_entry(entry_id: <N>, entry_type: "technical_note")` | Entry type changed |
|
|
192
|
-
| Update is_personal | `update_entry(entry_id: <N>, is_personal: false)` | `isPersonal` toggled |
|
|
193
|
-
| Update nonexistent | `update_entry(entry_id: 999999, tags: ["x"])` | Returns `{ success: false, error: "Entry 999999 not found" }` |
|
|
194
|
-
| Update invalid type | `update_entry(entry_id: <N>, entry_type: "invalid")` | Structured error listing valid enum values |
|
|
195
|
-
| Get recent | `get_recent_entries(limit: 5)` | Returns `structuredContent` array |
|
|
196
|
-
| Get recent (personal) | `get_recent_entries(limit: 5, is_personal: true)` | Only personal entries returned |
|
|
197
|
-
| Get recent (not personal) | `get_recent_entries(limit: 5, is_personal: false)` | Only non-personal entries returned |
|
|
198
|
-
|
|
199
|
-
### 2.3 Delete (Test Last!)
|
|
200
|
-
|
|
201
|
-
| Test | Command/Action | Expected Result |
|
|
202
|
-
| ------------------------ | ----------------------------------------------------- | --------------------------------------------------------- |
|
|
203
|
-
| Soft delete | `delete_entry(entry_id: <test_id>, permanent: false)` | Entry hidden from search |
|
|
204
|
-
| Permanent delete | `delete_entry(entry_id: <test_id>, permanent: true)` | Entry removed |
|
|
205
|
-
| Delete nonexistent entry | `delete_entry(entry_id: 999999, permanent: false)` | Returns `success: false, error: "Entry 999999 not found"` |
|
|
206
|
-
|
|
207
|
-
---
|
|
208
|
-
|
|
209
|
-
## Phase 3: Search Tools
|
|
210
|
-
|
|
211
|
-
### 3.1 Text Search
|
|
212
|
-
|
|
213
|
-
| Test | Command/Action | Expected Result |
|
|
214
|
-
| --------------------- | ------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
215
|
-
| FTS5 search | `search_entries(query: "architecture")` | ≥ 1 result — S1 and S11 both indexed; BM25 may rank team entry first; use `search_entries(query: "authentication architecture")` to target S1 specifically |
|
|
216
|
-
| FTS5 phrase | `search_entries(query: "\"error handling\"")` | ≥ 1 result (S2) — exact phrase match only; the query param value must contain the literal quotes as part of the string: `"error handling"` (not JSON escape sequences) |
|
|
217
|
-
| FTS5 prefix | `search_entries(query: "auth*")` | ≥ 2 results (S1, S8) — matches "authentication", "authorization", etc. |
|
|
218
|
-
| FTS5 boolean NOT | `search_entries(query: "deploy NOT staging")` | Returns S3, S11 but NOT S5 (S5 contains "staging") |
|
|
219
|
-
| FTS5 boolean OR | `search_entries(query: "deploy OR release")` | ≥ 2 results (S3, S4, S5 expected) |
|
|
220
|
-
| FTS5 fallback | `search_entries(query: "test's")` | ≥ 1 result (S6) — LIKE fallback, single quotes are FTS5-unsafe |
|
|
221
|
-
| FTS5 special chars | `search_entries(query: "100%")` | ≥ 1 result (S6) — LIKE fallback, `%` is FTS5-unsafe |
|
|
222
|
-
| Date range | `search_by_date_range(start_date: "2026-01-01", end_date: "2026-01-31")` | Returns `structuredContent` array |
|
|
223
|
-
| Cross-DB search | `search_entries(query: "test")` | Results include `source: 'personal' \| 'team'` marker on each entry |
|
|
224
|
-
| Cross-DB date | `search_by_date_range(start_date: "2026-01-01", end_date: "2026-12-31")` | Results include `source` marker merging personal + team entries |
|
|
225
|
-
| Invalid date fmt | `search_by_date_range(start_date: "Jan 1", end_date: "Jan 31")` | Structured error: `{ success: false, error: "..." }` with YYYY-MM-DD hint |
|
|
226
|
-
| Filter by issue | `search_entries(issue_number: 44)` | Returns entries linked to issue #44 |
|
|
227
|
-
| Filter by PR status | `search_entries(pr_status: "merged")` | Returns entries with `prStatus: "merged"` |
|
|
228
|
-
| Filter by workflow | `search_entries(workflow_run_id: <N>)` | Returns entries linked to workflow run |
|
|
229
|
-
| Filter by project | `search_entries(project_number: 5)` | Returns entries linked to project #5 |
|
|
230
|
-
| Filter by is_personal | `search_entries(query: "test", is_personal: true)` | Only personal entries returned |
|
|
231
|
-
| Date range + type | `search_by_date_range(start_date: "2026-01-01", end_date: "2026-12-31", entry_type: "planning")` | Only "planning" entries in date range |
|
|
232
|
-
| Date range + tags | `search_by_date_range(start_date: "2026-01-01", end_date: "2026-12-31", tags: ["test"])` | Only entries with "test" tag in date range |
|
|
233
|
-
| Date range + personal | `search_by_date_range(start_date: "2026-01-01", end_date: "2026-12-31", is_personal: true)` | Only personal entries in date range |
|
|
234
|
-
| Date range + project | `search_by_date_range(start_date: "2026-01-01", end_date: "2026-12-31", project_number: 5)` | Only project #5 entries in date range |
|
|
235
|
-
| Inverted date range | `search_by_date_range(start_date: "2026-12-31", end_date: "2026-01-01")` | Returns `{ success: false, error: "Invalid date range: start_date (...) is after end_date (...)", code: "VALIDATION_ERROR", suggestion: "Ensure start_date is before or equal to end_date" }` |
|
|
236
|
-
|
|
237
|
-
> [!NOTE]
|
|
238
|
-
> **Cross-DB Search Behavior:** When a team DB is present, per-DB queries fetch `limit × 2` (capped at 500) to prevent BM25 ranking in one DB from silently dropping entries before the cross-DB merge. The user's requested `limit` is applied after merging.
|
|
239
|
-
>
|
|
240
|
-
> **Code Mode API Group Structure:** When testing `mj_execute_code`, methods are bound to specific groups. Key mapping: `listTags` → `mj.core`, `mergeTags` → `mj.admin`, `getStatistics` → `mj.analytics`. Use `mj.help()` or `mj.<group>.help()` to discover available methods per group.
|
|
241
|
-
|
|
242
|
-
### 3.2 Semantic Search
|
|
243
|
-
|
|
244
|
-
| Test | Command/Action | Expected Result |
|
|
245
|
-
| ---------------------- | ------------------------------------------------------------------ | ----------------------------------------------------------------------------------- |
|
|
246
|
-
| Vector index stats | `get_vector_index_stats` | Shows `itemCount`, `modelName`, `dimensions` |
|
|
247
|
-
| Rebuild index | `rebuild_vector_index` | `entriesIndexed` > 0 (indexes seed entries) |
|
|
248
|
-
| Semantic query | `semantic_search(query: "improving performance")` | ≥ 1 result — S7, S10 semantically similar |
|
|
249
|
-
| Custom threshold | `semantic_search(query: "performance", similarity_threshold: 0.5)` | Fewer results than default threshold (0.25) |
|
|
250
|
-
| Personal filter | `semantic_search(query: "test", is_personal: true)` | Only personal entries in results |
|
|
251
|
-
| Hint disabled | `semantic_search(query: "xyznonexistent", hint_on_empty: false)` | Noise results with quality gate `hint` still shown (only advisory hints suppressed) |
|
|
252
|
-
| Hint enabled (default) | `semantic_search(query: "xyznonexistent")` | Noise results with quality gate `hint` (all hints shown) |
|
|
253
|
-
|
|
254
|
-
### 3.3 Analytics & Index Management
|
|
255
|
-
|
|
256
|
-
| Test | Command/Action | Expected Result |
|
|
257
|
-
| ------------------------ | ------------------------------------------------------------------------------ | ---------------------------------------------------------------------------------------- |
|
|
258
|
-
| Stats group by month | `get_statistics(group_by: "month")` | Periods grouped by month |
|
|
259
|
-
| Stats group by day | `get_statistics(group_by: "day")` | Periods grouped by day |
|
|
260
|
-
| Stats with dates | `get_statistics(start_date: "2026-01-01", end_date: "2026-03-01")` | Returns `dateRange` in response; results filtered to date range |
|
|
261
|
-
| Stats project breakdown | `get_statistics(project_breakdown: true)` | Returns `projectBreakdown` array with per-project stats |
|
|
262
|
-
| Cross-project insights | `get_cross_project_insights` | `project_count ≥ 1`, `projects` array with project 5 (entry_count ≥ 3, top_tags present) |
|
|
263
|
-
| Insights with dates | `get_cross_project_insights(start_date: "2026-01-01", end_date: "2026-03-01")` | Date-filtered project insights — project 5 visible if S7/S13/S14 within range |
|
|
264
|
-
| Insights min_entries | `get_cross_project_insights(min_entries: 1)` | Same or more projects than default (min_entries: 3) |
|
|
265
|
-
| Add to vector index | `add_to_vector_index(entry_id: <existing_id>)` | `success: true`, `entryId` in response |
|
|
266
|
-
| Add nonexistent to index | `add_to_vector_index(entry_id: 999999)` | Returns `{ success: false, error: "..." }` |
|
|
267
|
-
|
|
268
|
-
---
|
|
269
|
-
|
|
270
|
-
## Phase 4: Relationships & Visualization
|
|
271
|
-
|
|
272
|
-
### 4.1 Basic Relationships
|
|
273
|
-
|
|
274
|
-
| Test | Command/Action | Expected Result |
|
|
275
|
-
| ----------------------- | ------------------------------------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------------------------------- |
|
|
276
|
-
| Link entries | `link_entries(from_entry_id: <A>, to_entry_id: <B>, relationship_type: "references")` | Relationship created |
|
|
277
|
-
| Duplicate link | Call `link_entries` again with same params | Returns `duplicate: true`, `message`, existing relationship |
|
|
278
|
-
| Link nonexistent source | `link_entries(from_entry_id: 999999, to_entry_id: <B>, ...)` | Returns `success: false`, message: `"One or both entries not found (from: 999999, to: <B>)"` |
|
|
279
|
-
| Link nonexistent target | `link_entries(from_entry_id: <A>, to_entry_id: 999999, ...)` | Returns `success: false`, message: `"One or both entries not found (from: <A>, to: 999999)"` |
|
|
280
|
-
| Visualize | `visualize_relationships(entry_id: <A>)` | JSON object with `mermaid` string field containing diagram, `entry_count`, `relationship_count`, `legend` |
|
|
281
|
-
| Link with description | `link_entries(from_entry_id: <A>, to_entry_id: <C>, relationship_type: "implements", description: "Implements the plan")` | Relationship created with `description` field |
|
|
282
|
-
| Reverse duplicate | `link_entries(from_entry_id: <B>, to_entry_id: <A>, relationship_type: "references")` | Succeeds — only same-direction duplicates are checked (confirmed) |
|
|
283
|
-
| Visualize nonexistent | `visualize_relationships(entry_id: 999999)` | Returns `message: "Entry 999999 not found"` |
|
|
284
|
-
| Visualize by tags | `visualize_relationships(tags: ["test"])` | Diagram scoped to entries with "test" tag |
|
|
285
|
-
| Visualize depth 3 | `visualize_relationships(entry_id: <A>, depth: 3)` | Deeper traversal than default `depth: 2` |
|
|
286
|
-
| Visualize custom limit | `visualize_relationships(entry_id: <A>, limit: 5)` | Diagram limited to 5 entries |
|
|
287
|
-
| Graph resource | Read `memory://graph/recent` | Raw Mermaid text (`text/plain` MIME), arrows harmonized with `visualize_relationships` |
|
|
288
|
-
|
|
289
|
-
### 4.2 Causal Relationship Types
|
|
290
|
-
|
|
291
|
-
| Test | Command/Action | Expected Result |
|
|
292
|
-
| ----------------- | ------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------- |
|
|
293
|
-
| blocked_by type | `link_entries(from_entry_id: <A>, to_entry_id: <B>, relationship_type: "blocked_by")` | Relationship created with `blocked_by` type |
|
|
294
|
-
| resolved type | `link_entries(from_entry_id: <A>, to_entry_id: <B>, relationship_type: "resolved")` | Relationship created with `resolved` type |
|
|
295
|
-
| caused type | `link_entries(from_entry_id: <A>, to_entry_id: <B>, relationship_type: "caused")` | Relationship created with `caused` type |
|
|
296
|
-
| Causal viz arrows | `visualize_relationships(entry_id: <A>)` | Mermaid shows `--x` (blocked_by), `==>` (resolved), `-.->` (caused) arrows |
|
|
297
|
-
| Graph harmonized | Read `memory://graph/recent` | Raw Mermaid `text/plain`: `--x`, `==>`, `-.->` for causal types, `-->` for references |
|
|
298
|
-
|
|
299
|
-
---
|
|
300
|
-
|
|
301
|
-
## Phase 5: Admin & Backup Tools
|
|
302
|
-
|
|
303
|
-
### 5.1 Tags
|
|
304
|
-
|
|
305
|
-
| Test | Command/Action | Expected Result |
|
|
306
|
-
| ----------------- | ------------------------------------------------------------- | --------------------------------------------------------------------------- |
|
|
307
|
-
| List tags | `list_tags` | Returns all tags with counts |
|
|
308
|
-
| Create source tag | `create_entry(content: "Test tag merge", tags: ["test-old"])` | Creates "test-old" tag (pre-req) |
|
|
309
|
-
| Merge tags | `merge_tags(source_tag: "test-old", target_tag: "test-new")` | Merges source into target, deletes source |
|
|
310
|
-
| Verify merge | `list_tags` + `search_entries(query: "Test tag merge")` | "test-old" gone, "test-new" exists, entry now has "test-new" tag |
|
|
311
|
-
| Merge same tag | `merge_tags(source_tag: "test-new", target_tag: "test-new")` | Structured error: `{ success: false, error: "..." }` (source equals target) |
|
|
312
|
-
| Merge nonexistent | `merge_tags(source_tag: "nonexistent-xyz", target_tag: "x")` | Structured error: `{ success: false, error: "Source tag not found: ..." }` |
|
|
313
|
-
|
|
314
|
-
> [!NOTE]
|
|
315
|
-
> If `restore_backup` is tested after `merge_tags`, the restored backup will revert the merge. This is expected behavior. Verify merge worked immediately after calling `merge_tags`, before any backup restoration.
|
|
316
|
-
|
|
317
|
-
### 5.2 Export
|
|
318
|
-
|
|
319
|
-
| Test | Command/Action | Expected Result |
|
|
320
|
-
| ----------------------- | ---------------------------------------------------------------------------------- | ---------------------------------------- |
|
|
321
|
-
| Export JSON | `export_entries(format: "json", limit: 5)` | JSON export with `entries` array |
|
|
322
|
-
| Export markdown | `export_entries(format: "markdown", limit: 5)` | Markdown export with `content` string |
|
|
323
|
-
| Export with tags | `export_entries(format: "json", tags: ["test"], limit: 10)` | Only entries with matching tags returned |
|
|
324
|
-
| Export with dates | `export_entries(format: "json", start_date: "2026-01-01", end_date: "2026-03-01")` | Only entries within date range returned |
|
|
325
|
-
| Export with entry_types | `export_entries(format: "json", entry_types: ["planning"], limit: 10)` | Only entries of specified type returned |
|
|
326
|
-
|
|
327
|
-
### 5.3 Backup & Restore
|
|
328
|
-
|
|
329
|
-
| Test | Command/Action | Expected Result |
|
|
330
|
-
| --------------------- | ----------------------------------------------------------- | -------------------------------------------------------------------------------- |
|
|
331
|
-
| Create backup | `backup_journal(name: "test-backup")` | Backup file created with `success`, `filename`, `path`, `sizeBytes` |
|
|
332
|
-
| Auto-named backup | `backup_journal` | Backup created with auto-generated timestamped name |
|
|
333
|
-
| List backups | `list_backups` | Shows backup files with metadata including `path` field |
|
|
334
|
-
| Cleanup backups | `cleanup_backups(keep_count: 5)` | Deletes old backups, keeps N most recent |
|
|
335
|
-
| Backup path traversal | `backup_journal(name: "../../etc/passwd")` | Structured error: `{ success: false, error: "..." }` with path traversal message |
|
|
336
|
-
| Restore backup | `restore_backup(filename: "test-backup.db", confirm: true)` | Restores + `revertedChanges` field with details |
|
|
337
|
-
| Restore nonexistent | `restore_backup(filename: "nonexistent.db", confirm: true)` | Structured error: `{ success: false, error: "Backup file not found: ..." }` |
|
|
338
|
-
|
|
339
|
-
---
|
|
340
|
-
|
|
341
|
-
## Phase 6: Automated Scheduler — Run via Script [DO NOT SKIP!]
|
|
342
|
-
|
|
343
|
-
> [!IMPORTANT]
|
|
344
|
-
> The scheduler only activates in HTTP/SSE transport mode. Run the script below — it handles session init, health reads, and wait/verify automatically. See `test-server/README.md` for full details.
|
|
345
|
-
|
|
346
|
-
```powershell
|
|
347
|
-
# Terminal 1: Start HTTP server with short scheduler intervals
|
|
348
|
-
npm run build
|
|
349
|
-
node dist/cli.js --transport http --port 3099 --backup-interval 1 --keep-backups 3 --vacuum-interval 2 --rebuild-index-interval 2
|
|
350
|
-
|
|
351
|
-
# Terminal 2: Run scheduler test (waits 130s for jobs to fire)
|
|
352
|
-
node test-server/test-scheduler.mjs
|
|
353
|
-
```
|
|
354
|
-
|
|
355
|
-
| Check | Expected |
|
|
356
|
-
| --------------------------- | ---------------------- |
|
|
357
|
-
| `scheduler.active` | `true`, 3 jobs |
|
|
358
|
-
| All jobs `lastResult` | `"success"` after wait |
|
|
359
|
-
| All jobs `lastError` | `null` |
|
|
360
|
-
| backup `runCount` | ≥ 2 |
|
|
361
|
-
| vacuum + rebuild `runCount` | ≥ 1 each |
|
|
362
|
-
|
|
363
|
-
---
|
|
364
|
-
|
|
365
|
-
## Test Execution Order
|
|
366
|
-
|
|
367
|
-
0. **Phase 0**: Seed Test Data (creates entries for FTS5, filter, and semantic search tests)
|
|
368
|
-
1. **Phase 1**: Infrastructure (must pass before proceeding)
|
|
369
|
-
2. **Phase 2**: Entry CRUD (creates additional test data + validates CRUD operations)
|
|
370
|
-
3. **Phase 3**: Search + Analytics (requires entries from Phase 0 + 2)
|
|
371
|
-
4. **Phase 4**: Relationships (links entries from Phase 0 + 2)
|
|
372
|
-
5. **Phase 5**: Admin/Backup (test last to avoid data loss)
|
|
373
|
-
6. **Phase 6**: Automated Scheduler (HTTP only — manual terminal test)
|
|
374
|
-
|
|
375
|
-
---
|
|
376
|
-
|
|
377
|
-
## Success Criteria
|
|
378
|
-
|
|
379
|
-
### Core Functionality
|
|
380
|
-
|
|
381
|
-
- [ ] All 24 core tools execute without errors on happy paths (GitHub tools tested in `test-tools2.md`, team tools in `test-tools-team.md`)
|
|
382
|
-
- [ ] Server instructions length respects `--instruction-level`: essential (~1.5K tokens) < standard (~1.7K) < full (~2.7K)
|
|
383
|
-
- [ ] 45 core/local tools have `openWorldHint: false`; 16 GitHub tools have `openWorldHint: true` (61 total, 0 missing)
|
|
384
|
-
|
|
385
|
-
### Entry CRUD
|
|
386
|
-
|
|
387
|
-
- [ ] `create_entry` persists all optional fields: PR fields, workflow fields, `projectOwner`, `autoContext`
|
|
388
|
-
- [ ] `create_entry` with `share_with_team: true` creates entries in both personal and team DBs
|
|
389
|
-
- [ ] `create_entry` rejects invalid `entry_type` and `significance_type` with structured errors (not raw throws)
|
|
390
|
-
- [ ] `create_entry` with `issue_number` auto-populates `issueUrl` from cached repo info
|
|
391
|
-
- [ ] `get_entry_by_id` returns `importance` score (0.0-1.0) and `importanceBreakdown`
|
|
392
|
-
- [ ] `get_recent_entries` with `is_personal` filter returns only matching entries
|
|
393
|
-
- [ ] `update_entry` returns `success: false` for nonexistent entry IDs
|
|
394
|
-
- [ ] `delete_entry` returns `success: false` for nonexistent entry IDs
|
|
395
|
-
|
|
396
|
-
### Search & Analytics
|
|
397
|
-
|
|
398
|
-
- [ ] `search_entries` FTS5 phrase, prefix, and boolean operators work correctly
|
|
399
|
-
- [ ] `search_entries` gracefully falls back to LIKE for FTS5-unsafe queries (single quotes, `%`)
|
|
400
|
-
- [ ] `search_entries` filters work: `issue_number`, `pr_status`, `workflow_run_id`, `project_number`, `is_personal`
|
|
401
|
-
- [ ] `search_by_date_range` filters work: `entry_type`, `tags`, `is_personal`, `project_number`
|
|
402
|
-
- [ ] `search_by_date_range` rejects non-YYYY-MM-DD date strings with structured errors
|
|
403
|
-
- [ ] Cross-DB merging includes `source: 'personal' | 'team'` marker
|
|
404
|
-
- [ ] `semantic_search` with custom `similarity_threshold` affects result count
|
|
405
|
-
- [ ] `get_statistics` returns all 4 enhanced analytics metrics with correct groupings
|
|
406
|
-
- [ ] `get_cross_project_insights` returns `project_count ≥ 1` with seed entries S7, S13, S14 present (project 5 has 3 entries, meeting `min_entries: 3`)
|
|
407
|
-
- [ ] `get_cross_project_insights` response includes `top_tags`, `first_entry`, `last_entry`, `active_days`, `time_distribution` per project
|
|
408
|
-
- [ ] `get_cross_project_insights` returns all required schema fields (including `projects: []`) when empty (tested with `min_entries: 9999`)
|
|
409
|
-
|
|
410
|
-
### Relationships
|
|
411
|
-
|
|
412
|
-
- [ ] Causal relationship types (`blocked_by`, `resolved`, `caused`) create correctly
|
|
413
|
-
- [ ] `link_entries` returns `success: false` for nonexistent entry IDs
|
|
414
|
-
- [ ] `visualize_relationships` shows distinct arrows for causal types
|
|
415
|
-
- [ ] `memory://graph/recent` uses harmonized arrows matching `visualize_relationships`
|
|
416
|
-
|
|
417
|
-
### Admin & Backup
|
|
418
|
-
|
|
419
|
-
- [ ] `merge_tags` consolidates duplicate tags correctly — verified via `list_tags` and entry re-check
|
|
420
|
-
- [ ] `merge_tags` returns structured error when source equals target or source tag nonexistent
|
|
421
|
-
- [ ] `backup_journal` rejects names containing path traversal characters (`../`) with structured errors
|
|
422
|
-
- [ ] `restore_backup` with nonexistent filename returns structured error
|
|
423
|
-
|
|
424
|
-
### Scheduler (Phase 6)
|
|
425
|
-
|
|
426
|
-
- [ ] `memory://health` shows `scheduler.active: false` and empty `jobs` array in stdio mode
|
|
427
|
-
- [ ] All 3 jobs active with `nextRun` timestamps in HTTP mode
|
|
428
|
-
- [ ] All `lastResult` values are `"success"` after jobs fire
|
|
429
|
-
- [ ] Error in one job does not prevent others from running
|