pelican-cc 0.4.0 → 0.4.1

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 (59) hide show
  1. package/CHANGELOG.md +200 -0
  2. package/README.md +11 -7
  3. package/THIRD_PARTY_NOTICES +3899 -0
  4. package/dist/server/index.js +24263 -3908
  5. package/dist/server/index.js.map +4 -4
  6. package/dist/web/assets/Chat-B4LGOITk.js +101 -0
  7. package/dist/web/assets/Chat-B4LGOITk.js.br +0 -0
  8. package/dist/web/assets/Chat-B4LGOITk.js.gz +0 -0
  9. package/dist/web/assets/ModelSheet-C_-Ol1pH.js +1 -0
  10. package/dist/web/assets/ModelSheet-C_-Ol1pH.js.br +0 -0
  11. package/dist/web/assets/ModelSheet-C_-Ol1pH.js.gz +0 -0
  12. package/dist/web/assets/{Settings-ByxVBoK1.js → Settings-3SpX54gH.js} +3 -3
  13. package/dist/web/assets/Settings-3SpX54gH.js.br +0 -0
  14. package/dist/web/assets/Settings-3SpX54gH.js.gz +0 -0
  15. package/dist/web/assets/{Usage-DvP3bGmY.js → Usage-iU-isUVI.js} +1 -1
  16. package/dist/web/assets/Usage-iU-isUVI.js.br +0 -0
  17. package/dist/web/assets/Usage-iU-isUVI.js.gz +0 -0
  18. package/dist/web/assets/{WorkspaceChanges-Cnv5Vi7J.js → WorkspaceChanges-Cy5Xd2wL.js} +1 -1
  19. package/dist/web/assets/WorkspaceChanges-Cy5Xd2wL.js.br +0 -0
  20. package/dist/web/assets/WorkspaceChanges-Cy5Xd2wL.js.gz +0 -0
  21. package/dist/web/assets/{WorkspaceFiles-CSlYqC41.js → WorkspaceFiles-CqdNRA7k.js} +1 -1
  22. package/dist/web/assets/WorkspaceFiles-CqdNRA7k.js.br +0 -0
  23. package/dist/web/assets/WorkspaceFiles-CqdNRA7k.js.gz +0 -0
  24. package/dist/web/assets/index-7XuVvu-3.css +2 -0
  25. package/dist/web/assets/index-7XuVvu-3.css.br +0 -0
  26. package/dist/web/assets/index-7XuVvu-3.css.gz +0 -0
  27. package/dist/web/assets/index-D6DDBXmr.js +61 -0
  28. package/dist/web/assets/index-D6DDBXmr.js.br +0 -0
  29. package/dist/web/assets/index-D6DDBXmr.js.gz +0 -0
  30. package/dist/web/assets/{usage-CHTS1DtT.js → usage-EcOxb73D.js} +1 -1
  31. package/dist/web/assets/usage-EcOxb73D.js.br +0 -0
  32. package/dist/web/assets/usage-EcOxb73D.js.gz +0 -0
  33. package/dist/web/index.html +2 -2
  34. package/dist/web/index.html.br +0 -0
  35. package/dist/web/index.html.gz +0 -0
  36. package/package.json +9 -9
  37. package/dist/web/assets/Chat-hw_dVyZ5.js +0 -101
  38. package/dist/web/assets/Chat-hw_dVyZ5.js.br +0 -0
  39. package/dist/web/assets/Chat-hw_dVyZ5.js.gz +0 -0
  40. package/dist/web/assets/ModelSheet-DDh0NARP.js +0 -1
  41. package/dist/web/assets/ModelSheet-DDh0NARP.js.br +0 -0
  42. package/dist/web/assets/ModelSheet-DDh0NARP.js.gz +0 -0
  43. package/dist/web/assets/Settings-ByxVBoK1.js.br +0 -0
  44. package/dist/web/assets/Settings-ByxVBoK1.js.gz +0 -0
  45. package/dist/web/assets/Usage-DvP3bGmY.js.br +0 -0
  46. package/dist/web/assets/Usage-DvP3bGmY.js.gz +0 -0
  47. package/dist/web/assets/WorkspaceChanges-Cnv5Vi7J.js.br +0 -0
  48. package/dist/web/assets/WorkspaceChanges-Cnv5Vi7J.js.gz +0 -0
  49. package/dist/web/assets/WorkspaceFiles-CSlYqC41.js.br +0 -0
  50. package/dist/web/assets/WorkspaceFiles-CSlYqC41.js.gz +0 -0
  51. package/dist/web/assets/index-Ck4Wpk8v.css +0 -2
  52. package/dist/web/assets/index-Ck4Wpk8v.css.br +0 -0
  53. package/dist/web/assets/index-Ck4Wpk8v.css.gz +0 -0
  54. package/dist/web/assets/index-fRwaTlu9.js +0 -40
  55. package/dist/web/assets/index-fRwaTlu9.js.br +0 -0
  56. package/dist/web/assets/index-fRwaTlu9.js.gz +0 -0
  57. package/dist/web/assets/usage-CHTS1DtT.js.br +0 -0
  58. package/dist/web/assets/usage-CHTS1DtT.js.gz +0 -0
  59. package/npm-shrinkwrap.json +0 -6710
