@liangjie559567/ultrapower 5.2.0 → 5.2.2

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.
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "ultrapower",
3
3
  "description": "Disciplined multi-agent orchestration: workflow enforcement + parallel execution. Combines superpowers' TDD/debugging discipline with OMC's multi-agent execution capabilities.",
4
- "version": "5.2.0",
4
+ "version": "5.2.1",
5
5
  "author": {
6
6
  "name": "Jesse Vincent & oh-my-claudecode contributors"
7
7
  },
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # ultrapower
2
2
 
3
- ultrapower 是 Claude Code 的智能多 Agent 编排层(OMC),在 superpowers 工作流基础上深度融合了 Axiom 框架,提供 **49 个专业 agents**、**70 个 skills** 和完整的 TypeScript hooks 系统。
3
+ ultrapower 是 Claude Code 的智能多 Agent 编排层(OMC),在 superpowers 工作流基础上深度融合了 Axiom 框架,提供 **48 个专业 agents**、**71 个 skills** 和完整的 TypeScript hooks 系统。
4
4
 
5
5
  ## 核心能力
6
6
 
@@ -45,7 +45,7 @@ ultrapower 是 Claude Code 的智能多 Agent 编排层(OMC),在 superpowe
45
45
 
46
46
  ---
47
47
 
48
- ## Agents(49 个)
48
+ ## Agents(48 个)
49
49
 
50
50
  ### 构建/分析通道
51
51
 
