Skip to content

Commit 5771efd

Browse files
authored
Merge pull request #7 from Tarquinen/feat/workspace-dir-config-support
feat: pass workspace directory to OpencodeAI for project-level config discovery
2 parents 41480e8 + db69ac5 commit 5771efd

File tree

6 files changed

+17
-9
lines changed

6 files changed

+17
-9
lines changed

.gitignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -24,3 +24,6 @@ Thumbs.db
2424
*.swp
2525
*.swo
2626
*~
27+
28+
# OpenCode
29+
.opencode/

.npmignore

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,3 +18,6 @@ lib/
1818
# Git
1919
.git/
2020
.gitignore
21+
22+
# OpenCode
23+
.opencode/

lib/janitor.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ export class Janitor {
261261
})
262262
}
263263

264-
const modelSelection = await selectModel(currentModelInfo, this.logger, this.configModel)
264+
const modelSelection = await selectModel(currentModelInfo, this.logger, this.configModel, this.workingDirectory)
265265

266266
this.logger.info("janitor", "Model selected for analysis", {
267267
sessionID,

lib/model-selector.ts

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -69,13 +69,13 @@ function shouldSkipProvider(providerID: string): boolean {
6969
* Attempts to import OpencodeAI with retry logic to handle plugin initialization timing issues.
7070
* Some providers (like openai via @openhax/codex) may not be fully initialized on first attempt.
7171
*/
72-
async function importOpencodeAI(logger?: Logger, maxRetries: number = 3, delayMs: number = 100): Promise<any> {
72+
async function importOpencodeAI(logger?: Logger, maxRetries: number = 3, delayMs: number = 100, workspaceDir?: string): Promise<any> {
7373
let lastError: Error | undefined;
7474

7575
for (let attempt = 1; attempt <= maxRetries; attempt++) {
7676
try {
7777
const { OpencodeAI } = await import('@tarquinen/opencode-auth-provider');
78-
return new OpencodeAI();
78+
return new OpencodeAI({ workspaceDir });
7979
} catch (error: any) {
8080
lastError = error;
8181

@@ -117,13 +117,15 @@ async function importOpencodeAI(logger?: Logger, maxRetries: number = 3, delayMs
117117
export async function selectModel(
118118
currentModel?: ModelInfo,
119119
logger?: Logger,
120-
configModel?: string
120+
configModel?: string,
121+
workspaceDir?: string
121122
): Promise<ModelSelectionResult> {
122-
logger?.info('model-selector', 'Model selection started', { currentModel, configModel });
123+
logger?.info('model-selector', 'Model selection started', { currentModel, configModel, workspaceDir });
123124

124125
// Lazy import with retry logic - handles plugin initialization timing issues
125126
// Some providers (like openai via @openhax/codex) may not be ready on first attempt
126-
const opencodeAI = await importOpencodeAI(logger);
127+
// Pass workspaceDir so OpencodeAI can find project-level config and plugins
128+
const opencodeAI = await importOpencodeAI(logger, 3, 100, workspaceDir);
127129

128130
let failedModelInfo: ModelInfo | undefined;
129131

package-lock.json

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
{
22
"$schema": "https://json.schemastore.org/package.json",
33
"name": "@tarquinen/opencode-dcp",
4-
"version": "0.3.6",
4+
"version": "0.3.7",
55
"type": "module",
66
"description": "OpenCode plugin that optimizes token usage by pruning obsolete tool outputs from conversation context",
77
"main": "./dist/index.js",

0 commit comments

Comments
 (0)