@loicngr/kobo 2.1.23 → 2.1.24

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 (90) hide show
  1. package/AGENTS.md +25 -1
  2. package/CHANGELOG.md +4 -0
  3. package/CONFIGURATION.md +56 -3
  4. package/dist/mcp-server/kobo-tasks-server.js +3 -2
  5. package/dist/server/routes/mcp.js +13 -7
  6. package/dist/server/services/dev-server-service.js +3 -59
  7. package/dist/server/services/lifecycle-hook-service.js +0 -8
  8. package/dist/server/services/mcp-message-delivery-service.js +1 -1
  9. package/dist/server/services/mcp-message-request-service.js +11 -5
  10. package/dist/server/services/settings-service.js +15 -0
  11. package/dist/server/services/workspace-dialogue-service.js +2 -0
  12. package/dist/server/services/workspace-message-service.js +61 -5
  13. package/dist/server/utils/dev-server-instance.js +58 -0
  14. package/dist/server/utils/script-runner.js +5 -2
  15. package/dist/shared/mcp-attachments.js +58 -0
  16. package/dist/shared/workspace-creation-tools.js +4 -28
  17. package/dist/shared/workspace-dialogue-tools.js +18 -6
  18. package/package.json +1 -1
  19. package/src/client/dist/pwa/assets/{ActivityFeed-1OKX_g3B.js → ActivityFeed-BYspOKKg.js} +1 -1
  20. package/src/client/dist/pwa/assets/{AutoLoopFinalReviewSettings-VoA9uBw0.js → AutoLoopFinalReviewSettings-DXX3CqrY.js} +1 -1
  21. package/src/client/dist/pwa/assets/{ChangelogPage-DHl3hD3t.js → ChangelogPage-DKkI5IU-.js} +1 -1
  22. package/src/client/dist/pwa/assets/{ComparisonPanel-D6EKTtni.js → ComparisonPanel-Cw5Dkan0.js} +1 -1
  23. package/src/client/dist/pwa/assets/{CreatePage-CZzEOVVq.js → CreatePage-B7PLFOH6.js} +1 -1
  24. package/src/client/dist/pwa/assets/{DashboardPage-DjLoUvjA.js → DashboardPage-Dw8nfkYR.js} +1 -1
  25. package/src/client/dist/pwa/assets/{DiffViewer-BQ6OEmoi.js → DiffViewer-DFlDwkmd.js} +3 -3
  26. package/src/client/dist/pwa/assets/{DocumentsPanel-yrQviqCd.js → DocumentsPanel-CH0KzdJV.js} +1 -1
  27. package/src/client/dist/pwa/assets/{DrawerToggleButton-D5qNeXnn.js → DrawerToggleButton-CZVpU8HH.js} +1 -1
  28. package/src/client/dist/pwa/assets/{GitPanel-DCXlhcAD.js → GitPanel-DjKL30gM.js} +3 -3
  29. package/src/client/dist/pwa/assets/{HealthPage-COicuNQn.js → HealthPage-DnPp8GSx.js} +1 -1
  30. package/src/client/dist/pwa/assets/{MainLayout-ZcExZTqC.js → MainLayout-1PaKfzdy.js} +2 -2
  31. package/src/client/dist/pwa/assets/{MemoryPanel-D73Qz9f7.js → MemoryPanel-BarliK2r.js} +1 -1
  32. package/src/client/dist/pwa/assets/{MemoryProposalList-BGlq2DkD.js → MemoryProposalList-BtVjVPp7.js} +1 -1
  33. package/src/client/dist/pwa/assets/{QBtnDropdown-CykBCmwa.js → QBtnDropdown-Rzurb7nO.js} +1 -1
  34. package/src/client/dist/pwa/assets/{QExpansionItem-CAW9J1Uv.js → QExpansionItem-CaKEBcyx.js} +1 -1
  35. package/src/client/dist/pwa/assets/{QScrollArea-C_d-8eO7.js → QScrollArea-hrsAyyJf.js} +1 -1
  36. package/src/client/dist/pwa/assets/{QSelect-C1AN93yA.js → QSelect-Dr7rAt6u.js} +1 -1
  37. package/src/client/dist/pwa/assets/{QTooltip-C9qaLW_h.js → QTooltip-CNMsXTmD.js} +1 -1
  38. package/src/client/dist/pwa/assets/{SchedulePanel-CQpzDhq7.js → SchedulePanel-nDw2eZ9K.js} +1 -1
  39. package/src/client/dist/pwa/assets/{SearchPage-fZlSSEu_.js → SearchPage-BXJ6iVt1.js} +1 -1
  40. package/src/client/dist/pwa/assets/SettingsPage-Dcq1Jeoo.css +1 -0
  41. package/src/client/dist/pwa/assets/SettingsPage-SHpE2q9Z.js +9 -0
  42. package/src/client/dist/pwa/assets/{SplitWorkspacePage-CfeO6TZb.js → SplitWorkspacePage-tfZ1kAdZ.js} +1 -1
  43. package/src/client/dist/pwa/assets/{TerminalPanel-CfDZOteT.js → TerminalPanel-Cw8R7lAw.js} +1 -1
  44. package/src/client/dist/pwa/assets/{ToolCallItem-CHE6tylq.js → ToolCallItem-DEKhFJEv.js} +1 -1
  45. package/src/client/dist/pwa/assets/{TouchPan-Csev_qU6.js → TouchPan-DybGzRRK.js} +1 -1
  46. package/src/client/dist/pwa/assets/{TourReplayButton-Crr7tF1b.js → TourReplayButton-BNdlAZUR.js} +1 -1
  47. package/src/client/dist/pwa/assets/{WorkspaceAttentionLabels-DpUZOiJv.js → WorkspaceAttentionLabels-B0H9omcK.js} +1 -1
  48. package/src/client/dist/pwa/assets/{WorkspacePage-Bk-WWOYM.css → WorkspacePage-B-82Rw9T.css} +1 -1
  49. package/src/client/dist/pwa/assets/{WorkspacePage-_QSKLO42.js → WorkspacePage-tWGXnmrz.js} +3 -3
  50. package/src/client/dist/pwa/assets/{browser-o7ftkZex.js → browser-DUTZhU-w.js} +1 -1
  51. package/src/client/dist/pwa/assets/{build-path-tree-D6dZQpIb.js → build-path-tree-ZThcsIN5.js} +1 -1
  52. package/src/client/dist/pwa/assets/{custom-sounds-DVX9zCET.js → custom-sounds-CquHn2gw.js} +1 -1
  53. package/src/client/dist/pwa/assets/{de-DOE4H_Jf.js → de-B3H0T-ft.js} +2 -2
  54. package/src/client/dist/pwa/assets/{editor.api-C8TYnUXm.js → editor.api-pSvhgban.js} +1 -1
  55. package/src/client/dist/pwa/assets/{efforts-DfsG0_o0.js → efforts-DJaFsLgd.js} +1 -1
  56. package/src/client/dist/pwa/assets/{es-BW57JPlm.js → es-B4lACW6k.js} +2 -2
  57. package/src/client/dist/pwa/assets/{expand-template-CJZlWMfI.js → expand-template-C5D_p5eV.js} +1 -1
  58. package/src/client/dist/pwa/assets/{format-DOCqk2Dn.js → format-DRfnkeRP.js} +1 -1
  59. package/src/client/dist/pwa/assets/{formatters-BFocC6LJ.js → formatters-Cog2icjt.js} +1 -1
  60. package/src/client/dist/pwa/assets/{fr-DnmIKHaQ.js → fr-3uNi02Jz.js} +2 -2
  61. package/src/client/dist/pwa/assets/{freemarker2-CfME4WOK.js → freemarker2-W-OLsqOk.js} +1 -1
  62. package/src/client/dist/pwa/assets/{handlebars-uvKdDnJl.js → handlebars-Kt5RbWuO.js} +1 -1
  63. package/src/client/dist/pwa/assets/{html-BrEPgLuD.js → html-D5VKPBbB.js} +1 -1
  64. package/src/client/dist/pwa/assets/i18n-CEzCwMir.js +1 -0
  65. package/src/client/dist/pwa/assets/{index-z1Oh2-I_.js → index-BZwhT2-I.js} +4 -4
  66. package/src/client/dist/pwa/assets/{it-DSrEQgZQ.js → it-DtFWyLHb.js} +2 -2
  67. package/src/client/dist/pwa/assets/{javascript-KH2xP4lQ.js → javascript-DBjx8Bg2.js} +1 -1
  68. package/src/client/dist/pwa/assets/{liquid-D08TlsVs.js → liquid-DYT4a7D7.js} +1 -1
  69. package/src/client/dist/pwa/assets/{mdx-y74A51cS.js → mdx-9L1kysEY.js} +1 -1
  70. package/src/client/dist/pwa/assets/{monaco-contributions-Cx8iaAhd.js → monaco-contributions-DAme5TZS.js} +1 -1
  71. package/src/client/dist/pwa/assets/{monaco.contribution-CFq0guCl.js → monaco.contribution-C58k7TPw.js} +2 -2
  72. package/src/client/dist/pwa/assets/{network-auth-DnGOOzCV.js → network-auth-BDUlgV-U.js} +1 -1
  73. package/src/client/dist/pwa/assets/{notify-theme-B9lUAgQl.js → notify-theme-DrQB-mrb.js} +1 -1
  74. package/src/client/dist/pwa/assets/{project-color-TgENPFLi.js → project-color-BlV5PUUW.js} +1 -1
  75. package/src/client/dist/pwa/assets/{python-Cy3bAVPq.js → python-DJIlKr-Y.js} +1 -1
  76. package/src/client/dist/pwa/assets/{razor-gD9QOuiV.js → razor-CC3uqdaH.js} +1 -1
  77. package/src/client/dist/pwa/assets/{typescript-CEItY0bH.js → typescript-BnnkT9oE.js} +1 -1
  78. package/src/client/dist/pwa/assets/{use-search-index-status-BtJ0pOy9.js → use-search-index-status-CExdHIar.js} +1 -1
  79. package/src/client/dist/pwa/assets/{use-tours-COLDth2h.js → use-tours-DOUjqO2f.js} +2 -2
  80. package/src/client/dist/pwa/assets/{use-worktree-restore-CShbwpGy.js → use-worktree-restore-zIOYNIcb.js} +1 -1
  81. package/src/client/dist/pwa/assets/{workspace-templates-BOMNQgBl.js → workspace-templates-DXJG6flv.js} +1 -1
  82. package/src/client/dist/pwa/assets/{xml-BJvL5qcE.js → xml-DJtVmsJT.js} +1 -1
  83. package/src/client/dist/pwa/assets/{yaml-DtkVRZaX.js → yaml-Dwuw8FcP.js} +1 -1
  84. package/src/client/dist/pwa/index.html +1 -1
  85. package/src/client/dist/pwa/sw.js +1 -1
  86. package/src/mcp-server/README.md +35 -4
  87. package/src/mcp-server/kobo-tasks-server.ts +3 -6
  88. package/src/client/dist/pwa/assets/SettingsPage-BCOF0ssp.css +0 -1
  89. package/src/client/dist/pwa/assets/SettingsPage-eyJZxeCJ.js +0 -9
  90. package/src/client/dist/pwa/assets/i18n-BmTCjikk.js +0 -1
