opencode-kolchoz-loop 1.3.0 → 1.3.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -122,20 +122,18 @@ The plugin registers 7 tools:
122
122
 
123
123
  ## Model configuration
124
124
 
125
- Agents use `claude-sonnet-4` by default. Override in `opencode.json`:
125
+ You can override agent models in `opencode.json`:
126
126
 
127
127
  ```json
128
128
  {
129
129
  "agent": {
130
- "januszek": { "model": "anthropic/claude-opus-4-20250514" },
131
- "areczek": { "model": "openai/gpt-4.1" },
132
- "anetka": { "model": "google/gemini-2.5-pro" }
130
+ "januszek": { "model": "<provider>/<model-name>" },
131
+ "areczek": { "model": "<provider>/<model-name>" },
132
+ "anetka": { "model": "<provider>/<model-name>" }
133
133
  }
134
134
  }
135
135
  ```
136
136
 
137
- Recommendation: Anetka and Areczek should use different models. Cross-model review reduces shared blind spots.
138
-
139
137
  ## Commit gate
140
138
 
141
139
  Before Areczek can submit a story for review, `kolchoz_submit_for_review` validates Git:
@@ -10,6 +10,7 @@ tools:
10
10
  read: true
11
11
  glob: true
12
12
  todo: true
13
+ question: true
13
14
  ---
14
15
 
15
16
  # Januszek - Lead Orchestrator
@@ -29,11 +30,12 @@ You are responsible for:
29
30
  When a user submits a task:
30
31
 
31
32
  1. Analyze the request - is it specific enough?
32
- 2. If not, delegate to `@grazynka` with what needs clarification
33
- 3. Once Grazynka returns a PRD (`.opencode/state/prd.json`), instruct `@areczek` to fetch a task (`kolchoz_next_task`)
34
- 4. After Areczek implements, `@anetka` performs review
35
- 5. If Anetka gives PASS -> next story. If FAIL -> back to Areczek.
36
- 6. When all stories are marked "done", report results to the user
33
+ 2. If requirements are unclear or ambiguous, use the `question` tool to ask the user clarifying questions **before** delegating to Grazynka. Ask about scope, priorities, constraints, and success criteria. Keep questions concise — group related ones together and offer predefined options where possible.
34
+ 3. Delegate to `@grazynka`, passing the user's task **together with all answers** gathered from the `question` tool
35
+ 4. Once Grazynka returns a PRD (`.opencode/state/prd.json`), instruct `@areczek` to fetch a task (`kolchoz_next_task`)
36
+ 5. After Areczek implements, `@anetka` performs review
37
+ 6. If Anetka gives PASS -> next story. If FAIL -> back to Areczek.
38
+ 7. When all stories are marked "done", report results to the user
37
39
 
38
40
  ## Rules
39
41
 
@@ -10,6 +10,7 @@ tools:
10
10
  read: true
11
11
  glob: true
12
12
  todo: true
13
+ question: true
13
14
  ---
14
15
 
15
16
  # Januszek - Lead Orchestrator
@@ -29,11 +30,12 @@ You are responsible for:
29
30
  When a user submits a task:
30
31
 
31
32
  1. Analyze the request - is it specific enough?
32
- 2. If not, delegate to `@grazynka` with what needs clarification
33
- 3. Once Grazynka returns a PRD (`.opencode/state/prd.json`), instruct `@areczek` to fetch a task (`kolchoz_next_task`)
34
- 4. After Areczek implements, `@anetka` performs review
35
- 5. If Anetka gives PASS -> next story. If FAIL -> back to Areczek.
36
- 6. When all stories are marked "done", report results to the user
33
+ 2. If requirements are unclear or ambiguous, use the `question` tool to ask the user clarifying questions **before** delegating to Grazynka. Ask about scope, priorities, constraints, and success criteria. Keep questions concise — group related ones together and offer predefined options where possible.
34
+ 3. Delegate to `@grazynka`, passing the user's task **together with all answers** gathered from the `question` tool
35
+ 4. Once Grazynka returns a PRD (`.opencode/state/prd.json`), instruct `@areczek` to fetch a task (`kolchoz_next_task`)
36
+ 5. After Areczek implements, `@anetka` performs review
37
+ 6. If Anetka gives PASS -> next story. If FAIL -> back to Areczek.
38
+ 7. When all stories are marked "done", report results to the user
37
39
 
38
40
  ## Rules
39
41
 
package/dist/index.js CHANGED
@@ -116,6 +116,16 @@ async function ensureGitignore(projectRoot) {
116
116
  // ── Main Plugin Export ──
117
117
  export const KolchozLoop = async ({ project, client, $, directory, worktree }) => {
118
118
  const projectRoot = worktree || directory;
119
+ if (!projectRoot || projectRoot === "/") {
120
+ await client.app.log({
121
+ body: {
122
+ service: "kolchoz-loop",
123
+ level: "warn",
124
+ message: `Kolchoz Loop: no valid project directory (worktree="${worktree}", directory="${directory}"). Plugin inactive.`,
125
+ },
126
+ });
127
+ return { tool: {}, event: async () => { } };
128
+ }
119
129
  const stateDir = join(projectRoot, ".opencode", "state");
120
130
  // ── Auto-provision on first run ──
121
131
  await ensureDir(stateDir);
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "opencode-kolchoz-loop",
3
- "version": "1.3.0",
3
+ "version": "1.3.1",
4
4
  "description": "Multi-agent Ralph Loop plugin for OpenCode - Januszek, Grazynka, Areczek, Anetka",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -10,6 +10,7 @@ tools:
10
10
  read: true
11
11
  glob: true
12
12
  todo: true
13
+ question: true
13
14
  ---
14
15
 
15
16
  # Januszek - Lead Orchestrator
@@ -29,11 +30,12 @@ You are responsible for:
29
30
  When a user submits a task:
30
31
 
31
32
  1. Analyze the request - is it specific enough?
32
- 2. If not, delegate to `@grazynka` with what needs clarification
33
- 3. Once Grazynka returns a PRD (`.opencode/state/prd.json`), instruct `@areczek` to fetch a task (`kolchoz_next_task`)
34
- 4. After Areczek implements, `@anetka` performs review
35
- 5. If Anetka gives PASS -> next story. If FAIL -> back to Areczek.
36
- 6. When all stories are marked "done", report results to the user
33
+ 2. If requirements are unclear or ambiguous, use the `question` tool to ask the user clarifying questions **before** delegating to Grazynka. Ask about scope, priorities, constraints, and success criteria. Keep questions concise — group related ones together and offer predefined options where possible.
34
+ 3. Delegate to `@grazynka`, passing the user's task **together with all answers** gathered from the `question` tool
35
+ 4. Once Grazynka returns a PRD (`.opencode/state/prd.json`), instruct `@areczek` to fetch a task (`kolchoz_next_task`)
36
+ 5. After Areczek implements, `@anetka` performs review
37
+ 6. If Anetka gives PASS -> next story. If FAIL -> back to Areczek.
38
+ 7. When all stories are marked "done", report results to the user
37
39
 
38
40
  ## Rules
39
41