@maadb/core 0.0.1 → 0.7.9
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/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 +209 -0
- package/dist/engine/index.d.ts.map +1 -0
- package/dist/engine/index.js +489 -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 +24 -0
- package/dist/engine/reads.d.ts.map +1 -0
- package/dist/engine/reads.js +701 -0
- package/dist/engine/reads.js.map +1 -0
- package/dist/engine/types.d.ts +350 -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 +41 -0
- package/dist/git/index.d.ts.map +1 -0
- package/dist/git/index.js +86 -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 +21 -0
- package/dist/mcp/guardrails.d.ts.map +1 -0
- package/dist/mcp/guardrails.js +39 -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 +110 -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/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 +56 -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 +242 -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/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 +118 -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 +260 -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 +99 -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,296 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// MAAD CLI — Command dispatch
|
|
4
|
+
// ============================================================================
|
|
5
|
+
import path from 'node:path';
|
|
6
|
+
import { fileURLToPath } from 'node:url';
|
|
7
|
+
import { cmdScan, cmdSummary, cmdDescribe } from './commands/discover.js';
|
|
8
|
+
import { cmdGet, cmdQuery, cmdSearch, cmdRelated, cmdSchema } from './commands/read.js';
|
|
9
|
+
import { cmdCreate, cmdUpdate } from './commands/write.js';
|
|
10
|
+
import { cmdInit, cmdValidate, cmdReindex, cmdParse } from './commands/maintain.js';
|
|
11
|
+
import { cmdHistory, cmdAudit } from './commands/audit.js';
|
|
12
|
+
import { cmdAuth } from './commands/auth.js';
|
|
13
|
+
import { startServer } from '../mcp/server.js';
|
|
14
|
+
const __filename = fileURLToPath(import.meta.url);
|
|
15
|
+
const __dirname = path.dirname(__filename);
|
|
16
|
+
// Parse --project / --instance flags (env vars MAAD_PROJECT / MAAD_INSTANCE as fallbacks).
|
|
17
|
+
// --project and --instance are mutually exclusive. If neither is supplied, `serve` errors out;
|
|
18
|
+
// other commands still default --project to cwd for backward compatibility.
|
|
19
|
+
const rawArgs = process.argv.slice(2);
|
|
20
|
+
let projectRoot = process.env['MAAD_PROJECT'];
|
|
21
|
+
let instancePath = process.env['MAAD_INSTANCE'];
|
|
22
|
+
const args = [];
|
|
23
|
+
for (let i = 0; i < rawArgs.length; i++) {
|
|
24
|
+
if (rawArgs[i] === '--project' && rawArgs[i + 1]) {
|
|
25
|
+
projectRoot = rawArgs[i + 1];
|
|
26
|
+
i++;
|
|
27
|
+
}
|
|
28
|
+
else if (rawArgs[i] === '--instance' && rawArgs[i + 1]) {
|
|
29
|
+
instancePath = rawArgs[i + 1];
|
|
30
|
+
i++;
|
|
31
|
+
}
|
|
32
|
+
else {
|
|
33
|
+
args.push(rawArgs[i]);
|
|
34
|
+
}
|
|
35
|
+
}
|
|
36
|
+
if (projectRoot && instancePath) {
|
|
37
|
+
console.error('Error: --project and --instance are mutually exclusive.');
|
|
38
|
+
process.exit(1);
|
|
39
|
+
}
|
|
40
|
+
// Non-serve commands still need a default project when neither flag is set.
|
|
41
|
+
if (!projectRoot && !instancePath)
|
|
42
|
+
projectRoot = '.';
|
|
43
|
+
const ctx = { args, projectRoot: projectRoot ?? '.', __dirname };
|
|
44
|
+
const command = args[0];
|
|
45
|
+
async function main() {
|
|
46
|
+
switch (command) {
|
|
47
|
+
// Discover
|
|
48
|
+
case 'scan':
|
|
49
|
+
await cmdScan(ctx);
|
|
50
|
+
break;
|
|
51
|
+
case 'summary':
|
|
52
|
+
await cmdSummary(ctx);
|
|
53
|
+
break;
|
|
54
|
+
case 'describe':
|
|
55
|
+
await cmdDescribe(ctx);
|
|
56
|
+
break;
|
|
57
|
+
// Read
|
|
58
|
+
case 'get':
|
|
59
|
+
await cmdGet(ctx);
|
|
60
|
+
break;
|
|
61
|
+
case 'query':
|
|
62
|
+
await cmdQuery(ctx);
|
|
63
|
+
break;
|
|
64
|
+
case 'search':
|
|
65
|
+
await cmdSearch(ctx);
|
|
66
|
+
break;
|
|
67
|
+
case 'related':
|
|
68
|
+
await cmdRelated(ctx);
|
|
69
|
+
break;
|
|
70
|
+
case 'schema':
|
|
71
|
+
await cmdSchema(ctx);
|
|
72
|
+
break;
|
|
73
|
+
// Write
|
|
74
|
+
case 'create':
|
|
75
|
+
await cmdCreate(ctx);
|
|
76
|
+
break;
|
|
77
|
+
case 'update':
|
|
78
|
+
await cmdUpdate(ctx);
|
|
79
|
+
break;
|
|
80
|
+
// Maintain
|
|
81
|
+
case 'init':
|
|
82
|
+
await cmdInit(ctx);
|
|
83
|
+
break;
|
|
84
|
+
case 'validate':
|
|
85
|
+
await cmdValidate(ctx);
|
|
86
|
+
break;
|
|
87
|
+
case 'reindex':
|
|
88
|
+
await cmdReindex(ctx);
|
|
89
|
+
break;
|
|
90
|
+
case 'parse':
|
|
91
|
+
await cmdParse(ctx);
|
|
92
|
+
break;
|
|
93
|
+
// Audit
|
|
94
|
+
case 'history':
|
|
95
|
+
await cmdHistory(ctx);
|
|
96
|
+
break;
|
|
97
|
+
case 'audit':
|
|
98
|
+
await cmdAudit(ctx);
|
|
99
|
+
break;
|
|
100
|
+
// Auth (0.7.0)
|
|
101
|
+
case 'auth':
|
|
102
|
+
await cmdAuth({ instancePath, args });
|
|
103
|
+
break;
|
|
104
|
+
// MCP
|
|
105
|
+
case 'serve':
|
|
106
|
+
await cmdServe();
|
|
107
|
+
break;
|
|
108
|
+
case 'help':
|
|
109
|
+
case '--help':
|
|
110
|
+
case '-h':
|
|
111
|
+
case undefined:
|
|
112
|
+
printHelp();
|
|
113
|
+
break;
|
|
114
|
+
default:
|
|
115
|
+
console.error(`Unknown command: ${command}`);
|
|
116
|
+
printHelp();
|
|
117
|
+
process.exit(1);
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
function parseIntEnv(val, fallback) {
|
|
121
|
+
if (val === undefined || val === '')
|
|
122
|
+
return fallback;
|
|
123
|
+
const n = Number.parseInt(val, 10);
|
|
124
|
+
return Number.isFinite(n) && n > 0 ? n : fallback;
|
|
125
|
+
}
|
|
126
|
+
async function cmdServe() {
|
|
127
|
+
let role = process.env['MAAD_ROLE'];
|
|
128
|
+
let dryRun = false;
|
|
129
|
+
let provenance = process.env['MAAD_PROV'];
|
|
130
|
+
let transport = process.env['MAAD_TRANSPORT'] ?? 'stdio';
|
|
131
|
+
let httpHost = process.env['MAAD_HTTP_HOST'] ?? '127.0.0.1';
|
|
132
|
+
let httpPort = parseIntEnv(process.env['MAAD_HTTP_PORT'], 7733);
|
|
133
|
+
let httpMaxBody = parseIntEnv(process.env['MAAD_HTTP_MAX_BODY'], 1_048_576);
|
|
134
|
+
let headersTimeoutMs = parseIntEnv(process.env['MAAD_HTTP_HEADERS_TIMEOUT_MS'], 10_000);
|
|
135
|
+
let requestTimeoutMs = parseIntEnv(process.env['MAAD_HTTP_REQUEST_TIMEOUT_MS'], 60_000);
|
|
136
|
+
let keepAliveTimeoutMs = parseIntEnv(process.env['MAAD_HTTP_KEEPALIVE_TIMEOUT_MS'], 5_000);
|
|
137
|
+
let idleMs = parseIntEnv(process.env['MAAD_SESSION_IDLE_MS'], 1_800_000);
|
|
138
|
+
let trustProxy = process.env['MAAD_TRUST_PROXY'] === '1' || process.env['MAAD_TRUST_PROXY'] === 'true';
|
|
139
|
+
let authToken = process.env['MAAD_AUTH_TOKEN'];
|
|
140
|
+
// 0.7.5 (fup-2026-148) — Unix-socket transport
|
|
141
|
+
let socketPath = process.env['MAAD_UNIX_SOCKET'];
|
|
142
|
+
let socketMode = (() => {
|
|
143
|
+
const raw = process.env['MAAD_UNIX_SOCKET_MODE'];
|
|
144
|
+
if (!raw)
|
|
145
|
+
return undefined;
|
|
146
|
+
const n = Number.parseInt(raw, 8);
|
|
147
|
+
return Number.isFinite(n) && n > 0 ? n : undefined;
|
|
148
|
+
})();
|
|
149
|
+
for (let i = 0; i < args.length; i++) {
|
|
150
|
+
const a = args[i];
|
|
151
|
+
const next = args[i + 1];
|
|
152
|
+
if (a === '--role' && next)
|
|
153
|
+
role = next;
|
|
154
|
+
else if (a === '--dry-run')
|
|
155
|
+
dryRun = true;
|
|
156
|
+
else if (a === '--prov' && next)
|
|
157
|
+
provenance = next;
|
|
158
|
+
else if (a === '--transport' && next)
|
|
159
|
+
transport = next;
|
|
160
|
+
else if (a === '--http-host' && next)
|
|
161
|
+
httpHost = next;
|
|
162
|
+
else if (a === '--http-port' && next)
|
|
163
|
+
httpPort = parseIntEnv(next, httpPort);
|
|
164
|
+
else if (a === '--http-max-body' && next)
|
|
165
|
+
httpMaxBody = parseIntEnv(next, httpMaxBody);
|
|
166
|
+
else if (a === '--http-headers-timeout' && next)
|
|
167
|
+
headersTimeoutMs = parseIntEnv(next, headersTimeoutMs);
|
|
168
|
+
else if (a === '--http-request-timeout' && next)
|
|
169
|
+
requestTimeoutMs = parseIntEnv(next, requestTimeoutMs);
|
|
170
|
+
else if (a === '--http-keepalive-timeout' && next)
|
|
171
|
+
keepAliveTimeoutMs = parseIntEnv(next, keepAliveTimeoutMs);
|
|
172
|
+
else if (a === '--session-idle-ms' && next)
|
|
173
|
+
idleMs = parseIntEnv(next, idleMs);
|
|
174
|
+
else if (a === '--trust-proxy')
|
|
175
|
+
trustProxy = true;
|
|
176
|
+
else if (a === '--auth-token' && next)
|
|
177
|
+
authToken = next;
|
|
178
|
+
else if (a === '--unix-socket' && next)
|
|
179
|
+
socketPath = next;
|
|
180
|
+
else if (a === '--unix-socket-mode' && next) {
|
|
181
|
+
const n = Number.parseInt(next, 8);
|
|
182
|
+
if (Number.isFinite(n) && n > 0)
|
|
183
|
+
socketMode = n;
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
if (transport !== 'stdio' && transport !== 'http' && transport !== 'unix') {
|
|
187
|
+
console.error(`Error: --transport must be 'stdio', 'http', or 'unix' (got '${transport}')`);
|
|
188
|
+
process.exit(1);
|
|
189
|
+
}
|
|
190
|
+
if (transport === 'unix' && (!socketPath || socketPath.length === 0)) {
|
|
191
|
+
console.error("Error: --transport unix requires --unix-socket=<path> or MAAD_UNIX_SOCKET env");
|
|
192
|
+
process.exit(1);
|
|
193
|
+
}
|
|
194
|
+
// 0.7.0 — HTTP boot-mode enforcement moved to server.ts (needs TokenStore).
|
|
195
|
+
// CLI just passes authToken through; server validates via checkHttpAuthAtBoot.
|
|
196
|
+
const base = {
|
|
197
|
+
role,
|
|
198
|
+
dryRun,
|
|
199
|
+
provenance,
|
|
200
|
+
transport,
|
|
201
|
+
...(transport === 'http' || transport === 'unix' ? {
|
|
202
|
+
http: {
|
|
203
|
+
host: httpHost,
|
|
204
|
+
port: httpPort,
|
|
205
|
+
maxBodyBytes: httpMaxBody,
|
|
206
|
+
headersTimeoutMs,
|
|
207
|
+
requestTimeoutMs,
|
|
208
|
+
keepAliveTimeoutMs,
|
|
209
|
+
trustProxy,
|
|
210
|
+
idleMs,
|
|
211
|
+
authToken,
|
|
212
|
+
...(transport === 'unix' ? { socketPath, socketMode } : {}),
|
|
213
|
+
},
|
|
214
|
+
} : {}),
|
|
215
|
+
};
|
|
216
|
+
if (instancePath) {
|
|
217
|
+
await startServer({ ...base, instancePath: path.resolve(instancePath) });
|
|
218
|
+
}
|
|
219
|
+
else if (projectRoot) {
|
|
220
|
+
await startServer({ ...base, projectRoot: path.resolve(projectRoot) });
|
|
221
|
+
}
|
|
222
|
+
else {
|
|
223
|
+
console.error('Error: `serve` requires --project <dir> or --instance <path>.');
|
|
224
|
+
process.exit(1);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
function printHelp() {
|
|
228
|
+
console.log(`
|
|
229
|
+
MAAD — Markdown As A Database
|
|
230
|
+
|
|
231
|
+
Usage: maad <command> [options]
|
|
232
|
+
|
|
233
|
+
Commands:
|
|
234
|
+
init [dir] Initialize a new MAAD project
|
|
235
|
+
scan <file.md|dir> Analyze raw markdown (no registry needed)
|
|
236
|
+
summary Project snapshot (types, counts, sample IDs, object inventory)
|
|
237
|
+
describe Show project overview
|
|
238
|
+
get <doc_id> [depth] [block] Read a document (hot/warm/cold/full)
|
|
239
|
+
query <type> [--filter k=v] Find documents by type and filters
|
|
240
|
+
search <primitive> [opts] Search extracted objects (--subtype, --value, --contains, --doc)
|
|
241
|
+
related <doc_id> [direction] Show related documents
|
|
242
|
+
schema <type> Show field definitions for a type (for writes)
|
|
243
|
+
create <type> --field k=v [...] Create a new document
|
|
244
|
+
update <doc_id> --field k=v [...] Update a document's fields or body
|
|
245
|
+
validate [doc_id] Validate one or all documents
|
|
246
|
+
reindex [--force] Rebuild the index from markdown
|
|
247
|
+
parse <file.md> Parse a file and print the result
|
|
248
|
+
history <doc_id> Show git history for a document
|
|
249
|
+
audit [--since date] Show project-wide activity
|
|
250
|
+
serve [--transport stdio|http] [--role ...] [--prov ...] Start MCP server
|
|
251
|
+
|
|
252
|
+
Options:
|
|
253
|
+
--project <dir> Single-project mode (default for CLI cmds: cwd)
|
|
254
|
+
--instance <path> Multi-project mode: path to instance.yaml (serve only)
|
|
255
|
+
--role <role> MCP server role in single-project mode (default: reader)
|
|
256
|
+
--force Force full reindex (skip hash check)
|
|
257
|
+
--help Show this help
|
|
258
|
+
|
|
259
|
+
serve HTTP options (when --transport http or --transport unix):
|
|
260
|
+
--transport <stdio|http|unix> Transport selection (default: stdio)
|
|
261
|
+
--http-host <host> Bind address for http (default: 127.0.0.1)
|
|
262
|
+
--http-port <port> Bind port for http (default: 7733)
|
|
263
|
+
--unix-socket <path> Unix socket path (required for unix transport)
|
|
264
|
+
--unix-socket-mode <octal> Socket file mode (default: 660)
|
|
265
|
+
--auth-token <token> Bearer token (required for http/unix; prefer MAAD_AUTH_TOKEN env)
|
|
266
|
+
--http-max-body <bytes> Max request body bytes (default: 1048576)
|
|
267
|
+
--http-headers-timeout <ms> node:http headersTimeout (default: 10000)
|
|
268
|
+
--http-request-timeout <ms> node:http requestTimeout (default: 60000)
|
|
269
|
+
--http-keepalive-timeout <ms> node:http keepAliveTimeout (default: 5000)
|
|
270
|
+
--session-idle-ms <ms> Per-session idle eviction threshold (default: 1800000 = 30 min)
|
|
271
|
+
--trust-proxy Use X-Forwarded-For first hop for remote IP in logs (http only)
|
|
272
|
+
|
|
273
|
+
Environment Variables:
|
|
274
|
+
MAAD_PROJECT Project root (fallback for --project)
|
|
275
|
+
MAAD_INSTANCE Path to instance.yaml (fallback for --instance)
|
|
276
|
+
MAAD_ROLE Server role (fallback for --role)
|
|
277
|
+
MAAD_PROV Provenance mode (fallback for --prov)
|
|
278
|
+
MAAD_TRANSPORT stdio | http | unix (default: stdio)
|
|
279
|
+
MAAD_HTTP_HOST HTTP bind host (default: 127.0.0.1)
|
|
280
|
+
MAAD_HTTP_PORT HTTP bind port (default: 7733)
|
|
281
|
+
MAAD_UNIX_SOCKET Unix socket path (required when MAAD_TRANSPORT=unix)
|
|
282
|
+
MAAD_UNIX_SOCKET_MODE Socket file mode in octal (default: 660)
|
|
283
|
+
MAAD_AUTH_TOKEN Bearer token for HTTP/UDS transport (required)
|
|
284
|
+
MAAD_SESSION_IDLE_MS Per-session idle eviction threshold (default: 1800000)
|
|
285
|
+
MAAD_HTTP_MAX_BODY HTTP max body bytes (default: 1048576)
|
|
286
|
+
MAAD_HTTP_HEADERS_TIMEOUT_MS headersTimeout ms (default: 10000)
|
|
287
|
+
MAAD_HTTP_REQUEST_TIMEOUT_MS requestTimeout ms (default: 60000)
|
|
288
|
+
MAAD_HTTP_KEEPALIVE_TIMEOUT_MS keepAliveTimeout ms (default: 5000)
|
|
289
|
+
MAAD_TRUST_PROXY 1|true to trust X-Forwarded-For (default: false)
|
|
290
|
+
`);
|
|
291
|
+
}
|
|
292
|
+
main().catch(e => {
|
|
293
|
+
console.error(e);
|
|
294
|
+
process.exit(1);
|
|
295
|
+
});
|
|
296
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/cli/index.ts"],"names":[],"mappings":"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"}
|
package/dist/cli.d.ts
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AAMA,OAAO,gBAAgB,CAAC"}
|
package/dist/cli.js
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// ============================================================================
|
|
3
|
+
// Re-export from cli/ directory.
|
|
4
|
+
// All code lives in src/cli/*.ts — this file is the entry point passthrough.
|
|
5
|
+
// ============================================================================
|
|
6
|
+
import './cli/index.js';
|
|
7
|
+
//# sourceMappingURL=cli.js.map
|
package/dist/cli.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";AACA,+EAA+E;AAC/E,iCAAiC;AACjC,6EAA6E;AAC7E,+EAA+E;AAE/E,OAAO,gBAAgB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { type Result } from '../errors.js';
|
|
2
|
+
import { type DocId, type DocType, type ParsedCommit, type AuditEntry, type DiffResult, type SnapshotResult } from '../types.js';
|
|
3
|
+
import type { EngineContext } from './context.js';
|
|
4
|
+
export declare function history(ctx: EngineContext, id: DocId, opts?: {
|
|
5
|
+
limit?: number;
|
|
6
|
+
since?: string;
|
|
7
|
+
}): Promise<Result<ParsedCommit[]>>;
|
|
8
|
+
export declare function diff(ctx: EngineContext, id: DocId, from: string, to?: string): Promise<Result<DiffResult>>;
|
|
9
|
+
export declare function snapshot(ctx: EngineContext, id: DocId, at: string): Promise<Result<SnapshotResult>>;
|
|
10
|
+
export declare function audit(ctx: EngineContext, opts?: {
|
|
11
|
+
since?: string;
|
|
12
|
+
until?: string;
|
|
13
|
+
docType?: DocType;
|
|
14
|
+
}): Promise<Result<AuditEntry[]>>;
|
|
15
|
+
//# sourceMappingURL=audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.d.ts","sourceRoot":"","sources":["../../src/engine/audit.ts"],"names":[],"mappings":"AAMA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAEL,KAAK,KAAK,EACV,KAAK,OAAO,EACZ,KAAK,YAAY,EACjB,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAElD,wBAAsB,OAAO,CAC3B,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,KAAK,EACT,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAA;CAAE,GACxC,OAAO,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAQjC;AAED,wBAAsB,IAAI,CACxB,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,KAAK,EACT,IAAI,EAAE,MAAM,EACZ,EAAE,CAAC,EAAE,MAAM,GACV,OAAO,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,CAS7B;AAED,wBAAsB,QAAQ,CAC5B,GAAG,EAAE,aAAa,EAClB,EAAE,EAAE,KAAK,EACT,EAAE,EAAE,MAAM,GACT,OAAO,CAAC,MAAM,CAAC,cAAc,CAAC,CAAC,CASjC;AAED,wBAAsB,KAAK,CACzB,GAAG,EAAE,aAAa,EAClB,IAAI,CAAC,EAAE;IAAE,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAE,GAC3D,OAAO,CAAC,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAK/B"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Audit — history, diff, snapshot, audit (git-backed)
|
|
3
|
+
// ============================================================================
|
|
4
|
+
import { ok, singleErr } from '../errors.js';
|
|
5
|
+
export async function history(ctx, id, opts) {
|
|
6
|
+
if (!ctx.gitLayer)
|
|
7
|
+
return singleErr('GIT_NOT_INITIALIZED', 'Git is not available in this project');
|
|
8
|
+
const doc = ctx.backend.getDocument(id);
|
|
9
|
+
if (!doc)
|
|
10
|
+
return singleErr('FILE_NOT_FOUND', `Document "${id}" not found`);
|
|
11
|
+
const commits = await ctx.gitLayer.history(doc.filePath, opts);
|
|
12
|
+
return ok(commits);
|
|
13
|
+
}
|
|
14
|
+
export async function diff(ctx, id, from, to) {
|
|
15
|
+
if (!ctx.gitLayer)
|
|
16
|
+
return singleErr('GIT_NOT_INITIALIZED', 'Git is not available in this project');
|
|
17
|
+
const doc = ctx.backend.getDocument(id);
|
|
18
|
+
if (!doc)
|
|
19
|
+
return singleErr('FILE_NOT_FOUND', `Document "${id}" not found`);
|
|
20
|
+
const result = await ctx.gitLayer.diff(doc.filePath, id, from, to);
|
|
21
|
+
if (!result)
|
|
22
|
+
return singleErr('GIT_ERROR', 'Failed to compute diff');
|
|
23
|
+
return ok(result);
|
|
24
|
+
}
|
|
25
|
+
export async function snapshot(ctx, id, at) {
|
|
26
|
+
if (!ctx.gitLayer)
|
|
27
|
+
return singleErr('GIT_NOT_INITIALIZED', 'Git is not available in this project');
|
|
28
|
+
const doc = ctx.backend.getDocument(id);
|
|
29
|
+
if (!doc)
|
|
30
|
+
return singleErr('FILE_NOT_FOUND', `Document "${id}" not found`);
|
|
31
|
+
const result = await ctx.gitLayer.snapshot(doc.filePath, id, at);
|
|
32
|
+
if (!result)
|
|
33
|
+
return singleErr('GIT_ERROR', 'Failed to retrieve snapshot');
|
|
34
|
+
return ok(result);
|
|
35
|
+
}
|
|
36
|
+
export async function audit(ctx, opts) {
|
|
37
|
+
if (!ctx.gitLayer)
|
|
38
|
+
return singleErr('GIT_NOT_INITIALIZED', 'Git is not available in this project');
|
|
39
|
+
const entries = await ctx.gitLayer.audit(opts);
|
|
40
|
+
return ok(entries);
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=audit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit.js","sourceRoot":"","sources":["../../src/engine/audit.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,sDAAsD;AACtD,+EAA+E;AAI/E,OAAO,EAAE,EAAE,EAAE,SAAS,EAAe,MAAM,cAAc,CAAC;AAY1D,MAAM,CAAC,KAAK,UAAU,OAAO,CAC3B,GAAkB,EAClB,EAAS,EACT,IAAyC;IAEzC,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC,qBAAqB,EAAE,sCAAsC,CAAC,CAAC;IAEnG,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC,gBAAgB,EAAE,aAAa,EAAY,aAAa,CAAC,CAAC;IAErF,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,QAAkB,EAAE,IAAI,CAAC,CAAC;IACzE,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,IAAI,CACxB,GAAkB,EAClB,EAAS,EACT,IAAY,EACZ,EAAW;IAEX,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC,qBAAqB,EAAE,sCAAsC,CAAC,CAAC;IAEnG,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC,gBAAgB,EAAE,aAAa,EAAY,aAAa,CAAC,CAAC;IAErF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,IAAI,CAAC,GAAG,CAAC,QAAkB,EAAE,EAAE,EAAE,IAAI,EAAE,EAAE,CAAC,CAAC;IAC7E,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC,WAAW,EAAE,wBAAwB,CAAC,CAAC;IACrE,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,GAAkB,EAClB,EAAS,EACT,EAAU;IAEV,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC,qBAAqB,EAAE,sCAAsC,CAAC,CAAC;IAEnG,MAAM,GAAG,GAAG,GAAG,CAAC,OAAO,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;IACxC,IAAI,CAAC,GAAG;QAAE,OAAO,SAAS,CAAC,gBAAgB,EAAE,aAAa,EAAY,aAAa,CAAC,CAAC;IAErF,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,CAAC,GAAG,CAAC,QAAkB,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC;IAC3E,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC,WAAW,EAAE,6BAA6B,CAAC,CAAC;IAC1E,OAAO,EAAE,CAAC,MAAM,CAAC,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,KAAK,CACzB,GAAkB,EAClB,IAA4D;IAE5D,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,SAAS,CAAC,qBAAqB,EAAE,sCAAsC,CAAC,CAAC;IAEnG,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;IAC/C,OAAO,EAAE,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { type Result } from '../errors.js';
|
|
2
|
+
import { type DocId } from '../types.js';
|
|
3
|
+
import type { EngineContext } from './context.js';
|
|
4
|
+
import type { GetFullResult } from './types.js';
|
|
5
|
+
export declare function getDocumentFull(ctx: EngineContext, id: DocId): Promise<Result<GetFullResult>>;
|
|
6
|
+
//# sourceMappingURL=composites.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composites.d.ts","sourceRoot":"","sources":["../../src/engine/composites.ts"],"names":[],"mappings":"AAKA,OAAO,EAAiB,KAAK,MAAM,EAAE,MAAM,cAAc,CAAC;AAC1D,OAAO,EAEL,KAAK,KAAK,EACX,MAAM,aAAa,CAAC;AAErB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAGhD,wBAAsB,eAAe,CAAC,GAAG,EAAE,aAAa,EAAE,EAAE,EAAE,KAAK,GAAG,OAAO,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CA+FnG"}
|
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Composites — Tier 2 deterministic bundled reads (provisional)
|
|
3
|
+
// Evaluate after MCP: keep only if they measurably reduce tool chatter.
|
|
4
|
+
// ============================================================================
|
|
5
|
+
import { ok, singleErr } from '../errors.js';
|
|
6
|
+
import { docId as toDocId, } from '../types.js';
|
|
7
|
+
import { logger } from './logger.js';
|
|
8
|
+
import { readFrontmatter } from './helpers.js';
|
|
9
|
+
export async function getDocumentFull(ctx, id) {
|
|
10
|
+
const doc = ctx.backend.getDocument(id);
|
|
11
|
+
if (!doc)
|
|
12
|
+
return singleErr('FILE_NOT_FOUND', `Document "${id}" not found`);
|
|
13
|
+
const frontmatter = await readFrontmatter(ctx.projectRoot, doc);
|
|
14
|
+
// Resolve ref fields to names
|
|
15
|
+
const schema = ctx.schemaStore.getSchemaForType(doc.docType);
|
|
16
|
+
const resolvedRefs = {};
|
|
17
|
+
if (schema) {
|
|
18
|
+
for (const [fieldName, fieldDef] of schema.fields) {
|
|
19
|
+
if (fieldDef.type === 'ref' && frontmatter[fieldName]) {
|
|
20
|
+
const targetId = String(frontmatter[fieldName]);
|
|
21
|
+
const targetDoc = ctx.backend.getDocument(toDocId(targetId));
|
|
22
|
+
if (targetDoc) {
|
|
23
|
+
const targetFm = await readFrontmatter(ctx.projectRoot, targetDoc);
|
|
24
|
+
resolvedRefs[fieldName] = {
|
|
25
|
+
docId: targetId,
|
|
26
|
+
name: String(targetFm['name'] ?? targetFm['title'] ?? targetId),
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
}
|
|
32
|
+
const objects = ctx.backend.findObjects({ docId: id, limit: 50 });
|
|
33
|
+
const rels = ctx.backend.getRelationships(id, 'both');
|
|
34
|
+
// Batch lookup all related doc IDs
|
|
35
|
+
const relatedIds = new Set();
|
|
36
|
+
for (const rel of rels) {
|
|
37
|
+
if (rel.sourceDocId === id)
|
|
38
|
+
relatedIds.add(rel.targetDocId);
|
|
39
|
+
else
|
|
40
|
+
relatedIds.add(rel.sourceDocId);
|
|
41
|
+
}
|
|
42
|
+
const docsMap = ctx.backend.getDocumentsByIds([...relatedIds]);
|
|
43
|
+
const outgoing = [];
|
|
44
|
+
const incoming = [];
|
|
45
|
+
for (const rel of rels) {
|
|
46
|
+
if (rel.sourceDocId === id) {
|
|
47
|
+
const target = docsMap.get(rel.targetDocId);
|
|
48
|
+
outgoing.push({
|
|
49
|
+
docId: rel.targetDocId,
|
|
50
|
+
docType: (target?.docType ?? 'unknown'),
|
|
51
|
+
field: rel.field,
|
|
52
|
+
});
|
|
53
|
+
}
|
|
54
|
+
else {
|
|
55
|
+
const source = docsMap.get(rel.sourceDocId);
|
|
56
|
+
incoming.push({
|
|
57
|
+
docId: rel.sourceDocId,
|
|
58
|
+
docType: (source?.docType ?? 'unknown'),
|
|
59
|
+
field: rel.field,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
// Latest incoming note
|
|
64
|
+
let latestNote = null;
|
|
65
|
+
if (ctx.gitLayer) {
|
|
66
|
+
for (const inc of incoming) {
|
|
67
|
+
const incDoc = docsMap.get(toDocId(inc.docId));
|
|
68
|
+
if (!incDoc)
|
|
69
|
+
continue;
|
|
70
|
+
if (!(inc.docType.includes('note')))
|
|
71
|
+
continue;
|
|
72
|
+
try {
|
|
73
|
+
const history = await ctx.gitLayer.history(incDoc.filePath, { limit: 1 });
|
|
74
|
+
if (history.length > 0) {
|
|
75
|
+
const entry = history[0];
|
|
76
|
+
if (!latestNote || entry.timestamp > latestNote.timestamp) {
|
|
77
|
+
latestNote = {
|
|
78
|
+
docId: inc.docId,
|
|
79
|
+
summary: entry.summary,
|
|
80
|
+
timestamp: entry.timestamp,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
catch (e) {
|
|
86
|
+
logger.bestEffort('composites', 'getDocumentFull.latestNote', `Git history lookup failed for ${inc.docId}`, { error: e instanceof Error ? e.message : String(e) });
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return ok({
|
|
91
|
+
docId: doc.docId,
|
|
92
|
+
docType: doc.docType,
|
|
93
|
+
version: doc.version,
|
|
94
|
+
updatedAt: doc.updatedAt,
|
|
95
|
+
frontmatter,
|
|
96
|
+
resolvedRefs,
|
|
97
|
+
objects,
|
|
98
|
+
related: { outgoing, incoming },
|
|
99
|
+
latestNote,
|
|
100
|
+
});
|
|
101
|
+
}
|
|
102
|
+
//# sourceMappingURL=composites.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"composites.js","sourceRoot":"","sources":["../../src/engine/composites.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import type { Registry, SchemaStore } from '../types.js';
|
|
2
|
+
import type { MaadBackend } from '../backend/index.js';
|
|
3
|
+
import type { GitLayer, CommitOptions, CommitOutcome } from '../git/index.js';
|
|
4
|
+
import type { CommitIdentity } from '../git/commit.js';
|
|
5
|
+
import type { OperationJournal } from './journal.js';
|
|
6
|
+
/**
|
|
7
|
+
* 0.6.10 — Mutable counters on the context so a write-path failure in
|
|
8
|
+
* `gitCommit` can be surfaced through `maad_health` without plumbing state
|
|
9
|
+
* back to the engine. Initialized once per engine init; bumped by `gitCommit`
|
|
10
|
+
* on the 'failed' outcome.
|
|
11
|
+
*/
|
|
12
|
+
export interface CommitFailureTracker {
|
|
13
|
+
count: number;
|
|
14
|
+
lastAt: string | null;
|
|
15
|
+
lastCode: string | null;
|
|
16
|
+
lastMessage: string | null;
|
|
17
|
+
lastAction: 'create' | 'update' | 'delete' | null;
|
|
18
|
+
lastDocId: string | null;
|
|
19
|
+
}
|
|
20
|
+
export declare function newCommitFailureTracker(): CommitFailureTracker;
|
|
21
|
+
export interface EngineContext {
|
|
22
|
+
projectRoot: string;
|
|
23
|
+
registry: Registry;
|
|
24
|
+
schemaStore: SchemaStore;
|
|
25
|
+
backend: MaadBackend;
|
|
26
|
+
gitLayer: GitLayer | null;
|
|
27
|
+
journal: OperationJournal;
|
|
28
|
+
readOnly: boolean;
|
|
29
|
+
commitFailures: CommitFailureTracker;
|
|
30
|
+
/**
|
|
31
|
+
* 0.7.0 — Identity snapshot set per-operation by the MCP layer inside the
|
|
32
|
+
* write mutex. When populated AND MAAD_COMMIT_IDENTITY is not "false",
|
|
33
|
+
* gitCommit passes it through to the commit builder so commit messages
|
|
34
|
+
* get role/token/agent/user lines appended.
|
|
35
|
+
*/
|
|
36
|
+
commitIdentity?: CommitIdentity;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Run a git commit and return the outcome. When gitLayer is absent (git not
|
|
40
|
+
* initialized or disabled), returns `noop` — the caller treats that as
|
|
41
|
+
* durable since there's no git to reconcile against. When the commit fails,
|
|
42
|
+
* the failure is logged on the ops channel AND tallied on
|
|
43
|
+
* `ctx.commitFailures` so `maad_health` can surface it; the caller gets the
|
|
44
|
+
* outcome back and can stamp `write_durable: false` on the MCP response.
|
|
45
|
+
*/
|
|
46
|
+
export declare function gitCommit(ctx: EngineContext, opts: CommitOptions): Promise<CommitOutcome>;
|
|
47
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/engine/context.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,QAAQ,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AACzD,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,KAAK,EAAE,QAAQ,EAAE,aAAa,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIrD;;;;;GAKG;AACH,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,GAAG,IAAI,CAAC;IACtB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,GAAG,IAAI,CAAC;IAClD,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;CAC1B;AAED,wBAAgB,uBAAuB,IAAI,oBAAoB,CAS9D;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,EAAE,QAAQ,CAAC;IACnB,WAAW,EAAE,WAAW,CAAC;IACzB,OAAO,EAAE,WAAW,CAAC;IACrB,QAAQ,EAAE,QAAQ,GAAG,IAAI,CAAC;IAC1B,OAAO,EAAE,gBAAgB,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;IAClB,cAAc,EAAE,oBAAoB,CAAC;IACrC;;;;;OAKG;IACH,cAAc,CAAC,EAAE,cAAc,CAAC;CACjC;AAED;;;;;;;GAOG;AACH,wBAAsB,SAAS,CAAC,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,aAAa,GAAG,OAAO,CAAC,aAAa,CAAC,CA6B/F"}
|
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
// ============================================================================
|
|
2
|
+
// Engine Context — shared state passed to all domain modules
|
|
3
|
+
// ============================================================================
|
|
4
|
+
import { logger } from './logger.js';
|
|
5
|
+
import { logCommitFailure } from '../logging.js';
|
|
6
|
+
export function newCommitFailureTracker() {
|
|
7
|
+
return {
|
|
8
|
+
count: 0,
|
|
9
|
+
lastAt: null,
|
|
10
|
+
lastCode: null,
|
|
11
|
+
lastMessage: null,
|
|
12
|
+
lastAction: null,
|
|
13
|
+
lastDocId: null,
|
|
14
|
+
};
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Run a git commit and return the outcome. When gitLayer is absent (git not
|
|
18
|
+
* initialized or disabled), returns `noop` — the caller treats that as
|
|
19
|
+
* durable since there's no git to reconcile against. When the commit fails,
|
|
20
|
+
* the failure is logged on the ops channel AND tallied on
|
|
21
|
+
* `ctx.commitFailures` so `maad_health` can surface it; the caller gets the
|
|
22
|
+
* outcome back and can stamp `write_durable: false` on the MCP response.
|
|
23
|
+
*/
|
|
24
|
+
export async function gitCommit(ctx, opts) {
|
|
25
|
+
if (!ctx.gitLayer)
|
|
26
|
+
return { status: 'noop' };
|
|
27
|
+
// 0.7.0 — Thread commit identity through when set by the MCP layer.
|
|
28
|
+
// Engine-level direct callers (CLI imports, tests) leave ctx.commitIdentity
|
|
29
|
+
// undefined; formatCommitMessage then emits the bare title.
|
|
30
|
+
const enriched = ctx.commitIdentity !== undefined
|
|
31
|
+
? { ...opts, identity: ctx.commitIdentity }
|
|
32
|
+
: opts;
|
|
33
|
+
const outcome = await ctx.gitLayer.commit(enriched);
|
|
34
|
+
if (outcome.status === 'failed') {
|
|
35
|
+
ctx.commitFailures.count++;
|
|
36
|
+
ctx.commitFailures.lastAt = new Date().toISOString();
|
|
37
|
+
ctx.commitFailures.lastCode = outcome.code;
|
|
38
|
+
ctx.commitFailures.lastMessage = outcome.message;
|
|
39
|
+
ctx.commitFailures.lastAction = opts.action;
|
|
40
|
+
ctx.commitFailures.lastDocId = opts.docId;
|
|
41
|
+
logCommitFailure({
|
|
42
|
+
code: outcome.code,
|
|
43
|
+
message: outcome.message,
|
|
44
|
+
action: opts.action,
|
|
45
|
+
doc_id: opts.docId,
|
|
46
|
+
doc_type: opts.docType,
|
|
47
|
+
file_count: opts.files.length,
|
|
48
|
+
});
|
|
49
|
+
// Keep the dev-facing log line so the existing logger.bestEffort signal
|
|
50
|
+
// stays visible for humans tailing ops in non-JSON mode.
|
|
51
|
+
logger.bestEffort('git', 'commit', `Git commit failed for ${opts.docId}: ${outcome.code} — ${outcome.message}`);
|
|
52
|
+
}
|
|
53
|
+
return outcome;
|
|
54
|
+
}
|
|
55
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../src/engine/context.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,6DAA6D;AAC7D,+EAA+E;AAO/E,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,gBAAgB,EAAE,MAAM,eAAe,CAAC;AAiBjD,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL,KAAK,EAAE,CAAC;QACR,MAAM,EAAE,IAAI;QACZ,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,IAAI;QACjB,UAAU,EAAE,IAAI;QAChB,SAAS,EAAE,IAAI;KAChB,CAAC;AACJ,CAAC;AAoBD;;;;;;;GAOG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,GAAkB,EAAE,IAAmB;IACrE,IAAI,CAAC,GAAG,CAAC,QAAQ;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,CAAC;IAC7C,oEAAoE;IACpE,4EAA4E;IAC5E,4DAA4D;IAC5D,MAAM,QAAQ,GAAkB,GAAG,CAAC,cAAc,KAAK,SAAS;QAC9D,CAAC,CAAC,EAAE,GAAG,IAAI,EAAE,QAAQ,EAAE,GAAG,CAAC,cAAc,EAAE;QAC3C,CAAC,CAAC,IAAI,CAAC;IACT,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACpD,IAAI,OAAO,CAAC,MAAM,KAAK,QAAQ,EAAE,CAAC;QAChC,GAAG,CAAC,cAAc,CAAC,KAAK,EAAE,CAAC;QAC3B,GAAG,CAAC,cAAc,CAAC,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC;QACrD,GAAG,CAAC,cAAc,CAAC,QAAQ,GAAG,OAAO,CAAC,IAAI,CAAC;QAC3C,GAAG,CAAC,cAAc,CAAC,WAAW,GAAG,OAAO,CAAC,OAAO,CAAC;QACjD,GAAG,CAAC,cAAc,CAAC,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;QAC5C,GAAG,CAAC,cAAc,CAAC,SAAS,GAAG,IAAI,CAAC,KAAe,CAAC;QACpD,gBAAgB,CAAC;YACf,IAAI,EAAE,OAAO,CAAC,IAAI;YAClB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,MAAM,EAAE,IAAI,CAAC,KAAe;YAC5B,QAAQ,EAAE,IAAI,CAAC,OAAiB;YAChC,UAAU,EAAE,IAAI,CAAC,KAAK,CAAC,MAAM;SAC9B,CAAC,CAAC;QACH,wEAAwE;QACxE,yDAAyD;QACzD,MAAM,CAAC,UAAU,CAAC,KAAK,EAAE,QAAQ,EAAE,yBAAyB,IAAI,CAAC,KAAe,KAAK,OAAO,CAAC,IAAI,MAAM,OAAO,CAAC,OAAO,EAAE,CAAC,CAAC;IAC5H,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
export interface DocIdRejection {
|
|
2
|
+
reason: 'EMPTY' | 'TOO_LONG' | 'CONTAINS_DOTDOT' | 'LEADING_DOT' | 'INVALID_CHARS' | 'WINDOWS_RESERVED' | 'CONTROL_CHARS';
|
|
3
|
+
message: string;
|
|
4
|
+
}
|
|
5
|
+
export declare function checkDocIdSafe(docId: string): DocIdRejection | null;
|
|
6
|
+
export declare function assertDocIdSafe(docId: string): void;
|
|
7
|
+
export declare const DOC_ID_MAX_LEN = 128;
|
|
8
|
+
//# sourceMappingURL=docid-safe.d.ts.map
|