@tekmidian/pai 0.5.7 → 0.6.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 (137) hide show
  1. package/ARCHITECTURE.md +72 -1
  2. package/README.md +87 -1
  3. package/dist/{auto-route-BG6I_4B1.mjs → auto-route-C-DrW6BL.mjs} +3 -3
  4. package/dist/{auto-route-BG6I_4B1.mjs.map → auto-route-C-DrW6BL.mjs.map} +1 -1
  5. package/dist/cli/index.mjs +1482 -1628
  6. package/dist/cli/index.mjs.map +1 -1
  7. package/dist/clusters-JIDQW65f.mjs +201 -0
  8. package/dist/clusters-JIDQW65f.mjs.map +1 -0
  9. package/dist/{config-Cf92lGX_.mjs → config-BuhHWyOK.mjs} +21 -6
  10. package/dist/config-BuhHWyOK.mjs.map +1 -0
  11. package/dist/daemon/index.mjs +11 -8
  12. package/dist/daemon/index.mjs.map +1 -1
  13. package/dist/{daemon-2ND5WO2j.mjs → daemon-D3hYb5_C.mjs} +669 -218
  14. package/dist/daemon-D3hYb5_C.mjs.map +1 -0
  15. package/dist/daemon-mcp/index.mjs +4597 -4
  16. package/dist/daemon-mcp/index.mjs.map +1 -1
  17. package/dist/db-DdUperSl.mjs +110 -0
  18. package/dist/db-DdUperSl.mjs.map +1 -0
  19. package/dist/{detect-BU3Nx_2L.mjs → detect-CdaA48EI.mjs} +1 -1
  20. package/dist/{detect-BU3Nx_2L.mjs.map → detect-CdaA48EI.mjs.map} +1 -1
  21. package/dist/{detector-Bp-2SM3x.mjs → detector-jGBuYQJM.mjs} +2 -2
  22. package/dist/{detector-Bp-2SM3x.mjs.map → detector-jGBuYQJM.mjs.map} +1 -1
  23. package/dist/{factory-Bzcy70G9.mjs → factory-Ygqe_bVZ.mjs} +7 -5
  24. package/dist/{factory-Bzcy70G9.mjs.map → factory-Ygqe_bVZ.mjs.map} +1 -1
  25. package/dist/helpers-BEST-4Gx.mjs +420 -0
  26. package/dist/helpers-BEST-4Gx.mjs.map +1 -0
  27. package/dist/hooks/capture-all-events.mjs +2 -2
  28. package/dist/hooks/capture-all-events.mjs.map +3 -3
  29. package/dist/hooks/capture-session-summary.mjs +38 -0
  30. package/dist/hooks/capture-session-summary.mjs.map +3 -3
  31. package/dist/hooks/cleanup-session-files.mjs +6 -12
  32. package/dist/hooks/cleanup-session-files.mjs.map +4 -4
  33. package/dist/hooks/context-compression-hook.mjs +93 -104
  34. package/dist/hooks/context-compression-hook.mjs.map +4 -4
  35. package/dist/hooks/initialize-session.mjs +14 -11
  36. package/dist/hooks/initialize-session.mjs.map +4 -4
  37. package/dist/hooks/inject-observations.mjs +220 -0
  38. package/dist/hooks/inject-observations.mjs.map +7 -0
  39. package/dist/hooks/load-core-context.mjs +2 -2
  40. package/dist/hooks/load-core-context.mjs.map +3 -3
  41. package/dist/hooks/load-project-context.mjs +90 -91
  42. package/dist/hooks/load-project-context.mjs.map +4 -4
  43. package/dist/hooks/observe.mjs +354 -0
  44. package/dist/hooks/observe.mjs.map +7 -0
  45. package/dist/hooks/stop-hook.mjs +94 -107
  46. package/dist/hooks/stop-hook.mjs.map +4 -4
  47. package/dist/hooks/sync-todo-to-md.mjs +31 -33
  48. package/dist/hooks/sync-todo-to-md.mjs.map +4 -4
  49. package/dist/index.d.mts +30 -7
  50. package/dist/index.d.mts.map +1 -1
  51. package/dist/index.mjs +5 -8
  52. package/dist/indexer-D53l5d1U.mjs +1 -0
  53. package/dist/{indexer-backend-CIMXedqk.mjs → indexer-backend-jcJFsmB4.mjs} +37 -127
  54. package/dist/indexer-backend-jcJFsmB4.mjs.map +1 -0
  55. package/dist/{ipc-client-Bjg_a1dc.mjs → ipc-client-CoyUHPod.mjs} +2 -7
  56. package/dist/{ipc-client-Bjg_a1dc.mjs.map → ipc-client-CoyUHPod.mjs.map} +1 -1
  57. package/dist/latent-ideas-bTJo6Omd.mjs +191 -0
  58. package/dist/latent-ideas-bTJo6Omd.mjs.map +1 -0
  59. package/dist/neighborhood-BYYbEkUJ.mjs +135 -0
  60. package/dist/neighborhood-BYYbEkUJ.mjs.map +1 -0
  61. package/dist/note-context-BK24bX8Y.mjs +126 -0
  62. package/dist/note-context-BK24bX8Y.mjs.map +1 -0
  63. package/dist/postgres-CKf-EDtS.mjs +846 -0
  64. package/dist/postgres-CKf-EDtS.mjs.map +1 -0
  65. package/dist/{reranker-D7bRAHi6.mjs → reranker-CMNZcfVx.mjs} +1 -1
  66. package/dist/{reranker-D7bRAHi6.mjs.map → reranker-CMNZcfVx.mjs.map} +1 -1
  67. package/dist/{search-_oHfguA5.mjs → search-DC1qhkKn.mjs} +2 -58
  68. package/dist/search-DC1qhkKn.mjs.map +1 -0
  69. package/dist/{sqlite-WWBq7_2C.mjs → sqlite-l-s9xPjY.mjs} +160 -3
  70. package/dist/sqlite-l-s9xPjY.mjs.map +1 -0
  71. package/dist/state-C6_vqz7w.mjs +102 -0
  72. package/dist/state-C6_vqz7w.mjs.map +1 -0
  73. package/dist/stop-words-BaMEGVeY.mjs +326 -0
  74. package/dist/stop-words-BaMEGVeY.mjs.map +1 -0
  75. package/dist/{indexer-CMPOiY1r.mjs → sync-BOsnEj2-.mjs} +14 -216
  76. package/dist/sync-BOsnEj2-.mjs.map +1 -0
  77. package/dist/themes-BvYF0W8T.mjs +148 -0
  78. package/dist/themes-BvYF0W8T.mjs.map +1 -0
  79. package/dist/{tools-DV_lsiCc.mjs → tools-DcaJlYDN.mjs} +162 -273
  80. package/dist/tools-DcaJlYDN.mjs.map +1 -0
  81. package/dist/trace-CRx9lPuc.mjs +137 -0
  82. package/dist/trace-CRx9lPuc.mjs.map +1 -0
  83. package/dist/{vault-indexer-k-kUlaZ-.mjs → vault-indexer-Bi2cRmn7.mjs} +134 -132
  84. package/dist/vault-indexer-Bi2cRmn7.mjs.map +1 -0
  85. package/dist/zettelkasten-cdajbnPr.mjs +708 -0
  86. package/dist/zettelkasten-cdajbnPr.mjs.map +1 -0
  87. package/package.json +1 -2
  88. package/src/hooks/ts/lib/project-utils/index.ts +50 -0
  89. package/src/hooks/ts/lib/project-utils/notify.ts +75 -0
  90. package/src/hooks/ts/lib/project-utils/paths.ts +218 -0
  91. package/src/hooks/ts/lib/project-utils/session-notes.ts +363 -0
  92. package/src/hooks/ts/lib/project-utils/todo.ts +178 -0
  93. package/src/hooks/ts/lib/project-utils/tokens.ts +39 -0
  94. package/src/hooks/ts/lib/project-utils.ts +40 -1018
  95. package/src/hooks/ts/post-tool-use/observe.ts +327 -0
  96. package/src/hooks/ts/session-end/capture-session-summary.ts +41 -0
  97. package/src/hooks/ts/session-start/inject-observations.ts +254 -0
  98. package/dist/chunker-CbnBe0s0.mjs +0 -191
  99. package/dist/chunker-CbnBe0s0.mjs.map +0 -1
  100. package/dist/config-Cf92lGX_.mjs.map +0 -1
  101. package/dist/daemon-2ND5WO2j.mjs.map +0 -1
  102. package/dist/db-Dp8VXIMR.mjs +0 -212
  103. package/dist/db-Dp8VXIMR.mjs.map +0 -1
  104. package/dist/indexer-CMPOiY1r.mjs.map +0 -1
  105. package/dist/indexer-backend-CIMXedqk.mjs.map +0 -1
  106. package/dist/mcp/index.d.mts +0 -1
  107. package/dist/mcp/index.mjs +0 -500
  108. package/dist/mcp/index.mjs.map +0 -1
  109. package/dist/postgres-FXrHDPcE.mjs +0 -358
  110. package/dist/postgres-FXrHDPcE.mjs.map +0 -1
  111. package/dist/schemas-BFIgGntb.mjs +0 -3405
  112. package/dist/schemas-BFIgGntb.mjs.map +0 -1
  113. package/dist/search-_oHfguA5.mjs.map +0 -1
  114. package/dist/sqlite-WWBq7_2C.mjs.map +0 -1
  115. package/dist/tools-DV_lsiCc.mjs.map +0 -1
  116. package/dist/vault-indexer-k-kUlaZ-.mjs.map +0 -1
  117. package/dist/zettelkasten-e-a4rW_6.mjs +0 -901
  118. package/dist/zettelkasten-e-a4rW_6.mjs.map +0 -1
  119. package/templates/README.md +0 -181
  120. package/templates/skills/CORE/Aesthetic.md +0 -333
  121. package/templates/skills/CORE/CONSTITUTION.md +0 -1502
  122. package/templates/skills/CORE/HistorySystem.md +0 -427
  123. package/templates/skills/CORE/HookSystem.md +0 -1082
  124. package/templates/skills/CORE/Prompting.md +0 -509
  125. package/templates/skills/CORE/ProsodyAgentTemplate.md +0 -53
  126. package/templates/skills/CORE/ProsodyGuide.md +0 -416
  127. package/templates/skills/CORE/SKILL.md +0 -741
  128. package/templates/skills/CORE/SkillSystem.md +0 -213
  129. package/templates/skills/CORE/TerminalTabs.md +0 -119
  130. package/templates/skills/CORE/VOICE.md +0 -106
  131. package/templates/skills/createskill-skill.template.md +0 -78
  132. package/templates/skills/history-system.template.md +0 -371
  133. package/templates/skills/hook-system.template.md +0 -913
  134. package/templates/skills/sessions-skill.template.md +0 -102
  135. package/templates/skills/skill-system.template.md +0 -214
  136. package/templates/skills/terminal-tabs.template.md +0 -120
  137. package/templates/templates.md +0 -20
