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
package/CHANGELOG.md CHANGED
@@ -1,5 +1,205 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.4.1
4
+
5
+ Pinned sessions and the files Claude sends you, as in Claude Desktop; approvals that show what a
6
+ command hides; and what the reviews of 0.4.0 left.
7
+
8
+ ### Highlights
9
+
10
+ - **Pinned sessions, as in Claude Desktop.** On a phone, a short swipe left on a row shows Pin
11
+ (Unpin on a pinned row) beside Archive, Archive at the edge as in Mail; a swipe all the way across
12
+ archives, with Undo, as before. On a computer the pin sits beside Archive when you point at a row,
13
+ and Pin is in the session menu; in the list, Undo shows for five seconds. A row takes no swipe
14
+ right, which is Safari's Back, nor one that starts at the very edge of the screen. Pinned sessions
15
+ lead the list under Pinned, grouped by time or by project, and under their project's filter, each
16
+ with its status (Working, Needs you, tasks) and its earlier runs. Pins are Pelican's own, kept on
17
+ the computer for all your browsers: a session pinned in Claude Desktop is not pinned here, and
18
+ Desktop's pins are left alone. Archiving a session unpins it.
19
+ - **Files Claude sends you, as in Claude Desktop.** In the sessions Pelican runs, Claude can send
20
+ you files (Claude Code's SendUserFile): Pelican now tells Claude Code it shows them, the way
21
+ Claude Code expects of an app that does, which turns that tool on and nothing else. Before, the
22
+ call failed with "SendUserFile is still listed for this conversation but is switched off in this
23
+ session right now". A file shows where Claude sent it, as it is sent and after a reload, read
24
+ from where Claude Code delivered it, under the words Claude sends with it, which read as a reply
25
+ does, Markdown and all: pictures in place, side by side at their own size when they come alone and
26
+ as small squares beside other files, larger on a tap; a video or a sound in a player, a part at a
27
+ time, so it plays in Safari too; a page or an SVG as the still preview, with Run; text to read,
28
+ Markdown as it reads, folded when long; a PDF in your browser's own viewer, in a tab of its own;
29
+ anything else as a card to download, with its type, name and size. A file Claude meant you to
30
+ save stays a card until you open it. While the call runs its step says "Sending file", and
31
+ "Failed to send" if it fails, in Claude Desktop's words, and sent files are never folded away
32
+ among steps. Asked to send one from outside the session's folder, the approval says "Claude wants
33
+ to send you a file" and lists it, instead of the call's raw input.
34
+
35
+ ### Fixes
36
+
37
+ - `npm install -g pelican-cc` installs Claude Code for this computer alone, about 150 MB to
38
+ download: from the package's npm-shrinkwrap.json, npm installed it for all eight platforms, 1.2 GB
39
+ to download and 2.6 GB on disk, and in a project Pelican's own build and test tools too. The
40
+ packages Pelican's server uses are built into it instead, as CI tested them, and the Agent SDK,
41
+ with the Claude Code it brings, stays pinned to one version. The package now ships
42
+ `THIRD_PARTY_NOTICES`: each package built into the server and the web app, with its version and
43
+ license in full, and, for web-push, which is under the MPL 2.0, that its source is its npm
44
+ package. It credits esbuild for the helper code it writes into the server, gives what rolldown's
45
+ runtime takes from others, and quotes the notices of others that files built in carry at their
46
+ top, such as path-browserify's in code of vfile's, which minifying leaves out. The build writes it
47
+ from what it puts in the bundles, and fails if one is missing.
48
+ - A file Claude sent that is no longer there, as many are in older sessions, says "No longer on
49
+ this computer" before you tap anything, the same for every type, with its name and size and
50
+ nothing to tap; one past 200 MB says it is larger than Pelican serves, and a text file that large
51
+ still shows its start. A browser tab that opens one anyway says so in a page, not in JSON.
52
+ - A character in a sent file's name that hides or turns text around shows as ⟨U+202E⟩, with the
53
+ approval's warning, on its card, in the step that sends it and in the name it is saved under: a
54
+ script named to read as a picture no longer does. A screenshot keeps the name macOS gave it.
55
+ - Files Claude sent in Claude Desktop show from Claude Code's record of what it delivered, so one
56
+ Claude named by a relative path shows too; a file Claude Code did not deliver never shows.
57
+ - An SVG file Claude writes shows in its own colors and fonts, as a browser shows it: the visuals'
58
+ styles repainted its text and boxes (a yellow box near-white, a white label near-black). A sent
59
+ picture too small for the download button in its corner has the button beside it.
60
+ - A download, of a file Claude sent or from Changes and files, stops at the size the file had when
61
+ you asked for it: one that grew meanwhile, such as a log still being written, went on past the
62
+ size it had announced, and past the 200 MB limit. One cut short meanwhile breaks the download off.
63
+ - A file whose extension names what every JavaScript object has, such as `.constructor`, opens as a
64
+ file: sent by Claude it failed with a server error, in Changes and files it showed as a broken
65
+ picture, and as an upload it would not open.
66
+ - On a computer, a row's buttons cut none of its words: the words under them fade out, and in a
67
+ compact row the project and time make room for them. From the keyboard, Pin, Unpin and Archive
68
+ leave focus on the session's row where it went, or on the next row when it leaves the list, and
69
+ Undo brings focus back to it; Archive used to drop it to the page.
70
+ - A compact row keeps a date on one line ("Oct 25", not "Oct" over "25"), and grouped by time the
71
+ list's headings say what they hold, Previous 7 days and Previous 30 days: "This month" held
72
+ October's sessions on 6 November.
73
+ - A session archived in 0.4.0 while pinned in 0.4.1 comes back unpinned when you unarchive it.
74
+ - A step Claude is still writing keeps its icon and its verb at their size beside a long command.
75
+ - A conversation shows its day above its first message too, and above the first prompt of each new
76
+ day, as Claude Desktop does: Today, Yesterday, or the weekday and date.
77
+ - A `!` command that is a command in backquotes, such as `` `grep x f` ``, takes exit code 1 as
78
+ an answer, as Claude Code does, not as a failure: where a command would start, Pelican reads a
79
+ backquote as Claude Code's parser does, after `;`, `|`, `if` or an assignment too.
80
+ - Beside the conversation on a computer, a file's Quote and Copy row ends level with Send now and
81
+ the message boxes; it sat 2px lower.
82
+ - An Agent call's steps come a page at a time, the newest first, with Show earlier, as a workflow
83
+ agent's do: a long subagent's transcript, tens of megabytes, no longer reaches the phone whole. A
84
+ page with no step in it, such as a long answer at the end, is read past, so the card counts the
85
+ steps it shows, never "Last 0 steps", and Show earlier always brings at least one more; a page
86
+ that cannot be read says why, and Show earlier asks again. A step too large to show says what was
87
+ left out of it, and the transcript is read only from the session's own folder.
88
+ - Behind a tunnel or a proxy that cannot reach Pelican, a 502, 503 or 504 shows the quiet "Can't
89
+ reach" line, which keeps trying, instead of the error; a conversation that could not load then
90
+ loads once the computer is in reach again, also while the live connection stayed up.
91
+ - Export as Markdown reads as the conversation does, but for a reply's single line breaks, which a
92
+ Markdown file joins, as GitHub does. A prompt is text, as you typed it: none of its Markdown takes
93
+ effect, so a ``` it opens no longer swallows the rest of the file, nor makes a line of `:--` a
94
+ table, and its quotes are quotes, a quote from a file its lines as code. A reply keeps to itself
95
+ in any reader (GitHub, VS Code's preview, the spec's own): a heading in it sits under the
96
+ speakers' (`##` becomes `####`), so none passes for "You" or "Claude"; its HTML is text, as the
97
+ conversation shows it, so none hides the turns after it; a picture is a link that names its site,
98
+ never loaded when the file is read; its links by reference are written with their addresses and
99
+ its footnotes under labels of its own, so two replies' `[^1]` are two footnotes and no reply
100
+ changes where another's links lead or what its footnotes say; and a code block it leaves open ends
101
+ with it. Where readers part ways on a reply (an autolink with a character one of them takes, an
102
+ address with a control character, `ftp://`, a table VS Code's preview finds under a fence or a
103
+ heading), it is written so that they read it alike. The files Claude sent are named under their
104
+ step, with the words Claude sent with them. An address that starts with http://, https://, ftp://
105
+ or www., and an email, in prompts and Claude Code's notes stay text, as code, where a reader would
106
+ link them. A text past 60,000 characters ends with "…", as the conversation shows it. The folder
107
+ is named as the app names it, from your home folder (`~/code/acme-web`), and a file a step reads,
108
+ edits or writes from the session's folder (`src/styles/theme.css`).
109
+
110
+ ### Security
111
+
112
+ - An approval shows the characters that show as nothing or turn text around, as `⟨U+E0078⟩`, and
113
+ warns of them: besides the zero-width and direction-changing ones, tags, a variation selector
114
+ after a letter or a run of them, fillers, soft hyphens, a carriage return, a code point not
115
+ assigned yet and the others Chrome draws as nothing or as a blank, so a command can no longer read
116
+ as `./build.sh` and run another file. The trust sheet, the line saying why Claude Code asks and a
117
+ sent file's name show them the same way.
118
+ - A space other than a plain one in a command shows as `⟨U+00A0⟩`, with the warning, unless Pelican
119
+ finds it in quotes, a heredoc's body or a comment: a shell takes it as part of a word, so `echo
120
+ done⟨U+00A0⟩# ; curl … | sh` read as a comment and ran curl, and `LC_ALL=C⟨U+00A0⟩cat ./setup.sh`
121
+ ran ./setup.sh. Pelican reads the command as bash, zsh, dash and macOS's bash 3.2 do, and the
122
+ scripts it hands a new shell: after `bash -c` or `ssh`, in a heredoc or pipe into `sh`, a script
123
+ it writes with a redirection or `tee` and then runs by its path, or by its name once it makes it a
124
+ program, or that runs on its own as a git hook or as a file a shell reads as it starts (what
125
+ BASH_ENV, ENV or `--rcfile` names, a .zshenv). A command that uses what can run text later in its
126
+ own shell has every such space show, however the text is made (split across quotes, by a variable
127
+ or an escape): `eval`, `source`, `trap`, an alias in any form (after `command` or `builtin`, or
128
+ named by a variable), `read`, `declare`, `let`, `unset`, zsh's `set -A` and its functions array,
129
+ bash's `BASH_ALIASES`, a parameter flag such as zsh's `(e)` and `$~x` or bash's `@P`, `setopt` or
130
+ `set -o` with an option that changes how text reads, `test` or `[` with an operator a variable may
131
+ give (`-v`), `at` and `crontab`, a command whose name Pelican does not know, arithmetic on a
132
+ variable the command sets to anything but a number, and the like, each by its name in any case (a
133
+ Mac runs `READ` as /usr/bin/read); so does a ksh script with a `<<#` heredoc, a script or a
134
+ program run by a path that is not plain text (`bash "$t"`) or from a folder the command writes
135
+ into but for a file it wrote there, and one run by its path where the command unpacks, patches or
136
+ copies a folder. Quoted text with a substitution's start in it counts as in a word. Where it
137
+ cannot tell, every such space shows. The same goes for a Monitor's command and, in the trust
138
+ sheet, for a hook, a helper, a skill's command and a git filter; between the arguments of an MCP
139
+ server, or of a hook run without a shell, every such space shows. A script another program writes
140
+ by itself, as `sed`'s `w`, `sort -o`, `split`, perl, python or awk can, is not followed, nor a
141
+ string another program runs in a shell of its own, such as python's `os.system` or a Makefile's
142
+ recipe. A long command shows at once, read once, and reading one takes at most a fixed time and
143
+ memory: a command longer than 64 KB, or that would take more to read than a fixed budget, has
144
+ every such space show, as a tool's input with many commands and a trust sheet's items share one
145
+ such budget (`x=…; bash -c "$x $x …"` of 24 KB took gigabytes, and crashed the page with the
146
+ approval on it again after each reload).
147
+ - In a PowerShell command such a space shows as it is, as PowerShell takes it for a space, unless
148
+ the command hands a script to bash, sh, wsl or ssh, which read it otherwise: then every one shows,
149
+ with the warning; in the trust sheet too, for a hook PowerShell runs.
150
+ - Ordinary text on an approval shows as it is, with no warning, as in Claude Code and Claude
151
+ Desktop: an emoji whole, in a command too, with its style, keycap, skin tone, flag and the joiners
152
+ between its pictures (a joined emoji such as a technologist warned in 0.4.0); a space other than a
153
+ plain one in a path, in words or in a command's quotes, such as the narrow one macOS puts in a
154
+ screenshot's name or a full-width one between Chinese words in a commit message; Apple's logo.
155
+ Words keep the joiners Persian and the Indic scripts are written with: what Claude says a command
156
+ does, a web search, what an agent is to do, a task, a tool's message and the caption of a file it
157
+ asks to send (a web search in Sinhala or Persian warned).
158
+ - The trust sheet lists a hook's arguments: a hook run without a shell (with `args`) showed only its
159
+ program.
160
+ - The trust sheet reads a folder's files as Claude Code reads them. A `.mcp.json` in a folder that
161
+ holds the repository was not read, though Claude Code reads one from every folder up to the file
162
+ system's top and starts its servers with the session: with `outer/.mcp.json` above the repository
163
+ `outer/repo`, a session there started with nothing asked, and the server ran. The folders above
164
+ the repository's top are now read for their `.mcp.json`, short of your home folder, whose files
165
+ are your own. A skill saved as `SKILL.MD`, which Claude Code opens on a Mac as `SKILL.md`, listed
166
+ nothing, nor did a command or an agent more than ten folders down, which Claude Code finds at any
167
+ depth: such a folder is now named above the list. A `.claude/settings.json` or `.mcp.json` saved
168
+ with a byte-order mark, as Windows' Notepad saves it, or as UTF-16, listed nothing, so the folder
169
+ was not asked about and Claude Code started with its hooks and servers; one Pelican cannot read as
170
+ JSON is listed by its name. A skill's, command's or agent's frontmatter whose lines end with a
171
+ carriage return alone, which Claude Code's YAML breaks at, hid its allowed-tools and hooks, and a
172
+ line separator (U+2028) on a key's line, which it reads as text, the key. A hook's or a server's
173
+ YAML shows with its lines as written, so a second line that runs curl no longer reads as part of a
174
+ `#` comment on the first, and the sheet says where an escape such as `\n` reads otherwise than it
175
+ is written. A folder's files are read in time that grows with their size, not with its square: in
176
+ 0.4.0, a skill whose frontmatter was 480 KB of list items naming a power held the server for half
177
+ a minute, a command of a megabyte whose ```! block of blank lines never ends for four minutes, and
178
+ a skill of 1.1 MB with a line separator after a line of keys for a minute, after which the folder
179
+ counted as bringing nothing. The sheet lists from a file up to 200 items and 256 KB of them as it
180
+ shows them, and from a folder up to 1,000 and 1 MB, reading up to 32 MB of its files, more than
181
+ any project brings. An item it warns of, and Pelican's own word on what it could not read, are
182
+ always kept, so no number of harmless items leaves one out, and what the repository's git config
183
+ runs is read and listed whatever the folder's other files bring. Past that the sheet names, above
184
+ the list and in red, the first three files it shows part of and how many more, and the folder is
185
+ asked about as before, also where it lists nothing. A hook whose type or arguments are nested too
186
+ deep to read shows as one Pelican cannot read, where the request failed and nothing started.
187
+ - A notification keeps a flag made of tags only for England, Scotland and Wales, the three Unicode
188
+ recommends; other tags after a black flag, which can spell anything unseen, are left out. The
189
+ repository's check for hidden characters holds the docs to the same three.
190
+
191
+ ### Site, docs and project
192
+
193
+ - The demo, and the live demo on the website, have a pinned session and a file Claude sent: in "Try
194
+ the dark theme on my phone", a screenshot of the settings page in dark. Export as Markdown
195
+ downloads the session in the live demo too, where it fetched nothing, its folder named
196
+ `~/code/acme-web` as the demo shows it, not by where the site was built.
197
+ - The docs say what the install takes: about 150 MB to download, about 400 MB on disk.
198
+ - The tests pass in any order, at any time of day, and hold on a busy computer: each starts from a
199
+ state of its own, a page's tests wait up to 3 seconds for what they look for, and those that
200
+ start a shell or Pelican give it time to start and leave nothing running when they fail. CI checks
201
+ that an install brings one Claude Code, and the smoke test that Export as Markdown downloads.
202
+
3
203
  ## 0.4.0
4
204
 
5
205
  Files, changes and side chats as in Claude Desktop, workflows and `!` commands you can watch, and
package/README.md CHANGED
@@ -44,9 +44,9 @@ pelican
44
44
  ```
45
45
 
46
46
  On the computer where you use Claude Code, with Node 22.12 or newer and Claude Code signed in, on
47
- macOS or Linux. `pelican` prints the link that signs this browser in. The install is about 150 MB,
48
- most of it the copy of Claude Code that the Agent SDK brings. The command is also called
49
- `pelican-cc`, for computers where Python's Pelican has `pelican`.
47
+ macOS or Linux. `pelican` prints the link that signs this browser in. The install is about 150 MB
48
+ to download and about 400 MB on disk, most of it the copy of Claude Code that the Agent SDK brings.
49
+ The command is also called `pelican-cc`, for computers where Python's Pelican has `pelican`.
50
50
 
51
51
  ## On your phone
52
52
 
@@ -68,8 +68,10 @@ The docs cover [an SSH tunnel or your own proxy](https://ki-seki.github.io/pelic
68
68
  - **All of Claude Code.** Approvals with the diff, plans and questions, steer or queue while Claude
69
69
  works, side chats, `!` commands with their output live, `/` commands and skills, `@` files, every
70
70
  model and permission mode, rewind and branch, subagents and background tasks, MCP servers.
71
- - **What Claude makes, in place.** Charts and diagrams Claude draws and pages it writes show in the
72
- conversation, as still pictures until you tap Run.
71
+ - **What Claude makes, in place.** Charts and diagrams Claude draws, pages it writes and files it
72
+ sends you show in the conversation, as in Claude Desktop: pages as still pictures until you tap
73
+ Run, pictures side by side, videos and sounds in a player, a PDF in your browser's viewer,
74
+ anything else to download.
73
75
  - **Changes and files, as in Claude Desktop.** What each turn changed, what is uncommitted, or
74
76
  everything since your branch split, with diffs. Search and read the folder; a path in a reply
75
77
  opens the file at its line. Comment on a line or quote it, and Create PR asks Claude.
@@ -80,7 +82,7 @@ The docs cover [an SSH tunnel or your own proxy](https://ki-seki.github.io/pelic
80
82
  changes sit side by side.
81
83
 
82
84
  <p align="center">
83
- <img src="https://raw.githubusercontent.com/Ki-Seki/pelican/main/docs/shots/tour.gif" width="320" alt="A tour of Pelican on a phone: a chart and a page Claude made, rendered in place; an edit waiting for approval with its diff; a session another app is running">
85
+ <img src="https://raw.githubusercontent.com/Ki-Seki/pelican/main/docs/shots/tour.gif" width="320" alt="A tour of Pelican on a phone: the list with a pinned session; a chart Claude drew, in place, and a page it wrote, run; an edit waiting for approval, and what changed; a screenshot Claude sent; a session Claude Desktop is running">
84
86
  </p>
85
87
 
86
88
  ## Compared with
@@ -163,4 +165,6 @@ through [SECURITY.md](SECURITY.md).
163
165
 
164
166
  ## License
165
167
 
166
- [MIT](LICENSE). Pelican is an independent project, not made by or affiliated with Anthropic.
168
+ [MIT](LICENSE). Pelican is an independent project, not made by or affiliated with Anthropic. The
169
+ packages built into its server and web app are under their own licenses: `THIRD_PARTY_NOTICES`,
170
+ in the npm package, gives each with its license in full.