signalpilot-ai-internal 0.10.0__py3-none-any.whl → 0.11.24__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (85) hide show
  1. signalpilot_ai_internal/__init__.py +1 -0
  2. signalpilot_ai_internal/_version.py +1 -1
  3. signalpilot_ai_internal/cache_service.py +22 -21
  4. signalpilot_ai_internal/composio_handlers.py +224 -0
  5. signalpilot_ai_internal/composio_service.py +511 -0
  6. signalpilot_ai_internal/database_config_handlers.py +182 -0
  7. signalpilot_ai_internal/database_config_service.py +166 -0
  8. signalpilot_ai_internal/databricks_schema_service.py +907 -0
  9. signalpilot_ai_internal/file_scanner_service.py +5 -146
  10. signalpilot_ai_internal/handlers.py +388 -9
  11. signalpilot_ai_internal/integrations_config.py +256 -0
  12. signalpilot_ai_internal/log_utils.py +31 -0
  13. signalpilot_ai_internal/mcp_handlers.py +532 -0
  14. signalpilot_ai_internal/mcp_server_manager.py +298 -0
  15. signalpilot_ai_internal/mcp_service.py +1255 -0
  16. signalpilot_ai_internal/oauth_token_store.py +141 -0
  17. signalpilot_ai_internal/schema_search_config.yml +17 -11
  18. signalpilot_ai_internal/schema_search_service.py +85 -4
  19. signalpilot_ai_internal/signalpilot_home.py +961 -0
  20. signalpilot_ai_internal/snowflake_schema_service.py +2 -0
  21. signalpilot_ai_internal/test_dbt_mcp_server.py +180 -0
  22. signalpilot_ai_internal/unified_database_schema_service.py +2 -0
  23. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/schemas/signalpilot-ai-internal/package.json.orig → signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/package.json +15 -48
  24. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/package.json → signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/schemas/signalpilot-ai-internal/package.json.orig +9 -52
  25. {signalpilot_ai_internal-0.10.0.data → signalpilot_ai_internal-0.11.24.data}/data/share/jupyter/labextensions/signalpilot-ai-internal/schemas/signalpilot-ai-internal/plugin.json +7 -1
  26. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/122.bab318d6caadb055e29c.js +1 -0
  27. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/129.868ca665e6fc225c20a0.js +1 -0
  28. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/179.fd45a2e75d471d0aa3b9.js +7 -0
  29. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/220.81105a94aa873fc51a94.js +1 -0
  30. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/262.a002dd4630d3b6404a90.js +1 -0
  31. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/353.cc6f6ecacd703bcdb468.js +1 -0
  32. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/364.817a883549d55a0e0576.js +1 -0
  33. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/384.a4daecd44f1e9364e44a.js +1 -0
  34. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/439.667225aab294fb5ed161.js +1 -0
  35. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/447.8138af2522716e5a926f.js +1 -0
  36. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/476.925c73e32f3c07448da0.js +1 -0
  37. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/477.aaa4cc9e87801fb45f5b.js +1 -0
  38. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/481.370056149a59022b700c.js +1 -0
  39. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/510.868ca665e6fc225c20a0.js +1 -0
  40. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/512.835f97f7ccfc70ff5c93.js +1 -0
  41. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/57.6c13335f73de089d6b1e.js +1 -0
  42. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/574.ad2709e91ebcac5bbe68.js +1 -0
  43. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/635.bddbab8e464fe31f0393.js +1 -0
  44. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/713.fda1bcdb10497b0a6ade.js +1 -0
  45. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/741.d046701f475fcbf6697d.js +1 -0
  46. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/785.c306dffd4cfe8a613d13.js +1 -0
  47. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/801.e39898b6f336539f228c.js +1 -0
  48. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/880.77cc0ca10a1860df1b52.js +1 -0
  49. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/936.4e2850b2af985ed0d378.js +1 -0
  50. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/956.eeffe67d7781fd63ef4b.js +2 -0
  51. signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/remoteEntry.055f50d20a31f3068c72.js +1 -0
  52. {signalpilot_ai_internal-0.10.0.data → signalpilot_ai_internal-0.11.24.data}/data/share/jupyter/labextensions/signalpilot-ai-internal/static/third-party-licenses.json +47 -29
  53. {signalpilot_ai_internal-0.10.0.dist-info → signalpilot_ai_internal-0.11.24.dist-info}/METADATA +14 -31
  54. signalpilot_ai_internal-0.11.24.dist-info/RECORD +66 -0
  55. signalpilot_ai_internal-0.11.24.dist-info/licenses/LICENSE +7 -0
  56. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/122.e2dadf63dc64d7b5f1ee.js +0 -1
  57. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/220.328403b5545f268b95c6.js +0 -1
  58. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/262.726e1da31a50868cb297.js +0 -1
  59. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/330.af2e9cb5def5ae2b84d5.js +0 -1
  60. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/353.972abe1d2d66f083f9cc.js +0 -1
  61. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/364.dbec4c2dc12e7b050dcc.js +0 -1
  62. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/384.fa432bdb7fb6b1c95ad6.js +0 -1
  63. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/439.37e271d7a80336daabe2.js +0 -1
  64. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/476.ad22ccddd74ee306fb56.js +0 -1
  65. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/481.73c7a9290b7d35a8b9c1.js +0 -1
  66. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/512.b58fc0093d080b8ee61c.js +0 -1
  67. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/553.b4042a795c91d9ff71ef.js +0 -2
  68. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/57.e9acd2e1f9739037f1ab.js +0 -1
  69. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/635.9720593ee20b768da3ca.js +0 -1
  70. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/713.8e6edc9a965bdd578ca7.js +0 -1
  71. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/741.dc49867fafb03ea2ba4d.js +0 -1
  72. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/742.91e7b516c8699eea3373.js +0 -1
  73. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/785.2d75de1a8d2c3131a8db.js +0 -1
  74. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/786.770dc7bcab77e14cc135.js +0 -7
  75. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/801.ca9e114a30896b669a3c.js +0 -1
  76. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/880.25ddd15aca09421d3765.js +0 -1
  77. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/888.34054db17bcf6e87ec95.js +0 -1
  78. signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/remoteEntry.b05b2f0c9617ba28370d.js +0 -1
  79. signalpilot_ai_internal-0.10.0.dist-info/RECORD +0 -50
  80. signalpilot_ai_internal-0.10.0.dist-info/licenses/LICENSE +0 -29
  81. {signalpilot_ai_internal-0.10.0.data → signalpilot_ai_internal-0.11.24.data}/data/etc/jupyter/jupyter_server_config.d/signalpilot_ai.json +0 -0
  82. {signalpilot_ai_internal-0.10.0.data → signalpilot_ai_internal-0.11.24.data}/data/share/jupyter/labextensions/signalpilot-ai-internal/install.json +0 -0
  83. /signalpilot_ai_internal-0.10.0.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/553.b4042a795c91d9ff71ef.js.LICENSE.txt → /signalpilot_ai_internal-0.11.24.data/data/share/jupyter/labextensions/signalpilot-ai-internal/static/956.eeffe67d7781fd63ef4b.js.LICENSE.txt +0 -0
  84. {signalpilot_ai_internal-0.10.0.data → signalpilot_ai_internal-0.11.24.data}/data/share/jupyter/labextensions/signalpilot-ai-internal/static/style.js +0 -0
  85. {signalpilot_ai_internal-0.10.0.dist-info → signalpilot_ai_internal-0.11.24.dist-info}/WHEEL +0 -0
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunksignalpilot_ai_internal=self.webpackChunksignalpilot_ai_internal||[]).push([[481],{47481(e,n,t){t.r(n),t.d(n,{Diff:()=>s,FILE_HEADERS_ONLY:()=>R,INCLUDE_HEADERS:()=>q,OMIT_HEADERS:()=>U,applyPatch:()=>J,applyPatches:()=>M,arrayDiff:()=>T,canonicalize:()=>N,characterDiff:()=>o,convertChangesToDMP:()=>G,convertChangesToXML:()=>K,createPatch:()=>Z,createTwoFilesPatch:()=>Y,cssDiff:()=>x,diffArrays:()=>I,diffChars:()=>r,diffCss:()=>W,diffJson:()=>A,diffLines:()=>C,diffSentences:()=>j,diffTrimmedLines:()=>O,diffWords:()=>w,diffWordsWithSpace:()=>b,formatPatch:()=>X,jsonDiff:()=>F,lineDiff:()=>L,parsePatch:()=>z,reversePatch:()=>_,sentenceDiff:()=>S,structuredPatch:()=>V,wordDiff:()=>v,wordsWithSpaceDiff:()=>y});class s{diff(e,n,t={}){let s;"function"==typeof t?(s=t,t={}):"callback"in t&&(s=t.callback);const o=this.castInput(e,t),r=this.castInput(n,t),i=this.removeEmpty(this.tokenize(o,t)),l=this.removeEmpty(this.tokenize(r,t));return this.diffWithOptionsObj(i,l,t,s)}diffWithOptionsObj(e,n,t,s){var o;const r=e=>(e=this.postProcess(e,t),s?void setTimeout(function(){s(e)},0):e),i=n.length,l=e.length;let u=1,a=i+l;null!=t.maxEditLength&&(a=Math.min(a,t.maxEditLength));const c=null!==(o=t.timeout)&&void 0!==o?o:1/0,f=Date.now()+c,h=[{oldPos:-1,lastComponent:void 0}];let d=this.extractCommon(h[0],n,e,0,t);if(h[0].oldPos+1>=l&&d+1>=i)return r(this.buildValues(h[0].lastComponent,n,e));let p=-1/0,g=1/0;const m=()=>{for(let s=Math.max(p,-u);s<=Math.min(g,u);s+=2){let o;const u=h[s-1],a=h[s+1];u&&(h[s-1]=void 0);let c=!1;if(a){const e=a.oldPos-s;c=a&&0<=e&&e<i}const f=u&&u.oldPos+1<l;if(c||f){if(o=!f||c&&u.oldPos<a.oldPos?this.addToPath(a,!0,!1,0,t):this.addToPath(u,!1,!0,1,t),d=this.extractCommon(o,n,e,s,t),o.oldPos+1>=l&&d+1>=i)return r(this.buildValues(o.lastComponent,n,e))||!0;h[s]=o,o.oldPos+1>=l&&(g=Math.min(g,s-1)),d+1>=i&&(p=Math.max(p,s+1))}else h[s]=void 0}u++};if(s)!function e(){setTimeout(function(){if(u>a||Date.now()>f)return s(void 0);m()||e()},0)}();else for(;u<=a&&Date.now()<=f;){const e=m();if(e)return e}}addToPath(e,n,t,s,o){const r=e.lastComponent;return r&&!o.oneChangePerToken&&r.added===n&&r.removed===t?{oldPos:e.oldPos+s,lastComponent:{count:r.count+1,added:n,removed:t,previousComponent:r.previousComponent}}:{oldPos:e.oldPos+s,lastComponent:{count:1,added:n,removed:t,previousComponent:r}}}extractCommon(e,n,t,s,o){const r=n.length,i=t.length;let l=e.oldPos,u=l-s,a=0;for(;u+1<r&&l+1<i&&this.equals(t[l+1],n[u+1],o);)u++,l++,a++,o.oneChangePerToken&&(e.lastComponent={count:1,previousComponent:e.lastComponent,added:!1,removed:!1});return a&&!o.oneChangePerToken&&(e.lastComponent={count:a,previousComponent:e.lastComponent,added:!1,removed:!1}),e.oldPos=l,u}equals(e,n,t){return t.comparator?t.comparator(e,n):e===n||!!t.ignoreCase&&e.toLowerCase()===n.toLowerCase()}removeEmpty(e){const n=[];for(let t=0;t<e.length;t++)e[t]&&n.push(e[t]);return n}castInput(e,n){return e}tokenize(e,n){return Array.from(e)}join(e){return e.join("")}postProcess(e,n){return e}get useLongestToken(){return!1}buildValues(e,n,t){const s=[];let o;for(;e;)s.push(e),o=e.previousComponent,delete e.previousComponent,e=o;s.reverse();const r=s.length;let i=0,l=0,u=0;for(;i<r;i++){const e=s[i];if(e.removed)e.value=this.join(t.slice(u,u+e.count)),u+=e.count;else{if(!e.added&&this.useLongestToken){let s=n.slice(l,l+e.count);s=s.map(function(e,n){const s=t[u+n];return s.length>e.length?s:e}),e.value=this.join(s)}else e.value=this.join(n.slice(l,l+e.count));l+=e.count,e.added||(u+=e.count)}}return s}}const o=new class extends s{};function r(e,n,t){return o.diff(e,n,t)}function i(e,n){let t;for(t=0;t<e.length&&t<n.length;t++)if(e[t]!=n[t])return e.slice(0,t);return e.slice(0,t)}function l(e,n){let t;if(!e||!n||e[e.length-1]!=n[n.length-1])return"";for(t=0;t<e.length&&t<n.length;t++)if(e[e.length-(t+1)]!=n[n.length-(t+1)])return e.slice(-t);return e.slice(-t)}function u(e,n,t){if(e.slice(0,n.length)!=n)throw Error(`string ${JSON.stringify(e)} doesn't start with prefix ${JSON.stringify(n)}; this is a bug`);return t+e.slice(n.length)}function a(e,n,t){if(!n)return e+t;if(e.slice(-n.length)!=n)throw Error(`string ${JSON.stringify(e)} doesn't end with suffix ${JSON.stringify(n)}; this is a bug`);return e.slice(0,-n.length)+t}function c(e,n){return u(e,n,"")}function f(e,n){return a(e,n,"")}function h(e,n){return n.slice(0,function(e,n){let t=0;e.length>n.length&&(t=e.length-n.length);let s=n.length;e.length<n.length&&(s=e.length);const o=Array(s);let r=0;o[0]=0;for(let e=1;e<s;e++){for(n[e]==n[r]?o[e]=o[r]:o[e]=r;r>0&&n[e]!=n[r];)r=o[r];n[e]==n[r]&&r++}r=0;for(let s=t;s<e.length;s++){for(;r>0&&e[s]!=n[r];)r=o[r];e[s]==n[r]&&r++}return r}(e,n))}function d(e){let n;for(n=e.length-1;n>=0&&e[n].match(/\s/);n--);return e.substring(n+1)}function p(e){const n=e.match(/^\s*/);return n?n[0]:""}const g="a-zA-Z0-9_\\u{AD}\\u{C0}-\\u{D6}\\u{D8}-\\u{F6}\\u{F8}-\\u{2C6}\\u{2C8}-\\u{2D7}\\u{2DE}-\\u{2FF}\\u{1E00}-\\u{1EFF}",m=new RegExp(`[${g}]+|\\s+|[^${g}]`,"ug"),v=new class extends s{equals(e,n,t){return t.ignoreCase&&(e=e.toLowerCase(),n=n.toLowerCase()),e.trim()===n.trim()}tokenize(e,n={}){let t;if(n.intlSegmenter){const s=n.intlSegmenter;if("word"!=s.resolvedOptions().granularity)throw new Error('The segmenter passed must have a granularity of "word"');t=[];for(const n of Array.from(s.segment(e))){const e=n.segment;t.length&&/\s/.test(t[t.length-1])&&/\s/.test(e)?t[t.length-1]+=e:t.push(e)}}else t=e.match(m)||[];const s=[];let o=null;return t.forEach(e=>{/\s/.test(e)?null==o?s.push(e):s.push(s.pop()+e):null!=o&&/\s/.test(o)?s[s.length-1]==o?s.push(s.pop()+e):s.push(o+e):s.push(e),o=e}),s}join(e){return e.map((e,n)=>0==n?e:e.replace(/^\s+/,"")).join("")}postProcess(e,n){if(!e||n.oneChangePerToken)return e;let t=null,s=null,o=null;return e.forEach(e=>{e.added?s=e:e.removed?o=e:((s||o)&&k(t,o,s,e),t=e,s=null,o=null)}),(s||o)&&k(t,o,s,null),e}};function w(e,n,t){return null==(null==t?void 0:t.ignoreWhitespace)||t.ignoreWhitespace?v.diff(e,n,t):b(e,n,t)}function k(e,n,t,s){if(n&&t){const o=p(n.value),r=d(n.value),h=p(t.value),g=d(t.value);if(e){const s=i(o,h);e.value=a(e.value,h,s),n.value=c(n.value,s),t.value=c(t.value,s)}if(s){const e=l(r,g);s.value=u(s.value,g,e),n.value=f(n.value,e),t.value=f(t.value,e)}}else if(t){if(e){const e=p(t.value);t.value=t.value.substring(e.length)}if(s){const e=p(s.value);s.value=s.value.substring(e.length)}}else if(e&&s){const t=p(s.value),o=p(n.value),r=d(n.value),h=i(t,o);n.value=c(n.value,h);const g=l(c(t,h),r);n.value=f(n.value,g),s.value=u(s.value,t,g),e.value=a(e.value,t,t.slice(0,t.length-g.length))}else if(s){const e=p(s.value),t=h(d(n.value),e);n.value=f(n.value,t)}else if(e){const t=h(d(e.value),p(n.value));n.value=c(n.value,t)}}const y=new class extends s{tokenize(e){const n=new RegExp(`(\\r?\\n)|[${g}]+|[^\\S\\n\\r]+|[^${g}]`,"ug");return e.match(n)||[]}};function b(e,n,t){return y.diff(e,n,t)}const L=new class extends s{constructor(){super(...arguments),this.tokenize=P}equals(e,n,t){return t.ignoreWhitespace?(t.newlineIsToken&&e.includes("\n")||(e=e.trim()),t.newlineIsToken&&n.includes("\n")||(n=n.trim())):t.ignoreNewlineAtEof&&!t.newlineIsToken&&(e.endsWith("\n")&&(e=e.slice(0,-1)),n.endsWith("\n")&&(n=n.slice(0,-1))),super.equals(e,n,t)}};function C(e,n,t){return L.diff(e,n,t)}function O(e,n,t){return t=function(e,n){if("function"==typeof e)n.callback=e;else if(e)for(const t in e)Object.prototype.hasOwnProperty.call(e,t)&&(n[t]=e[t]);return n}(t,{ignoreWhitespace:!0}),L.diff(e,n,t)}function P(e,n){n.stripTrailingCr&&(e=e.replace(/\r\n/g,"\n"));const t=[],s=e.split(/(\n|\r\n)/);s[s.length-1]||s.pop();for(let e=0;e<s.length;e++){const o=s[e];e%2&&!n.newlineIsToken?t[t.length-1]+=o:t.push(o)}return t}function E(e){return"."==e||"!"==e||"?"==e}const S=new class extends s{tokenize(e){var n;const t=[];let s=0;for(let o=0;o<e.length;o++){if(o==e.length-1){t.push(e.slice(s));break}if(E(e[o])&&e[o+1].match(/\s/)){for(t.push(e.slice(s,o+1)),o=s=o+1;null===(n=e[o+1])||void 0===n?void 0:n.match(/\s/);)o++;t.push(e.slice(s,o+1)),s=o+1}}return t}};function j(e,n,t){return S.diff(e,n,t)}const x=new class extends s{tokenize(e){return e.split(/([{}:;,]|\s+)/)}};function W(e,n,t){return x.diff(e,n,t)}const F=new class extends s{constructor(){super(...arguments),this.tokenize=P}get useLongestToken(){return!0}castInput(e,n){const{undefinedReplacement:t,stringifyReplacer:s=(e,n)=>void 0===n?t:n}=n;return"string"==typeof e?e:JSON.stringify(N(e,null,null,s),null," ")}equals(e,n,t){return super.equals(e.replace(/,([\r\n])/g,"$1"),n.replace(/,([\r\n])/g,"$1"),t)}};function A(e,n,t){return F.diff(e,n,t)}function N(e,n,t,s,o){let r,i;for(n=n||[],t=t||[],s&&(e=s(void 0===o?"":o,e)),r=0;r<n.length;r+=1)if(n[r]===e)return t[r];if("[object Array]"===Object.prototype.toString.call(e)){for(n.push(e),i=new Array(e.length),t.push(i),r=0;r<e.length;r+=1)i[r]=N(e[r],n,t,s,String(r));return n.pop(),t.pop(),i}if(e&&e.toJSON&&(e=e.toJSON()),"object"==typeof e&&null!==e){n.push(e),i={},t.push(i);const o=[];let l;for(l in e)Object.prototype.hasOwnProperty.call(e,l)&&o.push(l);for(o.sort(),r=0;r<o.length;r+=1)l=o[r],i[l]=N(e[l],n,t,s,l);n.pop(),t.pop()}else i=e;return i}const T=new class extends s{tokenize(e){return e.slice()}join(e){return e}removeEmpty(e){return e}};function I(e,n,t){return T.diff(e,n,t)}function D(e){return Array.isArray(e)?e.map(e=>D(e)):Object.assign(Object.assign({},e),{hunks:e.hunks.map(e=>Object.assign(Object.assign({},e),{lines:e.lines.map((n,t)=>{var s;return n.startsWith("\\")||n.endsWith("\r")||(null===(s=e.lines[t+1])||void 0===s?void 0:s.startsWith("\\"))?n:n+"\r"})}))})}function H(e){return Array.isArray(e)?e.map(e=>H(e)):Object.assign(Object.assign({},e),{hunks:e.hunks.map(e=>Object.assign(Object.assign({},e),{lines:e.lines.map(e=>e.endsWith("\r")?e.substring(0,e.length-1):e)}))})}function z(e){const n=e.split(/\n/),t=[];let s=0;function o(){const e={};for(t.push(e);s<n.length;){const t=n[s];if(/^(---|\+\+\+|@@)\s/.test(t))break;const o=/^(?:Index:|diff(?: -r \w+)+)\s+/.exec(t);o&&(e.index=t.substring(o[0].length).trim()),s++}for(r(e),r(e),e.hunks=[];s<n.length;){const t=n[s];if(/^(Index:\s|diff\s|---\s|\+\+\+\s|===================================================================)/.test(t))break;if(/^@@/.test(t))e.hunks.push(i());else{if(t)throw new Error("Unknown line "+(s+1)+" "+JSON.stringify(t));s++}}}function r(e){const t=/^(---|\+\+\+)\s+/.exec(n[s]);if(t){const o=t[1],r=n[s].substring(3).trim().split("\t",2),i=(r[1]||"").trim();let l=r[0].replace(/\\\\/g,"\\");l.startsWith('"')&&l.endsWith('"')&&(l=l.substr(1,l.length-2)),"---"===o?(e.oldFileName=l,e.oldHeader=i):(e.newFileName=l,e.newHeader=i),s++}}function i(){var e;const t=s,o=n[s++].split(/@@ -(\d+)(?:,(\d+))? \+(\d+)(?:,(\d+))? @@/),r={oldStart:+o[1],oldLines:void 0===o[2]?1:+o[2],newStart:+o[3],newLines:void 0===o[4]?1:+o[4],lines:[]};0===r.oldLines&&(r.oldStart+=1),0===r.newLines&&(r.newStart+=1);let i=0,l=0;for(;s<n.length&&(l<r.oldLines||i<r.newLines||(null===(e=n[s])||void 0===e?void 0:e.startsWith("\\")));s++){const e=0==n[s].length&&s!=n.length-1?" ":n[s][0];if("+"!==e&&"-"!==e&&" "!==e&&"\\"!==e)throw new Error(`Hunk at line ${t+1} contained invalid line ${n[s]}`);r.lines.push(n[s]),"+"===e?i++:"-"===e?l++:" "===e&&(i++,l++)}if(i||1!==r.newLines||(r.newLines=0),l||1!==r.oldLines||(r.oldLines=0),i!==r.newLines)throw new Error("Added line count did not match for hunk at line "+(t+1));if(l!==r.oldLines)throw new Error("Removed line count did not match for hunk at line "+(t+1));return r}for(;s<n.length;)o();return t}function $(e,n,t){let s=!0,o=!1,r=!1,i=1;return function l(){if(s&&!r){if(o?i++:s=!1,e+i<=t)return e+i;r=!0}if(!o)return r||(s=!0),n<=e-i?e-i++:(o=!0,l())}}function J(e,n,t={}){let s;if(s="string"==typeof n?z(n):Array.isArray(n)?n:[n],s.length>1)throw new Error("applyPatch only works with a single input.");return function(e,n,t={}){var s;(t.autoConvertLineEndings||null==t.autoConvertLineEndings)&&((s=e).includes("\r\n")&&!s.startsWith("\n")&&!s.match(/[^\r]\n/)&&function(e){return Array.isArray(e)||(e=[e]),!e.some(e=>e.hunks.some(e=>e.lines.some(e=>!e.startsWith("\\")&&e.endsWith("\r"))))}(n)?n=D(n):function(e){return!e.includes("\r\n")&&e.includes("\n")}(e)&&function(e){return Array.isArray(e)||(e=[e]),e.some(e=>e.hunks.some(e=>e.lines.some(e=>e.endsWith("\r"))))&&e.every(e=>e.hunks.every(e=>e.lines.every((n,t)=>{var s;return n.startsWith("\\")||n.endsWith("\r")||(null===(s=e.lines[t+1])||void 0===s?void 0:s.startsWith("\\"))})))}(n)&&(n=H(n)));const o=e.split("\n"),r=n.hunks,i=t.compareLine||((e,n,t,s)=>n===s),l=t.fuzzFactor||0;let u=0;if(l<0||!Number.isInteger(l))throw new Error("fuzzFactor must be a non-negative integer");if(!r.length)return e;let a="",c=!1,f=!1;for(let e=0;e<r[r.length-1].lines.length;e++){const n=r[r.length-1].lines[e];"\\"==n[0]&&("+"==a[0]?c=!0:"-"==a[0]&&(f=!0)),a=n}if(c){if(f){if(!l&&""==o[o.length-1])return!1}else if(""==o[o.length-1])o.pop();else if(!l)return!1}else if(f)if(""!=o[o.length-1])o.push("");else if(!l)return!1;function h(e,n,t,s=0,r=!0,l=[],u=0){let a=0,c=!1;for(;s<e.length;s++){const f=e[s],d=f.length>0?f[0]:" ",p=f.length>0?f.substr(1):f;if("-"===d){if(!i(n+1,o[n],d,p))return t&&null!=o[n]?(l[u]=o[n],h(e,n+1,t-1,s,!1,l,u+1)):null;n++,a=0}if("+"===d){if(!r)return null;l[u]=p,u++,a=0,c=!0}if(" "===d){if(a++,l[u]=o[n],!i(n+1,o[n],d,p))return c||!t?null:o[n]&&(h(e,n+1,t-1,s+1,!1,l,u+1)||h(e,n+1,t-1,s,!1,l,u+1))||h(e,n,t-1,s+1,!1,l,u);u++,r=!0,c=!1,n++}}return u-=a,n-=a,l.length=u,{patchedLines:l,oldLineLastI:n-1}}const d=[];let p=0;for(let e=0;e<r.length;e++){const n=r[e];let t;const s=o.length-n.oldLines+l;let i;for(let e=0;e<=l;e++){i=n.oldStart+p-1;const o=$(i,u,s);for(;void 0!==i&&(t=h(n.lines,i,e),!t);i=o());if(t)break}if(!t)return!1;for(let e=u;e<i;e++)d.push(o[e]);for(let e=0;e<t.patchedLines.length;e++){const n=t.patchedLines[e];d.push(n)}u=t.oldLineLastI+1,p=i+1-n.oldStart}for(let e=u;e<o.length;e++)d.push(o[e]);return d.join("\n")}(e,s[0],t)}function M(e,n){const t="string"==typeof e?z(e):e;let s=0;!function e(){const o=t[s++];if(!o)return n.complete();n.loadFile(o,function(t,s){if(t)return n.complete(t);const r=J(s,o,n);n.patched(o,r,function(t){if(t)return n.complete(t);e()})})}()}function _(e){return Array.isArray(e)?e.map(e=>_(e)).reverse():Object.assign(Object.assign({},e),{oldFileName:e.newFileName,oldHeader:e.newHeader,newFileName:e.oldFileName,newHeader:e.oldHeader,hunks:e.hunks.map(e=>({oldLines:e.newLines,oldStart:e.newStart,newLines:e.oldLines,newStart:e.oldStart,lines:e.lines.map(e=>e.startsWith("-")?`+${e.slice(1)}`:e.startsWith("+")?`-${e.slice(1)}`:e)}))})}const q={includeIndex:!0,includeUnderline:!0,includeFileHeaders:!0},R={includeIndex:!1,includeUnderline:!1,includeFileHeaders:!0},U={includeIndex:!1,includeUnderline:!1,includeFileHeaders:!1};function V(e,n,t,s,o,r,i){let l;l=i?"function"==typeof i?{callback:i}:i:{},void 0===l.context&&(l.context=4);const u=l.context;if(l.newlineIsToken)throw new Error("newlineIsToken may not be used with patch-generation functions, only with diffing functions");if(!l.callback)return a(C(t,s,l));{const{callback:e}=l;C(t,s,Object.assign(Object.assign({},l),{callback:n=>{const t=a(n);e(t)}}))}function a(t){if(!t)return;function s(e){return e.map(function(e){return" "+e})}t.push({value:"",lines:[]});const i=[];let l=0,a=0,c=[],f=1,h=1;for(let e=0;e<t.length;e++){const n=t[e],o=n.lines||B(n.value);if(n.lines=o,n.added||n.removed){if(!l){const n=t[e-1];l=f,a=h,n&&(c=u>0?s(n.lines.slice(-u)):[],l-=c.length,a-=c.length)}for(const e of o)c.push((n.added?"+":"-")+e);n.added?h+=o.length:f+=o.length}else{if(l)if(o.length<=2*u&&e<t.length-2)for(const e of s(o))c.push(e);else{const e=Math.min(o.length,u);for(const n of s(o.slice(0,e)))c.push(n);const n={oldStart:l,oldLines:f-l+e,newStart:a,newLines:h-a+e,lines:c};i.push(n),l=0,a=0,c=[]}f+=o.length,h+=o.length}}for(const e of i)for(let n=0;n<e.lines.length;n++)e.lines[n].endsWith("\n")?e.lines[n]=e.lines[n].slice(0,-1):(e.lines.splice(n+1,0,"\"),n++);return{oldFileName:e,newFileName:n,oldHeader:o,newHeader:r,hunks:i}}}function X(e,n){if(n||(n=q),Array.isArray(e)){if(e.length>1&&!n.includeFileHeaders)throw new Error("Cannot omit file headers on a multi-file patch. (The result would be unparseable; how would a tool trying to apply the patch know which changes are to which file?)");return e.map(e=>X(e,n)).join("\n")}const t=[];n.includeIndex&&e.oldFileName==e.newFileName&&t.push("Index: "+e.oldFileName),n.includeUnderline&&t.push("==================================================================="),n.includeFileHeaders&&(t.push("--- "+e.oldFileName+(void 0===e.oldHeader?"":"\t"+e.oldHeader)),t.push("+++ "+e.newFileName+(void 0===e.newHeader?"":"\t"+e.newHeader)));for(let n=0;n<e.hunks.length;n++){const s=e.hunks[n];0===s.oldLines&&(s.oldStart-=1),0===s.newLines&&(s.newStart-=1),t.push("@@ -"+s.oldStart+","+s.oldLines+" +"+s.newStart+","+s.newLines+" @@");for(const e of s.lines)t.push(e)}return t.join("\n")+"\n"}function Y(e,n,t,s,o,r,i){if("function"==typeof i&&(i={callback:i}),!(null==i?void 0:i.callback)){const l=V(e,n,t,s,o,r,i);if(!l)return;return X(l,null==i?void 0:i.headerOptions)}{const{callback:l}=i;V(e,n,t,s,o,r,Object.assign(Object.assign({},i),{callback:e=>{l(e?X(e,i.headerOptions):void 0)}}))}}function Z(e,n,t,s,o,r){return Y(e,e,n,t,s,o,r)}function B(e){const n=e.endsWith("\n"),t=e.split("\n").map(e=>e+"\n");return n?t.pop():t.push(t.pop().slice(0,-1)),t}function G(e){const n=[];let t,s;for(let o=0;o<e.length;o++)t=e[o],s=t.added?1:t.removed?-1:0,n.push([s,t.value]);return n}function K(e){const n=[];for(let t=0;t<e.length;t++){const s=e[t];s.added?n.push("<ins>"):s.removed&&n.push("<del>"),n.push(Q(s.value)),s.added?n.push("</ins>"):s.removed&&n.push("</del>")}return n.join("")}function Q(e){let n=e;return n=n.replace(/&/g,"&amp;"),n=n.replace(/</g,"&lt;"),n=n.replace(/>/g,"&gt;"),n=n.replace(/"/g,"&quot;"),n}}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunksignalpilot_ai_internal=self.webpackChunksignalpilot_ai_internal||[]).push([[129,510],{95510(t,e,n){n.r(e),n.d(e,{create:()=>o,createStore:()=>a,useStore:()=>r});const s=t=>{let e;const n=new Set,s=(t,s)=>{const a="function"==typeof t?t(e):t;if(!Object.is(a,e)){const t=e;e=(null!=s?s:"object"!=typeof a||null===a)?a:Object.assign({},e,a),n.forEach(n=>n(e,t))}},a=()=>e,c={setState:s,getState:a,getInitialState:()=>l,subscribe:t=>(n.add(t),()=>n.delete(t))},l=e=t(s,a,c);return c},a=t=>t?s(t):s;var c=n(93345),l=n.n(c);const i=t=>t;function r(t,e=i){const n=l().useSyncExternalStore(t.subscribe,l().useCallback(()=>e(t.getState()),[t,e]),l().useCallback(()=>e(t.getInitialState()),[t,e]));return l().useDebugValue(n),n}const u=t=>{const e=a(t),n=t=>r(e,t);return Object.assign(n,e),n},o=t=>t?u(t):u}}]);
@@ -0,0 +1 @@
1
+ "use strict";(self.webpackChunksignalpilot_ai_internal=self.webpackChunksignalpilot_ai_internal||[]).push([[512],{68512(e,t,r){r.r(t),r.d(t,{InvalidTokenError:()=>n,jwtDecode:()=>a});class n extends Error{}function a(e,t){if("string"!=typeof e)throw new n("Invalid token specified: must be a string");t||(t={});const r=!0===t.header?0:1,a=e.split(".")[r];if("string"!=typeof a)throw new n(`Invalid token specified: missing part #${r+1}`);let i;try{i=function(e){let t=e.replace(/-/g,"+").replace(/_/g,"/");switch(t.length%4){case 0:break;case 2:t+="==";break;case 3:t+="=";break;default:throw new Error("base64 string is not of the correct length")}try{return function(e){return decodeURIComponent(atob(e).replace(/(.)/g,(e,t)=>{let r=t.charCodeAt(0).toString(16).toUpperCase();return r.length<2&&(r="0"+r),"%"+r}))}(t)}catch(e){return atob(t)}}(a)}catch(e){throw new n(`Invalid token specified: invalid base64 for part #${r+1} (${e.message})`)}try{return JSON.parse(i)}catch(e){throw new n(`Invalid token specified: invalid json for part #${r+1} (${e.message})`)}}n.prototype.name="InvalidTokenError"}}]);