@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.
Files changed (150) hide show
  1. package/dist/agents/core/AgentCLI.d.ts +4 -0
  2. package/dist/agents/core/AgentCLI.d.ts.map +1 -1
  3. package/dist/agents/core/AgentCLI.js +97 -24
  4. package/dist/agents/core/AgentCLI.js.map +1 -1
  5. package/dist/agents/core/BaseAgentAdapter.d.ts +24 -0
  6. package/dist/agents/core/BaseAgentAdapter.d.ts.map +1 -1
  7. package/dist/agents/core/BaseAgentAdapter.js +191 -81
  8. package/dist/agents/core/BaseAgentAdapter.js.map +1 -1
  9. package/dist/agents/core/flag-transform.d.ts +37 -0
  10. package/dist/agents/core/flag-transform.d.ts.map +1 -0
  11. package/dist/agents/core/flag-transform.js +107 -0
  12. package/dist/agents/core/flag-transform.js.map +1 -0
  13. package/dist/agents/core/types.d.ts +53 -6
  14. package/dist/agents/core/types.d.ts.map +1 -1
  15. package/dist/agents/plugins/claude.plugin.d.ts.map +1 -1
  16. package/dist/agents/plugins/claude.plugin.js +11 -4
  17. package/dist/agents/plugins/claude.plugin.js.map +1 -1
  18. package/dist/agents/plugins/codemie-code.plugin.d.ts +1 -0
  19. package/dist/agents/plugins/codemie-code.plugin.d.ts.map +1 -1
  20. package/dist/agents/plugins/codemie-code.plugin.js +14 -26
  21. package/dist/agents/plugins/codemie-code.plugin.js.map +1 -1
  22. package/dist/agents/plugins/codex.plugin.d.ts +4 -0
  23. package/dist/agents/plugins/codex.plugin.d.ts.map +1 -1
  24. package/dist/agents/plugins/codex.plugin.js +231 -22
  25. package/dist/agents/plugins/codex.plugin.js.map +1 -1
  26. package/dist/agents/plugins/deepagents.plugin.d.ts.map +1 -1
  27. package/dist/agents/plugins/deepagents.plugin.js +7 -4
  28. package/dist/agents/plugins/deepagents.plugin.js.map +1 -1
  29. package/dist/agents/plugins/gemini.plugin.d.ts.map +1 -1
  30. package/dist/agents/plugins/gemini.plugin.js +15 -12
  31. package/dist/agents/plugins/gemini.plugin.js.map +1 -1
  32. package/dist/cli/commands/doctor/checks/FrameworksCheck.d.ts +12 -0
  33. package/dist/cli/commands/doctor/checks/FrameworksCheck.d.ts.map +1 -0
  34. package/dist/cli/commands/doctor/checks/FrameworksCheck.js +103 -0
  35. package/dist/cli/commands/doctor/checks/FrameworksCheck.js.map +1 -0
  36. package/dist/cli/commands/doctor/checks/index.d.ts +1 -0
  37. package/dist/cli/commands/doctor/checks/index.d.ts.map +1 -1
  38. package/dist/cli/commands/doctor/checks/index.js +1 -0
  39. package/dist/cli/commands/doctor/checks/index.js.map +1 -1
  40. package/dist/cli/commands/doctor/index.d.ts.map +1 -1
  41. package/dist/cli/commands/doctor/index.js +3 -2
  42. package/dist/cli/commands/doctor/index.js.map +1 -1
  43. package/dist/cli/commands/install.d.ts.map +1 -1
  44. package/dist/cli/commands/install.js +79 -30
  45. package/dist/cli/commands/install.js.map +1 -1
  46. package/dist/cli/commands/list.d.ts.map +1 -1
  47. package/dist/cli/commands/list.js +55 -15
  48. package/dist/cli/commands/list.js.map +1 -1
  49. package/dist/cli/commands/uninstall.d.ts.map +1 -1
  50. package/dist/cli/commands/uninstall.js +85 -34
  51. package/dist/cli/commands/uninstall.js.map +1 -1
  52. package/dist/cli/index.d.ts +1 -0
  53. package/dist/cli/index.d.ts.map +1 -1
  54. package/dist/cli/index.js +5 -3
  55. package/dist/cli/index.js.map +1 -1
  56. package/dist/frameworks/core/BaseFrameworkAdapter.d.ts +88 -0
  57. package/dist/frameworks/core/BaseFrameworkAdapter.d.ts.map +1 -0
  58. package/dist/frameworks/core/BaseFrameworkAdapter.js +156 -0
  59. package/dist/frameworks/core/BaseFrameworkAdapter.js.map +1 -0
  60. package/dist/frameworks/core/index.d.ts +9 -0
  61. package/dist/frameworks/core/index.d.ts.map +1 -0
  62. package/dist/frameworks/core/index.js +9 -0
  63. package/dist/frameworks/core/index.js.map +1 -0
  64. package/dist/frameworks/core/registry.d.ts +53 -0
  65. package/dist/frameworks/core/registry.d.ts.map +1 -0
  66. package/dist/frameworks/core/registry.js +82 -0
  67. package/dist/frameworks/core/registry.js.map +1 -0
  68. package/dist/frameworks/core/types.d.ts +130 -0
  69. package/dist/frameworks/core/types.d.ts.map +1 -0
  70. package/dist/frameworks/core/types.js +8 -0
  71. package/dist/frameworks/core/types.js.map +1 -0
  72. package/dist/frameworks/index.d.ts +9 -0
  73. package/dist/frameworks/index.d.ts.map +1 -0
  74. package/dist/frameworks/index.js +12 -0
  75. package/dist/frameworks/index.js.map +1 -0
  76. package/dist/frameworks/plugins/bmad.plugin.d.ts +46 -0
  77. package/dist/frameworks/plugins/bmad.plugin.d.ts.map +1 -0
  78. package/dist/frameworks/plugins/bmad.plugin.js +111 -0
  79. package/dist/frameworks/plugins/bmad.plugin.js.map +1 -0
  80. package/dist/frameworks/plugins/index.d.ts +8 -0
  81. package/dist/frameworks/plugins/index.d.ts.map +1 -0
  82. package/dist/frameworks/plugins/index.js +15 -0
  83. package/dist/frameworks/plugins/index.js.map +1 -0
  84. package/dist/frameworks/plugins/speckit.plugin.d.ts +59 -0
  85. package/dist/frameworks/plugins/speckit.plugin.d.ts.map +1 -0
  86. package/dist/frameworks/plugins/speckit.plugin.js +213 -0
  87. package/dist/frameworks/plugins/speckit.plugin.js.map +1 -0
  88. package/dist/metrics/config.d.ts.map +1 -1
  89. package/dist/metrics/config.js +7 -1
  90. package/dist/metrics/config.js.map +1 -1
  91. package/dist/metrics/sync/aggregator.d.ts +7 -1
  92. package/dist/metrics/sync/aggregator.d.ts.map +1 -1
  93. package/dist/metrics/sync/aggregator.js +14 -5
  94. package/dist/metrics/sync/aggregator.js.map +1 -1
  95. package/dist/metrics/sync/post-processor.d.ts +48 -0
  96. package/dist/metrics/sync/post-processor.d.ts.map +1 -0
  97. package/dist/metrics/sync/post-processor.js +147 -0
  98. package/dist/metrics/sync/post-processor.js.map +1 -0
  99. package/dist/metrics/sync/types.d.ts +2 -2
  100. package/dist/metrics/sync/types.d.ts.map +1 -1
  101. package/dist/metrics/types.d.ts +6 -0
  102. package/dist/metrics/types.d.ts.map +1 -1
  103. package/dist/providers/core/types.d.ts +0 -5
  104. package/dist/providers/core/types.d.ts.map +1 -1
  105. package/dist/providers/plugins/bedrock/bedrock.template.d.ts.map +1 -1
  106. package/dist/providers/plugins/bedrock/bedrock.template.js +0 -5
  107. package/dist/providers/plugins/bedrock/bedrock.template.js.map +1 -1
  108. package/dist/providers/plugins/litellm/litellm.template.d.ts.map +1 -1
  109. package/dist/providers/plugins/litellm/litellm.template.js +0 -6
  110. package/dist/providers/plugins/litellm/litellm.template.js.map +1 -1
  111. package/dist/providers/plugins/ollama/ollama.template.d.ts.map +1 -1
  112. package/dist/providers/plugins/ollama/ollama.template.js +22 -17
  113. package/dist/providers/plugins/ollama/ollama.template.js.map +1 -1
  114. package/dist/providers/plugins/sso/sso.template.d.ts.map +1 -1
  115. package/dist/providers/plugins/sso/sso.template.js +0 -5
  116. package/dist/providers/plugins/sso/sso.template.js.map +1 -1
  117. package/dist/proxy/plugins/metrics-sync.plugin.js +20 -9
  118. package/dist/proxy/plugins/metrics-sync.plugin.js.map +1 -1
  119. package/dist/proxy/plugins/sso-auth.plugin.js +7 -2
  120. package/dist/proxy/plugins/sso-auth.plugin.js.map +1 -1
  121. package/dist/utils/codemie-proxy.d.ts +1 -0
  122. package/dist/utils/codemie-proxy.d.ts.map +1 -1
  123. package/dist/utils/codemie-proxy.js +9 -3
  124. package/dist/utils/codemie-proxy.js.map +1 -1
  125. package/dist/utils/config-loader.d.ts +4 -2
  126. package/dist/utils/config-loader.d.ts.map +1 -1
  127. package/dist/utils/config-loader.js +43 -33
  128. package/dist/utils/config-loader.js.map +1 -1
  129. package/dist/utils/exec.d.ts +1 -0
  130. package/dist/utils/exec.d.ts.map +1 -1
  131. package/dist/utils/exec.js +23 -9
  132. package/dist/utils/exec.js.map +1 -1
  133. package/dist/utils/first-time.d.ts +3 -3
  134. package/dist/utils/first-time.d.ts.map +1 -1
  135. package/dist/utils/first-time.js +21 -4
  136. package/dist/utils/first-time.js.map +1 -1
  137. package/dist/utils/logger.js +2 -2
  138. package/dist/utils/logger.js.map +1 -1
  139. package/dist/utils/profile.d.ts +12 -0
  140. package/dist/utils/profile.d.ts.map +1 -0
  141. package/dist/utils/profile.js +32 -0
  142. package/dist/utils/profile.js.map +1 -0
  143. package/package.json +22 -6
  144. package/scripts/README.md +80 -0
  145. package/scripts/release.sh +267 -0
  146. package/scripts/validate-secrets.js +54 -0
  147. package/dist/utils/ascii-logo.d.ts +0 -21
  148. package/dist/utils/ascii-logo.d.ts.map +0 -1
  149. package/dist/utils/ascii-logo.js +0 -85
  150. 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,8 @@
1
+ /**
2
+ * Framework Plugins
3
+ *
4
+ * Auto-registers all framework plugins with the registry
5
+ */
6
+ export { SpeckitPlugin } from './speckit.plugin.js';
7
+ export { BmadPlugin } from './bmad.plugin.js';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -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,aAqC5B,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"}
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"}
@@ -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;CACF,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"}
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;AAGjE;;;GAGG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,WAAW,EAAE,EACrB,OAAO,EAAE,cAAc,EACvB,OAAO,EAAE,MAAM,GACd,aAAa,EAAE,CAmCjB"}
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
- metrics.push({
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
- project: session.workingDirectory,
154
+ repository: session.workingDirectory,
146
155
  session_id: session.sessionId,
147
- git_branch: branch,
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":"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"}
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"}