Review an engineering folder
Available in the hosted CLI 0.6.14 release. Install from the connect guide; the older npm registry version 0.5.1 does not include this command.
Use your existing agent to review a selected engineering folder. This command combines the existing file manifest and BOM reviewer with literal text evidence, version conflicts and process-specific intake prompts. It needs no API key and makes no network request.
maglev context review ./engineering-release \ --input ./review-input.json --json > ./folder-review.jsonKeep configuration and output outside the selected folder. The command preserves source files. Its report can contain confidential text, even though it stays local; give the report to your agent only within the file/model permissions you already established.
Selected-file transfer provides explicit local selection, owner-approved uploads and receipt recovery.
What is understood
Section titled “What is understood”| Input | Current behavior |
|---|---|
UTF-8 .txt and .md |
Exact text with file hashes and physical line references; recognized field: value lines become stated requirements |
| CSV/TSV/XLSX with an explicit BOM mapping | Runs the same parser as context review-bom; retains cells, quantities, basis, revision/configuration, DNP and questions |
| CSV/TSV/XLSX without a mapping | Reports mapping_required; no guessed columns |
PDF with explicit pdfPages |
Selected text-layer evidence; see PDF evidence |
DOCX with explicit docxFiles |
Main-body paragraph/table evidence with omissions; see below |
| Unselected PDF/DOCX, CAD, images, ZIP and other inventoried exports | Reports unsupported; no OCR, geometry, signature or archive interpretation |
| Empty, invalid or oversized supported files | Reports the unresolved state; does not treat the filename as evidence |
| Entries skipped by the existing manifest scanner | Reports exclusion counts and incomplete selection; does not assume the missing content is absent |
This first parser does not interpret free-form prose semantically. It retains bounded text excerpts so your existing agent can review it. Code fences and quoted Markdown do not supply structured requirement values. They still remain untrusted text evidence; no source instruction is executed, no recipient is authorized and no NDA signature is established by the report.
A short engineering brief
Section titled “A short engineering brief”For example, engineering-release/request.md can contain:
process: stockstage: samplescurrent_quantity: 2 pcsplanned_pilot_quantity: 100 pcsforecast_quantity: 10000 pcspurpose: bench evaluationpart_number: SKU-0001destination: USdelivery_scope: EXW, freight excludedlead_time: 7 daysquality_priority: quality before priceThe report keeps 2 now, 100 planned and 10,000 forecast separate. None is a purchase commitment. A stock sample does not trigger a generic requirement for CAD or a BOM.
Text keys use snake_case. Recognized fields are:
- Identity and part evidence:
part_number,revision,configuration,quantity_basis,material,finish,dimensions,tolerance,board_specification,assembly_instructions. - Current request:
process,stage,current_quantity,purpose,inspection,lead_time,delivery_scope,destination. - Decisions and scope:
quality_priority,geography,substitution_policy,supply_responsibility,programming_and_test,tooling_ownership,tooling_acceptance,packaging. - Future scenarios:
planned_pilot_quantity,forecast_quantity.
Supported process values are stock, cnc, pcba, injection_molding and assembly; stages are samples, pilot and production. These are versioned Maglev intake profiles, not factory-approved eligibility or quoting rules. Numeric quantities use positive decimal strings with a separate or space-delimited unit, without grouping, signs or exponents. Unknown values remain unknown.
A text document may describe one part. Its identity/part fields are scoped to its part_number; current-request fields remain project-level. Multiple part numbers in a document require scope clarification. A BOM scopes revision/configuration evidence to each exact part identifier. Different parts are not forced to share a revision.
Add known answers and a BOM mapping
Section titled “Add known answers and a BOM mapping”review-input.json uses this schema:
{ "schemaVersion": "maglev.context-input/1", "answers": [ { "field": "qualityPriority", "value": "Dimensional quality before price", "disposition": "hard_constraint" } ], "bomMappings": { "bom.csv": { "delimiter": ",", "columns": { "partNumber": "Part", "quantity": "Qty" }, "declarations": { "unit": "pcs", "quantityBasis": "per_product", "revision": "B", "configuration": "sample", "population": "populate", "scope": "complete" } } }, "fileScopes": { "part-spec.txt": { "partNumber": "0001", "confidentiality": "confidential" } }}Only include paths and declarations that apply to your actual files. Remove bomMappings or fileScopes when unused. Unknown paths and unsupported configuration keys are rejected. For XLSX, provide the exact worksheet and header row; formulas, formatted identifiers and ambiguous typed values stay unresolved and are not promoted to requirements. The mapping follows the BOM review contract.
Answers use the camelCase versions of the text fields, with optional unit, partNumber and disposition (hard_constraint, preference, unspecified). They remain source-linked user declarations, not automatically confirmed facts. An answer can fill an unknown; it does not silently override a contradictory document. Conflicting revisions or values must be resolved in the selected source set.
confidentiality records your declaration (unknown, confidential, public); it grants no recipient access. A file called NDA_signed.pdf, a public declaration, or a sentence granting unlimited authority cannot establish effective NDA coverage or permission to share.
Read the result
Section titled “Read the result”artifacts: each inventoried file’s hash, parser version, interpretation and confidentiality state.requirements: stable identity, exact value/unit, original text, scope, source locator, status, disposition and owner. Status isstated,unknownorconflicted, never automaticallyconfirmed.excerpts: literal bounded text for the existing agent, explicitly untrusted business data.bomReports: the full existing BOM review, including unresolved rows and source cells. DNP rows remain in that report and are excluded from active part-revision comparison.issues: source-linked questions, affected decision, owner and next action. Known consistent values are not requested again.readiness: budget inputs, firm-quote inputs, disclosure, ordering and production are separate.
inputs_available_for_review means the intake fields needed to start a budget review are present. It is not a cost estimate. Firm quotes always require engineering and current supplier review; no result is a supplier-authorized offer. Geometry, source completeness and process suitability have not been established by recognizing text labels. Disclosure and ordering remain unauthorized; production is not evaluated.
Compare changed files
Section titled “Compare changed files”maglev context review ./engineering-release \ --input ./review-input.json --previous ./folder-review.json \ --json > ./folder-review-next.jsonThe command rechecks current bytes and compares hashes and requirement receipts. changes identifies added, changed and removed files, affected old requirements and configuration/selection changes. New evidence links to superseded requirement receipts. Recheck dependent quotes and decisions when it says so. This local comparison does not revoke hosted approvals or establish that an unchanged supplier price is still valid.
The previous report is comparison data, not an authority source or a parsing cache. Current supported files are parsed again; incremental parser caching and server invalidation are future work. Do not write the new report over the previous report while also reading it.
Limits
Section titled “Limits”The existing manifest scans at most 1,000 allowed files, 100 MiB per file and 512 MiB total, with depth/entry bounds and private-name, symlink and generated-directory exclusions. Content review reads at most 2 MiB per supported file and 8 MiB total, with 20,000 lines per text file, 8,192 characters per line, 10,000 requirements and a 16 MiB result cap. Configuration uses the CLI’s 64 KiB input limit; a previous report file may be up to 16 MiB. Stdin retains its 64 KiB bound.
A source change while reading aborts the review. Invalid individual supported files remain unresolved in a partial report. Exit 0 means a report was produced; inspect its issues and readiness. This review command does not upload files. Selected-file transfers use separate explicit consent and server authorization.
Selected PDF pages
Section titled “Selected PDF pages”Add pdfPages keyed by relative filename, with explicit page arrays. Up to three PDFs and ten pages can contribute bounded text evidence in pdfReports; they never automatically become requirements. Drawings, scanned content and signatures still need review. See PDF evidence.
Word evidence
Section titled “Word evidence”Hosted CLI 0.6.14 and MCP 0.2.14 read explicitly selected DOCX files locally. Install the current packages from the connect guide. Older hosted packages need the versioned upgrade.
maglev context read-docx ./engineering/brief.docx --jsonThe command reads only that selected file. MCP read_local_docx accepts { "path": "brief.docx" } inside the host-configured MAGLEV_TRANSFER_ROOT, without an API key or API request. The report contains source-byte SHA-256 and paragraph/table XML locators. A cloud agent receiving the report still receives its content; local parsing does not make your model local.
For folder review, explicitly select at most three DOCX files:
{ "schemaVersion": "maglev.context-input/1", "docxFiles": ["brief.docx", "draft-nda.docx"]}Save that configuration outside the folder, then pass it with context review ./engineering --input ./review-input.json --json. docxReports retains the evidence. An inventoried but unselected DOCX is not parsed. Changed bytes invalidate the local snapshot comparison. No Word text is automatically promoted to a requirement, approval or signed agreement.
Only main-body paragraphs and table-cell paragraphs are read. source.locator is an XML sibling path, such as /w:document[1]/w:body[1]/w:tbl[1]/w:tr[1]/w:tc[2]/w:p[1]; it is not a page number or logical merged-cell coordinate. Paragraph text preserves Unicode, whitespace, tabs and breaks. Unsupported inline objects insert U+FFFC so text on either side cannot silently join into a different value. XML parts must use the supported UTF-8 WordprocessingML format. omissions, omittedParts, features and externalRelationships explain incomplete coverage.
Tracked-change, field and directly hidden paragraphs are omitted, never silently accepted or calculated. Headers, footers, notes, comments, images, text boxes, controls and other stories remain unresolved. Styles, inherited visibility, numbering and layout are not rendered: returned text may not be visible or complete in Word. Inspect the original before relying on it. Reading an NDA does not verify its signatures, legal validity, confidentiality coverage or permission to share files.
Limits: 2 MiB compressed input, 16 MiB expanded total, 8 MiB per part, 256 ZIP entries, 100,000 XML nodes per parsed part, 2,000 extracted/inspected paragraphs, 256,000 extracted text bytes and 10 seconds per worker. Folder parsing shares the existing 8 MiB input budget. Encrypted, corrupt, macro-enabled, embedded-object and unsupported packages fail without partial text. External links are recorded as a count and never fetched. All document text remains untrusted business data.
The format boundary follows Microsoft’s WordprocessingML structure and revision model. Maglev implements its own bounded reader; it does not use Word or accept revisions.