@siteline/core 1.0.9 → 1.1.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/README.md CHANGED
@@ -71,6 +71,34 @@ siteline.track(data: PageviewData)
71
71
  | `userAgent` | `string \| null` | Yes | User-Agent header |
72
72
  | `ref` | `string \| null` | Yes | Referer header |
73
73
  | `ip` | `string \| null` | Yes | Client IP address |
74
+ | `isMcp` | `boolean` | No | Enable MCP ingestion mode for the event |
75
+ | `mcp` | `MCPData` | No | MCP event metadata (`method`, `toolName`, `clientName`, etc.) |
76
+
77
+ ### MCP ingestion
78
+
79
+ You can send MCP-specific payloads to the same intake endpoint by setting `isMcp: true` and passing an `mcp` object:
80
+
81
+ ```typescript
82
+ siteline.track({
83
+ url: 'https://example.com/mcp',
84
+ method: 'POST',
85
+ status: 200,
86
+ duration: 120,
87
+ userAgent: 'node',
88
+ ref: null,
89
+ ip: '203.0.113.1',
90
+ isMcp: true,
91
+ mcp: {
92
+ method: 'tools/call',
93
+ toolName: 'search_docs',
94
+ clientName: 'ChatGPT',
95
+ sessionId: 'session-123',
96
+ transport: 'streamable-http',
97
+ responseBytes: 2048,
98
+ argKeys: ['query', 'limit'],
99
+ },
100
+ });
101
+ ```
74
102
 
75
103
  ## Framework Integrations
76
104
 
@@ -16,6 +16,20 @@ export declare const LIMITS: {
16
16
  readonly STATUS_MAX: 999;
17
17
  readonly DURATION_MIN: 0;
18
18
  readonly DURATION_MAX: 300000;
19
+ readonly MCP_METHOD_MAX_LENGTH: 100;
20
+ readonly MCP_TOOL_NAME_MAX_LENGTH: 256;
21
+ readonly MCP_CLIENT_NAME_MAX_LENGTH: 256;
22
+ readonly MCP_CLIENT_VERSION_MAX_LENGTH: 64;
23
+ readonly MCP_PROTOCOL_VERSION_MAX_LENGTH: 64;
24
+ readonly MCP_SESSION_ID_MAX_LENGTH: 256;
25
+ readonly MCP_AUTH_PRINCIPAL_HASH_MAX_LENGTH: 256;
26
+ readonly MCP_TRANSPORT_MAX_LENGTH: 64;
27
+ readonly MCP_JSONRPC_ERROR_CODE_MIN: -2147483648;
28
+ readonly MCP_JSONRPC_ERROR_CODE_MAX: 2147483647;
29
+ readonly MCP_RESPONSE_BYTES_MIN: 0;
30
+ readonly MCP_RESPONSE_BYTES_MAX: number;
31
+ readonly MCP_ARG_KEYS_MAX_ITEMS: 50;
32
+ readonly MCP_ARG_KEY_MAX_LENGTH: 128;
19
33
  };
20
34
  export declare const TIMEOUT_MS = 5000;
21
35
  //# sourceMappingURL=constants.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,+CAA+C,CAAC;AAC7E,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAC/C,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAC3C,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,eAAO,MAAM,MAAM;;;;;;;;;;;;;;CAcT,CAAC;AAEX,eAAO,MAAM,UAAU,OAAO,CAAC"}
