@maadb/core 0.11.2 → 0.12.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. package/README.md +16 -4
  2. package/dist/architect.d.ts.map +1 -1
  3. package/dist/architect.js +20 -70
  4. package/dist/architect.js.map +1 -1
  5. package/dist/claude-md.d.ts +1 -0
  6. package/dist/claude-md.d.ts.map +1 -1
  7. package/dist/claude-md.js +19 -90
  8. package/dist/claude-md.js.map +1 -1
  9. package/dist/cli/commands/maintain.d.ts +1 -0
  10. package/dist/cli/commands/maintain.d.ts.map +1 -1
  11. package/dist/cli/commands/maintain.js +82 -23
  12. package/dist/cli/commands/maintain.js.map +1 -1
  13. package/dist/cli/index.js +28 -1
  14. package/dist/cli/index.js.map +1 -1
  15. package/dist/engine/maintenance.d.ts +8 -0
  16. package/dist/engine/maintenance.d.ts.map +1 -1
  17. package/dist/engine/maintenance.js +34 -1
  18. package/dist/engine/maintenance.js.map +1 -1
  19. package/dist/engine/types.d.ts +15 -0
  20. package/dist/engine/types.d.ts.map +1 -1
  21. package/dist/instance/pool.d.ts.map +1 -1
  22. package/dist/instance/pool.js +6 -2
  23. package/dist/instance/pool.js.map +1 -1
  24. package/dist/instructions/manifest.d.ts +53 -0
  25. package/dist/instructions/manifest.d.ts.map +1 -0
  26. package/dist/instructions/manifest.js +128 -0
  27. package/dist/instructions/manifest.js.map +1 -0
  28. package/dist/logging.d.ts +13 -0
  29. package/dist/logging.d.ts.map +1 -1
  30. package/dist/logging.js +6 -0
  31. package/dist/logging.js.map +1 -1
  32. package/dist/maad-md.d.ts +1 -10
  33. package/dist/maad-md.d.ts.map +1 -1
  34. package/dist/maad-md.js +116 -243
  35. package/dist/maad-md.js.map +1 -1
  36. package/dist/mcp/kinds.d.ts.map +1 -1
  37. package/dist/mcp/kinds.js +3 -0
  38. package/dist/mcp/kinds.js.map +1 -1
  39. package/dist/mcp/lifecycle.d.ts.map +1 -1
  40. package/dist/mcp/lifecycle.js +4 -1
  41. package/dist/mcp/lifecycle.js.map +1 -1
  42. package/dist/mcp/server.d.ts +6 -0
  43. package/dist/mcp/server.d.ts.map +1 -1
  44. package/dist/mcp/server.js +1 -0
  45. package/dist/mcp/server.js.map +1 -1
  46. package/dist/mcp/tools/discover.d.ts.map +1 -1
  47. package/dist/mcp/tools/discover.js +11 -1
  48. package/dist/mcp/tools/discover.js.map +1 -1
  49. package/dist/mcp/tools/maintain.d.ts.map +1 -1
  50. package/dist/mcp/tools/maintain.js +61 -1
  51. package/dist/mcp/tools/maintain.js.map +1 -1
  52. package/dist/mcp/tools/write.d.ts.map +1 -1
  53. package/dist/mcp/tools/write.js +8 -2
  54. package/dist/mcp/tools/write.js.map +1 -1
  55. package/dist/mcp/transport/http.d.ts +10 -0
  56. package/dist/mcp/transport/http.d.ts.map +1 -1
  57. package/dist/mcp/transport/http.js +34 -9
  58. package/dist/mcp/transport/http.js.map +1 -1
  59. package/dist/mcp/transport/origin.d.ts +33 -0
  60. package/dist/mcp/transport/origin.d.ts.map +1 -0
  61. package/dist/mcp/transport/origin.js +106 -0
  62. package/dist/mcp/transport/origin.js.map +1 -0
  63. package/dist/schema/index.d.ts +1 -1
  64. package/dist/schema/index.d.ts.map +1 -1
  65. package/dist/schema/index.js +1 -1
  66. package/dist/schema/index.js.map +1 -1
  67. package/dist/schema/loader.js +60 -0
  68. package/dist/schema/loader.js.map +1 -1
  69. package/dist/schema/validator.d.ts +6 -0
  70. package/dist/schema/validator.d.ts.map +1 -1
  71. package/dist/schema/validator.js +60 -0
  72. package/dist/schema/validator.js.map +1 -1
  73. package/dist/skill-files.d.ts.map +1 -1
  74. package/dist/skill-files.js +65 -17
  75. package/dist/skill-files.js.map +1 -1
  76. package/dist/skills-scaffold.d.ts +6 -0
  77. package/dist/skills-scaffold.d.ts.map +1 -1
  78. package/dist/skills-scaffold.js +38 -29
  79. package/dist/skills-scaffold.js.map +1 -1
  80. package/dist/types.d.ts +10 -0
  81. package/dist/types.d.ts.map +1 -1
  82. package/dist/writer/serializer.d.ts.map +1 -1
  83. package/dist/writer/serializer.js +15 -3
  84. package/dist/writer/serializer.js.map +1 -1
  85. package/package.json +1 -1
