@su-record/vibe 2.7.5 → 2.7.8
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/dist/cli/commands/init.d.ts +7 -2
- package/dist/cli/commands/init.d.ts.map +1 -1
- package/dist/cli/commands/init.js +68 -6
- package/dist/cli/commands/init.js.map +1 -1
- package/dist/cli/commands/update.d.ts.map +1 -1
- package/dist/cli/commands/update.js +21 -3
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/detect.d.ts.map +1 -1
- package/dist/cli/detect.js +28 -1
- package/dist/cli/detect.js.map +1 -1
- package/dist/cli/postinstall/constants.d.ts +10 -4
- package/dist/cli/postinstall/constants.d.ts.map +1 -1
- package/dist/cli/postinstall/constants.js +19 -6
- package/dist/cli/postinstall/constants.js.map +1 -1
- package/dist/cli/postinstall/index.d.ts +1 -1
- package/dist/cli/postinstall/index.d.ts.map +1 -1
- package/dist/cli/postinstall/index.js +1 -1
- package/dist/cli/postinstall/index.js.map +1 -1
- package/dist/cli/postinstall.d.ts +1 -1
- package/dist/cli/postinstall.d.ts.map +1 -1
- package/dist/cli/postinstall.js +1 -1
- package/dist/cli/postinstall.js.map +1 -1
- package/dist/cli/setup/Provisioner.d.ts +28 -0
- package/dist/cli/setup/Provisioner.d.ts.map +1 -0
- package/dist/cli/setup/Provisioner.js +201 -0
- package/dist/cli/setup/Provisioner.js.map +1 -0
- package/dist/cli/types.d.ts +1 -0
- package/dist/cli/types.d.ts.map +1 -1
- package/dist/infra/lib/TaskContext.d.ts +43 -0
- package/dist/infra/lib/TaskContext.d.ts.map +1 -0
- package/dist/infra/lib/TaskContext.js +84 -0
- package/dist/infra/lib/TaskContext.js.map +1 -0
- package/dist/infra/lib/TokenBudgetTracker.d.ts +55 -0
- package/dist/infra/lib/TokenBudgetTracker.d.ts.map +1 -0
- package/dist/infra/lib/TokenBudgetTracker.js +150 -0
- package/dist/infra/lib/TokenBudgetTracker.js.map +1 -0
- package/dist/infra/lib/constants.d.ts +5 -0
- package/dist/infra/lib/constants.d.ts.map +1 -1
- package/dist/infra/lib/constants.js +6 -0
- package/dist/infra/lib/constants.js.map +1 -1
- package/dist/infra/lib/memory/SessionRAGRetriever.d.ts +1 -0
- package/dist/infra/lib/memory/SessionRAGRetriever.d.ts.map +1 -1
- package/dist/infra/lib/memory/SessionRAGRetriever.js +46 -21
- package/dist/infra/lib/memory/SessionRAGRetriever.js.map +1 -1
- package/dist/infra/lib/memory/SessionRAGStore.d.ts +5 -0
- package/dist/infra/lib/memory/SessionRAGStore.d.ts.map +1 -1
- package/dist/infra/lib/memory/SessionRAGStore.js +46 -12
- package/dist/infra/lib/memory/SessionRAGStore.js.map +1 -1
- package/dist/infra/lib/memory/index.d.ts +4 -0
- package/dist/infra/lib/memory/index.d.ts.map +1 -1
- package/dist/infra/lib/memory/index.js +4 -0
- package/dist/infra/lib/memory/index.js.map +1 -1
- package/dist/infra/orchestrator/AgentManifestCache.d.ts +54 -0
- package/dist/infra/orchestrator/AgentManifestCache.d.ts.map +1 -0
- package/dist/infra/orchestrator/AgentManifestCache.js +191 -0
- package/dist/infra/orchestrator/AgentManifestCache.js.map +1 -0
- package/dist/infra/orchestrator/agentDiscovery.d.ts +8 -0
- package/dist/infra/orchestrator/agentDiscovery.d.ts.map +1 -1
- package/dist/infra/orchestrator/agentDiscovery.js +2 -2
- package/dist/infra/orchestrator/agentDiscovery.js.map +1 -1
- package/dist/infra/orchestrator/index.d.ts +3 -1
- package/dist/infra/orchestrator/index.d.ts.map +1 -1
- package/dist/infra/orchestrator/index.js +3 -1
- package/dist/infra/orchestrator/index.js.map +1 -1
- package/hooks/scripts/context-save.js +12 -0
- package/package.json +1 -1
- package/skills/characterization-test/SKILL.md +202 -0
- package/skills/video-production/SKILL.md +222 -0
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentManifestCache - Two-tier agent loading with LRU cache
|
|
3
|
+
* Lightweight manifests at warmup, full content on demand
|
|
4
|
+
*/
|
|
5
|
+
export interface AgentManifest {
|
|
6
|
+
name: string;
|
|
7
|
+
path: string;
|
|
8
|
+
category: string;
|
|
9
|
+
description: string;
|
|
10
|
+
estimatedTokens: number;
|
|
11
|
+
}
|
|
12
|
+
export interface CachedFullAgent {
|
|
13
|
+
manifest: AgentManifest;
|
|
14
|
+
content: string;
|
|
15
|
+
loadedAt: number;
|
|
16
|
+
lastAccess: number;
|
|
17
|
+
}
|
|
18
|
+
export interface AgentCacheStats {
|
|
19
|
+
manifestCount: number;
|
|
20
|
+
fullCacheSize: number;
|
|
21
|
+
fullCacheMaxSize: number;
|
|
22
|
+
totalEstimatedTokens: number;
|
|
23
|
+
categories: string[];
|
|
24
|
+
}
|
|
25
|
+
export declare class AgentManifestCache {
|
|
26
|
+
private static instances;
|
|
27
|
+
private static defaultInstance;
|
|
28
|
+
private manifests;
|
|
29
|
+
private fullCache;
|
|
30
|
+
private accessOrder;
|
|
31
|
+
private maxFullCacheSize;
|
|
32
|
+
private projectPath;
|
|
33
|
+
private agentsBasePath;
|
|
34
|
+
private constructor();
|
|
35
|
+
static getInstance(projectPath?: string, maxFullCacheSize?: number): AgentManifestCache;
|
|
36
|
+
warmUp(): Promise<void>;
|
|
37
|
+
getManifest(name: string): AgentManifest | null;
|
|
38
|
+
getFullAgent(name: string): Promise<CachedFullAgent | null>;
|
|
39
|
+
listByCategory(category: string): AgentManifest[];
|
|
40
|
+
listAll(): AgentManifest[];
|
|
41
|
+
estimateTokenCost(names: string[]): {
|
|
42
|
+
total: number;
|
|
43
|
+
breakdown: Record<string, number>;
|
|
44
|
+
wouldExceedBudget: boolean;
|
|
45
|
+
};
|
|
46
|
+
getStats(): AgentCacheStats;
|
|
47
|
+
invalidate(): void;
|
|
48
|
+
static resetInstance(): void;
|
|
49
|
+
private findAgentsDir;
|
|
50
|
+
private readPreview;
|
|
51
|
+
private evictIfNeeded;
|
|
52
|
+
private touchAccessOrder;
|
|
53
|
+
}
|
|
54
|
+
//# sourceMappingURL=AgentManifestCache.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentManifestCache.d.ts","sourceRoot":"","sources":["../../../src/infra/orchestrator/AgentManifestCache.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAaH,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,aAAa,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,UAAU,EAAE,MAAM,EAAE,CAAC;CACtB;AAcD,qBAAa,kBAAkB;IAC7B,OAAO,CAAC,MAAM,CAAC,SAAS,CAA8C;IACtE,OAAO,CAAC,MAAM,CAAC,eAAe,CAAmC;IAEjE,OAAO,CAAC,SAAS,CAAyC;IAC1D,OAAO,CAAC,SAAS,CAA2C;IAC5D,OAAO,CAAC,WAAW,CAAgB;IACnC,OAAO,CAAC,gBAAgB,CAAS;IACjC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAuB;IAE7C,OAAO;IAKP,MAAM,CAAC,WAAW,CAChB,WAAW,GAAE,MAAsB,EACnC,gBAAgB,GAAE,MAA+B,GAChD,kBAAkB;IAQf,MAAM,IAAI,OAAO,CAAC,IAAI,CAAC;IAoC7B,WAAW,CAAC,IAAI,EAAE,MAAM,GAAG,aAAa,GAAG,IAAI;IAIzC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC;IA8BjE,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,aAAa,EAAE;IAMjD,OAAO,IAAI,aAAa,EAAE;IAI1B,iBAAiB,CACf,KAAK,EAAE,MAAM,EAAE,GACd;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,iBAAiB,EAAE,OAAO,CAAA;KAAE;IAuBnF,QAAQ,IAAI,eAAe;IAkB3B,UAAU,IAAI,IAAI;IAMlB,MAAM,CAAC,aAAa,IAAI,IAAI;YASd,aAAa;YAab,WAAW;IAMzB,OAAO,CAAC,aAAa;IAWrB,OAAO,CAAC,gBAAgB;CAOzB"}
|
|
@@ -0,0 +1,191 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AgentManifestCache - Two-tier agent loading with LRU cache
|
|
3
|
+
* Lightweight manifests at warmup, full content on demand
|
|
4
|
+
*/
|
|
5
|
+
import { promises as fs } from 'fs';
|
|
6
|
+
import path from 'path';
|
|
7
|
+
import { glob } from 'glob';
|
|
8
|
+
import { parseAgentMarkdown, extractCategory } from './agentDiscovery.js';
|
|
9
|
+
import { TokenBudgetTracker } from '../lib/TokenBudgetTracker.js';
|
|
10
|
+
import { TOKENS } from '../lib/constants.js';
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// Constants
|
|
13
|
+
// ============================================================================
|
|
14
|
+
const AGENTS_DIRS = ['.claude/agents', 'agents'];
|
|
15
|
+
const WARMUP_PREVIEW_LINES = 20;
|
|
16
|
+
const DEFAULT_MAX_FULL_CACHE = 5;
|
|
17
|
+
// ============================================================================
|
|
18
|
+
// AgentManifestCache
|
|
19
|
+
// ============================================================================
|
|
20
|
+
export class AgentManifestCache {
|
|
21
|
+
static instances = new Map();
|
|
22
|
+
static defaultInstance = null;
|
|
23
|
+
manifests = new Map();
|
|
24
|
+
fullCache = new Map();
|
|
25
|
+
accessOrder = [];
|
|
26
|
+
maxFullCacheSize;
|
|
27
|
+
projectPath;
|
|
28
|
+
agentsBasePath = null;
|
|
29
|
+
constructor(projectPath, maxFullCacheSize) {
|
|
30
|
+
this.projectPath = projectPath;
|
|
31
|
+
this.maxFullCacheSize = maxFullCacheSize;
|
|
32
|
+
}
|
|
33
|
+
static getInstance(projectPath = process.cwd(), maxFullCacheSize = DEFAULT_MAX_FULL_CACHE) {
|
|
34
|
+
const existing = AgentManifestCache.instances.get(projectPath);
|
|
35
|
+
if (existing)
|
|
36
|
+
return existing;
|
|
37
|
+
const inst = new AgentManifestCache(projectPath, maxFullCacheSize);
|
|
38
|
+
AgentManifestCache.instances.set(projectPath, inst);
|
|
39
|
+
return inst;
|
|
40
|
+
}
|
|
41
|
+
async warmUp() {
|
|
42
|
+
this.agentsBasePath = await this.findAgentsDir();
|
|
43
|
+
if (!this.agentsBasePath)
|
|
44
|
+
return;
|
|
45
|
+
const files = await glob('**/*.md', {
|
|
46
|
+
cwd: this.agentsBasePath,
|
|
47
|
+
absolute: true,
|
|
48
|
+
});
|
|
49
|
+
for (const filePath of files) {
|
|
50
|
+
try {
|
|
51
|
+
const content = await this.readPreview(filePath);
|
|
52
|
+
const stat = await fs.stat(filePath);
|
|
53
|
+
const parsed = parseAgentMarkdown(content, filePath);
|
|
54
|
+
const category = extractCategory(filePath, this.agentsBasePath);
|
|
55
|
+
const estimatedTokens = Math.ceil(stat.size * TOKENS.PER_CHAR_ESTIMATE);
|
|
56
|
+
const name = parsed.name || path.basename(filePath, '.md');
|
|
57
|
+
this.manifests.set(name, {
|
|
58
|
+
name,
|
|
59
|
+
path: path.relative(this.projectPath, filePath),
|
|
60
|
+
category,
|
|
61
|
+
description: parsed.description || '',
|
|
62
|
+
estimatedTokens,
|
|
63
|
+
});
|
|
64
|
+
}
|
|
65
|
+
catch {
|
|
66
|
+
// Skip individual file errors
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
getManifest(name) {
|
|
71
|
+
return this.manifests.get(name) ?? null;
|
|
72
|
+
}
|
|
73
|
+
async getFullAgent(name) {
|
|
74
|
+
const cached = this.fullCache.get(name);
|
|
75
|
+
if (cached) {
|
|
76
|
+
cached.lastAccess = Date.now();
|
|
77
|
+
this.touchAccessOrder(name);
|
|
78
|
+
return cached;
|
|
79
|
+
}
|
|
80
|
+
const manifest = this.manifests.get(name);
|
|
81
|
+
if (!manifest)
|
|
82
|
+
return null;
|
|
83
|
+
try {
|
|
84
|
+
const fullPath = path.resolve(this.projectPath, manifest.path);
|
|
85
|
+
const content = await fs.readFile(fullPath, 'utf-8');
|
|
86
|
+
const entry = {
|
|
87
|
+
manifest,
|
|
88
|
+
content,
|
|
89
|
+
loadedAt: Date.now(),
|
|
90
|
+
lastAccess: Date.now(),
|
|
91
|
+
};
|
|
92
|
+
this.evictIfNeeded();
|
|
93
|
+
this.fullCache.set(name, entry);
|
|
94
|
+
this.accessOrder.push(name);
|
|
95
|
+
return entry;
|
|
96
|
+
}
|
|
97
|
+
catch {
|
|
98
|
+
return null;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
listByCategory(category) {
|
|
102
|
+
return [...this.manifests.values()].filter(m => m.category === category);
|
|
103
|
+
}
|
|
104
|
+
listAll() {
|
|
105
|
+
return [...this.manifests.values()];
|
|
106
|
+
}
|
|
107
|
+
estimateTokenCost(names) {
|
|
108
|
+
const breakdown = {};
|
|
109
|
+
let total = 0;
|
|
110
|
+
for (const name of names) {
|
|
111
|
+
const manifest = this.manifests.get(name);
|
|
112
|
+
if (manifest) {
|
|
113
|
+
breakdown[name] = manifest.estimatedTokens;
|
|
114
|
+
total += manifest.estimatedTokens;
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
let wouldExceedBudget = false;
|
|
118
|
+
try {
|
|
119
|
+
const tracker = TokenBudgetTracker.getInstance(this.projectPath);
|
|
120
|
+
wouldExceedBudget = total > tracker.getRemainingBudget();
|
|
121
|
+
}
|
|
122
|
+
catch {
|
|
123
|
+
// Tracker not available
|
|
124
|
+
}
|
|
125
|
+
return { total, breakdown, wouldExceedBudget };
|
|
126
|
+
}
|
|
127
|
+
getStats() {
|
|
128
|
+
const categories = new Set();
|
|
129
|
+
let totalEstimatedTokens = 0;
|
|
130
|
+
for (const m of this.manifests.values()) {
|
|
131
|
+
categories.add(m.category);
|
|
132
|
+
totalEstimatedTokens += m.estimatedTokens;
|
|
133
|
+
}
|
|
134
|
+
return {
|
|
135
|
+
manifestCount: this.manifests.size,
|
|
136
|
+
fullCacheSize: this.fullCache.size,
|
|
137
|
+
fullCacheMaxSize: this.maxFullCacheSize,
|
|
138
|
+
totalEstimatedTokens,
|
|
139
|
+
categories: [...categories],
|
|
140
|
+
};
|
|
141
|
+
}
|
|
142
|
+
invalidate() {
|
|
143
|
+
this.manifests.clear();
|
|
144
|
+
this.fullCache.clear();
|
|
145
|
+
this.accessOrder = [];
|
|
146
|
+
}
|
|
147
|
+
static resetInstance() {
|
|
148
|
+
AgentManifestCache.instances.clear();
|
|
149
|
+
AgentManifestCache.defaultInstance = null;
|
|
150
|
+
}
|
|
151
|
+
// ========================================================================
|
|
152
|
+
// Private helpers
|
|
153
|
+
// ========================================================================
|
|
154
|
+
async findAgentsDir() {
|
|
155
|
+
for (const dir of AGENTS_DIRS) {
|
|
156
|
+
const candidate = path.join(this.projectPath, dir);
|
|
157
|
+
try {
|
|
158
|
+
await fs.access(candidate);
|
|
159
|
+
return candidate;
|
|
160
|
+
}
|
|
161
|
+
catch {
|
|
162
|
+
// Try next
|
|
163
|
+
}
|
|
164
|
+
}
|
|
165
|
+
return null;
|
|
166
|
+
}
|
|
167
|
+
async readPreview(filePath) {
|
|
168
|
+
const content = await fs.readFile(filePath, 'utf-8');
|
|
169
|
+
const lines = content.split('\n');
|
|
170
|
+
return lines.slice(0, WARMUP_PREVIEW_LINES).join('\n');
|
|
171
|
+
}
|
|
172
|
+
evictIfNeeded() {
|
|
173
|
+
while (this.fullCache.size >= this.maxFullCacheSize) {
|
|
174
|
+
const oldest = this.accessOrder.shift();
|
|
175
|
+
if (oldest) {
|
|
176
|
+
this.fullCache.delete(oldest);
|
|
177
|
+
}
|
|
178
|
+
else {
|
|
179
|
+
break;
|
|
180
|
+
}
|
|
181
|
+
}
|
|
182
|
+
}
|
|
183
|
+
touchAccessOrder(name) {
|
|
184
|
+
const idx = this.accessOrder.indexOf(name);
|
|
185
|
+
if (idx !== -1) {
|
|
186
|
+
this.accessOrder.splice(idx, 1);
|
|
187
|
+
}
|
|
188
|
+
this.accessOrder.push(name);
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
//# sourceMappingURL=AgentManifestCache.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AgentManifestCache.js","sourceRoot":"","sources":["../../../src/infra/orchestrator/AgentManifestCache.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,6 +3,14 @@
|
|
|
3
3
|
*/
|
|
4
4
|
import { DiscoveredAgent, AgentDiscoveryArgs } from './types.js';
|
|
5
5
|
import { ToolResult } from '../types/tool.js';
|
|
6
|
+
/**
|
|
7
|
+
* 에이전트 마크다운 파일에서 메타데이터 추출
|
|
8
|
+
*/
|
|
9
|
+
export declare function parseAgentMarkdown(content: string, filePath: string): Partial<DiscoveredAgent>;
|
|
10
|
+
/**
|
|
11
|
+
* 카테고리 추출 (폴더명 기반)
|
|
12
|
+
*/
|
|
13
|
+
export declare function extractCategory(filePath: string, basePath: string): string;
|
|
6
14
|
/**
|
|
7
15
|
* 에이전트 동적 탐색
|
|
8
16
|
*/
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentDiscovery.d.ts","sourceRoot":"","sources":["../../../src/infra/orchestrator/agentDiscovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"agentDiscovery.d.ts","sourceRoot":"","sources":["../../../src/infra/orchestrator/agentDiscovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAKH,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAM9C;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CA4B9F;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,MAAM,CAU1E;AAED;;GAEG;AACH,wBAAsB,cAAc,CAAC,IAAI,EAAE,kBAAkB,GAAG,OAAO,CAAC,UAAU,CAAC,CA0GlF;AAED;;GAEG;AACH,wBAAsB,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,eAAe,GAAG,IAAI,CAAC,CAYvH;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,GAAE,MAAsB,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAQ5H"}
|
|
@@ -10,7 +10,7 @@ const AGENTS_DIRS = ['.claude/agents', 'agents'];
|
|
|
10
10
|
/**
|
|
11
11
|
* 에이전트 마크다운 파일에서 메타데이터 추출
|
|
12
12
|
*/
|
|
13
|
-
function parseAgentMarkdown(content, filePath) {
|
|
13
|
+
export function parseAgentMarkdown(content, filePath) {
|
|
14
14
|
const lines = content.split('\n');
|
|
15
15
|
let name = path.basename(filePath, '.md');
|
|
16
16
|
let description = '';
|
|
@@ -40,7 +40,7 @@ function parseAgentMarkdown(content, filePath) {
|
|
|
40
40
|
/**
|
|
41
41
|
* 카테고리 추출 (폴더명 기반)
|
|
42
42
|
*/
|
|
43
|
-
function extractCategory(filePath, basePath) {
|
|
43
|
+
export function extractCategory(filePath, basePath) {
|
|
44
44
|
const relativePath = path.relative(basePath, filePath);
|
|
45
45
|
const parts = relativePath.split(path.sep);
|
|
46
46
|
// agents/review/xxx.md -> review
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agentDiscovery.js","sourceRoot":"","sources":["../../../src/infra/orchestrator/agentDiscovery.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,QAAQ,IAAI,EAAE,EAAE,MAAM,IAAI,CAAC;AACpC,OAAO,IAAI,MAAM,MAAM,CAAC;AACxB,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAC;AAG5B,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAE3C,0CAA0C;AAC1C,MAAM,WAAW,GAAG,CAAC,gBAAgB,EAAE,QAAQ,CAAC,CAAC;AAEjD;;GAEG;AACH,
|
|
1
|
+
{"version":3,"file":"agentDiscovery.js","sourceRoot":"","sources":["../../../src/infra/orchestrator/agentDiscovery.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,7 +9,9 @@
|
|
|
9
9
|
*/
|
|
10
10
|
export type { AgentConfig, AgentResult, ResearchTask, ParallelResearchArgs, ParallelResearchResult, BackgroundAgentArgs, BackgroundAgentHandle, DiscoveredAgent, AgentDiscoveryArgs, SessionInfo, OrchestratorOptions, AgentMessage, TaskType, LLMProvider, SmartRouteRequest, SmartRouteResult, LLMAvailabilityCache, MultiLlmResult, MultiLlmResearchResult } from './types.js';
|
|
11
11
|
export { TASK_LLM_PRIORITY } from './types.js';
|
|
12
|
-
export { discoverAgents, loadAgent, listAgentsByCategory } from './agentDiscovery.js';
|
|
12
|
+
export { discoverAgents, loadAgent, listAgentsByCategory, parseAgentMarkdown, extractCategory } from './agentDiscovery.js';
|
|
13
|
+
export { AgentManifestCache } from './AgentManifestCache.js';
|
|
14
|
+
export type { AgentManifest, CachedFullAgent, AgentCacheStats } from './AgentManifestCache.js';
|
|
13
15
|
export { parallelResearch, researchFeature, createResearchTasks, parallelResearchWithMultiLlm, executeMultiLlmResearch, formatMultiLlmResults } from './parallelResearch.js';
|
|
14
16
|
export { launchBackgroundAgent, getBackgroundAgentResult, cancelBackgroundAgent, listActiveSessions, getSessionHistory, launchParallelAgents, backgroundManager, launch, poll, cancel, getStats, QueueOverflowError, TaskTimeoutError, PipelineTimeoutError, AgentExecutionError } from './backgroundAgent.js';
|
|
15
17
|
export type { TaskStatus, TaskInfo, QueueStats } from './backgroundAgent.js';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infra/orchestrator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAGH,YAAY,EACV,WAAW,EACX,WAAW,EACX,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,mBAAmB,EACnB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,WAAW,EACX,mBAAmB,EACnB,YAAY,EAEZ,QAAQ,EACR,WAAW,EACX,iBAAiB,EACjB,gBAAgB,EAChB,oBAAoB,EAEpB,cAAc,EACd,sBAAsB,EACvB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAG/C,OAAO,EACL,cAAc,EACd,SAAS,EACT,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/infra/orchestrator/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -10,7 +10,9 @@
|
|
|
10
10
|
// Smart Routing constants
|
|
11
11
|
export { TASK_LLM_PRIORITY } from './types.js';
|
|
12
12
|
// Agent Discovery
|
|
13
|
-
export { discoverAgents, loadAgent, listAgentsByCategory } from './agentDiscovery.js';
|
|
13
|
+
export { discoverAgents, loadAgent, listAgentsByCategory, parseAgentMarkdown, extractCategory } from './agentDiscovery.js';
|
|
14
|
+
// Agent Manifest Cache
|
|
15
|
+
export { AgentManifestCache } from './AgentManifestCache.js';
|
|
14
16
|
// Parallel Research
|
|
15
17
|
export { parallelResearch, researchFeature, createResearchTasks,
|
|
16
18
|
// Multi-LLM Research
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infra/orchestrator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2BH,0BAA0B;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,kBAAkB;AAClB,OAAO,EACL,cAAc,EACd,SAAS,EACT,oBAAoB,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/infra/orchestrator/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AA2BH,0BAA0B;AAC1B,OAAO,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAE/C,kBAAkB;AAClB,OAAO,EACL,cAAc,EACd,SAAS,EACT,oBAAoB,EACpB,kBAAkB,EAClB,eAAe,EAChB,MAAM,qBAAqB,CAAC;AAE7B,uBAAuB;AACvB,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D,oBAAoB;AACpB,OAAO,EACL,gBAAgB,EAChB,eAAe,EACf,mBAAmB;AACnB,qBAAqB;AACrB,4BAA4B,EAC5B,uBAAuB,EACvB,qBAAqB,EACtB,MAAM,uBAAuB,CAAC;AAE/B,mBAAmB;AACnB,OAAO,EACL,qBAAqB,EACrB,wBAAwB,EACxB,qBAAqB,EACrB,kBAAkB,EAClB,iBAAiB,EACjB,oBAAoB;AACpB,oBAAoB;AACpB,iBAAiB,EACjB,MAAM,EACN,IAAI,EACJ,MAAM,EACN,QAAQ,EACR,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,mBAAmB,EACpB,MAAM,sBAAsB,CAAC;AAG9B,0BAA0B;AAC1B,OAAO,EACL,gBAAgB,EAChB,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,wBAAwB;AACxB,OAAO,EACL,WAAW,EAEX,cAAc,EACd,uBAAuB,EACxB,MAAM,kBAAkB,CAAC;AAE1B,OAAO,EACL,UAAU,EAIV,aAAa,EACd,MAAM,iBAAiB,CAAC;AAEzB,OAAO,EACL,YAAY,EAEZ,eAAe,EAChB,MAAM,mBAAmB,CAAC;AAE3B,iBAAiB;AACjB,OAAO,EAAE,cAAc,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQrE,gBAAgB;AAChB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQnD,gBAAgB;AAChB,OAAO,EACL,aAAa,EACb,WAAW,EACX,cAAc,EACd,uBAAuB,EACvB,0BAA0B,EAC3B,MAAM,oBAAoB,CAAC;AAS5B,mBAAmB;AACnB,OAAO,EAAE,gBAAgB,EAAE,MAAM,uBAAuB,CAAC;AAGzD,oBAAoB;AACpB,OAAO,EAAE,iBAAiB,EAAE,MAAM,wBAAwB,CAAC;AAG3D,oBAAoB;AACpB,OAAO,EACL,iBAAiB,EACjB,KAAK,EACL,qBAAqB,EACtB,MAAM,wBAAwB,CAAC;AAOhC,+CAA+C;AAC/C,yBAAyB;AACzB,+CAA+C;AAE/C,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,EAEL,4BAA4B,IAAI,6BAA6B,EAC7D,mBAAmB,EACpB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qBAAqB,IAAI,sBAAsB,EAC/C,wBAAwB,IAAI,yBAAyB,EACrD,kBAAkB,EAClB,iBAAiB,EAClB,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,cAAc,IAAI,eAAe,EAAE,MAAM,qBAAqB,CAAC;AAGxE;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,OAAe,EACf,YAAsB,EAAE,EACxB,cAAsB,OAAO,CAAC,GAAG,EAAE;IAEnC,MAAM,KAAK,GAAG,mBAAmB,CAAC,OAAO,EAAE,SAAS,CAAC,CAAC;IACtD,mDAAmD;IACnD,OAAO,6BAA6B,CAAC,EAAE,KAAK,EAAE,WAAW,EAAE,OAAO,EAAE,SAAS,EAAE,CAAC,CAAC;AACnF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAc,EACd,SAAkB,EAClB,cAAsB,OAAO,CAAC,GAAG,EAAE;IAEnC,OAAO,sBAAsB,CAAC;QAC5B,MAAM;QACN,SAAS,EAAE,SAAS,IAAI,SAAS,IAAI,CAAC,GAAG,EAAE,EAAE;QAC7C,WAAW;KACZ,CAAC,CAAC;AACL,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,SAAiB;IAC/C,OAAO,yBAAyB,CAAC,SAAS,CAAC,CAAC;AAC9C,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,QAAiB,EACjB,cAAsB,OAAO,CAAC,GAAG,EAAE;IAEnC,OAAO,eAAe,CAAC,EAAE,WAAW,EAAE,QAAQ,EAAE,CAAC,CAAC;AACpD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,SAAmB,EACnB,YAAsB,EAAE,EACxB,cAAsB,OAAO,CAAC,GAAG,EAAE;IAEnC,MAAM,YAAY,GAAG,IAAI,gBAAgB,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC;IAC3D,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,iBAAiB,CAAC,SAAS,EAAE,SAAS,CAAC,CAAC;IAE3E,SAAS;IACT,IAAI,OAAO,GAAG,gCAAgC,CAAC;IAC/C,OAAO,IAAI,cAAc,SAAS,CAAC,MAAM,IAAI,CAAC;IAC9C,OAAO,IAAI,kBAAkB,OAAO,CAAC,MAAM,MAAM,CAAC;IAElD,MAAM,YAAY,GAAG,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC;IAC3D,OAAO,IAAI,gBAAgB,YAAY,IAAI,OAAO,CAAC,MAAM,MAAM,CAAC;IAEhE,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;QAC1C,OAAO,IAAI,OAAO,MAAM,IAAI,MAAM,CAAC,SAAS,IAAI,CAAC;QACjD,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YACnB,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;YACvC,IAAI,MAAM,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;gBAAE,OAAO,IAAI,KAAK,CAAC;QACnD,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,UAAU,MAAM,CAAC,KAAK,EAAE,CAAC;QACtC,CAAC;QACD,OAAO,IAAI,MAAM,CAAC;IACpB,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,OAAO;KACoC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,UAAU,MAAM;IACpB,MAAM,MAAM,GAAG,kBAAkB,EAAE,CAAC;IACpC,MAAM,OAAO,GAAG,iBAAiB,CAAC,CAAC,CAAC,CAAC;IAErC,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,6BAA6B,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,OAAO,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE;aAC1F,CAAC;KACH,CAAC;AACJ,CAAC;AAED,+CAA+C;AAC/C,gCAAgC;AAChC,+CAA+C;AAE/C,OAAO,KAAK,MAAM,MAAM,qBAAqB,CAAC;AAC9C,OAAO,KAAK,SAAS,MAAM,wBAAwB,CAAC;AAEpD,+CAA+C;AAC/C,kCAAkC;AAClC,+CAA+C;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,KAAa;IAC3C,uCAAuC;IACvC,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,GAAG,CACvB,MAAc,EACd,eAAuB,8BAA8B;IAErD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1F,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,OAAO,EAAE,IAAI;SACuB,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,eAAgB,KAAe,CAAC,OAAO,EAAE,EAAE,CAAC;YAC5E,OAAO,EAAE,KAAK;SACsB,CAAC;IACzC,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,uCAAuC;AACvC,+CAA+C;AAE/C;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,KAAa;IAC9C,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACrD,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,OAAO,EAAE,IAAI;SACuB,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAmB,KAAe,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/E,OAAO,EAAE,KAAK;SACsB,CAAC;IACzC,CAAC;AACH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,MAAM,CAC1B,MAAc,EACd,eAAuB,8BAA8B;IAErD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,SAAS,CAAC,qBAAqB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,QAAQ,EAAE,KAAK,EAAE,CAAC,CAAC;QAChG,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;YACzC,OAAO,EAAE,IAAI;SACuB,CAAC;IACzC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,kBAAmB,KAAe,CAAC,OAAO,EAAE,EAAE,CAAC;YAC/E,OAAO,EAAE,KAAK;SACsB,CAAC;IACzC,CAAC;AACH,CAAC;AAED,+CAA+C;AAC/C,0BAA0B;AAC1B,+CAA+C;AAE/C;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,QAAQ,CAC5B,MAAc,EACd,OAAmD;IAEnD,MAAM,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC5C,MAAM,OAAO,GAAG,MAAM,YAAY,CAAC,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAElE,IAAI,OAAO,GAAG,0BAA0B,CAAC;IAEzC,IAAI,OAAO,CAAC,GAAG,EAAE,CAAC;QAChB,OAAO,IAAI,YAAY,OAAO,CAAC,GAAG,MAAM,CAAC;IAC3C,CAAC;IACD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,IAAI,eAAe,OAAO,CAAC,MAAM,MAAM,CAAC;IACjD,CAAC;IAED,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC;QAC1C,OAAO;KACoC,CAAC;AAChD,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS;IAC7B,MAAM,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC5C,MAAM,eAAe,GAAG,MAAM,YAAY,CAAC,cAAc,EAAE,CAAC;IAE5D,MAAM,OAAO,GAAG,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAC1D,MAAM,UAAU,GAAG,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAEhE,IAAI,IAAI,GAAG,mBAAmB,CAAC;IAC/B,IAAI,IAAI,UAAU,OAAO,IAAI,eAAe,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC;IAC7F,IAAI,IAAI,aAAa,UAAU,IAAI,eAAe,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,aAAa,IAAI,CAAC;IAEtG,OAAO;QACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QACjC,MAAM,EAAE,eAAe;KAC2B,CAAC;AACvD,CAAC;AAQD;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAC9B,IAAc,EACd,MAAc,EACd,YAAqB;IAErB,MAAM,YAAY,GAAG,IAAI,gBAAgB,EAAE,CAAC;IAC5C,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC,UAAU,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,CAAC,CAAC;IAE7E,MAAM,YAAY,GAAG,MAAM,CAAC,YAAY;QACtC,CAAC,CAAC,mBAAmB,MAAM,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG;QAC1E,CAAC,CAAC,EAAE,CAAC;IAEP,OAAO;QACL,OAAO,EAAE,CAAC;gBACR,IAAI,EAAE,MAAM;gBACZ,IAAI,EAAE,IAAI,MAAM,CAAC,QAAQ,CAAC,WAAW,EAAE,GAAG,YAAY,QAAQ,MAAM,CAAC,OAAO,EAAE;aAC/E,CAAC;QACF,MAAM;KACP,CAAC;AACJ,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc;IACpD,OAAO,UAAU,CAAC,cAAc,EAAE,MAAM,EAAE,oEAAoE,CAAC,CAAC;AAClH,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,SAAS,CAAC,MAAc;IAC5C,OAAO,UAAU,CAAC,MAAM,EAAE,MAAM,EAAE,uDAAuD,CAAC,CAAC;AAC7F,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,MAAc;IACpD,OAAO,UAAU,CAAC,eAAe,EAAE,MAAM,EAAE,8DAA8D,CAAC,CAAC;AAC7G,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc;IACjD,OAAO,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,0DAA0D,CAAC,CAAC;AACrG,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAa;IAChD,OAAO,UAAU,CAAC,YAAY,EAAE,KAAK,EAAE,kDAAkD,CAAC,CAAC;AAC7F,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAC,WAAmB,EAAE,OAAgB;IACtE,MAAM,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,WAAW,iBAAiB,OAAO,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC;IAChF,OAAO,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,uCAAuC,CAAC,CAAC;AACjF,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,MAAc;IAClD,OAAO,UAAU,CAAC,aAAa,EAAE,MAAM,EAAE,oFAAoF,CAAC,CAAC;AACjI,CAAC;AAED;;;;;GAKG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,MAAc;IACjD,OAAO,UAAU,CAAC,WAAW,EAAE,MAAM,EAAE,+DAA+D,CAAC,CAAC;AAC1G,CAAC"}
|
|
@@ -29,6 +29,18 @@ async function main() {
|
|
|
29
29
|
});
|
|
30
30
|
const percent = urgency === 'critical' ? '95' : urgency === 'high' ? '90' : '80';
|
|
31
31
|
console.log(`[CONTEXT ${percent}%]`, result.content[0].text);
|
|
32
|
+
|
|
33
|
+
// Sync TokenBudgetTracker with current context usage
|
|
34
|
+
try {
|
|
35
|
+
const { TokenBudgetTracker } = await import(`${LIB_URL}TokenBudgetTracker.js`);
|
|
36
|
+
const tracker = TokenBudgetTracker.getInstance(PROJECT_DIR);
|
|
37
|
+
const numPercent = Number(percent);
|
|
38
|
+
if (!isNaN(numPercent)) {
|
|
39
|
+
tracker.syncToPercent(numPercent);
|
|
40
|
+
}
|
|
41
|
+
} catch {
|
|
42
|
+
// TokenBudgetTracker sync is non-critical
|
|
43
|
+
}
|
|
32
44
|
} catch {
|
|
33
45
|
// 무시
|
|
34
46
|
}
|
package/package.json
CHANGED
|
@@ -0,0 +1,202 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: characterization-test
|
|
3
|
+
description: "Lock existing behavior with characterization tests before modifying code."
|
|
4
|
+
triggers: [legacy, characterization test, lock behavior, regression prevention, before refactor, large file]
|
|
5
|
+
priority: 65
|
|
6
|
+
---
|
|
7
|
+
|
|
8
|
+
# Characterization Test Skill
|
|
9
|
+
|
|
10
|
+
> **Philosophy: "Never change what you cannot verify"**
|
|
11
|
+
|
|
12
|
+
Lock existing behavior with snapshot/characterization tests before modifying code. This prevents regressions in legacy, complex, or unfamiliar codebases.
|
|
13
|
+
|
|
14
|
+
## When to Use
|
|
15
|
+
|
|
16
|
+
| Scenario | Signal |
|
|
17
|
+
|----------|--------|
|
|
18
|
+
| Legacy file (>500 lines) | Large files with accumulated behavior |
|
|
19
|
+
| Complex branching | Multiple if/else, switch, ternary chains |
|
|
20
|
+
| API endpoint modification | Request/response contract must be preserved |
|
|
21
|
+
| Database schema change | Migration must preserve existing data semantics |
|
|
22
|
+
| Refactoring request | "refactor", "clean up", "simplify" keywords |
|
|
23
|
+
| Unfamiliar code | No prior context about the module |
|
|
24
|
+
|
|
25
|
+
## Core Workflow
|
|
26
|
+
|
|
27
|
+
```
|
|
28
|
+
ANALYZE → GENERATE → VERIFY → CHANGE → REGRESS → RECONCILE
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
### Step 1: ANALYZE
|
|
32
|
+
|
|
33
|
+
Explore the target code to understand its current behavior.
|
|
34
|
+
|
|
35
|
+
**Parallel exploration** (use sub-agents when available):
|
|
36
|
+
- Read the target file(s)
|
|
37
|
+
- Identify all public exports / API surface
|
|
38
|
+
- Map branching paths (if/else, switch, try/catch)
|
|
39
|
+
- List external dependencies and side effects
|
|
40
|
+
- Check for existing tests
|
|
41
|
+
|
|
42
|
+
**Analysis checklist:**
|
|
43
|
+
- [ ] All public functions identified
|
|
44
|
+
- [ ] Input parameter ranges documented
|
|
45
|
+
- [ ] Edge cases listed (null, empty, boundary values)
|
|
46
|
+
- [ ] Side effects cataloged (DB writes, file I/O, network calls)
|
|
47
|
+
- [ ] Error paths mapped
|
|
48
|
+
|
|
49
|
+
### Step 2: GENERATE
|
|
50
|
+
|
|
51
|
+
Create characterization tests that capture current behavior as-is.
|
|
52
|
+
|
|
53
|
+
**TypeScript template:**
|
|
54
|
+
```typescript
|
|
55
|
+
import { describe, it, expect } from 'vitest';
|
|
56
|
+
|
|
57
|
+
describe('[ModuleName] characterization tests', () => {
|
|
58
|
+
// Happy path - capture normal behavior
|
|
59
|
+
it('should [describe current behavior]', () => {
|
|
60
|
+
const result = targetFunction(normalInput);
|
|
61
|
+
// Snapshot the ACTUAL output, not what you THINK it should be
|
|
62
|
+
expect(result).toMatchSnapshot();
|
|
63
|
+
});
|
|
64
|
+
|
|
65
|
+
// Edge cases - capture boundary behavior
|
|
66
|
+
it('should handle empty input', () => {
|
|
67
|
+
const result = targetFunction('');
|
|
68
|
+
expect(result).toMatchSnapshot();
|
|
69
|
+
});
|
|
70
|
+
|
|
71
|
+
// Error paths - capture failure modes
|
|
72
|
+
it('should handle invalid input', () => {
|
|
73
|
+
expect(() => targetFunction(null)).toThrowErrorMatchingSnapshot();
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
```
|
|
77
|
+
|
|
78
|
+
**Python template:**
|
|
79
|
+
```python
|
|
80
|
+
import pytest
|
|
81
|
+
|
|
82
|
+
class TestModuleNameCharacterization:
|
|
83
|
+
"""Lock existing behavior before modification."""
|
|
84
|
+
|
|
85
|
+
def test_normal_behavior(self, snapshot):
|
|
86
|
+
result = target_function(normal_input)
|
|
87
|
+
assert result == snapshot
|
|
88
|
+
|
|
89
|
+
def test_empty_input(self, snapshot):
|
|
90
|
+
result = target_function("")
|
|
91
|
+
assert result == snapshot
|
|
92
|
+
|
|
93
|
+
def test_invalid_input(self):
|
|
94
|
+
with pytest.raises(Exception) as exc_info:
|
|
95
|
+
target_function(None)
|
|
96
|
+
assert str(exc_info.value) # Capture error message
|
|
97
|
+
```
|
|
98
|
+
|
|
99
|
+
**Key principles:**
|
|
100
|
+
- Test ACTUAL behavior, not expected behavior
|
|
101
|
+
- Use `toMatchSnapshot()` / snapshot assertions
|
|
102
|
+
- Cover every public function
|
|
103
|
+
- Include edge cases and error paths
|
|
104
|
+
- Do NOT fix bugs in characterization tests
|
|
105
|
+
|
|
106
|
+
### Step 3: VERIFY
|
|
107
|
+
|
|
108
|
+
Run the characterization tests to confirm they pass with current code.
|
|
109
|
+
|
|
110
|
+
```bash
|
|
111
|
+
# TypeScript
|
|
112
|
+
npx vitest run --reporter=verbose [test-file]
|
|
113
|
+
|
|
114
|
+
# Python
|
|
115
|
+
pytest -v [test-file]
|
|
116
|
+
```
|
|
117
|
+
|
|
118
|
+
- All tests MUST pass before proceeding
|
|
119
|
+
- If any test fails, the characterization is wrong — fix the test, not the code
|
|
120
|
+
- Update snapshots if needed: `npx vitest run -u [test-file]`
|
|
121
|
+
|
|
122
|
+
### Step 4: CHANGE
|
|
123
|
+
|
|
124
|
+
Now implement the requested modification.
|
|
125
|
+
|
|
126
|
+
- Make changes incrementally
|
|
127
|
+
- Run characterization tests after each change
|
|
128
|
+
- Any unexpected test failure = potential regression
|
|
129
|
+
|
|
130
|
+
### Step 5: REGRESS
|
|
131
|
+
|
|
132
|
+
Run full characterization test suite after all changes.
|
|
133
|
+
|
|
134
|
+
```bash
|
|
135
|
+
npx vitest run [characterization-test-file]
|
|
136
|
+
```
|
|
137
|
+
|
|
138
|
+
- **All passing**: Changes preserve existing behavior
|
|
139
|
+
- **Expected failures**: Tests for intentionally changed behavior
|
|
140
|
+
- **Unexpected failures**: STOP — investigate regression
|
|
141
|
+
|
|
142
|
+
### Step 6: RECONCILE
|
|
143
|
+
|
|
144
|
+
Update characterization tests to match new intended behavior.
|
|
145
|
+
|
|
146
|
+
- Review each failing test individually
|
|
147
|
+
- Confirm the failure is due to intentional change
|
|
148
|
+
- Update snapshot: `npx vitest run -u`
|
|
149
|
+
- Add NEW tests for new behavior
|
|
150
|
+
- Document why each test changed
|
|
151
|
+
|
|
152
|
+
## Scenario-Specific Workflows
|
|
153
|
+
|
|
154
|
+
### Legacy File (>500 lines)
|
|
155
|
+
|
|
156
|
+
1. Generate function-level characterization tests
|
|
157
|
+
2. Focus on public API surface first
|
|
158
|
+
3. Add integration tests for cross-function flows
|
|
159
|
+
4. Refactor in small increments
|
|
160
|
+
|
|
161
|
+
### Complex Branching
|
|
162
|
+
|
|
163
|
+
1. Map all branches with a decision tree
|
|
164
|
+
2. Write one test per branch path
|
|
165
|
+
3. Include boundary values for each condition
|
|
166
|
+
4. Test combinations of related conditions
|
|
167
|
+
|
|
168
|
+
### API Endpoint
|
|
169
|
+
|
|
170
|
+
1. Capture request/response pairs for all routes
|
|
171
|
+
2. Test all HTTP methods, status codes, headers
|
|
172
|
+
3. Include authentication/authorization paths
|
|
173
|
+
4. Test error responses and validation messages
|
|
174
|
+
|
|
175
|
+
### Database Schema
|
|
176
|
+
|
|
177
|
+
1. Create fixtures with representative data
|
|
178
|
+
2. Test queries before and after migration
|
|
179
|
+
3. Verify data integrity post-migration
|
|
180
|
+
4. Test rollback scenarios
|
|
181
|
+
|
|
182
|
+
## Integration with VIBE Workflow
|
|
183
|
+
|
|
184
|
+
### With `/vibe.spec`
|
|
185
|
+
Add characterization test phase to SPEC before implementation:
|
|
186
|
+
```
|
|
187
|
+
## Pre-Implementation
|
|
188
|
+
- [ ] Characterization tests written for affected modules
|
|
189
|
+
- [ ] All characterization tests passing
|
|
190
|
+
```
|
|
191
|
+
|
|
192
|
+
### With `/vibe.run`
|
|
193
|
+
The implementation agent should:
|
|
194
|
+
1. Check for characterization tests before modifying files
|
|
195
|
+
2. Run them before and after changes
|
|
196
|
+
3. Flag any unexpected failures
|
|
197
|
+
|
|
198
|
+
### With `/vibe.review`
|
|
199
|
+
Review agents verify:
|
|
200
|
+
- Characterization tests exist for modified legacy code
|
|
201
|
+
- No regressions in existing behavior
|
|
202
|
+
- New behavior has corresponding new tests
|