@contractspec/bundle.workspace 1.52.0 → 1.53.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.
Files changed (149) hide show
  1. package/dist/adapters/ai.d.mts +2 -2
  2. package/dist/adapters/ai.d.mts.map +1 -1
  3. package/dist/adapters/ai.mjs.map +1 -1
  4. package/dist/adapters/factory.d.mts +2 -2
  5. package/dist/adapters/factory.d.mts.map +1 -1
  6. package/dist/adapters/factory.mjs +3 -14
  7. package/dist/adapters/factory.mjs.map +1 -1
  8. package/dist/adapters/fs.bun.d.mts +11 -0
  9. package/dist/adapters/fs.bun.d.mts.map +1 -0
  10. package/dist/adapters/fs.bun.mjs +81 -0
  11. package/dist/adapters/fs.bun.mjs.map +1 -0
  12. package/dist/adapters/fs.d.mts +2 -8
  13. package/dist/adapters/fs.d.mts.map +1 -1
  14. package/dist/adapters/fs.mjs +4 -88
  15. package/dist/adapters/fs.mjs.map +1 -1
  16. package/dist/adapters/fs.node.d.mts +11 -0
  17. package/dist/adapters/fs.node.d.mts.map +1 -0
  18. package/dist/adapters/fs.node.mjs +84 -0
  19. package/dist/adapters/fs.node.mjs.map +1 -0
  20. package/dist/adapters/index.d.mts +3 -1
  21. package/dist/adapters/index.mjs +3 -1
  22. package/dist/ai/agents/index.d.mts +6 -0
  23. package/dist/ai/agents/orchestrator.d.mts +4 -4
  24. package/dist/ai/agents/orchestrator.d.mts.map +1 -1
  25. package/dist/ai/agents/orchestrator.mjs +5 -0
  26. package/dist/ai/agents/orchestrator.mjs.map +1 -1
  27. package/dist/ai/agents/simple-agent.d.mts +2 -2
  28. package/dist/ai/agents/simple-agent.d.mts.map +1 -1
  29. package/dist/ai/agents/simple-agent.mjs.map +1 -1
  30. package/dist/ai/agents/types.d.mts +4 -5
  31. package/dist/ai/agents/types.d.mts.map +1 -1
  32. package/dist/ai/agents/unified-adapter.mjs +70 -0
  33. package/dist/ai/agents/unified-adapter.mjs.map +1 -0
  34. package/dist/ai/index.d.mts +3 -3
  35. package/dist/ai/index.mjs +1 -2
  36. package/dist/ai/prompts/spec-creation.mjs +1 -1
  37. package/dist/ai/providers.d.mts +3 -18
  38. package/dist/ai/providers.d.mts.map +1 -1
  39. package/dist/ai/providers.mjs +2 -22
  40. package/dist/ai/providers.mjs.map +1 -1
  41. package/dist/index.d.mts +13 -8
  42. package/dist/index.mjs +11 -7
  43. package/dist/ports/ai.d.mts +7 -3
  44. package/dist/ports/ai.d.mts.map +1 -1
  45. package/dist/ports/index.d.mts +1 -1
  46. package/dist/registry.d.mts +15 -0
  47. package/dist/registry.d.mts.map +1 -0
  48. package/dist/registry.mjs +19 -0
  49. package/dist/registry.mjs.map +1 -0
  50. package/dist/services/action-drift/service.d.mts +11 -0
  51. package/dist/services/action-drift/service.d.mts.map +1 -0
  52. package/dist/services/action-drift/service.mjs +43 -0
  53. package/dist/services/action-drift/service.mjs.map +1 -0
  54. package/dist/services/action-drift/types.d.mts +23 -0
  55. package/dist/services/action-drift/types.d.mts.map +1 -0
  56. package/dist/services/action-pr/service.d.mts +17 -0
  57. package/dist/services/action-pr/service.d.mts.map +1 -0
  58. package/dist/services/action-pr/service.mjs +205 -0
  59. package/dist/services/action-pr/service.mjs.map +1 -0
  60. package/dist/services/action-pr/types.d.mts +67 -0
  61. package/dist/services/action-pr/types.d.mts.map +1 -0
  62. package/dist/services/build.d.mts +3 -2
  63. package/dist/services/build.d.mts.map +1 -1
  64. package/dist/services/build.mjs.map +1 -1
  65. package/dist/services/ci-check/checks/coverage.mjs +30 -41
  66. package/dist/services/ci-check/checks/coverage.mjs.map +1 -1
  67. package/dist/services/ci-check/checks/handlers.mjs +3 -3
  68. package/dist/services/ci-check/checks/handlers.mjs.map +1 -1
  69. package/dist/services/ci-check/checks/implementation.mjs +1 -1
  70. package/dist/services/ci-check/checks/implementation.mjs.map +1 -1
  71. package/dist/services/ci-check/checks/structure.mjs +5 -6
  72. package/dist/services/ci-check/checks/structure.mjs.map +1 -1
  73. package/dist/services/ci-check/checks/test-refs.mjs +19 -29
  74. package/dist/services/ci-check/checks/test-refs.mjs.map +1 -1
  75. package/dist/services/ci-check/checks/tests.mjs +3 -3
  76. package/dist/services/ci-check/checks/tests.mjs.map +1 -1
  77. package/dist/services/ci-check/ci-check-service.d.mts.map +1 -1
  78. package/dist/services/ci-check/ci-check-service.mjs +7 -12
  79. package/dist/services/ci-check/ci-check-service.mjs.map +1 -1
  80. package/dist/services/config.d.mts +3 -3
  81. package/dist/services/config.d.mts.map +1 -1
  82. package/dist/services/config.mjs +12 -34
  83. package/dist/services/config.mjs.map +1 -1
  84. package/dist/services/create/ai-generator.d.mts +3 -3
  85. package/dist/services/create/ai-generator.d.mts.map +1 -1
  86. package/dist/services/create/ai-generator.mjs +1 -1
  87. package/dist/services/create/ai-generator.mjs.map +1 -1
  88. package/dist/services/create/index.d.mts +4 -4
  89. package/dist/services/create/index.d.mts.map +1 -1
  90. package/dist/services/create/index.mjs.map +1 -1
  91. package/dist/services/docs/docs-service.mjs +16 -13
  92. package/dist/services/docs/docs-service.mjs.map +1 -1
  93. package/dist/services/extract.mjs +2 -10
  94. package/dist/services/extract.mjs.map +1 -1
  95. package/dist/services/implementation/discovery.d.mts.map +1 -1
  96. package/dist/services/implementation/discovery.mjs +6 -14
  97. package/dist/services/implementation/discovery.mjs.map +1 -1
  98. package/dist/services/implementation/index.d.mts +1 -1
  99. package/dist/services/implementation/index.mjs +1 -1
  100. package/dist/services/implementation/resolver/index.d.mts +8 -6
  101. package/dist/services/implementation/resolver/index.d.mts.map +1 -1
  102. package/dist/services/implementation/resolver/index.mjs +33 -31
  103. package/dist/services/implementation/resolver/index.mjs.map +1 -1
  104. package/dist/services/implementation/resolver/parsers.d.mts +1 -5
  105. package/dist/services/implementation/resolver/parsers.d.mts.map +1 -1
  106. package/dist/services/implementation/resolver/parsers.mjs +1 -19
  107. package/dist/services/implementation/resolver/parsers.mjs.map +1 -1
  108. package/dist/services/implementation/types.d.mts +3 -1
  109. package/dist/services/implementation/types.d.mts.map +1 -1
  110. package/dist/services/index.d.mts +5 -1
  111. package/dist/services/index.mjs +4 -2
  112. package/dist/services/list.d.mts +4 -3
  113. package/dist/services/list.d.mts.map +1 -1
  114. package/dist/services/list.mjs +4 -2
  115. package/dist/services/list.mjs.map +1 -1
  116. package/dist/services/sync.d.mts +2 -2
  117. package/dist/services/sync.d.mts.map +1 -1
  118. package/dist/services/sync.mjs.map +1 -1
  119. package/dist/services/test/test-generator-service.d.mts +1 -1
  120. package/dist/services/test/test-service.mjs +1 -1
  121. package/dist/services/validate/blueprint-validator.mjs +1 -1
  122. package/dist/services/validate/implementation-agent-validator.d.mts +2 -2
  123. package/dist/services/validate/implementation-agent-validator.d.mts.map +1 -1
  124. package/dist/services/validate/implementation-agent-validator.mjs.map +1 -1
  125. package/dist/services/validate/implementation-validator.d.mts +4 -3
  126. package/dist/services/validate/implementation-validator.d.mts.map +1 -1
  127. package/dist/services/validate/implementation-validator.mjs +4 -13
  128. package/dist/services/validate/implementation-validator.mjs.map +1 -1
  129. package/dist/services/validate/spec-validator.d.mts +1 -1
  130. package/dist/services/validate/spec-validator.d.mts.map +1 -1
  131. package/dist/services/validate/spec-validator.mjs +11 -7
  132. package/dist/services/validate/spec-validator.mjs.map +1 -1
  133. package/dist/services/validate/tenant-validator.mjs +1 -1
  134. package/dist/services/watch.d.mts +2 -2
  135. package/dist/services/watch.d.mts.map +1 -1
  136. package/dist/services/watch.mjs.map +1 -1
  137. package/dist/utils/filter.d.mts +10 -1
  138. package/dist/utils/filter.d.mts.map +1 -1
  139. package/dist/utils/filter.mjs +28 -1
  140. package/dist/utils/filter.mjs.map +1 -1
  141. package/dist/utils/index.d.mts +2 -2
  142. package/dist/utils/index.mjs +2 -1
  143. package/package.json +11 -9
  144. package/dist/ai/client.d.mts +0 -97
  145. package/dist/ai/client.d.mts.map +0 -1
  146. package/dist/ai/client.mjs +0 -189
  147. package/dist/ai/client.mjs.map +0 -1
  148. package/dist/types/config.d.mts +0 -34
  149. package/dist/types/config.d.mts.map +0 -1
