research-copilot 0.2.9 → 0.2.11

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 (67) hide show
  1. package/README.md +42 -34
  2. package/app/out/main/index.mjs +42 -7
  3. package/app/out/preload/index.js +3 -2
  4. package/app/out/renderer/assets/{MilkdownMarkdownEditor-CK0d0F6d.js → MilkdownMarkdownEditor-BqfydyHs.js} +50 -50
  5. package/app/out/renderer/assets/{arc-CgrgxBD6.js → arc-B102x0uC.js} +1 -1
  6. package/app/out/renderer/assets/{blockDiagram-c4efeb88-BqZGW4Le.js → blockDiagram-c4efeb88-hlEjcPtb.js} +8 -8
  7. package/app/out/renderer/assets/{c4Diagram-c83219d4-gNbl9eSr.js → c4Diagram-c83219d4-Dc1nfavC.js} +3 -3
  8. package/app/out/renderer/assets/{channel-vUNI1iNi.js → channel-ZMdB8bH1.js} +1 -1
  9. package/app/out/renderer/assets/{classDiagram-beda092f-jMkGJ9Ey.js → classDiagram-beda092f-Gbpax7vO.js} +6 -6
  10. package/app/out/renderer/assets/{classDiagram-v2-2358418a-CNuFkLzW.js → classDiagram-v2-2358418a-_KwHXPjs.js} +10 -10
  11. package/app/out/renderer/assets/{clone-rSI1fs-P.js → clone-DDahKPIj.js} +1 -1
  12. package/app/out/renderer/assets/{createText-1719965b-BXIo6gGa.js → createText-1719965b-BNW0X7Oe.js} +2 -2
  13. package/app/out/renderer/assets/{edges-96097737-nhmklBMU.js → edges-96097737-G9l1oUoZ.js} +3 -3
  14. package/app/out/renderer/assets/{erDiagram-0228fc6a-DAEu9LLq.js → erDiagram-0228fc6a-BUs4XtQY.js} +5 -5
  15. package/app/out/renderer/assets/{flowDb-c6c81e3f-BCxc52Bt.js → flowDb-c6c81e3f-CQ-jcycx.js} +1 -1
  16. package/app/out/renderer/assets/{flowDiagram-50d868cf-DAeMm-oV.js → flowDiagram-50d868cf-uu8ab--w.js} +12 -12
  17. package/app/out/renderer/assets/{flowDiagram-v2-4f6560a1-B3DiSW7H.js → flowDiagram-v2-4f6560a1-CAw9BkoT.js} +12 -12
  18. package/app/out/renderer/assets/{flowchart-elk-definition-6af322e1-C3U45hIj.js → flowchart-elk-definition-6af322e1-BjQ21EHx.js} +6 -6
  19. package/app/out/renderer/assets/{ganttDiagram-a2739b55-DH_BJl1v.js → ganttDiagram-a2739b55-CP8oCEhK.js} +3 -3
  20. package/app/out/renderer/assets/{gitGraphDiagram-82fe8481-BQYI6jwt.js → gitGraphDiagram-82fe8481-BwBuEj3Z.js} +2 -2
  21. package/app/out/renderer/assets/{graph-Cbmv2S9S.js → graph-Cm7VMO24.js} +1 -1
  22. package/app/out/renderer/assets/{index-CdhMP7aL.js → index-21ZazB27.js} +3 -3
  23. package/app/out/renderer/assets/{index-5325376f-tk-JBjUy.js → index-5325376f-rxU_OBcM.js} +6 -6
  24. package/app/out/renderer/assets/{index-DCdUaSNI.js → index-B0bfGE4l.js} +3 -3
  25. package/app/out/renderer/assets/{index-Dk6CqgIG.js → index-B86Rm5VH.js} +5 -5
  26. package/app/out/renderer/assets/{index-DU4yTtXH.js → index-BOSzW1Fp.js} +3 -3
  27. package/app/out/renderer/assets/{index-HX-NQu3g.js → index-BireTC8B.js} +6 -6
  28. package/app/out/renderer/assets/{index-ByH1hCUC.js → index-BurA4U4Q.js} +4 -4
  29. package/app/out/renderer/assets/{index-DcOi0itd.js → index-C90yL_Oq.js} +159 -70
  30. package/app/out/renderer/assets/{index-CqAzD5Mv.js → index-CXW3LNrw.js} +6 -6
  31. package/app/out/renderer/assets/{index-Do8kanBG.js → index-CYcmNTWS.js} +1 -1
  32. package/app/out/renderer/assets/{index-BTNmK-qR.js → index-CZmZWnTr.js} +3 -3
  33. package/app/out/renderer/assets/{index-hDvDO954.js → index-CdJBtB9B.js} +6 -6
  34. package/app/out/renderer/assets/{index-QjeQ3sgb.js → index-CmuzUeEb.js} +3 -3
  35. package/app/out/renderer/assets/{index-C4WNjCL0.js → index-CnSaLake.js} +6 -6
  36. package/app/out/renderer/assets/{index-DbWCHQ2E.js → index-Cnl3rlb4.js} +3 -3
  37. package/app/out/renderer/assets/{index-BaHR_2Nj.js → index-D075LvBi.js} +3 -3
  38. package/app/out/renderer/assets/{index-xqpIz9Nc.js → index-DQ1LKaqr.js} +6 -6
  39. package/app/out/renderer/assets/{index--rks7CK0.js → index-DnIy5Txo.js} +3 -3
  40. package/app/out/renderer/assets/{index-DK2BzNnx.js → index-DwyuGyq2.js} +3 -3
  41. package/app/out/renderer/assets/{index-BgoqHomD.js → index-JxH0rooB.js} +6 -6
  42. package/app/out/renderer/assets/{index-BdSZkB2P.js → index-PcwO-UQr.js} +4 -4
  43. package/app/out/renderer/assets/{index-B05MKQl-.js → index-UvRVROtt.js} +3 -3
  44. package/app/out/renderer/assets/{index-Bg6-UTvh.js → index-YHTq32NV.js} +3 -3
  45. package/app/out/renderer/assets/{index-LbAr_1fx.css → index-lAZsmnj1.css} +26 -2
  46. package/app/out/renderer/assets/{index-BkmP_G4w.js → index-qYYoWrK0.js} +3 -3
  47. package/app/out/renderer/assets/{infoDiagram-8eee0895-B7stNUSw.js → infoDiagram-8eee0895-DX3y3-A9.js} +2 -2
  48. package/app/out/renderer/assets/{journeyDiagram-c64418c1-BmjjCYfG.js → journeyDiagram-c64418c1-CWFt3XGT.js} +4 -4
  49. package/app/out/renderer/assets/{layout-BwUXWB3n.js → layout-BlEAfCmy.js} +2 -2
  50. package/app/out/renderer/assets/{line-DAwxPIOb.js → line-C8wQDOie.js} +1 -1
  51. package/app/out/renderer/assets/{linear-DF3tF_pi.js → linear-B-vozVTM.js} +1 -1
  52. package/app/out/renderer/assets/{mindmap-definition-8da855dc-Dcm6UXzX.js → mindmap-definition-8da855dc-BCWxRP64.js} +3 -3
  53. package/app/out/renderer/assets/{pieDiagram-a8764435-DkGcoK7i.js → pieDiagram-a8764435-CjTt_TYd.js} +3 -3
  54. package/app/out/renderer/assets/{quadrantDiagram-1e28029f-C1Q8r814.js → quadrantDiagram-1e28029f-D1Ke9L8a.js} +3 -3
  55. package/app/out/renderer/assets/{requirementDiagram-08caed73-C83u7Zho.js → requirementDiagram-08caed73-qZ5fBq-x.js} +5 -5
  56. package/app/out/renderer/assets/{sankeyDiagram-a04cb91d-CmjgGu4H.js → sankeyDiagram-a04cb91d-B-KtJYmc.js} +2 -2
  57. package/app/out/renderer/assets/{sequenceDiagram-c5b8d532-B0tN0kuE.js → sequenceDiagram-c5b8d532-BjqWnQP_.js} +3 -3
  58. package/app/out/renderer/assets/{stateDiagram-1ecb1508-CvChhiL2.js → stateDiagram-1ecb1508-DQo_1-ne.js} +6 -6
  59. package/app/out/renderer/assets/{stateDiagram-v2-c2b004d7-DuV4iLKk.js → stateDiagram-v2-c2b004d7-BNb4d-sS.js} +10 -10
  60. package/app/out/renderer/assets/{styles-b4e223ce-CYC1lyng.js → styles-b4e223ce-pjL5kdCz.js} +1 -1
  61. package/app/out/renderer/assets/{styles-ca3715f6-wbpEm70M.js → styles-ca3715f6-CtyHB9Sz.js} +1 -1
  62. package/app/out/renderer/assets/{styles-d45a18b0-dtPSe0gc.js → styles-d45a18b0-r6zLUSmM.js} +4 -4
  63. package/app/out/renderer/assets/{svgDrawCommon-b86b1483-DeFjfiKP.js → svgDrawCommon-b86b1483-CbHYm_eu.js} +1 -1
  64. package/app/out/renderer/assets/{timeline-definition-faaaa080-WkpCNoL6.js → timeline-definition-faaaa080-DvoW_Frb.js} +3 -3
  65. package/app/out/renderer/assets/{xychartDiagram-f5964ef8-DhjmJVco.js → xychartDiagram-f5964ef8-C-G_0ZnR.js} +5 -5
  66. package/app/out/renderer/index.html +2 -2
  67. package/package.json +1 -1
