@claudetools/tools 0.9.0 → 0.9.2

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 (85) hide show
  1. package/dist/cli.js +9 -1
  2. package/dist/codedna/__tests__/examples/mongoose-example.d.ts +6 -0
  3. package/dist/codedna/__tests__/examples/mongoose-example.js +163 -0
  4. package/dist/codedna/__tests__/fixtures/typeorm-production-test.d.ts +1 -0
  5. package/dist/codedna/__tests__/fixtures/typeorm-production-test.js +231 -0
  6. package/dist/codedna/__tests__/fixtures/typeorm-test.d.ts +1 -0
  7. package/dist/codedna/__tests__/fixtures/typeorm-test.js +124 -0
  8. package/dist/codedna/__tests__/laravel-output-review.d.ts +1 -0
  9. package/dist/codedna/__tests__/laravel-output-review.js +249 -0
  10. package/dist/codedna/__tests__/mongoose-output-test.d.ts +1 -0
  11. package/dist/codedna/__tests__/mongoose-output-test.js +178 -0
  12. package/dist/codedna/examples/radix-example.d.ts +2 -0
  13. package/dist/codedna/examples/radix-example.js +259 -0
  14. package/dist/codedna/index.d.ts +5 -3
  15. package/dist/codedna/index.js +6 -3
  16. package/dist/codedna/kappa-ast.d.ts +143 -5
  17. package/dist/codedna/kappa-drizzle-generator.js +8 -5
  18. package/dist/codedna/kappa-gofiber-generator.d.ts +65 -0
  19. package/dist/codedna/kappa-gofiber-generator.js +587 -0
  20. package/dist/codedna/kappa-laravel-generator.d.ts +68 -0
  21. package/dist/codedna/kappa-laravel-generator.js +741 -0
  22. package/dist/codedna/kappa-lexer.d.ts +44 -0
  23. package/dist/codedna/kappa-lexer.js +124 -0
  24. package/dist/codedna/kappa-mantine-generator.d.ts +65 -0
  25. package/dist/codedna/kappa-mantine-generator.js +518 -0
  26. package/dist/codedna/kappa-mongoose-generator.d.ts +44 -0
  27. package/dist/codedna/kappa-mongoose-generator.js +442 -0
  28. package/dist/codedna/kappa-parser.d.ts +43 -1
  29. package/dist/codedna/kappa-parser.js +601 -0
  30. package/dist/codedna/kappa-radix-generator.d.ts +61 -0
  31. package/dist/codedna/kappa-radix-generator.js +566 -0
  32. package/dist/codedna/kappa-typeorm-generator.d.ts +59 -0
  33. package/dist/codedna/kappa-typeorm-generator.js +723 -0
  34. package/dist/codedna/kappa-vitest-generator.d.ts +85 -0
  35. package/dist/codedna/kappa-vitest-generator.js +739 -0
  36. package/dist/codedna/parser.js +26 -1
  37. package/dist/codegen/cloud-client.d.ts +160 -0
  38. package/dist/codegen/cloud-client.js +195 -0
  39. package/dist/codegen/codegen-tool.d.ts +35 -0
  40. package/dist/codegen/codegen-tool.js +312 -0
  41. package/dist/codegen/field-inference.d.ts +24 -0
  42. package/dist/codegen/field-inference.js +101 -0
  43. package/dist/codegen/form-parser.d.ts +13 -0
  44. package/dist/codegen/form-parser.js +186 -0
  45. package/dist/codegen/index.d.ts +2 -0
  46. package/dist/codegen/index.js +4 -0
  47. package/dist/codegen/natural-parser.d.ts +50 -0
  48. package/dist/codegen/natural-parser.js +769 -0
  49. package/dist/handlers/codedna-handlers.d.ts +1 -1
  50. package/dist/handlers/codegen-handlers.d.ts +20 -0
  51. package/dist/handlers/codegen-handlers.js +60 -0
  52. package/dist/handlers/kappa-handlers.d.ts +97 -0
  53. package/dist/handlers/kappa-handlers.js +408 -0
  54. package/dist/handlers/tool-handlers.js +124 -221
  55. package/dist/helpers/api-client.js +48 -3
  56. package/dist/helpers/compact-formatter.d.ts +9 -2
  57. package/dist/helpers/compact-formatter.js +26 -2
  58. package/dist/helpers/config.d.ts +7 -2
  59. package/dist/helpers/config.js +25 -10
  60. package/dist/helpers/session-validation.d.ts +1 -1
  61. package/dist/helpers/session-validation.js +2 -4
  62. package/dist/helpers/tasks.d.ts +21 -0
  63. package/dist/helpers/tasks.js +52 -0
  64. package/dist/helpers/workers.d.ts +1 -1
  65. package/dist/helpers/workers.js +19 -19
  66. package/dist/setup.d.ts +1 -0
  67. package/dist/setup.js +228 -3
  68. package/dist/templates/claude-md.d.ts +1 -1
  69. package/dist/templates/claude-md.js +37 -152
  70. package/dist/templates/orchestrator-prompt.d.ts +2 -2
  71. package/dist/templates/orchestrator-prompt.js +31 -38
  72. package/dist/templates/self-critique.d.ts +50 -0
  73. package/dist/templates/self-critique.js +209 -0
  74. package/dist/templates/worker-prompt.d.ts +3 -3
  75. package/dist/templates/worker-prompt.js +18 -18
  76. package/dist/tools.js +77 -413
  77. package/docs/codedna/generator-testing-summary.md +205 -0
  78. package/docs/codedna/radix-ui-generator.md +478 -0
  79. package/docs/kappa-gofiber-generator.md +274 -0
  80. package/docs/kappa-laravel-fixes.md +172 -0
  81. package/docs/kappa-mongoose-generator.md +322 -0
  82. package/docs/kappa-vitest-generator.md +337 -0
  83. package/package.json +1 -1
  84. package/dist/context/deduplication.test.d.ts +0 -6
  85. package/dist/context/deduplication.test.js +0 -84