@@ -1,97 +0,0 @@
1
- import { Config } from "../types/config.mjs";
2
- import { OpKind, PresentationKind } from "../types.mjs";
3
-
4
- //#region src/ai/client.d.ts
5
-
6
- /**
7
- * AI Client for spec creation and code generation
8
- */
9
- declare class AIClient {
10
- private config;
11
- constructor(config: Config);
12
- /**
13
- * Generate operation spec from natural language description
14
- */
15
- generateOperationSpec(description: string, kind: OpKind): Promise<{
16
- name: string;
17
- version: number;
18
- description: string;
19
- goal: string;
20
- context: string;
21
- stability: "experimental" | "beta" | "stable" | "deprecated";
22
- owners: string[];
23
- tags: string[];
24
- auth: "anonymous" | "user" | "admin";
25
- inputShape: string;
26
- outputShape: string;
27
- flags: string[];
28
- possibleEvents: string[];
29
- analytics: string[];
30
- }>;
31
- /**
32
- * Generate event spec from description
33
- */
34
- generateEventSpec(description: string): Promise<{
35
- name: string;
36
- version: number;
37
- description: string;
38
- stability: "experimental" | "beta" | "stable" | "deprecated";
39
- owners: string[];
40
- tags: string[];
41
- payloadShape: string;
42
- piiFields: string[];
43
- }>;
44
- /**
45
- * Generate presentation spec from description
46
- */
47
- generatePresentationSpec(description: string, kind: PresentationKind): Promise<{
48
- name: string;
49
- version: number;
50
- description: string;
51
- stability: "experimental" | "beta" | "stable" | "deprecated";
52
- owners: string[];
53
- tags: string[];
54
- componentKey?: string | undefined;
55
- propsShape?: string | undefined;
56
- content?: string | undefined;
57
- mimeType?: string | undefined;
58
- dataShape?: string | undefined;
59
- }>;
60
- /**
61
- * Generate handler implementation from spec
62
- */
63
- generateHandler(specCode: string): Promise<string>;
64
- /**
65
- * Generate React component from presentation spec
66
- */
67
- generateComponent(specCode: string): Promise<string>;
68
- /**
69
- * Generate form component from form spec
70
- */
71
- generateForm(specCode: string): Promise<string>;
72
- /**
73
- * Generate tests for implementation
74
- */
75
- generateTests(specCode: string, implementationCode: string, testType: 'handler' | 'component'): Promise<string>;
76
- /**
77
- * Stream code generation for better UX
78
- */
79
- streamCodeGeneration(prompt: string, onChunk: (text: string) => void): Promise<string>;
80
- /**
81
- * Chat with the AI model
82
- */
83
- chat(messages: {
84
- role: 'system' | 'user' | 'assistant';
85
- content: string;
86
- }[], system?: string): Promise<string>;
87
- /**
88
- * Stream chat with the AI model
89
- */
90
- streamChat(messages: {
91
- role: 'system' | 'user' | 'assistant';
92
- content: string;
93
- }[], onChunk: (text: string) => void, system?: string): Promise<string>;
94
- }
95
- //#endregion
96
- export { AIClient };
97
- //# sourceMappingURL=client.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.d.mts","names":[],"sources":["../../src/ai/client.ts"],"sourcesContent":[],"mappings":";;;;;;;AAsBA;AAC8B,cADjB,QAAA,CACiB;EAK2B,QAAA,MAAA;EAAM,WAAA,CAAA,MAAA,EALjC,MAKiC;EA6ClB;;;EAiEF,qBAAA,CAAA,WAAA,EAAA,MAAA,EAAA,IAAA,EA9Gc,MA8Gd,CAAA,EA9GoB,OA8GpB,CAAA;IAeE,IAAA,EAAA,MAAA;IAeL,OAAA,EAAA,MAAA;IAmBnC,WAAA,EAAA,MAAA;IAkBA,IAAA,EAAA,MAAA;IAyBA,OAAA,EAAA,MAAA;IAmBA,SAAA,EAAA,cAAA,GAAA,MAAA,GAAA,QAAA,GAAA,YAAA;IAAO,MAAA,EAAA,MAAA,EAAA;;;;;;;;;;;;0CAhLiC;;;;;;;;;;;;;sDA+Be,mBAAgB;;;;;;;;;;;;;;;;qCAkCjC;;;;uCAeE;;;;kCAeL;;;;kGAmBnC;;;;yEAkBA;;;;;;;yBAyBA;;;;;;;0DAmBA"}
@@ -1,189 +0,0 @@
1
- import { getAIProvider } from "./providers.mjs";
2
- import { buildComponentPrompt, buildFormPrompt, buildHandlerPrompt, buildTestPrompt, getCodeGenSystemPrompt } from "./prompts/code-generation.mjs";
3
- import { buildEventSpecPrompt, buildOperationSpecPrompt, buildPresentationSpecPrompt, getSystemPrompt } from "./prompts/spec-creation.mjs";
4
- import { generateObject, generateText, streamText } from "ai";
5
- import * as z$1 from "zod";
6
-
7
- //#region src/ai/client.ts
8
- /**
9
- * AI Client for spec creation and code generation
10
- */
11
- var AIClient = class {
12
- constructor(config) {
13
- this.config = config;
14
- }
15
- /**
16
- * Generate operation spec from natural language description
17
- */
18
- async generateOperationSpec(description, kind) {
19
- return (await generateObject({
20
- model: getAIProvider(this.config),
21
- schema: z$1.object({
22
- name: z$1.string().describe("Dot notation name like \"domain.operation\""),
23
- version: z$1.number().int().positive().default(1),
24
- description: z$1.string().describe("Clear, concise summary"),
25
- goal: z$1.string().describe("Business purpose"),
26
- context: z$1.string().describe("Background and constraints"),
27
- stability: z$1.enum([
28
- "experimental",
29
- "beta",
30
- "stable",
31
- "deprecated"
32
- ]).default("beta"),
33
- owners: z$1.array(z$1.string()).describe("Team/person owners with @ prefix"),
34
- tags: z$1.array(z$1.string()).describe("Categorization tags"),
35
- auth: z$1.enum([
36
- "anonymous",
37
- "user",
38
- "admin"
39
- ]).describe("Required auth level"),
40
- inputShape: z$1.string().describe("Description of input structure"),
41
- outputShape: z$1.string().describe("Description of output structure"),
42
- flags: z$1.array(z$1.string()).describe("Feature flags").default([]),
43
- possibleEvents: z$1.array(z$1.string()).describe("Events this may emit").default([]),
44
- analytics: z$1.array(z$1.string()).describe("Analytics events to track").default([])
45
- }),
46
- prompt: buildOperationSpecPrompt(description, kind),
47
- system: getSystemPrompt()
48
- })).object;
49
- }
50
- /**
51
- * Generate event spec from description
52
- */
53
- async generateEventSpec(description) {
54
- return (await generateObject({
55
- model: getAIProvider(this.config),
56
- schema: z$1.object({
57
- name: z$1.string().describe("Dot notation name like \"domain.event_name\""),
58
- version: z$1.number().int().positive().default(1),
59
- description: z$1.string().describe("When this event is emitted"),
60
- stability: z$1.enum([
61
- "experimental",
62
- "beta",
63
- "stable",
64
- "deprecated"
65
- ]).default("beta"),
66
- owners: z$1.array(z$1.string()).default([]),
67
- tags: z$1.array(z$1.string()).default([]),
68
- payloadShape: z$1.string().describe("Description of event payload"),
69
- piiFields: z$1.array(z$1.string()).describe("PII field paths").default([])
70
- }),
71
- prompt: buildEventSpecPrompt(description),
72
- system: getSystemPrompt()
73
- })).object;
74
- }
75
- /**
76
- * Generate presentation spec from description
77
- */
78
- async generatePresentationSpec(description, kind) {
79
- return (await generateObject({
80
- model: getAIProvider(this.config),
81
- schema: z$1.object({
82
- name: z$1.string(),
83
- version: z$1.number().int().positive().default(1),
84
- description: z$1.string(),
85
- stability: z$1.enum([
86
- "experimental",
87
- "beta",
88
- "stable",
89
- "deprecated"
90
- ]).default("beta"),
91
- owners: z$1.array(z$1.string()).default([]),
92
- tags: z$1.array(z$1.string()).default([]),
93
- componentKey: z$1.string().optional(),
94
- propsShape: z$1.string().optional(),
95
- content: z$1.string().optional(),
96
- mimeType: z$1.string().optional(),
97
- dataShape: z$1.string().optional()
98
- }),
99
- prompt: buildPresentationSpecPrompt(description, kind),
100
- system: getSystemPrompt()
101
- })).object;
102
- }
103
- /**
104
- * Generate handler implementation from spec
105
- */
106
- async generateHandler(specCode) {
107
- return (await generateText({
108
- model: getAIProvider(this.config),
109
- prompt: buildHandlerPrompt(specCode),
110
- system: getCodeGenSystemPrompt()
111
- })).text;
112
- }
113
- /**
114
- * Generate React component from presentation spec
115
- */
116
- async generateComponent(specCode) {
117
- return (await generateText({
118
- model: getAIProvider(this.config),
119
- prompt: buildComponentPrompt(specCode),
120
- system: getCodeGenSystemPrompt()
121
- })).text;
122
- }
123
- /**
124
- * Generate form component from form spec
125
- */
126
- async generateForm(specCode) {
127
- return (await generateText({
128
- model: getAIProvider(this.config),
129
- prompt: buildFormPrompt(specCode),
130
- system: getCodeGenSystemPrompt()
131
- })).text;
132
- }
133
- /**
134
- * Generate tests for implementation
135
- */
136
- async generateTests(specCode, implementationCode, testType) {
137
- return (await generateText({
138
- model: getAIProvider(this.config),
139
- prompt: buildTestPrompt(specCode, implementationCode, testType),
140
- system: getCodeGenSystemPrompt()
141
- })).text;
142
- }
143
- /**
144
- * Stream code generation for better UX
145
- */
146
- async streamCodeGeneration(prompt, onChunk) {
147
- const result = await streamText({
148
- model: getAIProvider(this.config),
149
- prompt,
150
- system: getCodeGenSystemPrompt()
151
- });
152
- let fullText = "";
153
- for await (const chunk of result.textStream) {
154
- fullText += chunk;
155
- onChunk(chunk);
156
- }
157
- return fullText;
158
- }
159
- /**
160
- * Chat with the AI model
161
- */
162
- async chat(messages, system) {
163
- return (await generateText({
164
- model: getAIProvider(this.config),
165
- messages,
166
- system: system || getSystemPrompt()
167
- })).text;
168
- }
169
- /**
170
- * Stream chat with the AI model
171
- */
172
- async streamChat(messages, onChunk, system) {
173
- const result = await streamText({
174
- model: getAIProvider(this.config),
175
- messages,
176
- system: system || getSystemPrompt()
177
- });
178
- let fullText = "";
179
- for await (const chunk of result.textStream) {
180
- fullText += chunk;
181
- onChunk(chunk);
182
- }
183
- return fullText;
184
- }
185
- };
186
-
187
- //#endregion
188
- export { AIClient };
189
- //# sourceMappingURL=client.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.mjs","names":["z"],"sources":["../../src/ai/client.ts"],"sourcesContent":["import { generateObject, generateText, streamText } from 'ai';\nimport * as z from 'zod';\nimport { getAIProvider } from './providers';\nimport type { Config } from '../types/config';\nimport {\n buildEventSpecPrompt,\n buildOperationSpecPrompt,\n buildPresentationSpecPrompt,\n getSystemPrompt,\n} from './prompts/spec-creation';\nimport {\n buildComponentPrompt,\n buildFormPrompt,\n buildHandlerPrompt,\n buildTestPrompt,\n getCodeGenSystemPrompt,\n} from './prompts/code-generation';\nimport type { OpKind, PresentationKind } from '../types';\n\n/**\n * AI Client for spec creation and code generation\n */\nexport class AIClient {\n constructor(private config: Config) {}\n\n /**\n * Generate operation spec from natural language description\n */\n async generateOperationSpec(description: string, kind: OpKind) {\n const model = getAIProvider(this.config);\n\n const schema = z.object({\n name: z.string().describe('Dot notation name like \"domain.operation\"'),\n version: z.number().int().positive().default(1),\n description: z.string().describe('Clear, concise summary'),\n goal: z.string().describe('Business purpose'),\n context: z.string().describe('Background and constraints'),\n stability: z\n .enum(['experimental', 'beta', 'stable', 'deprecated'])\n .default('beta'),\n owners: z.array(z.string()).describe('Team/person owners with @ prefix'),\n tags: z.array(z.string()).describe('Categorization tags'),\n auth: z\n .enum(['anonymous', 'user', 'admin'])\n .describe('Required auth level'),\n inputShape: z.string().describe('Description of input structure'),\n outputShape: z.string().describe('Description of output structure'),\n flags: z.array(z.string()).describe('Feature flags').default([]),\n possibleEvents: z\n .array(z.string())\n .describe('Events this may emit')\n .default([]),\n analytics: z\n .array(z.string())\n .describe('Analytics events to track')\n .default([]),\n });\n\n const prompt = buildOperationSpecPrompt(description, kind);\n\n const result = await generateObject({\n model,\n schema,\n prompt,\n system: getSystemPrompt(),\n });\n\n return result.object;\n }\n\n /**\n * Generate event spec from description\n */\n async generateEventSpec(description: string) {\n const model = getAIProvider(this.config);\n\n const schema = z.object({\n name: z.string().describe('Dot notation name like \"domain.event_name\"'),\n version: z.number().int().positive().default(1),\n description: z.string().describe('When this event is emitted'),\n stability: z\n .enum(['experimental', 'beta', 'stable', 'deprecated'])\n .default('beta'),\n owners: z.array(z.string()).default([]),\n tags: z.array(z.string()).default([]),\n payloadShape: z.string().describe('Description of event payload'),\n piiFields: z.array(z.string()).describe('PII field paths').default([]),\n });\n\n const prompt = buildEventSpecPrompt(description);\n\n const result = await generateObject({\n model,\n schema,\n prompt,\n system: getSystemPrompt(),\n });\n\n return result.object;\n }\n\n /**\n * Generate presentation spec from description\n */\n async generatePresentationSpec(description: string, kind: PresentationKind) {\n const model = getAIProvider(this.config);\n\n const schema = z.object({\n name: z.string(),\n version: z.number().int().positive().default(1),\n description: z.string(),\n stability: z\n .enum(['experimental', 'beta', 'stable', 'deprecated'])\n .default('beta'),\n owners: z.array(z.string()).default([]),\n tags: z.array(z.string()).default([]),\n componentKey: z.string().optional(),\n propsShape: z.string().optional(),\n content: z.string().optional(),\n mimeType: z.string().optional(),\n dataShape: z.string().optional(),\n });\n\n const prompt = buildPresentationSpecPrompt(description, kind);\n\n const result = await generateObject({\n model,\n schema,\n prompt,\n system: getSystemPrompt(),\n });\n\n return result.object;\n }\n\n /**\n * Generate handler implementation from spec\n */\n async generateHandler(specCode: string): Promise<string> {\n const model = getAIProvider(this.config);\n\n const result = await generateText({\n model,\n prompt: buildHandlerPrompt(specCode),\n system: getCodeGenSystemPrompt(),\n });\n\n return result.text;\n }\n\n /**\n * Generate React component from presentation spec\n */\n async generateComponent(specCode: string): Promise<string> {\n const model = getAIProvider(this.config);\n\n const result = await generateText({\n model,\n prompt: buildComponentPrompt(specCode),\n system: getCodeGenSystemPrompt(),\n });\n\n return result.text;\n }\n\n /**\n * Generate form component from form spec\n */\n async generateForm(specCode: string): Promise<string> {\n const model = getAIProvider(this.config);\n\n const result = await generateText({\n model,\n prompt: buildFormPrompt(specCode),\n system: getCodeGenSystemPrompt(),\n });\n\n return result.text;\n }\n\n /**\n * Generate tests for implementation\n */\n async generateTests(\n specCode: string,\n implementationCode: string,\n testType: 'handler' | 'component'\n ): Promise<string> {\n const model = getAIProvider(this.config);\n\n const result = await generateText({\n model,\n prompt: buildTestPrompt(specCode, implementationCode, testType),\n system: getCodeGenSystemPrompt(),\n });\n\n return result.text;\n }\n\n /**\n * Stream code generation for better UX\n */\n async streamCodeGeneration(\n prompt: string,\n onChunk: (text: string) => void\n ): Promise<string> {\n const model = getAIProvider(this.config);\n\n const result = await streamText({\n model,\n prompt,\n system: getCodeGenSystemPrompt(),\n });\n\n let fullText = '';\n\n for await (const chunk of result.textStream) {\n fullText += chunk;\n onChunk(chunk);\n }\n\n return fullText;\n }\n\n /**\n * Chat with the AI model\n */\n async chat(\n messages: { role: 'system' | 'user' | 'assistant'; content: string }[],\n system?: string\n ): Promise<string> {\n const model = getAIProvider(this.config);\n\n const result = await generateText({\n model,\n messages,\n system: system || getSystemPrompt(),\n });\n\n return result.text;\n }\n\n /**\n * Stream chat with the AI model\n */\n async streamChat(\n messages: { role: 'system' | 'user' | 'assistant'; content: string }[],\n onChunk: (text: string) => void,\n system?: string\n ): Promise<string> {\n const model = getAIProvider(this.config);\n\n const result = await streamText({\n model,\n messages,\n system: system || getSystemPrompt(),\n });\n\n let fullText = '';\n\n for await (const chunk of result.textStream) {\n fullText += chunk;\n onChunk(chunk);\n }\n\n return fullText;\n }\n}\n"],"mappings":"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"}
@@ -1,34 +0,0 @@
1
- //#region src/types/config.d.ts
2
- /**
3
- * Configuration types for ContractSpec workspace.
4
- */
5
- /**
6
- * AI provider types.
7
- */
8
- type AiProvider = 'claude' | 'openai' | 'ollama' | 'custom';
9
- /**
10
- * Agent mode types.
11
- */
12
- type AgentMode = 'simple' | 'cursor' | 'claude-code' | 'openai-codex';
13
- /**
14
- * Configuration for ContractSpec CLI and services.
15
- */
16
- interface Config {
17
- aiProvider: AiProvider;
18
- aiModel?: string;
19
- agentMode: AgentMode;
20
- customEndpoint?: string | null;
21
- customApiKey?: string | null;
22
- outputDir: string;
23
- conventions: {
24
- operations: string;
25
- events: string;
26
- presentations: string;
27
- forms: string;
28
- };
29
- defaultOwners: string[];
30
- defaultTags: string[];
31
- }
32
- //#endregion
33
- export { AgentMode, AiProvider, Config };
34
- //# sourceMappingURL=config.d.mts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"config.d.mts","names":[],"sources":["../../src/types/config.ts"],"sourcesContent":[],"mappings":";;AAOA;AAKA;AAKA;;;KAVY,UAAA;;;;KAKA,SAAA;;;;UAKK,MAAA;cACH;;aAED"}