1
+ {"version":3,"file":"constants.d.ts","sourceRoot":"","sources":["../src/constants.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,+CAA+C,CAAC;AAC7E,eAAO,MAAM,gBAAgB,iBAAiB,CAAC;AAC/C,eAAO,MAAM,mBAAmB,UAAU,CAAC;AAC3C,eAAO,MAAM,wBAAwB,OAAO,CAAC;AAE7C,eAAO,MAAM,MAAM;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA4BT,CAAC;AAEX,eAAO,MAAM,UAAU,OAAO,CAAC"}
package/dist/index.cjs CHANGED
@@ -1,2 +1,2 @@
1
- "use strict";class e extends Error{constructor(e){super(e),this.name="SitelineError"}}class t extends e{constructor(e){super(e),this.name="SitelineValidationError"}}exports.Siteline=class{constructor(e){if(!e.websiteKey)throw new t("[Siteline] Missing websiteKey.");this.key=e.websiteKey,this.endpoint=e.endpoint||"https://api.siteline.ai/v1/intake/pageview",this.debug=e.debug||!1,this.sdk=e.sdk||"@siteline/js",this.sdkVersion=e.sdkVersion||"1.0.8",this.integrationType=e.integrationType||"js",this.debug&&console.log("[Siteline] Siteline initialized")}async track(e){const t=this.sanitize(e);try{return await this.send(t)}catch(e){this.debug&&console.error("[Siteline] Track failed:",e.message)}}sanitize(e){return{websiteKey:this.key,url:(e.url+"").slice(0,2048),method:(e.method+"").toUpperCase().slice(0,10),status:Math.max(0,Math.min(999,Number(e.status)||0)),duration:Math.max(0,Math.min(3e5,Number(e.duration)||0)),userAgent:e.userAgent?(e.userAgent+"").slice(0,512):null,ref:e.ref?(e.ref+"").slice(0,2048):null,ip:e.ip?(e.ip+"").slice(0,45):null,acceptHeader:e.acceptHeader?(e.acceptHeader+"").slice(0,1024):null,integrationType:this.integrationType.slice(0,50),sdk:this.sdk.slice(0,50),sdkVersion:this.sdkVersion.slice(0,20)}}async send(e){const t=new AbortController,i=setTimeout(()=>t.abort(),5e3);try{const i=await fetch(this.endpoint,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":`${this.sdk}/${this.sdkVersion}`},body:JSON.stringify(e),signal:t.signal});this.debug&&(i.ok?console.log("[Siteline] Tracked:",e.url,{endpoint:this.endpoint,sdk:this.sdk,sdkVersion:this.sdkVersion,integrationType:this.integrationType}):console.error("[Siteline] HTTP error:",i.status))}catch(e){this.debug&&console.error("[Siteline] Network error:",e.message)}finally{clearTimeout(i)}}},exports.SitelineError=e,exports.SitelineTransportError=class extends e{constructor(e){super(e),this.name="SitelineTransportError"}},exports.SitelineValidationError=t;
1
+ "use strict";class SitelineError extends Error{constructor(e){super(e),this.name="SitelineError"}}class SitelineValidationError extends SitelineError{constructor(e){super(e),this.name="SitelineValidationError"}}class SitelineTransportError extends SitelineError{constructor(e){super(e),this.name="SitelineTransportError"}}const DEFAULT_ENDPOINT="https://api.siteline.ai/v1/intake/pageview",DEFAULT_SDK_NAME="@siteline/js",DEFAULT_SDK_VERSION="1.0.8",DEFAULT_INTEGRATION_TYPE="js",LIMITS={URL_MAX_LENGTH:2048,METHOD_MAX_LENGTH:10,USER_AGENT_MAX_LENGTH:512,REF_MAX_LENGTH:2048,IP_MAX_LENGTH:45,ACCEPT_HEADER_MAX_LENGTH:1024,INTEGRATION_TYPE_MAX_LENGTH:50,SDK_MAX_LENGTH:50,SDK_VERSION_MAX_LENGTH:20,STATUS_MIN:0,STATUS_MAX:999,DURATION_MIN:0,DURATION_MAX:3e5,MCP_METHOD_MAX_LENGTH:100,MCP_TOOL_NAME_MAX_LENGTH:256,MCP_CLIENT_NAME_MAX_LENGTH:256,MCP_CLIENT_VERSION_MAX_LENGTH:64,MCP_PROTOCOL_VERSION_MAX_LENGTH:64,MCP_SESSION_ID_MAX_LENGTH:256,MCP_AUTH_PRINCIPAL_HASH_MAX_LENGTH:256,MCP_TRANSPORT_MAX_LENGTH:64,MCP_JSONRPC_ERROR_CODE_MIN:-2147483648,MCP_JSONRPC_ERROR_CODE_MAX:2147483647,MCP_RESPONSE_BYTES_MIN:0,MCP_RESPONSE_BYTES_MAX:Number.MAX_SAFE_INTEGER,MCP_ARG_KEYS_MAX_ITEMS:50,MCP_ARG_KEY_MAX_LENGTH:128},TIMEOUT_MS=5e3;class Siteline{constructor(e){if(!e.websiteKey)throw new SitelineValidationError("[Siteline] Missing websiteKey.");this.key=e.websiteKey,this.endpoint=e.endpoint||DEFAULT_ENDPOINT,this.debug=e.debug||!1,this.sdk=e.sdk||"@siteline/js",this.sdkVersion=e.sdkVersion||"1.0.8",this.integrationType=e.integrationType||"js",this.debug&&console.log("[Siteline] Siteline initialized")}async track(e){const t=this.sanitize(e);try{return await this.send(t)}catch(e){this.debug&&console.error("[Siteline] Track failed:",e.message)}}sanitize(e){const t={websiteKey:this.key,url:(e.url+"").slice(0,LIMITS.URL_MAX_LENGTH),method:(e.method+"").toUpperCase().slice(0,LIMITS.METHOD_MAX_LENGTH),status:Math.max(LIMITS.STATUS_MIN,Math.min(LIMITS.STATUS_MAX,Number(e.status)||0)),duration:Math.max(LIMITS.DURATION_MIN,Math.min(LIMITS.DURATION_MAX,Number(e.duration)||0)),userAgent:e.userAgent?(e.userAgent+"").slice(0,LIMITS.USER_AGENT_MAX_LENGTH):null,ref:e.ref?(e.ref+"").slice(0,LIMITS.REF_MAX_LENGTH):null,ip:e.ip?(e.ip+"").slice(0,LIMITS.IP_MAX_LENGTH):null,acceptHeader:e.acceptHeader?(e.acceptHeader+"").slice(0,LIMITS.ACCEPT_HEADER_MAX_LENGTH):null,integrationType:this.integrationType.slice(0,LIMITS.INTEGRATION_TYPE_MAX_LENGTH),sdk:this.sdk.slice(0,LIMITS.SDK_MAX_LENGTH),sdkVersion:this.sdkVersion.slice(0,LIMITS.SDK_VERSION_MAX_LENGTH)};!0===e.isMcp&&(t.isMcp=!0);const i=this.sanitizeMCPData(e.mcp);return null!==i&&(t.mcp=i),t}sanitizeMCPData(e){if(!e||"object"!=typeof e)return null;const t={},i=this.cleanString(e.method,LIMITS.MCP_METHOD_MAX_LENGTH);null!==i&&(t.method=i);const n=this.cleanString(e.toolName,LIMITS.MCP_TOOL_NAME_MAX_LENGTH);null!==n&&(t.toolName=n);const r=this.cleanString(e.clientName,LIMITS.MCP_CLIENT_NAME_MAX_LENGTH);null!==r&&(t.clientName=r);const s=this.cleanString(e.clientVersion,LIMITS.MCP_CLIENT_VERSION_MAX_LENGTH);null!==s&&(t.clientVersion=s);const _=this.cleanString(e.protocolVersion,LIMITS.MCP_PROTOCOL_VERSION_MAX_LENGTH);null!==_&&(t.protocolVersion=_);const o=this.cleanString(e.sessionId,LIMITS.MCP_SESSION_ID_MAX_LENGTH);null!==o&&(t.sessionId=o);const T=this.cleanString(e.authPrincipalHash,LIMITS.MCP_AUTH_PRINCIPAL_HASH_MAX_LENGTH);null!==T&&(t.authPrincipalHash=T);const l=this.clampInteger(e.jsonrpcErrorCode,LIMITS.MCP_JSONRPC_ERROR_CODE_MIN,LIMITS.MCP_JSONRPC_ERROR_CODE_MAX);null!==l&&(t.jsonrpcErrorCode=l);const M=this.cleanString(e.transport,LIMITS.MCP_TRANSPORT_MAX_LENGTH);null!==M&&(t.transport=M);const E=this.clampInteger(e.responseBytes,LIMITS.MCP_RESPONSE_BYTES_MIN,LIMITS.MCP_RESPONSE_BYTES_MAX);if(null!==E&&(t.responseBytes=E),Array.isArray(e.argKeys)){const i=e.argKeys.map(e=>this.cleanString(e,LIMITS.MCP_ARG_KEY_MAX_LENGTH)).filter(e=>null!==e).slice(0,LIMITS.MCP_ARG_KEYS_MAX_ITEMS);i.length>0&&(t.argKeys=i)}return 0===Object.keys(t).length?null:t}cleanString(e,t){if("string"!=typeof e)return null;const i=e.trim();return i?i.slice(0,t):null}clampInteger(e,t,i){return"number"==typeof e&&Number.isFinite(e)?Math.max(t,Math.min(i,Math.round(e))):null}async send(e){const t=new AbortController,i=setTimeout(()=>t.abort(),5e3);try{const i=await fetch(this.endpoint,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":`${this.sdk}/${this.sdkVersion}`},body:JSON.stringify(e),signal:t.signal});this.debug&&(i.ok?console.log("[Siteline] Tracked:",e.url,{endpoint:this.endpoint,sdk:this.sdk,sdkVersion:this.sdkVersion,integrationType:this.integrationType}):console.error("[Siteline] HTTP error:",i.status))}catch(e){this.debug&&console.error("[Siteline] Network error:",e.message)}finally{clearTimeout(i)}}}exports.Siteline=Siteline,exports.SitelineError=SitelineError,exports.SitelineTransportError=SitelineTransportError,exports.SitelineValidationError=SitelineValidationError;
2
2
  //# sourceMappingURL=index.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.cjs","sources":["../src/errors.ts","../src/siteline.ts","../src/constants.ts"],"sourcesContent":[null,null,null],"names":["SitelineError","Error","constructor","message","super","this","name","SitelineValidationError","config","websiteKey","key","endpoint","debug","sdk","sdkVersion","integrationType","console","log","track","data","sanitized","sanitize","send","err","error","url","String","slice","method","toUpperCase","status","Math","max","min","Number","duration","userAgent","ref","ip","acceptHeader","controller","AbortController","timeout","setTimeout","abort","res","fetch","headers","body","JSON","stringify","signal","ok","clearTimeout"],"mappings":"aAAM,MAAOA,UAAsBC,MACjC,WAAAC,CAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,eACd,EAGI,MAAOC,UAAgCP,EAC3C,WAAAE,CAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,yBACd,yBCQA,WAAAJ,CAAYM,GACV,IAAKA,EAAOC,WACV,MAAM,IAAIF,EAAwB,kCAGpCF,KAAKK,IAAMF,EAAOC,WAClBJ,KAAKM,SAAWH,EAAOG,UCzBK,6CD0B5BN,KAAKO,MAAQJ,EAAOI,QAAS,EAC7BP,KAAKQ,IAAML,EAAOK,KC1BU,eD2B5BR,KAAKS,WAAaN,EAAOM,YC1BM,QD2B/BT,KAAKU,gBAAkBP,EAAOO,iBC1BM,KD4BhCV,KAAKO,OACPI,QAAQC,IAAI,kCAEhB,CAEA,WAAMC,CAAMC,GACV,MAAMC,EAAYf,KAAKgB,SAASF,GAEhC,IACE,aAAad,KAAKiB,KAAKF,EACzB,CAAE,MAAOG,GACHlB,KAAKO,OAEPI,QAAQQ,MAAM,2BADAD,EACkCpB,QAEpD,CACF,CAEQ,QAAAkB,CAASF,GACf,MAAO,CACLV,WAAYJ,KAAKK,IACjBe,KAAYN,EAAKM,IAAZC,IAAiBC,MAAM,EC9ChB,MD+CZC,QAAeT,EAAKS,OAAZF,IAAoBG,cAAcF,MAAM,EC9CjC,ID+CfG,OAAQC,KAAKC,ICvCL,EDuC4BD,KAAKE,ICtCjC,IDsCwDC,OAAOf,EAAKW,SAAW,IACvFK,SAAUJ,KAAKC,ICtCL,EDsC8BD,KAAKE,ICrCnC,IDqC4DC,OAAOf,EAAKgB,WAAa,IAC/FC,UAAWjB,EAAKiB,WAAmBjB,EAAKiB,UAAZV,IAAuBC,MAAM,EChDtC,KDgDyE,KAC5FU,IAAKlB,EAAKkB,KAAalB,EAAKkB,IAAZX,IAAiBC,MAAM,EChD3B,MDgDuD,KACnEW,GAAInB,EAAKmB,IAAYnB,EAAKmB,GAAZZ,IAAgBC,MAAM,EChDzB,IDgDoD,KAC/DY,aAAcpB,EAAKoB,cAAsBpB,EAAKoB,aAAZb,IAA0BC,MAAM,EChD5C,MDgDkF,KACxGZ,gBAAiBV,KAAKU,gBAAgBY,MAAM,EChDnB,IDiDzBd,IAAKR,KAAKQ,IAAIc,MAAM,EChDR,IDiDZb,WAAYT,KAAKS,WAAWa,MAAM,EChDd,IDkDxB,CAEQ,UAAML,CAAKH,GACjB,MAAMqB,EAAa,IAAIC,gBACjBC,EAAUC,WAAW,IAAMH,EAAWI,QC/CtB,KDiDtB,IACE,MAAMC,QAAYC,MAAMzC,KAAKM,SAAU,CACrCiB,OAAQ,OACRmB,QAAS,CACP,eAAgB,mBAChB,aAAc,GAAG1C,KAAKQ,OAAOR,KAAKS,cAEpCkC,KAAMC,KAAKC,UAAU/B,GACrBgC,OAAQX,EAAWW,SAGjB9C,KAAKO,QACHiC,EAAIO,GACNpC,QAAQC,IAAI,sBAAuBE,EAAKM,IAAK,CAC3Cd,SAAUN,KAAKM,SACfE,IAAKR,KAAKQ,IACVC,WAAYT,KAAKS,WACjBC,gBAAiBV,KAAKU,kBAGxBC,QAAQQ,MAAM,yBAA0BqB,EAAIf,QAGlD,CAAE,MAAOP,GACHlB,KAAKO,OAEPI,QAAQQ,MAAM,4BADAD,EACmCpB,QAErD,SACEkD,aAAaX,EACf,CACF,0DDvFI,cAAsC1C,EAC1C,WAAAE,CAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,wBACd"}
1
+ {"version":3,"file":"index.cjs","sources":["../src/errors.ts","../src/constants.ts","../src/siteline.ts"],"sourcesContent":[null,null,null],"names":["SitelineError","Error","constructor","message","super","this","name","SitelineValidationError","SitelineTransportError","DEFAULT_ENDPOINT","DEFAULT_SDK_NAME","DEFAULT_SDK_VERSION","DEFAULT_INTEGRATION_TYPE","LIMITS","URL_MAX_LENGTH","METHOD_MAX_LENGTH","USER_AGENT_MAX_LENGTH","REF_MAX_LENGTH","IP_MAX_LENGTH","ACCEPT_HEADER_MAX_LENGTH","INTEGRATION_TYPE_MAX_LENGTH","SDK_MAX_LENGTH","SDK_VERSION_MAX_LENGTH","STATUS_MIN","STATUS_MAX","DURATION_MIN","DURATION_MAX","MCP_METHOD_MAX_LENGTH","MCP_TOOL_NAME_MAX_LENGTH","MCP_CLIENT_NAME_MAX_LENGTH","MCP_CLIENT_VERSION_MAX_LENGTH","MCP_PROTOCOL_VERSION_MAX_LENGTH","MCP_SESSION_ID_MAX_LENGTH","MCP_AUTH_PRINCIPAL_HASH_MAX_LENGTH","MCP_TRANSPORT_MAX_LENGTH","MCP_JSONRPC_ERROR_CODE_MIN","MCP_JSONRPC_ERROR_CODE_MAX","MCP_RESPONSE_BYTES_MIN","MCP_RESPONSE_BYTES_MAX","Number","MAX_SAFE_INTEGER","MCP_ARG_KEYS_MAX_ITEMS","MCP_ARG_KEY_MAX_LENGTH","TIMEOUT_MS","Siteline","config","websiteKey","key","endpoint","debug","sdk","sdkVersion","integrationType","console","log","track","data","sanitized","sanitize","send","err","error","payload","url","String","slice","method","toUpperCase","status","Math","max","min","duration","userAgent","ref","ip","acceptHeader","isMcp","mcpPayload","sanitizeMCPData","mcp","cleanString","toolName","clientName","clientVersion","protocolVersion","sessionId","authPrincipalHash","jsonrpcErrorCode","clampInteger","transport","responseBytes","Array","isArray","argKeys","map","value","filter","length","Object","keys","maxLength","trimmed","trim","isFinite","round","controller","AbortController","timeout","setTimeout","abort","res","fetch","headers","body","JSON","stringify","signal","ok","clearTimeout"],"mappings":"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"}
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
1
  export { Siteline } from './siteline';
2
- export type { PageviewData, SitelineConfig } from './types';
2
+ export type { MCPData, PageviewData, SitelineConfig } from './types';
3
3
  export { SitelineError, SitelineValidationError, SitelineTransportError } from './errors';
4
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC5D,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACtC,YAAY,EAAE,OAAO,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AACrE,OAAO,EAAE,aAAa,EAAE,uBAAuB,EAAE,sBAAsB,EAAE,MAAM,UAAU,CAAC"}
package/dist/index.mjs CHANGED
@@ -1,2 +1,2 @@
1
- class e extends Error{constructor(e){super(e),this.name="SitelineError"}}class t extends e{constructor(e){super(e),this.name="SitelineValidationError"}}class i extends e{constructor(e){super(e),this.name="SitelineTransportError"}}class s{constructor(e){if(!e.websiteKey)throw new t("[Siteline] Missing websiteKey.");this.key=e.websiteKey,this.endpoint=e.endpoint||"https://api.siteline.ai/v1/intake/pageview",this.debug=e.debug||!1,this.sdk=e.sdk||"@siteline/js",this.sdkVersion=e.sdkVersion||"1.0.8",this.integrationType=e.integrationType||"js",this.debug&&console.log("[Siteline] Siteline initialized")}async track(e){const t=this.sanitize(e);try{return await this.send(t)}catch(e){this.debug&&console.error("[Siteline] Track failed:",e.message)}}sanitize(e){return{websiteKey:this.key,url:(e.url+"").slice(0,2048),method:(e.method+"").toUpperCase().slice(0,10),status:Math.max(0,Math.min(999,Number(e.status)||0)),duration:Math.max(0,Math.min(3e5,Number(e.duration)||0)),userAgent:e.userAgent?(e.userAgent+"").slice(0,512):null,ref:e.ref?(e.ref+"").slice(0,2048):null,ip:e.ip?(e.ip+"").slice(0,45):null,acceptHeader:e.acceptHeader?(e.acceptHeader+"").slice(0,1024):null,integrationType:this.integrationType.slice(0,50),sdk:this.sdk.slice(0,50),sdkVersion:this.sdkVersion.slice(0,20)}}async send(e){const t=new AbortController,i=setTimeout(()=>t.abort(),5e3);try{const i=await fetch(this.endpoint,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":`${this.sdk}/${this.sdkVersion}`},body:JSON.stringify(e),signal:t.signal});this.debug&&(i.ok?console.log("[Siteline] Tracked:",e.url,{endpoint:this.endpoint,sdk:this.sdk,sdkVersion:this.sdkVersion,integrationType:this.integrationType}):console.error("[Siteline] HTTP error:",i.status))}catch(e){this.debug&&console.error("[Siteline] Network error:",e.message)}finally{clearTimeout(i)}}}export{s as Siteline,e as SitelineError,i as SitelineTransportError,t as SitelineValidationError};
1
+ class e extends Error{constructor(e){super(e),this.name="SitelineError"}}class t extends e{constructor(e){super(e),this.name="SitelineValidationError"}}class s extends e{constructor(e){super(e),this.name="SitelineTransportError"}}const n={URL_MAX_LENGTH:2048,METHOD_MAX_LENGTH:10,USER_AGENT_MAX_LENGTH:512,REF_MAX_LENGTH:2048,IP_MAX_LENGTH:45,ACCEPT_HEADER_MAX_LENGTH:1024,INTEGRATION_TYPE_MAX_LENGTH:50,SDK_MAX_LENGTH:50,SDK_VERSION_MAX_LENGTH:20,STATUS_MIN:0,STATUS_MAX:999,DURATION_MIN:0,DURATION_MAX:3e5,MCP_METHOD_MAX_LENGTH:100,MCP_TOOL_NAME_MAX_LENGTH:256,MCP_CLIENT_NAME_MAX_LENGTH:256,MCP_CLIENT_VERSION_MAX_LENGTH:64,MCP_PROTOCOL_VERSION_MAX_LENGTH:64,MCP_SESSION_ID_MAX_LENGTH:256,MCP_AUTH_PRINCIPAL_HASH_MAX_LENGTH:256,MCP_TRANSPORT_MAX_LENGTH:64,MCP_JSONRPC_ERROR_CODE_MIN:-2147483648,MCP_JSONRPC_ERROR_CODE_MAX:2147483647,MCP_RESPONSE_BYTES_MIN:0,MCP_RESPONSE_BYTES_MAX:Number.MAX_SAFE_INTEGER,MCP_ARG_KEYS_MAX_ITEMS:50,MCP_ARG_KEY_MAX_LENGTH:128};class i{constructor(e){if(!e.websiteKey)throw new t("[Siteline] Missing websiteKey.");this.key=e.websiteKey,this.endpoint=e.endpoint||"https://api.siteline.ai/v1/intake/pageview",this.debug=e.debug||!1,this.sdk=e.sdk||"@siteline/js",this.sdkVersion=e.sdkVersion||"1.0.8",this.integrationType=e.integrationType||"js",this.debug&&console.log("[Siteline] Siteline initialized")}async track(e){const t=this.sanitize(e);try{return await this.send(t)}catch(e){this.debug&&console.error("[Siteline] Track failed:",e.message)}}sanitize(e){const t={websiteKey:this.key,url:(e.url+"").slice(0,n.URL_MAX_LENGTH),method:(e.method+"").toUpperCase().slice(0,n.METHOD_MAX_LENGTH),status:Math.max(n.STATUS_MIN,Math.min(n.STATUS_MAX,Number(e.status)||0)),duration:Math.max(n.DURATION_MIN,Math.min(n.DURATION_MAX,Number(e.duration)||0)),userAgent:e.userAgent?(e.userAgent+"").slice(0,n.USER_AGENT_MAX_LENGTH):null,ref:e.ref?(e.ref+"").slice(0,n.REF_MAX_LENGTH):null,ip:e.ip?(e.ip+"").slice(0,n.IP_MAX_LENGTH):null,acceptHeader:e.acceptHeader?(e.acceptHeader+"").slice(0,n.ACCEPT_HEADER_MAX_LENGTH):null,integrationType:this.integrationType.slice(0,n.INTEGRATION_TYPE_MAX_LENGTH),sdk:this.sdk.slice(0,n.SDK_MAX_LENGTH),sdkVersion:this.sdkVersion.slice(0,n.SDK_VERSION_MAX_LENGTH)};!0===e.isMcp&&(t.isMcp=!0);const s=this.sanitizeMCPData(e.mcp);return null!==s&&(t.mcp=s),t}sanitizeMCPData(e){if(!e||"object"!=typeof e)return null;const t={},s=this.cleanString(e.method,n.MCP_METHOD_MAX_LENGTH);null!==s&&(t.method=s);const i=this.cleanString(e.toolName,n.MCP_TOOL_NAME_MAX_LENGTH);null!==i&&(t.toolName=i);const _=this.cleanString(e.clientName,n.MCP_CLIENT_NAME_MAX_LENGTH);null!==_&&(t.clientName=_);const r=this.cleanString(e.clientVersion,n.MCP_CLIENT_VERSION_MAX_LENGTH);null!==r&&(t.clientVersion=r);const o=this.cleanString(e.protocolVersion,n.MCP_PROTOCOL_VERSION_MAX_LENGTH);null!==o&&(t.protocolVersion=o);const l=this.cleanString(e.sessionId,n.MCP_SESSION_ID_MAX_LENGTH);null!==l&&(t.sessionId=l);const E=this.cleanString(e.authPrincipalHash,n.MCP_AUTH_PRINCIPAL_HASH_MAX_LENGTH);null!==E&&(t.authPrincipalHash=E);const M=this.clampInteger(e.jsonrpcErrorCode,n.MCP_JSONRPC_ERROR_CODE_MIN,n.MCP_JSONRPC_ERROR_CODE_MAX);null!==M&&(t.jsonrpcErrorCode=M);const a=this.cleanString(e.transport,n.MCP_TRANSPORT_MAX_LENGTH);null!==a&&(t.transport=a);const T=this.clampInteger(e.responseBytes,n.MCP_RESPONSE_BYTES_MIN,n.MCP_RESPONSE_BYTES_MAX);if(null!==T&&(t.responseBytes=T),Array.isArray(e.argKeys)){const s=e.argKeys.map(e=>this.cleanString(e,n.MCP_ARG_KEY_MAX_LENGTH)).filter(e=>null!==e).slice(0,n.MCP_ARG_KEYS_MAX_ITEMS);s.length>0&&(t.argKeys=s)}return 0===Object.keys(t).length?null:t}cleanString(e,t){if("string"!=typeof e)return null;const s=e.trim();return s?s.slice(0,t):null}clampInteger(e,t,s){return"number"==typeof e&&Number.isFinite(e)?Math.max(t,Math.min(s,Math.round(e))):null}async send(e){const t=new AbortController,s=setTimeout(()=>t.abort(),5e3);try{const s=await fetch(this.endpoint,{method:"POST",headers:{"Content-Type":"application/json","User-Agent":`${this.sdk}/${this.sdkVersion}`},body:JSON.stringify(e),signal:t.signal});this.debug&&(s.ok?console.log("[Siteline] Tracked:",e.url,{endpoint:this.endpoint,sdk:this.sdk,sdkVersion:this.sdkVersion,integrationType:this.integrationType}):console.error("[Siteline] HTTP error:",s.status))}catch(e){this.debug&&console.error("[Siteline] Network error:",e.message)}finally{clearTimeout(s)}}}export{i as Siteline,e as SitelineError,s as SitelineTransportError,t as SitelineValidationError};
2
2
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../src/errors.ts","../src/siteline.ts","../src/constants.ts"],"sourcesContent":[null,null,null],"names":["SitelineError","Error","constructor","message","super","this","name","SitelineValidationError","SitelineTransportError","Siteline","config","websiteKey","key","endpoint","debug","sdk","sdkVersion","integrationType","console","log","track","data","sanitized","sanitize","send","err","error","url","String","slice","method","toUpperCase","status","Math","max","min","Number","duration","userAgent","ref","ip","acceptHeader","controller","AbortController","timeout","setTimeout","abort","res","fetch","headers","body","JSON","stringify","signal","ok","clearTimeout"],"mappings":"AAAM,MAAOA,UAAsBC,MACjC,WAAAC,CAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,eACd,EAGI,MAAOC,UAAgCP,EAC3C,WAAAE,CAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,yBACd,EAGI,MAAOE,UAA+BR,EAC1C,WAAAE,CAAYC,GACVC,MAAMD,GACNE,KAAKC,KAAO,wBACd,QCPWG,EAQX,WAAAP,CAAYQ,GACV,IAAKA,EAAOC,WACV,MAAM,IAAIJ,EAAwB,kCAGpCF,KAAKO,IAAMF,EAAOC,WAClBN,KAAKQ,SAAWH,EAAOG,UCzBK,6CD0B5BR,KAAKS,MAAQJ,EAAOI,QAAS,EAC7BT,KAAKU,IAAML,EAAOK,KC1BU,eD2B5BV,KAAKW,WAAaN,EAAOM,YC1BM,QD2B/BX,KAAKY,gBAAkBP,EAAOO,iBC1BM,KD4BhCZ,KAAKS,OACPI,QAAQC,IAAI,kCAEhB,CAEA,WAAMC,CAAMC,GACV,MAAMC,EAAYjB,KAAKkB,SAASF,GAEhC,IACE,aAAahB,KAAKmB,KAAKF,EACzB,CAAE,MAAOG,GACHpB,KAAKS,OAEPI,QAAQQ,MAAM,2BADAD,EACkCtB,QAEpD,CACF,CAEQ,QAAAoB,CAASF,GACf,MAAO,CACLV,WAAYN,KAAKO,IACjBe,KAAYN,EAAKM,IAAZC,IAAiBC,MAAM,EC9ChB,MD+CZC,QAAeT,EAAKS,OAAZF,IAAoBG,cAAcF,MAAM,EC9CjC,ID+CfG,OAAQC,KAAKC,ICvCL,EDuC4BD,KAAKE,ICtCjC,IDsCwDC,OAAOf,EAAKW,SAAW,IACvFK,SAAUJ,KAAKC,ICtCL,EDsC8BD,KAAKE,ICrCnC,IDqC4DC,OAAOf,EAAKgB,WAAa,IAC/FC,UAAWjB,EAAKiB,WAAmBjB,EAAKiB,UAAZV,IAAuBC,MAAM,EChDtC,KDgDyE,KAC5FU,IAAKlB,EAAKkB,KAAalB,EAAKkB,IAAZX,IAAiBC,MAAM,EChD3B,MDgDuD,KACnEW,GAAInB,EAAKmB,IAAYnB,EAAKmB,GAAZZ,IAAgBC,MAAM,EChDzB,IDgDoD,KAC/DY,aAAcpB,EAAKoB,cAAsBpB,EAAKoB,aAAZb,IAA0BC,MAAM,EChD5C,MDgDkF,KACxGZ,gBAAiBZ,KAAKY,gBAAgBY,MAAM,EChDnB,IDiDzBd,IAAKV,KAAKU,IAAIc,MAAM,EChDR,IDiDZb,WAAYX,KAAKW,WAAWa,MAAM,EChDd,IDkDxB,CAEQ,UAAML,CAAKH,GACjB,MAAMqB,EAAa,IAAIC,gBACjBC,EAAUC,WAAW,IAAMH,EAAWI,QC/CtB,KDiDtB,IACE,MAAMC,QAAYC,MAAM3C,KAAKQ,SAAU,CACrCiB,OAAQ,OACRmB,QAAS,CACP,eAAgB,mBAChB,aAAc,GAAG5C,KAAKU,OAAOV,KAAKW,cAEpCkC,KAAMC,KAAKC,UAAU/B,GACrBgC,OAAQX,EAAWW,SAGjBhD,KAAKS,QACHiC,EAAIO,GACNpC,QAAQC,IAAI,sBAAuBE,EAAKM,IAAK,CAC3Cd,SAAUR,KAAKQ,SACfE,IAAKV,KAAKU,IACVC,WAAYX,KAAKW,WACjBC,gBAAiBZ,KAAKY,kBAGxBC,QAAQQ,MAAM,yBAA0BqB,EAAIf,QAGlD,CAAE,MAAOP,GACHpB,KAAKS,OAEPI,QAAQQ,MAAM,4BADAD,EACmCtB,QAErD,SACEoD,aAAaX,EACf,CACF"}
1
+ {"version":3,"file":"index.mjs","sources":["../src/errors.ts","../src/constants.ts","../src/siteline.ts"],"sourcesContent":[null,null,null],"names":["SitelineError","Error","constructor","message","super","this","name","SitelineValidationError","SitelineTransportError","LIMITS","URL_MAX_LENGTH","METHOD_MAX_LENGTH","USER_AGENT_MAX_LENGTH","REF_MAX_LENGTH","IP_MAX_LENGTH","ACCEPT_HEADER_MAX_LENGTH","INTEGRATION_TYPE_MAX_LENGTH","SDK_MAX_LENGTH","SDK_VERSION_MAX_LENGTH","STATUS_MIN","STATUS_MAX","DURATION_MIN","DURATION_MAX","MCP_METHOD_MAX_LENGTH","MCP_TOOL_NAME_MAX_LENGTH","MCP_CLIENT_NAME_MAX_LENGTH","MCP_CLIENT_VERSION_MAX_LENGTH","MCP_PROTOCOL_VERSION_MAX_LENGTH","MCP_SESSION_ID_MAX_LENGTH","MCP_AUTH_PRINCIPAL_HASH_MAX_LENGTH","MCP_TRANSPORT_MAX_LENGTH","MCP_JSONRPC_ERROR_CODE_MIN","MCP_JSONRPC_ERROR_CODE_MAX","MCP_RESPONSE_BYTES_MIN","MCP_RESPONSE_BYTES_MAX","Number","MAX_SAFE_INTEGER","MCP_ARG_KEYS_MAX_ITEMS","MCP_ARG_KEY_MAX_LENGTH","Siteline","config","websiteKey","key","endpoint","debug","sdk","sdkVersion","integrationType","console","log","track","data","sanitized","sanitize","send","err","error","payload","url","String","slice","method","toUpperCase","status","Math","max","min","duration","userAgent","ref","ip","acceptHeader","isMcp","mcpPayload","sanitizeMCPData","mcp","cleanString","toolName","clientName","clientVersion","protocolVersion","sessionId","authPrincipalHash","jsonrpcErrorCode","clampInteger","transport","responseBytes","Array","isArray","argKeys","map","value","filter","length","Object","keys","maxLength","trimmed","trim","isFinite","round","controller","AbortController","timeout","setTimeout","abort","res","fetch","headers","body","JSON","stringify","signal","ok","clearTimeout"],"mappings":"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"}
@@ -9,6 +9,9 @@ export declare class Siteline {
9
9
  constructor(config: SitelineConfig);
10
10
  track(data: PageviewData): Promise<void>;
11
11
  private sanitize;
12
+ private sanitizeMCPData;
13
+ private cleanString;
14
+ private clampInteger;
12
15
  private send;
13
16
  }
14
17
  //# sourceMappingURL=siteline.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"siteline.d.ts","sourceRoot":"","sources":["../src/siteline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAW5D,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAE7B,MAAM,EAAE,cAAc;IAiB5B,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9C,OAAO,CAAC,QAAQ;YAiBF,IAAI;CAoCnB"}
1
+ {"version":3,"file":"siteline.d.ts","sourceRoot":"","sources":["../src/siteline.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAW,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAWrE,qBAAa,QAAQ;IACnB,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAS;IAClC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAU;IAChC,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAS;IAC7B,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAS;gBAE7B,MAAM,EAAE,cAAc;IAiB5B,KAAK,CAAC,IAAI,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC;IAa9C,OAAO,CAAC,QAAQ;IA4BhB,OAAO,CAAC,eAAe;IAmFvB,OAAO,CAAC,WAAW;IAanB,OAAO,CAAC,YAAY;YASN,IAAI;CAoCnB"}
package/dist/types.d.ts CHANGED
@@ -1,3 +1,16 @@
1
+ export type MCPData = {
2
+ method?: string | null;
3
+ toolName?: string | null;
4
+ clientName?: string | null;
5
+ clientVersion?: string | null;
6
+ protocolVersion?: string | null;
7
+ sessionId?: string | null;
8
+ authPrincipalHash?: string | null;
9
+ jsonrpcErrorCode?: number | null;
10
+ transport?: string | null;
11
+ responseBytes?: number | null;
12
+ argKeys?: Array<string | null> | null;
13
+ };
1
14
  export type PageviewData = {
2
15
  url: string;
3
16
  method: string;
@@ -7,6 +20,8 @@ export type PageviewData = {
7
20
  acceptHeader?: string | null;
8
21
  status: number;
9
22
  duration: number;
23
+ isMcp?: boolean;
24
+ mcp?: MCPData | null;
10
25
  };
11
26
  export type SitelineConfig = {
12
27
  websiteKey: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,YAAY,GAAG;IAEzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAA"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,OAAO,GAAG;IACpB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,eAAe,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAChC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,gBAAgB,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,SAAS,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC9B,OAAO,CAAC,EAAE,KAAK,CAAC,MAAM,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;CACvC,CAAA;AAED,MAAM,MAAM,YAAY,GAAG;IAEzB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,GAAG,EAAE,MAAM,GAAG,IAAI,CAAC;IACnB,EAAE,EAAE,MAAM,GAAG,IAAI,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAE7B,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IAEjB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,GAAG,CAAC,EAAE,OAAO,GAAG,IAAI,CAAC;CACtB,CAAA;AAED,MAAM,MAAM,cAAc,GAAG;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAEhB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B,CAAA"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@siteline/core",
3
- "version": "1.0.9",
3
+ "version": "1.1.0",
4
4
  "description": "Core tracking SDK for Siteline - Agent Analytics platform for tracking AI agents, bots, and crawlers",
5
5
  "main": "./dist/index.cjs",
6
6
  "module": "./dist/index.mjs",