@mytechtoday/augment-extensions 1.3.1 → 1.4.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 +105 -6
- package/cli/dist/commands/agent.d.ts +37 -0
- package/cli/dist/commands/agent.d.ts.map +1 -0
- package/cli/dist/commands/agent.js +222 -0
- package/cli/dist/commands/agent.js.map +1 -0
- package/cli/dist/commands/beads.d.ts +64 -0
- package/cli/dist/commands/beads.d.ts.map +1 -0
- package/cli/dist/commands/beads.js +377 -0
- package/cli/dist/commands/beads.js.map +1 -0
- package/cli/dist/commands/change.d.ts +54 -0
- package/cli/dist/commands/change.d.ts.map +1 -0
- package/cli/dist/commands/change.js +243 -0
- package/cli/dist/commands/change.js.map +1 -0
- package/cli/dist/commands/clean.d.ts +15 -0
- package/cli/dist/commands/clean.d.ts.map +1 -0
- package/cli/dist/commands/clean.js +63 -0
- package/cli/dist/commands/clean.js.map +1 -0
- package/cli/dist/commands/clone.d.ts +15 -0
- package/cli/dist/commands/clone.d.ts.map +1 -0
- package/cli/dist/commands/clone.js +49 -0
- package/cli/dist/commands/clone.js.map +1 -0
- package/cli/dist/commands/config.d.ts +33 -0
- package/cli/dist/commands/config.d.ts.map +1 -0
- package/cli/dist/commands/config.js +166 -0
- package/cli/dist/commands/config.js.map +1 -0
- package/cli/dist/commands/context.d.ts +38 -0
- package/cli/dist/commands/context.d.ts.map +1 -0
- package/cli/dist/commands/context.js +205 -0
- package/cli/dist/commands/context.js.map +1 -0
- package/cli/dist/commands/create.d.ts +18 -0
- package/cli/dist/commands/create.d.ts.map +1 -0
- package/cli/dist/commands/create.js +178 -0
- package/cli/dist/commands/create.js.map +1 -0
- package/cli/dist/commands/diff.d.ts +19 -0
- package/cli/dist/commands/diff.d.ts.map +1 -0
- package/cli/dist/commands/diff.js +104 -0
- package/cli/dist/commands/diff.js.map +1 -0
- package/cli/dist/commands/doctor.d.ts +14 -0
- package/cli/dist/commands/doctor.d.ts.map +1 -0
- package/cli/dist/commands/doctor.js +62 -0
- package/cli/dist/commands/doctor.js.map +1 -0
- package/cli/dist/commands/export.d.ts +28 -0
- package/cli/dist/commands/export.d.ts.map +1 -0
- package/cli/dist/commands/export.js +135 -0
- package/cli/dist/commands/export.js.map +1 -0
- package/cli/dist/commands/import.d.ts +23 -0
- package/cli/dist/commands/import.d.ts.map +1 -0
- package/cli/dist/commands/import.js +118 -0
- package/cli/dist/commands/import.js.map +1 -0
- package/cli/dist/commands/prompt.d.ts +45 -0
- package/cli/dist/commands/prompt.d.ts.map +1 -0
- package/cli/dist/commands/prompt.js +223 -0
- package/cli/dist/commands/prompt.js.map +1 -0
- package/cli/dist/commands/spec.d.ts +57 -0
- package/cli/dist/commands/spec.d.ts.map +1 -0
- package/cli/dist/commands/spec.js +279 -0
- package/cli/dist/commands/spec.js.map +1 -0
- package/cli/dist/commands/stats.d.ts +18 -0
- package/cli/dist/commands/stats.d.ts.map +1 -0
- package/cli/dist/commands/stats.js +85 -0
- package/cli/dist/commands/stats.js.map +1 -0
- package/cli/dist/commands/task.d.ts +65 -0
- package/cli/dist/commands/task.d.ts.map +1 -0
- package/cli/dist/commands/task.js +282 -0
- package/cli/dist/commands/task.js.map +1 -0
- package/cli/dist/commands/template.d.ts +17 -0
- package/cli/dist/commands/template.d.ts.map +1 -0
- package/cli/dist/commands/template.js +55 -0
- package/cli/dist/commands/template.js.map +1 -0
- package/cli/dist/utils/agent-config.d.ts +129 -0
- package/cli/dist/utils/agent-config.d.ts.map +1 -0
- package/cli/dist/utils/agent-config.js +297 -0
- package/cli/dist/utils/agent-config.js.map +1 -0
- package/cli/dist/utils/beads-graph.d.ts +17 -0
- package/cli/dist/utils/beads-graph.d.ts.map +1 -0
- package/cli/dist/utils/beads-graph.js +150 -0
- package/cli/dist/utils/beads-graph.js.map +1 -0
- package/cli/dist/utils/beads-integration.d.ts +112 -0
- package/cli/dist/utils/beads-integration.d.ts.map +1 -0
- package/cli/dist/utils/beads-integration.js +312 -0
- package/cli/dist/utils/beads-integration.js.map +1 -0
- package/cli/dist/utils/beads-reporter.d.ts +17 -0
- package/cli/dist/utils/beads-reporter.d.ts.map +1 -0
- package/cli/dist/utils/beads-reporter.js +160 -0
- package/cli/dist/utils/beads-reporter.js.map +1 -0
- package/cli/dist/utils/cache-manager.d.ts +55 -0
- package/cli/dist/utils/cache-manager.d.ts.map +1 -0
- package/cli/dist/utils/cache-manager.js +150 -0
- package/cli/dist/utils/cache-manager.js.map +1 -0
- package/cli/dist/utils/change-manager.d.ts +70 -0
- package/cli/dist/utils/change-manager.d.ts.map +1 -0
- package/cli/dist/utils/change-manager.js +412 -0
- package/cli/dist/utils/change-manager.js.map +1 -0
- package/cli/dist/utils/config-manager-enhanced.d.ts +66 -0
- package/cli/dist/utils/config-manager-enhanced.d.ts.map +1 -0
- package/cli/dist/utils/config-manager-enhanced.js +77 -0
- package/cli/dist/utils/config-manager-enhanced.js.map +1 -0
- package/cli/dist/utils/context-manager.d.ts +96 -0
- package/cli/dist/utils/context-manager.d.ts.map +1 -0
- package/cli/dist/utils/context-manager.js +258 -0
- package/cli/dist/utils/context-manager.js.map +1 -0
- package/cli/dist/utils/diff-engine.d.ts +78 -0
- package/cli/dist/utils/diff-engine.d.ts.map +1 -0
- package/cli/dist/utils/diff-engine.js +233 -0
- package/cli/dist/utils/diff-engine.js.map +1 -0
- package/cli/dist/utils/export-system.d.ts +101 -0
- package/cli/dist/utils/export-system.d.ts.map +1 -0
- package/cli/dist/utils/export-system.js +289 -0
- package/cli/dist/utils/export-system.js.map +1 -0
- package/cli/dist/utils/health-checker.d.ts +66 -0
- package/cli/dist/utils/health-checker.d.ts.map +1 -0
- package/cli/dist/utils/health-checker.js +285 -0
- package/cli/dist/utils/health-checker.js.map +1 -0
- package/cli/dist/utils/import-system.d.ts +74 -0
- package/cli/dist/utils/import-system.d.ts.map +1 -0
- package/cli/dist/utils/import-system.js +317 -0
- package/cli/dist/utils/import-system.js.map +1 -0
- package/cli/dist/utils/module-cloner.d.ts +40 -0
- package/cli/dist/utils/module-cloner.d.ts.map +1 -0
- package/cli/dist/utils/module-cloner.js +136 -0
- package/cli/dist/utils/module-cloner.js.map +1 -0
- package/cli/dist/utils/prompt-manager.d.ts +90 -0
- package/cli/dist/utils/prompt-manager.d.ts.map +1 -0
- package/cli/dist/utils/prompt-manager.js +302 -0
- package/cli/dist/utils/prompt-manager.js.map +1 -0
- package/cli/dist/utils/spec-manager.d.ts +65 -0
- package/cli/dist/utils/spec-manager.d.ts.map +1 -0
- package/cli/dist/utils/spec-manager.js +329 -0
- package/cli/dist/utils/spec-manager.js.map +1 -0
- package/cli/dist/utils/stats-collector.d.ts +74 -0
- package/cli/dist/utils/stats-collector.d.ts.map +1 -0
- package/cli/dist/utils/stats-collector.js +164 -0
- package/cli/dist/utils/stats-collector.js.map +1 -0
- package/cli/dist/utils/template-engine.d.ts +47 -0
- package/cli/dist/utils/template-engine.d.ts.map +1 -0
- package/cli/dist/utils/template-engine.js +204 -0
- package/cli/dist/utils/template-engine.js.map +1 -0
- package/package.json +8 -1
|
@@ -0,0 +1,129 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Config for Augment Extensions
|
|
3
|
+
* **CRITICAL** - Agent configuration and capabilities management
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Agent profile
|
|
7
|
+
*/
|
|
8
|
+
export interface AgentProfile {
|
|
9
|
+
id: string;
|
|
10
|
+
name: string;
|
|
11
|
+
description?: string;
|
|
12
|
+
capabilities: AgentCapability[];
|
|
13
|
+
preferences: AgentPreferences;
|
|
14
|
+
metadata?: {
|
|
15
|
+
version?: string;
|
|
16
|
+
author?: string;
|
|
17
|
+
created?: string;
|
|
18
|
+
updated?: string;
|
|
19
|
+
};
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Agent capability
|
|
23
|
+
*/
|
|
24
|
+
export interface AgentCapability {
|
|
25
|
+
name: string;
|
|
26
|
+
enabled: boolean;
|
|
27
|
+
config?: {
|
|
28
|
+
[key: string]: any;
|
|
29
|
+
};
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Agent preferences
|
|
33
|
+
*/
|
|
34
|
+
export interface AgentPreferences {
|
|
35
|
+
/** Preferred context modules */
|
|
36
|
+
preferredModules?: string[];
|
|
37
|
+
/** Maximum token budget */
|
|
38
|
+
maxTokens?: number;
|
|
39
|
+
/** Code style preferences */
|
|
40
|
+
codeStyle?: {
|
|
41
|
+
language?: string;
|
|
42
|
+
framework?: string;
|
|
43
|
+
conventions?: string[];
|
|
44
|
+
};
|
|
45
|
+
/** Output preferences */
|
|
46
|
+
output?: {
|
|
47
|
+
verbosity?: 'minimal' | 'normal' | 'verbose';
|
|
48
|
+
format?: 'text' | 'markdown' | 'json';
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Capability test result
|
|
53
|
+
*/
|
|
54
|
+
export interface CapabilityTestResult {
|
|
55
|
+
capability: string;
|
|
56
|
+
available: boolean;
|
|
57
|
+
tested: boolean;
|
|
58
|
+
message?: string;
|
|
59
|
+
}
|
|
60
|
+
/**
|
|
61
|
+
* Agent Config class
|
|
62
|
+
*/
|
|
63
|
+
export declare class AgentConfig {
|
|
64
|
+
private configManager;
|
|
65
|
+
private profilesDir;
|
|
66
|
+
private currentProfile;
|
|
67
|
+
constructor();
|
|
68
|
+
/**
|
|
69
|
+
* Get current agent profile
|
|
70
|
+
*/
|
|
71
|
+
getCurrentProfile(): AgentProfile | null;
|
|
72
|
+
/**
|
|
73
|
+
* Set current agent profile
|
|
74
|
+
*/
|
|
75
|
+
setCurrentProfile(profileId: string): boolean;
|
|
76
|
+
/**
|
|
77
|
+
* Create a new agent profile
|
|
78
|
+
*/
|
|
79
|
+
createProfile(profile: AgentProfile): boolean;
|
|
80
|
+
/**
|
|
81
|
+
* Update an existing profile
|
|
82
|
+
*/
|
|
83
|
+
updateProfile(profileId: string, updates: Partial<AgentProfile>): boolean;
|
|
84
|
+
/**
|
|
85
|
+
* Delete a profile
|
|
86
|
+
*/
|
|
87
|
+
deleteProfile(profileId: string): boolean;
|
|
88
|
+
/**
|
|
89
|
+
* List all profiles
|
|
90
|
+
*/
|
|
91
|
+
listProfiles(): AgentProfile[];
|
|
92
|
+
/**
|
|
93
|
+
* Get agent capabilities
|
|
94
|
+
*/
|
|
95
|
+
getCapabilities(): AgentCapability[];
|
|
96
|
+
/**
|
|
97
|
+
* Test a capability
|
|
98
|
+
*/
|
|
99
|
+
testCapability(capabilityName: string): CapabilityTestResult;
|
|
100
|
+
/**
|
|
101
|
+
* Export profile
|
|
102
|
+
*/
|
|
103
|
+
exportProfile(profileId: string, outputPath: string): boolean;
|
|
104
|
+
/**
|
|
105
|
+
* Import profile
|
|
106
|
+
*/
|
|
107
|
+
importProfile(filePath: string): boolean;
|
|
108
|
+
/**
|
|
109
|
+
* Load profile from file
|
|
110
|
+
*/
|
|
111
|
+
private loadProfile;
|
|
112
|
+
/**
|
|
113
|
+
* Load current profile from config
|
|
114
|
+
*/
|
|
115
|
+
private loadCurrentProfile;
|
|
116
|
+
/**
|
|
117
|
+
* Save current profile ID to config
|
|
118
|
+
*/
|
|
119
|
+
private saveCurrentProfileId;
|
|
120
|
+
/**
|
|
121
|
+
* Create default profile
|
|
122
|
+
*/
|
|
123
|
+
private createDefaultProfile;
|
|
124
|
+
/**
|
|
125
|
+
* Get default capabilities
|
|
126
|
+
*/
|
|
127
|
+
private getDefaultCapabilities;
|
|
128
|
+
}
|
|
129
|
+
//# sourceMappingURL=agent-config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-config.d.ts","sourceRoot":"","sources":["../../src/utils/agent-config.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAMH;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,eAAe,EAAE,CAAC;IAChC,WAAW,EAAE,gBAAgB,CAAC;IAC9B,QAAQ,CAAC,EAAE;QACT,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE;QAAE,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAA;KAAE,CAAC;CACjC;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,gCAAgC;IAChC,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,2BAA2B;IAC3B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,6BAA6B;IAC7B,SAAS,CAAC,EAAE;QACV,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;KACxB,CAAC;IACF,yBAAyB;IACzB,MAAM,CAAC,EAAE;QACP,SAAS,CAAC,EAAE,SAAS,GAAG,QAAQ,GAAG,SAAS,CAAC;QAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,UAAU,GAAG,MAAM,CAAC;KACvC,CAAC;CACH;AAED;;GAEG;AACH,MAAM,WAAW,oBAAoB;IACnC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,OAAO,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,qBAAa,WAAW;IACtB,OAAO,CAAC,aAAa,CAAwB;IAC7C,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,cAAc,CAAsB;;IAU5C;;OAEG;IACH,iBAAiB,IAAI,YAAY,GAAG,IAAI;IAIxC;;OAEG;IACH,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAW7C;;OAEG;IACH,aAAa,CAAC,OAAO,EAAE,YAAY,GAAG,OAAO;IAqB7C;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO;IAgCzE;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO;IAqBzC;;OAEG;IACH,YAAY,IAAI,YAAY,EAAE;IAqB9B;;OAEG;IACH,eAAe,IAAI,eAAe,EAAE;IAQpC;;OAEG;IACH,cAAc,CAAC,cAAc,EAAE,MAAM,GAAG,oBAAoB;IAoB5D;;OAEG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,GAAG,OAAO;IAc7D;;OAEG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAWxC;;OAEG;IACH,OAAO,CAAC,WAAW;IAenB;;OAEG;IACH,OAAO,CAAC,kBAAkB;IAc1B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAI5B;;OAEG;IACH,OAAO,CAAC,oBAAoB;IAoB5B;;OAEG;IACH,OAAO,CAAC,sBAAsB;CAW/B"}
|
|
@@ -0,0 +1,297 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Agent Config for Augment Extensions
|
|
4
|
+
* **CRITICAL** - Agent configuration and capabilities management
|
|
5
|
+
*/
|
|
6
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
7
|
+
if (k2 === undefined) k2 = k;
|
|
8
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
9
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
10
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
11
|
+
}
|
|
12
|
+
Object.defineProperty(o, k2, desc);
|
|
13
|
+
}) : (function(o, m, k, k2) {
|
|
14
|
+
if (k2 === undefined) k2 = k;
|
|
15
|
+
o[k2] = m[k];
|
|
16
|
+
}));
|
|
17
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
18
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
19
|
+
}) : function(o, v) {
|
|
20
|
+
o["default"] = v;
|
|
21
|
+
});
|
|
22
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
23
|
+
var ownKeys = function(o) {
|
|
24
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
25
|
+
var ar = [];
|
|
26
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
27
|
+
return ar;
|
|
28
|
+
};
|
|
29
|
+
return ownKeys(o);
|
|
30
|
+
};
|
|
31
|
+
return function (mod) {
|
|
32
|
+
if (mod && mod.__esModule) return mod;
|
|
33
|
+
var result = {};
|
|
34
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
35
|
+
__setModuleDefault(result, mod);
|
|
36
|
+
return result;
|
|
37
|
+
};
|
|
38
|
+
})();
|
|
39
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
40
|
+
exports.AgentConfig = void 0;
|
|
41
|
+
const fs = __importStar(require("fs"));
|
|
42
|
+
const path = __importStar(require("path"));
|
|
43
|
+
const config_manager_enhanced_1 = require("./config-manager-enhanced");
|
|
44
|
+
/**
|
|
45
|
+
* Agent Config class
|
|
46
|
+
*/
|
|
47
|
+
class AgentConfig {
|
|
48
|
+
constructor() {
|
|
49
|
+
this.configManager = new config_manager_enhanced_1.EnhancedConfigManager();
|
|
50
|
+
this.profilesDir = path.join(process.cwd(), '.augment', 'agent-profiles');
|
|
51
|
+
fs.mkdirSync(this.profilesDir, { recursive: true });
|
|
52
|
+
this.currentProfile = null;
|
|
53
|
+
this.loadCurrentProfile();
|
|
54
|
+
}
|
|
55
|
+
/**
|
|
56
|
+
* Get current agent profile
|
|
57
|
+
*/
|
|
58
|
+
getCurrentProfile() {
|
|
59
|
+
return this.currentProfile;
|
|
60
|
+
}
|
|
61
|
+
/**
|
|
62
|
+
* Set current agent profile
|
|
63
|
+
*/
|
|
64
|
+
setCurrentProfile(profileId) {
|
|
65
|
+
const profile = this.loadProfile(profileId);
|
|
66
|
+
if (!profile) {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
this.currentProfile = profile;
|
|
70
|
+
this.saveCurrentProfileId(profileId);
|
|
71
|
+
return true;
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Create a new agent profile
|
|
75
|
+
*/
|
|
76
|
+
createProfile(profile) {
|
|
77
|
+
try {
|
|
78
|
+
const filePath = path.join(this.profilesDir, `${profile.id}.json`);
|
|
79
|
+
if (fs.existsSync(filePath)) {
|
|
80
|
+
return false; // Profile already exists
|
|
81
|
+
}
|
|
82
|
+
profile.metadata = {
|
|
83
|
+
...profile.metadata,
|
|
84
|
+
created: new Date().toISOString(),
|
|
85
|
+
updated: new Date().toISOString()
|
|
86
|
+
};
|
|
87
|
+
fs.writeFileSync(filePath, JSON.stringify(profile, null, 2));
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
return false;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Update an existing profile
|
|
96
|
+
*/
|
|
97
|
+
updateProfile(profileId, updates) {
|
|
98
|
+
try {
|
|
99
|
+
const existing = this.loadProfile(profileId);
|
|
100
|
+
if (!existing) {
|
|
101
|
+
return false;
|
|
102
|
+
}
|
|
103
|
+
const updated = {
|
|
104
|
+
...existing,
|
|
105
|
+
...updates,
|
|
106
|
+
id: profileId, // Keep original ID
|
|
107
|
+
metadata: {
|
|
108
|
+
...existing.metadata,
|
|
109
|
+
...updates.metadata,
|
|
110
|
+
updated: new Date().toISOString()
|
|
111
|
+
}
|
|
112
|
+
};
|
|
113
|
+
const filePath = path.join(this.profilesDir, `${profileId}.json`);
|
|
114
|
+
fs.writeFileSync(filePath, JSON.stringify(updated, null, 2));
|
|
115
|
+
// Update current profile if it's the one being updated
|
|
116
|
+
if (this.currentProfile?.id === profileId) {
|
|
117
|
+
this.currentProfile = updated;
|
|
118
|
+
}
|
|
119
|
+
return true;
|
|
120
|
+
}
|
|
121
|
+
catch (error) {
|
|
122
|
+
return false;
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Delete a profile
|
|
127
|
+
*/
|
|
128
|
+
deleteProfile(profileId) {
|
|
129
|
+
try {
|
|
130
|
+
const filePath = path.join(this.profilesDir, `${profileId}.json`);
|
|
131
|
+
if (!fs.existsSync(filePath)) {
|
|
132
|
+
return false;
|
|
133
|
+
}
|
|
134
|
+
fs.unlinkSync(filePath);
|
|
135
|
+
// Clear current profile if it's the one being deleted
|
|
136
|
+
if (this.currentProfile?.id === profileId) {
|
|
137
|
+
this.currentProfile = null;
|
|
138
|
+
this.saveCurrentProfileId('');
|
|
139
|
+
}
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
catch (error) {
|
|
143
|
+
return false;
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
/**
|
|
147
|
+
* List all profiles
|
|
148
|
+
*/
|
|
149
|
+
listProfiles() {
|
|
150
|
+
const profiles = [];
|
|
151
|
+
if (!fs.existsSync(this.profilesDir)) {
|
|
152
|
+
return profiles;
|
|
153
|
+
}
|
|
154
|
+
const files = fs.readdirSync(this.profilesDir)
|
|
155
|
+
.filter(f => f.endsWith('.json'));
|
|
156
|
+
for (const file of files) {
|
|
157
|
+
const profileId = path.basename(file, '.json');
|
|
158
|
+
const profile = this.loadProfile(profileId);
|
|
159
|
+
if (profile) {
|
|
160
|
+
profiles.push(profile);
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
return profiles;
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Get agent capabilities
|
|
167
|
+
*/
|
|
168
|
+
getCapabilities() {
|
|
169
|
+
if (!this.currentProfile) {
|
|
170
|
+
return this.getDefaultCapabilities();
|
|
171
|
+
}
|
|
172
|
+
return this.currentProfile.capabilities;
|
|
173
|
+
}
|
|
174
|
+
/**
|
|
175
|
+
* Test a capability
|
|
176
|
+
*/
|
|
177
|
+
testCapability(capabilityName) {
|
|
178
|
+
const capability = this.getCapabilities().find(c => c.name === capabilityName);
|
|
179
|
+
if (!capability) {
|
|
180
|
+
return {
|
|
181
|
+
capability: capabilityName,
|
|
182
|
+
available: false,
|
|
183
|
+
tested: true,
|
|
184
|
+
message: 'Capability not found'
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
return {
|
|
188
|
+
capability: capabilityName,
|
|
189
|
+
available: capability.enabled,
|
|
190
|
+
tested: true,
|
|
191
|
+
message: capability.enabled ? 'Capability is enabled' : 'Capability is disabled'
|
|
192
|
+
};
|
|
193
|
+
}
|
|
194
|
+
/**
|
|
195
|
+
* Export profile
|
|
196
|
+
*/
|
|
197
|
+
exportProfile(profileId, outputPath) {
|
|
198
|
+
try {
|
|
199
|
+
const profile = this.loadProfile(profileId);
|
|
200
|
+
if (!profile) {
|
|
201
|
+
return false;
|
|
202
|
+
}
|
|
203
|
+
fs.writeFileSync(outputPath, JSON.stringify(profile, null, 2));
|
|
204
|
+
return true;
|
|
205
|
+
}
|
|
206
|
+
catch (error) {
|
|
207
|
+
return false;
|
|
208
|
+
}
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Import profile
|
|
212
|
+
*/
|
|
213
|
+
importProfile(filePath) {
|
|
214
|
+
try {
|
|
215
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
216
|
+
const profile = JSON.parse(content);
|
|
217
|
+
return this.createProfile(profile);
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
return false;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
/**
|
|
224
|
+
* Load profile from file
|
|
225
|
+
*/
|
|
226
|
+
loadProfile(profileId) {
|
|
227
|
+
try {
|
|
228
|
+
const filePath = path.join(this.profilesDir, `${profileId}.json`);
|
|
229
|
+
if (!fs.existsSync(filePath)) {
|
|
230
|
+
return null;
|
|
231
|
+
}
|
|
232
|
+
const content = fs.readFileSync(filePath, 'utf-8');
|
|
233
|
+
return JSON.parse(content);
|
|
234
|
+
}
|
|
235
|
+
catch (error) {
|
|
236
|
+
return null;
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Load current profile from config
|
|
241
|
+
*/
|
|
242
|
+
loadCurrentProfile() {
|
|
243
|
+
const config = this.configManager.getAgentConfig();
|
|
244
|
+
const profileId = config?.profile;
|
|
245
|
+
if (profileId) {
|
|
246
|
+
this.currentProfile = this.loadProfile(profileId);
|
|
247
|
+
}
|
|
248
|
+
// Create default profile if none exists
|
|
249
|
+
if (!this.currentProfile) {
|
|
250
|
+
this.currentProfile = this.createDefaultProfile();
|
|
251
|
+
}
|
|
252
|
+
}
|
|
253
|
+
/**
|
|
254
|
+
* Save current profile ID to config
|
|
255
|
+
*/
|
|
256
|
+
saveCurrentProfileId(profileId) {
|
|
257
|
+
this.configManager.setAgentConfig({ profile: profileId });
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Create default profile
|
|
261
|
+
*/
|
|
262
|
+
createDefaultProfile() {
|
|
263
|
+
return {
|
|
264
|
+
id: 'default',
|
|
265
|
+
name: 'Default Agent Profile',
|
|
266
|
+
description: 'Default configuration for AI agents',
|
|
267
|
+
capabilities: this.getDefaultCapabilities(),
|
|
268
|
+
preferences: {
|
|
269
|
+
maxTokens: 100000,
|
|
270
|
+
output: {
|
|
271
|
+
verbosity: 'normal',
|
|
272
|
+
format: 'markdown'
|
|
273
|
+
}
|
|
274
|
+
},
|
|
275
|
+
metadata: {
|
|
276
|
+
version: '1.0.0',
|
|
277
|
+
created: new Date().toISOString()
|
|
278
|
+
}
|
|
279
|
+
};
|
|
280
|
+
}
|
|
281
|
+
/**
|
|
282
|
+
* Get default capabilities
|
|
283
|
+
*/
|
|
284
|
+
getDefaultCapabilities() {
|
|
285
|
+
return [
|
|
286
|
+
{ name: 'code-generation', enabled: true },
|
|
287
|
+
{ name: 'code-review', enabled: true },
|
|
288
|
+
{ name: 'documentation', enabled: true },
|
|
289
|
+
{ name: 'testing', enabled: true },
|
|
290
|
+
{ name: 'refactoring', enabled: true },
|
|
291
|
+
{ name: 'debugging', enabled: true },
|
|
292
|
+
{ name: 'optimization', enabled: true }
|
|
293
|
+
];
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
exports.AgentConfig = AgentConfig;
|
|
297
|
+
//# sourceMappingURL=agent-config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-config.js","sourceRoot":"","sources":["../../src/utils/agent-config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Beads Graph Utility
|
|
3
|
+
*
|
|
4
|
+
* Generates dependency graph visualizations in multiple formats.
|
|
5
|
+
*/
|
|
6
|
+
import { BeadsTask } from './beads-integration';
|
|
7
|
+
export interface GraphOptions {
|
|
8
|
+
format?: 'ascii' | 'dot' | 'mermaid' | 'svg';
|
|
9
|
+
filter?: 'open' | 'blocked' | 'all';
|
|
10
|
+
depth?: number;
|
|
11
|
+
showClosed?: boolean;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Generate dependency graph
|
|
15
|
+
*/
|
|
16
|
+
export declare function generateGraph(tasks: BeadsTask[], options?: GraphOptions): string;
|
|
17
|
+
//# sourceMappingURL=beads-graph.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beads-graph.d.ts","sourceRoot":"","sources":["../../src/utils/beads-graph.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAEhD,MAAM,WAAW,YAAY;IAC3B,MAAM,CAAC,EAAE,OAAO,GAAG,KAAK,GAAG,SAAS,GAAG,KAAK,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,GAAG,KAAK,CAAC;IACpC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE,OAAO,GAAE,YAAiB,GAAG,MAAM,CA6BpF"}
|
|
@@ -0,0 +1,150 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Beads Graph Utility
|
|
4
|
+
*
|
|
5
|
+
* Generates dependency graph visualizations in multiple formats.
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.generateGraph = generateGraph;
|
|
9
|
+
/**
|
|
10
|
+
* Generate dependency graph
|
|
11
|
+
*/
|
|
12
|
+
function generateGraph(tasks, options = {}) {
|
|
13
|
+
const format = options.format || 'ascii';
|
|
14
|
+
const filter = options.filter || 'all';
|
|
15
|
+
const depth = options.depth || 999;
|
|
16
|
+
// Filter tasks based on options
|
|
17
|
+
let filteredTasks = tasks;
|
|
18
|
+
if (filter === 'open') {
|
|
19
|
+
filteredTasks = tasks.filter(t => t.status === 'open');
|
|
20
|
+
}
|
|
21
|
+
else if (filter === 'blocked') {
|
|
22
|
+
filteredTasks = tasks.filter(t => t.status === 'blocked' || (t.blocked_by && t.blocked_by.length > 0));
|
|
23
|
+
}
|
|
24
|
+
if (!options.showClosed) {
|
|
25
|
+
filteredTasks = filteredTasks.filter(t => t.status !== 'closed');
|
|
26
|
+
}
|
|
27
|
+
switch (format) {
|
|
28
|
+
case 'ascii':
|
|
29
|
+
return generateASCIIGraph(filteredTasks, depth);
|
|
30
|
+
case 'dot':
|
|
31
|
+
return generateDOTGraph(filteredTasks, depth);
|
|
32
|
+
case 'mermaid':
|
|
33
|
+
return generateMermaidGraph(filteredTasks, depth);
|
|
34
|
+
case 'svg':
|
|
35
|
+
return generateSVGGraph(filteredTasks, depth);
|
|
36
|
+
default:
|
|
37
|
+
throw new Error(`Unsupported format: ${format}`);
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Generate ASCII graph
|
|
42
|
+
*/
|
|
43
|
+
function generateASCIIGraph(tasks, maxDepth) {
|
|
44
|
+
let graph = 'Dependency Graph\n';
|
|
45
|
+
graph += '================\n\n';
|
|
46
|
+
const visited = new Set();
|
|
47
|
+
const rootTasks = tasks.filter(t => !t.blocked_by || t.blocked_by.length === 0);
|
|
48
|
+
function renderTask(task, depth, prefix = '') {
|
|
49
|
+
if (depth > maxDepth || visited.has(task.id))
|
|
50
|
+
return '';
|
|
51
|
+
visited.add(task.id);
|
|
52
|
+
let output = `${prefix}${task.id}: ${task.title} [${task.status}]\n`;
|
|
53
|
+
// Find tasks that this task blocks
|
|
54
|
+
const blockedTasks = tasks.filter(t => t.blocked_by && t.blocked_by.includes(task.id));
|
|
55
|
+
for (let i = 0; i < blockedTasks.length; i++) {
|
|
56
|
+
const isLast = i === blockedTasks.length - 1;
|
|
57
|
+
const newPrefix = prefix + (isLast ? ' └─ ' : ' ├─ ');
|
|
58
|
+
const childPrefix = prefix + (isLast ? ' ' : ' │ ');
|
|
59
|
+
output += renderTask(blockedTasks[i], depth + 1, newPrefix);
|
|
60
|
+
}
|
|
61
|
+
return output;
|
|
62
|
+
}
|
|
63
|
+
for (const root of rootTasks) {
|
|
64
|
+
graph += renderTask(root, 0);
|
|
65
|
+
}
|
|
66
|
+
return graph;
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Generate DOT graph (Graphviz)
|
|
70
|
+
*/
|
|
71
|
+
function generateDOTGraph(tasks, maxDepth) {
|
|
72
|
+
let dot = 'digraph BeadsTasks {\n';
|
|
73
|
+
dot += ' rankdir=TB;\n';
|
|
74
|
+
dot += ' node [shape=box, style=rounded];\n\n';
|
|
75
|
+
// Add nodes
|
|
76
|
+
for (const task of tasks) {
|
|
77
|
+
const color = getStatusColor(task.status);
|
|
78
|
+
const label = `${task.id}\\n${task.title}`;
|
|
79
|
+
dot += ` "${task.id}" [label="${label}", fillcolor="${color}", style="filled,rounded"];\n`;
|
|
80
|
+
}
|
|
81
|
+
dot += '\n';
|
|
82
|
+
// Add edges
|
|
83
|
+
for (const task of tasks) {
|
|
84
|
+
if (task.blocked_by) {
|
|
85
|
+
for (const blockerId of task.blocked_by) {
|
|
86
|
+
dot += ` "${blockerId}" -> "${task.id}";\n`;
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
dot += '}\n';
|
|
91
|
+
return dot;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Generate Mermaid graph
|
|
95
|
+
*/
|
|
96
|
+
function generateMermaidGraph(tasks, maxDepth) {
|
|
97
|
+
let mermaid = 'graph TD\n';
|
|
98
|
+
// Add nodes
|
|
99
|
+
for (const task of tasks) {
|
|
100
|
+
const sanitizedId = task.id.replace(/[.-]/g, '_');
|
|
101
|
+
const label = `${task.id}: ${task.title}`;
|
|
102
|
+
const shape = getStatusShape(task.status);
|
|
103
|
+
mermaid += ` ${sanitizedId}${shape[0]}"${label}"${shape[1]}\n`;
|
|
104
|
+
}
|
|
105
|
+
mermaid += '\n';
|
|
106
|
+
// Add edges
|
|
107
|
+
for (const task of tasks) {
|
|
108
|
+
if (task.blocked_by) {
|
|
109
|
+
for (const blockerId of task.blocked_by) {
|
|
110
|
+
const sanitizedTaskId = task.id.replace(/[.-]/g, '_');
|
|
111
|
+
const sanitizedBlockerId = blockerId.replace(/[.-]/g, '_');
|
|
112
|
+
mermaid += ` ${sanitizedBlockerId} --> ${sanitizedTaskId}\n`;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
}
|
|
116
|
+
return mermaid;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Generate SVG graph (basic implementation)
|
|
120
|
+
*/
|
|
121
|
+
function generateSVGGraph(tasks, maxDepth) {
|
|
122
|
+
// For now, generate DOT and suggest using Graphviz to convert to SVG
|
|
123
|
+
const dot = generateDOTGraph(tasks, maxDepth);
|
|
124
|
+
return `<!-- Use Graphviz to convert this DOT to SVG: dot -Tsvg input.dot -o output.svg -->\n${dot}`;
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Get color for status
|
|
128
|
+
*/
|
|
129
|
+
function getStatusColor(status) {
|
|
130
|
+
switch (status) {
|
|
131
|
+
case 'open': return 'lightblue';
|
|
132
|
+
case 'in_progress': return 'yellow';
|
|
133
|
+
case 'blocked': return 'orange';
|
|
134
|
+
case 'closed': return 'lightgreen';
|
|
135
|
+
default: return 'white';
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
/**
|
|
139
|
+
* Get Mermaid shape for status
|
|
140
|
+
*/
|
|
141
|
+
function getStatusShape(status) {
|
|
142
|
+
switch (status) {
|
|
143
|
+
case 'open': return ['[', ']'];
|
|
144
|
+
case 'in_progress': return ['([', '])'];
|
|
145
|
+
case 'blocked': return ['{{', '}}'];
|
|
146
|
+
case 'closed': return ['[(', ')]'];
|
|
147
|
+
default: return ['[', ']'];
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
//# sourceMappingURL=beads-graph.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"beads-graph.js","sourceRoot":"","sources":["../../src/utils/beads-graph.ts"],"names":[],"mappings":"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"}
|