sinapse-ai 1.12.2 → 1.14.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.
Files changed (244) hide show
  1. package/.claude/CLAUDE.md +2 -2
  2. package/.claude/rules/agent-memory-imports.md +4 -0
  3. package/.sinapse-ai/cli/commands/pro/index.js +8 -48
  4. package/.sinapse-ai/constitution.md +6 -2
  5. package/.sinapse-ai/data/entity-registry.yaml +63 -429
  6. package/.sinapse-ai/development/agents/analyst/MEMORY.md +19 -0
  7. package/.sinapse-ai/development/agents/architect/MEMORY.md +52 -0
  8. package/.sinapse-ai/development/agents/data-engineer/MEMORY.md +55 -0
  9. package/.sinapse-ai/development/agents/developer/MEMORY.md +53 -0
  10. package/.sinapse-ai/development/agents/devops/MEMORY.md +56 -0
  11. package/.sinapse-ai/development/agents/product-lead/MEMORY.md +53 -0
  12. package/.sinapse-ai/development/agents/project-lead/MEMORY.md +53 -0
  13. package/.sinapse-ai/development/agents/quality-gate/MEMORY.md +52 -0
  14. package/.sinapse-ai/development/agents/snps-orqx.md +15 -0
  15. package/.sinapse-ai/development/agents/sprint-lead/MEMORY.md +53 -0
  16. package/.sinapse-ai/development/agents/squad-creator.md +15 -0
  17. package/.sinapse-ai/development/agents/ux/MEMORY.md +21 -0
  18. package/.sinapse-ai/development/templates/chrome-brain/knowledge-base/chrome-brain.md +2 -2
  19. package/.sinapse-ai/infrastructure/scripts/ide-sync/index.js +15 -0
  20. package/.sinapse-ai/infrastructure/scripts/validate-agents.js +159 -8
  21. package/.sinapse-ai/install-manifest.yaml +16 -152
  22. package/AGENTS.md +13 -2
  23. package/CHANGELOG.md +135 -3
  24. package/README.en.md +1 -1
  25. package/README.md +6 -26
  26. package/bin/cli.js +2 -7
  27. package/bin/commands/install.js +19 -257
  28. package/bin/commands/update.js +18 -78
  29. package/bin/lib/command-generator.js +261 -0
  30. package/bin/lib/prompts.js +2 -65
  31. package/bin/modules/chrome-brain-installer.js +2 -1
  32. package/bin/postinstall.js +6 -6
  33. package/docs/getting-started.md +0 -1
  34. package/docs/pt/getting-started.md +1 -1
  35. package/docs/security/dependabot-triage.md +17 -17
  36. package/package.json +6 -3
  37. package/packages/installer/src/wizard/i18n.js +3 -204
  38. package/packages/installer/src/wizard/index.js +1 -1
  39. package/packages/installer/src/wizard/questions.js +5 -368
  40. package/packages/installer/src/wizard/wizard.js +0 -9
  41. package/scripts/generate-install-manifest.js +6 -0
  42. package/scripts/validate-changelog-tags.js +97 -0
  43. package/scripts/validate-no-personal-leaks.js +184 -28
  44. package/scripts/validate-schemas.js +55 -10
  45. package/scripts/validate-story-meta.js +25 -12
  46. package/squads/claude-code-mastery/agents/claude-mastery-chief.md +15 -1
  47. package/squads/claude-code-mastery/agents/config-engineer.md +15 -0
  48. package/squads/claude-code-mastery/agents/hooks-architect.md +27 -20
  49. package/squads/claude-code-mastery/agents/mcp-integrator.md +15 -0
  50. package/squads/claude-code-mastery/agents/project-integrator.md +15 -0
  51. package/squads/claude-code-mastery/agents/roadmap-sentinel.md +15 -0
  52. package/squads/claude-code-mastery/agents/skill-craftsman.md +15 -0
  53. package/squads/claude-code-mastery/agents/swarm-orqx.md +15 -0
  54. package/squads/claude-code-mastery/tasks/audit-setup.md +1 -1
  55. package/squads/squad-animations/agents/animation-interpreter.md +15 -0
  56. package/squads/squad-animations/agents/animation-performance-engineer.md +15 -0
  57. package/squads/squad-animations/agents/animations-orqx.md +13 -0
  58. package/squads/squad-animations/agents/css-motion-artist.md +15 -0
  59. package/squads/squad-animations/agents/generative-particle-engineer.md +15 -0
  60. package/squads/squad-animations/agents/motion-choreographer.md +15 -0
  61. package/squads/squad-animations/agents/scroll-narrative-engineer.md +15 -0
  62. package/squads/squad-animations/agents/shader-artist.md +15 -0
  63. package/squads/squad-animations/agents/threejs-architect.md +15 -0
  64. package/squads/squad-brand/agents/brand-archetype-strategist.md +13 -0
  65. package/squads/squad-brand/agents/brand-auditor.md +15 -0
  66. package/squads/squad-brand/agents/brand-collateral-designer.md +15 -0
  67. package/squads/squad-brand/agents/brand-compiler.md +13 -0
  68. package/squads/squad-brand/agents/brand-creative-engineer.md +15 -0
  69. package/squads/squad-brand/agents/brand-culture-architect.md +15 -0
  70. package/squads/squad-brand/agents/brand-growth-strategist.md +15 -0
  71. package/squads/squad-brand/agents/brand-identity-designer.md +15 -0
  72. package/squads/squad-brand/agents/brand-motion-vfx.md +15 -0
  73. package/squads/squad-brand/agents/brand-naming-specialist.md +15 -0
  74. package/squads/squad-brand/agents/brand-orqx.md +13 -0
  75. package/squads/squad-brand/agents/brand-positioning-strategist.md +15 -0
  76. package/squads/squad-brand/agents/brand-sonic-designer.md +15 -0
  77. package/squads/squad-brand/agents/brand-strategist.md +15 -0
  78. package/squads/squad-brand/agents/brand-system-architect.md +15 -0
  79. package/squads/squad-cloning/agents/agent-forger.md +15 -0
  80. package/squads/squad-cloning/agents/cloning-orqx.md +15 -0
  81. package/squads/squad-cloning/agents/cognitive-extractor.md +15 -0
  82. package/squads/squad-cloning/agents/content-capturer.md +15 -0
  83. package/squads/squad-cloning/agents/kb-architect.md +15 -0
  84. package/squads/squad-cloning/agents/mind-synthesizer.md +15 -0
  85. package/squads/squad-cloning/agents/sop-extractor.md +15 -0
  86. package/squads/squad-cloning/agents/source-hunter.md +13 -0
  87. package/squads/squad-cloning/agents/squad-assembler.md +15 -0
  88. package/squads/squad-commercial/agents/commercial-orqx.md +13 -0
  89. package/squads/squad-commercial/agents/cs-business-auditor.md +15 -0
  90. package/squads/squad-commercial/agents/cs-client-success.md +15 -0
  91. package/squads/squad-commercial/agents/cs-crm-specialist.md +15 -0
  92. package/squads/squad-commercial/agents/cs-funnel-architect.md +15 -0
  93. package/squads/squad-commercial/agents/cs-lead-generation-strategist.md +15 -0
  94. package/squads/squad-commercial/agents/cs-offer-designer.md +15 -0
  95. package/squads/squad-commercial/agents/cs-revops-analyst.md +15 -0
  96. package/squads/squad-commercial/agents/cs-sales-closer.md +13 -0
  97. package/squads/squad-commercial/agents/cs-sales-enablement.md +15 -0
  98. package/squads/squad-content/agents/content-analyst.md +13 -0
  99. package/squads/squad-content/agents/content-engineer.md +15 -0
  100. package/squads/squad-content/agents/content-governor.md +13 -0
  101. package/squads/squad-content/agents/content-orqx.md +13 -0
  102. package/squads/squad-content/agents/editorial-strategist.md +15 -0
  103. package/squads/squad-content/agents/platform-specialist.md +15 -0
  104. package/squads/squad-content/agents/signal-intelligence.md +13 -0
  105. package/squads/squad-copy/agents/ad-copywriter.md +13 -0
  106. package/squads/squad-copy/agents/brand-voice-writer.md +15 -0
  107. package/squads/squad-copy/agents/conversion-writer.md +13 -0
  108. package/squads/squad-copy/agents/copy-editor.md +15 -0
  109. package/squads/squad-copy/agents/copy-orqx.md +13 -0
  110. package/squads/squad-copy/agents/copy-strategist.md +15 -0
  111. package/squads/squad-copy/agents/direct-response-writer.md +15 -0
  112. package/squads/squad-copy/agents/email-sequence-strategist.md +15 -0
  113. package/squads/squad-copy/agents/funnel-copywriter.md +15 -0
  114. package/squads/squad-copy/agents/headline-specialist.md +13 -0
  115. package/squads/squad-copy/agents/long-form-writer.md +15 -0
  116. package/squads/squad-copy/agents/persuasion-psychologist.md +15 -0
  117. package/squads/squad-copy/agents/proof-architect.md +15 -0
  118. package/squads/squad-council/agents/brene-brown.md +13 -0
  119. package/squads/squad-council/agents/charlie-munger.md +13 -0
  120. package/squads/squad-council/agents/council-orqx.md +13 -0
  121. package/squads/squad-council/agents/derek-sivers.md +13 -0
  122. package/squads/squad-council/agents/naval-ravikant.md +13 -0
  123. package/squads/squad-council/agents/patrick-lencioni.md +15 -0
  124. package/squads/squad-council/agents/peter-thiel.md +13 -0
  125. package/squads/squad-council/agents/ray-dalio.md +13 -0
  126. package/squads/squad-council/agents/reid-hoffman.md +13 -0
  127. package/squads/squad-council/agents/simon-sinek.md +15 -0
  128. package/squads/squad-council/agents/yvon-chouinard.md +13 -0
  129. package/squads/squad-courses/agents/assessment-creator.md +15 -0
  130. package/squads/squad-courses/agents/content-writer.md +15 -0
  131. package/squads/squad-courses/agents/courses-orqx.md +15 -0
  132. package/squads/squad-courses/agents/curriculum-designer.md +15 -0
  133. package/squads/squad-courses/agents/launch-strategist.md +15 -0
  134. package/squads/squad-courses/agents/lesson-architect.md +15 -0
  135. package/squads/squad-courses/agents/production-director.md +13 -0
  136. package/squads/squad-courses/agents/slide-designer.md +15 -0
  137. package/squads/squad-cybersecurity/agents/cloud-security-engineer.md +15 -0
  138. package/squads/squad-cybersecurity/agents/compliance-officer.md +15 -0
  139. package/squads/squad-cybersecurity/agents/cyber-orqx.md +15 -0
  140. package/squads/squad-cybersecurity/agents/incident-responder.md +15 -0
  141. package/squads/squad-cybersecurity/agents/network-security-engineer.md +15 -0
  142. package/squads/squad-cybersecurity/agents/penetration-tester.md +15 -0
  143. package/squads/squad-cybersecurity/agents/soc-analyst.md +15 -0
  144. package/squads/squad-cybersecurity/agents/threat-analyst.md +15 -0
  145. package/squads/squad-design/agents/cro-persuasion.md +15 -0
  146. package/squads/squad-design/agents/design-orqx.md +13 -0
  147. package/squads/squad-design/agents/design-system.md +15 -0
  148. package/squads/squad-design/agents/dx-accessibility-specialist.md +15 -0
  149. package/squads/squad-design/agents/dx-design-system-architect.md +15 -0
  150. package/squads/squad-design/agents/dx-frontend-engineer.md +15 -0
  151. package/squads/squad-design/agents/dx-interaction-designer.md +15 -0
  152. package/squads/squad-design/agents/dx-performance-engineer.md +15 -0
  153. package/squads/squad-design/agents/dx-ui-designer.md +15 -0
  154. package/squads/squad-design/agents/dx-ux-strategist.md +15 -0
  155. package/squads/squad-design/agents/platform-aesthetic-director.md +15 -0
  156. package/squads/squad-design/agents/premium-packaging-strategist.md +15 -0
  157. package/squads/squad-design/agents/product-surface-director.md +15 -0
  158. package/squads/squad-design/agents/ux-designer.md +15 -0
  159. package/squads/squad-finance/agents/budget-controller.md +15 -0
  160. package/squads/squad-finance/agents/cost-optimizer.md +15 -0
  161. package/squads/squad-finance/agents/finance-orqx.md +15 -0
  162. package/squads/squad-finance/agents/fiscal-compliance-br.md +15 -0
  163. package/squads/squad-finance/agents/forecast-strategist.md +15 -0
  164. package/squads/squad-finance/agents/pricing-strategist.md +15 -0
  165. package/squads/squad-finance/agents/profitability-analyst.md +15 -0
  166. package/squads/squad-finance/agents/revenue-analyst.md +15 -0
  167. package/squads/squad-growth/agents/ga-analytics-engineer.md +15 -0
  168. package/squads/squad-growth/agents/ga-campaign-analyst.md +15 -0
  169. package/squads/squad-growth/agents/ga-cro-specialist.md +15 -0
  170. package/squads/squad-growth/agents/ga-data-analyst.md +13 -0
  171. package/squads/squad-growth/agents/ga-growth-hacker.md +15 -0
  172. package/squads/squad-growth/agents/ga-seo-strategist.md +15 -0
  173. package/squads/squad-growth/agents/growth-orqx.md +15 -0
  174. package/squads/squad-paidmedia/agents/campaign-analyst.md +15 -0
  175. package/squads/squad-paidmedia/agents/creative-strategist.md +15 -0
  176. package/squads/squad-paidmedia/agents/cro-specialist.md +15 -0
  177. package/squads/squad-paidmedia/agents/google-ads-specialist.md +15 -0
  178. package/squads/squad-paidmedia/agents/meta-ads-specialist.md +15 -0
  179. package/squads/squad-paidmedia/agents/paidmedia-orqx.md +15 -0
  180. package/squads/squad-paidmedia/agents/performance-engineer.md +15 -0
  181. package/squads/squad-paidmedia/agents/pm-creative-performance-analyst.md +15 -0
  182. package/squads/squad-paidmedia/agents/pm-youtube-ads-specialist.md +15 -0
  183. package/squads/squad-product/agents/product-orqx.md +13 -1
  184. package/squads/squad-product/agents/ps-client-product-manager.md +13 -1
  185. package/squads/squad-product/agents/ps-delivery-manager.md +13 -1
  186. package/squads/squad-product/agents/ps-discovery-lead.md +15 -1
  187. package/squads/squad-product/agents/ps-product-analyst.md +15 -1
  188. package/squads/squad-product/agents/ps-product-ops-specialist.md +15 -1
  189. package/squads/squad-product/agents/ps-product-strategist.md +15 -1
  190. package/squads/squad-research/agents/audience-intelligence.md +15 -0
  191. package/squads/squad-research/agents/competitive-intelligence.md +15 -0
  192. package/squads/squad-research/agents/data-synthesizer.md +15 -0
  193. package/squads/squad-research/agents/deep-researcher.md +15 -0
  194. package/squads/squad-research/agents/market-analyst.md +15 -0
  195. package/squads/squad-research/agents/research-orqx.md +15 -0
  196. package/squads/squad-research/agents/trend-forecaster.md +15 -0
  197. package/squads/squad-storytelling/agents/blake-snyder.md +13 -0
  198. package/squads/squad-storytelling/agents/dan-harmon.md +13 -0
  199. package/squads/squad-storytelling/agents/joseph-campbell.md +13 -0
  200. package/squads/squad-storytelling/agents/keith-johnstone.md +13 -0
  201. package/squads/squad-storytelling/agents/kindra-hall.md +15 -0
  202. package/squads/squad-storytelling/agents/marshall-ganz.md +15 -0
  203. package/squads/squad-storytelling/agents/nancy-duarte.md +15 -0
  204. package/squads/squad-storytelling/agents/oren-klaff.md +15 -0
  205. package/squads/squad-storytelling/agents/park-howell.md +13 -0
  206. package/squads/squad-storytelling/agents/storytelling-orqx.md +13 -0
  207. package/.sinapse-ai/core/grounding/README.md +0 -83
  208. package/.sinapse-ai/core/grounding/brand.cjs +0 -29
  209. package/.sinapse-ai/core/grounding/config-loader.cjs +0 -52
  210. package/.sinapse-ai/core/grounding/design-system.cjs +0 -29
  211. package/.sinapse-ai/core/grounding/vault.cjs +0 -36
  212. package/.sinapse-ai/development/scripts/approval-workflow.js +0 -643
  213. package/.sinapse-ai/development/scripts/backup-manager.js +0 -607
  214. package/.sinapse-ai/development/scripts/branch-manager.js +0 -390
  215. package/.sinapse-ai/development/scripts/code-quality-improver.js +0 -1329
  216. package/.sinapse-ai/development/scripts/commit-message-generator.js +0 -850
  217. package/.sinapse-ai/development/scripts/conflict-resolver.js +0 -675
  218. package/.sinapse-ai/development/scripts/dependency-analyzer.js +0 -638
  219. package/.sinapse-ai/development/scripts/diff-generator.js +0 -352
  220. package/.sinapse-ai/development/scripts/git-wrapper.js +0 -462
  221. package/.sinapse-ai/development/scripts/modification-validator.js +0 -555
  222. package/.sinapse-ai/development/scripts/performance-analyzer.js +0 -758
  223. package/.sinapse-ai/development/scripts/refactoring-suggester.js +0 -1148
  224. package/.sinapse-ai/development/scripts/rollback-handler.js +0 -531
  225. package/.sinapse-ai/development/scripts/security-checker.js +0 -359
  226. package/.sinapse-ai/development/scripts/template-engine.js +0 -240
  227. package/.sinapse-ai/development/scripts/template-validator.js +0 -279
  228. package/.sinapse-ai/development/scripts/test-generator.js +0 -844
  229. package/.sinapse-ai/development/scripts/transaction-manager.js +0 -590
  230. package/.sinapse-ai/development/scripts/yaml-validator.js +0 -397
  231. package/.sinapse-ai/hooks/sinapse-brand-grounding.cjs +0 -162
  232. package/.sinapse-ai/hooks/sinapse-ds-grounding.cjs +0 -211
  233. package/.sinapse-ai/hooks/sinapse-vault-grounding.cjs +0 -194
  234. package/bin/lib/register-grounding-hooks.js +0 -145
  235. package/docs/guides/agents/traces/execution-traces.zip +0 -0
  236. package/docs/guides/grounding-setup.md +0 -154
  237. package/docs/guides/workflows/SINAPSE-WORKFLOWS.zip +0 -0
  238. package/packages/installer/src/pro/pro-scaffolder.js +0 -449
  239. package/packages/installer/src/wizard/grounding-config.js +0 -131
  240. package/packages/installer/src/wizard/pro-setup.js +0 -1439
  241. package/packages/installer/templates/README.md +0 -16
  242. package/packages/installer/templates/brand-routing.example.json +0 -12
  243. package/packages/installer/templates/ds-routing.example.json +0 -12
  244. package/packages/installer/templates/vault-routing.example.json +0 -12
