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,222 +0,0 @@
|
|
|
1
|
-
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'
|
|
2
|
-
import { isInitializeRequest } from '@modelcontextprotocol/sdk/types.js'
|
|
3
|
-
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
|
|
4
|
-
import { randomUUID } from 'node:crypto'
|
|
5
|
-
import type { Request, Response, Express } from 'express'
|
|
6
|
-
import type { IncomingMessage, ServerResponse } from 'node:http'
|
|
7
|
-
import { logger } from '../../../utils/logger.js'
|
|
8
|
-
import {
|
|
9
|
-
SESSION_TIMEOUT_MS,
|
|
10
|
-
SESSION_SWEEP_INTERVAL_MS,
|
|
11
|
-
JSONRPC_SERVER_ERROR,
|
|
12
|
-
JSONRPC_INTERNAL_ERROR,
|
|
13
|
-
} from '../types.js'
|
|
14
|
-
import type { SSEServerTransport } from '@modelcontextprotocol/sdk/server/sse.js'
|
|
15
|
-
|
|
16
|
-
export interface StatefulContext {
|
|
17
|
-
transports: Map<string, StreamableHTTPServerTransport>
|
|
18
|
-
// eslint-disable-next-line @typescript-eslint/no-deprecated -- backward compat
|
|
19
|
-
sseTransports: Map<string, SSEServerTransport>
|
|
20
|
-
sessionLastActivity: Map<string, number>
|
|
21
|
-
touchSession: (sid: string) => void
|
|
22
|
-
/** Tracks whether server.connect() has been called (close-before-reconnect pattern) */
|
|
23
|
-
serverConnected: boolean
|
|
24
|
-
}
|
|
25
|
-
|
|
26
|
-
export function setupStateful(
|
|
27
|
-
ctx: StatefulContext,
|
|
28
|
-
app: Express,
|
|
29
|
-
server: McpServer
|
|
30
|
-
): ReturnType<typeof setInterval> {
|
|
31
|
-
const sessionSweepTimer = setInterval(() => {
|
|
32
|
-
const now = Date.now()
|
|
33
|
-
for (const [sid, lastActivity] of ctx.sessionLastActivity) {
|
|
34
|
-
const idleMs = now - lastActivity
|
|
35
|
-
if (idleMs <= SESSION_TIMEOUT_MS) continue
|
|
36
|
-
|
|
37
|
-
// Expire idle Streamable HTTP sessions
|
|
38
|
-
if (ctx.transports.has(sid)) {
|
|
39
|
-
logger.info('Expiring idle HTTP session', {
|
|
40
|
-
module: 'HTTP',
|
|
41
|
-
sessionId: sid,
|
|
42
|
-
idleMinutes: Math.round(idleMs / 60_000),
|
|
43
|
-
})
|
|
44
|
-
const t = ctx.transports.get(sid)
|
|
45
|
-
if (t) {
|
|
46
|
-
void t.close()
|
|
47
|
-
}
|
|
48
|
-
ctx.transports.delete(sid)
|
|
49
|
-
ctx.sessionLastActivity.delete(sid)
|
|
50
|
-
}
|
|
51
|
-
|
|
52
|
-
// Expire idle Legacy SSE sessions
|
|
53
|
-
if (ctx.sseTransports.has(sid)) {
|
|
54
|
-
logger.info('Expiring idle SSE session', {
|
|
55
|
-
module: 'HTTP',
|
|
56
|
-
sessionId: sid,
|
|
57
|
-
idleMinutes: Math.round(idleMs / 60_000),
|
|
58
|
-
})
|
|
59
|
-
const t = ctx.sseTransports.get(sid)
|
|
60
|
-
if (t) {
|
|
61
|
-
void t.close()
|
|
62
|
-
}
|
|
63
|
-
ctx.sseTransports.delete(sid)
|
|
64
|
-
ctx.sessionLastActivity.delete(sid)
|
|
65
|
-
}
|
|
66
|
-
}
|
|
67
|
-
}, SESSION_SWEEP_INTERVAL_MS)
|
|
68
|
-
sessionSweepTimer.unref()
|
|
69
|
-
|
|
70
|
-
// POST /mcp — Handle JSON-RPC requests
|
|
71
|
-
app.post('/mcp', (req: Request, res: Response): void => {
|
|
72
|
-
const sessionId = req.headers['mcp-session-id'] as string | undefined
|
|
73
|
-
|
|
74
|
-
void (async () => {
|
|
75
|
-
try {
|
|
76
|
-
let httpTransport: StreamableHTTPServerTransport | undefined
|
|
77
|
-
|
|
78
|
-
if (sessionId !== undefined && ctx.transports.has(sessionId)) {
|
|
79
|
-
// Cross-protocol guard: reject SSE session IDs on /mcp
|
|
80
|
-
if (ctx.sseTransports.has(sessionId)) {
|
|
81
|
-
res.status(400).json({
|
|
82
|
-
jsonrpc: '2.0',
|
|
83
|
-
error: {
|
|
84
|
-
code: JSONRPC_SERVER_ERROR,
|
|
85
|
-
message:
|
|
86
|
-
'Bad Request: Session uses Legacy SSE transport, not Streamable HTTP',
|
|
87
|
-
},
|
|
88
|
-
id: null,
|
|
89
|
-
})
|
|
90
|
-
return
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
// Reuse existing transport and refresh session activity
|
|
94
|
-
ctx.touchSession(sessionId)
|
|
95
|
-
httpTransport = ctx.transports.get(sessionId)
|
|
96
|
-
} else if (sessionId === undefined && isInitializeRequest(req.body)) {
|
|
97
|
-
// New initialization request — create transport
|
|
98
|
-
const newTransport = new StreamableHTTPServerTransport({
|
|
99
|
-
sessionIdGenerator: () => randomUUID(),
|
|
100
|
-
onsessioninitialized: (sid: string) => {
|
|
101
|
-
logger.info('HTTP session initialized', {
|
|
102
|
-
module: 'HTTP',
|
|
103
|
-
sessionId: sid,
|
|
104
|
-
})
|
|
105
|
-
ctx.transports.set(sid, newTransport)
|
|
106
|
-
ctx.touchSession(sid)
|
|
107
|
-
},
|
|
108
|
-
})
|
|
109
|
-
|
|
110
|
-
// Clean up on transport close
|
|
111
|
-
newTransport.onclose = () => {
|
|
112
|
-
const sid = newTransport.sessionId
|
|
113
|
-
if (sid !== undefined && ctx.transports.has(sid)) {
|
|
114
|
-
logger.info('HTTP transport closed', {
|
|
115
|
-
module: 'HTTP',
|
|
116
|
-
sessionId: sid,
|
|
117
|
-
})
|
|
118
|
-
ctx.transports.delete(sid)
|
|
119
|
-
ctx.sessionLastActivity.delete(sid)
|
|
120
|
-
}
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
// Connect transport to server
|
|
124
|
-
// SDK requires close() before reconnecting to a new transport.
|
|
125
|
-
// This cleanly supports sequential sessions; concurrent sessions
|
|
126
|
-
// are an SDK limitation (only one transport at a time).
|
|
127
|
-
if (ctx.serverConnected) {
|
|
128
|
-
await server.close()
|
|
129
|
-
}
|
|
130
|
-
await server.connect(newTransport)
|
|
131
|
-
ctx.serverConnected = true
|
|
132
|
-
await newTransport.handleRequest(
|
|
133
|
-
req as IncomingMessage,
|
|
134
|
-
res as ServerResponse,
|
|
135
|
-
req.body
|
|
136
|
-
)
|
|
137
|
-
return
|
|
138
|
-
} else {
|
|
139
|
-
// Invalid request — no session ID or not initialization
|
|
140
|
-
res.status(400).json({
|
|
141
|
-
jsonrpc: '2.0',
|
|
142
|
-
error: {
|
|
143
|
-
code: JSONRPC_SERVER_ERROR,
|
|
144
|
-
message: 'Bad Request: No valid session ID provided',
|
|
145
|
-
},
|
|
146
|
-
id: null,
|
|
147
|
-
})
|
|
148
|
-
return
|
|
149
|
-
}
|
|
150
|
-
|
|
151
|
-
// Handle request with existing transport
|
|
152
|
-
if (httpTransport !== undefined) {
|
|
153
|
-
await httpTransport.handleRequest(
|
|
154
|
-
req as IncomingMessage,
|
|
155
|
-
res as ServerResponse,
|
|
156
|
-
req.body
|
|
157
|
-
)
|
|
158
|
-
}
|
|
159
|
-
} catch (error) {
|
|
160
|
-
logger.error('Error handling MCP request', {
|
|
161
|
-
module: 'HTTP',
|
|
162
|
-
error: error instanceof Error ? error.message : String(error),
|
|
163
|
-
})
|
|
164
|
-
if (!res.headersSent) {
|
|
165
|
-
res.status(500).json({
|
|
166
|
-
jsonrpc: '2.0',
|
|
167
|
-
error: { code: JSONRPC_INTERNAL_ERROR, message: 'Internal server error' },
|
|
168
|
-
id: null,
|
|
169
|
-
})
|
|
170
|
-
}
|
|
171
|
-
}
|
|
172
|
-
})()
|
|
173
|
-
})
|
|
174
|
-
|
|
175
|
-
// GET /mcp — SSE stream for server-to-client notifications
|
|
176
|
-
app.get('/mcp', (req: Request, res: Response): void => {
|
|
177
|
-
const sessionId = req.headers['mcp-session-id'] as string | undefined
|
|
178
|
-
|
|
179
|
-
if (sessionId === undefined || !ctx.transports.has(sessionId)) {
|
|
180
|
-
res.status(400).send('Invalid or missing session ID')
|
|
181
|
-
return
|
|
182
|
-
}
|
|
183
|
-
|
|
184
|
-
// Refresh session activity on SSE reconnect
|
|
185
|
-
ctx.touchSession(sessionId)
|
|
186
|
-
|
|
187
|
-
const lastEventId = req.headers['last-event-id']
|
|
188
|
-
if (lastEventId !== undefined) {
|
|
189
|
-
logger.debug('Client reconnecting with Last-Event-ID', {
|
|
190
|
-
module: 'HTTP',
|
|
191
|
-
sessionId,
|
|
192
|
-
lastEventId,
|
|
193
|
-
})
|
|
194
|
-
}
|
|
195
|
-
|
|
196
|
-
const httpTransport = ctx.transports.get(sessionId)
|
|
197
|
-
if (httpTransport !== undefined) {
|
|
198
|
-
void httpTransport.handleRequest(req as IncomingMessage, res as ServerResponse)
|
|
199
|
-
}
|
|
200
|
-
})
|
|
201
|
-
|
|
202
|
-
// DELETE /mcp — Session termination
|
|
203
|
-
app.delete('/mcp', (req: Request, res: Response): void => {
|
|
204
|
-
const sessionId = req.headers['mcp-session-id'] as string | undefined
|
|
205
|
-
|
|
206
|
-
if (sessionId === undefined || !ctx.transports.has(sessionId)) {
|
|
207
|
-
res.status(400).send('Invalid or missing session ID')
|
|
208
|
-
return
|
|
209
|
-
}
|
|
210
|
-
|
|
211
|
-
logger.info('Session termination requested', {
|
|
212
|
-
module: 'HTTP',
|
|
213
|
-
sessionId,
|
|
214
|
-
})
|
|
215
|
-
|
|
216
|
-
const httpTransport = ctx.transports.get(sessionId)
|
|
217
|
-
if (httpTransport !== undefined) {
|
|
218
|
-
void httpTransport.handleRequest(req as IncomingMessage, res as ServerResponse)
|
|
219
|
-
}
|
|
220
|
-
})
|
|
221
|
-
return sessionSweepTimer
|
|
222
|
-
}
|
|
@@ -1,42 +0,0 @@
|
|
|
1
|
-
import { StreamableHTTPServerTransport } from '@modelcontextprotocol/sdk/server/streamableHttp.js'
|
|
2
|
-
import type { McpServer } from '@modelcontextprotocol/sdk/server/mcp.js'
|
|
3
|
-
import type { Request, Response, Express } from 'express'
|
|
4
|
-
import type { IncomingMessage, ServerResponse } from 'node:http'
|
|
5
|
-
import { logger } from '../../../utils/logger.js'
|
|
6
|
-
import { JSONRPC_SERVER_ERROR } from '../types.js'
|
|
7
|
-
|
|
8
|
-
export async function setupStateless(app: Express, server: McpServer): Promise<void> {
|
|
9
|
-
const statelessTransport = new StreamableHTTPServerTransport({
|
|
10
|
-
sessionIdGenerator: undefined,
|
|
11
|
-
enableJsonResponse: true,
|
|
12
|
-
})
|
|
13
|
-
|
|
14
|
-
await server.connect(statelessTransport)
|
|
15
|
-
logger.info('Stateless transport connected', { module: 'HTTP' })
|
|
16
|
-
|
|
17
|
-
// POST /mcp — all requests go to the same transport
|
|
18
|
-
app.post('/mcp', (req: Request, res: Response): void => {
|
|
19
|
-
void statelessTransport.handleRequest(
|
|
20
|
-
req as IncomingMessage,
|
|
21
|
-
res as ServerResponse,
|
|
22
|
-
req.body
|
|
23
|
-
)
|
|
24
|
-
})
|
|
25
|
-
|
|
26
|
-
// GET /mcp — SSE not available in stateless mode
|
|
27
|
-
app.get('/mcp', (_req: Request, res: Response): void => {
|
|
28
|
-
res.status(405).json({
|
|
29
|
-
jsonrpc: '2.0',
|
|
30
|
-
error: {
|
|
31
|
-
code: JSONRPC_SERVER_ERROR,
|
|
32
|
-
message: 'SSE streaming not available in stateless mode',
|
|
33
|
-
},
|
|
34
|
-
id: null,
|
|
35
|
-
})
|
|
36
|
-
})
|
|
37
|
-
|
|
38
|
-
// DELETE /mcp — no-op in stateless mode
|
|
39
|
-
app.delete('/mcp', (_req: Request, res: Response): void => {
|
|
40
|
-
res.status(204).end()
|
|
41
|
-
})
|
|
42
|
-
}
|
|
@@ -1,132 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* memory-journal-mcp — HTTP Transport Types
|
|
3
|
-
*
|
|
4
|
-
* Shared interfaces and constants for the HTTP transport module.
|
|
5
|
-
*/
|
|
6
|
-
|
|
7
|
-
// =============================================================================
|
|
8
|
-
// Server Timeout Constants
|
|
9
|
-
// =============================================================================
|
|
10
|
-
|
|
11
|
-
/** HTTP request timeout (ms) — prevents slowloris-style DoS */
|
|
12
|
-
export const HTTP_REQUEST_TIMEOUT_MS = 120_000
|
|
13
|
-
|
|
14
|
-
/** Keep-alive timeout (ms) — slightly above common LB idle timeout */
|
|
15
|
-
export const HTTP_KEEP_ALIVE_TIMEOUT_MS = 65_000
|
|
16
|
-
|
|
17
|
-
/** Headers timeout (ms) — must be > keepAliveTimeout per Node.js docs */
|
|
18
|
-
export const HTTP_HEADERS_TIMEOUT_MS = 66_000
|
|
19
|
-
|
|
20
|
-
// =============================================================================
|
|
21
|
-
// Rate Limiting Constants
|
|
22
|
-
// =============================================================================
|
|
23
|
-
|
|
24
|
-
export const DEFAULT_RATE_LIMIT_WINDOW_MS = 60_000
|
|
25
|
-
export const DEFAULT_RATE_LIMIT_MAX_REQUESTS = 100
|
|
26
|
-
export const DEFAULT_MAX_BODY_BYTES = 1_048_576 // 1 MB
|
|
27
|
-
export const DEFAULT_HSTS_MAX_AGE = 31_536_000 // 1 year
|
|
28
|
-
|
|
29
|
-
/** CORS preflight cache duration (seconds) — browsers cache OPTIONS responses for 24h */
|
|
30
|
-
export const CORS_PREFLIGHT_MAX_AGE_SECONDS = 86_400
|
|
31
|
-
|
|
32
|
-
// =============================================================================
|
|
33
|
-
// JSON-RPC Error Codes
|
|
34
|
-
// =============================================================================
|
|
35
|
-
|
|
36
|
-
/** JSON-RPC server error (protocol-level, not application errors) */
|
|
37
|
-
export const JSONRPC_SERVER_ERROR = -32000
|
|
38
|
-
|
|
39
|
-
/** JSON-RPC internal error */
|
|
40
|
-
export const JSONRPC_INTERNAL_ERROR = -32603
|
|
41
|
-
|
|
42
|
-
/** Session timeout for stateful HTTP mode (30 minutes) */
|
|
43
|
-
export const SESSION_TIMEOUT_MS = 30 * 60 * 1000
|
|
44
|
-
|
|
45
|
-
/** Session timeout sweep interval (5 minutes) */
|
|
46
|
-
export const SESSION_SWEEP_INTERVAL_MS = 5 * 60 * 1000
|
|
47
|
-
|
|
48
|
-
// =============================================================================
|
|
49
|
-
// Rate Limiting
|
|
50
|
-
// =============================================================================
|
|
51
|
-
|
|
52
|
-
export interface RateLimitEntry {
|
|
53
|
-
count: number
|
|
54
|
-
resetTime: number
|
|
55
|
-
}
|
|
56
|
-
|
|
57
|
-
// =============================================================================
|
|
58
|
-
// Configuration
|
|
59
|
-
// =============================================================================
|
|
60
|
-
|
|
61
|
-
/**
|
|
62
|
-
* HTTP transport configuration
|
|
63
|
-
*/
|
|
64
|
-
export interface HttpTransportConfig {
|
|
65
|
-
/** Port to listen on */
|
|
66
|
-
port: number
|
|
67
|
-
|
|
68
|
-
/** Host to bind to (default: localhost) */
|
|
69
|
-
host: string
|
|
70
|
-
|
|
71
|
-
/** Enable stateless HTTP mode (default: false) */
|
|
72
|
-
stateless: boolean
|
|
73
|
-
|
|
74
|
-
/** Bearer token for authentication (optional) */
|
|
75
|
-
authToken?: string
|
|
76
|
-
|
|
77
|
-
/**
|
|
78
|
-
* Allowed CORS origins. Defaults to ["*"] (all origins).
|
|
79
|
-
* Supports wildcard subdomains (e.g., "*.example.com" matches "app.example.com").
|
|
80
|
-
*/
|
|
81
|
-
corsOrigins?: string[]
|
|
82
|
-
|
|
83
|
-
/** Allow credentials in CORS requests (default: false) */
|
|
84
|
-
corsAllowCredentials?: boolean
|
|
85
|
-
|
|
86
|
-
/**
|
|
87
|
-
* Trust proxy headers for client IP extraction (default: false).
|
|
88
|
-
* When enabled, uses the leftmost IP from X-Forwarded-For for rate limiting.
|
|
89
|
-
* Only enable when running behind a trusted reverse proxy.
|
|
90
|
-
*/
|
|
91
|
-
trustProxy?: boolean
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Enable HTTP Strict Transport Security header (default: false).
|
|
95
|
-
* Should only be enabled when running behind HTTPS.
|
|
96
|
-
*/
|
|
97
|
-
enableHSTS?: boolean
|
|
98
|
-
|
|
99
|
-
/** HSTS max-age in seconds (default: 31536000 = 1 year) */
|
|
100
|
-
hstsMaxAge?: number
|
|
101
|
-
|
|
102
|
-
/** Enable rate limiting (default: true) */
|
|
103
|
-
enableRateLimit?: boolean
|
|
104
|
-
|
|
105
|
-
/** Rate limit window in milliseconds (default: 60000 = 1 minute) */
|
|
106
|
-
rateLimitWindowMs?: number
|
|
107
|
-
|
|
108
|
-
/** Maximum requests per window per IP (default: 100) */
|
|
109
|
-
rateLimitMaxRequests?: number
|
|
110
|
-
|
|
111
|
-
/** Maximum request body size in bytes (default: 1MB) */
|
|
112
|
-
maxBodySize?: number
|
|
113
|
-
|
|
114
|
-
// =================
|
|
115
|
-
// OAuth 2.1 Config
|
|
116
|
-
// =================
|
|
117
|
-
|
|
118
|
-
/** Enable OAuth 2.1 authentication (default: false) */
|
|
119
|
-
oauthEnabled?: boolean
|
|
120
|
-
|
|
121
|
-
/** OAuth issuer URL (authorization server) */
|
|
122
|
-
oauthIssuer?: string
|
|
123
|
-
|
|
124
|
-
/** Expected OAuth audience (client ID) */
|
|
125
|
-
oauthAudience?: string
|
|
126
|
-
|
|
127
|
-
/** JWKS URI for key discovery (auto-discovered if not set) */
|
|
128
|
-
oauthJwksUri?: string
|
|
129
|
-
|
|
130
|
-
/** Clock tolerance in seconds for token validation (default: 60) */
|
|
131
|
-
oauthClockTolerance?: number
|
|
132
|
-
}
|
package/src/types/entities.ts
DELETED
|
@@ -1,145 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Memory Journal MCP Server - Database Entity Types
|
|
3
|
-
*/
|
|
4
|
-
|
|
5
|
-
/**
|
|
6
|
-
* Entry types for journal entries
|
|
7
|
-
*/
|
|
8
|
-
export type EntryType =
|
|
9
|
-
| 'personal_reflection'
|
|
10
|
-
| 'project_decision'
|
|
11
|
-
| 'technical_achievement'
|
|
12
|
-
| 'bug_fix'
|
|
13
|
-
| 'feature_implementation'
|
|
14
|
-
| 'code_review'
|
|
15
|
-
| 'meeting_notes'
|
|
16
|
-
| 'learning'
|
|
17
|
-
| 'research'
|
|
18
|
-
| 'planning'
|
|
19
|
-
| 'retrospective'
|
|
20
|
-
| 'standup'
|
|
21
|
-
| 'technical_note'
|
|
22
|
-
| 'development_note'
|
|
23
|
-
| 'enhancement'
|
|
24
|
-
| 'milestone'
|
|
25
|
-
| 'system_integration_test'
|
|
26
|
-
| 'test_entry'
|
|
27
|
-
| 'other'
|
|
28
|
-
|
|
29
|
-
/**
|
|
30
|
-
* Significance types for important entries
|
|
31
|
-
*/
|
|
32
|
-
export type SignificanceType =
|
|
33
|
-
| 'milestone'
|
|
34
|
-
| 'breakthrough'
|
|
35
|
-
| 'technical_breakthrough'
|
|
36
|
-
| 'decision'
|
|
37
|
-
| 'lesson_learned'
|
|
38
|
-
| 'blocker_resolved'
|
|
39
|
-
| 'release'
|
|
40
|
-
| null
|
|
41
|
-
|
|
42
|
-
/**
|
|
43
|
-
* Relationship types between entries
|
|
44
|
-
*
|
|
45
|
-
* Standard types:
|
|
46
|
-
* - evolves_from: Entry builds upon previous work
|
|
47
|
-
* - references: Entry mentions or links to another
|
|
48
|
-
* - implements: Entry implements a spec/design
|
|
49
|
-
* - clarifies: Entry explains or clarifies another
|
|
50
|
-
* - response_to: Entry responds to a question/issue
|
|
51
|
-
*
|
|
52
|
-
* Causal types (for decision tracing):
|
|
53
|
-
* - blocked_by: Entry was blocked by another (e.g., blocker → resolution)
|
|
54
|
-
* - resolved: Entry resolved/fixed an issue from another
|
|
55
|
-
* - caused: Entry caused or led to another outcome
|
|
56
|
-
*/
|
|
57
|
-
export type RelationshipType =
|
|
58
|
-
| 'evolves_from'
|
|
59
|
-
| 'references'
|
|
60
|
-
| 'implements'
|
|
61
|
-
| 'clarifies'
|
|
62
|
-
| 'response_to'
|
|
63
|
-
| 'blocked_by'
|
|
64
|
-
| 'resolved'
|
|
65
|
-
| 'caused'
|
|
66
|
-
|
|
67
|
-
/**
|
|
68
|
-
* Journal entry entity
|
|
69
|
-
*/
|
|
70
|
-
export interface JournalEntry {
|
|
71
|
-
id: number
|
|
72
|
-
entryType: EntryType
|
|
73
|
-
content: string
|
|
74
|
-
timestamp: string
|
|
75
|
-
isPersonal: boolean
|
|
76
|
-
significanceType: SignificanceType
|
|
77
|
-
autoContext: string | null
|
|
78
|
-
deletedAt: string | null
|
|
79
|
-
tags: string[]
|
|
80
|
-
// GitHub integration fields
|
|
81
|
-
projectNumber?: number | null
|
|
82
|
-
projectOwner?: string | null
|
|
83
|
-
issueNumber?: number | null
|
|
84
|
-
issueUrl?: string | null
|
|
85
|
-
prNumber?: number | null
|
|
86
|
-
prUrl?: string | null
|
|
87
|
-
prStatus?: string | null
|
|
88
|
-
workflowRunId?: number | null
|
|
89
|
-
workflowName?: string | null
|
|
90
|
-
workflowStatus?: string | null
|
|
91
|
-
}
|
|
92
|
-
|
|
93
|
-
/**
|
|
94
|
-
* Tag entity
|
|
95
|
-
*/
|
|
96
|
-
export interface Tag {
|
|
97
|
-
id: number
|
|
98
|
-
name: string
|
|
99
|
-
usageCount: number
|
|
100
|
-
}
|
|
101
|
-
|
|
102
|
-
/**
|
|
103
|
-
* Relationship entity
|
|
104
|
-
*/
|
|
105
|
-
export interface Relationship {
|
|
106
|
-
id: number
|
|
107
|
-
fromEntryId: number
|
|
108
|
-
toEntryId: number
|
|
109
|
-
relationshipType: RelationshipType
|
|
110
|
-
description: string | null
|
|
111
|
-
createdAt: string
|
|
112
|
-
}
|
|
113
|
-
|
|
114
|
-
/**
|
|
115
|
-
* Embedding entity for vector search
|
|
116
|
-
*/
|
|
117
|
-
export interface Embedding {
|
|
118
|
-
entryId: number
|
|
119
|
-
embedding: Float32Array
|
|
120
|
-
modelName: string
|
|
121
|
-
}
|
|
122
|
-
|
|
123
|
-
/**
|
|
124
|
-
* Importance scoring breakdown showing weighted component contributions
|
|
125
|
-
*/
|
|
126
|
-
export interface ImportanceBreakdown {
|
|
127
|
-
/** Significance type contribution (weight: 0.30) */
|
|
128
|
-
significance: number
|
|
129
|
-
/** Relationship count contribution (weight: 0.35) */
|
|
130
|
-
relationships: number
|
|
131
|
-
/** Causal relationship contribution (weight: 0.20) */
|
|
132
|
-
causal: number
|
|
133
|
-
/** Recency decay contribution (weight: 0.15) */
|
|
134
|
-
recency: number
|
|
135
|
-
}
|
|
136
|
-
|
|
137
|
-
/**
|
|
138
|
-
* Importance calculation result with total score and component breakdown
|
|
139
|
-
*/
|
|
140
|
-
export interface ImportanceResult {
|
|
141
|
-
/** Total importance score (0.0-1.0) */
|
|
142
|
-
score: number
|
|
143
|
-
/** Weighted component contributions */
|
|
144
|
-
breakdown: ImportanceBreakdown
|
|
145
|
-
}
|
package/src/types/error-types.ts
DELETED
|
@@ -1,92 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* memory-journal-mcp — Error Type Definitions
|
|
3
|
-
*
|
|
4
|
-
* Standardized error types for the harmonized error handling system
|
|
5
|
-
* across all MCP servers (db-mcp, postgres-mcp, mysql-mcp, memory-journal-mcp).
|
|
6
|
-
*/
|
|
7
|
-
|
|
8
|
-
// =============================================================================
|
|
9
|
-
// Error Category
|
|
10
|
-
// =============================================================================
|
|
11
|
-
|
|
12
|
-
/**
|
|
13
|
-
* Categorization of error types for structured error responses.
|
|
14
|
-
* Enables agents to make programmatic decisions based on error category.
|
|
15
|
-
*/
|
|
16
|
-
export enum ErrorCategory {
|
|
17
|
-
/** Input validation failures (bad params, schema violations) */
|
|
18
|
-
VALIDATION = 'validation',
|
|
19
|
-
|
|
20
|
-
/** Database/service connection failures */
|
|
21
|
-
CONNECTION = 'connection',
|
|
22
|
-
|
|
23
|
-
/** Query/operation execution failures */
|
|
24
|
-
QUERY = 'query',
|
|
25
|
-
|
|
26
|
-
/** Permission denied (insufficient privileges) */
|
|
27
|
-
PERMISSION = 'permission',
|
|
28
|
-
|
|
29
|
-
/** Server/service configuration errors */
|
|
30
|
-
CONFIGURATION = 'configuration',
|
|
31
|
-
|
|
32
|
-
/** Resource not found or unavailable */
|
|
33
|
-
RESOURCE = 'resource',
|
|
34
|
-
|
|
35
|
-
/** Authentication failures (invalid/expired credentials) */
|
|
36
|
-
AUTHENTICATION = 'authentication',
|
|
37
|
-
|
|
38
|
-
/** Authorization failures (valid credentials, insufficient access) */
|
|
39
|
-
AUTHORIZATION = 'authorization',
|
|
40
|
-
|
|
41
|
-
/** Internal/unexpected server errors */
|
|
42
|
-
INTERNAL = 'internal',
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
// =============================================================================
|
|
46
|
-
// Error Response
|
|
47
|
-
// =============================================================================
|
|
48
|
-
|
|
49
|
-
/**
|
|
50
|
-
* Structured error response returned by tools.
|
|
51
|
-
* Provides agents with actionable context for error handling.
|
|
52
|
-
*/
|
|
53
|
-
export interface ErrorResponse {
|
|
54
|
-
/** Always false for error responses */
|
|
55
|
-
success: false
|
|
56
|
-
|
|
57
|
-
/** Human-readable error message */
|
|
58
|
-
error: string
|
|
59
|
-
|
|
60
|
-
/** Module-prefixed error code (e.g., 'AUTH_TOKEN_EXPIRED') */
|
|
61
|
-
code: string
|
|
62
|
-
|
|
63
|
-
/** Error category for programmatic handling */
|
|
64
|
-
category: ErrorCategory
|
|
65
|
-
|
|
66
|
-
/** Actionable suggestion for resolving the error */
|
|
67
|
-
suggestion?: string
|
|
68
|
-
|
|
69
|
-
/** Whether the operation can be retried */
|
|
70
|
-
recoverable: boolean
|
|
71
|
-
|
|
72
|
-
/** Additional structured context */
|
|
73
|
-
details?: Record<string, unknown>
|
|
74
|
-
}
|
|
75
|
-
|
|
76
|
-
// =============================================================================
|
|
77
|
-
// Error Context
|
|
78
|
-
// =============================================================================
|
|
79
|
-
|
|
80
|
-
/**
|
|
81
|
-
* Context information for error reporting and diagnostics.
|
|
82
|
-
*/
|
|
83
|
-
export interface ErrorContext {
|
|
84
|
-
/** The operation that failed */
|
|
85
|
-
operation?: string
|
|
86
|
-
|
|
87
|
-
/** Entity identifier involved */
|
|
88
|
-
entityId?: string | number
|
|
89
|
-
|
|
90
|
-
/** Additional context key-value pairs */
|
|
91
|
-
[key: string]: unknown
|
|
92
|
-
}
|