pi-studio 0.8.4 → 0.9.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.
- package/CHANGELOG.md +33 -0
- package/README.md +3 -1
- package/client/studio-client.js +1583 -34
- package/client/studio.css +364 -0
- package/index.ts +913 -2
- package/package.json +5 -4
package/client/studio.css
CHANGED
|
@@ -2164,6 +2164,370 @@
|
|
|
2164
2164
|
padding: 14px 2px 2px;
|
|
2165
2165
|
}
|
|
2166
2166
|
|
|
2167
|
+
.repl-panel {
|
|
2168
|
+
display: flex;
|
|
2169
|
+
flex-direction: column;
|
|
2170
|
+
gap: 10px;
|
|
2171
|
+
}
|
|
2172
|
+
|
|
2173
|
+
.repl-toolbar {
|
|
2174
|
+
display: flex;
|
|
2175
|
+
flex-wrap: wrap;
|
|
2176
|
+
align-items: flex-start;
|
|
2177
|
+
justify-content: space-between;
|
|
2178
|
+
gap: 10px;
|
|
2179
|
+
}
|
|
2180
|
+
|
|
2181
|
+
.repl-summary,
|
|
2182
|
+
.repl-controls {
|
|
2183
|
+
display: flex;
|
|
2184
|
+
flex-wrap: wrap;
|
|
2185
|
+
align-items: center;
|
|
2186
|
+
gap: 8px;
|
|
2187
|
+
}
|
|
2188
|
+
|
|
2189
|
+
.repl-controls select,
|
|
2190
|
+
.repl-controls button,
|
|
2191
|
+
.repl-more-controls summary,
|
|
2192
|
+
.repl-journal-actions button {
|
|
2193
|
+
min-height: 28px;
|
|
2194
|
+
font-size: 12px;
|
|
2195
|
+
}
|
|
2196
|
+
|
|
2197
|
+
.repl-control-label {
|
|
2198
|
+
display: inline-flex;
|
|
2199
|
+
align-items: center;
|
|
2200
|
+
gap: 5px;
|
|
2201
|
+
color: var(--muted);
|
|
2202
|
+
font-size: 11px;
|
|
2203
|
+
font-weight: 600;
|
|
2204
|
+
}
|
|
2205
|
+
|
|
2206
|
+
.repl-more-controls {
|
|
2207
|
+
position: relative;
|
|
2208
|
+
}
|
|
2209
|
+
|
|
2210
|
+
.repl-more-controls summary {
|
|
2211
|
+
display: inline-flex;
|
|
2212
|
+
align-items: center;
|
|
2213
|
+
justify-content: center;
|
|
2214
|
+
cursor: pointer;
|
|
2215
|
+
user-select: none;
|
|
2216
|
+
list-style: none;
|
|
2217
|
+
border: 1px solid var(--control-border);
|
|
2218
|
+
border-radius: 6px;
|
|
2219
|
+
padding: 4px 10px;
|
|
2220
|
+
color: var(--text);
|
|
2221
|
+
background: var(--button-bg, var(--panel-2));
|
|
2222
|
+
}
|
|
2223
|
+
|
|
2224
|
+
.repl-more-controls summary::-webkit-details-marker {
|
|
2225
|
+
display: none;
|
|
2226
|
+
}
|
|
2227
|
+
|
|
2228
|
+
.repl-more-controls summary::after {
|
|
2229
|
+
content: "⌄";
|
|
2230
|
+
margin-left: 6px;
|
|
2231
|
+
color: var(--studio-info-text, var(--muted));
|
|
2232
|
+
font-size: 11px;
|
|
2233
|
+
}
|
|
2234
|
+
|
|
2235
|
+
.repl-more-controls[open] summary {
|
|
2236
|
+
border-color: var(--accent);
|
|
2237
|
+
background: var(--accent-soft);
|
|
2238
|
+
}
|
|
2239
|
+
|
|
2240
|
+
.repl-more-menu {
|
|
2241
|
+
position: absolute;
|
|
2242
|
+
top: calc(100% + 6px);
|
|
2243
|
+
right: 0;
|
|
2244
|
+
z-index: 20;
|
|
2245
|
+
min-width: 240px;
|
|
2246
|
+
max-width: min(520px, 80vw);
|
|
2247
|
+
padding: 8px;
|
|
2248
|
+
border: 1px solid var(--panel-border);
|
|
2249
|
+
border-radius: 10px;
|
|
2250
|
+
background: var(--panel);
|
|
2251
|
+
box-shadow: 0 12px 30px rgba(0, 0, 0, 0.22);
|
|
2252
|
+
display: flex;
|
|
2253
|
+
flex-wrap: wrap;
|
|
2254
|
+
gap: 8px;
|
|
2255
|
+
}
|
|
2256
|
+
|
|
2257
|
+
.repl-transcript {
|
|
2258
|
+
margin: 0;
|
|
2259
|
+
padding: 12px 14px;
|
|
2260
|
+
border: 1px solid var(--panel-border);
|
|
2261
|
+
border-radius: 8px;
|
|
2262
|
+
background: var(--panel-2);
|
|
2263
|
+
color: var(--text);
|
|
2264
|
+
font-family: var(--font-mono);
|
|
2265
|
+
font-size: var(--studio-working-font-size);
|
|
2266
|
+
line-height: 1.45;
|
|
2267
|
+
white-space: pre-wrap;
|
|
2268
|
+
overflow-wrap: anywhere;
|
|
2269
|
+
}
|
|
2270
|
+
|
|
2271
|
+
.repl-prompt {
|
|
2272
|
+
color: var(--studio-info-text, var(--muted));
|
|
2273
|
+
font-weight: 700;
|
|
2274
|
+
}
|
|
2275
|
+
|
|
2276
|
+
.repl-empty,
|
|
2277
|
+
.repl-notice {
|
|
2278
|
+
padding: 10px 12px;
|
|
2279
|
+
border: 1px solid var(--panel-border);
|
|
2280
|
+
border-radius: 8px;
|
|
2281
|
+
background: var(--panel-2);
|
|
2282
|
+
color: var(--muted);
|
|
2283
|
+
}
|
|
2284
|
+
|
|
2285
|
+
.repl-notice-info {
|
|
2286
|
+
color: var(--studio-info-text, var(--muted));
|
|
2287
|
+
}
|
|
2288
|
+
|
|
2289
|
+
.repl-notice-error {
|
|
2290
|
+
color: var(--error);
|
|
2291
|
+
border-color: var(--error);
|
|
2292
|
+
background: var(--error-soft);
|
|
2293
|
+
}
|
|
2294
|
+
|
|
2295
|
+
.repl-journal,
|
|
2296
|
+
.repl-mirror {
|
|
2297
|
+
border: 1px solid var(--panel-border);
|
|
2298
|
+
border-radius: 10px;
|
|
2299
|
+
background: var(--panel-2);
|
|
2300
|
+
padding: 10px;
|
|
2301
|
+
display: flex;
|
|
2302
|
+
flex-direction: column;
|
|
2303
|
+
gap: 10px;
|
|
2304
|
+
}
|
|
2305
|
+
|
|
2306
|
+
.repl-mirror {
|
|
2307
|
+
background: var(--panel);
|
|
2308
|
+
}
|
|
2309
|
+
|
|
2310
|
+
.repl-journal-compact,
|
|
2311
|
+
.repl-mirror-compact {
|
|
2312
|
+
padding: 7px 9px;
|
|
2313
|
+
background: var(--panel);
|
|
2314
|
+
}
|
|
2315
|
+
|
|
2316
|
+
.repl-journal-compact-row {
|
|
2317
|
+
display: flex;
|
|
2318
|
+
align-items: center;
|
|
2319
|
+
justify-content: space-between;
|
|
2320
|
+
gap: 10px;
|
|
2321
|
+
flex-wrap: wrap;
|
|
2322
|
+
}
|
|
2323
|
+
|
|
2324
|
+
.repl-journal-compact-title {
|
|
2325
|
+
display: inline-flex;
|
|
2326
|
+
align-items: center;
|
|
2327
|
+
gap: 8px;
|
|
2328
|
+
min-width: 0;
|
|
2329
|
+
color: var(--muted);
|
|
2330
|
+
font-size: 12px;
|
|
2331
|
+
}
|
|
2332
|
+
|
|
2333
|
+
.repl-journal-chip {
|
|
2334
|
+
display: inline-flex;
|
|
2335
|
+
align-items: center;
|
|
2336
|
+
border: 1px solid var(--border-subtle);
|
|
2337
|
+
border-radius: 999px;
|
|
2338
|
+
padding: 2px 7px;
|
|
2339
|
+
color: var(--studio-info-text, var(--muted));
|
|
2340
|
+
background: var(--panel-2);
|
|
2341
|
+
font-size: 11px;
|
|
2342
|
+
font-weight: 700;
|
|
2343
|
+
letter-spacing: 0.02em;
|
|
2344
|
+
}
|
|
2345
|
+
|
|
2346
|
+
.repl-journal-header {
|
|
2347
|
+
display: flex;
|
|
2348
|
+
justify-content: space-between;
|
|
2349
|
+
align-items: flex-start;
|
|
2350
|
+
gap: 12px;
|
|
2351
|
+
flex-wrap: wrap;
|
|
2352
|
+
}
|
|
2353
|
+
|
|
2354
|
+
.repl-journal-header h3 {
|
|
2355
|
+
margin: 0;
|
|
2356
|
+
font-size: 13px;
|
|
2357
|
+
color: var(--text);
|
|
2358
|
+
}
|
|
2359
|
+
|
|
2360
|
+
.repl-journal-header p,
|
|
2361
|
+
.repl-journal-omitted {
|
|
2362
|
+
margin: 3px 0 0;
|
|
2363
|
+
color: var(--muted);
|
|
2364
|
+
font-size: 12px;
|
|
2365
|
+
line-height: 1.35;
|
|
2366
|
+
}
|
|
2367
|
+
|
|
2368
|
+
.repl-journal-actions {
|
|
2369
|
+
display: inline-flex;
|
|
2370
|
+
align-items: center;
|
|
2371
|
+
gap: 8px;
|
|
2372
|
+
flex-wrap: wrap;
|
|
2373
|
+
justify-content: flex-end;
|
|
2374
|
+
}
|
|
2375
|
+
|
|
2376
|
+
.repl-journal-compact-actions,
|
|
2377
|
+
.repl-studio-below-actions {
|
|
2378
|
+
display: flex;
|
|
2379
|
+
justify-content: flex-end;
|
|
2380
|
+
}
|
|
2381
|
+
|
|
2382
|
+
.repl-studio-below-actions {
|
|
2383
|
+
margin-top: -4px;
|
|
2384
|
+
}
|
|
2385
|
+
|
|
2386
|
+
.repl-journal-list {
|
|
2387
|
+
--repl-studio-prompt-width: 3.2em;
|
|
2388
|
+
--repl-studio-column-gap: 8px;
|
|
2389
|
+
display: flex;
|
|
2390
|
+
flex-direction: column;
|
|
2391
|
+
gap: 0;
|
|
2392
|
+
border: 1px solid var(--panel-border);
|
|
2393
|
+
border-radius: 10px;
|
|
2394
|
+
background: var(--panel);
|
|
2395
|
+
padding: 10px 12px;
|
|
2396
|
+
box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.015);
|
|
2397
|
+
}
|
|
2398
|
+
|
|
2399
|
+
.repl-journal-card {
|
|
2400
|
+
display: flex;
|
|
2401
|
+
flex-direction: column;
|
|
2402
|
+
gap: 1px;
|
|
2403
|
+
}
|
|
2404
|
+
|
|
2405
|
+
.repl-studio-entry {
|
|
2406
|
+
position: relative;
|
|
2407
|
+
padding: 2px 8.5em 6px 0;
|
|
2408
|
+
background: transparent;
|
|
2409
|
+
}
|
|
2410
|
+
|
|
2411
|
+
.repl-studio-entry:last-child {
|
|
2412
|
+
padding-bottom: 2px;
|
|
2413
|
+
}
|
|
2414
|
+
|
|
2415
|
+
.repl-studio-entry:has(.repl-studio-output-row) {
|
|
2416
|
+
padding-bottom: 6px;
|
|
2417
|
+
}
|
|
2418
|
+
|
|
2419
|
+
.repl-studio-entry-meta {
|
|
2420
|
+
position: absolute;
|
|
2421
|
+
top: 3px;
|
|
2422
|
+
right: 0;
|
|
2423
|
+
max-width: 8.1em;
|
|
2424
|
+
overflow: hidden;
|
|
2425
|
+
text-overflow: ellipsis;
|
|
2426
|
+
white-space: nowrap;
|
|
2427
|
+
color: var(--muted);
|
|
2428
|
+
font-size: 11px;
|
|
2429
|
+
line-height: 1.25;
|
|
2430
|
+
opacity: 0.55;
|
|
2431
|
+
text-align: right;
|
|
2432
|
+
}
|
|
2433
|
+
|
|
2434
|
+
.repl-studio-banner {
|
|
2435
|
+
margin: 0 0 8px;
|
|
2436
|
+
padding: 0 0 8px;
|
|
2437
|
+
border-bottom: 1px solid var(--border-subtle);
|
|
2438
|
+
color: var(--muted);
|
|
2439
|
+
font-family: var(--font-mono);
|
|
2440
|
+
font-size: var(--studio-working-font-size);
|
|
2441
|
+
line-height: 1.45;
|
|
2442
|
+
white-space: pre-wrap;
|
|
2443
|
+
}
|
|
2444
|
+
|
|
2445
|
+
.repl-studio-code-row,
|
|
2446
|
+
.repl-studio-output-row {
|
|
2447
|
+
display: grid;
|
|
2448
|
+
grid-template-columns: var(--repl-studio-prompt-width) minmax(0, 1fr);
|
|
2449
|
+
gap: var(--repl-studio-column-gap);
|
|
2450
|
+
align-items: start;
|
|
2451
|
+
}
|
|
2452
|
+
|
|
2453
|
+
.repl-studio-prompt,
|
|
2454
|
+
.repl-studio-output-label {
|
|
2455
|
+
font-family: var(--font-mono);
|
|
2456
|
+
font-size: var(--studio-working-font-size);
|
|
2457
|
+
line-height: 1.45;
|
|
2458
|
+
text-align: right;
|
|
2459
|
+
user-select: none;
|
|
2460
|
+
}
|
|
2461
|
+
|
|
2462
|
+
.repl-studio-output-label {
|
|
2463
|
+
color: var(--muted);
|
|
2464
|
+
opacity: 0.82;
|
|
2465
|
+
}
|
|
2466
|
+
|
|
2467
|
+
.repl-studio-input,
|
|
2468
|
+
.repl-studio-output {
|
|
2469
|
+
margin: 0;
|
|
2470
|
+
padding: 0;
|
|
2471
|
+
border: 0;
|
|
2472
|
+
border-radius: 0;
|
|
2473
|
+
background: transparent;
|
|
2474
|
+
color: var(--text);
|
|
2475
|
+
font-family: var(--font-mono);
|
|
2476
|
+
font-size: var(--studio-working-font-size);
|
|
2477
|
+
line-height: 1.45;
|
|
2478
|
+
white-space: pre-wrap;
|
|
2479
|
+
overflow-wrap: anywhere;
|
|
2480
|
+
box-shadow: none;
|
|
2481
|
+
}
|
|
2482
|
+
|
|
2483
|
+
.repl-studio-output-row {
|
|
2484
|
+
margin-top: 2px;
|
|
2485
|
+
}
|
|
2486
|
+
|
|
2487
|
+
.repl-studio-output {
|
|
2488
|
+
color: var(--text);
|
|
2489
|
+
}
|
|
2490
|
+
|
|
2491
|
+
#rightPane .repl-journal-list .repl-studio-input,
|
|
2492
|
+
#rightPane .repl-journal-list .repl-studio-output,
|
|
2493
|
+
#rightPane .repl-journal-list .repl-studio-code,
|
|
2494
|
+
#rightPane .repl-journal-list .repl-studio-input.response-markdown-highlight,
|
|
2495
|
+
#rightPane .repl-journal-list .repl-studio-code.response-markdown-highlight {
|
|
2496
|
+
margin: 0 !important;
|
|
2497
|
+
padding: 0 !important;
|
|
2498
|
+
border: 0 !important;
|
|
2499
|
+
border-radius: 0 !important;
|
|
2500
|
+
background: transparent !important;
|
|
2501
|
+
box-shadow: none !important;
|
|
2502
|
+
font-size: var(--studio-working-font-size) !important;
|
|
2503
|
+
line-height: 1.45 !important;
|
|
2504
|
+
}
|
|
2505
|
+
|
|
2506
|
+
.repl-studio-note {
|
|
2507
|
+
margin-left: calc(var(--repl-studio-prompt-width) + var(--repl-studio-column-gap));
|
|
2508
|
+
color: var(--text);
|
|
2509
|
+
font-size: 13px;
|
|
2510
|
+
line-height: 1.45;
|
|
2511
|
+
white-space: pre-wrap;
|
|
2512
|
+
}
|
|
2513
|
+
|
|
2514
|
+
.repl-studio-empty,
|
|
2515
|
+
.repl-studio-pending {
|
|
2516
|
+
margin-left: calc(var(--repl-studio-prompt-width) + var(--repl-studio-column-gap));
|
|
2517
|
+
color: var(--muted);
|
|
2518
|
+
font-size: 12px;
|
|
2519
|
+
font-style: italic;
|
|
2520
|
+
}
|
|
2521
|
+
|
|
2522
|
+
.repl-journal-card-header,
|
|
2523
|
+
.repl-journal-section,
|
|
2524
|
+
.repl-journal-label,
|
|
2525
|
+
.repl-journal-prose,
|
|
2526
|
+
.repl-journal-code,
|
|
2527
|
+
.repl-journal-output {
|
|
2528
|
+
/* Kept for exported/older markup compatibility. */
|
|
2529
|
+
}
|
|
2530
|
+
|
|
2167
2531
|
footer {
|
|
2168
2532
|
border-top: 1px solid var(--panel-border);
|
|
2169
2533
|
padding: 8px 12px;
|