@nativemason/contracts 0.0.0-stage → 0.3.0

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/dist/tools.js ADDED
@@ -0,0 +1,55 @@
1
+ import { DesignIntentSchema, DesignIntentResultSchema } from './design.js';
2
+ import { AccessibilityFindingSchema } from './accessibility.js';
3
+ import { SuggestionProfilesSchema, SuggestionProfileEvidenceSchema, NativeSuggestionEvidenceSchema, InteractionRequirementSchema } from './diagnostics.js';
4
+ import { LayoutMutationSchema, EditScopeSchema, TransactionPlanSchema, ScenarioScriptSchema, MatrixCellSchema, RuleFindingSchema, InferenceOptionsSchema, NativeTargetSchema } from './workflow.js';
5
+ import { z } from 'zod';
6
+ import { NativeBindHostSchema } from './native-protocol.js';
7
+ import { DeviceProfileSchema, RectSchema } from './geometry.js';
8
+ import { WireframeSpecSchema, ConstraintResultSchema } from './constraints.js';
9
+ import { RnStylePatchSchema } from './styles.js';
10
+ import { SpatialSnapshotSchema, SpatialDeltaSchema, SpatialNodeSchema, ProfileOverridesSchema, WebDiagnosticsSchema } from './graph.js';
11
+ import { CommitReceiptSchema, EditPlanSchema, BridgeErrorSchema } from './source.js';
12
+ const session = { sessionId: z.string().min(1) };
13
+ export const ToolSchemas = {
14
+ open_session: z.object({ projectRoot: z.string().min(1), webUrl: z.string().url(), scenarioId: z.string().min(1), profile: DeviceProfileSchema, nativeTarget: NativeTargetSchema.optional(), nativeScenario: z.object({ appId: z.string().min(1), adbSerial: z.string().optional(), maestroPath: z.string().optional(), ssh: z.object({ destination: z.string(), identityFile: z.string().optional() }).strict().optional() }).strict().optional(), nativeHost: NativeBindHostSchema.optional(), nativePort: z.number().int().min(1024).max(65535).optional(), nativeToken: z.string().min(16).optional() }).strict(),
15
+ import_design_intent: z.object({ ...session, design: DesignIntentSchema }).strict(),
16
+ inspect_accessibility: z.object({ ...session, target: z.enum(['web', 'native']).default('web') }).strict(),
17
+ load_wireframe_spec: z.object({ ...session, spec: WireframeSpecSchema }).strict(),
18
+ inspect_ui_spatial_graph: z.object({ ...session, profileOverrides: ProfileOverridesSchema.optional() }).strict(),
19
+ capture_annotated_overlay: z.object({ ...session, snapshotId: z.string() }).strict(),
20
+ simulate_layout_mutation: z.object({ ...session, baselineSnapshotId: z.string(), elementId: z.string().optional(), patch: RnStylePatchSchema.nullable().optional(), mutations: z.array(LayoutMutationSchema).min(1).optional(), profileOverrides: ProfileOverridesSchema.optional() }).strict(),
21
+ commit_rn_ast_patch: z.object({ ...session, trialId: z.string(), expectedSourceHash: z.string().optional(), expectedRevisions: z.record(z.string(), z.string()).optional(), scope: EditScopeSchema.optional(), allowNativePending: z.boolean().default(false), mode: z.enum(['preview', 'apply']) }).strict(),
22
+ verify_native_layout: z.object({ ...session, commitId: z.string() }).strict(),
23
+ revert_commit: z.object({ ...session, commitId: z.string() }).strict(),
24
+ find_elements: z.object({ ...session, query: z.string().default('') }).strict(),
25
+ infer_constraints: z.object({ ...session, snapshotId: z.string(), options: InferenceOptionsSchema.optional() }).strict(),
26
+ suggest_fix: z.object({ ...session, baselineSnapshotId: z.string(), limit: z.number().int().min(1).max(24).default(8), profiles: SuggestionProfilesSchema.optional(), includeNativeEvidence: z.boolean().default(false) }).strict(),
27
+ run_scenario: z.object({ ...session, script: ScenarioScriptSchema, target: z.enum(['web', 'native']).default('web') }).strict(),
28
+ run_profile_matrix: z.object({ ...session, script: ScenarioScriptSchema, profiles: z.array(ProfileOverridesSchema).min(1), target: z.enum(['web', 'native']).default('web') }).strict(),
29
+ close_session: z.object(session).strict()
30
+ };
31
+ export const TrialSchema = z.object({ trialId: z.string(), baselineSnapshotId: z.string(), elementId: z.string(), patch: RnStylePatchSchema, mutations: z.array(LayoutMutationSchema).optional(), snapshot: SpatialSnapshotSchema, delta: SpatialDeltaSchema, results: z.array(ConstraintResultSchema) }).strict();
32
+ export const NativeVerificationSchema = z.object({ receipt: CommitReceiptSchema, snapshot: SpatialSnapshotSchema, results: z.array(ConstraintResultSchema), delta: SpatialDeltaSchema, passed: z.boolean() }).strict();
33
+ const CommitRnAstPatchOutputBaseSchema = z.object({ plan: EditPlanSchema.optional(), transactionPlan: TransactionPlanSchema.optional(), receipt: CommitReceiptSchema.optional(), snapshot: SpatialSnapshotSchema.nullable().optional(), results: z.array(ConstraintResultSchema).optional(), webStatus: z.enum(['passed', 'failed', 'reload-timeout', 'capture-failed', 'native-checks-pending', 'interaction-pending']).optional(), nativeStatus: z.literal('pending').optional(), pendingNativeConstraints: z.array(z.string()).optional(), pendingInteractions: z.array(InteractionRequirementSchema).optional(), message: z.string().optional() }).strict();
34
+ /** Every JSON tool result is validated here before reaching an MCP client. */
35
+ export const ToolOutputSchemas = {
36
+ open_session: z.object({ sessionId: z.string(), native: z.object({ port: z.number().int(), token: z.string() }).strict(), capabilities: z.object({ trial: z.literal('rn-style-props'), sourceEdits: z.enum(['static-local-styles', 'scoped-transactions']), batchTrials: z.boolean().optional(), nativePlatforms: z.array(z.enum(['android', 'ios'])).optional(), nativeScenario: z.boolean().optional(), nativeVerification: z.literal('required') }).strict() }).strict(),
37
+ import_design_intent: DesignIntentResultSchema,
38
+ inspect_accessibility: z.object({ snapshot: SpatialSnapshotSchema, findings: z.array(AccessibilityFindingSchema) }).strict(),
39
+ load_wireframe_spec: z.object({ specId: z.string() }).strict(),
40
+ inspect_ui_spatial_graph: z.object({ snapshot: SpatialSnapshotSchema, results: z.array(ConstraintResultSchema), webDiagnostics: WebDiagnosticsSchema.optional() }).strict(),
41
+ capture_annotated_overlay: z.object({ image: z.string(), mimeType: z.literal('image/png'), artifact: z.string(), marks: z.array(z.object({ label: z.number(), id: z.string(), rect: RectSchema }).strict()) }).strict(),
42
+ simulate_layout_mutation: z.union([TrialSchema.extend({ webDiagnostics: WebDiagnosticsSchema.optional() }), z.object({ snapshot: SpatialSnapshotSchema, results: z.array(ConstraintResultSchema), webDiagnostics: WebDiagnosticsSchema.optional() }).strict()]),
43
+ commit_rn_ast_patch: CommitRnAstPatchOutputBaseSchema.refine(o => (o.plan !== undefined) !== (o.receipt !== undefined), 'Result must contain either a preview plan or an applied receipt'),
44
+ verify_native_layout: NativeVerificationSchema,
45
+ revert_commit: z.object({ receipt: CommitReceiptSchema, snapshot: SpatialSnapshotSchema.nullable(), nativeStatus: z.literal('pending') }).strict(),
46
+ find_elements: z.object({ nodes: z.array(SpatialNodeSchema) }).strict(),
47
+ infer_constraints: z.object({ spec: WireframeSpecSchema, findings: z.array(RuleFindingSchema) }).strict(),
48
+ suggest_fix: z.object({ candidates: z.array(z.object({ mutations: z.array(LayoutMutationSchema), reason: z.string(), constraintIds: z.array(z.string()), results: z.array(ConstraintResultSchema), score: z.number(), warnings: z.number(), profiles: z.array(SuggestionProfileEvidenceSchema).optional(), error: BridgeErrorSchema.optional() })), baselineSnapshotId: z.string(), baselines: z.array(SuggestionProfileEvidenceSchema).optional(), nativeBaseline: NativeSuggestionEvidenceSchema.optional() }).strict(),
49
+ run_scenario: z.object({ snapshot: SpatialSnapshotSchema, results: z.array(ConstraintResultSchema) }).strict(),
50
+ run_profile_matrix: z.object({ cells: z.array(MatrixCellSchema) }).strict(),
51
+ close_session: z.object({ closed: z.literal(true) }).strict(),
52
+ };
53
+ /** MCP's object-root output schema describes both existing trial and reset wire shapes.
54
+ * ToolOutputSchemas still enforces the complete union before any response is sent. */
55
+ export const ToolMcpOutputSchemas = { ...ToolOutputSchemas, commit_rn_ast_patch: CommitRnAstPatchOutputBaseSchema, simulate_layout_mutation: TrialSchema.partial().extend({ snapshot: SpatialSnapshotSchema, results: z.array(ConstraintResultSchema), webDiagnostics: WebDiagnosticsSchema.optional() }).strict() };