mycontext-cli 4.2.6 → 4.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (117) hide show
  1. package/README.md +531 -144
  2. package/dist/README.md +531 -144
  3. package/dist/cli.js +14 -5
  4. package/dist/cli.js.map +1 -1
  5. package/dist/commands/generate.d.ts.map +1 -1
  6. package/dist/commands/generate.js +19 -47
  7. package/dist/commands/generate.js.map +1 -1
  8. package/dist/commands/init-interactive.d.ts +147 -0
  9. package/dist/commands/init-interactive.d.ts.map +1 -0
  10. package/dist/commands/init-interactive.js +917 -0
  11. package/dist/commands/init-interactive.js.map +1 -0
  12. package/dist/config/shadcn-catalog.json +93 -0
  13. package/dist/core/brain/BrainClient.d.ts +1 -1
  14. package/dist/core/brain/BrainClient.d.ts.map +1 -1
  15. package/dist/core/brain/BrainClient.js +5 -5
  16. package/dist/core/brain/BrainClient.js.map +1 -1
  17. package/dist/doctor/DoctorEngine.d.ts.map +1 -1
  18. package/dist/doctor/DoctorEngine.js +21 -11
  19. package/dist/doctor/DoctorEngine.js.map +1 -1
  20. package/dist/doctor/rules/dead-code-rules.d.ts.map +1 -1
  21. package/dist/doctor/rules/dead-code-rules.js +33 -0
  22. package/dist/doctor/rules/dead-code-rules.js.map +1 -1
  23. package/dist/doctor/rules/index.d.ts +3 -1
  24. package/dist/doctor/rules/index.d.ts.map +1 -1
  25. package/dist/doctor/rules/index.js +7 -1
  26. package/dist/doctor/rules/index.js.map +1 -1
  27. package/dist/doctor/rules/instantdb-rules.d.ts +3 -0
  28. package/dist/doctor/rules/instantdb-rules.d.ts.map +1 -0
  29. package/dist/doctor/rules/instantdb-rules.js +544 -0
  30. package/dist/doctor/rules/instantdb-rules.js.map +1 -0
  31. package/dist/doctor/rules/nextjs-rules.d.ts.map +1 -1
  32. package/dist/doctor/rules/nextjs-rules.js +53 -3
  33. package/dist/doctor/rules/nextjs-rules.js.map +1 -1
  34. package/dist/doctor/rules/typescript-rules.d.ts +3 -0
  35. package/dist/doctor/rules/typescript-rules.d.ts.map +1 -0
  36. package/dist/doctor/rules/typescript-rules.js +177 -0
  37. package/dist/doctor/rules/typescript-rules.js.map +1 -0
  38. package/dist/package.json +4 -2
  39. package/dist/services/ComponentInferenceEngine.d.ts +66 -0
  40. package/dist/services/ComponentInferenceEngine.d.ts.map +1 -0
  41. package/dist/services/ComponentInferenceEngine.js +302 -0
  42. package/dist/services/ComponentInferenceEngine.js.map +1 -0
  43. package/dist/services/ComponentRegistry.d.ts +61 -0
  44. package/dist/services/ComponentRegistry.d.ts.map +1 -0
  45. package/dist/services/ComponentRegistry.js +128 -0
  46. package/dist/services/ComponentRegistry.js.map +1 -0
  47. package/dist/services/InferenceEngine.d.ts +41 -0
  48. package/dist/services/InferenceEngine.d.ts.map +1 -0
  49. package/dist/services/InferenceEngine.js +307 -0
  50. package/dist/services/InferenceEngine.js.map +1 -0
  51. package/dist/services/Planner.d.ts +77 -0
  52. package/dist/services/Planner.d.ts.map +1 -0
  53. package/dist/services/Planner.js +828 -0
  54. package/dist/services/Planner.js.map +1 -0
  55. package/dist/services/ProjectScanner.d.ts.map +1 -1
  56. package/dist/services/ProjectScanner.js +15 -1
  57. package/dist/services/ProjectScanner.js.map +1 -1
  58. package/dist/services/ScaffoldEngine.d.ts +87 -0
  59. package/dist/services/ScaffoldEngine.d.ts.map +1 -0
  60. package/dist/services/ScaffoldEngine.js +409 -0
  61. package/dist/services/ScaffoldEngine.js.map +1 -0
  62. package/dist/services/ScaffoldPreview.d.ts +62 -0
  63. package/dist/services/ScaffoldPreview.d.ts.map +1 -0
  64. package/dist/services/ScaffoldPreview.js +292 -0
  65. package/dist/services/ScaffoldPreview.js.map +1 -0
  66. package/dist/services/TemplateEngine.d.ts +136 -0
  67. package/dist/services/TemplateEngine.d.ts.map +1 -0
  68. package/dist/services/TemplateEngine.js +483 -0
  69. package/dist/services/TemplateEngine.js.map +1 -0
  70. package/dist/services/TemplateHelpers.d.ts +9 -0
  71. package/dist/services/TemplateHelpers.d.ts.map +1 -0
  72. package/dist/services/TemplateHelpers.js +212 -0
  73. package/dist/services/TemplateHelpers.js.map +1 -0
  74. package/dist/templates/actions/auth-actions.ts.hbs +140 -0
  75. package/dist/templates/actions/crud-actions.ts.hbs +113 -0
  76. package/dist/templates/components/auth/login-form.tsx.hbs +67 -0
  77. package/dist/templates/components/auth/login-skeleton.tsx.hbs +24 -0
  78. package/dist/templates/components/auth/register-form.tsx.hbs +116 -0
  79. package/dist/templates/components/crud/entity-card.tsx.hbs +71 -0
  80. package/dist/templates/components/crud/entity-form.tsx.hbs +158 -0
  81. package/dist/templates/components/crud/entity-skeleton.tsx.hbs +90 -0
  82. package/dist/templates/components/crud/entity-table.tsx.hbs +129 -0
  83. package/dist/templates/components/ui/button.tsx.hbs +53 -0
  84. package/dist/templates/components/ui/card.tsx.hbs +68 -0
  85. package/dist/templates/components/ui/input.tsx.hbs +33 -0
  86. package/dist/templates/components/ui/label.tsx.hbs +20 -0
  87. package/dist/templates/components/ui/skeleton.tsx.hbs +15 -0
  88. package/dist/templates/components/ui/theme-provider.tsx.hbs +66 -0
  89. package/dist/templates/components/ui/theme-toggle.tsx.hbs +30 -0
  90. package/dist/templates/config/app.css.hbs +150 -0
  91. package/dist/templates/layouts/dashboard-layout.tsx.hbs +69 -0
  92. package/dist/templates/layouts/error.tsx.hbs +51 -0
  93. package/dist/templates/layouts/loading.tsx.hbs +22 -0
  94. package/dist/templates/layouts/not-found.tsx.hbs +24 -0
  95. package/dist/templates/layouts/root-layout.tsx.hbs +40 -0
  96. package/dist/templates/lib/instant.ts.hbs +19 -0
  97. package/dist/templates/lib/utils.ts.hbs +24 -0
  98. package/dist/templates/pages/auth/login-page.tsx.hbs +30 -0
  99. package/dist/templates/pages/auth/register-page.tsx.hbs +38 -0
  100. package/dist/templates/pages/crud/create-page.tsx.hbs +42 -0
  101. package/dist/templates/pages/crud/detail-page.tsx.hbs +90 -0
  102. package/dist/templates/pages/crud/list-page.tsx.hbs +60 -0
  103. package/dist/templates/pages/crud/loading.tsx.hbs +13 -0
  104. package/dist/templates/pages/landing-page.tsx.hbs +111 -0
  105. package/dist/types/asl.d.ts +387 -0
  106. package/dist/types/asl.d.ts.map +1 -0
  107. package/dist/types/asl.js +139 -0
  108. package/dist/types/asl.js.map +1 -0
  109. package/dist/types/living-context.d.ts +1 -1
  110. package/dist/types/living-context.d.ts.map +1 -1
  111. package/dist/utils/FileGenerator.js +3 -3
  112. package/dist/utils/FileGenerator.js.map +1 -1
  113. package/dist/utils/generateTypesFromSchema.d.ts +47 -0
  114. package/dist/utils/generateTypesFromSchema.d.ts.map +1 -0
  115. package/dist/utils/generateTypesFromSchema.js +298 -0
  116. package/dist/utils/generateTypesFromSchema.js.map +1 -0
  117. package/package.json +4 -2
