vibecodingmachine-core 2026.3.10-1812 → 2026.3.14-1528

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 (45) hide show
  1. package/package.json +1 -1
  2. package/src/agents/AgentAdditionService.js +1 -1
  3. package/src/agents/config/AgentConfigManager.js +1 -1
  4. package/src/agents/config-managers/DefaultConfig.js +1 -1
  5. package/src/auth/access-denied.html +119 -119
  6. package/src/auth/shared-auth-storage.js +267 -267
  7. package/src/autonomous-mode/feature-implementer.cjs +70 -70
  8. package/src/autonomous-mode/feature-implementer.js +425 -425
  9. package/src/beta-request.js +160 -160
  10. package/src/chat-management/chat-manager.cjs +71 -71
  11. package/src/chat-management/chat-manager.js +342 -342
  12. package/src/compliance/compliance-prompt.js +183 -183
  13. package/src/ide-integration/aider-cli-manager.cjs +850 -850
  14. package/src/ide-integration/applescript-manager.cjs +3225 -3215
  15. package/src/ide-integration/applescript-utils.js +314 -314
  16. package/src/ide-integration/cdp-manager.cjs +221 -221
  17. package/src/ide-integration/claude-code-cli-manager.cjs +456 -456
  18. package/src/ide-integration/cline-cli-manager.cjs +2252 -2252
  19. package/src/ide-integration/continue-cli-manager.js +431 -431
  20. package/src/ide-integration/provider-manager.cjs +664 -595
  21. package/src/ide-integration/quota-detector.cjs +399 -399
  22. package/src/ide-integration/windows-automation-manager.js +235 -87
  23. package/src/index.cjs +143 -142
  24. package/src/llm/direct-llm-manager.cjs +1299 -1299
  25. package/src/localization/index.js +147 -147
  26. package/src/quota-management/index.js +108 -108
  27. package/src/requirement-numbering.js +164 -164
  28. package/src/sync/aws-setup.js +445 -445
  29. package/src/ui/ButtonComponents.js +247 -247
  30. package/src/ui/ChatInterface.js +499 -499
  31. package/src/ui/StateManager.js +259 -259
  32. package/src/utils/audit-logger.cjs +116 -116
  33. package/src/utils/config-helpers.cjs +94 -94
  34. package/src/utils/config-helpers.js +94 -94
  35. package/src/utils/env-helpers.js +54 -54
  36. package/src/utils/error-reporter.js +117 -117
  37. package/src/utils/gcloud-auth.cjs +394 -394
  38. package/src/utils/git-branch-manager.js +278 -278
  39. package/src/utils/logger.cjs +193 -193
  40. package/src/utils/logger.js +191 -191
  41. package/src/utils/repo-helpers.cjs +120 -120
  42. package/src/utils/repo-helpers.js +120 -120
  43. package/src/utils/status-formatter.js +135 -0
  44. package/src/utils/update-checker.js +246 -246
  45. package/src/utils/version-checker.js +170 -170
