@loicngr/kobo 2.1.25 → 2.1.28
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/AGENTS.md +30 -3
- package/CHANGELOG.md +15 -0
- package/CONFIGURATION.md +156 -49
- package/README.md +2 -1
- package/SECURITY.md +33 -6
- package/dist/mcp-server/kobo-tasks-server.js +36 -1021
- package/dist/mcp-server/managed-mcp-dispatcher.js +960 -0
- package/dist/mcp-server/workspace-dialogue-client.js +26 -1
- package/dist/server/index.js +52 -19
- package/dist/server/middleware/host-check-middleware.js +8 -5
- package/dist/server/middleware/network-auth-middleware.js +51 -29
- package/dist/server/middleware/security-headers-middleware.js +19 -0
- package/dist/server/middleware/traffic-limits-middleware.js +74 -0
- package/dist/server/routes/auth.js +73 -0
- package/dist/server/routes/internal-mcp.js +137 -0
- package/dist/server/routes/mcp-credentials.js +30 -0
- package/dist/server/routes/mcp.js +156 -76
- package/dist/server/routes/usage.js +24 -0
- package/dist/server/routes/workspaces.js +19 -3
- package/dist/server/services/agent/orchestrator.js +27 -17
- package/dist/server/services/external-mcp-credentials-service.js +110 -0
- package/dist/server/services/forge/github/provider.js +15 -3
- package/dist/server/services/forge/types.js +8 -0
- package/dist/server/services/internal-mcp-capability-service.js +98 -0
- package/dist/server/services/mcp-connection-info-service.js +1 -1
- package/dist/server/services/memory-mcp-service.js +9 -7
- package/dist/server/services/memory-service.js +15 -0
- package/dist/server/services/network-access-service.js +43 -73
- package/dist/server/services/network-session-service.js +182 -0
- package/dist/server/services/provider-accounts-service.js +202 -0
- package/dist/server/services/settings-service.js +29 -7
- package/dist/server/services/terminal-websocket-service.js +5 -0
- package/dist/server/services/usage/poller.js +44 -3
- package/dist/server/services/websocket-service.js +5 -0
- package/dist/server/utils/paths.js +2 -1
- package/dist/server/utils/startup-display.js +1 -2
- package/dist/shared/models.js +6 -0
- package/dist/shared/provider-accounts.js +1 -0
- package/docker-compose.vps.yml +6 -0
- package/docs/deployment-vps.md +24 -12
- package/package.json +1 -1
- package/src/client/dist/pwa/assets/ActivityFeed-D58VS9o2.js +2 -0
- package/src/client/dist/pwa/assets/{AutoLoopFinalReviewSettings-Dafi7Tue.js → AutoLoopFinalReviewSettings-CK3r_fVB.js} +1 -1
- package/src/client/dist/pwa/assets/{ChangelogPage-DH-zUtlf.js → ChangelogPage-CAAUEn5X.js} +1 -1
- package/src/client/dist/pwa/assets/ComparisonPanel-BCb7vB5E.js +2 -0
- package/src/client/dist/pwa/assets/CreatePage-DasH1Uk4.js +2 -0
- package/src/client/dist/pwa/assets/{DashboardPage-B8gTooRi.js → DashboardPage-XE52EABP.js} +1 -1
- package/src/client/dist/pwa/assets/DiffViewer-CncKlXne.js +8 -0
- package/src/client/dist/pwa/assets/{DocumentsPanel-DXjjhGUg.js → DocumentsPanel-L4pbQfz1.js} +1 -1
- package/src/client/dist/pwa/assets/{DrawerToggleButton-CiVNMTbq.js → DrawerToggleButton-DiOJm5he.js} +1 -1
- package/src/client/dist/pwa/assets/GitPanel-WJlzy2VJ.js +3 -0
- package/src/client/dist/pwa/assets/{GitPanel-CRaLJzjc.css → GitPanel-yHvU38dp.css} +1 -1
- package/src/client/dist/pwa/assets/{HealthPage-lc2Cuuks.js → HealthPage-hJY5MurK.js} +1 -1
- package/src/client/dist/pwa/assets/MainLayout-DgWElK7w.js +2 -0
- package/src/client/dist/pwa/assets/{MemoryPanel-SrR94UVW.js → MemoryPanel-DtEvh_b7.js} +1 -1
- package/src/client/dist/pwa/assets/{MemoryProposalList-B5uVf3KU.js → MemoryProposalList-kgFCm9zz.js} +1 -1
- package/src/client/dist/pwa/assets/{QBtnDropdown-Cxr3lBPB.js → QBtnDropdown-CWPIugs8.js} +1 -1
- package/src/client/dist/pwa/assets/{QExpansionItem-xIXDevKz.js → QExpansionItem-D-EGL2b3.js} +1 -1
- package/src/client/dist/pwa/assets/{QScrollArea-DeczMHVs.js → QScrollArea-BMrqK-xd.js} +1 -1
- package/src/client/dist/pwa/assets/QSelect-DFWyDWCE.js +1 -0
- package/src/client/dist/pwa/assets/{QTooltip-be9mqhmB.js → QTooltip-Bk8dLUtU.js} +1 -1
- package/src/client/dist/pwa/assets/{SchedulePanel-R6H-D-m5.js → SchedulePanel-CuxmxCKi.js} +1 -1
- package/src/client/dist/pwa/assets/{SearchPage-CaeYoIDw.js → SearchPage-DKnQPUqY.js} +1 -1
- package/src/client/dist/pwa/assets/{SettingsPage-Dcq1Jeoo.css → SettingsPage-B4rmd2WX.css} +1 -1
- package/src/client/dist/pwa/assets/SettingsPage-CO3vIpPd.js +9 -0
- package/src/client/dist/pwa/assets/{SplitWorkspacePage-Dw1qUIFU.js → SplitWorkspacePage-WhQyX8fn.js} +1 -1
- package/src/client/dist/pwa/assets/{TerminalPanel-Dqw88QqH.js → TerminalPanel-BY0lPq6k.js} +10 -10
- package/src/client/dist/pwa/assets/{TerminalPanel-Dz9EE-Ph.css → TerminalPanel-BcbwuFVR.css} +1 -1
- package/src/client/dist/pwa/assets/{ToolCallItem-BMn7eela.js → ToolCallItem-DYubi-J0.js} +3 -3
- package/src/client/dist/pwa/assets/{TouchPan-BwCpe_Oh.js → TouchPan-DDotyYLN.js} +1 -1
- package/src/client/dist/pwa/assets/{TourReplayButton-yeGYf6xT.js → TourReplayButton-kAnEMcy2.js} +1 -1
- package/src/client/dist/pwa/assets/{WorkspaceAttentionLabels-BJPw65vU.js → WorkspaceAttentionLabels-DiYt3rP3.js} +1 -1
- package/src/client/dist/pwa/assets/WorkspacePage-BEBwwr81.css +1 -0
- package/src/client/dist/pwa/assets/WorkspacePage-K-1ce50d.js +4 -0
- package/src/client/dist/pwa/assets/{browser-C9U-mSDm.js → browser-DVYLH8vl.js} +1 -1
- package/src/client/dist/pwa/assets/{build-path-tree-DYdRW2T4.js → build-path-tree-DEuOdIIk.js} +1 -1
- package/src/client/dist/pwa/assets/custom-sounds-Ggw6V9iF.js +1 -0
- package/src/client/dist/pwa/assets/de-Bk3zQrin.js +17 -0
- package/src/client/dist/pwa/assets/{editor.api-iu5YkEl3.js → editor.api-BC38eXAS.js} +1 -1
- package/src/client/dist/pwa/assets/{efforts-ja6uJadn.js → efforts-TGacUPcJ.js} +1 -1
- package/src/client/dist/pwa/assets/es-f3xuAWA9.js +17 -0
- package/src/client/dist/pwa/assets/{expand-template-BbgnJ8YH.js → expand-template-DM8gq3Mo.js} +1 -1
- package/src/client/dist/pwa/assets/{format-CLXLy6Ov.js → format-OwxXBnDJ.js} +1 -1
- package/src/client/dist/pwa/assets/{formatters-DeKgxYJe.js → formatters-YgaCZcwJ.js} +1 -1
- package/src/client/dist/pwa/assets/fr-B6c21SG3.js +17 -0
- package/src/client/dist/pwa/assets/{freemarker2-2IrnDDvu.js → freemarker2-l7R42fI2.js} +1 -1
- package/src/client/dist/pwa/assets/{handlebars-CeLN7FCP.js → handlebars-DFmPrgjH.js} +1 -1
- package/src/client/dist/pwa/assets/{html-Bn3rhcp3.js → html-CERIAlPM.js} +1 -1
- package/src/client/dist/pwa/assets/i18n-WaE4cZK9.js +1 -0
- package/src/client/dist/pwa/assets/index-CpWBGKdM.js +20 -0
- package/src/client/dist/pwa/assets/it-DUstDpC2.js +17 -0
- package/src/client/dist/pwa/assets/{javascript-BMvON8oT.js → javascript-BBYncplF.js} +1 -1
- package/src/client/dist/pwa/assets/{liquid-D_AQLvQl.js → liquid-C1HqYyYU.js} +1 -1
- package/src/client/dist/pwa/assets/{mdx-DDJzMB8Q.js → mdx-E74dsP22.js} +1 -1
- package/src/client/dist/pwa/assets/{monaco-contributions-DFKwR-_X.js → monaco-contributions-DHvm-kp5.js} +1 -1
- package/src/client/dist/pwa/assets/{monaco.contribution-4AwFLnjV.js → monaco.contribution-DYdn9CwR.js} +2 -2
- package/src/client/dist/pwa/assets/network-auth-DTZUKbny.js +1 -0
- package/src/client/dist/pwa/assets/{notify-theme-CMzdjL91.js → notify-theme-FuTL7HuS.js} +1 -1
- package/src/client/dist/pwa/assets/{permissionModes-DLWiBfdb.js → permissionModes-D-Nexnoo.js} +1 -1
- package/src/client/dist/pwa/assets/{project-color-C5mEKdlH.js → project-color-_snXWYUp.js} +1 -1
- package/src/client/dist/pwa/assets/{python-BOqcp9xc.js → python-DNAAGBcX.js} +1 -1
- package/src/client/dist/pwa/assets/{razor-BrGwBzd7.js → razor-CB3g5p_T.js} +1 -1
- package/src/client/dist/pwa/assets/{typescript-mOGf86uY.js → typescript-0kpz8bqP.js} +1 -1
- package/src/client/dist/pwa/assets/{use-search-index-status-P7O7EaV_.js → use-search-index-status-D38yFOD_.js} +1 -1
- package/src/client/dist/pwa/assets/{use-tours-CMFPIW6f.js → use-tours-BWkHp34X.js} +2 -2
- package/src/client/dist/pwa/assets/{use-worktree-restore-DF6P7h8g.js → use-worktree-restore-DUjZr44N.js} +1 -1
- package/src/client/dist/pwa/assets/{workspace-templates-C_bgIQvs.js → workspace-templates-D-lPJQ4G.js} +1 -1
- package/src/client/dist/pwa/assets/{xml-YcMBzYAm.js → xml-BbOuqdUe.js} +1 -1
- package/src/client/dist/pwa/assets/{yaml-BP_67Sds.js → yaml-gasFQtfk.js} +1 -1
- package/src/client/dist/pwa/index.html +1 -1
- package/src/client/dist/pwa/sw.js +1 -1
- package/src/mcp-server/README.md +13 -19
- package/src/mcp-server/kobo-tasks-server.ts +42 -1146
- package/src/mcp-server/managed-mcp-dispatcher.ts +1071 -0
- package/src/mcp-server/workspace-dialogue-client.ts +26 -1
- package/src/client/dist/pwa/assets/ActivityFeed-xJMPnXKA.js +0 -2
- package/src/client/dist/pwa/assets/ComparisonPanel-DwaQyEgb.js +0 -2
- package/src/client/dist/pwa/assets/CreatePage-DyF_efbs.js +0 -2
- package/src/client/dist/pwa/assets/DiffViewer-BivWNITj.js +0 -8
- package/src/client/dist/pwa/assets/GitPanel-DQjgGtoN.js +0 -3
- package/src/client/dist/pwa/assets/MainLayout-D3pGcTx8.js +0 -2
- package/src/client/dist/pwa/assets/QSelect-GQAsf7pB.js +0 -1
- package/src/client/dist/pwa/assets/SettingsPage-BCWdQHS5.js +0 -9
- package/src/client/dist/pwa/assets/WorkspacePage-BHO1Q8PG.js +0 -4
- package/src/client/dist/pwa/assets/WorkspacePage-BnklZAYZ.css +0 -1
- package/src/client/dist/pwa/assets/custom-sounds-DPsfYErA.js +0 -1
- package/src/client/dist/pwa/assets/de-Bqil7RJE.js +0 -17
- package/src/client/dist/pwa/assets/es-CNcMm1Zz.js +0 -17
- package/src/client/dist/pwa/assets/fr-BObHEohg.js +0 -17
- package/src/client/dist/pwa/assets/i18n-Df_y96N2.js +0 -1
- package/src/client/dist/pwa/assets/index-CH4JpI2a.js +0 -20
- package/src/client/dist/pwa/assets/it-DDMC7Emk.js +0 -17
- package/src/client/dist/pwa/assets/network-auth-CMERg4Qk.js +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
import{M as e,pt as t}from"./reactivity.esm-bundler-DY1JkAEA.js";import{L as n,d as r,l as i,p as a,r as o,u as s,y as c,z as l}from"./runtime-core.esm-bundler-Bqg71Vll.js";import{
|
|
1
|
+
import{M as e,pt as t}from"./reactivity.esm-bundler-DY1JkAEA.js";import{L as n,d as r,l as i,p as a,r as o,u as s,y as c,z as l}from"./runtime-core.esm-bundler-Bqg71Vll.js";import{M as u,Ut as d,en as f,tn as p}from"./index-CpWBGKdM.js";import{t as m}from"./QSelect-DFWyDWCE.js";var h=[`aria-label`],g={class:`text-subtitle2 q-mb-xs`},_={class:`text-caption`},v=c({__name:`WorkflowPolicyEditor`,props:{modelValue:{},inherit:{type:Boolean}},emits:[`update:modelValue`],setup(c,{emit:d}){let p=c,v=d,{t:y}=f(),b=i(()=>[...p.inherit?[{label:y(`workflow.inherit`),value:``}]:[],{label:y(`workflow.manual`),value:`manual`},{label:y(`workflow.automatic`),value:`automatic`}]);function x(e,t){let n={...p.modelValue};t?n[e]=t:delete n[e],v(`update:modelValue`,n)}return(i,d)=>(n(),a(`section`,{class:`q-mb-md`,"aria-label":i.$t(`workflow.title`)},[s(`div`,g,t(i.$t(`workflow.title`)),1),s(`p`,_,t(i.$t(`workflow.hint`)),1),(n(!0),a(o,null,l(e(u),e=>(n(),r(m,{key:e,class:`q-mb-sm`,outlined:``,dense:``,label:i.$t(`workflow.${e}`),"model-value":c.modelValue[e]??``,options:b.value,"emit-value":``,"map-options":``,"onUpdate:modelValue":t=>x(e,t)},null,8,[`label`,`model-value`,`options`,`onUpdate:modelValue`]))),128))],8,h))}}),y=p(`workspace-templates`,{state:()=>({templates:[],loading:!1,loaded:!1}),getters:{findByName:e=>t=>{let n=t.trim().toLowerCase();if(n)return e.templates.find(e=>e.name.toLowerCase()===n)}},actions:{async fetchTemplates(){if(!this.loading){this.loading=!0;try{let e=await d(`/api/workspace-templates`);this.templates=e.templates,this.loaded=!0}catch(e){console.error(`[workspace-templates store] fetchTemplates failed:`,e)}finally{this.loading=!1}}},async createTemplate(e){let{template:t}=await d(`/api/workspace-templates`,{method:`POST`,body:e});return this.templates.push(t),t},async updateTemplate(e,t){let{template:n}=await d(`/api/workspace-templates/${encodeURIComponent(e)}`,{method:`PUT`,body:t}),r=this.templates.findIndex(t=>t.id===e);return r>=0?this.templates[r]=n:this.templates.push(n),n},async deleteTemplate(e){await d(`/api/workspace-templates/${encodeURIComponent(e)}`,{method:`DELETE`}),this.templates=this.templates.filter(t=>t.id!==e)}}});export{v as n,y as t};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./editor.api-
|
|
1
|
+
import{n as e}from"./editor.api-BC38eXAS.js";var t={comments:{blockComment:[`<!--`,`-->`]},brackets:[[`<`,`>`]],autoClosingPairs:[{open:`<`,close:`>`},{open:`'`,close:`'`},{open:`"`,close:`"`}],surroundingPairs:[{open:`<`,close:`>`},{open:`'`,close:`'`},{open:`"`,close:`"`}],onEnterRules:[{beforeText:RegExp(`<([_:\\w][_:\\w-.\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),afterText:/^<\/([_:\w][_:\w-.\d]*)\s*>$/i,action:{indentAction:e.IndentAction.IndentOutdent}},{beforeText:RegExp(`<(\\w[\\w\\d]*)([^/>]*(?!/)>)[^<]*$`,`i`),action:{indentAction:e.IndentAction.Indent}}]},n={defaultToken:``,tokenPostfix:`.xml`,ignoreCase:!0,qualifiedName:/(?:[\w\.\-]+:)?[\w\.\-]+/,tokenizer:{root:[[/[^<&]+/,``],{include:`@whitespace`},[/(<)(@qualifiedName)/,[{token:`delimiter`},{token:`tag`,next:`@tag`}]],[/(<\/)(@qualifiedName)(\s*)(>)/,[{token:`delimiter`},{token:`tag`},``,{token:`delimiter`}]],[/(<\?)(@qualifiedName)/,[{token:`delimiter`},{token:`metatag`,next:`@tag`}]],[/(<\!)(@qualifiedName)/,[{token:`delimiter`},{token:`metatag`,next:`@tag`}]],[/<\!\[CDATA\[/,{token:`delimiter.cdata`,next:`@cdata`}],[/&\w+;/,`string.escape`]],cdata:[[/[^\]]+/,``],[/\]\]>/,{token:`delimiter.cdata`,next:`@pop`}],[/\]/,``]],tag:[[/[ \t\r\n]+/,``],[/(@qualifiedName)(\s*=\s*)("[^"]*"|'[^']*')/,[`attribute.name`,``,`attribute.value`]],[/(@qualifiedName)(\s*=\s*)("[^">?\/]*|'[^'>?\/]*)(?=[\?\/]\>)/,[`attribute.name`,``,`attribute.value`]],[/(@qualifiedName)(\s*=\s*)("[^">]*|'[^'>]*)/,[`attribute.name`,``,`attribute.value`]],[/@qualifiedName/,`attribute.name`],[/\?>/,{token:`delimiter`,next:`@pop`}],[/(\/)(>)/,[{token:`tag`},{token:`delimiter`,next:`@pop`}]],[/>/,{token:`delimiter`,next:`@pop`}]],whitespace:[[/[ \t\r\n]+/,``],[/<!--/,{token:`comment`,next:`@comment`}]],comment:[[/[^<\-]+/,`comment.content`],[/-->/,{token:`comment`,next:`@pop`}],[/<!--/,`comment.content.invalid`],[/[<\-]/,`comment.content`]]}};export{t as conf,n as language};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
import{n as e}from"./editor.api-
|
|
1
|
+
import{n as e}from"./editor.api-BC38eXAS.js";var t={comments:{lineComment:`#`},brackets:[[`{`,`}`],[`[`,`]`],[`(`,`)`]],autoClosingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],surroundingPairs:[{open:`{`,close:`}`},{open:`[`,close:`]`},{open:`(`,close:`)`},{open:`"`,close:`"`},{open:`'`,close:`'`}],folding:{offSide:!0},onEnterRules:[{beforeText:/:\s*$/,action:{indentAction:e.IndentAction.Indent}}]},n={tokenPostfix:`.yaml`,brackets:[{token:`delimiter.bracket`,open:`{`,close:`}`},{token:`delimiter.square`,open:`[`,close:`]`}],keywords:[`true`,`True`,`TRUE`,`false`,`False`,`FALSE`,`null`,`Null`,`Null`,`~`],numberInteger:/(?:0|[+-]?[0-9]+)/,numberFloat:/(?:0|[+-]?[0-9]+)(?:\.[0-9]+)?(?:e[-+][1-9][0-9]*)?/,numberOctal:/0o[0-7]+/,numberHex:/0x[0-9a-fA-F]+/,numberInfinity:/[+-]?\.(?:inf|Inf|INF)/,numberNaN:/\.(?:nan|Nan|NAN)/,numberDate:/\d{4}-\d\d-\d\d([Tt ]\d\d:\d\d:\d\d(\.\d+)?(( ?[+-]\d\d?(:\d\d)?)|Z)?)?/,escapes:/\\(?:[btnfr\\"']|[0-7][0-7]?|[0-3][0-7]{2})/,tokenizer:{root:[{include:`@whitespace`},{include:`@comment`},[/%[^ ]+.*$/,`meta.directive`],[/---/,`operators.directivesEnd`],[/\.{3}/,`operators.documentEnd`],[/[-?:](?= )/,`operators`],{include:`@anchor`},{include:`@tagHandle`},{include:`@flowCollections`},{include:`@blockStyle`},[/@numberInteger(?![ \t]*\S+)/,`number`],[/@numberFloat(?![ \t]*\S+)/,`number.float`],[/@numberOctal(?![ \t]*\S+)/,`number.octal`],[/@numberHex(?![ \t]*\S+)/,`number.hex`],[/@numberInfinity(?![ \t]*\S+)/,`number.infinity`],[/@numberNaN(?![ \t]*\S+)/,`number.nan`],[/@numberDate(?![ \t]*\S+)/,`number.date`],[/(".*?"|'.*?'|[^#'"]*?)([ \t]*)(:)( |$)/,[`type`,`white`,`operators`,`white`]],{include:`@flowScalars`},[/.+?(?=(\s+#|$))/,{cases:{"@keywords":`keyword`,"@default":`string`}}]],object:[{include:`@whitespace`},{include:`@comment`},[/\}/,`@brackets`,`@pop`],[/,/,`delimiter.comma`],[/:(?= )/,`operators`],[/(?:".*?"|'.*?'|[^,\{\[]+?)(?=: )/,`type`],{include:`@flowCollections`},{include:`@flowScalars`},{include:`@tagHandle`},{include:`@anchor`},{include:`@flowNumber`},[/[^\},]+/,{cases:{"@keywords":`keyword`,"@default":`string`}}]],array:[{include:`@whitespace`},{include:`@comment`},[/\]/,`@brackets`,`@pop`],[/,/,`delimiter.comma`],{include:`@flowCollections`},{include:`@flowScalars`},{include:`@tagHandle`},{include:`@anchor`},{include:`@flowNumber`},[/[^\],]+/,{cases:{"@keywords":`keyword`,"@default":`string`}}]],multiString:[[/^( +).+$/,`string`,`@multiStringContinued.$1`]],multiStringContinued:[[/^( *).+$/,{cases:{"$1==$S2":`string`,"@default":{token:`@rematch`,next:`@popall`}}}]],whitespace:[[/[ \t\r\n]+/,`white`]],comment:[[/#.*$/,`comment`]],flowCollections:[[/\[/,`@brackets`,`@array`],[/\{/,`@brackets`,`@object`]],flowScalars:[[/"([^"\\]|\\.)*$/,`string.invalid`],[/'([^'\\]|\\.)*$/,`string.invalid`],[/'[^']*'/,`string`],[/"/,`string`,`@doubleQuotedString`]],doubleQuotedString:[[/[^\\"]+/,`string`],[/@escapes/,`string.escape`],[/\\./,`string.escape.invalid`],[/"/,`string`,`@pop`]],blockStyle:[[/[>|][0-9]*[+-]?$/,`operators`,`@multiString`]],flowNumber:[[/@numberInteger(?=[ \t]*[,\]\}])/,`number`],[/@numberFloat(?=[ \t]*[,\]\}])/,`number.float`],[/@numberOctal(?=[ \t]*[,\]\}])/,`number.octal`],[/@numberHex(?=[ \t]*[,\]\}])/,`number.hex`],[/@numberInfinity(?=[ \t]*[,\]\}])/,`number.infinity`],[/@numberNaN(?=[ \t]*[,\]\}])/,`number.nan`],[/@numberDate(?=[ \t]*[,\]\}])/,`number.date`]],tagHandle:[[/\![^ ]*/,`tag`]],anchor:[[/[&*][^ ]+/,`namespace`]]}};export{t as conf,n as language};
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
<!DOCTYPE html><html lang=en><head><title>Kōbō</title><link rel=icon type=image/svg+xml href=/favicon.svg><meta charset=utf-8><meta name=description content="Kōbō — multi-workspace agent manager for Claude Code"><meta name=format-detection content="telephone=no"><meta name=msapplication-tap-highlight content=no><meta name=viewport content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"> <script type="module" crossorigin src="/assets/index-
|
|
1
|
+
<!DOCTYPE html><html lang=en><head><title>Kōbō</title><link rel=icon type=image/svg+xml href=/favicon.svg><meta charset=utf-8><meta name=description content="Kōbō — multi-workspace agent manager for Claude Code"><meta name=format-detection content="telephone=no"><meta name=msapplication-tap-highlight content=no><meta name=viewport content="width=device-width,height=device-height,initial-scale=1,viewport-fit=cover"> <script type="module" crossorigin src="/assets/index-CpWBGKdM.js"></script>
|
|
2
2
|
<link rel="modulepreload" crossorigin href="/assets/reactivity.esm-bundler-DY1JkAEA.js">
|
|
3
3
|
<link rel="modulepreload" crossorigin href="/assets/runtime-core.esm-bundler-Bqg71Vll.js">
|
|
4
4
|
<link rel="modulepreload" crossorigin href="/assets/dom-BtYTvLeN.js">
|
|
@@ -1 +1 @@
|
|
|
1
|
-
if(!self.define){let s,e={};const a=(a,r)=>(a=new URL(a+".js",r).href,e[a]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=a,s.onload=e,document.head.appendChild(s)}else s=a,importScripts(a),e()}).then(()=>{let s=e[a];if(!s)throw new Error(`Module ${a} didn’t register its module`);return s}));self.define=(r,i)=>{const c=s||("document"in self?document.currentScript.src:"")||location.href;if(e[c])return;let d={};const b=s=>a(s,c),f={module:{uri:c},exports:d,require:b};e[c]=Promise.all(r.map(s=>f[s]||b(s))).then(s=>(i(...s),d))}}define(["./workbox-778a14ff"],function(s){"use strict";s.setCacheNameDetails({prefix:"kobo-client"}),self.addEventListener("message",s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()}),s.clientsClaim(),s.precacheAndRoute([{url:"manifest.json",revision:"73f02ba4eb4414fb70bbe5ca76cc9580"},{url:"index.html",revision:"27bb8c66e5f91554f70713619f864f4c"},{url:"favicon.svg",revision:"9d89ef10d49f14d08c25cfca9bd4ea75"},{url:"sounds/ready.wav",revision:"cd00e80e7a9d443a0e95272bb22bed6e"},{url:"sounds/neutral.wav",revision:"cb264f6e7eb97388229e82fe7d6fa5cf"},{url:"fonts/GeistMono-Variable.woff2",revision:"308360d8a547331fd40bc09a7145d59a"},{url:"fonts/Geist-Variable.woff2",revision:"dfa48d5a853753289194436953e3f202"},{url:"fonts/GEIST-LICENSE.txt",revision:"563d13575f813953c3151e1ecce3b76f"},{url:"assets/yaml-BP_67Sds.js",revision:"f6e3a00922f850852c21a0b2d40f5d2f"},{url:"assets/xml-YcMBzYAm.js",revision:"51b31a66e6360021570279cb5aed3b84"},{url:"assets/workspace-templates-C_bgIQvs.js",revision:"ad2d58a88de02e28e88b80a71f6fb348"},{url:"assets/workspace-page-layout-Dw9NhZsL.js",revision:"0c933f7b6c6bf3c90ea1875abad85392"},{url:"assets/wgsl-DpFanUEy.js",revision:"4cf32279d7c6a601611a6e32a14f3b1e"},{url:"assets/vb-DV3o63ZY.js",revision:"a5b3a756d667f5e4a5da6da4013d7341"},{url:"assets/use-worktree-restore-DF6P7h8g.js",revision:"a47c3be12b1dee96d1197619b0867c8a"},{url:"assets/use-worktree-restore-B-9jHocY.css",revision:"54449cd3d2d5c88b0bd7d88f53f581c3"},{url:"assets/use-tours-CTZuBZOi.css",revision:"2f6d79046e1409f0472f65179eaa76f3"},{url:"assets/use-tours-CMFPIW6f.js",revision:"b07d6477149ae37638de933ae4547b84"},{url:"assets/use-slide-transition-B_Nu6u-t.js",revision:"00b155c171e638ef6fb5919cd6ebaf99"},{url:"assets/use-search-index-status-P7O7EaV_.js",revision:"80946fd0118673d5d66bd11d363cf969"},{url:"assets/use-is-mobile-CDB_rzM9.js",revision:"736bff389e8d66a39ea1d2c842a28c82"},{url:"assets/use-id-BrdYXce0.js",revision:"2f38f32fe319b396537b34b776e791ce"},{url:"assets/use-dark-BHObfh0O.js",revision:"65f079943eb44c61f1a79c389fbe5e29"},{url:"assets/use-checkbox-v4aAbE6K.js",revision:"7eb92cef8192fe736bb1834ae8b13620"},{url:"assets/typespec-B8J7ngcE.js",revision:"6c28560625f59db6a5897aa92de81033"},{url:"assets/typescript-mOGf86uY.js",revision:"3eadd909bd3c1aaa12be29bafe1c25c2"},{url:"assets/twig-De2hgUGE.js",revision:"dfb4c76c8ec0d822070abac68d2bd473"},{url:"assets/tcl-DISqw1ZD.js",revision:"6d0ddaebd76ad41c47c96d484af119f8"},{url:"assets/systemverilog-Bz4Y3fRF.js",revision:"18e6d6e82eeb1107458d8d5531f82246"},{url:"assets/swift-Bxkupp3x.js",revision:"65b88f49188974d7c12e1a6cd12a9de5"},{url:"assets/st-DbInun42.js",revision:"d7294c4d47351db4e5edd4d91e445a21"},{url:"assets/sql-NEE52Syq.js",revision:"48352e15fff2141c7deaaab4e51e9565"},{url:"assets/sparql-D_Lu-MrJ.js",revision:"65390637b1a24614803db6844a0db77b"},{url:"assets/sophia-CRfGWb83.js",revision:"a330db913fee26a14679bed631a59043"},{url:"assets/solidity-BEEn4gHE.js",revision:"c2cd02221ec3d86f9a6bb09bfb1f8978"},{url:"assets/shell-CC2rA5mh.js",revision:"8362d325cda511ef760335e0847d3910"},{url:"assets/scss-gp-XZpBa.js",revision:"bf0805dd5cd80d90fef58c9866a7751e"},{url:"assets/scheme-BeGwcela.js",revision:"55c990715708ea012165486d065b3e2c"},{url:"assets/scala-DHpiXF5c.js",revision:"4eeea167d27954255e39d91412b62f87"},{url:"assets/sb-CcwsVR0C.js",revision:"93fc05f23a9cbb96d4f72dbc73e2e53b"},{url:"assets/rust-DdL9SqIa.js",revision:"356bac76300c8d83e8e9d76becf3c9ea"},{url:"assets/runtime-core.esm-bundler-Bqg71Vll.js",revision:"7feb349c2f329e619c68003a1cb3ca5b"},{url:"assets/ruby-DezsRK8O.js",revision:"95c3294c6d6cead3cccd7e4e973ab964"},{url:"assets/restructuredtext-BYgofb2h.js",revision:"f75377ae694f4e8f0bcccd05b5b9e65c"},{url:"assets/render-chat-markdown-CafzCcmu.js",revision:"336025fd68881d002bff5a7615ecb72f"},{url:"assets/redshift-DT7zqm-g.js",revision:"44e23f67b6a02e60d28c9947cd025207"},{url:"assets/redis-ClamHrr6.js",revision:"e3141183a6756253db43e10f8a305787"},{url:"assets/reactivity.esm-bundler-DY1JkAEA.js",revision:"f1cfbc11612769c44a0303b91e9b3cd2"},{url:"assets/razor-BrGwBzd7.js",revision:"1b43aee8e84d1a04c2b9c0a9ba934b2f"},{url:"assets/r-BwWrilGY.js",revision:"f18d3e790ef07bc993539322d29548e4"},{url:"assets/qsharp-DkqhCAOL.js",revision:"c53fe08a83f8fcbcd81723105136a691"},{url:"assets/python-BOqcp9xc.js",revision:"4a50e5c553b8f325a93085654319bb77"},{url:"assets/pug-Z5eAx3Zn.js",revision:"6e3de6d5214d2cf61b90949e1d383b49"},{url:"assets/protobuf-C531GsRP.js",revision:"04e688a7fef2bde8cef525653497371f"},{url:"assets/project-color-C5mEKdlH.js",revision:"b0d3ea98944057e2137b7e49645f0d3a"},{url:"assets/private.use-form-DY1BkePL.js",revision:"40d007f5f5d046d6278c001bec3ae86d"},{url:"assets/powershell-DmHpPYUd.js",revision:"ff476e9c4398edc9dfd2eb0ee9356352"},{url:"assets/powerquery-D3hlyOfw.js",revision:"0cacccadbe7cd4415f9a3112763c89f3"},{url:"assets/postiats-43DmfD33.js",revision:"b5dbce3331b7ccb325853328702b4bd9"},{url:"assets/pla-CopQ2nXW.js",revision:"b31678678d642accba98d7e7249a20b2"},{url:"assets/php-nr791fC2.js",revision:"ee487693840b66c2abf7c2da872dd6a8"},{url:"assets/pgsql-DTj74zXo.js",revision:"75375029d157fc5e789a13718eed9da7"},{url:"assets/permissionModes-DLWiBfdb.js",revision:"3553789e969961f62cb7167bedd5b8ae"},{url:"assets/perl-oz_6vUea.js",revision:"fee6d319d328db438b336b52ac07a46a"},{url:"assets/pascaligo-D-ptJ9y-.js",revision:"88be4e81a252f44f049ac92f7b6ea518"},{url:"assets/pascal-DrH0SRf2.js",revision:"0d81121099a69b47e10701bf075fe3cd"},{url:"assets/objective-c-FvmIjYaQ.js",revision:"6d64543dd4430fb71bcd7a5347a0398c"},{url:"assets/notify-theme-CMzdjL91.js",revision:"c9a5d63e88ac7c891d60338a2988d1cd"},{url:"assets/network-auth-CMERg4Qk.js",revision:"a53f9e9346598d21c7cf0d4fb1d1b6f9"},{url:"assets/mysql-SOo6toE5.js",revision:"677c089d979324385539e96bd2eb11e4"},{url:"assets/msdax-DauUninz.js",revision:"a63bfea2dd041755a34fe3e307159413"},{url:"assets/monaco.contribution-4AwFLnjV.js",revision:"dd2c0d6946978ec93ac26ee58171fa4b"},{url:"assets/monaco-contributions-DvnCTJI2.css",revision:"964f32a36c06b4d5a66ac1b01556eb2b"},{url:"assets/monaco-contributions-DFKwR-_X.js",revision:"243dc392edd2a3dc689b76d5bfee6b13"},{url:"assets/mips-CIPQ_RoX.js",revision:"b22614ddc8855670a3f76290908877f5"},{url:"assets/mdx-DDJzMB8Q.js",revision:"b3cc87f93f386abdb0acf471b5260add"},{url:"assets/markdown-Cimd5fb3.js",revision:"38eaa88ca7719b9da2894b7c26f2f65b"},{url:"assets/m3-D-oSqn_W.js",revision:"624c73b0332fe1ddfef6013306c5998d"},{url:"assets/lua-CsQS60Ue.js",revision:"5568edf60b64f912bd17561f26e03d44"},{url:"assets/liquid-D_AQLvQl.js",revision:"27cabe11bb7e64f7cc707a9cbf22857b"},{url:"assets/lexon-CfSJPG6W.js",revision:"32b224ffe991474a4cfcbed19971a98d"},{url:"assets/less-B9JPFI3C.js",revision:"c80573ae2313727c545a585d90d3ff36"},{url:"assets/kotlin-BOotOW0E.js",revision:"7c2a31b16b6ddc97b60891b09afa11b1"},{url:"assets/julia-Bri6UV-V.js",revision:"bb5062cdf870c17c7c9be635c1a8a3be"},{url:"assets/javascript-BMvON8oT.js",revision:"0d3087323fbf60da626e09c5399a266b"},{url:"assets/java-BEtHBSE6.js",revision:"987edcd2170749acca47ea184dd9ab25"},{url:"assets/it-DDMC7Emk.js",revision:"ac433a3fa8f01900519d866abe4b7ef8"},{url:"assets/ini-sBoK_t0W.js",revision:"35f8ec10844ea4f62c2712d3f5c1e129"},{url:"assets/index-CH4JpI2a.js",revision:"87a1588f8569b8d24e1399883dee1bfd"},{url:"assets/index-C8zAZ-k-.css",revision:"1488166e385bd7f03f15dbf2e6f4fc60"},{url:"assets/i18n-Df_y96N2.js",revision:"8180f93bc4e9970e74c9a1385b1fb5ca"},{url:"assets/html-Bn3rhcp3.js",revision:"eb9075abc14a814c6717152bb9b17fbe"},{url:"assets/hcl-CpzslTdj.js",revision:"f9ef1004e908957ec1c3bbea2049a0e9"},{url:"assets/handlebars-CeLN7FCP.js",revision:"8922910c03f581a2d30e6aa2b8f71e50"},{url:"assets/graphql-fmXr3nnJ.js",revision:"a51df1d5dca011f5d85dd09a2ffbe1e5"},{url:"assets/go-C-y9NEjX.js",revision:"9213c8381eb32996b86ca9600ca6a07e"},{url:"assets/fsharp-C8Ef5oNN.js",revision:"72f3de59be781f8a4ec49d16bac02119"},{url:"assets/freemarker2-2IrnDDvu.js",revision:"54ad87272ae96ee7d8eecd138d169367"},{url:"assets/fr-BObHEohg.js",revision:"41c8dba7717f00f8ec4ffc07b74018b0"},{url:"assets/formatters-DeKgxYJe.js",revision:"73e885b86ceeab76fb7361a6a3ea456f"},{url:"assets/format-DoyK4IAn.css",revision:"51174980568a53694c8da3cc935fe4e6"},{url:"assets/flow9-C5_-GSwl.js",revision:"0e60dc6453d9684c059f20c846ae0ec4"},{url:"assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-D-x-0Q06.woff2",revision:"a4160421d2605545f69a4cd6cd642902"},{url:"assets/expand-template-CTUNyJrv.css",revision:"a4033bbc7a564e856b2b0c42816a24f7"},{url:"assets/expand-template-BbgnJ8YH.js",revision:"50ee856c0185e858d4e6e254499aead1"},{url:"assets/es-CNcMm1Zz.js",revision:"5d3b4805ef23c7d16aeb5b8d1291b5b2"},{url:"assets/elixir-6RTg0lbw.js",revision:"fb736f7429d9c6a596ed7905653dbf14"},{url:"assets/efforts-ja6uJadn.js",revision:"16168a82024f551bf4161bee3e594640"},{url:"assets/editor.worker-BLJF_oQx.js",revision:"73d3d20cadfc19535b465c224d29ba1b"},{url:"assets/editor.api-iu5YkEl3.js",revision:"4ab3da8631f34f8c8fac0e4ad006b650"},{url:"assets/editor-CmVjQp1O.css",revision:"dda9d7400b872282ecff92d1cb7da023"},{url:"assets/ecl-D05T4iGw.js",revision:"496ceca3c8bae12c563a8a781cf639f3"},{url:"assets/dom-BtYTvLeN.js",revision:"ed94f94fd89f05be544a248d8aa2694e"},{url:"assets/dockerfile-DZFCIeNp.js",revision:"6af03903b1e51179ae2120866bb68acd"},{url:"assets/detached-fullscreen-Du3TcYdX.js",revision:"e1a742ca0ac13ba1d1d45fbce498c981"},{url:"assets/defineProperty-BbfpZ9Tg.js",revision:"489a6e8420626ba7812b1b715b5ed17e"},{url:"assets/de-Bqil7RJE.js",revision:"96a523135d7603a38d73b0e28041a8bc"},{url:"assets/dart-onAF5SnQ.js",revision:"4fc14a4d2b7e030db6af8025d8fe831b"},{url:"assets/cypher-CVaqCwHa.js",revision:"75a568a8c6b29818b6a6c8675841ebf7"},{url:"assets/custom-sounds-DPsfYErA.js",revision:"edd97334a72f4d18e4bd1c27edf6a1f1"},{url:"assets/css-DIMkf-bt.js",revision:"368cd7c0ef4cdeca015fe9fe40ed1b2c"},{url:"assets/csp-bTuwJoIa.js",revision:"d13f525ef224dae69f8bde261bb48507"},{url:"assets/csharp-BKxtCVv1.js",revision:"e5831c8275e73409bc73a3991ceb194e"},{url:"assets/cpp-C7h46wYY.js",revision:"7fa3a56badaae54657cda12c403da2c7"},{url:"assets/coffee-Ba7i2nA0.js",revision:"1a1012b2a9bd329b3b1794297125c9a9"},{url:"assets/codicon-DF1abBS2.ttf",revision:"94829fd323d002e45660034255257955"},{url:"assets/clojure-Cm7r79vr.js",revision:"e3307e92ae8965ebb29ec9c9097774cd"},{url:"assets/clipboard-t9qe6lK7.js",revision:"04f746e11f1ac85a8652dff1abde80f4"},{url:"assets/cameligo-DMUM7wLl.js",revision:"ad01c48b3bff95a5fb691c7cd8427122"},{url:"assets/build-path-tree-DYdRW2T4.js",revision:"84e28fab31b181b17dba94767422ccde"},{url:"assets/browser-C9U-mSDm.js",revision:"c396e1069a80ce4bc85c998bd0712486"},{url:"assets/bicep-B5-_aFwp.js",revision:"b2c3f814c02ba6e4672b16282c0a1376"},{url:"assets/bat-i0X4ZdIN.js",revision:"914960f9abae1bfe5a2189a174a1e1c1"},{url:"assets/azcli-Bc_sGQ0U.js",revision:"c1dfc1889c57d0712d6415ecb14b66ed"},{url:"assets/apex-BWPQTe0t.js",revision:"eee56c5abf95c2575e288f36fdbb8737"},{url:"assets/abap-08VXUWAP.js",revision:"08897cd48182b5410786802ea9af6fa2"},{url:"assets/WorkspacePage-BnklZAYZ.css",revision:"3b0efc21493cc94dca4d313a9a5c5bb0"},{url:"assets/WorkspacePage-BHO1Q8PG.js",revision:"b54efec96ca02764944e289cf87b64bf"},{url:"assets/WorkspaceAttentionLabels-BJPw65vU.js",revision:"1de3a98f642372fb59bd0ec1e15e3062"},{url:"assets/WorkspaceAttentionLabels-B9LE8HtU.css",revision:"8670216f1246dc6e0f51ef50b62f0243"},{url:"assets/TourReplayButton-yeGYf6xT.js",revision:"27383c22522abc89441f914a3abf4957"},{url:"assets/TouchPan-BwCpe_Oh.js",revision:"7800e6579560a6507f97235c7cef7a95"},{url:"assets/ToolCallItem-m-YnWEbv.css",revision:"ff71b53979cd34e71a0d7ac68ba39695"},{url:"assets/ToolCallItem-BMn7eela.js",revision:"40e514ff39fd57c079733a9f5ecf2f11"},{url:"assets/TerminalPanel-Dz9EE-Ph.css",revision:"9fd7805b12e550833d2ac46b5c24dc7a"},{url:"assets/TerminalPanel-Dqw88QqH.js",revision:"ceb595e9750082cbdad6533e1e0b9896"},{url:"assets/SplitWorkspacePage-lWQO8xro.css",revision:"cabea8d2cabbc3e1012ffa88225e04d3"},{url:"assets/SplitWorkspacePage-Dw1qUIFU.js",revision:"8f3551e47d7861f74a5eb1afe13e3ca7"},{url:"assets/SettingsPage-Dcq1Jeoo.css",revision:"a823535042077d3c24eaf895ef5ba449"},{url:"assets/SettingsPage-BCWdQHS5.js",revision:"22fabbaf8dfefdd8847d46c2d06c8447"},{url:"assets/SearchPage-CaeYoIDw.js",revision:"a3da091cf9de22c0b3b73de52feabb61"},{url:"assets/SearchPage-BGc1oQSM.css",revision:"d988bd3c7ed5458189b7225097e4cdeb"},{url:"assets/SchedulePanel-R6H-D-m5.js",revision:"4b61ab92ad569e9ddec2dfd8f71e43b0"},{url:"assets/SchedulePanel-AugvL_tp.css",revision:"cfd82a05588bdf00917646754909fe75"},{url:"assets/QTooltip-be9mqhmB.js",revision:"1a63b01cc0a69d9a41001555e0733dd9"},{url:"assets/QSpinnerDots-xdWyaE1i.js",revision:"55b8a4269a2b5e98cf5814142583ffca"},{url:"assets/QSelect-GQAsf7pB.js",revision:"dae42b4a63883be2141e02203c9eec7c"},{url:"assets/QScrollArea-DeczMHVs.js",revision:"d29ea8ef60658757189e7d936243bfcf"},{url:"assets/QPage-CqkGHokx.js",revision:"8b288520e591a41f177e3791dc7faa23"},{url:"assets/QMarkupTable-UhP7fVUp.js",revision:"c92050ccd8960b77d3fe62f5f571e5d5"},{url:"assets/QList-Cx1UfaUm.js",revision:"cc5735e323efbe3482109703554ecfb7"},{url:"assets/QItemSection-MdJ1_ZK7.js",revision:"d550545b87d619522be2c2702c9a6d9f"},{url:"assets/QExpansionItem-xIXDevKz.js",revision:"8d9fce077ed35742a0ddd94f7e36fcfb"},{url:"assets/QChip-Be16M4Ig.js",revision:"d217d603e5c6e691c02a888ffc1d213b"},{url:"assets/QBtnToggle-DccOOtbh.js",revision:"8c64e4c2fd1a993cb56403d1e62e6c09"},{url:"assets/QBtnGroup-CnM4vSJA.js",revision:"ddfd643b34c3c3ae7d3aa4a27bea664f"},{url:"assets/QBtnDropdown-Cxr3lBPB.js",revision:"61e564ec4baf4661ccfc80d24b7a597e"},{url:"assets/QBtn-BUSdPaf4.js",revision:"d17c16beb07a97466b66d2d27b5a5ad8"},{url:"assets/QBanner-BT2ZemYu.js",revision:"5f6df26329a8dca94971f06f78162d70"},{url:"assets/QBadge-CW3Lw-kL.js",revision:"4f52dbd5f6dcaa77fd5b226d6053351a"},{url:"assets/MemoryProposalList-OmDpl3o5.css",revision:"eba7a0c30ad67b57e7c59179058128fc"},{url:"assets/MemoryProposalList-B5uVf3KU.js",revision:"3103fa05b4974cf05872a8eee08d362e"},{url:"assets/MemoryPanel-SrR94UVW.js",revision:"0edc8d043ab515d1a606fe937a51ed85"},{url:"assets/MemoryPanel-Ch3qeyQw.css",revision:"a080bd22ae7a7eb244df25c0a42d0f7c"},{url:"assets/MainLayout-DoAEgANU.css",revision:"2e7b4665a554e739954e8539183b1b22"},{url:"assets/MainLayout-D3pGcTx8.js",revision:"d52e4702f0b6bb7576df7286754b5acb"},{url:"assets/HealthPage-lc2Cuuks.js",revision:"6184eba8c766735627b003205a192439"},{url:"assets/HealthPage-Cnlhrn--.css",revision:"937880bb96f3708c02608a026c875bbb"},{url:"assets/GitPanel-DQjgGtoN.js",revision:"acb5f1003cd43f060b55c3ebf23ae0ea"},{url:"assets/GitPanel-CRaLJzjc.css",revision:"203d85302f17c88509347ffd21f9fe48"},{url:"assets/DrawerToggleButton-CiVNMTbq.js",revision:"dd29a8e52f0ed11948079aa2018e1bb8"},{url:"assets/DocumentsPanel-DXjjhGUg.js",revision:"2c7f5a75f9b59823b8e53acd85187d2f"},{url:"assets/DocumentsPanel-B8QY7FTj.css",revision:"676a3a838b07224f48fdd99e0cb6bbc8"},{url:"assets/DiffViewer-XzCvEKLJ.css",revision:"47d3da30a0a9f571e2e15e8f4ce1bd95"},{url:"assets/DiffViewer-BivWNITj.js",revision:"a2b1f02c781ca5c4cfb9543066275972"},{url:"assets/DashboardPage-CtaHaVdf.css",revision:"729d05fd05c14a73cbbfd35f6d3be6fd"},{url:"assets/DashboardPage-B8gTooRi.js",revision:"ca0f7be701b99b6b18d9bb60ab3c04a2"},{url:"assets/CreatePage-DyF_efbs.js",revision:"8ced8bd276a00cdab3e04b064aaf2789"},{url:"assets/CreatePage-DxOes_cF.css",revision:"343616e2ae2ef668bcfc74313d88d69f"},{url:"assets/ComparisonPanel-DwaQyEgb.js",revision:"f3b9bc1b9616f9da7f15eb24f6aedcfc"},{url:"assets/ComparisonPanel-ByVbqYCs.css",revision:"40f8723a54937dbdb64e5de3d8bda349"},{url:"assets/ClosePopup-CRV2hxHS.js",revision:"408af589ed45c4f8e5f53522bc47c5f2"},{url:"assets/ChangelogPage-DVyx9ZjV.css",revision:"fd9c6a99457c6fb03e97d8137880243c"},{url:"assets/ChangelogPage-DH-zUtlf.js",revision:"f06285dd5bf541a781d8e9e7c2710c0e"},{url:"assets/AutoLoopFinalReviewSettings-Q-OlSQ1c.css",revision:"a2e7b8d9f10da2fb2302213449f9428e"},{url:"assets/AutoLoopFinalReviewSettings-Dafi7Tue.js",revision:"15525db61c3b506d0d314636af082d28"},{url:"assets/ActivityFeed-xJMPnXKA.js",revision:"8de86533c411dcdaef17b025d6264adc"},{url:"assets/ActivityFeed-CmAFv-2c.css",revision:"c38db0a8b8c5935086648fa3a8dc5fa6"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"),{denylist:[/sw\.js$/,/workbox-(.)*\.js$/]}))});
|
|
1
|
+
if(!self.define){let s,e={};const a=(a,r)=>(a=new URL(a+".js",r).href,e[a]||new Promise(e=>{if("document"in self){const s=document.createElement("script");s.src=a,s.onload=e,document.head.appendChild(s)}else s=a,importScripts(a),e()}).then(()=>{let s=e[a];if(!s)throw new Error(`Module ${a} didn’t register its module`);return s}));self.define=(r,c)=>{const i=s||("document"in self?document.currentScript.src:"")||location.href;if(e[i])return;let d={};const f=s=>a(s,i),b={module:{uri:i},exports:d,require:f};e[i]=Promise.all(r.map(s=>b[s]||f(s))).then(s=>(c(...s),d))}}define(["./workbox-778a14ff"],function(s){"use strict";s.setCacheNameDetails({prefix:"kobo-client"}),self.addEventListener("message",s=>{s.data&&"SKIP_WAITING"===s.data.type&&self.skipWaiting()}),s.clientsClaim(),s.precacheAndRoute([{url:"manifest.json",revision:"73f02ba4eb4414fb70bbe5ca76cc9580"},{url:"index.html",revision:"65ad3a0109a02ba1db153acf33fe483d"},{url:"favicon.svg",revision:"9d89ef10d49f14d08c25cfca9bd4ea75"},{url:"sounds/ready.wav",revision:"cd00e80e7a9d443a0e95272bb22bed6e"},{url:"sounds/neutral.wav",revision:"cb264f6e7eb97388229e82fe7d6fa5cf"},{url:"fonts/GeistMono-Variable.woff2",revision:"308360d8a547331fd40bc09a7145d59a"},{url:"fonts/Geist-Variable.woff2",revision:"dfa48d5a853753289194436953e3f202"},{url:"fonts/GEIST-LICENSE.txt",revision:"563d13575f813953c3151e1ecce3b76f"},{url:"assets/yaml-gasFQtfk.js",revision:"038f774f36a6cdb75a08bd65be16afc6"},{url:"assets/xml-BbOuqdUe.js",revision:"da8461f945c71ca2fcd557fce814f1de"},{url:"assets/workspace-templates-D-lPJQ4G.js",revision:"bc71d17b6dbbb560fc2b7c667d38dc97"},{url:"assets/workspace-page-layout-Dw9NhZsL.js",revision:"0c933f7b6c6bf3c90ea1875abad85392"},{url:"assets/wgsl-DpFanUEy.js",revision:"4cf32279d7c6a601611a6e32a14f3b1e"},{url:"assets/vb-DV3o63ZY.js",revision:"a5b3a756d667f5e4a5da6da4013d7341"},{url:"assets/use-worktree-restore-DUjZr44N.js",revision:"012f7a7ad254e928b1497a3e5f3487e8"},{url:"assets/use-worktree-restore-B-9jHocY.css",revision:"54449cd3d2d5c88b0bd7d88f53f581c3"},{url:"assets/use-tours-CTZuBZOi.css",revision:"2f6d79046e1409f0472f65179eaa76f3"},{url:"assets/use-tours-BWkHp34X.js",revision:"acd654e06d85e77af2694a466c354702"},{url:"assets/use-slide-transition-B_Nu6u-t.js",revision:"00b155c171e638ef6fb5919cd6ebaf99"},{url:"assets/use-search-index-status-D38yFOD_.js",revision:"ca3782981c1ae37f345327b89a03ec5c"},{url:"assets/use-is-mobile-CDB_rzM9.js",revision:"736bff389e8d66a39ea1d2c842a28c82"},{url:"assets/use-id-BrdYXce0.js",revision:"2f38f32fe319b396537b34b776e791ce"},{url:"assets/use-dark-BHObfh0O.js",revision:"65f079943eb44c61f1a79c389fbe5e29"},{url:"assets/use-checkbox-v4aAbE6K.js",revision:"7eb92cef8192fe736bb1834ae8b13620"},{url:"assets/typespec-B8J7ngcE.js",revision:"6c28560625f59db6a5897aa92de81033"},{url:"assets/typescript-0kpz8bqP.js",revision:"3abb35dfe84fd56d0724a9b51ce5fcbd"},{url:"assets/twig-De2hgUGE.js",revision:"dfb4c76c8ec0d822070abac68d2bd473"},{url:"assets/tcl-DISqw1ZD.js",revision:"6d0ddaebd76ad41c47c96d484af119f8"},{url:"assets/systemverilog-Bz4Y3fRF.js",revision:"18e6d6e82eeb1107458d8d5531f82246"},{url:"assets/swift-Bxkupp3x.js",revision:"65b88f49188974d7c12e1a6cd12a9de5"},{url:"assets/st-DbInun42.js",revision:"d7294c4d47351db4e5edd4d91e445a21"},{url:"assets/sql-NEE52Syq.js",revision:"48352e15fff2141c7deaaab4e51e9565"},{url:"assets/sparql-D_Lu-MrJ.js",revision:"65390637b1a24614803db6844a0db77b"},{url:"assets/sophia-CRfGWb83.js",revision:"a330db913fee26a14679bed631a59043"},{url:"assets/solidity-BEEn4gHE.js",revision:"c2cd02221ec3d86f9a6bb09bfb1f8978"},{url:"assets/shell-CC2rA5mh.js",revision:"8362d325cda511ef760335e0847d3910"},{url:"assets/scss-gp-XZpBa.js",revision:"bf0805dd5cd80d90fef58c9866a7751e"},{url:"assets/scheme-BeGwcela.js",revision:"55c990715708ea012165486d065b3e2c"},{url:"assets/scala-DHpiXF5c.js",revision:"4eeea167d27954255e39d91412b62f87"},{url:"assets/sb-CcwsVR0C.js",revision:"93fc05f23a9cbb96d4f72dbc73e2e53b"},{url:"assets/rust-DdL9SqIa.js",revision:"356bac76300c8d83e8e9d76becf3c9ea"},{url:"assets/runtime-core.esm-bundler-Bqg71Vll.js",revision:"7feb349c2f329e619c68003a1cb3ca5b"},{url:"assets/ruby-DezsRK8O.js",revision:"95c3294c6d6cead3cccd7e4e973ab964"},{url:"assets/restructuredtext-BYgofb2h.js",revision:"f75377ae694f4e8f0bcccd05b5b9e65c"},{url:"assets/render-chat-markdown-CafzCcmu.js",revision:"336025fd68881d002bff5a7615ecb72f"},{url:"assets/redshift-DT7zqm-g.js",revision:"44e23f67b6a02e60d28c9947cd025207"},{url:"assets/redis-ClamHrr6.js",revision:"e3141183a6756253db43e10f8a305787"},{url:"assets/reactivity.esm-bundler-DY1JkAEA.js",revision:"f1cfbc11612769c44a0303b91e9b3cd2"},{url:"assets/razor-CB3g5p_T.js",revision:"9625e1cbbfc1b664ce177a2604144282"},{url:"assets/r-BwWrilGY.js",revision:"f18d3e790ef07bc993539322d29548e4"},{url:"assets/qsharp-DkqhCAOL.js",revision:"c53fe08a83f8fcbcd81723105136a691"},{url:"assets/python-DNAAGBcX.js",revision:"374a9501fc718560bd7ac7292491a94e"},{url:"assets/pug-Z5eAx3Zn.js",revision:"6e3de6d5214d2cf61b90949e1d383b49"},{url:"assets/protobuf-C531GsRP.js",revision:"04e688a7fef2bde8cef525653497371f"},{url:"assets/project-color-_snXWYUp.js",revision:"673c06f046b9955993d04ae8e605336f"},{url:"assets/private.use-form-DY1BkePL.js",revision:"40d007f5f5d046d6278c001bec3ae86d"},{url:"assets/powershell-DmHpPYUd.js",revision:"ff476e9c4398edc9dfd2eb0ee9356352"},{url:"assets/powerquery-D3hlyOfw.js",revision:"0cacccadbe7cd4415f9a3112763c89f3"},{url:"assets/postiats-43DmfD33.js",revision:"b5dbce3331b7ccb325853328702b4bd9"},{url:"assets/pla-CopQ2nXW.js",revision:"b31678678d642accba98d7e7249a20b2"},{url:"assets/php-nr791fC2.js",revision:"ee487693840b66c2abf7c2da872dd6a8"},{url:"assets/pgsql-DTj74zXo.js",revision:"75375029d157fc5e789a13718eed9da7"},{url:"assets/permissionModes-D-Nexnoo.js",revision:"0d51a20258a9841ed3b2ab6604ae35ed"},{url:"assets/perl-oz_6vUea.js",revision:"fee6d319d328db438b336b52ac07a46a"},{url:"assets/pascaligo-D-ptJ9y-.js",revision:"88be4e81a252f44f049ac92f7b6ea518"},{url:"assets/pascal-DrH0SRf2.js",revision:"0d81121099a69b47e10701bf075fe3cd"},{url:"assets/objective-c-FvmIjYaQ.js",revision:"6d64543dd4430fb71bcd7a5347a0398c"},{url:"assets/notify-theme-FuTL7HuS.js",revision:"c58249fef84b2f8084f47a3755474a85"},{url:"assets/network-auth-DTZUKbny.js",revision:"3c4230cfa57c17e3ca5f94a2a13ae338"},{url:"assets/mysql-SOo6toE5.js",revision:"677c089d979324385539e96bd2eb11e4"},{url:"assets/msdax-DauUninz.js",revision:"a63bfea2dd041755a34fe3e307159413"},{url:"assets/monaco.contribution-DYdn9CwR.js",revision:"a4c1755e5acf1c7491da5a265bf80354"},{url:"assets/monaco-contributions-DvnCTJI2.css",revision:"964f32a36c06b4d5a66ac1b01556eb2b"},{url:"assets/monaco-contributions-DHvm-kp5.js",revision:"061b3627cd66957ada4d825c904bd92a"},{url:"assets/mips-CIPQ_RoX.js",revision:"b22614ddc8855670a3f76290908877f5"},{url:"assets/mdx-E74dsP22.js",revision:"601885f1a82fcad442a30249c6decd07"},{url:"assets/markdown-Cimd5fb3.js",revision:"38eaa88ca7719b9da2894b7c26f2f65b"},{url:"assets/m3-D-oSqn_W.js",revision:"624c73b0332fe1ddfef6013306c5998d"},{url:"assets/lua-CsQS60Ue.js",revision:"5568edf60b64f912bd17561f26e03d44"},{url:"assets/liquid-C1HqYyYU.js",revision:"83b420f3c80032ec961c7d8f3ace4978"},{url:"assets/lexon-CfSJPG6W.js",revision:"32b224ffe991474a4cfcbed19971a98d"},{url:"assets/less-B9JPFI3C.js",revision:"c80573ae2313727c545a585d90d3ff36"},{url:"assets/kotlin-BOotOW0E.js",revision:"7c2a31b16b6ddc97b60891b09afa11b1"},{url:"assets/julia-Bri6UV-V.js",revision:"bb5062cdf870c17c7c9be635c1a8a3be"},{url:"assets/javascript-BBYncplF.js",revision:"b54e5bb3f5a5430eeb0fa4756ab24c7c"},{url:"assets/java-BEtHBSE6.js",revision:"987edcd2170749acca47ea184dd9ab25"},{url:"assets/it-DUstDpC2.js",revision:"f302614126d79dfb7aa8a8aa7990ff04"},{url:"assets/ini-sBoK_t0W.js",revision:"35f8ec10844ea4f62c2712d3f5c1e129"},{url:"assets/index-CpWBGKdM.js",revision:"a92d232b0ea76ce4c76fea30d3305aef"},{url:"assets/index-C8zAZ-k-.css",revision:"1488166e385bd7f03f15dbf2e6f4fc60"},{url:"assets/i18n-WaE4cZK9.js",revision:"351bbbc746cee23fbaab766d50f1f97f"},{url:"assets/html-CERIAlPM.js",revision:"8d975050cd8246c111e31180356a2f68"},{url:"assets/hcl-CpzslTdj.js",revision:"f9ef1004e908957ec1c3bbea2049a0e9"},{url:"assets/handlebars-DFmPrgjH.js",revision:"8643401d98735694cc9cdf7c3bbb54e1"},{url:"assets/graphql-fmXr3nnJ.js",revision:"a51df1d5dca011f5d85dd09a2ffbe1e5"},{url:"assets/go-C-y9NEjX.js",revision:"9213c8381eb32996b86ca9600ca6a07e"},{url:"assets/fsharp-C8Ef5oNN.js",revision:"72f3de59be781f8a4ec49d16bac02119"},{url:"assets/freemarker2-l7R42fI2.js",revision:"23f4e40a1b8d02ce24d3b543eac8fae6"},{url:"assets/fr-B6c21SG3.js",revision:"20b71fbf874f7585c38f00899becbac4"},{url:"assets/formatters-YgaCZcwJ.js",revision:"d888d1073a3c20c47562f2ab968d5fdc"},{url:"assets/format-DoyK4IAn.css",revision:"51174980568a53694c8da3cc935fe4e6"},{url:"assets/flow9-C5_-GSwl.js",revision:"0e60dc6453d9684c059f20c846ae0ec4"},{url:"assets/flUhRq6tzZclQEJ-Vdg-IuiaDsNcIhQ8tQ-D-x-0Q06.woff2",revision:"a4160421d2605545f69a4cd6cd642902"},{url:"assets/expand-template-DM8gq3Mo.js",revision:"0ec3cbb3bcce635cae1baf7d159d16f6"},{url:"assets/expand-template-CTUNyJrv.css",revision:"a4033bbc7a564e856b2b0c42816a24f7"},{url:"assets/es-f3xuAWA9.js",revision:"cce442225b7fbb096c53c148d4935e32"},{url:"assets/elixir-6RTg0lbw.js",revision:"fb736f7429d9c6a596ed7905653dbf14"},{url:"assets/efforts-TGacUPcJ.js",revision:"a7c0aa0a67fecd3ab9e8c505ce844bba"},{url:"assets/editor.worker-BLJF_oQx.js",revision:"73d3d20cadfc19535b465c224d29ba1b"},{url:"assets/editor.api-BC38eXAS.js",revision:"86d7d3f12e95c853ed646ea614f6dea0"},{url:"assets/editor-CmVjQp1O.css",revision:"dda9d7400b872282ecff92d1cb7da023"},{url:"assets/ecl-D05T4iGw.js",revision:"496ceca3c8bae12c563a8a781cf639f3"},{url:"assets/dom-BtYTvLeN.js",revision:"ed94f94fd89f05be544a248d8aa2694e"},{url:"assets/dockerfile-DZFCIeNp.js",revision:"6af03903b1e51179ae2120866bb68acd"},{url:"assets/detached-fullscreen-Du3TcYdX.js",revision:"e1a742ca0ac13ba1d1d45fbce498c981"},{url:"assets/defineProperty-BbfpZ9Tg.js",revision:"489a6e8420626ba7812b1b715b5ed17e"},{url:"assets/de-Bk3zQrin.js",revision:"141be32da701da761711c10d8ca527d6"},{url:"assets/dart-onAF5SnQ.js",revision:"4fc14a4d2b7e030db6af8025d8fe831b"},{url:"assets/cypher-CVaqCwHa.js",revision:"75a568a8c6b29818b6a6c8675841ebf7"},{url:"assets/custom-sounds-Ggw6V9iF.js",revision:"a26e3576a5d78c7ed55451736ca7ee47"},{url:"assets/css-DIMkf-bt.js",revision:"368cd7c0ef4cdeca015fe9fe40ed1b2c"},{url:"assets/csp-bTuwJoIa.js",revision:"d13f525ef224dae69f8bde261bb48507"},{url:"assets/csharp-BKxtCVv1.js",revision:"e5831c8275e73409bc73a3991ceb194e"},{url:"assets/cpp-C7h46wYY.js",revision:"7fa3a56badaae54657cda12c403da2c7"},{url:"assets/coffee-Ba7i2nA0.js",revision:"1a1012b2a9bd329b3b1794297125c9a9"},{url:"assets/codicon-DF1abBS2.ttf",revision:"94829fd323d002e45660034255257955"},{url:"assets/clojure-Cm7r79vr.js",revision:"e3307e92ae8965ebb29ec9c9097774cd"},{url:"assets/clipboard-t9qe6lK7.js",revision:"04f746e11f1ac85a8652dff1abde80f4"},{url:"assets/cameligo-DMUM7wLl.js",revision:"ad01c48b3bff95a5fb691c7cd8427122"},{url:"assets/build-path-tree-DEuOdIIk.js",revision:"9b9c11547d913c5e36bac27b83d5657a"},{url:"assets/browser-DVYLH8vl.js",revision:"aaecfdcff1d1f1217a6530947dd18a30"},{url:"assets/bicep-B5-_aFwp.js",revision:"b2c3f814c02ba6e4672b16282c0a1376"},{url:"assets/bat-i0X4ZdIN.js",revision:"914960f9abae1bfe5a2189a174a1e1c1"},{url:"assets/azcli-Bc_sGQ0U.js",revision:"c1dfc1889c57d0712d6415ecb14b66ed"},{url:"assets/apex-BWPQTe0t.js",revision:"eee56c5abf95c2575e288f36fdbb8737"},{url:"assets/abap-08VXUWAP.js",revision:"08897cd48182b5410786802ea9af6fa2"},{url:"assets/WorkspacePage-K-1ce50d.js",revision:"5002985057a8ce2632a25f0d4c4cd2b2"},{url:"assets/WorkspacePage-BEBwwr81.css",revision:"3dc4ba1d5ee9021d8e8a5a80fb6f7bbd"},{url:"assets/WorkspaceAttentionLabels-DiYt3rP3.js",revision:"adf6fa45cd2a25eda9239f74a10534f8"},{url:"assets/WorkspaceAttentionLabels-B9LE8HtU.css",revision:"8670216f1246dc6e0f51ef50b62f0243"},{url:"assets/TourReplayButton-kAnEMcy2.js",revision:"a55d5ae282210ab67d17066d4b4debfd"},{url:"assets/TouchPan-DDotyYLN.js",revision:"29de39cc10a7b5fe2c8c36f3d559b25f"},{url:"assets/ToolCallItem-m-YnWEbv.css",revision:"ff71b53979cd34e71a0d7ac68ba39695"},{url:"assets/ToolCallItem-DYubi-J0.js",revision:"d1443b24a5c02c648365642238da303c"},{url:"assets/TerminalPanel-BcbwuFVR.css",revision:"7cfa3d2254c7739187c36cc3c60f8fbf"},{url:"assets/TerminalPanel-BY0lPq6k.js",revision:"7265078c0157a254fe1847a90f823bc0"},{url:"assets/SplitWorkspacePage-lWQO8xro.css",revision:"cabea8d2cabbc3e1012ffa88225e04d3"},{url:"assets/SplitWorkspacePage-WhQyX8fn.js",revision:"09bc6436ced2037beb68dfca97dd6f0c"},{url:"assets/SettingsPage-CO3vIpPd.js",revision:"ca6fb60e76608e9340386aaba65241e3"},{url:"assets/SettingsPage-B4rmd2WX.css",revision:"e5db2c331d5ef7420674816b22bd194b"},{url:"assets/SearchPage-DKnQPUqY.js",revision:"53ee4bfb09cb8321148ccb3d19eaac95"},{url:"assets/SearchPage-BGc1oQSM.css",revision:"d988bd3c7ed5458189b7225097e4cdeb"},{url:"assets/SchedulePanel-CuxmxCKi.js",revision:"431f90b5e1d222823d5fbda4114ac0c6"},{url:"assets/SchedulePanel-AugvL_tp.css",revision:"cfd82a05588bdf00917646754909fe75"},{url:"assets/QTooltip-Bk8dLUtU.js",revision:"dfc36d2b7804ffb27ff8dd4a02b7c068"},{url:"assets/QSpinnerDots-xdWyaE1i.js",revision:"55b8a4269a2b5e98cf5814142583ffca"},{url:"assets/QSelect-DFWyDWCE.js",revision:"cbf26ed0a0b50a72b44f0b172f935cf2"},{url:"assets/QScrollArea-BMrqK-xd.js",revision:"60df6d89a568467ab6b0a3ade20dbd91"},{url:"assets/QPage-CqkGHokx.js",revision:"8b288520e591a41f177e3791dc7faa23"},{url:"assets/QMarkupTable-UhP7fVUp.js",revision:"c92050ccd8960b77d3fe62f5f571e5d5"},{url:"assets/QList-Cx1UfaUm.js",revision:"cc5735e323efbe3482109703554ecfb7"},{url:"assets/QItemSection-MdJ1_ZK7.js",revision:"d550545b87d619522be2c2702c9a6d9f"},{url:"assets/QExpansionItem-D-EGL2b3.js",revision:"8726aa2cc3135848199a56b9177157be"},{url:"assets/QChip-Be16M4Ig.js",revision:"d217d603e5c6e691c02a888ffc1d213b"},{url:"assets/QBtnToggle-DccOOtbh.js",revision:"8c64e4c2fd1a993cb56403d1e62e6c09"},{url:"assets/QBtnGroup-CnM4vSJA.js",revision:"ddfd643b34c3c3ae7d3aa4a27bea664f"},{url:"assets/QBtnDropdown-CWPIugs8.js",revision:"79943b0d3444cf1d193846dc000f65a3"},{url:"assets/QBtn-BUSdPaf4.js",revision:"d17c16beb07a97466b66d2d27b5a5ad8"},{url:"assets/QBanner-BT2ZemYu.js",revision:"5f6df26329a8dca94971f06f78162d70"},{url:"assets/QBadge-CW3Lw-kL.js",revision:"4f52dbd5f6dcaa77fd5b226d6053351a"},{url:"assets/MemoryProposalList-kgFCm9zz.js",revision:"aef4e724f44110d15a7dd78e8409a90f"},{url:"assets/MemoryProposalList-OmDpl3o5.css",revision:"eba7a0c30ad67b57e7c59179058128fc"},{url:"assets/MemoryPanel-DtEvh_b7.js",revision:"5285f22075bf9764d0c63001af19f2ec"},{url:"assets/MemoryPanel-Ch3qeyQw.css",revision:"a080bd22ae7a7eb244df25c0a42d0f7c"},{url:"assets/MainLayout-DoAEgANU.css",revision:"2e7b4665a554e739954e8539183b1b22"},{url:"assets/MainLayout-DgWElK7w.js",revision:"4ea027e8f38fb95e5b00f754fea31f5f"},{url:"assets/HealthPage-hJY5MurK.js",revision:"1978b0524ca84f51bd97203e97e41a41"},{url:"assets/HealthPage-Cnlhrn--.css",revision:"937880bb96f3708c02608a026c875bbb"},{url:"assets/GitPanel-yHvU38dp.css",revision:"91678cdf135b2c24f816f04d2faae280"},{url:"assets/GitPanel-WJlzy2VJ.js",revision:"846e37e431aaaed47d76345786e5be35"},{url:"assets/DrawerToggleButton-DiOJm5he.js",revision:"22f079d57aa873fa8075e9bdb056b100"},{url:"assets/DocumentsPanel-L4pbQfz1.js",revision:"164ef31ddbbc3e3208d324d6d3bd87b0"},{url:"assets/DocumentsPanel-B8QY7FTj.css",revision:"676a3a838b07224f48fdd99e0cb6bbc8"},{url:"assets/DiffViewer-XzCvEKLJ.css",revision:"47d3da30a0a9f571e2e15e8f4ce1bd95"},{url:"assets/DiffViewer-CncKlXne.js",revision:"0dc9dcb909c5c9ebb6424ff9801c364a"},{url:"assets/DashboardPage-XE52EABP.js",revision:"b46e76f80d77de0339ad8172b0b33d8a"},{url:"assets/DashboardPage-CtaHaVdf.css",revision:"729d05fd05c14a73cbbfd35f6d3be6fd"},{url:"assets/CreatePage-DxOes_cF.css",revision:"343616e2ae2ef668bcfc74313d88d69f"},{url:"assets/CreatePage-DasH1Uk4.js",revision:"ee11f75189c7c59f71c355618b038d41"},{url:"assets/ComparisonPanel-ByVbqYCs.css",revision:"40f8723a54937dbdb64e5de3d8bda349"},{url:"assets/ComparisonPanel-BCb7vB5E.js",revision:"8605ec0fffc1ceb7d8a832d7a0a4bc1f"},{url:"assets/ClosePopup-CRV2hxHS.js",revision:"408af589ed45c4f8e5f53522bc47c5f2"},{url:"assets/ChangelogPage-DVyx9ZjV.css",revision:"fd9c6a99457c6fb03e97d8137880243c"},{url:"assets/ChangelogPage-CAAUEn5X.js",revision:"20df54028a58c6dafb8075f0e13e150e"},{url:"assets/AutoLoopFinalReviewSettings-Q-OlSQ1c.css",revision:"a2e7b8d9f10da2fb2302213449f9428e"},{url:"assets/AutoLoopFinalReviewSettings-CK3r_fVB.js",revision:"2c80203b8aea9c6b7cfb0f274850e504"},{url:"assets/ActivityFeed-D58VS9o2.js",revision:"3d548890756b276fa8475e8faf157ca9"},{url:"assets/ActivityFeed-CmAFv-2c.css",revision:"c38db0a8b8c5935086648fa3a8dc5fa6"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"),{denylist:[/sw\.js$/,/workbox-(.)*\.js$/]}))});
|
package/src/mcp-server/README.md
CHANGED
|
@@ -6,7 +6,7 @@ Kōbō also exposes workspace creation, PR checkout diagnosis, conversation and
|
|
|
6
6
|
|
|
7
7
|
## Connect an external LLM
|
|
8
8
|
|
|
9
|
-
**Settings → Global → Network access → External LLM access (MCP)** provides this installation's backend URLs and a local stdio configuration.
|
|
9
|
+
**Settings → Global → Network access → External LLM access (MCP)** provides this installation's backend URLs and a local stdio configuration. Create a dedicated MCP key, choose its allowed tools and workspaces, and optionally set an expiry. New keys default to read-only. Copy the new key immediately: it is displayed only once, and only its SHA-256 hash is stored. **Copy with new key** includes that key; previews always use a placeholder. Keys can be revoked independently from this panel. Development configurations use the backend port, independently of the UI port. The JSON examples use a generic `mcpServers` format; adapt the enclosing configuration to your client.
|
|
10
10
|
|
|
11
11
|
### HTTP (local or remote)
|
|
12
12
|
|
|
@@ -18,17 +18,15 @@ http://127.0.0.1:3000/api/mcp
|
|
|
18
18
|
|
|
19
19
|
Use the backend's actual port (`3300` for the default development server). This endpoint needs no database path or separate MCP process. It supports MCP initialization, tool discovery and JSON responses; conversation updates are retrieved by polling a cursor rather than a persistent event stream.
|
|
20
20
|
|
|
21
|
-
For another machine, enable [Network access](../../CONFIGURATION.md#network-access), restart Kōbō as instructed there, and replace `127.0.0.1` with its reachable address. Configure
|
|
21
|
+
For another machine, enable [Network access](../../CONFIGURATION.md#network-access), restart Kōbō as instructed there, and replace `127.0.0.1` with its reachable address. Configure this header in every MCP client, including local clients:
|
|
22
22
|
|
|
23
23
|
```text
|
|
24
|
-
Authorization: Bearer <your Kōbō
|
|
24
|
+
Authorization: Bearer <your dedicated Kōbō MCP key>
|
|
25
25
|
```
|
|
26
26
|
|
|
27
|
-
|
|
28
|
-
X-Kobo-Token: <your Kōbō network access token>
|
|
29
|
-
```
|
|
27
|
+
Administrator tokens, browser cookies and `X-Kobo-Token` are not accepted by `/api/mcp`. Dedicated MCP keys cannot authenticate administrative API or WebSocket access. The existing Host/Origin checks and reverse-proxy settings also apply. OAuth authorization flows are not supported. For public access, use HTTPS. Adding this endpoint does not enable network access automatically.
|
|
30
28
|
|
|
31
|
-
|
|
29
|
+
Both tool discovery and execution reload the key's current grants. Authentication is rechecked after receiving the request body, so revocation or expiry during a slow upload prevents dispatch. Revocation does not cancel an operation already dispatched; inspect its result before retrying. Selecting workspace IDs filters discovery results and denies other workspaces without revealing whether they exist. Global tools (creation, PR diagnosis and group preview/receipts) require an explicit **All workspaces** grant. Restricted keys can discover only their granted workspace-owned memory scopes, including fresh empty scopes and their current generation/revision. For restricted keys, memory reads/writes only address the selected workspaces' own memory scopes, excluding inherited global/project memory. An all-workspace key with memory tool grants can access global/project memory too. Mutation and destructive tools require explicit tool grants; no confirmation boolean expands a credential's scope.
|
|
32
30
|
|
|
33
31
|
The HTTP endpoint exposes `list_workspaces` and the six [conversation tools](#conversation-tools) below. Its discovery response is an array of `{ id, name, status, projectPath, archivedAt }`.
|
|
34
32
|
|
|
@@ -43,7 +41,7 @@ The existing global server exposes the same six conversation tools alongside its
|
|
|
43
41
|
"command": "node",
|
|
44
42
|
"args": ["/absolute/path/to/Kobo/dist/mcp-server/kobo-tasks-server.js"],
|
|
45
43
|
"env": {
|
|
46
|
-
"
|
|
44
|
+
"KOBO_MCP_TOKEN": "<your dedicated MCP key>",
|
|
47
45
|
"KOBO_BACKEND_URL": "http://127.0.0.1:3000"
|
|
48
46
|
}
|
|
49
47
|
}
|
|
@@ -51,7 +49,7 @@ The existing global server exposes the same six conversation tools alongside its
|
|
|
51
49
|
}
|
|
52
50
|
```
|
|
53
51
|
|
|
54
|
-
Leave `KOBO_WORKSPACE_ID` unset or empty for an external client.
|
|
52
|
+
Leave `KOBO_WORKSPACE_ID` unset or empty for an external client. Set `KOBO_MCP_TOKEN` to its dedicated MCP key, even on loopback. Global stdio forwards discovery and every operation to the running backend; it does not open SQLite or receive administrator credentials. Keep client configuration files private because they contain the issued key.
|
|
55
53
|
|
|
56
54
|
### Conversation tools
|
|
57
55
|
|
|
@@ -159,18 +157,14 @@ into the worktree.
|
|
|
159
157
|
| Env var | Purpose |
|
|
160
158
|
|---|---|
|
|
161
159
|
| `KOBO_WORKSPACE_ID` | ID of the current workspace — scopes workspace-local queries. Optional: when unset, the server runs in "global" mode (see [Global tools](#global-tools-workspace-less-mode) below) and exposes management and conversation tools; workspace-scoped tools are omitted from the tool list entirely. |
|
|
162
|
-
| `KOBO_DB_PATH` |
|
|
160
|
+
| `KOBO_DB_PATH` | Legacy compatibility metadata; stdio does not open the database. |
|
|
163
161
|
| `KOBO_SETTINGS_PATH` | Absolute path to Kōbō's `settings.json`. Optional — `get_settings` returns an error shape if absent. |
|
|
164
162
|
| `KOBO_BACKEND_URL` | Base URL of the running Kōbō HTTP backend. Default: `http://localhost:3000`. Used by tools that need runtime state (dev server, git info, workspace transitions). |
|
|
165
|
-
| `
|
|
163
|
+
| `KOBO_MCP_TOKEN` | Required dedicated MCP key for global/external stdio. |
|
|
164
|
+
| `KOBO_MCP_SESSION_TOKEN` | Backend-issued, revocable per-launch capability for managed workspace stdio. Never supplied by external clients. |
|
|
166
165
|
| `KOBO_MCP_CLIENT_NAME` | Optional display name overriding the external stdio client's initialization name. |
|
|
167
166
|
|
|
168
|
-
The
|
|
169
|
-
CRUD, and calls the backend HTTP API for runtime processes and validated
|
|
170
|
-
workspace transitions. Conversation tools are defined in
|
|
171
|
-
`src/shared/workspace-dialogue-tools.ts` and forwarded through the backend.
|
|
172
|
-
The stdio server opens an existing database; schema migration belongs to backend
|
|
173
|
-
startup.
|
|
167
|
+
Managed stdio forwards operations through `/api/internal-mcp` using its launch capability. The backend binds workspace, session, read-only permissions and narrow reporting exceptions. Plan, manual review, final review and handoff launches cannot use general mutating tools. Stopping or replacing a launch revokes its capability. The stdio process never opens SQLite; database changes and runtime ownership remain in the backend.
|
|
174
168
|
|
|
175
169
|
## Tools
|
|
176
170
|
|
|
@@ -409,7 +403,7 @@ List all images uploaded to the current workspace via Kōbō's chat paste/upload
|
|
|
409
403
|
|
|
410
404
|
### Global tools (workspace-less mode)
|
|
411
405
|
|
|
412
|
-
These management tools and the 6 [conversation tools](#conversation-tools) are registered regardless of whether `KOBO_WORKSPACE_ID` is set. Workspace-bound stdio, global stdio and external HTTP share creation, PR diagnosis, archive, purge, deletion and restoration tools. The HTTP endpoint also exposes discovery, conversation and memory; `stop_workspace` remains a
|
|
406
|
+
These management tools and the 6 [conversation tools](#conversation-tools) are registered regardless of whether `KOBO_WORKSPACE_ID` is set. Workspace-bound stdio, global stdio and external HTTP share creation, PR diagnosis, archive, purge, deletion and restoration tools. The HTTP endpoint also exposes discovery, conversation and memory; `stop_workspace` remains a managed workspace tool and is not available to external global stdio. Restricted final-review and handoff sessions cannot call creation or lifecycle mutation tools.
|
|
413
407
|
|
|
414
408
|
#### `list_workspaces`
|
|
415
409
|
List Kōbō workspaces with id, title, status, and creation date. Reads the DB directly — works even when the Kōbō backend server isn't running.
|
|
@@ -543,7 +537,7 @@ The same six memory tools are available on a workspace-bound agent server and on
|
|
|
543
537
|
|
|
544
538
|
| Tool | Purpose and important arguments |
|
|
545
539
|
|---|---|
|
|
546
|
-
| `list_memory_scopes` | Lists selectable scopes
|
|
540
|
+
| `list_memory_scopes` | Lists selectable scopes within the credential grant. External clients may pass `workspace_id`; restricted keys receive only that workspace-owned scope, while all-workspace keys may also receive its applicable global/project scopes. |
|
|
547
541
|
| `list_memories` | Bounded page of compact metadata; select one `scope_id`, or an applicable `workspace_id` externally. |
|
|
548
542
|
| `read_memory` | Reads a specific `scope_id` + `entry_id`; large bodies are returned as explicit fragments with a revision/code-point cursor. Set `repeat: true` only to intentionally spend budget rereading an unchanged range. |
|
|
549
543
|
| `search_memories` | Bounded search in a selected scope or external workspace view; results are metadata/excerpts, not a corpus dump. |
|