@@ -3,11 +3,10 @@ export * from './types.js';
3
3
  export * from './template-engine.js';
4
4
  export * from './registry.js';
5
5
  export { type KappaSpec, type EntityBlock, type EntityField, type FieldType as KappaFieldType, type APIBlock, type APIOperation, type JourneyBlock, type PageBlock, type DesignBlock, } from './kappa-ast.js';
6
- export { tokenize } from './kappa-lexer.js';
7
- export { parse as parseKappa, parseToAST as parseKappaToAST, type ParseResult as KappaParseResult, } from './kappa-parser.js';
8
- export { validateKappaSpec, formatValidationResults } from './kappa-validator.js';
9
6
  export { wrapWithProvenance, ProvenanceGenerator } from './kappa-provenance.js';
10
7
  export { generateDrizzleSchema } from './kappa-drizzle-generator.js';
8
+ export { generateTypeORMEntities } from './kappa-typeorm-generator.js';
9
+ export { generateMongooseSchema } from './kappa-mongoose-generator.js';
11
10
  export { generateZodSchemas } from './kappa-zod-generator.js';
12
11
  export { generateTypeScriptTypes } from './kappa-types-generator.js';
13
12
  export { generateAPI, KappaAPIGenerator } from './kappa-api-generator.js';
@@ -15,6 +14,9 @@ export { generatePages, KappaPageGenerator } from './kappa-page-generator.js';
15
14
  export { generateForms, KappaFormGenerator } from './kappa-form-generator.js';
16
15
  export { generateComponents, KappaComponentGenerator } from './kappa-component-generator.js';
17
16
  export { generateDesign, KappaDesignGenerator } from './kappa-design-generator.js';
17
+ export { generateEntityTests, generateAPITests, generateTestsFromBlock, generateTests, KappaVitestGenerator, } from './kappa-vitest-generator.js';
18
+ export { generateGoFiber, generateGoFiberAPI, generateGoFiberModels, KappaGoFiberGenerator, } from './kappa-gofiber-generator.js';
19
+ export { generateLaravel, generateLaravelAPI, generateLaravelModels, KappaLaravelGenerator, } from './kappa-laravel-generator.js';
18
20
  export { BaseGenerator } from './generators/base.js';
