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.
Files changed (38) hide show
  1. package/dist/cli.js +6 -3
  2. package/dist/cli.js.map +1 -1
  3. package/dist/commands/capabilityCommands.d.ts +2 -0
  4. package/dist/commands/capabilityCommands.js +123 -0
  5. package/dist/commands/capabilityCommands.js.map +1 -0
  6. package/dist/commands/contextBuffer.d.ts +1 -1
  7. package/dist/commands/contextBuffer.js +4 -2
  8. package/dist/commands/contextBuffer.js.map +1 -1
  9. package/dist/commands/handleAIChat.js +46 -10
  10. package/dist/commands/handleAIChat.js.map +1 -1
  11. package/dist/commands/handleAICommand.d.ts +2 -1
  12. package/dist/commands/handleAICommand.js +46 -19
  13. package/dist/commands/handleAICommand.js.map +1 -1
  14. package/dist/core/capabilities.d.ts +23 -0
  15. package/dist/core/capabilities.js +64 -0
  16. package/dist/core/capabilities.js.map +1 -0
  17. package/dist/core/capabilityInference.d.ts +2 -0
  18. package/dist/core/capabilityInference.js +22 -0
  19. package/dist/core/capabilityInference.js.map +1 -0
  20. package/dist/core/capabilitySystem.d.ts +17 -0
  21. package/dist/core/capabilitySystem.js +116 -0
  22. package/dist/core/capabilitySystem.js.map +1 -0
  23. package/dist/core/configMerge.d.ts +19 -0
  24. package/dist/core/configMerge.js +93 -0
  25. package/dist/core/configMerge.js.map +1 -0
  26. package/dist/core/executionRecord.d.ts +39 -0
  27. package/dist/core/executionRecord.js +44 -0
  28. package/dist/core/executionRecord.js.map +1 -0
  29. package/dist/core/executionStore.d.ts +7 -0
  30. package/dist/core/executionStore.js +93 -0
  31. package/dist/core/executionStore.js.map +1 -0
  32. package/dist/core/modelMatcher.d.ts +28 -0
  33. package/dist/core/modelMatcher.js +50 -0
  34. package/dist/core/modelMatcher.js.map +1 -0
  35. package/dist/core/replayEngine.d.ts +19 -0
  36. package/dist/core/replayEngine.js +98 -0
  37. package/dist/core/replayEngine.js.map +1 -0
  38. package/package.json +1 -1
