didev 1.0.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/README.md +378 -0
- package/dist/agents/analyst.d.ts +21 -0
- package/dist/agents/analyst.d.ts.map +1 -0
- package/dist/agents/analyst.js +69 -0
- package/dist/agents/analyst.js.map +1 -0
- package/dist/agents/architect.d.ts +21 -0
- package/dist/agents/architect.d.ts.map +1 -0
- package/dist/agents/architect.js +85 -0
- package/dist/agents/architect.js.map +1 -0
- package/dist/agents/base-agent.d.ts +56 -0
- package/dist/agents/base-agent.d.ts.map +1 -0
- package/dist/agents/base-agent.js +263 -0
- package/dist/agents/base-agent.js.map +1 -0
- package/dist/agents/developer.d.ts +21 -0
- package/dist/agents/developer.d.ts.map +1 -0
- package/dist/agents/developer.js +87 -0
- package/dist/agents/developer.js.map +1 -0
- package/dist/agents/orchestrator.d.ts +23 -0
- package/dist/agents/orchestrator.d.ts.map +1 -0
- package/dist/agents/orchestrator.js +287 -0
- package/dist/agents/orchestrator.js.map +1 -0
- package/dist/agents/reviewer.d.ts +15 -0
- package/dist/agents/reviewer.d.ts.map +1 -0
- package/dist/agents/reviewer.js +65 -0
- package/dist/agents/reviewer.js.map +1 -0
- package/dist/agents/tester.d.ts +15 -0
- package/dist/agents/tester.d.ts.map +1 -0
- package/dist/agents/tester.js +64 -0
- package/dist/agents/tester.js.map +1 -0
- package/dist/bmad/method.d.ts +6 -0
- package/dist/bmad/method.d.ts.map +1 -0
- package/dist/bmad/method.js +221 -0
- package/dist/bmad/method.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +10 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +28 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/chat.d.ts +6 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +556 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/config.d.ts +3 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +65 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/init.d.ts +8 -0
- package/dist/cli/commands/init.d.ts.map +1 -0
- package/dist/cli/commands/init.js +204 -0
- package/dist/cli/commands/init.js.map +1 -0
- package/dist/cli/commands/mcp.d.ts +5 -0
- package/dist/cli/commands/mcp.d.ts.map +1 -0
- package/dist/cli/commands/mcp.js +836 -0
- package/dist/cli/commands/mcp.js.map +1 -0
- package/dist/cli/commands/refactor.d.ts +8 -0
- package/dist/cli/commands/refactor.d.ts.map +1 -0
- package/dist/cli/commands/refactor.js +161 -0
- package/dist/cli/commands/refactor.js.map +1 -0
- package/dist/cli/commands/review.d.ts +9 -0
- package/dist/cli/commands/review.d.ts.map +1 -0
- package/dist/cli/commands/review.js +138 -0
- package/dist/cli/commands/review.js.map +1 -0
- package/dist/core/api.d.ts +73 -0
- package/dist/core/api.d.ts.map +1 -0
- package/dist/core/api.js +206 -0
- package/dist/core/api.js.map +1 -0
- package/dist/core/config.d.ts +42 -0
- package/dist/core/config.d.ts.map +1 -0
- package/dist/core/config.js +180 -0
- package/dist/core/config.js.map +1 -0
- package/dist/core/context.d.ts +33 -0
- package/dist/core/context.d.ts.map +1 -0
- package/dist/core/context.js +235 -0
- package/dist/core/context.js.map +1 -0
- package/dist/core/file-manager.d.ts +20 -0
- package/dist/core/file-manager.d.ts.map +1 -0
- package/dist/core/file-manager.js +133 -0
- package/dist/core/file-manager.js.map +1 -0
- package/dist/core/mcp.d.ts +31 -0
- package/dist/core/mcp.d.ts.map +1 -0
- package/dist/core/mcp.js +112 -0
- package/dist/core/mcp.js.map +1 -0
- package/dist/core/session.d.ts +16 -0
- package/dist/core/session.d.ts.map +1 -0
- package/dist/core/session.js +60 -0
- package/dist/core/session.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +237 -0
- package/dist/index.js.map +1 -0
- package/dist/utils/banner.d.ts +2 -0
- package/dist/utils/banner.d.ts.map +1 -0
- package/dist/utils/banner.js +50 -0
- package/dist/utils/banner.js.map +1 -0
- package/dist/utils/git.d.ts +9 -0
- package/dist/utils/git.d.ts.map +1 -0
- package/dist/utils/git.js +49 -0
- package/dist/utils/git.js.map +1 -0
- package/dist/utils/logger.d.ts +42 -0
- package/dist/utils/logger.d.ts.map +1 -0
- package/dist/utils/logger.js +98 -0
- package/dist/utils/logger.js.map +1 -0
- package/dist/utils/resilience.d.ts +17 -0
- package/dist/utils/resilience.d.ts.map +1 -0
- package/dist/utils/resilience.js +41 -0
- package/dist/utils/resilience.js.map +1 -0
- package/dist/utils/token-counter.d.ts +7 -0
- package/dist/utils/token-counter.d.ts.map +1 -0
- package/dist/utils/token-counter.js +20 -0
- package/dist/utils/token-counter.js.map +1 -0
- package/package.json +62 -0
- package/scripts/postinstall.mjs +54 -0
- package/scripts/setup-path.sh +42 -0
|
@@ -0,0 +1,221 @@
|
|
|
1
|
+
import { readFile, writeFile, mkdir, access, readdir } from 'fs/promises';
|
|
2
|
+
import { join } from 'path';
|
|
3
|
+
import yaml from 'js-yaml';
|
|
4
|
+
import inquirer from 'inquirer';
|
|
5
|
+
import { logger } from '../utils/logger.js';
|
|
6
|
+
import { loadConfig, getApiKey } from '../core/config.js';
|
|
7
|
+
import { initClient } from '../core/api.js';
|
|
8
|
+
import { collectProjectContext, contextToSystemPrompt } from '../core/context.js';
|
|
9
|
+
async function exists(p) {
|
|
10
|
+
try {
|
|
11
|
+
await access(p);
|
|
12
|
+
return true;
|
|
13
|
+
}
|
|
14
|
+
catch {
|
|
15
|
+
return false;
|
|
16
|
+
}
|
|
17
|
+
}
|
|
18
|
+
async function readYaml(path) {
|
|
19
|
+
try {
|
|
20
|
+
const text = await readFile(path, 'utf-8');
|
|
21
|
+
return yaml.load(text);
|
|
22
|
+
}
|
|
23
|
+
catch {
|
|
24
|
+
return null;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
async function writeYaml(path, data) {
|
|
28
|
+
await writeFile(path, yaml.dump(data, { indent: 2 }), 'utf-8');
|
|
29
|
+
}
|
|
30
|
+
function bmadDir(rootDir = process.cwd()) {
|
|
31
|
+
return join(rootDir, '.didev', 'bmad');
|
|
32
|
+
}
|
|
33
|
+
export async function runBmadInit(rootDir = process.cwd()) {
|
|
34
|
+
logger.banner('BMad Method', 'Behavior-Motivated Agile Development');
|
|
35
|
+
await mkdir(join(bmadDir(rootDir), 'epics'), { recursive: true });
|
|
36
|
+
await mkdir(join(bmadDir(rootDir), 'stories'), { recursive: true });
|
|
37
|
+
await mkdir(join(bmadDir(rootDir), 'architecture'), { recursive: true });
|
|
38
|
+
await mkdir(join(bmadDir(rootDir), 'templates'), { recursive: true });
|
|
39
|
+
const indexPath = join(bmadDir(rootDir), 'index.yaml');
|
|
40
|
+
if (!await exists(indexPath)) {
|
|
41
|
+
await writeYaml(indexPath, {
|
|
42
|
+
project: '',
|
|
43
|
+
epics: [],
|
|
44
|
+
currentStory: null,
|
|
45
|
+
createdAt: new Date().toISOString(),
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
logger.success('BMad initialized in .didev/bmad/');
|
|
49
|
+
logger.dim('Next: didev bmad epic — create your first epic');
|
|
50
|
+
}
|
|
51
|
+
export async function runBmadEpic(rootDir = process.cwd()) {
|
|
52
|
+
const config = await loadConfig(rootDir);
|
|
53
|
+
const apiKey = await getApiKey(config);
|
|
54
|
+
if (!apiKey) {
|
|
55
|
+
logger.error('API key not set');
|
|
56
|
+
return;
|
|
57
|
+
}
|
|
58
|
+
const { title, description } = await inquirer.prompt([
|
|
59
|
+
{ type: 'input', name: 'title', message: 'Epic title:', validate: (v) => v.length > 3 },
|
|
60
|
+
{ type: 'input', name: 'description', message: 'Epic description:' },
|
|
61
|
+
]);
|
|
62
|
+
const client = initClient({ apiKey, baseUrl: config.api.baseUrl, model: config.api.model });
|
|
63
|
+
const projectCtx = await collectProjectContext(rootDir);
|
|
64
|
+
const spinner = logger.spinner('Generating epic breakdown...').start();
|
|
65
|
+
const response = await client.chat([
|
|
66
|
+
{
|
|
67
|
+
role: 'system',
|
|
68
|
+
content: `You are a Product Manager using BMad Method. ${contextToSystemPrompt(projectCtx)}`,
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
role: 'user',
|
|
72
|
+
content: `Create a detailed epic breakdown for: "${title}"\n\nDescription: ${description}\n\nProvide:
|
|
73
|
+
1. Refined epic description
|
|
74
|
+
2. List of 3-7 user stories (title only)
|
|
75
|
+
3. Technical considerations
|
|
76
|
+
4. Definition of Done
|
|
77
|
+
|
|
78
|
+
Format as YAML.`,
|
|
79
|
+
},
|
|
80
|
+
]);
|
|
81
|
+
spinner.stop();
|
|
82
|
+
const epicId = `EPIC-${String(Date.now()).slice(-4)}`;
|
|
83
|
+
const epic = {
|
|
84
|
+
id: epicId,
|
|
85
|
+
title,
|
|
86
|
+
description,
|
|
87
|
+
status: 'active',
|
|
88
|
+
stories: [],
|
|
89
|
+
createdAt: new Date().toISOString(),
|
|
90
|
+
};
|
|
91
|
+
const epicPath = join(bmadDir(rootDir), 'epics', `${epicId}.yaml`);
|
|
92
|
+
await mkdir(join(bmadDir(rootDir), 'epics'), { recursive: true });
|
|
93
|
+
await writeYaml(epicPath, { ...epic, aiBreakdown: response.content });
|
|
94
|
+
logger.success(`Epic created: ${epicId}`);
|
|
95
|
+
logger.newline();
|
|
96
|
+
console.log(response.content);
|
|
97
|
+
}
|
|
98
|
+
export async function runBmadStory(rootDir = process.cwd()) {
|
|
99
|
+
const config = await loadConfig(rootDir);
|
|
100
|
+
const apiKey = await getApiKey(config);
|
|
101
|
+
if (!apiKey) {
|
|
102
|
+
logger.error('API key not set');
|
|
103
|
+
return;
|
|
104
|
+
}
|
|
105
|
+
// List epics
|
|
106
|
+
const epicsDir = join(bmadDir(rootDir), 'epics');
|
|
107
|
+
let epicFiles = [];
|
|
108
|
+
try {
|
|
109
|
+
epicFiles = (await readdir(epicsDir)).filter(f => f.endsWith('.yaml'));
|
|
110
|
+
}
|
|
111
|
+
catch { /* empty */ }
|
|
112
|
+
if (epicFiles.length === 0) {
|
|
113
|
+
logger.warn('No epics found. Run: didev bmad epic');
|
|
114
|
+
return;
|
|
115
|
+
}
|
|
116
|
+
const epics = [];
|
|
117
|
+
for (const f of epicFiles) {
|
|
118
|
+
const e = await readYaml(join(epicsDir, f));
|
|
119
|
+
if (e)
|
|
120
|
+
epics.push(e);
|
|
121
|
+
}
|
|
122
|
+
const { epicId, storyTitle, asA, iWant, soThat } = await inquirer.prompt([
|
|
123
|
+
{
|
|
124
|
+
type: 'list',
|
|
125
|
+
name: 'epicId',
|
|
126
|
+
message: 'Select epic:',
|
|
127
|
+
choices: epics.map(e => ({ name: `${e.id}: ${e.title}`, value: e.id })),
|
|
128
|
+
},
|
|
129
|
+
{ type: 'input', name: 'storyTitle', message: 'Story title:' },
|
|
130
|
+
{ type: 'input', name: 'asA', message: 'As a:', default: 'user' },
|
|
131
|
+
{ type: 'input', name: 'iWant', message: 'I want:' },
|
|
132
|
+
{ type: 'input', name: 'soThat', message: 'So that:' },
|
|
133
|
+
]);
|
|
134
|
+
const client = initClient({ apiKey, baseUrl: config.api.baseUrl, model: config.api.model });
|
|
135
|
+
const projectCtx = await collectProjectContext(rootDir);
|
|
136
|
+
const spinner = logger.spinner('Generating story details...').start();
|
|
137
|
+
const response = await client.chat([
|
|
138
|
+
{
|
|
139
|
+
role: 'system',
|
|
140
|
+
content: `You are a Product Manager using BMad Method. ${contextToSystemPrompt(projectCtx)}
|
|
141
|
+
|
|
142
|
+
Generate detailed acceptance criteria and BDD scenarios for a user story.`,
|
|
143
|
+
},
|
|
144
|
+
{
|
|
145
|
+
role: 'user',
|
|
146
|
+
content: `User Story: "${storyTitle}"
|
|
147
|
+
As a ${asA}, I want ${iWant}, so that ${soThat}.
|
|
148
|
+
|
|
149
|
+
Generate:
|
|
150
|
+
1. 5-8 detailed Acceptance Criteria (Given/When/Then format)
|
|
151
|
+
2. Technical tasks breakdown (dev tasks)
|
|
152
|
+
3. Test scenarios
|
|
153
|
+
4. Any edge cases to consider`,
|
|
154
|
+
},
|
|
155
|
+
]);
|
|
156
|
+
spinner.stop();
|
|
157
|
+
const storyId = `STORY-${String(Date.now()).slice(-4)}`;
|
|
158
|
+
const story = {
|
|
159
|
+
id: storyId,
|
|
160
|
+
epicId,
|
|
161
|
+
title: storyTitle,
|
|
162
|
+
asA,
|
|
163
|
+
iWant,
|
|
164
|
+
soThat,
|
|
165
|
+
acceptanceCriteria: [],
|
|
166
|
+
tasks: [],
|
|
167
|
+
status: 'backlog',
|
|
168
|
+
createdAt: new Date().toISOString(),
|
|
169
|
+
};
|
|
170
|
+
await mkdir(join(bmadDir(rootDir), 'stories'), { recursive: true });
|
|
171
|
+
await writeYaml(join(bmadDir(rootDir), 'stories', `${storyId}.yaml`), {
|
|
172
|
+
...story,
|
|
173
|
+
aiDetails: response.content,
|
|
174
|
+
});
|
|
175
|
+
logger.success(`Story created: ${storyId}`);
|
|
176
|
+
logger.newline();
|
|
177
|
+
console.log(response.content);
|
|
178
|
+
logger.newline();
|
|
179
|
+
logger.dim(`Next: didev bmad implement --story ${storyId}`);
|
|
180
|
+
}
|
|
181
|
+
export async function runBmadImplement(storyId, rootDir = process.cwd()) {
|
|
182
|
+
let story = null;
|
|
183
|
+
if (storyId) {
|
|
184
|
+
story = await readYaml(join(bmadDir(rootDir), 'stories', `${storyId}.yaml`));
|
|
185
|
+
}
|
|
186
|
+
else {
|
|
187
|
+
// Find first in-progress or backlog story
|
|
188
|
+
const storiesDir = join(bmadDir(rootDir), 'stories');
|
|
189
|
+
try {
|
|
190
|
+
const files = await readdir(storiesDir);
|
|
191
|
+
for (const f of files) {
|
|
192
|
+
const s = await readYaml(join(storiesDir, f));
|
|
193
|
+
if (s && (s.status === 'in-progress' || s.status === 'backlog')) {
|
|
194
|
+
story = s;
|
|
195
|
+
break;
|
|
196
|
+
}
|
|
197
|
+
}
|
|
198
|
+
}
|
|
199
|
+
catch { /* empty */ }
|
|
200
|
+
}
|
|
201
|
+
if (!story) {
|
|
202
|
+
logger.warn('No story to implement. Create one with: didev bmad story');
|
|
203
|
+
return;
|
|
204
|
+
}
|
|
205
|
+
logger.info(`Implementing: ${story.id} — ${story.title}`);
|
|
206
|
+
const { runOrchestration } = await import('../agents/orchestrator.js');
|
|
207
|
+
await runOrchestration({
|
|
208
|
+
task: `[BMad Story ${story.id}] ${story.title}
|
|
209
|
+
As a ${story.asA}, I want ${story.iWant}, so that ${story.soThat}.`,
|
|
210
|
+
mode: 'full',
|
|
211
|
+
rootDir,
|
|
212
|
+
});
|
|
213
|
+
// Mark story as in-progress
|
|
214
|
+
story.status = 'in-progress';
|
|
215
|
+
await writeYaml(join(bmadDir(rootDir), 'stories', `${story.id}.yaml`), story);
|
|
216
|
+
}
|
|
217
|
+
export async function runBmadReview(rootDir = process.cwd()) {
|
|
218
|
+
const { runReview } = await import('../cli/commands/review.js');
|
|
219
|
+
await runReview({ all: false, pr: false, save: true });
|
|
220
|
+
}
|
|
221
|
+
//# sourceMappingURL=method.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"method.js","sourceRoot":"","sources":["../../src/bmad/method.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import type { AgentFamily, OrchestrationMode } from '../../agents/orchestrator.js';
|
|
2
|
+
export interface AgentCommandOptions {
|
|
3
|
+
type?: AgentFamily;
|
|
4
|
+
model?: string;
|
|
5
|
+
mode?: OrchestrationMode;
|
|
6
|
+
skip?: string;
|
|
7
|
+
orchestrate?: boolean;
|
|
8
|
+
}
|
|
9
|
+
export declare function runAgentCommand(task: string | undefined, options: AgentCommandOptions): Promise<void>;
|
|
10
|
+
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,WAAW,EAAE,iBAAiB,EAAE,MAAM,8BAA8B,CAAC;AAEnF,MAAM,WAAW,mBAAmB;IAClC,IAAI,CAAC,EAAE,WAAW,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,iBAAiB,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,wBAAsB,eAAe,CACnC,IAAI,EAAE,MAAM,GAAG,SAAS,EACxB,OAAO,EAAE,mBAAmB,GAC3B,OAAO,CAAC,IAAI,CAAC,CA2Bf"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import { logger } from '../../utils/logger.js';
|
|
2
|
+
import { runOrchestration } from '../../agents/orchestrator.js';
|
|
3
|
+
export async function runAgentCommand(task, options) {
|
|
4
|
+
if (!task && !options.orchestrate) {
|
|
5
|
+
logger.error('Please provide a task. Example: didev agent "Add user authentication"');
|
|
6
|
+
logger.dim('Or use --orchestrate for interactive task input');
|
|
7
|
+
process.exit(1);
|
|
8
|
+
}
|
|
9
|
+
if (!task) {
|
|
10
|
+
const inquirer = await import('inquirer');
|
|
11
|
+
const { taskInput } = await inquirer.default.prompt([{
|
|
12
|
+
type: 'input',
|
|
13
|
+
name: 'taskInput',
|
|
14
|
+
message: 'Describe the task for the agent family:',
|
|
15
|
+
validate: (v) => v.trim().length > 5 || 'Please describe the task in more detail',
|
|
16
|
+
}]);
|
|
17
|
+
task = taskInput;
|
|
18
|
+
}
|
|
19
|
+
const skipAgents = options.skip?.split(',').map(s => s.trim()) ?? [];
|
|
20
|
+
await runOrchestration({
|
|
21
|
+
task: task,
|
|
22
|
+
family: options.type ?? 'auto',
|
|
23
|
+
mode: options.mode ?? 'full',
|
|
24
|
+
model: options.model,
|
|
25
|
+
skipAgents: skipAgents.length > 0 ? skipAgents : undefined,
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
//# sourceMappingURL=agent.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/cli/commands/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAC/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAWhE,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,IAAwB,EACxB,OAA4B;IAE5B,IAAI,CAAC,IAAI,IAAI,CAAC,OAAO,CAAC,WAAW,EAAE,CAAC;QAClC,MAAM,CAAC,KAAK,CAAC,uEAAuE,CAAC,CAAC;QACtF,MAAM,CAAC,GAAG,CAAC,iDAAiD,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,CAAC,IAAI,EAAE,CAAC;QACV,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,UAAU,CAAC,CAAC;QAC1C,MAAM,EAAE,SAAS,EAAE,GAAG,MAAM,QAAQ,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;gBACnD,IAAI,EAAE,OAAO;gBACb,IAAI,EAAE,WAAW;gBACjB,OAAO,EAAE,yCAAyC;gBAClD,QAAQ,EAAE,CAAC,CAAS,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,MAAM,GAAG,CAAC,IAAI,yCAAyC;aAC1F,CAAC,CAAC,CAAC;QACJ,IAAI,GAAG,SAAmB,CAAC;IAC7B,CAAC;IAED,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;IAErE,MAAM,gBAAgB,CAAC;QACrB,IAAI,EAAE,IAAK;QACX,MAAM,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM;QAC9B,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM;QAC5B,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,UAAU,EAAE,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC,CAAC,SAAS;KAC3D,CAAC,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"AAgBA,MAAM,WAAW,WAAW;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAqOD,wBAAsB,OAAO,CAAC,OAAO,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqVtE"}
|