@maadb/core 0.0.1 → 0.7.10-rc.3
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/LICENSE +21 -0
- package/README.md +371 -3
- package/dist/architect.d.ts +2 -0
- package/dist/architect.d.ts.map +1 -0
- package/dist/architect.js +273 -0
- package/dist/architect.js.map +1 -0
- package/dist/auth/resolve.d.ts +36 -0
- package/dist/auth/resolve.d.ts.map +1 -0
- package/dist/auth/resolve.js +77 -0
- package/dist/auth/resolve.js.map +1 -0
- package/dist/auth/token-store.d.ts +82 -0
- package/dist/auth/token-store.d.ts.map +1 -0
- package/dist/auth/token-store.js +464 -0
- package/dist/auth/token-store.js.map +1 -0
- package/dist/auth/types.d.ts +75 -0
- package/dist/auth/types.d.ts.map +1 -0
- package/dist/auth/types.js +15 -0
- package/dist/auth/types.js.map +1 -0
- package/dist/backend/adapter.d.ts +57 -0
- package/dist/backend/adapter.d.ts.map +1 -0
- package/dist/backend/adapter.js +6 -0
- package/dist/backend/adapter.js.map +1 -0
- package/dist/backend/index.d.ts +3 -0
- package/dist/backend/index.d.ts.map +1 -0
- package/dist/backend/index.js +2 -0
- package/dist/backend/index.js.map +1 -0
- package/dist/backend/sqlite/index.d.ts +63 -0
- package/dist/backend/sqlite/index.d.ts.map +1 -0
- package/dist/backend/sqlite/index.js +521 -0
- package/dist/backend/sqlite/index.js.map +1 -0
- package/dist/backend/sqlite/schema.d.ts +2 -0
- package/dist/backend/sqlite/schema.d.ts.map +1 -0
- package/dist/backend/sqlite/schema.js +88 -0
- package/dist/backend/sqlite/schema.js.map +1 -0
- package/dist/claude-md.d.ts +2 -0
- package/dist/claude-md.d.ts.map +1 -0
- package/dist/claude-md.js +97 -0
- package/dist/claude-md.js.map +1 -0
- package/dist/cli/commands/audit.d.ts +4 -0
- package/dist/cli/commands/audit.d.ts.map +1 -0
- package/dist/cli/commands/audit.js +39 -0
- package/dist/cli/commands/audit.js.map +1 -0
- package/dist/cli/commands/auth.d.ts +8 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +242 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/discover.d.ts +5 -0
- package/dist/cli/commands/discover.d.ts.map +1 -0
- package/dist/cli/commands/discover.js +48 -0
- package/dist/cli/commands/discover.js.map +1 -0
- package/dist/cli/commands/maintain.d.ts +6 -0
- package/dist/cli/commands/maintain.d.ts.map +1 -0
- package/dist/cli/commands/maintain.js +168 -0
- package/dist/cli/commands/maintain.js.map +1 -0
- package/dist/cli/commands/read.d.ts +7 -0
- package/dist/cli/commands/read.d.ts.map +1 -0
- package/dist/cli/commands/read.js +139 -0
- package/dist/cli/commands/read.js.map +1 -0
- package/dist/cli/commands/write.d.ts +4 -0
- package/dist/cli/commands/write.d.ts.map +1 -0
- package/dist/cli/commands/write.js +99 -0
- package/dist/cli/commands/write.js.map +1 -0
- package/dist/cli/helpers.d.ts +8 -0
- package/dist/cli/helpers.d.ts.map +1 -0
- package/dist/cli/helpers.js +17 -0
- package/dist/cli/helpers.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +296 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli.d.ts +3 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +7 -0
- package/dist/cli.js.map +1 -0
- package/dist/engine/audit.d.ts +15 -0
- package/dist/engine/audit.d.ts.map +1 -0
- package/dist/engine/audit.js +42 -0
- package/dist/engine/audit.js.map +1 -0
- package/dist/engine/backup.d.ts +9 -0
- package/dist/engine/backup.d.ts.map +1 -0
- package/dist/engine/backup.js +100 -0
- package/dist/engine/backup.js.map +1 -0
- package/dist/engine/composites.d.ts +6 -0
- package/dist/engine/composites.d.ts.map +1 -0
- package/dist/engine/composites.js +102 -0
- package/dist/engine/composites.js.map +1 -0
- package/dist/engine/context.d.ts +47 -0
- package/dist/engine/context.d.ts.map +1 -0
- package/dist/engine/context.js +55 -0
- package/dist/engine/context.js.map +1 -0
- package/dist/engine/docid-safe.d.ts +8 -0
- package/dist/engine/docid-safe.d.ts.map +1 -0
- package/dist/engine/docid-safe.js +0 -0
- package/dist/engine/docid-safe.js.map +1 -0
- package/dist/engine/helpers.d.ts +8 -0
- package/dist/engine/helpers.d.ts.map +1 -0
- package/dist/engine/helpers.js +102 -0
- package/dist/engine/helpers.js.map +1 -0
- package/dist/engine/index.d.ts +215 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +494 -0
- package/dist/engine/index.js.map +1 -0
- package/dist/engine/indexing.d.ts +14 -0
- package/dist/engine/indexing.d.ts.map +1 -0
- package/dist/engine/indexing.js +225 -0
- package/dist/engine/indexing.js.map +1 -0
- package/dist/engine/journal.d.ts +32 -0
- package/dist/engine/journal.d.ts.map +1 -0
- package/dist/engine/journal.js +111 -0
- package/dist/engine/journal.js.map +1 -0
- package/dist/engine/logger.d.ts +19 -0
- package/dist/engine/logger.d.ts.map +1 -0
- package/dist/engine/logger.js +40 -0
- package/dist/engine/logger.js.map +1 -0
- package/dist/engine/maintenance.d.ts +15 -0
- package/dist/engine/maintenance.d.ts.map +1 -0
- package/dist/engine/maintenance.js +87 -0
- package/dist/engine/maintenance.js.map +1 -0
- package/dist/engine/mutex.d.ts +24 -0
- package/dist/engine/mutex.d.ts.map +1 -0
- package/dist/engine/mutex.js +50 -0
- package/dist/engine/mutex.js.map +1 -0
- package/dist/engine/pathguard.d.ts +16 -0
- package/dist/engine/pathguard.d.ts.map +1 -0
- package/dist/engine/pathguard.js +41 -0
- package/dist/engine/pathguard.js.map +1 -0
- package/dist/engine/reads.d.ts +25 -0
- package/dist/engine/reads.d.ts.map +1 -0
- package/dist/engine/reads.js +904 -0
- package/dist/engine/reads.js.map +1 -0
- package/dist/engine/types.d.ts +396 -0
- package/dist/engine/types.d.ts.map +1 -0
- package/dist/engine/types.js +5 -0
- package/dist/engine/types.js.map +1 -0
- package/dist/engine/writes.d.ts +10 -0
- package/dist/engine/writes.d.ts.map +1 -0
- package/dist/engine/writes.js +606 -0
- package/dist/engine/writes.js.map +1 -0
- package/dist/engine.d.ts +3 -0
- package/dist/engine.d.ts.map +1 -0
- package/dist/engine.js +6 -0
- package/dist/engine.js.map +1 -0
- package/dist/errors.d.ts +20 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +17 -0
- package/dist/errors.js.map +1 -0
- package/dist/extractor/fields.d.ts +3 -0
- package/dist/extractor/fields.d.ts.map +1 -0
- package/dist/extractor/fields.js +58 -0
- package/dist/extractor/fields.js.map +1 -0
- package/dist/extractor/index.d.ts +7 -0
- package/dist/extractor/index.d.ts.map +1 -0
- package/dist/extractor/index.js +22 -0
- package/dist/extractor/index.js.map +1 -0
- package/dist/extractor/normalizers.d.ts +22 -0
- package/dist/extractor/normalizers.d.ts.map +1 -0
- package/dist/extractor/normalizers.js +250 -0
- package/dist/extractor/normalizers.js.map +1 -0
- package/dist/extractor/objects.d.ts +3 -0
- package/dist/extractor/objects.d.ts.map +1 -0
- package/dist/extractor/objects.js +33 -0
- package/dist/extractor/objects.js.map +1 -0
- package/dist/extractor/relationships.d.ts +3 -0
- package/dist/extractor/relationships.d.ts.map +1 -0
- package/dist/extractor/relationships.js +58 -0
- package/dist/extractor/relationships.js.map +1 -0
- package/dist/git/commit.d.ts +63 -0
- package/dist/git/commit.d.ts.map +1 -0
- package/dist/git/commit.js +161 -0
- package/dist/git/commit.js.map +1 -0
- package/dist/git/diff.d.ts +4 -0
- package/dist/git/diff.d.ts.map +1 -0
- package/dist/git/diff.js +56 -0
- package/dist/git/diff.js.map +1 -0
- package/dist/git/index.d.ts +63 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +151 -0
- package/dist/git/index.js.map +1 -0
- package/dist/git/log.d.ts +13 -0
- package/dist/git/log.d.ts.map +1 -0
- package/dist/git/log.js +116 -0
- package/dist/git/log.js.map +1 -0
- package/dist/git/snapshot.d.ts +4 -0
- package/dist/git/snapshot.d.ts.map +1 -0
- package/dist/git/snapshot.js +65 -0
- package/dist/git/snapshot.js.map +1 -0
- package/dist/instance/config.d.ts +19 -0
- package/dist/instance/config.d.ts.map +1 -0
- package/dist/instance/config.js +107 -0
- package/dist/instance/config.js.map +1 -0
- package/dist/instance/pool.d.ts +138 -0
- package/dist/instance/pool.d.ts.map +1 -0
- package/dist/instance/pool.js +335 -0
- package/dist/instance/pool.js.map +1 -0
- package/dist/instance/session.d.ts +140 -0
- package/dist/instance/session.d.ts.map +1 -0
- package/dist/instance/session.js +267 -0
- package/dist/instance/session.js.map +1 -0
- package/dist/logging.d.ts +108 -0
- package/dist/logging.d.ts.map +1 -0
- package/dist/logging.js +120 -0
- package/dist/logging.js.map +1 -0
- package/dist/maad-md.d.ts +11 -0
- package/dist/maad-md.d.ts.map +1 -0
- package/dist/maad-md.js +252 -0
- package/dist/maad-md.js.map +1 -0
- package/dist/mcp/bulk-cap.d.ts +10 -0
- package/dist/mcp/bulk-cap.d.ts.map +1 -0
- package/dist/mcp/bulk-cap.js +37 -0
- package/dist/mcp/bulk-cap.js.map +1 -0
- package/dist/mcp/config.d.ts +18 -0
- package/dist/mcp/config.d.ts.map +1 -0
- package/dist/mcp/config.js +20 -0
- package/dist/mcp/config.js.map +1 -0
- package/dist/mcp/ctx.d.ts +17 -0
- package/dist/mcp/ctx.d.ts.map +1 -0
- package/dist/mcp/ctx.js +7 -0
- package/dist/mcp/ctx.js.map +1 -0
- package/dist/mcp/guardrails.d.ts +42 -0
- package/dist/mcp/guardrails.d.ts.map +1 -0
- package/dist/mcp/guardrails.js +58 -0
- package/dist/mcp/guardrails.js.map +1 -0
- package/dist/mcp/idempotency.d.ts +69 -0
- package/dist/mcp/idempotency.d.ts.map +1 -0
- package/dist/mcp/idempotency.js +168 -0
- package/dist/mcp/idempotency.js.map +1 -0
- package/dist/mcp/instance-reload.d.ts +23 -0
- package/dist/mcp/instance-reload.d.ts.map +1 -0
- package/dist/mcp/instance-reload.js +126 -0
- package/dist/mcp/instance-reload.js.map +1 -0
- package/dist/mcp/kinds.d.ts +22 -0
- package/dist/mcp/kinds.d.ts.map +1 -0
- package/dist/mcp/kinds.js +112 -0
- package/dist/mcp/kinds.js.map +1 -0
- package/dist/mcp/lifecycle.d.ts +8 -0
- package/dist/mcp/lifecycle.d.ts.map +1 -0
- package/dist/mcp/lifecycle.js +65 -0
- package/dist/mcp/lifecycle.js.map +1 -0
- package/dist/mcp/memory-pressure.d.ts +37 -0
- package/dist/mcp/memory-pressure.d.ts.map +1 -0
- package/dist/mcp/memory-pressure.js +179 -0
- package/dist/mcp/memory-pressure.js.map +1 -0
- package/dist/mcp/notifications.d.ts +87 -0
- package/dist/mcp/notifications.d.ts.map +1 -0
- package/dist/mcp/notifications.js +154 -0
- package/dist/mcp/notifications.js.map +1 -0
- package/dist/mcp/query-depth.d.ts +28 -0
- package/dist/mcp/query-depth.d.ts.map +1 -0
- package/dist/mcp/query-depth.js +43 -0
- package/dist/mcp/query-depth.js.map +1 -0
- package/dist/mcp/rate-limit.d.ts +60 -0
- package/dist/mcp/rate-limit.d.ts.map +1 -0
- package/dist/mcp/rate-limit.js +203 -0
- package/dist/mcp/rate-limit.js.map +1 -0
- package/dist/mcp/reload-signal.d.ts +13 -0
- package/dist/mcp/reload-signal.d.ts.map +1 -0
- package/dist/mcp/reload-signal.js +68 -0
- package/dist/mcp/reload-signal.js.map +1 -0
- package/dist/mcp/response.d.ts +109 -0
- package/dist/mcp/response.d.ts.map +1 -0
- package/dist/mcp/response.js +132 -0
- package/dist/mcp/response.js.map +1 -0
- package/dist/mcp/roles.d.ts +7 -0
- package/dist/mcp/roles.d.ts.map +1 -0
- package/dist/mcp/roles.js +57 -0
- package/dist/mcp/roles.js.map +1 -0
- package/dist/mcp/server.d.ts +33 -0
- package/dist/mcp/server.d.ts.map +1 -0
- package/dist/mcp/server.js +252 -0
- package/dist/mcp/server.js.map +1 -0
- package/dist/mcp/shutdown.d.ts +32 -0
- package/dist/mcp/shutdown.d.ts.map +1 -0
- package/dist/mcp/shutdown.js +130 -0
- package/dist/mcp/shutdown.js.map +1 -0
- package/dist/mcp/tools/audit.d.ts +4 -0
- package/dist/mcp/tools/audit.d.ts.map +1 -0
- package/dist/mcp/tools/audit.js +45 -0
- package/dist/mcp/tools/audit.js.map +1 -0
- package/dist/mcp/tools/auth.d.ts +4 -0
- package/dist/mcp/tools/auth.d.ts.map +1 -0
- package/dist/mcp/tools/auth.js +181 -0
- package/dist/mcp/tools/auth.js.map +1 -0
- package/dist/mcp/tools/backup.d.ts +4 -0
- package/dist/mcp/tools/backup.d.ts.map +1 -0
- package/dist/mcp/tools/backup.js +52 -0
- package/dist/mcp/tools/backup.js.map +1 -0
- package/dist/mcp/tools/discover.d.ts +4 -0
- package/dist/mcp/tools/discover.d.ts.map +1 -0
- package/dist/mcp/tools/discover.js +83 -0
- package/dist/mcp/tools/discover.js.map +1 -0
- package/dist/mcp/tools/instance.d.ts +15 -0
- package/dist/mcp/tools/instance.d.ts.map +1 -0
- package/dist/mcp/tools/instance.js +207 -0
- package/dist/mcp/tools/instance.js.map +1 -0
- package/dist/mcp/tools/maintain.d.ts +4 -0
- package/dist/mcp/tools/maintain.d.ts.map +1 -0
- package/dist/mcp/tools/maintain.js +123 -0
- package/dist/mcp/tools/maintain.js.map +1 -0
- package/dist/mcp/tools/read.d.ts +4 -0
- package/dist/mcp/tools/read.d.ts.map +1 -0
- package/dist/mcp/tools/read.js +304 -0
- package/dist/mcp/tools/read.js.map +1 -0
- package/dist/mcp/tools/write.d.ts +4 -0
- package/dist/mcp/tools/write.d.ts.map +1 -0
- package/dist/mcp/tools/write.js +342 -0
- package/dist/mcp/tools/write.js.map +1 -0
- package/dist/mcp/transport/auth.d.ts +41 -0
- package/dist/mcp/transport/auth.d.ts.map +1 -0
- package/dist/mcp/transport/auth.js +115 -0
- package/dist/mcp/transport/auth.js.map +1 -0
- package/dist/mcp/transport/http.d.ts +62 -0
- package/dist/mcp/transport/http.d.ts.map +1 -0
- package/dist/mcp/transport/http.js +357 -0
- package/dist/mcp/transport/http.js.map +1 -0
- package/dist/mcp/transport/pin.d.ts +15 -0
- package/dist/mcp/transport/pin.d.ts.map +1 -0
- package/dist/mcp/transport/pin.js +71 -0
- package/dist/mcp/transport/pin.js.map +1 -0
- package/dist/mcp/transport/telemetry.d.ts +79 -0
- package/dist/mcp/transport/telemetry.d.ts.map +1 -0
- package/dist/mcp/transport/telemetry.js +97 -0
- package/dist/mcp/transport/telemetry.js.map +1 -0
- package/dist/mcp/with-session.d.ts +26 -0
- package/dist/mcp/with-session.d.ts.map +1 -0
- package/dist/mcp/with-session.js +275 -0
- package/dist/mcp/with-session.js.map +1 -0
- package/dist/parser/annotations.d.ts +3 -0
- package/dist/parser/annotations.d.ts.map +1 -0
- package/dist/parser/annotations.js +41 -0
- package/dist/parser/annotations.js.map +1 -0
- package/dist/parser/blocks.d.ts +3 -0
- package/dist/parser/blocks.d.ts.map +1 -0
- package/dist/parser/blocks.js +101 -0
- package/dist/parser/blocks.js.map +1 -0
- package/dist/parser/frontmatter.d.ts +9 -0
- package/dist/parser/frontmatter.d.ts.map +1 -0
- package/dist/parser/frontmatter.js +33 -0
- package/dist/parser/frontmatter.js.map +1 -0
- package/dist/parser/index.d.ts +11 -0
- package/dist/parser/index.d.ts.map +1 -0
- package/dist/parser/index.js +54 -0
- package/dist/parser/index.js.map +1 -0
- package/dist/parser/matter.d.ts +3 -0
- package/dist/parser/matter.d.ts.map +1 -0
- package/dist/parser/matter.js +32 -0
- package/dist/parser/matter.js.map +1 -0
- package/dist/parser/tags.d.ts +3 -0
- package/dist/parser/tags.d.ts.map +1 -0
- package/dist/parser/tags.js +32 -0
- package/dist/parser/tags.js.map +1 -0
- package/dist/parser/verbatim.d.ts +4 -0
- package/dist/parser/verbatim.d.ts.map +1 -0
- package/dist/parser/verbatim.js +121 -0
- package/dist/parser/verbatim.js.map +1 -0
- package/dist/parser/yaml-profile.d.ts +4 -0
- package/dist/parser/yaml-profile.d.ts.map +1 -0
- package/dist/parser/yaml-profile.js +73 -0
- package/dist/parser/yaml-profile.js.map +1 -0
- package/dist/registry/index.d.ts +2 -0
- package/dist/registry/index.d.ts.map +1 -0
- package/dist/registry/index.js +2 -0
- package/dist/registry/index.js.map +1 -0
- package/dist/registry/loader.d.ts +4 -0
- package/dist/registry/loader.d.ts.map +1 -0
- package/dist/registry/loader.js +147 -0
- package/dist/registry/loader.js.map +1 -0
- package/dist/registry/types.d.ts +2 -0
- package/dist/registry/types.d.ts.map +1 -0
- package/dist/registry/types.js +5 -0
- package/dist/registry/types.js.map +1 -0
- package/dist/scanner.d.ts +57 -0
- package/dist/scanner.d.ts.map +1 -0
- package/dist/scanner.js +223 -0
- package/dist/scanner.js.map +1 -0
- package/dist/schema/index.d.ts +3 -0
- package/dist/schema/index.d.ts.map +1 -0
- package/dist/schema/index.js +3 -0
- package/dist/schema/index.js.map +1 -0
- package/dist/schema/loader.d.ts +4 -0
- package/dist/schema/loader.d.ts.map +1 -0
- package/dist/schema/loader.js +303 -0
- package/dist/schema/loader.js.map +1 -0
- package/dist/schema/precision.d.ts +6 -0
- package/dist/schema/precision.d.ts.map +1 -0
- package/dist/schema/precision.js +59 -0
- package/dist/schema/precision.js.map +1 -0
- package/dist/schema/validator.d.ts +21 -0
- package/dist/schema/validator.d.ts.map +1 -0
- package/dist/schema/validator.js +200 -0
- package/dist/schema/validator.js.map +1 -0
- package/dist/schema-md.d.ts +8 -0
- package/dist/schema-md.d.ts.map +1 -0
- package/dist/schema-md.js +98 -0
- package/dist/schema-md.js.map +1 -0
- package/dist/skill-files.d.ts +3 -0
- package/dist/skill-files.d.ts.map +1 -0
- package/dist/skill-files.js +362 -0
- package/dist/skill-files.js.map +1 -0
- package/dist/skills-scaffold.d.ts +10 -0
- package/dist/skills-scaffold.d.ts.map +1 -0
- package/dist/skills-scaffold.js +52 -0
- package/dist/skills-scaffold.js.map +1 -0
- package/dist/types.d.ts +309 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +111 -0
- package/dist/types.js.map +1 -0
- package/dist/writer/index.d.ts +7 -0
- package/dist/writer/index.d.ts.map +1 -0
- package/dist/writer/index.js +32 -0
- package/dist/writer/index.js.map +1 -0
- package/dist/writer/serializer.d.ts +4 -0
- package/dist/writer/serializer.d.ts.map +1 -0
- package/dist/writer/serializer.js +103 -0
- package/dist/writer/serializer.js.map +1 -0
- package/dist/writer/template.d.ts +3 -0
- package/dist/writer/template.d.ts.map +1 -0
- package/dist/writer/template.js +27 -0
- package/dist/writer/template.js.map +1 -0
- package/package.json +59 -7
|
@@ -0,0 +1,123 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Maintain tools — maad_delete, maad_reindex, maad_reload, maad_health
|
|
3
|
+
// ============================================================================
|
|
4
|
+
import { z } from 'zod';
|
|
5
|
+
import { docId } from '../../types.js';
|
|
6
|
+
import { resultToResponse, successResponse, getProvenanceMode, attachDurability } from '../response.js';
|
|
7
|
+
import { notifyWrite } from '../notifications.js';
|
|
8
|
+
import { isDryRun, dryRunResponse, auditToolCall } from '../guardrails.js';
|
|
9
|
+
import { withEngine } from '../with-session.js';
|
|
10
|
+
import { getTransportSnapshot, isInitialized as telemetryInitialized } from '../transport/telemetry.js';
|
|
11
|
+
import { getMemoryPressureSnapshot } from '../memory-pressure.js';
|
|
12
|
+
export function register(server, ctx) {
|
|
13
|
+
server.registerTool('maad_delete', {
|
|
14
|
+
description: 'Deletes a record. Soft: renames file with _deleted prefix. Hard: removes file entirely.',
|
|
15
|
+
inputSchema: z.object({
|
|
16
|
+
docId: z.string().describe('Document ID to delete'),
|
|
17
|
+
mode: z.enum(['soft', 'hard']).default('soft').describe('soft=rename, hard=remove file'),
|
|
18
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
19
|
+
}),
|
|
20
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_delete', args, async ({ engine, projectName }) => {
|
|
21
|
+
auditToolCall('maad_delete', args);
|
|
22
|
+
if (isDryRun())
|
|
23
|
+
return dryRunResponse('maad_delete', args);
|
|
24
|
+
const result = await engine.deleteDocument(docId(args.docId), args.mode);
|
|
25
|
+
const response = resultToResponse(result);
|
|
26
|
+
if (!result.ok)
|
|
27
|
+
return response;
|
|
28
|
+
const value = result.value;
|
|
29
|
+
if (value.writeDurable) {
|
|
30
|
+
await notifyWrite(ctx, {
|
|
31
|
+
action: 'delete',
|
|
32
|
+
docId: String(value.docId),
|
|
33
|
+
docType: String(value.docType),
|
|
34
|
+
project: projectName,
|
|
35
|
+
updatedAt: new Date().toISOString(),
|
|
36
|
+
});
|
|
37
|
+
}
|
|
38
|
+
return attachDurability(response, value.writeDurable, value.commitFailure);
|
|
39
|
+
}));
|
|
40
|
+
server.registerTool('maad_reindex', {
|
|
41
|
+
description: 'Rebuilds the SQLite index from markdown files. Use after external file changes or to recover from stale state. Auto-detects per-type schema-index changes and rebuilds affected types even when files are byte-identical (rebuiltTypes lists them in the response).',
|
|
42
|
+
inputSchema: z.object({
|
|
43
|
+
force: z.boolean().optional().default(false).describe('Force full rebuild (skip both hash check and the schema-fingerprint shortcut). Rarely needed since 0.7.4 — the engine now auto-rebuilds types whose indexed-field set changed.'),
|
|
44
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
45
|
+
}),
|
|
46
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_reindex', args, async ({ engine }) => {
|
|
47
|
+
return resultToResponse(await engine.reindex({ force: args.force }));
|
|
48
|
+
}));
|
|
49
|
+
server.registerTool('maad_reload', {
|
|
50
|
+
description: 'Reloads the engine — picks up new registry, schemas, and type directories without restarting the server. Use after changing _registry/ or _schema/ files.',
|
|
51
|
+
inputSchema: z.object({
|
|
52
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
53
|
+
}),
|
|
54
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_reload', args, async ({ engine }) => {
|
|
55
|
+
auditToolCall('maad_reload', {});
|
|
56
|
+
return resultToResponse(await engine.reload());
|
|
57
|
+
}));
|
|
58
|
+
server.registerTool('maad_health', {
|
|
59
|
+
description: 'Engine health + transport + session telemetry + instance reload stats. sessions block: {active, pinned, subscribed, byProject: {<project>:{<role>:count}}, byIdentity: {<agent_id|anonymous>:count}, ...lifecycle counters}. instance block: {source, configPath?, projectCount, reload counters}. runtime block: {memoryPressure: {enabled, intervalMs, thresholdRatio, lastSampleAt, heapUsedMb, heapCapMb, ratio, inPressure, lastPressureAt, pressureFiresTotal}}.',
|
|
60
|
+
inputSchema: z.object({
|
|
61
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
62
|
+
}),
|
|
63
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_health', args, ({ engine }) => {
|
|
64
|
+
const health = engine.health();
|
|
65
|
+
const provMode = getProvenanceMode();
|
|
66
|
+
// Telemetry may be uninitialized in test contexts that build an engine
|
|
67
|
+
// without going through startServer. Fall back gracefully so maad_health
|
|
68
|
+
// stays useful in those environments.
|
|
69
|
+
const pinnedCount = ctx.sessions.snapshot().filter(s => s.bindingSource === 'gateway_pin').length;
|
|
70
|
+
const telemetry = telemetryInitialized()
|
|
71
|
+
? getTransportSnapshot(ctx.sessions.size(), pinnedCount)
|
|
72
|
+
: null;
|
|
73
|
+
// 0.6.12 — subscribed-session counter for cheap observability. Admins
|
|
74
|
+
// grep `subscribed > 0` to confirm push-based delivery is in use at all;
|
|
75
|
+
// full inventory is the admin-only maad_subscriptions tool.
|
|
76
|
+
const subscribedCount = ctx.sessions.snapshot().filter(s => s.subscription !== undefined).length;
|
|
77
|
+
// 0.7.0 — byProject + byIdentity aggregates (spec v2 fix #4: byProject
|
|
78
|
+
// replaces the ambiguous flat byRole because multi-project sessions
|
|
79
|
+
// carry different roles per project). byProject counts session×project
|
|
80
|
+
// pairs grouped by role so the inner sums can exceed `active` when
|
|
81
|
+
// multi-mode sessions exist. byIdentity counts DISTINCT sessions per
|
|
82
|
+
// agent_id; sessions with no token bucket under 'anonymous'.
|
|
83
|
+
const byProject = {};
|
|
84
|
+
const byIdentity = {};
|
|
85
|
+
for (const state of ctx.sessions.snapshot()) {
|
|
86
|
+
for (const [projectName, role] of state.effectiveRoles) {
|
|
87
|
+
const bucket = byProject[projectName] ?? (byProject[projectName] = {});
|
|
88
|
+
bucket[role] = (bucket[role] ?? 0) + 1;
|
|
89
|
+
}
|
|
90
|
+
const ident = state.token?.agentId ?? 'anonymous';
|
|
91
|
+
byIdentity[ident] = (byIdentity[ident] ?? 0) + 1;
|
|
92
|
+
}
|
|
93
|
+
// 0.6.9 — instance reload stats, always included. Operators watching
|
|
94
|
+
// hot-reload behavior (cohort expansion, tenant churn) filter on this
|
|
95
|
+
// block to verify their last reload landed + projectCount is current.
|
|
96
|
+
const reloadStats = ctx.pool.reloadStats();
|
|
97
|
+
const instanceBlock = {
|
|
98
|
+
name: ctx.instance.name,
|
|
99
|
+
source: ctx.instance.source,
|
|
100
|
+
configPath: ctx.instance.configPath ?? null,
|
|
101
|
+
projectCount: ctx.instance.projects.length,
|
|
102
|
+
lastReloadAt: reloadStats.lastReloadAt ? reloadStats.lastReloadAt.toISOString() : null,
|
|
103
|
+
reloadsAttempted: reloadStats.reloadsAttempted,
|
|
104
|
+
reloadsSucceeded: reloadStats.reloadsSucceeded,
|
|
105
|
+
reloadsFailed: reloadStats.reloadsFailed,
|
|
106
|
+
projectsAdded: reloadStats.projectsAdded,
|
|
107
|
+
projectsRemoved: reloadStats.projectsRemoved,
|
|
108
|
+
};
|
|
109
|
+
const sessionsBlock = telemetry
|
|
110
|
+
? { ...telemetry.sessions, subscribed: subscribedCount, byProject, byIdentity }
|
|
111
|
+
: { subscribed: subscribedCount, byProject, byIdentity };
|
|
112
|
+
// 0.7.10 P5 — runtime block surfaces process-level memory-pressure state so
|
|
113
|
+
// operators can read V8 heap pressure without grepping logs. Snapshot is
|
|
114
|
+
// always present; `enabled: false` indicates the sampler is disabled.
|
|
115
|
+
const runtime = { memoryPressure: getMemoryPressureSnapshot() };
|
|
116
|
+
const payload = telemetry
|
|
117
|
+
? { ...health, provenance: provMode, transport: telemetry.transport, sessions: sessionsBlock, instance: instanceBlock, runtime }
|
|
118
|
+
: { ...health, provenance: provMode, sessions: sessionsBlock, instance: instanceBlock, runtime };
|
|
119
|
+
return successResponse(payload, 'maad_health');
|
|
120
|
+
}));
|
|
121
|
+
return 4;
|
|
122
|
+
}
|
|
123
|
+
//# sourceMappingURL=maintain.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maintain.js","sourceRoot":"","sources":["../../../src/mcp/tools/maintain.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/read.ts"],"names":[],"mappings":"AAMA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAGzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AAI7C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CA8QpE"}
|
|
@@ -0,0 +1,304 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Read tools — maad_get, maad_query, maad_search, maad_related, maad_schema,
|
|
3
|
+
// maad_aggregate, maad_verify, maad_join
|
|
4
|
+
// ============================================================================
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { docId, docType } from '../../types.js';
|
|
7
|
+
import { resultToResponse, attachMeta, guardResponseSize } from '../response.js';
|
|
8
|
+
import { withEngine } from '../with-session.js';
|
|
9
|
+
import { hydrateQueryRows } from '../query-depth.js';
|
|
10
|
+
export function register(server, ctx) {
|
|
11
|
+
server.registerTool('maad_get', {
|
|
12
|
+
description: 'Reads a markdown-backed record at increasing depth: hot (frontmatter), warm (+block), cold (full body), full (resolved refs+objects+related, provisional composite).',
|
|
13
|
+
inputSchema: z.object({
|
|
14
|
+
docId: z.string().describe('Document ID to read'),
|
|
15
|
+
depth: z.enum(['hot', 'warm', 'cold', 'full']).default('hot')
|
|
16
|
+
.describe('hot=frontmatter, warm=+block, cold=full body, full=resolved refs+objects+related'),
|
|
17
|
+
block: z.string().optional().describe('Block ID or heading (warm depth only)'),
|
|
18
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
19
|
+
}),
|
|
20
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_get', args, async ({ engine }) => {
|
|
21
|
+
if (args.depth === 'full') {
|
|
22
|
+
return resultToResponse(await engine.getDocumentFull(docId(args.docId)), 'maad_get');
|
|
23
|
+
}
|
|
24
|
+
return resultToResponse(await engine.getDocument(docId(args.docId), args.depth, args.block ?? undefined), 'maad_get');
|
|
25
|
+
}));
|
|
26
|
+
server.registerTool('maad_query', {
|
|
27
|
+
description: 'Finds documents by type with optional field filters and projection. Filters support shorthand eq, single-op, between shortcut, and array-of-ops (AND semantics). Use fields to return frontmatter values inline instead of chasing IDs. Set depth=cold to return record bodies inline (kills query-then-N-gets pattern), depth=full to return full composite (refs+objects+related) per row.',
|
|
28
|
+
inputSchema: z.object({
|
|
29
|
+
docType: z.string().describe('Document type to query'),
|
|
30
|
+
filters: z.any().optional().describe('Field filters. Shorthand: { status: "active" }. Single op: { opened_at: { op: "gte", value: "2026-01-01" } }. Range shortcut: { opened_at: { op: "between", value: ["2026-03-01", "2026-03-31"] } }. Array-of-ops (AND): { opened_at: [{op: "gte", value: "2026-03-01"}, {op: "lte", value: "2026-03-31"}] }. Ops: eq, neq, gt, gte, lt, lte, in, contains, between.'),
|
|
31
|
+
fields: z.array(z.string()).optional().describe('Field names to return inline (e.g. ["name", "status"]). Indexed fields only.'),
|
|
32
|
+
sortBy: z.string().optional().describe('Indexed field to sort by'),
|
|
33
|
+
sortOrder: z.enum(['asc', 'desc']).optional().describe('Sort direction (default desc)'),
|
|
34
|
+
limit: z.number().optional().describe('Max results (default 50, capped at 500). Over-requests are clamped silently with _meta.limit_clamped set.'),
|
|
35
|
+
offset: z.number().optional().describe('Skip first N results'),
|
|
36
|
+
depth: z.enum(['hot', 'cold', 'full']).optional().describe('hot (default) = pointer + projected fields only; cold = adds body to each row; full = adds resolved composite (refs+objects+related). cold/full bound by depth_max_results (default 50, capped at 100) to prevent payload blowups.'),
|
|
37
|
+
depthMaxResults: z.number().optional().describe('When depth=cold|full, hydrate at most N rows (default 50, capped at 100). Beyond cap, remaining rows return at hot depth.'),
|
|
38
|
+
includeFilePath: z.boolean().optional().describe('Include filePath in each result row (default false — omitted to trim response size)'),
|
|
39
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
40
|
+
}),
|
|
41
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_query', args, async ({ engine }) => {
|
|
42
|
+
const query = { docType: docType(args.docType) };
|
|
43
|
+
if (args.filters !== undefined)
|
|
44
|
+
query.filters = args.filters;
|
|
45
|
+
if (args.fields !== undefined)
|
|
46
|
+
query.fields = args.fields;
|
|
47
|
+
if (args.sortBy !== undefined)
|
|
48
|
+
query.sortBy = args.sortBy;
|
|
49
|
+
if (args.sortOrder !== undefined)
|
|
50
|
+
query.sortOrder = args.sortOrder;
|
|
51
|
+
if (args.limit !== undefined)
|
|
52
|
+
query.limit = args.limit;
|
|
53
|
+
if (args.offset !== undefined)
|
|
54
|
+
query.offset = args.offset;
|
|
55
|
+
const result = engine.findDocuments(query);
|
|
56
|
+
// 0.7.0 — default-strip filePath to trim response size. Clients that
|
|
57
|
+
// need the on-disk path opt in via includeFilePath:true. Backend still
|
|
58
|
+
// produces the field; we drop it at the MCP boundary.
|
|
59
|
+
let effective = result;
|
|
60
|
+
if (result.ok && args.includeFilePath !== true) {
|
|
61
|
+
const stripped = result.value.results.map(r => {
|
|
62
|
+
const { filePath, ...rest } = r;
|
|
63
|
+
void filePath;
|
|
64
|
+
return rest;
|
|
65
|
+
});
|
|
66
|
+
const newValue = {
|
|
67
|
+
total: result.value.total,
|
|
68
|
+
results: stripped,
|
|
69
|
+
};
|
|
70
|
+
if (result.value.limitClamped)
|
|
71
|
+
newValue.limitClamped = result.value.limitClamped;
|
|
72
|
+
effective = { ok: true, value: newValue };
|
|
73
|
+
}
|
|
74
|
+
// 0.7.3 (fup-2026-079[a]) — depth hydration. Composite that kills the
|
|
75
|
+
// query-then-N-gets agent pattern.
|
|
76
|
+
let depthMeta = null;
|
|
77
|
+
if (effective.ok && (args.depth === 'cold' || args.depth === 'full')) {
|
|
78
|
+
const hydrateOpts = { depth: args.depth };
|
|
79
|
+
if (args.depthMaxResults !== undefined)
|
|
80
|
+
hydrateOpts.depthMaxResults = args.depthMaxResults;
|
|
81
|
+
const outcome = await hydrateQueryRows(engine, effective.value.results, hydrateOpts);
|
|
82
|
+
const newValue = {
|
|
83
|
+
total: effective.value.total,
|
|
84
|
+
results: outcome.rows,
|
|
85
|
+
};
|
|
86
|
+
if (effective.value.limitClamped)
|
|
87
|
+
newValue.limitClamped = effective.value.limitClamped;
|
|
88
|
+
effective = { ok: true, value: newValue };
|
|
89
|
+
depthMeta = outcome.meta;
|
|
90
|
+
}
|
|
91
|
+
let response = resultToResponse(effective, 'maad_query');
|
|
92
|
+
// 0.7.1 — surface engine limit-clamping in _meta, then guard response size.
|
|
93
|
+
if (effective.ok && effective.value.limitClamped) {
|
|
94
|
+
response = attachMeta(response, { limit_clamped: effective.value.limitClamped });
|
|
95
|
+
}
|
|
96
|
+
if (depthMeta) {
|
|
97
|
+
response = attachMeta(response, { depth: depthMeta });
|
|
98
|
+
}
|
|
99
|
+
return guardResponseSize(response, { tool: 'maad_query' });
|
|
100
|
+
}));
|
|
101
|
+
server.registerTool('maad_search', {
|
|
102
|
+
description: 'Searches extracted objects across all documents. Filter by primitive + optional subtype, then narrow with query (substring) or value (exact). Without query or value, returns ALL objects matching primitive/subtype.',
|
|
103
|
+
inputSchema: z.object({
|
|
104
|
+
primitive: z.string().describe('Extraction primitive (entity, date, amount, etc.)'),
|
|
105
|
+
subtype: z.string().optional().describe('Subtype filter (person, org, attorney, etc.)'),
|
|
106
|
+
query: z.string().optional().describe('Substring match on values (e.g. "Attorney" matches "Lead Attorney")'),
|
|
107
|
+
value: z.string().optional().describe('Exact value match (must match the full extracted value)'),
|
|
108
|
+
contains: z.string().optional().describe('Alias for query — substring match on values'),
|
|
109
|
+
docId: z.string().optional().describe('Scope search to a single document'),
|
|
110
|
+
limit: z.number().optional().describe('Max results (default 50)'),
|
|
111
|
+
offset: z.number().optional().describe('Skip first N results'),
|
|
112
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
113
|
+
}),
|
|
114
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_search', args, ({ engine }) => {
|
|
115
|
+
const query = { primitive: args.primitive };
|
|
116
|
+
if (args.subtype !== undefined)
|
|
117
|
+
query.subtype = args.subtype;
|
|
118
|
+
if (args.value !== undefined)
|
|
119
|
+
query.value = args.value;
|
|
120
|
+
const containsValue = args.query ?? args.contains;
|
|
121
|
+
if (containsValue !== undefined)
|
|
122
|
+
query.contains = containsValue;
|
|
123
|
+
if (args.docId !== undefined)
|
|
124
|
+
query.docId = docId(args.docId);
|
|
125
|
+
if (args.limit !== undefined)
|
|
126
|
+
query.limit = args.limit;
|
|
127
|
+
if (args.offset !== undefined)
|
|
128
|
+
query.offset = args.offset;
|
|
129
|
+
return resultToResponse(engine.searchObjects(query), 'maad_search');
|
|
130
|
+
}));
|
|
131
|
+
server.registerTool('maad_related', {
|
|
132
|
+
description: 'Returns documents connected to a given doc via ref fields.',
|
|
133
|
+
inputSchema: z.object({
|
|
134
|
+
docId: z.string().describe('Document ID'),
|
|
135
|
+
direction: z.enum(['outgoing', 'incoming', 'both']).default('both')
|
|
136
|
+
.describe('outgoing=docs this references, incoming=docs that reference this, both=all'),
|
|
137
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
138
|
+
}),
|
|
139
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_related', args, ({ engine }) => {
|
|
140
|
+
return resultToResponse(engine.listRelated(docId(args.docId), args.direction), 'maad_related');
|
|
141
|
+
}));
|
|
142
|
+
server.registerTool('maad_schema', {
|
|
143
|
+
description: 'Returns field definitions, required fields, enum values, ID prefix, and format hints for a type. Use before create/update to know what fields to pass and how to format values.',
|
|
144
|
+
inputSchema: z.object({
|
|
145
|
+
docType: z.string().describe('Document type'),
|
|
146
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
147
|
+
}),
|
|
148
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_schema', args, ({ engine }) => {
|
|
149
|
+
return resultToResponse(engine.schemaInfo(docType(args.docType)), 'maad_schema');
|
|
150
|
+
}));
|
|
151
|
+
server.registerTool('maad_aggregate', {
|
|
152
|
+
description: 'Groups documents by a field and optionally computes a metric (count/sum/avg/min/max) on another field. Supports multi-hop ref chains in groupBy (e.g. "client->industry") for cross-doctype aggregates — resolves refs at query time, merges groups that collapse to the same leaf value. Use instead of iterating records for totals.',
|
|
153
|
+
inputSchema: z.object({
|
|
154
|
+
docType: z.string().optional().describe('Document type to scope (optional; required for ref-chain groupBy)'),
|
|
155
|
+
groupBy: z.string().describe('Field name or ref chain to group by. Single field: "status". Multi-hop chain: "client_id->industry" or "case_id->account_id->name". Each non-leaf segment must be a ref field on its parent type.'),
|
|
156
|
+
metric: z.object({
|
|
157
|
+
field: z.string().describe('Field to aggregate (must be indexed, numeric for sum/avg/min/max)'),
|
|
158
|
+
op: z.enum(['count', 'sum', 'avg', 'min', 'max']).describe('Aggregation operation'),
|
|
159
|
+
}).optional().describe('Optional metric to compute per group. Without this, returns count per group value.'),
|
|
160
|
+
filters: z.any().optional().describe('Field filters (same format as maad_query — shorthand, single-op, between shortcut, array-of-ops with AND semantics).'),
|
|
161
|
+
limit: z.number().optional().describe('Max groups to return (default 50, capped at 2000). Over-requests are clamped silently with _meta.limit_clamped set.'),
|
|
162
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
163
|
+
}),
|
|
164
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_aggregate', args, ({ engine }) => {
|
|
165
|
+
const query = {
|
|
166
|
+
groupBy: args.groupBy,
|
|
167
|
+
};
|
|
168
|
+
if (args.docType !== undefined)
|
|
169
|
+
query.docType = docType(args.docType);
|
|
170
|
+
if (args.metric !== undefined)
|
|
171
|
+
query.metric = args.metric;
|
|
172
|
+
if (args.filters !== undefined)
|
|
173
|
+
query.filters = args.filters;
|
|
174
|
+
if (args.limit !== undefined)
|
|
175
|
+
query.limit = args.limit;
|
|
176
|
+
const result = engine.aggregate(query);
|
|
177
|
+
let response = resultToResponse(result, 'maad_aggregate');
|
|
178
|
+
// 0.7.1 — surface engine limit-clamping in _meta, then guard response size.
|
|
179
|
+
if (result.ok && result.value.limitClamped) {
|
|
180
|
+
response = attachMeta(response, { limit_clamped: result.value.limitClamped });
|
|
181
|
+
}
|
|
182
|
+
return guardResponseSize(response, { tool: 'maad_aggregate' });
|
|
183
|
+
}));
|
|
184
|
+
server.registerTool('maad_verify', {
|
|
185
|
+
description: 'Fact-check or audit. Three modes: (1) field — verify a specific field value on a document, (2) count — verify a document count for a type with optional filters, (3) integrity — sweep markdown on disk, compare to the SQLite index, and report five drift categories (missing_in_index, missing_on_disk, hash_drift, schema_drift, broken_refs). Field/count: use BEFORE stating any number, date, amount, or count as fact. Integrity: use after external git pulls, manual edits, or schema-pack version bumps to confirm the project is consistent.',
|
|
186
|
+
inputSchema: z.object({
|
|
187
|
+
mode: z.enum(['field', 'count', 'integrity']).describe('Verification mode'),
|
|
188
|
+
docId: z.string().optional().describe('Document ID (required for field mode, optional scope filter for integrity mode)'),
|
|
189
|
+
field: z.string().optional().describe('Field name to verify (required for field mode)'),
|
|
190
|
+
expected: z.any().optional().describe('Expected value for the field (required for field mode)'),
|
|
191
|
+
docType: z.string().optional().describe('Document type (required for count mode, optional scope filter for integrity mode)'),
|
|
192
|
+
expectedCount: z.number().optional().describe('Expected document count (required for count mode)'),
|
|
193
|
+
filters: z.any().optional().describe('Field filters (same format as maad_query). Used by count and integrity modes.'),
|
|
194
|
+
// 0.7.10 — integrity mode inputs
|
|
195
|
+
categories: z.array(z.enum([
|
|
196
|
+
'missing_in_index',
|
|
197
|
+
'missing_on_disk',
|
|
198
|
+
'hash_drift',
|
|
199
|
+
'schema_drift',
|
|
200
|
+
'broken_refs',
|
|
201
|
+
])).optional().describe('Integrity mode: which finding categories to compute. Default: all five.'),
|
|
202
|
+
verbose: z.boolean().optional().describe('Integrity mode: include per-record details[] in the response. Default false (summary only).'),
|
|
203
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
204
|
+
}),
|
|
205
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_verify', args, async ({ engine }) => {
|
|
206
|
+
if (args.mode === 'field') {
|
|
207
|
+
if (!args.docId || !args.field || args.expected === undefined) {
|
|
208
|
+
return resultToResponse({ ok: false, errors: [{ code: 'INVALID_ARGS', message: 'field mode requires docId, field, and expected' }] }, 'maad_verify');
|
|
209
|
+
}
|
|
210
|
+
return resultToResponse(await engine.verifyField(docId(args.docId), args.field, args.expected), 'maad_verify');
|
|
211
|
+
}
|
|
212
|
+
if (args.mode === 'count') {
|
|
213
|
+
if (!args.docType || args.expectedCount === undefined) {
|
|
214
|
+
return resultToResponse({ ok: false, errors: [{ code: 'INVALID_ARGS', message: 'count mode requires docType and expectedCount' }] }, 'maad_verify');
|
|
215
|
+
}
|
|
216
|
+
return resultToResponse(engine.verifyCount(docType(args.docType), args.expectedCount, args.filters), 'maad_verify');
|
|
217
|
+
}
|
|
218
|
+
if (args.mode === 'integrity') {
|
|
219
|
+
const integrityQuery = {};
|
|
220
|
+
if (args.docType !== undefined)
|
|
221
|
+
integrityQuery.docType = docType(args.docType);
|
|
222
|
+
if (args.docId !== undefined)
|
|
223
|
+
integrityQuery.docId = docId(args.docId);
|
|
224
|
+
if (args.filters !== undefined)
|
|
225
|
+
integrityQuery.filter = args.filters;
|
|
226
|
+
if (args.categories !== undefined)
|
|
227
|
+
integrityQuery.categories = args.categories;
|
|
228
|
+
if (args.verbose !== undefined)
|
|
229
|
+
integrityQuery.verbose = args.verbose;
|
|
230
|
+
return resultToResponse(await engine.verifyIntegrity(integrityQuery), 'maad_verify');
|
|
231
|
+
}
|
|
232
|
+
return resultToResponse({ ok: false, errors: [{ code: 'INVALID_ARGS', message: 'mode must be "field", "count", or "integrity"' }] }, 'maad_verify');
|
|
233
|
+
}));
|
|
234
|
+
server.registerTool('maad_find_orphans', {
|
|
235
|
+
description: 'Inventory records with broken refs — frontmatter ref fields pointing at docIds that do not exist in the index. Convenience wrapper over maad_verify integrity mode (categories: ["broken_refs"], verbose: true). Use before any repair workflow to see what would be cleaned up.',
|
|
236
|
+
inputSchema: z.object({
|
|
237
|
+
docType: z.string().optional().describe('Restrict scan to one docType'),
|
|
238
|
+
docId: z.string().optional().describe('Restrict scan to a single record'),
|
|
239
|
+
filters: z.any().optional().describe('Field filters (same format as maad_query). Only records already in the index are in scope when filter is set.'),
|
|
240
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
241
|
+
}),
|
|
242
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_find_orphans', args, async ({ engine }) => {
|
|
243
|
+
const integrityQuery = {
|
|
244
|
+
categories: ['broken_refs'],
|
|
245
|
+
verbose: true,
|
|
246
|
+
};
|
|
247
|
+
if (args.docType !== undefined)
|
|
248
|
+
integrityQuery.docType = docType(args.docType);
|
|
249
|
+
if (args.docId !== undefined)
|
|
250
|
+
integrityQuery.docId = docId(args.docId);
|
|
251
|
+
if (args.filters !== undefined)
|
|
252
|
+
integrityQuery.filter = args.filters;
|
|
253
|
+
return resultToResponse(await engine.verifyIntegrity(integrityQuery), 'maad_find_orphans');
|
|
254
|
+
}));
|
|
255
|
+
server.registerTool('maad_join', {
|
|
256
|
+
description: 'Queries documents and follows ref fields to return projected fields from both source and target records in one call. Eliminates N+1 round-trips. Example: all cases with their client name and attorney name.',
|
|
257
|
+
inputSchema: z.object({
|
|
258
|
+
docType: z.string().describe('Source document type to query'),
|
|
259
|
+
refs: z.array(z.string()).describe('Ref field names to follow (e.g. ["client", "assigned_attorney"])'),
|
|
260
|
+
fields: z.array(z.string()).optional().describe('Fields to return from source documents'),
|
|
261
|
+
refFields: z.record(z.string(), z.array(z.string())).optional().describe('Fields to return from each ref target: { "client": ["name", "industry"], "assigned_attorney": ["first_name"] }'),
|
|
262
|
+
filters: z.any().optional().describe('Field filters on source documents (same format as maad_query)'),
|
|
263
|
+
limit: z.number().optional().describe('Max results (default 50)'),
|
|
264
|
+
offset: z.number().optional().describe('Skip first N results'),
|
|
265
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
266
|
+
}),
|
|
267
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_join', args, ({ engine }) => {
|
|
268
|
+
const query = {
|
|
269
|
+
docType: docType(args.docType),
|
|
270
|
+
refs: args.refs,
|
|
271
|
+
};
|
|
272
|
+
if (args.fields !== undefined)
|
|
273
|
+
query.fields = args.fields;
|
|
274
|
+
if (args.refFields !== undefined)
|
|
275
|
+
query.refFields = args.refFields;
|
|
276
|
+
if (args.filters !== undefined)
|
|
277
|
+
query.filters = args.filters;
|
|
278
|
+
if (args.limit !== undefined)
|
|
279
|
+
query.limit = args.limit;
|
|
280
|
+
if (args.offset !== undefined)
|
|
281
|
+
query.offset = args.offset;
|
|
282
|
+
return resultToResponse(engine.join(query), 'maad_join');
|
|
283
|
+
}));
|
|
284
|
+
server.registerTool('maad_changes_since', {
|
|
285
|
+
description: 'Polling delta. Returns records with updated_at > cursor, ordered (updated_at ASC, doc_id ASC). Omit cursor to start. Pass nextCursor back verbatim to paginate; hasMore signals more pages. Operation: create | update (deletes not emitted).',
|
|
286
|
+
inputSchema: z.object({
|
|
287
|
+
cursor: z.string().optional().describe('Opaque cursor from a previous response. Omit on first call.'),
|
|
288
|
+
limit: z.number().int().positive().optional().describe('Max changes per page (default 100, max 1000).'),
|
|
289
|
+
docTypes: z.array(z.string()).optional().describe('Filter to these document types only.'),
|
|
290
|
+
project: z.string().optional().describe('Project name (multi-project mode only)'),
|
|
291
|
+
}),
|
|
292
|
+
}, async (args, extra) => withEngine(ctx, extra, 'maad_changes_since', args, ({ engine }) => {
|
|
293
|
+
const q = {};
|
|
294
|
+
if (args.cursor !== undefined)
|
|
295
|
+
q.cursor = args.cursor;
|
|
296
|
+
if (args.limit !== undefined)
|
|
297
|
+
q.limit = args.limit;
|
|
298
|
+
if (args.docTypes !== undefined)
|
|
299
|
+
q.docTypes = args.docTypes;
|
|
300
|
+
return resultToResponse(engine.changesSince(q), 'maad_changes_since');
|
|
301
|
+
}));
|
|
302
|
+
return 10;
|
|
303
|
+
}
|
|
304
|
+
//# sourceMappingURL=read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/mcp/tools/read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"write.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/write.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AAMzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,WAAW,CAAC;AA0I7C,wBAAgB,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,EAAE,WAAW,GAAG,MAAM,CAwNpE"}
|