@channelfactory/cliend 0.6.2 → 0.7.1
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/src/config/config.schema.d.ts +18 -18
- package/dist/src/core/complexity-router.d.ts +2 -1
- package/dist/src/core/complexity-router.d.ts.map +1 -1
- package/dist/src/core/complexity-router.js +19 -7
- package/dist/src/core/complexity-router.js.map +1 -1
- package/dist/src/core/context-builder.d.ts +1 -1
- package/dist/src/core/context-builder.d.ts.map +1 -1
- package/dist/src/core/context-builder.js +10 -2
- package/dist/src/core/context-builder.js.map +1 -1
- package/dist/src/core/judge.d.ts.map +1 -1
- package/dist/src/core/orchestrator.d.ts +1 -0
- package/dist/src/core/orchestrator.d.ts.map +1 -1
- package/dist/src/core/orchestrator.js +41 -4
- package/dist/src/core/orchestrator.js.map +1 -1
- package/dist/src/index.d.ts +1 -1
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +1 -1
- package/dist/src/index.js.map +1 -1
- package/dist/src/integrations/atlassian/jira-client.js +1 -1
- package/dist/src/integrations/atlassian/jira-client.js.map +1 -1
- package/dist/src/integrations/atlassian/rovo-client.d.ts +0 -5
- package/dist/src/integrations/atlassian/rovo-client.d.ts.map +1 -1
- package/dist/src/integrations/atlassian/rovo-client.js +0 -6
- package/dist/src/integrations/atlassian/rovo-client.js.map +1 -1
- package/dist/src/repl/commands/help.d.ts.map +1 -1
- package/dist/src/repl/commands/help.js +1 -2
- package/dist/src/repl/commands/help.js.map +1 -1
- package/dist/src/tools/agentic-loop.d.ts +25 -0
- package/dist/src/tools/agentic-loop.d.ts.map +1 -0
- package/dist/src/tools/agentic-loop.js +97 -0
- package/dist/src/tools/agentic-loop.js.map +1 -0
- package/dist/src/tools/tool-definitions.d.ts +3 -0
- package/dist/src/tools/tool-definitions.d.ts.map +1 -0
- package/dist/src/tools/tool-definitions.js +112 -0
- package/dist/src/tools/tool-definitions.js.map +1 -0
- package/dist/src/tools/tool-executor.d.ts +18 -0
- package/dist/src/tools/tool-executor.d.ts.map +1 -0
- package/dist/src/tools/tool-executor.js +186 -0
- package/dist/src/tools/tool-executor.js.map +1 -0
- package/dist/src/types/message.d.ts +5 -0
- package/dist/src/types/message.d.ts.map +1 -1
- package/dist/src/ui/output-formatter.d.ts +2 -0
- package/dist/src/ui/output-formatter.d.ts.map +1 -1
- package/dist/src/ui/output-formatter.js +23 -0
- package/dist/src/ui/output-formatter.js.map +1 -1
- package/dist/src/ui/welcome.js +1 -1
- package/package.json +1 -1
|
@@ -45,14 +45,14 @@ export declare const appConfigSchema: z.ZodObject<{
|
|
|
45
45
|
model: z.ZodOptional<z.ZodString>;
|
|
46
46
|
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
47
47
|
}, "strip", z.ZodTypeAny, {
|
|
48
|
-
enabled: boolean;
|
|
49
48
|
apiKey: string;
|
|
49
|
+
enabled: boolean;
|
|
50
50
|
timeoutMs: number;
|
|
51
51
|
model?: string | undefined;
|
|
52
52
|
}, {
|
|
53
53
|
model?: string | undefined;
|
|
54
|
-
enabled?: boolean | undefined;
|
|
55
54
|
apiKey?: string | undefined;
|
|
55
|
+
enabled?: boolean | undefined;
|
|
56
56
|
timeoutMs?: number | undefined;
|
|
57
57
|
}>;
|
|
58
58
|
codex: z.ZodObject<{
|
|
@@ -61,14 +61,14 @@ export declare const appConfigSchema: z.ZodObject<{
|
|
|
61
61
|
model: z.ZodOptional<z.ZodString>;
|
|
62
62
|
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
63
63
|
}, "strip", z.ZodTypeAny, {
|
|
64
|
-
enabled: boolean;
|
|
65
64
|
apiKey: string;
|
|
65
|
+
enabled: boolean;
|
|
66
66
|
timeoutMs: number;
|
|
67
67
|
model?: string | undefined;
|
|
68
68
|
}, {
|
|
69
69
|
model?: string | undefined;
|
|
70
|
-
enabled?: boolean | undefined;
|
|
71
70
|
apiKey?: string | undefined;
|
|
71
|
+
enabled?: boolean | undefined;
|
|
72
72
|
timeoutMs?: number | undefined;
|
|
73
73
|
}>;
|
|
74
74
|
chatgpt: z.ZodObject<{
|
|
@@ -77,52 +77,52 @@ export declare const appConfigSchema: z.ZodObject<{
|
|
|
77
77
|
model: z.ZodOptional<z.ZodString>;
|
|
78
78
|
timeoutMs: z.ZodDefault<z.ZodNumber>;
|
|
79
79
|
}, "strip", z.ZodTypeAny, {
|
|
80
|
-
enabled: boolean;
|
|
81
80
|
apiKey: string;
|
|
81
|
+
enabled: boolean;
|
|
82
82
|
timeoutMs: number;
|
|
83
83
|
model?: string | undefined;
|
|
84
84
|
}, {
|
|
85
85
|
model?: string | undefined;
|
|
86
|
-
enabled?: boolean | undefined;
|
|
87
86
|
apiKey?: string | undefined;
|
|
87
|
+
enabled?: boolean | undefined;
|
|
88
88
|
timeoutMs?: number | undefined;
|
|
89
89
|
}>;
|
|
90
90
|
}, "strip", z.ZodTypeAny, {
|
|
91
91
|
claude: {
|
|
92
|
-
enabled: boolean;
|
|
93
92
|
apiKey: string;
|
|
93
|
+
enabled: boolean;
|
|
94
94
|
timeoutMs: number;
|
|
95
95
|
model?: string | undefined;
|
|
96
96
|
};
|
|
97
97
|
codex: {
|
|
98
|
-
enabled: boolean;
|
|
99
98
|
apiKey: string;
|
|
99
|
+
enabled: boolean;
|
|
100
100
|
timeoutMs: number;
|
|
101
101
|
model?: string | undefined;
|
|
102
102
|
};
|
|
103
103
|
chatgpt: {
|
|
104
|
-
enabled: boolean;
|
|
105
104
|
apiKey: string;
|
|
105
|
+
enabled: boolean;
|
|
106
106
|
timeoutMs: number;
|
|
107
107
|
model?: string | undefined;
|
|
108
108
|
};
|
|
109
109
|
}, {
|
|
110
110
|
claude: {
|
|
111
111
|
model?: string | undefined;
|
|
112
|
-
enabled?: boolean | undefined;
|
|
113
112
|
apiKey?: string | undefined;
|
|
113
|
+
enabled?: boolean | undefined;
|
|
114
114
|
timeoutMs?: number | undefined;
|
|
115
115
|
};
|
|
116
116
|
codex: {
|
|
117
117
|
model?: string | undefined;
|
|
118
|
-
enabled?: boolean | undefined;
|
|
119
118
|
apiKey?: string | undefined;
|
|
119
|
+
enabled?: boolean | undefined;
|
|
120
120
|
timeoutMs?: number | undefined;
|
|
121
121
|
};
|
|
122
122
|
chatgpt: {
|
|
123
123
|
model?: string | undefined;
|
|
124
|
-
enabled?: boolean | undefined;
|
|
125
124
|
apiKey?: string | undefined;
|
|
125
|
+
enabled?: boolean | undefined;
|
|
126
126
|
timeoutMs?: number | undefined;
|
|
127
127
|
};
|
|
128
128
|
}>;
|
|
@@ -188,20 +188,20 @@ export declare const appConfigSchema: z.ZodObject<{
|
|
|
188
188
|
}, "strip", z.ZodTypeAny, {
|
|
189
189
|
providers: {
|
|
190
190
|
claude: {
|
|
191
|
-
enabled: boolean;
|
|
192
191
|
apiKey: string;
|
|
192
|
+
enabled: boolean;
|
|
193
193
|
timeoutMs: number;
|
|
194
194
|
model?: string | undefined;
|
|
195
195
|
};
|
|
196
196
|
codex: {
|
|
197
|
-
enabled: boolean;
|
|
198
197
|
apiKey: string;
|
|
198
|
+
enabled: boolean;
|
|
199
199
|
timeoutMs: number;
|
|
200
200
|
model?: string | undefined;
|
|
201
201
|
};
|
|
202
202
|
chatgpt: {
|
|
203
|
-
enabled: boolean;
|
|
204
203
|
apiKey: string;
|
|
204
|
+
enabled: boolean;
|
|
205
205
|
timeoutMs: number;
|
|
206
206
|
model?: string | undefined;
|
|
207
207
|
};
|
|
@@ -237,20 +237,20 @@ export declare const appConfigSchema: z.ZodObject<{
|
|
|
237
237
|
providers: {
|
|
238
238
|
claude: {
|
|
239
239
|
model?: string | undefined;
|
|
240
|
-
enabled?: boolean | undefined;
|
|
241
240
|
apiKey?: string | undefined;
|
|
241
|
+
enabled?: boolean | undefined;
|
|
242
242
|
timeoutMs?: number | undefined;
|
|
243
243
|
};
|
|
244
244
|
codex: {
|
|
245
245
|
model?: string | undefined;
|
|
246
|
-
enabled?: boolean | undefined;
|
|
247
246
|
apiKey?: string | undefined;
|
|
247
|
+
enabled?: boolean | undefined;
|
|
248
248
|
timeoutMs?: number | undefined;
|
|
249
249
|
};
|
|
250
250
|
chatgpt: {
|
|
251
251
|
model?: string | undefined;
|
|
252
|
-
enabled?: boolean | undefined;
|
|
253
252
|
apiKey?: string | undefined;
|
|
253
|
+
enabled?: boolean | undefined;
|
|
254
254
|
timeoutMs?: number | undefined;
|
|
255
255
|
};
|
|
256
256
|
};
|
|
@@ -1,7 +1,8 @@
|
|
|
1
|
+
import type { ConversationMessage } from '../types/message.js';
|
|
1
2
|
export declare class ComplexityRouter {
|
|
2
3
|
private readonly apiKey;
|
|
3
4
|
private client;
|
|
4
5
|
constructor(apiKey: string);
|
|
5
|
-
classify(message: string): Promise<'simple' | 'complex'>;
|
|
6
|
+
classify(message: string, history?: ConversationMessage[]): Promise<'simple' | 'agentic' | 'complex'>;
|
|
6
7
|
}
|
|
7
8
|
//# sourceMappingURL=complexity-router.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complexity-router.d.ts","sourceRoot":"","sources":["../../../src/core/complexity-router.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"complexity-router.d.ts","sourceRoot":"","sources":["../../../src/core/complexity-router.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAE/D,qBAAa,gBAAgB;IAGf,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAA0B;gBAEX,MAAM,EAAE,MAAM;IAErC,QAAQ,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,GAAE,mBAAmB,EAAO,GAAG,OAAO,CAAC,QAAQ,GAAG,SAAS,GAAG,SAAS,CAAC;CA6ChH"}
|
|
@@ -5,23 +5,31 @@ export class ComplexityRouter {
|
|
|
5
5
|
constructor(apiKey) {
|
|
6
6
|
this.apiKey = apiKey;
|
|
7
7
|
}
|
|
8
|
-
async classify(message) {
|
|
8
|
+
async classify(message, history = []) {
|
|
9
9
|
if (!this.apiKey)
|
|
10
10
|
return 'complex';
|
|
11
|
+
// If any previous turn used tools, stay agentic for follow-ups
|
|
12
|
+
// unless the new message is clearly a standalone general question
|
|
13
|
+
const hadToolUse = history.some((m) => m.metadata?.toolCalls && m.metadata.toolCalls.length > 0);
|
|
11
14
|
try {
|
|
12
15
|
if (!this.client) {
|
|
13
16
|
this.client = new Anthropic({ apiKey: this.apiKey });
|
|
14
17
|
}
|
|
18
|
+
const contextHint = hadToolUse
|
|
19
|
+
? '\nIMPORTANT: The conversation has previously used filesystem tools. Follow-up questions like "what does this do?", "can you explain this?", "now fix it", "understand this" should be classified as AGENTIC since they refer to files/code from earlier in the conversation. Only classify as SIMPLE if the message is completely unrelated to the codebase (e.g. "what is a promise?").'
|
|
20
|
+
: '';
|
|
15
21
|
const response = await this.client.messages.create({
|
|
16
22
|
model: 'claude-haiku-4-5-20251001',
|
|
17
23
|
max_tokens: 10,
|
|
18
|
-
system: `You classify user messages as SIMPLE or COMPLEX for an AI coding assistant.
|
|
24
|
+
system: `You classify user messages as SIMPLE, AGENTIC, or COMPLEX for an AI coding assistant that runs inside a project directory.
|
|
19
25
|
|
|
20
|
-
SIMPLE: casual
|
|
26
|
+
SIMPLE: casual greetings, general knowledge questions completely unrelated to the current project, "what is X", "explain Y concept", "how does Z work in general".
|
|
21
27
|
|
|
22
|
-
|
|
28
|
+
AGENTIC: anything that benefits from reading, editing, or exploring the project codebase — file operations, bug fixes, code understanding, "what does this do", "explain this code", "look at X", questions about the project, follow-ups about code shown earlier, running commands. When in doubt between SIMPLE and AGENTIC, prefer AGENTIC.
|
|
23
29
|
|
|
24
|
-
|
|
30
|
+
COMPLEX: abstract architecture questions, design discussions, code review of pasted code, multi-provider comparison, high-level strategy that doesn't need file access.
|
|
31
|
+
${contextHint}
|
|
32
|
+
Respond with ONLY the word SIMPLE, AGENTIC, or COMPLEX.`,
|
|
25
33
|
messages: [{ role: 'user', content: message }],
|
|
26
34
|
});
|
|
27
35
|
const text = response.content
|
|
@@ -30,10 +38,14 @@ Respond with ONLY the word SIMPLE or COMPLEX.`,
|
|
|
30
38
|
.join('')
|
|
31
39
|
.trim()
|
|
32
40
|
.toUpperCase();
|
|
33
|
-
|
|
41
|
+
if (text === 'SIMPLE')
|
|
42
|
+
return 'simple';
|
|
43
|
+
if (text === 'AGENTIC')
|
|
44
|
+
return 'agentic';
|
|
45
|
+
return 'complex';
|
|
34
46
|
}
|
|
35
47
|
catch {
|
|
36
|
-
return 'complex';
|
|
48
|
+
return hadToolUse ? 'agentic' : 'complex';
|
|
37
49
|
}
|
|
38
50
|
}
|
|
39
51
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"complexity-router.js","sourceRoot":"","sources":["../../../src/core/complexity-router.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"complexity-router.js","sourceRoot":"","sources":["../../../src/core/complexity-router.ts"],"names":[],"mappings":"AAAA,OAAO,SAAS,MAAM,mBAAmB,CAAC;AAG1C,MAAM,OAAO,gBAAgB;IAGE;IAFrB,MAAM,GAAqB,IAAI,CAAC;IAExC,YAA6B,MAAc;QAAd,WAAM,GAAN,MAAM,CAAQ;IAAG,CAAC;IAE/C,KAAK,CAAC,QAAQ,CAAC,OAAe,EAAE,UAAiC,EAAE;QACjE,IAAI,CAAC,IAAI,CAAC,MAAM;YAAE,OAAO,SAAS,CAAC;QAEnC,+DAA+D;QAC/D,kEAAkE;QAClE,MAAM,UAAU,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,EAAE,SAAS,IAAI,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;QAEjG,IAAI,CAAC;YACH,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,CAAC;gBACjB,IAAI,CAAC,MAAM,GAAG,IAAI,SAAS,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACvD,CAAC;YAED,MAAM,WAAW,GAAG,UAAU;gBAC5B,CAAC,CAAC,0XAA0X;gBAC5X,CAAC,CAAC,EAAE,CAAC;YAEP,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC;gBACjD,KAAK,EAAE,2BAA2B;gBAClC,UAAU,EAAE,EAAE;gBACd,MAAM,EAAE;;;;;;;EAOd,WAAW;wDAC2C;gBAChD,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,CAAC;aAC/C,CAAC,CAAC;YAEH,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO;iBAC1B,MAAM,CAAC,CAAC,CAAC,EAA4B,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC;iBAC1D,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;iBAClB,IAAI,CAAC,EAAE,CAAC;iBACR,IAAI,EAAE;iBACN,WAAW,EAAE,CAAC;YAEjB,IAAI,IAAI,KAAK,QAAQ;gBAAE,OAAO,QAAQ,CAAC;YACvC,IAAI,IAAI,KAAK,SAAS;gBAAE,OAAO,SAAS,CAAC;YACzC,OAAO,SAAS,CAAC;QACnB,CAAC;QAAC,MAAM,CAAC;YACP,OAAO,UAAU,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC;QAC5C,CAAC;IACH,CAAC;CACF"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import type { SessionInstance } from '../session/session.js';
|
|
2
2
|
import type { AssembledContext } from '../types/context.js';
|
|
3
3
|
export declare class ContextBuilder {
|
|
4
|
-
build(session: SessionInstance, userMessage: string): AssembledContext;
|
|
4
|
+
build(session: SessionInstance, userMessage: string, mode?: 'standard' | 'agentic'): AssembledContext;
|
|
5
5
|
}
|
|
6
6
|
//# sourceMappingURL=context-builder.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../../src/core/context-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,qBAAa,cAAc;IACzB,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,gBAAgB;
|
|
1
|
+
{"version":3,"file":"context-builder.d.ts","sourceRoot":"","sources":["../../../src/core/context-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAE5D,qBAAa,cAAc;IACzB,KAAK,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,SAAS,GAAG,gBAAgB;CA6DtG"}
|
|
@@ -1,7 +1,15 @@
|
|
|
1
1
|
export class ContextBuilder {
|
|
2
|
-
build(session, userMessage) {
|
|
2
|
+
build(session, userMessage, mode) {
|
|
3
3
|
const parts = [];
|
|
4
|
-
|
|
4
|
+
if (mode === 'agentic') {
|
|
5
|
+
parts.push('You are an expert software developer working inside a project directory. You have filesystem tools available and should use them proactively.');
|
|
6
|
+
parts.push('When the user asks about code, the project, or anything that could be answered by looking at files — USE YOUR TOOLS. Read files, list directories, search code. Do not guess or say you cannot access files.');
|
|
7
|
+
parts.push('Always read a file before editing it. Use edit_file for surgical changes instead of rewriting entire files.');
|
|
8
|
+
parts.push(`Project root: ${session.meta.directory}`);
|
|
9
|
+
}
|
|
10
|
+
else {
|
|
11
|
+
parts.push('You are an expert software developer. Generate clean, production-ready code.');
|
|
12
|
+
}
|
|
5
13
|
// Add ticket context
|
|
6
14
|
if (session.context.ticket) {
|
|
7
15
|
const t = session.context.ticket;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../../src/core/context-builder.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,OAAwB,EAAE,WAAmB;
|
|
1
|
+
{"version":3,"file":"context-builder.js","sourceRoot":"","sources":["../../../src/core/context-builder.ts"],"names":[],"mappings":"AAGA,MAAM,OAAO,cAAc;IACzB,KAAK,CAAC,OAAwB,EAAE,WAAmB,EAAE,IAA6B;QAChF,MAAM,KAAK,GAAa,EAAE,CAAC;QAE3B,IAAI,IAAI,KAAK,SAAS,EAAE,CAAC;YACvB,KAAK,CAAC,IAAI,CAAC,+IAA+I,CAAC,CAAC;YAC5J,KAAK,CAAC,IAAI,CAAC,8MAA8M,CAAC,CAAC;YAC3N,KAAK,CAAC,IAAI,CAAC,6GAA6G,CAAC,CAAC;YAC1H,KAAK,CAAC,IAAI,CAAC,iBAAiB,OAAO,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC,CAAC;QACxD,CAAC;aAAM,CAAC;YACN,KAAK,CAAC,IAAI,CAAC,8EAA8E,CAAC,CAAC;QAC7F,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YAC3B,MAAM,CAAC,GAAG,OAAO,CAAC,OAAO,CAAC,MAAM,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,GAAG,EAAE,CAAC,CAAC;YACzC,KAAK,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,IAAI,cAAc,CAAC,CAAC,MAAM,gBAAgB,CAAC,CAAC,QAAQ,EAAE,CAAC,CAAC;YAC9E,IAAI,CAAC,CAAC,WAAW;gBAAE,KAAK,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC,WAAW,EAAE,CAAC,CAAC;YAC/D,IAAI,CAAC,CAAC,kBAAkB;gBAAE,KAAK,CAAC,IAAI,CAAC,wBAAwB,CAAC,CAAC,kBAAkB,EAAE,CAAC,CAAC;YACrF,IAAI,CAAC,CAAC,MAAM,CAAC,MAAM,GAAG,CAAC;gBAAE,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACxE,CAAC;QAED,uCAAuC;QACvC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACpC,KAAK,CAAC,IAAI,CAAC,4BAA4B,CAAC,CAAC;YACzC,KAAK,MAAM,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC;gBACvC,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,KAAK,EAAE,CAAC,CAAC;gBACjC,sDAAsD;gBACtD,MAAM,MAAM,GAAG,IAAI,CAAC;gBACpB,MAAM,OAAO,GAAG,GAAG,CAAC,OAAO,CAAC,MAAM,GAAG,MAAM;oBACzC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,MAAM,CAAC,GAAG,mBAAmB;oBACpD,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC;gBAChB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,qBAAqB;QACrB,IAAI,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAC;YACtC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,YAAY,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,OAAO,CAAC,OAAO,CAAC,aAAa,EAAE,CAAC;YAClC,KAAK,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;YACvC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;YACnB,KAAK,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAC;YACjC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7B,CAAC;QAED,OAAO;YACL,WAAW;YACX,MAAM,EAAE,OAAO,CAAC,OAAO,CAAC,MAAM;YAC9B,SAAS,EAAE,OAAO,CAAC,OAAO,CAAC,IAAI;YAC/B,aAAa,EAAE,OAAO,CAAC,OAAO,CAAC,aAAa;YAC5C,YAAY,EAAE,OAAO,CAAC,OAAO,CAAC,YAAY;YAC1C,aAAa,EAAE,OAAO,CAAC,MAAM;YAC7B,MAAM,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC;SACzB,CAAC;IACJ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../../src/core/judge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAc,WAAW,
|
|
1
|
+
{"version":3,"file":"judge.d.ts","sourceRoot":"","sources":["../../../src/core/judge.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,kBAAkB,EAAc,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAC3F,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAEtD,qBAAa,KAAK;IAId,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IALzB,OAAO,CAAC,MAAM,CAA0B;gBAGrB,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,MAAM;IAG3B,QAAQ,CACZ,eAAe,EAAE,MAAM,EACvB,SAAS,EAAE,kBAAkB,EAAE,GAC9B,OAAO,CAAC,WAAW,CAAC;YAsCT,WAAW;IA6FzB,OAAO,CAAC,gBAAgB;IAgBxB,OAAO,CAAC,YAAY;CAiBrB"}
|
|
@@ -14,6 +14,7 @@ export declare class Orchestrator {
|
|
|
14
14
|
private readonly judge;
|
|
15
15
|
private readonly registry;
|
|
16
16
|
private readonly complexityRouter;
|
|
17
|
+
private activeLoop;
|
|
17
18
|
constructor(config: AppConfig, logger: Logger);
|
|
18
19
|
process(session: SessionInstance, userMessage: string): Promise<OrchestratorResult>;
|
|
19
20
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.d.ts","sourceRoot":"","sources":["../../../src/core/orchestrator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AACnC,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAC7D,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAS3D,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,qBAAa,YAAY;IASrB,OAAO,CAAC,QAAQ,CAAC,MAAM;IACvB,OAAO,CAAC,QAAQ,CAAC,MAAM;IATzB,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAiB;IAChD,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAiB;IACxC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAQ;IAC9B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAmB;IAC5C,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAmB;IACpD,OAAO,CAAC,UAAU,CAA4B;gBAG3B,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,MAAM;IAS3B,OAAO,CAAC,OAAO,EAAE,eAAe,EAAE,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA8H1F"}
|
|
@@ -4,7 +4,8 @@ import { FanOutExecutor } from './fan-out-executor.js';
|
|
|
4
4
|
import { Judge } from './judge.js';
|
|
5
5
|
import { ProviderRegistry } from '../providers/provider-registry.js';
|
|
6
6
|
import { ComplexityRouter } from './complexity-router.js';
|
|
7
|
-
import { renderCompactScores, renderResponse } from '../ui/output-formatter.js';
|
|
7
|
+
import { renderCompactScores, renderResponse, renderAgenticResponse } from '../ui/output-formatter.js';
|
|
8
|
+
import { AgenticLoop } from '../tools/agentic-loop.js';
|
|
8
9
|
export class Orchestrator {
|
|
9
10
|
config;
|
|
10
11
|
logger;
|
|
@@ -13,6 +14,7 @@ export class Orchestrator {
|
|
|
13
14
|
judge;
|
|
14
15
|
registry;
|
|
15
16
|
complexityRouter;
|
|
17
|
+
activeLoop = null;
|
|
16
18
|
constructor(config, logger) {
|
|
17
19
|
this.config = config;
|
|
18
20
|
this.logger = logger;
|
|
@@ -23,17 +25,17 @@ export class Orchestrator {
|
|
|
23
25
|
this.complexityRouter = new ComplexityRouter(config.providers.claude.apiKey);
|
|
24
26
|
}
|
|
25
27
|
async process(session, userMessage) {
|
|
26
|
-
const context = this.contextBuilder.build(session, userMessage);
|
|
27
28
|
const providers = await this.registry.getAvailable();
|
|
28
29
|
if (providers.length === 0) {
|
|
29
30
|
return {
|
|
30
31
|
content: 'No AI providers are configured or available. Check /config and ensure API keys are set.',
|
|
31
32
|
};
|
|
32
33
|
}
|
|
33
|
-
// Classify complexity to decide routing
|
|
34
|
-
const complexity = await this.complexityRouter.classify(userMessage);
|
|
34
|
+
// Classify complexity to decide routing (pass history for context awareness)
|
|
35
|
+
const complexity = await this.complexityRouter.classify(userMessage, session.history);
|
|
35
36
|
// Simple messages → Claude only (fast path)
|
|
36
37
|
if (complexity === 'simple') {
|
|
38
|
+
const context = this.contextBuilder.build(session, userMessage);
|
|
37
39
|
const claude = this.registry.getByName('Claude');
|
|
38
40
|
if (claude) {
|
|
39
41
|
console.log(chalk.dim(' Thinking...\n'));
|
|
@@ -48,6 +50,41 @@ export class Orchestrator {
|
|
|
48
50
|
this.logger.warn({ error: response.error }, 'Claude fast-path failed, falling back to fan-out');
|
|
49
51
|
}
|
|
50
52
|
}
|
|
53
|
+
// Agentic messages → Claude with filesystem tools
|
|
54
|
+
if (complexity === 'agentic') {
|
|
55
|
+
const agenticContext = this.contextBuilder.build(session, userMessage, 'agentic');
|
|
56
|
+
console.log('');
|
|
57
|
+
this.activeLoop = new AgenticLoop(this.config.providers.claude.apiKey, session.meta.directory, {
|
|
58
|
+
onToolCall: (label) => {
|
|
59
|
+
console.log(chalk.dim(` ${label}...`));
|
|
60
|
+
},
|
|
61
|
+
onToolResult: (name, _result, isError) => {
|
|
62
|
+
if (isError) {
|
|
63
|
+
console.log(chalk.red(` Failed: ${name}`));
|
|
64
|
+
}
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
try {
|
|
68
|
+
const result = await this.activeLoop.run(agenticContext.prompt, session.history, userMessage);
|
|
69
|
+
renderAgenticResponse(result.content, result.toolCalls, result.totalTokens);
|
|
70
|
+
return {
|
|
71
|
+
content: result.content,
|
|
72
|
+
metadata: {
|
|
73
|
+
toolCalls: result.toolCalls,
|
|
74
|
+
},
|
|
75
|
+
};
|
|
76
|
+
}
|
|
77
|
+
catch (error) {
|
|
78
|
+
this.logger.error({ error }, 'Agentic loop failed');
|
|
79
|
+
return {
|
|
80
|
+
content: `Agentic execution failed: ${error instanceof Error ? error.message : 'Unknown error'}`,
|
|
81
|
+
};
|
|
82
|
+
}
|
|
83
|
+
finally {
|
|
84
|
+
this.activeLoop = null;
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
const context = this.contextBuilder.build(session, userMessage);
|
|
51
88
|
console.log(chalk.dim(' Thinking...\n'));
|
|
52
89
|
// Fan-out to all providers
|
|
53
90
|
const responses = await this.fanOut.execute(providers, context, session.history);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/core/orchestrator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAK1B,OAAO,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AACtD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,KAAK,EAAE,MAAM,YAAY,CAAC;AACnC,OAAO,EAAE,gBAAgB,EAAE,MAAM,mCAAmC,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;AAC1D,OAAO,EAAE,mBAAmB,EAAE,cAAc,EAAE,MAAM,2BAA2B,CAAC;
|
|
1
|
+
{"version":3,"file":"orchestrator.js","sourceRoot":"","sources":["../../../src/core/orchestrator.ts"],"names":[],"mappings":"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"}
|
package/dist/src/index.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare function main(
|
|
1
|
+
export declare function main(_argv: string[]): Promise<void>;
|
|
2
2
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/src/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAOA,wBAAsB,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAOA,wBAAsB,IAAI,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAqBzD"}
|
package/dist/src/index.js
CHANGED
|
@@ -4,7 +4,7 @@ import { SessionManager } from './session/session-manager.js';
|
|
|
4
4
|
import { AuthManager } from './auth/auth-manager.js';
|
|
5
5
|
import { createLogger } from './ui/logger.js';
|
|
6
6
|
import { needsSetup, runSetupWizard } from './ui/setup-wizard.js';
|
|
7
|
-
export async function main(
|
|
7
|
+
export async function main(_argv) {
|
|
8
8
|
// First-run setup wizard
|
|
9
9
|
if (await needsSetup()) {
|
|
10
10
|
await runSetupWizard();
|
package/dist/src/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,gBAAgB,CAAC;AACtC,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,8BAA8B,CAAC;AAC9D,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAC9C,OAAO,EAAE,UAAU,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAElE,MAAM,CAAC,KAAK,UAAU,IAAI,CAAC,KAAe;IACxC,yBAAyB;IACzB,IAAI,MAAM,UAAU,EAAE,EAAE,CAAC;QACvB,MAAM,cAAc,EAAE,CAAC;IACzB,CAAC;IAED,MAAM,MAAM,GAAG,YAAY,EAAE,CAAC;IAC9B,MAAM,aAAa,GAAG,IAAI,aAAa,EAAE,CAAC;IAC1C,MAAM,MAAM,GAAG,MAAM,aAAa,CAAC,IAAI,EAAE,CAAC;IAE1C,MAAM,WAAW,GAAG,IAAI,WAAW,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACpD,MAAM,cAAc,GAAG,IAAI,cAAc,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,MAAM,CAAC,CAAC;IAEjE,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC;QACpB,MAAM;QACN,WAAW;QACX,cAAc;QACd,MAAM;KACP,CAAC,CAAC;IAEH,MAAM,IAAI,CAAC,KAAK,EAAE,CAAC;AACrB,CAAC"}
|
|
@@ -81,7 +81,7 @@ export class JiraClient {
|
|
|
81
81
|
.join(' ')
|
|
82
82
|
.trim();
|
|
83
83
|
}
|
|
84
|
-
extractCustomField(fields,
|
|
84
|
+
extractCustomField(fields, _label) {
|
|
85
85
|
// Search custom fields for acceptance criteria
|
|
86
86
|
for (const [key, value] of Object.entries(fields)) {
|
|
87
87
|
if (key.startsWith('customfield_') && typeof value === 'string' && value.length > 0) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"jira-client.js","sourceRoot":"","sources":["../../../../src/integrations/atlassian/jira-client.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"jira-client.js","sourceRoot":"","sources":["../../../../src/integrations/atlassian/jira-client.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,13 +1,8 @@
|
|
|
1
|
-
import type { Logger } from 'pino';
|
|
2
|
-
import type { AppConfig } from '../../types/config.js';
|
|
3
1
|
/**
|
|
4
2
|
* Rovo client — future-proofing for Atlassian Rovo AI integration.
|
|
5
3
|
* Currently a placeholder; will be implemented when Rovo MCP API stabilizes.
|
|
6
4
|
*/
|
|
7
5
|
export declare class RovoClient {
|
|
8
|
-
private readonly _config;
|
|
9
|
-
private readonly _logger;
|
|
10
|
-
constructor(_config: AppConfig, _logger: Logger);
|
|
11
6
|
search(_query: string): Promise<unknown[]>;
|
|
12
7
|
}
|
|
13
8
|
//# sourceMappingURL=rovo-client.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rovo-client.d.ts","sourceRoot":"","sources":["../../../../src/integrations/atlassian/rovo-client.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"rovo-client.d.ts","sourceRoot":"","sources":["../../../../src/integrations/atlassian/rovo-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,qBAAa,UAAU;IACf,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,EAAE,CAAC;CAIjD"}
|
|
@@ -3,12 +3,6 @@
|
|
|
3
3
|
* Currently a placeholder; will be implemented when Rovo MCP API stabilizes.
|
|
4
4
|
*/
|
|
5
5
|
export class RovoClient {
|
|
6
|
-
_config;
|
|
7
|
-
_logger;
|
|
8
|
-
constructor(_config, _logger) {
|
|
9
|
-
this._config = _config;
|
|
10
|
-
this._logger = _logger;
|
|
11
|
-
}
|
|
12
6
|
async search(_query) {
|
|
13
7
|
// TODO: Implement Rovo search via MCP or REST API
|
|
14
8
|
return [];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"rovo-client.js","sourceRoot":"","sources":["../../../../src/integrations/atlassian/rovo-client.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"rovo-client.js","sourceRoot":"","sources":["../../../../src/integrations/atlassian/rovo-client.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,MAAM,OAAO,UAAU;IACrB,KAAK,CAAC,MAAM,CAAC,MAAc;QACzB,kDAAkD;QAClD,OAAO,EAAE,CAAC;IACZ,CAAC;CACF"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../../src/repl/commands/help.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,wBAAwB,CAAC;AAE3E,eAAO,MAAM,WAAW,EAAE,
|
|
1
|
+
{"version":3,"file":"help.d.ts","sourceRoot":"","sources":["../../../../src/repl/commands/help.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,YAAY,EAAkB,MAAM,wBAAwB,CAAC;AAE3E,eAAO,MAAM,WAAW,EAAE,YAiCzB,CAAC"}
|
|
@@ -3,8 +3,7 @@ export const helpCommand = {
|
|
|
3
3
|
name: 'help',
|
|
4
4
|
aliases: ['h', '?'],
|
|
5
5
|
description: 'Show available commands',
|
|
6
|
-
async execute(_args,
|
|
7
|
-
const registry = ctx.repl;
|
|
6
|
+
async execute(_args, _ctx) {
|
|
8
7
|
const commands = [
|
|
9
8
|
{ cmd: '/help', desc: 'Show this help message' },
|
|
10
9
|
{ cmd: '/ticket <ID>', desc: 'Fetch/switch Jira ticket context' },
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../../src/repl/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IACnB,WAAW,EAAE,yBAAyB;IACtC,KAAK,CAAC,OAAO,CAAC,KAAyB,EAAE,
|
|
1
|
+
{"version":3,"file":"help.js","sourceRoot":"","sources":["../../../../src/repl/commands/help.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAG1B,MAAM,CAAC,MAAM,WAAW,GAAiB;IACvC,IAAI,EAAE,MAAM;IACZ,OAAO,EAAE,CAAC,GAAG,EAAE,GAAG,CAAC;IACnB,WAAW,EAAE,yBAAyB;IACtC,KAAK,CAAC,OAAO,CAAC,KAAyB,EAAE,IAAoB;QAC3D,MAAM,QAAQ,GAAG;YACf,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,wBAAwB,EAAE;YAChD,EAAE,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,kCAAkC,EAAE;YACjE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,sCAAsC,EAAE;YAClE,EAAE,GAAG,EAAE,WAAW,EAAE,IAAI,EAAE,wBAAwB,EAAE;YACpD,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,2BAA2B,EAAE;YACzD,EAAE,GAAG,EAAE,aAAa,EAAE,IAAI,EAAE,qBAAqB,EAAE;YACnD,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,qBAAqB,EAAE;YAC/C,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,qCAAqC,EAAE;YAC/D,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE,oBAAoB,EAAE;YAC9C,EAAE,GAAG,EAAE,eAAe,EAAE,IAAI,EAAE,yBAAyB,EAAE;YACzD,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,mDAAmD,EAAE;YACrF,EAAE,GAAG,EAAE,iBAAiB,EAAE,IAAI,EAAE,sCAAsC,EAAE;YACxE,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,6BAA6B,EAAE;YACrD,EAAE,GAAG,EAAE,QAAQ,EAAE,IAAI,EAAE,kBAAkB,EAAE;YAC3C,EAAE,GAAG,EAAE,OAAO,EAAE,IAAI,EAAE,iBAAiB,EAAE;SAC1C,CAAC;QAEF,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,uBAAuB,CAAC,CAAC,CAAC;QACjD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,KAAK,MAAM,EAAE,GAAG,EAAE,IAAI,EAAE,IAAI,QAAQ,EAAE,CAAC;YACrC,OAAO,CAAC,GAAG,CAAC,KAAK,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,IAAI,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;QACpE,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,oDAAoD,CAAC,CAAC,CAAC;QAC7E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;CACF,CAAC"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { ConversationMessage } from '../types/message.js';
|
|
2
|
+
export interface ToolCallRecord {
|
|
3
|
+
toolName: string;
|
|
4
|
+
input: unknown;
|
|
5
|
+
isError: boolean;
|
|
6
|
+
}
|
|
7
|
+
export interface AgenticLoopCallbacks {
|
|
8
|
+
onToolCall?: (name: string, input: Record<string, unknown>) => void;
|
|
9
|
+
onToolResult?: (name: string, result: string, isError: boolean) => void;
|
|
10
|
+
}
|
|
11
|
+
export interface AgenticLoopResult {
|
|
12
|
+
content: string;
|
|
13
|
+
toolCalls: ToolCallRecord[];
|
|
14
|
+
totalTokens: number;
|
|
15
|
+
}
|
|
16
|
+
export declare class AgenticLoop {
|
|
17
|
+
private readonly callbacks;
|
|
18
|
+
private client;
|
|
19
|
+
private executor;
|
|
20
|
+
private abortController;
|
|
21
|
+
constructor(apiKey: string, cwd: string, callbacks?: AgenticLoopCallbacks);
|
|
22
|
+
run(systemPrompt: string, history: ConversationMessage[], userMessage: string): Promise<AgenticLoopResult>;
|
|
23
|
+
abort(): void;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=agentic-loop.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentic-loop.d.ts","sourceRoot":"","sources":["../../../src/tools/agentic-loop.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAI/D,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,oBAAoB;IACnC,UAAU,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,IAAI,CAAC;IACpE,YAAY,CAAC,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CACzE;AAED,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,cAAc,EAAE,CAAC;IAC5B,WAAW,EAAE,MAAM,CAAC;CACrB;AAWD,qBAAa,WAAW;IAQpB,OAAO,CAAC,QAAQ,CAAC,SAAS;IAP5B,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAAe;IAC/B,OAAO,CAAC,eAAe,CAAkB;gBAGvC,MAAM,EAAE,MAAM,EACd,GAAG,EAAE,MAAM,EACM,SAAS,GAAE,oBAAyB;IAOjD,GAAG,CACP,YAAY,EAAE,MAAM,EACpB,OAAO,EAAE,mBAAmB,EAAE,EAC9B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,iBAAiB,CAAC;IAgG7B,KAAK,IAAI,IAAI;CAGd"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import Anthropic from '@anthropic-ai/sdk';
|
|
2
|
+
import { FILESYSTEM_TOOLS } from './tool-definitions.js';
|
|
3
|
+
import { ToolExecutor } from './tool-executor.js';
|
|
4
|
+
const TOOL_LABELS = {
|
|
5
|
+
read_file: (i) => `Reading ${i.path}`,
|
|
6
|
+
write_file: (i) => `Writing ${i.path}`,
|
|
7
|
+
edit_file: (i) => `Editing ${i.path}`,
|
|
8
|
+
list_directory: (i) => `Listing ${i.path || '.'}`,
|
|
9
|
+
search_files: (i) => `Searching: ${i.pattern}`,
|
|
10
|
+
run_command: (i) => `Running: ${i.command}`,
|
|
11
|
+
};
|
|
12
|
+
export class AgenticLoop {
|
|
13
|
+
callbacks;
|
|
14
|
+
client;
|
|
15
|
+
executor;
|
|
16
|
+
abortController;
|
|
17
|
+
constructor(apiKey, cwd, callbacks = {}) {
|
|
18
|
+
this.callbacks = callbacks;
|
|
19
|
+
this.client = new Anthropic({ apiKey });
|
|
20
|
+
this.executor = new ToolExecutor(cwd);
|
|
21
|
+
this.abortController = new AbortController();
|
|
22
|
+
}
|
|
23
|
+
async run(systemPrompt, history, userMessage) {
|
|
24
|
+
const messages = [];
|
|
25
|
+
for (const msg of history) {
|
|
26
|
+
if (msg.role === 'user' || msg.role === 'assistant') {
|
|
27
|
+
messages.push({ role: msg.role, content: msg.content });
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
messages.push({ role: 'user', content: userMessage });
|
|
31
|
+
const toolCalls = [];
|
|
32
|
+
let totalTokens = 0;
|
|
33
|
+
const MAX_TURNS = 25;
|
|
34
|
+
for (let turn = 0; turn < MAX_TURNS; turn++) {
|
|
35
|
+
const response = await this.client.messages.create({
|
|
36
|
+
model: 'claude-sonnet-4-6',
|
|
37
|
+
max_tokens: 16384,
|
|
38
|
+
system: systemPrompt,
|
|
39
|
+
messages,
|
|
40
|
+
tools: FILESYSTEM_TOOLS,
|
|
41
|
+
tool_choice: { type: 'auto' },
|
|
42
|
+
}, { signal: this.abortController.signal });
|
|
43
|
+
totalTokens += response.usage.input_tokens + response.usage.output_tokens;
|
|
44
|
+
// Append entire assistant response to messages
|
|
45
|
+
messages.push({ role: 'assistant', content: response.content });
|
|
46
|
+
if (response.stop_reason === 'end_turn') {
|
|
47
|
+
const text = response.content
|
|
48
|
+
.filter((b) => b.type === 'text')
|
|
49
|
+
.map((b) => b.text)
|
|
50
|
+
.join('\n');
|
|
51
|
+
return { content: text, toolCalls, totalTokens };
|
|
52
|
+
}
|
|
53
|
+
if (response.stop_reason === 'tool_use') {
|
|
54
|
+
const toolUseBlocks = response.content.filter((b) => b.type === 'tool_use');
|
|
55
|
+
const toolResults = [];
|
|
56
|
+
for (const block of toolUseBlocks) {
|
|
57
|
+
const input = block.input;
|
|
58
|
+
// Emit progress callback
|
|
59
|
+
const label = TOOL_LABELS[block.name]?.(input) ?? block.name;
|
|
60
|
+
this.callbacks.onToolCall?.(label, input);
|
|
61
|
+
// Execute tool
|
|
62
|
+
const result = await this.executor.execute(block.name, input);
|
|
63
|
+
toolCalls.push({
|
|
64
|
+
toolName: block.name,
|
|
65
|
+
input,
|
|
66
|
+
isError: result.isError,
|
|
67
|
+
});
|
|
68
|
+
this.callbacks.onToolResult?.(block.name, result.content, result.isError);
|
|
69
|
+
toolResults.push({
|
|
70
|
+
type: 'tool_result',
|
|
71
|
+
tool_use_id: block.id,
|
|
72
|
+
content: result.content,
|
|
73
|
+
is_error: result.isError,
|
|
74
|
+
});
|
|
75
|
+
}
|
|
76
|
+
messages.push({ role: 'user', content: toolResults });
|
|
77
|
+
continue;
|
|
78
|
+
}
|
|
79
|
+
// Unexpected stop reason — extract whatever text we have
|
|
80
|
+
const text = response.content
|
|
81
|
+
.filter((b) => b.type === 'text')
|
|
82
|
+
.map((b) => b.text)
|
|
83
|
+
.join('\n');
|
|
84
|
+
return { content: text || '(no response)', toolCalls, totalTokens };
|
|
85
|
+
}
|
|
86
|
+
// Max turns exceeded
|
|
87
|
+
return {
|
|
88
|
+
content: '(Reached maximum tool-use turns)',
|
|
89
|
+
toolCalls,
|
|
90
|
+
totalTokens,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
abort() {
|
|
94
|
+
this.abortController.abort();
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=agentic-loop.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agentic-loop.js","sourceRoot":"","sources":["../../../src/tools/agentic-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-definitions.d.ts","sourceRoot":"","sources":["../../../src/tools/tool-definitions.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,SAAS,MAAM,mBAAmB,CAAC;AAE/C,eAAO,MAAM,gBAAgB,EAAE,SAAS,CAAC,IAAI,EAoH5C,CAAC"}
|
|
@@ -0,0 +1,112 @@
|
|
|
1
|
+
export const FILESYSTEM_TOOLS = [
|
|
2
|
+
{
|
|
3
|
+
name: 'read_file',
|
|
4
|
+
description: 'Read the contents of a file at the given path. Returns the file content as text. Use this to understand existing code before making changes.',
|
|
5
|
+
input_schema: {
|
|
6
|
+
type: 'object',
|
|
7
|
+
properties: {
|
|
8
|
+
path: {
|
|
9
|
+
type: 'string',
|
|
10
|
+
description: 'Relative or absolute path to the file to read',
|
|
11
|
+
},
|
|
12
|
+
},
|
|
13
|
+
required: ['path'],
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
{
|
|
17
|
+
name: 'write_file',
|
|
18
|
+
description: 'Create or overwrite a file with the given content. Parent directories are created automatically. Use this for new files or complete rewrites.',
|
|
19
|
+
input_schema: {
|
|
20
|
+
type: 'object',
|
|
21
|
+
properties: {
|
|
22
|
+
path: {
|
|
23
|
+
type: 'string',
|
|
24
|
+
description: 'Relative or absolute path to the file to write',
|
|
25
|
+
},
|
|
26
|
+
content: {
|
|
27
|
+
type: 'string',
|
|
28
|
+
description: 'The full content to write to the file',
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
required: ['path', 'content'],
|
|
32
|
+
},
|
|
33
|
+
},
|
|
34
|
+
{
|
|
35
|
+
name: 'edit_file',
|
|
36
|
+
description: 'Make a surgical edit to a file by replacing an exact string match. The old_string must appear exactly once in the file. Use this for targeted changes instead of rewriting the entire file.',
|
|
37
|
+
input_schema: {
|
|
38
|
+
type: 'object',
|
|
39
|
+
properties: {
|
|
40
|
+
path: {
|
|
41
|
+
type: 'string',
|
|
42
|
+
description: 'Relative or absolute path to the file to edit',
|
|
43
|
+
},
|
|
44
|
+
old_string: {
|
|
45
|
+
type: 'string',
|
|
46
|
+
description: 'The exact string to find and replace (must be unique in the file)',
|
|
47
|
+
},
|
|
48
|
+
new_string: {
|
|
49
|
+
type: 'string',
|
|
50
|
+
description: 'The replacement string',
|
|
51
|
+
},
|
|
52
|
+
},
|
|
53
|
+
required: ['path', 'old_string', 'new_string'],
|
|
54
|
+
},
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
name: 'list_directory',
|
|
58
|
+
description: 'List files and directories at the given path. Returns entries with type indicators (/ for directories). Defaults to the project root.',
|
|
59
|
+
input_schema: {
|
|
60
|
+
type: 'object',
|
|
61
|
+
properties: {
|
|
62
|
+
path: {
|
|
63
|
+
type: 'string',
|
|
64
|
+
description: 'Relative or absolute path to the directory to list. Defaults to project root.',
|
|
65
|
+
},
|
|
66
|
+
},
|
|
67
|
+
required: [],
|
|
68
|
+
},
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
name: 'search_files',
|
|
72
|
+
description: 'Search for files by glob pattern or search file contents by text/regex. Use type "glob" to find files by name pattern, or type "content" to search inside files.',
|
|
73
|
+
input_schema: {
|
|
74
|
+
type: 'object',
|
|
75
|
+
properties: {
|
|
76
|
+
pattern: {
|
|
77
|
+
type: 'string',
|
|
78
|
+
description: 'Glob pattern (e.g. "**/*.ts") or search string/regex for content search',
|
|
79
|
+
},
|
|
80
|
+
path: {
|
|
81
|
+
type: 'string',
|
|
82
|
+
description: 'Directory to search in. Defaults to project root.',
|
|
83
|
+
},
|
|
84
|
+
type: {
|
|
85
|
+
type: 'string',
|
|
86
|
+
enum: ['glob', 'content'],
|
|
87
|
+
description: 'Search type: "glob" for file name matching, "content" for searching inside files. Defaults to "glob".',
|
|
88
|
+
},
|
|
89
|
+
},
|
|
90
|
+
required: ['pattern'],
|
|
91
|
+
},
|
|
92
|
+
},
|
|
93
|
+
{
|
|
94
|
+
name: 'run_command',
|
|
95
|
+
description: 'Execute a shell command in the project directory. Use this for running tests, linters, build tools, git commands, etc. Commands run with a timeout.',
|
|
96
|
+
input_schema: {
|
|
97
|
+
type: 'object',
|
|
98
|
+
properties: {
|
|
99
|
+
command: {
|
|
100
|
+
type: 'string',
|
|
101
|
+
description: 'The shell command to execute',
|
|
102
|
+
},
|
|
103
|
+
timeout_ms: {
|
|
104
|
+
type: 'number',
|
|
105
|
+
description: 'Timeout in milliseconds (default: 30000, max: 120000)',
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
required: ['command'],
|
|
109
|
+
},
|
|
110
|
+
},
|
|
111
|
+
];
|
|
112
|
+
//# sourceMappingURL=tool-definitions.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-definitions.js","sourceRoot":"","sources":["../../../src/tools/tool-definitions.ts"],"names":[],"mappings":"AAEA,MAAM,CAAC,MAAM,gBAAgB,GAAqB;IAChD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,8IAA8I;QAChJ,YAAY,EAAE;YACZ,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+CAA+C;iBAC7D;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,CAAC;SACnB;KACF;IACD;QACE,IAAI,EAAE,YAAY;QAClB,WAAW,EACT,+IAA+I;QACjJ,YAAY,EAAE;YACZ,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,gDAAgD;iBAC9D;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uCAAuC;iBACrD;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;SAC9B;KACF;IACD;QACE,IAAI,EAAE,WAAW;QACjB,WAAW,EACT,6LAA6L;QAC/L,YAAY,EAAE;YACZ,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+CAA+C;iBAC7D;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mEAAmE;iBACjF;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,wBAAwB;iBACtC;aACF;YACD,QAAQ,EAAE,CAAC,MAAM,EAAE,YAAY,EAAE,YAAY,CAAC;SAC/C;KACF;IACD;QACE,IAAI,EAAE,gBAAgB;QACtB,WAAW,EACT,uIAAuI;QACzI,YAAY,EAAE;YACZ,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,+EAA+E;iBAC7F;aACF;YACD,QAAQ,EAAE,EAAE;SACb;KACF;IACD;QACE,IAAI,EAAE,cAAc;QACpB,WAAW,EACT,kKAAkK;QACpK,YAAY,EAAE;YACZ,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,yEAAyE;iBACvF;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,mDAAmD;iBACjE;gBACD,IAAI,EAAE;oBACJ,IAAI,EAAE,QAAQ;oBACd,IAAI,EAAE,CAAC,MAAM,EAAE,SAAS,CAAC;oBACzB,WAAW,EAAE,uGAAuG;iBACrH;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;IACD;QACE,IAAI,EAAE,aAAa;QACnB,WAAW,EACT,qJAAqJ;QACvJ,YAAY,EAAE;YACZ,IAAI,EAAE,QAAiB;YACvB,UAAU,EAAE;gBACV,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,8BAA8B;iBAC5C;gBACD,UAAU,EAAE;oBACV,IAAI,EAAE,QAAQ;oBACd,WAAW,EAAE,uDAAuD;iBACrE;aACF;YACD,QAAQ,EAAE,CAAC,SAAS,CAAC;SACtB;KACF;CACF,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
export interface ToolResult {
|
|
2
|
+
content: string;
|
|
3
|
+
isError: boolean;
|
|
4
|
+
}
|
|
5
|
+
export declare class ToolExecutor {
|
|
6
|
+
private readonly cwd;
|
|
7
|
+
constructor(cwd: string);
|
|
8
|
+
execute(toolName: string, input: Record<string, unknown>): Promise<ToolResult>;
|
|
9
|
+
private resolveSafe;
|
|
10
|
+
private readFile;
|
|
11
|
+
private writeFile;
|
|
12
|
+
private editFile;
|
|
13
|
+
private listDirectory;
|
|
14
|
+
private searchFiles;
|
|
15
|
+
private collectFiles;
|
|
16
|
+
private runCommand;
|
|
17
|
+
}
|
|
18
|
+
//# sourceMappingURL=tool-executor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-executor.d.ts","sourceRoot":"","sources":["../../../src/tools/tool-executor.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,qBAAa,YAAY;IACX,OAAO,CAAC,QAAQ,CAAC,GAAG;gBAAH,GAAG,EAAE,MAAM;IAElC,OAAO,CAAC,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,UAAU,CAAC;IAmBpF,OAAO,CAAC,WAAW;YAQL,QAAQ;YAiBR,SAAS;YAWT,QAAQ;YAqBR,aAAa;YAWb,WAAW;YAwDX,YAAY;YAgBZ,UAAU;CAsBzB"}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import { readFile, writeFile, readdir, mkdir, stat } from 'node:fs/promises';
|
|
2
|
+
import { resolve, relative, dirname } from 'node:path';
|
|
3
|
+
import { exec } from 'node:child_process';
|
|
4
|
+
import { glob } from 'node:fs/promises';
|
|
5
|
+
export class ToolExecutor {
|
|
6
|
+
cwd;
|
|
7
|
+
constructor(cwd) {
|
|
8
|
+
this.cwd = cwd;
|
|
9
|
+
}
|
|
10
|
+
async execute(toolName, input) {
|
|
11
|
+
switch (toolName) {
|
|
12
|
+
case 'read_file':
|
|
13
|
+
return this.readFile(input.path);
|
|
14
|
+
case 'write_file':
|
|
15
|
+
return this.writeFile(input.path, input.content);
|
|
16
|
+
case 'edit_file':
|
|
17
|
+
return this.editFile(input.path, input.old_string, input.new_string);
|
|
18
|
+
case 'list_directory':
|
|
19
|
+
return this.listDirectory(input.path);
|
|
20
|
+
case 'search_files':
|
|
21
|
+
return this.searchFiles(input.pattern, input.path, input.type);
|
|
22
|
+
case 'run_command':
|
|
23
|
+
return this.runCommand(input.command, input.timeout_ms);
|
|
24
|
+
default:
|
|
25
|
+
return { content: `Unknown tool: ${toolName}`, isError: true };
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
resolveSafe(filePath) {
|
|
29
|
+
const resolved = resolve(this.cwd, filePath);
|
|
30
|
+
if (!resolved.startsWith(this.cwd)) {
|
|
31
|
+
throw new Error(`Path "${filePath}" resolves outside project root`);
|
|
32
|
+
}
|
|
33
|
+
return resolved;
|
|
34
|
+
}
|
|
35
|
+
async readFile(filePath) {
|
|
36
|
+
try {
|
|
37
|
+
const resolved = this.resolveSafe(filePath);
|
|
38
|
+
const content = await readFile(resolved, 'utf-8');
|
|
39
|
+
const MAX_SIZE = 100 * 1024;
|
|
40
|
+
if (content.length > MAX_SIZE) {
|
|
41
|
+
return {
|
|
42
|
+
content: content.slice(0, MAX_SIZE) + '\n\n... (truncated at 100KB)',
|
|
43
|
+
isError: false,
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
return { content, isError: false };
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
return { content: `Error reading file: ${err.message}`, isError: true };
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
async writeFile(filePath, content) {
|
|
53
|
+
try {
|
|
54
|
+
const resolved = this.resolveSafe(filePath);
|
|
55
|
+
await mkdir(dirname(resolved), { recursive: true });
|
|
56
|
+
await writeFile(resolved, content, 'utf-8');
|
|
57
|
+
return { content: `Successfully wrote ${relative(this.cwd, resolved)}`, isError: false };
|
|
58
|
+
}
|
|
59
|
+
catch (err) {
|
|
60
|
+
return { content: `Error writing file: ${err.message}`, isError: true };
|
|
61
|
+
}
|
|
62
|
+
}
|
|
63
|
+
async editFile(filePath, oldString, newString) {
|
|
64
|
+
try {
|
|
65
|
+
const resolved = this.resolveSafe(filePath);
|
|
66
|
+
const content = await readFile(resolved, 'utf-8');
|
|
67
|
+
const occurrences = content.split(oldString).length - 1;
|
|
68
|
+
if (occurrences === 0) {
|
|
69
|
+
return { content: 'Error: old_string not found in file', isError: true };
|
|
70
|
+
}
|
|
71
|
+
if (occurrences > 1) {
|
|
72
|
+
return { content: `Error: old_string found ${occurrences} times (must be unique)`, isError: true };
|
|
73
|
+
}
|
|
74
|
+
const updated = content.replace(oldString, newString);
|
|
75
|
+
await writeFile(resolved, updated, 'utf-8');
|
|
76
|
+
return { content: `Successfully edited ${relative(this.cwd, resolved)}`, isError: false };
|
|
77
|
+
}
|
|
78
|
+
catch (err) {
|
|
79
|
+
return { content: `Error editing file: ${err.message}`, isError: true };
|
|
80
|
+
}
|
|
81
|
+
}
|
|
82
|
+
async listDirectory(dirPath) {
|
|
83
|
+
try {
|
|
84
|
+
const resolved = this.resolveSafe(dirPath || '.');
|
|
85
|
+
const entries = await readdir(resolved, { withFileTypes: true });
|
|
86
|
+
const lines = entries.map((e) => (e.isDirectory() ? `${e.name}/` : e.name));
|
|
87
|
+
return { content: lines.join('\n') || '(empty directory)', isError: false };
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
return { content: `Error listing directory: ${err.message}`, isError: true };
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
async searchFiles(pattern, searchPath, type) {
|
|
94
|
+
try {
|
|
95
|
+
const baseDir = this.resolveSafe(searchPath || '.');
|
|
96
|
+
const searchType = type || 'glob';
|
|
97
|
+
if (searchType === 'glob') {
|
|
98
|
+
const matches = [];
|
|
99
|
+
for await (const entry of glob(pattern, { cwd: baseDir })) {
|
|
100
|
+
matches.push(entry);
|
|
101
|
+
if (matches.length >= 200)
|
|
102
|
+
break;
|
|
103
|
+
}
|
|
104
|
+
if (matches.length === 0) {
|
|
105
|
+
return { content: 'No files matched the pattern', isError: false };
|
|
106
|
+
}
|
|
107
|
+
const suffix = matches.length >= 200 ? '\n... (truncated at 200 results)' : '';
|
|
108
|
+
return { content: matches.join('\n') + suffix, isError: false };
|
|
109
|
+
}
|
|
110
|
+
// Content search: line-by-line grep
|
|
111
|
+
const files = await this.collectFiles(baseDir);
|
|
112
|
+
const results = [];
|
|
113
|
+
let totalMatches = 0;
|
|
114
|
+
const MAX_MATCHES = 100;
|
|
115
|
+
for (const file of files) {
|
|
116
|
+
if (totalMatches >= MAX_MATCHES)
|
|
117
|
+
break;
|
|
118
|
+
try {
|
|
119
|
+
const fileStat = await stat(file);
|
|
120
|
+
if (fileStat.size > 512 * 1024)
|
|
121
|
+
continue; // skip files > 512KB
|
|
122
|
+
const content = await readFile(file, 'utf-8');
|
|
123
|
+
const lines = content.split('\n');
|
|
124
|
+
const regex = new RegExp(pattern, 'i');
|
|
125
|
+
for (let i = 0; i < lines.length; i++) {
|
|
126
|
+
if (totalMatches >= MAX_MATCHES)
|
|
127
|
+
break;
|
|
128
|
+
if (regex.test(lines[i])) {
|
|
129
|
+
results.push(`${relative(this.cwd, file)}:${i + 1}: ${lines[i].trim()}`);
|
|
130
|
+
totalMatches++;
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch {
|
|
135
|
+
// Skip unreadable files
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
if (results.length === 0) {
|
|
139
|
+
return { content: 'No matches found', isError: false };
|
|
140
|
+
}
|
|
141
|
+
const suffix = totalMatches >= MAX_MATCHES ? '\n... (truncated at 100 matches)' : '';
|
|
142
|
+
return { content: results.join('\n') + suffix, isError: false };
|
|
143
|
+
}
|
|
144
|
+
catch (err) {
|
|
145
|
+
return { content: `Error searching files: ${err.message}`, isError: true };
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
async collectFiles(dir, depth = 0) {
|
|
149
|
+
if (depth > 8)
|
|
150
|
+
return [];
|
|
151
|
+
const files = [];
|
|
152
|
+
const entries = await readdir(dir, { withFileTypes: true });
|
|
153
|
+
for (const entry of entries) {
|
|
154
|
+
if (entry.name.startsWith('.') || entry.name === 'node_modules' || entry.name === 'dist')
|
|
155
|
+
continue;
|
|
156
|
+
const fullPath = resolve(dir, entry.name);
|
|
157
|
+
if (entry.isDirectory()) {
|
|
158
|
+
files.push(...(await this.collectFiles(fullPath, depth + 1)));
|
|
159
|
+
}
|
|
160
|
+
else {
|
|
161
|
+
files.push(fullPath);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
return files;
|
|
165
|
+
}
|
|
166
|
+
async runCommand(command, timeoutMs) {
|
|
167
|
+
const timeout = Math.min(timeoutMs || 30_000, 120_000);
|
|
168
|
+
return new Promise((resolve) => {
|
|
169
|
+
const child = exec(command, { cwd: this.cwd, timeout, maxBuffer: 1024 * 1024 }, (error, stdout, stderr) => {
|
|
170
|
+
const output = [stdout, stderr].filter(Boolean).join('\n').trim();
|
|
171
|
+
if (error) {
|
|
172
|
+
if (error.killed) {
|
|
173
|
+
resolve({ content: `Command timed out after ${timeout}ms`, isError: true });
|
|
174
|
+
}
|
|
175
|
+
else {
|
|
176
|
+
resolve({ content: output || error.message, isError: true });
|
|
177
|
+
}
|
|
178
|
+
return;
|
|
179
|
+
}
|
|
180
|
+
resolve({ content: output || '(no output)', isError: false });
|
|
181
|
+
});
|
|
182
|
+
child.stdin?.end();
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
//# sourceMappingURL=tool-executor.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tool-executor.js","sourceRoot":"","sources":["../../../src/tools/tool-executor.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,5 +9,10 @@ export interface ConversationMessage {
|
|
|
9
9
|
export interface MessageMetadata {
|
|
10
10
|
providerScores?: JudgeResult;
|
|
11
11
|
contextSnapshot?: string;
|
|
12
|
+
toolCalls?: {
|
|
13
|
+
toolName: string;
|
|
14
|
+
input: unknown;
|
|
15
|
+
isError: boolean;
|
|
16
|
+
}[];
|
|
12
17
|
}
|
|
13
18
|
//# sourceMappingURL=message.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/types/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/types/message.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEpD,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,WAAW,GAAG,QAAQ,CAAC;AAE1D,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,WAAW,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,eAAe,CAAC;CAC5B;AAED,MAAM,WAAW,eAAe;IAC9B,cAAc,CAAC,EAAE,WAAW,CAAC;IAC7B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,EAAE,CAAC;CACtE"}
|
|
@@ -1,7 +1,9 @@
|
|
|
1
1
|
import type { JudgeScore, CodeOutput } from '../types/ai-response.js';
|
|
2
|
+
import type { ToolCallRecord } from '../tools/agentic-loop.js';
|
|
2
3
|
export declare function renderScoreTable(scores: JudgeScore[]): void;
|
|
3
4
|
export declare function renderCompactScores(scores: JudgeScore[]): void;
|
|
4
5
|
export declare function renderResponse(output: CodeOutput): void;
|
|
6
|
+
export declare function renderAgenticResponse(text: string, toolCalls: ToolCallRecord[], totalTokens: number): void;
|
|
5
7
|
/** @deprecated Use renderCompactScores + renderResponse instead */
|
|
6
8
|
export declare function renderWinnerCode(winner: string, output: CodeOutput): void;
|
|
7
9
|
//# sourceMappingURL=output-formatter.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-formatter.d.ts","sourceRoot":"","sources":["../../../src/ui/output-formatter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"output-formatter.d.ts","sourceRoot":"","sources":["../../../src/ui/output-formatter.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,yBAAyB,CAAC;AACtE,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAE/D,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAgC3D;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,UAAU,EAAE,GAAG,IAAI,CAa9D;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,UAAU,GAAG,IAAI,CAgBvD;AAED,wBAAgB,qBAAqB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,cAAc,EAAE,EAAE,WAAW,EAAE,MAAM,GAAG,IAAI,CA0B1G;AAED,mEAAmE;AACnE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,GAAG,IAAI,CAazE"}
|
|
@@ -58,6 +58,29 @@ export function renderResponse(output) {
|
|
|
58
58
|
}
|
|
59
59
|
console.log('');
|
|
60
60
|
}
|
|
61
|
+
export function renderAgenticResponse(text, toolCalls, totalTokens) {
|
|
62
|
+
if (text) {
|
|
63
|
+
console.log('');
|
|
64
|
+
for (const line of text.split('\n')) {
|
|
65
|
+
console.log(` ${line}`);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
// Build summary counts
|
|
69
|
+
const counts = {};
|
|
70
|
+
for (const tc of toolCalls) {
|
|
71
|
+
const key = tc.toolName.replace('_file', '').replace('_directory', '').replace('_files', '').replace('_command', '');
|
|
72
|
+
counts[key] = (counts[key] || 0) + 1;
|
|
73
|
+
}
|
|
74
|
+
const parts = Object.entries(counts).map(([k, v]) => `${v} ${k}`);
|
|
75
|
+
const tokenStr = totalTokens >= 1000
|
|
76
|
+
? `${(totalTokens / 1000).toFixed(1).replace(/\.0$/, '')}k`
|
|
77
|
+
: String(totalTokens);
|
|
78
|
+
if (parts.length > 0) {
|
|
79
|
+
console.log('');
|
|
80
|
+
console.log(chalk.dim(` [${parts.join(', ')} | ${tokenStr} tokens]`));
|
|
81
|
+
}
|
|
82
|
+
console.log('');
|
|
83
|
+
}
|
|
61
84
|
/** @deprecated Use renderCompactScores + renderResponse instead */
|
|
62
85
|
export function renderWinnerCode(winner, output) {
|
|
63
86
|
console.log(chalk.green.bold(` Winner: ${winner}`));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"output-formatter.js","sourceRoot":"","sources":["../../../src/ui/output-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"output-formatter.js","sourceRoot":"","sources":["../../../src/ui/output-formatter.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,YAAY,CAAC;AAI/B,MAAM,UAAU,gBAAgB,CAAC,MAAoB;IACnD,MAAM,KAAK,GAAG,IAAI,KAAK,CAAC;QACtB,IAAI,EAAE;YACJ,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC;YACtB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC;YAClB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC;YACjB,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC;SACpB;QACD,KAAK,EAAE,EAAE,IAAI,EAAE,EAAE,EAAE,MAAM,EAAE,EAAE,EAAE;QAC/B,SAAS,EAAE,CAAC,MAAM,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,EAAE,QAAQ,CAAC;KAChF,CAAC,CAAC;IAEH,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,QAAQ,GAAG,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,CAAC;QACrC,MAAM,GAAG,GAAG,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,KAAK,CAAC;QAEtD,KAAK,CAAC,IAAI,CAAC;YACT,GAAG,CAAC,KAAK,CAAC,YAAY,CAAC;YACvB,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;YAC9B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAC5B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;YAC/B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;YAC3B,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC;SAC9B,CAAC,CAAC;IACL,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,QAAQ,EAAE,CAAC,CAAC;IAC9B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,mBAAmB,CAAC,MAAoB;IACtD,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO;IAEhC,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE;QAChC,MAAM,IAAI,GAAG,CAAC,CAAC,YAAY,CAAC;QAC5B,MAAM,KAAK,GAAG,MAAM,CAAC,CAAC,CAAC,UAAU,CAAC,CAAC;QACnC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC;YACZ,OAAO,KAAK,CAAC,KAAK,CAAC,GAAG,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QACzE,CAAC;QACD,OAAO,KAAK,CAAC,GAAG,CAAC,GAAG,IAAI,IAAI,KAAK,EAAE,CAAC,CAAC;IACvC,CAAC,CAAC,CAAC;IAEH,OAAO,CAAC,GAAG,CAAC,OAAO,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,UAAU,cAAc,CAAC,MAAkB;IAC/C,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,IAAI,MAAM,CAAC,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,IAAI,CAAC,IAAI,EAAE,CAAC,GAAG,KAAK,CAAC,GAAG,CAAC,KAAK,IAAI,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC;QAC/E,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,MAAM,UAAU,qBAAqB,CAAC,IAAY,EAAE,SAA2B,EAAE,WAAmB;IAClG,IAAI,IAAI,EAAE,CAAC;QACT,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,KAAK,MAAM,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC;IACH,CAAC;IAED,uBAAuB;IACvB,MAAM,MAAM,GAA2B,EAAE,CAAC;IAC1C,KAAK,MAAM,EAAE,IAAI,SAAS,EAAE,CAAC;QAC3B,MAAM,GAAG,GAAG,EAAE,CAAC,QAAQ,CAAC,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC,CAAC;QACrH,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC;IACvC,CAAC;IAED,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IAClE,MAAM,QAAQ,GAAG,WAAW,IAAI,IAAI;QAClC,CAAC,CAAC,GAAG,CAAC,WAAW,GAAG,IAAI,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,EAAE,EAAE,CAAC,GAAG;QAC3D,CAAC,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;IAExB,IAAI,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACrB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,QAAQ,UAAU,CAAC,CAAC,CAAC;IACzE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC;AAED,mEAAmE;AACnE,MAAM,UAAU,gBAAgB,CAAC,MAAc,EAAE,MAAkB;IACjE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,aAAa,MAAM,EAAE,CAAC,CAAC,CAAC;IACrD,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAEhB,IAAI,MAAM,CAAC,IAAI,EAAE,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;QACpE,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC;QAC3B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,2CAA2C,CAAC,CAAC,CAAC;IACtE,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;AAClB,CAAC"}
|
package/dist/src/ui/welcome.js
CHANGED