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,514 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Server instructions for Memory Journal MCP.
|
|
3
|
-
*
|
|
4
|
-
* ⚠️ AUTO-GENERATED — DO NOT EDIT THIS FILE DIRECTLY
|
|
5
|
-
* Edit src/constants/server-instructions.md instead,
|
|
6
|
-
* then run: npm run generate:instructions
|
|
7
|
-
*
|
|
8
|
-
* These instructions are automatically sent to MCP clients during initialization,
|
|
9
|
-
* providing guidance for AI agents on tool usage.
|
|
10
|
-
*
|
|
11
|
-
* Tool parameter reference is served dynamically via memory://help/{group}.
|
|
12
|
-
* Field notes and gotchas are served via memory://help/gotchas.
|
|
13
|
-
*
|
|
14
|
-
* Optimized for token efficiency with tiered instruction levels.
|
|
15
|
-
* Sections are conditionally included based on enabled tool groups.
|
|
16
|
-
*/
|
|
17
|
-
|
|
18
|
-
import type { ToolGroup } from '../types/index.js'
|
|
19
|
-
import { TOOL_GROUPS, getEnabledGroups } from '../filtering/tool-filter.js'
|
|
20
|
-
|
|
21
|
-
/**
|
|
22
|
-
* Resource definition for instruction generation
|
|
23
|
-
*/
|
|
24
|
-
export interface ResourceDefinition {
|
|
25
|
-
uri: string
|
|
26
|
-
name: string
|
|
27
|
-
description?: string
|
|
28
|
-
}
|
|
29
|
-
|
|
30
|
-
/**
|
|
31
|
-
* Prompt definition for instruction generation
|
|
32
|
-
*/
|
|
33
|
-
export interface PromptDefinition {
|
|
34
|
-
name: string
|
|
35
|
-
description?: string
|
|
36
|
-
}
|
|
37
|
-
|
|
38
|
-
/**
|
|
39
|
-
* Latest entry snapshot for initial briefing
|
|
40
|
-
*/
|
|
41
|
-
export interface LatestEntrySnapshot {
|
|
42
|
-
id: number
|
|
43
|
-
timestamp: string
|
|
44
|
-
entryType: string
|
|
45
|
-
content: string
|
|
46
|
-
}
|
|
47
|
-
|
|
48
|
-
/**
|
|
49
|
-
* Instruction detail level for token efficiency
|
|
50
|
-
* - essential: ~200 tokens - Core behaviors only (for token-constrained clients)
|
|
51
|
-
* - standard: ~350 tokens - + GitHub patterns + help pointers
|
|
52
|
-
* - full: ~400 tokens - + active tools/prompts summary
|
|
53
|
-
*/
|
|
54
|
-
export type InstructionLevel = 'essential' | 'standard' | 'full'
|
|
55
|
-
|
|
56
|
-
// =============================================================================
|
|
57
|
-
// Composable Instruction Segments
|
|
58
|
-
// =============================================================================
|
|
59
|
-
|
|
60
|
-
/**
|
|
61
|
-
* Core behavioral guidance — always included regardless of enabled groups.
|
|
62
|
-
* Session Start, Behaviors, Rule & Skill Suggestions.
|
|
63
|
-
*/
|
|
64
|
-
const CORE_INSTRUCTIONS = `# memory-journal-mcp
|
|
65
|
-
|
|
66
|
-
## Session Start
|
|
67
|
-
|
|
68
|
-
**REQUIRED**: Before processing any user request, read \`memory://briefing\` and **present the \`userMessage\` to the user as a formatted bullet list of key facts:**
|
|
69
|
-
|
|
70
|
-
- Entry counts (journal + team)
|
|
71
|
-
- GitHub: repo, branch, CI status, open issues/PRs
|
|
72
|
-
- Milestone progress (if any)
|
|
73
|
-
- Template resources count
|
|
74
|
-
- Optional metadata present (rulesFile, skillsDir, workflowSummary, copilotReviews, Team DB)
|
|
75
|
-
|
|
76
|
-
**Server name for resource calls**: Derive from tool prefixes — strip the tool name suffix to get the server name.
|
|
77
|
-
|
|
78
|
-
- **AntiGravity**: Tools are \`mcp_{name}_{tool}\` → server name = \`memory-journal-mcp\`
|
|
79
|
-
- **Cursor**: Tools are \`user-{name}-{tool}\` → server name = \`user-memory-journal-mcp\`
|
|
80
|
-
- **Other clients**: Use configured name exactly. Use tool-prefix discovery if unsure.
|
|
81
|
-
|
|
82
|
-
## Behaviors
|
|
83
|
-
|
|
84
|
-
- **Create entries for**: implementations, decisions, bug fixes, milestones, user requests to "remember"
|
|
85
|
-
- **Search before**: major decisions, referencing prior work, understanding project context
|
|
86
|
-
- **Link entries**: implementation→spec, bugfix→issue, followup→prior work
|
|
87
|
-
|
|
88
|
-
## Rule & Skill Suggestions
|
|
89
|
-
|
|
90
|
-
When you notice the user consistently applies patterns, preferences, or workflows that could be codified:
|
|
91
|
-
|
|
92
|
-
**Suggest adding a rule** when you observe:
|
|
93
|
-
|
|
94
|
-
- Naming conventions, formatting preferences, or coding standards
|
|
95
|
-
- Testing patterns or verification steps the user always follows
|
|
96
|
-
- Project-specific commands, workflows, or deployment steps
|
|
97
|
-
- Error handling patterns or logging conventions
|
|
98
|
-
|
|
99
|
-
**Suggest adding a skill** when you build:
|
|
100
|
-
|
|
101
|
-
- Reusable multi-step processes (e.g., deployment, release, audit workflows)
|
|
102
|
-
- Project-specific templates or scaffolds
|
|
103
|
-
- Complex integrations or tool chains the user may repeat
|
|
104
|
-
|
|
105
|
-
**Suggest refining existing rules/skills** when you notice:
|
|
106
|
-
|
|
107
|
-
- A rule conflict or ambiguity causing inconsistent behavior
|
|
108
|
-
- An outdated pattern that no longer matches the codebase
|
|
109
|
-
- Missing edge cases or exceptions to an existing rule
|
|
110
|
-
- A skill that could be extended with new steps
|
|
111
|
-
|
|
112
|
-
**How to act:**
|
|
113
|
-
|
|
114
|
-
- The briefing shows **Rules** and **Skills** paths — use these to locate the files
|
|
115
|
-
- **Always ask the user first** — never create or modify rules/skills silently
|
|
116
|
-
- Frame suggestions as: "I noticed you always [pattern]. Would you like me to add/update a rule for this?"
|
|
117
|
-
- For skills, explain the workflow it would automate and what triggers it
|
|
118
|
-
`
|
|
119
|
-
|
|
120
|
-
/**
|
|
121
|
-
* Copilot Review Patterns — only when `github` group is enabled.
|
|
122
|
-
* References `get_copilot_reviews` which is a GitHub tool.
|
|
123
|
-
*/
|
|
124
|
-
const COPILOT_REVIEW_INSTRUCTIONS = `\n## Copilot Review Patterns
|
|
125
|
-
|
|
126
|
-
When the user has GitHub Copilot code review enabled:
|
|
127
|
-
|
|
128
|
-
**Learn from reviews** — After a PR is merged or reviewed, use \`get_copilot_reviews(pr_number)\` to read Copilot's findings. If patterns emerge (e.g., repeated null check warnings, missing error handling), suggest adding a rule or updating existing rules. Create journal entries tagged \`copilot-finding\` and link to the PR via \`pr_number\`.
|
|
129
|
-
|
|
130
|
-
**Pre-emptive checking** — Before creating or modifying code, search journal entries with tag \`copilot-finding\` for patterns relevant to the current work. Apply those patterns proactively to reduce review cycles.
|
|
131
|
-
|
|
132
|
-
**How to act:**
|
|
133
|
-
|
|
134
|
-
- The briefing shows **Rules** and **Skills** paths — use these to locate the files
|
|
135
|
-
- **Always ask the user first** — never create or modify rules/skills silently
|
|
136
|
-
- Frame suggestions as: "I noticed you always [pattern]. Would you like me to add/update a rule for this?"
|
|
137
|
-
- For skills, explain the workflow it would automate and what triggers it
|
|
138
|
-
`
|
|
139
|
-
|
|
140
|
-
/**
|
|
141
|
-
* Quick Access table — always included.
|
|
142
|
-
* The semantic_search row is conditional on the `search` group.
|
|
143
|
-
*/
|
|
144
|
-
function buildQuickAccess(groups: Set<ToolGroup>): string {
|
|
145
|
-
let table = `
|
|
146
|
-
## Quick Access
|
|
147
|
-
|
|
148
|
-
| Purpose | Action |
|
|
149
|
-
| --------------- | --------------------------- |
|
|
150
|
-
| Session context | \`memory://briefing\` |
|
|
151
|
-
| Recent entries | \`memory://recent\` |
|
|
152
|
-
| Health/time | \`memory://health\` |
|
|
153
|
-
`
|
|
154
|
-
if (groups.has('search')) {
|
|
155
|
-
table += `| Semantic search | \`semantic_search(query)\` |
|
|
156
|
-
`
|
|
157
|
-
}
|
|
158
|
-
table += `| Full context | \`get-context-bundle\` prompt |
|
|
159
|
-
`
|
|
160
|
-
return table
|
|
161
|
-
}
|
|
162
|
-
|
|
163
|
-
/**
|
|
164
|
-
* Code Mode namespace row definitions.
|
|
165
|
-
* Each maps a tool group to its Code Mode API namespace.
|
|
166
|
-
*/
|
|
167
|
-
const CODE_MODE_NAMESPACE_ROWS: {
|
|
168
|
-
group: ToolGroup
|
|
169
|
-
label: string
|
|
170
|
-
namespace: string
|
|
171
|
-
example: string
|
|
172
|
-
}[] = [
|
|
173
|
-
{
|
|
174
|
-
group: 'core',
|
|
175
|
-
label: 'Core',
|
|
176
|
-
namespace: '`mj.core.*`',
|
|
177
|
-
example: '`mj.core.createEntry("Implemented feature X")`',
|
|
178
|
-
},
|
|
179
|
-
{
|
|
180
|
-
group: 'search',
|
|
181
|
-
label: 'Search',
|
|
182
|
-
namespace: '`mj.search.*`',
|
|
183
|
-
example: '`mj.search.searchEntries("performance")`',
|
|
184
|
-
},
|
|
185
|
-
{
|
|
186
|
-
group: 'analytics',
|
|
187
|
-
label: 'Analytics',
|
|
188
|
-
namespace: '`mj.analytics.*`',
|
|
189
|
-
example: '`mj.analytics.getStatistics()`',
|
|
190
|
-
},
|
|
191
|
-
{
|
|
192
|
-
group: 'relationships',
|
|
193
|
-
label: 'Relationships',
|
|
194
|
-
namespace: '`mj.relationships.*`',
|
|
195
|
-
example: '`mj.relationships.linkEntries(1, 2, "implements")`',
|
|
196
|
-
},
|
|
197
|
-
{
|
|
198
|
-
group: 'export',
|
|
199
|
-
label: 'Export',
|
|
200
|
-
namespace: '`mj.export.*`',
|
|
201
|
-
example: '`mj.export.exportEntries("json")`',
|
|
202
|
-
},
|
|
203
|
-
{
|
|
204
|
-
group: 'admin',
|
|
205
|
-
label: 'Admin',
|
|
206
|
-
namespace: '`mj.admin.*`',
|
|
207
|
-
example: '`mj.admin.rebuildVectorIndex()`',
|
|
208
|
-
},
|
|
209
|
-
{
|
|
210
|
-
group: 'github',
|
|
211
|
-
label: 'GitHub',
|
|
212
|
-
namespace: '`mj.github.*`',
|
|
213
|
-
example: '`mj.github.getGithubIssues({ state: "open" })`',
|
|
214
|
-
},
|
|
215
|
-
{
|
|
216
|
-
group: 'backup',
|
|
217
|
-
label: 'Backup',
|
|
218
|
-
namespace: '`mj.backup.*`',
|
|
219
|
-
example: '`mj.backup.backupJournal()`',
|
|
220
|
-
},
|
|
221
|
-
{
|
|
222
|
-
group: 'team',
|
|
223
|
-
label: 'Team',
|
|
224
|
-
namespace: '`mj.team.*`',
|
|
225
|
-
example: '`mj.team.teamCreateEntry("Team update")`',
|
|
226
|
-
},
|
|
227
|
-
]
|
|
228
|
-
|
|
229
|
-
/**
|
|
230
|
-
* Code Mode section — only when `codemode` group is enabled.
|
|
231
|
-
* The namespace table dynamically omits rows for disabled groups.
|
|
232
|
-
* The behavioral text (await patterns, readonly, return shape) comes from the .md source.
|
|
233
|
-
*/
|
|
234
|
-
function buildCodeModeInstructions(groups: Set<ToolGroup>): string {
|
|
235
|
-
// Build namespace table with only enabled groups
|
|
236
|
-
const rows = CODE_MODE_NAMESPACE_ROWS.filter((r) => groups.has(r.group))
|
|
237
|
-
.map(
|
|
238
|
-
(r) => `| ${r.label.padEnd(13)} | ${r.namespace.padEnd(20)} | ${r.example.padEnd(50)} |`
|
|
239
|
-
)
|
|
240
|
-
.join('\n')
|
|
241
|
-
|
|
242
|
-
// Build the static behavioral text from the .md source,
|
|
243
|
-
// but replace the full namespace table with the filtered version
|
|
244
|
-
const fullSection = CODE_MODE_FULL_TEXT
|
|
245
|
-
const tableStart = fullSection.indexOf('| Group')
|
|
246
|
-
const tableEnd = fullSection.indexOf('\n\n**Features**')
|
|
247
|
-
if (tableStart === -1 || tableEnd === -1) {
|
|
248
|
-
// Fallback: return full section if markers not found
|
|
249
|
-
return '\n' + fullSection
|
|
250
|
-
}
|
|
251
|
-
const beforeTable = fullSection.slice(0, tableStart)
|
|
252
|
-
const headerLine =
|
|
253
|
-
'| Group | Namespace | Example |'
|
|
254
|
-
const separatorLine =
|
|
255
|
-
'| ------------- | -------------------- | -------------------------------------------------- |'
|
|
256
|
-
const afterTable = fullSection.slice(tableEnd)
|
|
257
|
-
return '\n' + beforeTable + headerLine + '\n' + separatorLine + '\n' + rows + afterTable
|
|
258
|
-
}
|
|
259
|
-
|
|
260
|
-
/**
|
|
261
|
-
* Full Code Mode section text from .md source (used as template for filtered version)
|
|
262
|
-
*/
|
|
263
|
-
const CODE_MODE_FULL_TEXT = `## Code Mode (Token-Efficient Multi-Step Operations)
|
|
264
|
-
|
|
265
|
-
For multi-step workflows (3+ operations), prefer \`mj_execute_code\` over individual tool calls.
|
|
266
|
-
This executes JavaScript in a sandboxed environment with all tools available as \`mj.*\` API:
|
|
267
|
-
|
|
268
|
-
| Group | Namespace | Example |
|
|
269
|
-
| ------------- | -------------------- | -------------------------------------------------- |
|
|
270
|
-
| Core | \`mj.core.*\` | \`mj.core.createEntry("Implemented feature X")\` |
|
|
271
|
-
| Search | \`mj.search.*\` | \`mj.search.searchEntries("performance")\` |
|
|
272
|
-
| Analytics | \`mj.analytics.*\` | \`mj.analytics.getStatistics()\` |
|
|
273
|
-
| Relationships | \`mj.relationships.*\` | \`mj.relationships.linkEntries(1, 2, "implements")\` |
|
|
274
|
-
| Export | \`mj.export.*\` | \`mj.export.exportEntries("json")\` |
|
|
275
|
-
| Admin | \`mj.admin.*\` | \`mj.admin.rebuildVectorIndex()\` |
|
|
276
|
-
| GitHub | \`mj.github.*\` | \`mj.github.getGithubIssues({ state: "open" })\` |
|
|
277
|
-
| Backup | \`mj.backup.*\` | \`mj.backup.backupJournal()\` |
|
|
278
|
-
| Team | \`mj.team.*\` | \`mj.team.teamCreateEntry("Team update")\` |
|
|
279
|
-
|
|
280
|
-
**Features**: Positional args (\`createEntry("note")\`), aliases (\`mj.core.create\`), \`mj.help()\` for discovery.
|
|
281
|
-
**Readonly mode**: \`readonly: true\` restricts to read-only tools only. Calling a mutation method (e.g., \`mj.core.create(...)\`) in readonly mode throws an error that halts execution — the sandbox returns \`{ success: false, error: "Operation '...' is not found in group" }\`. If a group has no methods at all (fully stripped), the error says \`"no methods (read-only mode?)"\`.
|
|
282
|
-
**Returns**: Last expression value. Errors return \`{ success: false, error: "..." }\`.
|
|
283
|
-
|
|
284
|
-
**Important — all \`mj.*\` methods return Promises. Always \`await\` them:**
|
|
285
|
-
|
|
286
|
-
\`\`\`js
|
|
287
|
-
// ✅ Correct
|
|
288
|
-
const result = await mj.core.recent({ limit: 5 })
|
|
289
|
-
return result.entries.map(e => e.id)
|
|
290
|
-
|
|
291
|
-
// ❌ Wrong — returns a Promise object, not the entries
|
|
292
|
-
const result = mj.core.recent({ limit: 5 })
|
|
293
|
-
|
|
294
|
-
// ✅ Discovery
|
|
295
|
-
const help = await mj.help() // { groups, totalMethods, usage }
|
|
296
|
-
const groupHelp = await mj.core.help() // { group, methods }
|
|
297
|
-
\`\`\`
|
|
298
|
-
|
|
299
|
-
**\`mj.core.recent()\` return shape**: Returns \`{ entries: JournalEntry[], count: number }\` — not a plain array. Access \`.entries\` to iterate:
|
|
300
|
-
|
|
301
|
-
\`\`\`js
|
|
302
|
-
const { entries, count } = await mj.core.recent({ limit: 10 })
|
|
303
|
-
return entries.map(e => ({ id: e.id, content: e.content.slice(0, 50) }))
|
|
304
|
-
\`\`\`
|
|
305
|
-
`
|
|
306
|
-
|
|
307
|
-
/**
|
|
308
|
-
* GitHub integration patterns (~150 additional tokens)
|
|
309
|
-
* Only included when `github` group is enabled.
|
|
310
|
-
*/
|
|
311
|
-
const GITHUB_INSTRUCTIONS = `\n## GitHub Integration
|
|
312
|
-
|
|
313
|
-
- Include \`issue_number\`/\`pr_number\` in \`create_entry\` to auto-link
|
|
314
|
-
- After closing issue/merging PR → create summary entry with learnings
|
|
315
|
-
- CI failures → \`actions-failure-digest\` prompt or \`memory://actions/recent\`
|
|
316
|
-
- Kanban: \`get_kanban_board(project_number)\` → \`move_kanban_item\` → document completion
|
|
317
|
-
- Milestones: \`get_github_milestones\` → track project progress, \`memory://github/milestones\`
|
|
318
|
-
- GitHub tools auto-detect owner/repo from git context; specify explicitly if null
|
|
319
|
-
`
|
|
320
|
-
|
|
321
|
-
/**
|
|
322
|
-
* Help resource pointers — directs agents to pull-based reference
|
|
323
|
-
*/
|
|
324
|
-
const HELP_POINTERS = `\n## Help Resources
|
|
325
|
-
|
|
326
|
-
Read \`memory://help\` for tool group index and available help resources.
|
|
327
|
-
Read \`memory://help/{group}\` for per-group tool reference (parameters, annotations, examples).
|
|
328
|
-
Read \`memory://help/gotchas\` for critical field notes and usage patterns.
|
|
329
|
-
Only help resources for your enabled tool groups are registered.
|
|
330
|
-
`
|
|
331
|
-
|
|
332
|
-
/**
|
|
333
|
-
* Server access instructions - critical for AI agents to call tools correctly
|
|
334
|
-
*/
|
|
335
|
-
const SERVER_ACCESS_INSTRUCTIONS = `\n## How to Access This Server
|
|
336
|
-
|
|
337
|
-
### Server Name Discovery
|
|
338
|
-
|
|
339
|
-
The server name used for resource and tool calls depends on your MCP client:
|
|
340
|
-
|
|
341
|
-
- **AntiGravity**: Prefixes tools with \`mcp_\` and uses underscores. If the server is named \`memory-journal-mcp\` in config, tools appear as \`mcp_memory-journal-mcp_create_entry\`. Use \`memory-journal-mcp\` as the server name for resource calls.
|
|
342
|
-
- **Cursor**: Prepends \`user-\` to the configured name. If the server is named \`memory-journal-mcp\` in config, use \`user-memory-journal-mcp\` for \`ListMcpResources\` and \`FetchMcpResource\` calls.
|
|
343
|
-
- **Other clients** (Claude Desktop, etc.): Likely use the configured name exactly. Only Cursor and AntiGravity have been verified — use the tool-prefix discovery method if unsure.
|
|
344
|
-
|
|
345
|
-
To identify your server name: look at the tool name prefix. Strip the tool name suffix to get the server name. Examples: \`mcp_memory-journal-mcp_create_entry\` → \`memory-journal-mcp\`; \`user-memory-journal-mcp-create_entry\` → \`user-memory-journal-mcp\`.
|
|
346
|
-
|
|
347
|
-
### Calling Tools
|
|
348
|
-
|
|
349
|
-
Use the tool functions directly — they are already available in your context by their full prefixed name.
|
|
350
|
-
|
|
351
|
-
### Reading Resources
|
|
352
|
-
|
|
353
|
-
Use the resource-reading mechanism provided by your MCP client with the discovered server name and \`memory://\` URIs.
|
|
354
|
-
|
|
355
|
-
Do NOT try to browse filesystem paths for MCP tool/resource definitions — use the MCP protocol directly.
|
|
356
|
-
|
|
357
|
-
## Quick Health Check
|
|
358
|
-
|
|
359
|
-
Fetch \`memory://health\` to verify server status, database stats, and tool availability.
|
|
360
|
-
`
|
|
361
|
-
|
|
362
|
-
/**
|
|
363
|
-
* Field notes and gotchas — served via memory://help/gotchas resource.
|
|
364
|
-
* Exported so the help resource handler can access it.
|
|
365
|
-
*/
|
|
366
|
-
export const GOTCHAS_CONTENT = `# memory-journal-mcp — Field Notes & Gotchas
|
|
367
|
-
|
|
368
|
-
## ⚠️ Critical Patterns
|
|
369
|
-
|
|
370
|
-
- **\`autoContext\`**: Reserved for future automatic context capture. Currently always \`null\`.
|
|
371
|
-
- **\`memory://tags\` vs \`list_tags\`**: Resource includes \`id\`, \`name\`, \`count\`; tool returns only \`name\`, \`count\`. Neither returns orphan tags with zero usage.
|
|
372
|
-
- **Tag naming**: Use lowercase with dashes (e.g., \`bug-fix\`, \`phase-2\`). Use \`merge_tags\` to consolidate duplicates (e.g., merge \`phase2\` into \`phase-2\`).
|
|
373
|
-
- **\`merge_tags\` behavior**: Only updates non-deleted entries. Deleted entries retain their original tags.
|
|
374
|
-
- **\`prStatus\` in entries**: Reflects PR state at entry creation time, not current state. Use \`get_github_pr\` for live status.
|
|
375
|
-
- **\`restore_backup\` behavior**: Restores entire database state. Any recent changes (new entries, tag merges via \`merge_tags\`, relationships) are reverted. A pre-restore backup is automatically created for safety.
|
|
376
|
-
|
|
377
|
-
## Semantic Search
|
|
378
|
-
|
|
379
|
-
- **Indexing**: Entries are auto-indexed on creation (fire-and-forget). If index count drifts from DB count, use \`rebuild_vector_index\` or enable \`AUTO_REBUILD_INDEX=true\` for automatic reconciliation on server startup.
|
|
380
|
-
- **Thresholds**: Default similarity threshold is 0.25. For broader matches, try 0.15-0.2. Higher values (0.4+) return only very close semantic matches. A quality floor of 0.5 is always enforced: if all results score below 0.5, a hint is included indicating results may be noise. The \`hint_on_empty\` flag (default true) only controls advisory hints for empty indexes and zero-match queries — the quality gate hint is always shown.
|
|
381
|
-
|
|
382
|
-
## Search
|
|
383
|
-
|
|
384
|
-
- **\`search_entries\` FTS5 query syntax**: Uses FTS5 full-text search with Porter stemmer. Phrase queries: \`"error handling"\`. Prefix: \`auth*\`. Boolean: \`deploy OR release\`, \`error NOT warning\`. Word-boundary matching ("log" matches "log" but not "catalog"). Results ranked by BM25 relevance. Falls back to LIKE substring matching for queries with unbalanced quotes or special characters.
|
|
385
|
-
|
|
386
|
-
## Relationships & Analytics
|
|
387
|
-
|
|
388
|
-
- **Causal relationship types**: Use \`blocked_by\` (A was blocked by B), \`resolved\` (A resolved B), \`caused\` (A caused B) for decision tracing and failure analysis. Visualizations use distinct arrow styles for causal types.
|
|
389
|
-
- **Enhanced analytics**: \`get_statistics\` returns \`decisionDensity\` (significant entries per period), \`relationshipComplexity\` (avg relationships per entry), \`activityTrend\` (period-over-period growth %), and \`causalMetrics\` (counts for blocked_by/resolved/caused).
|
|
390
|
-
- **Importance scores**: \`get_entry_by_id\` returns \`importance\` (0.0-1.0) and \`importanceBreakdown\` showing weighted components: significance (30%), relationships (35%), causal (20%), recency (15%). \`memory://significant\` sorts entries by importance.
|
|
391
|
-
- **\`inactiveThresholdDays\`**: \`get_cross_project_insights\` includes \`inactiveThresholdDays: 7\` in output, documenting the inactive project classification cutoff.
|
|
392
|
-
|
|
393
|
-
## GitHub Metadata
|
|
394
|
-
|
|
395
|
-
- **GitHub metadata in entries**: Entry output includes 10 GitHub fields (\`issueNumber\`, \`issueUrl\`, \`prNumber\`, \`prUrl\`, \`prStatus\`, \`projectNumber\`, \`projectOwner\`, \`workflowRunId\`, \`workflowName\`, \`workflowStatus\`) in all tool responses.
|
|
396
|
-
|
|
397
|
-
## Entry Operations
|
|
398
|
-
|
|
399
|
-
- **\`delete_entry\` on soft-deleted**: \`delete_entry(id, permanent: true)\` works on previously soft-deleted entries. Returns \`success: false\` for nonexistent entries.
|
|
400
|
-
|
|
401
|
-
## Team Database
|
|
402
|
-
|
|
403
|
-
- **Team cross-database search**: \`search_entries\` and \`search_by_date_range\` automatically merge team DB results when \`TEAM_DB_PATH\` is configured. Results include a \`source\` field ("personal" or "team").
|
|
404
|
-
- **Team vector search**: Team has its own isolated vector index. Use \`team_rebuild_vector_index\` if the team index drifts. \`team_semantic_search\` works identically to personal \`semantic_search\`.
|
|
405
|
-
- **Team tools without \`TEAM_DB_PATH\`**: All 20 team tools return \`{ success: false, error: "Team collaboration is not configured..." }\` — no crash, no partial results.
|
|
406
|
-
`
|
|
407
|
-
|
|
408
|
-
/**
|
|
409
|
-
* Generate dynamic instructions based on enabled tools, resources, prompts, and latest entry.
|
|
410
|
-
*
|
|
411
|
-
* Sections are conditionally included based on which tool groups are enabled:
|
|
412
|
-
* - Copilot Review Patterns → only with `github` group
|
|
413
|
-
* - Code Mode → only with `codemode` group (namespace table only lists enabled groups)
|
|
414
|
-
* - GitHub Integration → only with `github` group (standard+ level)
|
|
415
|
-
* - Quick Access semantic_search row → only with `search` group
|
|
416
|
-
*
|
|
417
|
-
* @param enabledTools - Set of enabled tool names
|
|
418
|
-
* @param prompts - Available prompt definitions
|
|
419
|
-
* @param latestEntry - Optional latest entry for context snapshot
|
|
420
|
-
* @param level - Instruction detail level (default: 'standard')
|
|
421
|
-
* @param enabledGroups - Optional pre-computed enabled groups; derived from enabledTools if omitted
|
|
422
|
-
*/
|
|
423
|
-
export function generateInstructions(
|
|
424
|
-
enabledTools: Set<string>,
|
|
425
|
-
prompts: PromptDefinition[],
|
|
426
|
-
latestEntry?: LatestEntrySnapshot,
|
|
427
|
-
level: InstructionLevel = 'standard',
|
|
428
|
-
enabledGroups?: Set<ToolGroup>
|
|
429
|
-
): string {
|
|
430
|
-
// Derive enabled groups from enabled tools if not provided (backward compat)
|
|
431
|
-
const groups = enabledGroups ?? getEnabledGroups(enabledTools)
|
|
432
|
-
|
|
433
|
-
// Always start with core behavioral guidance
|
|
434
|
-
let instructions = CORE_INSTRUCTIONS
|
|
435
|
-
|
|
436
|
-
// Copilot Review Patterns — only when github group is enabled
|
|
437
|
-
if (groups.has('github')) {
|
|
438
|
-
instructions += COPILOT_REVIEW_INSTRUCTIONS
|
|
439
|
-
}
|
|
440
|
-
|
|
441
|
-
// Quick Access — always, but semantic_search row conditional on search group
|
|
442
|
-
instructions += buildQuickAccess(groups)
|
|
443
|
-
|
|
444
|
-
// Code Mode — only when codemode group is enabled
|
|
445
|
-
if (groups.has('codemode')) {
|
|
446
|
-
instructions += buildCodeModeInstructions(groups)
|
|
447
|
-
}
|
|
448
|
-
|
|
449
|
-
// Add latest entry snapshot for immediate context (compact format)
|
|
450
|
-
if (latestEntry) {
|
|
451
|
-
const preview = latestEntry.content.slice(0, 120)
|
|
452
|
-
instructions += `\n**Latest**: #${String(latestEntry.id)} (${latestEntry.timestamp}) ${latestEntry.entryType}\n> ${preview}${latestEntry.content.length > 120 ? '...' : ''}\n`
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
// Standard and full levels include GitHub patterns + help pointers
|
|
456
|
-
if (level === 'standard' || level === 'full') {
|
|
457
|
-
if (groups.has('github')) {
|
|
458
|
-
instructions += GITHUB_INSTRUCTIONS
|
|
459
|
-
}
|
|
460
|
-
instructions += HELP_POINTERS
|
|
461
|
-
}
|
|
462
|
-
|
|
463
|
-
// Full level includes server access instructions + active tools/prompts summary
|
|
464
|
-
if (level === 'full') {
|
|
465
|
-
instructions += SERVER_ACCESS_INSTRUCTIONS
|
|
466
|
-
|
|
467
|
-
// Add active tools summary
|
|
468
|
-
const activeGroups = getActiveToolGroups(enabledTools)
|
|
469
|
-
if (activeGroups.length > 0) {
|
|
470
|
-
instructions += `\n## Active Tools (${String(enabledTools.size)})\n`
|
|
471
|
-
for (const { group, tools } of activeGroups) {
|
|
472
|
-
instructions += `**${group}**: ${tools.map((t) => `\`${t}\``).join(', ')}\n`
|
|
473
|
-
}
|
|
474
|
-
}
|
|
475
|
-
|
|
476
|
-
// Add prompts section
|
|
477
|
-
if (prompts.length > 0) {
|
|
478
|
-
instructions += `\n## Prompts (${String(prompts.length)})\n`
|
|
479
|
-
instructions += 'Pre-built templates and guided workflows:\n'
|
|
480
|
-
for (const prompt of prompts) {
|
|
481
|
-
instructions += `- \`${prompt.name}\` - ${prompt.description ?? ''}\n`
|
|
482
|
-
}
|
|
483
|
-
}
|
|
484
|
-
}
|
|
485
|
-
|
|
486
|
-
return instructions
|
|
487
|
-
}
|
|
488
|
-
|
|
489
|
-
/**
|
|
490
|
-
* Get active tool groups with their enabled tools
|
|
491
|
-
*/
|
|
492
|
-
function getActiveToolGroups(enabledTools: Set<string>): { group: ToolGroup; tools: string[] }[] {
|
|
493
|
-
const activeGroups: { group: ToolGroup; tools: string[] }[] = []
|
|
494
|
-
|
|
495
|
-
for (const [group, allTools] of Object.entries(TOOL_GROUPS) as [ToolGroup, string[]][]) {
|
|
496
|
-
const enabledInGroup = allTools.filter((tool) => enabledTools.has(tool))
|
|
497
|
-
if (enabledInGroup.length > 0) {
|
|
498
|
-
activeGroups.push({ group, tools: enabledInGroup })
|
|
499
|
-
}
|
|
500
|
-
}
|
|
501
|
-
|
|
502
|
-
return activeGroups
|
|
503
|
-
}
|
|
504
|
-
|
|
505
|
-
/**
|
|
506
|
-
* Static instructions for backward compatibility
|
|
507
|
-
* @deprecated Use generateInstructions() instead for dynamic content
|
|
508
|
-
*/
|
|
509
|
-
export const SERVER_INSTRUCTIONS =
|
|
510
|
-
CORE_INSTRUCTIONS +
|
|
511
|
-
COPILOT_REVIEW_INSTRUCTIONS +
|
|
512
|
-
buildQuickAccess(new Set(Object.keys(TOOL_GROUPS) as ToolGroup[])) +
|
|
513
|
-
buildCodeModeInstructions(new Set(Object.keys(TOOL_GROUPS) as ToolGroup[])) +
|
|
514
|
-
GITHUB_INSTRUCTIONS
|
|
@@ -1,16 +0,0 @@
|
|
|
1
|
-
import type { IDatabaseAdapter } from './core/interfaces.js'
|
|
2
|
-
import { DatabaseAdapter } from './sqlite-adapter/index.js'
|
|
3
|
-
import { logger } from '../utils/logger.js'
|
|
4
|
-
|
|
5
|
-
export const DatabaseAdapterFactory = {
|
|
6
|
-
/**
|
|
7
|
-
* Creates and returns the SQLite database adapter
|
|
8
|
-
*/
|
|
9
|
-
create(dbPath: string): Promise<IDatabaseAdapter> {
|
|
10
|
-
logger.info('Initializing SQLite database backend', {
|
|
11
|
-
module: 'DatabaseAdapterFactory',
|
|
12
|
-
dbPath,
|
|
13
|
-
})
|
|
14
|
-
return Promise.resolve(new DatabaseAdapter(dbPath))
|
|
15
|
-
},
|
|
16
|
-
}
|
|
@@ -1,10 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Centralized SQL entry column list for raw queries outside the database adapter.
|
|
3
|
-
*
|
|
4
|
-
* Handlers and resources that run their own SELECT queries against `memory_journal`
|
|
5
|
-
* should import this constant instead of maintaining local copies.
|
|
6
|
-
*/
|
|
7
|
-
export const RAW_ENTRY_COLUMNS =
|
|
8
|
-
'id, entry_type, content, timestamp, is_personal, significance_type, auto_context, deleted_at, ' +
|
|
9
|
-
'project_number, project_owner, issue_number, issue_url, pr_number, pr_url, pr_status, ' +
|
|
10
|
-
'workflow_run_id, workflow_name, workflow_status'
|