codebuff-agent 2.1.79__py3-none-any.whl → 2.1.80__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 (36) hide show
  1. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/package.json +2 -2
  2. codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/remoteEntry.85fc9c6c88a0f6b87109.js → codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/remoteEntry.92bab6f54fc5da41a521.js +1 -1
  3. {codebuff_agent-2.1.79.dist-info → codebuff_agent-2.1.80.dist-info}/METADATA +1 -1
  4. {codebuff_agent-2.1.79.dist-info → codebuff_agent-2.1.80.dist-info}/RECORD +36 -36
  5. jupyter_ext/_version.py +1 -1
  6. jupyter_ext/agent/codex_bridge.py +20 -4
  7. jupyter_ext/labextension/package.json +2 -2
  8. jupyter_ext/labextension/static/{remoteEntry.85fc9c6c88a0f6b87109.js → remoteEntry.92bab6f54fc5da41a521.js} +1 -1
  9. jupyter_ext/pod_identity.py +27 -2
  10. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/etc/jupyter/jupyter_server_config.d/codebuff_agent.json +0 -0
  11. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/lab/settings/overrides.d/codebuff.json +0 -0
  12. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/166.386ff9b2c37ac865fdee.js +0 -0
  13. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/351.e796b81287b53635cfa4.js +0 -0
  14. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/353.581bd1cb00746399b62e.js +0 -0
  15. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/367.575f9621b63c9a641aa9.js +0 -0
  16. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/421.11dac223a2c2da1b09f5.js +0 -0
  17. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/432.a749eb54fdc324b18cfa.js +0 -0
  18. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/432.a749eb54fdc324b18cfa.js.LICENSE.txt +0 -0
  19. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/439.ba5b5ef70ec6de214b8c.js +0 -0
  20. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/439.ba5b5ef70ec6de214b8c.js.LICENSE.txt +0 -0
  21. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/481.cc2dec9fa869d66f1407.js +0 -0
  22. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/487.0796e931d6e651482c14.js +0 -0
  23. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/49.d326f554b6f9ccde6580.js +0 -0
  24. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/539.3024c7f70ce4db9b6428.js +0 -0
  25. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/579.3bc73eef11d3e0ce5d0c.js +0 -0
  26. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/58.eb7cc679f7535cc8a2f1.js +0 -0
  27. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/58.eb7cc679f7535cc8a2f1.js.LICENSE.txt +0 -0
  28. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/666.d9bfdb23f98489d0a188.js +0 -0
  29. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/677.d266c39dbed33bc388b3.js +0 -0
  30. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/677.d266c39dbed33bc388b3.js.LICENSE.txt +0 -0
  31. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/68.26b6f59c8454adb17f20.js +0 -0
  32. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/868.5cfe7e1a348ec5af1b8c.js +0 -0
  33. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/style.js +0 -0
  34. {codebuff_agent-2.1.79.data → codebuff_agent-2.1.80.data}/data/share/jupyter/labextensions/codebuff/static/third-party-licenses.json +0 -0
  35. {codebuff_agent-2.1.79.dist-info → codebuff_agent-2.1.80.dist-info}/WHEEL +0 -0
  36. {codebuff_agent-2.1.79.dist-info → codebuff_agent-2.1.80.dist-info}/licenses/LICENSE +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codebuff",
3
- "version": "2.1.79",
3
+ "version": "2.1.80",
4
4
  "description": "Codebuff JupyterLab Extension - Thin client for Agent Server",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -146,7 +146,7 @@
146
146
  }
147
147
  },
148
148
  "_build": {
149
- "load": "static/remoteEntry.85fc9c6c88a0f6b87109.js",
149
+ "load": "static/remoteEntry.92bab6f54fc5da41a521.js",
150
150
  "extension": "./extension",
151
151
  "style": "./style"
152
152
  }
