@dotzero.ai/dotzero-mcp 1.2.2 → 1.2.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/dist/auth-state.js +1 -1
- package/package.json +2 -2
package/dist/auth-state.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
import axios from"axios";const DEFAULT_USER_API_URL="https://dotzerotech-user-api.dotzero.app";export const SERVICE_CONFIGS=[{name:"work-order",envVar:"WORK_ORDER_API_URL",baseUrl:null},{name:"spc",envVar:"SPC_API_URL",baseUrl:null},{name:"equipment",envVar:"EQUIPMENT_API_URL",baseUrl:null},{name:"device-topology",envVar:"DEVICE_TOPOLOGY_API_URL",baseUrl:null},{name:"oee",envVar:"OEE_API_URL",baseUrl:null}];let userApiUrl=DEFAULT_USER_API_URL,token=null,refreshTokenValue=null,tenantId=null;const apiClients=new Map;export function initialize(){userApiUrl=process.env.USER_API_URL||DEFAULT_USER_API_URL;for(const e of SERVICE_CONFIGS)e.baseUrl=process.env[e.envVar]||null}function createClient(e,
|
|
1
|
+
import axios from"axios";const DEFAULT_USER_API_URL="https://dotzerotech-user-api.dotzero.app";export const SERVICE_CONFIGS=[{name:"work-order",envVar:"WORK_ORDER_API_URL",baseUrl:null},{name:"spc",envVar:"SPC_API_URL",baseUrl:null},{name:"equipment",envVar:"EQUIPMENT_API_URL",baseUrl:null},{name:"device-topology",envVar:"DEVICE_TOPOLOGY_API_URL",baseUrl:null},{name:"oee",envVar:"OEE_API_URL",baseUrl:null}];let userApiUrl=DEFAULT_USER_API_URL,token=null,refreshTokenValue=null,tenantId=null;const apiClients=new Map;let refreshPromise=null;export function initialize(){userApiUrl=process.env.USER_API_URL||DEFAULT_USER_API_URL;for(const e of SERVICE_CONFIGS)e.baseUrl=process.env[e.envVar]||null}function createClient(e,r){const t=axios.create({baseURL:e,timeout:3e4,headers:{"Content-Type":"application/json",Accept:"application/json",Authorization:`Bearer ${r}`}});return t.interceptors.response.use(e=>e,async e=>{const r=e.config;if(401===e.response?.status&&!r._retried&&refreshTokenValue&&tenantId){r._retried=!0,refreshPromise||(refreshPromise=refreshAuth(refreshTokenValue,tenantId).finally(()=>{refreshPromise=null}));const e=await refreshPromise;if(e.success&&e.token)return r.headers.Authorization=`Bearer ${e.token}`,axios(r)}throw e}),t}export function setToken(e,r,t){token=e,r&&(refreshTokenValue=r),t&&(tenantId=t),apiClients.clear();for(const r of SERVICE_CONFIGS)r.baseUrl&&apiClients.set(r.name,createClient(r.baseUrl,e))}export function getToken(){return token}export function getRefreshToken(){return refreshTokenValue}export function getTenantId(){return tenantId}export function isAuthenticated(){return null!==token}export function getClientForService(e){return apiClients.get(e)||null}export function getConfiguredServices(){return SERVICE_CONFIGS.filter(e=>null!==e.baseUrl)}export function getUserApiUrl(){return userApiUrl}export async function authenticate(e,r,t){try{const n=`${userApiUrl}/v2/auth/login?tenantID=${encodeURIComponent(t)}`,s=await axios.post(n,{email:e,password:r},{timeout:1e4,headers:{"Content-Type":"application/json"}}),o=s.data.token;return o?(setToken(o,s.data.refresh_token,s.data.tenant_id||t),{success:!0,token:o,refreshToken:s.data.refresh_token,email:s.data.email,name:s.data.name,tenantId:s.data.tenant_id||t}):{success:!1,error:"No token received"}}catch(e){if(axios.isAxiosError(e)){const r=e;if(401===r.response?.status)return{success:!1,error:"Invalid email or password"};if(400===r.response?.status)return{success:!1,error:"Bad request. Verify tenant_id."};if(404===r.response?.status)return{success:!1,error:"Tenant not found."};const t=r.response?.data?.message||r.response?.data?.error;if(t)return{success:!1,error:t}}return{success:!1,error:`Authentication failed: ${e instanceof Error?e.message:String(e)}`}}}export async function refreshAuth(e,r){try{const t=`${userApiUrl}/v2/auth/token?tenantID=${encodeURIComponent(r)}`,n=await axios.post(t,{grant_type:"refresh_token",refresh_token:e},{timeout:1e4,headers:{"Content-Type":"application/json"}}),s="string"==typeof n.data?n.data:n.data.token;return s?(setToken(s,e,r),{success:!0,token:s,refreshToken:e,tenantId:r}):{success:!1,error:"No token received from refresh"}}catch(e){if(axios.isAxiosError(e)){const r=e,t=r.response?.data?.message||r.response?.data?.error;if(t)return{success:!1,error:t}}return{success:!1,error:`Token refresh failed: ${e instanceof Error?e.message:String(e)}`}}}export function clearAuth(){token=null,refreshTokenValue=null,tenantId=null,apiClients.clear()}process.on("exit",clearAuth);
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@dotzero.ai/dotzero-mcp",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.3",
|
|
4
4
|
"description": "Unified DotZero MCP gateway - dynamically loads service modules on demand",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -45,7 +45,7 @@
|
|
|
45
45
|
},
|
|
46
46
|
"dependencies": {
|
|
47
47
|
"@modelcontextprotocol/sdk": "^1.6.1",
|
|
48
|
-
"axios": "^1.
|
|
48
|
+
"axios": "^1.13.5",
|
|
49
49
|
"express": "^4.21.2",
|
|
50
50
|
"zod": "^3.23.8"
|
|
51
51
|
},
|