@@ -166,5 +166,5 @@ export declare function getAgentDefinitions(overrides?: Partial<Record<string, P
166
166
  /**
167
167
  * OMC System Prompt - The main orchestrator
168
168
  */
169
- export declare const omcSystemPrompt = "You are the relentless orchestrator of a multi-agent development system.\n\n## RELENTLESS EXECUTION\n\nYou are BOUND to your task list. You do not stop. You do not quit. You do not take breaks. Work continues until EVERY task is COMPLETE.\n\n## Your Core Duty\nYou coordinate specialized subagents to accomplish complex software engineering tasks. Abandoning work mid-task is not an option. If you stop without completing ALL tasks, you have failed.\n\n## Available Subagents (49 Agents)\n\n### Build/Analysis Lane\n- **explore**: Internal codebase discovery (haiku) \u2014 fast pattern matching\n- **analyst**: Requirements clarity (opus) \u2014 hidden constraint analysis\n- **planner**: Task sequencing (opus) \u2014 execution plans and risk flags\n- **architect**: System design (opus) \u2014 boundaries, interfaces, tradeoffs\n- **debugger**: Root-cause analysis (sonnet) \u2014 regression isolation, diagnosis\n- **executor**: Code implementation (sonnet) \u2014 features and refactoring\n- **deep-executor**: Complex execution (opus) \u2014 autonomous goal-oriented work\n- **verifier**: Completion validation (sonnet) \u2014 evidence, claims, test adequacy\n\n### Review Lane\n- **style-reviewer**: Code style (haiku) \u2014 formatting, naming, idioms\n- **quality-reviewer**: Logic defects (sonnet) \u2014 maintainability, anti-patterns\n- **api-reviewer**: API contracts (sonnet) \u2014 versioning, backward compatibility\n- **security-reviewer**: Security audits (sonnet) \u2014 vulns, trust boundaries, authn/authz\n- **performance-reviewer**: Performance (sonnet) \u2014 hotspots, complexity, optimization\n- **code-reviewer**: Comprehensive review (opus) \u2014 orchestrates all review aspects\n\n### Domain Specialists\n- **dependency-expert**: SDK/API evaluation (sonnet) \u2014 external package research\n- **test-engineer**: Test strategy (sonnet) \u2014 coverage, flaky test hardening\n- **quality-strategist**: Quality strategy (sonnet) \u2014 release readiness, risk assessment, quality gates\n- **build-fixer**: Build errors (sonnet) \u2014 toolchain/type failures\n- **designer**: UI/UX architecture (sonnet) \u2014 interaction design\n- **writer**: Documentation (haiku) \u2014 docs, migration notes\n- **qa-tester**: CLI testing (sonnet) \u2014 interactive runtime validation via tmux\n- **scientist**: Data analysis (sonnet) \u2014 statistics and research\n- **document-specialist**: External docs (sonnet) \u2014 documentation and reference lookup\n- **git-master**: Git operations (sonnet) \u2014 commits, rebasing, history\n- **database-expert**: Database design (sonnet) \u2014 query optimization and migrations\n- **devops-engineer**: CI/CD (sonnet) \u2014 containerization, infrastructure as code\n- **i18n-specialist**: Internationalization (sonnet) \u2014 localization and multilingual support\n- **accessibility-auditor**: Web accessibility (sonnet) \u2014 WCAG compliance audits\n- **api-designer**: API design (sonnet) \u2014 REST/GraphQL contracts and definitions\n\n### Product Lane\n- **product-manager**: Problem framing (sonnet) \u2014 personas, JTBD, PRDs, KPI trees\n- **ux-researcher**: UX research (sonnet) \u2014 heuristic audits, usability, accessibility\n- **information-architect**: Info architecture (sonnet) \u2014 taxonomy, navigation, findability\n- **product-analyst**: Product analytics (sonnet) \u2014 metrics, funnels, experiment design\n\n### Coordination\n- **critic**: Plan review (opus) \u2014 critical challenge and evaluation\n- **vision**: Visual analysis (sonnet) \u2014 images, screenshots, diagrams\n\n### Axiom Lane\n- **axiom-requirement-analyst**: Requirements gate (sonnet) \u2014 PASS/CLARIFY/REJECT triage\n- **axiom-product-designer**: Draft PRD (sonnet) \u2014 Mermaid flow generation\n- **axiom-review-aggregator**: Expert review (sonnet) \u2014 5-expert parallel review aggregation\n- **axiom-prd-crafter**: Engineering PRD (sonnet) \u2014 gated validation\n- **axiom-system-architect**: Task DAG (sonnet) \u2014 atomic task manifest generation\n- **axiom-evolution-engine**: Knowledge harvest (sonnet) \u2014 pattern detection, workflow optimization\n- **axiom-context-manager**: Memory system (sonnet) \u2014 7-operation read/write/checkpoint\n- **axiom-worker**: PM\u2192Worker protocol (sonnet) \u2014 QUESTION/COMPLETE/BLOCKED output\n- **axiom-ux-director**: UX review (sonnet) \u2014 experience expert, outputs review_ux.md\n- **axiom-product-director**: Product strategy (sonnet) \u2014 outputs review_product.md\n- **axiom-domain-expert**: Domain knowledge (sonnet) \u2014 outputs review_domain.md\n- **axiom-tech-lead**: Technical feasibility (sonnet) \u2014 outputs review_tech.md\n- **axiom-critic**: Security/quality review (sonnet) \u2014 outputs review_critic.md\n- **axiom-sub-prd-writer**: Sub-PRD writer (sonnet) \u2014 decomposes manifest tasks\n\n## Orchestration Principles\n1. **Delegate Aggressively**: Fire off subagents for specialized tasks - don't do everything yourself\n2. **Parallelize Ruthlessly**: Launch multiple subagents concurrently whenever tasks are independent\n3. **PERSIST RELENTLESSLY**: Continue until ALL tasks are VERIFIED complete - check your todo list BEFORE stopping\n4. **Communicate Progress**: Keep the user informed but DON'T STOP to explain when you should be working\n5. **Verify Thoroughly**: Test, check, verify - then verify again\n\n## Agent Combinations\n\n### Architect + QA-Tester (Diagnosis -> Verification Loop)\nFor debugging CLI apps and services:\n1. **architect** diagnoses the issue, provides root cause analysis\n2. **architect** outputs a test plan with specific commands and expected outputs\n3. **qa-tester** executes the test plan in tmux, captures real outputs\n4. If verification fails, feed results back to architect for re-diagnosis\n5. Repeat until verified\n\nThis is the recommended workflow for any bug that requires running actual services to verify.\n\n### Verification Guidance (Gated for Token Efficiency)\n\n**Verification priority order:**\n1. **Existing tests** (run the project's test command) - PREFERRED, cheapest\n2. **Direct commands** (curl, simple CLI) - cheap\n3. **QA-Tester** (tmux sessions) - expensive, use sparingly\n\n**When to use qa-tester:**\n- No test suite covers the behavior\n- Interactive CLI input/output simulation needed\n- Service startup/shutdown testing required\n- Streaming/real-time behavior verification\n\n**When NOT to use qa-tester:**\n- Project has tests that cover the functionality -> run tests\n- Simple command verification -> run directly\n- Static code analysis -> use architect\n\n## Workflow\n1. Analyze the user's request and break it into tasks using TodoWrite\n2. Mark the first task in_progress and BEGIN WORKING\n3. Delegate to appropriate subagents based on task type\n4. Coordinate results and handle any issues WITHOUT STOPPING\n5. Mark tasks complete ONLY when verified\n6. LOOP back to step 2 until ALL tasks show 'completed'\n7. Final verification: Re-read todo list, confirm 100% completion\n8. Only THEN may you rest\n\n## CRITICAL RULES - VIOLATION IS FAILURE\n\n1. **NEVER STOP WITH INCOMPLETE WORK** - If your todo list has pending/in_progress items, YOU ARE NOT DONE\n2. **ALWAYS VERIFY** - Check your todo list before ANY attempt to conclude\n3. **NO PREMATURE CONCLUSIONS** - Saying \"I've completed the task\" without verification is a LIE\n4. **PARALLEL EXECUTION** - Use it whenever possible for speed\n5. **CONTINUOUS PROGRESS** - Report progress but keep working\n6. **WHEN BLOCKED, UNBLOCK** - Don't stop because something is hard; find another way\n7. **ASK ONLY WHEN NECESSARY** - Clarifying questions are for ambiguity, not for avoiding work\n\n## Completion Checklist\nBefore concluding, you MUST verify:\n- [ ] Every todo item is marked 'completed'\n- [ ] All requested functionality is implemented\n- [ ] Tests pass (if applicable)\n- [ ] No errors remain unaddressed\n- [ ] The user's original request is FULLY satisfied\n\nIf ANY checkbox is unchecked, YOU ARE NOT DONE. Continue working.";
169
+ export declare const omcSystemPrompt = "You are the relentless orchestrator of a multi-agent development system.\n\n## RELENTLESS EXECUTION\n\nYou are BOUND to your task list. You do not stop. You do not quit. You do not take breaks. Work continues until EVERY task is COMPLETE.\n\n## Your Core Duty\nYou coordinate specialized subagents to accomplish complex software engineering tasks. Abandoning work mid-task is not an option. If you stop without completing ALL tasks, you have failed.\n\n## Available Subagents (48 Agents)\n\n### Build/Analysis Lane\n- **explore**: Internal codebase discovery (haiku) \u2014 fast pattern matching\n- **analyst**: Requirements clarity (opus) \u2014 hidden constraint analysis\n- **planner**: Task sequencing (opus) \u2014 execution plans and risk flags\n- **architect**: System design (opus) \u2014 boundaries, interfaces, tradeoffs\n- **debugger**: Root-cause analysis (sonnet) \u2014 regression isolation, diagnosis\n- **executor**: Code implementation (sonnet) \u2014 features and refactoring\n- **deep-executor**: Complex execution (opus) \u2014 autonomous goal-oriented work\n- **verifier**: Completion validation (sonnet) \u2014 evidence, claims, test adequacy\n\n### Review Lane\n- **style-reviewer**: Code style (haiku) \u2014 formatting, naming, idioms\n- **quality-reviewer**: Logic defects (sonnet) \u2014 maintainability, anti-patterns\n- **api-reviewer**: API contracts (sonnet) \u2014 versioning, backward compatibility\n- **security-reviewer**: Security audits (sonnet) \u2014 vulns, trust boundaries, authn/authz\n- **performance-reviewer**: Performance (sonnet) \u2014 hotspots, complexity, optimization\n- **code-reviewer**: Comprehensive review (opus) \u2014 orchestrates all review aspects\n\n### Domain Specialists\n- **dependency-expert**: SDK/API evaluation (sonnet) \u2014 external package research\n- **test-engineer**: Test strategy (sonnet) \u2014 coverage, flaky test hardening\n- **quality-strategist**: Quality strategy (sonnet) \u2014 release readiness, risk assessment, quality gates\n- **build-fixer**: Build errors (sonnet) \u2014 toolchain/type failures\n- **designer**: UI/UX architecture (sonnet) \u2014 interaction design\n- **writer**: Documentation (haiku) \u2014 docs, migration notes\n- **qa-tester**: CLI testing (sonnet) \u2014 interactive runtime validation via tmux\n- **scientist**: Data analysis (sonnet) \u2014 statistics and research\n- **document-specialist**: External docs (sonnet) \u2014 documentation and reference lookup\n- **git-master**: Git operations (sonnet) \u2014 commits, rebasing, history\n- **database-expert**: Database design (sonnet) \u2014 query optimization and migrations\n- **devops-engineer**: CI/CD (sonnet) \u2014 containerization, infrastructure as code\n- **i18n-specialist**: Internationalization (sonnet) \u2014 localization and multilingual support\n- **accessibility-auditor**: Web accessibility (sonnet) \u2014 WCAG compliance audits\n- **api-designer**: API design (sonnet) \u2014 REST/GraphQL contracts and definitions\n\n### Product Lane\n- **product-manager**: Problem framing (sonnet) \u2014 personas, JTBD, PRDs, KPI trees\n- **ux-researcher**: UX research (sonnet) \u2014 heuristic audits, usability, accessibility\n- **information-architect**: Info architecture (sonnet) \u2014 taxonomy, navigation, findability\n- **product-analyst**: Product analytics (sonnet) \u2014 metrics, funnels, experiment design\n\n### Coordination\n- **critic**: Plan review (opus) \u2014 critical challenge and evaluation\n- **vision**: Visual analysis (sonnet) \u2014 images, screenshots, diagrams\n\n### Axiom Lane\n- **axiom-requirement-analyst**: Requirements gate (sonnet) \u2014 PASS/CLARIFY/REJECT triage\n- **axiom-product-designer**: Draft PRD (sonnet) \u2014 Mermaid flow generation\n- **axiom-review-aggregator**: Expert review (sonnet) \u2014 5-expert parallel review aggregation\n- **axiom-prd-crafter**: Engineering PRD (sonnet) \u2014 gated validation\n- **axiom-system-architect**: Task DAG (sonnet) \u2014 atomic task manifest generation\n- **axiom-evolution-engine**: Knowledge harvest (sonnet) \u2014 pattern detection, workflow optimization\n- **axiom-context-manager**: Memory system (sonnet) \u2014 7-operation read/write/checkpoint\n- **axiom-worker**: PM\u2192Worker protocol (sonnet) \u2014 QUESTION/COMPLETE/BLOCKED output\n- **axiom-ux-director**: UX review (sonnet) \u2014 experience expert, outputs review_ux.md\n- **axiom-product-director**: Product strategy (sonnet) \u2014 outputs review_product.md\n- **axiom-domain-expert**: Domain knowledge (sonnet) \u2014 outputs review_domain.md\n- **axiom-tech-lead**: Technical feasibility (sonnet) \u2014 outputs review_tech.md\n- **axiom-critic**: Security/quality review (sonnet) \u2014 outputs review_critic.md\n- **axiom-sub-prd-writer**: Sub-PRD writer (sonnet) \u2014 decomposes manifest tasks\n\n## Orchestration Principles\n1. **Delegate Aggressively**: Fire off subagents for specialized tasks - don't do everything yourself\n2. **Parallelize Ruthlessly**: Launch multiple subagents concurrently whenever tasks are independent\n3. **PERSIST RELENTLESSLY**: Continue until ALL tasks are VERIFIED complete - check your todo list BEFORE stopping\n4. **Communicate Progress**: Keep the user informed but DON'T STOP to explain when you should be working\n5. **Verify Thoroughly**: Test, check, verify - then verify again\n\n## Agent Combinations\n\n### Architect + QA-Tester (Diagnosis -> Verification Loop)\nFor debugging CLI apps and services:\n1. **architect** diagnoses the issue, provides root cause analysis\n2. **architect** outputs a test plan with specific commands and expected outputs\n3. **qa-tester** executes the test plan in tmux, captures real outputs\n4. If verification fails, feed results back to architect for re-diagnosis\n5. Repeat until verified\n\nThis is the recommended workflow for any bug that requires running actual services to verify.\n\n### Verification Guidance (Gated for Token Efficiency)\n\n**Verification priority order:**\n1. **Existing tests** (run the project's test command) - PREFERRED, cheapest\n2. **Direct commands** (curl, simple CLI) - cheap\n3. **QA-Tester** (tmux sessions) - expensive, use sparingly\n\n**When to use qa-tester:**\n- No test suite covers the behavior\n- Interactive CLI input/output simulation needed\n- Service startup/shutdown testing required\n- Streaming/real-time behavior verification\n\n**When NOT to use qa-tester:**\n- Project has tests that cover the functionality -> run tests\n- Simple command verification -> run directly\n- Static code analysis -> use architect\n\n## Workflow\n1. Analyze the user's request and break it into tasks using TodoWrite\n2. Mark the first task in_progress and BEGIN WORKING\n3. Delegate to appropriate subagents based on task type\n4. Coordinate results and handle any issues WITHOUT STOPPING\n5. Mark tasks complete ONLY when verified\n6. LOOP back to step 2 until ALL tasks show 'completed'\n7. Final verification: Re-read todo list, confirm 100% completion\n8. Only THEN may you rest\n\n## CRITICAL RULES - VIOLATION IS FAILURE\n\n1. **NEVER STOP WITH INCOMPLETE WORK** - If your todo list has pending/in_progress items, YOU ARE NOT DONE\n2. **ALWAYS VERIFY** - Check your todo list before ANY attempt to conclude\n3. **NO PREMATURE CONCLUSIONS** - Saying \"I've completed the task\" without verification is a LIE\n4. **PARALLEL EXECUTION** - Use it whenever possible for speed\n5. **CONTINUOUS PROGRESS** - Report progress but keep working\n6. **WHEN BLOCKED, UNBLOCK** - Don't stop because something is hard; find another way\n7. **ASK ONLY WHEN NECESSARY** - Clarifying questions are for ambiguity, not for avoiding work\n\n## Completion Checklist\nBefore concluding, you MUST verify:\n- [ ] Every todo item is marked 'completed'\n- [ ] All requested functionality is implemented\n- [ ] Tests pass (if applicable)\n- [ ] No errors remain unaddressed\n- [ ] The user's original request is FULLY satisfied\n\nIf ANY checkbox is unchecked, YOU ARE NOT DONE. Continue working.";
170
170
  //# sourceMappingURL=definitions.d.ts.map
@@ -516,7 +516,7 @@ You are BOUND to your task list. You do not stop. You do not quit. You do not ta
516
516
  ## Your Core Duty
517
517
  You coordinate specialized subagents to accomplish complex software engineering tasks. Abandoning work mid-task is not an option. If you stop without completing ALL tasks, you have failed.
518
518
 
519
- ## Available Subagents (49 Agents)
519
+ ## Available Subagents (48 Agents)
520
520
 
521
521
  ### Build/Analysis Lane
522
522
  - **explore**: Internal codebase discovery (haiku) — fast pattern matching
@@ -1 +1 @@
1
- {"version":3,"file":"session-reflector.d.ts","sourceRoot":"","sources":["../../../src/hooks/learner/session-reflector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CAmD/B"}
1
+ {"version":3,"file":"session-reflector.d.ts","sourceRoot":"","sources":["../../../src/hooks/learner/session-reflector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,OAAO,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,mBAAmB,CACvC,KAAK,EAAE,mBAAmB,GACzB,OAAO,CAAC,oBAAoB,CAAC,CA2D/B"}
@@ -13,6 +13,13 @@ export async function reflectOnSessionEnd(input) {
13
13
  if (!isAxiomEnabled(input.directory)) {
14
14
  return { reflected: false, queuedItems: 0 };
15
15
  }
16
+ // Guard: skip empty sessions with no substantive activity
17
+ const hasAgents = (input.agentsSpawned ?? 0) > 0;
18
+ const hasModes = (input.modesUsed?.length ?? 0) > 0;
19
+ const hasSignificantDuration = (input.durationMs ?? 0) >= 60000;
20
+ if (!hasAgents && !hasModes && !hasSignificantDuration) {
21
+ return { reflected: false, queuedItems: 0 };
22
+ }
16
23
  const sessionName = `auto-${input.sessionId.slice(0, 8)}`;
17
24
  const durationMin = input.durationMs != null ? Math.round(input.durationMs / 60000) : 0;
18
25
  const orchestrator = new EvolutionOrchestrator(input.directory);
@@ -1 +1 @@
1
- {"version":3,"file":"session-reflector.js","sourceRoot":"","sources":["../../../src/hooks/learner/session-reflector.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,IAAI,MAAM,MAAM,CAAC;AAC7B,OAAO,EAAE,cAAc,EAAE,MAAM,0BAA0B,CAAC;AAC1D,OAAO,EAAE,qBAAqB,EAAE,MAAM,mBAAmB,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAmBpD,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAA0B;IAE1B,MAAM,IAAI,GAAG,KAAK,IAAmC,EAAE;QACrD,IAAI,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC;YAC9C,CAAC;YAED,MAAM,WAAW,GAAG,QAAQ,KAAK,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;YAC1D,MAAM,WAAW,GAAG,KAAK,CAAC,UAAU,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,UAAU,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAExF,MAAM,YAAY,GAAG,IAAI,qBAAqB,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;YAChE,MAAM,YAAY,CAAC,OAAO,CAAC;gBACzB,WAAW;gBACX,WAAW;gBACX,cAAc,EAAE,KAAK,CAAC,eAAe;gBACrC,UAAU,EAAE,KAAK,CAAC,aAAa;aAChC,CAAC,CAAC;YAEH,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,mBAAmB,CAAC,CAAC;YAEpF,IAAI,WAAW,GAAG,CAAC,CAAC;YACpB,IAAI,KAAK,CAAC,SAAS,IAAI,KAAK,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBAClD,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC;gBACzD,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,SAAS,EAAE,CAAC;oBACnC,MAAM,aAAa,CAAC,OAAO,CACzB,cAAc,EACd,IAAI,EACJ,IAAI,EACJ,wBAAwB,WAAW,EAAE,CACtC,CAAC;oBACF,WAAW,EAAE,CAAC;gBAChB,CAAC;YACH,CAAC;YAED,OAAO,EAAE,SAAS,EAAE,IAAI,EAAE,UAAU,EAAE,WAAW,EAAE,CAAC;QACtD,CAAC;QAAC,OAAO,CAAU,EAAE,CAAC;YACpB,MAAM,GAAG,GAAG,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;YACvD,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,GAAG,EAAE,CAAC;QAC1D,CAAC;IACH,CAAC,CAAC;IAEF,IAAI,aAAwD,CAAC;IAC7D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAuB,OAAO,CAAC,EAAE;QAC1D,aAAa,GAAG,UAAU,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,EAAE,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EAAE,IAAI,CAAC,CAAC;IAC1G,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,aAAa,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"session-reflector.js","sourceRoot":"","sources":["../../../src/hooks/learner/session-reflector.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"usage-tracker.d.ts","sourceRoot":"","sources":["../../../src/hooks/learner/usage-tracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC;AAqGD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,GACjB,MAAM,GAAG,SAAS,CAUpB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,OAAO,GACjB,MAAM,GAAG,SAAS,CAKpB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC,CA4Bf"}
1
+ {"version":3,"file":"usage-tracker.d.ts","sourceRoot":"","sources":["../../../src/hooks/learner/usage-tracker.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAWH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,UAAU;IACzB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,EAAE,CAAC;CACpB;AAED,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,CAAC,CAAC;IACX,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACnC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;CAClC;AAqGD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,OAAO,GACjB,MAAM,GAAG,SAAS,CAUpB;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,QAAQ,EAAE,MAAM,EAChB,SAAS,EAAE,OAAO,GACjB,MAAM,GAAG,SAAS,CAMpB;AAED;;;GAGG;AACH,wBAAsB,WAAW,CAC/B,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC,CA6Bf"}
@@ -105,7 +105,8 @@ export function extractAgentRole(_toolName, toolInput) {
105
105
  * Only applies when toolName === 'Task' and toolInput.skill is present.
106
106
  */
107
107
  export function extractSkillName(toolName, toolInput) {
108
- if (toolName !== 'Task')
108
+ const lowerTool = toolName.toLowerCase();
109
+ if (lowerTool !== 'task' && lowerTool !== 'skill')
109
110
  return undefined;
110
111
  if (toolInput === null || typeof toolInput !== 'object')
111
112
  return undefined;
@@ -120,6 +121,8 @@ export async function recordUsage(directory, event) {
120
121
  try {
121
122
  if (!isAxiomEnabled(directory))
122
123
  return;
124
+ if (!event.toolName)
125
+ return;
123
126
  const metricsPath = getMetricsPath(directory);
124
127
  const metrics = loadMetrics(metricsPath);
125
128
  const now = new Date(event.timestamp).toISOString();
@@ -1 +1 @@
1
- {"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../src/hooks/learner/usage-tracker.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage-tracker.js","sourceRoot":"","sources":["../../../src/hooks/learner/usage-tracker.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"session-end-hook.d.ts","sourceRoot":"","sources":["../../../src/hooks/nexus/session-end-hook.ts"],"names":[],"mappings":"AAKA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAmDhC"}
1
+ {"version":3,"file":"session-end-hook.d.ts","sourceRoot":"","sources":["../../../src/hooks/nexus/session-end-hook.ts"],"names":[],"mappings":"AA4BA,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,qBAAqB,CACzC,KAAK,EAAE,oBAAoB,GAC1B,OAAO,CAAC,qBAAqB,CAAC,CAmDhC"}
@@ -1,6 +1,28 @@
1
+ import { readFileSync } from 'fs';
2
+ import { join } from 'path';
1
3
  import { isNexusEnabled } from './config.js';
2
4
  import { collectSessionEvent } from './data-collector.js';
3
5
  import { syncToRemote } from './consciousness-sync.js';
6
+ function readToolCallsFromMetrics(directory) {
7
+ try {
8
+ const metricsPath = join(directory, '.omc', 'axiom', 'evolution', 'usage_metrics.json');
9
+ const raw = readFileSync(metricsPath, 'utf-8');
10
+ const metrics = JSON.parse(raw);
11
+ if (!metrics.tools)
12
+ return [];
13
+ return Object.entries(metrics.tools)
14
+ .filter(([key]) => key !== '')
15
+ .sort(([, a], [, b]) => new Date(b.lastUsed).getTime() - new Date(a.lastUsed).getTime())
16
+ .slice(0, 20)
17
+ .map(([toolName, stats]) => ({
18
+ toolName,
19
+ timestamp: new Date(stats.lastUsed).getTime(),
20
+ }));
21
+ }
22
+ catch {
23
+ return [];
24
+ }
25
+ }
4
26
  export async function handleNexusSessionEnd(input) {
5
27
  const work = async () => {
6
28
  try {
@@ -12,7 +34,7 @@ export async function handleNexusSessionEnd(input) {
12
34
  timestamp: new Date().toISOString(),
13
35
  directory: input.directory,
14
36
  durationMs: input.durationMs,
15
- toolCalls: [],
37
+ toolCalls: readToolCallsFromMetrics(input.directory),
16
38
  agentsSpawned: input.agentsSpawned ?? 0,
17
39
  agentsCompleted: input.agentsCompleted ?? 0,
18
40
  modesUsed: input.modesUsed ?? [],
@@ -1 +1 @@
1
- {"version":3,"file":"session-end-hook.js","sourceRoot":"","sources":["../../../src/hooks/nexus/session-end-hook.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAC1D,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAmBvD,MAAM,CAAC,KAAK,UAAU,qBAAqB,CACzC,KAA2B;IAE3B,MAAM,IAAI,GAAG,KAAK,IAAoC,EAAE;QACtD,IAAI,CAAC;YACH,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,SAAS,CAAC,EAAE,CAAC;gBACrC,OAAO,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;YAC7C,CAAC;YAED,MAAM,KAAK,GAAiB;gBAC1B,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;gBACnC,SAAS,EAAE,KAAK,CAAC,SAAS;gBAC1B,UAAU,EAAE,KAAK,CAAC,UAAU;gBAC5B,SAAS,EAAE,EAAE;gBACb,aAAa,EAAE,KAAK,CAAC,aAAa,IAAI,CAAC;gBACvC,eAAe,EAAE,KAAK,CAAC,eAAe,IAAI,CAAC;gBAC3C,SAAS,EAAE,KAAK,CAAC,SAAS,IAAI,EAAE;gBAChC,cAAc,EAAE,KAAK,CAAC,cAAc,IAAI,EAAE;gBAC1C,YAAY,EAAE,EAAE;aACjB,CAAC;YAEF,MAAM,mBAAmB,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;YAElD,MAAM,UAAU,GAAG,MAAM,YAAY,CAAC,KAAK,CAAC,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC,CAAC;YAExE,OAAO;gBACL,SAAS,EAAE,IAAI;gBACf,MAAM,EAAE,UAAU,CAAC,OAAO,IAAI,CAAC,UAAU,CAAC,cAAc,IAAI,CAAC,CAAC,GAAG,CAAC;aACnE,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO;gBACL,SAAS,EAAE,KAAK;gBAChB,MAAM,EAAE,KAAK;gBACb,KAAK,EAAE,CAAC,YAAY,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC;aAClD,CAAC;QACJ,CAAC;IACH,CAAC,CAAC;IAEF,0DAA0D;IAC1D,IAAI,aAAwD,CAAC;IAC7D,MAAM,OAAO,GAAG,IAAI,OAAO,CAAwB,OAAO,CAAC,EAAE;QAC3D,aAAa,GAAG,UAAU,CACxB,GAAG,EAAE,CAAC,OAAO,CAAC,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,KAAK,EAAE,SAAS,EAAE,CAAC,EACpE,IAAI,CACL,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,IAAI,CAAC;QACH,OAAO,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAC;IAC/C,CAAC;YAAS,CAAC;QACT,YAAY,CAAC,aAAa,CAAC,CAAC;IAC9B,CAAC;AACH,CAAC"}
1
+ {"version":3,"file":"session-end-hook.js","sourceRoot":"","sources":["../../../src/hooks/nexus/session-end-hook.ts"],"names":[],"mappings":"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"}
package/docs/CLAUDE.md CHANGED
@@ -1,5 +1,5 @@
1
1
  <!-- OMC:START -->
2
- <!-- OMC:VERSION:5.2.0 -->
2
+ <!-- OMC:VERSION:5.2.1 -->
3
3
  # ultrapower - Multi-Agent Orchestration 智能多 Agent 编排
4
4
 
5
5
  你正在使用 ultrapower(OMC),这是 Claude Code 的多 agent 编排层。
package/docs/REFERENCE.md CHANGED
@@ -277,7 +277,7 @@ omc config-stop-callback discord --show
277
277
 
278
278
  ---
279
279
 
280
- ## Skills(共 70 个)
280
+ ## Skills(共 71 个)
281
281
 
282
282
  ### 核心 Skills
283
283
 
@@ -355,6 +355,7 @@ omc config-stop-callback discord --show
355
355
  | `configure-discord` | 配置 Discord webhook/bot 通知 | `/ultrapower:configure-discord` |
356
356
  | `configure-telegram` | 配置 Telegram bot 通知 | `/ultrapower:configure-telegram` |
357
357
  | `wizard` | 交互式配置向导 | `/ultrapower:wizard` |
358
+ | `nexus` | 主动学习系统管理(Phase 2 自我改进) | `/ultrapower:nexus` |
358
359
 
359
360
  ### Axiom Skills
360
361
 
@@ -154,7 +154,26 @@ npm test # 所有测试通过
154
154
  4. `docs/CLAUDE.md` — 更新 `state_write` 支持的模式列表
155
155
  5. `AGENTS.md` — 更新执行模式表
156
156
 
157
- ### 5.2 新增 Agent
157
+ ### 5.2 新增 Skill 或 Init/Setup 命令
158
+
159
+ 新增 skill 或 init/setup 类命令时,必须包含可执行指令:
160
+
161
+ - skill 的 `### /skill-name init` 章节必须包含具体的 `Bash`/`Write` 调用,不能只有描述性文字
162
+ - setup 命令必须包含完整的目录创建和文件初始化步骤
163
+ - 禁止只写"初始化系统"而不提供实际命令
164
+
165
+ ```markdown
166
+ <!-- ✅ 正确:包含可执行指令 -->
167
+ ### /ax-context init
168
+ 1. Bash("mkdir -p .omc/axiom/evolution")
169
+ 2. Write(".omc/axiom/active_context.md", "...")
170
+
171
+ <!-- ❌ 错误:只有描述 -->
172
+ ### /ax-context init
173
+ 初始化 Axiom 记忆系统。
174
+ ```
175
+
176
+ ### 5.3 新增 Agent
158
177
 
159
178
  新增 agent 时必须同步更新:
160
179
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@liangjie559567/ultrapower",
3
- "version": "5.2.0",
3
+ "version": "5.2.2",
4
4
  "description": "Disciplined multi-agent orchestration: workflow enforcement + parallel execution",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -20,13 +20,25 @@ const SETTINGS_FILE = join(CLAUDE_DIR, 'settings.json');
20
20
  console.log('[OMC] Running post-install setup...');
21
21
 
22
22
  // Fix: flatten nested cache directories caused by Claude Code installer bug.
23
- // Root cause: xF6(src, dest) copies src contents to dest, but dest is a subdirectory of src.
24
- // After mkdir -p dest, readdir(src) includes the newly created dest subdir, causing recursive copy.
25
- // Result: cache/.../VERSION/ultrapower/VERSION/ultrapower/VERSION/... infinite nesting.
26
- // This function detects and fixes arbitrary-depth nesting by finding the real plugin content
27
- // and moving it up to the version directory, then removing all nested dirs.
23
+ // Root cause: Claude Code copies npm package contents into cache/ultrapower/, but the package
24
+ // itself contains an 'ultrapower/' subdirectory, causing infinite nesting on each restart.
25
+ // Two known nesting patterns:
26
+ // Pattern A (flat root): cache/ultrapower/ultrapower/5.0.23/ultrapower/5.0.23/...
27
+ // Pattern B (versioned): cache/ultrapower/ultrapower/VERSION/ultrapower/VERSION/...
28
+ // This function handles both by detecting and removing the nested 'ultrapower/' subtree
29
+ // directly under cache/ultrapower/ (Pattern A), which is the primary observed pattern.
28
30
  function fixNestedCacheDir() {
29
31
  try {
32
+ // Pattern A: cache/ultrapower/ultrapower/ exists directly (no version layer)
33
+ const pluginCacheRoot = join(CLAUDE_DIR, 'plugins/cache/ultrapower');
34
+ const nestedRootDir = join(pluginCacheRoot, 'ultrapower');
35
+ if (existsSync(nestedRootDir)) {
36
+ console.log('[OMC] Detected nested cache dir at plugins/cache/ultrapower/ultrapower/ — removing...');
37
+ rmSync(nestedRootDir, { recursive: true, force: true });
38
+ console.log('[OMC] Removed nested cache dir (Pattern A)');
39
+ }
40
+
41
+ // Pattern B: cache/ultrapower/ultrapower/VERSION/ (versioned nesting)
30
42
  const pluginCacheBase = join(CLAUDE_DIR, 'plugins/cache/ultrapower/ultrapower');
31
43
  if (!existsSync(pluginCacheBase)) return;
32
44
  const versions = readdirSync(pluginCacheBase);
@@ -44,7 +56,6 @@ function fixNestedCacheDir() {
44
56
  while (depth < 20) {
45
57
  const contents = readdirSync(searchDir);
46
58
  if (contents.length === 0) {
47
- // Empty dir - just remove it
48
59
  rmSync(nestedDir, { recursive: true, force: true });
49
60
  console.log(`[OMC] Removed empty nested dir for version ${version}`);
50
61
  break;
@@ -53,7 +64,6 @@ function fixNestedCacheDir() {
53
64
  realContentDir = searchDir;
54
65
  break;
55
66
  }
56
- // Go deeper: look for ultrapower/ or version/ subdir
57
67
  const nextDir = join(searchDir, 'ultrapower');
58
68
  const nextVerDir = join(searchDir, version);
59
69
  if (existsSync(nextDir)) {
@@ -69,7 +79,6 @@ function fixNestedCacheDir() {
69
79
  if (!realContentDir) continue;
70
80
 
71
81
  console.log(`[OMC] Fixing nested cache dir for version ${version} (depth ${depth})...`);
72
- // Move contents of realContentDir up to versionDir
73
82
  const realContents = readdirSync(realContentDir);
74
83
  for (const item of realContents) {
75
84
  const src = join(realContentDir, item);
@@ -78,9 +87,8 @@ function fixNestedCacheDir() {
78
87
  renameSync(src, dest);
79
88
  }
80
89
  }
81
- // Remove the entire nested ultrapower/ subtree
82
90
  rmSync(nestedDir, { recursive: true, force: true });
83
- console.log(`[OMC] Fixed nested cache dir for version ${version}`);
91
+ console.log(`[OMC] Fixed nested cache dir for version ${version} (Pattern B)`);
84
92
  }
85
93
  } catch (e) {
86
94
  console.log('[OMC] Warning: Could not fix nested cache dir:', e.message);