package/README.md CHANGED
@@ -293,6 +293,16 @@ session when the limit is reached. Tune the bound with `MAAD_SESSION_MAX` or
293
293
  `--session-max`; evicted session IDs receive `SESSION_NOT_FOUND` and must
294
294
  initialize again.
295
295
 
296
+ Per the MCP Streamable HTTP spec, `/mcp` validates the `Origin` header as a
297
+ DNS-rebinding defense. Requests without an `Origin` header — every normal MCP
298
+ client, SDK, or backend service — pass unaffected. A request that presents an
299
+ `Origin` is rejected `403 ORIGIN_FORBIDDEN` unless that exact origin is
300
+ allowlisted via `MAAD_HTTP_ALLOWED_ORIGINS` (comma-separated) or repeatable
301
+ `--http-allowed-origin` flags. The default (empty allowlist) rejects all
302
+ browser-originated requests; no wildcards, no implicit localhost. Only
303
+ deployments where a web page calls `/mcp` directly need entries — a browser
304
+ talking to your app's backend, which then calls MAADb, does not.
305
+
296
306
  Hot-reload tokens + instance config on edits: `sudo systemctl reload maad` (or `docker compose kill -s SIGHUP maad`). Rotate tokens via `maad auth rotate-token --id=tok-<id>`; revoke via `maad auth revoke-token --id=tok-<id>`. Full auth primitives: [`docs/archive/0.7.0-scoped-auth.md`](docs/archive/0.7.0-scoped-auth.md).
297
307
 
298
308
  Deployment guides:
@@ -324,15 +334,17 @@ my-project/
324
334
  _backend/ # SQLite index — gitignored, rebuildable
325
335
  maad.db
326
336
  _import/ # Drop zone for raw markdown imports
327
- _skills/ # Agent skill files (architect, import, etc.)
328
- MAAD.md # Generated: stable agent operating instructions
329
- CLAUDE.md # Generated: MCP-first agent workflow guide
337
+ _skills/ # Agent skill files (architect, import, etc.) — engine-managed
338
+ MAAD.md # Managed: canonical agent operating instructions (static, stamped)
339
+ CLAUDE.md / AGENTS.md # Created once at init: thin pointers to MAAD.md, user-owned after
330
340
  <type-dirs>/ # Record files — one directory per type
331
341
  cas-2026-001.md