@@ -1 +1 @@
1
- import{n as e}from"./editor.api-C8TYnUXm.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
+ import{n as e}from"./editor.api-pSvhgban.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-z1Oh2-I_.js"></script>
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-BZwhT2-I.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 f=s=>a(s,c),b={module:{uri:c},exports:d,require:f};e[c]=Promise.all(r.map(s=>b[s]||f(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:"961bead84218252e44584a5e0e31a06e"},{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-DtkVRZaX.js",revision:"05e5a9ac54b2c07c8a19ec71d3f8e68b"},{url:"assets/xml-BJvL5qcE.js",revision:"24245e9fac69082736e38d55fdeac452"},{url:"assets/workspace-templates-BOMNQgBl.js",revision:"b052f08f2e9e1c49e5cd13752e70312f"},{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-CShbwpGy.js",revision:"30c57a669b0b4dc903da0523ea77617a"},{url:"assets/use-worktree-restore-B-9jHocY.css",revision:"54449cd3d2d5c88b0bd7d88f53f581c3"},{url:"assets/use-tours-CTZuBZOi.css",revision:"2f6d79046e1409f0472f65179eaa76f3"},{url:"assets/use-tours-COLDth2h.js",revision:"31edcb73b80eb5ed83a9b9a54733cd0f"},{url:"assets/use-slide-transition-B_Nu6u-t.js",revision:"00b155c171e638ef6fb5919cd6ebaf99"},{url:"assets/use-search-index-status-BtJ0pOy9.js",revision:"976daaaaf935ea2b9081f2a1fb433000"},{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-CEItY0bH.js",revision:"da8cbf94a45235f3e57b534e51a0d9af"},{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-gD9QOuiV.js",revision:"b2f0481410c88a99fdda6caf011ff8dc"},{url:"assets/r-BwWrilGY.js",revision:"f18d3e790ef07bc993539322d29548e4"},{url:"assets/qsharp-DkqhCAOL.js",revision:"c53fe08a83f8fcbcd81723105136a691"},{url:"assets/python-Cy3bAVPq.js",revision:"477dbf76e923214a405fd46ffbf99e15"},{url:"assets/pug-Z5eAx3Zn.js",revision:"6e3de6d5214d2cf61b90949e1d383b49"},{url:"assets/protobuf-C531GsRP.js",revision:"04e688a7fef2bde8cef525653497371f"},{url:"assets/project-color-TgENPFLi.js",revision:"d2b5920bbd9b8360235d02f5ab23e78f"},{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-B9lUAgQl.js",revision:"9ca9c0a871d0cd12015322bb49ad2808"},{url:"assets/network-auth-DnGOOzCV.js",revision:"a68e5e1188aa2b8024d1a4c02f192707"},{url:"assets/mysql-SOo6toE5.js",revision:"677c089d979324385539e96bd2eb11e4"},{url:"assets/msdax-DauUninz.js",revision:"a63bfea2dd041755a34fe3e307159413"},{url:"assets/monaco.contribution-CFq0guCl.js",revision:"79b33052e27060295b4531656720e3e9"},{url:"assets/monaco-contributions-DvnCTJI2.css",revision:"964f32a36c06b4d5a66ac1b01556eb2b"},{url:"assets/monaco-contributions-Cx8iaAhd.js",revision:"881b252545e07217c6c35158ae354386"},{url:"assets/mips-CIPQ_RoX.js",revision:"b22614ddc8855670a3f76290908877f5"},{url:"assets/mdx-y74A51cS.js",revision:"f0fb9149eb562d0247ba61470f829d44"},{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-D08TlsVs.js",revision:"1262470acf15b719f3d501301daed637"},{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-KH2xP4lQ.js",revision:"e7486b5f9118d8e4043e67e54ebeba22"},{url:"assets/java-BEtHBSE6.js",revision:"987edcd2170749acca47ea184dd9ab25"},{url:"assets/it-DSrEQgZQ.js",revision:"cc1b1600537a90dfdc7e46f03bbbb54b"},{url:"assets/ini-sBoK_t0W.js",revision:"35f8ec10844ea4f62c2712d3f5c1e129"},{url:"assets/index-z1Oh2-I_.js",revision:"98f4be79ea547bc0c2a82c10c858e982"},{url:"assets/index-C8zAZ-k-.css",revision:"1488166e385bd7f03f15dbf2e6f4fc60"},{url:"assets/i18n-BmTCjikk.js",revision:"91704c86de4eef5592e973748fb99e9f"},{url:"assets/html-BrEPgLuD.js",revision:"cf5ecf98e98456620fd1182d5feaafd4"},{url:"assets/hcl-CpzslTdj.js",revision:"f9ef1004e908957ec1c3bbea2049a0e9"},{url:"assets/handlebars-uvKdDnJl.js",revision:"b4004ada227d6daf30a4cfcb6863a0ab"},{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-CfME4WOK.js",revision:"08f553b38960a382f03504339a3c7491"},{url:"assets/fr-DnmIKHaQ.js",revision:"48c1109cbcc07daa076cde9c2f8af392"},{url:"assets/formatters-BFocC6LJ.js",revision:"b36f75915847d6329e873e7284ca1dac"},{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-CJZlWMfI.js",revision:"aa00059d14206448283eceb12e35dfab"},{url:"assets/es-BW57JPlm.js",revision:"e6f5ea4681b863e04d041e42eabf8db3"},{url:"assets/elixir-6RTg0lbw.js",revision:"fb736f7429d9c6a596ed7905653dbf14"},{url:"assets/efforts-DfsG0_o0.js",revision:"888a9bf6ff33a679d4ca1b13feb0a27b"},{url:"assets/editor.worker-BLJF_oQx.js",revision:"73d3d20cadfc19535b465c224d29ba1b"},{url:"assets/editor.api-C8TYnUXm.js",revision:"b4f6107a1723298fbcbd40161892b0a5"},{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-DOE4H_Jf.js",revision:"a478480e2a6c60955af23e4a5ab8a66f"},{url:"assets/dart-onAF5SnQ.js",revision:"4fc14a4d2b7e030db6af8025d8fe831b"},{url:"assets/cypher-CVaqCwHa.js",revision:"75a568a8c6b29818b6a6c8675841ebf7"},{url:"assets/custom-sounds-DVX9zCET.js",revision:"449ffeb4e2c49a64d51208089b3e88b3"},{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-D6dZQpIb.js",revision:"a267ef39f8ba565ac9965770d91faeb7"},{url:"assets/browser-o7ftkZex.js",revision:"40651a7bc99ef45c1a14879104bd51a3"},{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-_QSKLO42.js",revision:"8c941ebe0ceebc4cb00a3f5b2592c1e1"},{url:"assets/WorkspacePage-Bk-WWOYM.css",revision:"8bba8f2de0ec132566d5d52b5d6fb252"},{url:"assets/WorkspaceAttentionLabels-DpUZOiJv.js",revision:"d51ef56fe8fd562c2032ca4657b675a3"},{url:"assets/WorkspaceAttentionLabels-B9LE8HtU.css",revision:"8670216f1246dc6e0f51ef50b62f0243"},{url:"assets/TourReplayButton-Crr7tF1b.js",revision:"d9d0bb63edc7e05b7851cb57f8c9e895"},{url:"assets/TouchPan-Csev_qU6.js",revision:"e45e79069ecc5966c129164706093195"},{url:"assets/ToolCallItem-m-YnWEbv.css",revision:"ff71b53979cd34e71a0d7ac68ba39695"},{url:"assets/ToolCallItem-CHE6tylq.js",revision:"d18989f69581cf6ff728e91daf21e66e"},{url:"assets/TerminalPanel-Dz9EE-Ph.css",revision:"9fd7805b12e550833d2ac46b5c24dc7a"},{url:"assets/TerminalPanel-CfDZOteT.js",revision:"a444d57141c489c5b0bf21133cbd1563"},{url:"assets/SplitWorkspacePage-lWQO8xro.css",revision:"cabea8d2cabbc3e1012ffa88225e04d3"},{url:"assets/SplitWorkspacePage-CfeO6TZb.js",revision:"6b19fe417961eb272f64fb4079ab6f9e"},{url:"assets/SettingsPage-eyJZxeCJ.js",revision:"f91aa316e0921e714676e19096da16ce"},{url:"assets/SettingsPage-BCOF0ssp.css",revision:"c3e23ce77ea5521159785b26231a4f8d"},{url:"assets/SearchPage-fZlSSEu_.js",revision:"785d506109fb892c8ba7de937b4977e9"},{url:"assets/SearchPage-BGc1oQSM.css",revision:"d988bd3c7ed5458189b7225097e4cdeb"},{url:"assets/SchedulePanel-CQpzDhq7.js",revision:"2d8b32bf2e45ccdb61a11deb410d9f10"},{url:"assets/SchedulePanel-AugvL_tp.css",revision:"cfd82a05588bdf00917646754909fe75"},{url:"assets/QTooltip-C9qaLW_h.js",revision:"bfa9bf4a5031468f330bcb3839b5bb82"},{url:"assets/QSpinnerDots-xdWyaE1i.js",revision:"55b8a4269a2b5e98cf5814142583ffca"},{url:"assets/QSelect-C1AN93yA.js",revision:"18d1b9bdc5043a9e4736a2ccef93ad94"},{url:"assets/QScrollArea-C_d-8eO7.js",revision:"89b48472d3344df8c68a0ca56f621a53"},{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-CAW9J1Uv.js",revision:"0c201237048369d944bca5e4ea49e2a2"},{url:"assets/QChip-Be16M4Ig.js",revision:"d217d603e5c6e691c02a888ffc1d213b"},{url:"assets/QBtnToggle-DccOOtbh.js",revision:"8c64e4c2fd1a993cb56403d1e62e6c09"},{url:"assets/QBtnGroup-CnM4vSJA.js",revision:"ddfd643b34c3c3ae7d3aa4a27bea664f"},{url:"assets/QBtnDropdown-CykBCmwa.js",revision:"1ec5e0a0509a1ea311362d4c5e1d3cb5"},{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-BGlq2DkD.js",revision:"80d47d13e5554c1ee34fc1ba9295dc39"},{url:"assets/MemoryPanel-D73Qz9f7.js",revision:"1ba937c87ae7c8c6e7ae415430536346"},{url:"assets/MemoryPanel-Ch3qeyQw.css",revision:"a080bd22ae7a7eb244df25c0a42d0f7c"},{url:"assets/MainLayout-ZcExZTqC.js",revision:"4665cd8b5dbfdc0df545d59bfa258183"},{url:"assets/MainLayout-DoAEgANU.css",revision:"2e7b4665a554e739954e8539183b1b22"},{url:"assets/HealthPage-Cnlhrn--.css",revision:"937880bb96f3708c02608a026c875bbb"},{url:"assets/HealthPage-COicuNQn.js",revision:"f03d3387fea2ad91867800450fd28bf5"},{url:"assets/GitPanel-DCXlhcAD.js",revision:"32ce67f90e87ea31acd258b7d18282ef"},{url:"assets/GitPanel-CNFtj6k0.css",revision:"f6efc5e9ebcba7653d66444f4cdef69f"},{url:"assets/DrawerToggleButton-D5qNeXnn.js",revision:"48fafcae10c9defdbae96e0d878b7465"},{url:"assets/DocumentsPanel-yrQviqCd.js",revision:"71653f47e8434b917d6ff0e546344657"},{url:"assets/DocumentsPanel-B8QY7FTj.css",revision:"676a3a838b07224f48fdd99e0cb6bbc8"},{url:"assets/DiffViewer-DEPOa3D7.css",revision:"7a2be47c13fe02cd2158e94eb0d320c5"},{url:"assets/DiffViewer-BQ6OEmoi.js",revision:"366ea58e830a5542de6baeaa7938cac5"},{url:"assets/DashboardPage-DjLoUvjA.js",revision:"8c2895aae2434638b7c1df3443a117a5"},{url:"assets/DashboardPage-CtaHaVdf.css",revision:"729d05fd05c14a73cbbfd35f6d3be6fd"},{url:"assets/CreatePage-DxOes_cF.css",revision:"343616e2ae2ef668bcfc74313d88d69f"},{url:"assets/CreatePage-CZzEOVVq.js",revision:"8c5d09bfb897a9bed6d9fcc38c5cec1b"},{url:"assets/ComparisonPanel-D6EKTtni.js",revision:"040ffa0e22975da9aba68fcdfdd8601e"},{url:"assets/ComparisonPanel-ByVbqYCs.css",revision:"40f8723a54937dbdb64e5de3d8bda349"},{url:"assets/ClosePopup-CRV2hxHS.js",revision:"408af589ed45c4f8e5f53522bc47c5f2"},{url:"assets/ChangelogPage-DVyx9ZjV.css",revision:"fd9c6a99457c6fb03e97d8137880243c"},{url:"assets/ChangelogPage-DHl3hD3t.js",revision:"124c8012ca9c601ddda0e3403415a074"},{url:"assets/AutoLoopFinalReviewSettings-VoA9uBw0.js",revision:"0fadf04dd8184fc4c7732bfdf11eeda6"},{url:"assets/AutoLoopFinalReviewSettings-Q-OlSQ1c.css",revision:"a2e7b8d9f10da2fb2302213449f9428e"},{url:"assets/ActivityFeed-CmAFv-2c.css",revision:"c38db0a8b8c5935086648fa3a8dc5fa6"},{url:"assets/ActivityFeed-1OKX_g3B.js",revision:"854cc4311f414d67402391ea6ff9f119"}],{}),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:"4593cda76f13edf9c2449ff8351f7d0c"},{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-Dwuw8FcP.js",revision:"d41f368dde12b06dcb6f6b003d610142"},{url:"assets/xml-DJtVmsJT.js",revision:"a59eca25ad1d8616e97f0c23cfc5bc1b"},{url:"assets/workspace-templates-DXJG6flv.js",revision:"b2707be1af7da0cfddbfc41714c5b36d"},{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-zIOYNIcb.js",revision:"b4b881194fee07cf01d80ddbebcd2654"},{url:"assets/use-worktree-restore-B-9jHocY.css",revision:"54449cd3d2d5c88b0bd7d88f53f581c3"},{url:"assets/use-tours-DOUjqO2f.js",revision:"ffa985b17cd6e489bcc887f030ef8f74"},{url:"assets/use-tours-CTZuBZOi.css",revision:"2f6d79046e1409f0472f65179eaa76f3"},{url:"assets/use-slide-transition-B_Nu6u-t.js",revision:"00b155c171e638ef6fb5919cd6ebaf99"},{url:"assets/use-search-index-status-CExdHIar.js",revision:"40e51be13800f4e91aaa1b867e9548ad"},{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-BnnkT9oE.js",revision:"36b140d179a73cab52c41afb1d4d7b35"},{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-CC3uqdaH.js",revision:"3b2b98032fb02a629dc75632e01d8beb"},{url:"assets/r-BwWrilGY.js",revision:"f18d3e790ef07bc993539322d29548e4"},{url:"assets/qsharp-DkqhCAOL.js",revision:"c53fe08a83f8fcbcd81723105136a691"},{url:"assets/python-DJIlKr-Y.js",revision:"c94ed7e6396c36a3e55abce3e7b9d327"},{url:"assets/pug-Z5eAx3Zn.js",revision:"6e3de6d5214d2cf61b90949e1d383b49"},{url:"assets/protobuf-C531GsRP.js",revision:"04e688a7fef2bde8cef525653497371f"},{url:"assets/project-color-BlV5PUUW.js",revision:"0fb051aecd9db9eb47a26c0694884ffe"},{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-DrQB-mrb.js",revision:"db24c806a7e62e2ad40f1d2b6c870644"},{url:"assets/network-auth-BDUlgV-U.js",revision:"6db0d11f3b25dd8ce16b430b17bec56e"},{url:"assets/mysql-SOo6toE5.js",revision:"677c089d979324385539e96bd2eb11e4"},{url:"assets/msdax-DauUninz.js",revision:"a63bfea2dd041755a34fe3e307159413"},{url:"assets/monaco.contribution-C58k7TPw.js",revision:"8c1ba58ee2ae7b966200ed721cab079c"},{url:"assets/monaco-contributions-DvnCTJI2.css",revision:"964f32a36c06b4d5a66ac1b01556eb2b"},{url:"assets/monaco-contributions-DAme5TZS.js",revision:"e086ff61c2783d6e625cf0a1b8974fbe"},{url:"assets/mips-CIPQ_RoX.js",revision:"b22614ddc8855670a3f76290908877f5"},{url:"assets/mdx-9L1kysEY.js",revision:"9b1a0ea0b036aed2609235b17489a9d6"},{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-DYT4a7D7.js",revision:"461eca5d533353077a97792111c0351c"},{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-DBjx8Bg2.js",revision:"041abffae063df1296b68c20b7f09aff"},{url:"assets/java-BEtHBSE6.js",revision:"987edcd2170749acca47ea184dd9ab25"},{url:"assets/it-DtFWyLHb.js",revision:"f248b7d06bb5dbeb8a44d5ccbf912b00"},{url:"assets/ini-sBoK_t0W.js",revision:"35f8ec10844ea4f62c2712d3f5c1e129"},{url:"assets/index-C8zAZ-k-.css",revision:"1488166e385bd7f03f15dbf2e6f4fc60"},{url:"assets/index-BZwhT2-I.js",revision:"465e1efcea3662855ce773c01f9b2441"},{url:"assets/i18n-CEzCwMir.js",revision:"f42c952f1df995de3fd91a3aefd0268c"},{url:"assets/html-D5VKPBbB.js",revision:"145759ee90e4d4239665ade6d564f683"},{url:"assets/hcl-CpzslTdj.js",revision:"f9ef1004e908957ec1c3bbea2049a0e9"},{url:"assets/handlebars-Kt5RbWuO.js",revision:"805f3058da50add1f81372fce98525dc"},{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-W-OLsqOk.js",revision:"0f25504ca4683a0fd066fc6e1e9e6dbd"},{url:"assets/fr-3uNi02Jz.js",revision:"a4251062d15c256e175321dceefea472"},{url:"assets/formatters-Cog2icjt.js",revision:"0d5c924dfd03c3a14ebd7ae2c722e242"},{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-C5D_p5eV.js",revision:"6046861d1ed734cacf10094993d918d8"},{url:"assets/es-B4lACW6k.js",revision:"d49556527abf9476e4025bcecc4bc40d"},{url:"assets/elixir-6RTg0lbw.js",revision:"fb736f7429d9c6a596ed7905653dbf14"},{url:"assets/efforts-DJaFsLgd.js",revision:"6f643fd310437a4968e84e1cfdf35cee"},{url:"assets/editor.worker-BLJF_oQx.js",revision:"73d3d20cadfc19535b465c224d29ba1b"},{url:"assets/editor.api-pSvhgban.js",revision:"b9bb7621ca91276583b288d909c4020d"},{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-B3H0T-ft.js",revision:"262a72b2ccae4cddafad32db0ef6b53f"},{url:"assets/dart-onAF5SnQ.js",revision:"4fc14a4d2b7e030db6af8025d8fe831b"},{url:"assets/cypher-CVaqCwHa.js",revision:"75a568a8c6b29818b6a6c8675841ebf7"},{url:"assets/custom-sounds-CquHn2gw.js",revision:"009fa781492950edf5ea81fe8168312b"},{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-ZThcsIN5.js",revision:"2ed343b2394e81886fe7a5759af0c5c8"},{url:"assets/browser-DUTZhU-w.js",revision:"dce1d68e086b92133bcfd046b606f78a"},{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-tWGXnmrz.js",revision:"b8f3b9295912e49959c61b80433aa516"},{url:"assets/WorkspacePage-B-82Rw9T.css",revision:"0b9bca229ca951828e20df629c691dca"},{url:"assets/WorkspaceAttentionLabels-B9LE8HtU.css",revision:"8670216f1246dc6e0f51ef50b62f0243"},{url:"assets/WorkspaceAttentionLabels-B0H9omcK.js",revision:"f75dc59c9f013aaf34b836280b1d8cf9"},{url:"assets/TourReplayButton-BNdlAZUR.js",revision:"26859731c7cddc469267f4d4c67deae8"},{url:"assets/TouchPan-DybGzRRK.js",revision:"e63991dd103cebb48a08cd0928128190"},{url:"assets/ToolCallItem-m-YnWEbv.css",revision:"ff71b53979cd34e71a0d7ac68ba39695"},{url:"assets/ToolCallItem-DEKhFJEv.js",revision:"1cf082a18dcfc4f353f8976f4c283c6e"},{url:"assets/TerminalPanel-Dz9EE-Ph.css",revision:"9fd7805b12e550833d2ac46b5c24dc7a"},{url:"assets/TerminalPanel-Cw8R7lAw.js",revision:"844562f3905c998bc5eb866fed58dca4"},{url:"assets/SplitWorkspacePage-tfZ1kAdZ.js",revision:"15b26e5bdc69cd375ce68349e1e38e89"},{url:"assets/SplitWorkspacePage-lWQO8xro.css",revision:"cabea8d2cabbc3e1012ffa88225e04d3"},{url:"assets/SettingsPage-SHpE2q9Z.js",revision:"30fda2500b4947c20bbd2795998976e3"},{url:"assets/SettingsPage-Dcq1Jeoo.css",revision:"a823535042077d3c24eaf895ef5ba449"},{url:"assets/SearchPage-BXJ6iVt1.js",revision:"b5e043e0bf882971af46e4fb25660b0a"},{url:"assets/SearchPage-BGc1oQSM.css",revision:"d988bd3c7ed5458189b7225097e4cdeb"},{url:"assets/SchedulePanel-nDw2eZ9K.js",revision:"088eeaf32774544c0e5f44668d92c595"},{url:"assets/SchedulePanel-AugvL_tp.css",revision:"cfd82a05588bdf00917646754909fe75"},{url:"assets/QTooltip-CNMsXTmD.js",revision:"55ad56c763a167e6f6f0c694c37c7370"},{url:"assets/QSpinnerDots-xdWyaE1i.js",revision:"55b8a4269a2b5e98cf5814142583ffca"},{url:"assets/QSelect-Dr7rAt6u.js",revision:"7174845d8cbc41a5da2318b222622a31"},{url:"assets/QScrollArea-hrsAyyJf.js",revision:"cf0837b49409956205fc0ad3211c32a1"},{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-CaKEBcyx.js",revision:"83b96fb87a0c0c2e1a696f28c2ad4cc4"},{url:"assets/QChip-Be16M4Ig.js",revision:"d217d603e5c6e691c02a888ffc1d213b"},{url:"assets/QBtnToggle-DccOOtbh.js",revision:"8c64e4c2fd1a993cb56403d1e62e6c09"},{url:"assets/QBtnGroup-CnM4vSJA.js",revision:"ddfd643b34c3c3ae7d3aa4a27bea664f"},{url:"assets/QBtnDropdown-Rzurb7nO.js",revision:"ce63a4525b2d177d84c6bef1ca8de825"},{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-BtVjVPp7.js",revision:"376ac4e3317f30871bc41c6108dc41bd"},{url:"assets/MemoryPanel-Ch3qeyQw.css",revision:"a080bd22ae7a7eb244df25c0a42d0f7c"},{url:"assets/MemoryPanel-BarliK2r.js",revision:"30fbea93f244cf5d75fd28d3ac93ca9b"},{url:"assets/MainLayout-DoAEgANU.css",revision:"2e7b4665a554e739954e8539183b1b22"},{url:"assets/MainLayout-1PaKfzdy.js",revision:"e85ceb7d6190b173f23495c29fb878aa"},{url:"assets/HealthPage-DnPp8GSx.js",revision:"0935efc5ecc6f4b8879432fb0b24c57d"},{url:"assets/HealthPage-Cnlhrn--.css",revision:"937880bb96f3708c02608a026c875bbb"},{url:"assets/GitPanel-DjKL30gM.js",revision:"efefebee02e1190685d5fb1891ebf6fb"},{url:"assets/GitPanel-CNFtj6k0.css",revision:"f6efc5e9ebcba7653d66444f4cdef69f"},{url:"assets/DrawerToggleButton-CZVpU8HH.js",revision:"ba0ab5ede2f1d559b299df012966cfcc"},{url:"assets/DocumentsPanel-CH0KzdJV.js",revision:"bd2b132b4d16fd78c7c08002ada97b26"},{url:"assets/DocumentsPanel-B8QY7FTj.css",revision:"676a3a838b07224f48fdd99e0cb6bbc8"},{url:"assets/DiffViewer-DFlDwkmd.js",revision:"533ce049fd19c8651a6efcd92571d268"},{url:"assets/DiffViewer-DEPOa3D7.css",revision:"7a2be47c13fe02cd2158e94eb0d320c5"},{url:"assets/DashboardPage-Dw8nfkYR.js",revision:"83a454f77d6822894684de7c493d661a"},{url:"assets/DashboardPage-CtaHaVdf.css",revision:"729d05fd05c14a73cbbfd35f6d3be6fd"},{url:"assets/CreatePage-DxOes_cF.css",revision:"343616e2ae2ef668bcfc74313d88d69f"},{url:"assets/CreatePage-B7PLFOH6.js",revision:"99171795b004cddacac516c5335fc134"},{url:"assets/ComparisonPanel-Cw5Dkan0.js",revision:"54558362fbfe3d764ededd9af741941d"},{url:"assets/ComparisonPanel-ByVbqYCs.css",revision:"40f8723a54937dbdb64e5de3d8bda349"},{url:"assets/ClosePopup-CRV2hxHS.js",revision:"408af589ed45c4f8e5f53522bc47c5f2"},{url:"assets/ChangelogPage-DVyx9ZjV.css",revision:"fd9c6a99457c6fb03e97d8137880243c"},{url:"assets/ChangelogPage-DKkI5IU-.js",revision:"3539765a0a4398f854aeec9ea669853f"},{url:"assets/AutoLoopFinalReviewSettings-Q-OlSQ1c.css",revision:"a2e7b8d9f10da2fb2302213449f9428e"},{url:"assets/AutoLoopFinalReviewSettings-DXX3CqrY.js",revision:"f03eca1f93e213f13af85e4b5e9a2ac5"},{url:"assets/ActivityFeed-CmAFv-2c.css",revision:"c38db0a8b8c5935086648fa3a8dc5fa6"},{url:"assets/ActivityFeed-BYspOKKg.js",revision:"782d2d92c7dbab788dd11580ccd16b97"}],{}),s.cleanupOutdatedCaches(),s.registerRoute(new s.NavigationRoute(s.createHandlerBoundToURL("index.html"),{denylist:[/sw\.js$/,/workbox-(.)*\.js$/]}))});
@@ -60,7 +60,7 @@ Leave `KOBO_WORKSPACE_ID` unset or empty for an external client. Use the same da
60
60
  | `get_workspace` | `workspace_id` | Workspace metadata, tasks and active/latest session. |
