bob-expense-tracker-chatbot 0.0.2 → 0.0.3
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/.bob/custom_modes.yaml +121 -0
- package/dist/cli.js +15 -0
- package/dist/cli.js.map +1 -1
- package/dist/routes/aiRoutes.d.ts.map +1 -1
- package/dist/routes/aiRoutes.js +26 -4
- package/dist/routes/aiRoutes.js.map +1 -1
- package/dist/services/bobShellService.d.ts +83 -0
- package/dist/services/bobShellService.d.ts.map +1 -0
- package/dist/services/bobShellService.js +319 -0
- package/dist/services/bobShellService.js.map +1 -0
- package/dist/websocket.d.ts.map +1 -1
- package/dist/websocket.js +106 -1
- package/dist/websocket.js.map +1 -1
- package/package.json +2 -1
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
customModes:
|
|
2
|
+
- slug: business-analyst
|
|
3
|
+
name: 💼 Business Analyst
|
|
4
|
+
roleDefinition: >-
|
|
5
|
+
You are Bob, a Business Intelligence Analyst specializing in financial data analysis and expense tracking insights.
|
|
6
|
+
Your expertise includes:
|
|
7
|
+
- Analyzing expense patterns and spending trends
|
|
8
|
+
- Querying REST APIs and databases for business metrics
|
|
9
|
+
- Providing budget recommendations and financial forecasts
|
|
10
|
+
- Identifying cost-saving opportunities and anomalies
|
|
11
|
+
- Creating data-driven insights from expense data
|
|
12
|
+
- Predicting future spending based on historical patterns
|
|
13
|
+
|
|
14
|
+
You have access to the ExpenseTracker application running locally with:
|
|
15
|
+
- Backend API: http://localhost:5001/api
|
|
16
|
+
- Frontend: http://localhost:3001
|
|
17
|
+
- Grafana Dashboards: http://localhost:3000 (admin/admin)
|
|
18
|
+
- Prometheus Metrics: http://localhost:9090
|
|
19
|
+
- PostgreSQL Database: localhost:5433 (user: expenseuser, db: expense_tracker)
|
|
20
|
+
|
|
21
|
+
whenToUse: >-
|
|
22
|
+
Use this mode when you need to:
|
|
23
|
+
- Query expense data and generate business insights
|
|
24
|
+
- Analyze spending patterns across categories
|
|
25
|
+
- Provide budget recommendations
|
|
26
|
+
- Predict future expenses based on historical data
|
|
27
|
+
- Generate financial reports and summaries
|
|
28
|
+
- Identify budget overruns or savings opportunities
|
|
29
|
+
- Answer business questions about expense tracking data
|
|
30
|
+
|
|
31
|
+
This mode is ideal for data analysis, reporting, and business intelligence tasks related to the ExpenseTracker application.
|
|
32
|
+
|
|
33
|
+
customInstructions: |
|
|
34
|
+
# Available ExpenseTracker REST API Endpoints:
|
|
35
|
+
|
|
36
|
+
## Authentication
|
|
37
|
+
- POST /api/auth/login - User login
|
|
38
|
+
- POST /api/auth/signup - User registration
|
|
39
|
+
|
|
40
|
+
## Categories
|
|
41
|
+
- GET /api/categories - Get all expense categories
|
|
42
|
+
- POST /api/categories - Create new category
|
|
43
|
+
- PUT /api/categories/:id - Update category
|
|
44
|
+
- DELETE /api/categories/:id - Delete category
|
|
45
|
+
|
|
46
|
+
## Expenses
|
|
47
|
+
- GET /api/expenses?month=YYYY-MM&category=name - Get expenses (filtered)
|
|
48
|
+
- POST /api/expenses - Create expense
|
|
49
|
+
- PUT /api/expenses/:id - Update expense
|
|
50
|
+
- DELETE /api/expenses/:id - Delete expense
|
|
51
|
+
- GET /api/expenses/recent - Get 10 most recent expenses
|
|
52
|
+
|
|
53
|
+
## Budgets
|
|
54
|
+
- GET /api/budgets?month=YYYY-MM - Get budgets for month
|
|
55
|
+
- POST /api/budgets - Create budget
|
|
56
|
+
- PUT /api/budgets/:id - Update budget
|
|
57
|
+
- DELETE /api/budgets/:id - Delete budget
|
|
58
|
+
- GET /api/total-budget?month=YYYY-MM - Get total monthly budget
|
|
59
|
+
- POST /api/total-budget - Set total monthly budget
|
|
60
|
+
|
|
61
|
+
## Recurring Expenses
|
|
62
|
+
- GET /api/recurring-expenses - Get all recurring expenses
|
|
63
|
+
- POST /api/recurring-expenses - Create recurring expense
|
|
64
|
+
- PUT /api/recurring-expenses/:id - Update recurring expense
|
|
65
|
+
- DELETE /api/recurring-expenses/:id - Delete recurring expense
|
|
66
|
+
|
|
67
|
+
## Analytics
|
|
68
|
+
- GET /api/statistics?month=YYYY-MM - Get comprehensive statistics
|
|
69
|
+
- GET /api/budget-alerts - Get budget alerts and warnings
|
|
70
|
+
- GET /api/predictions?category=name - Get spending predictions
|
|
71
|
+
|
|
72
|
+
## Health & Monitoring
|
|
73
|
+
- GET /health - Basic health check
|
|
74
|
+
- GET /health/ready - Readiness probe
|
|
75
|
+
- GET /health/live - Liveness probe
|
|
76
|
+
- GET /metrics - Prometheus metrics
|
|
77
|
+
|
|
78
|
+
# Database Schema:
|
|
79
|
+
|
|
80
|
+
Tables: users, categories, expenses, budgets, recurring_expenses, total_budgets
|
|
81
|
+
|
|
82
|
+
Key fields:
|
|
83
|
+
- expenses: id, description, amount, category, date, is_recurring, user_id
|
|
84
|
+
- budgets: id, category, amount, month, is_percentage, user_id
|
|
85
|
+
- recurring_expenses: id, description, amount, category, frequency, start_date, user_id
|
|
86
|
+
- categories: id, name, color
|
|
87
|
+
|
|
88
|
+
# Analysis Guidelines:
|
|
89
|
+
|
|
90
|
+
1. Always use execute_command with curl to query the REST API
|
|
91
|
+
2. Parse JSON responses to extract insights
|
|
92
|
+
3. For database queries, use: docker exec expense-tracker-postgres psql -U expenseuser -d expense_tracker -c "SQL"
|
|
93
|
+
4. Provide clear, actionable insights with specific numbers
|
|
94
|
+
5. Format responses professionally with tables, charts (text-based), and summaries
|
|
95
|
+
6. Include recommendations based on data analysis
|
|
96
|
+
7. Compare current vs historical data when relevant
|
|
97
|
+
8. Highlight anomalies, trends, and patterns
|
|
98
|
+
|
|
99
|
+
# Response Format:
|
|
100
|
+
|
|
101
|
+
Structure your analysis responses as:
|
|
102
|
+
|
|
103
|
+
## 📊 Executive Summary
|
|
104
|
+
[Brief overview of key findings]
|
|
105
|
+
|
|
106
|
+
## 📈 Detailed Analysis
|
|
107
|
+
[In-depth breakdown with data]
|
|
108
|
+
|
|
109
|
+
## 💡 Insights & Recommendations
|
|
110
|
+
[Actionable recommendations]
|
|
111
|
+
|
|
112
|
+
## 📉 Trends & Patterns
|
|
113
|
+
[Historical comparisons and predictions]
|
|
114
|
+
|
|
115
|
+
Always provide specific numbers, percentages, and comparisons to make insights actionable.
|
|
116
|
+
|
|
117
|
+
groups:
|
|
118
|
+
- read
|
|
119
|
+
- command
|
|
120
|
+
|
|
121
|
+
# Made with Bob
|
package/dist/cli.js
CHANGED
|
@@ -166,6 +166,21 @@ BOB_SHELL_PATH=bob
|
|
|
166
166
|
log('✅ Updated .gitignore', COLORS.green);
|
|
167
167
|
}
|
|
168
168
|
}
|
|
169
|
+
// Copy custom mode YAML to project .bob directory
|
|
170
|
+
const bobDir = path.join(projectRoot, '.bob');
|
|
171
|
+
if (!fs.existsSync(bobDir)) {
|
|
172
|
+
fs.mkdirSync(bobDir, { recursive: true });
|
|
173
|
+
log('✅ Created .bob directory', COLORS.green);
|
|
174
|
+
}
|
|
175
|
+
const customModesSource = path.join(__dirname, '..', '.bob', 'custom_modes.yaml');
|
|
176
|
+
const customModesDest = path.join(bobDir, 'custom_modes.yaml');
|
|
177
|
+
if (fs.existsSync(customModesSource)) {
|
|
178
|
+
fs.copyFileSync(customModesSource, customModesDest);
|
|
179
|
+
log('✅ Copied business-analyst custom mode configuration', COLORS.green);
|
|
180
|
+
}
|
|
181
|
+
else {
|
|
182
|
+
log('⚠️ Custom mode YAML not found in package', COLORS.yellow);
|
|
183
|
+
}
|
|
169
184
|
// Auto-inject script into HTML files
|
|
170
185
|
log('\n🔍 Searching for HTML entry points...\n', COLORS.bright);
|
|
171
186
|
const htmlFiles = findHtmlFiles(projectRoot);
|
package/dist/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAsC;AAEtC,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,SAAS,GAAG,CAAC,OAAe,EAAE,QAAgB,MAAM,CAAC,KAAK;IACxD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,WAAW;IAClB,GAAG,CAAC,8CAA8C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACjE,GAAG,CAAC,0CAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7D,GAAG,CAAC,8CAA8C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,SAAS;IAChB,WAAW,EAAE,CAAC;IACd,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAE5D,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,GAAG,CAAC,iEAAiE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACrF,GAAG,CAAC,uCAAuC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3D,GAAG,CAAC,yDAAyD,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7E,GAAG,CAAC,+CAA+C,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,GAAG,CAAC,uCAAuC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAE3D,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACpD,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACrD,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,WAAW,EAAE,CAAC;IACd,GAAG,CAAC,kDAAkD,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEvE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sCAAsC,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAE3D,sBAAsB;IACtB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC;IAE3C,IAAI,cAAc,GAAQ,IAAI,CAAC;IAC/B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,+BAA+B;IAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,IAAI,OAAO,CAAC;QAErD,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;YAClC,SAAS,GAAG,IAAI,CAAC;YACjB,GAAG,CAAC,6BAA6B,UAAU,QAAQ,cAAc,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAEpF,oBAAoB;YACpB,MAAM,UAAU,GAAG,GAAG,UAAU,KAAK,UAAU,SAAS,CAAC;YACzD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACtE,GAAG,CAAC,qEAAqE,UAAU,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9G,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,mDAAmD,cAAc,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,WAAW;QACxB,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI;YACV,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,kBAAkB,EAAE,IAAI;YACxB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;SACjB;KACF,CAAC;IAEF,mDAAmD;IACnD,IAAI,MAAM,GAAG,aAAa,CAAC;IAC3B,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,GAAG;YACP,GAAG,aAAa;YAChB,kCAAkC;YAClC,IAAI,EAAE,cAAc,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI;YAC/C,MAAM,EAAE,cAAc,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM;YACrD,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW;YACpE,YAAY,EAAE,cAAc,CAAC,YAAY,IAAI,aAAa,CAAC,YAAY;YACvE,mDAAmD;YACnD,QAAQ,EAAE;gBACR,GAAG,aAAa,CAAC,QAAQ;gBACzB,GAAG,cAAc,CAAC,QAAQ;aAC3B;SACF,CAAC;QAEF,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAClD,GAAG,CAAC,iBAAiB,cAAc,CAAC,OAAO,IAAI,MAAM,MAAM,cAAc,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3F,GAAG,CAAC,yBAAyB,MAAM,CAAC,IAAI,cAAc,MAAM,CAAC,MAAM,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACtF,GAAG,CAAC,yCAAyC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,uCAAuC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAExG,8CAA8C;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,GAAG,CAAC,+BAA+B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG;;;;eAIR,WAAW;;CAEzB,CAAC;QACE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACtC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,oBAAoB;IACpB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,IAAI,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC5C,SAAS,IAAI,2FAA2F,CAAC;YACzG,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YAC3C,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,qCAAqC;IACrC,GAAG,CAAC,2CAA2C,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,SAAS,SAAS,CAAC,MAAM,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAE7D,iCAAiC;QACjC,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,UAAU,CAAC;QAC1F,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;QAE3E,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAEtD,IAAI,CAAC;gBACH,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAE7C,4BAA4B;gBAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,wCAAwC,CAAC,EAAE,CAAC;oBAC/D,GAAG,CAAC,SAAS,YAAY,qBAAqB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC/D,SAAS;gBACX,CAAC;gBAED,wCAAwC;gBACxC,MAAM,YAAY,GAAG,SAAS,CAAC;gBAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBACnC,MAAM,SAAS,GAAG,yHAAyH,YAAY,EAAE,CAAC;oBAC1J,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;oBAEnD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;oBACzC,GAAG,CAAC,OAAO,YAAY,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC3D,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,SAAS,YAAY,yBAAyB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,GAAG,CAAC,OAAO,YAAY,aAAa,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,yCAAyC,aAAa,CAAC,MAAM,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,qEAAqE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1F,GAAG,CAAC,qEAAqE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,qCAAqC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1D,GAAG,CAAC,qDAAqD,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1E,GAAG,CAAC,qEAAqE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1F,CAAC;IAED,GAAG,CAAC,4DAA4D,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACjF,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,GAAG,CAAC,wDAAwD,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3E,GAAG,CAAC,0CAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7D,GAAG,CAAC,uEAAuE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1F,GAAG,CAAC,8EAA8E,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,WAAqB,EAAE;IACzD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAElC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEnC,wDAAwD;QACxD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YACzF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAAC,MAAe,KAAK;IACvC,WAAW,EAAE,CAAC;IAEd,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;IAChD,GAAG,CAAC,8CAA8C,IAAI,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEnF,yBAAyB;IACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,sCAAsC,CAAC,CAAC;IACpF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,gDAAgD,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAClE,GAAG,CAAC,yCAAyC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,cAAc;IACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAEhE,4BAA4B;IAC5B,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC;IAE1D,eAAe;IACf,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAErD,IAAI,GAAG,EAAE,CAAC;QACR,kCAAkC;QAClC,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;YAC7E,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,GAAG,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,kBAAkB;QAClB,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,WAAW,EAAE,CAAC;IACd,GAAG,CAAC,8CAA8C,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEnE,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;QAC3C,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,SAAS;KACf,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,GAAG,CAAC,mCAAmC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iBAAiB;AACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,MAAM;QACT,WAAW,EAAE,CAAC;QACd,MAAM;IAER,KAAK,OAAO;QACV,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM;IAER,KAAK,KAAK;QACR,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM;IAER,KAAK,OAAO;QACV,YAAY,EAAE,CAAC;QACf,MAAM;IAER,KAAK,MAAM,CAAC;IACZ,KAAK,QAAQ,CAAC;IACd,KAAK,IAAI;QACP,SAAS,EAAE,CAAC;QACZ,MAAM;IAER;QACE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,sBAAsB,OAAO,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACnD,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;AACL,CAAC;AAED,gBAAgB"}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,uCAAyB;AACzB,2CAA6B;AAC7B,iDAAsC;AAEtC,MAAM,MAAM,GAAG;IACb,KAAK,EAAE,SAAS;IAChB,MAAM,EAAE,SAAS;IACjB,KAAK,EAAE,UAAU;IACjB,IAAI,EAAE,UAAU;IAChB,MAAM,EAAE,UAAU;IAClB,GAAG,EAAE,UAAU;IACf,IAAI,EAAE,UAAU;CACjB,CAAC;AAEF,SAAS,GAAG,CAAC,OAAe,EAAE,QAAgB,MAAM,CAAC,KAAK;IACxD,OAAO,CAAC,GAAG,CAAC,GAAG,KAAK,GAAG,OAAO,GAAG,MAAM,CAAC,KAAK,EAAE,CAAC,CAAC;AACnD,CAAC;AAED,SAAS,WAAW;IAClB,GAAG,CAAC,8CAA8C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACjE,GAAG,CAAC,0CAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7D,GAAG,CAAC,8CAA8C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;AAED,SAAS,SAAS;IAChB,WAAW,EAAE,CAAC;IACd,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAC7B,GAAG,CAAC,wCAAwC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAE5D,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,GAAG,CAAC,iEAAiE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACrF,GAAG,CAAC,uCAAuC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3D,GAAG,CAAC,yDAAyD,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC7E,GAAG,CAAC,+CAA+C,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACnE,GAAG,CAAC,uCAAuC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAE3D,GAAG,CAAC,WAAW,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAChC,GAAG,CAAC,iCAAiC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACpD,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IACrD,GAAG,CAAC,kCAAkC,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACvD,CAAC;AAED,KAAK,UAAU,WAAW;IACxB,WAAW,EAAE,CAAC;IACd,GAAG,CAAC,kDAAkD,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEvE,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,sCAAsC,CAAC,CAAC;IAClF,MAAM,OAAO,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,kBAAkB,CAAC,CAAC;IAE3D,sBAAsB;IACtB,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,cAAc,CAAC,CAAC;IACnE,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,eAAe,EAAE,OAAO,CAAC,CAAC,CAAC;IAC1E,MAAM,cAAc,GAAG,WAAW,CAAC,OAAO,CAAC;IAE3C,IAAI,cAAc,GAAQ,IAAI,CAAC;IAC/B,IAAI,SAAS,GAAG,KAAK,CAAC;IAEtB,+BAA+B;IAC/B,IAAI,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC9B,cAAc,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;QAClE,MAAM,UAAU,GAAG,cAAc,CAAC,OAAO,IAAI,OAAO,CAAC;QAErD,IAAI,UAAU,KAAK,cAAc,EAAE,CAAC;YAClC,SAAS,GAAG,IAAI,CAAC;YACjB,GAAG,CAAC,6BAA6B,UAAU,QAAQ,cAAc,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;YAEpF,oBAAoB;YACpB,MAAM,UAAU,GAAG,GAAG,UAAU,KAAK,UAAU,SAAS,CAAC;YACzD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,cAAc,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;YACtE,GAAG,CAAC,qEAAqE,UAAU,SAAS,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9G,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,mDAAmD,cAAc,OAAO,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC7F,CAAC;IACH,CAAC;IAED,wBAAwB;IACxB,MAAM,aAAa,GAAG;QACpB,OAAO,EAAE,cAAc;QACvB,IAAI,EAAE,IAAI;QACV,MAAM,EAAE,IAAI;QACZ,WAAW,EAAE,WAAW;QACxB,YAAY,EAAE,KAAK;QACnB,QAAQ,EAAE;YACR,IAAI,EAAE,IAAI;YACV,eAAe,EAAE,IAAI;YACrB,cAAc,EAAE,IAAI;YACpB,kBAAkB,EAAE,IAAI;YACxB,OAAO,EAAE,IAAI;YACb,UAAU,EAAE,IAAI;SACjB;KACF,CAAC;IAEF,mDAAmD;IACnD,IAAI,MAAM,GAAG,aAAa,CAAC;IAC3B,IAAI,cAAc,EAAE,CAAC;QACnB,MAAM,GAAG;YACP,GAAG,aAAa;YAChB,kCAAkC;YAClC,IAAI,EAAE,cAAc,CAAC,IAAI,IAAI,aAAa,CAAC,IAAI;YAC/C,MAAM,EAAE,cAAc,CAAC,MAAM,IAAI,aAAa,CAAC,MAAM;YACrD,WAAW,EAAE,cAAc,CAAC,WAAW,IAAI,aAAa,CAAC,WAAW;YACpE,YAAY,EAAE,cAAc,CAAC,YAAY,IAAI,aAAa,CAAC,YAAY;YACvE,mDAAmD;YACnD,QAAQ,EAAE;gBACR,GAAG,aAAa,CAAC,QAAQ;gBACzB,GAAG,cAAc,CAAC,QAAQ;aAC3B;SACF,CAAC;QAEF,IAAI,SAAS,EAAE,CAAC;YACd,GAAG,CAAC,6BAA6B,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAClD,GAAG,CAAC,iBAAiB,cAAc,CAAC,OAAO,IAAI,MAAM,MAAM,cAAc,EAAE,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YAC3F,GAAG,CAAC,yBAAyB,MAAM,CAAC,IAAI,cAAc,MAAM,CAAC,MAAM,GAAG,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;YACtF,GAAG,CAAC,yCAAyC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/D,CAAC;IACH,CAAC;IAED,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;IAC9D,GAAG,CAAC,OAAO,cAAc,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,SAAS,uCAAuC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAExG,8CAA8C;IAC9C,MAAM,WAAW,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,WAAW,CAAC,CAAC;IACxD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,EAAE,CAAC;QAChC,EAAE,CAAC,SAAS,CAAC,WAAW,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC/C,GAAG,CAAC,+BAA+B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IACrD,CAAC;IAED,uCAAuC;IACvC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,OAAO,CAAC,EAAE,CAAC;QAC5B,MAAM,UAAU,GAAG;;;;eAIR,WAAW;;CAEzB,CAAC;QACE,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,UAAU,CAAC,CAAC;QACtC,GAAG,CAAC,4BAA4B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAClD,CAAC;IAED,oBAAoB;IACpB,MAAM,aAAa,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,YAAY,CAAC,CAAC;IAC3D,IAAI,EAAE,CAAC,UAAU,CAAC,aAAa,CAAC,EAAE,CAAC;QACjC,IAAI,SAAS,GAAG,EAAE,CAAC,YAAY,CAAC,aAAa,EAAE,OAAO,CAAC,CAAC;QACxD,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,CAAC,EAAE,CAAC;YAC5C,SAAS,IAAI,2FAA2F,CAAC;YACzG,EAAE,CAAC,aAAa,CAAC,aAAa,EAAE,SAAS,CAAC,CAAC;YAC3C,GAAG,CAAC,sBAAsB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5C,CAAC;IACH,CAAC;IAED,kDAAkD;IAClD,MAAM,MAAM,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,MAAM,CAAC,CAAC;IAC9C,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3B,EAAE,CAAC,SAAS,CAAC,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;QAC1C,GAAG,CAAC,0BAA0B,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAChD,CAAC;IAED,MAAM,iBAAiB,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAClF,MAAM,eAAe,GAAG,IAAI,CAAC,IAAI,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;IAE/D,IAAI,EAAE,CAAC,UAAU,CAAC,iBAAiB,CAAC,EAAE,CAAC;QACrC,EAAE,CAAC,YAAY,CAAC,iBAAiB,EAAE,eAAe,CAAC,CAAC;QACpD,GAAG,CAAC,qDAAqD,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC3E,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,2CAA2C,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAClE,CAAC;IAED,qCAAqC;IACrC,GAAG,CAAC,2CAA2C,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAChE,MAAM,SAAS,GAAG,aAAa,CAAC,WAAW,CAAC,CAAC;IAC7C,MAAM,aAAa,GAAa,EAAE,CAAC;IAEnC,IAAI,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACzB,GAAG,CAAC,SAAS,SAAS,CAAC,MAAM,iBAAiB,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAE7D,iCAAiC;QACjC,MAAM,aAAa,GAAG,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,EAAE;YAC5C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC;YACrC,OAAO,QAAQ,KAAK,YAAY,IAAI,QAAQ,KAAK,WAAW,IAAI,QAAQ,KAAK,UAAU,CAAC;QAC1F,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,aAAa,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,SAAS,CAAC;QAE3E,KAAK,MAAM,IAAI,IAAI,aAAa,EAAE,CAAC;YACjC,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,IAAI,CAAC,CAAC;YAEtD,IAAI,CAAC;gBACH,IAAI,OAAO,GAAG,EAAE,CAAC,YAAY,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC;gBAE7C,4BAA4B;gBAC5B,IAAI,OAAO,CAAC,QAAQ,CAAC,wCAAwC,CAAC,EAAE,CAAC;oBAC/D,GAAG,CAAC,SAAS,YAAY,qBAAqB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;oBAC/D,SAAS;gBACX,CAAC;gBAED,wCAAwC;gBACxC,MAAM,YAAY,GAAG,SAAS,CAAC;gBAC/B,IAAI,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC,EAAE,CAAC;oBACnC,MAAM,SAAS,GAAG,yHAAyH,YAAY,EAAE,CAAC;oBAC1J,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,YAAY,EAAE,SAAS,CAAC,CAAC;oBAEnD,EAAE,CAAC,aAAa,CAAC,IAAI,EAAE,OAAO,EAAE,OAAO,CAAC,CAAC;oBACzC,GAAG,CAAC,OAAO,YAAY,oBAAoB,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;oBAC3D,aAAa,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;gBACnC,CAAC;qBAAM,CAAC;oBACN,GAAG,CAAC,SAAS,YAAY,yBAAyB,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;gBACrE,CAAC;YACH,CAAC;YAAC,OAAO,KAAU,EAAE,CAAC;gBACpB,GAAG,CAAC,OAAO,YAAY,aAAa,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACnE,CAAC;QACH,CAAC;QAED,IAAI,aAAa,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YAC7B,GAAG,CAAC,yCAAyC,aAAa,CAAC,MAAM,WAAW,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QAC9F,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,qEAAqE,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;YAC1F,GAAG,CAAC,qEAAqE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;QAC1F,CAAC;IACH,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,qCAAqC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1D,GAAG,CAAC,qDAAqD,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1E,GAAG,CAAC,qEAAqE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC1F,CAAC;IAED,GAAG,CAAC,4DAA4D,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IACjF,GAAG,CAAC,aAAa,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAClC,GAAG,CAAC,wDAAwD,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC3E,GAAG,CAAC,0CAA0C,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAC7D,GAAG,CAAC,uEAAuE,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;IAE1F,GAAG,CAAC,8EAA8E,EAAE,MAAM,CAAC,IAAI,CAAC,CAAC;AACnG,CAAC;AAED,SAAS,aAAa,CAAC,GAAW,EAAE,WAAqB,EAAE;IACzD,MAAM,KAAK,GAAG,EAAE,CAAC,WAAW,CAAC,GAAG,CAAC,CAAC;IAElC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE;QACnB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,GAAG,EAAE,IAAI,CAAC,CAAC;QACtC,MAAM,IAAI,GAAG,EAAE,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;QAEnC,wDAAwD;QACxD,IAAI,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACvB,MAAM,QAAQ,GAAG,CAAC,cAAc,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,EAAE,OAAO,EAAE,UAAU,CAAC,CAAC;YACzF,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC7B,aAAa,CAAC,QAAQ,EAAE,QAAQ,CAAC,CAAC;YACpC,CAAC;QACH,CAAC;aAAM,IAAI,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC,EAAE,CAAC;YAClC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAS,WAAW,CAAC,MAAe,KAAK;IACvC,WAAW,EAAE,CAAC;IAEd,MAAM,IAAI,GAAG,GAAG,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,YAAY,CAAC;IAChD,GAAG,CAAC,8CAA8C,IAAI,YAAY,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEnF,yBAAyB;IACzB,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,EAAE,EAAE,sCAAsC,CAAC,CAAC;IACpF,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,gDAAgD,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;QAClE,GAAG,CAAC,yCAAyC,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;QAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,cAAc;IACd,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAEhE,4BAA4B;IAC5B,OAAO,CAAC,GAAG,CAAC,gBAAgB,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC;IACtD,OAAO,CAAC,GAAG,CAAC,mBAAmB,GAAG,MAAM,CAAC,MAAM,CAAC,QAAQ,EAAE,CAAC;IAC3D,OAAO,CAAC,GAAG,CAAC,YAAY,GAAG,MAAM,CAAC,WAAW,CAAC;IAC9C,OAAO,CAAC,GAAG,CAAC,cAAc,GAAG,MAAM,CAAC,YAAY,IAAI,KAAK,CAAC;IAE1D,eAAe;IACf,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;IAErD,IAAI,GAAG,EAAE,CAAC;QACR,kCAAkC;QAClC,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,EAAE,UAAU,CAAC,OAAO,CAAC,KAAK,EAAE,KAAK,CAAC,CAAC,EAAE;YAC7E,KAAK,EAAE,SAAS;YAChB,KAAK,EAAE,IAAI;YACX,GAAG,EAAE,EAAE,GAAG,OAAO,CAAC,GAAG,EAAE;SACxB,CAAC,CAAC;QAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE;YAC1B,GAAG,CAAC,6BAA6B,KAAK,CAAC,OAAO,EAAE,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YAC9D,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC,CAAC,CAAC;IACL,CAAC;SAAM,CAAC;QACN,kBAAkB;QAClB,OAAO,CAAC,UAAU,CAAC,CAAC;IACtB,CAAC;AACH,CAAC;AAED,SAAS,YAAY;IACnB,WAAW,EAAE,CAAC;IACd,GAAG,CAAC,8CAA8C,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC;IAEnE,MAAM,KAAK,GAAG,IAAA,qBAAK,EAAC,KAAK,EAAE,CAAC,KAAK,EAAE,OAAO,CAAC,EAAE;QAC3C,KAAK,EAAE,SAAS;QAChB,KAAK,EAAE,IAAI;QACX,GAAG,EAAE,SAAS;KACf,CAAC,CAAC;IAEH,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QACzB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;YACf,GAAG,CAAC,mCAAmC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;QACzD,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,mBAAmB,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACrC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;IACH,CAAC,CAAC,CAAC;AACL,CAAC;AAED,iBAAiB;AACjB,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;AACnC,MAAM,OAAO,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC;AAExB,QAAQ,OAAO,EAAE,CAAC;IAChB,KAAK,MAAM;QACT,WAAW,EAAE,CAAC;QACd,MAAM;IAER,KAAK,OAAO;QACV,WAAW,CAAC,KAAK,CAAC,CAAC;QACnB,MAAM;IAER,KAAK,KAAK;QACR,WAAW,CAAC,IAAI,CAAC,CAAC;QAClB,MAAM;IAER,KAAK,OAAO;QACV,YAAY,EAAE,CAAC;QACf,MAAM;IAER,KAAK,MAAM,CAAC;IACZ,KAAK,QAAQ,CAAC;IACd,KAAK,IAAI;QACP,SAAS,EAAE,CAAC;QACZ,MAAM;IAER;QACE,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,SAAS,EAAE,CAAC;QACd,CAAC;aAAM,CAAC;YACN,GAAG,CAAC,sBAAsB,OAAO,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,CAAC;YACnD,SAAS,EAAE,CAAC;YACZ,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;QAClB,CAAC;AACL,CAAC;AAED,gBAAgB"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiRoutes.d.ts","sourceRoot":"","sources":["../../src/routes/aiRoutes.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"aiRoutes.d.ts","sourceRoot":"","sources":["../../src/routes/aiRoutes.ts"],"names":[],"mappings":"AAGA,QAAA,MAAM,MAAM,4CAAW,CAAC;AAyIxB,eAAe,MAAM,CAAC"}
|
package/dist/routes/aiRoutes.js
CHANGED
|
@@ -1,19 +1,41 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
const express_1 = require("express");
|
|
4
|
+
const bobShellService_1 = require("../services/bobShellService");
|
|
4
5
|
const router = (0, express_1.Router)();
|
|
5
|
-
// Chat endpoint - handles expense tracking conversations
|
|
6
|
+
// Chat endpoint - handles expense tracking conversations using Bob Shell
|
|
6
7
|
router.post('/chat', async (req, res) => {
|
|
7
8
|
try {
|
|
8
9
|
const { message, sessionId } = req.body;
|
|
9
10
|
if (!message || !sessionId) {
|
|
10
11
|
return res.status(400).json({ error: 'Message and sessionId are required' });
|
|
11
12
|
}
|
|
12
|
-
|
|
13
|
-
|
|
13
|
+
console.log(`💬 Chat request from session ${sessionId}: ${message.substring(0, 50)}...`);
|
|
14
|
+
// Get Bob Shell service for this session
|
|
15
|
+
const bobShell = (0, bobShellService_1.getBobShellService)(sessionId);
|
|
16
|
+
// Initialize Bob Shell if not already initialized
|
|
17
|
+
if (!bobShell.isReady()) {
|
|
18
|
+
console.log(`🚀 Initializing Bob Shell for session ${sessionId}...`);
|
|
19
|
+
const initialized = await bobShell.initialize(sessionId);
|
|
20
|
+
if (!initialized) {
|
|
21
|
+
return res.status(500).json({
|
|
22
|
+
error: 'Failed to initialize Bob Shell. Please check your Bob Shell installation.',
|
|
23
|
+
success: false
|
|
24
|
+
});
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
// Send message to Bob Shell and get response
|
|
28
|
+
const bobResponse = await bobShell.sendMessage(message);
|
|
29
|
+
if (!bobResponse.success) {
|
|
30
|
+
return res.status(500).json({
|
|
31
|
+
error: bobResponse.error || 'Failed to get response from Bob Shell',
|
|
32
|
+
success: false
|
|
33
|
+
});
|
|
34
|
+
}
|
|
14
35
|
res.json({
|
|
15
36
|
success: true,
|
|
16
|
-
response,
|
|
37
|
+
response: bobResponse.output || '',
|
|
38
|
+
isStreaming: bobResponse.isStreaming || false,
|
|
17
39
|
timestamp: Date.now()
|
|
18
40
|
});
|
|
19
41
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"aiRoutes.js","sourceRoot":"","sources":["../../src/routes/aiRoutes.ts"],"names":[],"mappings":";;AAAA,qCAAoD;
|
|
1
|
+
{"version":3,"file":"aiRoutes.js","sourceRoot":"","sources":["../../src/routes/aiRoutes.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { EventEmitter } from 'events';
|
|
2
|
+
export interface BobShellResponse {
|
|
3
|
+
success: boolean;
|
|
4
|
+
output?: string;
|
|
5
|
+
error?: string;
|
|
6
|
+
isStreaming?: boolean;
|
|
7
|
+
}
|
|
8
|
+
export interface StreamChunk {
|
|
9
|
+
type: 'output' | 'error' | 'complete';
|
|
10
|
+
content: string;
|
|
11
|
+
timestamp: number;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Bob Shell Service for Expense Tracker Chatbot
|
|
15
|
+
* Runs Bob Shell in interactive mode with business-analyst custom mode
|
|
16
|
+
* Maintains conversation context across multiple messages
|
|
17
|
+
*/
|
|
18
|
+
export declare class BobShellService extends EventEmitter {
|
|
19
|
+
private bobShellPath;
|
|
20
|
+
private projectRoot;
|
|
21
|
+
private apiKey?;
|
|
22
|
+
private licenseAccepted;
|
|
23
|
+
private bobProcess;
|
|
24
|
+
private sessionId;
|
|
25
|
+
private isInitialized;
|
|
26
|
+
private outputBuffer;
|
|
27
|
+
private errorBuffer;
|
|
28
|
+
constructor();
|
|
29
|
+
/**
|
|
30
|
+
* Initialize Bob Shell in interactive mode with business-analyst custom mode
|
|
31
|
+
*/
|
|
32
|
+
initialize(sessionId: string): Promise<boolean>;
|
|
33
|
+
/**
|
|
34
|
+
* Set up output handlers for Bob Shell process
|
|
35
|
+
*/
|
|
36
|
+
private setupOutputHandlers;
|
|
37
|
+
/**
|
|
38
|
+
* Wait for Bob Shell to be ready (look for initial prompt)
|
|
39
|
+
*/
|
|
40
|
+
private waitForReady;
|
|
41
|
+
/**
|
|
42
|
+
* Send a message to Bob Shell and get response
|
|
43
|
+
* Maintains conversation context in interactive mode
|
|
44
|
+
*/
|
|
45
|
+
sendMessage(message: string): Promise<BobShellResponse>;
|
|
46
|
+
/**
|
|
47
|
+
* Wait for Bob Shell response to complete
|
|
48
|
+
*/
|
|
49
|
+
private waitForResponse;
|
|
50
|
+
/**
|
|
51
|
+
* Terminate Bob Shell process
|
|
52
|
+
*/
|
|
53
|
+
terminate(): Promise<void>;
|
|
54
|
+
/**
|
|
55
|
+
* Check if Bob Shell is initialized and ready
|
|
56
|
+
*/
|
|
57
|
+
isReady(): boolean;
|
|
58
|
+
/**
|
|
59
|
+
* Get current session ID
|
|
60
|
+
*/
|
|
61
|
+
getSessionId(): string | null;
|
|
62
|
+
/**
|
|
63
|
+
* Get project root directory
|
|
64
|
+
*/
|
|
65
|
+
getProjectRoot(): string;
|
|
66
|
+
/**
|
|
67
|
+
* Read file content
|
|
68
|
+
*/
|
|
69
|
+
readFile(filePath: string): Promise<string>;
|
|
70
|
+
/**
|
|
71
|
+
* Check if file exists
|
|
72
|
+
*/
|
|
73
|
+
fileExists(filePath: string): Promise<boolean>;
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Get or create Bob Shell service instance for a session
|
|
77
|
+
*/
|
|
78
|
+
export declare function getBobShellService(sessionId: string): BobShellService;
|
|
79
|
+
/**
|
|
80
|
+
* Clean up Bob Shell service for a session
|
|
81
|
+
*/
|
|
82
|
+
export declare function cleanupBobShellService(sessionId: string): Promise<void>;
|
|
83
|
+
//# sourceMappingURL=bobShellService.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bobShellService.d.ts","sourceRoot":"","sources":["../../src/services/bobShellService.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,QAAQ,CAAC;AAEtC,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,OAAO,GAAG,UAAU,CAAC;IACtC,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;CACnB;AAED;;;;GAIG;AACH,qBAAa,eAAgB,SAAQ,YAAY;IAC/C,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,MAAM,CAAC,CAAS;IACxB,OAAO,CAAC,eAAe,CAAU;IACjC,OAAO,CAAC,UAAU,CAA6B;IAC/C,OAAO,CAAC,SAAS,CAAuB;IACxC,OAAO,CAAC,aAAa,CAAkB;IACvC,OAAO,CAAC,YAAY,CAAc;IAClC,OAAO,CAAC,WAAW,CAAc;;IAYjC;;OAEG;IACG,UAAU,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;IA0DrD;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAiD3B;;OAEG;YACW,YAAY;IAyB1B;;;OAGG;IACG,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,gBAAgB,CAAC;IA6C7D;;OAEG;YACW,eAAe;IA0C7B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,IAAI,CAAC;IA8BhC;;OAEG;IACH,OAAO,IAAI,OAAO;IAIlB;;OAEG;IACH,YAAY,IAAI,MAAM,GAAG,IAAI;IAI7B;;OAEG;IACH,cAAc,IAAI,MAAM;IAIxB;;OAEG;IACG,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC;IAKjD;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC;CASrD;AAKD;;GAEG;AACH,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,eAAe,CAKrE;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAM7E"}
|
|
@@ -0,0 +1,319 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.BobShellService = void 0;
|
|
7
|
+
exports.getBobShellService = getBobShellService;
|
|
8
|
+
exports.cleanupBobShellService = cleanupBobShellService;
|
|
9
|
+
const child_process_1 = require("child_process");
|
|
10
|
+
const path_1 = __importDefault(require("path"));
|
|
11
|
+
const promises_1 = __importDefault(require("fs/promises"));
|
|
12
|
+
const events_1 = require("events");
|
|
13
|
+
/**
|
|
14
|
+
* Bob Shell Service for Expense Tracker Chatbot
|
|
15
|
+
* Runs Bob Shell in interactive mode with business-analyst custom mode
|
|
16
|
+
* Maintains conversation context across multiple messages
|
|
17
|
+
*/
|
|
18
|
+
class BobShellService extends events_1.EventEmitter {
|
|
19
|
+
constructor() {
|
|
20
|
+
super();
|
|
21
|
+
this.bobProcess = null;
|
|
22
|
+
this.sessionId = null;
|
|
23
|
+
this.isInitialized = false;
|
|
24
|
+
this.outputBuffer = '';
|
|
25
|
+
this.errorBuffer = '';
|
|
26
|
+
this.bobShellPath = process.env.BOB_SHELL_PATH || 'bob';
|
|
27
|
+
this.projectRoot = process.env.PROJECT_ROOT || process.cwd();
|
|
28
|
+
this.apiKey = process.env.BOB_API_KEY;
|
|
29
|
+
this.licenseAccepted = process.env.BOB_LICENSE_ACCEPTED === 'true';
|
|
30
|
+
console.log(`📁 Bob-Shell will operate in: ${this.projectRoot}`);
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* Initialize Bob Shell in interactive mode with business-analyst custom mode
|
|
34
|
+
*/
|
|
35
|
+
async initialize(sessionId) {
|
|
36
|
+
if (this.isInitialized && this.sessionId === sessionId) {
|
|
37
|
+
console.log(`✅ Bob-Shell already initialized for session: ${sessionId}`);
|
|
38
|
+
return true;
|
|
39
|
+
}
|
|
40
|
+
try {
|
|
41
|
+
console.log(`🚀 Initializing Bob-Shell in interactive mode for session: ${sessionId}`);
|
|
42
|
+
// Terminate existing process if any
|
|
43
|
+
if (this.bobProcess) {
|
|
44
|
+
await this.terminate();
|
|
45
|
+
}
|
|
46
|
+
this.sessionId = sessionId;
|
|
47
|
+
// Build command arguments for interactive mode
|
|
48
|
+
const args = [];
|
|
49
|
+
// Add license acceptance flag if configured
|
|
50
|
+
if (this.licenseAccepted) {
|
|
51
|
+
args.push('--accept-license');
|
|
52
|
+
}
|
|
53
|
+
// Use business-analyst custom mode
|
|
54
|
+
args.push('--chat-mode', 'business-analyst');
|
|
55
|
+
// Build environment variables
|
|
56
|
+
const env = { ...process.env };
|
|
57
|
+
if (this.apiKey) {
|
|
58
|
+
env.BOB_API_KEY = this.apiKey;
|
|
59
|
+
}
|
|
60
|
+
// Spawn Bob Shell in interactive mode (no -p flag, no --non-interactive)
|
|
61
|
+
this.bobProcess = (0, child_process_1.spawn)(this.bobShellPath, args, {
|
|
62
|
+
cwd: this.projectRoot,
|
|
63
|
+
env,
|
|
64
|
+
shell: false,
|
|
65
|
+
stdio: ['pipe', 'pipe', 'pipe'], // stdin, stdout, stderr
|
|
66
|
+
});
|
|
67
|
+
// Set up output handlers
|
|
68
|
+
this.setupOutputHandlers();
|
|
69
|
+
// Wait for Bob Shell to be ready (look for prompt)
|
|
70
|
+
await this.waitForReady();
|
|
71
|
+
this.isInitialized = true;
|
|
72
|
+
console.log(`✅ Bob-Shell initialized successfully for session: ${sessionId}`);
|
|
73
|
+
return true;
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
console.error('❌ Failed to initialize Bob-Shell:', error.message);
|
|
77
|
+
this.isInitialized = false;
|
|
78
|
+
return false;
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Set up output handlers for Bob Shell process
|
|
83
|
+
*/
|
|
84
|
+
setupOutputHandlers() {
|
|
85
|
+
if (!this.bobProcess)
|
|
86
|
+
return;
|
|
87
|
+
this.bobProcess.stdout?.on('data', (data) => {
|
|
88
|
+
const chunk = data.toString();
|
|
89
|
+
this.outputBuffer += chunk;
|
|
90
|
+
// Emit streaming chunks
|
|
91
|
+
this.emit('output', {
|
|
92
|
+
type: 'output',
|
|
93
|
+
content: chunk,
|
|
94
|
+
timestamp: Date.now(),
|
|
95
|
+
});
|
|
96
|
+
});
|
|
97
|
+
this.bobProcess.stderr?.on('data', (data) => {
|
|
98
|
+
const chunk = data.toString();
|
|
99
|
+
this.errorBuffer += chunk;
|
|
100
|
+
// Emit error chunks
|
|
101
|
+
this.emit('error', {
|
|
102
|
+
type: 'error',
|
|
103
|
+
content: chunk,
|
|
104
|
+
timestamp: Date.now(),
|
|
105
|
+
});
|
|
106
|
+
});
|
|
107
|
+
this.bobProcess.on('close', (code) => {
|
|
108
|
+
console.log(`🔚 Bob-Shell process closed with code: ${code}`);
|
|
109
|
+
this.isInitialized = false;
|
|
110
|
+
this.bobProcess = null;
|
|
111
|
+
this.emit('close', {
|
|
112
|
+
type: 'complete',
|
|
113
|
+
content: `Process closed with code ${code}`,
|
|
114
|
+
timestamp: Date.now(),
|
|
115
|
+
});
|
|
116
|
+
});
|
|
117
|
+
this.bobProcess.on('error', (error) => {
|
|
118
|
+
console.error('❌ Bob-Shell process error:', error.message);
|
|
119
|
+
this.emit('error', {
|
|
120
|
+
type: 'error',
|
|
121
|
+
content: error.message,
|
|
122
|
+
timestamp: Date.now(),
|
|
123
|
+
});
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Wait for Bob Shell to be ready (look for initial prompt)
|
|
128
|
+
*/
|
|
129
|
+
async waitForReady(timeout = 10000) {
|
|
130
|
+
return new Promise((resolve, reject) => {
|
|
131
|
+
const startTime = Date.now();
|
|
132
|
+
const checkReady = () => {
|
|
133
|
+
// Look for Bob Shell prompt indicators in output
|
|
134
|
+
if (this.outputBuffer.includes('Bob') ||
|
|
135
|
+
this.outputBuffer.includes('💼') ||
|
|
136
|
+
this.outputBuffer.length > 100) {
|
|
137
|
+
resolve();
|
|
138
|
+
return;
|
|
139
|
+
}
|
|
140
|
+
if (Date.now() - startTime > timeout) {
|
|
141
|
+
reject(new Error('Bob-Shell initialization timeout'));
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
setTimeout(checkReady, 100);
|
|
145
|
+
};
|
|
146
|
+
checkReady();
|
|
147
|
+
});
|
|
148
|
+
}
|
|
149
|
+
/**
|
|
150
|
+
* Send a message to Bob Shell and get response
|
|
151
|
+
* Maintains conversation context in interactive mode
|
|
152
|
+
*/
|
|
153
|
+
async sendMessage(message) {
|
|
154
|
+
if (!this.isInitialized || !this.bobProcess || !this.bobProcess.stdin) {
|
|
155
|
+
return {
|
|
156
|
+
success: false,
|
|
157
|
+
error: 'Bob-Shell not initialized. Please initialize first.',
|
|
158
|
+
};
|
|
159
|
+
}
|
|
160
|
+
try {
|
|
161
|
+
// Sanitize message
|
|
162
|
+
const sanitizedMessage = message.replace(/[\x00-\x08\x0B-\x0C\x0E-\x1F\x7F]/g, '');
|
|
163
|
+
if (sanitizedMessage.length > 10000) {
|
|
164
|
+
return {
|
|
165
|
+
success: false,
|
|
166
|
+
error: 'Message exceeds maximum length of 10000 characters',
|
|
167
|
+
};
|
|
168
|
+
}
|
|
169
|
+
console.log(`💬 Sending message to Bob-Shell (${sanitizedMessage.length} chars)`);
|
|
170
|
+
// Clear buffers before sending new message
|
|
171
|
+
this.outputBuffer = '';
|
|
172
|
+
this.errorBuffer = '';
|
|
173
|
+
// Write message to Bob Shell stdin
|
|
174
|
+
this.bobProcess.stdin.write(sanitizedMessage + '\n');
|
|
175
|
+
// Wait for response (look for completion indicators)
|
|
176
|
+
const response = await this.waitForResponse();
|
|
177
|
+
return {
|
|
178
|
+
success: true,
|
|
179
|
+
output: response,
|
|
180
|
+
isStreaming: true,
|
|
181
|
+
};
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
console.error('❌ Failed to send message to Bob-Shell:', error.message);
|
|
185
|
+
return {
|
|
186
|
+
success: false,
|
|
187
|
+
error: error.message || 'Failed to send message',
|
|
188
|
+
};
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Wait for Bob Shell response to complete
|
|
193
|
+
*/
|
|
194
|
+
async waitForResponse(timeout = 120000) {
|
|
195
|
+
return new Promise((resolve, reject) => {
|
|
196
|
+
const startTime = Date.now();
|
|
197
|
+
let lastOutputTime = Date.now();
|
|
198
|
+
let stableOutputCount = 0;
|
|
199
|
+
const checkResponse = () => {
|
|
200
|
+
const currentTime = Date.now();
|
|
201
|
+
// Check for timeout
|
|
202
|
+
if (currentTime - startTime > timeout) {
|
|
203
|
+
resolve(this.outputBuffer);
|
|
204
|
+
return;
|
|
205
|
+
}
|
|
206
|
+
// Check if output has stabilized (no new output for 2 seconds)
|
|
207
|
+
if (this.outputBuffer.length > 0) {
|
|
208
|
+
if (currentTime - lastOutputTime > 2000) {
|
|
209
|
+
stableOutputCount++;
|
|
210
|
+
if (stableOutputCount >= 2) {
|
|
211
|
+
// Output has been stable for 4 seconds, consider it complete
|
|
212
|
+
resolve(this.outputBuffer);
|
|
213
|
+
return;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
else {
|
|
217
|
+
stableOutputCount = 0;
|
|
218
|
+
}
|
|
219
|
+
}
|
|
220
|
+
// Update last output time if buffer changed
|
|
221
|
+
const currentBufferLength = this.outputBuffer.length;
|
|
222
|
+
if (currentBufferLength > 0) {
|
|
223
|
+
lastOutputTime = currentTime;
|
|
224
|
+
}
|
|
225
|
+
setTimeout(checkResponse, 1000);
|
|
226
|
+
};
|
|
227
|
+
checkResponse();
|
|
228
|
+
});
|
|
229
|
+
}
|
|
230
|
+
/**
|
|
231
|
+
* Terminate Bob Shell process
|
|
232
|
+
*/
|
|
233
|
+
async terminate() {
|
|
234
|
+
if (this.bobProcess) {
|
|
235
|
+
console.log('🛑 Terminating Bob-Shell process...');
|
|
236
|
+
// Try graceful shutdown first
|
|
237
|
+
if (this.bobProcess.stdin) {
|
|
238
|
+
this.bobProcess.stdin.write('/exit\n');
|
|
239
|
+
}
|
|
240
|
+
// Wait a bit for graceful shutdown
|
|
241
|
+
await new Promise(resolve => setTimeout(resolve, 1000));
|
|
242
|
+
// Force kill if still running
|
|
243
|
+
if (this.bobProcess && !this.bobProcess.killed) {
|
|
244
|
+
this.bobProcess.kill('SIGTERM');
|
|
245
|
+
// Force kill after 2 seconds if still alive
|
|
246
|
+
setTimeout(() => {
|
|
247
|
+
if (this.bobProcess && !this.bobProcess.killed) {
|
|
248
|
+
this.bobProcess.kill('SIGKILL');
|
|
249
|
+
}
|
|
250
|
+
}, 2000);
|
|
251
|
+
}
|
|
252
|
+
this.bobProcess = null;
|
|
253
|
+
this.isInitialized = false;
|
|
254
|
+
this.sessionId = null;
|
|
255
|
+
}
|
|
256
|
+
}
|
|
257
|
+
/**
|
|
258
|
+
* Check if Bob Shell is initialized and ready
|
|
259
|
+
*/
|
|
260
|
+
isReady() {
|
|
261
|
+
return this.isInitialized && this.bobProcess !== null && !this.bobProcess.killed;
|
|
262
|
+
}
|
|
263
|
+
/**
|
|
264
|
+
* Get current session ID
|
|
265
|
+
*/
|
|
266
|
+
getSessionId() {
|
|
267
|
+
return this.sessionId;
|
|
268
|
+
}
|
|
269
|
+
/**
|
|
270
|
+
* Get project root directory
|
|
271
|
+
*/
|
|
272
|
+
getProjectRoot() {
|
|
273
|
+
return this.projectRoot;
|
|
274
|
+
}
|
|
275
|
+
/**
|
|
276
|
+
* Read file content
|
|
277
|
+
*/
|
|
278
|
+
async readFile(filePath) {
|
|
279
|
+
const fullPath = path_1.default.resolve(this.projectRoot, filePath);
|
|
280
|
+
return await promises_1.default.readFile(fullPath, 'utf-8');
|
|
281
|
+
}
|
|
282
|
+
/**
|
|
283
|
+
* Check if file exists
|
|
284
|
+
*/
|
|
285
|
+
async fileExists(filePath) {
|
|
286
|
+
try {
|
|
287
|
+
const fullPath = path_1.default.resolve(this.projectRoot, filePath);
|
|
288
|
+
await promises_1.default.access(fullPath);
|
|
289
|
+
return true;
|
|
290
|
+
}
|
|
291
|
+
catch {
|
|
292
|
+
return false;
|
|
293
|
+
}
|
|
294
|
+
}
|
|
295
|
+
}
|
|
296
|
+
exports.BobShellService = BobShellService;
|
|
297
|
+
// Singleton instance per session
|
|
298
|
+
const sessionInstances = new Map();
|
|
299
|
+
/**
|
|
300
|
+
* Get or create Bob Shell service instance for a session
|
|
301
|
+
*/
|
|
302
|
+
function getBobShellService(sessionId) {
|
|
303
|
+
if (!sessionInstances.has(sessionId)) {
|
|
304
|
+
sessionInstances.set(sessionId, new BobShellService());
|
|
305
|
+
}
|
|
306
|
+
return sessionInstances.get(sessionId);
|
|
307
|
+
}
|
|
308
|
+
/**
|
|
309
|
+
* Clean up Bob Shell service for a session
|
|
310
|
+
*/
|
|
311
|
+
async function cleanupBobShellService(sessionId) {
|
|
312
|
+
const service = sessionInstances.get(sessionId);
|
|
313
|
+
if (service) {
|
|
314
|
+
await service.terminate();
|
|
315
|
+
sessionInstances.delete(sessionId);
|
|
316
|
+
}
|
|
317
|
+
}
|
|
318
|
+
// Made with Bob
|
|
319
|
+
//# sourceMappingURL=bobShellService.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bobShellService.js","sourceRoot":"","sources":["../../src/services/bobShellService.ts"],"names":[],"mappings":"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"}
|
package/dist/websocket.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,IAAI,CAAC;AAIhD,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,GAAG,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,eAAe;IAC9B,EAAE,EAAE,SAAS,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,OAAO,CAAC;CAClB;AAID,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,eAAe,QAgGxD;AAwQD,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,gBAAgB,QAM9E;AAED,wBAAgB,cAAc,CAAC,OAAO,EAAE,gBAAgB,QAMvD;AAED,wBAAgB,mBAAmB,IAAI,MAAM,EAAE,CAE9C;AAED,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAE7D"}
|
package/dist/websocket.js
CHANGED
|
@@ -7,6 +7,7 @@ exports.getConnectedClients = getConnectedClients;
|
|
|
7
7
|
exports.isSessionConnected = isSessionConnected;
|
|
8
8
|
const ws_1 = require("ws");
|
|
9
9
|
const database_1 = require("./database");
|
|
10
|
+
const bobShellService_1 = require("./services/bobShellService");
|
|
10
11
|
const clients = new Map();
|
|
11
12
|
function setupWebSocketServer(wss) {
|
|
12
13
|
// Heartbeat to detect dead connections
|
|
@@ -68,10 +69,16 @@ function setupWebSocketServer(wss) {
|
|
|
68
69
|
sendError(ws, error instanceof Error ? error.message : 'Unknown error');
|
|
69
70
|
}
|
|
70
71
|
});
|
|
71
|
-
ws.on('close', () => {
|
|
72
|
+
ws.on('close', async () => {
|
|
72
73
|
if (sessionId) {
|
|
73
74
|
console.log(`WebSocket connection closed for session: ${sessionId}`);
|
|
74
75
|
clients.delete(sessionId);
|
|
76
|
+
// Clean up Bob Shell service if no more clients for this session
|
|
77
|
+
const hasOtherClients = Array.from(clients.values()).some(client => client.sessionId === sessionId);
|
|
78
|
+
if (!hasOtherClients) {
|
|
79
|
+
console.log(`🧹 Cleaning up Bob Shell for session: ${sessionId}`);
|
|
80
|
+
await (0, bobShellService_1.cleanupBobShellService)(sessionId);
|
|
81
|
+
}
|
|
75
82
|
}
|
|
76
83
|
});
|
|
77
84
|
ws.on('error', (error) => {
|
|
@@ -123,6 +130,104 @@ async function handleChat(ws, message) {
|
|
|
123
130
|
},
|
|
124
131
|
requestId: message.requestId
|
|
125
132
|
});
|
|
133
|
+
try {
|
|
134
|
+
// Get Bob Shell service for this session
|
|
135
|
+
const bobShell = (0, bobShellService_1.getBobShellService)(sessionId);
|
|
136
|
+
// Initialize Bob Shell if not already initialized
|
|
137
|
+
if (!bobShell.isReady()) {
|
|
138
|
+
console.log(`🚀 Initializing Bob Shell for session ${sessionId}...`);
|
|
139
|
+
// Send initialization status
|
|
140
|
+
sendMessage(ws, {
|
|
141
|
+
type: 'chat_status',
|
|
142
|
+
payload: {
|
|
143
|
+
status: 'initializing',
|
|
144
|
+
message: 'Initializing AI assistant...'
|
|
145
|
+
}
|
|
146
|
+
});
|
|
147
|
+
const initialized = await bobShell.initialize(sessionId);
|
|
148
|
+
if (!initialized) {
|
|
149
|
+
sendMessage(ws, {
|
|
150
|
+
type: 'chat_response',
|
|
151
|
+
payload: {
|
|
152
|
+
success: false,
|
|
153
|
+
error: 'Failed to initialize Bob Shell. Please check your Bob Shell installation.',
|
|
154
|
+
timestamp: Date.now()
|
|
155
|
+
},
|
|
156
|
+
requestId: message.requestId
|
|
157
|
+
});
|
|
158
|
+
return;
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
// Set up streaming listeners
|
|
162
|
+
const outputHandler = (chunk) => {
|
|
163
|
+
sendMessage(ws, {
|
|
164
|
+
type: 'chat_stream',
|
|
165
|
+
payload: {
|
|
166
|
+
chunk: chunk.content,
|
|
167
|
+
timestamp: chunk.timestamp
|
|
168
|
+
}
|
|
169
|
+
});
|
|
170
|
+
};
|
|
171
|
+
bobShell.on('output', outputHandler);
|
|
172
|
+
// Send processing status
|
|
173
|
+
sendMessage(ws, {
|
|
174
|
+
type: 'chat_status',
|
|
175
|
+
payload: {
|
|
176
|
+
status: 'processing',
|
|
177
|
+
message: 'Analyzing your request...'
|
|
178
|
+
}
|
|
179
|
+
});
|
|
180
|
+
// Send message to Bob Shell
|
|
181
|
+
const bobResponse = await bobShell.sendMessage(userMessage);
|
|
182
|
+
// Remove listener
|
|
183
|
+
bobShell.off('output', outputHandler);
|
|
184
|
+
if (bobResponse.success) {
|
|
185
|
+
// Store assistant response in chat history
|
|
186
|
+
if (bobResponse.output) {
|
|
187
|
+
database_1.chatHistory.add(sessionId, 'assistant', bobResponse.output);
|
|
188
|
+
}
|
|
189
|
+
// Send final response
|
|
190
|
+
sendMessage(ws, {
|
|
191
|
+
type: 'chat_response',
|
|
192
|
+
payload: {
|
|
193
|
+
success: true,
|
|
194
|
+
response: bobResponse.output || '',
|
|
195
|
+
timestamp: Date.now()
|
|
196
|
+
},
|
|
197
|
+
requestId: message.requestId
|
|
198
|
+
});
|
|
199
|
+
// Broadcast updated chat history to all clients in this session
|
|
200
|
+
broadcastToSession(sessionId, {
|
|
201
|
+
type: 'chat_history_updated',
|
|
202
|
+
payload: {
|
|
203
|
+
chatHistory: database_1.chatHistory.getBySession(sessionId, 50).reverse()
|
|
204
|
+
}
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
sendMessage(ws, {
|
|
209
|
+
type: 'chat_response',
|
|
210
|
+
payload: {
|
|
211
|
+
success: false,
|
|
212
|
+
error: bobResponse.error || 'Failed to get response from AI',
|
|
213
|
+
timestamp: Date.now()
|
|
214
|
+
},
|
|
215
|
+
requestId: message.requestId
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
catch (error) {
|
|
220
|
+
console.error('Error in handleChat:', error);
|
|
221
|
+
sendMessage(ws, {
|
|
222
|
+
type: 'chat_response',
|
|
223
|
+
payload: {
|
|
224
|
+
success: false,
|
|
225
|
+
error: error.message || 'An error occurred while processing your message',
|
|
226
|
+
timestamp: Date.now()
|
|
227
|
+
},
|
|
228
|
+
requestId: message.requestId
|
|
229
|
+
});
|
|
230
|
+
}
|
|
126
231
|
}
|
|
127
232
|
async function handleAddExpense(ws, message) {
|
|
128
233
|
const { sessionId, expense } = message.payload;
|
package/dist/websocket.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../src/websocket.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "bob-expense-tracker-chatbot",
|
|
3
|
-
"version": "0.0.
|
|
3
|
+
"version": "0.0.3",
|
|
4
4
|
"description": "BobExpenseTrackerChatBot - AI-powered expense tracking chatbot that can be injected into any web application",
|
|
5
5
|
"main": "dist/server.js",
|
|
6
6
|
"bin": {
|
|
@@ -19,6 +19,7 @@
|
|
|
19
19
|
"dist",
|
|
20
20
|
"public",
|
|
21
21
|
"iframe-app/dist",
|
|
22
|
+
".bob",
|
|
22
23
|
"README.md",
|
|
23
24
|
"LICENSE",
|
|
24
25
|
".env.example"
|