@ancientwhispers54/leafengines-mcp-server 1.1.8 → 2.0.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.
package/dist/sentry.js ADDED
@@ -0,0 +1,166 @@
1
+ "use strict";
2
+ /**
3
+ * Sentry error tracking for LeafEngines MCP Server
4
+ *
5
+ * Provides centralized error tracking and monitoring
6
+ */
7
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
8
+ if (k2 === undefined) k2 = k;
9
+ var desc = Object.getOwnPropertyDescriptor(m, k);
10
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
11
+ desc = { enumerable: true, get: function() { return m[k]; } };
12
+ }
13
+ Object.defineProperty(o, k2, desc);
14
+ }) : (function(o, m, k, k2) {
15
+ if (k2 === undefined) k2 = k;
16
+ o[k2] = m[k];
17
+ }));
18
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
19
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
20
+ }) : function(o, v) {
21
+ o["default"] = v;
22
+ });
23
+ var __importStar = (this && this.__importStar) || (function () {
24
+ var ownKeys = function(o) {
25
+ ownKeys = Object.getOwnPropertyNames || function (o) {
26
+ var ar = [];
27
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
28
+ return ar;
29
+ };
30
+ return ownKeys(o);
31
+ };
32
+ return function (mod) {
33
+ if (mod && mod.__esModule) return mod;
34
+ var result = {};
35
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
36
+ __setModuleDefault(result, mod);
37
+ return result;
38
+ };
39
+ })();
40
+ Object.defineProperty(exports, "__esModule", { value: true });
41
+ exports.sentryTracking = void 0;
42
+ exports.initializeSentry = initializeSentry;
43
+ const Sentry = __importStar(require("@sentry/node"));
44
+ const logger_js_1 = require("./logger.js");
45
+ // Initialize Sentry if DSN is provided
46
+ function initializeSentry() {
47
+ const dsn = process.env.SENTRY_DSN;
48
+ if (!dsn) {
49
+ logger_js_1.logging.businessEvent('sentry_disabled', { reason: 'no_dsn' });
50
+ return null;
51
+ }
52
+ try {
53
+ Sentry.init({
54
+ dsn,
55
+ environment: process.env.NODE_ENV || 'production',
56
+ release: process.env.npm_package_version || '1.1.9',
57
+ tracesSampleRate: parseFloat(process.env.SENTRY_TRACES_SAMPLE_RATE || '0.1'),
58
+ profilesSampleRate: parseFloat(process.env.SENTRY_PROFILES_SAMPLE_RATE || '0.0'),
59
+ // Performance monitoring
60
+ integrations: [
61
+ new Sentry.Integrations.Http({ tracing: true }),
62
+ new Sentry.Integrations.Express(),
63
+ new Sentry.Integrations.OnUncaughtException(),
64
+ new Sentry.Integrations.OnUnhandledRejection(),
65
+ ],
66
+ // Filter out common non-errors
67
+ beforeSend(event) {
68
+ // Filter out specific error types if needed
69
+ return event;
70
+ },
71
+ // Debug logging in development
72
+ debug: process.env.NODE_ENV === 'development',
73
+ });
74
+ logger_js_1.logging.businessEvent('sentry_initialized', {
75
+ environment: process.env.NODE_ENV || 'production',
76
+ sample_rate: parseFloat(process.env.SENTRY_TRACES_SAMPLE_RATE || '0.1')
77
+ });
78
+ return Sentry;
79
+ }
80
+ catch (error) {
81
+ logger_js_1.logging.error('sentry_initialization', error);
82
+ return null;
83
+ }
84
+ }
85
+ // Error tracking utilities
86
+ exports.sentryTracking = {
87
+ // Capture error with context
88
+ captureError: (error, context) => {
89
+ if (Sentry.getCurrentHub().getClient()) {
90
+ Sentry.captureException(error, {
91
+ extra: context,
92
+ tags: {
93
+ service: 'leafengines-mcp-server',
94
+ version: process.env.npm_package_version || '1.1.9'
95
+ }
96
+ });
97
+ }
98
+ // Also log locally
99
+ logger_js_1.logging.error('sentry_captured', error, context);
100
+ },
101
+ // Capture message (non-error events)
102
+ captureMessage: (message, level = 'info', context) => {
103
+ if (Sentry.getCurrentHub().getClient()) {
104
+ Sentry.captureMessage(message, {
105
+ level,
106
+ extra: context,
107
+ tags: {
108
+ service: 'leafengines-mcp-server',
109
+ version: process.env.npm_package_version || '1.1.9'
110
+ }
111
+ });
112
+ }
113
+ // Also log locally
114
+ logger.info({
115
+ event: 'sentry_message',
116
+ message,
117
+ level,
118
+ ...context
119
+ }, message);
120
+ },
121
+ // Set user context for authenticated requests
122
+ setUserContext: (userId, email, additionalData) => {
123
+ if (Sentry.getCurrentHub().getClient()) {
124
+ Sentry.setUser({
125
+ id: userId,
126
+ email: email,
127
+ ...additionalData
128
+ });
129
+ }
130
+ },
131
+ // Clear user context (for anonymous requests)
132
+ clearUserContext: () => {
133
+ if (Sentry.getCurrentHub().getClient()) {
134
+ Sentry.setUser(null);
135
+ }
136
+ },
137
+ // Add breadcrumb for tracing
138
+ addBreadcrumb: (message, category, data) => {
139
+ if (Sentry.getCurrentHub().getClient()) {
140
+ Sentry.addBreadcrumb({
141
+ message,
142
+ category,
143
+ data,
144
+ level: 'info',
145
+ timestamp: Date.now() / 1000
146
+ });
147
+ }
148
+ },
149
+ // Start a transaction for performance monitoring
150
+ startTransaction: (name, operation) => {
151
+ if (Sentry.getCurrentHub().getClient()) {
152
+ return Sentry.startTransaction({
153
+ name,
154
+ op: operation,
155
+ description: `${operation} - ${name}`,
156
+ metadata: {
157
+ source: 'leafengines-mcp-server'
158
+ }
159
+ });
160
+ }
161
+ return null;
162
+ }
163
+ };
164
+ // Export Sentry instance
165
+ exports.default = Sentry;
166
+ //# sourceMappingURL=sentry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"sentry.js","sourceRoot":"","sources":["../src/sentry.ts"],"names":[],"mappings":";AAAA;;;;GAIG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAMH,4CA4CC;AAhDD,qDAAuC;AACvC,2CAAsC;AAEtC,uCAAuC;AACvC,SAAgB,gBAAgB;IAC9B,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC;IAEnC,IAAI,CAAC,GAAG,EAAE,CAAC;QACT,mBAAO,CAAC,aAAa,CAAC,iBAAiB,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,CAAC,CAAC;QAC/D,OAAO,IAAI,CAAC;IACd,CAAC;IAED,IAAI,CAAC;QACH,MAAM,CAAC,IAAI,CAAC;YACV,GAAG;YACH,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;YACjD,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO;YACnD,gBAAgB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,KAAK,CAAC;YAC5E,kBAAkB,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,KAAK,CAAC;YAEhF,yBAAyB;YACzB,YAAY,EAAE;gBACZ,IAAI,MAAM,CAAC,YAAY,CAAC,IAAI,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC;gBAC/C,IAAI,MAAM,CAAC,YAAY,CAAC,OAAO,EAAE;gBACjC,IAAI,MAAM,CAAC,YAAY,CAAC,mBAAmB,EAAE;gBAC7C,IAAI,MAAM,CAAC,YAAY,CAAC,oBAAoB,EAAE;aAC/C;YAED,+BAA+B;YAC/B,UAAU,CAAC,KAAK;gBACd,4CAA4C;gBAC5C,OAAO,KAAK,CAAC;YACf,CAAC;YAED,+BAA+B;YAC/B,KAAK,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,KAAK,aAAa;SAC9C,CAAC,CAAC;QAEH,mBAAO,CAAC,aAAa,CAAC,oBAAoB,EAAE;YAC1C,WAAW,EAAE,OAAO,CAAC,GAAG,CAAC,QAAQ,IAAI,YAAY;YACjD,WAAW,EAAE,UAAU,CAAC,OAAO,CAAC,GAAG,CAAC,yBAAyB,IAAI,KAAK,CAAC;SACxE,CAAC,CAAC;QAEH,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,mBAAO,CAAC,KAAK,CAAC,uBAAuB,EAAE,KAAc,CAAC,CAAC;QACvD,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,2BAA2B;AACd,QAAA,cAAc,GAAG;IAC5B,6BAA6B;IAC7B,YAAY,EAAE,CAAC,KAAY,EAAE,OAAa,EAAE,EAAE;QAC5C,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,gBAAgB,CAAC,KAAK,EAAE;gBAC7B,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE;oBACJ,OAAO,EAAE,wBAAwB;oBACjC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO;iBACpD;aACF,CAAC,CAAC;QACL,CAAC;QAED,mBAAmB;QACnB,mBAAO,CAAC,KAAK,CAAC,iBAAiB,EAAE,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,CAAC;IAED,qCAAqC;IACrC,cAAc,EAAE,CAAC,OAAe,EAAE,QAA8B,MAAM,EAAE,OAAa,EAAE,EAAE;QACvF,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,cAAc,CAAC,OAAO,EAAE;gBAC7B,KAAK;gBACL,KAAK,EAAE,OAAO;gBACd,IAAI,EAAE;oBACJ,OAAO,EAAE,wBAAwB;oBACjC,OAAO,EAAE,OAAO,CAAC,GAAG,CAAC,mBAAmB,IAAI,OAAO;iBACpD;aACF,CAAC,CAAC;QACL,CAAC;QAED,mBAAmB;QACnB,MAAM,CAAC,IAAI,CAAC;YACV,KAAK,EAAE,gBAAgB;YACvB,OAAO;YACP,KAAK;YACL,GAAG,OAAO;SACX,EAAE,OAAO,CAAC,CAAC;IACd,CAAC;IAED,8CAA8C;IAC9C,cAAc,EAAE,CAAC,MAAc,EAAE,KAAc,EAAE,cAAoB,EAAE,EAAE;QACvE,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC;gBACb,EAAE,EAAE,MAAM;gBACV,KAAK,EAAE,KAAK;gBACZ,GAAG,cAAc;aAClB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,8CAA8C;IAC9C,gBAAgB,EAAE,GAAG,EAAE;QACrB,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QACvB,CAAC;IACH,CAAC;IAED,6BAA6B;IAC7B,aAAa,EAAE,CAAC,OAAe,EAAE,QAAgB,EAAE,IAAU,EAAE,EAAE;QAC/D,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;YACvC,MAAM,CAAC,aAAa,CAAC;gBACnB,OAAO;gBACP,QAAQ;gBACR,IAAI;gBACJ,KAAK,EAAE,MAA8B;gBACrC,SAAS,EAAE,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI;aAC7B,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,iDAAiD;IACjD,gBAAgB,EAAE,CAAC,IAAY,EAAE,SAAiB,EAAE,EAAE;QACpD,IAAI,MAAM,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC;YACvC,OAAO,MAAM,CAAC,gBAAgB,CAAC;gBAC7B,IAAI;gBACJ,EAAE,EAAE,SAAS;gBACb,WAAW,EAAE,GAAG,SAAS,MAAM,IAAI,EAAE;gBACrC,QAAQ,EAAE;oBACR,MAAM,EAAE,wBAAwB;iBACjC;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,IAAI,CAAC;IACd,CAAC;CACF,CAAC;AAEF,yBAAyB;AACzB,kBAAe,MAAM,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ancientwhispers54/leafengines-mcp-server",
3
- "version": "1.1.8",
3
+ "version": "2.0.0",
4
4
  "mcpName": "io.github.QWarranto/leafengines",
5
5
  "description": "Agricultural intelligence MCP server with soil analysis, crop recommendations, weather forecasts, and environmental impact assessment.",
6
6
  "main": "dist/index.js",
@@ -32,7 +32,11 @@
32
32
  "license": "Apache-2.0",
33
33
  "dependencies": {
34
34
  "@modelcontextprotocol/sdk": "^0.6.0",
35
- "axios": "^1.6.0"
35
+ "axios": "^1.6.0",
36
+ "pino": "^9.0.0",
37
+ "pino-pretty": "^11.0.0",
38
+ "@sentry/node": "^8.0.0",
39
+ "prom-client": "^15.0.0"
36
40
  },
37
41
  "devDependencies": {
38
42
  "@types/node": "^20.0.0",