61
61
  | `list_workspace_sessions` | `workspace_id` | Workspace sessions with their IDs and status. |
62
62
  | `read_workspace_messages` | `workspace_id`, optional `session_id`, `after_cursor`, `limit` | Chronological conversation fragments, `nextCursor`, `hasMore`, `workspaceStatus`, `activeSessionId`. |
63
- | `send_workspace_message` | `workspace_id`, `content`, optional `session_id`, `idempotency_key` | `{ accepted: true, sessionId }`; keyed sends also return `requestId`, `eventId`, and `replayed` on a successful retry. |
63
+ | `send_workspace_message` | `workspace_id`, `content` and/or `attachments`, optional `session_id`, `idempotency_key` | `{ accepted: true, sessionId }`; keyed sends also return `requestId`, `eventId`, and `replayed` on a successful retry. |
64
64
  | `get_workspace_questions` | `workspace_id` | Pending `questions` and `requiresHumanApproval` for a permission request at the head of the queue. |
65
65
  | `answer_workspace_question` | `workspace_id`, `tool_call_id`, `answers` | `{ accepted: true }` after answering the current question. |
66
66
 
@@ -68,13 +68,44 @@ Typical dialogue:
68
68
 
69
69
  1. Call `list_workspaces`, then `get_workspace` and optionally `list_workspace_sessions` to select the conversation.
