@nahisaho/musubix-expert-delegation 3.2.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/README.md +208 -0
- package/dist/delegation/advisory-mode.d.ts +47 -0
- package/dist/delegation/advisory-mode.d.ts.map +1 -0
- package/dist/delegation/advisory-mode.js +135 -0
- package/dist/delegation/advisory-mode.js.map +1 -0
- package/dist/delegation/delegation-engine.d.ts +91 -0
- package/dist/delegation/delegation-engine.d.ts.map +1 -0
- package/dist/delegation/delegation-engine.js +272 -0
- package/dist/delegation/delegation-engine.js.map +1 -0
- package/dist/delegation/implementation-mode.d.ts +55 -0
- package/dist/delegation/implementation-mode.d.ts.map +1 -0
- package/dist/delegation/implementation-mode.js +225 -0
- package/dist/delegation/implementation-mode.js.map +1 -0
- package/dist/delegation/index.d.ts +10 -0
- package/dist/delegation/index.d.ts.map +1 -0
- package/dist/delegation/index.js +10 -0
- package/dist/delegation/index.js.map +1 -0
- package/dist/delegation/prompt-builder.d.ts +52 -0
- package/dist/delegation/prompt-builder.d.ts.map +1 -0
- package/dist/delegation/prompt-builder.js +220 -0
- package/dist/delegation/prompt-builder.js.map +1 -0
- package/dist/delegation/retry-handler.d.ts +90 -0
- package/dist/delegation/retry-handler.d.ts.map +1 -0
- package/dist/delegation/retry-handler.js +186 -0
- package/dist/delegation/retry-handler.js.map +1 -0
- package/dist/experts/architect.d.ts +16 -0
- package/dist/experts/architect.d.ts.map +1 -0
- package/dist/experts/architect.js +68 -0
- package/dist/experts/architect.js.map +1 -0
- package/dist/experts/code-reviewer.d.ts +15 -0
- package/dist/experts/code-reviewer.d.ts.map +1 -0
- package/dist/experts/code-reviewer.js +70 -0
- package/dist/experts/code-reviewer.js.map +1 -0
- package/dist/experts/ears-analyst.d.ts +16 -0
- package/dist/experts/ears-analyst.d.ts.map +1 -0
- package/dist/experts/ears-analyst.js +88 -0
- package/dist/experts/ears-analyst.js.map +1 -0
- package/dist/experts/expert-interface.d.ts +21 -0
- package/dist/experts/expert-interface.d.ts.map +1 -0
- package/dist/experts/expert-interface.js +22 -0
- package/dist/experts/expert-interface.js.map +1 -0
- package/dist/experts/expert-manager.d.ts +81 -0
- package/dist/experts/expert-manager.d.ts.map +1 -0
- package/dist/experts/expert-manager.js +176 -0
- package/dist/experts/expert-manager.js.map +1 -0
- package/dist/experts/formal-verifier.d.ts +16 -0
- package/dist/experts/formal-verifier.d.ts.map +1 -0
- package/dist/experts/formal-verifier.js +87 -0
- package/dist/experts/formal-verifier.js.map +1 -0
- package/dist/experts/index.d.ts +19 -0
- package/dist/experts/index.d.ts.map +1 -0
- package/dist/experts/index.js +28 -0
- package/dist/experts/index.js.map +1 -0
- package/dist/experts/ontology-reasoner.d.ts +16 -0
- package/dist/experts/ontology-reasoner.d.ts.map +1 -0
- package/dist/experts/ontology-reasoner.js +95 -0
- package/dist/experts/ontology-reasoner.js.map +1 -0
- package/dist/experts/plan-reviewer.d.ts +16 -0
- package/dist/experts/plan-reviewer.d.ts.map +1 -0
- package/dist/experts/plan-reviewer.js +75 -0
- package/dist/experts/plan-reviewer.js.map +1 -0
- package/dist/experts/security-analyst.d.ts +15 -0
- package/dist/experts/security-analyst.d.ts.map +1 -0
- package/dist/experts/security-analyst.js +67 -0
- package/dist/experts/security-analyst.js.map +1 -0
- package/dist/index.d.ts +37 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +41 -0
- package/dist/index.js.map +1 -0
- package/dist/mcp/handlers.d.ts +142 -0
- package/dist/mcp/handlers.d.ts.map +1 -0
- package/dist/mcp/handlers.js +309 -0
- package/dist/mcp/handlers.js.map +1 -0
- package/dist/mcp/index.d.ts +7 -0
- package/dist/mcp/index.d.ts.map +1 -0
- package/dist/mcp/index.js +7 -0
- package/dist/mcp/index.js.map +1 -0
- package/dist/mcp/schemas.d.ts +80 -0
- package/dist/mcp/schemas.d.ts.map +1 -0
- package/dist/mcp/schemas.js +318 -0
- package/dist/mcp/schemas.js.map +1 -0
- package/dist/providers/index.d.ts +9 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +8 -0
- package/dist/providers/index.js.map +1 -0
- package/dist/providers/model-selector.d.ts +54 -0
- package/dist/providers/model-selector.d.ts.map +1 -0
- package/dist/providers/model-selector.js +83 -0
- package/dist/providers/model-selector.js.map +1 -0
- package/dist/providers/provider-interface.d.ts +9 -0
- package/dist/providers/provider-interface.d.ts.map +1 -0
- package/dist/providers/provider-interface.js +9 -0
- package/dist/providers/provider-interface.js.map +1 -0
- package/dist/providers/usage-statistics.d.ts +59 -0
- package/dist/providers/usage-statistics.d.ts.map +1 -0
- package/dist/providers/usage-statistics.js +141 -0
- package/dist/providers/usage-statistics.js.map +1 -0
- package/dist/providers/vscode-lm-provider.d.ts +82 -0
- package/dist/providers/vscode-lm-provider.d.ts.map +1 -0
- package/dist/providers/vscode-lm-provider.js +232 -0
- package/dist/providers/vscode-lm-provider.js.map +1 -0
- package/dist/test/helpers.d.ts +54 -0
- package/dist/test/helpers.d.ts.map +1 -0
- package/dist/test/helpers.js +135 -0
- package/dist/test/helpers.js.map +1 -0
- package/dist/test/index.d.ts +7 -0
- package/dist/test/index.d.ts.map +1 -0
- package/dist/test/index.js +7 -0
- package/dist/test/index.js.map +1 -0
- package/dist/test/mocks.d.ts +128 -0
- package/dist/test/mocks.d.ts.map +1 -0
- package/dist/test/mocks.js +170 -0
- package/dist/test/mocks.js.map +1 -0
- package/dist/triggers/index.d.ts +10 -0
- package/dist/triggers/index.d.ts.map +1 -0
- package/dist/triggers/index.js +8 -0
- package/dist/triggers/index.js.map +1 -0
- package/dist/triggers/proactive-delegation.d.ts +88 -0
- package/dist/triggers/proactive-delegation.d.ts.map +1 -0
- package/dist/triggers/proactive-delegation.js +201 -0
- package/dist/triggers/proactive-delegation.js.map +1 -0
- package/dist/triggers/semantic-router.d.ts +57 -0
- package/dist/triggers/semantic-router.d.ts.map +1 -0
- package/dist/triggers/semantic-router.js +139 -0
- package/dist/triggers/semantic-router.js.map +1 -0
- package/dist/triggers/trigger-patterns.d.ts +21 -0
- package/dist/triggers/trigger-patterns.d.ts.map +1 -0
- package/dist/triggers/trigger-patterns.js +90 -0
- package/dist/triggers/trigger-patterns.js.map +1 -0
- package/dist/types/errors.d.ts +56 -0
- package/dist/types/errors.d.ts.map +1 -0
- package/dist/types/errors.js +98 -0
- package/dist/types/errors.js.map +1 -0
- package/dist/types/index.d.ts +190 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/index.js +9 -0
- package/dist/types/index.js.map +1 -0
- package/package.json +87 -0
package/README.md
ADDED
|
@@ -0,0 +1,208 @@
|
|
|
1
|
+
# @nahisaho/musubix-expert-delegation
|
|
2
|
+
|
|
3
|
+
Expert Delegation System for MUSUBIX - VS Code Language Model API based AI expert delegation.
|
|
4
|
+
|
|
5
|
+
## Overview
|
|
6
|
+
|
|
7
|
+
This package provides an intelligent expert delegation system that routes AI tasks to specialized experts based on context detection. It integrates with VS Code's Language Model API (GitHub Copilot) to provide high-quality AI assistance.
|
|
8
|
+
|
|
9
|
+
## Features
|
|
10
|
+
|
|
11
|
+
- **7 Specialized Experts**
|
|
12
|
+
- Architect: System design, patterns, architecture decisions
|
|
13
|
+
- Security Analyst: Vulnerability detection, security review
|
|
14
|
+
- Code Reviewer: Code quality, best practices, refactoring
|
|
15
|
+
- Plan Reviewer: Design validation, constitution compliance
|
|
16
|
+
- EARS Analyst: Requirements analysis, EARS format conversion (MUSUBIX)
|
|
17
|
+
- Formal Verifier: Z3/Lean4 verification, Hoare logic (MUSUBIX)
|
|
18
|
+
- Ontology Reasoner: Knowledge graph, inference (MUSUBIX)
|
|
19
|
+
|
|
20
|
+
- **Semantic Routing**: Automatic expert detection based on message content
|
|
21
|
+
- **Proactive Delegation**: Auto-suggest security reviews, EARS conversion
|
|
22
|
+
- **11 MCP Tools**: Full Model Context Protocol integration
|
|
23
|
+
- **Advisory & Implementation Modes**: Read-only analysis or code generation
|
|
24
|
+
- **Retry & Escalation**: Exponential backoff, expert escalation
|
|
25
|
+
|
|
26
|
+
## Installation
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
npm install @nahisaho/musubix-expert-delegation
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
## Quick Start
|
|
33
|
+
|
|
34
|
+
```typescript
|
|
35
|
+
import {
|
|
36
|
+
createDelegationEngine,
|
|
37
|
+
createVSCodeLMProvider,
|
|
38
|
+
} from '@nahisaho/musubix-expert-delegation';
|
|
39
|
+
|
|
40
|
+
// Create provider (VS Code extension context)
|
|
41
|
+
const provider = createVSCodeLMProvider(vscodeContext);
|
|
42
|
+
|
|
43
|
+
// Create delegation engine
|
|
44
|
+
const engine = createDelegationEngine(provider);
|
|
45
|
+
|
|
46
|
+
// Simple delegation (auto-detect expert)
|
|
47
|
+
const result = await engine.delegateSimple(
|
|
48
|
+
'How should I structure my authentication system?'
|
|
49
|
+
);
|
|
50
|
+
console.log(result.content);
|
|
51
|
+
// → Architect expert provides design recommendations
|
|
52
|
+
|
|
53
|
+
// Explicit expert delegation
|
|
54
|
+
const securityResult = await engine.analyze(
|
|
55
|
+
'Check this code for vulnerabilities',
|
|
56
|
+
'security-analyst'
|
|
57
|
+
);
|
|
58
|
+
```
|
|
59
|
+
|
|
60
|
+
## MCP Tools
|
|
61
|
+
|
|
62
|
+
| Tool | Description |
|
|
63
|
+
|------|-------------|
|
|
64
|
+
| `expert_delegate` | Generic delegation with auto/explicit expert |
|
|
65
|
+
| `expert_architect` | Architecture design delegation |
|
|
66
|
+
| `expert_security` | Security analysis delegation |
|
|
67
|
+
| `expert_review` | Code review delegation |
|
|
68
|
+
| `expert_plan` | Plan review with constitution check |
|
|
69
|
+
| `expert_ears` | EARS requirements conversion |
|
|
70
|
+
| `expert_formal` | Formal verification (Z3/Lean4) |
|
|
71
|
+
| `expert_ontology` | Ontology reasoning |
|
|
72
|
+
| `trigger_detect` | Detect matching expert |
|
|
73
|
+
| `delegation_retry` | Retry failed delegation |
|
|
74
|
+
| `provider_select` | Select/configure LLM provider |
|
|
75
|
+
|
|
76
|
+
## Execution Modes
|
|
77
|
+
|
|
78
|
+
### Advisory Mode (Default)
|
|
79
|
+
Read-only analysis without code generation:
|
|
80
|
+
```typescript
|
|
81
|
+
const result = await engine.analyze('Review this architecture');
|
|
82
|
+
// Returns analysis, recommendations, risks
|
|
83
|
+
```
|
|
84
|
+
|
|
85
|
+
### Implementation Mode
|
|
86
|
+
Code generation with traceability:
|
|
87
|
+
```typescript
|
|
88
|
+
const result = await engine.generate(
|
|
89
|
+
'Create a user authentication service',
|
|
90
|
+
'architect'
|
|
91
|
+
);
|
|
92
|
+
// Returns code with // Traces to: REQ-XXX comments
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
## Expert Selection
|
|
96
|
+
|
|
97
|
+
### Automatic (Semantic Routing)
|
|
98
|
+
```typescript
|
|
99
|
+
// Message analyzed for trigger patterns
|
|
100
|
+
const result = await engine.delegateSimple('Check security vulnerabilities');
|
|
101
|
+
// → Routed to security-analyst (detected "security", "vulnerabilities")
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
### Explicit
|
|
105
|
+
```typescript
|
|
106
|
+
const result = await engine.delegateSimple('Do something', {
|
|
107
|
+
expertType: 'formal-verifier',
|
|
108
|
+
mode: 'advisory',
|
|
109
|
+
});
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
## Proactive Delegation
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
import { createProactiveDelegation } from '@nahisaho/musubix-expert-delegation';
|
|
116
|
+
|
|
117
|
+
const proactive = createProactiveDelegation();
|
|
118
|
+
|
|
119
|
+
// Detect security patterns in code
|
|
120
|
+
const patterns = proactive.detectSecurityPattern(code);
|
|
121
|
+
// → [{ pattern: 'SQL Injection', severity: 'high' }]
|
|
122
|
+
|
|
123
|
+
// Detect non-EARS requirements
|
|
124
|
+
const nonEars = proactive.detectNonEarsRequirement('The system must...');
|
|
125
|
+
// → { suggestedPattern: 'ubiquitous', confidence: 0.7 }
|
|
126
|
+
|
|
127
|
+
// Get delegation suggestions
|
|
128
|
+
const suggestions = proactive.suggestDelegation(code, requirements);
|
|
129
|
+
// → [{ expert: 'security-analyst', reason: '...', priority: 90 }]
|
|
130
|
+
```
|
|
131
|
+
|
|
132
|
+
## Retry & Escalation
|
|
133
|
+
|
|
134
|
+
```typescript
|
|
135
|
+
import { createRetryHandler } from '@nahisaho/musubix-expert-delegation';
|
|
136
|
+
|
|
137
|
+
const handler = createRetryHandler({
|
|
138
|
+
maxRetries: 3,
|
|
139
|
+
initialDelayMs: 1000,
|
|
140
|
+
backoffMultiplier: 2,
|
|
141
|
+
});
|
|
142
|
+
|
|
143
|
+
// Execute with automatic retry
|
|
144
|
+
const result = await handler.executeWithRetry(
|
|
145
|
+
() => engine.delegate(task),
|
|
146
|
+
'task-123'
|
|
147
|
+
);
|
|
148
|
+
|
|
149
|
+
// Check escalation path
|
|
150
|
+
const escalation = handler.getEscalationTarget('security-analyst');
|
|
151
|
+
// → { shouldEscalate: true, targetExpert: 'architect' }
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
## Constitution Compliance
|
|
155
|
+
|
|
156
|
+
The engine validates tasks against MUSUBIX 10 Constitutional Articles:
|
|
157
|
+
|
|
158
|
+
```typescript
|
|
159
|
+
const engine = createDelegationEngine(provider, undefined, {
|
|
160
|
+
enableConstitutionCheck: true,
|
|
161
|
+
enforceTraceability: true,
|
|
162
|
+
});
|
|
163
|
+
|
|
164
|
+
// Implementation without requirements → Blocked (Article X)
|
|
165
|
+
const result = await engine.delegate({
|
|
166
|
+
mode: 'implementation',
|
|
167
|
+
context: { userMessage: 'Generate code' }, // No requirements!
|
|
168
|
+
});
|
|
169
|
+
// → success: false, constitutionViolations: [Article X]
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
## Testing
|
|
173
|
+
|
|
174
|
+
```typescript
|
|
175
|
+
import {
|
|
176
|
+
MockVSCodeLMProvider,
|
|
177
|
+
createTestTask,
|
|
178
|
+
createTestContext,
|
|
179
|
+
} from '@nahisaho/musubix-expert-delegation/test';
|
|
180
|
+
|
|
181
|
+
const mockProvider = new MockVSCodeLMProvider();
|
|
182
|
+
mockProvider.setDefaultResponse({
|
|
183
|
+
content: 'Mock analysis result',
|
|
184
|
+
finishReason: 'stop',
|
|
185
|
+
});
|
|
186
|
+
|
|
187
|
+
const engine = createDelegationEngine(mockProvider);
|
|
188
|
+
const result = await engine.analyze('Test message');
|
|
189
|
+
```
|
|
190
|
+
|
|
191
|
+
## API Reference
|
|
192
|
+
|
|
193
|
+
See [API Documentation](./docs/api.md) for detailed API reference.
|
|
194
|
+
|
|
195
|
+
## Requirements
|
|
196
|
+
|
|
197
|
+
- Node.js >= 20.0.0
|
|
198
|
+
- VS Code with GitHub Copilot (for VS Code LM API)
|
|
199
|
+
|
|
200
|
+
## License
|
|
201
|
+
|
|
202
|
+
MIT
|
|
203
|
+
|
|
204
|
+
## Related Packages
|
|
205
|
+
|
|
206
|
+
- `@nahisaho/musubix-core` - Core MUSUBIX functionality
|
|
207
|
+
- `@nahisaho/musubix-formal-verify` - Formal verification (Z3, Lean4)
|
|
208
|
+
- `@nahisaho/musubix-ontology-mcp` - Ontology reasoning
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nahisaho/musubix-expert-delegation
|
|
3
|
+
* Advisory Mode
|
|
4
|
+
*
|
|
5
|
+
* DES-DEL-002
|
|
6
|
+
* Traces to: REQ-DEL-002
|
|
7
|
+
*/
|
|
8
|
+
import type { Expert, DelegationContext, DelegationResult } from '../types/index.js';
|
|
9
|
+
import type { LMProvider } from '../types/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* Advisory Mode Handler
|
|
12
|
+
*
|
|
13
|
+
* 読み取り専用の分析・推奨モード。
|
|
14
|
+
* コードを直接生成せず、分析結果と推奨事項を提供する。
|
|
15
|
+
*/
|
|
16
|
+
export declare class AdvisoryMode {
|
|
17
|
+
private readonly provider;
|
|
18
|
+
private readonly promptBuilder;
|
|
19
|
+
constructor(provider: LMProvider);
|
|
20
|
+
/**
|
|
21
|
+
* Advisory分析を実行
|
|
22
|
+
*/
|
|
23
|
+
analyze(expert: Expert, context: DelegationContext): Promise<DelegationResult>;
|
|
24
|
+
/**
|
|
25
|
+
* セキュリティ分析に特化したAdvisory
|
|
26
|
+
*/
|
|
27
|
+
analyzeSecurityOnly(code: string, expert: Expert): Promise<DelegationResult>;
|
|
28
|
+
/**
|
|
29
|
+
* EARS要件分析に特化したAdvisory
|
|
30
|
+
*/
|
|
31
|
+
analyzeRequirements(requirementText: string, expert: Expert): Promise<DelegationResult>;
|
|
32
|
+
/**
|
|
33
|
+
* オントロジー推論に特化したAdvisory
|
|
34
|
+
*/
|
|
35
|
+
analyzeOntology(query: string, expert: Expert, contextTriples?: Array<{
|
|
36
|
+
s: string;
|
|
37
|
+
p: string;
|
|
38
|
+
o: string;
|
|
39
|
+
}>): Promise<DelegationResult>;
|
|
40
|
+
private buildAdvisorySystemPrompt;
|
|
41
|
+
private parseAdvisoryResponse;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* AdvisoryModeのファクトリ関数
|
|
45
|
+
*/
|
|
46
|
+
export declare function createAdvisoryMode(provider: LMProvider): AdvisoryMode;
|
|
47
|
+
//# sourceMappingURL=advisory-mode.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advisory-mode.d.ts","sourceRoot":"","sources":["../../src/delegation/advisory-mode.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,MAAM,EACN,iBAAiB,EACjB,gBAAgB,EACjB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAGpD;;;;;GAKG;AACH,qBAAa,YAAY;IAGX,OAAO,CAAC,QAAQ,CAAC,QAAQ;IAFrC,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAgB;gBAEjB,QAAQ,EAAE,UAAU;IAIjD;;OAEG;IACG,OAAO,CACX,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,gBAAgB,CAAC;IA0B5B;;OAEG;IACG,mBAAmB,CACvB,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC;IAU5B;;OAEG;IACG,mBAAmB,CACvB,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,gBAAgB,CAAC;IAgB5B;;OAEG;IACG,eAAe,CACnB,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,EACd,cAAc,CAAC,EAAE,KAAK,CAAC;QAAE,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAC;QAAC,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,GAC1D,OAAO,CAAC,gBAAgB,CAAC;IAmB5B,OAAO,CAAC,yBAAyB;IAoBjC,OAAO,CAAC,qBAAqB;CA+B9B;AAED;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,UAAU,GAAG,YAAY,CAErE"}
|
|
@@ -0,0 +1,135 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nahisaho/musubix-expert-delegation
|
|
3
|
+
* Advisory Mode
|
|
4
|
+
*
|
|
5
|
+
* DES-DEL-002
|
|
6
|
+
* Traces to: REQ-DEL-002
|
|
7
|
+
*/
|
|
8
|
+
import { PromptBuilder } from './prompt-builder.js';
|
|
9
|
+
/**
|
|
10
|
+
* Advisory Mode Handler
|
|
11
|
+
*
|
|
12
|
+
* 読み取り専用の分析・推奨モード。
|
|
13
|
+
* コードを直接生成せず、分析結果と推奨事項を提供する。
|
|
14
|
+
*/
|
|
15
|
+
export class AdvisoryMode {
|
|
16
|
+
provider;
|
|
17
|
+
promptBuilder;
|
|
18
|
+
constructor(provider) {
|
|
19
|
+
this.provider = provider;
|
|
20
|
+
this.promptBuilder = new PromptBuilder();
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* Advisory分析を実行
|
|
24
|
+
*/
|
|
25
|
+
async analyze(expert, context) {
|
|
26
|
+
// コンテキストにadvisoryモードを設定
|
|
27
|
+
const advisoryContext = {
|
|
28
|
+
...context,
|
|
29
|
+
mode: 'advisory',
|
|
30
|
+
};
|
|
31
|
+
// プロンプト構築
|
|
32
|
+
const prompt = this.promptBuilder.build(expert, advisoryContext);
|
|
33
|
+
// Advisory用のシステムプロンプト追加
|
|
34
|
+
const systemPrompt = this.buildAdvisorySystemPrompt(expert);
|
|
35
|
+
// LLM実行
|
|
36
|
+
const response = await this.provider.sendRequest({
|
|
37
|
+
messages: [
|
|
38
|
+
{ role: 'system', content: systemPrompt },
|
|
39
|
+
{ role: 'user', content: prompt },
|
|
40
|
+
],
|
|
41
|
+
temperature: 0.3, // 低温度で一貫性を重視
|
|
42
|
+
});
|
|
43
|
+
// 結果をパース
|
|
44
|
+
return this.parseAdvisoryResponse(expert, response.content);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* セキュリティ分析に特化したAdvisory
|
|
48
|
+
*/
|
|
49
|
+
async analyzeSecurityOnly(code, expert) {
|
|
50
|
+
const context = {
|
|
51
|
+
userMessage: `Analyze the following code for security vulnerabilities:\n\n\`\`\`\n${code}\n\`\`\``,
|
|
52
|
+
mode: 'advisory',
|
|
53
|
+
activeFiles: [{ path: 'input', content: code }],
|
|
54
|
+
};
|
|
55
|
+
return this.analyze(expert, context);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* EARS要件分析に特化したAdvisory
|
|
59
|
+
*/
|
|
60
|
+
async analyzeRequirements(requirementText, expert) {
|
|
61
|
+
const prompt = this.promptBuilder.buildEarsAnalysisPrompt(requirementText);
|
|
62
|
+
const systemPrompt = this.buildAdvisorySystemPrompt(expert);
|
|
63
|
+
const response = await this.provider.sendRequest({
|
|
64
|
+
messages: [
|
|
65
|
+
{ role: 'system', content: systemPrompt },
|
|
66
|
+
{ role: 'user', content: prompt },
|
|
67
|
+
],
|
|
68
|
+
temperature: 0.2,
|
|
69
|
+
});
|
|
70
|
+
return this.parseAdvisoryResponse(expert, response.content);
|
|
71
|
+
}
|
|
72
|
+
/**
|
|
73
|
+
* オントロジー推論に特化したAdvisory
|
|
74
|
+
*/
|
|
75
|
+
async analyzeOntology(query, expert, contextTriples) {
|
|
76
|
+
const prompt = this.promptBuilder.buildOntologyReasoningPrompt(query, contextTriples);
|
|
77
|
+
const systemPrompt = this.buildAdvisorySystemPrompt(expert);
|
|
78
|
+
const response = await this.provider.sendRequest({
|
|
79
|
+
messages: [
|
|
80
|
+
{ role: 'system', content: systemPrompt },
|
|
81
|
+
{ role: 'user', content: prompt },
|
|
82
|
+
],
|
|
83
|
+
temperature: 0.2,
|
|
84
|
+
});
|
|
85
|
+
return this.parseAdvisoryResponse(expert, response.content);
|
|
86
|
+
}
|
|
87
|
+
buildAdvisorySystemPrompt(expert) {
|
|
88
|
+
return `${expert.systemPrompt}
|
|
89
|
+
|
|
90
|
+
## Mode: Advisory (Read-Only)
|
|
91
|
+
|
|
92
|
+
IMPORTANT CONSTRAINTS:
|
|
93
|
+
1. Do NOT generate implementation code
|
|
94
|
+
2. Focus on analysis, recommendations, and explanations
|
|
95
|
+
3. Provide actionable insights
|
|
96
|
+
4. Highlight risks and trade-offs
|
|
97
|
+
5. Reference relevant best practices and patterns
|
|
98
|
+
|
|
99
|
+
Output Format:
|
|
100
|
+
1. Summary - Brief overview of findings
|
|
101
|
+
2. Analysis - Detailed examination
|
|
102
|
+
3. Recommendations - Prioritized action items
|
|
103
|
+
4. Risks - Potential issues to consider
|
|
104
|
+
5. References - Related patterns, standards, or resources`;
|
|
105
|
+
}
|
|
106
|
+
parseAdvisoryResponse(expert, content) {
|
|
107
|
+
// 信頼度を抽出(あれば)
|
|
108
|
+
const confidenceMatch = content.match(/confidence[:\s]+(\d+(?:\.\d+)?)/i);
|
|
109
|
+
const confidence = confidenceMatch
|
|
110
|
+
? parseFloat(confidenceMatch[1])
|
|
111
|
+
: 0.8;
|
|
112
|
+
// セクションを抽出
|
|
113
|
+
const summaryMatch = content.match(/(?:^|\n)##?\s*summary\s*\n([\s\S]*?)(?=\n##?\s|\n---|\n\*\*|$)/i);
|
|
114
|
+
const recommendationsMatch = content.match(/(?:^|\n)##?\s*recommendations?\s*\n([\s\S]*?)(?=\n##?\s|\n---|\n\*\*|$)/i);
|
|
115
|
+
return {
|
|
116
|
+
success: true,
|
|
117
|
+
expertType: expert.type,
|
|
118
|
+
mode: 'advisory',
|
|
119
|
+
content,
|
|
120
|
+
confidence: Math.min(1, Math.max(0, confidence)),
|
|
121
|
+
metadata: {
|
|
122
|
+
hasSummary: !!summaryMatch,
|
|
123
|
+
hasRecommendations: !!recommendationsMatch,
|
|
124
|
+
contentLength: content.length,
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
}
|
|
129
|
+
/**
|
|
130
|
+
* AdvisoryModeのファクトリ関数
|
|
131
|
+
*/
|
|
132
|
+
export function createAdvisoryMode(provider) {
|
|
133
|
+
return new AdvisoryMode(provider);
|
|
134
|
+
}
|
|
135
|
+
//# sourceMappingURL=advisory-mode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"advisory-mode.js","sourceRoot":"","sources":["../../src/delegation/advisory-mode.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @nahisaho/musubix-expert-delegation
|
|
3
|
+
* Delegation Engine
|
|
4
|
+
*
|
|
5
|
+
* DES-DEL-001, DES-DEL-002, DES-DEL-003, DES-DEL-004
|
|
6
|
+
* Traces to: REQ-DEL-001, REQ-DEL-002, REQ-DEL-003, REQ-DEL-004
|
|
7
|
+
*/
|
|
8
|
+
import type { ExpertType, DelegationTask, DelegationContext, DelegationResult, ExecutionMode } from '../types/index.js';
|
|
9
|
+
import type { LMProvider } from '../types/index.js';
|
|
10
|
+
import { ExpertManager } from '../experts/expert-manager.js';
|
|
11
|
+
import { SemanticRouter } from '../triggers/semantic-router.js';
|
|
12
|
+
import { type RetryConfig, type EscalationConfig } from './retry-handler.js';
|
|
13
|
+
/**
|
|
14
|
+
* Delegation Engine設定
|
|
15
|
+
*/
|
|
16
|
+
export interface DelegationEngineConfig {
|
|
17
|
+
/** リトライ設定 */
|
|
18
|
+
retry?: Partial<RetryConfig>;
|
|
19
|
+
/** エスカレーション設定 */
|
|
20
|
+
escalation?: Partial<EscalationConfig>;
|
|
21
|
+
/** デフォルト実行モード */
|
|
22
|
+
defaultMode?: ExecutionMode;
|
|
23
|
+
/** 憲法チェックを有効化 */
|
|
24
|
+
enableConstitutionCheck?: boolean;
|
|
25
|
+
/** トレーサビリティを強制 */
|
|
26
|
+
enforceTraceability?: boolean;
|
|
27
|
+
}
|
|
28
|
+
/**
|
|
29
|
+
* Delegation Engine
|
|
30
|
+
*
|
|
31
|
+
* エキスパート委任の中心的なオーケストレーションコンポーネント。
|
|
32
|
+
*/
|
|
33
|
+
export declare class DelegationEngine {
|
|
34
|
+
private readonly expertManager;
|
|
35
|
+
private readonly semanticRouter;
|
|
36
|
+
private readonly advisoryMode;
|
|
37
|
+
private readonly implementationMode;
|
|
38
|
+
private readonly retryHandler;
|
|
39
|
+
private readonly config;
|
|
40
|
+
constructor(provider: LMProvider, expertManager?: ExpertManager, config?: DelegationEngineConfig);
|
|
41
|
+
/**
|
|
42
|
+
* タスクを委任
|
|
43
|
+
*/
|
|
44
|
+
delegate(task: DelegationTask): Promise<DelegationResult>;
|
|
45
|
+
/**
|
|
46
|
+
* 簡易委任(メッセージのみ)
|
|
47
|
+
*/
|
|
48
|
+
delegateSimple(message: string, options?: {
|
|
49
|
+
expertType?: ExpertType;
|
|
50
|
+
mode?: ExecutionMode;
|
|
51
|
+
relatedRequirements?: string[];
|
|
52
|
+
relatedDesigns?: string[];
|
|
53
|
+
traceLinks?: string[];
|
|
54
|
+
}): Promise<DelegationResult>;
|
|
55
|
+
/**
|
|
56
|
+
* Advisory分析のみを実行
|
|
57
|
+
*/
|
|
58
|
+
analyze(message: string, expertType?: ExpertType): Promise<DelegationResult>;
|
|
59
|
+
/**
|
|
60
|
+
* Implementation生成を実行
|
|
61
|
+
*/
|
|
62
|
+
generate(message: string, expertType?: ExpertType): Promise<DelegationResult>;
|
|
63
|
+
/**
|
|
64
|
+
* リトライを実行
|
|
65
|
+
*/
|
|
66
|
+
retry(taskId: string, previousResult: DelegationResult, feedback?: string): Promise<DelegationResult>;
|
|
67
|
+
/**
|
|
68
|
+
* エスカレーションをトリガー
|
|
69
|
+
*/
|
|
70
|
+
escalate(taskId: string, currentExpert: ExpertType, context: DelegationContext): Promise<DelegationResult>;
|
|
71
|
+
/**
|
|
72
|
+
* エキスパートマネージャーを取得
|
|
73
|
+
*/
|
|
74
|
+
getExpertManager(): ExpertManager;
|
|
75
|
+
/**
|
|
76
|
+
* セマンティックルーターを取得
|
|
77
|
+
*/
|
|
78
|
+
getSemanticRouter(): SemanticRouter;
|
|
79
|
+
private resolveExpert;
|
|
80
|
+
private executeDelegate;
|
|
81
|
+
private checkConstitution;
|
|
82
|
+
private isEarsFormat;
|
|
83
|
+
private hasTraceability;
|
|
84
|
+
private createViolationResult;
|
|
85
|
+
private createMissingTraceabilityResult;
|
|
86
|
+
}
|
|
87
|
+
/**
|
|
88
|
+
* DelegationEngineのファクトリ関数
|
|
89
|
+
*/
|
|
90
|
+
export declare function createDelegationEngine(provider: LMProvider, expertManager?: ExpertManager, config?: DelegationEngineConfig): DelegationEngine;
|
|
91
|
+
//# sourceMappingURL=delegation-engine.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegation-engine.d.ts","sourceRoot":"","sources":["../../src/delegation/delegation-engine.ts"],"names":[],"mappings":"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"}
|