heyiam 0.2.29 → 0.3.0

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 (177) hide show
  1. package/README.md +45 -0
  2. package/dist/config.js +10 -1
  3. package/dist/db.js +1 -2
  4. package/dist/export.js +40 -25
  5. package/dist/format-utils.js +5 -0
  6. package/dist/index.js +168 -0
  7. package/dist/mount.js +300 -102
  8. package/dist/parsers/claude.js +2 -28
  9. package/dist/parsers/codex.js +2 -26
  10. package/dist/parsers/cursor.js +2 -26
  11. package/dist/parsers/duration.js +35 -0
  12. package/dist/parsers/gemini.js +2 -20
  13. package/dist/parsers/types.js +0 -1
  14. package/dist/public/assets/index-BZ65TU_Y.js +40 -0
  15. package/dist/public/assets/index-CqCaW2cb.css +1 -0
  16. package/dist/public/index.html +2 -2
  17. package/dist/redact.js +4 -104
  18. package/dist/render/build-render-data.js +9 -2
  19. package/dist/render/index.js +32 -5
  20. package/dist/render/liquid.js +147 -7
  21. package/dist/render/mock-data.js +303 -0
  22. package/dist/render/templates/aurora/portfolio.liquid +204 -0
  23. package/dist/render/templates/aurora/project.liquid +260 -0
  24. package/dist/render/templates/aurora/session.liquid +223 -0
  25. package/dist/render/templates/aurora/styles.css +1178 -0
  26. package/dist/render/templates/bauhaus/portfolio.liquid +179 -0
  27. package/dist/render/templates/bauhaus/project.liquid +300 -0
  28. package/dist/render/templates/bauhaus/session.liquid +333 -0
  29. package/dist/render/templates/bauhaus/styles.css +1641 -0
  30. package/dist/render/templates/blueprint/portfolio.liquid +167 -0
  31. package/dist/render/templates/blueprint/project.liquid +286 -0
  32. package/dist/render/templates/blueprint/session.liquid +248 -0
  33. package/dist/render/templates/blueprint/styles.css +1285 -0
  34. package/dist/render/templates/canvas/portfolio.liquid +215 -0
  35. package/dist/render/templates/canvas/project.liquid +235 -0
  36. package/dist/render/templates/canvas/session.liquid +223 -0
  37. package/dist/render/templates/canvas/styles.css +1436 -0
  38. package/dist/render/templates/carbon/portfolio.liquid +170 -0
  39. package/dist/render/templates/carbon/project.liquid +249 -0
  40. package/dist/render/templates/carbon/session.liquid +190 -0
  41. package/dist/render/templates/carbon/styles.css +1091 -0
  42. package/dist/render/templates/chalk/portfolio.liquid +199 -0
  43. package/dist/render/templates/chalk/project.liquid +245 -0
  44. package/dist/render/templates/chalk/session.liquid +215 -0
  45. package/dist/render/templates/chalk/styles.css +1157 -0
  46. package/dist/render/templates/circuit/portfolio.liquid +162 -0
  47. package/dist/render/templates/circuit/project.liquid +247 -0
  48. package/dist/render/templates/circuit/session.liquid +205 -0
  49. package/dist/render/templates/circuit/styles.css +1403 -0
  50. package/dist/render/templates/cosmos/portfolio.liquid +232 -0
  51. package/dist/render/templates/cosmos/project.liquid +327 -0
  52. package/dist/render/templates/cosmos/session.liquid +239 -0
  53. package/dist/render/templates/cosmos/styles.css +1151 -0
  54. package/dist/render/templates/daylight/portfolio.liquid +217 -0
  55. package/dist/render/templates/daylight/project.liquid +229 -0
  56. package/dist/render/templates/daylight/session.liquid +219 -0
  57. package/dist/render/templates/daylight/styles.css +1311 -0
  58. package/dist/render/templates/editorial/portfolio.liquid +126 -0
  59. package/dist/render/templates/editorial/project.liquid +202 -0
  60. package/dist/render/templates/editorial/session.liquid +171 -0
  61. package/dist/render/templates/editorial/styles.css +822 -0
  62. package/dist/render/templates/ember/portfolio.liquid +318 -0
  63. package/dist/render/templates/ember/project.liquid +232 -0
  64. package/dist/render/templates/ember/session.liquid +202 -0
  65. package/dist/render/templates/ember/styles.css +1283 -0
  66. package/dist/render/templates/glacier/portfolio.liquid +271 -0
  67. package/dist/render/templates/glacier/project.liquid +288 -0
  68. package/dist/render/templates/glacier/session.liquid +217 -0
  69. package/dist/render/templates/glacier/styles.css +1200 -0
  70. package/dist/render/templates/grid/portfolio.liquid +265 -0
  71. package/dist/render/templates/grid/project.liquid +306 -0
  72. package/dist/render/templates/grid/session.liquid +260 -0
  73. package/dist/render/templates/grid/styles.css +1441 -0
  74. package/dist/render/templates/kinetic/portfolio.liquid +170 -0
  75. package/dist/render/templates/kinetic/project.liquid +242 -0
  76. package/dist/render/templates/kinetic/session.liquid +228 -0
  77. package/dist/render/templates/kinetic/styles.css +944 -0
  78. package/dist/render/templates/meridian/portfolio.liquid +255 -0
  79. package/dist/render/templates/meridian/project.liquid +376 -0
  80. package/dist/render/templates/meridian/session.liquid +298 -0
  81. package/dist/render/templates/meridian/styles.css +1369 -0
  82. package/dist/render/templates/minimal/portfolio.liquid +71 -0
  83. package/dist/render/templates/minimal/project.liquid +154 -0
  84. package/dist/render/templates/minimal/session.liquid +140 -0
  85. package/dist/render/templates/minimal/styles.css +525 -0
  86. package/dist/render/templates/mono/portfolio.liquid +291 -0
  87. package/dist/render/templates/mono/project.liquid +275 -0
  88. package/dist/render/templates/mono/session.liquid +276 -0
  89. package/dist/render/templates/mono/styles.css +1016 -0
  90. package/dist/render/templates/neon/portfolio.liquid +217 -0
  91. package/dist/render/templates/neon/project.liquid +225 -0
  92. package/dist/render/templates/neon/session.liquid +195 -0
  93. package/dist/render/templates/neon/styles.css +1265 -0
  94. package/dist/render/templates/noir/portfolio.liquid +137 -0
  95. package/dist/render/templates/noir/project.liquid +220 -0
  96. package/dist/render/templates/noir/session.liquid +241 -0
  97. package/dist/render/templates/noir/styles.css +1223 -0
  98. package/dist/render/templates/obsidian/portfolio.liquid +257 -0
  99. package/dist/render/templates/obsidian/project.liquid +280 -0
  100. package/dist/render/templates/obsidian/session.liquid +241 -0
  101. package/dist/render/templates/obsidian/styles.css +1401 -0
  102. package/dist/render/templates/paper/portfolio.liquid +267 -0
  103. package/dist/render/templates/paper/project.liquid +235 -0
  104. package/dist/render/templates/paper/session.liquid +271 -0
  105. package/dist/render/templates/paper/styles.css +1509 -0
  106. package/dist/render/templates/parallax/portfolio.liquid +305 -0
  107. package/dist/render/templates/parallax/project.liquid +275 -0
  108. package/dist/render/templates/parallax/session.liquid +295 -0
  109. package/dist/render/templates/parallax/styles.css +1874 -0
  110. package/dist/render/templates/parchment/portfolio.liquid +290 -0
  111. package/dist/render/templates/parchment/project.liquid +289 -0
  112. package/dist/render/templates/parchment/session.liquid +346 -0
  113. package/dist/render/templates/parchment/styles.css +1397 -0
  114. package/dist/render/templates/partials/_beats.liquid +16 -0
  115. package/dist/render/templates/partials/_breadcrumb.liquid +9 -0
  116. package/dist/render/templates/partials/_footer.liquid +7 -0
  117. package/dist/render/templates/partials/_growth-chart.liquid +7 -0
  118. package/dist/render/templates/partials/_key-decisions.liquid +20 -0
  119. package/dist/render/templates/partials/_links.liquid +16 -0
  120. package/dist/render/templates/partials/_narrative.liquid +8 -0
  121. package/dist/render/templates/partials/_phases.liquid +20 -0
  122. package/dist/render/templates/partials/_portfolio-header.liquid +20 -0
  123. package/dist/render/templates/partials/_portfolio-projects.liquid +16 -0
  124. package/dist/render/templates/partials/_portfolio-stats.liquid +19 -0
  125. package/dist/render/templates/partials/_qa.liquid +13 -0
  126. package/dist/render/templates/partials/_screenshot.liquid +15 -0
  127. package/dist/render/templates/partials/_session-cards.liquid +30 -0
  128. package/dist/render/templates/partials/_session-header.liquid +39 -0
  129. package/dist/render/templates/partials/_session-sidebar.liquid +30 -0
  130. package/dist/render/templates/partials/_skills.liquid +12 -0
  131. package/dist/render/templates/partials/_source-breakdown.liquid +22 -0
  132. package/dist/render/templates/partials/_stats.liquid +38 -0
  133. package/dist/render/templates/partials/_work-timeline.liquid +7 -0
  134. package/dist/render/templates/project.liquid +7 -4
  135. package/dist/render/templates/radar/portfolio.liquid +233 -0
  136. package/dist/render/templates/radar/project.liquid +278 -0
  137. package/dist/render/templates/radar/session.liquid +300 -0
  138. package/dist/render/templates/radar/styles.css +1049 -0
  139. package/dist/render/templates/showcase/portfolio.liquid +231 -0
  140. package/dist/render/templates/showcase/project.liquid +237 -0
  141. package/dist/render/templates/showcase/session.liquid +210 -0
  142. package/dist/render/templates/showcase/styles.css +1279 -0
  143. package/dist/render/templates/signal/portfolio.liquid +227 -0
  144. package/dist/render/templates/signal/project.liquid +278 -0
  145. package/dist/render/templates/signal/session.liquid +282 -0
  146. package/dist/render/templates/signal/styles.css +1395 -0
  147. package/dist/render/templates/strata/portfolio.liquid +192 -0
  148. package/dist/render/templates/strata/project.liquid +282 -0
  149. package/dist/render/templates/strata/session.liquid +261 -0
  150. package/dist/render/templates/strata/styles.css +1350 -0
  151. package/dist/render/templates/styles.css +1190 -0
  152. package/dist/render/templates/terminal/portfolio.liquid +118 -0
  153. package/dist/render/templates/terminal/project.liquid +161 -0
  154. package/dist/render/templates/terminal/session.liquid +145 -0
  155. package/dist/render/templates/terminal/styles.css +492 -0
  156. package/dist/render/templates/verdant/portfolio.liquid +333 -0
  157. package/dist/render/templates/verdant/project.liquid +309 -0
  158. package/dist/render/templates/verdant/session.liquid +237 -0
  159. package/dist/render/templates/verdant/styles.css +1257 -0
  160. package/dist/render/templates/zen/portfolio.liquid +136 -0
  161. package/dist/render/templates/zen/project.liquid +187 -0
  162. package/dist/render/templates/zen/session.liquid +203 -0
  163. package/dist/render/templates/zen/styles.css +1207 -0
  164. package/dist/render/templates.js +90 -0
  165. package/dist/routes/context.js +15 -10
  166. package/dist/routes/enhance.js +17 -40
  167. package/dist/routes/export.js +14 -4
  168. package/dist/routes/preview.js +480 -108
  169. package/dist/routes/projects.js +11 -19
  170. package/dist/routes/publish.js +15 -17
  171. package/dist/routes/settings.js +94 -1
  172. package/dist/routes/sse.js +9 -0
  173. package/dist/server.js +8 -2
  174. package/dist/settings.js +17 -9
  175. package/package.json +2 -4
  176. package/dist/public/assets/index-CC9G8EF1.js +0 -21
  177. package/dist/public/assets/index-Dalqz2mC.css +0 -1