70
70
  2. Read existing messages, following `nextCursor` while `hasMore` is true. Keep the final cursor.
71
- 3. Call `send_workspace_message` with the workspace ID and your text. An inactive agent is resumed; a selected session must belong to this workspace and must be the running session if one is already running.
71
+ 3. Call `send_workspace_message` with the workspace ID and your text and/or inline attachments. An inactive agent is resumed; a selected session must belong to this workspace and must be the running session if one is already running.
72
72
  4. Poll `read_workspace_messages` with the saved cursor for the reply. Acceptance means the message was delivered, not that the agent finished its work. `workspaceStatus` and `get_workspace_questions` expose progress and blockers.
73
73
  5. To answer a question, pass the current `toolCallId` as `tool_call_id`, and map its question identifiers to string answers in `answers` (Codex uses question IDs; Claude questions use their question text). Tool permission requests must be approved by the human in Kōbō.
74
74
 
75
75
  Each message fragment has `{ id, sessionId, role, text, messageId, createdAt }`, optionally `source` and `clientMessageId`. Concatenate assistant fragments sharing a `messageId` and `sessionId` in returned order. `limit` bounds **source events scanned**, from 1 to 200 (default 100): a page can contain no text while still advancing its cursor. Session filtering also includes older untagged events (`sessionId: null`). Keep the same session filter when continuing a cursor. Cursors are workspace-specific; if retention removes a cursor, the tool returns an explicit error and reading must restart without it.
