@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.
Files changed (117) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +116 -0
  3. package/dist/adapters/code-graph.d.ts +18 -0
  4. package/dist/adapters/code-graph.d.ts.map +1 -0
  5. package/dist/adapters/code-graph.js +151 -0
  6. package/dist/adapters/code-graph.js.map +1 -0
  7. package/dist/adapters/memory.d.ts +13 -0
  8. package/dist/adapters/memory.d.ts.map +1 -0
  9. package/dist/adapters/memory.js +110 -0
  10. package/dist/adapters/memory.js.map +1 -0
  11. package/dist/adapters/orchestration/gsd.d.ts +20 -0
  12. package/dist/adapters/orchestration/gsd.d.ts.map +1 -0
  13. package/dist/adapters/orchestration/gsd.js +78 -0
  14. package/dist/adapters/orchestration/gsd.js.map +1 -0
  15. package/dist/adapters/orchestration/interface.d.ts +32 -0
  16. package/dist/adapters/orchestration/interface.d.ts.map +1 -0
  17. package/dist/adapters/orchestration/interface.js +2 -0
  18. package/dist/adapters/orchestration/interface.js.map +1 -0
  19. package/dist/adapters/orchestration/superpowers.d.ts +33 -0
  20. package/dist/adapters/orchestration/superpowers.d.ts.map +1 -0
  21. package/dist/adapters/orchestration/superpowers.js +117 -0
  22. package/dist/adapters/orchestration/superpowers.js.map +1 -0
  23. package/dist/broker/broker.d.ts +40 -0
  24. package/dist/broker/broker.d.ts.map +1 -0
  25. package/dist/broker/broker.js +181 -0
  26. package/dist/broker/broker.js.map +1 -0
  27. package/dist/broker/compressor.d.ts +7 -0
  28. package/dist/broker/compressor.d.ts.map +1 -0
  29. package/dist/broker/compressor.js +61 -0
  30. package/dist/broker/compressor.js.map +1 -0
  31. package/dist/broker/context-pack.d.ts +126 -0
  32. package/dist/broker/context-pack.d.ts.map +1 -0
  33. package/dist/broker/context-pack.js +103 -0
  34. package/dist/broker/context-pack.js.map +1 -0
  35. package/dist/broker/query-parser.d.ts +17 -0
  36. package/dist/broker/query-parser.d.ts.map +1 -0
  37. package/dist/broker/query-parser.js +127 -0
  38. package/dist/broker/query-parser.js.map +1 -0
  39. package/dist/cli/commands/chat.d.ts +13 -0
  40. package/dist/cli/commands/chat.d.ts.map +1 -0
  41. package/dist/cli/commands/chat.js +264 -0
  42. package/dist/cli/commands/chat.js.map +1 -0
  43. package/dist/cli/commands/config.d.ts +14 -0
  44. package/dist/cli/commands/config.d.ts.map +1 -0
  45. package/dist/cli/commands/config.js +94 -0
  46. package/dist/cli/commands/config.js.map +1 -0
  47. package/dist/cli/commands/memory.d.ts +10 -0
  48. package/dist/cli/commands/memory.d.ts.map +1 -0
  49. package/dist/cli/commands/memory.js +52 -0
  50. package/dist/cli/commands/memory.js.map +1 -0
  51. package/dist/cli/commands/search.d.ts +9 -0
  52. package/dist/cli/commands/search.d.ts.map +1 -0
  53. package/dist/cli/commands/search.js +45 -0
  54. package/dist/cli/commands/search.js.map +1 -0
  55. package/dist/cli/commands/session.d.ts +9 -0
  56. package/dist/cli/commands/session.d.ts.map +1 -0
  57. package/dist/cli/commands/session.js +86 -0
  58. package/dist/cli/commands/session.js.map +1 -0
  59. package/dist/cli/index.d.ts +3 -0
  60. package/dist/cli/index.d.ts.map +1 -0
  61. package/dist/cli/index.js +77 -0
  62. package/dist/cli/index.js.map +1 -0
  63. package/dist/cli/tui/renderer.d.ts +47 -0
  64. package/dist/cli/tui/renderer.d.ts.map +1 -0
  65. package/dist/cli/tui/renderer.js +237 -0
  66. package/dist/cli/tui/renderer.js.map +1 -0
  67. package/dist/hooks/session-start.d.ts +11 -0
  68. package/dist/hooks/session-start.d.ts.map +1 -0
  69. package/dist/hooks/session-start.js +51 -0
  70. package/dist/hooks/session-start.js.map +1 -0
  71. package/dist/hooks/stop.d.ts +11 -0
  72. package/dist/hooks/stop.d.ts.map +1 -0
  73. package/dist/hooks/stop.js +93 -0
  74. package/dist/hooks/stop.js.map +1 -0
  75. package/dist/hooks/user-prompt.d.ts +12 -0
  76. package/dist/hooks/user-prompt.d.ts.map +1 -0
  77. package/dist/hooks/user-prompt.js +46 -0
  78. package/dist/hooks/user-prompt.js.map +1 -0
  79. package/dist/providers/anthropic-api.d.ts +25 -0
  80. package/dist/providers/anthropic-api.d.ts.map +1 -0
  81. package/dist/providers/anthropic-api.js +93 -0
  82. package/dist/providers/anthropic-api.js.map +1 -0
  83. package/dist/providers/claude-cli.d.ts +16 -0
  84. package/dist/providers/claude-cli.d.ts.map +1 -0
  85. package/dist/providers/claude-cli.js +72 -0
  86. package/dist/providers/claude-cli.js.map +1 -0
  87. package/dist/providers/claude-sdk.d.ts +18 -0
  88. package/dist/providers/claude-sdk.d.ts.map +1 -0
  89. package/dist/providers/claude-sdk.js +141 -0
  90. package/dist/providers/claude-sdk.js.map +1 -0
  91. package/dist/providers/interface.d.ts +36 -0
  92. package/dist/providers/interface.d.ts.map +1 -0
  93. package/dist/providers/interface.js +2 -0
  94. package/dist/providers/interface.js.map +1 -0
  95. package/dist/scripts/install-hooks.d.ts +11 -0
  96. package/dist/scripts/install-hooks.d.ts.map +1 -0
  97. package/dist/scripts/install-hooks.js +86 -0
  98. package/dist/scripts/install-hooks.js.map +1 -0
  99. package/dist/session/manager.d.ts +65 -0
  100. package/dist/session/manager.d.ts.map +1 -0
  101. package/dist/session/manager.js +143 -0
  102. package/dist/session/manager.js.map +1 -0
  103. package/dist/session/schema.d.ts +7 -0
  104. package/dist/session/schema.d.ts.map +1 -0
  105. package/dist/session/schema.js +82 -0
  106. package/dist/session/schema.js.map +1 -0
  107. package/dist/utils/exec.d.ts +20 -0
  108. package/dist/utils/exec.d.ts.map +1 -0
  109. package/dist/utils/exec.js +28 -0
  110. package/dist/utils/exec.js.map +1 -0
  111. package/dist/utils/tokens.d.ts +12 -0
  112. package/dist/utils/tokens.d.ts.map +1 -0
  113. package/dist/utils/tokens.js +38 -0
  114. package/dist/utils/tokens.js.map +1 -0
  115. package/package.json +90 -0
  116. package/src/skills/brainstorm.md +33 -0
  117. 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":"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"}
@@ -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"}