@ddse/acm-aicoder 0.5.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/.aicoder/index.json +304 -0
- package/AICODER_IMPLEMENTATION_PLAN_PHASE2.md +284 -0
- package/LICENSE +21 -0
- package/README.md +490 -0
- package/bin/interactive.tsx +232 -0
- package/dist/bin/interactive.d.ts +3 -0
- package/dist/bin/interactive.d.ts.map +1 -0
- package/dist/bin/interactive.js +155 -0
- package/dist/bin/interactive.js.map +1 -0
- package/dist/src/config/providers.d.ts +15 -0
- package/dist/src/config/providers.d.ts.map +1 -0
- package/dist/src/config/providers.js +142 -0
- package/dist/src/config/providers.js.map +1 -0
- package/dist/src/config/session.d.ts +25 -0
- package/dist/src/config/session.d.ts.map +1 -0
- package/dist/src/config/session.js +97 -0
- package/dist/src/config/session.js.map +1 -0
- package/dist/src/context/bm25.d.ts +68 -0
- package/dist/src/context/bm25.d.ts.map +1 -0
- package/dist/src/context/bm25.js +131 -0
- package/dist/src/context/bm25.js.map +1 -0
- package/dist/src/context/code-search.d.ts +30 -0
- package/dist/src/context/code-search.d.ts.map +1 -0
- package/dist/src/context/code-search.js +150 -0
- package/dist/src/context/code-search.js.map +1 -0
- package/dist/src/context/context-pack.d.ts +25 -0
- package/dist/src/context/context-pack.d.ts.map +1 -0
- package/dist/src/context/context-pack.js +92 -0
- package/dist/src/context/context-pack.js.map +1 -0
- package/dist/src/context/dependency-mapper.d.ts +10 -0
- package/dist/src/context/dependency-mapper.d.ts.map +1 -0
- package/dist/src/context/dependency-mapper.js +62 -0
- package/dist/src/context/dependency-mapper.js.map +1 -0
- package/dist/src/context/index.d.ts +8 -0
- package/dist/src/context/index.d.ts.map +1 -0
- package/dist/src/context/index.js +9 -0
- package/dist/src/context/index.js.map +1 -0
- package/dist/src/context/symbol-extractor.d.ts +26 -0
- package/dist/src/context/symbol-extractor.d.ts.map +1 -0
- package/dist/src/context/symbol-extractor.js +129 -0
- package/dist/src/context/symbol-extractor.js.map +1 -0
- package/dist/src/context/test-mapper.d.ts +16 -0
- package/dist/src/context/test-mapper.d.ts.map +1 -0
- package/dist/src/context/test-mapper.js +66 -0
- package/dist/src/context/test-mapper.js.map +1 -0
- package/dist/src/context/types.d.ts +61 -0
- package/dist/src/context/types.d.ts.map +1 -0
- package/dist/src/context/types.js +3 -0
- package/dist/src/context/types.js.map +1 -0
- package/dist/src/context/workspace-indexer.d.ts +39 -0
- package/dist/src/context/workspace-indexer.d.ts.map +1 -0
- package/dist/src/context/workspace-indexer.js +222 -0
- package/dist/src/context/workspace-indexer.js.map +1 -0
- package/dist/src/index.d.ts +5 -0
- package/dist/src/index.d.ts.map +1 -0
- package/dist/src/index.js +6 -0
- package/dist/src/index.js.map +1 -0
- package/dist/src/registries.d.ts +34 -0
- package/dist/src/registries.d.ts.map +1 -0
- package/dist/src/registries.js +87 -0
- package/dist/src/registries.js.map +1 -0
- package/dist/src/runtime/budget-manager.d.ts +42 -0
- package/dist/src/runtime/budget-manager.d.ts.map +1 -0
- package/dist/src/runtime/budget-manager.js +82 -0
- package/dist/src/runtime/budget-manager.js.map +1 -0
- package/dist/src/runtime/interactive-runtime.d.ts +39 -0
- package/dist/src/runtime/interactive-runtime.d.ts.map +1 -0
- package/dist/src/runtime/interactive-runtime.js +321 -0
- package/dist/src/runtime/interactive-runtime.js.map +1 -0
- package/dist/src/tasks-v2/analysis-tasks.d.ts +117 -0
- package/dist/src/tasks-v2/analysis-tasks.d.ts.map +1 -0
- package/dist/src/tasks-v2/analysis-tasks.js +209 -0
- package/dist/src/tasks-v2/analysis-tasks.js.map +1 -0
- package/dist/src/tasks-v2/developer-tasks.d.ts +226 -0
- package/dist/src/tasks-v2/developer-tasks.d.ts.map +1 -0
- package/dist/src/tasks-v2/developer-tasks.js +322 -0
- package/dist/src/tasks-v2/developer-tasks.js.map +1 -0
- package/dist/src/tasks-v2/index.d.ts +3 -0
- package/dist/src/tasks-v2/index.d.ts.map +1 -0
- package/dist/src/tasks-v2/index.js +4 -0
- package/dist/src/tasks-v2/index.js.map +1 -0
- package/dist/src/tools-v2/edit-tools.d.ts +67 -0
- package/dist/src/tools-v2/edit-tools.d.ts.map +1 -0
- package/dist/src/tools-v2/edit-tools.js +117 -0
- package/dist/src/tools-v2/edit-tools.js.map +1 -0
- package/dist/src/tools-v2/index.d.ts +6 -0
- package/dist/src/tools-v2/index.d.ts.map +1 -0
- package/dist/src/tools-v2/index.js +7 -0
- package/dist/src/tools-v2/index.js.map +1 -0
- package/dist/src/tools-v2/read-tools.d.ts +129 -0
- package/dist/src/tools-v2/read-tools.d.ts.map +1 -0
- package/dist/src/tools-v2/read-tools.js +216 -0
- package/dist/src/tools-v2/read-tools.js.map +1 -0
- package/dist/src/tools-v2/search-tools.d.ts +73 -0
- package/dist/src/tools-v2/search-tools.d.ts.map +1 -0
- package/dist/src/tools-v2/search-tools.js +132 -0
- package/dist/src/tools-v2/search-tools.js.map +1 -0
- package/dist/src/tools-v2/test-tools.d.ts +59 -0
- package/dist/src/tools-v2/test-tools.d.ts.map +1 -0
- package/dist/src/tools-v2/test-tools.js +111 -0
- package/dist/src/tools-v2/test-tools.js.map +1 -0
- package/dist/src/tools-v2/workspace-context.d.ts +65 -0
- package/dist/src/tools-v2/workspace-context.d.ts.map +1 -0
- package/dist/src/tools-v2/workspace-context.js +336 -0
- package/dist/src/tools-v2/workspace-context.js.map +1 -0
- package/dist/src/ui/App.d.ts +9 -0
- package/dist/src/ui/App.d.ts.map +1 -0
- package/dist/src/ui/App.js +257 -0
- package/dist/src/ui/App.js.map +1 -0
- package/dist/src/ui/components/ChatPane.d.ts +12 -0
- package/dist/src/ui/components/ChatPane.d.ts.map +1 -0
- package/dist/src/ui/components/ChatPane.js +41 -0
- package/dist/src/ui/components/ChatPane.js.map +1 -0
- package/dist/src/ui/components/EventsPane.d.ts +12 -0
- package/dist/src/ui/components/EventsPane.d.ts.map +1 -0
- package/dist/src/ui/components/EventsPane.js +48 -0
- package/dist/src/ui/components/EventsPane.js.map +1 -0
- package/dist/src/ui/components/GoalsTasksPane.d.ts +18 -0
- package/dist/src/ui/components/GoalsTasksPane.d.ts.map +1 -0
- package/dist/src/ui/components/GoalsTasksPane.js +83 -0
- package/dist/src/ui/components/GoalsTasksPane.js.map +1 -0
- package/dist/src/ui/store.d.ts +74 -0
- package/dist/src/ui/store.d.ts.map +1 -0
- package/dist/src/ui/store.js +260 -0
- package/dist/src/ui/store.js.map +1 -0
- package/dist/tests/integration.test.d.ts +2 -0
- package/dist/tests/integration.test.d.ts.map +1 -0
- package/dist/tests/integration.test.js +415 -0
- package/dist/tests/integration.test.js.map +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/docs/AICODER.png +0 -0
- package/docs/INTERACTIVE_CLI_GUIDE.md +201 -0
- package/docs/TUI_MOCKUP.md +180 -0
- package/package.json +52 -0
- package/src/config/providers.ts +174 -0
- package/src/config/session.ts +143 -0
- package/src/context/bm25.ts +173 -0
- package/src/context/code-search.ts +188 -0
- package/src/context/context-pack.ts +133 -0
- package/src/context/dependency-mapper.ts +72 -0
- package/src/context/index.ts +8 -0
- package/src/context/symbol-extractor.ts +149 -0
- package/src/context/test-mapper.ts +77 -0
- package/src/context/types.ts +69 -0
- package/src/context/workspace-indexer.ts +249 -0
- package/src/index.ts +5 -0
- package/src/registries.ts +118 -0
- package/src/runtime/budget-manager.ts +118 -0
- package/src/runtime/interactive-runtime.ts +423 -0
- package/src/tasks-v2/analysis-tasks.ts +311 -0
- package/src/tasks-v2/developer-tasks.ts +437 -0
- package/src/tasks-v2/index.ts +3 -0
- package/src/tools-v2/edit-tools.ts +153 -0
- package/src/tools-v2/index.ts +6 -0
- package/src/tools-v2/read-tools.ts +286 -0
- package/src/tools-v2/search-tools.ts +175 -0
- package/src/tools-v2/test-tools.ts +147 -0
- package/src/tools-v2/workspace-context.ts +428 -0
- package/src/ui/App.tsx +392 -0
- package/src/ui/components/ChatPane.tsx +84 -0
- package/src/ui/components/EventsPane.tsx +81 -0
- package/src/ui/components/GoalsTasksPane.tsx +149 -0
- package/src/ui/store.ts +362 -0
- package/tests/integration.test.ts +537 -0
- package/tsconfig.json +22 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.d.ts","sourceRoot":"","sources":["../../bin/interactive.tsx"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,155 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
// ACM AI Coder - Phase 2 Interactive CLI
|
|
3
|
+
// Full-screen TUI with three-column layout
|
|
4
|
+
// Requires: --provider, --model, and --workspace (optional --base-url)
|
|
5
|
+
import React from 'react';
|
|
6
|
+
import { render } from 'ink';
|
|
7
|
+
import { ExternalContextProviderAdapter } from '@ddse/acm-sdk';
|
|
8
|
+
import { createOllamaClient, createVLLMClient } from '@ddse/acm-llm';
|
|
9
|
+
import { App } from '../src/ui/App.js';
|
|
10
|
+
import { AppStore } from '../src/ui/store.js';
|
|
11
|
+
import { InteractiveRuntime } from '../src/runtime/interactive-runtime.js';
|
|
12
|
+
import { parseCliArgs, validateAndNormalizeConfig } from '../src/config/session.js';
|
|
13
|
+
import { SimpleCapabilityRegistry, SimpleToolRegistry, SimplePolicyEngine,
|
|
14
|
+
// V2 Tools
|
|
15
|
+
FileStatTool, FileReadToolV2, CodeSearchTool, GrepTool, DiffTool, CodeEditToolV2, RunTestsToolV2, WorkspaceContextRetrievalTool, BuildTool,
|
|
16
|
+
// V2 Tasks
|
|
17
|
+
AnalyzeWorkspaceTask, CollectContextPackTask, SearchCodeTask, FindSymbolDefinitionTask, ImplementFunctionTask, RefactorRenameSymbolTask, FixTypeErrorTask, GenerateUnitTestsTask, } from '../src/index.js';
|
|
18
|
+
function buildWorkspaceContextInput(directive, goalIntent) {
|
|
19
|
+
const separatorIndex = directive.indexOf(':');
|
|
20
|
+
const payload = separatorIndex >= 0 ? directive.slice(separatorIndex + 1).trim() : '';
|
|
21
|
+
const operations = [];
|
|
22
|
+
if (payload.length > 0) {
|
|
23
|
+
if (payload.startsWith('{')) {
|
|
24
|
+
try {
|
|
25
|
+
const parsed = JSON.parse(payload);
|
|
26
|
+
if (Array.isArray(parsed.operations)) {
|
|
27
|
+
return {
|
|
28
|
+
directive,
|
|
29
|
+
goal: goalIntent,
|
|
30
|
+
operations: parsed.operations,
|
|
31
|
+
};
|
|
32
|
+
}
|
|
33
|
+
if (typeof parsed.query === 'string' && parsed.query.length > 0) {
|
|
34
|
+
operations.push({ type: 'search', query: parsed.query, includeContext: true });
|
|
35
|
+
}
|
|
36
|
+
if (typeof parsed.pattern === 'string' && parsed.pattern.length > 0) {
|
|
37
|
+
operations.push({ type: 'grep', pattern: parsed.pattern, maxResults: 20 });
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
catch {
|
|
41
|
+
// Fall through to textual parsing
|
|
42
|
+
}
|
|
43
|
+
}
|
|
44
|
+
if (operations.length === 0) {
|
|
45
|
+
operations.push({ type: 'search', query: payload, includeContext: true });
|
|
46
|
+
operations.push({ type: 'grep', pattern: payload, maxResults: 20 });
|
|
47
|
+
}
|
|
48
|
+
}
|
|
49
|
+
return {
|
|
50
|
+
directive,
|
|
51
|
+
goal: goalIntent,
|
|
52
|
+
operations,
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
async function main() {
|
|
56
|
+
try {
|
|
57
|
+
// Parse and validate CLI arguments
|
|
58
|
+
const args = parseCliArgs(process.argv.slice(2));
|
|
59
|
+
const config = validateAndNormalizeConfig(args);
|
|
60
|
+
// Ensure the process operates within the validated workspace
|
|
61
|
+
process.chdir(config.workspace);
|
|
62
|
+
// Create LLM client based on provider selection
|
|
63
|
+
const llm = config.provider === 'vllm'
|
|
64
|
+
? createVLLMClient(config.model, config.baseUrl)
|
|
65
|
+
: createOllamaClient(config.model, config.baseUrl);
|
|
66
|
+
// Setup registries
|
|
67
|
+
const toolRegistry = new SimpleToolRegistry();
|
|
68
|
+
const capabilityRegistry = new SimpleCapabilityRegistry();
|
|
69
|
+
const policyEngine = new SimplePolicyEngine();
|
|
70
|
+
const contextProvider = new ExternalContextProviderAdapter();
|
|
71
|
+
// Register tools
|
|
72
|
+
const fileStatTool = new FileStatTool(config.workspace);
|
|
73
|
+
const fileReadTool = new FileReadToolV2(config.workspace);
|
|
74
|
+
const codeSearchTool = new CodeSearchTool(config.workspace);
|
|
75
|
+
const grepTool = new GrepTool(config.workspace);
|
|
76
|
+
const diffTool = new DiffTool(config.workspace);
|
|
77
|
+
const codeEditTool = new CodeEditToolV2(config.workspace);
|
|
78
|
+
const runTestsTool = new RunTestsToolV2(config.workspace);
|
|
79
|
+
const buildTool = new BuildTool(config.workspace);
|
|
80
|
+
const workspaceContextTool = new WorkspaceContextRetrievalTool(config.workspace);
|
|
81
|
+
toolRegistry.register(fileStatTool);
|
|
82
|
+
toolRegistry.register(fileReadTool);
|
|
83
|
+
toolRegistry.register(codeSearchTool);
|
|
84
|
+
toolRegistry.register(grepTool);
|
|
85
|
+
toolRegistry.register(diffTool);
|
|
86
|
+
toolRegistry.register(codeEditTool);
|
|
87
|
+
toolRegistry.register(runTestsTool);
|
|
88
|
+
toolRegistry.register(buildTool);
|
|
89
|
+
toolRegistry.register(workspaceContextTool);
|
|
90
|
+
contextProvider.register(workspaceContextTool, {
|
|
91
|
+
match: directive => directive.startsWith('workspace.context') || directive.startsWith('workspace_context'),
|
|
92
|
+
buildInput: (directive, ctx) => buildWorkspaceContextInput(directive, ctx.runContext?.goal.intent),
|
|
93
|
+
describe: 'Retrieve relevant workspace snippets, grep matches, and metadata to satisfy context requests.',
|
|
94
|
+
autoPromote: true,
|
|
95
|
+
maxArtifacts: 32,
|
|
96
|
+
});
|
|
97
|
+
// Register capabilities (tasks)
|
|
98
|
+
capabilityRegistry.register({ name: 'analyze_workspace', sideEffects: false }, new AnalyzeWorkspaceTask());
|
|
99
|
+
capabilityRegistry.register({ name: 'collect_context_pack', sideEffects: false }, new CollectContextPackTask());
|
|
100
|
+
capabilityRegistry.register({ name: 'search_code', sideEffects: false }, new SearchCodeTask());
|
|
101
|
+
capabilityRegistry.register({ name: 'find_symbol_definition', sideEffects: false }, new FindSymbolDefinitionTask());
|
|
102
|
+
capabilityRegistry.register({ name: 'implement_function', sideEffects: true }, new ImplementFunctionTask());
|
|
103
|
+
capabilityRegistry.register({ name: 'refactor_rename_symbol', sideEffects: true }, new RefactorRenameSymbolTask());
|
|
104
|
+
capabilityRegistry.register({ name: 'fix_type_error', sideEffects: true }, new FixTypeErrorTask());
|
|
105
|
+
capabilityRegistry.register({ name: 'generate_unit_tests', sideEffects: true }, new GenerateUnitTestsTask());
|
|
106
|
+
// Allow workspace operations
|
|
107
|
+
policyEngine.setAllowedPaths([config.workspace]);
|
|
108
|
+
// Create app store and runtime
|
|
109
|
+
const store = new AppStore();
|
|
110
|
+
const runtime = new InteractiveRuntime({
|
|
111
|
+
config,
|
|
112
|
+
llm,
|
|
113
|
+
capabilityRegistry,
|
|
114
|
+
toolRegistry,
|
|
115
|
+
policyEngine,
|
|
116
|
+
store,
|
|
117
|
+
contextProvider,
|
|
118
|
+
});
|
|
119
|
+
const initialBudget = runtime.getBudgetManager().getStatus();
|
|
120
|
+
// Welcome message
|
|
121
|
+
store.addMessage('system', `Welcome to ACM AI Coder (Phase 2)\n\n` +
|
|
122
|
+
`Configuration:\n` +
|
|
123
|
+
` Provider: ${config.provider}\n` +
|
|
124
|
+
` Model: ${config.model}\n` +
|
|
125
|
+
(config.baseUrl ? ` Base URL: ${config.baseUrl}\n` : '') +
|
|
126
|
+
` Workspace: ${config.workspace}\n` +
|
|
127
|
+
(initialBudget.maxTokens !== undefined ? ` Token allowance: ${initialBudget.maxTokens}\n` : '') +
|
|
128
|
+
`\n` +
|
|
129
|
+
`Type your goal to start planning, or /help for commands.`);
|
|
130
|
+
// Update initial budget status
|
|
131
|
+
store.updateBudgetStatus(initialBudget);
|
|
132
|
+
// Handle commands from UI
|
|
133
|
+
const handleCommand = async (command) => {
|
|
134
|
+
if (command.startsWith('/')) {
|
|
135
|
+
// Already handled by UI component
|
|
136
|
+
return;
|
|
137
|
+
}
|
|
138
|
+
// Process as goal
|
|
139
|
+
await runtime.processGoal(command);
|
|
140
|
+
};
|
|
141
|
+
// Render TUI
|
|
142
|
+
render(React.createElement(App, { store: store, onCommand: handleCommand }));
|
|
143
|
+
}
|
|
144
|
+
catch (error) {
|
|
145
|
+
console.error('Error starting ACM AI Coder:');
|
|
146
|
+
console.error(error.message);
|
|
147
|
+
console.error('\nFor help, run: acm-aicoder --help');
|
|
148
|
+
process.exit(1);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
main().catch(err => {
|
|
152
|
+
console.error('Fatal error:', err);
|
|
153
|
+
process.exit(1);
|
|
154
|
+
});
|
|
155
|
+
//# sourceMappingURL=interactive.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"interactive.js","sourceRoot":"","sources":["../../bin/interactive.tsx"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
export interface ProviderMetadata {
|
|
2
|
+
provider: string;
|
|
3
|
+
model: string;
|
|
4
|
+
inputCostPer1M?: number;
|
|
5
|
+
outputCostPer1M?: number;
|
|
6
|
+
maxContextTokens?: number;
|
|
7
|
+
maxConcurrentRequests?: number;
|
|
8
|
+
recommendedTemperature?: number;
|
|
9
|
+
supportsStreaming: boolean;
|
|
10
|
+
}
|
|
11
|
+
export declare const PROVIDER_METADATA: Record<string, ProviderMetadata>;
|
|
12
|
+
export declare function getProviderMetadata(model: string): ProviderMetadata;
|
|
13
|
+
export declare function estimateTokenCount(text: string): number;
|
|
14
|
+
export declare function estimateCost(inputTokens: number, outputTokens: number, metadata: ProviderMetadata): number;
|
|
15
|
+
//# sourceMappingURL=providers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.d.ts","sourceRoot":"","sources":["../../../src/config/providers.ts"],"names":[],"mappings":"AAGA,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IAGd,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,eAAe,CAAC,EAAE,MAAM,CAAC;IAGzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,qBAAqB,CAAC,EAAE,MAAM,CAAC;IAG/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,iBAAiB,EAAE,OAAO,CAAC;CAC5B;AAID,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,MAAM,EAAE,gBAAgB,CAuG9D,CAAC;AAEF,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,gBAAgB,CAuBnE;AAED,wBAAgB,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED,wBAAgB,YAAY,CAC1B,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,QAAQ,EAAE,gBAAgB,GACzB,MAAM,CASR"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
// Provider metadata for budget governance
|
|
2
|
+
// Token costs and context limits per model/provider
|
|
3
|
+
// Provider metadata registry
|
|
4
|
+
// Sources: OpenAI pricing, Anthropic pricing, Azure OpenAI, local models
|
|
5
|
+
export const PROVIDER_METADATA = {
|
|
6
|
+
// OpenAI models
|
|
7
|
+
'gpt-4o': {
|
|
8
|
+
provider: 'openai',
|
|
9
|
+
model: 'gpt-4o',
|
|
10
|
+
inputCostPer1M: 2.50,
|
|
11
|
+
outputCostPer1M: 10.00,
|
|
12
|
+
maxContextTokens: 128000,
|
|
13
|
+
maxConcurrentRequests: 10,
|
|
14
|
+
recommendedTemperature: 0.7,
|
|
15
|
+
supportsStreaming: true,
|
|
16
|
+
},
|
|
17
|
+
'gpt-4o-mini': {
|
|
18
|
+
provider: 'openai',
|
|
19
|
+
model: 'gpt-4o-mini',
|
|
20
|
+
inputCostPer1M: 0.15,
|
|
21
|
+
outputCostPer1M: 0.60,
|
|
22
|
+
maxContextTokens: 128000,
|
|
23
|
+
maxConcurrentRequests: 10,
|
|
24
|
+
recommendedTemperature: 0.7,
|
|
25
|
+
supportsStreaming: true,
|
|
26
|
+
},
|
|
27
|
+
'gpt-4-turbo': {
|
|
28
|
+
provider: 'openai',
|
|
29
|
+
model: 'gpt-4-turbo',
|
|
30
|
+
inputCostPer1M: 10.00,
|
|
31
|
+
outputCostPer1M: 30.00,
|
|
32
|
+
maxContextTokens: 128000,
|
|
33
|
+
maxConcurrentRequests: 10,
|
|
34
|
+
recommendedTemperature: 0.7,
|
|
35
|
+
supportsStreaming: true,
|
|
36
|
+
},
|
|
37
|
+
'gpt-3.5-turbo': {
|
|
38
|
+
provider: 'openai',
|
|
39
|
+
model: 'gpt-3.5-turbo',
|
|
40
|
+
inputCostPer1M: 0.50,
|
|
41
|
+
outputCostPer1M: 1.50,
|
|
42
|
+
maxContextTokens: 16385,
|
|
43
|
+
maxConcurrentRequests: 10,
|
|
44
|
+
recommendedTemperature: 0.7,
|
|
45
|
+
supportsStreaming: true,
|
|
46
|
+
},
|
|
47
|
+
// Anthropic models
|
|
48
|
+
'claude-3-opus-20240229': {
|
|
49
|
+
provider: 'anthropic',
|
|
50
|
+
model: 'claude-3-opus-20240229',
|
|
51
|
+
inputCostPer1M: 15.00,
|
|
52
|
+
outputCostPer1M: 75.00,
|
|
53
|
+
maxContextTokens: 200000,
|
|
54
|
+
maxConcurrentRequests: 5,
|
|
55
|
+
recommendedTemperature: 0.7,
|
|
56
|
+
supportsStreaming: true,
|
|
57
|
+
},
|
|
58
|
+
'claude-3-sonnet-20240229': {
|
|
59
|
+
provider: 'anthropic',
|
|
60
|
+
model: 'claude-3-sonnet-20240229',
|
|
61
|
+
inputCostPer1M: 3.00,
|
|
62
|
+
outputCostPer1M: 15.00,
|
|
63
|
+
maxContextTokens: 200000,
|
|
64
|
+
maxConcurrentRequests: 5,
|
|
65
|
+
recommendedTemperature: 0.7,
|
|
66
|
+
supportsStreaming: true,
|
|
67
|
+
},
|
|
68
|
+
'claude-3-haiku-20240307': {
|
|
69
|
+
provider: 'anthropic',
|
|
70
|
+
model: 'claude-3-haiku-20240307',
|
|
71
|
+
inputCostPer1M: 0.25,
|
|
72
|
+
outputCostPer1M: 1.25,
|
|
73
|
+
maxContextTokens: 200000,
|
|
74
|
+
maxConcurrentRequests: 5,
|
|
75
|
+
recommendedTemperature: 0.7,
|
|
76
|
+
supportsStreaming: true,
|
|
77
|
+
},
|
|
78
|
+
// Local/self-hosted models (no cost)
|
|
79
|
+
'llama3.1': {
|
|
80
|
+
provider: 'ollama',
|
|
81
|
+
model: 'llama3.1',
|
|
82
|
+
inputCostPer1M: 0,
|
|
83
|
+
outputCostPer1M: 0,
|
|
84
|
+
maxContextTokens: 128000,
|
|
85
|
+
recommendedTemperature: 0.7,
|
|
86
|
+
supportsStreaming: true,
|
|
87
|
+
},
|
|
88
|
+
'qwen2.5:7b': {
|
|
89
|
+
provider: 'ollama',
|
|
90
|
+
model: 'qwen2.5:7b',
|
|
91
|
+
inputCostPer1M: 0,
|
|
92
|
+
outputCostPer1M: 0,
|
|
93
|
+
maxContextTokens: 32768,
|
|
94
|
+
recommendedTemperature: 0.7,
|
|
95
|
+
supportsStreaming: true,
|
|
96
|
+
},
|
|
97
|
+
'deepseek-coder': {
|
|
98
|
+
provider: 'ollama',
|
|
99
|
+
model: 'deepseek-coder',
|
|
100
|
+
inputCostPer1M: 0,
|
|
101
|
+
outputCostPer1M: 0,
|
|
102
|
+
maxContextTokens: 16000,
|
|
103
|
+
recommendedTemperature: 0.7,
|
|
104
|
+
supportsStreaming: true,
|
|
105
|
+
},
|
|
106
|
+
};
|
|
107
|
+
export function getProviderMetadata(model) {
|
|
108
|
+
// Try exact match first
|
|
109
|
+
if (PROVIDER_METADATA[model]) {
|
|
110
|
+
return PROVIDER_METADATA[model];
|
|
111
|
+
}
|
|
112
|
+
// Try prefix match (e.g., "gpt-4o-2024-05-13" matches "gpt-4o")
|
|
113
|
+
for (const [key, metadata] of Object.entries(PROVIDER_METADATA)) {
|
|
114
|
+
if (model.startsWith(key)) {
|
|
115
|
+
return metadata;
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
// Default metadata for unknown models (assume local/free)
|
|
119
|
+
return {
|
|
120
|
+
provider: 'unknown',
|
|
121
|
+
model,
|
|
122
|
+
inputCostPer1M: 0,
|
|
123
|
+
outputCostPer1M: 0,
|
|
124
|
+
maxContextTokens: 8192,
|
|
125
|
+
recommendedTemperature: 0.7,
|
|
126
|
+
supportsStreaming: true,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
export function estimateTokenCount(text) {
|
|
130
|
+
// Rough approximation: 1 token ≈ 4 characters for English text
|
|
131
|
+
// More accurate would use tiktoken library, but this is sufficient for budget estimation
|
|
132
|
+
return Math.ceil(text.length / 4);
|
|
133
|
+
}
|
|
134
|
+
export function estimateCost(inputTokens, outputTokens, metadata) {
|
|
135
|
+
if (!metadata.inputCostPer1M || !metadata.outputCostPer1M) {
|
|
136
|
+
return 0;
|
|
137
|
+
}
|
|
138
|
+
const inputCost = (inputTokens / 1_000_000) * metadata.inputCostPer1M;
|
|
139
|
+
const outputCost = (outputTokens / 1_000_000) * metadata.outputCostPer1M;
|
|
140
|
+
return inputCost + outputCost;
|
|
141
|
+
}
|
|
142
|
+
//# sourceMappingURL=providers.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"providers.js","sourceRoot":"","sources":["../../../src/config/providers.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export type Provider = 'ollama' | 'vllm';
|
|
2
|
+
export interface SessionConfig {
|
|
3
|
+
provider: Provider;
|
|
4
|
+
model: string;
|
|
5
|
+
baseUrl?: string;
|
|
6
|
+
workspace: string;
|
|
7
|
+
temperature: number;
|
|
8
|
+
seed?: number;
|
|
9
|
+
planCount: 1 | 2;
|
|
10
|
+
sessionId: string;
|
|
11
|
+
timestamp: number;
|
|
12
|
+
}
|
|
13
|
+
export interface CLIArgs {
|
|
14
|
+
provider?: string;
|
|
15
|
+
model?: string;
|
|
16
|
+
'base-url'?: string;
|
|
17
|
+
workspace?: string;
|
|
18
|
+
temperature?: string;
|
|
19
|
+
seed?: string;
|
|
20
|
+
plans?: string;
|
|
21
|
+
[key: string]: string | undefined;
|
|
22
|
+
}
|
|
23
|
+
export declare function parseCliArgs(argv: string[]): CLIArgs;
|
|
24
|
+
export declare function validateAndNormalizeConfig(args: CLIArgs): SessionConfig;
|
|
25
|
+
//# sourceMappingURL=session.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../src/config/session.ts"],"names":[],"mappings":"AAOA,MAAM,MAAM,QAAQ,GAAG,QAAQ,GAAG,MAAM,CAAC;AAEzC,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,OAAO;IACtB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CA6BpD;AAED,wBAAgB,0BAA0B,CAAC,IAAI,EAAE,OAAO,GAAG,aAAa,CA+EvE"}
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
// Session configuration for AI Coder Phase 2
|
|
2
|
+
// Manages CLI arguments and session metadata using provider/model semantics
|
|
3
|
+
import { existsSync, statSync } from 'fs';
|
|
4
|
+
import path from 'path';
|
|
5
|
+
import os from 'os';
|
|
6
|
+
export function parseCliArgs(argv) {
|
|
7
|
+
const args = {};
|
|
8
|
+
for (let i = 0; i < argv.length; i++) {
|
|
9
|
+
const arg = argv[i];
|
|
10
|
+
if (arg.startsWith('--')) {
|
|
11
|
+
// Support --key=value form
|
|
12
|
+
if (arg.includes('=')) {
|
|
13
|
+
const pair = arg.slice(2);
|
|
14
|
+
const eqIndex = pair.indexOf('=');
|
|
15
|
+
const key = pair.slice(0, eqIndex);
|
|
16
|
+
const value = pair.slice(eqIndex + 1);
|
|
17
|
+
if (key.length > 0) {
|
|
18
|
+
args[key] = value;
|
|
19
|
+
}
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
// Support space-separated --key value form
|
|
23
|
+
const key = arg.slice(2);
|
|
24
|
+
const value = argv[i + 1];
|
|
25
|
+
if (value && !value.startsWith('--')) {
|
|
26
|
+
args[key] = value;
|
|
27
|
+
i++;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
return args;
|
|
32
|
+
}
|
|
33
|
+
export function validateAndNormalizeConfig(args) {
|
|
34
|
+
const provider = args.provider || 'ollama';
|
|
35
|
+
if (!['ollama', 'vllm'].includes(provider)) {
|
|
36
|
+
throw new Error(`Invalid --provider: ${args.provider}. Must be "ollama" or "vllm".`);
|
|
37
|
+
}
|
|
38
|
+
const model = args.model || (provider === 'ollama' ? 'llama3.1' : undefined);
|
|
39
|
+
const missing = [];
|
|
40
|
+
if (!model)
|
|
41
|
+
missing.push('--model');
|
|
42
|
+
if (!args.workspace || args.workspace.trim().length === 0)
|
|
43
|
+
missing.push('--workspace');
|
|
44
|
+
if (missing.length > 0) {
|
|
45
|
+
throw new Error(`Missing required parameters: ${missing.join(', ')}\n\n` +
|
|
46
|
+
`ACM AI Coder requires these parameters to start:\n` +
|
|
47
|
+
` --provider <ollama|vllm> LLM provider (default: ollama)\n` +
|
|
48
|
+
` --model <name> Model identifier (e.g., llama3.1, gpt-4o)\n` +
|
|
49
|
+
` --workspace <path> REQUIRED: absolute or relative path to project root\n\n` +
|
|
50
|
+
`Optional parameters:\n` +
|
|
51
|
+
` --base-url <url> Override provider base URL\n` +
|
|
52
|
+
` --temperature <0-2> LLM temperature (default: 0.7)\n` +
|
|
53
|
+
` --seed <number> Random seed for reproducibility\n` +
|
|
54
|
+
` --plans <1|2> Number of alternative plans (default: 1)\n\n` +
|
|
55
|
+
`Examples:\n` +
|
|
56
|
+
` acm-aicoder --provider vllm --model gpt-4o --workspace /abs/path\n` +
|
|
57
|
+
` acm-aicoder --provider ollama --model llama3.1 --workspace=~/myproject`);
|
|
58
|
+
}
|
|
59
|
+
const temperature = args.temperature ? parseFloat(args.temperature) : 0.7;
|
|
60
|
+
if (isNaN(temperature) || temperature < 0 || temperature > 2) {
|
|
61
|
+
throw new Error(`Invalid --temperature: must be between 0 and 2`);
|
|
62
|
+
}
|
|
63
|
+
const seed = args.seed ? parseInt(args.seed, 10) : undefined;
|
|
64
|
+
if (seed !== undefined && Number.isNaN(seed)) {
|
|
65
|
+
throw new Error(`Invalid --seed: must be a number`);
|
|
66
|
+
}
|
|
67
|
+
const planCount = args.plans === '2' ? 2 : 1;
|
|
68
|
+
// Enforce explicit workspace and normalize
|
|
69
|
+
const baseCwd = process.env.INIT_CWD || process.env.PWD || process.cwd();
|
|
70
|
+
let workspaceInput = args.workspace;
|
|
71
|
+
// Expand ~ to user home
|
|
72
|
+
if (workspaceInput.startsWith('~/')) {
|
|
73
|
+
workspaceInput = path.join(os.homedir(), workspaceInput.slice(2));
|
|
74
|
+
}
|
|
75
|
+
const resolvedWorkspace = path.isAbsolute(workspaceInput)
|
|
76
|
+
? workspaceInput
|
|
77
|
+
: path.resolve(baseCwd, workspaceInput);
|
|
78
|
+
if (!existsSync(resolvedWorkspace)) {
|
|
79
|
+
throw new Error(`Workspace path "${resolvedWorkspace}" does not exist. Please provide a valid --workspace.`);
|
|
80
|
+
}
|
|
81
|
+
const stats = statSync(resolvedWorkspace);
|
|
82
|
+
if (!stats.isDirectory()) {
|
|
83
|
+
throw new Error(`Workspace path "${resolvedWorkspace}" is not a directory. Please provide a valid --workspace.`);
|
|
84
|
+
}
|
|
85
|
+
return {
|
|
86
|
+
provider,
|
|
87
|
+
model: model,
|
|
88
|
+
baseUrl: args['base-url'],
|
|
89
|
+
workspace: resolvedWorkspace,
|
|
90
|
+
temperature,
|
|
91
|
+
seed,
|
|
92
|
+
planCount,
|
|
93
|
+
sessionId: `session-${Date.now()}`,
|
|
94
|
+
timestamp: Date.now(),
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
//# sourceMappingURL=session.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"session.js","sourceRoot":"","sources":["../../../src/config/session.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Document interface for BM25 search
|
|
3
|
+
*/
|
|
4
|
+
export interface Document {
|
|
5
|
+
id: string;
|
|
6
|
+
title?: string;
|
|
7
|
+
content: string;
|
|
8
|
+
[key: string]: any;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Search result with score
|
|
12
|
+
*/
|
|
13
|
+
export interface SearchResult {
|
|
14
|
+
document: Document;
|
|
15
|
+
score: number;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* BM25 parameters
|
|
19
|
+
*/
|
|
20
|
+
export interface BM25Params {
|
|
21
|
+
k1?: number;
|
|
22
|
+
b?: number;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* BM25 Search Engine
|
|
26
|
+
*
|
|
27
|
+
* Implements the BM25 ranking function for full-text search.
|
|
28
|
+
* BM25 is a probabilistic ranking function used by search engines
|
|
29
|
+
* to estimate the relevance of documents to a query.
|
|
30
|
+
*/
|
|
31
|
+
export declare class BM25Search {
|
|
32
|
+
private documents;
|
|
33
|
+
private documentTokens;
|
|
34
|
+
private documentFrequency;
|
|
35
|
+
private averageDocumentLength;
|
|
36
|
+
private k1;
|
|
37
|
+
private b;
|
|
38
|
+
constructor(params?: BM25Params);
|
|
39
|
+
/**
|
|
40
|
+
* Index documents for search
|
|
41
|
+
*/
|
|
42
|
+
index(documents: Document[]): void;
|
|
43
|
+
/**
|
|
44
|
+
* Extract searchable text from document
|
|
45
|
+
*/
|
|
46
|
+
private extractText;
|
|
47
|
+
/**
|
|
48
|
+
* Calculate IDF (Inverse Document Frequency)
|
|
49
|
+
*/
|
|
50
|
+
private idf;
|
|
51
|
+
/**
|
|
52
|
+
* Calculate BM25 score for a document
|
|
53
|
+
*/
|
|
54
|
+
private score;
|
|
55
|
+
/**
|
|
56
|
+
* Search for documents matching the query
|
|
57
|
+
*/
|
|
58
|
+
search(query: string, limit?: number): SearchResult[];
|
|
59
|
+
/**
|
|
60
|
+
* Get all indexed documents
|
|
61
|
+
*/
|
|
62
|
+
getDocuments(): Document[];
|
|
63
|
+
/**
|
|
64
|
+
* Get document count
|
|
65
|
+
*/
|
|
66
|
+
getDocumentCount(): number;
|
|
67
|
+
}
|
|
68
|
+
//# sourceMappingURL=bm25.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bm25.d.ts","sourceRoot":"","sources":["../../../src/context/bm25.ts"],"names":[],"mappings":"AAEA;;GAEG;AACH,MAAM,WAAW,QAAQ;IACvB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,QAAQ,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;CACf;AAED;;GAEG;AACH,MAAM,WAAW,UAAU;IACzB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,CAAC,CAAC,EAAE,MAAM,CAAC;CACZ;AAeD;;;;;;GAMG;AACH,qBAAa,UAAU;IACrB,OAAO,CAAC,SAAS,CAAkB;IACnC,OAAO,CAAC,cAAc,CAAoC;IAC1D,OAAO,CAAC,iBAAiB,CAAkC;IAC3D,OAAO,CAAC,qBAAqB,CAAa;IAC1C,OAAO,CAAC,EAAE,CAAS;IACnB,OAAO,CAAC,CAAC,CAAS;gBAEN,MAAM,GAAE,UAAe;IAKnC;;OAEG;IACH,KAAK,CAAC,SAAS,EAAE,QAAQ,EAAE,GAAG,IAAI;IAuBlC;;OAEG;IACH,OAAO,CAAC,WAAW;IAOnB;;OAEG;IACH,OAAO,CAAC,GAAG;IAQX;;OAEG;IACH,OAAO,CAAC,KAAK;IAqBb;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,KAAK,GAAE,MAAW,GAAG,YAAY,EAAE;IAwBzD;;OAEG;IACH,YAAY,IAAI,QAAQ,EAAE;IAI1B;;OAEG;IACH,gBAAgB,IAAI,MAAM;CAG3B"}
|