@@ -1,183 +1,183 @@
1
- /**
2
- * Compliance Prompt Utility
3
- *
4
- * Handles prompting users for terms and privacy acceptance
5
- * across CLI and Electron interfaces
6
- */
7
-
8
- const ComplianceManager = require('./compliance-manager')
9
-
10
- class CompliancePrompt {
11
- constructor() {
12
- this.complianceManager = new ComplianceManager()
13
- }
14
-
15
- /**
16
- * Check and prompt for compliance if needed
17
- * Returns true if compliant, false if user declined
18
- */
19
- async checkAndPrompt(userId, interfaceType = 'cli') {
20
- try {
21
- const status = await this.complianceManager.checkComplianceStatus(userId)
22
-
23
- if (!status.needsAcknowledgment) {
24
- return true
25
- }
26
-
27
- // Prompt based on interface
28
- if (interfaceType === 'cli') {
29
- return await this.promptCLI(userId, status)
30
- } else if (interfaceType === 'electron') {
31
- return await this.promptElectron(userId, status)
32
- }
33
-
34
- return false
35
- } catch (error) {
36
- console.error('Error checking compliance:', error)
37
- return false
38
- }
39
- }
40
-
41
- /**
42
- * CLI prompt for compliance
43
- */
44
- async promptCLI(userId, status) {
45
- const chalk = require('chalk')
46
-
47
- // Dynamically require inquirer (only available in CLI context)
48
- let inquirer
49
- try {
50
- inquirer = require('inquirer')
51
- } catch (error) {
52
- throw new Error('inquirer module not available - CLI prompting not supported in this context')
53
- }
54
-
55
- console.log(chalk.cyan('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'))
56
- console.log(chalk.cyan.bold(' 📋 Terms & Privacy Acknowledgment Required'))
57
- console.log(chalk.cyan('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'))
58
-
59
- console.log(chalk.white('Before continuing, please review and accept:\n'))
60
-
61
- const questions = []
62
-
63
- if (status.requiredActions.includes('terms')) {
64
- const terms = await this.complianceManager.getTermsOfService()
65
-
66
- console.log(chalk.yellow('📄 Terms of Service'))
67
- console.log(chalk.gray('─'.repeat(70)))
68
- console.log(this.formatForCLI(terms.content))
69
- console.log(chalk.gray('─'.repeat(70)))
70
- console.log(chalk.gray(`Version ${terms.version} | Effective: ${terms.effectiveDate}\n`))
71
-
72
- questions.push({
73
- type: 'confirm',
74
- name: 'acceptTerms',
75
- message: 'Do you accept the Terms of Service?',
76
- default: false
77
- })
78
- }
79
-
80
- if (status.requiredActions.includes('privacy')) {
81
- const privacy = await this.complianceManager.getPrivacyPolicy()
82
-
83
- console.log(chalk.yellow('🔒 Privacy Policy'))
84
- console.log(chalk.gray('─'.repeat(70)))
85
- console.log(this.formatForCLI(privacy.content))
86
- console.log(chalk.gray('─'.repeat(70)))
87
- console.log(chalk.gray(`Version ${privacy.version} | Effective: ${privacy.effectiveDate}\n`))
88
-
89
- questions.push({
90
- type: 'confirm',
91
- name: 'acceptPrivacy',
92
- message: 'Do you accept the Privacy Policy?',
93
- default: false
94
- })
95
- }
96
-
97
- const answers = await inquirer.prompt(questions)
98
-
99
- // Check if user accepted all required items
100
- const allAccepted =
101
- (!status.requiredActions.includes('terms') || answers.acceptTerms) &&
102
- (!status.requiredActions.includes('privacy') || answers.acceptPrivacy)
103
-
104
- if (!allAccepted) {
105
- console.log(chalk.red('\n❌ You must accept the Terms and Privacy Policy to use VibeCodingMachine.\n'))
106
- return false
107
- }
108
-
109
- // Record acceptance
110
- await this.complianceManager.recordAcknowledgment(userId, {
111
- terms: answers.acceptTerms || undefined,
112
- privacy: answers.acceptPrivacy || undefined
113
- })
114
-
115
- console.log(chalk.green('\n✅ Thank you! Your acceptance has been recorded.\n'))
116
- return true
117
- }
118
-
119
- /**
120
- * Electron prompt for compliance (returns HTML dialog)
121
- */
122
- async promptElectron(userId, status) {
123
- // For Electron, we'll return the data needed to show a dialog
124
- // The actual dialog will be handled by the Electron renderer
125
- const data = {
126
- needsTerms: status.requiredActions.includes('terms'),
127
- needsPrivacy: status.requiredActions.includes('privacy')
128
- }
129
-
130
- if (data.needsTerms) {
131
- data.terms = await this.complianceManager.getTermsOfService()
132
- }
133
-
134
- if (data.needsPrivacy) {
135
- data.privacy = await this.complianceManager.getPrivacyPolicy()
136
- }
137
-
138
- return data
139
- }
140
-
141
- /**
142
- * Record acceptance from Electron
143
- */
144
- async recordElectronAcceptance(userId, acceptTerms, acceptPrivacy) {
145
- await this.complianceManager.recordAcknowledgment(userId, {
146
- terms: acceptTerms,
147
- privacy: acceptPrivacy
148
- })
149
- return true
150
- }
151
-
152
- /**
153
- * Format markdown content for CLI display
154
- */
155
- formatForCLI(content) {
156
- // Simple markdown formatting for terminal
157
- return content
158
- .split('\n')
159
- .map(line => {
160
- // Headers
161
- if (line.startsWith('# ')) {
162
- return ' ' + line.substring(2).toUpperCase()
163
- }
164
- if (line.startsWith('## ')) {
165
- return ' ' + line.substring(3)
166
- }
167
- // Bold
168
- line = line.replace(/\*\*(.*?)\*\*/g, '$1')
169
- // Lists
170
- if (line.startsWith('- ')) {
171
- return ' • ' + line.substring(2)
172
- }
173
- if (/^\d+\./.test(line)) {
174
- return ' ' + line
175
- }
176
- // Regular text
177
- return line ? ' ' + line : ''
178
- })
179
- .join('\n')
180
- }
181
- }
182
-
183
- module.exports = CompliancePrompt
1
+ /**
2
+ * Compliance Prompt Utility
3
+ *
4
+ * Handles prompting users for terms and privacy acceptance
5
+ * across CLI and Electron interfaces
6
+ */
7
+
8
+ const ComplianceManager = require('./compliance-manager')
9
+
10
+ class CompliancePrompt {
11
+ constructor() {
12
+ this.complianceManager = new ComplianceManager()
13
+ }
14
+
15
+ /**
16
+ * Check and prompt for compliance if needed
17
+ * Returns true if compliant, false if user declined
18
+ */
19
+ async checkAndPrompt(userId, interfaceType = 'cli') {
20
+ try {
21
+ const status = await this.complianceManager.checkComplianceStatus(userId)
22
+
23
+ if (!status.needsAcknowledgment) {
24
+ return true
25
+ }
26
+
27
+ // Prompt based on interface
28
+ if (interfaceType === 'cli') {
29
+ return await this.promptCLI(userId, status)
30
+ } else if (interfaceType === 'electron') {
31
+ return await this.promptElectron(userId, status)
32
+ }
33
+
34
+ return false
35
+ } catch (error) {
36
+ console.error('Error checking compliance:', error)
37
+ return false
38
+ }
39
+ }
40
+
41
+ /**
42
+ * CLI prompt for compliance
43
+ */
44
+ async promptCLI(userId, status) {
45
+ const chalk = require('chalk')
46
+
47
+ // Dynamically require inquirer (only available in CLI context)
48
+ let inquirer
49
+ try {
50
+ inquirer = require('inquirer')
51
+ } catch (error) {
52
+ throw new Error('inquirer module not available - CLI prompting not supported in this context')
53
+ }
54
+
55
+ console.log(chalk.cyan('\n━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━'))
56
+ console.log(chalk.cyan.bold(' 📋 Terms & Privacy Acknowledgment Required'))
57
+ console.log(chalk.cyan('━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\n'))
58
+
59
+ console.log(chalk.white('Before continuing, please review and accept:\n'))
60
+
61
+ const questions = []
62
+
63
+ if (status.requiredActions.includes('terms')) {
64
+ const terms = await this.complianceManager.getTermsOfService()
65
+
66
+ console.log(chalk.yellow('📄 Terms of Service'))
67
+ console.log(chalk.gray('─'.repeat(70)))
68
+ console.log(this.formatForCLI(terms.content))
69
+ console.log(chalk.gray('─'.repeat(70)))
70
+ console.log(chalk.gray(`Version ${terms.version} | Effective: ${terms.effectiveDate}\n`))
71
+
72
+ questions.push({
73
+ type: 'confirm',
74
+ name: 'acceptTerms',
75
+ message: 'Do you accept the Terms of Service?',
76
+ default: false
77
+ })
78
+ }
79
+
80
+ if (status.requiredActions.includes('privacy')) {
81
+ const privacy = await this.complianceManager.getPrivacyPolicy()
82
+
83
+ console.log(chalk.yellow('🔒 Privacy Policy'))
84
+ console.log(chalk.gray('─'.repeat(70)))
85
+ console.log(this.formatForCLI(privacy.content))
86
+ console.log(chalk.gray('─'.repeat(70)))
87
+ console.log(chalk.gray(`Version ${privacy.version} | Effective: ${privacy.effectiveDate}\n`))
88
+
89
+ questions.push({
90
+ type: 'confirm',
91
+ name: 'acceptPrivacy',
92
+ message: 'Do you accept the Privacy Policy?',
93
+ default: false
94
+ })
95
+ }
96
+
97
+ const answers = await inquirer.prompt(questions)
98
+
99
+ // Check if user accepted all required items
100
+ const allAccepted =
101
+ (!status.requiredActions.includes('terms') || answers.acceptTerms) &&
102
+ (!status.requiredActions.includes('privacy') || answers.acceptPrivacy)
103
+
104
+ if (!allAccepted) {
105
+ console.log(chalk.red('\n❌ You must accept the Terms and Privacy Policy to use VibeCodingMachine.\n'))
106
+ return false
107
+ }
108
+
109
+ // Record acceptance
110
+ await this.complianceManager.recordAcknowledgment(userId, {
111
+ terms: answers.acceptTerms || undefined,
112
+ privacy: answers.acceptPrivacy || undefined
113
+ })
114
+
115
+ console.log(chalk.green('\n✅ Thank you! Your acceptance has been recorded.\n'))
116
+ return true
117
+ }
118
+
119
+ /**
120
+ * Electron prompt for compliance (returns HTML dialog)
121
+ */
122
+ async promptElectron(userId, status) {
123
+ // For Electron, we'll return the data needed to show a dialog
124
+ // The actual dialog will be handled by the Electron renderer
125
+ const data = {
126
+ needsTerms: status.requiredActions.includes('terms'),
127
+ needsPrivacy: status.requiredActions.includes('privacy')
128
+ }
129
+
130
+ if (data.needsTerms) {
131
+ data.terms = await this.complianceManager.getTermsOfService()
132
+ }
133
+
134
+ if (data.needsPrivacy) {
135
+ data.privacy = await this.complianceManager.getPrivacyPolicy()
136
+ }
137
+
138
+ return data
139
+ }
140
+
141
+ /**
142
+ * Record acceptance from Electron
143
+ */
144
+ async recordElectronAcceptance(userId, acceptTerms, acceptPrivacy) {
145
+ await this.complianceManager.recordAcknowledgment(userId, {
146
+ terms: acceptTerms,
147
+ privacy: acceptPrivacy
148
+ })
149
+ return true
150
+ }
151
+
152
+ /**
153
+ * Format markdown content for CLI display
154
+ */
155
+ formatForCLI(content) {
156
+ // Simple markdown formatting for terminal
157
+ return content
158
+ .split('\n')
159
+ .map(line => {
160
+ // Headers
161
+ if (line.startsWith('# ')) {
162
+ return ' ' + line.substring(2).toUpperCase()
163
+ }
164
+ if (line.startsWith('## ')) {
165
+ return ' ' + line.substring(3)
166
+ }
167
+ // Bold
168
+ line = line.replace(/\*\*(.*?)\*\*/g, '$1')
169
+ // Lists
170
+ if (line.startsWith('- ')) {
171
+ return ' • ' + line.substring(2)
172
+ }
173
+ if (/^\d+\./.test(line)) {
174
+ return ' ' + line
175
+ }
176
+ // Regular text
177
+ return line ? ' ' + line : ''
178
+ })
179
+ .join('\n')
180
+ }
181
+ }
182
+
183
+ module.exports = CompliancePrompt