19
21
  export { ExpressApiGenerator } from './generators/express-api.js';
20
22
  export { FastAPIGenerator } from './generators/fastapi-api.js';
@@ -6,12 +6,11 @@ export * from './parser.js';
6
6
  export * from './types.js';
7
7
  export * from './template-engine.js';
8
8
  export * from './registry.js';
9
- export { tokenize } from './kappa-lexer.js';
10
- export { parse as parseKappa, parseToAST as parseKappaToAST, } from './kappa-parser.js';
11
- export { validateKappaSpec, formatValidationResults } from './kappa-validator.js';
12
9
  export { wrapWithProvenance, ProvenanceGenerator } from './kappa-provenance.js';
13
10
  // Kappa v2.5 Generators
14
11
  export { generateDrizzleSchema } from './kappa-drizzle-generator.js';
12
+ export { generateTypeORMEntities } from './kappa-typeorm-generator.js';
13
+ export { generateMongooseSchema } from './kappa-mongoose-generator.js';
15
14
  export { generateZodSchemas } from './kappa-zod-generator.js';
16
15
  export { generateTypeScriptTypes } from './kappa-types-generator.js';
17
16
  export { generateAPI, KappaAPIGenerator } from './kappa-api-generator.js';
@@ -19,6 +18,10 @@ export { generatePages, KappaPageGenerator } from './kappa-page-generator.js';
19
18
  export { generateForms, KappaFormGenerator } from './kappa-form-generator.js';
20
19
  export { generateComponents, KappaComponentGenerator } from './kappa-component-generator.js';
21
20
  export { generateDesign, KappaDesignGenerator } from './kappa-design-generator.js';
21
+ export { generateEntityTests, generateAPITests, generateTestsFromBlock, generateTests, KappaVitestGenerator, } from './kappa-vitest-generator.js';
22
+ // Kappa v2.5 Multi-Language Generators
23
+ export { generateGoFiber, generateGoFiberAPI, generateGoFiberModels, KappaGoFiberGenerator, } from './kappa-gofiber-generator.js';
24
+ export { generateLaravel, generateLaravelAPI, generateLaravelModels, KappaLaravelGenerator, } from './kappa-laravel-generator.js';
22
25
  // Generators - Base
23
26
  export { BaseGenerator } from './generators/base.js';
24
27
  // Generators - API
@@ -46,13 +46,44 @@ export interface KappaSpec extends BaseNode {
46
46
  forms: FormBlock[];
47
47
  /** Design system configuration */
48
48
  design?: DesignBlock;
49
+ /** Test definitions */
50
+ tests: TestBlock[];
49
51
  }
50
- export type StackType = 'tanstack-start' | 'next' | 'remix' | 'sveltekit' | 'astro' | 'express' | 'hono' | 'elysia';
51
- export type DatabaseType = 'postgres' | 'mysql' | 'sqlite' | 'turso' | 'mongodb';
52
+ /**
53
+ * Target programming language for code generation
54
+ */
55
+ export type TargetLanguage = 'typescript' | 'go' | 'php' | 'csharp' | 'java' | 'kotlin' | 'python' | 'ruby' | 'dart';
56
+ /**
57
+ * Frontend/full-stack framework targets
58
+ */
59
+ export type StackType = 'tanstack-start' | 'next' | 'remix' | 'sveltekit' | 'astro' | 'express' | 'hono' | 'elysia' | 'angular' | 'solid' | 'nuxt' | 'qwik' | 'fresh' | 'fiber' | 'echo' | 'gin' | 'chi' | 'laravel' | 'symfony' | 'slim' | 'aspnet-minimal' | 'aspnet-mvc' | 'carter' | 'spring' | 'quarkus' | 'micronaut' | 'ktor' | 'django' | 'flask' | 'rails' | 'sinatra';
60
+ /**
61
+ * Database types (extended)
62
+ */
63
+ export type DatabaseType = 'postgres' | 'mysql' | 'sqlite' | 'turso' | 'mongodb' | 'sqlserver' | 'oracle' | 'cockroachdb' | 'planetscale';
64
+ /**
65
+ * ORM/Database library types
66
+ */
67
+ export type ORMType = 'drizzle' | 'prisma' | 'typeorm' | 'sequelize' | 'mongoose' | 'kysely' | 'mikroorm' | 'gorm' | 'sqlc' | 'ent' | 'eloquent' | 'doctrine' | 'efcore' | 'dapper' | 'hibernate' | 'jooq' | 'mybatis' | 'sqlalchemy' | 'django-orm' | 'activerecord';
52
68
  export type AuthType = 'jwt' | 'session' | 'oauth';