76
76
 
77
- Messages use the workspace's configured engine and permission mode, and pause an active auto-loop just like chat input. Archived or purged workspaces must be restored first; messages are refused during compaction or while a question/permission is pending. A workspace-bound stdio agent cannot send to itself. Message content is limited to 100,000 characters; HTTP request bodies to 1 MiB.
77
+ Messages use the workspace's configured engine and permission mode, and pause an active auto-loop just like chat input. Archived or purged workspaces must be restored first; messages are refused during compaction or while a question/permission is pending. A workspace-bound stdio agent cannot send to itself. Message content is limited to 100,000 characters. Text-only HTTP request bodies remain limited to 1 MiB. Creation and message tools with attachments allow base64 expansion of the 50 MiB decoded file limit plus 1 MiB of envelope metadata, through both SDK HTTP and stdio transports.
78
+
79
+ ### Sending files and images
80
+
81
+ `create_workspace` and `send_workspace_message` accept the same `attachments`
82
+ array: up to **10 files, 50 MiB decoded total**, using the same image/document
83
+ formats as the interface (PNG, JPEG, GIF, WebP, PDF, Markdown, text, CSV, JSON,
84
+ YAML, XML, logs and TOML). Provide canonical base64 bytes, a filename (no path),
85
+ and a MIME type. A path on the client's PC is not a path on a remote Kōbō server.
86
+
87
+ ```json
88
+ {
89
+ "workspace_id": "<workspace ID>",
90
+ "content": "Read this note",
91
+ "attachments": [
92
+ { "name": "note.md", "mime_type": "text/markdown", "data_base64": "IyBOb3RlCg==" }
93
+ ],
94
+ "idempotency_key": "<one UUID for this message and these files>"
95
+ }
96
+ ```
97
+
98
+ Omit `content` for an attachment-only message. Images are stored in `.ai/images/`
99
+ and documents in `.ai/attachments/` in the destination worktree. The agent and
100
+ chat receive file references, never the base64 payload. Validation happens before
101
+ writes; rejected deliveries before engine dispatch remove their uploaded files.
102
+ Ambiguous deliveries retain the files because the agent may already use them.
103
+ Retries with the same key reuse the receipt without another upload; changing
104
+ file names, MIME types, bytes or order produces an idempotency conflict.
105
+
106
+ This works through workspace-bound stdio, external global stdio and HTTP. The
107
+ existing prohibition on sending to one's own workspace and restricted-launch
108
+ permissions still apply. Group-message tools remain text-only.
78
109
 