332
342
  ```
333
343
 
334
344
  **Convention:** `_` prefix = engine-managed (don't hand-edit unless you know what you're doing). Every other directory holds records.
335
345
 
346
+ **Managed instructions have a lifecycle.** `MAAD.md` and the `_skills/` guides carry a `maadb:managed` stamp (generator version + content hash). `maad instructions check` classifies each file — `current`, `outdated` (pristine but stale), `modified` (user-edited), `unmanaged` (pre-stamp vintage) — and `maad instructions refresh` (dry-run by default, `--apply` to write, `--force` to also replace modified/unmanaged) updates them as a dedicated git commit. Engine upgrades never rewrite instruction files on their own: boot and reindex only emit an `instructions_outdated` advisory, and `maad_summary` flags staleness. The MCP surface mirrors this via the `maad_instructions` tool (check for any role; refresh is admin-gated).
347
+
336
348
  **Record directories are type-declared, not hardcoded.** Each type in `_registry/object_types.yaml` declares its own `path:` — e.g. `cases/`, `clients/`, `data/cases/`, whatever you prefer. The architect skill picks a layout that fits the data shape.
337
349
 
338
350
  ## MCP tools
@@ -342,7 +354,7 @@ All tools return `{ ok: true, data: {...} }` or `{ ok: false, errors: [...] }`.
342
354
  **Discover:** `maad_scan`, `maad_summary`, `maad_describe`, `maad_schema`
343
355
  **Read:** `maad_get`, `maad_query`, `maad_search`, `maad_related`, `maad_aggregate`, `maad_join`, `maad_verify`, `maad_find_orphans`, `maad_changes_since`, `maad_semantic_search`
344
356
  **Write:** `maad_create`, `maad_update`, `maad_bulk_create`, `maad_bulk_update`, `maad_validate`
345
- **Maintain:** `maad_delete`, `maad_reindex`, `maad_reload`, `maad_health`, `maad_history`, `maad_audit`
357
+ **Maintain:** `maad_delete`, `maad_reindex`, `maad_reload`, `maad_health`, `maad_history`, `maad_audit`, `maad_instructions`
346
358
  **Recovery anchors (0.7.10+):** `maad_backup` — annotated git tags as snapshot points.
347
359
  **Cleanup (0.7.10+ admin, confirm-contract governed):** `maad_bulk_delete`, `maad_delete_where`, `maad_repair_where`, `maad_purge_soft_deleted` — destructive ops are dry-run by default; pass `confirm: true` to mutate. `maxRecords` cap default 100 / ceiling 1000.
348
360
  **Live updates (0.6.11+):** `maad_subscribe`, `maad_unsubscribe` — push notifications on durable writes.
@@ -1 +1 @@
1
- {"version":3,"file":"architect.d.ts","sourceRoot":"","sources":["../src/architect.ts"],"names":[],"mappings":"AAMA,wBAAgB,sBAAsB,IAAI,MAAM,CA0Q/C"}
1
+ {"version":3,"file":"architect.d.ts","sourceRoot":"","sources":["../src/architect.ts"],"names":[],"mappings":"AAMA,wBAAgB,sBAAsB,IAAI,MAAM,CAwN/C"}
package/dist/architect.js CHANGED
@@ -10,7 +10,10 @@ export function generateArchitectSkill() {
10
10
 
11
11
  You are the MAADb Architect. Your job is to design, deploy, and maintain MAADb database instances. You receive requirements — from another agent, a system spec, or a human — and produce a working database.
12
12
 
13
- You use MAADb MCP tools for all operations. You do not use shell commands.
13
+ **Channel boundary (important):**
14
+ - **Project data records** — MAADb MCP tools only, always.
15
+ - **Schema/config authoring** (\`_registry/object_types.yaml\`, \`_schema/*.yaml\`) — MAADb exposes no MCP primitive for these. Use the deployment's approved channel: direct filesystem access when you legitimately have it (local dev, CLI operator), or the host application's schema-installation mechanism in hosted deployments. After any registry/schema change, call \`maad_reload\`.
16
+ - **No approved channel available?** Stop and hand the schema files to the operator or host application to install. Do not improvise writes through tools not meant for it, and do not promise autonomous schema deployment you cannot perform.
14
17
 
15
18
  ## Operating Modes
16
19
 
@@ -45,51 +48,15 @@ When you need more information, ask about the business — not about databases.
45
48
 
46
49
  Stop asking when you have enough to design. Three rounds maximum.
47
50
 
48
- ## Domain Knowledge
49
-
50
- Use these patterns to fill gaps without asking. When the requester says a business type, you already know the common structure.
51
-
52
- ### Service businesses (plumbing, HVAC, electrical, landscaping, cleaning)
53
- - **Customers**: name, address, phone, email, type (residential/commercial), since date. Master.
54
- - **Technicians/Staff**: name, phone, certifications, hire date, specialties. Master.
55
- - **Jobs/Work Orders**: customer ref, technician ref, service type, scheduled date, status, location, amount. Master (individually tracked).
56
- - **Job Notes/Updates**: append to job file. Dispatch updates, technician field notes, completion notes. Transaction.
57
- - **Invoices**: customer ref, job ref, amount, status, due date, paid date. Master if <5K/yr, transaction if more.
58
- - **Service Types/Catalog**: name, base rate, category, duration estimate. Master (small, stable).
59
- - **Parts/Inventory**: name, SKU, cost, supplier, quantity. Master.
60
- - Typical: 500-2000 customers, 2000-10000 jobs/yr, 5-50 staff.
61
-
62
- ### Professional services (legal, consulting, accounting, agencies)
63
- - **Clients**: company name, industry, primary contact, since date, status. Master.
64
- - **Contacts**: name, email, phone, role, client ref. Master.
65
- - **Cases/Projects/Engagements**: client ref, type, status, assigned staff, opened/closed dates. Master.
66
- - **Notes/Activity Log**: append to case/project file. Meetings, calls, filings, research. Transaction.
67
- - **Billing/Time Entries**: append to case file or separate. Hours, rate, description, date. Transaction.
68
- - **Documents/Filings**: per case, tracked as records with metadata. Master if individually referenced.
69
- - Typical: 50-500 clients, 100-2000 cases/yr, 5-50 staff.
70
-
71
- ### Retail / E-commerce
72
- - **Customers**: name, email, phone, address, tier, since date. Master.
73
- - **Products**: name, SKU, price, category, supplier, stock. Master.
74
- - **Orders**: customer ref, date, status, total, items. Master (individually tracked).
75
- - **Order Items**: append to order or separate line items. Transaction if high volume.
76
- - **Inventory Log**: append to product file. Stock changes, restocks, adjustments. Transaction.
77
- - Typical: 1000-100000 customers, 5000-500000 orders/yr.
78
-
79
- ### Healthcare / Clinical
80
- - **Patients**: name, DOB, contact, insurance, primary provider. Master.
81
- - **Providers/Staff**: name, credentials, specialty, department. Master.
82
- - **Visits/Encounters**: patient ref, provider ref, date, type, notes. Master if individually tracked.
83
- - **Clinical Notes**: append to patient file or visit file. Transaction.
84
- - **Prescriptions**: patient ref, medication, dosage, provider, date. Master or transaction depending on volume.
85
- - **Billing**: patient ref, visit ref, codes, amount, status. Master.
86
- - Typical: 500-50000 patients, 2000-100000 visits/yr.
87
-
88
- ### General rules (apply to all domains)
51
+ ## Design Rules
52
+
53
+ Use your own domain knowledge to fill structural gaps without asking — you
54
+ already know what a CRM, case-management, or clinical structure looks like.
55
+ Apply these MAADb-specific constraints on top:
56
+
89
57
  - Entities with names/identities = master (customers, staff, products, cases)
90
58
  - Entries that accumulate over time under a parent = transaction (notes, logs, events)
91
- - If >1000 records/year → transaction pattern (append to parent file)
92
- - If <1000 records/year → master pattern (one file per record)
59
+ - **Master vs transaction is a design checkpoint, not a numeric cutoff.** Blocks appended to a parent file give up independent frontmatter, schema validation, filtering, refs, lifecycle, and deletion/retention handling. Decide per type using expected volume, queryability needs, mutation patterns, retention/audit requirements, and git behavior — very high-volume individually-queryable records may still warrant master files; low-volume never-queried log lines may still suit blocks.
93
60
  - Status fields are almost always enums
94
61
  - Date fields: declare \`store_precision\` for the minimum precision the schema expects (\`year\` / \`month\` / \`day\` / \`hour\` / \`minute\` / \`second\` / \`millisecond\`). Default \`on_coarser: warn\` surfaces drift without blocking the write; \`error\` opts into strict rejection. \`display_precision\` is a consumer-side rendering hint; the engine never enforces it. Pick per field meaning: identity dates (birthdays, since_date) = \`day\`; event timestamps (opened_at, logged_at) = \`second\` or \`millisecond\`. See \`_skills/schema-guide.md\` for the full contract.
95
62
  - Money fields use amount type ("1250.00 USD")
@@ -147,7 +114,7 @@ Only declare precision hints on date fields where the contract actually matters.
147
114
  Once you have enough information:
148
115
 
149
116
  ### 1. Classify types
150
- For each entity, determine: master or transaction. Use the >1K/year rule.
117
+ For each entity, determine: master or transaction. Use the design checkpoint from Design Rules — volume, queryability, mutation, retention, audit, git behavior.
151
118
 
152
119
  ### 2. Map relationships
153
120
  Draw the refs: what points to what. A job refs a customer and a technician. A note appends to a job.
@@ -185,34 +152,16 @@ If operating with partial spec or interactively: present and wait for confirmati
185
152
 
186
153
  After design is confirmed (or in autonomous mode):
187
154
 
188
- 1. Write \`_registry/object_types.yaml\` with all types
189
- 2. Write \`_schema/<type>.v1.yaml\` for each type
155
+ 1. Write \`_registry/object_types.yaml\` with all types — via the approved schema channel (see Channel boundary above)
156
+ 2. Write \`_schema/<type>.v1.yaml\` for each type — same channel
190
157
  3. Call \`maad_reload\` to pick up new config
191
158
  4. Call \`maad_summary\` to verify engine loaded the types
192
159
  5. Optionally create 1-2 sample records per type to validate the schema
193
160
  6. Inspect \`_meta.warnings[]\` on sample-record responses — if intended-coarse values trip precision warnings, tighten the schema or adjust the sample input before proceeding
194
161
  7. Call \`maad_reindex\` if sample records were created
195
162
  8. Report: "Database deployed. X types, Y fields. Ready for data."
196
- 9. **Register your own identity** as an agent record. Use the existence-check-then-create pattern — do **not** call \`maad_create\` blindly, it will collide on re-runs against an already-bootstrapped project:
197
-
198
- \`\`\`
199
- maad_get agt-architect
200
- → if not found:
201
- maad_create agent {
202
- docId: "agt-architect",
203
- name: "architect",
204
- role: "MAADb Architect — bootstrapped this project's schema",
205
- description: "Designed registry + schemas on <ISO date>",
206
- status: "active",
207
- created_at: <now ISO>
208
- }
209
- → if already exists:
210
- You're re-running against a bootstrapped project. Skip the
211
- create; optionally \`maad_update\` to refresh \`description\`
212
- if you're reorganizing schemas.
213
- \`\`\`
214
-
215
- This persists provenance — queryable later as "which agent bootstrapped this project." Load-bearing once multiple architect instances operate (e.g., hosted deployments where each tenant brain gets its own bootstrap) or when compliance audits need design-time attribution.
163
+
164
+ **Agent provenance:** design-time attribution already flows through transport, session, and audit metadata — do not create an agent record by default. Create a domain agent record only when the live schema defines an \`agent\` type AND the project's own model calls for one; use the existence-check-then-create pattern (\`maad_get\` first) so re-runs don't collide.
216
165
 
217
166
  ## Bulk Data Import
218
167
 
@@ -250,7 +199,7 @@ Then transition to MAADb User mode for day-to-day operations, or hand control ba
250
199
 
251
200
  ## Change Propagation
252
201
 
253
- If the project will involve multiple agents, a hosted deployment, or scheduled workers, point the user at \`docs/change-feed.md\` in the engine repo. Key calls: \`maad_changes_since\` is the polling delta tool (shipped); cursor must be persisted between calls; in HTTP deployments polling belongs in the gateway, not the agent's reasoning loop; push via \`maad_subscribe\` is roadmapped for 0.6.5. Do not invent custom polling cadence in skill files — follow the patterns in the reference doc.
202
+ If the project will involve multiple agents, a hosted deployment, or scheduled workers, point the user at \`docs/change-feed.md\` in the engine repo. The recommended pattern is **live subscription plus cursor catch-up**: \`maad_subscribe\` for push notifications on writes (\`maad_unsubscribe\` / \`maad_subscriptions\` to manage), and \`maad_changes_since\` to catch up after reconnects or notification gaps. The cursor must be persisted between calls. In HTTP deployments, polling cadence belongs in the gateway, not the agent's reasoning loop. Do not invent custom polling cadence in skill files — follow the patterns in the reference doc.
254
203
 
255
204
  ## What MAADb Is and Is Not
256
205
 
@@ -264,8 +213,9 @@ If the project will involve multiple agents, a hosted deployment, or scheduled w
264
213
  **Not a fit (yet):**
265
214
  - Real-time transactional systems (stock trading, live telemetry)
266
215
  - Binary data (images, videos — only metadata refs)
267
- - >100K writes/day (SQLite single-writer constraint)
268
- - Multi-tenant SaaS (one project = one tenant currently)
216
+ - >100K writes/day per project (single-writer-per-project constraint)
217
+
218
+ **Tenancy model:** isolation is per-project — each project has its own directory tree, index, git history, and a single writer. One instance hosts many projects, with session binding (\`maad_use_project\`), per-project effective roles, and gateway pinning for hosted deployments. Design tenant boundaries as projects; do not mix tenants inside one project.
269
219
 
270
220
  Be honest about limitations when asked. Recommend alternatives when MAADb isn't the right tool.
271
221
  `;
