@fiale-plus/repo-arch 0.1.0 → 0.3.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 +20 -10
- package/dist/cards.js +156 -34
- package/dist/cards.js.map +1 -1
- package/dist/cli.d.ts +5 -1
- package/dist/cli.js +379 -46
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +55 -0
- package/dist/config.js +130 -0
- package/dist/config.js.map +1 -0
- package/dist/embedder.js +8 -6
- package/dist/embedder.js.map +1 -1
- package/dist/flow.d.ts +102 -0
- package/dist/flow.js +488 -0
- package/dist/flow.js.map +1 -0
- package/dist/signals.js +1 -2
- package/dist/signals.js.map +1 -1
- package/dist/train-cycle.d.ts +42 -0
- package/dist/train-cycle.js +209 -0
- package/dist/train-cycle.js.map +1 -0
- package/dist/training.d.ts +5 -0
- package/dist/training.js +161 -32
- package/dist/training.js.map +1 -1
- package/package.json +18 -1
- package/pi/extensions/repo-arch.ts +53 -0
- package/pi/skills/repo-arch/SKILL.md +50 -0
package/dist/config.js
ADDED
|
@@ -0,0 +1,130 @@
|
|
|
1
|
+
import * as fs from 'node:fs';
|
|
2
|
+
import * as path from 'node:path';
|
|
3
|
+
import { resolveRepoRoot } from './git-history.js';
|
|
4
|
+
import { DEFAULT_MODEL as DEFAULT_EMBEDDING_MODEL } from './embedder.js';
|
|
5
|
+
export const DEFAULT_CONFIG_FILE = 'repo-arch.config.json';
|
|
6
|
+
export const DEFAULT_RUNS_DIR = '.repo-arch/runs';
|
|
7
|
+
export const DEFAULT_TRAINING_MODEL = 'Qwen/Qwen2.5-Coder-1.5B-Instruct';
|
|
8
|
+
export const DEFAULT_TRAINING_ITERS = 100;
|
|
9
|
+
export const DEFAULT_TRAINING_LEARNING_RATE = 1e-5;
|
|
10
|
+
export function defaultConfigFile() {
|
|
11
|
+
return {
|
|
12
|
+
schemaVersion: 1,
|
|
13
|
+
flow: {
|
|
14
|
+
runsDir: DEFAULT_RUNS_DIR,
|
|
15
|
+
},
|
|
16
|
+
cards: {
|
|
17
|
+
minConfidence: 0.3,
|
|
18
|
+
maxCards: 20,
|
|
19
|
+
},
|
|
20
|
+
index: {
|
|
21
|
+
model: DEFAULT_EMBEDDING_MODEL,
|
|
22
|
+
},
|
|
23
|
+
training: {
|
|
24
|
+
model: DEFAULT_TRAINING_MODEL,
|
|
25
|
+
iters: DEFAULT_TRAINING_ITERS,
|
|
26
|
+
learningRate: DEFAULT_TRAINING_LEARNING_RATE,
|
|
27
|
+
run: false,
|
|
28
|
+
includeRejected: false,
|
|
29
|
+
},
|
|
30
|
+
};
|
|
31
|
+
}
|
|
32
|
+
function isObject(value) {
|
|
33
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
34
|
+
}
|
|
35
|
+
function readJsonFile(filePath) {
|
|
36
|
+
const raw = fs.readFileSync(filePath, 'utf8');
|
|
37
|
+
const parsed = JSON.parse(raw);
|
|
38
|
+
if (!isObject(parsed)) {
|
|
39
|
+
throw new Error(`Invalid config file: ${filePath}`);
|
|
40
|
+
}
|
|
41
|
+
return parsed;
|
|
42
|
+
}
|
|
43
|
+
function resolveMaybeRelative(baseDir, value) {
|
|
44
|
+
return path.isAbsolute(value) ? value : path.resolve(baseDir, value);
|
|
45
|
+
}
|
|
46
|
+
function mergeConfig(overrides) {
|
|
47
|
+
const base = defaultConfigFile();
|
|
48
|
+
return {
|
|
49
|
+
schemaVersion: 1,
|
|
50
|
+
flow: {
|
|
51
|
+
...base.flow,
|
|
52
|
+
...overrides?.flow,
|
|
53
|
+
},
|
|
54
|
+
cards: {
|
|
55
|
+
...base.cards,
|
|
56
|
+
...overrides?.cards,
|
|
57
|
+
},
|
|
58
|
+
index: {
|
|
59
|
+
...base.index,
|
|
60
|
+
...overrides?.index,
|
|
61
|
+
},
|
|
62
|
+
training: {
|
|
63
|
+
...base.training,
|
|
64
|
+
...overrides?.training,
|
|
65
|
+
},
|
|
66
|
+
};
|
|
67
|
+
}
|
|
68
|
+
export function findConfigPath(repoRoot, explicitPath) {
|
|
69
|
+
if (explicitPath) {
|
|
70
|
+
const resolved = path.isAbsolute(explicitPath) ? explicitPath : path.resolve(repoRoot, explicitPath);
|
|
71
|
+
if (!fs.existsSync(resolved)) {
|
|
72
|
+
throw new Error(`Config file not found: ${resolved}`);
|
|
73
|
+
}
|
|
74
|
+
return resolved;
|
|
75
|
+
}
|
|
76
|
+
const candidates = [
|
|
77
|
+
path.join(repoRoot, DEFAULT_CONFIG_FILE),
|
|
78
|
+
path.join(repoRoot, '.repo-arch', 'config.json'),
|
|
79
|
+
];
|
|
80
|
+
for (const candidate of candidates) {
|
|
81
|
+
if (fs.existsSync(candidate))
|
|
82
|
+
return candidate;
|
|
83
|
+
}
|
|
84
|
+
return null;
|
|
85
|
+
}
|
|
86
|
+
export function loadRepoArchConfig(options = {}) {
|
|
87
|
+
const repoRoot = resolveRepoRoot(options.repoPath);
|
|
88
|
+
const configPath = findConfigPath(repoRoot, options.configPath);
|
|
89
|
+
const raw = configPath ? readJsonFile(configPath) : defaultConfigFile();
|
|
90
|
+
const merged = mergeConfig(raw);
|
|
91
|
+
const configBase = configPath ? path.dirname(configPath) : repoRoot;
|
|
92
|
+
return {
|
|
93
|
+
repoRoot,
|
|
94
|
+
configPath,
|
|
95
|
+
raw,
|
|
96
|
+
flow: {
|
|
97
|
+
runsDir: resolveMaybeRelative(configBase, merged.flow?.runsDir ?? DEFAULT_RUNS_DIR),
|
|
98
|
+
},
|
|
99
|
+
cards: {
|
|
100
|
+
minConfidence: merged.cards?.minConfidence ?? 0.3,
|
|
101
|
+
maxCards: merged.cards?.maxCards ?? 20,
|
|
102
|
+
},
|
|
103
|
+
index: {
|
|
104
|
+
model: merged.index?.model ?? DEFAULT_EMBEDDING_MODEL,
|
|
105
|
+
},
|
|
106
|
+
training: {
|
|
107
|
+
model: merged.training?.model ?? DEFAULT_TRAINING_MODEL,
|
|
108
|
+
iters: merged.training?.iters ?? DEFAULT_TRAINING_ITERS,
|
|
109
|
+
learningRate: merged.training?.learningRate ?? DEFAULT_TRAINING_LEARNING_RATE,
|
|
110
|
+
run: merged.training?.run ?? false,
|
|
111
|
+
includeRejected: merged.training?.includeRejected ?? false,
|
|
112
|
+
},
|
|
113
|
+
};
|
|
114
|
+
}
|
|
115
|
+
export function writeRepoArchConfigTemplate(outPath) {
|
|
116
|
+
const config = defaultConfigFile();
|
|
117
|
+
fs.mkdirSync(path.dirname(outPath), { recursive: true });
|
|
118
|
+
fs.writeFileSync(outPath, JSON.stringify(config, null, 2) + '\n', 'utf8');
|
|
119
|
+
return config;
|
|
120
|
+
}
|
|
121
|
+
export function configSummary(config) {
|
|
122
|
+
return [
|
|
123
|
+
`config: ${config.configPath ?? '(defaults)'}`,
|
|
124
|
+
`runsDir: ${config.flow.runsDir}`,
|
|
125
|
+
`cards: minConfidence=${config.cards.minConfidence}, maxCards=${config.cards.maxCards}`,
|
|
126
|
+
`index: ${config.index.model}`,
|
|
127
|
+
`training: ${config.training.model} / iters=${config.training.iters} / lr=${config.training.learningRate}`,
|
|
128
|
+
].join('\n');
|
|
129
|
+
}
|
|
130
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
|
package/dist/embedder.js
CHANGED
|
@@ -17,12 +17,14 @@ function cacheKey(repoRoot, headSha) {
|
|
|
17
17
|
return crypto.createHash('sha256').update(JSON.stringify({ repoRoot, headSha, model: DEFAULT_MODEL })).digest('hex');
|
|
18
18
|
}
|
|
19
19
|
export async function loadExtractor(config = {}) {
|
|
20
|
-
|
|
21
|
-
|
|
20
|
+
const model = config.model ?? DEFAULT_MODEL;
|
|
21
|
+
if (extractor && extractor.model === model)
|
|
22
|
+
return extractor.pipe;
|
|
22
23
|
try {
|
|
23
24
|
const { pipeline } = await import('@huggingface/transformers');
|
|
24
|
-
|
|
25
|
-
|
|
25
|
+
const pipe = await pipeline('feature-extraction', model);
|
|
26
|
+
extractor = { model, pipe };
|
|
27
|
+
return pipe;
|
|
26
28
|
}
|
|
27
29
|
catch (error) {
|
|
28
30
|
throw new Error(`Failed to load embedding model. Install with: npm install @huggingface/transformers\n ${error instanceof Error ? error.message : String(error)}`);
|
|
@@ -59,8 +61,8 @@ export async function buildIndex(entries, options = {}) {
|
|
|
59
61
|
const pipe = await loadExtractor(options);
|
|
60
62
|
const vectorEntries = [];
|
|
61
63
|
for (const entry of entries) {
|
|
62
|
-
const
|
|
63
|
-
vectorEntries.push({ ...entry, embedding });
|
|
64
|
+
const result = await pipe(entry.text, { pooling: 'mean', normalize: true });
|
|
65
|
+
vectorEntries.push({ ...entry, embedding: Array.from(result.data) });
|
|
64
66
|
}
|
|
65
67
|
const index = {
|
|
66
68
|
model: options.model ?? DEFAULT_MODEL,
|
package/dist/embedder.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../src/embedder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,aAAa,CAAC;AACtC,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE/D,MAAM,CAAC,MAAM,aAAa,GAAG,yBAAyB,CAAC;AACvD,MAAM,CAAC,MAAM,aAAa,GAAG,GAAG,CAAC;AAsBjC,IAAI,SAAS,
|
|
1
|
+
{"version":3,"file":"embedder.js","sourceRoot":"","sources":["../src/embedder.ts"],"names":[],"mappings":"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"}
|
package/dist/flow.d.ts
ADDED
|
@@ -0,0 +1,102 @@
|
|
|
1
|
+
import { type MineHistoryResult } from './git-history.js';
|
|
2
|
+
import { type InsightCard } from './cards.js';
|
|
3
|
+
import { type DatasetResult, type TrainPlan } from './training.js';
|
|
4
|
+
import { type EvalReport } from './eval.js';
|
|
5
|
+
import { type ResolvedRepoArchConfig } from './config.js';
|
|
6
|
+
export type FlowRunOptions = {
|
|
7
|
+
repoPath?: string;
|
|
8
|
+
configPath?: string;
|
|
9
|
+
outPath?: string;
|
|
10
|
+
full?: boolean;
|
|
11
|
+
includeRejected?: boolean;
|
|
12
|
+
minConfidence?: number;
|
|
13
|
+
maxCards?: number;
|
|
14
|
+
model?: string;
|
|
15
|
+
iters?: number;
|
|
16
|
+
learningRate?: number;
|
|
17
|
+
};
|
|
18
|
+
export type FlowStageStatus = 'ok' | 'skipped' | 'failed';
|
|
19
|
+
export type FlowStageResult = {
|
|
20
|
+
name: string;
|
|
21
|
+
status: FlowStageStatus;
|
|
22
|
+
startedAt: string;
|
|
23
|
+
finishedAt: string;
|
|
24
|
+
artifact?: string;
|
|
25
|
+
details?: Record<string, string | number | boolean | null>;
|
|
26
|
+
error?: string;
|
|
27
|
+
};
|
|
28
|
+
export type FlowManifest = {
|
|
29
|
+
schemaVersion: 1;
|
|
30
|
+
tool: {
|
|
31
|
+
name: 'repo-arch';
|
|
32
|
+
version: string;
|
|
33
|
+
};
|
|
34
|
+
run: {
|
|
35
|
+
id: string;
|
|
36
|
+
repoRoot: string;
|
|
37
|
+
headSha: string;
|
|
38
|
+
configPath: string | null;
|
|
39
|
+
configHash: string;
|
|
40
|
+
startedAt: string;
|
|
41
|
+
finishedAt?: string;
|
|
42
|
+
full: boolean;
|
|
43
|
+
};
|
|
44
|
+
config: {
|
|
45
|
+
runsDir: string;
|
|
46
|
+
cards: ResolvedRepoArchConfig['cards'];
|
|
47
|
+
index: ResolvedRepoArchConfig['index'];
|
|
48
|
+
training: ResolvedRepoArchConfig['training'];
|
|
49
|
+
};
|
|
50
|
+
stages: FlowStageResult[];
|
|
51
|
+
artifacts: Record<string, string>;
|
|
52
|
+
summary: {
|
|
53
|
+
commits: number;
|
|
54
|
+
cards: number;
|
|
55
|
+
acceptedCards: number;
|
|
56
|
+
pendingCards: number;
|
|
57
|
+
rejectedCards: number;
|
|
58
|
+
examples: number;
|
|
59
|
+
keywordHitRate?: number;
|
|
60
|
+
embeddingHitRate?: number;
|
|
61
|
+
bestStrategy?: string;
|
|
62
|
+
valLoss?: number;
|
|
63
|
+
};
|
|
64
|
+
};
|
|
65
|
+
export type FlowRunResult = {
|
|
66
|
+
runDir: string;
|
|
67
|
+
manifestPath: string;
|
|
68
|
+
manifest: FlowManifest;
|
|
69
|
+
config: ResolvedRepoArchConfig;
|
|
70
|
+
history: MineHistoryResult;
|
|
71
|
+
cards: InsightCard[];
|
|
72
|
+
dataset: DatasetResult;
|
|
73
|
+
trainPlan: TrainPlan;
|
|
74
|
+
evalReport?: EvalReport;
|
|
75
|
+
};
|
|
76
|
+
export type FlowInspectResult = {
|
|
77
|
+
runDir: string;
|
|
78
|
+
manifestPath: string;
|
|
79
|
+
manifest: FlowManifest;
|
|
80
|
+
};
|
|
81
|
+
export declare function buildFlowManifest(params: {
|
|
82
|
+
config: ResolvedRepoArchConfig;
|
|
83
|
+
runId: string;
|
|
84
|
+
startedAt: string;
|
|
85
|
+
finishedAt?: string;
|
|
86
|
+
full: boolean;
|
|
87
|
+
stages: FlowStageResult[];
|
|
88
|
+
cards: InsightCard[];
|
|
89
|
+
dataset: DatasetResult;
|
|
90
|
+
trainPlan: TrainPlan;
|
|
91
|
+
evalReport?: EvalReport;
|
|
92
|
+
history: MineHistoryResult;
|
|
93
|
+
runDir: string;
|
|
94
|
+
}): FlowManifest;
|
|
95
|
+
export declare function runFlow(options?: FlowRunOptions): Promise<FlowRunResult>;
|
|
96
|
+
export declare function inspectFlow(options?: {
|
|
97
|
+
repoPath?: string;
|
|
98
|
+
configPath?: string;
|
|
99
|
+
runId?: string;
|
|
100
|
+
}): FlowInspectResult;
|
|
101
|
+
export declare function formatFlowRun(result: FlowRunResult): string;
|
|
102
|
+
export declare function formatFlowInspect(result: FlowInspectResult): string;
|