@@ -0,0 +1,28 @@
1
+ import { AtomicCapability, ConstraintCapability } from './capabilities';
2
+ export interface ModelCapabilities {
3
+ name: string;
4
+ provider: string;
5
+ atomicCapabilities: AtomicCapability[];
6
+ contextWindow?: number;
7
+ costProfile?: 'low' | 'medium' | 'high';
8
+ }
9
+ export interface CapabilityRequirement {
10
+ required: AtomicCapability[];
11
+ preferred: AtomicCapability[];
12
+ constraints?: ConstraintCapability[];
13
+ }
14
+ export interface CapabilityMatchExplanation {
15
+ modelName: string;
16
+ provider: string;
17
+ hasRequired: boolean;
18
+ hasPreferred: AtomicCapability[];
19
+ missingRequired: AtomicCapability[];
20
+ reason: string;
21
+ }
22
+ export interface CapabilityMatchResult {
23
+ selected: ModelCapabilities | null;
24
+ candidates: CapabilityMatchExplanation[];
25
+ fallbackOccurred: boolean;
26
+ }
27
+ export declare function matchModel(models: ModelCapabilities[], requirement: CapabilityRequirement): CapabilityMatchResult;
28
+ export declare function matchModelWithFallback(models: ModelCapabilities[], fallbackModels: ModelCapabilities[], requirement: CapabilityRequirement): CapabilityMatchResult;
@@ -0,0 +1,50 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.matchModel = matchModel;
4
+ exports.matchModelWithFallback = matchModelWithFallback;
5
+ function matchModel(models, requirement) {
6
+ const explanations = [];
7
+ for (const model of models) {
8
+ const hasRequired = requirement.required.every(cap => model.atomicCapabilities.includes(cap));
9
+ const missingRequired = requirement.required.filter(cap => !model.atomicCapabilities.includes(cap));
10
+ const hasPreferred = requirement.preferred.filter(cap => model.atomicCapabilities.includes(cap));
11
+ const explanation = {
12
+ modelName: model.name,
13
+ provider: model.provider,
14
+ hasRequired,
15
+ hasPreferred,
16
+ missingRequired,
17
+ reason: hasRequired
18
+ ? `Has all required capabilities. Matches ${hasPreferred.length}/${requirement.preferred.length} preferred.`
19
+ : `Missing required capabilities: ${missingRequired.map(c => String(c)).join(', ')}`,
20
+ };
21
+ explanations.push(explanation);
22
+ }
23
+ const matchingModels = explanations.filter(e => e.hasRequired);
24
+ if (matchingModels.length === 0) {
25
+ return {
26
+ selected: null,
27
+ candidates: explanations,
28
+ fallbackOccurred: false,
29
+ };
30
+ }
31
+ const bestMatch = matchingModels[0];
32
+ const selectedModel = models.find(m => m.name === bestMatch.modelName);
33
+ return {
34
+ selected: selectedModel || null,
35
+ candidates: explanations,
36
+ fallbackOccurred: false,
37
+ };
38
+ }
39
+ function matchModelWithFallback(models, fallbackModels, requirement) {
40
+ const primaryResult = matchModel(models, requirement);
41
+ if (primaryResult.selected) {
42
+ return primaryResult;
43
+ }
44
+ const fallbackResult = matchModel(fallbackModels, requirement);
45
+ return {
46
+ ...fallbackResult,
47
+ fallbackOccurred: fallbackResult.selected !== null,
48
+ };
49
+ }
50
+ //# sourceMappingURL=modelMatcher.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"modelMatcher.js","sourceRoot":"","sources":["../../src/core/modelMatcher.ts"],"names":[],"mappings":";;AA+BA,gCAmDC;AAED,wDAiBC;AAtED,SAAgB,UAAU,CACxB,MAA2B,EAC3B,WAAkC;IAElC,MAAM,YAAY,GAAiC,EAAE,CAAC;IAEtD,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,WAAW,GAAG,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CACnD,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CACvC,CAAC;QAEF,MAAM,eAAe,GAAG,WAAW,CAAC,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACxD,CAAC,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CACxC,CAAC;QAEF,MAAM,YAAY,GAAG,WAAW,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,EAAE,CACtD,KAAK,CAAC,kBAAkB,CAAC,QAAQ,CAAC,GAAG,CAAC,CACvC,CAAC;QAEF,MAAM,WAAW,GAA+B;YAC9C,SAAS,EAAE,KAAK,CAAC,IAAI;YACrB,QAAQ,EAAE,KAAK,CAAC,QAAQ;YACxB,WAAW;YACX,YAAY;YACZ,eAAe;YACf,MAAM,EAAE,WAAW;gBACjB,CAAC,CAAC,0CAA0C,YAAY,CAAC,MAAM,IAAI,WAAW,CAAC,SAAS,CAAC,MAAM,aAAa;gBAC5G,CAAC,CAAC,kCAAkC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;SACvF,CAAC;QAEF,YAAY,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;IACjC,CAAC;IAED,MAAM,cAAc,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC;IAE/D,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAChC,OAAO;YACL,QAAQ,EAAE,IAAI;YACd,UAAU,EAAE,YAAY;YACxB,gBAAgB,EAAE,KAAK;SACxB,CAAC;IACJ,CAAC;IAED,MAAM,SAAS,GAAG,cAAc,CAAC,CAAC,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,SAAS,CAAC,SAAS,CAAC,CAAC;IAEvE,OAAO;QACL,QAAQ,EAAE,aAAa,IAAI,IAAI;QAC/B,UAAU,EAAE,YAAY;QACxB,gBAAgB,EAAE,KAAK;KACxB,CAAC;AACJ,CAAC;AAED,SAAgB,sBAAsB,CACpC,MAA2B,EAC3B,cAAmC,EACnC,WAAkC;IAElC,MAAM,aAAa,GAAG,UAAU,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;IAEtD,IAAI,aAAa,CAAC,QAAQ,EAAE,CAAC;QAC3B,OAAO,aAAa,CAAC;IACvB,CAAC;IAED,MAAM,cAAc,GAAG,UAAU,CAAC,cAAc,EAAE,WAAW,CAAC,CAAC;IAE/D,OAAO;QACL,GAAG,cAAc;QACjB,gBAAgB,EAAE,cAAc,CAAC,QAAQ,KAAK,IAAI;KACnD,CAAC;AACJ,CAAC"}
@@ -0,0 +1,19 @@
1
+ export type ReplayMode = 'strict' | 'compatible' | 're-evaluate';
2
+ export interface ReplayOptions {
3
+ mode: ReplayMode;
4
+ skipAI?: boolean;
5
+ verbose?: boolean;
6
+ }
7
+ export interface ReplayResult {
8
+ success: boolean;
9
+ message: string;
10
+ executedModel?: string;
11
+ deviationReason?: string;
12
+ }
13
+ export declare class ReplayEngine {
14
+ replay(recordId: string, options?: ReplayOptions): Promise<ReplayResult>;
15
+ private strictReplay;
16
+ private compatibleReplay;
17
+ private reEvaluate;
18
+ }
19
+ export declare const replayEngine: ReplayEngine;
@@ -0,0 +1,98 @@
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.replayEngine = exports.ReplayEngine = void 0;
7
+ const chalk_1 = __importDefault(require("chalk"));
8
+ const executionStore_1 = require("./executionStore");
9
+ class ReplayEngine {
10
+ async replay(recordId, options = { mode: 'strict' }) {
11
+ const record = (0, executionStore_1.loadExecutionRecord)(recordId);
12
+ if (!record) {
13
+ return {
14
+ success: false,
15
+ message: `Execution record ${recordId} not found`,
16
+ };
17
+ }
18
+ if (options.mode === 'strict') {
19
+ return this.strictReplay(record, options);
20
+ }
21
+ if (options.mode === 'compatible') {
22
+ return this.compatibleReplay(record, options);
23
+ }
24
+ return this.reEvaluate(record, options);
25
+ }
26
+ async strictReplay(record, options) {
27
+ const selectedModel = record.decision.selectedModel;
28
+ if (options.verbose) {
29
+ console.log(chalk_1.default.cyan('[Strict Replay]'));
30
+ console.log(chalk_1.default.gray(` Original Model: ${selectedModel?.name || 'N/A'}`));
31
+ console.log(chalk_1.default.gray(` Original Provider: ${selectedModel?.provider || 'N/A'}`));
32
+ console.log(chalk_1.default.gray(` Original Timestamp: ${record.meta.timestamp}`));
33
+ console.log(chalk_1.default.gray(` Original Command: ${record.meta.commandName}`));
34
+ }
35
+ if (options.skipAI) {
36
+ return {
37
+ success: true,
38
+ message: 'Strict replay prepared (AI execution skipped)',
39
+ executedModel: selectedModel?.name ?? undefined,
40
+ };
41
+ }
42
+ if (!record.command) {
43
+ return {
44
+ success: false,
45
+ message: 'Strict replay: No command to execute (command not stored in record)',
46
+ executedModel: selectedModel?.name ?? undefined,
47
+ };
48
+ }
49
+ const { exec } = require('./executor');
50
+ try {
51
+ console.log(chalk_1.default.gray('[Strict Replay] Executing with original parameters...'));
52
+ const result = await exec(record.command);
53
+ return {
54
+ success: result.code === 0 || result.code === null,
55
+ message: result.code === 0 || result.code === null
56
+ ? 'Strict replay completed successfully'
57
+ : `Strict replay failed with code ${result.code}`,
58
+ executedModel: selectedModel?.name ?? undefined,
59
+ };
60
+ }
61
+ catch (error) {
62
+ const message = error instanceof Error ? error.message : String(error);
63
+ return {
64
+ success: false,
65
+ message: `Strict replay error: ${message}`,
66
+ executedModel: selectedModel?.name ?? undefined,
67
+ };
68
+ }
69
+ }
70
+ async compatibleReplay(record, options) {
71
+ const originalModel = record.decision.selectedModel;
72
+ if (options.verbose) {
73
+ console.log(chalk_1.default.cyan('[Compatible Replay]'));
74
+ console.log(chalk_1.default.gray(` Original Model: ${originalModel?.name || 'N/A'}`));
75
+ console.log(chalk_1.default.gray(` Will attempt fallback if original unavailable`));
76
+ }
77
+ return {
78
+ success: false,
79
+ message: 'Compatible replay not yet implemented in Phase 1',
80
+ executedModel: originalModel?.name,
81
+ deviationReason: 'Phase 1 only supports strict replay',
82
+ };
83
+ }
84
+ async reEvaluate(record, options) {
85
+ if (options.verbose) {
86
+ console.log(chalk_1.default.cyan('[Re-evaluate]'));
87
+ console.log(chalk_1.default.gray(` Will re-run capability matching with current config`));
88
+ console.log(chalk_1.default.gray(` Original Intent: ${record.intent.required.join(', ')}`));
89
+ }
90
+ return {
91
+ success: false,
92
+ message: 'Re-evaluate not yet implemented in Phase 1',
93
+ };
94
+ }
95
+ }
96
+ exports.ReplayEngine = ReplayEngine;
97
+ exports.replayEngine = new ReplayEngine();
98
+ //# sourceMappingURL=replayEngine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"replayEngine.js","sourceRoot":"","sources":["../../src/core/replayEngine.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yuangs",
3
- "version": "1.3.71",
3
+ "version": "1.3.73",
4
4
  "description": "苑广山的个人应用集合 CLI(彩色版)",
5
5
  "author": "苑广山",
6
6
  "license": "ISC",