@@ -1 +1 @@
1
- import{C as e}from"./index-fRwaTlu9.js";var t=e=>e.input+e.output+e.cacheRead+e.cacheWrite;function n(e){let t=e.input+e.cacheWrite+e.cacheRead;return t>0?e.cacheRead/t:void 0}function r(e){let t=e.replace(/^.*?(?=claude-)/,``).replace(/^claude-/,``).replace(/\[.*?\]/g,``).replace(/[@:].*$/,``).replace(/-v\d+$/,``).split(`-`).filter(e=>!/^\d{8}$/.test(e)),n=t.find(e=>/^[a-z]+$/.test(e));if(!n||!e.includes(`claude`))return e;let r=t.filter(e=>/^\d{1,2}$/.test(e));return`${n[0].toUpperCase()}${n.slice(1)}${r.length>0?` ${r.join(`.`)}`:``}`}function i(e){return e.signedIn===!0&&!e.plan}var a=`estimated at API prices`;function o(e,t=0){return`${e>=100?`$${Math.round(e).toLocaleString(`en`)}`:`$${e.toFixed(2)}`}, ${a}${t>0?`; ${t} ${t===1?`session has`:`sessions have`} no estimate`:``}`}function s(e){let t=Math.max(0,Math.round(e));if(t<1e4)return t.toLocaleString(`en`);let n=[[0xe8d4a51000,`T`],[1e9,`B`],[1e6,`M`],[1e3,`K`]];for(let e=0;e<n.length;e+=1){let[r,i]=n[e];if(t<r)continue;let a=t/r,o=a>=100?Math.round(a):Math.round(a*10)/10;return o>=1e3&&e>0?`${Math.round(t/n[e-1][0]*10)/10}${n[e-1][1]}`:`${o}${i}`}return String(t)}var c=e=>e>0&&e<.005?`<1%`:`${Math.round(e*100)}%`;function l(e){if(e<6e4)return`${Math.max(1,Math.round(e/1e3))}s`;let t=Math.round(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60);if(n<24)return t%60?`${n}h ${t%60}m`:`${n}h`;let r=Math.floor(n/24);return n%24?`${r}d ${n%24}h`:`${r}d`}var u=e=>new Date(`${e}T00:00:00Z`),d=e=>u(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`,timeZone:`UTC`}),f=e=>u(e).toLocaleDateString(void 0,{weekday:`short`,timeZone:`UTC`}),p=e=>u(e).toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`,timeZone:`UTC`});function m(e,t){return e===`7d`?`in the last 7 days`:e===`30d`?`in the last 30 days`:`since ${d(t.tokensSince??t.from)}`}var h=e=>new Date(2e3,0,1,e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`});function g(e){if(e.length<2)return;let t;for(let n of[...new Set(e)].sort((e,t)=>e-t)){let r=e.filter(e=>(e-n+24)%24<4).length;r*3>=e.length*2&&(!t||r>t[1])&&(t=[n,r])}return t&&[t[0],(t[0]+4)%24]}var _=e=>e===1?`once`:e===2?`twice`:`${e} times`,v=t=>`“${e(t,40)}”`;function y(e,r=e=>new Date(e).getHours()){let i=[],a=t(e.tokens);if(a>0){let t=e.projects[0];e.projects.length>1&&t&&t.tokens/a>=.4&&i.push(`${c(t.tokens/a)} of the tokens went to ${t.name}.`);let r=e.sessions[0];e.sessions.length>1&&r&&r.tokens/a>=.25&&i.push(`One session, ${v(r.title)}, took ${c(r.tokens/a)}.`);let o=n(e.tokens);o!==void 0&&i.push(o>=.6?`${c(o)} of the input was read from the cache.`:`Only ${c(o)} of the input was read from the cache. After a pause longer than the cache lasts, the next message sends the whole conversation again.`)}let o=e.limits.filter(e=>e.kind===`session`);if(o.length===1)i.push(`The 5-hour limit was reached once, around ${h(r(o[0].at))}.`);else if(o.length>1){let e=g(o.map(e=>r(e.at)));i.push(`The 5-hour limit was reached ${_(o.length)}${e?`, mostly between ${h(e[0])} and ${h(e[1])}`:``}.`)}let s=e.limits.filter(e=>e.kind===`weekly`);if(s.length>0){let e=s.length===1?`, on ${new Date(s[0].at).toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`})}`:``;i.push(`The weekly limit was reached ${_(s.length)}${e}.`)}let u=e.limits.filter(e=>e.kind===`model`);u.length>0&&i.push(`A model’s weekly limit was reached ${_(u.length)}.`),e.waits&&e.waits.ms>=6e4&&i.push(`In Pelican, Claude waited ${l(e.waits.ms)} for your answers${e.waits.count>=3?`, ${l(e.waits.longest)} at most`:``}.`);let[d,...f]=e.compacted;return d&&i.push(f.length===0?`${v(d.title)} was compacted ${_(d.times)}. A new session for each new task keeps the context small.`:`${e.compacted.length} sessions were compacted three times or more, ${v(d.title)} ${_(d.times)}. A new session for each new task keeps the context small.`),i}export{c as a,_ as c,i as d,o as f,p as i,f as l,t as m,d as n,m as o,r as p,y as r,l as s,s as t,n as u};
1
+ import{C as e}from"./index-D6DDBXmr.js";var t=e=>e.input+e.output+e.cacheRead+e.cacheWrite;function n(e){let t=e.input+e.cacheWrite+e.cacheRead;return t>0?e.cacheRead/t:void 0}function r(e){let t=e.replace(/^.*?(?=claude-)/,``).replace(/^claude-/,``).replace(/\[.*?\]/g,``).replace(/[@:].*$/,``).replace(/-v\d+$/,``).split(`-`).filter(e=>!/^\d{8}$/.test(e)),n=t.find(e=>/^[a-z]+$/.test(e));if(!n||!e.includes(`claude`))return e;let r=t.filter(e=>/^\d{1,2}$/.test(e));return`${n[0].toUpperCase()}${n.slice(1)}${r.length>0?` ${r.join(`.`)}`:``}`}function i(e){return e.signedIn===!0&&!e.plan}var a=`estimated at API prices`;function o(e,t=0){return`${e>=100?`$${Math.round(e).toLocaleString(`en`)}`:`$${e.toFixed(2)}`}, ${a}${t>0?`; ${t} ${t===1?`session has`:`sessions have`} no estimate`:``}`}function s(e){let t=Math.max(0,Math.round(e));if(t<1e4)return t.toLocaleString(`en`);let n=[[0xe8d4a51000,`T`],[1e9,`B`],[1e6,`M`],[1e3,`K`]];for(let e=0;e<n.length;e+=1){let[r,i]=n[e];if(t<r)continue;let a=t/r,o=a>=100?Math.round(a):Math.round(a*10)/10;return o>=1e3&&e>0?`${Math.round(t/n[e-1][0]*10)/10}${n[e-1][1]}`:`${o}${i}`}return String(t)}var c=e=>e>0&&e<.005?`<1%`:`${Math.round(e*100)}%`;function l(e){if(e<6e4)return`${Math.max(1,Math.round(e/1e3))}s`;let t=Math.round(e/6e4);if(t<60)return`${t}m`;let n=Math.floor(t/60);if(n<24)return t%60?`${n}h ${t%60}m`:`${n}h`;let r=Math.floor(n/24);return n%24?`${r}d ${n%24}h`:`${r}d`}var u=e=>new Date(`${e}T00:00:00Z`),d=e=>u(e).toLocaleDateString(void 0,{month:`short`,day:`numeric`,timeZone:`UTC`}),f=e=>u(e).toLocaleDateString(void 0,{weekday:`short`,timeZone:`UTC`}),p=e=>u(e).toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`,timeZone:`UTC`});function m(e,t){return e===`7d`?`in the last 7 days`:e===`30d`?`in the last 30 days`:`since ${d(t.tokensSince??t.from)}`}var h=e=>new Date(2e3,0,1,e).toLocaleTimeString(void 0,{hour:`2-digit`,minute:`2-digit`});function g(e){if(e.length<2)return;let t;for(let n of[...new Set(e)].sort((e,t)=>e-t)){let r=e.filter(e=>(e-n+24)%24<4).length;r*3>=e.length*2&&(!t||r>t[1])&&(t=[n,r])}return t&&[t[0],(t[0]+4)%24]}var _=e=>e===1?`once`:e===2?`twice`:`${e} times`,v=t=>`“${e(t,40)}”`;function y(e,r=e=>new Date(e).getHours()){let i=[],a=t(e.tokens);if(a>0){let t=e.projects[0];e.projects.length>1&&t&&t.tokens/a>=.4&&i.push(`${c(t.tokens/a)} of the tokens went to ${t.name}.`);let r=e.sessions[0];e.sessions.length>1&&r&&r.tokens/a>=.25&&i.push(`One session, ${v(r.title)}, took ${c(r.tokens/a)}.`);let o=n(e.tokens);o!==void 0&&i.push(o>=.6?`${c(o)} of the input was read from the cache.`:`Only ${c(o)} of the input was read from the cache. After a pause longer than the cache lasts, the next message sends the whole conversation again.`)}let o=e.limits.filter(e=>e.kind===`session`);if(o.length===1)i.push(`The 5-hour limit was reached once, around ${h(r(o[0].at))}.`);else if(o.length>1){let e=g(o.map(e=>r(e.at)));i.push(`The 5-hour limit was reached ${_(o.length)}${e?`, mostly between ${h(e[0])} and ${h(e[1])}`:``}.`)}let s=e.limits.filter(e=>e.kind===`weekly`);if(s.length>0){let e=s.length===1?`, on ${new Date(s[0].at).toLocaleDateString(void 0,{weekday:`short`,month:`short`,day:`numeric`})}`:``;i.push(`The weekly limit was reached ${_(s.length)}${e}.`)}let u=e.limits.filter(e=>e.kind===`model`);u.length>0&&i.push(`A model’s weekly limit was reached ${_(u.length)}.`),e.waits&&e.waits.ms>=6e4&&i.push(`In Pelican, Claude waited ${l(e.waits.ms)} for your answers${e.waits.count>=3?`, ${l(e.waits.longest)} at most`:``}.`);let[d,...f]=e.compacted;return d&&i.push(f.length===0?`${v(d.title)} was compacted ${_(d.times)}. A new session for each new task keeps the context small.`:`${e.compacted.length} sessions were compacted three times or more, ${v(d.title)} ${_(d.times)}. A new session for each new task keeps the context small.`),i}export{c as a,_ as c,i as d,o as f,p as i,f as l,t as m,d as n,m as o,r as p,y as r,l as s,s as t,n as u};
@@ -13,8 +13,8 @@
13
13
  <link rel="apple-touch-icon" href="./apple-touch-icon.png" />
14
14
  <link rel="manifest" href="./manifest.webmanifest" />
15
15
  <title>Pelican</title>
16
- <script type="module" crossorigin src="./assets/index-fRwaTlu9.js"></script>
17
- <link rel="stylesheet" crossorigin href="./assets/index-Ck4Wpk8v.css">
16
+ <script type="module" crossorigin src="./assets/index-D6DDBXmr.js"></script>
17
+ <link rel="stylesheet" crossorigin href="./assets/index-7XuVvu-3.css">
18
18
  </head>
19
19
  <body>
20
20
  <div id="root"></div>
Binary file
Binary file
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "pelican-cc",
3
- "version": "0.4.0",
3
+ "version": "0.4.1",
4
4
  "description": "Every Claude Code session on your computer, on your phone. No wrapper, no relay, no account.",
5
5
  "keywords": [
6
6
  "claude",
@@ -32,9 +32,9 @@
32
32
  },
33
33
  "files": [
34
34
  "dist",
35
- "npm-shrinkwrap.json",
36
35
  "README.md",
37
36
  "LICENSE",
37
+ "THIRD_PARTY_NOTICES",
38
38
  "CHANGELOG.md"
39
39
  ],
40
40
  "engines": {
@@ -51,14 +51,10 @@
51
51
  "prepublishOnly": "npm run typecheck && npm test && npm run build"
52
52
  },
53
53
  "dependencies": {
54
- "@anthropic-ai/claude-agent-sdk": "0.3.318",
55
- "@hono/node-server": "^2.1.6",
56
- "hono": "^4.13.16",
57
- "qrcode-generator": "^2.0.4",
58
- "web-push": "^3.6.7",
59
- "ws": "^8.22.1"
54
+ "@anthropic-ai/claude-agent-sdk": "0.3.318"
60
55
  },
61
56
  "devDependencies": {
57
+ "@hono/node-server": "^2.1.6",
62
58
  "@tailwindcss/vite": "^4.3.4",
63
59
  "@tanstack/react-query": "^5.105.3",
64
60
  "@testing-library/react": "^16.3.0",
@@ -70,9 +66,11 @@
70
66
  "@vitejs/plugin-react": "^6.2.1",
71
67
  "diff": "^9.0.0",
72
68
  "esbuild": "^0.28.2",
69
+ "hono": "^4.13.16",
73
70
  "jsdom": "^27.0.0",
74
71
  "lucide-react": "^1.68.0",
75
72
  "playwright-core": "^1.64.1",
73
+ "qrcode-generator": "^2.0.4",
76
74
  "react": "^19.3.1",
77
75
  "react-dom": "^19.3.1",
78
76
  "react-markdown": "^10.1.0",
@@ -83,6 +81,8 @@
83
81
  "tsx": "^4.23.15",
84
82
  "typescript": "^7.0.2",
85
83
  "vite": "^8.3.5",
86
- "vitest": "^5.1.0"
84
+ "vitest": "^5.1.0",
85
+ "web-push": "^3.6.7",
86
+ "ws": "^8.22.1"
87
87
  }
88
88
  }