79
110
  ### Retrying messages safely
80
111
 
@@ -435,7 +466,7 @@ Example with final review:
435
466
 
436
467
  If creation fails after PR checkout, Kōbō removes only the checkout created by that request when its directory, branch and HEAD are unchanged, it has no local or ignored files, and no workspace adopted it. The PR branch and earlier checkout decisions remain intact. Existing, modified or adopted checkouts are preserved. Errors include `details.checkoutRecovery` with the path, `removed` outcome and a reason when retained. An uncertain creation outcome preserves the checkout for inspection; do not retry automatically.
437
468
 
438
- Creation requests have no automatic retry or exactly-once guarantee. After a disconnect/timeout, inspect `list_workspaces` before trying again: checkout or creation may have completed. The stdio bridge allows up to 15 minutes for creation; external clients should configure their own request timeout for slow setup scripts. Ordinary MCP requests retain the 1 MiB envelope limit; creation allows base64 expansion of the 50 MiB upload limit plus 1 MiB metadata, including at the SDK HTTP and stdio transport boundaries.
469
+ Creation requests have no automatic retry or exactly-once guarantee. After a disconnect/timeout, inspect `list_workspaces` before trying again: checkout or creation may have completed. The stdio bridge allows up to 15 minutes for creation; external clients should configure their own request timeout for slow setup scripts. Ordinary MCP requests retain the 1 MiB envelope limit; creation and messages with attachments allow base64 expansion of the 50 MiB upload limit plus 1 MiB metadata, including at the SDK HTTP and stdio transport boundaries.
439
470
 
