orchestrix-yuri 4.8.1 → 4.8.3

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.
@@ -1690,12 +1690,14 @@ class PhaseOrchestrator {
1690
1690
  this._timer = null;
1691
1691
  }
1692
1692
 
1693
- log.engine(`Change management complete: ${summary}`);
1693
+ const scope = (this._changeContext && this._changeContext.scope) || 'small';
1694
+
1695
+ log.engine(`Change management complete (scope=${scope}): ${summary}`);
1694
1696
  this.onComplete('change', `✅ Change management complete.\n\n${summary}`);
1695
1697
 
1696
- // Transition to dev monitoring if SM was started in a dev session.
1697
- // Without this, the SM Architect Dev QA cycle runs unmonitored.
1698
- if (this._session && tmx.hasSession(this._session)) {
1698
+ // Only transition to dev monitoring for medium/large changes where SM *draft
1699
+ // started the dev cycle. Small/direct changes are single-agent tasks done is done.
1700
+ if ((scope === 'medium' || scope === 'large') && this._session && tmx.hasSession(this._session)) {
1699
1701
  this._phase = 'develop';
1700
1702
  this._changeContext = null;
1701
1703
  this._devStartedAt = Date.now();
@@ -552,18 +552,35 @@ class Router {
552
552
  return { text: '❌ Usage: *change "description of the change"\n\nExample: *change "Add dark mode toggle to settings page"' };
553
553
  }
554
554
 
555
- // Step 1: Ask Claude to assess scope
555
+ // Step 1: Ask Claude to assess scope — with conversation context + project state
556
556
  this.history.append(msg.chatId, 'user', msg.text);
557
557
  log.router(`Change request: "${description.slice(0, 80)}..." — assessing scope...`);
558
558
 
559
+ // Build context: recent conversation + project focus
560
+ const recentMsgs = this.history.getRecent(msg.chatId);
561
+ const recentContext = recentMsgs.slice(-6).map((m) => `${m.role}: ${m.text.slice(0, 200)}`).join('\n');
562
+
563
+ let projectContext = '';
564
+ try {
565
+ const focusPath = path.join(projectRoot, '.yuri', 'focus.yaml');
566
+ if (fs.existsSync(focusPath)) {
567
+ const focus = yaml.load(fs.readFileSync(focusPath, 'utf8')) || {};
568
+ projectContext = `Current phase: ${focus.phase || '?'}, step: ${focus.step || '?'}, pulse: ${focus.pulse || '?'}`;
569
+ }
570
+ } catch { /* ok */ }
571
+
559
572
  const scopePrompt = `You are assessing a change request for a software project.
560
573
 
561
- Change description: "${description}"
574
+ ${projectContext ? `Project state: ${projectContext}\n` : ''}${recentContext ? `Recent conversation:\n${recentContext}\n\n` : ''}Change description: "${description}"
575
+
576
+ IMPORTANT: Consider the FULL conversation context, not just the description.
577
+ If the user is approving/confirming a previously discussed plan that involves multiple components, stories, or a major redesign — that is medium or large, NOT small.
578
+ "批准" / "ok" / "go ahead" in response to a multi-story plan = large scope.
562
579
 
563
- Based on the description, classify the scope as one of:
564
- - **small**: ≤5 files affected, no architectural changes, no new dependencies (e.g., UI tweak, bug fix, small feature)
565
- - **medium**: Cross-component change, needs PO routing and possibly architect review (e.g., new API endpoint, refactoring a module)
566
- - **large**: Cross-module/database/security change, needs full re-planning (e.g., auth system rewrite, new microservice)
580
+ Classify the scope as one of:
581
+ - **small**: Single-file fix, UI tweak, or isolated change (≤5 files, no architecture impact)
582
+ - **medium**: Cross-component change, needs PO routing (new API endpoint, refactoring a module)
583
+ - **large**: Cross-module change, multi-story plan, major redesign, needs full orchestration
567
584
 
568
585
  Reply with ONLY one word: small, medium, or large. Nothing else.`;
569
586
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "orchestrix-yuri",
3
- "version": "4.8.1",
3
+ "version": "4.8.3",
4
4
  "description": "Yuri — Meta-Orchestrator for Orchestrix. Drive your entire project lifecycle with natural language.",
5
5
  "main": "lib/installer.js",
6
6
  "bin": {