53
- export type UILibrary = 'shadcn' | 'mui' | 'chakra' | 'tailwind-only';
54
69
  /**
55
- * Project configuration block
70
+ * UI component library types (extended)
71
+ */
72
+ export type UILibrary = 'shadcn' | 'mui' | 'chakra' | 'tailwind-only' | 'radix' | 'mantine' | 'headless' | 'antd' | 'daisy' | 'ark' | 'park';
73
+ /**
74
+ * API framework types (for explicit API generation)
75
+ */
76
+ export type APIFramework = 'express' | 'hono' | 'elysia' | 'fastify' | 'trpc' | 'nestjs' | 'fastapi' | 'django-rest' | 'flask-restful' | 'fiber' | 'echo' | 'gin' | 'chi' | 'laravel' | 'symfony' | 'aspnet' | 'spring' | 'quarkus';
77
+ /**
78
+ * Testing framework types
79
+ */
80
+ export type TestFramework = 'vitest' | 'jest' | 'playwright' | 'cypress' | 'testing-library' | 'msw' | 'phpunit' | 'pytest' | 'rspec' | 'junit' | 'go-test';
81
+ /**
82
+ * Test type classification
83
+ */
84
+ export type TestType = 'unit' | 'integration' | 'e2e' | 'component' | 'api';
85
+ /**
86
+ * Project configuration block (extended for multi-language support)
56
87
  */
