@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.
- package/dist/adapters/ai.d.mts +2 -2
- package/dist/adapters/ai.d.mts.map +1 -1
- package/dist/adapters/ai.mjs.map +1 -1
- package/dist/adapters/factory.d.mts +2 -2
- package/dist/adapters/factory.d.mts.map +1 -1
- package/dist/adapters/factory.mjs +3 -14
- package/dist/adapters/factory.mjs.map +1 -1
- package/dist/adapters/fs.bun.d.mts +11 -0
- package/dist/adapters/fs.bun.d.mts.map +1 -0
- package/dist/adapters/fs.bun.mjs +81 -0
- package/dist/adapters/fs.bun.mjs.map +1 -0
- package/dist/adapters/fs.d.mts +2 -8
- package/dist/adapters/fs.d.mts.map +1 -1
- package/dist/adapters/fs.mjs +4 -88
- package/dist/adapters/fs.mjs.map +1 -1
- package/dist/adapters/fs.node.d.mts +11 -0
- package/dist/adapters/fs.node.d.mts.map +1 -0
- package/dist/adapters/fs.node.mjs +84 -0
- package/dist/adapters/fs.node.mjs.map +1 -0
- package/dist/adapters/index.d.mts +3 -1
- package/dist/adapters/index.mjs +3 -1
- package/dist/ai/agents/index.d.mts +6 -0
- package/dist/ai/agents/orchestrator.d.mts +4 -4
- package/dist/ai/agents/orchestrator.d.mts.map +1 -1
- package/dist/ai/agents/orchestrator.mjs +5 -0
- package/dist/ai/agents/orchestrator.mjs.map +1 -1
- package/dist/ai/agents/simple-agent.d.mts +2 -2
- package/dist/ai/agents/simple-agent.d.mts.map +1 -1
- package/dist/ai/agents/simple-agent.mjs.map +1 -1
- package/dist/ai/agents/types.d.mts +4 -5
- package/dist/ai/agents/types.d.mts.map +1 -1
- package/dist/ai/agents/unified-adapter.mjs +70 -0
- package/dist/ai/agents/unified-adapter.mjs.map +1 -0
- package/dist/ai/index.d.mts +3 -3
- package/dist/ai/index.mjs +1 -2
- package/dist/ai/prompts/spec-creation.mjs +1 -1
- package/dist/ai/providers.d.mts +3 -18
- package/dist/ai/providers.d.mts.map +1 -1
- package/dist/ai/providers.mjs +2 -22
- package/dist/ai/providers.mjs.map +1 -1
- package/dist/index.d.mts +13 -8
- package/dist/index.mjs +11 -7
- package/dist/ports/ai.d.mts +7 -3
- package/dist/ports/ai.d.mts.map +1 -1
- package/dist/ports/index.d.mts +1 -1
- package/dist/registry.d.mts +15 -0
- package/dist/registry.d.mts.map +1 -0
- package/dist/registry.mjs +19 -0
- package/dist/registry.mjs.map +1 -0
- package/dist/services/action-drift/service.d.mts +11 -0
- package/dist/services/action-drift/service.d.mts.map +1 -0
- package/dist/services/action-drift/service.mjs +43 -0
- package/dist/services/action-drift/service.mjs.map +1 -0
- package/dist/services/action-drift/types.d.mts +23 -0
- package/dist/services/action-drift/types.d.mts.map +1 -0
- package/dist/services/action-pr/service.d.mts +17 -0
- package/dist/services/action-pr/service.d.mts.map +1 -0
- package/dist/services/action-pr/service.mjs +205 -0
- package/dist/services/action-pr/service.mjs.map +1 -0
- package/dist/services/action-pr/types.d.mts +67 -0
- package/dist/services/action-pr/types.d.mts.map +1 -0
- package/dist/services/build.d.mts +3 -2
- package/dist/services/build.d.mts.map +1 -1
- package/dist/services/build.mjs.map +1 -1
- package/dist/services/ci-check/checks/coverage.mjs +30 -41
- package/dist/services/ci-check/checks/coverage.mjs.map +1 -1
- package/dist/services/ci-check/checks/handlers.mjs +3 -3
- package/dist/services/ci-check/checks/handlers.mjs.map +1 -1
- package/dist/services/ci-check/checks/implementation.mjs +1 -1
- package/dist/services/ci-check/checks/implementation.mjs.map +1 -1
- package/dist/services/ci-check/checks/structure.mjs +5 -6
- package/dist/services/ci-check/checks/structure.mjs.map +1 -1
- package/dist/services/ci-check/checks/test-refs.mjs +19 -29
- package/dist/services/ci-check/checks/test-refs.mjs.map +1 -1
- package/dist/services/ci-check/checks/tests.mjs +3 -3
- package/dist/services/ci-check/checks/tests.mjs.map +1 -1
- package/dist/services/ci-check/ci-check-service.d.mts.map +1 -1
- package/dist/services/ci-check/ci-check-service.mjs +7 -12
- package/dist/services/ci-check/ci-check-service.mjs.map +1 -1
- package/dist/services/config.d.mts +3 -3
- package/dist/services/config.d.mts.map +1 -1
- package/dist/services/config.mjs +12 -34
- package/dist/services/config.mjs.map +1 -1
- package/dist/services/create/ai-generator.d.mts +3 -3
- package/dist/services/create/ai-generator.d.mts.map +1 -1
- package/dist/services/create/ai-generator.mjs +1 -1
- package/dist/services/create/ai-generator.mjs.map +1 -1
- package/dist/services/create/index.d.mts +4 -4
- package/dist/services/create/index.d.mts.map +1 -1
- package/dist/services/create/index.mjs.map +1 -1
- package/dist/services/docs/docs-service.mjs +16 -13
- package/dist/services/docs/docs-service.mjs.map +1 -1
- package/dist/services/extract.mjs +2 -10
- package/dist/services/extract.mjs.map +1 -1
- package/dist/services/implementation/discovery.d.mts.map +1 -1
- package/dist/services/implementation/discovery.mjs +6 -14
- package/dist/services/implementation/discovery.mjs.map +1 -1
- package/dist/services/implementation/index.d.mts +1 -1
- package/dist/services/implementation/index.mjs +1 -1
- package/dist/services/implementation/resolver/index.d.mts +8 -6
- package/dist/services/implementation/resolver/index.d.mts.map +1 -1
- package/dist/services/implementation/resolver/index.mjs +33 -31
- package/dist/services/implementation/resolver/index.mjs.map +1 -1
- package/dist/services/implementation/resolver/parsers.d.mts +1 -5
- package/dist/services/implementation/resolver/parsers.d.mts.map +1 -1
- package/dist/services/implementation/resolver/parsers.mjs +1 -19
- package/dist/services/implementation/resolver/parsers.mjs.map +1 -1
- package/dist/services/implementation/types.d.mts +3 -1
- package/dist/services/implementation/types.d.mts.map +1 -1
- package/dist/services/index.d.mts +5 -1
- package/dist/services/index.mjs +4 -2
- package/dist/services/list.d.mts +4 -3
- package/dist/services/list.d.mts.map +1 -1
- package/dist/services/list.mjs +4 -2
- package/dist/services/list.mjs.map +1 -1
- package/dist/services/sync.d.mts +2 -2
- package/dist/services/sync.d.mts.map +1 -1
- package/dist/services/sync.mjs.map +1 -1
- package/dist/services/test/test-generator-service.d.mts +1 -1
- package/dist/services/test/test-service.mjs +1 -1
- package/dist/services/validate/blueprint-validator.mjs +1 -1
- package/dist/services/validate/implementation-agent-validator.d.mts +2 -2
- package/dist/services/validate/implementation-agent-validator.d.mts.map +1 -1
- package/dist/services/validate/implementation-agent-validator.mjs.map +1 -1
- package/dist/services/validate/implementation-validator.d.mts +4 -3
- package/dist/services/validate/implementation-validator.d.mts.map +1 -1
- package/dist/services/validate/implementation-validator.mjs +4 -13
- package/dist/services/validate/implementation-validator.mjs.map +1 -1
- package/dist/services/validate/spec-validator.d.mts +1 -1
- package/dist/services/validate/spec-validator.d.mts.map +1 -1
- package/dist/services/validate/spec-validator.mjs +11 -7
- package/dist/services/validate/spec-validator.mjs.map +1 -1
- package/dist/services/validate/tenant-validator.mjs +1 -1
- package/dist/services/watch.d.mts +2 -2
- package/dist/services/watch.d.mts.map +1 -1
- package/dist/services/watch.mjs.map +1 -1
- package/dist/utils/filter.d.mts +10 -1
- package/dist/utils/filter.d.mts.map +1 -1
- package/dist/utils/filter.mjs +28 -1
- package/dist/utils/filter.mjs.map +1 -1
- package/dist/utils/index.d.mts +2 -2
- package/dist/utils/index.mjs +2 -1
- package/package.json +11 -9
- package/dist/ai/client.d.mts +0 -97
- package/dist/ai/client.d.mts.map +0 -1
- package/dist/ai/client.mjs +0 -189
- package/dist/ai/client.mjs.map +0 -1
- package/dist/types/config.d.mts +0 -34
- package/dist/types/config.d.mts.map +0 -1
package/dist/ai/client.d.mts
DELETED
|
@@ -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
|
package/dist/ai/client.d.mts.map
DELETED
|
@@ -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"}
|
package/dist/ai/client.mjs
DELETED
|
@@ -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
|
package/dist/ai/client.mjs.map
DELETED
|
@@ -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":";;;;;;;;;;AAsBA,IAAa,WAAb,MAAsB;CACpB,YAAY,AAAQ,QAAgB;EAAhB;;;;;CAKpB,MAAM,sBAAsB,aAAqB,MAAc;AAuC7D,UAPe,MAAM,eAAe;GAClC,OAhCY,cAAc,KAAK,OAAO;GAiCtC,QA/BaA,IAAE,OAAO;IACtB,MAAMA,IAAE,QAAQ,CAAC,SAAS,8CAA4C;IACtE,SAASA,IAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC/C,aAAaA,IAAE,QAAQ,CAAC,SAAS,yBAAyB;IAC1D,MAAMA,IAAE,QAAQ,CAAC,SAAS,mBAAmB;IAC7C,SAASA,IAAE,QAAQ,CAAC,SAAS,6BAA6B;IAC1D,WAAWA,IACR,KAAK;KAAC;KAAgB;KAAQ;KAAU;KAAa,CAAC,CACtD,QAAQ,OAAO;IAClB,QAAQA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,SAAS,mCAAmC;IACxE,MAAMA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,SAAS,sBAAsB;IACzD,MAAMA,IACH,KAAK;KAAC;KAAa;KAAQ;KAAQ,CAAC,CACpC,SAAS,sBAAsB;IAClC,YAAYA,IAAE,QAAQ,CAAC,SAAS,iCAAiC;IACjE,aAAaA,IAAE,QAAQ,CAAC,SAAS,kCAAkC;IACnE,OAAOA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,SAAS,gBAAgB,CAAC,QAAQ,EAAE,CAAC;IAChE,gBAAgBA,IACb,MAAMA,IAAE,QAAQ,CAAC,CACjB,SAAS,uBAAuB,CAChC,QAAQ,EAAE,CAAC;IACd,WAAWA,IACR,MAAMA,IAAE,QAAQ,CAAC,CACjB,SAAS,4BAA4B,CACrC,QAAQ,EAAE,CAAC;IACf,CAAC;GAOA,QALa,yBAAyB,aAAa,KAAK;GAMxD,QAAQ,iBAAiB;GAC1B,CAAC,EAEY;;;;;CAMhB,MAAM,kBAAkB,aAAqB;AAyB3C,UAPe,MAAM,eAAe;GAClC,OAlBY,cAAc,KAAK,OAAO;GAmBtC,QAjBaA,IAAE,OAAO;IACtB,MAAMA,IAAE,QAAQ,CAAC,SAAS,+CAA6C;IACvE,SAASA,IAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC/C,aAAaA,IAAE,QAAQ,CAAC,SAAS,6BAA6B;IAC9D,WAAWA,IACR,KAAK;KAAC;KAAgB;KAAQ;KAAU;KAAa,CAAC,CACtD,QAAQ,OAAO;IAClB,QAAQA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvC,MAAMA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrC,cAAcA,IAAE,QAAQ,CAAC,SAAS,+BAA+B;IACjE,WAAWA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,SAAS,kBAAkB,CAAC,QAAQ,EAAE,CAAC;IACvE,CAAC;GAOA,QALa,qBAAqB,YAAY;GAM9C,QAAQ,iBAAiB;GAC1B,CAAC,EAEY;;;;;CAMhB,MAAM,yBAAyB,aAAqB,MAAwB;AA4B1E,UAPe,MAAM,eAAe;GAClC,OArBY,cAAc,KAAK,OAAO;GAsBtC,QApBaA,IAAE,OAAO;IACtB,MAAMA,IAAE,QAAQ;IAChB,SAASA,IAAE,QAAQ,CAAC,KAAK,CAAC,UAAU,CAAC,QAAQ,EAAE;IAC/C,aAAaA,IAAE,QAAQ;IACvB,WAAWA,IACR,KAAK;KAAC;KAAgB;KAAQ;KAAU;KAAa,CAAC,CACtD,QAAQ,OAAO;IAClB,QAAQA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IACvC,MAAMA,IAAE,MAAMA,IAAE,QAAQ,CAAC,CAAC,QAAQ,EAAE,CAAC;IACrC,cAAcA,IAAE,QAAQ,CAAC,UAAU;IACnC,YAAYA,IAAE,QAAQ,CAAC,UAAU;IACjC,SAASA,IAAE,QAAQ,CAAC,UAAU;IAC9B,UAAUA,IAAE,QAAQ,CAAC,UAAU;IAC/B,WAAWA,IAAE,QAAQ,CAAC,UAAU;IACjC,CAAC;GAOA,QALa,4BAA4B,aAAa,KAAK;GAM3D,QAAQ,iBAAiB;GAC1B,CAAC,EAEY;;;;;CAMhB,MAAM,gBAAgB,UAAmC;AASvD,UANe,MAAM,aAAa;GAChC,OAHY,cAAc,KAAK,OAAO;GAItC,QAAQ,mBAAmB,SAAS;GACpC,QAAQ,wBAAwB;GACjC,CAAC,EAEY;;;;;CAMhB,MAAM,kBAAkB,UAAmC;AASzD,UANe,MAAM,aAAa;GAChC,OAHY,cAAc,KAAK,OAAO;GAItC,QAAQ,qBAAqB,SAAS;GACtC,QAAQ,wBAAwB;GACjC,CAAC,EAEY;;;;;CAMhB,MAAM,aAAa,UAAmC;AASpD,UANe,MAAM,aAAa;GAChC,OAHY,cAAc,KAAK,OAAO;GAItC,QAAQ,gBAAgB,SAAS;GACjC,QAAQ,wBAAwB;GACjC,CAAC,EAEY;;;;;CAMhB,MAAM,cACJ,UACA,oBACA,UACiB;AASjB,UANe,MAAM,aAAa;GAChC,OAHY,cAAc,KAAK,OAAO;GAItC,QAAQ,gBAAgB,UAAU,oBAAoB,SAAS;GAC/D,QAAQ,wBAAwB;GACjC,CAAC,EAEY;;;;;CAMhB,MAAM,qBACJ,QACA,SACiB;EAGjB,MAAM,SAAS,MAAM,WAAW;GAC9B,OAHY,cAAc,KAAK,OAAO;GAItC;GACA,QAAQ,wBAAwB;GACjC,CAAC;EAEF,IAAI,WAAW;AAEf,aAAW,MAAM,SAAS,OAAO,YAAY;AAC3C,eAAY;AACZ,WAAQ,MAAM;;AAGhB,SAAO;;;;;CAMT,MAAM,KACJ,UACA,QACiB;AASjB,UANe,MAAM,aAAa;GAChC,OAHY,cAAc,KAAK,OAAO;GAItC;GACA,QAAQ,UAAU,iBAAiB;GACpC,CAAC,EAEY;;;;;CAMhB,MAAM,WACJ,UACA,SACA,QACiB;EAGjB,MAAM,SAAS,MAAM,WAAW;GAC9B,OAHY,cAAc,KAAK,OAAO;GAItC;GACA,QAAQ,UAAU,iBAAiB;GACpC,CAAC;EAEF,IAAI,WAAW;AAEf,aAAW,MAAM,SAAS,OAAO,YAAY;AAC3C,eAAY;AACZ,WAAQ,MAAM;;AAGhB,SAAO"}
|
package/dist/types/config.d.mts
DELETED
|
@@ -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"}
|