@@ -1,333 +0,0 @@
1
- # PAI Visual Aesthetic System
2
-
3
- **A modern digital aesthetic combining Tron-inspired neon elements, Anthropic's warm color palette, and Excalidraw's hand-drawn charm.**
4
-
5
- ---
6
-
7
- ## Core Concept: Digital Warmth
8
-
9
- Every visualization balances **futuristic precision** with **human imperfection** — clean digital aesthetics rendered with hand-drawn, sketchy energy that feels approachable and alive.
10
-
11
- **The Philosophy:** *"Technology with humanity."*
12
- - Digital precision meets hand-drawn warmth
13
- - Neon accents provide energy without overwhelming
14
- - Sketchy lines convey approachability and thought-in-progress
15
- - Simplicity = Clarity (remove everything that doesn't serve the message)
16
-
17
- ---
18
-
19
- ## The PAI Look
20
-
21
- ### What We Want
22
- - **Excalidraw-style hand-drawn lines** — Sketchy, rough, whiteboard aesthetic
23
- - **Tron-inspired neon accents** — Strategic glows on key elements
24
- - **Anthropic warm palette** — Orange/coral warmth balanced with cool grays
25
- - **Dark backgrounds** — Deep slate or black for contrast and modern feel
26
- - **Grid undertones** — Subtle digital grid patterns (optional, tasteful)
27
- - **Minimal compositions** — 2-4 elements maximum, plenty of breathing room
28
-
29
- ### Reference Styles
30
- - **Excalidraw** — Hand-drawn whiteboard diagrams with rough edges
31
- - **Tron Legacy** — Neon circuit aesthetics, digital grids, glowing elements
32
- - **Anthropic brand** — Warm orange/coral tones, approachable technology
33
- - **Cyberpunk wireframes** — Digital blueprint aesthetic
34
- - **Sketch noting** — Casual, hand-drawn information graphics
35
-
36
- ### What to AVOID
37
- - Over-polished corporate vectors
38
- - Excessive neon (should be accents, not primary)
39
- - Perfect geometric shapes (keep it sketchy)
40
- - Cluttered compositions
41
- - Gradients everywhere (use sparingly for glows only)
42
- - Photorealistic elements
43
-
44
- ---
45
-
46
- ## Color System
47
-
48
- ### Backgrounds
49
- ```
50
- Deep Slate #1A202C (primary - sophisticated dark)
51
- Pure Black #000000 (alternative - maximum contrast)
52
- Dark Grid #2D3748 (optional subtle grid overlay)
53
- ```
54
-
55
- ### Primary: Hand-Drawn Lines
56
- ```
57
- Bright White #FFFFFF (dominant sketch lines)
58
- Light Gray #E2E8F0 (secondary sketch lines)
59
- ```
60
-
61
- ### Accent Colors (Tron + Anthropic Fusion)
62
- ```
63
- Neon Orange #FF6B35 (Anthropic warmth - primary accent)
64
- Neon Coral #FF8C61 (softer warmth variant)
65
- Cyan Glow #00D9FF (Tron digital accent - use sparingly)
66
- Electric Blue #0099FF (secondary digital accent)
67
- Slate Gray #4A5568 (neutral technical elements)
68
- ```
69
-
70
- **Color Usage Guidelines:**
71
- - **White/Light Gray** lines dominate (70-80% of composition)
72
- - **Neon Orange** as primary accent (10-15%) - warmth and energy
73
- - **Cyan/Blue** as secondary accent (5-10%) - digital sophistication
74
- - **Glows** only on accent colors, subtle and strategic
75
- - Balance warm (orange) and cool (cyan) for visual interest
76
-
77
- ### Color Hierarchy
78
- 1. **WHITE SKETCH LINES are PRIMARY** — hand-drawn, rough, energetic
79
- 2. **Neon Orange as MAIN ACCENT** — warmth, approachability, Anthropic identity
80
- 3. **Cyan/Blue as DIGITAL ACCENT** — technology, precision, Tron influence
81
- 4. **Dark backgrounds** — provide contrast and modern sophistication
82
- 5. **Glows** — subtle, only on neon accents, not overpowering
83
-
84
- ---
85
-
86
- ## Linework Characteristics
87
-
88
- The sketchy hand-drawn quality is critical:
89
-
90
- 1. **Rough, imperfect strokes** — Like drawing on a whiteboard quickly
91
- 2. **Variable line weight** — Thicker at connections, thinner at ends
92
- 3. **Wobbly curves** — No perfect circles or smooth Béziers
93
- 4. **Multiple overlapping strokes** — Looks hand-drawn, not vector
94
- 5. **Gaps and breaks** — Lines don't always connect perfectly
95
- 6. **Sketchy hatching** — For shading or emphasis areas
96
- 7. **Casual confidence** — Quick strokes, not labored perfection
97
-
98
- ### This is NOT
99
- - Clean vector illustration
100
- - Perfectly smooth curves
101
- - Uniform stroke weight
102
- - Polished corporate graphics
103
-
104
- ---
105
-
106
- ## Neon Glow Effects (Tron Influence)
107
-
108
- Strategic use of glowing elements for impact:
109
-
110
- 1. **Glow placement** — Only on key focal points, not everything
111
- 2. **Subtle intensity** — Soft glow, not overwhelming bloom
112
- 3. **Color-coded** — Orange glows for warm elements, cyan for technical
113
- 4. **Circuit aesthetics** — Glowing lines can suggest digital pathways
114
- 5. **Grid intersections** — Glows at connection points create depth
115
- 6. **Accent, not primary** — Glow enhances, doesn't dominate
116
-
117
- **Glow Parameters:**
118
- - Blur radius: 8-12px for subtle effect
119
- - Opacity: 40-60% for soft presence
120
- - Color: Match the accent color (#FF6B35 or #00D9FF)
121
- - Multiple layers: Inner glow + outer glow for depth
122
-
123
- ---
124
-
125
- ## Composition Rules
126
-
127
- 1. **Minimal elements** — 2-4 key components maximum
128
- 2. **Generous negative space** — 40-50% breathing room
129
- 3. **Asymmetric balance** — Dynamic placement, not centered
130
- 4. **Grid alignment** — Elements loosely follow invisible grid
131
- 5. **Hierarchy** — Clear focal point, supporting elements
132
- 6. **Depth through glow** — Layered glows create visual depth
133
- 7. **Hand-drawn feel** — Even geometric shapes look sketched
134
-
135
- ### Layout Strategies
136
- - **Circuit board composition** — Elements connected by glowing pathways
137
- - **Whiteboard sketch** — Casual hand-drawn explanation aesthetic
138
- - **Digital blueprint** — Technical diagram with neon highlights
139
- - **Floating elements** — Components suspended in dark space with glows
140
- - **Grid-anchored** — Subtle grid provides structure, elements break free
141
-
142
- ---
143
-
144
- ## Visual Metaphors
145
-
146
- **How to translate concepts into PAI aesthetic:**
147
-
148
- | Concept Type | Visual Strategy | Style Notes |
149
- |--------------|-----------------|-------------|
150
- | System Architecture | Connected boxes with glowing pathways | Excalidraw sketch + cyan circuit lines |
151
- | Data Flow | Hand-drawn arrows with neon trails | Orange flow direction, white sketch |
152
- | Process Steps | Numbered circles with connecting lines | Sketchy circles, glowing connections |
153
- | Hierarchies | Tree diagrams with gradient glows | White branches, orange highlights |
154
- | Relationships | Network graphs with glowing nodes | Cyan nodes, white sketch edges |
155
- | Transformations | Before/after with glow transition | Orange glow shows transformation |
156
-
157
- **The Formula:**
158
- ```
159
- 1. Identify core concept (single clear idea)
160
- 2. Choose appropriate metaphor (diagram type)
161
- 3. Sketch with rough white lines (Excalidraw feel)
162
- 4. Add strategic neon accents (orange warmth, cyan tech)
163
- 5. Apply subtle glows to focal points (Tron influence)
164
- 6. Place on dark background (modern contrast)
165
- 7. Leave generous negative space (clarity and calm)
166
- ```
167
-
168
- ---
169
-
170
- ## Diagram Types
171
-
172
- ### Flowcharts
173
- - Hand-drawn boxes (rough, wobbly edges)
174
- - Sketchy arrows with slight curves
175
- - Orange glow on decision points
176
- - Cyan glow on start/end nodes
177
- - White primary sketch lines
178
-
179
- ### Network Diagrams
180
- - Rough circles for nodes
181
- - Connecting lines with slight wobble
182
- - Glowing intersections
183
- - Color-code by type (orange = warm/human, cyan = technical)
184
-
185
- ### Architecture Diagrams
186
- - Sketched rectangles for components
187
- - Glowing connection lines (circuit aesthetic)
188
- - Grid undertone for structure
189
- - Hand-drawn labels in casual script
190
-
191
- ### Mind Maps
192
- - Central node with orange glow
193
- - Radiating branches (white sketch)
194
- - Secondary nodes with subtle cyan accents
195
- - Organic, flowing structure
196
-
197
- ---
198
-
199
- ## Typography (When Needed)
200
-
201
- **Hand-drawn casual script:**
202
- - Looks written by hand, not typed
203
- - Slightly irregular baseline
204
- - Variable character spacing
205
- - Uppercase for emphasis, lowercase for body
206
- - Orange or white, depending on emphasis
207
-
208
- **Avoid:**
209
- - Perfect geometric fonts
210
- - All-caps technical fonts
211
- - Serif fonts
212
- - Overly decorative fonts
213
-
214
- ---
215
-
216
- ## Background Variations
217
-
218
- ### Solid Dark (Default)
219
- - Deep slate (#1A202C) or pure black
220
- - Clean, modern, maximum contrast
221
- - Professional and focused
222
-
223
- ### Subtle Grid
224
- - Dark background with faint grid lines
225
- - Grid opacity: 10-20%
226
- - Grid color: Lighter slate (#2D3748)
227
- - Tron/digital blueprint aesthetic
228
- - Don't overdo - very subtle
229
-
230
- ### Gradient Dark (Optional)
231
- - Radial gradient from center to edges
232
- - Center: Slightly lighter (#2D3748)
233
- - Edges: Darker (#1A202C or black)
234
- - Subtle depth without distraction
235
-
236
- ---
237
-
238
- ## Absolute Rules
239
-
240
- 1. **HAND-DRAWN SKETCH STYLE** — Rough, imperfect, Excalidraw aesthetic
241
- 2. **DARK BACKGROUNDS** — Deep slate or black for contrast
242
- 3. **WHITE PRIMARY LINES** — Dominant sketch linework
243
- 4. **ORANGE MAIN ACCENT** — Anthropic warmth, approachability
244
- 5. **CYAN SECONDARY ACCENT** — Digital/technical elements (Tron)
245
- 6. **SUBTLE GLOWS** — Strategic, not overwhelming
246
- 7. **MINIMAL ELEMENTS** — 2-4 components maximum
247
- 8. **GENEROUS SPACE** — 40-50% negative space for breathing room
248
- 9. **NO PERFECTION** — Embrace the sketchy, hand-drawn quality
249
-
250
- ---
251
-
252
- ## AI Generation Prompting
253
-
254
- **Positive signals for AI generators:**
255
- ```
256
- "hand-drawn sketch style"
257
- "Excalidraw whiteboard aesthetic"
258
- "rough wobbly lines"
259
- "imperfect hand-drawn strokes"
260
- "dark background slate or black"
261
- "neon orange accents"
262
- "subtle cyan glow"
263
- "Tron-inspired neon highlights"
264
- "digital circuit aesthetic"
265
- "sketchy casual diagram"
266
- "whiteboard marker style"
267
- "multiple overlapping strokes"
268
- "generous negative space"
269
- "minimal composition"
270
- ```
271
-
272
- **Negative signals:**
273
- ```
274
- --no perfect vectors
275
- --no smooth curves
276
- --no polished corporate
277
- --no cluttered
278
- --no excessive neon
279
- --no photorealistic
280
- --no gradients everywhere
281
- --no bright backgrounds
282
- --no complex compositions
283
- ```
284
-
285
- ---
286
-
287
- ## Example Prompt Template
288
-
289
- ```
290
- Hand-drawn sketch diagram in Excalidraw style on dark slate background (#1A202C).
291
-
292
- STYLE: Rough, wobbly white sketch lines. Imperfect hand-drawn strokes.
293
- Multiple overlapping strokes like whiteboard markers. Variable line weight.
294
-
295
- COMPOSITION:
296
- [Describe 2-4 key elements with rough sketchy boxes/circles/arrows]
297
-
298
- ACCENTS:
299
- - Primary: Neon orange (#FF6B35) glow on [focal element]
300
- - Secondary: Subtle cyan (#00D9FF) glow on [technical element]
301
- - Glows: Soft, 40-60% opacity, 8-12px blur
302
-
303
- LAYOUT:
304
- - 40-50% negative space
305
- - Asymmetric balance
306
- - Elements loosely grid-aligned
307
- - Dark background for contrast
308
-
309
- CRITICAL:
310
- - Hand-drawn imperfect quality (NOT smooth vectors)
311
- - Subtle glows only (NOT overwhelming neon)
312
- - Minimal elements (2-4 max)
313
- - Generous breathing room
314
- - Sketch aesthetic like Excalidraw/whiteboard
315
- ```
316
-
317
- ---
318
-
319
- ## 🚨 Dynamic Interpretation Required
320
-
321
- **Every visualization should:**
322
- - Match the content's specific needs
323
- - Use appropriate diagram type (flowchart, network, architecture, etc.)
324
- - Balance digital precision (Tron) with human warmth (hand-drawn)
325
- - Combine Anthropic orange warmth with Tron cyan technical accents
326
- - Maintain sketchy Excalidraw aesthetic throughout
327
- - Stay minimal and focused
328
-
329
- DO NOT create overly complex visuals. The power is in simplicity, clarity, and the unique fusion of hand-drawn warmth with digital neon energy.
330
-
331
- ---
332
-
333
- **This is the PAI aesthetic: Where Tron meets Excalidraw, powered by Anthropic's warm orange soul.**