57
88
  export interface ProjectBlock extends BaseNode {
58
89
  kind: 'ProjectBlock';
@@ -60,14 +91,22 @@ export interface ProjectBlock extends BaseNode {
60
91
  name: string;
61
92
  /** Semantic version */
62
93
  version?: string;
94
+ /** Target programming language (default: typescript) */
95
+ language?: TargetLanguage;
63
96
  /** Target stack/framework */
64
97
  stack: StackType;
65
98
  /** Database type */
66
99
  database?: DatabaseType;
100
+ /** ORM/database library */
101
+ orm?: ORMType;
67
102
  /** Authentication strategy */
68
103
  auth?: AuthType;
69
104
  /** UI component library */
70
105
  ui?: UILibrary;
106
+ /** API framework (if different from stack) */
107
+ api?: APIFramework;
108
+ /** Testing framework */
109
+ testing?: TestFramework;
71
110
  }
72
111
  export type HashAlgorithm = 'argon2id' | 'bcrypt';
73
112
  export interface HashConfig extends BaseNode {
@@ -517,10 +556,109 @@ export interface DesignBlock extends BaseNode {
517
556
  shadows?: ShadowConfig;
518
557
  motion?: MotionConfig;
519
558
  }
559
+ /**
560
+ * Test assertion types
561
+ */
562
+ export type AssertionType = 'equals' | 'notEquals' | 'contains' | 'matches' | 'throws' | 'resolves' | 'rejects' | 'truthy' | 'falsy' | 'defined' | 'undefined' | 'null' | 'instanceOf' | 'lengthOf' | 'deepEquals';
563
+ /**
564
+ * Mock configuration for tests
565
+ */
566
+ export interface TestMock extends BaseNode {
567
+ kind: 'TestMock';
568
+ /** Module or function to mock */
569
+ target: string;
570
+ /** Mock implementation or return value */
571
+ implementation?: string;
572
+ /** Return value for simple mocks */
573
+ returns?: string;
574
+ }
575
+ /**
576
+ * Test assertion
577
+ */
578
+ export interface TestAssertion extends BaseNode {
579
+ kind: 'TestAssertion';
580
+ /** What to test (expression) */
581
+ actual: string;
582
+ /** Assertion type */
583
+ type: AssertionType;
584
+ /** Expected value (for comparison assertions) */
585
+ expected?: string;
586
+ /** Optional message on failure */
587
+ message?: string;
588
+ }
589
+ /**
590
+ * Individual test case
591
+ */
592
+ export interface TestCase extends BaseNode {
593
+ kind: 'TestCase';
594
+ /** Test description */
595
+ name: string;
596
+ /** Setup code (arrange) */
597
+ setup?: string[];
598
+ /** Action to perform (act) */
599
+ action: string;
600
+ /** Assertions to verify (assert) */
601
+ assertions: TestAssertion[];
602
+ /** Cleanup code */
603
+ teardown?: string[];
604
+ /** Skip this test */
605
+ skip?: boolean;
606
+ /** Only run this test */
607
+ only?: boolean;
608
+ /** Expected to fail */
609
+ todo?: boolean;
610
+ /** Timeout in ms */
611
+ timeout?: number;
612
+ }
613
+ /**
614
+ * Test suite (describe block)
615
+ */
616
+ export interface TestSuite extends BaseNode {
617
+ kind: 'TestSuite';
618
+ /** Suite description */
619
+ name: string;
620
+ /** Before all tests */
621
+ beforeAll?: string[];
622
+ /** After all tests */
623
+ afterAll?: string[];
624
+ /** Before each test */
625
+ beforeEach?: string[];
626
+ /** After each test */
627
+ afterEach?: string[];
628
+ /** Mocks for this suite */
629
+ mocks: TestMock[];
630
+ /** Test cases */
631
+ tests: TestCase[];
632
+ /** Nested suites */
633
+ suites: TestSuite[];
634
+ }
635
+ /**
636
+ * Test block - defines tests for an entity or API
637
+ */
638
+ export interface TestBlock extends BaseNode {
639
+ kind: 'TestBlock';
640
+ /** Test suite name */
641
+ name: string;
642
+ /** Target entity or API being tested */
643
+ target: string;
644
+ /** Testing framework */
645
+ framework: TestFramework;
646
+ /** Test type */
647
+ type: TestType;
648
+ /** Root test suite */
649
+ suite: TestSuite;
650
+ /** Coverage requirements */
651
+ coverage?: {
652
+ statements?: number;
653
+ branches?: number;
654
+ functions?: number;
655
+ lines?: number;
656
+ };
657
+ }
520
658
  /**
521
659
  * All possible AST node types
522
660
  */
523
- export type KappaNode = KappaSpec | ProjectBlock | AuthBlock | EntityBlock | APIBlock | JourneyBlock | PageBlock | ComponentBlock | FormBlock | DesignBlock | EntityField | EntityRelationship | Capability | LifecycleHook | LifecycleAction | EntityIndex | APIOperation | APIParameter | APIReturnType | CRUDShorthand | JourneyStep | JourneyRecovery | PageLoader | PageAction | PageLayout | ComponentProp | ComponentStructure | ComponentVariant | CompoundPart | FormField | FormFieldOption | FormSubmit | FormLayoutRow | ColorPalette | TypographyConfig | SpacingConfig | BorderConfig | ShadowConfig | MotionConfig | HashConfig | JWTConfig | SessionConfig;
661
+ export type KappaNode = KappaSpec | ProjectBlock | AuthBlock | EntityBlock | APIBlock | JourneyBlock | PageBlock | ComponentBlock | FormBlock | DesignBlock | TestBlock | EntityField | EntityRelationship | Capability | LifecycleHook | LifecycleAction | EntityIndex | APIOperation | APIParameter | APIReturnType | CRUDShorthand | JourneyStep | JourneyRecovery | PageLoader | PageAction | PageLayout | ComponentProp | ComponentStructure | ComponentVariant | CompoundPart | FormField | FormFieldOption | FormSubmit | FormLayoutRow | ColorPalette | TypographyConfig | SpacingConfig | BorderConfig | ShadowConfig | MotionConfig | HashConfig | JWTConfig | SessionConfig | TestMock | TestAssertion | TestCase | TestSuite;
524
662
  /**
525
663
  * Extract node type from kind string
526
664
  */
@@ -130,10 +130,6 @@ export class KappaDrizzleGenerator {
130
130
  }
131
131
  // Always include table function
132
132
  const imports = [this.getTableFunction(), ...Array.from(columnTypes).sort()];
133
- // Add relations import if needed
134
- if (this.generateRelations) {
135
- imports.push('relations');
136
- }
137
133
  return `import { ${imports.join(', ')} } from '${importPath}';`;
138
134
  }
139
135
  getTableFunction() {
@@ -181,7 +177,14 @@ export class KappaDrizzleGenerator {
181
177
  }
182
178
  if (modifiers.includes('auto')) {
183
179
  if (type.kind === 'primitive' && type.type === 'uuid') {
184
- chainMethods.push('defaultRandom()');
180
+ // PostgreSQL: .defaultRandom() is built-in
181
+ // SQLite/MySQL: use $defaultFn with crypto.randomUUID()
182
+ if (this.dialect === 'postgresql') {
183
+ chainMethods.push('defaultRandom()');
184
+ }
185
+ else {
186
+ chainMethods.push('$defaultFn(() => crypto.randomUUID())');
187
+ }
185
188
  }
186
189
  else if (type.kind === 'primitive' && (type.type === 'int' || type.type === 'timestamp')) {
187
190
  if (type.type === 'timestamp') {
@@ -0,0 +1,65 @@
1
+ import type { APIBlock, EntityBlock } from './kappa-ast.js';
2
+ export interface GoFiberGeneratorOptions {
3
+ /** Package name (default: 'main') */
4
+ packageName?: string;
5
+ /** Add provenance comments (default: true) */
6
+ provenance?: boolean;
7
+ /** Generate GORM models (default: true) */
8
+ gorm?: boolean;
9
+ /** Generate validation tags (default: true) */
10
+ validation?: boolean;
11
+ /** Base path for routes (default: '/api') */
12
+ basePath?: string;
13
+ /** Module path for imports */
14
+ modulePath?: string;
15
+ }
16
+ export interface GeneratedGoFiles {
17
+ /** Main routes file */
18
+ routes: string;
19
+ /** GORM models */
20
+ models?: string;
21
+ /** Request/Response types */
22
+ types?: string;
23
+ /** Handlers file */
24
+ handlers?: string;
25
+ }
26
+ export declare class KappaGoFiberGenerator {
27
+ private packageName;
28
+ private provenance;
29
+ private gorm;
30
+ private validation;
31
+ private basePath;
32
+ private modulePath;
33
+ constructor(options?: GoFiberGeneratorOptions);
34
+ generateFromAPIs(apis: APIBlock[]): GeneratedGoFiles;
35
+ generateFromEntities(entities: EntityBlock[]): GeneratedGoFiles;
36
+ generateAll(apis: APIBlock[], entities: EntityBlock[]): GeneratedGoFiles;
37
+ private generateRoutes;
38
+ private isRouteFromAPI;
39
+ private extractRoutes;
40
+ private operationToRoute;
41
+ private crudToRoutes;
42
+ private inferMethod;
43
+ private generateHandlers;
44
+ private generateHandler;
45
+ private generateListHandler;
46
+ private generateCreateHandler;
47
+ private generateReadHandler;
48
+ private generateUpdateHandler;
49
+ private generateDeleteHandler;
50
+ private extractEntityName;
51
+ private generateModels;
52
+ private generateModel;
53
+ private generateModelField;
54
+ private fieldToGoType;
55
+ private generateFieldTags;
56
+ private generateRequestTypes;
57
+ private generateRequestType;
58
+ private toPascalCase;
59
+ private toKebabCase;
60
+ private toSnakeCase;
61
+ private pluralizeTableName;
62
+ }
63
+ export declare function generateGoFiberAPI(apis: APIBlock[], options?: GoFiberGeneratorOptions): GeneratedGoFiles;
64
+ export declare function generateGoFiberModels(entities: EntityBlock[], options?: GoFiberGeneratorOptions): string;
65
+ export declare function generateGoFiber(apis: APIBlock[], entities: EntityBlock[], options?: GoFiberGeneratorOptions): GeneratedGoFiles;