@@ -1 +1 @@
1
- {"version":3,"file":"architect.js","sourceRoot":"","sources":["../src/architect.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,2CAA2C;AAC3C,6EAA6E;AAC7E,2DAA2D;AAC3D,+EAA+E;AAE/E,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAwQR,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"architect.js","sourceRoot":"","sources":["../src/architect.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,2CAA2C;AAC3C,6EAA6E;AAC7E,2DAA2D;AAC3D,+EAA+E;AAE/E,MAAM,UAAU,sBAAsB;IACpC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsNR,CAAC;AACF,CAAC"}
@@ -1,2 +1,3 @@
1
1
  export declare function generateClaudeMd(): string;
2
+ export declare function generateAgentsMd(): string;
2
3
  //# sourceMappingURL=claude-md.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../src/claude-md.ts"],"names":[],"mappings":"AAKA,wBAAgB,gBAAgB,IAAI,MAAM,CA2FzC"}
1
+ {"version":3,"file":"claude-md.d.ts","sourceRoot":"","sources":["../src/claude-md.ts"],"names":[],"mappings":"AAqBA,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC;AAED,wBAAgB,gBAAgB,IAAI,MAAM,CAEzC"}
package/dist/claude-md.js CHANGED
@@ -1,97 +1,26 @@
1
1
  // ============================================================================
2
- // CLAUDE.md Generator — Agent instructions for MCP-first MAADb workflow
3
- // Generated on init. Tells the LLM how to work with this project.
2
+ // Provider pointer files — CLAUDE.md and AGENTS.md.
3
+ //
4
+ // Created ONCE at project init and never managed afterward: users own these
5
+ // files. They stay thin so they cannot meaningfully drift — all instruction
6
+ // content lives in MAAD.md (managed) and _skills/ (managed).
4
7
  // ============================================================================
5
- export function generateClaudeMd() {
6
- return `# MAADb Project — Agent Instructions
7
-
8
- ## How to work with this project
9
-
10
- This is a MAADb project. You have MCP tools for all data operations.
11
-
12
- **Use MAADb MCP tools for everything.** Do not use bash, shell commands, or direct file reads for data access. If a tool fails, report the error — do not fall back to shell.
13
-
14
- ## Boot sequence
15
-
16
- 1. Run \`maad_summary\` to see what's in this project
17
- 2. If summary shows **zero types and zero documents** → this is an empty project. Read \`_skills/architect-core.md\` and enter Architect mode to design and deploy the database.
18
- 3. If summary shows existing types and documents → this is a live project. Proceed with normal operations below.
19
- 4. Use \`maad_schema <type>\` to understand record structure before writing
20
- 5. Use \`maad_health\` if something seems wrong
21
-
22
- ## Empty project → Architect mode
23
-
24
- When this project has no types defined:
25
- 1. Read \`_skills/architect-core.md\` for the full Architect role specification
26
- 2. Read \`_skills/schema-guide.md\` for field type reference
27
- 3. Read \`_skills/import-guide.md\` if importing existing data
28
- 4. Follow the Architect workflow: discover requirements → design schema → present plan → build
29
-
30
- The Architect role handles: schema design, registry creation, data import, troubleshooting, and handoff to normal operations.
31
-
32
- ## Live project → User mode
33
-
34
- ### Reading data
35
-
36
- - \`maad_summary\` — project snapshot (start here)
37
- - \`maad_get\` — read a record (hot/warm/cold/full)
38
- - \`maad_query\` — find records by type, filters, and field projection
39
- - \`maad_search\` — find extracted objects across all records
40
- - \`maad_related\` — traverse relationships between records
41
- - \`maad_aggregate\` — count/sum/avg/min/max grouped by a field. Supports multi-hop ref chains (\`a->b->c\`) for cross-doctype aggregates. **Use instead of iterating records to compute totals.**
42
- - \`maad_join\` — query + follow refs + project fields from both sides in one call. **Use instead of \`query\` → \`get\` → \`get\` chains.**
43
-
44
- ### Writing data
8
+ function pointerBody() {
9
+ return `This is a **MAADb project** — a markdown-native database.
45
10
 
46
- - **Always** call \`maad_schema <type>\` before creating or updating records
47
- - \`maad_create\` — new record (engine validates against schema)
48
- - \`maad_update\` — modify fields or body (use expectedVersion for safe writes)
49
- - \`maad_bulk_create\` — create multiple records in one call (much faster for imports)
50
- - \`maad_bulk_update\` — update multiple records in one call
51
- - **Execute individual writes sequentially** — do not parallelize single create/update calls
11
+ - **Read \`MAAD.md\`** for the operating instructions (boot, tools, safety).
12
+ - Use MAADb MCP tools for all data operations — no shell or direct file
13
+ access for record data.
14
+ - Task workflows live in \`_skills/\` (architect, schema, import).
52
15
 
53
- ### Importing raw data
54
-
55
- When onboarding new data into this project:
56
-
57
- 1. Read the raw files to understand the data
58
- 2. Read \`_skills/architect-core.md\` for schema design guidance
59
- 3. Design the registry and schemas
60
- 4. Call \`maad_reload\` to pick up the new registry and schemas
61
- 5. Create records using \`maad_create\` (master) or \`maad_update --append\` (transaction)
62
- 6. Call \`maad_reindex\` after bulk creation
63
- 7. Call \`maad_summary\` to confirm
64
-
65
- ### Frontmatter format
66
-
67
- Every markdown record must have a YAML frontmatter header:
68
-
69
- \`\`\`yaml
70
- ---
71
- doc_id: <unique-id>
72
- doc_type: <registered-type>
73
- schema: <type.version>
74
- field1: value1
75
- field2: value2
76
- ---
77
- \`\`\`
78
-
79
- ### Server management
80
-
81
- - \`maad_reload\` — reload registry and schemas after config changes (no restart needed)
82
- - \`maad_health\` — check engine status
83
- - \`maad_reindex\` — rebuild index after bulk file changes
84
-
85
- ## Rules
86
-
87
- 1. MCP tools only — no bash for data operations
88
- 2. Schema first — call \`maad_schema\` before writes
89
- 3. Reload after config changes — call \`maad_reload\` after editing registry or schemas
90
- 4. Sequential writes — never parallelize create/update/delete operations
91
- 5. Report errors — if a tool returns \`ok: false\`, report what happened
92
- 6. Empty project = Architect mode — read the skill files and design the database
93
- 7. Use \`maad_aggregate\` for group-by totals — don't page through records to compute counts, sums, or averages. Ref chains like \`client->industry\` enable cross-doctype groupings in one call.
94
- 8. Use \`maad_join\` to follow refs and collect fields in one call — don't chain query/get loops.
16
+ You may add project-specific notes below this line — this file is yours
17
+ after creation and is never overwritten by the engine.
95
18
  `;
96
19
  }
20
+ export function generateClaudeMd() {
21
+ return `# MAADb Project — Agent Instructions\n\n${pointerBody()}`;
22
+ }
23
+ export function generateAgentsMd() {
24
+ return `# MAADb Project — Agent Instructions\n\n${pointerBody()}`;
25
+ }
97
26
  //# sourceMappingURL=claude-md.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../src/claude-md.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,wEAAwE;AACxE,kEAAkE;AAClE,+EAA+E;AAE/E,MAAM,UAAU,gBAAgB;IAC9B,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyFR,CAAC;AACF,CAAC"}
1
+ {"version":3,"file":"claude-md.js","sourceRoot":"","sources":["../src/claude-md.ts"],"names":[],"mappings":"AAAA,+EAA+E;AAC/E,oDAAoD;AACpD,EAAE;AACF,4EAA4E;AAC5E,4EAA4E;AAC5E,6DAA6D;AAC7D,+EAA+E;AAE/E,SAAS,WAAW;IAClB,OAAO;;;;;;;;;CASR,CAAC;AACF,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,2CAA2C,WAAW,EAAE,EAAE,CAAC;AACpE,CAAC;AAED,MAAM,UAAU,gBAAgB;IAC9B,OAAO,2CAA2C,WAAW,EAAE,EAAE,CAAC;AACpE,CAAC"}
@@ -2,5 +2,6 @@ import type { CliContext } from '../helpers.js';
2
2
  export declare function cmdInit(ctx: CliContext): Promise<void>;
3
3
  export declare function cmdValidate(ctx: CliContext): Promise<void>;
4
4
  export declare function cmdReindex(ctx: CliContext): Promise<void>;
5
+ export declare function cmdInstructions(ctx: CliContext): Promise<void>;
5
6
  export declare function cmdParse(ctx: CliContext): Promise<void>;
6
7
  //# sourceMappingURL=maintain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"maintain.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/maintain.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,wBAAsB,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAsD5D;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiChE;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA0E/D;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC7D"}
1
+ {"version":3,"file":"maintain.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/maintain.ts"],"names":[],"mappings":"AAYA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAGhD,wBAAsB,OAAO,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAoD5D;AAED,wBAAsB,WAAW,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAiChE;AAED,wBAAsB,UAAU,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuE/D;AAED,wBAAsB,eAAe,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CA4DpE;AAED,wBAAsB,QAAQ,CAAC,GAAG,EAAE,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAuC7D"}
@@ -5,10 +5,10 @@ import path from 'node:path';
5
5
  import { existsSync, mkdirSync, writeFileSync } from 'node:fs';
6
6
  import { docId } from '../../types.js';
7
7
  import { GitLayer } from '../../git/index.js';
8
- import { generateMaadMd, generateStubMaadMd } from '../../maad-md.js';
9
8
  import { generateSchemaMd } from '../../schema-md.js';
10
- import { generateClaudeMd } from '../../claude-md.js';
9
+ import { generateClaudeMd, generateAgentsMd } from '../../claude-md.js';
11
10
  import { ensureProjectSkills } from '../../skills-scaffold.js';
11
+ import { engineVersion, checkProject, planRefresh, applyRefresh } from '../../instructions/manifest.js';
12
12
  import { initEngine } from '../helpers.js';
13
13
  export async function cmdInit(ctx) {
14
14
  const dir = ctx.args[1] ?? '.';
@@ -32,20 +32,19 @@ export async function cmdInit(ctx) {
32
32
  writeFileSync(gitignorePath, '_backend/\n_import/\n', 'utf-8');
33
33
  console.log(' Created .gitignore');
34
34
  }
35
- const maadMdPath = path.join(root, 'MAAD.md');
36
- if (!existsSync(maadMdPath)) {
37
- const enginePath = path.resolve(ctx.__dirname, 'cli.js');
38
- writeFileSync(maadMdPath, generateStubMaadMd(enginePath, root), 'utf-8');
39
- console.log(' Created MAAD.md');
40
- }
41
- // CLAUDE.md — agent instructions for MCP-first workflow
35
+ // Provider pointers — created once at init, user-owned afterward.
42
36
  const claudeMdPath = path.join(root, 'CLAUDE.md');
43
37
  if (!existsSync(claudeMdPath)) {
44
38
  writeFileSync(claudeMdPath, generateClaudeMd(), 'utf-8');
45
39
  console.log(' Created CLAUDE.md');
46
40
  }
47
- // Skill files — detailed workflow guides (delegated to shared scaffold
48
- // helper so lifecycle, CLI init, and future EnginePool share one code path)
41
+ const agentsMdPath = path.join(root, 'AGENTS.md');
42
+ if (!existsSync(agentsMdPath)) {
43
+ writeFileSync(agentsMdPath, generateAgentsMd(), 'utf-8');
44
+ console.log(' Created AGENTS.md');
45
+ }
46
+ // Managed instruction files (MAAD.md + _skills/) — stamped, create-if-absent
47
+ // (shared scaffold so lifecycle, CLI init, and EnginePool use one code path)
49
48
  const skillsResult = ensureProjectSkills(root);
50
49
  for (const f of skillsResult.created)
51
50
  console.log(` Created ${f}`);
@@ -125,23 +124,16 @@ export async function cmdReindex(ctx) {
125
124
  for (const e of r.errors)
126
125
  console.log(` ${e.code}: ${e.message}`);
127
126
  }
127
+ // Instruction-lifecycle rework: reindex no longer writes MAAD.md — it is a
128
+ // static managed file, created via scaffold and updated only through
129
+ // `maad instructions refresh`. SCHEMA.md remains a data-derived artifact
130
+ // and keeps refreshing here.
128
131
  try {
129
132
  const { loadSchemas } = await import('../../schema/index.js');
130
133
  const registry = engine.getRegistry();
131
134
  const schemaResult = await loadSchemas(engine.getProjectRoot(), registry);
132
135
  if (schemaResult.ok) {
133
136
  const stats = engine.getBackend().getStats();
134
- const enginePath = path.resolve(ctx.__dirname, 'cli.js');
135
- const maadMdPath = path.join(engine.getProjectRoot(), 'MAAD.md');
136
- const maadMd = generateMaadMd({
137
- projectRoot: engine.getProjectRoot(),
138
- enginePath,
139
- registry,
140
- schemaStore: schemaResult.value,
141
- stats,
142
- });
143
- writeFileSync(maadMdPath, maadMd, 'utf-8');
144
- console.log('Updated MAAD.md');
145
137
  const schemaMd = generateSchemaMd({
146
138
  registry,
147
139
  schemaStore: schemaResult.value,
@@ -150,9 +142,16 @@ export async function cmdReindex(ctx) {
150
142
  writeFileSync(path.join(engine.getProjectRoot(), 'SCHEMA.md'), schemaMd, 'utf-8');
151
143
  console.log('Updated SCHEMA.md');
152
144
  }
145
+ const scaffolded = ensureProjectSkills(engine.getProjectRoot());
146
+ for (const f of scaffolded.created)
147
+ console.log(`Created ${f}`);
148
+ const stale = checkProject(engine.getProjectRoot()).filter(s => s.state !== 'current');
149
+ if (stale.length > 0) {
150
+ console.log(`Instructions not current (${stale.map(s => `${s.relPath}:${s.state}`).join(', ')}) — run \`maad instructions check\`.`);
151
+ }
153
152
  }
154
153
  catch (e) {
155
- console.warn(`MAAD.md generation failed: ${e instanceof Error ? e.message : String(e)}`);
154
+ console.warn(`SCHEMA.md generation failed: ${e instanceof Error ? e.message : String(e)}`);
156
155
  }
157
156
  engine.close();
158
157
  // 0.8.3 — same fail-closed posture as cmdValidate: a full reindex reports
@@ -165,6 +164,66 @@ export async function cmdReindex(ctx) {
165
164
  process.exit(1);
166
165
  }
167
166
  }
167
+ export async function cmdInstructions(ctx) {
168
+ const sub = ctx.args[1];
169
+ const root = path.resolve(ctx.projectRoot);
170
+ if (sub === 'check') {
171
+ const statuses = checkProject(root);
172
+ console.log(`Managed instructions in ${root} (engine ${engineVersion()}):`);
173
+ for (const s of statuses) {
174
+ const vintage = s.stampedEngine ? ` (stamped ${s.stampedEngine})` : '';
175
+ console.log(` ${s.state.padEnd(9)} ${s.relPath}${vintage}`);
176
+ }
177
+ const actionable = statuses.filter(s => s.state !== 'current');
178
+ if (actionable.length === 0) {
179
+ console.log('All managed instructions are current.');
180
+ }
181
+ else {
182
+ console.log(`\n${actionable.length} file(s) not current. \`maad instructions refresh\` updates outdated/missing; add --force to also replace modified/unmanaged files (git history is the undo path).`);
183
+ process.exit(1);
184
+ }
185
+ return;
186
+ }
187
+ if (sub === 'refresh') {
188
+ const apply = ctx.args.includes('--apply');
189
+ const force = ctx.args.includes('--force');
190
+ const plan = planRefresh(root, { force });
191
+ for (const s of plan.current)
192
+ console.log(` current ${s.relPath}`);
193
+ for (const s of plan.refresh)
194
+ console.log(` ${apply ? 'refresh' : 'would refresh'} ${s.relPath} (${s.state})`);
195
+ for (const s of plan.skippedModified)
196
+ console.log(` SKIP modified ${s.relPath} — user-edited; --force to replace`);
197
+ for (const s of plan.skippedUnmanaged)
198
+ console.log(` SKIP unmanaged ${s.relPath} — pre-lifecycle vintage; --force to adopt`);
199
+ if (plan.refresh.length === 0) {
200
+ console.log('Nothing to refresh.');
201
+ return;
202
+ }
203
+ if (!apply) {
204
+ console.log(`\nDry run — ${plan.refresh.length} file(s) would be refreshed to engine ${engineVersion()}. Re-run with --apply to write.`);
205
+ return;
206
+ }
207
+ const written = applyRefresh(root, plan);
208
+ console.log(`Refreshed ${written.length} file(s) to engine ${engineVersion()}.`);
209
+ // Land the refresh as its own commit so it is auditable and revertible.
210
+ try {
211
+ const git = new GitLayer(root);
212
+ if (await git.isRepo()) {
213
+ const sg = git.getSimpleGit();
214
+ await sg.add(written);
215
+ await sg.commit(`maad:instructions — refresh managed instructions to ${engineVersion()}`);
216
+ console.log('Committed refresh to git.');
217
+ }
218
+ }
219
+ catch (e) {
220
+ console.warn(`Git commit failed (files written): ${e instanceof Error ? e.message : String(e)}`);
221
+ }
222
+ return;
223
+ }
224
+ console.error('Usage: maad instructions <check|refresh> [--apply] [--force]');
225
+ process.exit(1);
226
+ }
168
227
  export async function cmdParse(ctx) {
169
228
  const filePath = ctx.args[1];
170
229
  if (!filePath) {
@@ -1 +1 @@
1
- {"version":3,"file":"maintain.js","sourceRoot":"","sources":["../../../src/cli/commands/maintain.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"maintain.js","sourceRoot":"","sources":["../../../src/cli/commands/maintain.ts"],"names":[],"mappings":"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"}