@@ -1,17 +1,17 @@
1
- import { f as flowDb, p as parser$1 } from "./flowDb-c6c81e3f-BCxc52Bt.js";
2
- import { f as flowStyles, a as flowRendererV2 } from "./styles-d45a18b0-dtPSe0gc.js";
3
- import { W as setConfig } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
4
- import "./graph-Cbmv2S9S.js";
5
- import "./layout-BwUXWB3n.js";
6
- import "./index-5325376f-tk-JBjUy.js";
7
- import "./clone-rSI1fs-P.js";
8
- import "./edges-96097737-nhmklBMU.js";
9
- import "./createText-1719965b-BXIo6gGa.js";
10
- import "./index-DcOi0itd.js";
11
- import "./line-DAwxPIOb.js";
1
+ import { f as flowDb, p as parser$1 } from "./flowDb-c6c81e3f-CQ-jcycx.js";
2
+ import { f as flowStyles, a as flowRendererV2 } from "./styles-d45a18b0-r6zLUSmM.js";
3
+ import { W as setConfig } from "./MilkdownMarkdownEditor-BqfydyHs.js";
4
+ import "./graph-Cm7VMO24.js";
5
+ import "./layout-BlEAfCmy.js";
6
+ import "./index-5325376f-rxU_OBcM.js";
7
+ import "./clone-DDahKPIj.js";
8
+ import "./edges-96097737-G9l1oUoZ.js";
9
+ import "./createText-1719965b-BNW0X7Oe.js";
10
+ import "./index-C90yL_Oq.js";
11
+ import "./line-C8wQDOie.js";
12
12
  import "./array-DgktLKBx.js";
13
13
  import "./path-Cp2qmpkd.js";
