yuangs 1.3.71 → 1.3.73
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.js +6 -3
- package/dist/cli.js.map +1 -1
- package/dist/commands/capabilityCommands.d.ts +2 -0
- package/dist/commands/capabilityCommands.js +123 -0
- package/dist/commands/capabilityCommands.js.map +1 -0
- package/dist/commands/contextBuffer.d.ts +1 -1
- package/dist/commands/contextBuffer.js +4 -2
- package/dist/commands/contextBuffer.js.map +1 -1
- package/dist/commands/handleAIChat.js +46 -10
- package/dist/commands/handleAIChat.js.map +1 -1
- package/dist/commands/handleAICommand.d.ts +2 -1
- package/dist/commands/handleAICommand.js +46 -19
- package/dist/commands/handleAICommand.js.map +1 -1
- package/dist/core/capabilities.d.ts +23 -0
- package/dist/core/capabilities.js +64 -0
- package/dist/core/capabilities.js.map +1 -0
- package/dist/core/capabilityInference.d.ts +2 -0
- package/dist/core/capabilityInference.js +22 -0
- package/dist/core/capabilityInference.js.map +1 -0
- package/dist/core/capabilitySystem.d.ts +17 -0
- package/dist/core/capabilitySystem.js +116 -0
- package/dist/core/capabilitySystem.js.map +1 -0
- package/dist/core/configMerge.d.ts +19 -0
- package/dist/core/configMerge.js +93 -0
- package/dist/core/configMerge.js.map +1 -0
- package/dist/core/executionRecord.d.ts +39 -0
- package/dist/core/executionRecord.js +44 -0
- package/dist/core/executionRecord.js.map +1 -0
- package/dist/core/executionStore.d.ts +7 -0
- package/dist/core/executionStore.js +93 -0
- package/dist/core/executionStore.js.map +1 -0
- package/dist/core/modelMatcher.d.ts +28 -0
- package/dist/core/modelMatcher.js +50 -0
- package/dist/core/modelMatcher.js.map +1 -0
- package/dist/core/replayEngine.d.ts +19 -0
- package/dist/core/replayEngine.js +98 -0
- package/dist/core/replayEngine.js.map +1 -0
- package/package.json +1 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handleAICommand.js","sourceRoot":"","sources":["../../src/commands/handleAICommand.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"handleAICommand.js","sourceRoot":"","sources":["../../src/commands/handleAICommand.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
export declare enum AtomicCapability {
|
|
2
|
+
TEXT_GENERATION = "text_generation",
|
|
3
|
+
CODE_GENERATION = "code_generation",
|
|
4
|
+
TOOL_CALLING = "tool_calling",
|
|
5
|
+
LONG_CONTEXT = "long_context",
|
|
6
|
+
REASONING = "reasoning",
|
|
7
|
+
STREAMING = "streaming"
|
|
8
|
+
}
|
|
9
|
+
export interface CompositeCapability {
|
|
10
|
+
name: string;
|
|
11
|
+
composedOf: AtomicCapability[];
|
|
12
|
+
}
|
|
13
|
+
export declare const COMPOSITE_CAPABILITIES: CompositeCapability[];
|
|
14
|
+
export declare enum ConstraintCapability {
|
|
15
|
+
PREFER_DETERMINISTIC = "prefer_deterministic",
|
|
16
|
+
LOW_COST = "low_cost",
|
|
17
|
+
FAST_RESPONSE = "fast_response"
|
|
18
|
+
}
|
|
19
|
+
export declare const CAPABILITY_VERSION = "1.0";
|
|
20
|
+
export declare function isAtomicCapability(value: string): value is AtomicCapability;
|
|
21
|
+
export declare function isConstraintCapability(value: string): value is ConstraintCapability;
|
|
22
|
+
export declare function resolveCompositeCapability(name: string): AtomicCapability[];
|
|
23
|
+
export declare function expandCapabilities(capabilities: Array<AtomicCapability | string>): Set<AtomicCapability>;
|
|
@@ -0,0 +1,64 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.CAPABILITY_VERSION = exports.ConstraintCapability = exports.COMPOSITE_CAPABILITIES = exports.AtomicCapability = void 0;
|
|
4
|
+
exports.isAtomicCapability = isAtomicCapability;
|
|
5
|
+
exports.isConstraintCapability = isConstraintCapability;
|
|
6
|
+
exports.resolveCompositeCapability = resolveCompositeCapability;
|
|
7
|
+
exports.expandCapabilities = expandCapabilities;
|
|
8
|
+
var AtomicCapability;
|
|
9
|
+
(function (AtomicCapability) {
|
|
10
|
+
AtomicCapability["TEXT_GENERATION"] = "text_generation";
|
|
11
|
+
AtomicCapability["CODE_GENERATION"] = "code_generation";
|
|
12
|
+
AtomicCapability["TOOL_CALLING"] = "tool_calling";
|
|
13
|
+
AtomicCapability["LONG_CONTEXT"] = "long_context";
|
|
14
|
+
AtomicCapability["REASONING"] = "reasoning";
|
|
15
|
+
AtomicCapability["STREAMING"] = "streaming";
|
|
16
|
+
})(AtomicCapability || (exports.AtomicCapability = AtomicCapability = {}));
|
|
17
|
+
exports.COMPOSITE_CAPABILITIES = [
|
|
18
|
+
{
|
|
19
|
+
name: 'interactive_agent',
|
|
20
|
+
composedOf: [AtomicCapability.TOOL_CALLING, AtomicCapability.REASONING],
|
|
21
|
+
},
|
|
22
|
+
{
|
|
23
|
+
name: 'large_repo_analysis',
|
|
24
|
+
composedOf: [AtomicCapability.LONG_CONTEXT, AtomicCapability.REASONING],
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
name: 'safe_code_editing',
|
|
28
|
+
composedOf: [AtomicCapability.CODE_GENERATION, AtomicCapability.REASONING],
|
|
29
|
+
},
|
|
30
|
+
];
|
|
31
|
+
var ConstraintCapability;
|
|
32
|
+
(function (ConstraintCapability) {
|
|
33
|
+
ConstraintCapability["PREFER_DETERMINISTIC"] = "prefer_deterministic";
|
|
34
|
+
ConstraintCapability["LOW_COST"] = "low_cost";
|
|
35
|
+
ConstraintCapability["FAST_RESPONSE"] = "fast_response";
|
|
36
|
+
})(ConstraintCapability || (exports.ConstraintCapability = ConstraintCapability = {}));
|
|
37
|
+
exports.CAPABILITY_VERSION = '1.0';
|
|
38
|
+
function isAtomicCapability(value) {
|
|
39
|
+
return Object.values(AtomicCapability).includes(value);
|
|
40
|
+
}
|
|
41
|
+
function isConstraintCapability(value) {
|
|
42
|
+
return Object.values(ConstraintCapability).includes(value);
|
|
43
|
+
}
|
|
44
|
+
function resolveCompositeCapability(name) {
|
|
45
|
+
const composite = exports.COMPOSITE_CAPABILITIES.find(c => c.name === name);
|
|
46
|
+
if (!composite) {
|
|
47
|
+
throw new Error(`Unknown composite capability: ${name}`);
|
|
48
|
+
}
|
|
49
|
+
return composite.composedOf;
|
|
50
|
+
}
|
|
51
|
+
function expandCapabilities(capabilities) {
|
|
52
|
+
const result = new Set();
|
|
53
|
+
for (const cap of capabilities) {
|
|
54
|
+
if (isAtomicCapability(cap)) {
|
|
55
|
+
result.add(cap);
|
|
56
|
+
}
|
|
57
|
+
else {
|
|
58
|
+
const atomicCaps = resolveCompositeCapability(cap);
|
|
59
|
+
atomicCaps.forEach(c => result.add(c));
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return result;
|
|
63
|
+
}
|
|
64
|
+
//# sourceMappingURL=capabilities.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilities.js","sourceRoot":"","sources":["../../src/core/capabilities.ts"],"names":[],"mappings":";;;AAqCA,gDAEC;AAED,wDAEC;AAED,gEAMC;AAED,gDAeC;AApED,IAAY,gBAOX;AAPD,WAAY,gBAAgB;IAC1B,uDAAmC,CAAA;IACnC,uDAAmC,CAAA;IACnC,iDAA6B,CAAA;IAC7B,iDAA6B,CAAA;IAC7B,2CAAuB,CAAA;IACvB,2CAAuB,CAAA;AACzB,CAAC,EAPW,gBAAgB,gCAAhB,gBAAgB,QAO3B;AAOY,QAAA,sBAAsB,GAA0B;IAC3D;QACE,IAAI,EAAE,mBAAmB;QACzB,UAAU,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC;KACxE;IACD;QACE,IAAI,EAAE,qBAAqB;QAC3B,UAAU,EAAE,CAAC,gBAAgB,CAAC,YAAY,EAAE,gBAAgB,CAAC,SAAS,CAAC;KACxE;IACD;QACE,IAAI,EAAE,mBAAmB;QACzB,UAAU,EAAE,CAAC,gBAAgB,CAAC,eAAe,EAAE,gBAAgB,CAAC,SAAS,CAAC;KAC3E;CACF,CAAC;AAEF,IAAY,oBAIX;AAJD,WAAY,oBAAoB;IAC9B,qEAA6C,CAAA;IAC7C,6CAAqB,CAAA;IACrB,uDAA+B,CAAA;AACjC,CAAC,EAJW,oBAAoB,oCAApB,oBAAoB,QAI/B;AAEY,QAAA,kBAAkB,GAAG,KAAK,CAAC;AAExC,SAAgB,kBAAkB,CAAC,KAAa;IAC9C,OAAO,MAAM,CAAC,MAAM,CAAC,gBAAgB,CAAC,CAAC,QAAQ,CAAC,KAAyB,CAAC,CAAC;AAC7E,CAAC;AAED,SAAgB,sBAAsB,CAAC,KAAa;IAClD,OAAO,MAAM,CAAC,MAAM,CAAC,oBAAoB,CAAC,CAAC,QAAQ,CAAC,KAA6B,CAAC,CAAC;AACrF,CAAC;AAED,SAAgB,0BAA0B,CAAC,IAAY;IACrD,MAAM,SAAS,GAAG,8BAAsB,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;IACpE,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,iCAAiC,IAAI,EAAE,CAAC,CAAC;IAC3D,CAAC;IACD,OAAO,SAAS,CAAC,UAAU,CAAC;AAC9B,CAAC;AAED,SAAgB,kBAAkB,CAChC,YAA8C;IAE9C,MAAM,MAAM,GAAG,IAAI,GAAG,EAAoB,CAAC;IAE3C,KAAK,MAAM,GAAG,IAAI,YAAY,EAAE,CAAC;QAC/B,IAAI,kBAAkB,CAAC,GAAG,CAAC,EAAE,CAAC;YAC5B,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;QAClB,CAAC;aAAM,CAAC;YACN,MAAM,UAAU,GAAG,0BAA0B,CAAC,GAAG,CAAC,CAAC;YACnD,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC;QACzC,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.inferCapabilityRequirement = inferCapabilityRequirement;
|
|
4
|
+
const capabilities_1 = require("../core/capabilities");
|
|
5
|
+
function inferCapabilityRequirement(userInput) {
|
|
6
|
+
const required = [];
|
|
7
|
+
const input = userInput.toLowerCase();
|
|
8
|
+
if (input.includes('代码') || input.includes('script') || input.includes('文件') || input.includes('create') || input.includes('write')) {
|
|
9
|
+
required.push(capabilities_1.AtomicCapability.CODE_GENERATION);
|
|
10
|
+
}
|
|
11
|
+
if (input.includes('分析') || input.includes('理解') || input.includes('解释') || input.includes('推理')) {
|
|
12
|
+
required.push(capabilities_1.AtomicCapability.REASONING);
|
|
13
|
+
}
|
|
14
|
+
if (input.includes('长') || input.includes('large') || input.includes('仓库') || input.includes('目录') || input.includes('所有文件')) {
|
|
15
|
+
required.push(capabilities_1.AtomicCapability.LONG_CONTEXT);
|
|
16
|
+
}
|
|
17
|
+
return {
|
|
18
|
+
required: Array.from(new Set(required)),
|
|
19
|
+
preferred: [],
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=capabilityInference.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilityInference.js","sourceRoot":"","sources":["../../src/core/capabilityInference.ts"],"names":[],"mappings":";;AAGA,gEAqBC;AAxBD,uDAAwD;AAGxD,SAAgB,0BAA0B,CAAC,SAAiB;IAC1D,MAAM,QAAQ,GAAuB,EAAE,CAAC;IAExC,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,EAAE,CAAC;IAEtC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;QACpI,QAAQ,CAAC,IAAI,CAAC,+BAAgB,CAAC,eAAe,CAAC,CAAC;IAClD,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;QACjG,QAAQ,CAAC,IAAI,CAAC,+BAAgB,CAAC,SAAS,CAAC,CAAC;IAC5C,CAAC;IAED,IAAI,KAAK,CAAC,QAAQ,CAAC,GAAG,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,MAAM,CAAC,EAAE,CAAC;QAC7H,QAAQ,CAAC,IAAI,CAAC,+BAAgB,CAAC,YAAY,CAAC,CAAC;IAC/C,CAAC;IAED,OAAO;QACL,QAAQ,EAAE,KAAK,CAAC,IAAI,CAAC,IAAI,GAAG,CAAC,QAAQ,CAAC,CAAC;QACvC,SAAS,EAAE,EAAE;KACd,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { CapabilityRequirement, ModelCapabilities, CapabilityMatchResult } from './modelMatcher';
|
|
2
|
+
import { MergedConfig } from './configMerge';
|
|
3
|
+
import { ReplayOptions, ReplayResult } from './replayEngine';
|
|
4
|
+
export declare class CapabilitySystem {
|
|
5
|
+
private primaryModels;
|
|
6
|
+
private fallbackModels;
|
|
7
|
+
constructor();
|
|
8
|
+
private initializeDefaultModels;
|
|
9
|
+
matchCapability(requirement: CapabilityRequirement): CapabilityMatchResult;
|
|
10
|
+
loadMergedConfig(): MergedConfig;
|
|
11
|
+
loadCustomModels(): ModelCapabilities[];
|
|
12
|
+
getAllModels(): ModelCapabilities[];
|
|
13
|
+
createAndSaveExecutionRecord(commandName: string, requirement: CapabilityRequirement, matchResult: CapabilityMatchResult, command?: string): string;
|
|
14
|
+
replayExecution(recordId: string, options: ReplayOptions): Promise<ReplayResult>;
|
|
15
|
+
explainConfig(): string;
|
|
16
|
+
}
|
|
17
|
+
export declare const capabilitySystem: CapabilitySystem;
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.capabilitySystem = exports.CapabilitySystem = void 0;
|
|
4
|
+
const modelMatcher_1 = require("./modelMatcher");
|
|
5
|
+
const configMerge_1 = require("./configMerge");
|
|
6
|
+
const executionRecord_1 = require("./executionRecord");
|
|
7
|
+
const executionStore_1 = require("./executionStore");
|
|
8
|
+
const replayEngine_1 = require("./replayEngine");
|
|
9
|
+
class CapabilitySystem {
|
|
10
|
+
primaryModels = [];
|
|
11
|
+
fallbackModels = [];
|
|
12
|
+
constructor() {
|
|
13
|
+
this.initializeDefaultModels();
|
|
14
|
+
}
|
|
15
|
+
initializeDefaultModels() {
|
|
16
|
+
this.primaryModels = [
|
|
17
|
+
{
|
|
18
|
+
name: 'gemini-pro-latest',
|
|
19
|
+
provider: 'google',
|
|
20
|
+
atomicCapabilities: [
|
|
21
|
+
require('./capabilities').AtomicCapability.TEXT_GENERATION,
|
|
22
|
+
require('./capabilities').AtomicCapability.CODE_GENERATION,
|
|
23
|
+
require('./capabilities').AtomicCapability.REASONING,
|
|
24
|
+
require('./capabilities').AtomicCapability.LONG_CONTEXT,
|
|
25
|
+
require('./capabilities').AtomicCapability.STREAMING,
|
|
26
|
+
],
|
|
27
|
+
contextWindow: 128000,
|
|
28
|
+
costProfile: 'high',
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
name: 'gemini-flash-latest',
|
|
32
|
+
provider: 'google',
|
|
33
|
+
atomicCapabilities: [
|
|
34
|
+
require('./capabilities').AtomicCapability.TEXT_GENERATION,
|
|
35
|
+
require('./capabilities').AtomicCapability.CODE_GENERATION,
|
|
36
|
+
require('./capabilities').AtomicCapability.REASONING,
|
|
37
|
+
require('./capabilities').AtomicCapability.STREAMING,
|
|
38
|
+
],
|
|
39
|
+
contextWindow: 32000,
|
|
40
|
+
costProfile: 'medium',
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
name: 'Assistant',
|
|
44
|
+
provider: 'aiproxy',
|
|
45
|
+
atomicCapabilities: [
|
|
46
|
+
require('./capabilities').AtomicCapability.TEXT_GENERATION,
|
|
47
|
+
require('./capabilities').AtomicCapability.CODE_GENERATION,
|
|
48
|
+
require('./capabilities').AtomicCapability.REASONING,
|
|
49
|
+
],
|
|
50
|
+
contextWindow: 8000,
|
|
51
|
+
costProfile: 'low',
|
|
52
|
+
},
|
|
53
|
+
];
|
|
54
|
+
this.fallbackModels = [
|
|
55
|
+
{
|
|
56
|
+
name: 'gemini-flash-lite-latest',
|
|
57
|
+
provider: 'google',
|
|
58
|
+
atomicCapabilities: [
|
|
59
|
+
require('./capabilities').AtomicCapability.TEXT_GENERATION,
|
|
60
|
+
require('./capabilities').AtomicCapability.REASONING,
|
|
61
|
+
],
|
|
62
|
+
contextWindow: 16000,
|
|
63
|
+
costProfile: 'low',
|
|
64
|
+
},
|
|
65
|
+
];
|
|
66
|
+
}
|
|
67
|
+
matchCapability(requirement) {
|
|
68
|
+
const allModels = this.getAllModels();
|
|
69
|
+
const primaryModels = [...this.primaryModels, ...this.loadCustomModels()];
|
|
70
|
+
return (0, modelMatcher_1.matchModelWithFallback)(primaryModels, this.fallbackModels, requirement);
|
|
71
|
+
}
|
|
72
|
+
loadMergedConfig() {
|
|
73
|
+
const builtin = {
|
|
74
|
+
aiProxyUrl: 'https://aiproxy.want.biz/v1/chat/completions',
|
|
75
|
+
defaultModel: 'Assistant',
|
|
76
|
+
accountType: 'free',
|
|
77
|
+
};
|
|
78
|
+
const filePaths = (0, configMerge_1.getConfigFilePaths)();
|
|
79
|
+
const projectConfig = filePaths.project ? (0, configMerge_1.loadConfigAt)(filePaths.project) : null;
|
|
80
|
+
const userGlobal = (0, configMerge_1.loadConfigAt)(filePaths.userGlobal);
|
|
81
|
+
return (0, configMerge_1.mergeConfigs)(builtin, userGlobal, projectConfig, null);
|
|
82
|
+
}
|
|
83
|
+
loadCustomModels() {
|
|
84
|
+
const filePaths = (0, configMerge_1.getConfigFilePaths)();
|
|
85
|
+
const projectConfig = filePaths.project ? (0, configMerge_1.loadConfigAt)(filePaths.project) : null;
|
|
86
|
+
const userGlobal = (0, configMerge_1.loadConfigAt)(filePaths.userGlobal);
|
|
87
|
+
const customModelsArray = [];
|
|
88
|
+
if (userGlobal?.models && Array.isArray(userGlobal.models)) {
|
|
89
|
+
customModelsArray.push(...userGlobal.models);
|
|
90
|
+
}
|
|
91
|
+
if (projectConfig?.models && Array.isArray(projectConfig.models)) {
|
|
92
|
+
customModelsArray.push(...projectConfig.models);
|
|
93
|
+
}
|
|
94
|
+
return customModelsArray;
|
|
95
|
+
}
|
|
96
|
+
getAllModels() {
|
|
97
|
+
const customModels = this.loadCustomModels();
|
|
98
|
+
return [...this.primaryModels, ...this.fallbackModels, ...customModels];
|
|
99
|
+
}
|
|
100
|
+
createAndSaveExecutionRecord(commandName, requirement, matchResult, command) {
|
|
101
|
+
const config = this.loadMergedConfig();
|
|
102
|
+
const record = (0, executionRecord_1.createExecutionRecord)(commandName, requirement, config, matchResult, { success: matchResult.selected !== null }, command);
|
|
103
|
+
const filePath = (0, executionStore_1.saveExecutionRecord)(record);
|
|
104
|
+
return record.id;
|
|
105
|
+
}
|
|
106
|
+
replayExecution(recordId, options) {
|
|
107
|
+
return replayEngine_1.replayEngine.replay(recordId, options);
|
|
108
|
+
}
|
|
109
|
+
explainConfig() {
|
|
110
|
+
const config = this.loadMergedConfig();
|
|
111
|
+
return (0, configMerge_1.dumpConfigSnapshot)(config);
|
|
112
|
+
}
|
|
113
|
+
}
|
|
114
|
+
exports.CapabilitySystem = CapabilitySystem;
|
|
115
|
+
exports.capabilitySystem = new CapabilitySystem();
|
|
116
|
+
//# sourceMappingURL=capabilitySystem.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"capabilitySystem.js","sourceRoot":"","sources":["../../src/core/capabilitySystem.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
export type ConfigSource = 'built-in' | 'user-global' | 'project' | 'command-override';
|
|
2
|
+
export interface ConfigFieldSource<T = unknown> {
|
|
3
|
+
value: T;
|
|
4
|
+
source: ConfigSource;
|
|
5
|
+
filePath?: string;
|
|
6
|
+
}
|
|
7
|
+
export interface MergedConfig {
|
|
8
|
+
aiProxyUrl: ConfigFieldSource<string>;
|
|
9
|
+
defaultModel: ConfigFieldSource<string>;
|
|
10
|
+
accountType: ConfigFieldSource<'free' | 'pro'>;
|
|
11
|
+
[key: string]: ConfigFieldSource<unknown>;
|
|
12
|
+
}
|
|
13
|
+
export declare function loadConfigAt(filePath: string): Record<string, unknown> | null;
|
|
14
|
+
export declare function mergeConfigs(builtin: Record<string, unknown>, userGlobal: Record<string, unknown> | null, project: Record<string, unknown> | null, commandOverride: Record<string, unknown> | null): MergedConfig;
|
|
15
|
+
export declare function dumpConfigSnapshot(config: MergedConfig): string;
|
|
16
|
+
export declare function getConfigFilePaths(): {
|
|
17
|
+
userGlobal: string;
|
|
18
|
+
project: string | null;
|
|
19
|
+
};
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.loadConfigAt = loadConfigAt;
|
|
7
|
+
exports.mergeConfigs = mergeConfigs;
|
|
8
|
+
exports.dumpConfigSnapshot = dumpConfigSnapshot;
|
|
9
|
+
exports.getConfigFilePaths = getConfigFilePaths;
|
|
10
|
+
const fs_1 = __importDefault(require("fs"));
|
|
11
|
+
const path_1 = __importDefault(require("path"));
|
|
12
|
+
const os_1 = __importDefault(require("os"));
|
|
13
|
+
const js_yaml_1 = __importDefault(require("js-yaml"));
|
|
14
|
+
function loadConfigAt(filePath) {
|
|
15
|
+
if (!fs_1.default.existsSync(filePath)) {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
try {
|
|
19
|
+
const content = fs_1.default.readFileSync(filePath, 'utf8');
|
|
20
|
+
if (filePath.endsWith('.yaml') || filePath.endsWith('.yml')) {
|
|
21
|
+
return js_yaml_1.default.load(content);
|
|
22
|
+
}
|
|
23
|
+
return JSON.parse(content);
|
|
24
|
+
}
|
|
25
|
+
catch (error) {
|
|
26
|
+
console.warn(`Failed to load config from ${filePath}:`, error);
|
|
27
|
+
return null;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
function mergeConfigs(builtin, userGlobal, project, commandOverride) {
|
|
31
|
+
const merged = {};
|
|
32
|
+
const addField = (key, value, source, filePath) => {
|
|
33
|
+
merged[key] = { value, source, filePath };
|
|
34
|
+
};
|
|
35
|
+
Object.entries(builtin).forEach(([key, value]) => {
|
|
36
|
+
addField(key, value, 'built-in');
|
|
37
|
+
});
|
|
38
|
+
if (userGlobal) {
|
|
39
|
+
Object.entries(userGlobal).forEach(([key, value]) => {
|
|
40
|
+
addField(key, value, 'user-global', path_1.default.join(os_1.default.homedir(), '.yuangs.json'));
|
|
41
|
+
});
|
|
42
|
+
}
|
|
43
|
+
if (project) {
|
|
44
|
+
Object.entries(project).forEach(([key, value]) => {
|
|
45
|
+
addField(key, value, 'project');
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
if (commandOverride) {
|
|
49
|
+
Object.entries(commandOverride).forEach(([key, value]) => {
|
|
50
|
+
addField(key, value, 'command-override');
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
return merged;
|
|
54
|
+
}
|
|
55
|
+
function dumpConfigSnapshot(config) {
|
|
56
|
+
const output = {};
|
|
57
|
+
Object.entries(config).forEach(([key, field]) => {
|
|
58
|
+
output[key] = {
|
|
59
|
+
value: field.value,
|
|
60
|
+
source: field.source,
|
|
61
|
+
filePath: field.filePath,
|
|
62
|
+
};
|
|
63
|
+
});
|
|
64
|
+
return JSON.stringify(output, null, 2);
|
|
65
|
+
}
|
|
66
|
+
function findProjectConfig(cwd = process.cwd()) {
|
|
67
|
+
let dir = cwd;
|
|
68
|
+
const configFiles = ['.yuangs.json', '.yuangs.yaml', '.yuangs.yml', 'yuangs.config.json'];
|
|
69
|
+
while (dir && dir !== path_1.default.dirname(dir)) {
|
|
70
|
+
for (const filename of configFiles) {
|
|
71
|
+
const candidate = path_1.default.join(dir, filename);
|
|
72
|
+
if (fs_1.default.existsSync(candidate)) {
|
|
73
|
+
return candidate;
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
dir = path_1.default.dirname(dir);
|
|
77
|
+
}
|
|
78
|
+
const root = path_1.default.parse(cwd).root;
|
|
79
|
+
for (const filename of configFiles) {
|
|
80
|
+
const rootCandidate = path_1.default.join(root, filename);
|
|
81
|
+
if (fs_1.default.existsSync(rootCandidate)) {
|
|
82
|
+
return rootCandidate;
|
|
83
|
+
}
|
|
84
|
+
}
|
|
85
|
+
return null;
|
|
86
|
+
}
|
|
87
|
+
function getConfigFilePaths() {
|
|
88
|
+
return {
|
|
89
|
+
userGlobal: path_1.default.join(os_1.default.homedir(), '.yuangs.json'),
|
|
90
|
+
project: findProjectConfig(),
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=configMerge.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"configMerge.js","sourceRoot":"","sources":["../../src/core/configMerge.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,39 @@
|
|
|
1
|
+
import { MergedConfig } from './configMerge';
|
|
2
|
+
import { ModelCapabilities, CapabilityMatchExplanation } from './modelMatcher';
|
|
3
|
+
import { CapabilityRequirement } from './modelMatcher';
|
|
4
|
+
export interface ExecutionMeta {
|
|
5
|
+
commandName: string;
|
|
6
|
+
timestamp: string;
|
|
7
|
+
toolVersion: string;
|
|
8
|
+
projectPath: string;
|
|
9
|
+
}
|
|
10
|
+
export interface CapabilityIntent {
|
|
11
|
+
required: string[];
|
|
12
|
+
preferred: string[];
|
|
13
|
+
capabilityVersion: string;
|
|
14
|
+
}
|
|
15
|
+
export interface ModelDecision {
|
|
16
|
+
candidateModels: CapabilityMatchExplanation[];
|
|
17
|
+
selectedModel: ModelCapabilities | null;
|
|
18
|
+
usedFallback: boolean;
|
|
19
|
+
fallbackReason?: string;
|
|
20
|
+
}
|
|
21
|
+
export interface ExecutionOutcome {
|
|
22
|
+
success: boolean;
|
|
23
|
+
failureReason?: 'capability-mismatch' | 'provider-error' | 'user-abort' | 'timeout' | 'other';
|
|
24
|
+
tokenCount?: number;
|
|
25
|
+
latencyMs?: number;
|
|
26
|
+
}
|
|
27
|
+
export interface ExecutionRecord {
|
|
28
|
+
id: string;
|
|
29
|
+
meta: ExecutionMeta;
|
|
30
|
+
intent: CapabilityIntent;
|
|
31
|
+
configSnapshot: MergedConfig;
|
|
32
|
+
decision: ModelDecision;
|
|
33
|
+
outcome: ExecutionOutcome;
|
|
34
|
+
command?: string;
|
|
35
|
+
}
|
|
36
|
+
export declare function createExecutionId(): string;
|
|
37
|
+
export declare function createExecutionRecord(commandName: string, requirement: CapabilityRequirement, config: MergedConfig, matchResult: any, outcome?: Partial<ExecutionOutcome>, command?: string): ExecutionRecord;
|
|
38
|
+
export declare function serializeExecutionRecord(record: ExecutionRecord): string;
|
|
39
|
+
export declare function deserializeExecutionRecord(json: string): ExecutionRecord;
|
|
@@ -0,0 +1,44 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.createExecutionId = createExecutionId;
|
|
4
|
+
exports.createExecutionRecord = createExecutionRecord;
|
|
5
|
+
exports.serializeExecutionRecord = serializeExecutionRecord;
|
|
6
|
+
exports.deserializeExecutionRecord = deserializeExecutionRecord;
|
|
7
|
+
function createExecutionId() {
|
|
8
|
+
return `exec_${Date.now()}_${Math.random().toString(36).substr(2, 9)}`;
|
|
9
|
+
}
|
|
10
|
+
function createExecutionRecord(commandName, requirement, config, matchResult, outcome = {}, command) {
|
|
11
|
+
const version = require('../../package.json').version;
|
|
12
|
+
return {
|
|
13
|
+
id: createExecutionId(),
|
|
14
|
+
meta: {
|
|
15
|
+
commandName,
|
|
16
|
+
timestamp: new Date().toISOString(),
|
|
17
|
+
toolVersion: version,
|
|
18
|
+
projectPath: process.cwd(),
|
|
19
|
+
},
|
|
20
|
+
intent: {
|
|
21
|
+
required: requirement.required.map(String),
|
|
22
|
+
preferred: requirement.preferred.map(String),
|
|
23
|
+
capabilityVersion: require('./capabilities').CAPABILITY_VERSION,
|
|
24
|
+
},
|
|
25
|
+
configSnapshot: config,
|
|
26
|
+
decision: {
|
|
27
|
+
candidateModels: matchResult.candidates || [],
|
|
28
|
+
selectedModel: matchResult.selected,
|
|
29
|
+
usedFallback: matchResult.fallbackOccurred,
|
|
30
|
+
},
|
|
31
|
+
outcome: {
|
|
32
|
+
success: outcome.success ?? false,
|
|
33
|
+
...outcome,
|
|
34
|
+
},
|
|
35
|
+
command,
|
|
36
|
+
};
|
|
37
|
+
}
|
|
38
|
+
function serializeExecutionRecord(record) {
|
|
39
|
+
return JSON.stringify(record, null, 2);
|
|
40
|
+
}
|
|
41
|
+
function deserializeExecutionRecord(json) {
|
|
42
|
+
return JSON.parse(json);
|
|
43
|
+
}
|
|
44
|
+
//# sourceMappingURL=executionRecord.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executionRecord.js","sourceRoot":"","sources":["../../src/core/executionRecord.ts"],"names":[],"mappings":";;AAyCA,8CAEC;AAED,sDAmCC;AAED,4DAEC;AAED,gEAEC;AA/CD,SAAgB,iBAAiB;IAC/B,OAAO,QAAQ,IAAI,CAAC,GAAG,EAAE,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,CAAC,EAAE,CAAC;AACzE,CAAC;AAED,SAAgB,qBAAqB,CACnC,WAAmB,EACnB,WAAkC,EAClC,MAAoB,EACpB,WAAgB,EAChB,UAAqC,EAAE,EACvC,OAAgB;IAEhB,MAAM,OAAO,GAAG,OAAO,CAAC,oBAAoB,CAAC,CAAC,OAAO,CAAC;IAEtD,OAAO;QACL,EAAE,EAAE,iBAAiB,EAAE;QACvB,IAAI,EAAE;YACJ,WAAW;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE,OAAO;YACpB,WAAW,EAAE,OAAO,CAAC,GAAG,EAAE;SAC3B;QACD,MAAM,EAAE;YACN,QAAQ,EAAE,WAAW,CAAC,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC;YAC1C,SAAS,EAAE,WAAW,CAAC,SAAS,CAAC,GAAG,CAAC,MAAM,CAAC;YAC5C,iBAAiB,EAAE,OAAO,CAAC,gBAAgB,CAAC,CAAC,kBAAkB;SAChE;QACD,cAAc,EAAE,MAAM;QACtB,QAAQ,EAAE;YACR,eAAe,EAAE,WAAW,CAAC,UAAU,IAAI,EAAE;YAC7C,aAAa,EAAE,WAAW,CAAC,QAAQ;YACnC,YAAY,EAAE,WAAW,CAAC,gBAAgB;SAC3C;QACD,OAAO,EAAE;YACP,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,KAAK;YACjC,GAAG,OAAO;SACX;QACD,OAAO;KACR,CAAC;AACJ,CAAC;AAED,SAAgB,wBAAwB,CAAC,MAAuB;IAC9D,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AAED,SAAgB,0BAA0B,CAAC,IAAY;IACrD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAoB,CAAC;AAC7C,CAAC"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { ExecutionRecord } from './executionRecord';
|
|
2
|
+
export declare function ensureRecordDir(): void;
|
|
3
|
+
export declare function saveExecutionRecord(record: ExecutionRecord): string;
|
|
4
|
+
export declare function loadExecutionRecord(id: string): ExecutionRecord | null;
|
|
5
|
+
export declare function listExecutionRecords(limit?: number): ExecutionRecord[];
|
|
6
|
+
export declare function deleteExecutionRecord(id: string): boolean;
|
|
7
|
+
export declare function clearAllExecutionRecords(): void;
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.ensureRecordDir = ensureRecordDir;
|
|
7
|
+
exports.saveExecutionRecord = saveExecutionRecord;
|
|
8
|
+
exports.loadExecutionRecord = loadExecutionRecord;
|
|
9
|
+
exports.listExecutionRecords = listExecutionRecords;
|
|
10
|
+
exports.deleteExecutionRecord = deleteExecutionRecord;
|
|
11
|
+
exports.clearAllExecutionRecords = clearAllExecutionRecords;
|
|
12
|
+
const fs_1 = __importDefault(require("fs"));
|
|
13
|
+
const path_1 = __importDefault(require("path"));
|
|
14
|
+
const os_1 = __importDefault(require("os"));
|
|
15
|
+
const executionRecord_1 = require("./executionRecord");
|
|
16
|
+
const RECORD_DIR = path_1.default.join(os_1.default.homedir(), '.yuangs', 'executions');
|
|
17
|
+
function ensureRecordDir() {
|
|
18
|
+
if (!fs_1.default.existsSync(RECORD_DIR)) {
|
|
19
|
+
fs_1.default.mkdirSync(RECORD_DIR, { recursive: true });
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
function saveExecutionRecord(record) {
|
|
23
|
+
ensureRecordDir();
|
|
24
|
+
const filename = `${record.id}.json`;
|
|
25
|
+
const filepath = path_1.default.join(RECORD_DIR, filename);
|
|
26
|
+
fs_1.default.writeFileSync(filepath, (0, executionRecord_1.serializeExecutionRecord)(record), 'utf8');
|
|
27
|
+
return filepath;
|
|
28
|
+
}
|
|
29
|
+
function loadExecutionRecord(id) {
|
|
30
|
+
ensureRecordDir();
|
|
31
|
+
const filename = `${id}.json`;
|
|
32
|
+
const filepath = path_1.default.join(RECORD_DIR, filename);
|
|
33
|
+
if (!fs_1.default.existsSync(filepath)) {
|
|
34
|
+
return null;
|
|
35
|
+
}
|
|
36
|
+
try {
|
|
37
|
+
const content = fs_1.default.readFileSync(filepath, 'utf8');
|
|
38
|
+
return (0, executionRecord_1.deserializeExecutionRecord)(content);
|
|
39
|
+
}
|
|
40
|
+
catch (error) {
|
|
41
|
+
console.error(`Failed to load execution record ${id}:`, error);
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
function listExecutionRecords(limit = 50) {
|
|
46
|
+
ensureRecordDir();
|
|
47
|
+
const files = fs_1.default.readdirSync(RECORD_DIR)
|
|
48
|
+
.filter(f => f.endsWith('.json'))
|
|
49
|
+
.sort((a, b) => {
|
|
50
|
+
const statA = fs_1.default.statSync(path_1.default.join(RECORD_DIR, a));
|
|
51
|
+
const statB = fs_1.default.statSync(path_1.default.join(RECORD_DIR, b));
|
|
52
|
+
return statB.mtimeMs - statA.mtimeMs;
|
|
53
|
+
})
|
|
54
|
+
.slice(0, limit);
|
|
55
|
+
const records = [];
|
|
56
|
+
for (const file of files) {
|
|
57
|
+
const record = loadExecutionRecord(file.replace('.json', ''));
|
|
58
|
+
if (record) {
|
|
59
|
+
records.push(record);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
return records;
|
|
63
|
+
}
|
|
64
|
+
function deleteExecutionRecord(id) {
|
|
65
|
+
ensureRecordDir();
|
|
66
|
+
const filename = `${id}.json`;
|
|
67
|
+
const filepath = path_1.default.join(RECORD_DIR, filename);
|
|
68
|
+
if (!fs_1.default.existsSync(filepath)) {
|
|
69
|
+
return false;
|
|
70
|
+
}
|
|
71
|
+
try {
|
|
72
|
+
fs_1.default.unlinkSync(filepath);
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
console.error(`Failed to delete execution record ${id}:`, error);
|
|
77
|
+
return false;
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
function clearAllExecutionRecords() {
|
|
81
|
+
ensureRecordDir();
|
|
82
|
+
const files = fs_1.default.readdirSync(RECORD_DIR).filter(f => f.endsWith('.json'));
|
|
83
|
+
for (const file of files) {
|
|
84
|
+
const filepath = path_1.default.join(RECORD_DIR, file);
|
|
85
|
+
try {
|
|
86
|
+
fs_1.default.unlinkSync(filepath);
|
|
87
|
+
}
|
|
88
|
+
catch (error) {
|
|
89
|
+
console.error(`Failed to delete ${filepath}:`, error);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=executionStore.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"executionStore.js","sourceRoot":"","sources":["../../src/core/executionStore.ts"],"names":[],"mappings":"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"}
|