@sdsrs/codeagent 0.1.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/LICENSE +21 -0
- package/README.md +116 -0
- package/dist/adapters/code-graph.d.ts +18 -0
- package/dist/adapters/code-graph.d.ts.map +1 -0
- package/dist/adapters/code-graph.js +151 -0
- package/dist/adapters/code-graph.js.map +1 -0
- package/dist/adapters/memory.d.ts +13 -0
- package/dist/adapters/memory.d.ts.map +1 -0
- package/dist/adapters/memory.js +110 -0
- package/dist/adapters/memory.js.map +1 -0
- package/dist/adapters/orchestration/gsd.d.ts +20 -0
- package/dist/adapters/orchestration/gsd.d.ts.map +1 -0
- package/dist/adapters/orchestration/gsd.js +78 -0
- package/dist/adapters/orchestration/gsd.js.map +1 -0
- package/dist/adapters/orchestration/interface.d.ts +32 -0
- package/dist/adapters/orchestration/interface.d.ts.map +1 -0
- package/dist/adapters/orchestration/interface.js +2 -0
- package/dist/adapters/orchestration/interface.js.map +1 -0
- package/dist/adapters/orchestration/superpowers.d.ts +33 -0
- package/dist/adapters/orchestration/superpowers.d.ts.map +1 -0
- package/dist/adapters/orchestration/superpowers.js +117 -0
- package/dist/adapters/orchestration/superpowers.js.map +1 -0
- package/dist/broker/broker.d.ts +40 -0
- package/dist/broker/broker.d.ts.map +1 -0
- package/dist/broker/broker.js +181 -0
- package/dist/broker/broker.js.map +1 -0
- package/dist/broker/compressor.d.ts +7 -0
- package/dist/broker/compressor.d.ts.map +1 -0
- package/dist/broker/compressor.js +61 -0
- package/dist/broker/compressor.js.map +1 -0
- package/dist/broker/context-pack.d.ts +126 -0
- package/dist/broker/context-pack.d.ts.map +1 -0
- package/dist/broker/context-pack.js +103 -0
- package/dist/broker/context-pack.js.map +1 -0
- package/dist/broker/query-parser.d.ts +17 -0
- package/dist/broker/query-parser.d.ts.map +1 -0
- package/dist/broker/query-parser.js +127 -0
- package/dist/broker/query-parser.js.map +1 -0
- package/dist/cli/commands/chat.d.ts +13 -0
- package/dist/cli/commands/chat.d.ts.map +1 -0
- package/dist/cli/commands/chat.js +264 -0
- package/dist/cli/commands/chat.js.map +1 -0
- package/dist/cli/commands/config.d.ts +14 -0
- package/dist/cli/commands/config.d.ts.map +1 -0
- package/dist/cli/commands/config.js +94 -0
- package/dist/cli/commands/config.js.map +1 -0
- package/dist/cli/commands/memory.d.ts +10 -0
- package/dist/cli/commands/memory.d.ts.map +1 -0
- package/dist/cli/commands/memory.js +52 -0
- package/dist/cli/commands/memory.js.map +1 -0
- package/dist/cli/commands/search.d.ts +9 -0
- package/dist/cli/commands/search.d.ts.map +1 -0
- package/dist/cli/commands/search.js +45 -0
- package/dist/cli/commands/search.js.map +1 -0
- package/dist/cli/commands/session.d.ts +9 -0
- package/dist/cli/commands/session.d.ts.map +1 -0
- package/dist/cli/commands/session.js +86 -0
- package/dist/cli/commands/session.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +77 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/tui/renderer.d.ts +47 -0
- package/dist/cli/tui/renderer.d.ts.map +1 -0
- package/dist/cli/tui/renderer.js +237 -0
- package/dist/cli/tui/renderer.js.map +1 -0
- package/dist/hooks/session-start.d.ts +11 -0
- package/dist/hooks/session-start.d.ts.map +1 -0
- package/dist/hooks/session-start.js +51 -0
- package/dist/hooks/session-start.js.map +1 -0
- package/dist/hooks/stop.d.ts +11 -0
- package/dist/hooks/stop.d.ts.map +1 -0
- package/dist/hooks/stop.js +93 -0
- package/dist/hooks/stop.js.map +1 -0
- package/dist/hooks/user-prompt.d.ts +12 -0
- package/dist/hooks/user-prompt.d.ts.map +1 -0
- package/dist/hooks/user-prompt.js +46 -0
- package/dist/hooks/user-prompt.js.map +1 -0
- package/dist/providers/anthropic-api.d.ts +25 -0
- package/dist/providers/anthropic-api.d.ts.map +1 -0
- package/dist/providers/anthropic-api.js +93 -0
- package/dist/providers/anthropic-api.js.map +1 -0
- package/dist/providers/claude-cli.d.ts +16 -0
- package/dist/providers/claude-cli.d.ts.map +1 -0
- package/dist/providers/claude-cli.js +72 -0
- package/dist/providers/claude-cli.js.map +1 -0
- package/dist/providers/claude-sdk.d.ts +18 -0
- package/dist/providers/claude-sdk.d.ts.map +1 -0
- package/dist/providers/claude-sdk.js +141 -0
- package/dist/providers/claude-sdk.js.map +1 -0
- package/dist/providers/interface.d.ts +36 -0
- package/dist/providers/interface.d.ts.map +1 -0
- package/dist/providers/interface.js +2 -0
- package/dist/providers/interface.js.map +1 -0
- package/dist/scripts/install-hooks.d.ts +11 -0
- package/dist/scripts/install-hooks.d.ts.map +1 -0
- package/dist/scripts/install-hooks.js +86 -0
- package/dist/scripts/install-hooks.js.map +1 -0
- package/dist/session/manager.d.ts +65 -0
- package/dist/session/manager.d.ts.map +1 -0
- package/dist/session/manager.js +143 -0
- package/dist/session/manager.js.map +1 -0
- package/dist/session/schema.d.ts +7 -0
- package/dist/session/schema.d.ts.map +1 -0
- package/dist/session/schema.js +82 -0
- package/dist/session/schema.js.map +1 -0
- package/dist/utils/exec.d.ts +20 -0
- package/dist/utils/exec.d.ts.map +1 -0
- package/dist/utils/exec.js +28 -0
- package/dist/utils/exec.js.map +1 -0
- package/dist/utils/tokens.d.ts +12 -0
- package/dist/utils/tokens.d.ts.map +1 -0
- package/dist/utils/tokens.js +38 -0
- package/dist/utils/tokens.js.map +1 -0
- package/package.json +90 -0
- package/src/skills/brainstorm.md +33 -0
- package/src/skills/review.md +41 -0
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
// --- Stage definitions ---
|
|
3
|
+
export const StageValues = [
|
|
4
|
+
'brainstorm',
|
|
5
|
+
'plan',
|
|
6
|
+
'implement',
|
|
7
|
+
'review',
|
|
8
|
+
'debug',
|
|
9
|
+
'general',
|
|
10
|
+
];
|
|
11
|
+
export const StageSchema = z.enum(StageValues);
|
|
12
|
+
// --- ContextPack types ---
|
|
13
|
+
export const RelevantFileSchema = z.object({
|
|
14
|
+
path: z.string(),
|
|
15
|
+
reason: z.string(),
|
|
16
|
+
symbols: z.array(z.string()).optional(),
|
|
17
|
+
snippet: z.string().optional(),
|
|
18
|
+
});
|
|
19
|
+
export const SymbolInfoSchema = z.object({
|
|
20
|
+
name: z.string(),
|
|
21
|
+
kind: z.string(), // function, class, method, etc.
|
|
22
|
+
file: z.string(),
|
|
23
|
+
callers: z.array(z.string()).optional(),
|
|
24
|
+
callees: z.array(z.string()).optional(),
|
|
25
|
+
});
|
|
26
|
+
export const MemoryEntrySchema = z.object({
|
|
27
|
+
id: z.number().optional(),
|
|
28
|
+
type: z.string(), // bugfix, decision, discovery, semantic, episodic, task
|
|
29
|
+
title: z.string(),
|
|
30
|
+
body: z.string(),
|
|
31
|
+
confidence: z.number().optional(),
|
|
32
|
+
});
|
|
33
|
+
export const TaskSummarySchema = z.object({
|
|
34
|
+
id: z.string(),
|
|
35
|
+
title: z.string(),
|
|
36
|
+
status: z.string(),
|
|
37
|
+
});
|
|
38
|
+
export const SpecSummarySchema = z.object({
|
|
39
|
+
id: z.string().optional(),
|
|
40
|
+
title: z.string(),
|
|
41
|
+
stage: z.string().optional(),
|
|
42
|
+
summary: z.string().optional(),
|
|
43
|
+
});
|
|
44
|
+
export const ContextPackSchema = z.object({
|
|
45
|
+
// From Code Graph
|
|
46
|
+
repoSummary: z.string().optional(),
|
|
47
|
+
relevantFiles: z.array(RelevantFileSchema),
|
|
48
|
+
relatedSymbols: z.array(SymbolInfoSchema),
|
|
49
|
+
// From Memory Engine
|
|
50
|
+
priorMemories: z.array(MemoryEntrySchema),
|
|
51
|
+
bugWarnings: z.array(MemoryEntrySchema),
|
|
52
|
+
// From Orchestration
|
|
53
|
+
currentStage: StageSchema.optional(),
|
|
54
|
+
activeSpec: SpecSummarySchema.optional(),
|
|
55
|
+
pendingTasks: z.array(TaskSummarySchema),
|
|
56
|
+
// Broker-generated
|
|
57
|
+
suggestedApproach: z.string().optional(),
|
|
58
|
+
risks: z.array(z.string()),
|
|
59
|
+
});
|
|
60
|
+
// --- Broker input ---
|
|
61
|
+
export const BrokerInputSchema = z.object({
|
|
62
|
+
repoRoot: z.string(),
|
|
63
|
+
sessionId: z.string().optional(),
|
|
64
|
+
userQuery: z.string(),
|
|
65
|
+
stage: StageSchema.optional(),
|
|
66
|
+
changedFiles: z.array(z.string()).optional(),
|
|
67
|
+
currentBranch: z.string().optional(),
|
|
68
|
+
});
|
|
69
|
+
// --- Token budget ---
|
|
70
|
+
export const TokenBudgetSchema = z.object({
|
|
71
|
+
code: z.number().default(800),
|
|
72
|
+
memory: z.number().default(600),
|
|
73
|
+
orch: z.number().default(300),
|
|
74
|
+
meta: z.number().default(300),
|
|
75
|
+
});
|
|
76
|
+
export const DEFAULT_BUDGET = {
|
|
77
|
+
code: 800,
|
|
78
|
+
memory: 600,
|
|
79
|
+
orch: 300,
|
|
80
|
+
meta: 300,
|
|
81
|
+
};
|
|
82
|
+
// --- Empty ContextPack factory ---
|
|
83
|
+
export function emptyContextPack() {
|
|
84
|
+
return {
|
|
85
|
+
relevantFiles: [],
|
|
86
|
+
relatedSymbols: [],
|
|
87
|
+
priorMemories: [],
|
|
88
|
+
bugWarnings: [],
|
|
89
|
+
pendingTasks: [],
|
|
90
|
+
risks: [],
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
// --- Check if pack has content worth injecting ---
|
|
94
|
+
export function hasContent(pack) {
|
|
95
|
+
return (pack.relevantFiles.length > 0 ||
|
|
96
|
+
pack.relatedSymbols.length > 0 ||
|
|
97
|
+
pack.priorMemories.length > 0 ||
|
|
98
|
+
pack.bugWarnings.length > 0 ||
|
|
99
|
+
pack.pendingTasks.length > 0 ||
|
|
100
|
+
!!pack.activeSpec ||
|
|
101
|
+
!!pack.repoSummary);
|
|
102
|
+
}
|
|
103
|
+
//# sourceMappingURL=context-pack.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context-pack.js","sourceRoot":"","sources":["../../src/broker/context-pack.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import type { Stage } from './context-pack.js';
|
|
2
|
+
export interface ParsedQuery {
|
|
3
|
+
/** File paths extracted from the message (e.g. src/foo/bar.ts) */
|
|
4
|
+
filePaths: string[];
|
|
5
|
+
/** Symbol candidates (camelCase, snake_case, PascalCase, Foo::bar) */
|
|
6
|
+
symbols: string[];
|
|
7
|
+
/** Keywords after stop-word removal */
|
|
8
|
+
keywords: string[];
|
|
9
|
+
/** Detected intent */
|
|
10
|
+
intent: 'impact' | 'understand' | 'callgraph' | 'search' | 'implement' | 'debug' | 'general';
|
|
11
|
+
/** Implied stage from query content */
|
|
12
|
+
impliedStage?: Stage;
|
|
13
|
+
/** True for action-only commands that don't need context (e.g. "提交", "yes") */
|
|
14
|
+
isActionOnly: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare function parseQuery(message: string): ParsedQuery;
|
|
17
|
+
//# sourceMappingURL=query-parser.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-parser.d.ts","sourceRoot":"","sources":["../../src/broker/query-parser.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAI/C,MAAM,WAAW,WAAW;IAC1B,kEAAkE;IAClE,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,sEAAsE;IACtE,OAAO,EAAE,MAAM,EAAE,CAAC;IAClB,uCAAuC;IACvC,QAAQ,EAAE,MAAM,EAAE,CAAC;IACnB,sBAAsB;IACtB,MAAM,EAAE,QAAQ,GAAG,YAAY,GAAG,WAAW,GAAG,QAAQ,GAAG,WAAW,GAAG,OAAO,GAAG,SAAS,CAAC;IAC7F,uCAAuC;IACvC,YAAY,CAAC,EAAE,KAAK,CAAC;IACrB,+EAA+E;IAC/E,YAAY,EAAE,OAAO,CAAC;CACvB;AAuED,wBAAgB,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,WAAW,CA0FvD"}
|
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
// --- Constants ---
|
|
2
|
+
const STOP_WORDS = new Set([
|
|
3
|
+
'this', 'that', 'with', 'from', 'what', 'when', 'which', 'there',
|
|
4
|
+
'their', 'these', 'those', 'have', 'been', 'some', 'will', 'would',
|
|
5
|
+
'could', 'should', 'about', 'after', 'before', 'other', 'every',
|
|
6
|
+
'where', 'while', 'first', 'under', 'still', 'between', 'without',
|
|
7
|
+
'being', 'through', 'default', 'function', 'method', 'class',
|
|
8
|
+
'the', 'and', 'for', 'are', 'but', 'not', 'you', 'all', 'can',
|
|
9
|
+
'her', 'was', 'one', 'our', 'out', 'let', 'use', 'just', 'like',
|
|
10
|
+
'how', 'its', 'also', 'into', 'only', 'then', 'than', 'very',
|
|
11
|
+
'make', 'made', 'does', 'did', 'get', 'got', 'set', 'put',
|
|
12
|
+
]);
|
|
13
|
+
// Action-only patterns: simple confirmations and commands without code entities
|
|
14
|
+
const ACTION_ONLY_RE = /^(yes|no|ok|commit|push|y|n|done|thanks|thank you|继续|确认|好的|好|是的|不|可以|行|对|提交|推送|没问题|谢谢|发布|更新|编译|安装|卸载|重启|重连|清理)\s*[.!?。!?]?\s*$/i;
|
|
15
|
+
// Short action prefix without code entities
|
|
16
|
+
const ACTION_PREFIX_RE = /^(修复|优化|实施|执行|开始|按|实测|帮我|进入|用|重新)/;
|
|
17
|
+
// File path patterns
|
|
18
|
+
const FILE_PATH_RE = /(?:src|lib|test|tests|pkg|cmd|internal|app|components?)\/[\w/.-]+/g;
|
|
19
|
+
// Symbol patterns: camelCase, snake_case, PascalCase, Foo::bar, foo.bar.baz
|
|
20
|
+
const SYMBOL_RE = /\b(?:[A-Z]\w*(?:::\w+)+|[a-z]\w*(?:_\w+){1,}|[a-z]\w*(?:[A-Z]\w*)+|[A-Z][a-zA-Z]+(?:\.[a-z]\w*)+)\b/g;
|
|
21
|
+
// --- Intent detection regexes ---
|
|
22
|
+
const INTENT_IMPACT_RE = /(?:impact|影响|修改前|改之前|blast radius|before (?:edit|chang|modif)|risk|风险|改动范围|波及|问题在|干扰|冲突|卡)/i;
|
|
23
|
+
const INTENT_UNDERSTAND_RE = /(?:how does|怎么工作|怎么实现|怎么做|什么|理解|看看|看一下|了解|分析|explain|understand|架构|architecture|structure|overview|模块|概览|干什么|做什么|工作原理|逻辑|机制|流程|功能|结合度|效率|评估|调研|是什么|有什么|能用不|高效不|达标|起作用|科学|深入思考|源码)/i;
|
|
24
|
+
const INTENT_CALLGRAPH_RE = /(?:who calls|what calls|调用|call(?:graph|er|ee)|trace|链路|追踪|谁调|被谁调|调了谁|上下游|依赖关系|触发|路径|覆盖|介入)/i;
|
|
25
|
+
const INTENT_SEARCH_RE = /(?:where is|在哪|find|search|搜索|找|locate|哪里用|哪里定义|定义在|实现在|处理没|在源码|加不加)/i;
|
|
26
|
+
const INTENT_IMPLEMENT_RE = /(?:implement|实现|写|创建|添加|加|新增|create|add|write|build|make|coding|编程|开发|做一个|帮我做|帮我写)/i;
|
|
27
|
+
const INTENT_DEBUG_RE = /(?:bug|error|错误|报错|失败|crash|异常|不工作|broken|fix|修复|debug|调试|排查|问题|出错|不对|日志|log)/i;
|
|
28
|
+
// --- Stage inference ---
|
|
29
|
+
const STAGE_BRAINSTORM_RE = /(?:brainstorm|分析|调研|了解|research|analyze|explore|思考|讨论|评估|方案|设计|architecture|design|规划)/i;
|
|
30
|
+
const STAGE_PLAN_RE = /(?:plan|计划|规划|spec|specification|任务|task|拆分|分解|step|步骤|outline)/i;
|
|
31
|
+
const STAGE_IMPLEMENT_RE = /(?:implement|实现|写代码|coding|code|开发|编程|创建|create|build|做)/i;
|
|
32
|
+
const STAGE_REVIEW_RE = /(?:review|审查|检查|check|看看|verify|验证|质量|quality|测试|test)/i;
|
|
33
|
+
const STAGE_DEBUG_RE = /(?:debug|调试|排查|fix|修复|bug|error|错误|问题)/i;
|
|
34
|
+
// --- Main parser ---
|
|
35
|
+
export function parseQuery(message) {
|
|
36
|
+
const trimmed = message.trim();
|
|
37
|
+
// Check action-only first
|
|
38
|
+
if (ACTION_ONLY_RE.test(trimmed)) {
|
|
39
|
+
return {
|
|
40
|
+
filePaths: [],
|
|
41
|
+
symbols: [],
|
|
42
|
+
keywords: [],
|
|
43
|
+
intent: 'general',
|
|
44
|
+
isActionOnly: true,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
// Check action prefix without code entities
|
|
48
|
+
if (ACTION_PREFIX_RE.test(trimmed) && !/[a-zA-Z_]{4,}/.test(trimmed)) {
|
|
49
|
+
return {
|
|
50
|
+
filePaths: [],
|
|
51
|
+
symbols: [],
|
|
52
|
+
keywords: [],
|
|
53
|
+
intent: 'general',
|
|
54
|
+
isActionOnly: true,
|
|
55
|
+
};
|
|
56
|
+
}
|
|
57
|
+
// Too short to be meaningful
|
|
58
|
+
if (trimmed.length < 8) {
|
|
59
|
+
return {
|
|
60
|
+
filePaths: [],
|
|
61
|
+
symbols: [],
|
|
62
|
+
keywords: [],
|
|
63
|
+
intent: 'general',
|
|
64
|
+
isActionOnly: true,
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
// Extract entities
|
|
68
|
+
const filePaths = (message.match(FILE_PATH_RE) || []).slice(0, 5);
|
|
69
|
+
const symbols = (message.match(SYMBOL_RE) || [])
|
|
70
|
+
.filter((s) => s.length > 4)
|
|
71
|
+
.filter((s) => !STOP_WORDS.has(s.toLowerCase()))
|
|
72
|
+
.slice(0, 5);
|
|
73
|
+
// Extract keywords (split on non-word, filter stop words and short words)
|
|
74
|
+
const keywords = message
|
|
75
|
+
.split(/[\s,.;:!?()[\]{}"'`,。;:!?()【】]+/)
|
|
76
|
+
.map((w) => w.toLowerCase())
|
|
77
|
+
.filter((w) => w.length > 3)
|
|
78
|
+
.filter((w) => !STOP_WORDS.has(w))
|
|
79
|
+
.filter((w) => !/^\d+$/.test(w))
|
|
80
|
+
.slice(0, 10);
|
|
81
|
+
// Detect intent (priority order)
|
|
82
|
+
let intent = 'general';
|
|
83
|
+
if (INTENT_IMPACT_RE.test(message)) {
|
|
84
|
+
intent = 'impact';
|
|
85
|
+
}
|
|
86
|
+
else if (INTENT_CALLGRAPH_RE.test(message)) {
|
|
87
|
+
intent = 'callgraph';
|
|
88
|
+
}
|
|
89
|
+
else if (INTENT_DEBUG_RE.test(message)) {
|
|
90
|
+
intent = 'debug';
|
|
91
|
+
}
|
|
92
|
+
else if (INTENT_SEARCH_RE.test(message)) {
|
|
93
|
+
intent = 'search';
|
|
94
|
+
}
|
|
95
|
+
else if (INTENT_IMPLEMENT_RE.test(message)) {
|
|
96
|
+
intent = 'implement';
|
|
97
|
+
}
|
|
98
|
+
else if (INTENT_UNDERSTAND_RE.test(message)) {
|
|
99
|
+
intent = 'understand';
|
|
100
|
+
}
|
|
101
|
+
// Infer stage
|
|
102
|
+
let impliedStage;
|
|
103
|
+
if (STAGE_DEBUG_RE.test(message)) {
|
|
104
|
+
impliedStage = 'debug';
|
|
105
|
+
}
|
|
106
|
+
else if (STAGE_REVIEW_RE.test(message)) {
|
|
107
|
+
impliedStage = 'review';
|
|
108
|
+
}
|
|
109
|
+
else if (STAGE_IMPLEMENT_RE.test(message)) {
|
|
110
|
+
impliedStage = 'implement';
|
|
111
|
+
}
|
|
112
|
+
else if (STAGE_PLAN_RE.test(message)) {
|
|
113
|
+
impliedStage = 'plan';
|
|
114
|
+
}
|
|
115
|
+
else if (STAGE_BRAINSTORM_RE.test(message)) {
|
|
116
|
+
impliedStage = 'brainstorm';
|
|
117
|
+
}
|
|
118
|
+
return {
|
|
119
|
+
filePaths,
|
|
120
|
+
symbols,
|
|
121
|
+
keywords,
|
|
122
|
+
intent,
|
|
123
|
+
impliedStage,
|
|
124
|
+
isActionOnly: false,
|
|
125
|
+
};
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=query-parser.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"query-parser.js","sourceRoot":"","sources":["../../src/broker/query-parser.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
export interface ChatOptions {
|
|
2
|
+
resume?: string;
|
|
3
|
+
provider?: 'sdk' | 'cli' | 'api';
|
|
4
|
+
orchestration?: 'gsd' | 'superpowers';
|
|
5
|
+
model?: string;
|
|
6
|
+
maxBudget?: number;
|
|
7
|
+
}
|
|
8
|
+
/**
|
|
9
|
+
* Interactive chat command.
|
|
10
|
+
* Runs a REPL loop: user input → Broker context → Provider → stream output.
|
|
11
|
+
*/
|
|
12
|
+
export declare function chatCommand(opts?: ChatOptions): Promise<void>;
|
|
13
|
+
//# sourceMappingURL=chat.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"AAUA,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,KAAK,GAAG,KAAK,GAAG,KAAK,CAAC;IACjC,aAAa,CAAC,EAAE,KAAK,GAAG,aAAa,CAAC;IACtC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAcD;;;GAGG;AACH,wBAAsB,WAAW,CAAC,IAAI,GAAE,WAAgB,GAAG,OAAO,CAAC,IAAI,CAAC,CA8KvE"}
|
|
@@ -0,0 +1,264 @@
|
|
|
1
|
+
import readline from 'node:readline';
|
|
2
|
+
import { ContextBroker } from '../../broker/broker.js';
|
|
3
|
+
import { hasContent } from '../../broker/context-pack.js';
|
|
4
|
+
import { ClaudeSDKProvider } from '../../providers/claude-sdk.js';
|
|
5
|
+
import { ClaudeCLIProvider } from '../../providers/claude-cli.js';
|
|
6
|
+
import { AnthropicAPIProvider } from '../../providers/anthropic-api.js';
|
|
7
|
+
import { SessionManager } from '../../session/manager.js';
|
|
8
|
+
import { TuiRenderer } from '../tui/renderer.js';
|
|
9
|
+
function createProvider(type, opts) {
|
|
10
|
+
switch (type) {
|
|
11
|
+
case 'cli':
|
|
12
|
+
return new ClaudeCLIProvider();
|
|
13
|
+
case 'api':
|
|
14
|
+
return new AnthropicAPIProvider({ model: opts.model });
|
|
15
|
+
case 'sdk':
|
|
16
|
+
default:
|
|
17
|
+
return new ClaudeSDKProvider();
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Interactive chat command.
|
|
22
|
+
* Runs a REPL loop: user input → Broker context → Provider → stream output.
|
|
23
|
+
*/
|
|
24
|
+
export async function chatCommand(opts = {}) {
|
|
25
|
+
const renderer = new TuiRenderer();
|
|
26
|
+
const repoRoot = process.cwd();
|
|
27
|
+
renderer.banner();
|
|
28
|
+
// Initialize components
|
|
29
|
+
const broker = new ContextBroker(repoRoot, {
|
|
30
|
+
orchestrationEngine: opts.orchestration,
|
|
31
|
+
});
|
|
32
|
+
const sessions = new SessionManager();
|
|
33
|
+
const provider = createProvider(opts.provider || 'sdk', opts);
|
|
34
|
+
// Start or resume session
|
|
35
|
+
let session;
|
|
36
|
+
let handle;
|
|
37
|
+
let lastContextPack;
|
|
38
|
+
if (opts.resume) {
|
|
39
|
+
const existing = sessions.get(opts.resume);
|
|
40
|
+
if (!existing) {
|
|
41
|
+
renderer.error(`Session not found: ${opts.resume}`);
|
|
42
|
+
sessions.close();
|
|
43
|
+
return;
|
|
44
|
+
}
|
|
45
|
+
session = existing;
|
|
46
|
+
handle = await provider.resumeSession(existing.providerSessionId || '', { model: opts.model, maxBudgetUsd: opts.maxBudget });
|
|
47
|
+
renderer.system('Resumed session');
|
|
48
|
+
}
|
|
49
|
+
else {
|
|
50
|
+
session = sessions.create({
|
|
51
|
+
repoRoot,
|
|
52
|
+
provider: opts.provider || 'sdk',
|
|
53
|
+
orchestration: opts.orchestration || 'gsd',
|
|
54
|
+
});
|
|
55
|
+
handle = await provider.startSession({
|
|
56
|
+
model: opts.model,
|
|
57
|
+
maxBudgetUsd: opts.maxBudget,
|
|
58
|
+
});
|
|
59
|
+
// Inject session-start context
|
|
60
|
+
renderer.startSpinner('Loading project context');
|
|
61
|
+
const sessionContext = await broker.buildSessionContext();
|
|
62
|
+
renderer.stopSpinner();
|
|
63
|
+
if (hasContent(sessionContext)) {
|
|
64
|
+
renderer.system('Project context loaded');
|
|
65
|
+
renderer.contextIndicator(sessionContext);
|
|
66
|
+
if (sessionContext.currentStage) {
|
|
67
|
+
renderer.setStage(sessionContext.currentStage);
|
|
68
|
+
session.stage = sessionContext.currentStage;
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
renderer.sessionInfo({
|
|
73
|
+
id: session.id,
|
|
74
|
+
stage: session.stage,
|
|
75
|
+
provider: provider.name,
|
|
76
|
+
title: session.title || undefined,
|
|
77
|
+
});
|
|
78
|
+
sessions.addEvent(session.id, 'session_start');
|
|
79
|
+
// Set up readline
|
|
80
|
+
const rl = readline.createInterface({
|
|
81
|
+
input: process.stdin,
|
|
82
|
+
output: process.stdout,
|
|
83
|
+
terminal: true,
|
|
84
|
+
});
|
|
85
|
+
rl.on('SIGINT', () => {
|
|
86
|
+
renderer.cleanup();
|
|
87
|
+
renderer.costSummary();
|
|
88
|
+
console.log();
|
|
89
|
+
renderer.system('Session paused. Resume with: codeagent chat --resume ' + session.id);
|
|
90
|
+
sessions.update(session.id, { status: 'paused' });
|
|
91
|
+
sessions.addEvent(session.id, 'session_end');
|
|
92
|
+
sessions.close();
|
|
93
|
+
process.exit(0);
|
|
94
|
+
});
|
|
95
|
+
// --- REPL loop ---
|
|
96
|
+
const askQuestion = () => {
|
|
97
|
+
renderer.prompt();
|
|
98
|
+
rl.once('line', async (line) => {
|
|
99
|
+
const input = line.trim();
|
|
100
|
+
if (!input) {
|
|
101
|
+
askQuestion();
|
|
102
|
+
return;
|
|
103
|
+
}
|
|
104
|
+
// --- Handle slash commands ---
|
|
105
|
+
if (input.startsWith('/')) {
|
|
106
|
+
const handled = handleCommand(input, {
|
|
107
|
+
renderer,
|
|
108
|
+
session,
|
|
109
|
+
sessions,
|
|
110
|
+
provider,
|
|
111
|
+
handle,
|
|
112
|
+
rl,
|
|
113
|
+
lastContextPack,
|
|
114
|
+
});
|
|
115
|
+
if (handled === 'exit')
|
|
116
|
+
return;
|
|
117
|
+
if (handled === 'handled') {
|
|
118
|
+
askQuestion();
|
|
119
|
+
return;
|
|
120
|
+
}
|
|
121
|
+
// Not a recognized command — pass through as message
|
|
122
|
+
}
|
|
123
|
+
// Record user turn
|
|
124
|
+
sessions.addEvent(session.id, 'user_turn', {
|
|
125
|
+
message: input.slice(0, 500),
|
|
126
|
+
});
|
|
127
|
+
// Build context pack
|
|
128
|
+
renderer.startSpinner('Building context');
|
|
129
|
+
let contextPack;
|
|
130
|
+
try {
|
|
131
|
+
contextPack = await broker.buildContextPack({
|
|
132
|
+
repoRoot,
|
|
133
|
+
sessionId: session.id,
|
|
134
|
+
userQuery: input,
|
|
135
|
+
stage: session.stage,
|
|
136
|
+
});
|
|
137
|
+
lastContextPack = contextPack;
|
|
138
|
+
}
|
|
139
|
+
catch {
|
|
140
|
+
// Non-fatal
|
|
141
|
+
}
|
|
142
|
+
renderer.stopSpinner();
|
|
143
|
+
// Show context indicator
|
|
144
|
+
if (contextPack && hasContent(contextPack)) {
|
|
145
|
+
renderer.contextIndicator(contextPack);
|
|
146
|
+
}
|
|
147
|
+
// Send turn to provider
|
|
148
|
+
console.log();
|
|
149
|
+
try {
|
|
150
|
+
for await (const event of provider.sendTurn(handle, {
|
|
151
|
+
userMessage: input,
|
|
152
|
+
contextPack,
|
|
153
|
+
})) {
|
|
154
|
+
renderer.renderEvent(event);
|
|
155
|
+
if (event.type === 'done' && handle.providerSessionId) {
|
|
156
|
+
sessions.update(session.id, {
|
|
157
|
+
providerSessionId: handle.providerSessionId,
|
|
158
|
+
});
|
|
159
|
+
}
|
|
160
|
+
if (event.type === 'stage_change') {
|
|
161
|
+
sessions.update(session.id, { stage: event.content });
|
|
162
|
+
session.stage = event.content;
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch (err) {
|
|
167
|
+
renderer.error(`Provider error: ${err instanceof Error ? err.message : String(err)}`);
|
|
168
|
+
}
|
|
169
|
+
console.log('\n');
|
|
170
|
+
sessions.addEvent(session.id, 'agent_turn');
|
|
171
|
+
askQuestion();
|
|
172
|
+
});
|
|
173
|
+
};
|
|
174
|
+
askQuestion();
|
|
175
|
+
}
|
|
176
|
+
function handleCommand(input, ctx) {
|
|
177
|
+
const { renderer, session, sessions, provider, handle, rl } = ctx;
|
|
178
|
+
switch (input) {
|
|
179
|
+
case '/quit':
|
|
180
|
+
case '/exit':
|
|
181
|
+
case '/q': {
|
|
182
|
+
renderer.costSummary();
|
|
183
|
+
renderer.system('Session completed.');
|
|
184
|
+
sessions.update(session.id, { status: 'completed' });
|
|
185
|
+
sessions.addEvent(session.id, 'session_end');
|
|
186
|
+
provider.endSession(handle);
|
|
187
|
+
sessions.close();
|
|
188
|
+
rl.close();
|
|
189
|
+
return 'exit';
|
|
190
|
+
}
|
|
191
|
+
case '/help':
|
|
192
|
+
case '/h':
|
|
193
|
+
renderer.help();
|
|
194
|
+
return 'handled';
|
|
195
|
+
case '/status':
|
|
196
|
+
renderer.sessionInfo({
|
|
197
|
+
id: session.id,
|
|
198
|
+
stage: session.stage,
|
|
199
|
+
provider: provider.name,
|
|
200
|
+
title: session.title || undefined,
|
|
201
|
+
});
|
|
202
|
+
return 'handled';
|
|
203
|
+
case '/stage':
|
|
204
|
+
renderer.system(`Current stage: ${session.stage || 'general'}`);
|
|
205
|
+
return 'handled';
|
|
206
|
+
case '/cost':
|
|
207
|
+
renderer.costSummary();
|
|
208
|
+
return 'handled';
|
|
209
|
+
case '/context':
|
|
210
|
+
if (ctx.lastContextPack && hasContent(ctx.lastContextPack)) {
|
|
211
|
+
renderer.contextIndicator(ctx.lastContextPack);
|
|
212
|
+
if (ctx.lastContextPack.relevantFiles.length > 0) {
|
|
213
|
+
console.log(' Files:');
|
|
214
|
+
for (const f of ctx.lastContextPack.relevantFiles) {
|
|
215
|
+
console.log(` ${f.path} — ${f.reason}`);
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
if (ctx.lastContextPack.priorMemories.length > 0) {
|
|
219
|
+
console.log(' Memories:');
|
|
220
|
+
for (const m of ctx.lastContextPack.priorMemories) {
|
|
221
|
+
console.log(` [${m.type}] ${m.title}`);
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
}
|
|
225
|
+
else {
|
|
226
|
+
renderer.system('No context injected yet.');
|
|
227
|
+
}
|
|
228
|
+
return 'handled';
|
|
229
|
+
// Stage switching
|
|
230
|
+
case '/brainstorm':
|
|
231
|
+
session.stage = 'brainstorm';
|
|
232
|
+
sessions.update(session.id, { stage: 'brainstorm' });
|
|
233
|
+
renderer.setStage('brainstorm');
|
|
234
|
+
renderer.system('Switched to brainstorm stage');
|
|
235
|
+
return 'handled';
|
|
236
|
+
case '/plan':
|
|
237
|
+
session.stage = 'plan';
|
|
238
|
+
sessions.update(session.id, { stage: 'plan' });
|
|
239
|
+
renderer.setStage('plan');
|
|
240
|
+
renderer.system('Switched to plan stage');
|
|
241
|
+
return 'handled';
|
|
242
|
+
case '/implement':
|
|
243
|
+
session.stage = 'implement';
|
|
244
|
+
sessions.update(session.id, { stage: 'implement' });
|
|
245
|
+
renderer.setStage('implement');
|
|
246
|
+
renderer.system('Switched to implement stage');
|
|
247
|
+
return 'handled';
|
|
248
|
+
case '/review':
|
|
249
|
+
session.stage = 'review';
|
|
250
|
+
sessions.update(session.id, { stage: 'review' });
|
|
251
|
+
renderer.setStage('review');
|
|
252
|
+
renderer.system('Switched to review stage');
|
|
253
|
+
return 'handled';
|
|
254
|
+
case '/debug':
|
|
255
|
+
session.stage = 'debug';
|
|
256
|
+
sessions.update(session.id, { stage: 'debug' });
|
|
257
|
+
renderer.setStage('debug');
|
|
258
|
+
renderer.system('Switched to debug stage');
|
|
259
|
+
return 'handled';
|
|
260
|
+
default:
|
|
261
|
+
return 'passthrough';
|
|
262
|
+
}
|
|
263
|
+
}
|
|
264
|
+
//# sourceMappingURL=chat.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"chat.js","sourceRoot":"","sources":["../../../src/cli/commands/chat.ts"],"names":[],"mappings":"AAAA,OAAO,QAAQ,MAAM,eAAe,CAAC;AACrC,OAAO,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAgC,MAAM,8BAA8B,CAAC;AACxF,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,iBAAiB,EAAE,MAAM,+BAA+B,CAAC;AAClE,OAAO,EAAE,oBAAoB,EAAE,MAAM,kCAAkC,CAAC;AACxE,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,WAAW,EAAE,MAAM,oBAAoB,CAAC;AAWjD,SAAS,cAAc,CAAC,IAAY,EAAE,IAAiB;IACrD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,KAAK;YACR,OAAO,IAAI,iBAAiB,EAAE,CAAC;QACjC,KAAK,KAAK;YACR,OAAO,IAAI,oBAAoB,CAAC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC;QACzD,KAAK,KAAK,CAAC;QACX;YACE,OAAO,IAAI,iBAAiB,EAAE,CAAC;IACnC,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAAoB,EAAE;IACtD,MAAM,QAAQ,GAAG,IAAI,WAAW,EAAE,CAAC;IACnC,MAAM,QAAQ,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAE/B,QAAQ,CAAC,MAAM,EAAE,CAAC;IAElB,wBAAwB;IACxB,MAAM,MAAM,GAAG,IAAI,aAAa,CAAC,QAAQ,EAAE;QACzC,mBAAmB,EAAE,IAAI,CAAC,aAAa;KACxC,CAAC,CAAC;IACH,MAAM,QAAQ,GAAG,IAAI,cAAc,EAAE,CAAC;IACtC,MAAM,QAAQ,GAAG,cAAc,CAAC,IAAI,CAAC,QAAQ,IAAI,KAAK,EAAE,IAAI,CAAC,CAAC;IAE9D,0BAA0B;IAC1B,IAAI,OAA2C,CAAC;IAChD,IAAI,MAAqB,CAAC;IAC1B,IAAI,eAAwC,CAAC;IAE7C,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,QAAQ,GAAG,QAAQ,CAAC,GAAG,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,CAAC,QAAQ,EAAE,CAAC;YACd,QAAQ,CAAC,KAAK,CAAC,sBAAsB,IAAI,CAAC,MAAM,EAAE,CAAC,CAAC;YACpD,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,OAAO;QACT,CAAC;QACD,OAAO,GAAG,QAAQ,CAAC;QACnB,MAAM,GAAG,MAAM,QAAQ,CAAC,aAAa,CACnC,QAAQ,CAAC,iBAAiB,IAAI,EAAE,EAChC,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,YAAY,EAAE,IAAI,CAAC,SAAS,EAAE,CACpD,CAAC;QACF,QAAQ,CAAC,MAAM,CAAC,iBAAiB,CAAC,CAAC;IACrC,CAAC;SAAM,CAAC;QACN,OAAO,GAAG,QAAQ,CAAC,MAAM,CAAC;YACxB,QAAQ;YACR,QAAQ,EAAE,IAAI,CAAC,QAAQ,IAAI,KAAK;YAChC,aAAa,EAAE,IAAI,CAAC,aAAa,IAAI,KAAK;SAC3C,CAAC,CAAC;QAEH,MAAM,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC;YACnC,KAAK,EAAE,IAAI,CAAC,KAAK;YACjB,YAAY,EAAE,IAAI,CAAC,SAAS;SAC7B,CAAC,CAAC;QAEH,+BAA+B;QAC/B,QAAQ,CAAC,YAAY,CAAC,yBAAyB,CAAC,CAAC;QACjD,MAAM,cAAc,GAAG,MAAM,MAAM,CAAC,mBAAmB,EAAE,CAAC;QAC1D,QAAQ,CAAC,WAAW,EAAE,CAAC;QAEvB,IAAI,UAAU,CAAC,cAAc,CAAC,EAAE,CAAC;YAC/B,QAAQ,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;YAC1C,QAAQ,CAAC,gBAAgB,CAAC,cAAc,CAAC,CAAC;YAC1C,IAAI,cAAc,CAAC,YAAY,EAAE,CAAC;gBAChC,QAAQ,CAAC,QAAQ,CAAC,cAAc,CAAC,YAAY,CAAC,CAAC;gBAC/C,OAAO,CAAC,KAAK,GAAG,cAAc,CAAC,YAAY,CAAC;YAC9C,CAAC;QACH,CAAC;IACH,CAAC;IAED,QAAQ,CAAC,WAAW,CAAC;QACnB,EAAE,EAAE,OAAO,CAAC,EAAE;QACd,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,QAAQ,EAAE,QAAQ,CAAC,IAAI;QACvB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;KAClC,CAAC,CAAC;IAEH,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,eAAe,CAAC,CAAC;IAE/C,kBAAkB;IAClB,MAAM,EAAE,GAAG,QAAQ,CAAC,eAAe,CAAC;QAClC,KAAK,EAAE,OAAO,CAAC,KAAK;QACpB,MAAM,EAAE,OAAO,CAAC,MAAM;QACtB,QAAQ,EAAE,IAAI;KACf,CAAC,CAAC;IAEH,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,GAAG,EAAE;QACnB,QAAQ,CAAC,OAAO,EAAE,CAAC;QACnB,QAAQ,CAAC,WAAW,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,EAAE,CAAC;QACd,QAAQ,CAAC,MAAM,CAAC,uDAAuD,GAAG,OAAO,CAAC,EAAE,CAAC,CAAC;QACtF,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAClD,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;QAC7C,QAAQ,CAAC,KAAK,EAAE,CAAC;QACjB,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC;IAEH,oBAAoB;IACpB,MAAM,WAAW,GAAG,GAAS,EAAE;QAC7B,QAAQ,CAAC,MAAM,EAAE,CAAC;QAClB,EAAE,CAAC,IAAI,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,EAAE;YAC7B,MAAM,KAAK,GAAG,IAAI,CAAC,IAAI,EAAE,CAAC;YAE1B,IAAI,CAAC,KAAK,EAAE,CAAC;gBACX,WAAW,EAAE,CAAC;gBACd,OAAO;YACT,CAAC;YAED,gCAAgC;YAChC,IAAI,KAAK,CAAC,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;gBAC1B,MAAM,OAAO,GAAG,aAAa,CAAC,KAAK,EAAE;oBACnC,QAAQ;oBACR,OAAO;oBACP,QAAQ;oBACR,QAAQ;oBACR,MAAM;oBACN,EAAE;oBACF,eAAe;iBAChB,CAAC,CAAC;gBACH,IAAI,OAAO,KAAK,MAAM;oBAAE,OAAO;gBAC/B,IAAI,OAAO,KAAK,SAAS,EAAE,CAAC;oBAC1B,WAAW,EAAE,CAAC;oBACd,OAAO;gBACT,CAAC;gBACD,qDAAqD;YACvD,CAAC;YAED,mBAAmB;YACnB,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,WAAW,EAAE;gBACzC,OAAO,EAAE,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC;aAC7B,CAAC,CAAC;YAEH,qBAAqB;YACrB,QAAQ,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC;YAC1C,IAAI,WAAoC,CAAC;YACzC,IAAI,CAAC;gBACH,WAAW,GAAG,MAAM,MAAM,CAAC,gBAAgB,CAAC;oBAC1C,QAAQ;oBACR,SAAS,EAAE,OAAO,CAAC,EAAE;oBACrB,SAAS,EAAE,KAAK;oBAChB,KAAK,EAAE,OAAO,CAAC,KAAc;iBAC9B,CAAC,CAAC;gBACH,eAAe,GAAG,WAAW,CAAC;YAChC,CAAC;YAAC,MAAM,CAAC;gBACP,YAAY;YACd,CAAC;YACD,QAAQ,CAAC,WAAW,EAAE,CAAC;YAEvB,yBAAyB;YACzB,IAAI,WAAW,IAAI,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;gBAC3C,QAAQ,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC;YACzC,CAAC;YAED,wBAAwB;YACxB,OAAO,CAAC,GAAG,EAAE,CAAC;YACd,IAAI,CAAC;gBACH,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,QAAQ,CAAC,QAAQ,CAAC,MAAM,EAAE;oBAClD,WAAW,EAAE,KAAK;oBAClB,WAAW;iBACZ,CAAC,EAAE,CAAC;oBACH,QAAQ,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;oBAE5B,IAAI,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,MAAM,CAAC,iBAAiB,EAAE,CAAC;wBACtD,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE;4BAC1B,iBAAiB,EAAE,MAAM,CAAC,iBAAiB;yBAC5C,CAAC,CAAC;oBACL,CAAC;oBAED,IAAI,KAAK,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;wBAClC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;wBACtD,OAAO,CAAC,KAAK,GAAG,KAAK,CAAC,OAAO,CAAC;oBAChC,CAAC;gBACH,CAAC;YACH,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,QAAQ,CAAC,KAAK,CACZ,mBAAmB,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACtE,CAAC;YACJ,CAAC;YAED,OAAO,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;YAClB,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,YAAY,CAAC,CAAC;YAC5C,WAAW,EAAE,CAAC;QAChB,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,WAAW,EAAE,CAAC;AAChB,CAAC;AAcD,SAAS,aAAa,CACpB,KAAa,EACb,GAAmB;IAEnB,MAAM,EAAE,QAAQ,EAAE,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,GAAG,GAAG,CAAC;IAElE,QAAQ,KAAK,EAAE,CAAC;QACd,KAAK,OAAO,CAAC;QACb,KAAK,OAAO,CAAC;QACb,KAAK,IAAI,CAAC,CAAC,CAAC;YACV,QAAQ,CAAC,WAAW,EAAE,CAAC;YACvB,QAAQ,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC;YACtC,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YACrD,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,EAAE,aAAa,CAAC,CAAC;YAC7C,QAAQ,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC;YAC5B,QAAQ,CAAC,KAAK,EAAE,CAAC;YACjB,EAAE,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,MAAM,CAAC;QAChB,CAAC;QAED,KAAK,OAAO,CAAC;QACb,KAAK,IAAI;YACP,QAAQ,CAAC,IAAI,EAAE,CAAC;YAChB,OAAO,SAAS,CAAC;QAEnB,KAAK,SAAS;YACZ,QAAQ,CAAC,WAAW,CAAC;gBACnB,EAAE,EAAE,OAAO,CAAC,EAAE;gBACd,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,QAAQ,EAAE,QAAQ,CAAC,IAAI;gBACvB,KAAK,EAAE,OAAO,CAAC,KAAK,IAAI,SAAS;aAClC,CAAC,CAAC;YACH,OAAO,SAAS,CAAC;QAEnB,KAAK,QAAQ;YACX,QAAQ,CAAC,MAAM,CAAC,kBAAkB,OAAO,CAAC,KAAK,IAAI,SAAS,EAAE,CAAC,CAAC;YAChE,OAAO,SAAS,CAAC;QAEnB,KAAK,OAAO;YACV,QAAQ,CAAC,WAAW,EAAE,CAAC;YACvB,OAAO,SAAS,CAAC;QAEnB,KAAK,UAAU;YACb,IAAI,GAAG,CAAC,eAAe,IAAI,UAAU,CAAC,GAAG,CAAC,eAAe,CAAC,EAAE,CAAC;gBAC3D,QAAQ,CAAC,gBAAgB,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;gBAC/C,IAAI,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjD,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;oBACxB,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;wBAClD,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,IAAI,MAAM,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC;oBAC7C,CAAC;gBACH,CAAC;gBACD,IAAI,GAAG,CAAC,eAAe,CAAC,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;oBACjD,OAAO,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC;oBAC3B,KAAK,MAAM,CAAC,IAAI,GAAG,CAAC,eAAe,CAAC,aAAa,EAAE,CAAC;wBAClD,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC,IAAI,KAAK,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC;oBAC5C,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,QAAQ,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAC9C,CAAC;YACD,OAAO,SAAS,CAAC;QAEnB,kBAAkB;QAClB,KAAK,aAAa;YAChB,OAAO,CAAC,KAAK,GAAG,YAAY,CAAC;YAC7B,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,YAAY,EAAE,CAAC,CAAC;YACrD,QAAQ,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;YAChC,QAAQ,CAAC,MAAM,CAAC,8BAA8B,CAAC,CAAC;YAChD,OAAO,SAAS,CAAC;QACnB,KAAK,OAAO;YACV,OAAO,CAAC,KAAK,GAAG,MAAM,CAAC;YACvB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE,CAAC,CAAC;YAC/C,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;YAC1B,QAAQ,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAC;YAC1C,OAAO,SAAS,CAAC;QACnB,KAAK,YAAY;YACf,OAAO,CAAC,KAAK,GAAG,WAAW,CAAC;YAC5B,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,CAAC;YACpD,QAAQ,CAAC,QAAQ,CAAC,WAAW,CAAC,CAAC;YAC/B,QAAQ,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAAC;YAC/C,OAAO,SAAS,CAAC;QACnB,KAAK,SAAS;YACZ,OAAO,CAAC,KAAK,GAAG,QAAQ,CAAC;YACzB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CAAC;YACjD,QAAQ,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;YAC5B,QAAQ,CAAC,MAAM,CAAC,0BAA0B,CAAC,CAAC;YAC5C,OAAO,SAAS,CAAC;QACnB,KAAK,QAAQ;YACX,OAAO,CAAC,KAAK,GAAG,OAAO,CAAC;YACxB,QAAQ,CAAC,MAAM,CAAC,OAAO,CAAC,EAAE,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;YAChD,QAAQ,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAC3B,QAAQ,CAAC,MAAM,CAAC,yBAAyB,CAAC,CAAC;YAC3C,OAAO,SAAS,CAAC;QAEnB;YACE,OAAO,aAAa,CAAC;IACzB,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
interface Config {
|
|
2
|
+
orchestration?: string;
|
|
3
|
+
provider?: string;
|
|
4
|
+
model?: string;
|
|
5
|
+
maxBudgetUsd?: number;
|
|
6
|
+
[key: string]: unknown;
|
|
7
|
+
}
|
|
8
|
+
export declare function configCommand(action?: string, key?: string, value?: string): Promise<void>;
|
|
9
|
+
/**
|
|
10
|
+
* Read the global config (used by other commands to get defaults).
|
|
11
|
+
*/
|
|
12
|
+
export declare function getConfig(): Config;
|
|
13
|
+
export {};
|
|
14
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/config.ts"],"names":[],"mappings":"AAIA,UAAU,MAAM;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AA2BD,wBAAsB,aAAa,CACjC,MAAM,CAAC,EAAE,MAAM,EACf,GAAG,CAAC,EAAE,MAAM,EACZ,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,IAAI,CAAC,CA+Df;AAED;;GAEG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
|