14
- import "./channel-vUNI1iNi.js";
14
+ import "./channel-ZMdB8bH1.js";
15
15
  const diagram = {
16
16
  parser: parser$1,
17
17
  db: flowDb,
@@ -1,9 +1,9 @@
1
- import { p as parser$1, d as db } from "./flowDb-c6c81e3f-BCxc52Bt.js";
2
- import { u as select, v as log$1, ai as getConfig$1, ak as setupGraphViewbox$1, al as getStylesFromArray, am as interpolateToCurve, an as curveLinear, C as common$1 } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
3
- import { i as insertMarkers$1, c as insertNode, l as labelHelper, b as insertEdgeLabel, k as getLineFunctionsWithOffset, m as addEdgeMarkers } from "./edges-96097737-nhmklBMU.js";
4
- import { g as getDefaultExportFromCjs, c as commonjsGlobal } from "./index-DcOi0itd.js";
5
- import { l as line } from "./line-DAwxPIOb.js";
6
- import "./createText-1719965b-BXIo6gGa.js";
1
+ import { p as parser$1, d as db } from "./flowDb-c6c81e3f-CQ-jcycx.js";
2
+ import { u as select, v as log$1, ai as getConfig$1, ak as setupGraphViewbox$1, al as getStylesFromArray, am as interpolateToCurve, an as curveLinear, C as common$1 } from "./MilkdownMarkdownEditor-BqfydyHs.js";
3
+ import { i as insertMarkers$1, c as insertNode, l as labelHelper, b as insertEdgeLabel, k as getLineFunctionsWithOffset, m as addEdgeMarkers } from "./edges-96097737-G9l1oUoZ.js";
4
+ import { g as getDefaultExportFromCjs, c as commonjsGlobal } from "./index-C90yL_Oq.js";
5
+ import { l as line } from "./line-C8wQDOie.js";
6
+ import "./createText-1719965b-BNW0X7Oe.js";
7
7
  import "./array-DgktLKBx.js";
8
8
  import "./path-Cp2qmpkd.js";
9
9
  function commonjsRequire(path) {
@@ -1,6 +1,6 @@
1
- import { aS as Rgb, aT as rgbConvert, aU as define, aV as extend, aW as Color, aX as nogamma, aY as hue, n as getAccDescription, m as setAccDescription, H as getDiagramTitle, J as setDiagramTitle, o as getAccTitle, q as setAccTitle, r as getConfig, u as select, w as configureSvgSize, aZ as dayjs, v as log$1, C as common$1, A as dist, M as clear$1, O as utils } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
2
- import { c as commonjsGlobal, g as getDefaultExportFromCjs } from "./index-DcOi0itd.js";
3
- import { b as bisector, t as tickStep, c as continuous, a as copy, l as linear } from "./linear-DF3tF_pi.js";
1
+ import { aS as Rgb, aT as rgbConvert, aU as define, aV as extend, aW as Color, aX as nogamma, aY as hue, n as getAccDescription, m as setAccDescription, H as getDiagramTitle, J as setDiagramTitle, o as getAccTitle, q as setAccTitle, r as getConfig, u as select, w as configureSvgSize, aZ as dayjs, v as log$1, C as common$1, A as dist, M as clear$1, O as utils } from "./MilkdownMarkdownEditor-BqfydyHs.js";
2
+ import { c as commonjsGlobal, g as getDefaultExportFromCjs } from "./index-C90yL_Oq.js";
3
+ import { b as bisector, t as tickStep, c as continuous, a as copy, l as linear } from "./linear-B-vozVTM.js";
4
4
  import { i as initRange } from "./init-ZxktEp_H.js";
5
5
  function max(values, valueof) {
6
6
  let max2;
@@ -1,5 +1,5 @@
1
- import { H as getDiagramTitle, J as setDiagramTitle, m as setAccDescription, n as getAccDescription, o as getAccTitle, q as setAccTitle, r as getConfig, v as log$1, u as select, O as utils, X as setupGraphViewbox, M as clear$2, C as common$1, Y as random } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
2
- import "./index-DcOi0itd.js";
1
+ import { H as getDiagramTitle, J as setDiagramTitle, m as setAccDescription, n as getAccDescription, o as getAccTitle, q as setAccTitle, r as getConfig, v as log$1, u as select, O as utils, X as setupGraphViewbox, M as clear$2, C as common$1, Y as random } from "./MilkdownMarkdownEditor-BqfydyHs.js";
2
+ import "./index-C90yL_Oq.js";
3
3
  var parser = function() {
4
4
  var o = function(k, v, o2, l) {
5
5
  for (o2 = o2 || {}, l = k.length; l--; o2[k[l]] = v)
@@ -1,4 +1,4 @@
1
- import { bn as Symbol$1, bc as isArray, bf as isSymbol, bb as isArrayLike, bo as arrayLikeKeys, bp as baseKeys, bq as memoize, br as isArguments, bs as copyObject, b9 as keysIn, bt as getPrototype, bu as cloneArrayBuffer, bv as cloneTypedArray, bw as isObjectLike, bx as getTag, bk as baseUnary, by as nodeUtil, bh as isObject, bz as copyArray, bA as isBuffer, bB as cloneBuffer, bC as initCloneObject, bD as Stack, bj as assignValue, bE as MapCache, ba as eq, bF as Uint8Array, bG as isTypedArray, bH as isLength, bi as isIndex, bg as identity, bd as baseFor, bI as Set, b7 as baseRest, bJ as isArrayLikeObject, bl as constant, aR as isFunction, bK as isEmpty } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
1
+ import { bn as Symbol$1, bc as isArray, bf as isSymbol, bb as isArrayLike, bo as arrayLikeKeys, bp as baseKeys, bq as memoize, br as isArguments, bs as copyObject, b9 as keysIn, bt as getPrototype, bu as cloneArrayBuffer, bv as cloneTypedArray, bw as isObjectLike, bx as getTag, bk as baseUnary, by as nodeUtil, bh as isObject, bz as copyArray, bA as isBuffer, bB as cloneBuffer, bC as initCloneObject, bD as Stack, bj as assignValue, bE as MapCache, ba as eq, bF as Uint8Array, bG as isTypedArray, bH as isLength, bi as isIndex, bg as identity, bd as baseFor, bI as Set, b7 as baseRest, bJ as isArrayLikeObject, bl as constant, aR as isFunction, bK as isEmpty } from "./MilkdownMarkdownEditor-BqfydyHs.js";
2
2
  function arrayMap(array, iteratee) {
3
3
  var index = -1, length = array == null ? 0 : array.length, result = Array(length);
4
4
  while (++index < length) {
@@ -1,6 +1,6 @@
1
- import { a as LanguageSupport, L as LRLanguage, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp, j as foldInside, s as styleTags, t as tags } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
2
- import { L as LRParser } from "./index-Do8kanBG.js";
3
- import "./index-DcOi0itd.js";
1
+ import { a as LanguageSupport, L as LRLanguage, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp, j as foldInside, s as styleTags, t as tags } from "./MilkdownMarkdownEditor-BqfydyHs.js";
2
+ import { L as LRParser } from "./index-CYcmNTWS.js";
3
+ import "./index-C90yL_Oq.js";
4
4
  const spec_Keyword = { __proto__: null, anyref: 34, dataref: 34, eqref: 34, externref: 34, i31ref: 34, funcref: 34, i8: 34, i16: 34, i32: 34, i64: 34, f32: 34, f64: 34 };
5
5
  const parser = /* @__PURE__ */ LRParser.deserialize({
6
6
  version: 14,
@@ -1,9 +1,9 @@
1
- import { i as isUndefined, G as Graph } from "./graph-Cbmv2S9S.js";
2
- import { m as map, l as layout } from "./layout-BwUXWB3n.js";
3
- import { c as clone } from "./clone-rSI1fs-P.js";
4
- import { i as insertMarkers$1, u as updateNodeBounds, s as setNodeElem, c as insertNode, b as insertEdgeLabel, g as getSubGraphTitleMargins, d as positionNode, a as insertEdge, p as positionEdgeLabel, e as intersectRect$1, f as createLabel$1, h as clear$1$1, j as clear$2 } from "./edges-96097737-nhmklBMU.js";
5
- import { v as log$1, r as getConfig, S as evaluate, u as select } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
6
- import { c as createText } from "./createText-1719965b-BXIo6gGa.js";
1
+ import { i as isUndefined, G as Graph } from "./graph-Cm7VMO24.js";
2
+ import { m as map, l as layout } from "./layout-BlEAfCmy.js";
3
+ import { c as clone } from "./clone-DDahKPIj.js";
4
+ import { i as insertMarkers$1, u as updateNodeBounds, s as setNodeElem, c as insertNode, b as insertEdgeLabel, g as getSubGraphTitleMargins, d as positionNode, a as insertEdge, p as positionEdgeLabel, e as intersectRect$1, f as createLabel$1, h as clear$1$1, j as clear$2 } from "./edges-96097737-G9l1oUoZ.js";
5
+ import { v as log$1, r as getConfig, S as evaluate, u as select } from "./MilkdownMarkdownEditor-BqfydyHs.js";
6
+ import { c as createText } from "./createText-1719965b-BNW0X7Oe.js";
7
7
  function write(g) {
8
8
  var json = {
9
9
  options: {
@@ -1,6 +1,6 @@
1
- import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup } from "./index-Do8kanBG.js";
2
- import { s as styleTags, t as tags$1, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, j as foldInside, e as syntaxTree, aw as NodeWeakMap, I as IterMode } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
3
- import "./index-DcOi0itd.js";
1
+ import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup } from "./index-CYcmNTWS.js";
2
+ import { s as styleTags, t as tags$1, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, j as foldInside, e as syntaxTree, aw as NodeWeakMap, I as IterMode } from "./MilkdownMarkdownEditor-BqfydyHs.js";
3
+ import "./index-C90yL_Oq.js";
4
4
  const descendantOp = 122, Unit = 1, identifier$1 = 123, callee = 124, VariableName = 2, queryIdentifier = 125, queryVariableName = 3, QueryCallee = 4;
5
5
  const space = [
6
6
  9,
@@ -1,8 +1,8 @@
1
- import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-Do8kanBG.js";
2
- import { p as parseMixed, s as styleTags, t as tags, E as EditorView, e as syntaxTree, g as EditorSelection, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, f as foldNodeProp, aK as bracketMatchingHandle } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
3
- import { cssLanguage, css } from "./index-DCdUaSNI.js";
4
- import { typescriptLanguage, jsxLanguage, tsxLanguage, javascriptLanguage, javascript } from "./index--rks7CK0.js";
5
- import "./index-DcOi0itd.js";
1
+ import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-CYcmNTWS.js";
2
+ import { p as parseMixed, s as styleTags, t as tags, E as EditorView, e as syntaxTree, g as EditorSelection, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, f as foldNodeProp, aK as bracketMatchingHandle } from "./MilkdownMarkdownEditor-BqfydyHs.js";
3
+ import { cssLanguage, css } from "./index-B0bfGE4l.js";
4
+ import { typescriptLanguage, jsxLanguage, tsxLanguage, javascriptLanguage, javascript } from "./index-DnIy5Txo.js";
5
+ import "./index-C90yL_Oq.js";
6
6
  const scriptText = 55, StartCloseScriptTag = 1, styleText = 56, StartCloseStyleTag = 2, textareaText = 57, StartCloseTextareaTag = 3, EndTag = 4, SelfClosingEndTag = 5, StartTag = 6, StartScriptTag = 7, StartStyleTag = 8, StartTextareaTag = 9, StartSelfClosingTag = 10, StartCloseTag = 11, NoMatchStartCloseTag = 12, MismatchedStartCloseTag = 13, missingCloseTag = 58, IncompleteTag = 14, IncompleteCloseTag = 15, commentContent$1 = 59, Element = 21, TagName = 23, Attribute = 24, AttributeName = 25, AttributeValue = 27, UnquotedAttributeValue = 28, ScriptText = 29, StyleText = 32, TextareaText = 35, OpenTag = 37, CloseTag = 38, Dialect_noMatch = 0, Dialect_selfClosing = 1;
7
7
  const selfClosers$1 = {
8
8
  area: true,
@@ -1,6 +1,6 @@
1
- import { L as LRParser, E as ExternalTokenizer } from "./index-Do8kanBG.js";
2
- import { s as styleTags, t as tags, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, j as foldInside } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
3
- import "./index-DcOi0itd.js";
1
+ import { L as LRParser, E as ExternalTokenizer } from "./index-CYcmNTWS.js";
2
+ import { s as styleTags, t as tags, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, j as foldInside } from "./MilkdownMarkdownEditor-BqfydyHs.js";
3
+ import "./index-C90yL_Oq.js";
4
4
  const closureParamDelim = 1, tpOpen = 2, tpClose = 3, RawString = 4, Float = 5;
5
5
  const _b = 98, _e = 101, _f = 102, _r = 114, _E = 69, Zero = 48, Dot = 46, Plus = 43, Minus = 45, Hash = 35, Quote = 34, Pipe = 124, LessThan = 60, GreaterThan = 62;
6
6
  function isNum(ch) {
@@ -1,9 +1,9 @@
1
- import { E as EditorView, g as EditorSelection, a as LanguageSupport, p as parseMixed, e as syntaxTree, L as LRLanguage, s as styleTags, t as tags, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
2
- import { html } from "./index-Dk6CqgIG.js";
3
- import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup } from "./index-Do8kanBG.js";
4
- import "./index-DcOi0itd.js";
5
- import "./index-DCdUaSNI.js";
6
- import "./index--rks7CK0.js";
1
+ import { E as EditorView, g as EditorSelection, a as LanguageSupport, p as parseMixed, e as syntaxTree, L as LRLanguage, s as styleTags, t as tags, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp } from "./MilkdownMarkdownEditor-BqfydyHs.js";
2
+ import { html } from "./index-B86Rm5VH.js";
3
+ import { L as LRParser, E as ExternalTokenizer, a as LocalTokenGroup } from "./index-CYcmNTWS.js";
4
+ import "./index-C90yL_Oq.js";
5
+ import "./index-B0bfGE4l.js";
6
+ import "./index-DnIy5Txo.js";
7
7
  const interpolationStart = 1, commentTagStart = 2, tagStart = 3, text = 155, endrawTagStart = 4, rawText = 156;
8
8
  function wordChar(code) {
9
9
  return code >= 65 && code <= 90 || code >= 97 && code <= 122;
@@ -1,7 +1,7 @@
1
- import { a as LanguageSupport, L as LRLanguage, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, j as foldInside, s as styleTags, t as tags } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
2
- import { defineCSSCompletionSource } from "./index-DCdUaSNI.js";
3
- import { L as LRParser, E as ExternalTokenizer } from "./index-Do8kanBG.js";
4
- import "./index-DcOi0itd.js";
1
+ import { a as LanguageSupport, L as LRLanguage, i as indentNodeProp, c as continuedIndent, f as foldNodeProp, j as foldInside, s as styleTags, t as tags } from "./MilkdownMarkdownEditor-BqfydyHs.js";
2
+ import { defineCSSCompletionSource } from "./index-B0bfGE4l.js";
3
+ import { L as LRParser, E as ExternalTokenizer } from "./index-CYcmNTWS.js";
4
+ import "./index-C90yL_Oq.js";
5
5
  const descendantOp = 110, Unit = 1, openArgList = 2;
6
6
  const space = [
7
7
  9,
@@ -1,4 +1,4 @@
1
- const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./MilkdownMarkdownEditor-CK0d0F6d.js","./MilkdownMarkdownEditor-tTNRIB2K.css"])))=>i.map(i=>d[i]);
1
+ const __vite__mapDeps=(i,m=__vite__mapDeps,d=(m.f||(m.f=["./MilkdownMarkdownEditor-BqfydyHs.js","./MilkdownMarkdownEditor-tTNRIB2K.css"])))=>i.map(i=>d[i]);
2
2
  var commonjsGlobal = typeof globalThis !== "undefined" ? globalThis : typeof window !== "undefined" ? window : typeof global !== "undefined" ? global : typeof self !== "undefined" ? self : {};
3
3
  function getDefaultExportFromCjs(x) {
4
4
  return x && x.__esModule && Object.prototype.hasOwnProperty.call(x, "default") ? x["default"] : x;
@@ -13330,59 +13330,26 @@ const Zap = createLucideIcon("Zap", [
13330
13330
  }
13331
13331
  ]
13332
13332
  ]);
13333
- const api$g = window.api;
13334
- const KEY_FIELDS = [
13335
- {
13336
- name: "ANTHROPIC_API_KEY",
13337
- label: "Anthropic",
13338
- placeholder: "sk-ant-...",
13339
- hint: "Powers Claude models. Get a key at console.anthropic.com",
13340
- url: "https://console.anthropic.com/settings/keys",
13341
- required: true
13342
- },
13343
- {
13344
- name: "OPENAI_API_KEY",
13345
- label: "OpenAI",
13346
- placeholder: "sk-...",
13347
- hint: "Powers GPT / o-series models. Get a key at platform.openai.com",
13348
- url: "https://platform.openai.com/api-keys",
13349
- required: true
13350
- },
13351
- {
13352
- name: "BRAVE_API_KEY",
13353
- label: "Brave Search",
13354
- placeholder: "BSA...",
13355
- hint: "Enables web search. Without it, search falls back to arXiv only.",
13356
- url: "https://brave.com/search/api/",
13357
- required: false
13358
- },
13359
- {
13360
- name: "OPENROUTER_API_KEY",
13361
- label: "OpenRouter",
13362
- placeholder: "sk-or-...",
13363
- hint: "Enables AI-generated scientific diagrams. Optional.",
13364
- url: "https://openrouter.ai/",
13365
- required: false
13366
- }
13367
- ];
13368
- function UpdateBanner() {
13333
+ const api$h = window.api;
13334
+ function UpdateBanner({ variant = "compact", className = "" }) {
13369
13335
  const [update, setUpdate] = reactExports.useState(null);
13370
13336
  const [dismissed, setDismissed] = reactExports.useState(false);
13371
13337
  const [copied, setCopied] = reactExports.useState(false);
13372
13338
  reactExports.useEffect(() => {
13373
- api$g.checkForUpdate().then((info) => {
13339
+ api$h.checkForUpdate?.().then((info) => {
13374
13340
  if (info.hasUpdate) setUpdate(info);
13375
13341
  }).catch(() => {
13376
13342
  });
13377
13343
  }, []);
13378
13344
  if (!update || dismissed) return null;
13379
13345
  const command = "npm update -g research-copilot";
13380
- return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-4 relative rounded-lg border t-border-subtle t-bg-elevated overflow-hidden", children: [
13346
+ const wrapperClass = variant === "welcome" ? `relative rounded-xl border t-border-subtle t-bg-elevated overflow-hidden ${className}` : `mb-4 relative rounded-lg border t-border-subtle t-bg-elevated overflow-hidden ${className}`;
13347
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: wrapperClass, role: "status", "aria-live": "polite", children: [
13381
13348
  /* @__PURE__ */ jsxRuntimeExports.jsx("span", { "aria-hidden": true, className: "absolute left-0 top-0 bottom-0 w-[2px] t-bg-accent-soft" }),
13382
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "px-3 py-2.5 flex items-start gap-2.5", children: [
13383
- /* @__PURE__ */ jsxRuntimeExports.jsx(CircleArrowUp, { size: 15, className: "t-text-accent-soft mt-0.5 shrink-0" }),
13349
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: variant === "welcome" ? "px-4 py-3 flex items-start gap-3" : "px-3 py-2.5 flex items-start gap-2.5", children: [
13350
+ /* @__PURE__ */ jsxRuntimeExports.jsx(CircleArrowUp, { size: variant === "welcome" ? 16 : 15, className: "t-text-accent-soft mt-0.5 shrink-0" }),
13384
13351
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "flex-1 min-w-0", children: [
13385
- /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-xs font-medium t-text", children: [
13352
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: variant === "welcome" ? "text-sm font-medium t-text" : "text-xs font-medium t-text", children: [
13386
13353
  "v",
13387
13354
  update.latest,
13388
13355
  " available",
@@ -13393,7 +13360,7 @@ function UpdateBanner() {
13393
13360
  ] })
13394
13361
  ] }),
13395
13362
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mt-1.5 flex items-center gap-1.5", children: [
13396
- /* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: "flex-1 text-[10px] font-mono px-2 py-1 rounded t-bg-surface t-text select-all", children: command }),
13363
+ /* @__PURE__ */ jsxRuntimeExports.jsx("code", { className: `flex-1 font-mono px-2 py-1 rounded t-bg-surface t-text select-all ${variant === "welcome" ? "text-[11px]" : "text-[10px]"}`, children: command }),
13397
13364
  /* @__PURE__ */ jsxRuntimeExports.jsx(
13398
13365
  "button",
13399
13366
  {
@@ -13404,6 +13371,7 @@ function UpdateBanner() {
13404
13371
  },
13405
13372
  className: "shrink-0 p-1 rounded t-bg-surface hover:opacity-80 transition-opacity",
13406
13373
  title: "Copy command",
13374
+ "aria-label": "Copy npm update command",
13407
13375
  children: copied ? /* @__PURE__ */ jsxRuntimeExports.jsx(Check, { size: 12, className: "t-text-success" }) : /* @__PURE__ */ jsxRuntimeExports.jsx(Copy, { size: 12, className: "t-text-secondary" })
13408
13376
  }
13409
13377
  )
@@ -13414,12 +13382,48 @@ function UpdateBanner() {
13414
13382
  {
13415
13383
  onClick: () => setDismissed(true),
13416
13384
  className: "shrink-0 p-0.5 rounded hover:t-bg-surface transition-colors t-text-secondary hover:t-text",
13385
+ "aria-label": "Dismiss update notification",
13417
13386
  children: /* @__PURE__ */ jsxRuntimeExports.jsx(X$1, { size: 12 })
13418
13387
  }
13419
13388
  )
13420
13389
  ] })
13421
13390
  ] });
13422
13391
  }
13392
+ const api$g = window.api;
13393
+ const KEY_FIELDS = [
13394
+ {
13395
+ name: "ANTHROPIC_API_KEY",
13396
+ label: "Anthropic",
13397
+ placeholder: "sk-ant-...",
13398
+ hint: "Powers Claude models. Get a key at console.anthropic.com",
13399
+ url: "https://console.anthropic.com/settings/keys",
13400
+ required: true
13401
+ },
13402
+ {
13403
+ name: "OPENAI_API_KEY",
13404
+ label: "OpenAI",
13405
+ placeholder: "sk-...",
13406
+ hint: "Powers GPT / o-series models. Get a key at platform.openai.com",
13407
+ url: "https://platform.openai.com/api-keys",
13408
+ required: true
13409
+ },
13410
+ {
13411
+ name: "BRAVE_API_KEY",
13412
+ label: "Brave Search",
13413
+ placeholder: "BSA...",
13414
+ hint: "Enables web search. Without it, search falls back to arXiv only.",
13415
+ url: "https://brave.com/search/api/",
13416
+ required: false
13417
+ },
13418
+ {
13419
+ name: "OPENROUTER_API_KEY",
13420
+ label: "OpenRouter",
13421
+ placeholder: "sk-or-...",
13422
+ hint: "Enables AI-generated scientific diagrams. Optional.",
13423
+ url: "https://openrouter.ai/",
13424
+ required: false
13425
+ }
13426
+ ];
13423
13427
  function ApiKeysSettings({ showSaveButton, onSaved }) {
13424
13428
  const [values, setValues] = reactExports.useState({});
13425
13429
  const [status, setStatus] = reactExports.useState({});
@@ -13705,7 +13709,7 @@ const SUPPORTED_MODELS = [
13705
13709
  { id: "anthropic:claude-opus-4-5-20251101", label: "Claude Opus 4.5", provider: "Anthropic" },
13706
13710
  { id: "anthropic:claude-sonnet-4-5-20250929", label: "Claude Sonnet 4.5", provider: "Anthropic" },
13707
13711
  { id: "anthropic:claude-haiku-4-5-20251001", label: "Claude Haiku 4.5", provider: "Anthropic" },
13708
- // Claude Subscription (OAuth) — gated behind ENABLE_CLAUDE_SUB=1
13712
+ // Claude Subscription (OAuth) — enabled by default alongside ChatGPT Subscription
13709
13713
  { id: "anthropic-sub:claude-opus-4-6", label: "Claude Opus 4.6", provider: "Claude Subscription" },
13710
13714
  { id: "anthropic-sub:claude-opus-4-5-20251101", label: "Claude Opus 4.5", provider: "Claude Subscription" },
13711
13715
  { id: "anthropic-sub:claude-sonnet-4-5-20250929", label: "Claude Sonnet 4.5", provider: "Claude Subscription" },
@@ -13718,19 +13722,31 @@ const SPEED_OPTIONS = [
13718
13722
  { label: "Medium", value: "medium", desc: "Balanced processing. Suitable for most users." },
13719
13723
  { label: "Fast", value: "fast", desc: "Processes papers quickly when idle. Uses more API calls." }
13720
13724
  ];
13721
- const MODEL_GROUPS = (() => {
13722
- const groups = /* @__PURE__ */ new Map();
13723
- for (const m of SUPPORTED_MODELS) {
13724
- const list2 = groups.get(m.provider) || [];
13725
- list2.push(m);
13726
- groups.set(m.provider, list2);
13727
- }
13728
- return groups;
13729
- })();
13725
+ const PROVIDER_ORDER$1 = [
13726
+ "ChatGPT Subscription",
13727
+ "Claude Subscription",
13728
+ "OpenAI",
13729
+ "Anthropic"
13730
+ ];
13731
+ const MODEL_GROUPS = PROVIDER_ORDER$1.map((p) => [p, SUPPORTED_MODELS.filter((m) => m.provider === p)]).filter(([, models]) => models.length > 0);
13732
+ function isSubProvider(providerId) {
13733
+ return providerId === "anthropic-sub" || providerId === "openai-codex";
13734
+ }
13735
+ function providerOf(modelId) {
13736
+ const i = modelId.indexOf(":");
13737
+ return i > 0 ? modelId.slice(0, i) : "";
13738
+ }
13739
+ function labelFor(modelId) {
13740
+ const m = SUPPORTED_MODELS.find((x) => x.id === modelId);
13741
+ if (!m) return modelId;
13742
+ const suffix2 = isSubProvider(providerOf(modelId)) ? " (sub)" : " (api)";
13743
+ return m.label + suffix2;
13744
+ }
13730
13745
  function WikiAgentSettings({ model, speed, onChangeModel, onChangeSpeed }) {
13731
13746
  const [status, setStatus] = reactExports.useState(null);
13732
13747
  const [stats, setStats] = reactExports.useState(null);
13733
13748
  const [recentLog, setRecentLog] = reactExports.useState([]);
13749
+ const [autoResolved, setAutoResolved] = reactExports.useState(null);
13734
13750
  reactExports.useEffect(() => {
13735
13751
  api$f.wikiGetStatus?.().then((s15) => setStatus(s15)).catch(() => {
13736
13752
  });
@@ -13741,12 +13757,55 @@ function WikiAgentSettings({ model, speed, onChangeModel, onChangeSpeed }) {
13741
13757
  const unsub = api$f.onWikiStatus?.((s15) => setStatus(s15));
13742
13758
  return () => unsub?.();
13743
13759
  }, []);
13760
+ reactExports.useEffect(() => {
13761
+ if (model !== "auto") {
13762
+ setAutoResolved(null);
13763
+ return;
13764
+ }
13765
+ let cancelled = false;
13766
+ api$f.pickPreferredModel?.().then((m) => {
13767
+ if (!cancelled) setAutoResolved(m);
13768
+ }).catch(() => {
13769
+ if (!cancelled) setAutoResolved(null);
13770
+ });
13771
+ return () => {
13772
+ cancelled = true;
13773
+ };
13774
+ }, [model]);
13744
13775
  const enabled = model !== "none";
13745
13776
  const speedDesc = SPEED_OPTIONS.find((o2) => o2.value === speed)?.desc || "";
13777
+ const runningModelLabel = reactExports.useMemo(() => {
13778
+ if (model === "auto") {
13779
+ return autoResolved ? `Auto → ${labelFor(autoResolved)}` : "Auto (no auth configured)";
13780
+ }
13781
+ return labelFor(model);
13782
+ }, [model, autoResolved]);
13746
13783
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-6", children: [
13784
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "rounded-lg border border-amber-500/40 bg-amber-500/10 p-3 flex gap-2.5", children: [
13785
+ /* @__PURE__ */ jsxRuntimeExports.jsx(TriangleAlert, { size: 14, className: "shrink-0 mt-0.5 text-amber-500" }),
13786
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "space-y-1", children: [
13787
+ /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-[11px] font-semibold t-text", children: "Heads up: background token usage" }),
13788
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-[11px] t-text-muted leading-relaxed", children: [
13789
+ "The Paper Wiki runs in the background and sends every new paper through an LLM (intro + abstract + full text if available). A typical paper consumes roughly",
13790
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "t-text", children: " 8K–25K input tokens" }),
13791
+ " and produces",
13792
+ " ",
13793
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "t-text", children: "2K–4K output tokens" }),
13794
+ ", plus concept-page updates. Across a full library this can add up to ",
13795
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "t-text", children: "several dollars per day" }),
13796
+ " on API-key billing. ",
13797
+ /* @__PURE__ */ jsxRuntimeExports.jsx("strong", { children: "It is disabled by default" }),
13798
+ " — enable it below only after you've picked a model you're comfortable paying for, and prefer a subscription plan or a smaller/cheaper model for background work."
13799
+ ] })
13800
+ ] })
13801
+ ] }),
13747
13802
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
13748
13803
  /* @__PURE__ */ jsxRuntimeExports.jsx("h4", { className: "text-xs font-semibold t-text mb-1.5", children: "Wiki Agent Model" }),
13749
- /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-[11px] t-text-muted mb-2.5", children: "Select a model to power the background Paper Wiki agent. The wiki accumulates LLM-generated summaries of papers across all your projects. A smaller model is recommended for background processing." }),
13804
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-[11px] t-text-muted mb-2.5", children: [
13805
+ "Select a model to power the background Paper Wiki agent. The wiki accumulates LLM-generated summaries of papers across all your projects. A smaller model is recommended for background processing. Pick ",
13806
+ /* @__PURE__ */ jsxRuntimeExports.jsx("em", { children: "Auto" }),
13807
+ " to follow the system-wide model priority (subscription before API key)."
13808
+ ] }),
13750
13809
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
13751
13810
  "select",