440
471
  #### `diagnose_workspace_pr`
441
472
 
@@ -4,13 +4,10 @@ import { StdioServerTransport } from '@modelcontextprotocol/sdk/server/stdio.js'
4
4
  import { CallToolRequestSchema, ListToolsRequestSchema, type Tool } from '@modelcontextprotocol/sdk/types.js'
5
5
  import type Database from 'better-sqlite3'
6
6
  import { getDb } from '../server/db/index.js'
7
+ import { MAX_MCP_ATTACHMENT_REQUEST_BYTES } from '../shared/mcp-attachments.js'
7
8
  import { EXTERNAL_MEMORY_TOOL_DEFINITIONS, isMemoryToolName, MEMORY_TOOL_DEFINITIONS } from '../shared/memory-tools.js'
8
9
  import { INTERNAL_PROGRESS_BAR_TOOLS, isProgressBarTool, PROGRESS_BAR_TOOLS } from '../shared/progress-bar-tools.js'
9
- import {
10
- isWorkspaceCreationTool,
11
- MAX_MCP_CREATION_REQUEST_BYTES,
12
- WORKSPACE_CREATION_TOOLS,
13
- } from '../shared/workspace-creation-tools.js'
10
+ import { isWorkspaceCreationTool, WORKSPACE_CREATION_TOOLS } from '../shared/workspace-creation-tools.js'
14
11
  import { WORKSPACE_DIALOGUE_TOOLS } from '../shared/workspace-dialogue-tools.js'
15
12
  import { isWorkspaceGroupMessageTool, WORKSPACE_GROUP_MESSAGE_TOOLS } from '../shared/workspace-group-message-tools.js'
16
13
  import { isWorkspaceLifecycleTool, WORKSPACE_LIFECYCLE_TOOLS } from '../shared/workspace-lifecycle-tools.js'