@@ -1,462 +0,0 @@
1
- const { exec } = require('child_process');
2
- const { promisify } = require('util');
3
- const execAsync = promisify(exec);
4
- const _path = require('path');
5
- const _fs = require('fs').promises;
6
- const chalk = require('chalk');
7
-
8
- /**
9
- * Git operations wrapper for SINAPSE framework modifications
10
- */
11
- class GitWrapper {
12
- constructor(options = {}) {
13
- this.rootPath = options.rootPath || process.cwd();
14
- this.gitPath = options.gitPath || 'git';
15
- this.defaultBranch = options.defaultBranch || 'main';
16
- this.metaAgentPrefix = options.metaAgentPrefix || 'meta-agent/';
17
- }
18
-
19
- /**
20
- * Execute a git command
21
- * @private
22
- */
23
- async execGit(command, options = {}) {
24
- try {
25
- const { stdout, stderr } = await execAsync(`${this.gitPath} ${command}`, {
26
- cwd: this.rootPath,
27
- ...options
28
- });
29
-
30
- if (stderr && !options.ignoreStderr) {
31
- console.warn(chalk.yellow(`Git warning: ${stderr}`));
32
- }
33
-
34
- return stdout.trim();
35
- } catch (_error) {
36
- throw new Error(`Git command failed: ${error.message}`);
37
- }
38
- }
39
-
40
- /**
41
- * Check if git is initialized
42
- * @returns {Promise<boolean>}
43
- */
44
- async isGitInitialized() {
45
- try {
46
- await this.execGit('status');
47
- return true;
48
- } catch (_error) {
49
- return false;
50
- }
51
- }
52
-
53
- /**
54
- * Initialize git repository if not already initialized
55
- * @returns {Promise<void>}
56
- */
57
- async initializeRepository() {
58
- const initialized = await this.isGitInitialized();
59
- if (!initialized) {
60
- await this.execGit('init');
61
- console.log(chalk.green('✅ Git repository initialized'));
62
- }
63
- }
64
-
65
- /**
66
- * Get current branch name
67
- * @returns {Promise<string>}
68
- */
69
- async getCurrentBranch() {
70
- return await this.execGit('rev-parse --abbrev-ref HEAD');
71
- }
72
-
73
- /**
74
- * Create a new branch
75
- * @param {string} branchName - Name of the branch to create
76
- * @param {boolean} checkout - Whether to checkout the branch
77
- * @returns {Promise<void>}
78
- */
79
- async createBranch(branchName, checkout = true) {
80
- try {
81
- if (checkout) {
82
- await this.execGit(`checkout -b ${branchName}`);
83
- } else {
84
- await this.execGit(`branch ${branchName}`);
85
- }
86
- console.log(chalk.green(`✅ Created branch: ${branchName}`));
87
- } catch (_error) {
88
- // Branch might already exist
89
- if (error.message.includes('already exists')) {
90
- console.log(chalk.yellow(`Branch already exists: ${branchName}`));
91
- if (checkout) {
92
- await this.checkoutBranch(branchName);
93
- }
94
- } else {
95
- throw error;
96
- }
97
- }
98
- }
99
-
100
- /**
101
- * Checkout an existing branch
102
- * @param {string} branchName - Name of the branch to checkout
103
- * @returns {Promise<void>}
104
- */
105
- async checkoutBranch(branchName) {
106
- await this.execGit(`checkout ${branchName}`);
107
- console.log(chalk.green(`✅ Checked out branch: ${branchName}`));
108
- }
109
-
110
- /**
111
- * Create a branch for meta-agent modifications
112
- * @param {string} modificationName - Name of the modification
113
- * @returns {Promise<string>} Branch name
114
- */
115
- async createModificationBranch(modificationName) {
116
- const timestamp = new Date().toISOString().substring(0, 10);
117
- const branchName = `${this.metaAgentPrefix}${modificationName}-${timestamp}`;
118
- await this.createBranch(branchName);
119
- return branchName;
120
- }
121
-
122
- /**
123
- * Stage files for commit
124
- * @param {Array<string>} files - Files to stage
125
- * @returns {Promise<void>}
126
- */
127
- async stageFiles(files) {
128
- if (!Array.isArray(files) || files.length === 0) {
129
- throw new Error('No files provided to stage');
130
- }
131
-
132
- for (const file of files) {
133
- await this.execGit(`add "${file}"`);
134
- }
135
-
136
- console.log(chalk.green(`✅ Staged ${files.length} files`));
137
- }
138
-
139
- /**
140
- * Commit changes with message
141
- * @param {string} message - Commit message
142
- * @param {Object} options - Commit options
143
- * @returns {Promise<string>} Commit hash
144
- */
145
- async commit(message, options = {}) {
146
- const {
147
- author = 'sinapse-developer <sinapse-developer@sinapse-fullstack.local>',
148
- signoff = true
149
- } = options;
150
-
151
- let command = `commit -m "${message.replace(/"/g, '\\"')}"`;
152
-
153
- if (author) {
154
- command += ` --author="${author}"`;
155
- }
156
-
157
- if (signoff) {
158
- command += ' --signoff';
159
- }
160
-
161
- const output = await this.execGit(command);
162
- const hashMatch = output.match(/\[[\w-]+ ([\w]+)\]/);
163
- const commitHash = hashMatch ? hashMatch[1] : 'unknown';
164
-
165
- console.log(chalk.green(`✅ Committed: ${commitHash}`));
166
- return commitHash;
167
- }
168
-
169
- /**
170
- * Create a commit for component modifications
171
- * @param {Array<string>} files - Files to commit
172
- * @param {string} message - Commit message
173
- * @param {Object} metadata - Additional metadata
174
- * @returns {Promise<string>} Commit hash
175
- */
176
- async commitModification(files, message, metadata = {}) {
177
- await this.stageFiles(files);
178
-
179
- // Add metadata to commit message
180
- let fullMessage = message;
181
- if (metadata.componentType && metadata.componentName) {
182
- fullMessage = `${metadata.componentType}(${metadata.componentName}): ${message}`;
183
- }
184
-
185
- if (metadata.breakingChange) {
186
- fullMessage += '\n\nBREAKING CHANGE: ' + metadata.breakingChange;
187
- }
188
-
189
- if (metadata.approvedBy) {
190
- fullMessage += `\n\nApproved-by: ${metadata.approvedBy}`;
191
- }
192
-
193
- fullMessage += '\n\nGenerated by: sinapse-developer meta-agent';
194
-
195
- return await this.commit(fullMessage);
196
- }
197
-
198
- /**
199
- * Get git status
200
- * @returns {Promise<Object>} Status information
201
- */
202
- async getStatus() {
203
- const porcelainStatus = await this.execGit('status --porcelain');
204
- const branch = await this.getCurrentBranch();
205
-
206
- const files = {
207
- modified: [],
208
- added: [],
209
- deleted: [],
210
- untracked: []
211
- };
212
-
213
- if (porcelainStatus) {
214
- const lines = porcelainStatus.split('\n');
215
- for (const line of lines) {
216
- if (!line) continue;
217
-
218
- const status = line.substring(0, 2);
219
- const filename = line.substring(3);
220
-
221
- if (status.includes('M')) files.modified.push(filename);
222
- else if (status.includes('A')) files.added.push(filename);
223
- else if (status.includes('D')) files.deleted.push(filename);
224
- else if (status === '??') files.untracked.push(filename);
225
- }
226
- }
227
-
228
- return {
229
- branch,
230
- clean: porcelainStatus === '',
231
- files
232
- };
233
- }
234
-
235
- /**
236
- * Get commit history
237
- * @param {number} limit - Number of commits to retrieve
238
- * @returns {Promise<Array>} Commit history
239
- */
240
- async getHistory(limit = 10) {
241
- const format = '%H|%an|%ae|%at|%s';
242
- const output = await this.execGit(`log -${limit} --format="${format}"`);
243
-
244
- if (!output) return [];
245
-
246
- return output.split('\n').map(line => {
247
- const [hash, author, email, timestamp, subject] = line.split('|');
248
- return {
249
- hash,
250
- author,
251
- email,
252
- date: new Date(parseInt(timestamp) * 1000),
253
- subject
254
- };
255
- });
256
- }
257
-
258
- /**
259
- * Check for conflicts
260
- * @returns {Promise<Array>} List of conflicted files
261
- */
262
- async getConflicts() {
263
- try {
264
- const output = await this.execGit('diff --name-only --diff-filter=U');
265
- return output ? output.split('\n').filter(Boolean) : [];
266
- } catch (_error) {
267
- return [];
268
- }
269
- }
270
-
271
- /**
272
- * Merge a branch
273
- * @param {string} branchName - Branch to merge
274
- * @param {Object} options - Merge options
275
- * @returns {Promise<Object>} Merge result
276
- */
277
- async mergeBranch(branchName, options = {}) {
278
- const {
279
- strategy = 'recursive',
280
- message = null,
281
- noFastForward = true
282
- } = options;
283
-
284
- let command = `merge ${branchName}`;
285
-
286
- if (strategy) {
287
- command += ` --strategy=${strategy}`;
288
- }
289
-
290
- if (noFastForward) {
291
- command += ' --no-ff';
292
- }
293
-
294
- if (message) {
295
- command += ` -m "${message.replace(/"/g, '\\"')}"`;
296
- }
297
-
298
- try {
299
- const output = await this.execGit(command);
300
- return {
301
- success: true,
302
- message: output
303
- };
304
- } catch (_error) {
305
- // Check for conflicts
306
- const conflicts = await this.getConflicts();
307
- if (conflicts.length > 0) {
308
- return {
309
- success: false,
310
- conflicts,
311
- error: 'Merge conflicts detected'
312
- };
313
- }
314
- throw error;
315
- }
316
- }
317
-
318
- /**
319
- * Create a tag
320
- * @param {string} tagName - Name of the tag
321
- * @param {string} message - Tag message
322
- * @returns {Promise<void>}
323
- */
324
- async createTag(tagName, message) {
325
- await this.execGit(`tag -a ${tagName} -m "${message.replace(/"/g, '\\"')}"`);
326
- console.log(chalk.green(`✅ Created tag: ${tagName}`));
327
- }
328
-
329
- /**
330
- * Push changes to remote
331
- * @param {string} remote - Remote name
332
- * @param {string} branch - Branch name
333
- * @param {Object} options - Push options
334
- * @returns {Promise<void>}
335
- */
336
- async push(remote = 'origin', branch = null, options = {}) {
337
- const currentBranch = branch || await this.getCurrentBranch();
338
- let command = `push ${remote} ${currentBranch}`;
339
-
340
- if (options.tags) {
341
- command += ' --tags';
342
- }
343
-
344
- if (options.force) {
345
- command += ' --force';
346
- }
347
-
348
- if (options.setUpstream) {
349
- command = `push -u ${remote} ${currentBranch}`;
350
- }
351
-
352
- await this.execGit(command);
353
- console.log(chalk.green(`✅ Pushed to ${remote}/${currentBranch}`));
354
- }
355
-
356
- /**
357
- * Get diff between commits or working tree
358
- * @param {Object} options - Diff options
359
- * @returns {Promise<string>} Diff output
360
- */
361
- async getDiff(options = {}) {
362
- const {
363
- from = 'HEAD',
364
- to = null,
365
- files = [],
366
- nameOnly = false
367
- } = options;
368
-
369
- let command = 'diff';
370
-
371
- if (nameOnly) {
372
- command += ' --name-only';
373
- }
374
-
375
- if (to) {
376
- command += ` ${from} ${to}`;
377
- } else {
378
- command += ` ${from}`;
379
- }
380
-
381
- if (files.length > 0) {
382
- command += ` -- ${files.join(' ')}`;
383
- }
384
-
385
- return await this.execGit(command);
386
- }
387
-
388
- /**
389
- * Stash changes
390
- * @param {string} message - Stash message
391
- * @returns {Promise<void>}
392
- */
393
- async stash(message = 'Meta-agent modifications') {
394
- await this.execGit(`stash push -m "${message}"`);
395
- console.log(chalk.green('✅ Changes stashed'));
396
- }
397
-
398
- /**
399
- * Apply stash
400
- * @param {string} stashRef - Stash reference
401
- * @returns {Promise<void>}
402
- */
403
- async stashApply(stashRef = 'stash@{0}') {
404
- await this.execGit(`stash apply ${stashRef}`);
405
- console.log(chalk.green('✅ Stash applied'));
406
- }
407
-
408
- /**
409
- * Get remote information
410
- * @returns {Promise<Array>} Remote information
411
- */
412
- async getRemotes() {
413
- const output = await this.execGit('remote -v');
414
- if (!output) return [];
415
-
416
- const remotes = {};
417
- output.split('\n').forEach(line => {
418
- const [name, url, type] = line.split(/\s+/);
419
- if (!remotes[name]) {
420
- remotes[name] = {};
421
- }
422
- remotes[name][type.replace(/[()]/g, '')] = url;
423
- });
424
-
425
- return Object.entries(remotes).map(([name, urls]) => ({
426
- name,
427
- fetchUrl: urls.fetch,
428
- pushUrl: urls.push
429
- }));
430
- }
431
-
432
- /**
433
- * Generate commit message for modifications
434
- * @param {Object} modification - Modification details
435
- * @returns {string} Generated commit message
436
- */
437
- generateCommitMessage(modification) {
438
- const {
439
- action,
440
- componentType,
441
- _componentName,
442
- summary,
443
- details = [],
444
- breakingChanges = []
445
- } = modification;
446
-
447
- let message = `${action}(${componentType}): ${summary}`;
448
-
449
- if (details.length > 0) {
450
- message += '\n\n' + details.map(d => `- ${d}`).join('\n');
451
- }
452
-
453
- if (breakingChanges.length > 0) {
454
- message += '\n\nBREAKING CHANGES:\n' +
455
- breakingChanges.map(bc => `- ${bc}`).join('\n');
456
- }
457
-
458
- return message;
459
- }
460
- }
461
-
462
- module.exports = GitWrapper;