13752
13811
  {
@@ -13754,11 +13813,22 @@ function WikiAgentSettings({ model, speed, onChangeModel, onChangeSpeed }) {
13754
13813
  onChange: (e) => onChangeModel(e.target.value),
13755
13814
  className: "w-full px-3 py-1.5 rounded-lg border t-border t-bg-base t-text text-xs",
13756
13815
  children: [
13757
- /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "none", children: "None (disabled)" }),
13758
- Array.from(MODEL_GROUPS.entries()).map(([provider, models]) => /* @__PURE__ */ jsxRuntimeExports.jsx("optgroup", { label: provider, children: models.map((m) => /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: m.id, children: m.label }, m.id)) }, provider))
13816
+ /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "none", children: "None (disabled — default)" }),
13817
+ /* @__PURE__ */ jsxRuntimeExports.jsx("option", { value: "auto", children: "Auto (match main model priority)" }),
13818
+ MODEL_GROUPS.map(([provider, models]) => /* @__PURE__ */ jsxRuntimeExports.jsx("optgroup", { label: provider, children: models.map((m) => {
13819
+ const suffix2 = isSubProvider(providerOf(m.id)) ? " (sub)" : " (api)";
13820
+ return /* @__PURE__ */ jsxRuntimeExports.jsxs("option", { value: m.id, children: [
13821
+ m.label,
13822
+ suffix2
13823
+ ] }, m.id);
13824
+ }) }, provider))
13759
13825
  ]