@@ -0,0 +1,239 @@
1
+ <div class="heyiam-session cosmos" data-render-version="2" data-template="cosmos">
2
+
3
+ <div class="starfield" aria-hidden="true"></div>
4
+
5
+ <div class="cos-page">
6
+
7
+ {%- comment -%} Constellation SVG {%- endcomment -%}
8
+ <svg class="cos-constellation" aria-hidden="true">
9
+ <circle class="cos-constellation-dot" cx="70" cy="180" r="2" />
10
+ <circle class="cos-constellation-dot" cx="220" cy="130" r="1.5" />
11
+ <circle class="cos-constellation-dot" cx="400" cy="200" r="2" />
12
+ <circle class="cos-constellation-dot" cx="600" cy="160" r="1.5" />
13
+ <circle class="cos-constellation-dot" cx="800" cy="210" r="2" />
14
+ <circle class="cos-constellation-dot" cx="130" cy="450" r="1.5" />
15
+ <circle class="cos-constellation-dot" cx="350" cy="550" r="2" />
16
+ <circle class="cos-constellation-dot" cx="550" cy="480" r="1.5" />
17
+ <circle class="cos-constellation-dot" cx="750" cy="600" r="2" />
18
+ <circle class="cos-constellation-dot" cx="200" cy="800" r="1.5" />
19
+ <circle class="cos-constellation-dot" cx="500" cy="850" r="2" />
20
+ <circle class="cos-constellation-dot" cx="700" cy="780" r="1.5" />
21
+ <path class="cos-constellation-line" d="M70,180 Q145,148 220,130" />
22
+ <path class="cos-constellation-line" d="M220,130 Q310,170 400,200" />
23
+ <path class="cos-constellation-line" d="M400,200 Q500,175 600,160" />
24
+ <path class="cos-constellation-line" d="M600,160 Q700,190 800,210" />
25
+ <path class="cos-constellation-line" d="M130,450 Q240,505 350,550" />
26
+ <path class="cos-constellation-line" d="M350,550 Q450,510 550,480" />
27
+ <path class="cos-constellation-line" d="M550,480 Q650,545 750,600" />
28
+ <path class="cos-constellation-line" d="M200,800 Q350,830 500,850" />
29
+ <path class="cos-constellation-line" d="M500,850 Q600,810 700,780" />
30
+ </svg>
31
+
32
+ <main id="main-content">
33
+
34
+ {%- comment -%} Breadcrumb {%- endcomment -%}
35
+ <nav class="cos-breadcrumb" aria-label="Breadcrumb">
36
+ <a href="/{{ user.username }}">{{ user.username }}</a>
37
+ {% if projectSlug %}
38
+ <span class="cos-breadcrumb-sep" aria-hidden="true">/</span>
39
+ <a href="/{{ user.username }}/{{ projectSlug }}">{{ projectSlug }}</a>
40
+ {% endif %}
41
+ <span class="cos-breadcrumb-sep" aria-hidden="true">/</span>
42
+ <span aria-current="page">{{ session.title }}</span>
43
+ </nav>
44
+
45
+ {%- comment -%} Session Header {%- endcomment -%}
46
+ <header class="cos-section cos-session-header">
47
+ <h1>{{ session.title }}</h1>
48
+ </header>
49
+
50
+ {%- comment -%} Meta Grid {%- endcomment -%}
51
+ <section class="cos-section" aria-label="Session metadata">
52
+ <div class="cos-meta-grid">
53
+ {% if session.recordedAt %}
54
+ <div class="cos-meta-item">
55
+ <span class="cos-meta-label">Date</span>
56
+ <span class="cos-meta-value">{{ session.recordedAt | formatDate }}</span>
57
+ </div>
58
+ {% endif %}
59
+ {% if session.sourceTool %}
60
+ <div class="cos-meta-item">
61
+ <span class="cos-meta-label">Source</span>
62
+ <span class="cos-meta-value">{{ session.sourceTool }}</span>
63
+ </div>
64
+ {% endif %}
65
+ <div class="cos-meta-item">
66
+ <span class="cos-meta-label">Duration</span>
67
+ <span class="cos-meta-value">{{ session.durationMinutes | formatDuration }}</span>
68
+ </div>
69
+ {% if session.wallClockMinutes %}
70
+ <div class="cos-meta-item">
71
+ <span class="cos-meta-label">Wall Clock</span>
72
+ <span class="cos-meta-value">{{ session.wallClockMinutes | formatDuration }}</span>
73
+ </div>
74
+ {% endif %}
75
+ <div class="cos-meta-item">
76
+ <span class="cos-meta-label">Turns</span>
77
+ <span class="cos-meta-value">{{ session.turns }}</span>
78
+ </div>
79
+ <div class="cos-meta-item">
80
+ <span class="cos-meta-label">LOC</span>
81
+ <span class="cos-meta-value">{{ session.locChanged | localeNumber }}</span>
82
+ </div>
83
+ <div class="cos-meta-item">
84
+ <span class="cos-meta-label">Files</span>
85
+ <span class="cos-meta-value">{{ session.filesChanged }}</span>
86
+ </div>
87
+ </div>
88
+ </section>
89
+
90
+ {%- comment -%} Dev Take {%- endcomment -%}
91
+ {% if session.devTake %}
92
+ <section class="cos-section cos-dev-take" aria-label="Developer take">
93
+ <div class="cos-dev-take-label">Dev Take</div>
94
+ <blockquote>{{ session.devTake }}</blockquote>
95
+ </section>
96
+ {% endif %}
97
+
98
+ {%- comment -%} Layout: Main + Sidebar {%- endcomment -%}
99
+ <div class="cos-layout">
100
+ <div>
101
+
102
+ {%- comment -%} Narrative {%- endcomment -%}
103
+ {% if session.narrative %}
104
+ <section class="cos-section cos-narrative" aria-label="Session narrative">
105
+ <h2 class="cos-section-title">Narrative</h2>
106
+ <p>{{ session.narrative }}</p>
107
+ </section>
108
+ {% endif %}
109
+
110
+ {%- comment -%} Highlights {%- endcomment -%}
111
+ {% if session.highlights.size > 0 %}
112
+ <section class="cos-section" aria-label="Session highlights">
113
+ <h2 class="cos-section-title">Highlights</h2>
114
+ <ul class="cos-highlights">
115
+ {% for h in session.highlights %}
116
+ <li>{{ h }}</li>
117
+ {% endfor %}
118
+ </ul>
119
+ </section>
120
+ {% endif %}
121
+
122
+ {%- comment -%} Execution Path (Beats) {%- endcomment -%}
123
+ {% if session.beats.size > 0 %}
124
+ <section class="cos-section cos-beats" aria-label="Execution path">
125
+ <h2 class="cos-section-title">Execution Path</h2>
126
+ {% for beat in session.beats %}
127
+ <div class="cos-beat">
128
+ <h3>{{ beat.title }}</h3>
129
+ <p>{{ beat.body }}</p>
130
+ </div>
131
+ {% endfor %}
132
+ </section>
133
+ {% endif %}
134
+
135
+ {%- comment -%} Q&A {%- endcomment -%}
136
+ {% if session.qaPairs.size > 0 %}
137
+ <section class="cos-section cos-qa" aria-label="Questions and answers">
138
+ <h2 class="cos-section-title">Q&amp;A</h2>
139
+ {% for qa in session.qaPairs %}
140
+ <div class="cos-qa-item">
141
+ <p class="cos-qa-question">{{ qa.question }}</p>
142
+ <p class="cos-qa-answer">{{ qa.answer }}</p>
143
+ </div>
144
+ {% endfor %}
145
+ </section>
146
+ {% endif %}
147
+
148
+ {%- comment -%} Agent Summary {%- endcomment -%}
149
+ {% if session.agentSummary %}
150
+ <section class="cos-section cos-agents" aria-label="Agent summary">
151
+ <h2 class="cos-section-title">Agent Summary</h2>
152
+ {% assign maxAgentLoc = 0 %}
153
+ {% for agent in session.agentSummary.agents %}
154
+ {% if agent.loc_changed > maxAgentLoc %}
155
+ {% assign maxAgentLoc = agent.loc_changed %}
156
+ {% endif %}
157
+ {% endfor %}
158
+ {% assign agent_colors = '#7c3aed,#0891b2,#059669,#475569,#e11d48,#d97706' | split: ',' %}
159
+ {% for agent in session.agentSummary.agents %}
160
+ <div class="cos-agent-row">
161
+ {% assign colorIdx = forloop.index0 | modulo: 6 %}
162
+ <span class="cos-agent-dot" style="background: {{ agent_colors[colorIdx] }}" aria-hidden="true"></span>
163
+ <span class="cos-agent-name">{{ agent.role }}</span>
164
+ <span class="cos-agent-meta">
165
+ <span>{{ agent.duration_minutes }}m</span>
166
+ <span>{{ agent.loc_changed }} LOC</span>
167
+ </span>
168
+ <div class="cos-agent-bar-track" aria-hidden="true">
169
+ {% if maxAgentLoc > 0 %}
170
+ {% assign barPct = agent.loc_changed | times: 100 | divided_by: maxAgentLoc %}
171
+ {% else %}
172
+ {% assign barPct = 0 %}
173
+ {% endif %}
174
+ <div class="cos-agent-bar-fill" style="width: {{ barPct }}%; background: {{ agent_colors[colorIdx] }}"></div>
175
+ </div>
176
+ </div>
177
+ {% endfor %}
178
+ </section>
179
+ {% endif %}
180
+
181
+ </div>
182
+
183
+ {%- comment -%} Sidebar {%- endcomment -%}
184
+ <aside class="cos-sidebar" aria-label="Session details">
185
+
186
+ {%- comment -%} Tools Used {%- endcomment -%}
187
+ {% if session.toolBreakdown.size > 0 %}
188
+ <div class="cos-sidebar-card">
189
+ <h2 class="cos-sidebar-title">Tools Used</h2>
190
+ <table class="cos-tools-table" aria-label="Tool usage counts">
191
+ <tbody>
192
+ {% for t in session.toolBreakdown %}
193
+ <tr><td>{{ t.tool }}</td><td>{{ t.count }}</td></tr>
194
+ {% endfor %}
195
+ </tbody>
196
+ </table>
197
+ </div>
198
+ {% endif %}
199
+
200
+ {%- comment -%} Files Changed {%- endcomment -%}
201
+ {% if session.topFiles.size > 0 %}
202
+ <div class="cos-sidebar-card">
203
+ <h2 class="cos-sidebar-title">Files Changed</h2>
204
+ <table class="cos-files-table" aria-label="Changed files with line counts">
205
+ <tbody>
206
+ {% for f in session.topFiles %}
207
+ <tr><td>{{ f.path }}</td><td>+{{ f.additions }}{% if f.deletions > 0 %} -{{ f.deletions }}{% endif %}</td></tr>
208
+ {% endfor %}
209
+ </tbody>
210
+ </table>
211
+ </div>
212
+ {% endif %}
213
+
214
+ {%- comment -%} Skills {%- endcomment -%}
215
+ {% if session.skills.size > 0 %}
216
+ <div class="cos-sidebar-card">
217
+ <h2 class="cos-sidebar-title">Skills</h2>
218
+ <div class="cos-sidebar-skills">
219
+ {% for skill in session.skills %}
220
+ <span class="cos-skill-chip">{{ skill }}</span>
221
+ {% endfor %}
222
+ </div>
223
+ </div>
224
+ {% endif %}
225
+
226
+ </aside>
227
+ </div>
228
+
229
+ </main>
230
+
231
+ <footer class="cos-footer">
232
+ <p>Built with <a href="https://heyi.am">heyi.am</a></p>
233
+ </footer>
234
+
235
+ </div>
236
+
237
+ {%- comment -%} Animation scripts {%- endcomment -%}
238
+
239
+ </div>