@@ -0,0 +1,90 @@
1
+ import { Suspense } from 'react'
2
+ import { Metadata } from 'next'
3
+ import { notFound } from 'next/navigation'
4
+ import Link from 'next/link'
5
+ import { Button } from '@/components/ui/button'
6
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
7
+ import { EntityDetailSkeleton } from '@/components/crud/entity-skeleton'
8
+ import { db } from '@/lib/instant'
9
+
10
+ interface PageProps {
11
+ params: Promise<{ id: string }>
12
+ }
13
+
14
+ export async function generateMetadata({ params }: PageProps): Promise<Metadata> {
15
+ const { id } = await params
16
+ return {
17
+ title: `{{entityName}} ${id}`,
18
+ description: `View {{entityLower}} details`,
19
+ }
20
+ }
21
+
22
+ async function {{entityName}}Details({ id }: { id: string }) {
23
+ const { data, error } = await db.query({
24
+ {{entityLower}}s: {
25
+ $: {
26
+ where: {
27
+ id,
28
+ },
29
+ },
30
+ },
31
+ })
32
+
33
+ if (error || !data.{{entityLower}}s?.[0]) {
34
+ notFound()
35
+ }
36
+
37
+ const {{entityLower}} = data.{{entityLower}}s[0]
38
+
39
+ return (
40
+ <Card>
41
+ <CardHeader>
42
+ <CardTitle>{{entityName}} Details</CardTitle>
43
+ <CardDescription>View and manage this {{entityLower}}</CardDescription>
44
+ </CardHeader>
45
+ <CardContent className="space-y-4">
46
+ {{#each fields}}
47
+ <div className="grid grid-cols-3 gap-4">
48
+ <dt className="font-medium text-muted-foreground">{{capitalize name}}:</dt>
49
+ <dd className="col-span-2">
50
+ {{#if (eq type 'date')}}
51
+ {new Date({{../entityLower}}.{{name}}).toLocaleDateString()}
52
+ {{else if (eq type 'boolean')}}
53
+ { {{../entityLower}}.{{name}} ? 'Yes' : 'No' }
54
+ {{else}}
55
+ { {{../entityLower}}.{{name}} }
56
+ {{/if}}
57
+ </dd>
58
+ </div>
59
+ {{/each}}
60
+ </CardContent>
61
+ </Card>
62
+ )
63
+ }
64
+
65
+ export default async function {{entityName}}DetailPage({ params }: PageProps) {
66
+ const { id } = await params
67
+
68
+ return (
69
+ <div className="container mx-auto py-10">
70
+ <div className="mb-8 flex items-center justify-between">
71
+ <div>
72
+ <h1 className="text-3xl font-bold tracking-tight">{{entityName}} Details</h1>
73
+ <p className="text-muted-foreground">View and manage this {{entityLower}}</p>
74
+ </div>
75
+ <div className="flex gap-2">
76
+ <Button variant="outline" asChild>
77
+ <Link href="/{{entityLower}}s">Back to List</Link>
78
+ </Button>
79
+ <Button asChild>
80
+ <Link href={`/{{entityLower}}s/${id}/edit`}>Edit</Link>
81
+ </Button>
82
+ </div>
83
+ </div>
84
+
85
+ <Suspense fallback={<EntityDetailSkeleton />}>
86
+ <{{entityName}}Details id={id} />
87
+ </Suspense>
88
+ </div>
89
+ )
90
+ }
@@ -0,0 +1,60 @@
1
+ import { Suspense } from 'react'
2
+ import { Metadata } from 'next'
3
+ import Link from 'next/link'
4
+ import { Button } from '@/components/ui/button'
5
+ import { EntityTable } from '@/components/crud/entity-table'
6
+ import { EntityTableSkeleton } from '@/components/crud/entity-skeleton'
7
+ import { db } from '@/lib/instant'
8
+
9
+ export const metadata: Metadata = {
10
+ title: '{{entityName}}s',
11
+ description: 'Manage your {{entityLower}}s',
12
+ }
13
+
14
+ async function {{entityName}}Data() {
15
+ // Fetch data using InstantDB
16
+ const { data, error } = await db.query({ {{entityLower}}s: {} })
17
+
18
+ if (error) {
19
+ throw new Error(`Failed to load {{entityLower}}s: ${error.message}`)
20
+ }
21
+
22
+ const columns = [
23
+ {{#each fields}}
24
+ {
25
+ key: '{{name}}' as const,
26
+ label: '{{capitalize name}}',
27
+ sortable: true,
28
+ {{#if (eq type 'date')}}
29
+ render: (value: any) => new Date(value).toLocaleDateString(),
30
+ {{/if}}
31
+ },
32
+ {{/each}}
33
+ ]
34
+
35
+ return <EntityTable data={data.{{entityLower}}s || []} columns={columns} entityLower="{{entityLower}}" />
36
+ }
37
+
38
+ export default function {{entityName}}sPage() {
39
+ return (
40
+ <div className="container mx-auto py-10">
41
+ <div className="flex items-center justify-between">
42
+ <div>
43
+ <h1 className="text-3xl font-bold tracking-tight">{{entityName}}s</h1>
44
+ <p className="text-muted-foreground">
45
+ Manage your {{entityLower}}s
46
+ </p>
47
+ </div>
48
+ <Button asChild>
49
+ <Link href="/{{entityLower}}s/new">Create {{entityName}}</Link>
50
+ </Button>
51
+ </div>
52
+
53
+ <div className="mt-8">
54
+ <Suspense fallback={<EntityTableSkeleton />}>
55
+ <{{entityName}}Data />
56
+ </Suspense>
57
+ </div>
58
+ </div>
59
+ )
60
+ }
@@ -0,0 +1,13 @@
1
+ import { EntityListSkeleton } from '@/components/crud/entity-skeleton'
2
+
3
+ export default function Loading() {
4
+ return (
5
+ <div className="container mx-auto py-10">
6
+ <div className="mb-8">
7
+ <div className="h-10 w-48 animate-pulse rounded-md bg-muted" />
8
+ <div className="mt-2 h-4 w-64 animate-pulse rounded-md bg-muted" />
9
+ </div>
10
+ <EntityListSkeleton />
11
+ </div>
12
+ )
13
+ }
@@ -0,0 +1,111 @@
1
+ import { Metadata } from 'next'
2
+ import Link from 'next/link'
3
+ import { Button } from '@/components/ui/button'
4
+ import { Card, CardContent, CardDescription, CardHeader, CardTitle } from '@/components/ui/card'
5
+
6
+ export const metadata: Metadata = {
7
+ title: 'Home',
8
+ description: '{{projectDescription}}',
9
+ }
10
+
11
+ export default function LandingPage() {
12
+ return (
13
+ <div className="flex min-h-screen flex-col">
14
+ {/* Hero Section */}
15
+ <section className="container mx-auto flex flex-1 items-center justify-center px-4 py-20">
16
+ <div className="mx-auto max-w-3xl text-center">
17
+ <h1 className="text-5xl font-bold tracking-tight sm:text-6xl">
18
+ {{projectName}}
19
+ </h1>
20
+ <p className="mt-6 text-lg text-muted-foreground">
21
+ {{projectDescription}}
22
+ </p>
23
+ <div className="mt-10 flex items-center justify-center gap-4">
24
+ <Button size="lg" asChild>
25
+ <Link href="/register">Get Started</Link>
26
+ </Button>
27
+ <Button size="lg" variant="outline" asChild>
28
+ <Link href="/login">Sign In</Link>
29
+ </Button>
30
+ </div>
31
+ </div>
32
+ </section>
33
+
34
+ {/* Features Section */}
35
+ <section className="border-t bg-muted/50 py-20">
36
+ <div className="container mx-auto px-4">
37
+ <h2 className="mb-12 text-center text-3xl font-bold tracking-tight">
38
+ Features
39
+ </h2>
40
+ <div className="grid gap-6 md:grid-cols-2 lg:grid-cols-3">
41
+ <Card>
42
+ <CardHeader>
43
+ <CardTitle>Fast & Reliable</CardTitle>
44
+ <CardDescription>
45
+ Built with modern technologies for optimal performance
46
+ </CardDescription>
47
+ </CardHeader>
48
+ <CardContent>
49
+ <p className="text-sm text-muted-foreground">
50
+ Powered by Next.js 15, React 19, and InstantDB for a seamless experience.
51
+ </p>
52
+ </CardContent>
53
+ </Card>
54
+
55
+ <Card>
56
+ <CardHeader>
57
+ <CardTitle>Secure</CardTitle>
58
+ <CardDescription>
59
+ Your data is protected with industry-standard security
60
+ </CardDescription>
61
+ </CardHeader>
62
+ <CardContent>
63
+ <p className="text-sm text-muted-foreground">
64
+ Authentication and authorization built-in to keep your information safe.
65
+ </p>
66
+ </CardContent>
67
+ </Card>
68
+
69
+ <Card>
70
+ <CardHeader>
71
+ <CardTitle>Easy to Use</CardTitle>
72
+ <CardDescription>
73
+ Intuitive interface designed for everyone
74
+ </CardDescription>
75
+ </CardHeader>
76
+ <CardContent>
77
+ <p className="text-sm text-muted-foreground">
78
+ Clean, accessible design that works beautifully on all devices.
79
+ </p>
80
+ </CardContent>
81
+ </Card>
82
+ </div>
83
+ </div>
84
+ </section>
85
+
86
+ {/* CTA Section */}
87
+ <section className="border-t py-20">
88
+ <div className="container mx-auto px-4 text-center">
89
+ <h2 className="text-3xl font-bold tracking-tight">
90
+ Ready to get started?
91
+ </h2>
92
+ <p className="mt-4 text-lg text-muted-foreground">
93
+ Join us today and experience the difference
94
+ </p>
95
+ <div className="mt-8">
96
+ <Button size="lg" asChild>
97
+ <Link href="/register">Create Free Account</Link>
98
+ </Button>
99
+ </div>
100
+ </div>
101
+ </section>
102
+
103
+ {/* Footer */}
104
+ <footer className="border-t py-8">
105
+ <div className="container mx-auto px-4 text-center text-sm text-muted-foreground">
106
+ <p>&copy; {new Date().getFullYear()} {{projectName}}. All rights reserved.</p>
107
+ </div>
108
+ </footer>
109
+ </div>
110
+ )
111
+ }
@@ -0,0 +1,387 @@
1
+ /**
2
+ * ASL (Abstract Specification Language)
3
+ *
4
+ * Formal TypeScript schema for deterministic full-stack app compilation.
5
+ * This is the canonical input format for the MyContext compiler.
6
+ *
7
+ * ASL is LLM-generated from natural language, then validated by the Planner,
8
+ * and finally consumed by deterministic script generators.
9
+ */
10
+ export interface ASL {
11
+ version: "1.0";
12
+ project: ProjectSpec;
13
+ entities: Record<string, EntitySpec>;
14
+ auth?: AuthSpec;
15
+ permissions?: PermissionSpec[];
16
+ pages: PageSpec[];
17
+ components?: ComponentSpec[];
18
+ relationships?: RelationshipSpec[];
19
+ design?: DesignSpec;
20
+ }
21
+ export interface ProjectSpec {
22
+ name: string;
23
+ description: string;
24
+ framework: "nextjs";
25
+ backend: "instantdb";
26
+ styling?: "tailwind" | "tailwind-shadcn";
27
+ packageManager?: "npm" | "pnpm" | "yarn" | "bun";
28
+ typescript?: boolean;
29
+ }
30
+ export interface EntitySpec {
31
+ name: string;
32
+ description?: string;
33
+ fields: FieldSpec[];
34
+ indexes?: string[];
35
+ timestamps?: boolean;
36
+ }
37
+ export interface FieldSpec {
38
+ name: string;
39
+ type: FieldType;
40
+ required?: boolean;
41
+ unique?: boolean;
42
+ indexed?: boolean;
43
+ default?: any;
44
+ validation?: FieldValidation;
45
+ description?: string;
46
+ }
47
+ export type FieldType = "string" | "number" | "boolean" | "date" | "json" | "ref";
48
+ export interface FieldValidation {
49
+ min?: number;
50
+ max?: number;
51
+ pattern?: string;
52
+ enum?: string[];
53
+ custom?: string;
54
+ }
55
+ export interface RelationshipSpec {
56
+ name: string;
57
+ from: string;
58
+ to: string;
59
+ type: RelationType;
60
+ fromField?: string;
61
+ cascade?: {
62
+ delete?: boolean;
63
+ update?: boolean;
64
+ };
65
+ }
66
+ export type RelationType = "one-to-one" | "one-to-many" | "many-to-one" | "many-to-many";
67
+ export interface AuthSpec {
68
+ provider: "email" | "oauth-github" | "oauth-google" | "magic-link" | string | string[];
69
+ roles: RoleSpec[];
70
+ defaultRole?: string;
71
+ userEntity?: string;
72
+ features?: AuthFeature[];
73
+ }
74
+ export interface RoleSpec {
75
+ name: string;
76
+ description: string;
77
+ extends?: string;
78
+ }
79
+ export type AuthFeature = "email-verification" | "password-reset" | "two-factor" | "social-login" | "magic-link";
80
+ export interface PermissionSpec {
81
+ role: string;
82
+ resource: string;
83
+ actions: PermissionAction[];
84
+ condition?: PermissionCondition;
85
+ }
86
+ export type PermissionAction = "create" | "read" | "update" | "delete" | "manage";
87
+ export interface PermissionCondition {
88
+ type: "own" | "role" | "custom";
89
+ field?: string;
90
+ value?: any;
91
+ expression?: string;
92
+ }
93
+ export interface PageSpec {
94
+ path: string;
95
+ name: string;
96
+ type: PageType;
97
+ title?: string;
98
+ description?: string;
99
+ public?: boolean;
100
+ guards?: PageGuard[];
101
+ permissions?: string[];
102
+ layout?: LayoutSpec;
103
+ queries?: QuerySpec[];
104
+ mutations?: MutationSpec[];
105
+ components?: string[];
106
+ }
107
+ export type PageType = "page" | "layout" | "route-group";
108
+ export type PageGuard = "authenticated" | "role" | "permission" | "custom";
109
+ export interface LayoutSpec {
110
+ type: "default" | "dashboard" | "auth" | "minimal";
111
+ sidebar?: boolean;
112
+ header?: boolean;
113
+ footer?: boolean;
114
+ }
115
+ export interface QuerySpec {
116
+ name: string;
117
+ entity: string;
118
+ type: "one" | "many";
119
+ filters?: FilterSpec[];
120
+ includes?: string[];
121
+ orderBy?: OrderBySpec;
122
+ limit?: number;
123
+ }
124
+ export interface FilterSpec {
125
+ field: string;
126
+ operator: FilterOperator;
127
+ value: any;
128
+ }
129
+ export type FilterOperator = "eq" | "ne" | "gt" | "gte" | "lt" | "lte" | "in" | "contains";
130
+ export interface OrderBySpec {
131
+ field: string;
132
+ direction: "asc" | "desc";
133
+ }
134
+ export interface MutationSpec {
135
+ name: string;
136
+ entity: string;
137
+ type: MutationType;
138
+ validation?: string[];
139
+ }
140
+ export type MutationType = "create" | "update" | "delete";
141
+ export interface ComponentSpec {
142
+ name: string;
143
+ type: ComponentType;
144
+ description?: string;
145
+ props?: PropSpec[];
146
+ dependencies?: string[];
147
+ variant?: string;
148
+ dataSource?: string;
149
+ }
150
+ export type ComponentType = "page" | "layout" | "card" | "list" | "form" | "modal" | "navigation" | "widget" | "custom";
151
+ export interface PropSpec {
152
+ name: string;
153
+ type: string;
154
+ required?: boolean;
155
+ default?: any;
156
+ description?: string;
157
+ }
158
+ export interface DesignSpec {
159
+ theme: "light" | "dark" | "system";
160
+ colors?: ColorSpec;
161
+ typography?: TypographySpec;
162
+ spacing?: SpacingSpec;
163
+ borderRadius?: number;
164
+ }
165
+ export interface ColorSpec {
166
+ primary: string;
167
+ secondary?: string;
168
+ accent?: string;
169
+ background?: string;
170
+ foreground?: string;
171
+ muted?: string;
172
+ destructive?: string;
173
+ }
174
+ export interface TypographySpec {
175
+ headingFont?: string;
176
+ bodyFont?: string;
177
+ scale?: "compact" | "normal" | "relaxed";
178
+ }
179
+ export interface SpacingSpec {
180
+ unit?: number;
181
+ scale?: "compact" | "normal" | "relaxed";
182
+ }
183
+ export interface ASLValidationResult {
184
+ valid: boolean;
185
+ errors: ASLValidationError[];
186
+ warnings: ASLValidationWarning[];
187
+ completeness: number;
188
+ }
189
+ export interface ASLValidationError {
190
+ path: string;
191
+ message: string;
192
+ severity: "error";
193
+ fix?: string;
194
+ }
195
+ export interface ASLValidationWarning {
196
+ path: string;
197
+ message: string;
198
+ severity: "warning";
199
+ suggestion?: string;
200
+ }
201
+ export interface Question {
202
+ id: string;
203
+ type: QuestionType;
204
+ text: string;
205
+ context?: string;
206
+ options?: QuestionOption[];
207
+ validation?: QuestionValidation;
208
+ dependsOn?: string[];
209
+ category: QuestionCategory;
210
+ }
211
+ export type QuestionType = "text" | "number" | "boolean" | "select" | "multi-select" | "entity-builder" | "field-builder";
212
+ export interface QuestionOption {
213
+ value: string;
214
+ label: string;
215
+ description?: string;
216
+ }
217
+ export interface QuestionValidation {
218
+ required?: boolean;
219
+ minLength?: number;
220
+ maxLength?: number;
221
+ pattern?: string;
222
+ custom?: (value: any) => boolean;
223
+ }
224
+ export type QuestionCategory = "project" | "entities" | "auth" | "permissions" | "pages" | "design";
225
+ export interface DiffPreview {
226
+ summary: DiffSummary;
227
+ files: FilePreview[];
228
+ registries: RegistryPreview[];
229
+ warnings?: string[];
230
+ }
231
+ export interface DiffSummary {
232
+ totalFiles: number;
233
+ newFiles: number;
234
+ modifiedFiles: number;
235
+ deletedFiles: number;
236
+ linesAdded: number;
237
+ linesRemoved: number;
238
+ }
239
+ export interface FilePreview {
240
+ path: string;
241
+ action: "create" | "modify" | "delete";
242
+ type: "schema" | "page" | "component" | "action" | "config" | "type";
243
+ preview?: string;
244
+ size?: number;
245
+ }
246
+ export interface RegistryPreview {
247
+ type: "components" | "types" | "permissions";
248
+ added: string[];
249
+ modified: string[];
250
+ removed: string[];
251
+ }
252
+ /**
253
+ * Helper to check if ASL is complete enough for generation
254
+ */
255
+ export declare function isASLComplete(asl: Partial<ASL>): asl is ASL;
256
+ /**
257
+ * Calculate completeness percentage
258
+ */
259
+ export declare function calculateCompleteness(asl: Partial<ASL>): number;
260
+ /**
261
+ * Get missing sections from ASL
262
+ */
263
+ export declare function getMissingSections(asl: Partial<ASL>): string[];
264
+ /**
265
+ * Validate entity references in pages
266
+ */
267
+ export declare function validateEntityReferences(asl: Partial<ASL>): string[];
268
+ /**
269
+ * Validate permission references
270
+ */
271
+ export declare function validatePermissionReferences(asl: Partial<ASL>): string[];
272
+ /**
273
+ * Represents a task in the inference decomposition tree
274
+ */
275
+ export interface InferenceTask {
276
+ id: string;
277
+ description: string;
278
+ category: QuestionCategory;
279
+ confidence: number;
280
+ dependencies: string[];
281
+ autoInfer: boolean;
282
+ needsConfirmation: boolean;
283
+ needsUserInput: boolean;
284
+ inference?: Partial<ASL>;
285
+ reasoning?: string;
286
+ completed: boolean;
287
+ completedAt?: Date;
288
+ }
289
+ /**
290
+ * State of the planning and inference process
291
+ */
292
+ export interface PlannerState {
293
+ tasks: InferenceTask[];
294
+ completedTasks: string[];
295
+ pendingTasks: string[];
296
+ revealedContext: ContextRevelation[];
297
+ confidenceScore: number;
298
+ learningContext: LearningContext;
299
+ checkpoints: Checkpoint[];
300
+ }
301
+ /**
302
+ * Context revealed to user during inference
303
+ */
304
+ export interface ContextRevelation {
305
+ taskId: string;
306
+ message: string;
307
+ confidence: number;
308
+ timestamp: Date;
309
+ category: QuestionCategory;
310
+ }
311
+ /**
312
+ * Session-based learning from user corrections
313
+ */
314
+ export interface LearningContext {
315
+ corrections: Correction[];
316
+ preferences: Record<string, any>;
317
+ patterns: Pattern[];
318
+ }
319
+ /**
320
+ * User correction to an inference
321
+ */
322
+ export interface Correction {
323
+ taskId: string;
324
+ inferredValue: any;
325
+ correctedValue: any;
326
+ reason?: string;
327
+ timestamp: Date;
328
+ }
329
+ /**
330
+ * Detected pattern from user behavior
331
+ */
332
+ export interface Pattern {
333
+ type: "terminology" | "structure" | "preference";
334
+ description: string;
335
+ examples: string[];
336
+ confidence: number;
337
+ }
338
+ /**
339
+ * Checkpoint summary before proceeding
340
+ */
341
+ export interface Checkpoint {
342
+ id: string;
343
+ timestamp: Date;
344
+ autoInferredTasks: InferenceTask[];
345
+ summary: CheckpointSummary;
346
+ approved: boolean;
347
+ }
348
+ /**
349
+ * Summary of checkpoint
350
+ */
351
+ export interface CheckpointSummary {
352
+ entitiesCreated: string[];
353
+ fieldsAdded: number;
354
+ rolesCreated: string[];
355
+ permissionsAdded: number;
356
+ pagesCreated: string[];
357
+ totalConfidence: number;
358
+ }
359
+ /**
360
+ * Result of an inference operation
361
+ */
362
+ export interface InferenceResult {
363
+ task: InferenceTask;
364
+ result: Partial<ASL>;
365
+ confidence: number;
366
+ reasoning: string;
367
+ critique?: SelfCritique;
368
+ }
369
+ /**
370
+ * Self-critique of an inference
371
+ */
372
+ export interface SelfCritique {
373
+ isValid: boolean;
374
+ confidence: number;
375
+ issues: CritiqueIssue[];
376
+ suggestions: string[];
377
+ }
378
+ /**
379
+ * Issue found during self-critique
380
+ */
381
+ export interface CritiqueIssue {
382
+ severity: "error" | "warning" | "info";
383
+ message: string;
384
+ field?: string;
385
+ suggestion?: string;
386
+ }
387
+ //# sourceMappingURL=asl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"asl.d.ts","sourceRoot":"","sources":["../../src/types/asl.ts"],"names":[],"mappings":"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"}