@angriff36/manifest 2.18.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/LICENSE +21 -0
- package/README.md +476 -0
- package/dist/manifest/agent-sdk/agent-runtime.d.ts +30 -0
- package/dist/manifest/agent-sdk/agent-runtime.d.ts.map +1 -0
- package/dist/manifest/agent-sdk/agent-runtime.js +232 -0
- package/dist/manifest/agent-sdk/agent-runtime.js.map +1 -0
- package/dist/manifest/agent-sdk/index.d.ts +17 -0
- package/dist/manifest/agent-sdk/index.d.ts.map +1 -0
- package/dist/manifest/agent-sdk/index.js +21 -0
- package/dist/manifest/agent-sdk/index.js.map +1 -0
- package/dist/manifest/agent-sdk/intent-mapper.d.ts +17 -0
- package/dist/manifest/agent-sdk/intent-mapper.d.ts.map +1 -0
- package/dist/manifest/agent-sdk/intent-mapper.js +115 -0
- package/dist/manifest/agent-sdk/intent-mapper.js.map +1 -0
- package/dist/manifest/agent-sdk/introspect.d.ts +42 -0
- package/dist/manifest/agent-sdk/introspect.d.ts.map +1 -0
- package/dist/manifest/agent-sdk/introspect.js +284 -0
- package/dist/manifest/agent-sdk/introspect.js.map +1 -0
- package/dist/manifest/agent-sdk/json-schema.d.ts +29 -0
- package/dist/manifest/agent-sdk/json-schema.d.ts.map +1 -0
- package/dist/manifest/agent-sdk/json-schema.js +132 -0
- package/dist/manifest/agent-sdk/json-schema.js.map +1 -0
- package/dist/manifest/agent-sdk/tool-definitions.d.ts +41 -0
- package/dist/manifest/agent-sdk/tool-definitions.d.ts.map +1 -0
- package/dist/manifest/agent-sdk/tool-definitions.js +288 -0
- package/dist/manifest/agent-sdk/tool-definitions.js.map +1 -0
- package/dist/manifest/agent-sdk/types.d.ts +293 -0
- package/dist/manifest/agent-sdk/types.d.ts.map +1 -0
- package/dist/manifest/agent-sdk/types.js +6 -0
- package/dist/manifest/agent-sdk/types.js.map +1 -0
- package/dist/manifest/api-diagnostics.d.ts +41 -0
- package/dist/manifest/api-diagnostics.d.ts.map +1 -0
- package/dist/manifest/api-diagnostics.js +105 -0
- package/dist/manifest/api-diagnostics.js.map +1 -0
- package/dist/manifest/approval/approval-store.d.ts +52 -0
- package/dist/manifest/approval/approval-store.d.ts.map +1 -0
- package/dist/manifest/approval/approval-store.js +25 -0
- package/dist/manifest/approval/approval-store.js.map +1 -0
- package/dist/manifest/approval/stores/memory.d.ts +33 -0
- package/dist/manifest/approval/stores/memory.d.ts.map +1 -0
- package/dist/manifest/approval/stores/memory.js +56 -0
- package/dist/manifest/approval/stores/memory.js.map +1 -0
- package/dist/manifest/approval/stores/postgres.d.ts +41 -0
- package/dist/manifest/approval/stores/postgres.d.ts.map +1 -0
- package/dist/manifest/approval/stores/postgres.js +124 -0
- package/dist/manifest/approval/stores/postgres.js.map +1 -0
- package/dist/manifest/audit/audit-sink.d.ts +53 -0
- package/dist/manifest/audit/audit-sink.d.ts.map +1 -0
- package/dist/manifest/audit/audit-sink.js +15 -0
- package/dist/manifest/audit/audit-sink.js.map +1 -0
- package/dist/manifest/audit/sinks/memory.d.ts +50 -0
- package/dist/manifest/audit/sinks/memory.d.ts.map +1 -0
- package/dist/manifest/audit/sinks/memory.js +66 -0
- package/dist/manifest/audit/sinks/memory.js.map +1 -0
- package/dist/manifest/audit/sinks/postgres.d.ts +31 -0
- package/dist/manifest/audit/sinks/postgres.d.ts.map +1 -0
- package/dist/manifest/audit/sinks/postgres.js +67 -0
- package/dist/manifest/audit/sinks/postgres.js.map +1 -0
- package/dist/manifest/binary-ir.d.ts +76 -0
- package/dist/manifest/binary-ir.d.ts.map +1 -0
- package/dist/manifest/binary-ir.js +124 -0
- package/dist/manifest/binary-ir.js.map +1 -0
- package/dist/manifest/breaking-change.d.ts +75 -0
- package/dist/manifest/breaking-change.d.ts.map +1 -0
- package/dist/manifest/breaking-change.js +704 -0
- package/dist/manifest/breaking-change.js.map +1 -0
- package/dist/manifest/compiler.d.ts +12 -0
- package/dist/manifest/compiler.d.ts.map +1 -0
- package/dist/manifest/compiler.js +23 -0
- package/dist/manifest/compiler.js.map +1 -0
- package/dist/manifest/config.d.ts +171 -0
- package/dist/manifest/config.d.ts.map +1 -0
- package/dist/manifest/config.js +65 -0
- package/dist/manifest/config.js.map +1 -0
- package/dist/manifest/constraint-analysis.d.ts +122 -0
- package/dist/manifest/constraint-analysis.d.ts.map +1 -0
- package/dist/manifest/constraint-analysis.js +340 -0
- package/dist/manifest/constraint-analysis.js.map +1 -0
- package/dist/manifest/date-time.d.ts +13 -0
- package/dist/manifest/date-time.d.ts.map +1 -0
- package/dist/manifest/date-time.js +60 -0
- package/dist/manifest/date-time.js.map +1 -0
- package/dist/manifest/debug/command-trace.d.ts +37 -0
- package/dist/manifest/debug/command-trace.d.ts.map +1 -0
- package/dist/manifest/debug/command-trace.js +51 -0
- package/dist/manifest/debug/command-trace.js.map +1 -0
- package/dist/manifest/debug/index.d.ts +3 -0
- package/dist/manifest/debug/index.d.ts.map +1 -0
- package/dist/manifest/debug/index.js +2 -0
- package/dist/manifest/debug/index.js.map +1 -0
- package/dist/manifest/domain-completeness.d.ts +13 -0
- package/dist/manifest/domain-completeness.d.ts.map +1 -0
- package/dist/manifest/domain-completeness.js +245 -0
- package/dist/manifest/domain-completeness.js.map +1 -0
- package/dist/manifest/entity-composition.d.ts +24 -0
- package/dist/manifest/entity-composition.d.ts.map +1 -0
- package/dist/manifest/entity-composition.js +157 -0
- package/dist/manifest/entity-composition.js.map +1 -0
- package/dist/manifest/examples.d.ts +6 -0
- package/dist/manifest/examples.d.ts.map +1 -0
- package/dist/manifest/examples.js +443 -0
- package/dist/manifest/examples.js.map +1 -0
- package/dist/manifest/federation/client.d.ts +52 -0
- package/dist/manifest/federation/client.d.ts.map +1 -0
- package/dist/manifest/federation/client.js +152 -0
- package/dist/manifest/federation/client.js.map +1 -0
- package/dist/manifest/federation/descriptor.d.ts +25 -0
- package/dist/manifest/federation/descriptor.d.ts.map +1 -0
- package/dist/manifest/federation/descriptor.js +97 -0
- package/dist/manifest/federation/descriptor.js.map +1 -0
- package/dist/manifest/federation/http-adapter.d.ts +26 -0
- package/dist/manifest/federation/http-adapter.d.ts.map +1 -0
- package/dist/manifest/federation/http-adapter.js +209 -0
- package/dist/manifest/federation/http-adapter.js.map +1 -0
- package/dist/manifest/federation/index.d.ts +51 -0
- package/dist/manifest/federation/index.d.ts.map +1 -0
- package/dist/manifest/federation/index.js +49 -0
- package/dist/manifest/federation/index.js.map +1 -0
- package/dist/manifest/federation/policy-bridge.d.ts +51 -0
- package/dist/manifest/federation/policy-bridge.d.ts.map +1 -0
- package/dist/manifest/federation/policy-bridge.js +122 -0
- package/dist/manifest/federation/policy-bridge.js.map +1 -0
- package/dist/manifest/federation/registry.d.ts +88 -0
- package/dist/manifest/federation/registry.d.ts.map +1 -0
- package/dist/manifest/federation/registry.js +165 -0
- package/dist/manifest/federation/registry.js.map +1 -0
- package/dist/manifest/federation/types.d.ts +209 -0
- package/dist/manifest/federation/types.d.ts.map +1 -0
- package/dist/manifest/federation/types.js +13 -0
- package/dist/manifest/federation/types.js.map +1 -0
- package/dist/manifest/generator.d.ts +44 -0
- package/dist/manifest/generator.d.ts.map +1 -0
- package/dist/manifest/generator.js +899 -0
- package/dist/manifest/generator.js.map +1 -0
- package/dist/manifest/ir-cache.d.ts +48 -0
- package/dist/manifest/ir-cache.d.ts.map +1 -0
- package/dist/manifest/ir-cache.js +91 -0
- package/dist/manifest/ir-cache.js.map +1 -0
- package/dist/manifest/ir-compiler.d.ts +135 -0
- package/dist/manifest/ir-compiler.d.ts.map +1 -0
- package/dist/manifest/ir-compiler.js +1477 -0
- package/dist/manifest/ir-compiler.js.map +1 -0
- package/dist/manifest/ir-diff.d.ts +266 -0
- package/dist/manifest/ir-diff.d.ts.map +1 -0
- package/dist/manifest/ir-diff.js +731 -0
- package/dist/manifest/ir-diff.js.map +1 -0
- package/dist/manifest/ir-version-store.d.ts +109 -0
- package/dist/manifest/ir-version-store.d.ts.map +1 -0
- package/dist/manifest/ir-version-store.js +162 -0
- package/dist/manifest/ir-version-store.js.map +1 -0
- package/dist/manifest/ir.d.ts +616 -0
- package/dist/manifest/ir.d.ts.map +1 -0
- package/dist/manifest/ir.js +2 -0
- package/dist/manifest/ir.js.map +1 -0
- package/dist/manifest/lexer.d.ts +37 -0
- package/dist/manifest/lexer.d.ts.map +1 -0
- package/dist/manifest/lexer.js +224 -0
- package/dist/manifest/lexer.js.map +1 -0
- package/dist/manifest/masking.d.ts +11 -0
- package/dist/manifest/masking.d.ts.map +1 -0
- package/dist/manifest/masking.js +34 -0
- package/dist/manifest/masking.js.map +1 -0
- package/dist/manifest/module-resolver.d.ts +42 -0
- package/dist/manifest/module-resolver.d.ts.map +1 -0
- package/dist/manifest/module-resolver.js +162 -0
- package/dist/manifest/module-resolver.js.map +1 -0
- package/dist/manifest/multi-compiler.d.ts +40 -0
- package/dist/manifest/multi-compiler.d.ts.map +1 -0
- package/dist/manifest/multi-compiler.js +324 -0
- package/dist/manifest/multi-compiler.js.map +1 -0
- package/dist/manifest/outbox/outbox-store.d.ts +56 -0
- package/dist/manifest/outbox/outbox-store.d.ts.map +1 -0
- package/dist/manifest/outbox/outbox-store.js +13 -0
- package/dist/manifest/outbox/outbox-store.js.map +1 -0
- package/dist/manifest/outbox/stores/dynamodb.d.ts +100 -0
- package/dist/manifest/outbox/stores/dynamodb.d.ts.map +1 -0
- package/dist/manifest/outbox/stores/dynamodb.js +239 -0
- package/dist/manifest/outbox/stores/dynamodb.js.map +1 -0
- package/dist/manifest/outbox/stores/memory.d.ts +54 -0
- package/dist/manifest/outbox/stores/memory.d.ts.map +1 -0
- package/dist/manifest/outbox/stores/memory.js +131 -0
- package/dist/manifest/outbox/stores/memory.js.map +1 -0
- package/dist/manifest/outbox/stores/mongodb.d.ts +58 -0
- package/dist/manifest/outbox/stores/mongodb.d.ts.map +1 -0
- package/dist/manifest/outbox/stores/mongodb.js +151 -0
- package/dist/manifest/outbox/stores/mongodb.js.map +1 -0
- package/dist/manifest/outbox/stores/postgres.d.ts +81 -0
- package/dist/manifest/outbox/stores/postgres.d.ts.map +1 -0
- package/dist/manifest/outbox/stores/postgres.js +182 -0
- package/dist/manifest/outbox/stores/postgres.js.map +1 -0
- package/dist/manifest/outbox/stores/redis.d.ts +95 -0
- package/dist/manifest/outbox/stores/redis.d.ts.map +1 -0
- package/dist/manifest/outbox/stores/redis.js +248 -0
- package/dist/manifest/outbox/stores/redis.js.map +1 -0
- package/dist/manifest/parser.d.ts +148 -0
- package/dist/manifest/parser.d.ts.map +1 -0
- package/dist/manifest/parser.js +2243 -0
- package/dist/manifest/parser.js.map +1 -0
- package/dist/manifest/plugin-api.d.ts +202 -0
- package/dist/manifest/plugin-api.d.ts.map +1 -0
- package/dist/manifest/plugin-api.js +101 -0
- package/dist/manifest/plugin-api.js.map +1 -0
- package/dist/manifest/plugin-loader.d.ts +101 -0
- package/dist/manifest/plugin-loader.d.ts.map +1 -0
- package/dist/manifest/plugin-loader.js +332 -0
- package/dist/manifest/plugin-loader.js.map +1 -0
- package/dist/manifest/profiling.d.ts +183 -0
- package/dist/manifest/profiling.d.ts.map +1 -0
- package/dist/manifest/profiling.js +186 -0
- package/dist/manifest/profiling.js.map +1 -0
- package/dist/manifest/projections/analytics/generator.d.ts +27 -0
- package/dist/manifest/projections/analytics/generator.d.ts.map +1 -0
- package/dist/manifest/projections/analytics/generator.js +686 -0
- package/dist/manifest/projections/analytics/generator.js.map +1 -0
- package/dist/manifest/projections/analytics/types.d.ts +46 -0
- package/dist/manifest/projections/analytics/types.d.ts.map +1 -0
- package/dist/manifest/projections/analytics/types.js +8 -0
- package/dist/manifest/projections/analytics/types.js.map +1 -0
- package/dist/manifest/projections/builtins.d.ts +29 -0
- package/dist/manifest/projections/builtins.d.ts.map +1 -0
- package/dist/manifest/projections/builtins.js +143 -0
- package/dist/manifest/projections/builtins.js.map +1 -0
- package/dist/manifest/projections/convex/expression.d.ts +52 -0
- package/dist/manifest/projections/convex/expression.d.ts.map +1 -0
- package/dist/manifest/projections/convex/expression.js +166 -0
- package/dist/manifest/projections/convex/expression.js.map +1 -0
- package/dist/manifest/projections/convex/functions.d.ts +22 -0
- package/dist/manifest/projections/convex/functions.d.ts.map +1 -0
- package/dist/manifest/projections/convex/functions.js +786 -0
- package/dist/manifest/projections/convex/functions.js.map +1 -0
- package/dist/manifest/projections/convex/generator.d.ts +79 -0
- package/dist/manifest/projections/convex/generator.d.ts.map +1 -0
- package/dist/manifest/projections/convex/generator.js +406 -0
- package/dist/manifest/projections/convex/generator.js.map +1 -0
- package/dist/manifest/projections/convex/index.d.ts +10 -0
- package/dist/manifest/projections/convex/index.d.ts.map +1 -0
- package/dist/manifest/projections/convex/index.js +10 -0
- package/dist/manifest/projections/convex/index.js.map +1 -0
- package/dist/manifest/projections/convex/options.d.ts +153 -0
- package/dist/manifest/projections/convex/options.d.ts.map +1 -0
- package/dist/manifest/projections/convex/options.js +60 -0
- package/dist/manifest/projections/convex/options.js.map +1 -0
- package/dist/manifest/projections/convex/orchestration.d.ts +23 -0
- package/dist/manifest/projections/convex/orchestration.d.ts.map +1 -0
- package/dist/manifest/projections/convex/orchestration.js +150 -0
- package/dist/manifest/projections/convex/orchestration.js.map +1 -0
- package/dist/manifest/projections/convex/type-mapping.d.ts +40 -0
- package/dist/manifest/projections/convex/type-mapping.d.ts.map +1 -0
- package/dist/manifest/projections/convex/type-mapping.js +71 -0
- package/dist/manifest/projections/convex/type-mapping.js.map +1 -0
- package/dist/manifest/projections/dart/generator.d.ts +33 -0
- package/dist/manifest/projections/dart/generator.d.ts.map +1 -0
- package/dist/manifest/projections/dart/generator.js +981 -0
- package/dist/manifest/projections/dart/generator.js.map +1 -0
- package/dist/manifest/projections/dart/types.d.ts +29 -0
- package/dist/manifest/projections/dart/types.d.ts.map +1 -0
- package/dist/manifest/projections/dart/types.js +5 -0
- package/dist/manifest/projections/dart/types.js.map +1 -0
- package/dist/manifest/projections/drizzle/generator.d.ts +27 -0
- package/dist/manifest/projections/drizzle/generator.d.ts.map +1 -0
- package/dist/manifest/projections/drizzle/generator.js +654 -0
- package/dist/manifest/projections/drizzle/generator.js.map +1 -0
- package/dist/manifest/projections/drizzle/index.d.ts +12 -0
- package/dist/manifest/projections/drizzle/index.d.ts.map +1 -0
- package/dist/manifest/projections/drizzle/index.js +12 -0
- package/dist/manifest/projections/drizzle/index.js.map +1 -0
- package/dist/manifest/projections/drizzle/options.d.ts +94 -0
- package/dist/manifest/projections/drizzle/options.d.ts.map +1 -0
- package/dist/manifest/projections/drizzle/options.js +31 -0
- package/dist/manifest/projections/drizzle/options.js.map +1 -0
- package/dist/manifest/projections/drizzle/type-mapping.d.ts +74 -0
- package/dist/manifest/projections/drizzle/type-mapping.d.ts.map +1 -0
- package/dist/manifest/projections/drizzle/type-mapping.js +101 -0
- package/dist/manifest/projections/drizzle/type-mapping.js.map +1 -0
- package/dist/manifest/projections/dynamodb/generator.d.ts +48 -0
- package/dist/manifest/projections/dynamodb/generator.d.ts.map +1 -0
- package/dist/manifest/projections/dynamodb/generator.js +341 -0
- package/dist/manifest/projections/dynamodb/generator.js.map +1 -0
- package/dist/manifest/projections/elasticsearch/generator.d.ts +44 -0
- package/dist/manifest/projections/elasticsearch/generator.d.ts.map +1 -0
- package/dist/manifest/projections/elasticsearch/generator.js +613 -0
- package/dist/manifest/projections/elasticsearch/generator.js.map +1 -0
- package/dist/manifest/projections/elasticsearch/options.d.ts +56 -0
- package/dist/manifest/projections/elasticsearch/options.d.ts.map +1 -0
- package/dist/manifest/projections/elasticsearch/options.js +37 -0
- package/dist/manifest/projections/elasticsearch/options.js.map +1 -0
- package/dist/manifest/projections/elasticsearch/type-mapping.d.ts +30 -0
- package/dist/manifest/projections/elasticsearch/type-mapping.d.ts.map +1 -0
- package/dist/manifest/projections/elasticsearch/type-mapping.js +34 -0
- package/dist/manifest/projections/elasticsearch/type-mapping.js.map +1 -0
- package/dist/manifest/projections/elasticsearch/types.d.ts +81 -0
- package/dist/manifest/projections/elasticsearch/types.d.ts.map +1 -0
- package/dist/manifest/projections/elasticsearch/types.js +10 -0
- package/dist/manifest/projections/elasticsearch/types.js.map +1 -0
- package/dist/manifest/projections/express/generator.d.ts +38 -0
- package/dist/manifest/projections/express/generator.d.ts.map +1 -0
- package/dist/manifest/projections/express/generator.js +620 -0
- package/dist/manifest/projections/express/generator.js.map +1 -0
- package/dist/manifest/projections/express/index.d.ts +8 -0
- package/dist/manifest/projections/express/index.d.ts.map +1 -0
- package/dist/manifest/projections/express/index.js +7 -0
- package/dist/manifest/projections/express/index.js.map +1 -0
- package/dist/manifest/projections/express/types.d.ts +92 -0
- package/dist/manifest/projections/express/types.d.ts.map +1 -0
- package/dist/manifest/projections/express/types.js +9 -0
- package/dist/manifest/projections/express/types.js.map +1 -0
- package/dist/manifest/projections/graphql/generator.d.ts +43 -0
- package/dist/manifest/projections/graphql/generator.d.ts.map +1 -0
- package/dist/manifest/projections/graphql/generator.js +662 -0
- package/dist/manifest/projections/graphql/generator.js.map +1 -0
- package/dist/manifest/projections/graphql/index.d.ts +11 -0
- package/dist/manifest/projections/graphql/index.d.ts.map +1 -0
- package/dist/manifest/projections/graphql/index.js +10 -0
- package/dist/manifest/projections/graphql/index.js.map +1 -0
- package/dist/manifest/projections/graphql/types.d.ts +69 -0
- package/dist/manifest/projections/graphql/types.d.ts.map +1 -0
- package/dist/manifest/projections/graphql/types.js +9 -0
- package/dist/manifest/projections/graphql/types.js.map +1 -0
- package/dist/manifest/projections/health/generator.d.ts +36 -0
- package/dist/manifest/projections/health/generator.d.ts.map +1 -0
- package/dist/manifest/projections/health/generator.js +355 -0
- package/dist/manifest/projections/health/generator.js.map +1 -0
- package/dist/manifest/projections/health/types.d.ts +67 -0
- package/dist/manifest/projections/health/types.d.ts.map +1 -0
- package/dist/manifest/projections/health/types.js +28 -0
- package/dist/manifest/projections/health/types.js.map +1 -0
- package/dist/manifest/projections/hono/generator.d.ts +36 -0
- package/dist/manifest/projections/hono/generator.d.ts.map +1 -0
- package/dist/manifest/projections/hono/generator.js +578 -0
- package/dist/manifest/projections/hono/generator.js.map +1 -0
- package/dist/manifest/projections/hono/types.d.ts +86 -0
- package/dist/manifest/projections/hono/types.d.ts.map +1 -0
- package/dist/manifest/projections/hono/types.js +10 -0
- package/dist/manifest/projections/hono/types.js.map +1 -0
- package/dist/manifest/projections/index.d.ts +58 -0
- package/dist/manifest/projections/index.d.ts.map +1 -0
- package/dist/manifest/projections/index.js +41 -0
- package/dist/manifest/projections/index.js.map +1 -0
- package/dist/manifest/projections/interface.d.ts +285 -0
- package/dist/manifest/projections/interface.d.ts.map +1 -0
- package/dist/manifest/projections/interface.js +8 -0
- package/dist/manifest/projections/interface.js.map +1 -0
- package/dist/manifest/projections/jsonschema/generator.d.ts +35 -0
- package/dist/manifest/projections/jsonschema/generator.d.ts.map +1 -0
- package/dist/manifest/projections/jsonschema/generator.js +347 -0
- package/dist/manifest/projections/jsonschema/generator.js.map +1 -0
- package/dist/manifest/projections/jsonschema/index.d.ts +3 -0
- package/dist/manifest/projections/jsonschema/index.d.ts.map +1 -0
- package/dist/manifest/projections/jsonschema/index.js +2 -0
- package/dist/manifest/projections/jsonschema/index.js.map +1 -0
- package/dist/manifest/projections/jsonschema/types.d.ts +31 -0
- package/dist/manifest/projections/jsonschema/types.d.ts.map +1 -0
- package/dist/manifest/projections/jsonschema/types.js +2 -0
- package/dist/manifest/projections/jsonschema/types.js.map +1 -0
- package/dist/manifest/projections/kysely/generator.d.ts +36 -0
- package/dist/manifest/projections/kysely/generator.d.ts.map +1 -0
- package/dist/manifest/projections/kysely/generator.js +325 -0
- package/dist/manifest/projections/kysely/generator.js.map +1 -0
- package/dist/manifest/projections/kysely/index.d.ts +4 -0
- package/dist/manifest/projections/kysely/index.d.ts.map +1 -0
- package/dist/manifest/projections/kysely/index.js +2 -0
- package/dist/manifest/projections/kysely/index.js.map +1 -0
- package/dist/manifest/projections/kysely/options.d.ts +61 -0
- package/dist/manifest/projections/kysely/options.d.ts.map +1 -0
- package/dist/manifest/projections/kysely/options.js +31 -0
- package/dist/manifest/projections/kysely/options.js.map +1 -0
- package/dist/manifest/projections/kysely/type-mapping.d.ts +61 -0
- package/dist/manifest/projections/kysely/type-mapping.d.ts.map +1 -0
- package/dist/manifest/projections/kysely/type-mapping.js +84 -0
- package/dist/manifest/projections/kysely/type-mapping.js.map +1 -0
- package/dist/manifest/projections/llm-context/generator.d.ts +24 -0
- package/dist/manifest/projections/llm-context/generator.d.ts.map +1 -0
- package/dist/manifest/projections/llm-context/generator.js +371 -0
- package/dist/manifest/projections/llm-context/generator.js.map +1 -0
- package/dist/manifest/projections/llm-context/types.d.ts +205 -0
- package/dist/manifest/projections/llm-context/types.d.ts.map +1 -0
- package/dist/manifest/projections/llm-context/types.js +9 -0
- package/dist/manifest/projections/llm-context/types.js.map +1 -0
- package/dist/manifest/projections/materialized-views/expression-to-sql.d.ts +29 -0
- package/dist/manifest/projections/materialized-views/expression-to-sql.d.ts.map +1 -0
- package/dist/manifest/projections/materialized-views/expression-to-sql.js +211 -0
- package/dist/manifest/projections/materialized-views/expression-to-sql.js.map +1 -0
- package/dist/manifest/projections/materialized-views/generator.d.ts +29 -0
- package/dist/manifest/projections/materialized-views/generator.d.ts.map +1 -0
- package/dist/manifest/projections/materialized-views/generator.js +263 -0
- package/dist/manifest/projections/materialized-views/generator.js.map +1 -0
- package/dist/manifest/projections/materialized-views/options.d.ts +59 -0
- package/dist/manifest/projections/materialized-views/options.d.ts.map +1 -0
- package/dist/manifest/projections/materialized-views/options.js +34 -0
- package/dist/manifest/projections/materialized-views/options.js.map +1 -0
- package/dist/manifest/projections/materialized-views/types.d.ts +100 -0
- package/dist/manifest/projections/materialized-views/types.d.ts.map +1 -0
- package/dist/manifest/projections/materialized-views/types.js +11 -0
- package/dist/manifest/projections/materialized-views/types.js.map +1 -0
- package/dist/manifest/projections/mermaid/generator.d.ts +46 -0
- package/dist/manifest/projections/mermaid/generator.d.ts.map +1 -0
- package/dist/manifest/projections/mermaid/generator.js +436 -0
- package/dist/manifest/projections/mermaid/generator.js.map +1 -0
- package/dist/manifest/projections/mongoose/options.d.ts +30 -0
- package/dist/manifest/projections/mongoose/options.d.ts.map +1 -0
- package/dist/manifest/projections/mongoose/options.js +18 -0
- package/dist/manifest/projections/mongoose/options.js.map +1 -0
- package/dist/manifest/projections/mongoose/type-mapping.d.ts +42 -0
- package/dist/manifest/projections/mongoose/type-mapping.d.ts.map +1 -0
- package/dist/manifest/projections/mongoose/type-mapping.js +64 -0
- package/dist/manifest/projections/mongoose/type-mapping.js.map +1 -0
- package/dist/manifest/projections/nextjs/defaults.d.ts +161 -0
- package/dist/manifest/projections/nextjs/defaults.d.ts.map +1 -0
- package/dist/manifest/projections/nextjs/defaults.js +157 -0
- package/dist/manifest/projections/nextjs/defaults.js.map +1 -0
- package/dist/manifest/projections/nextjs/generator.d.ts +78 -0
- package/dist/manifest/projections/nextjs/generator.d.ts.map +1 -0
- package/dist/manifest/projections/nextjs/generator.js +1339 -0
- package/dist/manifest/projections/nextjs/generator.js.map +1 -0
- package/dist/manifest/projections/nextjs/schedule-generator.d.ts +10 -0
- package/dist/manifest/projections/nextjs/schedule-generator.d.ts.map +1 -0
- package/dist/manifest/projections/nextjs/schedule-generator.js +54 -0
- package/dist/manifest/projections/nextjs/schedule-generator.js.map +1 -0
- package/dist/manifest/projections/openapi/generator.d.ts +37 -0
- package/dist/manifest/projections/openapi/generator.d.ts.map +1 -0
- package/dist/manifest/projections/openapi/generator.js +690 -0
- package/dist/manifest/projections/openapi/generator.js.map +1 -0
- package/dist/manifest/projections/openapi/index.d.ts +11 -0
- package/dist/manifest/projections/openapi/index.d.ts.map +1 -0
- package/dist/manifest/projections/openapi/index.js +10 -0
- package/dist/manifest/projections/openapi/index.js.map +1 -0
- package/dist/manifest/projections/openapi/types.d.ts +75 -0
- package/dist/manifest/projections/openapi/types.d.ts.map +1 -0
- package/dist/manifest/projections/openapi/types.js +9 -0
- package/dist/manifest/projections/openapi/types.js.map +1 -0
- package/dist/manifest/projections/prisma/generator.d.ts +32 -0
- package/dist/manifest/projections/prisma/generator.d.ts.map +1 -0
- package/dist/manifest/projections/prisma/generator.js +861 -0
- package/dist/manifest/projections/prisma/generator.js.map +1 -0
- package/dist/manifest/projections/prisma/index.d.ts +12 -0
- package/dist/manifest/projections/prisma/index.d.ts.map +1 -0
- package/dist/manifest/projections/prisma/index.js +12 -0
- package/dist/manifest/projections/prisma/index.js.map +1 -0
- package/dist/manifest/projections/prisma/options.d.ts +243 -0
- package/dist/manifest/projections/prisma/options.d.ts.map +1 -0
- package/dist/manifest/projections/prisma/options.js +59 -0
- package/dist/manifest/projections/prisma/options.js.map +1 -0
- package/dist/manifest/projections/prisma/type-mapping.d.ts +60 -0
- package/dist/manifest/projections/prisma/type-mapping.d.ts.map +1 -0
- package/dist/manifest/projections/prisma/type-mapping.js +95 -0
- package/dist/manifest/projections/prisma/type-mapping.js.map +1 -0
- package/dist/manifest/projections/prisma-store/generator.d.ts +12 -0
- package/dist/manifest/projections/prisma-store/generator.d.ts.map +1 -0
- package/dist/manifest/projections/prisma-store/generator.js +52 -0
- package/dist/manifest/projections/prisma-store/generator.js.map +1 -0
- package/dist/manifest/projections/prisma-store/metadata-builder.d.ts +11 -0
- package/dist/manifest/projections/prisma-store/metadata-builder.d.ts.map +1 -0
- package/dist/manifest/projections/prisma-store/metadata-builder.js +183 -0
- package/dist/manifest/projections/prisma-store/metadata-builder.js.map +1 -0
- package/dist/manifest/projections/prisma-store/options.d.ts +31 -0
- package/dist/manifest/projections/prisma-store/options.d.ts.map +1 -0
- package/dist/manifest/projections/prisma-store/options.js +21 -0
- package/dist/manifest/projections/prisma-store/options.js.map +1 -0
- package/dist/manifest/projections/prisma-store/persistence.d.ts +4 -0
- package/dist/manifest/projections/prisma-store/persistence.d.ts.map +1 -0
- package/dist/manifest/projections/prisma-store/persistence.js +24 -0
- package/dist/manifest/projections/prisma-store/persistence.js.map +1 -0
- package/dist/manifest/projections/pydantic/generator.d.ts +27 -0
- package/dist/manifest/projections/pydantic/generator.d.ts.map +1 -0
- package/dist/manifest/projections/pydantic/generator.js +798 -0
- package/dist/manifest/projections/pydantic/generator.js.map +1 -0
- package/dist/manifest/projections/pydantic/types.d.ts +32 -0
- package/dist/manifest/projections/pydantic/types.d.ts.map +1 -0
- package/dist/manifest/projections/pydantic/types.js +5 -0
- package/dist/manifest/projections/pydantic/types.js.map +1 -0
- package/dist/manifest/projections/react-query/generator.d.ts +87 -0
- package/dist/manifest/projections/react-query/generator.d.ts.map +1 -0
- package/dist/manifest/projections/react-query/generator.js +413 -0
- package/dist/manifest/projections/react-query/generator.js.map +1 -0
- package/dist/manifest/projections/registry.d.ts +59 -0
- package/dist/manifest/projections/registry.d.ts.map +1 -0
- package/dist/manifest/projections/registry.js +110 -0
- package/dist/manifest/projections/registry.js.map +1 -0
- package/dist/manifest/projections/remix/generator.d.ts +58 -0
- package/dist/manifest/projections/remix/generator.d.ts.map +1 -0
- package/dist/manifest/projections/remix/generator.js +788 -0
- package/dist/manifest/projections/remix/generator.js.map +1 -0
- package/dist/manifest/projections/routes/generator.d.ts +32 -0
- package/dist/manifest/projections/routes/generator.d.ts.map +1 -0
- package/dist/manifest/projections/routes/generator.js +401 -0
- package/dist/manifest/projections/routes/generator.js.map +1 -0
- package/dist/manifest/projections/routes/types.d.ts +104 -0
- package/dist/manifest/projections/routes/types.d.ts.map +1 -0
- package/dist/manifest/projections/routes/types.js +11 -0
- package/dist/manifest/projections/routes/types.js.map +1 -0
- package/dist/manifest/projections/shared/naming.d.ts +64 -0
- package/dist/manifest/projections/shared/naming.d.ts.map +1 -0
- package/dist/manifest/projections/shared/naming.js +138 -0
- package/dist/manifest/projections/shared/naming.js.map +1 -0
- package/dist/manifest/projections/storybook/generator.d.ts +38 -0
- package/dist/manifest/projections/storybook/generator.d.ts.map +1 -0
- package/dist/manifest/projections/storybook/generator.js +462 -0
- package/dist/manifest/projections/storybook/generator.js.map +1 -0
- package/dist/manifest/projections/sveltekit/generator.d.ts +64 -0
- package/dist/manifest/projections/sveltekit/generator.d.ts.map +1 -0
- package/dist/manifest/projections/sveltekit/generator.js +1043 -0
- package/dist/manifest/projections/sveltekit/generator.js.map +1 -0
- package/dist/manifest/projections/sveltekit/index.d.ts +11 -0
- package/dist/manifest/projections/sveltekit/index.d.ts.map +1 -0
- package/dist/manifest/projections/sveltekit/index.js +10 -0
- package/dist/manifest/projections/sveltekit/index.js.map +1 -0
- package/dist/manifest/projections/sveltekit/types.d.ts +122 -0
- package/dist/manifest/projections/sveltekit/types.d.ts.map +1 -0
- package/dist/manifest/projections/sveltekit/types.js +10 -0
- package/dist/manifest/projections/sveltekit/types.js.map +1 -0
- package/dist/manifest/projections/terraform/generator.d.ts +29 -0
- package/dist/manifest/projections/terraform/generator.d.ts.map +1 -0
- package/dist/manifest/projections/terraform/generator.js +722 -0
- package/dist/manifest/projections/terraform/generator.js.map +1 -0
- package/dist/manifest/projections/terraform/index.d.ts +7 -0
- package/dist/manifest/projections/terraform/index.d.ts.map +1 -0
- package/dist/manifest/projections/terraform/index.js +7 -0
- package/dist/manifest/projections/terraform/index.js.map +1 -0
- package/dist/manifest/projections/terraform/options.d.ts +92 -0
- package/dist/manifest/projections/terraform/options.d.ts.map +1 -0
- package/dist/manifest/projections/terraform/options.js +37 -0
- package/dist/manifest/projections/terraform/options.js.map +1 -0
- package/dist/manifest/projections/terraform/types.d.ts +55 -0
- package/dist/manifest/projections/terraform/types.d.ts.map +1 -0
- package/dist/manifest/projections/terraform/types.js +38 -0
- package/dist/manifest/projections/terraform/types.js.map +1 -0
- package/dist/manifest/projections/zod/generator.d.ts +27 -0
- package/dist/manifest/projections/zod/generator.d.ts.map +1 -0
- package/dist/manifest/projections/zod/generator.js +367 -0
- package/dist/manifest/projections/zod/generator.js.map +1 -0
- package/dist/manifest/projections/zod/index.d.ts +8 -0
- package/dist/manifest/projections/zod/index.d.ts.map +1 -0
- package/dist/manifest/projections/zod/index.js +7 -0
- package/dist/manifest/projections/zod/index.js.map +1 -0
- package/dist/manifest/projections/zod/types.d.ts +14 -0
- package/dist/manifest/projections/zod/types.d.ts.map +1 -0
- package/dist/manifest/projections/zod/types.js +5 -0
- package/dist/manifest/projections/zod/types.js.map +1 -0
- package/dist/manifest/reaction-completeness-checks.d.ts +11 -0
- package/dist/manifest/reaction-completeness-checks.d.ts.map +1 -0
- package/dist/manifest/reaction-completeness-checks.js +106 -0
- package/dist/manifest/reaction-completeness-checks.js.map +1 -0
- package/dist/manifest/reaction-completeness.d.ts +9 -0
- package/dist/manifest/reaction-completeness.d.ts.map +1 -0
- package/dist/manifest/reaction-completeness.js +35 -0
- package/dist/manifest/reaction-completeness.js.map +1 -0
- package/dist/manifest/registry/emit.d.ts +53 -0
- package/dist/manifest/registry/emit.d.ts.map +1 -0
- package/dist/manifest/registry/emit.js +96 -0
- package/dist/manifest/registry/emit.js.map +1 -0
- package/dist/manifest/runtime-command-extensions.d.ts +21 -0
- package/dist/manifest/runtime-command-extensions.d.ts.map +1 -0
- package/dist/manifest/runtime-command-extensions.js +136 -0
- package/dist/manifest/runtime-command-extensions.js.map +1 -0
- package/dist/manifest/runtime-engine.d.ts +1019 -0
- package/dist/manifest/runtime-engine.d.ts.map +1 -0
- package/dist/manifest/runtime-engine.js +3872 -0
- package/dist/manifest/runtime-engine.js.map +1 -0
- package/dist/manifest/runtime-profiling-bridge.d.ts +22 -0
- package/dist/manifest/runtime-profiling-bridge.d.ts.map +1 -0
- package/dist/manifest/runtime-profiling-bridge.js +69 -0
- package/dist/manifest/runtime-profiling-bridge.js.map +1 -0
- package/dist/manifest/runtime-rate-limit.d.ts +52 -0
- package/dist/manifest/runtime-rate-limit.d.ts.map +1 -0
- package/dist/manifest/runtime-rate-limit.js +70 -0
- package/dist/manifest/runtime-rate-limit.js.map +1 -0
- package/dist/manifest/runtime-retry.d.ts +68 -0
- package/dist/manifest/runtime-retry.d.ts.map +1 -0
- package/dist/manifest/runtime-retry.js +93 -0
- package/dist/manifest/runtime-retry.js.map +1 -0
- package/dist/manifest/runtime-schedule.d.ts +47 -0
- package/dist/manifest/runtime-schedule.d.ts.map +1 -0
- package/dist/manifest/runtime-schedule.js +95 -0
- package/dist/manifest/runtime-schedule.js.map +1 -0
- package/dist/manifest/schedule-utils.d.ts +15 -0
- package/dist/manifest/schedule-utils.d.ts.map +1 -0
- package/dist/manifest/schedule-utils.js +82 -0
- package/dist/manifest/schedule-utils.js.map +1 -0
- package/dist/manifest/standalone-generator.d.ts +32 -0
- package/dist/manifest/standalone-generator.d.ts.map +1 -0
- package/dist/manifest/standalone-generator.js +596 -0
- package/dist/manifest/standalone-generator.js.map +1 -0
- package/dist/manifest/stores/prisma-generic/coercion.d.ts +17 -0
- package/dist/manifest/stores/prisma-generic/coercion.d.ts.map +1 -0
- package/dist/manifest/stores/prisma-generic/coercion.js +83 -0
- package/dist/manifest/stores/prisma-generic/coercion.js.map +1 -0
- package/dist/manifest/stores/prisma-generic/index.d.ts +3 -0
- package/dist/manifest/stores/prisma-generic/index.d.ts.map +1 -0
- package/dist/manifest/stores/prisma-generic/index.js +2 -0
- package/dist/manifest/stores/prisma-generic/index.js.map +1 -0
- package/dist/manifest/stores/prisma-generic/store.d.ts +35 -0
- package/dist/manifest/stores/prisma-generic/store.d.ts.map +1 -0
- package/dist/manifest/stores/prisma-generic/store.js +216 -0
- package/dist/manifest/stores/prisma-generic/store.js.map +1 -0
- package/dist/manifest/stores/prisma-generic/types.d.ts +46 -0
- package/dist/manifest/stores/prisma-generic/types.d.ts.map +1 -0
- package/dist/manifest/stores/prisma-generic/types.js +6 -0
- package/dist/manifest/stores/prisma-generic/types.js.map +1 -0
- package/dist/manifest/stores.node.d.ts +248 -0
- package/dist/manifest/stores.node.d.ts.map +1 -0
- package/dist/manifest/stores.node.js +718 -0
- package/dist/manifest/stores.node.js.map +1 -0
- package/dist/manifest/test/postgres-live-env.d.ts +9 -0
- package/dist/manifest/test/postgres-live-env.d.ts.map +1 -0
- package/dist/manifest/test/postgres-live-env.js +14 -0
- package/dist/manifest/test/postgres-live-env.js.map +1 -0
- package/dist/manifest/types.d.ts +570 -0
- package/dist/manifest/types.d.ts.map +1 -0
- package/dist/manifest/types.js +2 -0
- package/dist/manifest/types.js.map +1 -0
- package/dist/manifest/version.d.ts +15 -0
- package/dist/manifest/version.d.ts.map +1 -0
- package/dist/manifest/version.js +15 -0
- package/dist/manifest/version.js.map +1 -0
- package/dist/manifest/wasm/index.d.ts +15 -0
- package/dist/manifest/wasm/index.d.ts.map +1 -0
- package/dist/manifest/wasm/index.js +15 -0
- package/dist/manifest/wasm/index.js.map +1 -0
- package/dist/manifest/wasm/wasm-evaluator.d.ts +93 -0
- package/dist/manifest/wasm/wasm-evaluator.d.ts.map +1 -0
- package/dist/manifest/wasm/wasm-evaluator.js +242 -0
- package/dist/manifest/wasm/wasm-evaluator.js.map +1 -0
- package/dist/manifest/wasm/wasm-loader.d.ts +56 -0
- package/dist/manifest/wasm/wasm-loader.d.ts.map +1 -0
- package/dist/manifest/wasm/wasm-loader.js +132 -0
- package/dist/manifest/wasm/wasm-loader.js.map +1 -0
- package/docs/spec/config/manifest.config.schema.json +737 -0
- package/docs/spec/config/prisma-projection.schema.json +173 -0
- package/docs/spec/ir/ir-v1.schema.json +2033 -0
- package/docs/spec/plugins/plugin.schema.json +104 -0
- package/docs/spec/registry/bypasses.schema.json +87 -0
- package/docs/spec/registry/commands.schema.json +61 -0
- package/docs/spec/registry/entities.schema.json +52 -0
- package/docs/spec/semantics.md +630 -0
- package/package.json +356 -0
- package/packages/cli/dist/audit/bypass-violations.d.ts +16 -0
- package/packages/cli/dist/audit/bypass-violations.d.ts.map +1 -0
- package/packages/cli/dist/audit/bypass-violations.js +98 -0
- package/packages/cli/dist/audit/bypass-violations.js.map +1 -0
- package/packages/cli/dist/audit/direct-writes.d.ts +15 -0
- package/packages/cli/dist/audit/direct-writes.d.ts.map +1 -0
- package/packages/cli/dist/audit/direct-writes.js +86 -0
- package/packages/cli/dist/audit/direct-writes.js.map +1 -0
- package/packages/cli/dist/audit/event-fabrication.d.ts +17 -0
- package/packages/cli/dist/audit/event-fabrication.d.ts.map +1 -0
- package/packages/cli/dist/audit/event-fabrication.js +101 -0
- package/packages/cli/dist/audit/event-fabrication.js.map +1 -0
- package/packages/cli/dist/audit/existing-command-available.d.ts +20 -0
- package/packages/cli/dist/audit/existing-command-available.d.ts.map +1 -0
- package/packages/cli/dist/audit/existing-command-available.js +158 -0
- package/packages/cli/dist/audit/existing-command-available.js.map +1 -0
- package/packages/cli/dist/audit/missing-tests.d.ts +17 -0
- package/packages/cli/dist/audit/missing-tests.d.ts.map +1 -0
- package/packages/cli/dist/audit/missing-tests.js +108 -0
- package/packages/cli/dist/audit/missing-tests.js.map +1 -0
- package/packages/cli/dist/audit/route-drift.d.ts +16 -0
- package/packages/cli/dist/audit/route-drift.d.ts.map +1 -0
- package/packages/cli/dist/audit/route-drift.js +86 -0
- package/packages/cli/dist/audit/route-drift.js.map +1 -0
- package/packages/cli/dist/audit/types.d.ts +63 -0
- package/packages/cli/dist/audit/types.d.ts.map +1 -0
- package/packages/cli/dist/audit/types.js +10 -0
- package/packages/cli/dist/audit/types.js.map +1 -0
- package/packages/cli/dist/audit/unregistered-command-call.d.ts +25 -0
- package/packages/cli/dist/audit/unregistered-command-call.d.ts.map +1 -0
- package/packages/cli/dist/audit/unregistered-command-call.js +196 -0
- package/packages/cli/dist/audit/unregistered-command-call.js.map +1 -0
- package/packages/cli/dist/audit/unregistered-entity-write.d.ts +16 -0
- package/packages/cli/dist/audit/unregistered-entity-write.d.ts.map +1 -0
- package/packages/cli/dist/audit/unregistered-entity-write.js +96 -0
- package/packages/cli/dist/audit/unregistered-entity-write.js.map +1 -0
- package/packages/cli/dist/audit/write-receiver.d.ts +23 -0
- package/packages/cli/dist/audit/write-receiver.d.ts.map +1 -0
- package/packages/cli/dist/audit/write-receiver.js +32 -0
- package/packages/cli/dist/audit/write-receiver.js.map +1 -0
- package/packages/cli/dist/checks/dispatcher-presence.d.ts +37 -0
- package/packages/cli/dist/checks/dispatcher-presence.d.ts.map +1 -0
- package/packages/cli/dist/checks/dispatcher-presence.js +57 -0
- package/packages/cli/dist/checks/dispatcher-presence.js.map +1 -0
- package/packages/cli/dist/checks/package-shape.d.ts +81 -0
- package/packages/cli/dist/checks/package-shape.d.ts.map +1 -0
- package/packages/cli/dist/checks/package-shape.js +359 -0
- package/packages/cli/dist/checks/package-shape.js.map +1 -0
- package/packages/cli/dist/checks/runtime-smoke.d.ts +42 -0
- package/packages/cli/dist/checks/runtime-smoke.d.ts.map +1 -0
- package/packages/cli/dist/checks/runtime-smoke.js +167 -0
- package/packages/cli/dist/checks/runtime-smoke.js.map +1 -0
- package/packages/cli/dist/commands/analyze.d.ts +97 -0
- package/packages/cli/dist/commands/analyze.d.ts.map +1 -0
- package/packages/cli/dist/commands/analyze.js +411 -0
- package/packages/cli/dist/commands/analyze.js.map +1 -0
- package/packages/cli/dist/commands/audit-bypasses.d.ts +31 -0
- package/packages/cli/dist/commands/audit-bypasses.d.ts.map +1 -0
- package/packages/cli/dist/commands/audit-bypasses.js +152 -0
- package/packages/cli/dist/commands/audit-bypasses.js.map +1 -0
- package/packages/cli/dist/commands/audit-constitution.d.ts +20 -0
- package/packages/cli/dist/commands/audit-constitution.d.ts.map +1 -0
- package/packages/cli/dist/commands/audit-constitution.js +18 -0
- package/packages/cli/dist/commands/audit-constitution.js.map +1 -0
- package/packages/cli/dist/commands/audit-governance.d.ts +37 -0
- package/packages/cli/dist/commands/audit-governance.d.ts.map +1 -0
- package/packages/cli/dist/commands/audit-governance.js +78 -0
- package/packages/cli/dist/commands/audit-governance.js.map +1 -0
- package/packages/cli/dist/commands/audit-routes.d.ts +135 -0
- package/packages/cli/dist/commands/audit-routes.d.ts.map +1 -0
- package/packages/cli/dist/commands/audit-routes.js +514 -0
- package/packages/cli/dist/commands/audit-routes.js.map +1 -0
- package/packages/cli/dist/commands/breaking-change.d.ts +15 -0
- package/packages/cli/dist/commands/breaking-change.d.ts.map +1 -0
- package/packages/cli/dist/commands/breaking-change.js +150 -0
- package/packages/cli/dist/commands/breaking-change.js.map +1 -0
- package/packages/cli/dist/commands/build.d.ts +26 -0
- package/packages/cli/dist/commands/build.d.ts.map +1 -0
- package/packages/cli/dist/commands/build.js +58 -0
- package/packages/cli/dist/commands/build.js.map +1 -0
- package/packages/cli/dist/commands/changelog.d.ts +26 -0
- package/packages/cli/dist/commands/changelog.d.ts.map +1 -0
- package/packages/cli/dist/commands/changelog.js +365 -0
- package/packages/cli/dist/commands/changelog.js.map +1 -0
- package/packages/cli/dist/commands/check.d.ts +21 -0
- package/packages/cli/dist/commands/check.d.ts.map +1 -0
- package/packages/cli/dist/commands/check.js +31 -0
- package/packages/cli/dist/commands/check.js.map +1 -0
- package/packages/cli/dist/commands/compile.d.ts +19 -0
- package/packages/cli/dist/commands/compile.d.ts.map +1 -0
- package/packages/cli/dist/commands/compile.js +325 -0
- package/packages/cli/dist/commands/compile.js.map +1 -0
- package/packages/cli/dist/commands/config.d.ts +23 -0
- package/packages/cli/dist/commands/config.d.ts.map +1 -0
- package/packages/cli/dist/commands/config.js +172 -0
- package/packages/cli/dist/commands/config.js.map +1 -0
- package/packages/cli/dist/commands/coverage.d.ts +55 -0
- package/packages/cli/dist/commands/coverage.d.ts.map +1 -0
- package/packages/cli/dist/commands/coverage.js +343 -0
- package/packages/cli/dist/commands/coverage.js.map +1 -0
- package/packages/cli/dist/commands/diagram.d.ts +22 -0
- package/packages/cli/dist/commands/diagram.d.ts.map +1 -0
- package/packages/cli/dist/commands/diagram.js +176 -0
- package/packages/cli/dist/commands/diagram.js.map +1 -0
- package/packages/cli/dist/commands/docs.d.ts +18 -0
- package/packages/cli/dist/commands/docs.d.ts.map +1 -0
- package/packages/cli/dist/commands/docs.js +722 -0
- package/packages/cli/dist/commands/docs.js.map +1 -0
- package/packages/cli/dist/commands/doctor-lib.d.ts +147 -0
- package/packages/cli/dist/commands/doctor-lib.d.ts.map +1 -0
- package/packages/cli/dist/commands/doctor-lib.js +491 -0
- package/packages/cli/dist/commands/doctor-lib.js.map +1 -0
- package/packages/cli/dist/commands/doctor.d.ts +31 -0
- package/packages/cli/dist/commands/doctor.d.ts.map +1 -0
- package/packages/cli/dist/commands/doctor.js +628 -0
- package/packages/cli/dist/commands/doctor.js.map +1 -0
- package/packages/cli/dist/commands/emit-registries.d.ts +33 -0
- package/packages/cli/dist/commands/emit-registries.d.ts.map +1 -0
- package/packages/cli/dist/commands/emit-registries.js +109 -0
- package/packages/cli/dist/commands/emit-registries.js.map +1 -0
- package/packages/cli/dist/commands/enforce-surface.d.ts +62 -0
- package/packages/cli/dist/commands/enforce-surface.d.ts.map +1 -0
- package/packages/cli/dist/commands/enforce-surface.js +172 -0
- package/packages/cli/dist/commands/enforce-surface.js.map +1 -0
- package/packages/cli/dist/commands/fmt.d.ts +17 -0
- package/packages/cli/dist/commands/fmt.d.ts.map +1 -0
- package/packages/cli/dist/commands/fmt.js +129 -0
- package/packages/cli/dist/commands/fmt.js.map +1 -0
- package/packages/cli/dist/commands/gen-tests.d.ts +41 -0
- package/packages/cli/dist/commands/gen-tests.d.ts.map +1 -0
- package/packages/cli/dist/commands/gen-tests.js +370 -0
- package/packages/cli/dist/commands/gen-tests.js.map +1 -0
- package/packages/cli/dist/commands/generate-from-prompt.d.ts +34 -0
- package/packages/cli/dist/commands/generate-from-prompt.d.ts.map +1 -0
- package/packages/cli/dist/commands/generate-from-prompt.js +990 -0
- package/packages/cli/dist/commands/generate-from-prompt.js.map +1 -0
- package/packages/cli/dist/commands/generate.d.ts +36 -0
- package/packages/cli/dist/commands/generate.d.ts.map +1 -0
- package/packages/cli/dist/commands/generate.js +371 -0
- package/packages/cli/dist/commands/generate.js.map +1 -0
- package/packages/cli/dist/commands/harness.d.ts +13 -0
- package/packages/cli/dist/commands/harness.d.ts.map +1 -0
- package/packages/cli/dist/commands/harness.js +276 -0
- package/packages/cli/dist/commands/harness.js.map +1 -0
- package/packages/cli/dist/commands/init-ci.d.ts +19 -0
- package/packages/cli/dist/commands/init-ci.d.ts.map +1 -0
- package/packages/cli/dist/commands/init-ci.js +148 -0
- package/packages/cli/dist/commands/init-ci.js.map +1 -0
- package/packages/cli/dist/commands/init.d.ts +33 -0
- package/packages/cli/dist/commands/init.d.ts.map +1 -0
- package/packages/cli/dist/commands/init.js +157 -0
- package/packages/cli/dist/commands/init.js.map +1 -0
- package/packages/cli/dist/commands/install-hooks.d.ts +29 -0
- package/packages/cli/dist/commands/install-hooks.d.ts.map +1 -0
- package/packages/cli/dist/commands/install-hooks.js +139 -0
- package/packages/cli/dist/commands/install-hooks.js.map +1 -0
- package/packages/cli/dist/commands/integration-check.d.ts +62 -0
- package/packages/cli/dist/commands/integration-check.d.ts.map +1 -0
- package/packages/cli/dist/commands/integration-check.js +298 -0
- package/packages/cli/dist/commands/integration-check.js.map +1 -0
- package/packages/cli/dist/commands/ir-diff.d.ts +8 -0
- package/packages/cli/dist/commands/ir-diff.d.ts.map +1 -0
- package/packages/cli/dist/commands/ir-diff.js +199 -0
- package/packages/cli/dist/commands/ir-diff.js.map +1 -0
- package/packages/cli/dist/commands/lint-routes.d.ts +56 -0
- package/packages/cli/dist/commands/lint-routes.d.ts.map +1 -0
- package/packages/cli/dist/commands/lint-routes.js +228 -0
- package/packages/cli/dist/commands/lint-routes.js.map +1 -0
- package/packages/cli/dist/commands/load-test.d.ts +61 -0
- package/packages/cli/dist/commands/load-test.d.ts.map +1 -0
- package/packages/cli/dist/commands/load-test.js +675 -0
- package/packages/cli/dist/commands/load-test.js.map +1 -0
- package/packages/cli/dist/commands/migrate.d.ts +21 -0
- package/packages/cli/dist/commands/migrate.d.ts.map +1 -0
- package/packages/cli/dist/commands/migrate.js +264 -0
- package/packages/cli/dist/commands/migrate.js.map +1 -0
- package/packages/cli/dist/commands/mock.d.ts +79 -0
- package/packages/cli/dist/commands/mock.d.ts.map +1 -0
- package/packages/cli/dist/commands/mock.js +324 -0
- package/packages/cli/dist/commands/mock.js.map +1 -0
- package/packages/cli/dist/commands/pack-unpack.d.ts +30 -0
- package/packages/cli/dist/commands/pack-unpack.d.ts.map +1 -0
- package/packages/cli/dist/commands/pack-unpack.js +108 -0
- package/packages/cli/dist/commands/pack-unpack.js.map +1 -0
- package/packages/cli/dist/commands/preflight.d.ts +31 -0
- package/packages/cli/dist/commands/preflight.d.ts.map +1 -0
- package/packages/cli/dist/commands/preflight.js +246 -0
- package/packages/cli/dist/commands/preflight.js.map +1 -0
- package/packages/cli/dist/commands/profile.d.ts +30 -0
- package/packages/cli/dist/commands/profile.d.ts.map +1 -0
- package/packages/cli/dist/commands/profile.js +201 -0
- package/packages/cli/dist/commands/profile.js.map +1 -0
- package/packages/cli/dist/commands/repl.d.ts +16 -0
- package/packages/cli/dist/commands/repl.d.ts.map +1 -0
- package/packages/cli/dist/commands/repl.js +772 -0
- package/packages/cli/dist/commands/repl.js.map +1 -0
- package/packages/cli/dist/commands/routes.d.ts +24 -0
- package/packages/cli/dist/commands/routes.d.ts.map +1 -0
- package/packages/cli/dist/commands/routes.js +144 -0
- package/packages/cli/dist/commands/routes.js.map +1 -0
- package/packages/cli/dist/commands/scan.d.ts +23 -0
- package/packages/cli/dist/commands/scan.d.ts.map +1 -0
- package/packages/cli/dist/commands/scan.js +722 -0
- package/packages/cli/dist/commands/scan.js.map +1 -0
- package/packages/cli/dist/commands/seed.d.ts +35 -0
- package/packages/cli/dist/commands/seed.d.ts.map +1 -0
- package/packages/cli/dist/commands/seed.js +503 -0
- package/packages/cli/dist/commands/seed.js.map +1 -0
- package/packages/cli/dist/commands/validate-ai-ajv.d.ts +4 -0
- package/packages/cli/dist/commands/validate-ai-ajv.d.ts.map +1 -0
- package/packages/cli/dist/commands/validate-ai-ajv.js +78 -0
- package/packages/cli/dist/commands/validate-ai-ajv.js.map +1 -0
- package/packages/cli/dist/commands/validate-ai-compiler.d.ts +5 -0
- package/packages/cli/dist/commands/validate-ai-compiler.d.ts.map +1 -0
- package/packages/cli/dist/commands/validate-ai-compiler.js +8 -0
- package/packages/cli/dist/commands/validate-ai-compiler.js.map +1 -0
- package/packages/cli/dist/commands/validate-ai-report.d.ts +5 -0
- package/packages/cli/dist/commands/validate-ai-report.d.ts.map +1 -0
- package/packages/cli/dist/commands/validate-ai-report.js +80 -0
- package/packages/cli/dist/commands/validate-ai-report.js.map +1 -0
- package/packages/cli/dist/commands/validate-ai-resolve-inputs.d.ts +6 -0
- package/packages/cli/dist/commands/validate-ai-resolve-inputs.d.ts.map +1 -0
- package/packages/cli/dist/commands/validate-ai-resolve-inputs.js +54 -0
- package/packages/cli/dist/commands/validate-ai-resolve-inputs.js.map +1 -0
- package/packages/cli/dist/commands/validate-ai-semantic-checks.d.ts +4 -0
- package/packages/cli/dist/commands/validate-ai-semantic-checks.d.ts.map +1 -0
- package/packages/cli/dist/commands/validate-ai-semantic-checks.js +218 -0
- package/packages/cli/dist/commands/validate-ai-semantic-checks.js.map +1 -0
- package/packages/cli/dist/commands/validate-ai-types.d.ts +41 -0
- package/packages/cli/dist/commands/validate-ai-types.d.ts.map +1 -0
- package/packages/cli/dist/commands/validate-ai-types.js +2 -0
- package/packages/cli/dist/commands/validate-ai-types.js.map +1 -0
- package/packages/cli/dist/commands/validate-ai-validate-file.d.ts +5 -0
- package/packages/cli/dist/commands/validate-ai-validate-file.d.ts.map +1 -0
- package/packages/cli/dist/commands/validate-ai-validate-file.js +126 -0
- package/packages/cli/dist/commands/validate-ai-validate-file.js.map +1 -0
- package/packages/cli/dist/commands/validate-ai.d.ts +15 -0
- package/packages/cli/dist/commands/validate-ai.d.ts.map +1 -0
- package/packages/cli/dist/commands/validate-ai.js +124 -0
- package/packages/cli/dist/commands/validate-ai.js.map +1 -0
- package/packages/cli/dist/commands/validate.d.ts +15 -0
- package/packages/cli/dist/commands/validate.d.ts.map +1 -0
- package/packages/cli/dist/commands/validate.js +205 -0
- package/packages/cli/dist/commands/validate.js.map +1 -0
- package/packages/cli/dist/commands/versions.d.ts +56 -0
- package/packages/cli/dist/commands/versions.d.ts.map +1 -0
- package/packages/cli/dist/commands/versions.js +427 -0
- package/packages/cli/dist/commands/versions.js.map +1 -0
- package/packages/cli/dist/commands/watch.d.ts +34 -0
- package/packages/cli/dist/commands/watch.d.ts.map +1 -0
- package/packages/cli/dist/commands/watch.js +253 -0
- package/packages/cli/dist/commands/watch.js.map +1 -0
- package/packages/cli/dist/index.d.ts +14 -0
- package/packages/cli/dist/index.d.ts.map +1 -0
- package/packages/cli/dist/index.js +1159 -0
- package/packages/cli/dist/index.js.map +1 -0
- package/packages/cli/dist/utils/config-validate.d.ts +48 -0
- package/packages/cli/dist/utils/config-validate.d.ts.map +1 -0
- package/packages/cli/dist/utils/config-validate.js +116 -0
- package/packages/cli/dist/utils/config-validate.js.map +1 -0
- package/packages/cli/dist/utils/config.d.ts +360 -0
- package/packages/cli/dist/utils/config.d.ts.map +1 -0
- package/packages/cli/dist/utils/config.js +567 -0
- package/packages/cli/dist/utils/config.js.map +1 -0
- package/packages/cli/dist/utils/schema.d.ts +8 -0
- package/packages/cli/dist/utils/schema.d.ts.map +1 -0
- package/packages/cli/dist/utils/schema.js +13 -0
- package/packages/cli/dist/utils/schema.js.map +1 -0
- package/packages/lsp-server/bin/manifest-lsp.js +3 -0
- package/packages/lsp-server/dist/compiler-bridge.d.ts +24 -0
- package/packages/lsp-server/dist/compiler-bridge.d.ts.map +1 -0
- package/packages/lsp-server/dist/compiler-bridge.js +32 -0
- package/packages/lsp-server/dist/compiler-bridge.js.map +1 -0
- package/packages/lsp-server/dist/document-store.d.ts +23 -0
- package/packages/lsp-server/dist/document-store.d.ts.map +1 -0
- package/packages/lsp-server/dist/document-store.js +40 -0
- package/packages/lsp-server/dist/document-store.js.map +1 -0
- package/packages/lsp-server/dist/features/completion.d.ts +23 -0
- package/packages/lsp-server/dist/features/completion.d.ts.map +1 -0
- package/packages/lsp-server/dist/features/completion.js +293 -0
- package/packages/lsp-server/dist/features/completion.js.map +1 -0
- package/packages/lsp-server/dist/features/definition.d.ts +9 -0
- package/packages/lsp-server/dist/features/definition.d.ts.map +1 -0
- package/packages/lsp-server/dist/features/definition.js +24 -0
- package/packages/lsp-server/dist/features/definition.js.map +1 -0
- package/packages/lsp-server/dist/features/diagnostics.d.ts +8 -0
- package/packages/lsp-server/dist/features/diagnostics.d.ts.map +1 -0
- package/packages/lsp-server/dist/features/diagnostics.js +40 -0
- package/packages/lsp-server/dist/features/diagnostics.js.map +1 -0
- package/packages/lsp-server/dist/features/document-symbols.d.ts +8 -0
- package/packages/lsp-server/dist/features/document-symbols.d.ts.map +1 -0
- package/packages/lsp-server/dist/features/document-symbols.js +164 -0
- package/packages/lsp-server/dist/features/document-symbols.js.map +1 -0
- package/packages/lsp-server/dist/features/hover.d.ts +9 -0
- package/packages/lsp-server/dist/features/hover.d.ts.map +1 -0
- package/packages/lsp-server/dist/features/hover.js +100 -0
- package/packages/lsp-server/dist/features/hover.js.map +1 -0
- package/packages/lsp-server/dist/index.d.ts +6 -0
- package/packages/lsp-server/dist/index.d.ts.map +1 -0
- package/packages/lsp-server/dist/index.js +11 -0
- package/packages/lsp-server/dist/index.js.map +1 -0
- package/packages/lsp-server/dist/position-utils.d.ts +25 -0
- package/packages/lsp-server/dist/position-utils.d.ts.map +1 -0
- package/packages/lsp-server/dist/position-utils.js +39 -0
- package/packages/lsp-server/dist/position-utils.js.map +1 -0
- package/packages/lsp-server/dist/server.d.ts +14 -0
- package/packages/lsp-server/dist/server.d.ts.map +1 -0
- package/packages/lsp-server/dist/server.js +96 -0
- package/packages/lsp-server/dist/server.js.map +1 -0
- package/packages/lsp-server/dist/symbols/builtin-docs.d.ts +34 -0
- package/packages/lsp-server/dist/symbols/builtin-docs.d.ts.map +1 -0
- package/packages/lsp-server/dist/symbols/builtin-docs.js +193 -0
- package/packages/lsp-server/dist/symbols/builtin-docs.js.map +1 -0
- package/packages/lsp-server/dist/symbols/symbol-index.d.ts +18 -0
- package/packages/lsp-server/dist/symbols/symbol-index.d.ts.map +1 -0
- package/packages/lsp-server/dist/symbols/symbol-index.js +107 -0
- package/packages/lsp-server/dist/symbols/symbol-index.js.map +1 -0
- package/packages/mcp-server/bin/manifest-mcp.js +27 -0
- package/packages/mcp-server/dist/index.d.ts +24 -0
- package/packages/mcp-server/dist/index.d.ts.map +1 -0
- package/packages/mcp-server/dist/index.js +36 -0
- package/packages/mcp-server/dist/index.js.map +1 -0
- package/packages/mcp-server/dist/resources/ir-cache.d.ts +9 -0
- package/packages/mcp-server/dist/resources/ir-cache.d.ts.map +1 -0
- package/packages/mcp-server/dist/resources/ir-cache.js +47 -0
- package/packages/mcp-server/dist/resources/ir-cache.js.map +1 -0
- package/packages/mcp-server/dist/resources/ir-schema.d.ts +8 -0
- package/packages/mcp-server/dist/resources/ir-schema.d.ts.map +1 -0
- package/packages/mcp-server/dist/resources/ir-schema.js +39 -0
- package/packages/mcp-server/dist/resources/ir-schema.js.map +1 -0
- package/packages/mcp-server/dist/resources/semantics.d.ts +8 -0
- package/packages/mcp-server/dist/resources/semantics.d.ts.map +1 -0
- package/packages/mcp-server/dist/resources/semantics.js +38 -0
- package/packages/mcp-server/dist/resources/semantics.js.map +1 -0
- package/packages/mcp-server/dist/server.d.ts +7 -0
- package/packages/mcp-server/dist/server.d.ts.map +1 -0
- package/packages/mcp-server/dist/server.js +22 -0
- package/packages/mcp-server/dist/server.js.map +1 -0
- package/packages/mcp-server/dist/state/session-store.d.ts +39 -0
- package/packages/mcp-server/dist/state/session-store.d.ts.map +1 -0
- package/packages/mcp-server/dist/state/session-store.js +58 -0
- package/packages/mcp-server/dist/state/session-store.js.map +1 -0
- package/packages/mcp-server/dist/tools/compile.d.ts +30 -0
- package/packages/mcp-server/dist/tools/compile.d.ts.map +1 -0
- package/packages/mcp-server/dist/tools/compile.js +54 -0
- package/packages/mcp-server/dist/tools/compile.js.map +1 -0
- package/packages/mcp-server/dist/tools/execute.d.ts +112 -0
- package/packages/mcp-server/dist/tools/execute.d.ts.map +1 -0
- package/packages/mcp-server/dist/tools/execute.js +103 -0
- package/packages/mcp-server/dist/tools/execute.js.map +1 -0
- package/packages/mcp-server/dist/tools/explain.d.ts +25 -0
- package/packages/mcp-server/dist/tools/explain.d.ts.map +1 -0
- package/packages/mcp-server/dist/tools/explain.js +254 -0
- package/packages/mcp-server/dist/tools/explain.js.map +1 -0
- package/packages/mcp-server/dist/tools/validate.d.ts +23 -0
- package/packages/mcp-server/dist/tools/validate.d.ts.map +1 -0
- package/packages/mcp-server/dist/tools/validate.js +38 -0
- package/packages/mcp-server/dist/tools/validate.js.map +1 -0
- package/src/manifest/audit/sinks/postgres.sql +51 -0
- package/src/manifest/outbox/stores/postgres.sql +61 -0
|
@@ -0,0 +1,1159 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Manifest CLI
|
|
4
|
+
*
|
|
5
|
+
* Command-line interface for the Manifest language.
|
|
6
|
+
* Provides commands for compiling, generating code, and managing Manifest projects.
|
|
7
|
+
*/
|
|
8
|
+
import { Command } from 'commander';
|
|
9
|
+
import chalk from 'chalk';
|
|
10
|
+
import { compileCommand } from './commands/compile.js';
|
|
11
|
+
import { generateCommand } from './commands/generate.js';
|
|
12
|
+
import { buildCommand } from './commands/build.js';
|
|
13
|
+
import { watchCommand } from './commands/watch.js';
|
|
14
|
+
import { validateCommand } from './commands/validate.js';
|
|
15
|
+
import { validateAICommand } from './commands/validate-ai.js';
|
|
16
|
+
import { docsCommand } from './commands/docs.js';
|
|
17
|
+
import { diagramCommand } from './commands/diagram.js';
|
|
18
|
+
import { preflightCommand } from './commands/preflight.js';
|
|
19
|
+
import { checkCommand } from './commands/check.js';
|
|
20
|
+
import { initCommand } from './commands/init.js';
|
|
21
|
+
import { initCiCommand } from './commands/init-ci.js';
|
|
22
|
+
import { scanCommand } from './commands/scan.js';
|
|
23
|
+
import { harnessCommand } from './commands/harness.js';
|
|
24
|
+
import { lintRoutesCommand } from './commands/lint-routes.js';
|
|
25
|
+
import { routesCommand } from './commands/routes.js';
|
|
26
|
+
import { auditRoutesCommand } from './commands/audit-routes.js';
|
|
27
|
+
import { emitRegistriesCommand } from './commands/emit-registries.js';
|
|
28
|
+
import { auditBypassesCommand } from './commands/audit-bypasses.js';
|
|
29
|
+
import { auditGovernanceCommand } from './commands/audit-governance.js';
|
|
30
|
+
import { enforceSurfaceCommand } from './commands/enforce-surface.js';
|
|
31
|
+
import { coverageCommand } from './commands/coverage.js';
|
|
32
|
+
import { integrationCheckCommand } from './commands/integration-check.js';
|
|
33
|
+
import { configValidateCommand, configPrintDefaultsCommand, configInspectCommand, } from './commands/config.js';
|
|
34
|
+
import { cacheStatusCommand, doctorCommand, duplicatesCommand, inspectEntityCommand, runtimeCheckCommand, diffSourceVsIRCommand, } from './commands/doctor.js';
|
|
35
|
+
import { diffIRCommand } from './commands/ir-diff.js';
|
|
36
|
+
import { loadTestCommand } from './commands/load-test.js';
|
|
37
|
+
import { mockCommand } from './commands/mock.js';
|
|
38
|
+
import { breakingChangeCommand } from './commands/breaking-change.js';
|
|
39
|
+
import { migrateCommand } from './commands/migrate.js';
|
|
40
|
+
import { fmtCommand } from './commands/fmt.js';
|
|
41
|
+
import { changelogCommand } from './commands/changelog.js';
|
|
42
|
+
import { installHooksCommand } from './commands/install-hooks.js';
|
|
43
|
+
import { versionsListCommand, versionsShowCommand, versionsSaveCommand, versionsDiffCommand, versionsChangelogCommand, versionsTagCommand, versionsRollbackCommand, versionsVerifyCommand, } from './commands/versions.js';
|
|
44
|
+
import { getConfig, resolveNextJsProjectionOptions } from './utils/config.js';
|
|
45
|
+
import { fileURLToPath, pathToFileURL } from 'node:url';
|
|
46
|
+
import { resolve, normalize, dirname, join } from 'node:path';
|
|
47
|
+
import { realpath, readFile } from 'node:fs/promises';
|
|
48
|
+
/**
|
|
49
|
+
* Read version from the root package.json at runtime so the CLI always
|
|
50
|
+
* reports the same version as the published package — no manual sync needed.
|
|
51
|
+
*/
|
|
52
|
+
async function getPackageVersion() {
|
|
53
|
+
try {
|
|
54
|
+
const here = dirname(fileURLToPath(import.meta.url));
|
|
55
|
+
// Traverse up from dist/ (or src/ in dev) to find the root package.json
|
|
56
|
+
for (let dir = here, prev = ''; dir !== prev; prev = dir, dir = dirname(dir)) {
|
|
57
|
+
try {
|
|
58
|
+
const pkgPath = join(dir, 'package.json');
|
|
59
|
+
const raw = await readFile(pkgPath, 'utf-8');
|
|
60
|
+
const pkg = JSON.parse(raw);
|
|
61
|
+
if (pkg.name === '@angriff36/manifest' && pkg.version) {
|
|
62
|
+
return pkg.version;
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// not found at this level, keep walking up
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
catch {
|
|
71
|
+
// fall through
|
|
72
|
+
}
|
|
73
|
+
// Deliberate sentinel: returned only when the walk-up cannot locate
|
|
74
|
+
// package.json (e.g. the CLI is loaded outside the package layout).
|
|
75
|
+
// This is the "version is unknown" marker, not a real version string —
|
|
76
|
+
// hence the lint-rule exemption on the literal below.
|
|
77
|
+
// eslint-disable-next-line manifest/no-hardcoded-versions
|
|
78
|
+
return '0.0.0';
|
|
79
|
+
}
|
|
80
|
+
const program = new Command();
|
|
81
|
+
const packageVersion = await getPackageVersion();
|
|
82
|
+
program
|
|
83
|
+
.name('manifest')
|
|
84
|
+
.description('Manifest language CLI - Compile, generate, and validate Manifest code')
|
|
85
|
+
.version(packageVersion);
|
|
86
|
+
/**
|
|
87
|
+
* manifest init
|
|
88
|
+
*
|
|
89
|
+
* Initialize Manifest configuration for your project.
|
|
90
|
+
*/
|
|
91
|
+
program
|
|
92
|
+
.command('init')
|
|
93
|
+
.description('Initialize Manifest configuration (interactive) or generate CI workflows')
|
|
94
|
+
.option('-f, --force', 'Overwrite existing config or workflow file')
|
|
95
|
+
.option('--ci <provider>', 'Generate CI workflow for provider (github)')
|
|
96
|
+
.option('--node-versions <versions>', 'Comma-separated Node.js versions for CI matrix (default: 18,20,22)')
|
|
97
|
+
.action(async (options) => {
|
|
98
|
+
if (options.ci) {
|
|
99
|
+
await initCiCommand(options.ci, {
|
|
100
|
+
force: options.force,
|
|
101
|
+
nodeVersions: options.nodeVersions,
|
|
102
|
+
});
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
await initCommand(options);
|
|
106
|
+
});
|
|
107
|
+
/**
|
|
108
|
+
* manifest compile [source]
|
|
109
|
+
*
|
|
110
|
+
* Compile .manifest source files to IR (Intermediate Representation).
|
|
111
|
+
*/
|
|
112
|
+
program
|
|
113
|
+
.command('compile')
|
|
114
|
+
.description('Compile .manifest source to IR')
|
|
115
|
+
.argument('[source]', 'Source .manifest file or glob pattern')
|
|
116
|
+
.option('-o, --output <path>', 'Output directory or file path')
|
|
117
|
+
.option('-g, --glob <pattern>', 'Glob pattern for multiple files (use with output directory)')
|
|
118
|
+
.option('-d, --diagnostics', 'Include diagnostics in output', false)
|
|
119
|
+
.option('--pretty', 'Pretty-print JSON output', true)
|
|
120
|
+
.option('--merge', 'Merge multiple files into single IR (resolves use declarations)', false)
|
|
121
|
+
.option('--entry <files...>', 'Entry file(s) for merge compilation (auto-detected if omitted)')
|
|
122
|
+
.action(async (source, options = {}) => {
|
|
123
|
+
const config = (await getConfig()) ?? {};
|
|
124
|
+
if (!options.output && config?.output) {
|
|
125
|
+
options.output = config.output;
|
|
126
|
+
}
|
|
127
|
+
await compileCommand(source, options);
|
|
128
|
+
});
|
|
129
|
+
/**
|
|
130
|
+
* manifest generate <ir>
|
|
131
|
+
*
|
|
132
|
+
* Generate code from IR using a projection.
|
|
133
|
+
*/
|
|
134
|
+
program
|
|
135
|
+
.command('generate')
|
|
136
|
+
.description('Generate code from IR using a projection')
|
|
137
|
+
.argument('<ir>', 'IR file or directory')
|
|
138
|
+
.option('-p, --projection <name>', 'Projection name — any registered projection (nextjs, prisma, zod, kysely, ...)', 'nextjs')
|
|
139
|
+
.option('-s, --surface <name>', 'Projection surface (route, command, types, client, all)', 'all')
|
|
140
|
+
.option('-o, --output <path>', 'Output directory')
|
|
141
|
+
.option('--auth <provider>', 'Auth provider or import path')
|
|
142
|
+
.option('--database <path>', 'Database import path')
|
|
143
|
+
.option('--runtime <path>', 'Runtime import path')
|
|
144
|
+
.option('--response <path>', 'Response helpers import path')
|
|
145
|
+
.option('--check', 'Compare generated code to committed files and exit non-zero on drift (writes nothing)')
|
|
146
|
+
.action(async (ir, options = {}) => {
|
|
147
|
+
// resolveNextJsProjectionOptions returns the user's raw nextjs options
|
|
148
|
+
// (incl. dispatcher.*, concreteCommandRoutes.*) — no defaults baked in.
|
|
149
|
+
// CLI flag overrides are layered on inside generateCommand.
|
|
150
|
+
const projectionOptionsFromConfig = await resolveNextJsProjectionOptions();
|
|
151
|
+
// Default to cwd — the projection's pathHint already contains the full
|
|
152
|
+
// relative path from project root (e.g. apps/api/app/api/…). Omitting
|
|
153
|
+
// -o should write files relative to the project root, not crash.
|
|
154
|
+
if (!options.output) {
|
|
155
|
+
options.output = '.';
|
|
156
|
+
}
|
|
157
|
+
await generateCommand(ir, {
|
|
158
|
+
...options,
|
|
159
|
+
projectionOptionsFromConfig,
|
|
160
|
+
});
|
|
161
|
+
});
|
|
162
|
+
/**
|
|
163
|
+
* manifest build [source]
|
|
164
|
+
*
|
|
165
|
+
* Compile .manifest to IR and generate code in one step.
|
|
166
|
+
*/
|
|
167
|
+
program
|
|
168
|
+
.command('build')
|
|
169
|
+
.description('Compile and generate in one step')
|
|
170
|
+
.argument('[source]', 'Source .manifest file or glob pattern')
|
|
171
|
+
.option('-p, --projection <name>', 'Projection name — any registered projection (nextjs, prisma, zod, kysely, ...)', 'nextjs')
|
|
172
|
+
.option('-s, --surface <name>', 'Projection surface (route, command, types, client, all)', 'all')
|
|
173
|
+
.option('--ir-output <path>', 'IR output directory')
|
|
174
|
+
.option('--code-output <path>', 'Generated code output directory')
|
|
175
|
+
.option('-g, --glob <pattern>', 'Glob pattern for multiple files')
|
|
176
|
+
.option('--auth <provider>', 'Auth provider or import path')
|
|
177
|
+
.option('--database <path>', 'Database import path')
|
|
178
|
+
.option('--runtime <path>', 'Runtime import path')
|
|
179
|
+
.option('--response <path>', 'Response helpers import path')
|
|
180
|
+
.action(async (source, options = {}) => {
|
|
181
|
+
const config = (await getConfig()) ?? {};
|
|
182
|
+
const projectionOptionsFromConfig = await resolveNextJsProjectionOptions();
|
|
183
|
+
const finalOptions = {
|
|
184
|
+
...options,
|
|
185
|
+
irOutput: options.irOutput || config?.output || 'ir/',
|
|
186
|
+
codeOutput: options.codeOutput ||
|
|
187
|
+
config?.projections?.nextjs?.output ||
|
|
188
|
+
config?.projections?.['nextjs']?.output ||
|
|
189
|
+
'generated/',
|
|
190
|
+
projectionOptionsFromConfig,
|
|
191
|
+
};
|
|
192
|
+
await buildCommand(source, finalOptions);
|
|
193
|
+
});
|
|
194
|
+
/**
|
|
195
|
+
* manifest watch [source]
|
|
196
|
+
*
|
|
197
|
+
* Watch .manifest files for changes and rebuild incrementally.
|
|
198
|
+
*/
|
|
199
|
+
program
|
|
200
|
+
.command('watch')
|
|
201
|
+
.description('Watch .manifest files and rebuild on change')
|
|
202
|
+
.argument('[source]', 'Source .manifest file, directory, or glob pattern')
|
|
203
|
+
.option('-p, --projection <name>', 'Projection name — any registered projection (nextjs, prisma, zod, kysely, ...)', 'nextjs')
|
|
204
|
+
.option('-s, --surface <name>', 'Projection surface (route, command, types, client, all)', 'all')
|
|
205
|
+
.option('--ir-output <path>', 'IR output directory')
|
|
206
|
+
.option('--code-output <path>', 'Generated code output directory')
|
|
207
|
+
.option('-g, --glob <pattern>', 'Glob pattern for multiple files')
|
|
208
|
+
.option('--auth <provider>', 'Auth provider or import path')
|
|
209
|
+
.option('--database <path>', 'Database import path')
|
|
210
|
+
.option('--runtime <path>', 'Runtime import path')
|
|
211
|
+
.option('--response <path>', 'Response helpers import path')
|
|
212
|
+
.option('--debounce <ms>', 'Debounce delay in milliseconds', '300')
|
|
213
|
+
.option('--events', 'Emit structured JSON change events to stdout', false)
|
|
214
|
+
.option('--clear', 'Clear terminal on each rebuild', false)
|
|
215
|
+
.action(async (source, options = {}) => {
|
|
216
|
+
const config = (await getConfig()) ?? {};
|
|
217
|
+
const projectionOptionsFromConfig = await resolveNextJsProjectionOptions();
|
|
218
|
+
const finalOptions = {
|
|
219
|
+
...options,
|
|
220
|
+
irOutput: options.irOutput || config?.output || 'ir/',
|
|
221
|
+
codeOutput: options.codeOutput ||
|
|
222
|
+
config?.projections?.nextjs?.output ||
|
|
223
|
+
config?.projections?.['nextjs']?.output ||
|
|
224
|
+
'generated/',
|
|
225
|
+
debounce: parseInt(options.debounce, 10) || 300,
|
|
226
|
+
projectionOptionsFromConfig,
|
|
227
|
+
};
|
|
228
|
+
await watchCommand(source, finalOptions);
|
|
229
|
+
});
|
|
230
|
+
/**
|
|
231
|
+
* manifest validate [ir]
|
|
232
|
+
*
|
|
233
|
+
* Validate IR against schema.
|
|
234
|
+
*/
|
|
235
|
+
program
|
|
236
|
+
.command('validate')
|
|
237
|
+
.description('Validate IR against schema')
|
|
238
|
+
.argument('[ir]', 'IR file or glob pattern')
|
|
239
|
+
.option('--schema <path>', 'Schema path (default: docs/spec/ir/ir-v1.schema.json)')
|
|
240
|
+
.option('--strict', 'Fail on warnings', false)
|
|
241
|
+
.action(validateCommand);
|
|
242
|
+
/**
|
|
243
|
+
* manifest fmt [source]
|
|
244
|
+
*
|
|
245
|
+
* Format .manifest source files deterministically.
|
|
246
|
+
*/
|
|
247
|
+
program
|
|
248
|
+
.command('fmt')
|
|
249
|
+
.description('Format .manifest source files (deterministic whitespace normalization)')
|
|
250
|
+
.argument('[source]', 'Source .manifest file, directory, or glob pattern')
|
|
251
|
+
.option('--check', 'Fail if any file would change', false)
|
|
252
|
+
.option('--write', 'Write formatted output to files', false)
|
|
253
|
+
.option('-g, --glob <pattern>', 'Glob pattern when source is a directory')
|
|
254
|
+
.action(async (source, options = {}) => {
|
|
255
|
+
await fmtCommand(source, {
|
|
256
|
+
check: options.check,
|
|
257
|
+
write: !options.check,
|
|
258
|
+
glob: options.glob,
|
|
259
|
+
});
|
|
260
|
+
});
|
|
261
|
+
/**
|
|
262
|
+
* manifest install-hooks
|
|
263
|
+
*
|
|
264
|
+
* Install pre-commit hooks for fmt --check and validate.
|
|
265
|
+
*/
|
|
266
|
+
program
|
|
267
|
+
.command('install-hooks')
|
|
268
|
+
.description('Install pre-commit hooks (Husky or simple-git-hooks)')
|
|
269
|
+
.option('-f, --force', 'Overwrite existing hook configuration')
|
|
270
|
+
.option('--provider <provider>', 'Hook provider: husky | simple-git-hooks', 'husky')
|
|
271
|
+
.action(async (options) => {
|
|
272
|
+
const provider = options.provider === 'simple-git-hooks' ? 'simple-git-hooks' : 'husky';
|
|
273
|
+
await installHooksCommand({
|
|
274
|
+
force: options.force,
|
|
275
|
+
provider,
|
|
276
|
+
});
|
|
277
|
+
});
|
|
278
|
+
/**
|
|
279
|
+
* manifest validate-ai [source]
|
|
280
|
+
*
|
|
281
|
+
* Structured validation for LLM-generated .manifest or IR JSON with scored reports.
|
|
282
|
+
*/
|
|
283
|
+
program
|
|
284
|
+
.command('validate-ai')
|
|
285
|
+
.description('Validate manifest/IR with scored diagnostics for AI agents')
|
|
286
|
+
.argument('[source]', 'Source .manifest, .ir.json, directory, or glob')
|
|
287
|
+
.option('-f, --format <format>', 'Output format (text, json)', 'text')
|
|
288
|
+
.option('--schema <path>', 'Schema path (default: docs/spec/ir/ir-v1.schema.json)')
|
|
289
|
+
.option('--min-score <n>', 'Minimum score to pass (default: 100)', (v) => parseInt(v, 10), 100)
|
|
290
|
+
.option('--verbose', 'Include info-level diagnostics', false)
|
|
291
|
+
.action(async (source, options = {}) => {
|
|
292
|
+
await validateAICommand(source, {
|
|
293
|
+
format: options.format,
|
|
294
|
+
schema: options.schema,
|
|
295
|
+
minScore: options.minScore,
|
|
296
|
+
verbose: options.verbose,
|
|
297
|
+
});
|
|
298
|
+
});
|
|
299
|
+
/**
|
|
300
|
+
* manifest generate-tests [source]
|
|
301
|
+
*
|
|
302
|
+
* LLM-driven conformance fixture generation: analyzes existing fixtures
|
|
303
|
+
* and emits new .manifest sources + expected IR covering edge cases,
|
|
304
|
+
* boundary conditions, and adversarial inputs. Generated fixtures are
|
|
305
|
+
* compiled and validated before being written.
|
|
306
|
+
*/
|
|
307
|
+
program
|
|
308
|
+
.command('generate-tests')
|
|
309
|
+
.alias('gen-tests')
|
|
310
|
+
.description('Generate conformance test fixtures via LLM analysis of existing fixtures')
|
|
311
|
+
.argument('[source]', 'Source .manifest file, directory, or glob to analyze')
|
|
312
|
+
.option('--feature <description>', 'Feature description to focus generation on')
|
|
313
|
+
.option('--category <type>', 'Test category: edge-cases, boundary, adversarial, coverage', 'edge-cases')
|
|
314
|
+
.option('--count <n>', 'Number of fixtures to generate', (v) => parseInt(v, 10), 3)
|
|
315
|
+
.option('--output <path>', 'Output directory for fixtures (default: conformance fixtures dir)')
|
|
316
|
+
.option('--api-key <key>', 'Anthropic API key (default: ANTHROPIC_API_KEY env var)')
|
|
317
|
+
.option('--model <model>', 'Claude model to use')
|
|
318
|
+
.option('--temperature <n>', 'Generation temperature (0-1)', (v) => parseFloat(v))
|
|
319
|
+
.option('--max-retries <n>', 'Max retry attempts for validation failures', (v) => parseInt(v, 10))
|
|
320
|
+
.option('--dry-run', 'Preview generated fixtures without writing files', false)
|
|
321
|
+
.option('--verbose', 'Show detailed iteration logs', false)
|
|
322
|
+
.action(async (source, options = {}) => {
|
|
323
|
+
const { genTestsCommand } = await import('./commands/gen-tests.js');
|
|
324
|
+
await genTestsCommand(source, {
|
|
325
|
+
feature: options.feature,
|
|
326
|
+
category: options.category,
|
|
327
|
+
count: options.count,
|
|
328
|
+
output: options.output,
|
|
329
|
+
apiKey: options.apiKey,
|
|
330
|
+
model: options.model,
|
|
331
|
+
temperature: options.temperature,
|
|
332
|
+
maxRetries: options.maxRetries,
|
|
333
|
+
dryRun: options.dryRun,
|
|
334
|
+
verbose: options.verbose,
|
|
335
|
+
});
|
|
336
|
+
});
|
|
337
|
+
/**
|
|
338
|
+
* manifest docs [source]
|
|
339
|
+
*
|
|
340
|
+
* Generate static documentation site from IR.
|
|
341
|
+
*/
|
|
342
|
+
program
|
|
343
|
+
.command('docs')
|
|
344
|
+
.description('Generate static documentation site from Manifest IR')
|
|
345
|
+
.argument('[source]', 'Source .manifest, .ir.json, directory, or glob')
|
|
346
|
+
.option('-o, --output <path>', 'Output directory', 'docs-site')
|
|
347
|
+
.option('-f, --format <format>', 'Output format (html, markdown)', 'html')
|
|
348
|
+
.option('-t, --title <title>', 'Site title', 'Manifest API Reference')
|
|
349
|
+
.action(async (source, options = {}) => {
|
|
350
|
+
await docsCommand(source, {
|
|
351
|
+
output: options.output,
|
|
352
|
+
format: options.format,
|
|
353
|
+
title: options.title,
|
|
354
|
+
});
|
|
355
|
+
});
|
|
356
|
+
/**
|
|
357
|
+
* manifest diagram [source]
|
|
358
|
+
*
|
|
359
|
+
* Generate Mermaid diagrams from IR (ER, state machine, sequence).
|
|
360
|
+
*/
|
|
361
|
+
program
|
|
362
|
+
.command('diagram')
|
|
363
|
+
.description('Generate Mermaid diagrams from Manifest IR (ER, state, sequence)')
|
|
364
|
+
.argument('[source]', 'Source .manifest, .ir.json, directory, or glob')
|
|
365
|
+
.option('-o, --output <path>', 'Output directory', 'diagrams')
|
|
366
|
+
.option('-t, --type <type>', 'Diagram type (er, state, sequence, all)', 'all')
|
|
367
|
+
.option('-e, --entity <name>', 'Filter to a specific entity')
|
|
368
|
+
.option('--markdown', 'Wrap output in markdown fenced code blocks', false)
|
|
369
|
+
.action(async (source, options = {}) => {
|
|
370
|
+
await diagramCommand(source, {
|
|
371
|
+
output: options.output,
|
|
372
|
+
type: options.type,
|
|
373
|
+
entity: options.entity,
|
|
374
|
+
markdown: options.markdown,
|
|
375
|
+
});
|
|
376
|
+
});
|
|
377
|
+
/**
|
|
378
|
+
* manifest preflight
|
|
379
|
+
*
|
|
380
|
+
* Validate environment variables against manifest.config env mapping.
|
|
381
|
+
*/
|
|
382
|
+
program
|
|
383
|
+
.command('preflight')
|
|
384
|
+
.description('Validate environment variables and generate .env.example')
|
|
385
|
+
.option('-f, --format <format>', 'Output format (text, json)', 'text')
|
|
386
|
+
.option('--generate-example', 'Generate .env.example instead of checking')
|
|
387
|
+
.option('-o, --output <path>', 'Output path for .env.example', '.env.example')
|
|
388
|
+
.action(async (options = {}) => {
|
|
389
|
+
await preflightCommand({
|
|
390
|
+
format: options.format,
|
|
391
|
+
generateExample: options.generateExample,
|
|
392
|
+
output: options.output,
|
|
393
|
+
});
|
|
394
|
+
});
|
|
395
|
+
/**
|
|
396
|
+
* manifest check [source]
|
|
397
|
+
*
|
|
398
|
+
* Compile .manifest source and validate generated IR in one step.
|
|
399
|
+
*/
|
|
400
|
+
program
|
|
401
|
+
.command('check')
|
|
402
|
+
.description('Compile and validate in one step')
|
|
403
|
+
.argument('[source]', 'Source .manifest file or glob pattern')
|
|
404
|
+
.option('-o, --output <path>', 'IR output directory or file path')
|
|
405
|
+
.option('-g, --glob <pattern>', 'Glob pattern for multiple files (use with output directory)')
|
|
406
|
+
.option('-d, --diagnostics', 'Include diagnostics in compile output', false)
|
|
407
|
+
.option('--pretty', 'Pretty-print JSON output', true)
|
|
408
|
+
.option('--schema <path>', 'Schema path (default: docs/spec/ir/ir-v1.schema.json)')
|
|
409
|
+
.option('--strict', 'Fail on warnings', false)
|
|
410
|
+
.action(async (source, options = {}) => {
|
|
411
|
+
const config = (await getConfig()) ?? {};
|
|
412
|
+
if (!options.output && config?.output) {
|
|
413
|
+
options.output = config.output;
|
|
414
|
+
}
|
|
415
|
+
await checkCommand(source, options);
|
|
416
|
+
});
|
|
417
|
+
/**
|
|
418
|
+
* manifest scan [source]
|
|
419
|
+
*
|
|
420
|
+
* Scan .manifest files for configuration issues before runtime.
|
|
421
|
+
* Primary goal: "If scan passes, the code works."
|
|
422
|
+
*
|
|
423
|
+
* Checks:
|
|
424
|
+
* - Policy coverage: Every command has a policy
|
|
425
|
+
* - Store consistency: Store targets are recognized
|
|
426
|
+
*/
|
|
427
|
+
program
|
|
428
|
+
.command('scan')
|
|
429
|
+
.description('Scan manifest files for configuration issues')
|
|
430
|
+
.argument('[source]', 'Source .manifest file or directory')
|
|
431
|
+
.option('-g, --glob <pattern>', 'Glob pattern for manifest files', '**/*.manifest')
|
|
432
|
+
.option('-f, --format <format>', 'Output format (text, json)', 'text')
|
|
433
|
+
.option('--strict', 'Fail on warnings', false)
|
|
434
|
+
.action(async (source, options = {}) => {
|
|
435
|
+
await scanCommand(source, options);
|
|
436
|
+
});
|
|
437
|
+
/**
|
|
438
|
+
* manifest harness <manifest>
|
|
439
|
+
*
|
|
440
|
+
* Run a fixture-generator style test script against compiled IR and report
|
|
441
|
+
* step/assertion pass-fail counts.
|
|
442
|
+
*/
|
|
443
|
+
program
|
|
444
|
+
.command('harness')
|
|
445
|
+
.description('Run IR harness script and report failed steps/assertions')
|
|
446
|
+
.argument('<manifest>', 'Path to a .manifest file')
|
|
447
|
+
.requiredOption('-s, --script <path>', 'Path to harness script JSON')
|
|
448
|
+
.option('-f, --format <format>', 'Output format (text, json)', 'text')
|
|
449
|
+
.action(async (manifest, options = {}) => {
|
|
450
|
+
await harnessCommand(manifest, options);
|
|
451
|
+
});
|
|
452
|
+
/**
|
|
453
|
+
* manifest mock <source>
|
|
454
|
+
*
|
|
455
|
+
* Start a local HTTP mock server that simulates API routes derived from
|
|
456
|
+
* compiled Manifest IR. Uses RuntimeEngine with in-memory stores for real
|
|
457
|
+
* command execution. Enables frontend teams to develop against a realistic
|
|
458
|
+
* API before the backend is deployed.
|
|
459
|
+
*/
|
|
460
|
+
program
|
|
461
|
+
.command('mock')
|
|
462
|
+
.description('Start a local mock HTTP server from IR (for frontend development)')
|
|
463
|
+
.argument('<source>', 'Source .manifest file or compiled .ir.json')
|
|
464
|
+
.option('-p, --port <number>', 'Port number', '4000')
|
|
465
|
+
.option('--host <host>', 'Bind host', '127.0.0.1')
|
|
466
|
+
.option('--cors', 'Enable CORS headers', false)
|
|
467
|
+
.option('--scenario <mode>', 'Hint mode: default|guard-fail|constraint-fail', 'default')
|
|
468
|
+
.action(async (source, options = {}) => {
|
|
469
|
+
await mockCommand(source, {
|
|
470
|
+
port: options.port,
|
|
471
|
+
host: options.host,
|
|
472
|
+
cors: options.cors,
|
|
473
|
+
scenario: options.scenario,
|
|
474
|
+
});
|
|
475
|
+
});
|
|
476
|
+
/**
|
|
477
|
+
* manifest routes
|
|
478
|
+
*
|
|
479
|
+
* Compile all .manifest files and output the canonical route manifest.
|
|
480
|
+
* Agent-accessible equivalent of the DevTools Route Surface tab.
|
|
481
|
+
*
|
|
482
|
+
* See docs/spec/manifest-vnext.md § "Canonical Routes (Normative)".
|
|
483
|
+
*/
|
|
484
|
+
program
|
|
485
|
+
.command('routes')
|
|
486
|
+
.description('Generate canonical route manifest from compiled IR')
|
|
487
|
+
.option('-s, --src <pattern>', 'Source glob pattern for .manifest files')
|
|
488
|
+
.option('-f, --format <format>', 'Output format (json, summary)', 'json')
|
|
489
|
+
.option('-b, --base-path <path>', 'Base path prefix for routes', '/api')
|
|
490
|
+
.action(async (options = {}) => {
|
|
491
|
+
await routesCommand(options);
|
|
492
|
+
});
|
|
493
|
+
/**
|
|
494
|
+
* manifest lint-routes
|
|
495
|
+
*
|
|
496
|
+
* Scan client directories for hardcoded route strings.
|
|
497
|
+
* Fails when violations are found — the enforcement layer for canonical routes.
|
|
498
|
+
*
|
|
499
|
+
* See docs/spec/manifest-vnext.md § "Canonical Routes (Normative)".
|
|
500
|
+
*/
|
|
501
|
+
program
|
|
502
|
+
.command('lint-routes')
|
|
503
|
+
.description('Scan for hardcoded route strings (canonical routes enforcement)')
|
|
504
|
+
.option('-f, --format <format>', 'Output format (text, json)', 'text')
|
|
505
|
+
.option('-c, --config <path>', 'Config file path')
|
|
506
|
+
.action(async (options = {}) => {
|
|
507
|
+
await lintRoutesCommand(options);
|
|
508
|
+
});
|
|
509
|
+
/**
|
|
510
|
+
* manifest audit-routes
|
|
511
|
+
*
|
|
512
|
+
* Audit generated/handwritten routes for Manifest boundary compliance:
|
|
513
|
+
* - Writes should execute via runtime.runCommand
|
|
514
|
+
* - Direct reads should include expected tenant/location/soft-delete filters
|
|
515
|
+
*/
|
|
516
|
+
program
|
|
517
|
+
.command('audit-routes')
|
|
518
|
+
.description('Audit route boundary compliance (runtime writes + scoped reads + ownership)')
|
|
519
|
+
.option('-r, --root <path>', 'Root directory to audit', '.')
|
|
520
|
+
.option('-f, --format <format>', 'Output format (text, json)', 'text')
|
|
521
|
+
.option('--strict', 'Fail on warnings and enforce ownership rules as errors', false)
|
|
522
|
+
.option('--tenant-field <name>', 'Tenant scope field name', 'tenantId')
|
|
523
|
+
.option('--deleted-field <name>', 'Soft-delete field name', 'deletedAt')
|
|
524
|
+
.option('--location-field <name>', 'Location scope field name', 'locationId')
|
|
525
|
+
.option('--commands-manifest <path>', 'Path to commands manifest JSON (enables ownership rules)')
|
|
526
|
+
.option('--exemptions <path>', 'Path to exemptions registry JSON')
|
|
527
|
+
.action(async (options = {}) => {
|
|
528
|
+
await auditRoutesCommand(options);
|
|
529
|
+
});
|
|
530
|
+
/**
|
|
531
|
+
* manifest emit registries
|
|
532
|
+
*
|
|
533
|
+
* Emit machine-readable command and governed-entity registries from a
|
|
534
|
+
* compiled IR JSON or a manifest source file. Validates against the schemas
|
|
535
|
+
* in docs/spec/registry/. See docs/spec/registry/README.md.
|
|
536
|
+
*/
|
|
537
|
+
const emitProgram = program
|
|
538
|
+
.command('emit')
|
|
539
|
+
.description('Emit IR-derived artifacts');
|
|
540
|
+
/**
|
|
541
|
+
* manifest audit-bypasses
|
|
542
|
+
*
|
|
543
|
+
* Validates an approved-bypass registry against
|
|
544
|
+
* docs/spec/registry/bypasses.schema.json. Reports missing-file references
|
|
545
|
+
* as errors and expired review dates as warnings (or errors under
|
|
546
|
+
* --strict-expiry).
|
|
547
|
+
*/
|
|
548
|
+
/**
|
|
549
|
+
* manifest audit-governance
|
|
550
|
+
*
|
|
551
|
+
* Umbrella that runs every governance detector and aggregates findings.
|
|
552
|
+
* Under --strict, any error finding causes a non-zero exit. Detectors:
|
|
553
|
+
* direct-writes, event-fabrication, route-drift, missing-tests,
|
|
554
|
+
* bypass-violations.
|
|
555
|
+
*
|
|
556
|
+
* `audit-constitution` is retained as a deprecated alias.
|
|
557
|
+
*/
|
|
558
|
+
program
|
|
559
|
+
.command('audit-governance')
|
|
560
|
+
.alias('audit-constitution')
|
|
561
|
+
.description('Run the full governance audit suite (umbrella). `audit-constitution` is a deprecated alias.')
|
|
562
|
+
.option('-r, --root <path>', 'Root directory to audit', '.')
|
|
563
|
+
.option('--only <list>', 'Comma-separated detector names to run (default: all)')
|
|
564
|
+
.option('--commands-registry <path>', 'Path to commands.json (enables missing-tests detector)')
|
|
565
|
+
.option('--bypass-registry <path>', 'Path to bypasses.json (enables bypass-violations detector)')
|
|
566
|
+
.option('--strict', 'Exit non-zero on any error finding', false)
|
|
567
|
+
.option('-f, --format <format>', 'Output format (text, json)', 'text')
|
|
568
|
+
.option('--write-receiver <name>', 'ORM client identifier direct-write detectors match on (default: prisma)')
|
|
569
|
+
.action(async (options = {}, cmd) => {
|
|
570
|
+
// Surface a deprecation hint when callers invoke the legacy alias.
|
|
571
|
+
const invokedAs = cmd?.args?.[0] ?? cmd?.name?.();
|
|
572
|
+
const calledByAlias = process.argv.includes('audit-constitution');
|
|
573
|
+
if (calledByAlias) {
|
|
574
|
+
console.warn(chalk.yellow('[deprecation] `manifest audit-constitution` is renamed to `manifest audit-governance`. ' +
|
|
575
|
+
'The alias still works but will be removed in a future release.'));
|
|
576
|
+
}
|
|
577
|
+
const result = await auditGovernanceCommand(options);
|
|
578
|
+
if (options.strict && result.errorCount > 0) {
|
|
579
|
+
process.exitCode = 1;
|
|
580
|
+
}
|
|
581
|
+
else if (!options.strict && result.errorCount > 0) {
|
|
582
|
+
// Non-strict still surfaces failures; the exit code is left to the
|
|
583
|
+
// caller's CI integration. Mirror audit-routes behavior.
|
|
584
|
+
process.exitCode = 1;
|
|
585
|
+
}
|
|
586
|
+
// Suppress unused-var noise from optional invokedAs lookup.
|
|
587
|
+
void invokedAs;
|
|
588
|
+
});
|
|
589
|
+
/**
|
|
590
|
+
* `enforce-surface` — the strictest registry-vs-app check.
|
|
591
|
+
*
|
|
592
|
+
* Composes the governance detectors with three registry-aware detectors to
|
|
593
|
+
* stop agents and contributors from inventing duplicate or bypass write
|
|
594
|
+
* paths when a registered Manifest command already exists.
|
|
595
|
+
*/
|
|
596
|
+
program
|
|
597
|
+
.command('enforce-surface')
|
|
598
|
+
.description('Enforce that application code only writes through registered Manifest commands')
|
|
599
|
+
.requiredOption('--root <path>', 'Repository or application root to scan')
|
|
600
|
+
.requiredOption('--commands-registry <path>', 'Path to commands.json emitted from Manifest IR')
|
|
601
|
+
.option('--entities-registry <path>', 'Path to entities.json emitted from Manifest IR')
|
|
602
|
+
.option('--bypass-registry <path>', 'Path to bypasses.json (approved exceptions)')
|
|
603
|
+
.option('-f, --format <format>', 'Output format (text, json)', 'text')
|
|
604
|
+
.option('--strict', 'Exit non-zero on any error finding', false)
|
|
605
|
+
.option('--include <glob...>', 'Additional include globs')
|
|
606
|
+
.option('--exclude <glob...>', 'Exclude globs (generated files, build output, fixtures, etc.)')
|
|
607
|
+
.option('--write-receiver <name>', 'ORM client identifier direct-write detectors match on (default: prisma)')
|
|
608
|
+
.action(async (options = {}) => {
|
|
609
|
+
await enforceSurfaceCommand({
|
|
610
|
+
root: options.root,
|
|
611
|
+
commandsRegistry: options.commandsRegistry,
|
|
612
|
+
entitiesRegistry: options.entitiesRegistry,
|
|
613
|
+
bypassRegistry: options.bypassRegistry,
|
|
614
|
+
format: options.format,
|
|
615
|
+
strict: !!options.strict,
|
|
616
|
+
include: options.include,
|
|
617
|
+
exclude: options.exclude,
|
|
618
|
+
writeReceiver: options.writeReceiver,
|
|
619
|
+
});
|
|
620
|
+
});
|
|
621
|
+
program
|
|
622
|
+
.command('audit-bypasses')
|
|
623
|
+
.description('Validate the approved-bypass registry against the schema')
|
|
624
|
+
.option('--registry <path>', 'Path to bypass registry JSON file')
|
|
625
|
+
.option('-r, --root <path>', 'Root directory used to resolve bypass paths', '.')
|
|
626
|
+
.option('--strict-expiry', 'Treat expired reviewBy dates as errors', false)
|
|
627
|
+
.option('-f, --format <format>', 'Output format (text, json)', 'text')
|
|
628
|
+
.action(async (options = {}) => {
|
|
629
|
+
const result = await auditBypassesCommand(options);
|
|
630
|
+
if (result.errorCount > 0) {
|
|
631
|
+
process.exitCode = 1;
|
|
632
|
+
}
|
|
633
|
+
});
|
|
634
|
+
/**
|
|
635
|
+
* manifest coverage
|
|
636
|
+
*
|
|
637
|
+
* Analyze conformance and unit test results to report which commands, guards,
|
|
638
|
+
* policies, and constraint branches have been exercised. Produces a coverage
|
|
639
|
+
* summary with uncovered paths highlighted.
|
|
640
|
+
*/
|
|
641
|
+
program
|
|
642
|
+
.command('coverage')
|
|
643
|
+
.description('Report command/guard/policy/constraint coverage from conformance and unit tests')
|
|
644
|
+
.option('--ir <path>', 'Path to compiled IR JSON file')
|
|
645
|
+
.option('-s, --source <path>', 'Path to .manifest source file (compiles on the fly)')
|
|
646
|
+
.option('-r, --root <path>', 'Root directory to scan for test evidence', '.')
|
|
647
|
+
.option('-f, --format <format>', 'Output format (text, json)', 'text')
|
|
648
|
+
.option('--min-coverage <n>', 'Minimum overall coverage percentage to pass', (v) => parseFloat(v))
|
|
649
|
+
.option('--strict', 'Exit non-zero when below --min-coverage', false)
|
|
650
|
+
.action(async (options = {}) => {
|
|
651
|
+
const result = await coverageCommand(options);
|
|
652
|
+
if (options.strict && typeof options.minCoverage === 'number') {
|
|
653
|
+
if (result.overall.percentage < options.minCoverage) {
|
|
654
|
+
console.error(chalk.red(`Coverage ${result.overall.percentage}% is below threshold ${options.minCoverage}%`));
|
|
655
|
+
process.exitCode = 1;
|
|
656
|
+
}
|
|
657
|
+
}
|
|
658
|
+
});
|
|
659
|
+
/**
|
|
660
|
+
* manifest load-test [source]
|
|
661
|
+
*
|
|
662
|
+
* Generate k6 or Artillery load test scripts from IR entities and commands.
|
|
663
|
+
* Produces self-contained scripts with realistic data generation (faker.js
|
|
664
|
+
* patterns), configurable ramp-up profiles, SLO thresholds, and optional
|
|
665
|
+
* integration with the Manifest performance profiler.
|
|
666
|
+
*/
|
|
667
|
+
program
|
|
668
|
+
.command('load-test')
|
|
669
|
+
.description('Generate k6 or Artillery load test scripts from IR')
|
|
670
|
+
.argument('[source]', 'Source .manifest file, .ir.json file, or directory')
|
|
671
|
+
.option('-o, --output <path>', 'Output directory for generated scripts', 'load-tests')
|
|
672
|
+
.option('-f, --format <format>', 'Script format: k6 | artillery (default: k6)', 'k6')
|
|
673
|
+
.option('--base-url <url>', 'Base URL for the API under test', 'http://localhost:3000')
|
|
674
|
+
.option('--ramp-up <stages>', 'Ramp-up profile: "duration:target,duration:target" (e.g. "10s:5,30s:20,1m:50")', '10s:5,30s:20,1m:50')
|
|
675
|
+
.option('--slo <thresholds>', 'SLO thresholds: "metric:op:value" (e.g. "p95:<:500ms,error_rate:<=:0.01")')
|
|
676
|
+
.option('--command <name...>', 'Only generate for the named command(s)')
|
|
677
|
+
.option('--entity <name...>', 'Only include the named entity/entities')
|
|
678
|
+
.option('--profile', 'Emit per-request profiling timestamps for profiler correlation', false)
|
|
679
|
+
.option('--timeout <ms>', 'Request timeout in milliseconds', (v) => parseInt(v, 10), 30000)
|
|
680
|
+
.option('--json', 'Emit structured JSON to stdout instead of writing files', false)
|
|
681
|
+
.action(async (source, options = {}) => {
|
|
682
|
+
await loadTestCommand({
|
|
683
|
+
source,
|
|
684
|
+
output: options.output,
|
|
685
|
+
format: options.format,
|
|
686
|
+
baseUrl: options.baseUrl,
|
|
687
|
+
rampUp: options.rampUp,
|
|
688
|
+
slo: options.slo,
|
|
689
|
+
command: options.command,
|
|
690
|
+
entity: options.entity,
|
|
691
|
+
profile: options.profile,
|
|
692
|
+
timeout: options.timeout,
|
|
693
|
+
json: options.json,
|
|
694
|
+
});
|
|
695
|
+
});
|
|
696
|
+
emitProgram
|
|
697
|
+
.command('registries')
|
|
698
|
+
.description('Emit commands.json and entities.json registries from IR')
|
|
699
|
+
.option('--ir <path>', 'Path to a compiled IR JSON file')
|
|
700
|
+
.option('--source <path>', 'Path to a .manifest source file to compile and emit from')
|
|
701
|
+
.option('--out <dir>', 'Output directory', 'manifest-registry')
|
|
702
|
+
.option('--no-validate', 'Skip JSON-schema validation of the emitted output')
|
|
703
|
+
.option('--no-pretty', 'Emit compact JSON (no indentation)')
|
|
704
|
+
.action(async (options = {}) => {
|
|
705
|
+
await emitRegistriesCommand(options);
|
|
706
|
+
});
|
|
707
|
+
/**
|
|
708
|
+
* manifest inspect entity <EntityName>
|
|
709
|
+
*
|
|
710
|
+
* Inspect source manifests and precompiled IR for a single entity.
|
|
711
|
+
*/
|
|
712
|
+
const inspectProgram = program
|
|
713
|
+
.command('inspect')
|
|
714
|
+
.description('Inspect manifest source and compiled IR surfaces');
|
|
715
|
+
inspectProgram
|
|
716
|
+
.command('entity')
|
|
717
|
+
.description('Inspect a single entity across source manifests and precompiled IR')
|
|
718
|
+
.argument('<entityName>', 'Entity name')
|
|
719
|
+
.option('--json', 'JSON output', false)
|
|
720
|
+
.option('--src <pattern>', 'Source manifest glob pattern')
|
|
721
|
+
.option('--ir-root <path...>', 'Compiled IR root directory/directories')
|
|
722
|
+
.action(async (entityName, options = {}) => {
|
|
723
|
+
await inspectEntityCommand(entityName, options);
|
|
724
|
+
});
|
|
725
|
+
/**
|
|
726
|
+
* manifest diff source-vs-ir <EntityName>
|
|
727
|
+
*/
|
|
728
|
+
const diffProgram = program
|
|
729
|
+
.command('diff')
|
|
730
|
+
.description('Diff manifest source surfaces against precompiled IR');
|
|
731
|
+
diffProgram
|
|
732
|
+
.command('source-vs-ir')
|
|
733
|
+
.description('Compare source manifest parse output vs precompiled IR for an entity')
|
|
734
|
+
.argument('<entityName>', 'Entity name')
|
|
735
|
+
.option('--json', 'JSON output', false)
|
|
736
|
+
.option('--src <pattern>', 'Source manifest glob pattern')
|
|
737
|
+
.option('--ir-root <path...>', 'Compiled IR root directory/directories')
|
|
738
|
+
.action(async (entityName, options = {}) => {
|
|
739
|
+
await diffSourceVsIRCommand(entityName, options);
|
|
740
|
+
});
|
|
741
|
+
/**
|
|
742
|
+
* manifest diff ir-vs-ir <oldIR> <newIR>
|
|
743
|
+
*/
|
|
744
|
+
diffProgram
|
|
745
|
+
.command('ir-vs-ir')
|
|
746
|
+
.description('Compare two IR JSON files and produce a diff report')
|
|
747
|
+
.argument('<oldIR>', 'Path to old IR JSON file')
|
|
748
|
+
.argument('<newIR>', 'Path to new IR JSON file')
|
|
749
|
+
.option('--json', 'JSON output', false)
|
|
750
|
+
.option('--sql', 'Include SQL migration in output', false)
|
|
751
|
+
.option('--prisma', 'Include Prisma migration in output', false)
|
|
752
|
+
.option('-o, --output <path>', 'Write output to file')
|
|
753
|
+
.action(async (oldIR, newIR, options = {}) => {
|
|
754
|
+
await diffIRCommand(oldIR, newIR, options);
|
|
755
|
+
});
|
|
756
|
+
/**
|
|
757
|
+
* manifest diff breaking <oldIR> <newIR>
|
|
758
|
+
*/
|
|
759
|
+
diffProgram
|
|
760
|
+
.command('breaking')
|
|
761
|
+
.description('Classify IR diff changes as compatible/deprecated/breaking with consumer impact')
|
|
762
|
+
.argument('<oldIR>', 'Path to old IR JSON file')
|
|
763
|
+
.argument('<newIR>', 'Path to new IR JSON file')
|
|
764
|
+
.option('--json', 'JSON output', false)
|
|
765
|
+
.option('--ack <path>', 'Path to acknowledgments JSON file')
|
|
766
|
+
.option('--ci', 'Exit non-zero on unacknowledged breaking changes', false)
|
|
767
|
+
.option('-o, --output <path>', 'Write output to file')
|
|
768
|
+
.action(async (oldIR, newIR, options = {}) => {
|
|
769
|
+
await breakingChangeCommand(oldIR, newIR, options);
|
|
770
|
+
});
|
|
771
|
+
/**
|
|
772
|
+
* manifest migrate
|
|
773
|
+
*
|
|
774
|
+
* IR diff analysis for database migration planning.
|
|
775
|
+
*/
|
|
776
|
+
program
|
|
777
|
+
.command('migrate')
|
|
778
|
+
.description('Analyze IR diff for database migration (dry-run, preview, reversibility checks)')
|
|
779
|
+
.requiredOption('--old-ir <path>', 'Path to old IR JSON file')
|
|
780
|
+
.requiredOption('--new-ir <path>', 'Path to new IR JSON file')
|
|
781
|
+
.option('--dry-run', 'Show migration plan without applying', false)
|
|
782
|
+
.option('--preview', 'Show SQL and Prisma migration steps', false)
|
|
783
|
+
.option('--force', 'Apply even with warnings or unacknowledged breaking changes', false)
|
|
784
|
+
.option('--json', 'JSON output', false)
|
|
785
|
+
.option('--tool <tool>', 'Migration tool (prisma, drizzle)', 'prisma')
|
|
786
|
+
.option('--no-check-reversibility', 'Skip reversibility validation')
|
|
787
|
+
.option('-o, --output <path>', 'Write output to file')
|
|
788
|
+
.action(async (options = {}) => {
|
|
789
|
+
await migrateCommand({
|
|
790
|
+
oldIR: options.oldIr,
|
|
791
|
+
newIR: options.newIr,
|
|
792
|
+
dryRun: options.dryRun,
|
|
793
|
+
preview: options.preview,
|
|
794
|
+
force: options.force,
|
|
795
|
+
json: options.json,
|
|
796
|
+
output: options.output,
|
|
797
|
+
tool: options.tool,
|
|
798
|
+
checkReversibility: options.checkReversibility,
|
|
799
|
+
});
|
|
800
|
+
});
|
|
801
|
+
/**
|
|
802
|
+
* manifest changelog <from-ref> [to-ref]
|
|
803
|
+
*
|
|
804
|
+
* Generate a human-readable Markdown changelog from IR diffs between Git refs.
|
|
805
|
+
* Compiles .manifest sources at each ref, classifies changes as new entities,
|
|
806
|
+
* modified constraints, added policies, or breaking schema changes. Outputs
|
|
807
|
+
* Markdown formatted for GitHub Releases and Keep a Changelog conventions.
|
|
808
|
+
*/
|
|
809
|
+
program
|
|
810
|
+
.command('changelog')
|
|
811
|
+
.description('Generate Markdown changelog from IR diffs between Git refs')
|
|
812
|
+
.argument('<from-ref>', 'Base Git ref (tag, branch, or SHA)')
|
|
813
|
+
.argument('[to-ref]', 'Target Git ref (default: HEAD)', 'HEAD')
|
|
814
|
+
.option('-s, --source <pattern>', 'Glob pattern for .manifest files', '**/*.manifest')
|
|
815
|
+
.option('-o, --output <path>', 'Write changelog to file')
|
|
816
|
+
.option('-t, --title <title>', 'Custom heading for the changelog')
|
|
817
|
+
.option('--json', 'Emit structured JSON instead of Markdown', false)
|
|
818
|
+
.action(async (fromRef, toRef, options = {}) => {
|
|
819
|
+
await changelogCommand(fromRef, toRef, {
|
|
820
|
+
source: options.source,
|
|
821
|
+
output: options.output,
|
|
822
|
+
title: options.title,
|
|
823
|
+
json: options.json,
|
|
824
|
+
});
|
|
825
|
+
});
|
|
826
|
+
/**
|
|
827
|
+
* manifest duplicates
|
|
828
|
+
*/
|
|
829
|
+
program
|
|
830
|
+
.command('duplicates')
|
|
831
|
+
.description('Summarize duplicate merge reports (*.merge-report.json)')
|
|
832
|
+
.option('--entity <name>', 'Filter duplicate entries by entity name/key')
|
|
833
|
+
.option('--merge-report <pattern>', 'Override merge report glob pattern')
|
|
834
|
+
.option('--json', 'JSON output', false)
|
|
835
|
+
.action(async (options = {}) => {
|
|
836
|
+
await duplicatesCommand(options);
|
|
837
|
+
});
|
|
838
|
+
/**
|
|
839
|
+
* manifest runtime-check <EntityName> <command>
|
|
840
|
+
*/
|
|
841
|
+
program
|
|
842
|
+
.command('runtime-check')
|
|
843
|
+
.description('Correlate route surface, source manifests, and precompiled IR for a command')
|
|
844
|
+
.argument('<entityName>', 'Entity name')
|
|
845
|
+
.argument('<commandName>', 'Command name')
|
|
846
|
+
.option('--route <path>', 'Optional canonical route path to validate (exact match)')
|
|
847
|
+
.option('--json', 'JSON output', false)
|
|
848
|
+
.option('--src <pattern>', 'Source manifest glob pattern')
|
|
849
|
+
.option('--ir-root <path...>', 'Compiled IR root directory/directories')
|
|
850
|
+
.action(async (entityName, commandName, options = {}) => {
|
|
851
|
+
await runtimeCheckCommand(entityName, commandName, options);
|
|
852
|
+
});
|
|
853
|
+
/**
|
|
854
|
+
* manifest cache-status
|
|
855
|
+
*/
|
|
856
|
+
program
|
|
857
|
+
.command('cache-status')
|
|
858
|
+
.description('Show offline cache guidance (precompiled IR timestamps + restart advice)')
|
|
859
|
+
.option('--entity <name>', 'Optional entity context for guidance text')
|
|
860
|
+
.option('--command <name>', 'Optional command context for guidance text')
|
|
861
|
+
.option('--json', 'JSON output', false)
|
|
862
|
+
.option('--ir-root <path...>', 'Compiled IR root directory/directories')
|
|
863
|
+
.action(async (options = {}) => {
|
|
864
|
+
await cacheStatusCommand(options);
|
|
865
|
+
});
|
|
866
|
+
/**
|
|
867
|
+
* manifest doctor
|
|
868
|
+
*/
|
|
869
|
+
/**
|
|
870
|
+
* manifest repl [source]
|
|
871
|
+
*
|
|
872
|
+
* Interactive REPL for inspecting IR and running commands against the runtime.
|
|
873
|
+
*/
|
|
874
|
+
program
|
|
875
|
+
.command('repl')
|
|
876
|
+
.description('Interactive Manifest runtime REPL for debugging guards, policies, and entity state')
|
|
877
|
+
.argument('[source]', 'Source .manifest file or directory')
|
|
878
|
+
.option('--json', 'JSON output mode for machine-readable responses', false)
|
|
879
|
+
.option('--user <id>', 'User id for runtime context')
|
|
880
|
+
.option('--tenant <id>', 'Tenant id for runtime context')
|
|
881
|
+
.option('--context <json>', 'Additional runtime context JSON')
|
|
882
|
+
.action(async (source, options = {}) => {
|
|
883
|
+
const { replCommand } = await import('./commands/repl.js');
|
|
884
|
+
await replCommand(source, {
|
|
885
|
+
json: options.json,
|
|
886
|
+
user: options.user,
|
|
887
|
+
tenant: options.tenant,
|
|
888
|
+
context: options.context,
|
|
889
|
+
});
|
|
890
|
+
});
|
|
891
|
+
program
|
|
892
|
+
.command('doctor')
|
|
893
|
+
.description('Run ranked offline diagnostics for source/IR/route drift and duplicate merges')
|
|
894
|
+
.option('--entity <name>', 'Optional entity to focus the diagnosis')
|
|
895
|
+
.option('--command <name>', 'Optional command to focus the diagnosis')
|
|
896
|
+
.option('--route <path>', 'Optional route path for route-surface correlation')
|
|
897
|
+
.option('--json', 'JSON output', false)
|
|
898
|
+
.option('--src <pattern>', 'Source manifest glob pattern')
|
|
899
|
+
.option('--ir-root <path...>', 'Compiled IR root directory/directories')
|
|
900
|
+
.action(async (options = {}) => {
|
|
901
|
+
await doctorCommand(options);
|
|
902
|
+
});
|
|
903
|
+
/**
|
|
904
|
+
* manifest integration-check
|
|
905
|
+
*
|
|
906
|
+
* End-to-end validation that a downstream repo is correctly integrated
|
|
907
|
+
* with the Manifest governance contract. Runs static governance + bypass
|
|
908
|
+
* audit + dispatcher presence + runtime smoke (audit/outbox adapters) +
|
|
909
|
+
* package shape. Exit code is 0 only if every section passes.
|
|
910
|
+
*/
|
|
911
|
+
program
|
|
912
|
+
.command('integration-check')
|
|
913
|
+
.description('Validate a downstream repo against the full Manifest governance + runtime contract')
|
|
914
|
+
.option('--root <path>', 'Downstream repo root (defaults to cwd)')
|
|
915
|
+
.option('--commands-registry <path>', 'Path to a commands registry JSON')
|
|
916
|
+
.option('--bypass-registry <path>', 'Path to a bypass registry JSON')
|
|
917
|
+
.option('--format <fmt>', 'Output format: text | json', 'text')
|
|
918
|
+
.option('--strict', 'Treat warnings as failures', false)
|
|
919
|
+
.option('--skip-runtime-smoke', 'Skip the in-memory RuntimeEngine smoke', false)
|
|
920
|
+
.option('--skip-package-shape', 'Skip the package-shape check', false)
|
|
921
|
+
.option('--skip-tarball', 'Skip the `npm pack --dry-run` sub-step in package-shape', false)
|
|
922
|
+
.option('--package-root <path>', 'Override the @angriff36/manifest package root for the package-shape check')
|
|
923
|
+
.action(async (options = {}) => {
|
|
924
|
+
const result = await integrationCheckCommand({
|
|
925
|
+
root: options.root,
|
|
926
|
+
commandsRegistry: options.commandsRegistry,
|
|
927
|
+
bypassRegistry: options.bypassRegistry,
|
|
928
|
+
format: options.format === 'json' ? 'json' : 'text',
|
|
929
|
+
strict: !!options.strict,
|
|
930
|
+
skipRuntimeSmoke: !!options.skipRuntimeSmoke,
|
|
931
|
+
skipPackageShape: !!options.skipPackageShape,
|
|
932
|
+
skipTarball: !!options.skipTarball,
|
|
933
|
+
packageRoot: options.packageRoot,
|
|
934
|
+
});
|
|
935
|
+
if (!result.ok)
|
|
936
|
+
process.exit(1);
|
|
937
|
+
});
|
|
938
|
+
/**
|
|
939
|
+
* manifest config
|
|
940
|
+
*
|
|
941
|
+
* Inspection and validation surface for manifest.config.{yaml,yml,ts,js}.
|
|
942
|
+
* Generic to Manifest itself — not tied to any downstream consumer.
|
|
943
|
+
*/
|
|
944
|
+
const configProgram = program
|
|
945
|
+
.command('config')
|
|
946
|
+
.description('Inspect and validate manifest.config.{yaml,ts,js}');
|
|
947
|
+
configProgram
|
|
948
|
+
.command('validate')
|
|
949
|
+
.description('Validate manifest.config against the JSON schema')
|
|
950
|
+
.option('--json', 'JSON output (and non-zero exit on failure)', false)
|
|
951
|
+
.action(async (options = {}) => {
|
|
952
|
+
await configValidateCommand({ json: !!options.json });
|
|
953
|
+
});
|
|
954
|
+
configProgram
|
|
955
|
+
.command('print-defaults')
|
|
956
|
+
.description('Print the canonical defaults Manifest applies when no config is set')
|
|
957
|
+
.option('--json', 'JSON output (default: yes)', true)
|
|
958
|
+
.action(async (options = {}) => {
|
|
959
|
+
await configPrintDefaultsCommand({ json: options.json !== false });
|
|
960
|
+
});
|
|
961
|
+
configProgram
|
|
962
|
+
.command('inspect')
|
|
963
|
+
.alias('print-effective')
|
|
964
|
+
.description('Print the effective config (defaults + user overrides). Stable, key-sorted; safe for CI snapshots.')
|
|
965
|
+
.option('--json', 'JSON output (default: yes)', true)
|
|
966
|
+
.action(async (options = {}) => {
|
|
967
|
+
await configInspectCommand({ json: options.json !== false });
|
|
968
|
+
});
|
|
969
|
+
/**
|
|
970
|
+
* manifest versions
|
|
971
|
+
*
|
|
972
|
+
* IR snapshot versioning with semantic tags, changelog, and integrity verification.
|
|
973
|
+
*/
|
|
974
|
+
const versionsProgram = program
|
|
975
|
+
.command('versions')
|
|
976
|
+
.description('Manage IR version snapshots (.manifest-versions/)');
|
|
977
|
+
versionsProgram
|
|
978
|
+
.command('list')
|
|
979
|
+
.description('List saved IR versions')
|
|
980
|
+
.option('--store <path>', 'Version store directory', '.manifest-versions')
|
|
981
|
+
.option('--json', 'JSON output', false)
|
|
982
|
+
.action(async (options = {}) => {
|
|
983
|
+
await versionsListCommand({ store: options.store, json: options.json });
|
|
984
|
+
});
|
|
985
|
+
versionsProgram
|
|
986
|
+
.command('show')
|
|
987
|
+
.description('Show version metadata (by number, tag, or "latest")')
|
|
988
|
+
.argument('<version>', 'Version number, tag, or "latest"')
|
|
989
|
+
.option('--store <path>', 'Version store directory', '.manifest-versions')
|
|
990
|
+
.option('--json', 'JSON output', false)
|
|
991
|
+
.action(async (version, options = {}) => {
|
|
992
|
+
await versionsShowCommand(version, { store: options.store, json: options.json });
|
|
993
|
+
});
|
|
994
|
+
versionsProgram
|
|
995
|
+
.command('save')
|
|
996
|
+
.description('Compile and save a new IR snapshot')
|
|
997
|
+
.argument('[source]', 'Path to .manifest source file')
|
|
998
|
+
.option('--store <path>', 'Version store directory', '.manifest-versions')
|
|
999
|
+
.option('--tag <tag>', 'Semantic version tag (e.g. 1.0.0)')
|
|
1000
|
+
.option('--auto-tag', 'Auto-increment semver from previous version', false)
|
|
1001
|
+
.option('--label <text>', 'Human-readable label for this version')
|
|
1002
|
+
.action(async (source, options = {}) => {
|
|
1003
|
+
await versionsSaveCommand(source, {
|
|
1004
|
+
store: options.store,
|
|
1005
|
+
tag: options.tag,
|
|
1006
|
+
autoTag: options.autoTag,
|
|
1007
|
+
label: options.label,
|
|
1008
|
+
});
|
|
1009
|
+
});
|
|
1010
|
+
versionsProgram
|
|
1011
|
+
.command('diff')
|
|
1012
|
+
.description('Compare two saved IR versions')
|
|
1013
|
+
.argument('<from>', 'Source version (number, tag, or "latest")')
|
|
1014
|
+
.argument('<to>', 'Target version (number, tag, or "latest")')
|
|
1015
|
+
.option('--store <path>', 'Version store directory', '.manifest-versions')
|
|
1016
|
+
.option('--json', 'JSON output', false)
|
|
1017
|
+
.option('--breaking', 'Include breaking change analysis', false)
|
|
1018
|
+
.option('--sql', 'Include migration SQL preview', false)
|
|
1019
|
+
.action(async (from, to, options = {}) => {
|
|
1020
|
+
await versionsDiffCommand(from, to, {
|
|
1021
|
+
store: options.store,
|
|
1022
|
+
json: options.json,
|
|
1023
|
+
breaking: options.breaking,
|
|
1024
|
+
sql: options.sql,
|
|
1025
|
+
});
|
|
1026
|
+
});
|
|
1027
|
+
versionsProgram
|
|
1028
|
+
.command('changelog')
|
|
1029
|
+
.description('Generate changelog between two versions')
|
|
1030
|
+
.argument('[from]', 'Source version (default: previous)')
|
|
1031
|
+
.argument('[to]', 'Target version (default: latest)')
|
|
1032
|
+
.option('--store <path>', 'Version store directory', '.manifest-versions')
|
|
1033
|
+
.option('--json', 'JSON output', false)
|
|
1034
|
+
.action(async (from, to, options = {}) => {
|
|
1035
|
+
await versionsChangelogCommand(from, to, { store: options.store, json: options.json });
|
|
1036
|
+
});
|
|
1037
|
+
versionsProgram
|
|
1038
|
+
.command('tag')
|
|
1039
|
+
.description('Apply a semantic version tag to a saved version')
|
|
1040
|
+
.argument('<version>', 'Version number or "latest"')
|
|
1041
|
+
.argument('<tag>', 'Semantic version tag (e.g. 1.0.0)')
|
|
1042
|
+
.option('--store <path>', 'Version store directory', '.manifest-versions')
|
|
1043
|
+
.action(async (version, tag, options = {}) => {
|
|
1044
|
+
await versionsTagCommand(version, tag, { store: options.store });
|
|
1045
|
+
});
|
|
1046
|
+
versionsProgram
|
|
1047
|
+
.command('rollback')
|
|
1048
|
+
.description('Output a previous IR snapshot')
|
|
1049
|
+
.argument('<version>', 'Version number, tag, or "latest"')
|
|
1050
|
+
.option('--store <path>', 'Version store directory', '.manifest-versions')
|
|
1051
|
+
.option('-o, --output <path>', 'Write IR to file instead of stdout')
|
|
1052
|
+
.action(async (version, options = {}) => {
|
|
1053
|
+
await versionsRollbackCommand(version, { store: options.store, output: options.output });
|
|
1054
|
+
});
|
|
1055
|
+
versionsProgram
|
|
1056
|
+
.command('verify')
|
|
1057
|
+
.description('Verify IR integrity via SHA-256 hash comparison')
|
|
1058
|
+
.argument('[version]', 'Version to verify (default: latest)')
|
|
1059
|
+
.option('--store <path>', 'Version store directory', '.manifest-versions')
|
|
1060
|
+
.option('--json', 'JSON output', false)
|
|
1061
|
+
.option('--all', 'Verify all saved versions', false)
|
|
1062
|
+
.action(async (version, options = {}) => {
|
|
1063
|
+
await versionsVerifyCommand(version, { store: options.store, json: options.json, all: options.all });
|
|
1064
|
+
});
|
|
1065
|
+
/**
|
|
1066
|
+
* manifest plugins
|
|
1067
|
+
*
|
|
1068
|
+
* List and inspect loaded plugins from manifest.config.yaml.
|
|
1069
|
+
*/
|
|
1070
|
+
const pluginsProgram = program
|
|
1071
|
+
.command('plugins')
|
|
1072
|
+
.description('List and inspect Manifest plugins');
|
|
1073
|
+
pluginsProgram
|
|
1074
|
+
.command('list')
|
|
1075
|
+
.description('List plugins declared in manifest.config')
|
|
1076
|
+
.option('--json', 'JSON output', false)
|
|
1077
|
+
.action(async (options = {}) => {
|
|
1078
|
+
const config = (await getConfig()) ?? {};
|
|
1079
|
+
const pluginDecls = config.plugins ?? [];
|
|
1080
|
+
if (pluginDecls.length === 0) {
|
|
1081
|
+
if (options.json) {
|
|
1082
|
+
console.log(JSON.stringify({ plugins: [], message: 'No plugins declared in manifest.config' }, null, 2));
|
|
1083
|
+
}
|
|
1084
|
+
else {
|
|
1085
|
+
console.log(chalk.gray('No plugins declared in manifest.config'));
|
|
1086
|
+
}
|
|
1087
|
+
return;
|
|
1088
|
+
}
|
|
1089
|
+
const summary = pluginDecls.map((p) => ({
|
|
1090
|
+
module: p.module,
|
|
1091
|
+
enabled: p.enabled !== false,
|
|
1092
|
+
hasOptions: !!p.options && Object.keys(p.options).length > 0,
|
|
1093
|
+
}));
|
|
1094
|
+
if (options.json) {
|
|
1095
|
+
console.log(JSON.stringify({ plugins: summary }, null, 2));
|
|
1096
|
+
}
|
|
1097
|
+
else {
|
|
1098
|
+
console.log(chalk.bold('Declared plugins:\n'));
|
|
1099
|
+
for (const p of summary) {
|
|
1100
|
+
const status = p.enabled ? chalk.green('enabled') : chalk.red('disabled');
|
|
1101
|
+
const opts = p.hasOptions ? chalk.gray(' (with options)') : '';
|
|
1102
|
+
console.log(` ${chalk.cyan(p.module)} ${status}${opts}`);
|
|
1103
|
+
}
|
|
1104
|
+
console.log(`\n Total: ${summary.length} plugin(s)`);
|
|
1105
|
+
}
|
|
1106
|
+
});
|
|
1107
|
+
/**
|
|
1108
|
+
* Run the CLI
|
|
1109
|
+
*
|
|
1110
|
+
* This function is exported so it can be called from the bin file.
|
|
1111
|
+
*/
|
|
1112
|
+
export async function runCli() {
|
|
1113
|
+
await program.parseAsync(process.argv);
|
|
1114
|
+
}
|
|
1115
|
+
function normalizeForComparison(path) {
|
|
1116
|
+
const normalizedPath = normalize(path);
|
|
1117
|
+
return process.platform === 'win32' ? normalizedPath.toLowerCase() : normalizedPath;
|
|
1118
|
+
}
|
|
1119
|
+
async function resolveRealPath(inputPath) {
|
|
1120
|
+
try {
|
|
1121
|
+
return await realpath(inputPath);
|
|
1122
|
+
}
|
|
1123
|
+
catch {
|
|
1124
|
+
return undefined;
|
|
1125
|
+
}
|
|
1126
|
+
}
|
|
1127
|
+
async function isDirectExecution() {
|
|
1128
|
+
const modulePath = await resolveRealPath(fileURLToPath(import.meta.url));
|
|
1129
|
+
const argvEntry = process.argv[1];
|
|
1130
|
+
if (!modulePath) {
|
|
1131
|
+
return false;
|
|
1132
|
+
}
|
|
1133
|
+
if (argvEntry) {
|
|
1134
|
+
const argvResolvedPath = resolve(argvEntry);
|
|
1135
|
+
const argvPath = await resolveRealPath(argvResolvedPath);
|
|
1136
|
+
if (argvPath) {
|
|
1137
|
+
return normalizeForComparison(modulePath) === normalizeForComparison(argvPath);
|
|
1138
|
+
}
|
|
1139
|
+
// Fallback for shim/symlink bin paths that cannot be resolved.
|
|
1140
|
+
const normalizedArgv = normalizeForComparison(argvResolvedPath);
|
|
1141
|
+
if (normalizedArgv.includes('manifest') || normalizedArgv.endsWith('index.js')) {
|
|
1142
|
+
return true;
|
|
1143
|
+
}
|
|
1144
|
+
// ESM equivalent of "module is main".
|
|
1145
|
+
if (import.meta.url === pathToFileURL(argvResolvedPath).href) {
|
|
1146
|
+
return true;
|
|
1147
|
+
}
|
|
1148
|
+
}
|
|
1149
|
+
return false;
|
|
1150
|
+
}
|
|
1151
|
+
void isDirectExecution().then((shouldRun) => {
|
|
1152
|
+
if (shouldRun) {
|
|
1153
|
+
runCli().catch((error) => {
|
|
1154
|
+
console.error('CLI error:', error);
|
|
1155
|
+
process.exit(1);
|
|
1156
|
+
});
|
|
1157
|
+
}
|
|
1158
|
+
});
|
|
1159
|
+
//# sourceMappingURL=index.js.map
|