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.
- package/README.md +531 -144
- package/dist/README.md +531 -144
- package/dist/cli.js +14 -5
- package/dist/cli.js.map +1 -1
- package/dist/commands/generate.d.ts.map +1 -1
- package/dist/commands/generate.js +19 -47
- package/dist/commands/generate.js.map +1 -1
- package/dist/commands/init-interactive.d.ts +147 -0
- package/dist/commands/init-interactive.d.ts.map +1 -0
- package/dist/commands/init-interactive.js +917 -0
- package/dist/commands/init-interactive.js.map +1 -0
- package/dist/config/shadcn-catalog.json +93 -0
- package/dist/core/brain/BrainClient.d.ts +1 -1
- package/dist/core/brain/BrainClient.d.ts.map +1 -1
- package/dist/core/brain/BrainClient.js +5 -5
- package/dist/core/brain/BrainClient.js.map +1 -1
- package/dist/doctor/DoctorEngine.d.ts.map +1 -1
- package/dist/doctor/DoctorEngine.js +21 -11
- package/dist/doctor/DoctorEngine.js.map +1 -1
- package/dist/doctor/rules/dead-code-rules.d.ts.map +1 -1
- package/dist/doctor/rules/dead-code-rules.js +33 -0
- package/dist/doctor/rules/dead-code-rules.js.map +1 -1
- package/dist/doctor/rules/index.d.ts +3 -1
- package/dist/doctor/rules/index.d.ts.map +1 -1
- package/dist/doctor/rules/index.js +7 -1
- package/dist/doctor/rules/index.js.map +1 -1
- package/dist/doctor/rules/instantdb-rules.d.ts +3 -0
- package/dist/doctor/rules/instantdb-rules.d.ts.map +1 -0
- package/dist/doctor/rules/instantdb-rules.js +544 -0
- package/dist/doctor/rules/instantdb-rules.js.map +1 -0
- package/dist/doctor/rules/nextjs-rules.d.ts.map +1 -1
- package/dist/doctor/rules/nextjs-rules.js +53 -3
- package/dist/doctor/rules/nextjs-rules.js.map +1 -1
- package/dist/doctor/rules/typescript-rules.d.ts +3 -0
- package/dist/doctor/rules/typescript-rules.d.ts.map +1 -0
- package/dist/doctor/rules/typescript-rules.js +177 -0
- package/dist/doctor/rules/typescript-rules.js.map +1 -0
- package/dist/package.json +4 -2
- package/dist/services/ComponentInferenceEngine.d.ts +66 -0
- package/dist/services/ComponentInferenceEngine.d.ts.map +1 -0
- package/dist/services/ComponentInferenceEngine.js +302 -0
- package/dist/services/ComponentInferenceEngine.js.map +1 -0
- package/dist/services/ComponentRegistry.d.ts +61 -0
- package/dist/services/ComponentRegistry.d.ts.map +1 -0
- package/dist/services/ComponentRegistry.js +128 -0
- package/dist/services/ComponentRegistry.js.map +1 -0
- package/dist/services/InferenceEngine.d.ts +41 -0
- package/dist/services/InferenceEngine.d.ts.map +1 -0
- package/dist/services/InferenceEngine.js +307 -0
- package/dist/services/InferenceEngine.js.map +1 -0
- package/dist/services/Planner.d.ts +77 -0
- package/dist/services/Planner.d.ts.map +1 -0
- package/dist/services/Planner.js +828 -0
- package/dist/services/Planner.js.map +1 -0
- package/dist/services/ProjectScanner.d.ts.map +1 -1
- package/dist/services/ProjectScanner.js +15 -1
- package/dist/services/ProjectScanner.js.map +1 -1
- package/dist/services/ScaffoldEngine.d.ts +87 -0
- package/dist/services/ScaffoldEngine.d.ts.map +1 -0
- package/dist/services/ScaffoldEngine.js +409 -0
- package/dist/services/ScaffoldEngine.js.map +1 -0
- package/dist/services/ScaffoldPreview.d.ts +62 -0
- package/dist/services/ScaffoldPreview.d.ts.map +1 -0
- package/dist/services/ScaffoldPreview.js +292 -0
- package/dist/services/ScaffoldPreview.js.map +1 -0
- package/dist/services/TemplateEngine.d.ts +136 -0
- package/dist/services/TemplateEngine.d.ts.map +1 -0
- package/dist/services/TemplateEngine.js +483 -0
- package/dist/services/TemplateEngine.js.map +1 -0
- package/dist/services/TemplateHelpers.d.ts +9 -0
- package/dist/services/TemplateHelpers.d.ts.map +1 -0
- package/dist/services/TemplateHelpers.js +212 -0
- package/dist/services/TemplateHelpers.js.map +1 -0
- package/dist/templates/actions/auth-actions.ts.hbs +140 -0
- package/dist/templates/actions/crud-actions.ts.hbs +113 -0
- package/dist/templates/components/auth/login-form.tsx.hbs +67 -0
- package/dist/templates/components/auth/login-skeleton.tsx.hbs +24 -0
- package/dist/templates/components/auth/register-form.tsx.hbs +116 -0
- package/dist/templates/components/crud/entity-card.tsx.hbs +71 -0
- package/dist/templates/components/crud/entity-form.tsx.hbs +158 -0
- package/dist/templates/components/crud/entity-skeleton.tsx.hbs +90 -0
- package/dist/templates/components/crud/entity-table.tsx.hbs +129 -0
- package/dist/templates/components/ui/button.tsx.hbs +53 -0
- package/dist/templates/components/ui/card.tsx.hbs +68 -0
- package/dist/templates/components/ui/input.tsx.hbs +33 -0
- package/dist/templates/components/ui/label.tsx.hbs +20 -0
- package/dist/templates/components/ui/skeleton.tsx.hbs +15 -0
- package/dist/templates/components/ui/theme-provider.tsx.hbs +66 -0
- package/dist/templates/components/ui/theme-toggle.tsx.hbs +30 -0
- package/dist/templates/config/app.css.hbs +150 -0
- package/dist/templates/layouts/dashboard-layout.tsx.hbs +69 -0
- package/dist/templates/layouts/error.tsx.hbs +51 -0
- package/dist/templates/layouts/loading.tsx.hbs +22 -0
- package/dist/templates/layouts/not-found.tsx.hbs +24 -0
- package/dist/templates/layouts/root-layout.tsx.hbs +40 -0
- package/dist/templates/lib/instant.ts.hbs +19 -0
- package/dist/templates/lib/utils.ts.hbs +24 -0
- package/dist/templates/pages/auth/login-page.tsx.hbs +30 -0
- package/dist/templates/pages/auth/register-page.tsx.hbs +38 -0
- package/dist/templates/pages/crud/create-page.tsx.hbs +42 -0
- package/dist/templates/pages/crud/detail-page.tsx.hbs +90 -0
- package/dist/templates/pages/crud/list-page.tsx.hbs +60 -0
- package/dist/templates/pages/crud/loading.tsx.hbs +13 -0
- package/dist/templates/pages/landing-page.tsx.hbs +111 -0
- package/dist/types/asl.d.ts +387 -0
- package/dist/types/asl.d.ts.map +1 -0
- package/dist/types/asl.js +139 -0
- package/dist/types/asl.js.map +1 -0
- package/dist/types/living-context.d.ts +1 -1
- package/dist/types/living-context.d.ts.map +1 -1
- package/dist/utils/FileGenerator.js +3 -3
- package/dist/utils/FileGenerator.js.map +1 -1
- package/dist/utils/generateTypesFromSchema.d.ts +47 -0
- package/dist/utils/generateTypesFromSchema.d.ts.map +1 -0
- package/dist/utils/generateTypesFromSchema.js +298 -0
- package/dist/utils/generateTypesFromSchema.js.map +1 -0
- 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>© {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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"}
|