@@ -1 +1 @@
1
- var _JUPYTERLAB;(()=>{"use strict";var e={8384(e,t,r){const o={"./index":()=>Promise.all([r.e(666),r.e(432),r.e(351),r.e(345),r.e(586),r.e(195),r.e(539)]).then(()=>()=>r(5539)),"./extension":()=>Promise.all([r.e(666),r.e(432),r.e(351),r.e(345),r.e(586),r.e(195),r.e(539)]).then(()=>()=>r(5539)),"./style":()=>r.e(579).then(()=>()=>r(6579))},n=(e,t)=>(r.R=t,t=r.o(o,e)?o[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t),a=(e,t)=>{if(!r.S)return;const o="default",n=r.S[o];if(n&&n!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return r.S[o]=e,r.I(o,t)};r.d(t,{get:()=>n,init:()=>a})}};const t={};function r(o){const n=t[o];if(void 0!==n)return n.exports;const a=t[o]={id:o,exports:{}};return e[o](a,a.exports,r),a.exports}r.m=e,r.c=t,r.n=e=>{const t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.cw=e=>{var t;return()=>{if(e){var r=e;e=0,t={exports:{}},r.call(t.exports,t,t.exports)}return t.exports}},(()=>{const e=Object.getPrototypeOf;let t;r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}const a=Object.create(null);r.r(a);const l={};t=t||[null,e({}),e([]),e(e)];for(var f=2&n&&o;("object"==typeof f||"function"==typeof f)&&!~t.indexOf(f);f=e(f))Object.getOwnPropertyNames(f).forEach(e=>l[e]=()=>o[e]);return l.default=()=>o,r.d(a,l),a}})(),r.d=(e,t)=>{if(Array.isArray(t))for(var o=0;o<t.length;){var n=t[o++],a=t[o++],l=0===a?{enumerable:!0,value:t[o++]}:{enumerable:!0,get:a};r.o(e,n)||Object.defineProperty(e,n,l)}else for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>e+"."+{49:"d326f554b6f9ccde6580",58:"eb7cc679f7535cc8a2f1",68:"26b6f59c8454adb17f20",166:"386ff9b2c37ac865fdee",351:"e796b81287b53635cfa4",353:"581bd1cb00746399b62e",367:"575f9621b63c9a641aa9",421:"11dac223a2c2da1b09f5",432:"a749eb54fdc324b18cfa",439:"ba5b5ef70ec6de214b8c",481:"cc2dec9fa869d66f1407",487:"0796e931d6e651482c14",539:"3024c7f70ce4db9b6428",579:"3bc73eef11d3e0ce5d0c",666:"d9bfdb23f98489d0a188",677:"d266c39dbed33bc388b3",868:"5cfe7e1a348ec5af1b8c"}[e]+".js?v="+{49:"d326f554b6f9ccde6580",58:"eb7cc679f7535cc8a2f1",68:"26b6f59c8454adb17f20",166:"386ff9b2c37ac865fdee",351:"e796b81287b53635cfa4",353:"581bd1cb00746399b62e",367:"575f9621b63c9a641aa9",421:"11dac223a2c2da1b09f5",432:"a749eb54fdc324b18cfa",439:"ba5b5ef70ec6de214b8c",481:"cc2dec9fa869d66f1407",487:"0796e931d6e651482c14",539:"3024c7f70ce4db9b6428",579:"3bc73eef11d3e0ce5d0c",666:"d9bfdb23f98489d0a188",677:"d266c39dbed33bc388b3",868:"5cfe7e1a348ec5af1b8c"}[e],r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="codebuff:";r.l=(o,n,a,l)=>{if(e[o])return void e[o].push(n);let f,i;if(void 0!==a){const e=document.getElementsByTagName("script");for(var c=0;c<e.length;c++){const r=e[c];if(r.getAttribute("src")==o||r.getAttribute("data-webpack")==t+a){f=r;break}}}f||(i=!0,f=document.createElement("script"),f.charset="utf-8",r.nc&&f.setAttribute("nonce",r.nc),f.setAttribute("data-webpack",t+a),f.src=o),e[o]=[n];const d=(t,r)=>{f.onerror=f.onload=null,clearTimeout(u);const n=e[o];if(delete e[o],f.parentNode?.removeChild(f),n?.forEach(e=>e(r)),t)return t(r)},u=setTimeout(d.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=d.bind(null,f.onerror),f.onload=d.bind(null,f.onload),i&&document.head.appendChild(f)}})(),r.r=e=>{Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.dn=e=>{var t=Object.getOwnPropertyDescriptor(e,"name");(!t||!t.writable&&t.configurable)&&Object.defineProperty(e,"name",{value:"default",configurable:!0})},(()=>{r.S={};const e={},t={};r.I=(o,n)=>{n||(n=[]);let a=t[o];if(a||(a=t[o]={}),n.indexOf(a)>=0)return;if(n.push(a),e[o])return e[o];r.o(r.S,o)||(r.S[o]={});const l=r.S[o],f="codebuff",i=(e,t,r,o)=>{const n=l[e]=l[e]||{},a=n[t];(!a||!a.loaded&&(!o!=!a.eager?o:f>a.from))&&(n[t]={get:r,from:f,eager:!!o})},c=[];return"default"===o&&(i("@codemirror/commands","6.8.1",()=>Promise.all([r.e(353),r.e(708),r.e(11),r.e(195)]).then(()=>()=>r(4353))),i("@emotion/react","11.14.0",()=>Promise.all([r.e(666),r.e(345),r.e(677)]).then(()=>()=>r(7677))),i("@emotion/styled","11.14.1",()=>Promise.all([r.e(345),r.e(744),r.e(487)]).then(()=>()=>r(1868))),i("@lezer/java","1.1.4",()=>Promise.all([r.e(421),r.e(367),r.e(708),r.e(839)]).then(()=>()=>r(7367))),i("@lezer/javascript","1.5.5",()=>Promise.all([r.e(421),r.e(166),r.e(708),r.e(839)]).then(()=>()=>r(166))),i("@lezer/python","1.1.19",()=>Promise.all([r.e(421),r.e(49),r.e(708),r.e(839)]).then(()=>()=>r(49))),i("@mui/material","5.18.0",()=>Promise.all([r.e(666),r.e(68),r.e(432),r.e(345),r.e(586)]).then(()=>()=>r(3068))),i("codebuff","2.1.79",()=>Promise.all([r.e(666),r.e(432),r.e(351),r.e(345),r.e(586),r.e(195),r.e(539)]).then(()=>()=>r(5539))),i("diff","0",()=>r.e(481).then(()=>()=>r(7481)))),e[o]=c.length?Promise.all(c).then(()=>e[o]=1):1}})(),(()=>{let e;r.g.importScripts&&(e=r.g.location+"");const t=r.g.document;if(!e&&t&&("SCRIPT"===t.currentScript?.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){const r=t.getElementsByTagName("script");if(r.length){let t=r.length-1;for(;t>-1&&(!e||!/^https?:/.test(e));)e=r[t--].src}}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:|[?#].*$/g,"").replace(/\/[^/]+$/,"/"),r.p=e})(),(()=>{var e=e=>{var t=e=>e.split(".").map(e=>+e==e?+e:e),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),o=r[1]?t(r[1]):[];return r[2]&&(o.length++,o.push.apply(o,t(r[2]))),r[3]&&(o.push([]),o.push.apply(o,t(r[3]))),o},t=(t,r)=>{t=e(t),r=e(r);for(var o=0;;){if(o>=t.length)return o<r.length&&"u"!=(typeof r[o])[0];var n=t[o],a=(typeof n)[0];if(o>=r.length)return"u"==a;var l=r[o],f=(typeof l)[0];if(a!=f)return"o"==a&&"n"==f||"s"==f||"u"==a;if("o"!=a&&"u"!=a&&n!=l)return n<l;o++}},o=e=>{var t=e[0],r="";if(1===e.length)return"*";if(t+.5){r+=0==t?">=":-1==t?"<":1==t?"^":2==t?"~":t>0?"=":"!=";for(var n=1,a=1;a<e.length;a++)n--,r+="u"==(typeof(f=e[a]))[0]?"-":(n>0?".":"")+(n=2,f);return r}var l=[];for(a=1;a<e.length;a++){var f=e[a];l.push(0===f?"not("+i()+")":1===f?"("+i()+" || "+i()+")":2===f?l.pop()+" "+l.pop():o(f))}return i();function i(){return l.pop().replace(/^\((.+)\)$/,"$1")}},n=(t,r)=>{if(0 in t){r=e(r);var o=t[0],a=o<0;a&&(o=-o-1);for(var l=0,f=1,i=!0;;f++,l++){var c,d,u=f<t.length?(typeof t[f])[0]:"";if(l>=r.length||"o"==(d=(typeof(c=r[l]))[0]))return!i||("u"==u?f>o&&!a:""==u!=a);if("u"==d){if(!i||"u"!=u)return!1}else if(i)if(u==d)if(f<=o){if(c!=t[f])return!1}else{if(a?c>t[f]:c<t[f])return!1;c!=t[f]&&(i=!1)}else if("s"!=u&&"n"!=u){if(a||f<=o)return!1;i=!1,f--}else{if(f<=o||d<u!=a)return!1;i=!1}else"s"!=u&&"n"!=u&&(i=!1,f--)}}var s=[],b=s.pop.bind(s);for(l=1;l<t.length;l++){var p=t[l];s.push(1==p?b()|b():2==p?b()&b():p?n(p,r):!b())}return!!b()};const a=(e,t)=>e&&r.o(e,t),l=e=>(e.loaded=1,e.get()),f=e=>Object.keys(e).reduce((t,r)=>(e[r].eager&&(t[r]=e[r]),t),{}),i=e=>{throw new Error(e)},c=e=>function(t,o,n,a,l){const f=r.I(t);return f?.then&&!n?f.then(e.bind(e,t,r.S[t],o,!1,a,l)):e(t,r.S[t],o,n,a,l)},d=(e,t,r)=>r?r():((e,t)=>i("Shared module "+t+" doesn't exist in shared scope "+e))(e,t),u=c((e,r,c,u,s,b)=>{if(!a(r,c))return d(e,c,b);const p=((e,r,o,a)=>{const l=a?f(e[r]):e[r];return(r=Object.keys(l).reduce((e,r)=>!n(o,r)||e&&!t(e,r)?e:r,0))&&l[r]})(r,c,s,u);return p?l(p):b?b():void i(((e,t,r,n,a)=>{const l=e[r];return"No satisfying version ("+o(n)+")"+(a?" for eager consumption":"")+" of shared module "+r+" found in shared scope "+t+".\nAvailable versions: "+Object.keys(l).map(e=>e+" from "+l[e].from).join(", ")})(r,e,c,s,u))}),s=c((e,r,i,c,u,s)=>{if(!a(r,i))return d(e,i,s);const b=((e,r,o)=>{const n=o?f(e[r]):e[r];return Object.keys(n).reduce((e,r)=>!e||!n[e].loaded&&t(e,r)?r:e,0)})(r,i,c);return n(u,b)||(p=((e,t,r,n)=>"Unsatisfied version "+r+" from "+(r&&e[t][r].from)+" of shared singleton module "+t+" (required "+o(n)+")")(r,i,b,u),"undefined"!=typeof console&&console.warn&&console.warn(p)),l(r[i][b]);var p}),b={},p={3345:()=>s("default","react",!1,[1,18,2,0]),3157:()=>u("default","@emotion/react",!1,[1,11,4,1],()=>r.e(58).then(()=>()=>r(7677))),7628:()=>s("default","react-dom",!1,[1,18,2,0]),9443:()=>u("default","@emotion/styled",!1,[1,11,3,0],()=>Promise.all([r.e(744),r.e(868)]).then(()=>()=>r(1868))),2576:()=>s("default","@codemirror/state",!1,[1,6,2,0]),277:()=>s("default","@jupyterlab/cells",!1,[1,4,5,1]),1247:()=>s("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",1]),1409:()=>s("default","@jupyterlab/ui-components",!1,[1,4,5,1]),1805:()=>s("default","@jupyterlab/console",!1,[1,4,5,1]),1907:()=>s("default","@jupyterlab/services",!1,[1,7,5,1]),2780:()=>s("default","@jupyterlab/filebrowser",!1,[1,4,5,1]),3118:()=>s("default","@jupyterlab/rendermime",!1,[1,4,5,1]),3366:()=>s("default","@jupyterlab/launcher",!1,[1,4,5,1]),4849:()=>u("default","diff",!1,[1,9,0,0],()=>r.e(481).then(()=>()=>r(7481))),5584:()=>s("default","@jupyterlab/application",!1,[1,4,5,1]),5690:()=>s("default","@jupyterlab/terminal",!1,[1,4,5,1]),5705:()=>u("default","@lezer/javascript",!1,[1,1,5,5],()=>Promise.all([r.e(421),r.e(166),r.e(708),r.e(839)]).then(()=>()=>r(166))),6580:()=>u("default","@lezer/python",!1,[1,1,1,19],()=>Promise.all([r.e(421),r.e(49),r.e(708),r.e(839)]).then(()=>()=>r(49))),6661:()=>u("default","@mui/material",!1,[1,5,14,0],()=>r.e(68).then(()=>()=>r(3068))),6822:()=>u("default","@codemirror/commands",!1,[4,6,8,1],()=>Promise.all([r.e(353),r.e(708),r.e(11)]).then(()=>()=>r(4353))),7125:()=>s("default","@jupyterlab/docmanager",!1,[1,4,5,1]),7292:()=>s("default","@jupyterlab/coreutils",!1,[1,6,5,1]),8389:()=>s("default","@jupyterlab/notebook",!1,[1,4,5,1]),8454:()=>u("default","@lezer/java",!1,[1,1,1,4],()=>Promise.all([r.e(421),r.e(367),r.e(708),r.e(839)]).then(()=>()=>r(7367))),9827:()=>s("default","@jupyterlab/apputils",!1,[1,4,6,1]),3708:()=>s("default","@lezer/common",!1,[1,1,0,0]),2084:()=>s("default","@codemirror/language",!1,[1,6,0,0]),5024:()=>s("default","@codemirror/view",!1,[1,6,9,6]),2744:()=>u("default","@emotion/react",!1,[1,11,0,0,,"rc",0],()=>Promise.all([r.e(666),r.e(439)]).then(()=>()=>r(7677))),1839:()=>s("default","@lezer/highlight",!1,[1,1,0,0])},h={11:[2084,5024],195:[2576],345:[3345],539:[277,1247,1409,1805,1907,2780,3118,3366,4849,5584,5690,5705,6580,6661,6822,7125,7292,8389,8454,9827],586:[3157,7628,9443],708:[3708],744:[2744],839:[1839]},m={};r.f.consumes=(e,t)=>{r.o(h,e)&&h[e].forEach(e=>{if(r.o(b,e))return t.push(b[e]);if(!m[e]){const o=t=>{b[e]=0,r.m[e]=o=>{delete r.c[e],o.exports=t()}};m[e]=!0;const n=t=>{delete b[e],r.m[e]=o=>{throw delete r.c[e],t}};try{const r=p[e]();r.then?t.push(b[e]=r.then(o).catch(n)):o(r)}catch(e){n(e)}}})}})(),(()=>{r.b="undefined"!=typeof document&&document.baseURI||self.location.href;const e={679:0};r.f.j=(t,o)=>{let n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(/^(11|195|345|586|708|744|839)$/.test(t))e[t]=0;else{const a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);const l=new Error,f=o=>{if(r.o(e,t)&&(n=e[t],0!==n&&(e[t]=void 0),n)){const e=o&&("load"===o.type?"missing":o.type),r=o&&o.target&&o.target.src;l.message="Loading chunk "+t+" failed.\n("+e+": "+r+")",l.name="ChunkLoadError",l.type=e,l.request=r,l.event=o,n[1](l)}};r.l(r.p+r.u(t),f,"chunk-"+t,t)}};const t=(t,o)=>{let[n,a,l]=o;var f,i,c=0;if(n.some(t=>0!==e[t])){for(f in a)r.o(a,f)&&(r.m[f]=a[f]);l&&l(r)}for(t&&t(o);c<n.length;c++)i=n[c],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0},o=self.webpackChunkcodebuff=self.webpackChunkcodebuff||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})(),r.nc=void 0;let o=r(8384);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB).codebuff=o})();
1
+ var _JUPYTERLAB;(()=>{"use strict";var e={8384(e,t,r){const o={"./index":()=>Promise.all([r.e(666),r.e(432),r.e(351),r.e(345),r.e(586),r.e(195),r.e(539)]).then(()=>()=>r(5539)),"./extension":()=>Promise.all([r.e(666),r.e(432),r.e(351),r.e(345),r.e(586),r.e(195),r.e(539)]).then(()=>()=>r(5539)),"./style":()=>r.e(579).then(()=>()=>r(6579))},n=(e,t)=>(r.R=t,t=r.o(o,e)?o[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t),a=(e,t)=>{if(!r.S)return;const o="default",n=r.S[o];if(n&&n!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return r.S[o]=e,r.I(o,t)};r.d(t,{get:()=>n,init:()=>a})}};const t={};function r(o){const n=t[o];if(void 0!==n)return n.exports;const a=t[o]={id:o,exports:{}};return e[o](a,a.exports,r),a.exports}r.m=e,r.c=t,r.n=e=>{const t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.cw=e=>{var t;return()=>{if(e){var r=e;e=0,t={exports:{}},r.call(t.exports,t,t.exports)}return t.exports}},(()=>{const e=Object.getPrototypeOf;let t;r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}const a=Object.create(null);r.r(a);const l={};t=t||[null,e({}),e([]),e(e)];for(var f=2&n&&o;("object"==typeof f||"function"==typeof f)&&!~t.indexOf(f);f=e(f))Object.getOwnPropertyNames(f).forEach(e=>l[e]=()=>o[e]);return l.default=()=>o,r.d(a,l),a}})(),r.d=(e,t)=>{if(Array.isArray(t))for(var o=0;o<t.length;){var n=t[o++],a=t[o++],l=0===a?{enumerable:!0,value:t[o++]}:{enumerable:!0,get:a};r.o(e,n)||Object.defineProperty(e,n,l)}else for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>e+"."+{49:"d326f554b6f9ccde6580",58:"eb7cc679f7535cc8a2f1",68:"26b6f59c8454adb17f20",166:"386ff9b2c37ac865fdee",351:"e796b81287b53635cfa4",353:"581bd1cb00746399b62e",367:"575f9621b63c9a641aa9",421:"11dac223a2c2da1b09f5",432:"a749eb54fdc324b18cfa",439:"ba5b5ef70ec6de214b8c",481:"cc2dec9fa869d66f1407",487:"0796e931d6e651482c14",539:"3024c7f70ce4db9b6428",579:"3bc73eef11d3e0ce5d0c",666:"d9bfdb23f98489d0a188",677:"d266c39dbed33bc388b3",868:"5cfe7e1a348ec5af1b8c"}[e]+".js?v="+{49:"d326f554b6f9ccde6580",58:"eb7cc679f7535cc8a2f1",68:"26b6f59c8454adb17f20",166:"386ff9b2c37ac865fdee",351:"e796b81287b53635cfa4",353:"581bd1cb00746399b62e",367:"575f9621b63c9a641aa9",421:"11dac223a2c2da1b09f5",432:"a749eb54fdc324b18cfa",439:"ba5b5ef70ec6de214b8c",481:"cc2dec9fa869d66f1407",487:"0796e931d6e651482c14",539:"3024c7f70ce4db9b6428",579:"3bc73eef11d3e0ce5d0c",666:"d9bfdb23f98489d0a188",677:"d266c39dbed33bc388b3",868:"5cfe7e1a348ec5af1b8c"}[e],r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="codebuff:";r.l=(o,n,a,l)=>{if(e[o])return void e[o].push(n);let f,i;if(void 0!==a){const e=document.getElementsByTagName("script");for(var c=0;c<e.length;c++){const r=e[c];if(r.getAttribute("src")==o||r.getAttribute("data-webpack")==t+a){f=r;break}}}f||(i=!0,f=document.createElement("script"),f.charset="utf-8",r.nc&&f.setAttribute("nonce",r.nc),f.setAttribute("data-webpack",t+a),f.src=o),e[o]=[n];const d=(t,r)=>{f.onerror=f.onload=null,clearTimeout(u);const n=e[o];if(delete e[o],f.parentNode?.removeChild(f),n?.forEach(e=>e(r)),t)return t(r)},u=setTimeout(d.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=d.bind(null,f.onerror),f.onload=d.bind(null,f.onload),i&&document.head.appendChild(f)}})(),r.r=e=>{Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.dn=e=>{var t=Object.getOwnPropertyDescriptor(e,"name");(!t||!t.writable&&t.configurable)&&Object.defineProperty(e,"name",{value:"default",configurable:!0})},(()=>{r.S={};const e={},t={};r.I=(o,n)=>{n||(n=[]);let a=t[o];if(a||(a=t[o]={}),n.indexOf(a)>=0)return;if(n.push(a),e[o])return e[o];r.o(r.S,o)||(r.S[o]={});const l=r.S[o],f="codebuff",i=(e,t,r,o)=>{const n=l[e]=l[e]||{},a=n[t];(!a||!a.loaded&&(!o!=!a.eager?o:f>a.from))&&(n[t]={get:r,from:f,eager:!!o})},c=[];return"default"===o&&(i("@codemirror/commands","6.8.1",()=>Promise.all([r.e(353),r.e(708),r.e(11),r.e(195)]).then(()=>()=>r(4353))),i("@emotion/react","11.14.0",()=>Promise.all([r.e(666),r.e(345),r.e(677)]).then(()=>()=>r(7677))),i("@emotion/styled","11.14.1",()=>Promise.all([r.e(345),r.e(744),r.e(487)]).then(()=>()=>r(1868))),i("@lezer/java","1.1.4",()=>Promise.all([r.e(421),r.e(367),r.e(708),r.e(839)]).then(()=>()=>r(7367))),i("@lezer/javascript","1.5.5",()=>Promise.all([r.e(421),r.e(166),r.e(708),r.e(839)]).then(()=>()=>r(166))),i("@lezer/python","1.1.19",()=>Promise.all([r.e(421),r.e(49),r.e(708),r.e(839)]).then(()=>()=>r(49))),i("@mui/material","5.18.0",()=>Promise.all([r.e(666),r.e(68),r.e(432),r.e(345),r.e(586)]).then(()=>()=>r(3068))),i("codebuff","2.1.80",()=>Promise.all([r.e(666),r.e(432),r.e(351),r.e(345),r.e(586),r.e(195),r.e(539)]).then(()=>()=>r(5539))),i("diff","0",()=>r.e(481).then(()=>()=>r(7481)))),e[o]=c.length?Promise.all(c).then(()=>e[o]=1):1}})(),(()=>{let e;r.g.importScripts&&(e=r.g.location+"");const t=r.g.document;if(!e&&t&&("SCRIPT"===t.currentScript?.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){const r=t.getElementsByTagName("script");if(r.length){let t=r.length-1;for(;t>-1&&(!e||!/^https?:/.test(e));)e=r[t--].src}}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:|[?#].*$/g,"").replace(/\/[^/]+$/,"/"),r.p=e})(),(()=>{var e=e=>{var t=e=>e.split(".").map(e=>+e==e?+e:e),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),o=r[1]?t(r[1]):[];return r[2]&&(o.length++,o.push.apply(o,t(r[2]))),r[3]&&(o.push([]),o.push.apply(o,t(r[3]))),o},t=(t,r)=>{t=e(t),r=e(r);for(var o=0;;){if(o>=t.length)return o<r.length&&"u"!=(typeof r[o])[0];var n=t[o],a=(typeof n)[0];if(o>=r.length)return"u"==a;var l=r[o],f=(typeof l)[0];if(a!=f)return"o"==a&&"n"==f||"s"==f||"u"==a;if("o"!=a&&"u"!=a&&n!=l)return n<l;o++}},o=e=>{var t=e[0],r="";if(1===e.length)return"*";if(t+.5){r+=0==t?">=":-1==t?"<":1==t?"^":2==t?"~":t>0?"=":"!=";for(var n=1,a=1;a<e.length;a++)n--,r+="u"==(typeof(f=e[a]))[0]?"-":(n>0?".":"")+(n=2,f);return r}var l=[];for(a=1;a<e.length;a++){var f=e[a];l.push(0===f?"not("+i()+")":1===f?"("+i()+" || "+i()+")":2===f?l.pop()+" "+l.pop():o(f))}return i();function i(){return l.pop().replace(/^\((.+)\)$/,"$1")}},n=(t,r)=>{if(0 in t){r=e(r);var o=t[0],a=o<0;a&&(o=-o-1);for(var l=0,f=1,i=!0;;f++,l++){var c,d,u=f<t.length?(typeof t[f])[0]:"";if(l>=r.length||"o"==(d=(typeof(c=r[l]))[0]))return!i||("u"==u?f>o&&!a:""==u!=a);if("u"==d){if(!i||"u"!=u)return!1}else if(i)if(u==d)if(f<=o){if(c!=t[f])return!1}else{if(a?c>t[f]:c<t[f])return!1;c!=t[f]&&(i=!1)}else if("s"!=u&&"n"!=u){if(a||f<=o)return!1;i=!1,f--}else{if(f<=o||d<u!=a)return!1;i=!1}else"s"!=u&&"n"!=u&&(i=!1,f--)}}var s=[],b=s.pop.bind(s);for(l=1;l<t.length;l++){var p=t[l];s.push(1==p?b()|b():2==p?b()&b():p?n(p,r):!b())}return!!b()};const a=(e,t)=>e&&r.o(e,t),l=e=>(e.loaded=1,e.get()),f=e=>Object.keys(e).reduce((t,r)=>(e[r].eager&&(t[r]=e[r]),t),{}),i=e=>{throw new Error(e)},c=e=>function(t,o,n,a,l){const f=r.I(t);return f?.then&&!n?f.then(e.bind(e,t,r.S[t],o,!1,a,l)):e(t,r.S[t],o,n,a,l)},d=(e,t,r)=>r?r():((e,t)=>i("Shared module "+t+" doesn't exist in shared scope "+e))(e,t),u=c((e,r,c,u,s,b)=>{if(!a(r,c))return d(e,c,b);const p=((e,r,o,a)=>{const l=a?f(e[r]):e[r];return(r=Object.keys(l).reduce((e,r)=>!n(o,r)||e&&!t(e,r)?e:r,0))&&l[r]})(r,c,s,u);return p?l(p):b?b():void i(((e,t,r,n,a)=>{const l=e[r];return"No satisfying version ("+o(n)+")"+(a?" for eager consumption":"")+" of shared module "+r+" found in shared scope "+t+".\nAvailable versions: "+Object.keys(l).map(e=>e+" from "+l[e].from).join(", ")})(r,e,c,s,u))}),s=c((e,r,i,c,u,s)=>{if(!a(r,i))return d(e,i,s);const b=((e,r,o)=>{const n=o?f(e[r]):e[r];return Object.keys(n).reduce((e,r)=>!e||!n[e].loaded&&t(e,r)?r:e,0)})(r,i,c);return n(u,b)||(p=((e,t,r,n)=>"Unsatisfied version "+r+" from "+(r&&e[t][r].from)+" of shared singleton module "+t+" (required "+o(n)+")")(r,i,b,u),"undefined"!=typeof console&&console.warn&&console.warn(p)),l(r[i][b]);var p}),b={},p={3345:()=>s("default","react",!1,[1,18,2,0]),3157:()=>u("default","@emotion/react",!1,[1,11,4,1],()=>r.e(58).then(()=>()=>r(7677))),7628:()=>s("default","react-dom",!1,[1,18,2,0]),9443:()=>u("default","@emotion/styled",!1,[1,11,3,0],()=>Promise.all([r.e(744),r.e(868)]).then(()=>()=>r(1868))),2576:()=>s("default","@codemirror/state",!1,[1,6,2,0]),277:()=>s("default","@jupyterlab/cells",!1,[1,4,5,1]),1247:()=>s("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",1]),1409:()=>s("default","@jupyterlab/ui-components",!1,[1,4,5,1]),1805:()=>s("default","@jupyterlab/console",!1,[1,4,5,1]),1907:()=>s("default","@jupyterlab/services",!1,[1,7,5,1]),2780:()=>s("default","@jupyterlab/filebrowser",!1,[1,4,5,1]),3118:()=>s("default","@jupyterlab/rendermime",!1,[1,4,5,1]),3366:()=>s("default","@jupyterlab/launcher",!1,[1,4,5,1]),4849:()=>u("default","diff",!1,[1,9,0,0],()=>r.e(481).then(()=>()=>r(7481))),5584:()=>s("default","@jupyterlab/application",!1,[1,4,5,1]),5690:()=>s("default","@jupyterlab/terminal",!1,[1,4,5,1]),5705:()=>u("default","@lezer/javascript",!1,[1,1,5,5],()=>Promise.all([r.e(421),r.e(166),r.e(708),r.e(839)]).then(()=>()=>r(166))),6580:()=>u("default","@lezer/python",!1,[1,1,1,19],()=>Promise.all([r.e(421),r.e(49),r.e(708),r.e(839)]).then(()=>()=>r(49))),6661:()=>u("default","@mui/material",!1,[1,5,14,0],()=>r.e(68).then(()=>()=>r(3068))),6822:()=>u("default","@codemirror/commands",!1,[4,6,8,1],()=>Promise.all([r.e(353),r.e(708),r.e(11)]).then(()=>()=>r(4353))),7125:()=>s("default","@jupyterlab/docmanager",!1,[1,4,5,1]),7292:()=>s("default","@jupyterlab/coreutils",!1,[1,6,5,1]),8389:()=>s("default","@jupyterlab/notebook",!1,[1,4,5,1]),8454:()=>u("default","@lezer/java",!1,[1,1,1,4],()=>Promise.all([r.e(421),r.e(367),r.e(708),r.e(839)]).then(()=>()=>r(7367))),9827:()=>s("default","@jupyterlab/apputils",!1,[1,4,6,1]),3708:()=>s("default","@lezer/common",!1,[1,1,0,0]),2084:()=>s("default","@codemirror/language",!1,[1,6,0,0]),5024:()=>s("default","@codemirror/view",!1,[1,6,9,6]),2744:()=>u("default","@emotion/react",!1,[1,11,0,0,,"rc",0],()=>Promise.all([r.e(666),r.e(439)]).then(()=>()=>r(7677))),1839:()=>s("default","@lezer/highlight",!1,[1,1,0,0])},h={11:[2084,5024],195:[2576],345:[3345],539:[277,1247,1409,1805,1907,2780,3118,3366,4849,5584,5690,5705,6580,6661,6822,7125,7292,8389,8454,9827],586:[3157,7628,9443],708:[3708],744:[2744],839:[1839]},m={};r.f.consumes=(e,t)=>{r.o(h,e)&&h[e].forEach(e=>{if(r.o(b,e))return t.push(b[e]);if(!m[e]){const o=t=>{b[e]=0,r.m[e]=o=>{delete r.c[e],o.exports=t()}};m[e]=!0;const n=t=>{delete b[e],r.m[e]=o=>{throw delete r.c[e],t}};try{const r=p[e]();r.then?t.push(b[e]=r.then(o).catch(n)):o(r)}catch(e){n(e)}}})}})(),(()=>{r.b="undefined"!=typeof document&&document.baseURI||self.location.href;const e={679:0};r.f.j=(t,o)=>{let n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(/^(11|195|345|586|708|744|839)$/.test(t))e[t]=0;else{const a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);const l=new Error,f=o=>{if(r.o(e,t)&&(n=e[t],0!==n&&(e[t]=void 0),n)){const e=o&&("load"===o.type?"missing":o.type),r=o&&o.target&&o.target.src;l.message="Loading chunk "+t+" failed.\n("+e+": "+r+")",l.name="ChunkLoadError",l.type=e,l.request=r,l.event=o,n[1](l)}};r.l(r.p+r.u(t),f,"chunk-"+t,t)}};const t=(t,o)=>{let[n,a,l]=o;var f,i,c=0;if(n.some(t=>0!==e[t])){for(f in a)r.o(a,f)&&(r.m[f]=a[f]);l&&l(r)}for(t&&t(o);c<n.length;c++)i=n[c],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0},o=self.webpackChunkcodebuff=self.webpackChunkcodebuff||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})(),r.nc=void 0;let o=r(8384);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB).codebuff=o})();
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.5
2
2
  Name: codebuff-agent
3
- Version: 2.1.79
3
+ Version: 2.1.80
4
4
  Summary: Codebuff JupyterLab Extension - Thin client for Agent Server
5
5
  Project-URL: Homepage, https://github.com/lks21c/codebuff
6
6
  Project-URL: Bug Tracker, https://github.com/lks21c/codebuff/issues
@@ -52,14 +52,14 @@ codebuff_core/tests/test_error_recovery.py,sha256=4PUtupKGqdo9d0QxDJN5g15nZ6viOE
52
52
  codebuff_core/tests/test_factory.py,sha256=a0vwB3cWpw8k8xHPUUu1zLeB0Qi6NQ8ZU7A8uN823TE,5459
53
53
  codebuff_core/tests/test_services.py,sha256=WkVtlF6BBUDDlR2bHq76nKWwprHRGytoDm0oUGxq0UU,5271
54
54
  jupyter_ext/__init__.py,sha256=uEctGSnGefquYNNxumXEZZddCyIOO-c1TE7Ahxzo-G4,12214
55
- jupyter_ext/_version.py,sha256=3ivaHzJbUof0ARvEK8APPlBGVNUdA22yWOmhZyrw9ro,172
55
+ jupyter_ext/_version.py,sha256=mNzCGACx80QSXEdx2glHZMlfQhFkL6qwzjPKedzeZcI,172
56
56
  jupyter_ext/analytics_ingest.py,sha256=zxI99h0beD9TXzGH0u7lAnZcIe6HmLbjl7q855ri_To,25069
57
57
  jupyter_ext/apm_ingest.py,sha256=FiBvTK427zt54ygYatAufsCKoupUneQK4PzkSgHugoY,16607
58
58
  jupyter_ext/http_handlers.py,sha256=7lx7_ogYyHaceTtyxqFrzfJzStlF3AMCuRD2892AHFs,318090
59
59
  jupyter_ext/idle_monitor.py,sha256=V8kxTpLYdoj9VqJB-tB33ugi4YSbiflC9IM1kpLwMKo,12783
60
60
  jupyter_ext/log_paths.py,sha256=7jdWpF_uFfuagyHKKv-am_nxbl2t_Ls8K1xVBrG-eBg,3559
61
61
  jupyter_ext/loop_lag.py,sha256=6pcO1Q3v9t5O640sIwETU0JeVZdV_QmohQ8-vwu36Ag,6259
62
- jupyter_ext/pod_identity.py,sha256=fN34Kq02vNGuTj49GooCg0EaSMX5MEKtO2VCp1U2A_k,5216
62
+ jupyter_ext/pod_identity.py,sha256=jHUdyjBpNJbSMjXLQZIRw754I1wNmgb6SURQsGXJX7A,6409
63
63
  jupyter_ext/provider_pii.py,sha256=qY-aKeW3NLbDukEbKc7nswsoq3kPZZGpBMTxmpxyCU8,1942
64
64
  jupyter_ext/resource_usage.py,sha256=yor1jrcN3ULwDMw4pVF04BPA8Z3W1b5kPM7PUprYlXc,19459
65
65
  jupyter_ext/secrets_bootstrap.py,sha256=k3sakJt2DvWIzDwIUrli6720n0wE9xe4TdTSmuqsAlw,7318
@@ -73,7 +73,7 @@ jupyter_ext/agent/background_procs.py,sha256=Pk1CqccDvxxCD9zXO6NUFm6FXjoPlj14wFX
73
73
  jupyter_ext/agent/bg_procs_context.py,sha256=kiMfCsMmi9bzb9xBBCUoIiMMd1DMqYwOelJhZI1T76s,3529
74
74
  jupyter_ext/agent/code_history_middleware.py,sha256=W-rak7oGCP8cj5nsRpapmtbhwu61BYu7uE0vzQwN9SY,7755
75
75
  jupyter_ext/agent/codex_autofix.py,sha256=aNDuzEugzAhQXsMelwmfUgYffREF21jthduaWEfE1hM,7360
76
- jupyter_ext/agent/codex_bridge.py,sha256=l1ju995Lg4NiMK6waYw92S8cQFgLFIfHCgmkJzBa3eQ,327722
76
+ jupyter_ext/agent/codex_bridge.py,sha256=icAxUgDyhNWPggYfmeBwLhF6POtKKc32qzYmKYQw-IU,328658
77
77
  jupyter_ext/agent/codex_hooks.py,sha256=S0QCxzLYvmAUJKNFaX8e38P3orEaLWpxiFPKipOs4Wc,15446
78
78
  jupyter_ext/agent/codex_prefs.py,sha256=WvwwY8wnsvwvcinMZU6xdQiAPMIPXxhWGVJJlK-K2BY,7906
79
79
  jupyter_ext/agent/codex_slash.py,sha256=d_BUJ5fVbUdq7TsbGVSfdFB_OZ1ksojcfrTBJnJBknw,68889
@@ -143,7 +143,7 @@ jupyter_ext/handlers/apm_handler.py,sha256=afBov2_XPxlrZ6DCp6dqfIs-GFqPmfE5eUllr
143
143
  jupyter_ext/handlers/rag_admin_handler.py,sha256=C4MqVLIyweR34dDot9NkUgFxl_iOi0mxuU2PotFh9WA,3068
144
144
  jupyter_ext/handlers/websocket.py,sha256=jGJFRi_Url5RzBqRWvH72fXPP0ekb-WrQVx2xqTm-Pc,16604
145
145
  jupyter_ext/lab/settings/overrides.d/codebuff.json,sha256=3n2FDnLgE0aKOyn45RvyKWZKBpz7bvoA5QtxQLyM4a0,122
146
- jupyter_ext/labextension/package.json,sha256=R1VlI8ZyVYMqpId8jXRt7KHvJvvluf7thj9qnMlwDFw,5201
146
+ jupyter_ext/labextension/package.json,sha256=5P38ASR7VGBXobDHggfwPfUo___8rwet7_mCFrceNQs,5201
147
147
  jupyter_ext/labextension/static/166.386ff9b2c37ac865fdee.js,sha256=OG_5ssN6yGX97ihImIjeu0ictpfioowYcR9Ay3qyC8o,78037
148
148
  jupyter_ext/labextension/static/351.e796b81287b53635cfa4.js,sha256=55a4Eoe1NjXPpP-i_vx90AdC8ghpyfy8640qFyf_cqQ,100173
149
149
  jupyter_ext/labextension/static/353.581bd1cb00746399b62e.js,sha256=WBvRywB0Y5m2Li0E6i184sCcKBi_rVXSDJ2cjTCpmZo,28894
@@ -165,7 +165,7 @@ jupyter_ext/labextension/static/677.d266c39dbed33bc388b3.js,sha256=5p_TSXMsQ26sJ
165
165
  jupyter_ext/labextension/static/677.d266c39dbed33bc388b3.js.LICENSE.txt,sha256=lqUlGHhVY3z3mcV-sTwREZRm1KQ7maSiV6-Gm8RSQNY,246
166
166
  jupyter_ext/labextension/static/68.26b6f59c8454adb17f20.js,sha256=Jrb1nIRUrbF_IEXU7CJRLbiRG9uNVBTOcPpYVYyD0t8,484028
167
167
  jupyter_ext/labextension/static/868.5cfe7e1a348ec5af1b8c.js,sha256=XP5-GjSOxa8bjNK9wNbZQqz14rF2h8P0J3LsRwC5o10,7933
168
- jupyter_ext/labextension/static/remoteEntry.85fc9c6c88a0f6b87109.js,sha256=hfycbIig9rhxCXDJJ1YjTSXKZ8ErjeECAGkfTwAzVGI,12078
168
+ jupyter_ext/labextension/static/remoteEntry.92bab6f54fc5da41a521.js,sha256=krq29U_F2kGlIdF7hXR3usoRdBq0IgmhJAjw5yn501Y,12078
169
169
  jupyter_ext/labextension/static/style.js,sha256=MorHEvkG0Oe-uZ7t7oFa5X01nqPLFSwlC2attA72Jr8,161
170
170
  jupyter_ext/labextension/static/third-party-licenses.json,sha256=luwtTWx15amrLYftafSAMx2ZV1sp32gCs_uslfNrf9Y,65553
171
171
  jupyter_ext/tests/__init__.py,sha256=JuO3lX7V7YfonXc_fuVQmxJcKklSq4orTEcdOuZrX8g,37
@@ -188,34 +188,34 @@ jupyter_ext/tools/search_tools.py,sha256=OZH3L-6LkcBKiQrtQqxWoSdDH0YUg2d9a2y5nQ-
188
188
  jupyter_ext/tools/security_tools.py,sha256=o-POr5BewXieuRJKli8kNC2KSLJos2GQb-70y_UHpVo,23556
189
189
  jupyter_ext/tools/shell_tools.py,sha256=lD57Vzqof81MXeLWUH6TqsjiyU_z1aY5Uj1riRFz_zU,3537
190
190
  jupyter_ext/tools/user_tools.py,sha256=xDsSBavDn7yc1iw71q0JnfMb7h_t35hcdQUlZPsNFSQ,4544
191
- codebuff_agent-2.1.79.data/data/etc/jupyter/jupyter_server_config.d/codebuff_agent.json,sha256=KXCyKfoeM1OxdPWa0wL2plndcqJkQ7ke3UaF0tJpMW0,86
192
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/package.json,sha256=R1VlI8ZyVYMqpId8jXRt7KHvJvvluf7thj9qnMlwDFw,5201
193
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/166.386ff9b2c37ac865fdee.js,sha256=OG_5ssN6yGX97ihImIjeu0ictpfioowYcR9Ay3qyC8o,78037
194
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/351.e796b81287b53635cfa4.js,sha256=55a4Eoe1NjXPpP-i_vx90AdC8ghpyfy8640qFyf_cqQ,100173
195
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/353.581bd1cb00746399b62e.js,sha256=WBvRywB0Y5m2Li0E6i184sCcKBi_rVXSDJ2cjTCpmZo,28894
196
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/367.575f9621b63c9a641aa9.js,sha256=V1-WIbY8mmQaqaP99vIxQUsz77L2DTFp0UUYGgdg-rA,39717
197
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/421.11dac223a2c2da1b09f5.js,sha256=EdrCI6LC2hsJ9e4JHW5s1GRClkmWZRw54TCbnEZayms,28308
198
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/432.a749eb54fdc324b18cfa.js,sha256=xa_7EXIvUGWlFbtFcZj3HwoRAElOX2NaEAvw0rAKni4,44883
199
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/432.a749eb54fdc324b18cfa.js.LICENSE.txt,sha256=mlhymahwls4499g-vGLVU9Lxqw3zTOvv42ZLrJkGXbM,488
200
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/439.ba5b5ef70ec6de214b8c.js,sha256=jvm4vHxAXO-fZoVqZqnx4qUuz-23MdavPCVB2zdHr5c,7497
201
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/439.ba5b5ef70ec6de214b8c.js.LICENSE.txt,sha256=lqUlGHhVY3z3mcV-sTwREZRm1KQ7maSiV6-Gm8RSQNY,246
202
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/481.cc2dec9fa869d66f1407.js,sha256=zC3sn6hp1m8UBx3gqzUz-02FaorPolqH7yKeK_ofIEg,23159
203
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/487.0796e931d6e651482c14.js,sha256=B5bpMdbmUUgsFL7SCWiFcY9EYp2MQsWSysVsPCqCZzE,11375
204
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/49.d326f554b6f9ccde6580.js,sha256=0yb1VLb5zN5lgFN8HZpkBbuBaQUeuJe7U5Ec-0qebY0,37796
205
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/539.3024c7f70ce4db9b6428.js,sha256=MCTH9wzk25tkKEiKeBfu63xM4fdSfWYwG62W4vC0Wto,415956
206
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/579.3bc73eef11d3e0ce5d0c.js,sha256=O8c-7xHT4M5dDN_QaLAXOv1vNvMgcdiK_57YCDZEyJI,192647
207
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/58.eb7cc679f7535cc8a2f1.js,sha256=gdv-HEOQWn46_6fkKzIqx26GrfKOa62aodnM1trD5nU,8080
208
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/58.eb7cc679f7535cc8a2f1.js.LICENSE.txt,sha256=lqUlGHhVY3z3mcV-sTwREZRm1KQ7maSiV6-Gm8RSQNY,246
209
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/666.d9bfdb23f98489d0a188.js,sha256=2b_bI_mEidChiCaENfxTQtkswntodquGofjBXhN8--g,9718
210
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/677.d266c39dbed33bc388b3.js,sha256=5p_TSXMsQ26sJcaw40hTChjum9MCOguSwMPR6wRqTE8,11523
211
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/677.d266c39dbed33bc388b3.js.LICENSE.txt,sha256=lqUlGHhVY3z3mcV-sTwREZRm1KQ7maSiV6-Gm8RSQNY,246
212
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/68.26b6f59c8454adb17f20.js,sha256=Jrb1nIRUrbF_IEXU7CJRLbiRG9uNVBTOcPpYVYyD0t8,484028
213
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/868.5cfe7e1a348ec5af1b8c.js,sha256=XP5-GjSOxa8bjNK9wNbZQqz14rF2h8P0J3LsRwC5o10,7933
214
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/remoteEntry.85fc9c6c88a0f6b87109.js,sha256=hfycbIig9rhxCXDJJ1YjTSXKZ8ErjeECAGkfTwAzVGI,12078
215
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/style.js,sha256=MorHEvkG0Oe-uZ7t7oFa5X01nqPLFSwlC2attA72Jr8,161
216
- codebuff_agent-2.1.79.data/data/share/jupyter/labextensions/codebuff/static/third-party-licenses.json,sha256=luwtTWx15amrLYftafSAMx2ZV1sp32gCs_uslfNrf9Y,65553
217
- codebuff_agent-2.1.79.data/data/share/jupyter/lab/settings/overrides.d/codebuff.json,sha256=3n2FDnLgE0aKOyn45RvyKWZKBpz7bvoA5QtxQLyM4a0,122
218
- codebuff_agent-2.1.79.dist-info/METADATA,sha256=6GN1CXS32Xyt90ZmIQ-ejOGlLxbqgEIVzl725RDfT1A,4314
219
- codebuff_agent-2.1.79.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
220
- codebuff_agent-2.1.79.dist-info/licenses/LICENSE,sha256=LZnhgcr8NXVgC4ewcnNjWlYahaIS_KLMxKWDCZkHpQo,1061
221
- codebuff_agent-2.1.79.dist-info/RECORD,,
191
+ codebuff_agent-2.1.80.data/data/etc/jupyter/jupyter_server_config.d/codebuff_agent.json,sha256=KXCyKfoeM1OxdPWa0wL2plndcqJkQ7ke3UaF0tJpMW0,86
192
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/package.json,sha256=5P38ASR7VGBXobDHggfwPfUo___8rwet7_mCFrceNQs,5201
193
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/166.386ff9b2c37ac865fdee.js,sha256=OG_5ssN6yGX97ihImIjeu0ictpfioowYcR9Ay3qyC8o,78037
194
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/351.e796b81287b53635cfa4.js,sha256=55a4Eoe1NjXPpP-i_vx90AdC8ghpyfy8640qFyf_cqQ,100173
195
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/353.581bd1cb00746399b62e.js,sha256=WBvRywB0Y5m2Li0E6i184sCcKBi_rVXSDJ2cjTCpmZo,28894
196
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/367.575f9621b63c9a641aa9.js,sha256=V1-WIbY8mmQaqaP99vIxQUsz77L2DTFp0UUYGgdg-rA,39717
197
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/421.11dac223a2c2da1b09f5.js,sha256=EdrCI6LC2hsJ9e4JHW5s1GRClkmWZRw54TCbnEZayms,28308
198
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/432.a749eb54fdc324b18cfa.js,sha256=xa_7EXIvUGWlFbtFcZj3HwoRAElOX2NaEAvw0rAKni4,44883
199
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/432.a749eb54fdc324b18cfa.js.LICENSE.txt,sha256=mlhymahwls4499g-vGLVU9Lxqw3zTOvv42ZLrJkGXbM,488
200
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/439.ba5b5ef70ec6de214b8c.js,sha256=jvm4vHxAXO-fZoVqZqnx4qUuz-23MdavPCVB2zdHr5c,7497
201
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/439.ba5b5ef70ec6de214b8c.js.LICENSE.txt,sha256=lqUlGHhVY3z3mcV-sTwREZRm1KQ7maSiV6-Gm8RSQNY,246
202
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/481.cc2dec9fa869d66f1407.js,sha256=zC3sn6hp1m8UBx3gqzUz-02FaorPolqH7yKeK_ofIEg,23159
203
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/487.0796e931d6e651482c14.js,sha256=B5bpMdbmUUgsFL7SCWiFcY9EYp2MQsWSysVsPCqCZzE,11375
204
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/49.d326f554b6f9ccde6580.js,sha256=0yb1VLb5zN5lgFN8HZpkBbuBaQUeuJe7U5Ec-0qebY0,37796
205
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/539.3024c7f70ce4db9b6428.js,sha256=MCTH9wzk25tkKEiKeBfu63xM4fdSfWYwG62W4vC0Wto,415956
206
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/579.3bc73eef11d3e0ce5d0c.js,sha256=O8c-7xHT4M5dDN_QaLAXOv1vNvMgcdiK_57YCDZEyJI,192647
207
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/58.eb7cc679f7535cc8a2f1.js,sha256=gdv-HEOQWn46_6fkKzIqx26GrfKOa62aodnM1trD5nU,8080
208
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/58.eb7cc679f7535cc8a2f1.js.LICENSE.txt,sha256=lqUlGHhVY3z3mcV-sTwREZRm1KQ7maSiV6-Gm8RSQNY,246
209
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/666.d9bfdb23f98489d0a188.js,sha256=2b_bI_mEidChiCaENfxTQtkswntodquGofjBXhN8--g,9718
210
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/677.d266c39dbed33bc388b3.js,sha256=5p_TSXMsQ26sJcaw40hTChjum9MCOguSwMPR6wRqTE8,11523
211
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/677.d266c39dbed33bc388b3.js.LICENSE.txt,sha256=lqUlGHhVY3z3mcV-sTwREZRm1KQ7maSiV6-Gm8RSQNY,246
212
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/68.26b6f59c8454adb17f20.js,sha256=Jrb1nIRUrbF_IEXU7CJRLbiRG9uNVBTOcPpYVYyD0t8,484028
213
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/868.5cfe7e1a348ec5af1b8c.js,sha256=XP5-GjSOxa8bjNK9wNbZQqz14rF2h8P0J3LsRwC5o10,7933
214
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/remoteEntry.92bab6f54fc5da41a521.js,sha256=krq29U_F2kGlIdF7hXR3usoRdBq0IgmhJAjw5yn501Y,12078
215
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/style.js,sha256=MorHEvkG0Oe-uZ7t7oFa5X01nqPLFSwlC2attA72Jr8,161
216
+ codebuff_agent-2.1.80.data/data/share/jupyter/labextensions/codebuff/static/third-party-licenses.json,sha256=luwtTWx15amrLYftafSAMx2ZV1sp32gCs_uslfNrf9Y,65553
217
+ codebuff_agent-2.1.80.data/data/share/jupyter/lab/settings/overrides.d/codebuff.json,sha256=3n2FDnLgE0aKOyn45RvyKWZKBpz7bvoA5QtxQLyM4a0,122
218
+ codebuff_agent-2.1.80.dist-info/METADATA,sha256=aMvBk2ytEAiS6sJkcKAvP05AN8ODMNAlMprzjOsSqPU,4314
219
+ codebuff_agent-2.1.80.dist-info/WHEEL,sha256=W3fkpkm7-wf9vBI5Z-7s0eWkeM-spu78I8Neb98DeEg,87
220
+ codebuff_agent-2.1.80.dist-info/licenses/LICENSE,sha256=LZnhgcr8NXVgC4ewcnNjWlYahaIS_KLMxKWDCZkHpQo,1061
221
+ codebuff_agent-2.1.80.dist-info/RECORD,,
jupyter_ext/_version.py CHANGED
@@ -1,4 +1,4 @@
1
1
  # This file is auto-generated by Hatchling. As such, do not:
2
2
  # - modify
3
3
  # - track in version control e.g. be sure to add to .gitignore
4
- __version__ = VERSION = '2.1.79'
4
+ __version__ = VERSION = '2.1.80'
@@ -1734,6 +1734,8 @@ _EMP_MISMATCH_CAUSES = {
1734
1734
  "mismatch": "로그인한 사번({token})이 이 pod 의 사번({pod})과 다릅니다",
1735
1735
  "no_token": "로그인 토큰이 없어 사번을 확인하지 못했습니다",
1736
1736
  "no_claim": "로그인 토큰에 사번({claim})이 없습니다",
1737
+ "env_mismatch": "pod 환경변수의 사번({token})이 pod 이름의 사번({pod})과 다릅니다",
1738
+ "no_env_emp": "pod 환경변수({claim})에 사번이 없습니다",
1737
1739
  }
1738
1740
 
1739
1741
 
@@ -2637,8 +2639,10 @@ def make_codex_transport(
2637
2639
 
2638
2640
  from ..pod_identity import (
2639
2641
  ACCESS_TOKEN_HEADER,
2642
+ EMP_ENVS,
2640
2643
  connect_identity,
2641
2644
  emp_claim_name,
2645
+ env_emp_check,
2642
2646
  has_request_token,
2643
2647
  pod_name,
2644
2648
  request_claims,
@@ -2649,12 +2653,24 @@ def make_codex_transport(
2649
2653
  if pod_identity is None:
2650
2654
  return WebSocketTransport(url, headers, CodexPodIdentityMissing(pod_name()))
2651
2655
  if pod_identity:
2656
+ # pod 이름 사번 = 사번 환경변수 (이슈 #628) — 허용 목록과 전용 role 이 같은 사람을 본다
2657
+ env_result, env_emp = env_emp_check(pod_identity["emp_no"])
2658
+ if env_result != "match":
2659
+ return WebSocketTransport(
2660
+ url,
2661
+ headers,
2662
+ CodexPodIdentityMismatch(
2663
+ env_result, pod_identity["emp_no"], env_emp, "·".join(EMP_ENVS)
2664
+ ),
2665
+ )
2666
+ if pod_identity and not has_request_token():
2667
+ # 헤더가 없으면 대조를 건너뛴다 (이슈 #625) — 개발계는 인증 프록시가 헤더를 pod 까지
2668
+ # 넘기지 않는다. 헤더가 오기 시작하면 아래 대조가 그대로 켜진다
2669
+ logger.warning("pod 주인 대조: %s 헤더 없음 — 건너뜀", ACCESS_TOKEN_HEADER)
2670
+ elif pod_identity:
2652
2671
  # 접속한 사람이 pod 주인인지 요청 헤더 토큰의 사번으로 대조한다 (이슈 #617·#623).
2653
2672
  # local 은 신원이 없다. 헤더가 오는지만 남긴다 — 토큰 값은 로그에 싣지 않는다
2654
- if has_request_token():
2655
- logger.info("pod 주인 대조: %s 헤더 있음", ACCESS_TOKEN_HEADER)
2656
- else:
2657
- logger.warning("pod 주인 대조: %s 헤더 없음 — 거부", ACCESS_TOKEN_HEADER)
2673
+ logger.info("pod 주인 대조: %s 헤더 있음", ACCESS_TOKEN_HEADER)
2658
2674
  result = token_emp_check(pod_identity["emp_no"])
2659
2675
  if result != "match":
2660
2676
  claim = emp_claim_name()
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codebuff",
3
- "version": "2.1.79",
3
+ "version": "2.1.80",
4
4
  "description": "Codebuff JupyterLab Extension - Thin client for Agent Server",
5
5
  "keywords": [
6
6
  "jupyter",
@@ -146,7 +146,7 @@
146
146
  }
147
147
  },
148
148
  "_build": {
149
- "load": "static/remoteEntry.85fc9c6c88a0f6b87109.js",
149
+ "load": "static/remoteEntry.92bab6f54fc5da41a521.js",
150
150
  "extension": "./extension",
151
151
  "style": "./style"
152
152
  }
@@ -1 +1 @@
1
- var _JUPYTERLAB;(()=>{"use strict";var e={8384(e,t,r){const o={"./index":()=>Promise.all([r.e(666),r.e(432),r.e(351),r.e(345),r.e(586),r.e(195),r.e(539)]).then(()=>()=>r(5539)),"./extension":()=>Promise.all([r.e(666),r.e(432),r.e(351),r.e(345),r.e(586),r.e(195),r.e(539)]).then(()=>()=>r(5539)),"./style":()=>r.e(579).then(()=>()=>r(6579))},n=(e,t)=>(r.R=t,t=r.o(o,e)?o[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t),a=(e,t)=>{if(!r.S)return;const o="default",n=r.S[o];if(n&&n!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return r.S[o]=e,r.I(o,t)};r.d(t,{get:()=>n,init:()=>a})}};const t={};function r(o){const n=t[o];if(void 0!==n)return n.exports;const a=t[o]={id:o,exports:{}};return e[o](a,a.exports,r),a.exports}r.m=e,r.c=t,r.n=e=>{const t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.cw=e=>{var t;return()=>{if(e){var r=e;e=0,t={exports:{}},r.call(t.exports,t,t.exports)}return t.exports}},(()=>{const e=Object.getPrototypeOf;let t;r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}const a=Object.create(null);r.r(a);const l={};t=t||[null,e({}),e([]),e(e)];for(var f=2&n&&o;("object"==typeof f||"function"==typeof f)&&!~t.indexOf(f);f=e(f))Object.getOwnPropertyNames(f).forEach(e=>l[e]=()=>o[e]);return l.default=()=>o,r.d(a,l),a}})(),r.d=(e,t)=>{if(Array.isArray(t))for(var o=0;o<t.length;){var n=t[o++],a=t[o++],l=0===a?{enumerable:!0,value:t[o++]}:{enumerable:!0,get:a};r.o(e,n)||Object.defineProperty(e,n,l)}else for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>e+"."+{49:"d326f554b6f9ccde6580",58:"eb7cc679f7535cc8a2f1",68:"26b6f59c8454adb17f20",166:"386ff9b2c37ac865fdee",351:"e796b81287b53635cfa4",353:"581bd1cb00746399b62e",367:"575f9621b63c9a641aa9",421:"11dac223a2c2da1b09f5",432:"a749eb54fdc324b18cfa",439:"ba5b5ef70ec6de214b8c",481:"cc2dec9fa869d66f1407",487:"0796e931d6e651482c14",539:"3024c7f70ce4db9b6428",579:"3bc73eef11d3e0ce5d0c",666:"d9bfdb23f98489d0a188",677:"d266c39dbed33bc388b3",868:"5cfe7e1a348ec5af1b8c"}[e]+".js?v="+{49:"d326f554b6f9ccde6580",58:"eb7cc679f7535cc8a2f1",68:"26b6f59c8454adb17f20",166:"386ff9b2c37ac865fdee",351:"e796b81287b53635cfa4",353:"581bd1cb00746399b62e",367:"575f9621b63c9a641aa9",421:"11dac223a2c2da1b09f5",432:"a749eb54fdc324b18cfa",439:"ba5b5ef70ec6de214b8c",481:"cc2dec9fa869d66f1407",487:"0796e931d6e651482c14",539:"3024c7f70ce4db9b6428",579:"3bc73eef11d3e0ce5d0c",666:"d9bfdb23f98489d0a188",677:"d266c39dbed33bc388b3",868:"5cfe7e1a348ec5af1b8c"}[e],r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="codebuff:";r.l=(o,n,a,l)=>{if(e[o])return void e[o].push(n);let f,i;if(void 0!==a){const e=document.getElementsByTagName("script");for(var c=0;c<e.length;c++){const r=e[c];if(r.getAttribute("src")==o||r.getAttribute("data-webpack")==t+a){f=r;break}}}f||(i=!0,f=document.createElement("script"),f.charset="utf-8",r.nc&&f.setAttribute("nonce",r.nc),f.setAttribute("data-webpack",t+a),f.src=o),e[o]=[n];const d=(t,r)=>{f.onerror=f.onload=null,clearTimeout(u);const n=e[o];if(delete e[o],f.parentNode?.removeChild(f),n?.forEach(e=>e(r)),t)return t(r)},u=setTimeout(d.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=d.bind(null,f.onerror),f.onload=d.bind(null,f.onload),i&&document.head.appendChild(f)}})(),r.r=e=>{Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.dn=e=>{var t=Object.getOwnPropertyDescriptor(e,"name");(!t||!t.writable&&t.configurable)&&Object.defineProperty(e,"name",{value:"default",configurable:!0})},(()=>{r.S={};const e={},t={};r.I=(o,n)=>{n||(n=[]);let a=t[o];if(a||(a=t[o]={}),n.indexOf(a)>=0)return;if(n.push(a),e[o])return e[o];r.o(r.S,o)||(r.S[o]={});const l=r.S[o],f="codebuff",i=(e,t,r,o)=>{const n=l[e]=l[e]||{},a=n[t];(!a||!a.loaded&&(!o!=!a.eager?o:f>a.from))&&(n[t]={get:r,from:f,eager:!!o})},c=[];return"default"===o&&(i("@codemirror/commands","6.8.1",()=>Promise.all([r.e(353),r.e(708),r.e(11),r.e(195)]).then(()=>()=>r(4353))),i("@emotion/react","11.14.0",()=>Promise.all([r.e(666),r.e(345),r.e(677)]).then(()=>()=>r(7677))),i("@emotion/styled","11.14.1",()=>Promise.all([r.e(345),r.e(744),r.e(487)]).then(()=>()=>r(1868))),i("@lezer/java","1.1.4",()=>Promise.all([r.e(421),r.e(367),r.e(708),r.e(839)]).then(()=>()=>r(7367))),i("@lezer/javascript","1.5.5",()=>Promise.all([r.e(421),r.e(166),r.e(708),r.e(839)]).then(()=>()=>r(166))),i("@lezer/python","1.1.19",()=>Promise.all([r.e(421),r.e(49),r.e(708),r.e(839)]).then(()=>()=>r(49))),i("@mui/material","5.18.0",()=>Promise.all([r.e(666),r.e(68),r.e(432),r.e(345),r.e(586)]).then(()=>()=>r(3068))),i("codebuff","2.1.79",()=>Promise.all([r.e(666),r.e(432),r.e(351),r.e(345),r.e(586),r.e(195),r.e(539)]).then(()=>()=>r(5539))),i("diff","0",()=>r.e(481).then(()=>()=>r(7481)))),e[o]=c.length?Promise.all(c).then(()=>e[o]=1):1}})(),(()=>{let e;r.g.importScripts&&(e=r.g.location+"");const t=r.g.document;if(!e&&t&&("SCRIPT"===t.currentScript?.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){const r=t.getElementsByTagName("script");if(r.length){let t=r.length-1;for(;t>-1&&(!e||!/^https?:/.test(e));)e=r[t--].src}}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:|[?#].*$/g,"").replace(/\/[^/]+$/,"/"),r.p=e})(),(()=>{var e=e=>{var t=e=>e.split(".").map(e=>+e==e?+e:e),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),o=r[1]?t(r[1]):[];return r[2]&&(o.length++,o.push.apply(o,t(r[2]))),r[3]&&(o.push([]),o.push.apply(o,t(r[3]))),o},t=(t,r)=>{t=e(t),r=e(r);for(var o=0;;){if(o>=t.length)return o<r.length&&"u"!=(typeof r[o])[0];var n=t[o],a=(typeof n)[0];if(o>=r.length)return"u"==a;var l=r[o],f=(typeof l)[0];if(a!=f)return"o"==a&&"n"==f||"s"==f||"u"==a;if("o"!=a&&"u"!=a&&n!=l)return n<l;o++}},o=e=>{var t=e[0],r="";if(1===e.length)return"*";if(t+.5){r+=0==t?">=":-1==t?"<":1==t?"^":2==t?"~":t>0?"=":"!=";for(var n=1,a=1;a<e.length;a++)n--,r+="u"==(typeof(f=e[a]))[0]?"-":(n>0?".":"")+(n=2,f);return r}var l=[];for(a=1;a<e.length;a++){var f=e[a];l.push(0===f?"not("+i()+")":1===f?"("+i()+" || "+i()+")":2===f?l.pop()+" "+l.pop():o(f))}return i();function i(){return l.pop().replace(/^\((.+)\)$/,"$1")}},n=(t,r)=>{if(0 in t){r=e(r);var o=t[0],a=o<0;a&&(o=-o-1);for(var l=0,f=1,i=!0;;f++,l++){var c,d,u=f<t.length?(typeof t[f])[0]:"";if(l>=r.length||"o"==(d=(typeof(c=r[l]))[0]))return!i||("u"==u?f>o&&!a:""==u!=a);if("u"==d){if(!i||"u"!=u)return!1}else if(i)if(u==d)if(f<=o){if(c!=t[f])return!1}else{if(a?c>t[f]:c<t[f])return!1;c!=t[f]&&(i=!1)}else if("s"!=u&&"n"!=u){if(a||f<=o)return!1;i=!1,f--}else{if(f<=o||d<u!=a)return!1;i=!1}else"s"!=u&&"n"!=u&&(i=!1,f--)}}var s=[],b=s.pop.bind(s);for(l=1;l<t.length;l++){var p=t[l];s.push(1==p?b()|b():2==p?b()&b():p?n(p,r):!b())}return!!b()};const a=(e,t)=>e&&r.o(e,t),l=e=>(e.loaded=1,e.get()),f=e=>Object.keys(e).reduce((t,r)=>(e[r].eager&&(t[r]=e[r]),t),{}),i=e=>{throw new Error(e)},c=e=>function(t,o,n,a,l){const f=r.I(t);return f?.then&&!n?f.then(e.bind(e,t,r.S[t],o,!1,a,l)):e(t,r.S[t],o,n,a,l)},d=(e,t,r)=>r?r():((e,t)=>i("Shared module "+t+" doesn't exist in shared scope "+e))(e,t),u=c((e,r,c,u,s,b)=>{if(!a(r,c))return d(e,c,b);const p=((e,r,o,a)=>{const l=a?f(e[r]):e[r];return(r=Object.keys(l).reduce((e,r)=>!n(o,r)||e&&!t(e,r)?e:r,0))&&l[r]})(r,c,s,u);return p?l(p):b?b():void i(((e,t,r,n,a)=>{const l=e[r];return"No satisfying version ("+o(n)+")"+(a?" for eager consumption":"")+" of shared module "+r+" found in shared scope "+t+".\nAvailable versions: "+Object.keys(l).map(e=>e+" from "+l[e].from).join(", ")})(r,e,c,s,u))}),s=c((e,r,i,c,u,s)=>{if(!a(r,i))return d(e,i,s);const b=((e,r,o)=>{const n=o?f(e[r]):e[r];return Object.keys(n).reduce((e,r)=>!e||!n[e].loaded&&t(e,r)?r:e,0)})(r,i,c);return n(u,b)||(p=((e,t,r,n)=>"Unsatisfied version "+r+" from "+(r&&e[t][r].from)+" of shared singleton module "+t+" (required "+o(n)+")")(r,i,b,u),"undefined"!=typeof console&&console.warn&&console.warn(p)),l(r[i][b]);var p}),b={},p={3345:()=>s("default","react",!1,[1,18,2,0]),3157:()=>u("default","@emotion/react",!1,[1,11,4,1],()=>r.e(58).then(()=>()=>r(7677))),7628:()=>s("default","react-dom",!1,[1,18,2,0]),9443:()=>u("default","@emotion/styled",!1,[1,11,3,0],()=>Promise.all([r.e(744),r.e(868)]).then(()=>()=>r(1868))),2576:()=>s("default","@codemirror/state",!1,[1,6,2,0]),277:()=>s("default","@jupyterlab/cells",!1,[1,4,5,1]),1247:()=>s("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",1]),1409:()=>s("default","@jupyterlab/ui-components",!1,[1,4,5,1]),1805:()=>s("default","@jupyterlab/console",!1,[1,4,5,1]),1907:()=>s("default","@jupyterlab/services",!1,[1,7,5,1]),2780:()=>s("default","@jupyterlab/filebrowser",!1,[1,4,5,1]),3118:()=>s("default","@jupyterlab/rendermime",!1,[1,4,5,1]),3366:()=>s("default","@jupyterlab/launcher",!1,[1,4,5,1]),4849:()=>u("default","diff",!1,[1,9,0,0],()=>r.e(481).then(()=>()=>r(7481))),5584:()=>s("default","@jupyterlab/application",!1,[1,4,5,1]),5690:()=>s("default","@jupyterlab/terminal",!1,[1,4,5,1]),5705:()=>u("default","@lezer/javascript",!1,[1,1,5,5],()=>Promise.all([r.e(421),r.e(166),r.e(708),r.e(839)]).then(()=>()=>r(166))),6580:()=>u("default","@lezer/python",!1,[1,1,1,19],()=>Promise.all([r.e(421),r.e(49),r.e(708),r.e(839)]).then(()=>()=>r(49))),6661:()=>u("default","@mui/material",!1,[1,5,14,0],()=>r.e(68).then(()=>()=>r(3068))),6822:()=>u("default","@codemirror/commands",!1,[4,6,8,1],()=>Promise.all([r.e(353),r.e(708),r.e(11)]).then(()=>()=>r(4353))),7125:()=>s("default","@jupyterlab/docmanager",!1,[1,4,5,1]),7292:()=>s("default","@jupyterlab/coreutils",!1,[1,6,5,1]),8389:()=>s("default","@jupyterlab/notebook",!1,[1,4,5,1]),8454:()=>u("default","@lezer/java",!1,[1,1,1,4],()=>Promise.all([r.e(421),r.e(367),r.e(708),r.e(839)]).then(()=>()=>r(7367))),9827:()=>s("default","@jupyterlab/apputils",!1,[1,4,6,1]),3708:()=>s("default","@lezer/common",!1,[1,1,0,0]),2084:()=>s("default","@codemirror/language",!1,[1,6,0,0]),5024:()=>s("default","@codemirror/view",!1,[1,6,9,6]),2744:()=>u("default","@emotion/react",!1,[1,11,0,0,,"rc",0],()=>Promise.all([r.e(666),r.e(439)]).then(()=>()=>r(7677))),1839:()=>s("default","@lezer/highlight",!1,[1,1,0,0])},h={11:[2084,5024],195:[2576],345:[3345],539:[277,1247,1409,1805,1907,2780,3118,3366,4849,5584,5690,5705,6580,6661,6822,7125,7292,8389,8454,9827],586:[3157,7628,9443],708:[3708],744:[2744],839:[1839]},m={};r.f.consumes=(e,t)=>{r.o(h,e)&&h[e].forEach(e=>{if(r.o(b,e))return t.push(b[e]);if(!m[e]){const o=t=>{b[e]=0,r.m[e]=o=>{delete r.c[e],o.exports=t()}};m[e]=!0;const n=t=>{delete b[e],r.m[e]=o=>{throw delete r.c[e],t}};try{const r=p[e]();r.then?t.push(b[e]=r.then(o).catch(n)):o(r)}catch(e){n(e)}}})}})(),(()=>{r.b="undefined"!=typeof document&&document.baseURI||self.location.href;const e={679:0};r.f.j=(t,o)=>{let n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(/^(11|195|345|586|708|744|839)$/.test(t))e[t]=0;else{const a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);const l=new Error,f=o=>{if(r.o(e,t)&&(n=e[t],0!==n&&(e[t]=void 0),n)){const e=o&&("load"===o.type?"missing":o.type),r=o&&o.target&&o.target.src;l.message="Loading chunk "+t+" failed.\n("+e+": "+r+")",l.name="ChunkLoadError",l.type=e,l.request=r,l.event=o,n[1](l)}};r.l(r.p+r.u(t),f,"chunk-"+t,t)}};const t=(t,o)=>{let[n,a,l]=o;var f,i,c=0;if(n.some(t=>0!==e[t])){for(f in a)r.o(a,f)&&(r.m[f]=a[f]);l&&l(r)}for(t&&t(o);c<n.length;c++)i=n[c],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0},o=self.webpackChunkcodebuff=self.webpackChunkcodebuff||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})(),r.nc=void 0;let o=r(8384);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB).codebuff=o})();
1
+ var _JUPYTERLAB;(()=>{"use strict";var e={8384(e,t,r){const o={"./index":()=>Promise.all([r.e(666),r.e(432),r.e(351),r.e(345),r.e(586),r.e(195),r.e(539)]).then(()=>()=>r(5539)),"./extension":()=>Promise.all([r.e(666),r.e(432),r.e(351),r.e(345),r.e(586),r.e(195),r.e(539)]).then(()=>()=>r(5539)),"./style":()=>r.e(579).then(()=>()=>r(6579))},n=(e,t)=>(r.R=t,t=r.o(o,e)?o[e]():Promise.resolve().then(()=>{throw new Error('Module "'+e+'" does not exist in container.')}),r.R=void 0,t),a=(e,t)=>{if(!r.S)return;const o="default",n=r.S[o];if(n&&n!==e)throw new Error("Container initialization failed as it has already been initialized with a different share scope");return r.S[o]=e,r.I(o,t)};r.d(t,{get:()=>n,init:()=>a})}};const t={};function r(o){const n=t[o];if(void 0!==n)return n.exports;const a=t[o]={id:o,exports:{}};return e[o](a,a.exports,r),a.exports}r.m=e,r.c=t,r.n=e=>{const t=e&&e.__esModule?()=>e.default:()=>e;return r.d(t,{a:t}),t},r.cw=e=>{var t;return()=>{if(e){var r=e;e=0,t={exports:{}},r.call(t.exports,t,t.exports)}return t.exports}},(()=>{const e=Object.getPrototypeOf;let t;r.t=function(o,n){if(1&n&&(o=this(o)),8&n)return o;if("object"==typeof o&&o){if(4&n&&o.__esModule)return o;if(16&n&&"function"==typeof o.then)return o}const a=Object.create(null);r.r(a);const l={};t=t||[null,e({}),e([]),e(e)];for(var f=2&n&&o;("object"==typeof f||"function"==typeof f)&&!~t.indexOf(f);f=e(f))Object.getOwnPropertyNames(f).forEach(e=>l[e]=()=>o[e]);return l.default=()=>o,r.d(a,l),a}})(),r.d=(e,t)=>{if(Array.isArray(t))for(var o=0;o<t.length;){var n=t[o++],a=t[o++],l=0===a?{enumerable:!0,value:t[o++]}:{enumerable:!0,get:a};r.o(e,n)||Object.defineProperty(e,n,l)}else for(var n in t)r.o(t,n)&&!r.o(e,n)&&Object.defineProperty(e,n,{enumerable:!0,get:t[n]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce((t,o)=>(r.f[o](e,t),t),[])),r.u=e=>e+"."+{49:"d326f554b6f9ccde6580",58:"eb7cc679f7535cc8a2f1",68:"26b6f59c8454adb17f20",166:"386ff9b2c37ac865fdee",351:"e796b81287b53635cfa4",353:"581bd1cb00746399b62e",367:"575f9621b63c9a641aa9",421:"11dac223a2c2da1b09f5",432:"a749eb54fdc324b18cfa",439:"ba5b5ef70ec6de214b8c",481:"cc2dec9fa869d66f1407",487:"0796e931d6e651482c14",539:"3024c7f70ce4db9b6428",579:"3bc73eef11d3e0ce5d0c",666:"d9bfdb23f98489d0a188",677:"d266c39dbed33bc388b3",868:"5cfe7e1a348ec5af1b8c"}[e]+".js?v="+{49:"d326f554b6f9ccde6580",58:"eb7cc679f7535cc8a2f1",68:"26b6f59c8454adb17f20",166:"386ff9b2c37ac865fdee",351:"e796b81287b53635cfa4",353:"581bd1cb00746399b62e",367:"575f9621b63c9a641aa9",421:"11dac223a2c2da1b09f5",432:"a749eb54fdc324b18cfa",439:"ba5b5ef70ec6de214b8c",481:"cc2dec9fa869d66f1407",487:"0796e931d6e651482c14",539:"3024c7f70ce4db9b6428",579:"3bc73eef11d3e0ce5d0c",666:"d9bfdb23f98489d0a188",677:"d266c39dbed33bc388b3",868:"5cfe7e1a348ec5af1b8c"}[e],r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,t)=>Object.prototype.hasOwnProperty.call(e,t),(()=>{const e={},t="codebuff:";r.l=(o,n,a,l)=>{if(e[o])return void e[o].push(n);let f,i;if(void 0!==a){const e=document.getElementsByTagName("script");for(var c=0;c<e.length;c++){const r=e[c];if(r.getAttribute("src")==o||r.getAttribute("data-webpack")==t+a){f=r;break}}}f||(i=!0,f=document.createElement("script"),f.charset="utf-8",r.nc&&f.setAttribute("nonce",r.nc),f.setAttribute("data-webpack",t+a),f.src=o),e[o]=[n];const d=(t,r)=>{f.onerror=f.onload=null,clearTimeout(u);const n=e[o];if(delete e[o],f.parentNode?.removeChild(f),n?.forEach(e=>e(r)),t)return t(r)},u=setTimeout(d.bind(null,void 0,{type:"timeout",target:f}),12e4);f.onerror=d.bind(null,f.onerror),f.onload=d.bind(null,f.onload),i&&document.head.appendChild(f)}})(),r.r=e=>{Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.dn=e=>{var t=Object.getOwnPropertyDescriptor(e,"name");(!t||!t.writable&&t.configurable)&&Object.defineProperty(e,"name",{value:"default",configurable:!0})},(()=>{r.S={};const e={},t={};r.I=(o,n)=>{n||(n=[]);let a=t[o];if(a||(a=t[o]={}),n.indexOf(a)>=0)return;if(n.push(a),e[o])return e[o];r.o(r.S,o)||(r.S[o]={});const l=r.S[o],f="codebuff",i=(e,t,r,o)=>{const n=l[e]=l[e]||{},a=n[t];(!a||!a.loaded&&(!o!=!a.eager?o:f>a.from))&&(n[t]={get:r,from:f,eager:!!o})},c=[];return"default"===o&&(i("@codemirror/commands","6.8.1",()=>Promise.all([r.e(353),r.e(708),r.e(11),r.e(195)]).then(()=>()=>r(4353))),i("@emotion/react","11.14.0",()=>Promise.all([r.e(666),r.e(345),r.e(677)]).then(()=>()=>r(7677))),i("@emotion/styled","11.14.1",()=>Promise.all([r.e(345),r.e(744),r.e(487)]).then(()=>()=>r(1868))),i("@lezer/java","1.1.4",()=>Promise.all([r.e(421),r.e(367),r.e(708),r.e(839)]).then(()=>()=>r(7367))),i("@lezer/javascript","1.5.5",()=>Promise.all([r.e(421),r.e(166),r.e(708),r.e(839)]).then(()=>()=>r(166))),i("@lezer/python","1.1.19",()=>Promise.all([r.e(421),r.e(49),r.e(708),r.e(839)]).then(()=>()=>r(49))),i("@mui/material","5.18.0",()=>Promise.all([r.e(666),r.e(68),r.e(432),r.e(345),r.e(586)]).then(()=>()=>r(3068))),i("codebuff","2.1.80",()=>Promise.all([r.e(666),r.e(432),r.e(351),r.e(345),r.e(586),r.e(195),r.e(539)]).then(()=>()=>r(5539))),i("diff","0",()=>r.e(481).then(()=>()=>r(7481)))),e[o]=c.length?Promise.all(c).then(()=>e[o]=1):1}})(),(()=>{let e;r.g.importScripts&&(e=r.g.location+"");const t=r.g.document;if(!e&&t&&("SCRIPT"===t.currentScript?.tagName.toUpperCase()&&(e=t.currentScript.src),!e)){const r=t.getElementsByTagName("script");if(r.length){let t=r.length-1;for(;t>-1&&(!e||!/^https?:/.test(e));)e=r[t--].src}}if(!e)throw new Error("Automatic publicPath is not supported in this browser");e=e.replace(/^blob:|[?#].*$/g,"").replace(/\/[^/]+$/,"/"),r.p=e})(),(()=>{var e=e=>{var t=e=>e.split(".").map(e=>+e==e?+e:e),r=/^([^-+]+)?(?:-([^+]+))?(?:\+(.+))?$/.exec(e),o=r[1]?t(r[1]):[];return r[2]&&(o.length++,o.push.apply(o,t(r[2]))),r[3]&&(o.push([]),o.push.apply(o,t(r[3]))),o},t=(t,r)=>{t=e(t),r=e(r);for(var o=0;;){if(o>=t.length)return o<r.length&&"u"!=(typeof r[o])[0];var n=t[o],a=(typeof n)[0];if(o>=r.length)return"u"==a;var l=r[o],f=(typeof l)[0];if(a!=f)return"o"==a&&"n"==f||"s"==f||"u"==a;if("o"!=a&&"u"!=a&&n!=l)return n<l;o++}},o=e=>{var t=e[0],r="";if(1===e.length)return"*";if(t+.5){r+=0==t?">=":-1==t?"<":1==t?"^":2==t?"~":t>0?"=":"!=";for(var n=1,a=1;a<e.length;a++)n--,r+="u"==(typeof(f=e[a]))[0]?"-":(n>0?".":"")+(n=2,f);return r}var l=[];for(a=1;a<e.length;a++){var f=e[a];l.push(0===f?"not("+i()+")":1===f?"("+i()+" || "+i()+")":2===f?l.pop()+" "+l.pop():o(f))}return i();function i(){return l.pop().replace(/^\((.+)\)$/,"$1")}},n=(t,r)=>{if(0 in t){r=e(r);var o=t[0],a=o<0;a&&(o=-o-1);for(var l=0,f=1,i=!0;;f++,l++){var c,d,u=f<t.length?(typeof t[f])[0]:"";if(l>=r.length||"o"==(d=(typeof(c=r[l]))[0]))return!i||("u"==u?f>o&&!a:""==u!=a);if("u"==d){if(!i||"u"!=u)return!1}else if(i)if(u==d)if(f<=o){if(c!=t[f])return!1}else{if(a?c>t[f]:c<t[f])return!1;c!=t[f]&&(i=!1)}else if("s"!=u&&"n"!=u){if(a||f<=o)return!1;i=!1,f--}else{if(f<=o||d<u!=a)return!1;i=!1}else"s"!=u&&"n"!=u&&(i=!1,f--)}}var s=[],b=s.pop.bind(s);for(l=1;l<t.length;l++){var p=t[l];s.push(1==p?b()|b():2==p?b()&b():p?n(p,r):!b())}return!!b()};const a=(e,t)=>e&&r.o(e,t),l=e=>(e.loaded=1,e.get()),f=e=>Object.keys(e).reduce((t,r)=>(e[r].eager&&(t[r]=e[r]),t),{}),i=e=>{throw new Error(e)},c=e=>function(t,o,n,a,l){const f=r.I(t);return f?.then&&!n?f.then(e.bind(e,t,r.S[t],o,!1,a,l)):e(t,r.S[t],o,n,a,l)},d=(e,t,r)=>r?r():((e,t)=>i("Shared module "+t+" doesn't exist in shared scope "+e))(e,t),u=c((e,r,c,u,s,b)=>{if(!a(r,c))return d(e,c,b);const p=((e,r,o,a)=>{const l=a?f(e[r]):e[r];return(r=Object.keys(l).reduce((e,r)=>!n(o,r)||e&&!t(e,r)?e:r,0))&&l[r]})(r,c,s,u);return p?l(p):b?b():void i(((e,t,r,n,a)=>{const l=e[r];return"No satisfying version ("+o(n)+")"+(a?" for eager consumption":"")+" of shared module "+r+" found in shared scope "+t+".\nAvailable versions: "+Object.keys(l).map(e=>e+" from "+l[e].from).join(", ")})(r,e,c,s,u))}),s=c((e,r,i,c,u,s)=>{if(!a(r,i))return d(e,i,s);const b=((e,r,o)=>{const n=o?f(e[r]):e[r];return Object.keys(n).reduce((e,r)=>!e||!n[e].loaded&&t(e,r)?r:e,0)})(r,i,c);return n(u,b)||(p=((e,t,r,n)=>"Unsatisfied version "+r+" from "+(r&&e[t][r].from)+" of shared singleton module "+t+" (required "+o(n)+")")(r,i,b,u),"undefined"!=typeof console&&console.warn&&console.warn(p)),l(r[i][b]);var p}),b={},p={3345:()=>s("default","react",!1,[1,18,2,0]),3157:()=>u("default","@emotion/react",!1,[1,11,4,1],()=>r.e(58).then(()=>()=>r(7677))),7628:()=>s("default","react-dom",!1,[1,18,2,0]),9443:()=>u("default","@emotion/styled",!1,[1,11,3,0],()=>Promise.all([r.e(744),r.e(868)]).then(()=>()=>r(1868))),2576:()=>s("default","@codemirror/state",!1,[1,6,2,0]),277:()=>s("default","@jupyterlab/cells",!1,[1,4,5,1]),1247:()=>s("default","@lumino/widgets",!1,[1,2,3,1,,"alpha",1]),1409:()=>s("default","@jupyterlab/ui-components",!1,[1,4,5,1]),1805:()=>s("default","@jupyterlab/console",!1,[1,4,5,1]),1907:()=>s("default","@jupyterlab/services",!1,[1,7,5,1]),2780:()=>s("default","@jupyterlab/filebrowser",!1,[1,4,5,1]),3118:()=>s("default","@jupyterlab/rendermime",!1,[1,4,5,1]),3366:()=>s("default","@jupyterlab/launcher",!1,[1,4,5,1]),4849:()=>u("default","diff",!1,[1,9,0,0],()=>r.e(481).then(()=>()=>r(7481))),5584:()=>s("default","@jupyterlab/application",!1,[1,4,5,1]),5690:()=>s("default","@jupyterlab/terminal",!1,[1,4,5,1]),5705:()=>u("default","@lezer/javascript",!1,[1,1,5,5],()=>Promise.all([r.e(421),r.e(166),r.e(708),r.e(839)]).then(()=>()=>r(166))),6580:()=>u("default","@lezer/python",!1,[1,1,1,19],()=>Promise.all([r.e(421),r.e(49),r.e(708),r.e(839)]).then(()=>()=>r(49))),6661:()=>u("default","@mui/material",!1,[1,5,14,0],()=>r.e(68).then(()=>()=>r(3068))),6822:()=>u("default","@codemirror/commands",!1,[4,6,8,1],()=>Promise.all([r.e(353),r.e(708),r.e(11)]).then(()=>()=>r(4353))),7125:()=>s("default","@jupyterlab/docmanager",!1,[1,4,5,1]),7292:()=>s("default","@jupyterlab/coreutils",!1,[1,6,5,1]),8389:()=>s("default","@jupyterlab/notebook",!1,[1,4,5,1]),8454:()=>u("default","@lezer/java",!1,[1,1,1,4],()=>Promise.all([r.e(421),r.e(367),r.e(708),r.e(839)]).then(()=>()=>r(7367))),9827:()=>s("default","@jupyterlab/apputils",!1,[1,4,6,1]),3708:()=>s("default","@lezer/common",!1,[1,1,0,0]),2084:()=>s("default","@codemirror/language",!1,[1,6,0,0]),5024:()=>s("default","@codemirror/view",!1,[1,6,9,6]),2744:()=>u("default","@emotion/react",!1,[1,11,0,0,,"rc",0],()=>Promise.all([r.e(666),r.e(439)]).then(()=>()=>r(7677))),1839:()=>s("default","@lezer/highlight",!1,[1,1,0,0])},h={11:[2084,5024],195:[2576],345:[3345],539:[277,1247,1409,1805,1907,2780,3118,3366,4849,5584,5690,5705,6580,6661,6822,7125,7292,8389,8454,9827],586:[3157,7628,9443],708:[3708],744:[2744],839:[1839]},m={};r.f.consumes=(e,t)=>{r.o(h,e)&&h[e].forEach(e=>{if(r.o(b,e))return t.push(b[e]);if(!m[e]){const o=t=>{b[e]=0,r.m[e]=o=>{delete r.c[e],o.exports=t()}};m[e]=!0;const n=t=>{delete b[e],r.m[e]=o=>{throw delete r.c[e],t}};try{const r=p[e]();r.then?t.push(b[e]=r.then(o).catch(n)):o(r)}catch(e){n(e)}}})}})(),(()=>{r.b="undefined"!=typeof document&&document.baseURI||self.location.href;const e={679:0};r.f.j=(t,o)=>{let n=r.o(e,t)?e[t]:void 0;if(0!==n)if(n)o.push(n[2]);else if(/^(11|195|345|586|708|744|839)$/.test(t))e[t]=0;else{const a=new Promise((r,o)=>n=e[t]=[r,o]);o.push(n[2]=a);const l=new Error,f=o=>{if(r.o(e,t)&&(n=e[t],0!==n&&(e[t]=void 0),n)){const e=o&&("load"===o.type?"missing":o.type),r=o&&o.target&&o.target.src;l.message="Loading chunk "+t+" failed.\n("+e+": "+r+")",l.name="ChunkLoadError",l.type=e,l.request=r,l.event=o,n[1](l)}};r.l(r.p+r.u(t),f,"chunk-"+t,t)}};const t=(t,o)=>{let[n,a,l]=o;var f,i,c=0;if(n.some(t=>0!==e[t])){for(f in a)r.o(a,f)&&(r.m[f]=a[f]);l&&l(r)}for(t&&t(o);c<n.length;c++)i=n[c],r.o(e,i)&&e[i]&&e[i][0](),e[i]=0},o=self.webpackChunkcodebuff=self.webpackChunkcodebuff||[];o.forEach(t.bind(null,0)),o.push=t.bind(null,o.push.bind(o))})(),r.nc=void 0;let o=r(8384);(_JUPYTERLAB=void 0===_JUPYTERLAB?{}:_JUPYTERLAB).codebuff=o})();
@@ -14,6 +14,10 @@ pod 이름의 사번은 접속한 사람의 키클락 토큰 사번과도 대조
14
14
  (centri 포털이 같은 토큰을 그렇게 읽는다). 토큰은 pod 환경변수(`KEYCLOAK_ID_TOKEN`)가 아니라
15
15
  **브라우저 요청의 `X-Auth-Request-Access-Token` 헤더**다(이슈 #623) — 인증 프록시가 접속한 사람의
16
16
  토큰을 요청마다 붙인다. 환경변수 토큰은 pod 주인의 것이고, 개발계 값은 디코드되지도 않았다.
17
+ 헤더가 없으면 대조를 건너뛴다(이슈 #625) — 개발계는 프록시가 헤더를 pod 까지 넘기지 않는다.
18
+
19
+ pod 이름의 사번은 pod 환경변수의 사번(`EMP_ENVS`)과도 대조한다(이슈 #628) — 허용 목록(#609)은
20
+ 환경변수 사번을, centri 의 전용 role 은 pod 이름 사번을 쓰므로 둘이 어긋나면 열지 않는다.
17
21
  """
18
22
 
19
23
  from __future__ import annotations
@@ -22,7 +26,7 @@ import os
22
26
  import re
23
27
  import socket
24
28
  from contextvars import ContextVar
25
- from typing import Any, Dict, Optional
29
+ from typing import Any, Dict, Optional, Tuple
26
30
 
27
31
  _POD_NAME = re.compile(
28
32
  r"jupyterx(?P<emp_no>[0-9a-z]{6})[0-9a-z]{8}p(?P<perm>[0-9a-z]{3})(?P<prj_code>[0-9a-z]{6})"
@@ -73,7 +77,7 @@ _request_token: ContextVar[str] = ContextVar("codebuff_request_token", default="
73
77
 
74
78
 
75
79
  def bind_request_token(handler: Any) -> None:
76
- """핸들러의 요청 머리에서 `ACCESS_TOKEN_HEADER` 를 읽어 둔다. 없으면 빈 값(=거부)."""
80
+ """핸들러의 요청 머리에서 `ACCESS_TOKEN_HEADER` 를 읽어 둔다. 없으면 빈 값(=대조 건너뜀)."""
77
81
  headers = getattr(handler.request, "headers", None) or {}
78
82
  _request_token.set(headers.get(ACCESS_TOKEN_HEADER, "") or "")
79
83
 
@@ -95,6 +99,27 @@ def token_emp_check(emp_no: str) -> str:
95
99
  return compare_emp_no(emp_no, request_claims(), claim)
96
100
 
97
101
 
102
+ #: 플랫폼이 pod 에 거는 사번 환경변수 — 허용 목록(`team_access.codex_allowed`)이 보는 것과 같다
103
+ EMP_ENVS = ("JUPYTERHUB_USER", "HDSP_BDP_ID")
104
+
105
+
106
+ def env_emp_check(emp_no: str) -> Tuple[str, str]:
107
+ """pod 이름 사번과 사번 환경변수 대조 → (`match`·`env_mismatch`·`no_env_emp`, 어긋난 값).
108
+
109
+ 값이 있는 환경변수는 모두 같아야 한다. 둘 다 비면 거부한다 — pod 에서는 플랫폼이 늘 넣는다.
110
+ """
111
+ from .team_access import _norm
112
+
113
+ values = [os.environ.get(name, "").strip() for name in EMP_ENVS]
114
+ values = [v for v in values if v]
115
+ if not values:
116
+ return "no_env_emp", ""
117
+ for value in values:
118
+ if _norm(value) != _norm(emp_no):
119
+ return "env_mismatch", value
120
+ return "match", ""
121
+
122
+
98
123
  def pod_name() -> str:
99
124
  """k8s 에서는 hostname 이 pod 이름이다."""
100
125
  return socket.gethostname()