13760
13826
  }
13761
13827
  ),
13828
+ enabled && /* @__PURE__ */ jsxRuntimeExports.jsxs("p", { className: "text-[10px] t-text-muted mt-1.5", children: [
13829
+ "Running: ",
13830
+ /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "t-text", children: runningModelLabel })
13831
+ ] }),
13762
13832
  /* @__PURE__ */ jsxRuntimeExports.jsx("p", { className: "text-[10px] t-text-muted mt-1.5 italic", children: "Changes take effect after app restart." })
13763
13833
  ] }),
13764
13834
  enabled && /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { children: [
@@ -14273,9 +14343,8 @@ const useUIStore = create$1((set) => ({
14273
14343
  async function hydratePreferences() {
14274
14344
  const api2 = window.api;
14275
14345
  const prefs = await api2?.loadPreferences?.();
14276
- if (!prefs) return;
14277
14346
  const updates = {};
14278
- if (prefs.selectedModel) {
14347
+ if (prefs?.selectedModel) {
14279
14348
  const m = prefs.selectedModel;
14280
14349
  if (!m.includes(":")) {
14281
14350
  const { provider, modelId } = parseModelKey(m);
@@ -14283,8 +14352,14 @@ async function hydratePreferences() {
14283
14352
  } else {
14284
14353
  updates.selectedModel = m;
14285
14354
  }
14355
+ } else {
14356
+ try {
14357
+ const preferred = await api2?.pickPreferredModel?.();
14358
+ if (preferred) updates.selectedModel = preferred;
14359
+ } catch {
14360
+ }
14286
14361
  }
14287
- if (prefs.reasoningEffort) updates.reasoningEffort = prefs.reasoningEffort;
14362
+ if (prefs?.reasoningEffort) updates.reasoningEffort = prefs.reasoningEffort;
14288
14363
  if (Object.keys(updates).length > 0) useUIStore.setState(updates);
14289
14364
  }
14290
14365
  const uiStore = /* @__PURE__ */ Object.freeze(/* @__PURE__ */ Object.defineProperty({
@@ -29082,7 +29157,15 @@ function UserProfile() {
29082
29157
  }
29083
29158
  );
29084
29159
  }
29085
- const allProviders = [...new Set(SUPPORTED_MODELS.map((m) => m.provider))];
29160
+ const PROVIDER_ORDER = [
29161
+ "ChatGPT Subscription",
29162
+ "Claude Subscription",
29163
+ "OpenAI",
29164
+ "Anthropic"
29165
+ ];
29166
+ const allProviders = PROVIDER_ORDER.filter(
29167
+ (p) => SUPPORTED_MODELS.some((m) => m.provider === p)
29168
+ );
29086
29169
  const allGroupedModels = {};
29087
29170
  for (const p of allProviders) {
29088
29171
  allGroupedModels[p] = SUPPORTED_MODELS.filter((m) => m.provider === p);
@@ -29098,9 +29181,8 @@ function ModelSelector$1({ selectedModel, onSelectModel }) {
29098
29181
  const [showOpenAIDialog, setShowOpenAIDialog] = reactExports.useState(false);
29099
29182
  const ref = reactExports.useRef(null);
29100
29183
  const api2 = window.api;
29101
- const claudeSubEnabled = api2?.isClaudeSubEnabled?.() ?? false;
29102
- const providers = claudeSubEnabled ? allProviders : allProviders.filter((p) => p !== "Claude Subscription");
29103
- const groupedModels = claudeSubEnabled ? allGroupedModels : Object.fromEntries(Object.entries(allGroupedModels).filter(([p]) => p !== "Claude Subscription"));
29184
+ const providers = allProviders;
29185
+ const groupedModels = allGroupedModels;
29104
29186
  const current = SUPPORTED_MODELS.find((m) => m.id === selectedModel);
29105
29187
  const refreshAnthropicStatus = reactExports.useCallback(async () => {
29106
29188
  try {
@@ -29147,12 +29229,12 @@ function ModelSelector$1({ selectedModel, onSelectModel }) {
29147
29229
  reactExports.useEffect(() => {
29148
29230
  refreshAnthropicStatus();
29149
29231
  refreshCodexStatus();
29150
- if (claudeSubEnabled) refreshAnthropicSubStatus();
29232
+ refreshAnthropicSubStatus();
29151
29233
  const unsub = api2?.onAnthropicAuthStatus?.((status) => setAnthropicStatus(status));
29152
29234
  return () => {
29153
29235
  if (typeof unsub === "function") unsub();
29154
29236
  };
29155
- }, [api2, refreshAnthropicStatus, refreshCodexStatus, refreshAnthropicSubStatus, claudeSubEnabled]);
29237
+ }, [api2, refreshAnthropicStatus, refreshCodexStatus, refreshAnthropicSubStatus]);
29156
29238
  const handleCodexLogin = async () => {
29157
29239
  setCodexLoggingIn(true);
29158
29240
  try {
@@ -29240,7 +29322,7 @@ function ModelSelector$1({ selectedModel, onSelectModel }) {
29240
29322
  refreshAnthropicStatus();
29241
29323
  };
29242
29324
  const { provider: currentProvider } = current ? parseModelKey(current.id) : { provider: "" };
29243
- const authBadge = currentProvider === "anthropic" ? anthropicStatus?.authMode === "api-key" ? "api" : "auth" : currentProvider === "anthropic-sub" ? "sub" : currentProvider === "openai-codex" ? "sub" : currentProvider === "openai" ? "api" : null;
29325
+ const authSuffix = currentProvider === "anthropic-sub" || currentProvider === "openai-codex" ? "sub" : currentProvider === "openai" || currentProvider === "anthropic" ? "api" : null;
29244
29326
  return /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { ref, className: "relative", children: [
29245
29327
  /* @__PURE__ */ jsxRuntimeExports.jsxs(
29246
29328
  "button",
@@ -29261,8 +29343,14 @@ function ModelSelector$1({ selectedModel, onSelectModel }) {
29261
29343
  }
29262
29344
  ),
29263
29345
  /* @__PURE__ */ jsxRuntimeExports.jsx(Cpu, { size: 14 }),
29264
- /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "truncate max-w-[72px]", children: current?.label || selectedModel }),
29265
- authBadge && /* @__PURE__ */ jsxRuntimeExports.jsx("span", { className: "text-[10px] px-1 rounded border t-border t-text-muted uppercase", children: authBadge }),
29346
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "truncate max-w-[108px]", children: [
29347
+ current?.label || selectedModel,
29348
+ authSuffix && /* @__PURE__ */ jsxRuntimeExports.jsxs("span", { className: "t-text-muted", children: [
29349
+ " (",
29350
+ authSuffix,
29351
+ ")"
29352
+ ] })
29353
+ ] }),
29266
29354
  /* @__PURE__ */ jsxRuntimeExports.jsx(ChevronDown, { size: 12, className: `transition-transform ${open ? "rotate-180" : ""}` })
29267
29355
  ]
29268
29356
  }
@@ -32923,7 +33011,7 @@ function CenterPanel() {
32923
33011
  }
32924
33012
  const remarkPlugins = [remarkGfm];
32925
33013
  const LazyMilkdownMarkdownEditor = reactExports.lazy(async () => {
32926
- const mod = await __vitePreload(() => import("./MilkdownMarkdownEditor-CK0d0F6d.js").then((n) => n.bL), true ? __vite__mapDeps([0,1]) : void 0, import.meta.url);
33014
+ const mod = await __vitePreload(() => import("./MilkdownMarkdownEditor-BqfydyHs.js").then((n) => n.bL), true ? __vite__mapDeps([0,1]) : void 0, import.meta.url);
32927
33015
  return { default: mod.MilkdownMarkdownEditor };
32928
33016
  });
32929
33017
  const typeIcons = {
@@ -42712,10 +42800,11 @@ function FolderGate({ onOpenSettings }) {
42712
42800
  id: "main-content",
42713
42801
  className: "flex-1 overflow-y-auto pt-[12vh] px-[8vw] pb-6",
42714
42802
  children: /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mx-auto w-full max-w-6xl", children: [
42715
- /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-12 pl-1", children: [
42803
+ /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "mb-8 pl-1", children: [
42716
42804
  /* @__PURE__ */ jsxRuntimeExports.jsx("h1", { className: "text-[16px] font-semibold t-text tracking-tight leading-none", children: "Research Pilot" }),
42717
42805
  /* @__PURE__ */ jsxRuntimeExports.jsx("div", { className: "text-[11px] t-text-muted mt-1.5 leading-none", children: "A research workflow, not a chat window." })
42718
42806
  ] }),
42807
+ /* @__PURE__ */ jsxRuntimeExports.jsx(UpdateBanner, { variant: "welcome", className: "mb-10" }),
42719
42808
  /* @__PURE__ */ jsxRuntimeExports.jsxs("div", { className: "grid grid-cols-1 xl:grid-cols-[minmax(0,1fr)_20rem] gap-12 xl:gap-16 items-start", children: [
42720
42809
  /* @__PURE__ */ jsxRuntimeExports.jsxs("section", { "aria-labelledby": "recents-heading", children: [
42721
42810
  /* @__PURE__ */ jsxRuntimeExports.jsx("h2", { id: "recents-heading", className: "sr-only", children: "Recent projects" }),
@@ -1,9 +1,9 @@
1
- import { L as LRParser, E as ExternalTokenizer } from "./index-Do8kanBG.js";
2
- import { s as styleTags, t as tags, a as LanguageSupport, p as parseMixed, L as LRLanguage, i as indentNodeProp, c as continuedIndent, h as delimitedIndent, f as foldNodeProp, j as foldInside } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
3
- import { html } from "./index-Dk6CqgIG.js";
4
- import "./index-DcOi0itd.js";
5
- import "./index-DCdUaSNI.js";
6
- import "./index--rks7CK0.js";
1
+ import { L as LRParser, E as ExternalTokenizer } from "./index-CYcmNTWS.js";
2
+ import { s as styleTags, t as tags, a as LanguageSupport, p as parseMixed, L as LRLanguage, i as indentNodeProp, c as continuedIndent, h as delimitedIndent, f as foldNodeProp, j as foldInside } from "./MilkdownMarkdownEditor-BqfydyHs.js";
3
+ import { html } from "./index-B86Rm5VH.js";
4
+ import "./index-C90yL_Oq.js";
5
+ import "./index-B0bfGE4l.js";
6
+ import "./index-DnIy5Txo.js";
7
7
  const castOpen = 1, HeredocString = 2, interpolatedStringContent = 275, EscapeSequence = 3, afterInterpolation = 276, automaticSemicolon = 277, eof = 278, abstract = 4, and = 5, array = 6, as = 7, Boolean = 8, _break = 9, _case = 10, _catch = 11, clone = 12, _const = 13, _continue = 14, _default = 15, declare = 16, _do = 17, echo = 18, _else = 19, elseif = 20, enddeclare = 21, endfor = 22, endforeach = 23, endif = 24, endswitch = 25, endwhile = 26, _enum = 27, _extends = 28, final = 29, _finally = 30, fn = 31, _for = 32, foreach = 33, from = 34, _function = 35, global = 36, goto = 37, _if = 38, _implements = 39, include = 40, include_once = 41, _instanceof = 42, insteadof = 43, _interface = 44, list = 45, match = 46, namespace = 47, _new = 48, _null = 49, or = 50, print = 51, readonly = 52, _require = 53, require_once = 54, _return = 55, _switch = 56, _throw = 57, trait = 58, _try = 59, unset = 60, use = 61, _var = 62, Visibility = 63, _while = 64, xor = 65, _yield = 66;
8
8
  const keywordMap = {
9
9
  abstract,
@@ -1,4 +1,4 @@
1
- import { P as Parser, N as NodeSet, k as NodeType, D as DefaultBufferLength, l as NodeProp, T as Tree, I as IterMode } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
1
+ import { P as Parser, N as NodeSet, k as NodeType, D as DefaultBufferLength, l as NodeProp, T as Tree, I as IterMode } from "./MilkdownMarkdownEditor-BqfydyHs.js";
2
2
  var define_process_env_default = {};
3
3
  class Stack {
4
4
  /**
@@ -1,6 +1,6 @@
1
- import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-Do8kanBG.js";
2
- import { s as styleTags, t as tags, b as ifNotIn, e as syntaxTree, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp, j as foldInside, aw as NodeWeakMap, I as IterMode, d as completeFromList, av as snippetCompletion } from "./MilkdownMarkdownEditor-CK0d0F6d.js";
3
- import "./index-DcOi0itd.js";
1
+ import { L as LRParser, E as ExternalTokenizer, C as ContextTracker } from "./index-CYcmNTWS.js";
2
+ import { s as styleTags, t as tags, b as ifNotIn, e as syntaxTree, a as LanguageSupport, L as LRLanguage, i as indentNodeProp, h as delimitedIndent, f as foldNodeProp, j as foldInside, aw as NodeWeakMap, I as IterMode, d as completeFromList, av as snippetCompletion } from "./MilkdownMarkdownEditor-BqfydyHs.js";
3
+ import "./index-C90yL_Oq.js";
4
4
  const printKeyword = 1, indent = 194, dedent = 195, newline$1 = 196, blankLineStart = 197, newlineBracketed = 198, eof = 199, stringContent = 200, Escape = 2, replacementStart = 3, stringEnd = 201, ParenL = 24, ParenthesizedExpression = 25, TupleExpression = 49, ComprehensionExpression = 50, BracketL = 55, ArrayExpression = 56, ArrayComprehensionExpression = 57, BraceL = 59, DictionaryExpression = 60, DictionaryComprehensionExpression = 61, SetExpression = 62, SetComprehensionExpression = 63, ArgList = 65, subscript = 238, String$1 = 71, stringStart = 241, stringStartD = 242, stringStartL = 243, stringStartLD = 244, stringStartR = 245, stringStartRD = 246, stringStartRL = 247, stringStartRLD = 248, FormatString = 72, stringStartF = 249, stringStartFD = 250, stringStartFL = 251, stringStartFLD = 252, stringStartFR = 253, stringStartFRD = 254, stringStartFRL = 255, stringStartFRLD = 256, FormatReplacement = 73, nestedFormatReplacement = 77, importList = 263, TypeParamList = 112, ParamList = 130, SequencePattern = 151, MappingPattern = 152, PatternArgList = 155;
5
5
  const newline = 10, carriageReturn = 13, space = 32, tab = 9, hash = 35, parenOpen = 40, dot = 46, braceOpen = 123, braceClose = 125, singleQuote = 39, doubleQuote = 34, backslash = 92, letter_o = 111, letter_x = 120, letter_N = 78, letter_u = 117, letter_U = 85;
6
6
  const bracketed = /* @__PURE__ */ new Set([