@@ -1153,7 +1150,7 @@ server.setRequestHandler(CallToolRequestSchema, async (request) => {
1153
1150
 
1154
1151
  const transport = new StdioServerTransport(process.stdin, process.stdout, {
1155
1152
  // Include the JSON-lines delimiter in addition to the HTTP envelope budget.
1156
- maxBufferSize: MAX_MCP_CREATION_REQUEST_BYTES + 1,
1153
+ maxBufferSize: MAX_MCP_ATTACHMENT_REQUEST_BYTES + 1,
1157
1154
  })
1158
1155
  server.connect(transport).catch((err) => {
1159
1156
  console.error('[kobo-tasks-server] Fatal:', err)
@@ -1 +0,0 @@
1
- .mcp-config[data-v-2ac25d1e]{white-space:pre-wrap;overflow-wrap:anywhere;background:#00000029;border-radius:4px;font-size:12px;overflow-x:auto}.mcp-url[data-v-2ac25d1e]{overflow-wrap:anywhere;min-width:0}.memory-scope-select[data-v-013b6fd5]{gap:var(--kobo-space-sm);display:grid}select[data-v-013b6fd5]{min-height:40px;padding:0 var(--kobo-space-md);color:var(--kobo-text);background:var(--kobo-surface);border:1px solid var(--kobo-border-subtle);border-radius:var(--kobo-radius-sm)}.memory-settings[data-v-962dbe3d]{gap:var(--kobo-space-md);display:grid}.memory-settings h3[data-v-962dbe3d],.memory-settings h4[data-v-962dbe3d],.memory-settings p[data-v-962dbe3d]{margin:0}.memory-settings h3[data-v-962dbe3d]{font-size:1.125rem;font-weight:600;line-height:1.5}.memory-settings h4[data-v-962dbe3d]{font-size:1rem;font-weight:600;line-height:1.5}.memory-settings__header p[data-v-962dbe3d],.memory-settings__note[data-v-962dbe3d]{color:var(--kobo-text-2)}.memory-settings__modes[data-v-962dbe3d]{gap:var(--kobo-space-sm);border:0;padding:0;display:grid}.memory-settings__modes legend[data-v-962dbe3d]{margin-bottom:var(--kobo-space-sm);font-weight:600}.memory-settings__modes label[data-v-962dbe3d]{gap:var(--kobo-space-xs) var(--kobo-space-sm);grid-template-columns:auto 1fr;align-items:center;display:grid}.memory-settings__modes small[data-v-962dbe3d]{color:var(--kobo-text-2);grid-column:2}.memory-settings__modes input[data-v-962dbe3d]{accent-color:var(--kobo-accent)}.memory-settings__divider[data-v-962dbe3d]{background:var(--kobo-border-subtle);height:1px;margin-block:var(--kobo-space-sm)}.memory-settings__actions[data-v-962dbe3d],.memory-clear-confirm[data-v-962dbe3d]{gap:var(--kobo-space-sm);flex-wrap:wrap;align-items:center;display:flex}.memory-clear-confirm[data-v-962dbe3d]{padding:var(--kobo-space-md);border-inline-start:3px solid var(--kobo-danger);background:var(--kobo-surface-2);display:grid}.memory-settings[data-v-962dbe3d] button{min-height:36px;padding:4px var(--kobo-space-md);color:var(--kobo-text);background:var(--kobo-surface);border:1px solid var(--kobo-border-subtle);border-radius:var(--kobo-radius-sm);font:inherit;cursor:pointer}.memory-settings[data-v-962dbe3d] button:disabled{opacity:.5;cursor:default}.memory-settings[data-v-962dbe3d] button:focus-visible{outline:2px solid var(--kobo-accent);outline-offset:2px}input[data-v-962dbe3d]:focus-visible{outline:2px solid var(--kobo-accent);outline-offset:2px}.notification-sounds-grid[data-v-dbeaedac]{grid-template-columns:1fr;gap:12px;display:grid}.notification-sound-card[data-v-dbeaedac]{background:var(--kobo-surface-2);border:1px solid var(--kobo-border-subtle)}.volume-label[data-v-dbeaedac]{min-width:58px}.volume-value[data-v-dbeaedac]{text-align:right;min-width:40px}.settings-nav__list[data-v-fac6b946]{padding:0}.settings-nav__item[data-v-fac6b946]{border-radius:var(--kobo-radius-sm);color:var(--kobo-text-2);min-height:30px;transition:background-color var(--kobo-duration-micro) var(--kobo-ease-out), color var(--kobo-duration-micro) var(--kobo-ease-out);padding:6px 12px;font-size:13px;font-weight:500}.settings-nav__item[data-v-fac6b946]:hover{background-color:var(--kobo-hover);color:var(--kobo-text)}.settings-nav__item--active[data-v-fac6b946]{background-color:var(--kobo-hover);color:var(--kobo-text);position:relative}.settings-nav__item--active[data-v-fac6b946]:before{content:"";background-color:var(--kobo-accent);border-radius:1px;width:2px;position:absolute;top:6px;bottom:6px;left:-8px}.settings-nav__icon[data-v-fac6b946]{min-width:24px;color:inherit}.settings-nav__label[data-v-fac6b946]{padding-left:4px}.whip-shortcut-recorder[data-v-d8618bd9]{min-width:180px}.settings-page.q-page[data-v-077a599e]{background-color:var(--kobo-bg);flex-direction:column;padding:0;display:flex;position:relative}.purge-docs[data-v-077a599e]{background-color:#ffffff05;border:1px solid #ffffff0f}.purge-docs-code[data-v-077a599e]{font-family:var(--kobo-font-mono,monospace);color:var(--kobo-text-2);white-space:pre-wrap;word-break:break-all;background-color:#00000059;border:1px solid #ffffff0f;border-radius:4px;margin:6px 0;padding:8px 10px;font-size:11px}.settings-load-error[data-v-077a599e]{align-items:flex-start;gap:var(--kobo-space-sm);padding:var(--kobo-space-md);border:1px solid var(--kobo-danger);border-radius:var(--kobo-radius-sm);background:var(--kobo-surface);color:var(--kobo-text);flex-shrink:0;display:flex}.settings-load-error__detail[data-v-077a599e],.settings-load-error__hint[data-v-077a599e]{color:var(--kobo-text-3);font-size:12px}.settings-layout[data-v-077a599e]{flex:auto;align-items:stretch;min-height:0;display:flex;position:relative;overflow:hidden}.settings-nav[data-v-077a599e]{background-color:var(--kobo-surface);border-right:1px solid var(--kobo-border-subtle);flex-shrink:0;width:240px;padding:24px 12px;overflow-y:auto}.settings-nav__title[data-v-077a599e]{font-family:var(--kobo-font-sans);letter-spacing:.08em;text-transform:uppercase;color:var(--kobo-text-3);margin-bottom:16px;padding:0 12px;font-size:11px;font-weight:600}.settings-content[data-v-077a599e]{flex:1;min-width:0;padding:24px 32px 80px;overflow-y:auto}.settings-content__header[data-v-077a599e]{border-bottom:1px solid var(--kobo-border-subtle);background-color:var(--kobo-bg);z-index:2;align-items:center;gap:var(--kobo-space-sm);margin-top:-24px;margin-bottom:24px;padding-top:24px;padding-bottom:16px;display:flex;position:sticky;top:-24px}.settings-content__nav-toggle[data-v-077a599e]{color:var(--kobo-text-2)}.settings-content__title[data-v-077a599e]{font-family:var(--kobo-font-sans);color:var(--kobo-text);margin:0;font-size:22px;font-weight:600;line-height:1.2}.settings-panels[data-v-077a599e]{background:0 0}.settings-global-wrap[data-v-077a599e]{display:block}.settings-card[data-v-077a599e]{background:var(--kobo-surface);border:1px solid var(--kobo-border-subtle);border-radius:var(--kobo-radius-md)}.settings-subcard[data-v-077a599e]{background:var(--kobo-surface);border:1px solid var(--kobo-border-subtle);border-radius:var(--kobo-radius-md);margin-bottom:16px}.notification-sounds-grid[data-v-077a599e]{grid-template-columns:1fr;gap:12px;display:grid}.notification-sound-card[data-v-077a599e]{background:var(--kobo-surface-2);border:1px solid var(--kobo-border-subtle)}.voice-model-row[data-v-077a599e]{background:var(--kobo-surface-2);border:1px solid var(--kobo-border-subtle);transition:border-color var(--kobo-duration-short) var(--kobo-ease-out)}.voice-model-row--active[data-v-077a599e]{border-color:var(--kobo-accent)}.voice-models-dir[data-v-077a599e]{background:var(--kobo-surface-2);border:1px solid var(--kobo-border-subtle);border-radius:var(--kobo-radius-sm);padding:6px 10px}.template-card[data-v-077a599e]{background:var(--kobo-surface);border:1px solid var(--kobo-border-subtle)}.settings-input[data-v-077a599e] .q-field__control{background:var(--kobo-surface-2);border-color:var(--kobo-border-subtle)}.settings-input[data-v-077a599e] .q-field__native,.settings-input[data-v-077a599e] input,.settings-input[data-v-077a599e] textarea{color:var(--kobo-text)}.settings-input[data-v-077a599e] .q-field__label{color:var(--kobo-text-3)}.mono-textarea[data-v-077a599e] textarea{font-family:var(--kobo-font-mono);font-size:13px}.mono-guide[data-v-077a599e]{white-space:pre-wrap;background:var(--kobo-surface-2);border:1px solid var(--kobo-border-subtle);border-radius:var(--kobo-radius-sm);font-family:var(--kobo-font-mono);color:var(--kobo-text-2);margin:0;padding:8px 10px;font-size:12px;line-height:1.35}.readonly-input[data-v-077a599e] .q-field__control{background:var(--kobo-bg)}.readonly-input[data-v-077a599e] input{color:var(--kobo-text-3)}.project-list-col[data-v-077a599e]{flex-shrink:0;align-self:flex-start;width:30%;min-width:200px;max-width:280px;max-height:calc(100vh - 140px);position:sticky;top:0;overflow:hidden}.project-form-col[data-v-077a599e]{flex:1;min-width:0}.project-item[data-v-077a599e]:hover{background-color:#ffffff08}.project-item--active[data-v-077a599e]{border-left:2px solid var(--kobo-accent);background-color:var(--kobo-hover)!important}.save-btn--dirty[data-v-077a599e]{border-radius:var(--kobo-radius-sm);transition:box-shadow var(--kobo-duration-short) var(--kobo-ease-out);box-shadow:0 0 0 2px var(--kobo-accent)!important}.settings-savebar[data-v-077a599e]{z-index:30;background-color:var(--kobo-surface);border-top:1px solid var(--kobo-border-subtle);justify-content:space-between;align-items:center;gap:16px;padding:12px 32px;display:flex;position:absolute;bottom:0;left:240px;right:0}.settings-savebar--full[data-v-077a599e]{padding:var(--kobo-space-md) var(--kobo-space-lg);left:0}.settings-savebar__label[data-v-077a599e]{font-family:var(--kobo-font-sans);color:var(--kobo-text-2);font-size:13px;font-weight:500}.settings-savebar__action[data-v-077a599e]{border-radius:var(--kobo-radius-sm);padding:6px 16px;font-size:13px;font-weight:500;background-color:var(--kobo-accent)!important;color:var(--kobo-accent-fg)!important}.settings-savebar__action[data-v-077a599e]:hover{background-color:var(--kobo-accent-hover)!important}.save-bar-enter-active[data-v-077a599e],.save-bar-leave-active[data-v-077a599e]{transition:transform var(--kobo-duration-medium) var(--kobo-ease-out), opacity var(--kobo-duration-medium) var(--kobo-ease-out)}.save-bar-enter-from[data-v-077a599e],.save-bar-leave-to[data-v-077a599e]{opacity:0;transform:translateY(100%)}