@codemieai/code 0.0.18 → 0.0.20
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/agents/core/AgentCLI.d.ts +4 -0
- package/dist/agents/core/AgentCLI.d.ts.map +1 -1
- package/dist/agents/core/AgentCLI.js +97 -24
- package/dist/agents/core/AgentCLI.js.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.d.ts +24 -0
- package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
- package/dist/agents/core/BaseAgentAdapter.js +191 -81
- package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
- package/dist/agents/core/flag-transform.d.ts +37 -0
- package/dist/agents/core/flag-transform.d.ts.map +1 -0
- package/dist/agents/core/flag-transform.js +107 -0
- package/dist/agents/core/flag-transform.js.map +1 -0
- package/dist/agents/core/types.d.ts +53 -6
- package/dist/agents/core/types.d.ts.map +1 -1
- package/dist/agents/plugins/claude.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/claude.plugin.js +11 -4
- package/dist/agents/plugins/claude.plugin.js.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.d.ts +1 -0
- package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codemie-code.plugin.js +14 -26
- package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
- package/dist/agents/plugins/codex.plugin.d.ts +4 -0
- package/dist/agents/plugins/codex.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/codex.plugin.js +231 -22
- package/dist/agents/plugins/codex.plugin.js.map +1 -1
- package/dist/agents/plugins/deepagents.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/deepagents.plugin.js +7 -4
- package/dist/agents/plugins/deepagents.plugin.js.map +1 -1
- package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -1
- package/dist/agents/plugins/gemini.plugin.js +15 -12
- package/dist/agents/plugins/gemini.plugin.js.map +1 -1
- package/dist/cli/commands/doctor/checks/FrameworksCheck.d.ts +12 -0
- package/dist/cli/commands/doctor/checks/FrameworksCheck.d.ts.map +1 -0
- package/dist/cli/commands/doctor/checks/FrameworksCheck.js +103 -0
- package/dist/cli/commands/doctor/checks/FrameworksCheck.js.map +1 -0
- package/dist/cli/commands/doctor/checks/index.d.ts +1 -0
- package/dist/cli/commands/doctor/checks/index.d.ts.map +1 -1
- package/dist/cli/commands/doctor/checks/index.js +1 -0
- package/dist/cli/commands/doctor/checks/index.js.map +1 -1
- package/dist/cli/commands/doctor/index.d.ts.map +1 -1
- package/dist/cli/commands/doctor/index.js +3 -2
- package/dist/cli/commands/doctor/index.js.map +1 -1
- package/dist/cli/commands/install.d.ts.map +1 -1
- package/dist/cli/commands/install.js +79 -30
- package/dist/cli/commands/install.js.map +1 -1
- package/dist/cli/commands/list.d.ts.map +1 -1
- package/dist/cli/commands/list.js +55 -15
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/uninstall.d.ts.map +1 -1
- package/dist/cli/commands/uninstall.js +85 -34
- package/dist/cli/commands/uninstall.js.map +1 -1
- package/dist/cli/index.d.ts +1 -0
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +5 -3
- package/dist/cli/index.js.map +1 -1
- package/dist/frameworks/core/BaseFrameworkAdapter.d.ts +88 -0
- package/dist/frameworks/core/BaseFrameworkAdapter.d.ts.map +1 -0
- package/dist/frameworks/core/BaseFrameworkAdapter.js +156 -0
- package/dist/frameworks/core/BaseFrameworkAdapter.js.map +1 -0
- package/dist/frameworks/core/index.d.ts +9 -0
- package/dist/frameworks/core/index.d.ts.map +1 -0
- package/dist/frameworks/core/index.js +9 -0
- package/dist/frameworks/core/index.js.map +1 -0
- package/dist/frameworks/core/registry.d.ts +53 -0
- package/dist/frameworks/core/registry.d.ts.map +1 -0
- package/dist/frameworks/core/registry.js +82 -0
- package/dist/frameworks/core/registry.js.map +1 -0
- package/dist/frameworks/core/types.d.ts +130 -0
- package/dist/frameworks/core/types.d.ts.map +1 -0
- package/dist/frameworks/core/types.js +8 -0
- package/dist/frameworks/core/types.js.map +1 -0
- package/dist/frameworks/index.d.ts +9 -0
- package/dist/frameworks/index.d.ts.map +1 -0
- package/dist/frameworks/index.js +12 -0
- package/dist/frameworks/index.js.map +1 -0
- package/dist/frameworks/plugins/bmad.plugin.d.ts +46 -0
- package/dist/frameworks/plugins/bmad.plugin.d.ts.map +1 -0
- package/dist/frameworks/plugins/bmad.plugin.js +111 -0
- package/dist/frameworks/plugins/bmad.plugin.js.map +1 -0
- package/dist/frameworks/plugins/index.d.ts +8 -0
- package/dist/frameworks/plugins/index.d.ts.map +1 -0
- package/dist/frameworks/plugins/index.js +15 -0
- package/dist/frameworks/plugins/index.js.map +1 -0
- package/dist/frameworks/plugins/speckit.plugin.d.ts +59 -0
- package/dist/frameworks/plugins/speckit.plugin.d.ts.map +1 -0
- package/dist/frameworks/plugins/speckit.plugin.js +213 -0
- package/dist/frameworks/plugins/speckit.plugin.js.map +1 -0
- package/dist/metrics/config.d.ts.map +1 -1
- package/dist/metrics/config.js +7 -1
- package/dist/metrics/config.js.map +1 -1
- package/dist/metrics/sync/aggregator.d.ts +7 -1
- package/dist/metrics/sync/aggregator.d.ts.map +1 -1
- package/dist/metrics/sync/aggregator.js +14 -5
- package/dist/metrics/sync/aggregator.js.map +1 -1
- package/dist/metrics/sync/post-processor.d.ts +48 -0
- package/dist/metrics/sync/post-processor.d.ts.map +1 -0
- package/dist/metrics/sync/post-processor.js +147 -0
- package/dist/metrics/sync/post-processor.js.map +1 -0
- package/dist/metrics/sync/types.d.ts +2 -2
- package/dist/metrics/sync/types.d.ts.map +1 -1
- package/dist/metrics/types.d.ts +6 -0
- package/dist/metrics/types.d.ts.map +1 -1
- package/dist/providers/core/types.d.ts +0 -5
- package/dist/providers/core/types.d.ts.map +1 -1
- package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -1
- package/dist/providers/plugins/bedrock/bedrock.template.js +0 -5
- package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -1
- package/dist/providers/plugins/litellm/litellm.template.d.ts.map +1 -1
- package/dist/providers/plugins/litellm/litellm.template.js +0 -6
- package/dist/providers/plugins/litellm/litellm.template.js.map +1 -1
- package/dist/providers/plugins/ollama/ollama.template.d.ts.map +1 -1
- package/dist/providers/plugins/ollama/ollama.template.js +22 -17
- package/dist/providers/plugins/ollama/ollama.template.js.map +1 -1
- package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -1
- package/dist/providers/plugins/sso/sso.template.js +0 -5
- package/dist/providers/plugins/sso/sso.template.js.map +1 -1
- package/dist/proxy/plugins/metrics-sync.plugin.js +20 -9
- package/dist/proxy/plugins/metrics-sync.plugin.js.map +1 -1
- package/dist/proxy/plugins/sso-auth.plugin.js +7 -2
- package/dist/proxy/plugins/sso-auth.plugin.js.map +1 -1
- package/dist/utils/codemie-proxy.d.ts +1 -0
- package/dist/utils/codemie-proxy.d.ts.map +1 -1
- package/dist/utils/codemie-proxy.js +9 -3
- package/dist/utils/codemie-proxy.js.map +1 -1
- package/dist/utils/config-loader.d.ts +4 -2
- package/dist/utils/config-loader.d.ts.map +1 -1
- package/dist/utils/config-loader.js +43 -33
- package/dist/utils/config-loader.js.map +1 -1
- package/dist/utils/exec.d.ts +1 -0
- package/dist/utils/exec.d.ts.map +1 -1
- package/dist/utils/exec.js +23 -9
- package/dist/utils/exec.js.map +1 -1
- package/dist/utils/first-time.d.ts +3 -3
- package/dist/utils/first-time.d.ts.map +1 -1
- package/dist/utils/first-time.js +21 -4
- package/dist/utils/first-time.js.map +1 -1
- package/dist/utils/logger.js +2 -2
- package/dist/utils/logger.js.map +1 -1
- package/dist/utils/profile.d.ts +12 -0
- package/dist/utils/profile.d.ts.map +1 -0
- package/dist/utils/profile.js +32 -0
- package/dist/utils/profile.js.map +1 -0
- package/package.json +22 -6
- package/scripts/README.md +80 -0
- package/scripts/release.sh +267 -0
- package/scripts/validate-secrets.js +54 -0
- package/dist/utils/ascii-logo.d.ts +0 -21
- package/dist/utils/ascii-logo.d.ts.map +0 -1
- package/dist/utils/ascii-logo.js +0 -85
- package/dist/utils/ascii-logo.js.map +0 -1
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* BMAD Framework Plugin
|
|
3
|
+
*
|
|
4
|
+
* Integration for BMAD (Business Methodology for Agile Development)
|
|
5
|
+
* Enterprise development methodology with AI agent support
|
|
6
|
+
*
|
|
7
|
+
* Installation: npx-on-demand (no global install needed)
|
|
8
|
+
* Initialization: npx bmad-method@alpha install
|
|
9
|
+
*/
|
|
10
|
+
import { exec } from '../../utils/exec.js';
|
|
11
|
+
import { logger } from '../../utils/logger.js';
|
|
12
|
+
import { BaseFrameworkAdapter } from '../core/BaseFrameworkAdapter.js';
|
|
13
|
+
/**
|
|
14
|
+
* BMAD Framework Metadata
|
|
15
|
+
*/
|
|
16
|
+
export const BmadMetadata = {
|
|
17
|
+
name: 'bmad',
|
|
18
|
+
displayName: 'BMAD Method',
|
|
19
|
+
description: 'Business Methodology for Agile Development with AI agents',
|
|
20
|
+
docsUrl: 'https://github.com/bmad-code-org/BMAD-METHOD',
|
|
21
|
+
repoUrl: 'https://github.com/bmad-code-org/BMAD-METHOD',
|
|
22
|
+
requiresInstallation: false, // Uses npx on-demand
|
|
23
|
+
installMethod: 'npx-on-demand',
|
|
24
|
+
packageName: 'bmad-method@alpha',
|
|
25
|
+
cliCommand: undefined, // No global CLI, uses npx
|
|
26
|
+
isAgentSpecific: false, // Framework-agnostic
|
|
27
|
+
supportedAgents: [], // Empty means all agents
|
|
28
|
+
initDirectory: '.bmad'
|
|
29
|
+
};
|
|
30
|
+
/**
|
|
31
|
+
* BMAD Framework Plugin
|
|
32
|
+
*/
|
|
33
|
+
export class BmadPlugin extends BaseFrameworkAdapter {
|
|
34
|
+
constructor() {
|
|
35
|
+
super(BmadMetadata);
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Install BMAD - Not needed (npx-on-demand)
|
|
39
|
+
*/
|
|
40
|
+
async install() {
|
|
41
|
+
logger.info('BMAD uses npx on-demand. No installation required.');
|
|
42
|
+
logger.info('Run initialization with: codemie-<agent> init bmad');
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Uninstall BMAD - Not needed (npx-on-demand)
|
|
46
|
+
*/
|
|
47
|
+
async uninstall() {
|
|
48
|
+
logger.info('BMAD uses npx on-demand. Nothing to uninstall.');
|
|
49
|
+
logger.info('To remove BMAD from a project, delete the .bmad/ directory.');
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Initialize BMAD in current directory
|
|
53
|
+
*/
|
|
54
|
+
async init(agentName, options) {
|
|
55
|
+
const cwd = options?.cwd || process.cwd();
|
|
56
|
+
const force = options?.force ?? false;
|
|
57
|
+
// Check if already initialized
|
|
58
|
+
if (!force && (await this.isInitialized(cwd))) {
|
|
59
|
+
throw new Error(`BMAD already initialized in ${cwd} (.bmad/ exists). Use --force to re-initialize.`);
|
|
60
|
+
}
|
|
61
|
+
this.logInitStart();
|
|
62
|
+
try {
|
|
63
|
+
// Run npx bmad-method@alpha install
|
|
64
|
+
logger.info('Running BMAD installation via npx (this may take a minute)...');
|
|
65
|
+
const args = ['bmad-method@alpha', 'install'];
|
|
66
|
+
// Add --force if specified
|
|
67
|
+
if (force) {
|
|
68
|
+
args.push('--force');
|
|
69
|
+
}
|
|
70
|
+
await exec('npx', args, {
|
|
71
|
+
cwd,
|
|
72
|
+
timeout: 300000, // 5 minutes for npm download + user input
|
|
73
|
+
interactive: true // Allow user to answer prompts
|
|
74
|
+
});
|
|
75
|
+
this.logInitSuccess(cwd);
|
|
76
|
+
logger.info('Next: Run /workflow-init inside your AI agent to start using BMAD');
|
|
77
|
+
}
|
|
78
|
+
catch (error) {
|
|
79
|
+
this.logInitError(error);
|
|
80
|
+
throw error;
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
/**
|
|
84
|
+
* Check if BMAD is installed - always true (npx-on-demand)
|
|
85
|
+
*/
|
|
86
|
+
async isInstalled() {
|
|
87
|
+
// BMAD doesn't require installation, npx handles it on-demand
|
|
88
|
+
return true;
|
|
89
|
+
}
|
|
90
|
+
/**
|
|
91
|
+
* Get BMAD version
|
|
92
|
+
*/
|
|
93
|
+
async getVersion() {
|
|
94
|
+
try {
|
|
95
|
+
const result = await exec('npx', ['bmad-method@alpha', '--version'], { timeout: 10000 });
|
|
96
|
+
const match = result.stdout.match(/\d+\.\d+\.\d+/);
|
|
97
|
+
return match ? match[0] : null;
|
|
98
|
+
}
|
|
99
|
+
catch {
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Get agent mapping - framework-agnostic, all agents supported
|
|
105
|
+
*/
|
|
106
|
+
getAgentMapping(codemieAgentName) {
|
|
107
|
+
// BMAD is framework-agnostic, no specific mapping needed
|
|
108
|
+
return codemieAgentName;
|
|
109
|
+
}
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=bmad.plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bmad.plugin.js","sourceRoot":"","sources":["../../../src/frameworks/plugins/bmad.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/frameworks/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Framework Plugins
|
|
3
|
+
*
|
|
4
|
+
* Auto-registers all framework plugins with the registry
|
|
5
|
+
*/
|
|
6
|
+
import { FrameworkRegistry } from '../core/registry.js';
|
|
7
|
+
import { SpeckitPlugin } from './speckit.plugin.js';
|
|
8
|
+
import { BmadPlugin } from './bmad.plugin.js';
|
|
9
|
+
// Export plugins
|
|
10
|
+
export { SpeckitPlugin } from './speckit.plugin.js';
|
|
11
|
+
export { BmadPlugin } from './bmad.plugin.js';
|
|
12
|
+
// Auto-register plugins
|
|
13
|
+
FrameworkRegistry.registerFramework(new SpeckitPlugin());
|
|
14
|
+
FrameworkRegistry.registerFramework(new BmadPlugin());
|
|
15
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/frameworks/plugins/index.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,iBAAiB;AACjB,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AACpD,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAE9C,wBAAwB;AACxB,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,aAAa,EAAE,CAAC,CAAC;AACzD,iBAAiB,CAAC,iBAAiB,CAAC,IAAI,UAAU,EAAE,CAAC,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpecKit Framework Plugin
|
|
3
|
+
*
|
|
4
|
+
* Integration for GitHub's SpecKit framework - spec-driven development toolkit
|
|
5
|
+
* https://github.com/github/spec-kit
|
|
6
|
+
*
|
|
7
|
+
* Installation: uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
|
|
8
|
+
* Initialization: specify init <project> --ai <agent> --here --script <sh|ps> --force
|
|
9
|
+
*/
|
|
10
|
+
import { BaseFrameworkAdapter } from '../core/BaseFrameworkAdapter.js';
|
|
11
|
+
import type { FrameworkMetadata, FrameworkInitOptions } from '../core/types.js';
|
|
12
|
+
/**
|
|
13
|
+
* SpecKit Framework Metadata
|
|
14
|
+
*/
|
|
15
|
+
export declare const SpeckitMetadata: FrameworkMetadata;
|
|
16
|
+
/**
|
|
17
|
+
* SpecKit Framework Plugin
|
|
18
|
+
*/
|
|
19
|
+
export declare class SpeckitPlugin extends BaseFrameworkAdapter {
|
|
20
|
+
constructor();
|
|
21
|
+
/**
|
|
22
|
+
* Install SpecKit CLI via uv
|
|
23
|
+
*/
|
|
24
|
+
install(): Promise<void>;
|
|
25
|
+
/**
|
|
26
|
+
* Uninstall SpecKit CLI via uv
|
|
27
|
+
*/
|
|
28
|
+
uninstall(): Promise<void>;
|
|
29
|
+
/**
|
|
30
|
+
* Initialize SpecKit in current directory
|
|
31
|
+
*/
|
|
32
|
+
init(agentName: string, options?: FrameworkInitOptions): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Get agent name mapping
|
|
35
|
+
*/
|
|
36
|
+
getAgentMapping(codemieAgentName: string): string | null;
|
|
37
|
+
/**
|
|
38
|
+
* Override: SpecKit doesn't support --version
|
|
39
|
+
* Check installation via `specify --help` instead
|
|
40
|
+
*/
|
|
41
|
+
isInstalled(): Promise<boolean>;
|
|
42
|
+
/**
|
|
43
|
+
* Override: SpecKit uses `specify version` command instead of --version flag
|
|
44
|
+
*/
|
|
45
|
+
getVersion(): Promise<string | null>;
|
|
46
|
+
/**
|
|
47
|
+
* Check if uv is installed
|
|
48
|
+
*/
|
|
49
|
+
private checkUvInstalled;
|
|
50
|
+
/**
|
|
51
|
+
* Check if git is installed
|
|
52
|
+
*/
|
|
53
|
+
private checkGitInstalled;
|
|
54
|
+
/**
|
|
55
|
+
* Detect script type based on OS
|
|
56
|
+
*/
|
|
57
|
+
private detectScriptType;
|
|
58
|
+
}
|
|
59
|
+
//# sourceMappingURL=speckit.plugin.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speckit.plugin.d.ts","sourceRoot":"","sources":["../../../src/frameworks/plugins/speckit.plugin.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,OAAO,EAAE,oBAAoB,EAAE,MAAM,iCAAiC,CAAC;AACvE,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,kBAAkB,CAAC;AAEhF;;GAEG;AACH,eAAO,MAAM,eAAe,EAAE,iBAa7B,CAAC;AAWF;;GAEG;AACH,qBAAa,aAAc,SAAQ,oBAAoB;;IAKrD;;OAEG;IACG,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkC9B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IAoBhC;;OAEG;IACG,IAAI,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,OAAO,CAAC,IAAI,CAAC;IA6D5E;;OAEG;IACH,eAAe,CAAC,gBAAgB,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI;IAIxD;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;IASrC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IAc1C;;OAEG;YACW,gBAAgB;IAS9B;;OAEG;YACW,iBAAiB;IAS/B;;OAEG;IACH,OAAO,CAAC,gBAAgB;CAIzB"}
|
|
@@ -0,0 +1,213 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SpecKit Framework Plugin
|
|
3
|
+
*
|
|
4
|
+
* Integration for GitHub's SpecKit framework - spec-driven development toolkit
|
|
5
|
+
* https://github.com/github/spec-kit
|
|
6
|
+
*
|
|
7
|
+
* Installation: uv tool install specify-cli --from git+https://github.com/github/spec-kit.git
|
|
8
|
+
* Initialization: specify init <project> --ai <agent> --here --script <sh|ps> --force
|
|
9
|
+
*/
|
|
10
|
+
import { platform } from 'os';
|
|
11
|
+
import { exec } from '../../utils/exec.js';
|
|
12
|
+
import { logger } from '../../utils/logger.js';
|
|
13
|
+
import { BaseFrameworkAdapter } from '../core/BaseFrameworkAdapter.js';
|
|
14
|
+
/**
|
|
15
|
+
* SpecKit Framework Metadata
|
|
16
|
+
*/
|
|
17
|
+
export const SpeckitMetadata = {
|
|
18
|
+
name: 'speckit',
|
|
19
|
+
displayName: 'SpecKit',
|
|
20
|
+
description: 'GitHub\'s spec-driven development toolkit',
|
|
21
|
+
docsUrl: 'https://github.com/github/spec-kit',
|
|
22
|
+
repoUrl: 'https://github.com/github/spec-kit',
|
|
23
|
+
requiresInstallation: true,
|
|
24
|
+
installMethod: 'uv',
|
|
25
|
+
packageName: 'specify-cli',
|
|
26
|
+
cliCommand: 'specify',
|
|
27
|
+
isAgentSpecific: true,
|
|
28
|
+
supportedAgents: ['claude', 'codex', 'gemini'], // Per tech-spec: not supported for codemie-code, deepagents
|
|
29
|
+
initDirectory: '.specify' // SpecKit creates .specify/ directory, not .speckit/
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Agent name mapping: CodeMie → SpecKit
|
|
33
|
+
*/
|
|
34
|
+
const AGENT_MAPPING = {
|
|
35
|
+
claude: 'claude',
|
|
36
|
+
codex: 'codex',
|
|
37
|
+
gemini: 'gemini'
|
|
38
|
+
};
|
|
39
|
+
/**
|
|
40
|
+
* SpecKit Framework Plugin
|
|
41
|
+
*/
|
|
42
|
+
export class SpeckitPlugin extends BaseFrameworkAdapter {
|
|
43
|
+
constructor() {
|
|
44
|
+
super(SpeckitMetadata);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Install SpecKit CLI via uv
|
|
48
|
+
*/
|
|
49
|
+
async install() {
|
|
50
|
+
this.logInstallStart();
|
|
51
|
+
try {
|
|
52
|
+
// Check if uv is installed
|
|
53
|
+
const hasUv = await this.checkUvInstalled();
|
|
54
|
+
if (!hasUv) {
|
|
55
|
+
throw new Error('uv is not installed. Install it with: curl -LsSf https://astral.sh/uv/install.sh | sh');
|
|
56
|
+
}
|
|
57
|
+
// Check if git is installed (required by uv tool install --from git+...)
|
|
58
|
+
const hasGit = await this.checkGitInstalled();
|
|
59
|
+
if (!hasGit) {
|
|
60
|
+
throw new Error('git is not installed. SpecKit installation requires git.');
|
|
61
|
+
}
|
|
62
|
+
// Install via uv tool install
|
|
63
|
+
logger.info('Installing SpecKit via uv (this may take a minute)...');
|
|
64
|
+
await exec('uv', ['tool', 'install', 'specify-cli', '--from', 'git+https://github.com/github/spec-kit.git'], { timeout: 120000 } // 2 minutes timeout for git clone + install
|
|
65
|
+
);
|
|
66
|
+
const version = await this.getVersion();
|
|
67
|
+
this.logInstallSuccess(version || undefined);
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
this.logInstallError(error);
|
|
71
|
+
throw error;
|
|
72
|
+
}
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Uninstall SpecKit CLI via uv
|
|
76
|
+
*/
|
|
77
|
+
async uninstall() {
|
|
78
|
+
this.logUninstallStart();
|
|
79
|
+
try {
|
|
80
|
+
// Check if uv is installed
|
|
81
|
+
const hasUv = await this.checkUvInstalled();
|
|
82
|
+
if (!hasUv) {
|
|
83
|
+
throw new Error('uv is not installed. Cannot uninstall SpecKit.');
|
|
84
|
+
}
|
|
85
|
+
// Uninstall via uv tool uninstall
|
|
86
|
+
await exec('uv', ['tool', 'uninstall', 'specify-cli'], { timeout: 30000 });
|
|
87
|
+
this.logUninstallSuccess();
|
|
88
|
+
}
|
|
89
|
+
catch (error) {
|
|
90
|
+
this.logUninstallError(error);
|
|
91
|
+
throw error;
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Initialize SpecKit in current directory
|
|
96
|
+
*/
|
|
97
|
+
async init(agentName, options) {
|
|
98
|
+
this.assertAgentSupported(agentName);
|
|
99
|
+
const cwd = options?.cwd || process.cwd();
|
|
100
|
+
const force = options?.force ?? false;
|
|
101
|
+
// Check if already initialized
|
|
102
|
+
if (!force && (await this.isInitialized(cwd))) {
|
|
103
|
+
throw new Error(`SpecKit already initialized in ${cwd} (.specify/ exists). Use --force to re-initialize.`);
|
|
104
|
+
}
|
|
105
|
+
// Ensure SpecKit CLI is installed
|
|
106
|
+
const installed = await this.isInstalled();
|
|
107
|
+
let specifyCommand = 'specify';
|
|
108
|
+
if (!installed) {
|
|
109
|
+
logger.warn('SpecKit CLI not found. Installing...');
|
|
110
|
+
await this.install();
|
|
111
|
+
// After installation, use full path since PATH may not be updated
|
|
112
|
+
const { homedir } = await import('os');
|
|
113
|
+
const { join } = await import('path');
|
|
114
|
+
specifyCommand = join(homedir(), '.local', 'bin', 'specify');
|
|
115
|
+
}
|
|
116
|
+
this.logInitStart(agentName);
|
|
117
|
+
try {
|
|
118
|
+
// Get framework agent name
|
|
119
|
+
const frameworkAgent = this.getAgentMapping(agentName);
|
|
120
|
+
if (!frameworkAgent) {
|
|
121
|
+
throw new Error(`Agent '${agentName}' is not supported by SpecKit`);
|
|
122
|
+
}
|
|
123
|
+
// Detect OS for script type
|
|
124
|
+
const scriptType = this.detectScriptType();
|
|
125
|
+
// Build specify init command
|
|
126
|
+
// Note: When using --here, we don't provide a project name
|
|
127
|
+
const args = [
|
|
128
|
+
'init',
|
|
129
|
+
'--here', // Initialize in current directory
|
|
130
|
+
'--ai',
|
|
131
|
+
frameworkAgent,
|
|
132
|
+
'--script',
|
|
133
|
+
scriptType,
|
|
134
|
+
'--force' // Always force to avoid interactive prompts
|
|
135
|
+
];
|
|
136
|
+
// Run specify init (use full path if just installed)
|
|
137
|
+
await exec(specifyCommand, args, { cwd, timeout: 60000 });
|
|
138
|
+
this.logInitSuccess(cwd);
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
this.logInitError(error);
|
|
142
|
+
throw error;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get agent name mapping
|
|
147
|
+
*/
|
|
148
|
+
getAgentMapping(codemieAgentName) {
|
|
149
|
+
return AGENT_MAPPING[codemieAgentName] || null;
|
|
150
|
+
}
|
|
151
|
+
/**
|
|
152
|
+
* Override: SpecKit doesn't support --version
|
|
153
|
+
* Check installation via `specify --help` instead
|
|
154
|
+
*/
|
|
155
|
+
async isInstalled() {
|
|
156
|
+
try {
|
|
157
|
+
const result = await exec('specify', ['--help'], { timeout: 5000 });
|
|
158
|
+
return result.code === 0;
|
|
159
|
+
}
|
|
160
|
+
catch {
|
|
161
|
+
return false;
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
/**
|
|
165
|
+
* Override: SpecKit uses `specify version` command instead of --version flag
|
|
166
|
+
*/
|
|
167
|
+
async getVersion() {
|
|
168
|
+
try {
|
|
169
|
+
const result = await exec('specify', ['version'], { timeout: 5000 });
|
|
170
|
+
if (result.code === 0 && result.stdout) {
|
|
171
|
+
// Extract version from output
|
|
172
|
+
const match = result.stdout.match(/Version:\s*(\S+)/i) || result.stdout.match(/(\d+\.\d+\.\d+)/);
|
|
173
|
+
return match ? match[1] : null;
|
|
174
|
+
}
|
|
175
|
+
return null;
|
|
176
|
+
}
|
|
177
|
+
catch {
|
|
178
|
+
return null;
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Check if uv is installed
|
|
183
|
+
*/
|
|
184
|
+
async checkUvInstalled() {
|
|
185
|
+
try {
|
|
186
|
+
await exec('uv', ['--version'], { timeout: 2000 });
|
|
187
|
+
return true;
|
|
188
|
+
}
|
|
189
|
+
catch {
|
|
190
|
+
return false;
|
|
191
|
+
}
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Check if git is installed
|
|
195
|
+
*/
|
|
196
|
+
async checkGitInstalled() {
|
|
197
|
+
try {
|
|
198
|
+
await exec('git', ['--version'], { timeout: 2000 });
|
|
199
|
+
return true;
|
|
200
|
+
}
|
|
201
|
+
catch {
|
|
202
|
+
return false;
|
|
203
|
+
}
|
|
204
|
+
}
|
|
205
|
+
/**
|
|
206
|
+
* Detect script type based on OS
|
|
207
|
+
*/
|
|
208
|
+
detectScriptType() {
|
|
209
|
+
const os = platform();
|
|
210
|
+
return os === 'win32' ? 'ps' : 'sh';
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
//# sourceMappingURL=speckit.plugin.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"speckit.plugin.js","sourceRoot":"","sources":["../../../src/frameworks/plugins/speckit.plugin.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/metrics/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/metrics/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,aA4C5B,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,aAAa;;;CAGzB,CAAC;AAEF;;GAEG;AACH,wBAAgB,cAAc,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,CAIvD;AAED;;;GAGG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAExD;AAED;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE/D;AAED;;;;GAIG;AACH,wBAAgB,gBAAgB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM,CAE1D"}
|
package/dist/metrics/config.js
CHANGED
|
@@ -38,7 +38,13 @@ export const METRICS_CONFIG = {
|
|
|
38
38
|
*/
|
|
39
39
|
watermark: {
|
|
40
40
|
ttl: 24 * 60 * 60 * 1000 // 24 hours
|
|
41
|
-
}
|
|
41
|
+
},
|
|
42
|
+
/**
|
|
43
|
+
* Post-processing configuration
|
|
44
|
+
* Global default: exclude errors from shell tools (contains sensitive command output)
|
|
45
|
+
* Individual agents can override this via their metricsConfig.excludeErrorsFromTools
|
|
46
|
+
*/
|
|
47
|
+
excludeErrorsFromTools: ['Bash', 'Execute', 'Shell']
|
|
42
48
|
};
|
|
43
49
|
/**
|
|
44
50
|
* Storage paths
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/metrics/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C;;OAEG;IACH,OAAO,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,QAAQ,KAAK,YAAY;IAExD;;;OAGG;IACH,SAAS,EAAE;QACT,MAAM,EAAE,GAAG;QACX,8BAA8B;KAC/B;IAED;;OAEG;IACH,KAAK,EAAE;QACL,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,sBAAsB;KAC7D;IAED;;OAEG;IACH,UAAU,EAAE;QACV,YAAY,EAAE,IAAI,EAAE,sBAAsB;QAC1C,aAAa,EAAE,IAAI,CAAC,gCAAgC;KACrD;IAED;;OAEG;IACH,SAAS,EAAE;QACT,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW;KACrC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/metrics/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAIH;;GAEG;AACH,MAAM,CAAC,MAAM,cAAc,GAAkB;IAC3C;;OAEG;IACH,OAAO,EAAE,CAAC,QAAgB,EAAE,EAAE,CAAC,QAAQ,KAAK,YAAY;IAExD;;;OAGG;IACH,SAAS,EAAE;QACT,MAAM,EAAE,GAAG;QACX,8BAA8B;KAC/B;IAED;;OAEG;IACH,KAAK,EAAE;QACL,QAAQ,EAAE,CAAC;QACX,MAAM,EAAE,CAAC,GAAG,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC,sBAAsB;KAC7D;IAED;;OAEG;IACH,UAAU,EAAE;QACV,YAAY,EAAE,IAAI,EAAE,sBAAsB;QAC1C,aAAa,EAAE,IAAI,CAAC,gCAAgC;KACrD;IAED;;OAEG;IACH,SAAS,EAAE;QACT,GAAG,EAAE,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,WAAW;KACrC;IAED;;;;OAIG;IACH,sBAAsB,EAAE,CAAC,MAAM,EAAE,SAAS,EAAE,OAAO,CAAC;CACrD,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,IAAI,EAAE,kBAAkB;IACxB,QAAQ,EAAE,UAAU;CACrB,CAAC;AAEF;;GAEG;AACH,MAAM,UAAU,cAAc,CAAC,OAAgB;IAC7C,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,GAAG,CAAC;IACnE,MAAM,IAAI,GAAG,GAAG,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,CAAC;IAChD,OAAO,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,cAAc,CAAC,SAAiB;IAC9C,OAAO,cAAc,CAAC,GAAG,aAAa,CAAC,QAAQ,IAAI,SAAS,OAAO,CAAC,CAAC;AACvE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CAAC,SAAiB;IACrD,OAAO,cAAc,CAAC,GAAG,aAAa,CAAC,QAAQ,IAAI,SAAS,gBAAgB,CAAC,CAAC;AAChF,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,gBAAgB,CAAC,SAAiB;IAChD,OAAO,cAAc,CAAC,GAAG,aAAa,CAAC,QAAQ,IAAI,SAAS,OAAO,CAAC,CAAC;AACvE,CAAC"}
|
|
@@ -6,9 +6,15 @@
|
|
|
6
6
|
*/
|
|
7
7
|
import type { MetricDelta, MetricsSession } from '../types.js';
|
|
8
8
|
import type { SessionMetric } from './types.js';
|
|
9
|
+
import type { AgentMetricsConfig } from '../../agents/core/types.js';
|
|
9
10
|
/**
|
|
10
11
|
* Aggregate pending deltas into session metrics grouped by branch
|
|
11
12
|
* Returns one metric per branch to prevent mixing metrics between branches
|
|
13
|
+
*
|
|
14
|
+
* @param deltas - Metric deltas to aggregate
|
|
15
|
+
* @param session - Metrics session information
|
|
16
|
+
* @param version - CLI version
|
|
17
|
+
* @param agentConfig - Optional agent-specific metrics configuration (for post-processing)
|
|
12
18
|
*/
|
|
13
|
-
export declare function aggregateDeltas(deltas: MetricDelta[], session: MetricsSession, version: string): SessionMetric[];
|
|
19
|
+
export declare function aggregateDeltas(deltas: MetricDelta[], session: MetricsSession, version: string, agentConfig?: AgentMetricsConfig): SessionMetric[];
|
|
14
20
|
//# sourceMappingURL=aggregator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregator.d.ts","sourceRoot":"","sources":["../../../src/metrics/sync/aggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAC,WAAW,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAoB,aAAa,EAAC,MAAM,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"aggregator.d.ts","sourceRoot":"","sources":["../../../src/metrics/sync/aggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAC,WAAW,EAAE,cAAc,EAAC,MAAM,aAAa,CAAC;AAC7D,OAAO,KAAK,EAAoB,aAAa,EAAC,MAAM,YAAY,CAAC;AACjE,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAInE;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EAAE,EACrB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,EACf,WAAW,CAAC,EAAE,kBAAkB,GAC/B,aAAa,EAAE,CAuCjB"}
|
|
@@ -5,11 +5,17 @@
|
|
|
5
5
|
* Reuses patterns from analytics system.
|
|
6
6
|
*/
|
|
7
7
|
import { logger } from '../../utils/logger.js';
|
|
8
|
+
import { postProcessMetric } from './post-processor.js';
|
|
8
9
|
/**
|
|
9
10
|
* Aggregate pending deltas into session metrics grouped by branch
|
|
10
11
|
* Returns one metric per branch to prevent mixing metrics between branches
|
|
12
|
+
*
|
|
13
|
+
* @param deltas - Metric deltas to aggregate
|
|
14
|
+
* @param session - Metrics session information
|
|
15
|
+
* @param version - CLI version
|
|
16
|
+
* @param agentConfig - Optional agent-specific metrics configuration (for post-processing)
|
|
11
17
|
*/
|
|
12
|
-
export function aggregateDeltas(deltas, session, version) {
|
|
18
|
+
export function aggregateDeltas(deltas, session, version, agentConfig) {
|
|
13
19
|
logger.debug(`[aggregator] Aggregating ${deltas.length} deltas for session ${session.sessionId}`);
|
|
14
20
|
// Group deltas by branch
|
|
15
21
|
const deltasByBranch = new Map();
|
|
@@ -28,10 +34,13 @@ export function aggregateDeltas(deltas, session, version) {
|
|
|
28
34
|
// Build attributes from deltas for this branch
|
|
29
35
|
const attributes = buildSessionAttributes(branchDeltas, session, version, branch);
|
|
30
36
|
// Create session metric for this branch
|
|
31
|
-
|
|
37
|
+
const metric = {
|
|
32
38
|
name: 'codemie_cli_usage_total',
|
|
33
39
|
attributes
|
|
34
|
-
}
|
|
40
|
+
};
|
|
41
|
+
// Post-process metric to sanitize sensitive data
|
|
42
|
+
const sanitized = postProcessMetric(metric, agentConfig);
|
|
43
|
+
metrics.push(sanitized);
|
|
35
44
|
}
|
|
36
45
|
return metrics;
|
|
37
46
|
}
|
|
@@ -142,9 +151,9 @@ function buildSessionAttributes(deltas, session, version, branch) {
|
|
|
142
151
|
agent: session.agentName,
|
|
143
152
|
agent_version: version,
|
|
144
153
|
llm_model: primaryModel || 'unknown',
|
|
145
|
-
|
|
154
|
+
repository: session.workingDirectory,
|
|
146
155
|
session_id: session.sessionId,
|
|
147
|
-
|
|
156
|
+
branch: branch,
|
|
148
157
|
// Interaction Metrics
|
|
149
158
|
total_user_prompts: userPromptCount,
|
|
150
159
|
// Token Metrics
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../../../src/metrics/sync/aggregator.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;
|
|
1
|
+
{"version":3,"file":"aggregator.js","sourceRoot":"","sources":["../../../src/metrics/sync/aggregator.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Metrics Post-Processor
|
|
3
|
+
*
|
|
4
|
+
* Sanitizes metrics before sending to API:
|
|
5
|
+
* 1. Truncates project paths to prevent leaking sensitive directory info
|
|
6
|
+
* 2. Filters out tool errors based on agent configuration
|
|
7
|
+
* 3. Escapes/sanitizes error messages to prevent JSON issues
|
|
8
|
+
*/
|
|
9
|
+
import type { SessionMetric } from './types.js';
|
|
10
|
+
import type { AgentMetricsConfig } from '../../agents/core/types.js';
|
|
11
|
+
/**
|
|
12
|
+
* Post-process a session metric to sanitize sensitive data
|
|
13
|
+
*
|
|
14
|
+
* @param metric - The metric to sanitize
|
|
15
|
+
* @param agentConfig - Optional agent-specific configuration (overrides global defaults)
|
|
16
|
+
*/
|
|
17
|
+
export declare function postProcessMetric(metric: SessionMetric, agentConfig?: AgentMetricsConfig): SessionMetric;
|
|
18
|
+
/**
|
|
19
|
+
* Truncate project path to parent/current format
|
|
20
|
+
* Prevents leaking full directory structure
|
|
21
|
+
*
|
|
22
|
+
* Uses path.normalize() to handle mixed separators and edge cases
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* '/Users/Nikita/repos/EPMCDME/codemie-ai/codemie-code' → 'codemie-ai/codemie-code'
|
|
26
|
+
* 'C:\\Users\\Dev\\projects\\my-app' → 'projects/my-app'
|
|
27
|
+
* 'C:/Users/Name\\project' → 'Name/project' (mixed separators)
|
|
28
|
+
* '/' → 'unknown' (root)
|
|
29
|
+
* './parent/current' → 'parent/current' (relative)
|
|
30
|
+
*/
|
|
31
|
+
export declare function truncateProjectPath(fullPath: string): string;
|
|
32
|
+
/**
|
|
33
|
+
* Filter and sanitize errors based on agent configuration
|
|
34
|
+
* Removes errors from excluded tools and sanitizes remaining errors
|
|
35
|
+
*
|
|
36
|
+
* @param errors - Map of tool names to error message arrays
|
|
37
|
+
* @param agentConfig - Optional agent-specific configuration (overrides global defaults)
|
|
38
|
+
*/
|
|
39
|
+
export declare function filterAndSanitizeErrors(errors: Record<string, string[]>, agentConfig?: AgentMetricsConfig): Record<string, string[]>;
|
|
40
|
+
/**
|
|
41
|
+
* Sanitize error message
|
|
42
|
+
* 1. Strip ANSI color codes using strip-ansi library
|
|
43
|
+
* 2. Normalize newlines
|
|
44
|
+
* 3. Truncate at last complete line under 1000 chars (better UX)
|
|
45
|
+
* 4. Escape for JSON safety
|
|
46
|
+
*/
|
|
47
|
+
export declare function sanitizeError(error: string): string;
|
|
48
|
+
//# sourceMappingURL=post-processor.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"post-processor.d.ts","sourceRoot":"","sources":["../../../src/metrics/sync/post-processor.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EAAC,aAAa,EAAC,MAAM,YAAY,CAAC;AAC9C,OAAO,KAAK,EAAC,kBAAkB,EAAC,MAAM,4BAA4B,CAAC;AAInE;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,aAAa,EACrB,WAAW,CAAC,EAAE,kBAAkB,GAC/B,aAAa,CA2Bf;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAqC5D;AAED;;;;;;GAMG;AACH,wBAAgB,uBAAuB,CACrC,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,EAChC,WAAW,CAAC,EAAE,kBAAkB,GAC/B,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,CAuB1B;AAED;;;;;;GAMG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAgCnD"}
|