ugly-app 0.1.987 → 0.1.989
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/README.md +118 -109
- package/dist/cli/probeAuth.d.ts +13 -0
- package/dist/cli/probeAuth.d.ts.map +1 -1
- package/dist/cli/probeAuth.js +49 -0
- package/dist/cli/probeAuth.js.map +1 -1
- package/dist/cli/version.d.ts +1 -1
- package/dist/cli/version.js +1 -1
- package/dist/markdown/client/MarkdownEditor.d.ts +6 -0
- package/dist/markdown/client/MarkdownEditor.d.ts.map +1 -1
- package/dist/markdown/client/MarkdownEditor.js.map +1 -1
- package/dist/markdown/client/MarkdownEditorInternal.d.ts.map +1 -1
- package/dist/markdown/client/MarkdownEditorInternal.js +2 -2
- package/dist/markdown/client/MarkdownEditorInternal.js.map +1 -1
- package/dist/markdown/client/ProseMirrorEditor/EditorContextMenu.d.ts +7 -1
- package/dist/markdown/client/ProseMirrorEditor/EditorContextMenu.d.ts.map +1 -1
- package/dist/markdown/client/ProseMirrorEditor/EditorContextMenu.js +24 -2
- package/dist/markdown/client/ProseMirrorEditor/EditorContextMenu.js.map +1 -1
- package/dist/markdown/client/ProseMirrorEditor/FloatingToolbar.d.ts +8 -1
- package/dist/markdown/client/ProseMirrorEditor/FloatingToolbar.d.ts.map +1 -1
- package/dist/markdown/client/ProseMirrorEditor/FloatingToolbar.js +19 -2
- package/dist/markdown/client/ProseMirrorEditor/FloatingToolbar.js.map +1 -1
- package/dist/markdown/client/SelectionActionBar.d.ts +23 -0
- package/dist/markdown/client/SelectionActionBar.d.ts.map +1 -0
- package/dist/markdown/client/SelectionActionBar.js +153 -0
- package/dist/markdown/client/SelectionActionBar.js.map +1 -0
- package/dist/markdown/client/index.d.ts +4 -0
- package/dist/markdown/client/index.d.ts.map +1 -1
- package/dist/markdown/client/index.js +2 -0
- package/dist/markdown/client/index.js.map +1 -1
- package/dist/markdown/client/markdownComponents.d.ts +4 -1
- package/dist/markdown/client/markdownComponents.d.ts.map +1 -1
- package/dist/markdown/client/markdownComponents.js +2 -2
- package/dist/markdown/client/markdownComponents.js.map +1 -1
- package/dist/markdown/shared/SelectionAction.d.ts +48 -0
- package/dist/markdown/shared/SelectionAction.d.ts.map +1 -0
- package/dist/markdown/shared/SelectionAction.js +36 -0
- package/dist/markdown/shared/SelectionAction.js.map +1 -0
- package/package.json +1 -1
- package/src/cli/probeAuth.ts +51 -0
- package/src/cli/version.ts +1 -1
- package/src/markdown/client/MarkdownEditor.tsx +6 -0
- package/src/markdown/client/MarkdownEditorInternal.tsx +2 -0
- package/src/markdown/client/ProseMirrorEditor/EditorContextMenu.tsx +55 -0
- package/src/markdown/client/ProseMirrorEditor/FloatingToolbar.tsx +51 -0
- package/src/markdown/client/SelectionActionBar.tsx +223 -0
- package/src/markdown/client/index.ts +10 -0
- package/src/markdown/client/markdownComponents.tsx +12 -5
- package/src/markdown/shared/SelectionAction.ts +62 -0
- package/templates/.claude/skills/create-test-users/SKILL.md +58 -23
package/README.md
CHANGED
|
@@ -1,15 +1,14 @@
|
|
|
1
1
|
# ugly-app
|
|
2
2
|
|
|
3
|
-
A full-stack TypeScript framework for shipping production web apps
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
for every workflow.
|
|
3
|
+
A full-stack TypeScript framework for shipping production web apps: Node +
|
|
4
|
+
React + Postgres, type-safe RPC over WebSocket and HTTP, real-time doc
|
|
5
|
+
subscriptions, built-in auth, AI generation, storage, cron / workers, and a
|
|
6
|
+
CLI for every workflow.
|
|
8
7
|
|
|
9
|
-
ugly-app
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
8
|
+
ugly-app runs against [ugly.bot](https://ugly.bot), which provides auth,
|
|
9
|
+
infra (Postgres, Qdrant, NATS, S3-compatible object storage), AI provider
|
|
10
|
+
keys, email, push, and deployment. Your app talks to all of it through the
|
|
11
|
+
project's dev tunnel and its `UGLY_BOT_TOKEN`.
|
|
13
12
|
|
|
14
13
|
```bash
|
|
15
14
|
npx ugly-app init my-app
|
|
@@ -21,8 +20,8 @@ npm run dev
|
|
|
21
20
|
|
|
22
21
|
| Import path | Contents |
|
|
23
22
|
|-------------|----------|
|
|
24
|
-
| `ugly-app` (a.k.a. `ugly-app/server`) | Server: `createApp`, `TypedDB`, auth, AI clients, storage, NATS
|
|
25
|
-
| `ugly-app/shared` | Cross-tier: `defineRequests`, `defineCollections`, `definePage`, `defineWorkers`, Zod, experiments. |
|
|
23
|
+
| `ugly-app` (a.k.a. `ugly-app/server`) | Server: `createApp`, `TypedDB`, auth, AI clients, storage, NATS. |
|
|
24
|
+
| `ugly-app/shared` | Cross-tier: `defineRequests`, `defineCollections`, `definePage`, `defineWorkers`, Zod, experiments, model catalogs. |
|
|
26
25
|
| `ugly-app/client` | React: `bootstrapApp`, `createRouter`, `lazyPage` / `lazyPageLoader`, `AppProvider` / `useApp`, `SimpleScrollView`, animations, audio, AI helpers. |
|
|
27
26
|
| `ugly-app/server/adapter/workers` | Cloudflare Workers entry (Hono router + Durable Objects + Neon HTTP driver + R2). |
|
|
28
27
|
| `ugly-app/server/ssr` | SSR renderer used by the Workers adapter. |
|
|
@@ -35,7 +34,7 @@ Additional per-feature bundles: `conversation`, `character`, `collab`,
|
|
|
35
34
|
|
|
36
35
|
---
|
|
37
36
|
|
|
38
|
-
## Server — `createApp()`
|
|
37
|
+
## 1. Server — `createApp()`
|
|
39
38
|
|
|
40
39
|
`createApp` is the single server entry. It owns Express, the WebSocket
|
|
41
40
|
server, the typed DB, and the RPC dispatcher.
|
|
@@ -108,7 +107,7 @@ for in-process invocation of any registered handler.
|
|
|
108
107
|
|
|
109
108
|
| Member | Description |
|
|
110
109
|
|--------|-------------|
|
|
111
|
-
| `start(port?)` | Start the server
|
|
110
|
+
| `start(port?)` | Start the server. Framework default is `3000`; templates pass `PORT` (default `4321`). |
|
|
112
111
|
| `db` | `TypedDB<Map>` — map inferred from your collections + framework built-ins. |
|
|
113
112
|
| `httpServer` | The underlying Node `http.Server`. |
|
|
114
113
|
| `wss` | The main `WebSocketServer` (path set via `setWsPath`, default `/rpc`). |
|
|
@@ -180,7 +179,6 @@ override the framework's defaults. Rate-limited handlers are marked below.
|
|
|
180
179
|
| `shareLink` | Mint a `https://ugly.bot/l/<code>` short link with OG metadata. Rate-limited 60/60s. |
|
|
181
180
|
| `feedbackReportCreateNoAuth` | Public, same-origin feedback endpoint used by browser telemetry. Rate-limited 10/60s. |
|
|
182
181
|
| `feedbackReportResolve` | Mark an in-app feedback report resolved/declined. Admin-gated. |
|
|
183
|
-
| `submitFeedbackBot` | Feedback path used by the bot-swarm test tooling. |
|
|
184
182
|
| `errorLogCaptureNoAuth` | Public error-log capture. |
|
|
185
183
|
| `perfSnapshotCaptureNoAuth` | Public perf snapshot capture. Rate-limited 60/60s. |
|
|
186
184
|
| `adminGetPerfLogs` | Admin-only perf log query used by the CLI `perf:*` commands. |
|
|
@@ -192,98 +190,12 @@ Add per-endpoint rate limits on your own handlers with
|
|
|
192
190
|
|
|
193
191
|
---
|
|
194
192
|
|
|
195
|
-
##
|
|
196
|
-
|
|
197
|
-
`shared/` is consumed by both server and client. Keep all Zod schemas,
|
|
198
|
-
types, collections, and route declarations here.
|
|
199
|
-
|
|
200
|
-
### Requests (`shared/api.ts`)
|
|
201
|
-
|
|
202
|
-
```ts
|
|
203
|
-
import { authReq, defineRequests, req, z } from 'ugly-app/shared';
|
|
204
|
-
|
|
205
|
-
export const requests = defineRequests({
|
|
206
|
-
// Public — handler signature: (userId: string | null, input) => Promise<output>
|
|
207
|
-
getPublicData: req({
|
|
208
|
-
input: z.object({ id: z.string() }),
|
|
209
|
-
output: z.object({ data: z.string() }),
|
|
210
|
-
}),
|
|
211
|
-
|
|
212
|
-
// Authenticated — 401 enforced automatically, userId guaranteed string
|
|
213
|
-
getMe: authReq({
|
|
214
|
-
input: z.object({}),
|
|
215
|
-
output: z.object({ userId: z.string(), email: z.string().optional() }),
|
|
216
|
-
}),
|
|
217
|
-
|
|
218
|
-
// Per-endpoint rate limiting — enforced before the handler runs
|
|
219
|
-
submitFeedback: authReq({
|
|
220
|
-
input: z.object({ type: z.enum(['bug', 'design', 'feature']), message: z.string() }),
|
|
221
|
-
output: z.object({ id: z.string() }),
|
|
222
|
-
rateLimit: { max: 20, window: 60 },
|
|
223
|
-
}),
|
|
224
|
-
});
|
|
225
|
-
```
|
|
226
|
-
|
|
227
|
-
Every request is reachable as **both** `socket.request(name, input)`
|
|
228
|
-
(WebSocket) and `POST /api/:name { input }` (HTTP). `z` is re-exported from
|
|
229
|
-
Zod for convenience.
|
|
230
|
-
|
|
231
|
-
### Collections (`shared/collections.ts`)
|
|
232
|
-
|
|
233
|
-
```ts
|
|
234
|
-
import { defineCollections, InferDocType, neon } from 'ugly-app/shared';
|
|
235
|
-
import { z } from 'zod';
|
|
236
|
-
|
|
237
|
-
export const TodoSchema = z.object({
|
|
238
|
-
userId: z.string(),
|
|
239
|
-
text: z.string(),
|
|
240
|
-
done: z.boolean(),
|
|
241
|
-
});
|
|
242
|
-
export type Todo = InferDocType<typeof TodoSchema>;
|
|
243
|
-
|
|
244
|
-
export const collections = defineCollections({
|
|
245
|
-
todo: {
|
|
246
|
-
schema: TodoSchema,
|
|
247
|
-
meta: {
|
|
248
|
-
db: neon, // REQUIRED — `neon` (Postgres) or `d1` (SQLite / D1)
|
|
249
|
-
cache: true, // or { ttlMs: 60_000 }
|
|
250
|
-
trackable: true,
|
|
251
|
-
public: false,
|
|
252
|
-
cascadeFrom: null,
|
|
253
|
-
},
|
|
254
|
-
},
|
|
255
|
-
});
|
|
256
|
-
```
|
|
257
|
-
|
|
258
|
-
**`CollectionMeta`:**
|
|
259
|
-
- `db` — **required.** `neon` (Postgres) or `d1` (Cloudflare D1 / SQLite). Both handles are exported from `ugly-app/shared`. Omitting it is a compile error and runtime throw.
|
|
260
|
-
- `cache` — `true` / `false` / `{ ttlMs }`. When enabled, `getDoc` / `getByIds` read from an LRU cache; writes invalidate it.
|
|
261
|
-
- `trackable` — enables real-time `trackDoc` / `trackDocs` via change-stream NATS notifications.
|
|
262
|
-
- `public` — allow unauthenticated client reads.
|
|
263
|
-
- `cascadeFrom` — parent collection: when the parent doc is deleted, docs in this collection are cascade-deleted.
|
|
264
|
-
- `trackKeys?` — fields usable as NATS routing keys for scoped `trackDocs` subscriptions.
|
|
265
|
-
- `getter?(ids)` — batch resolver for collections with no local table (e.g. `userPublic` resolves via ugly.bot).
|
|
266
|
-
- `skipReadValidation?` — opt out of per-row zod validation on reads for very hot collections. Writes are always validated. Global kill-switch: `UGLY_DB_VALIDATE_READS=0`.
|
|
267
|
-
- `search?: { fields, language? }` — full-text index over the named JSONB paths (Neon: Postgres FTS; D1: SQLite FTS5, ranked by bm25).
|
|
268
|
-
- `vector?: { dimensions, metric?, filterable? }` — ANN index. Vector supplied out-of-band at write time (`setDoc(c, doc, { vec })`) — never stored in the doc JSON. Query with `getDocs(c, filter, { near })`.
|
|
269
|
-
|
|
270
|
-
All documents extend `DBObject`: `{ _id, version, created, updated }`.
|
|
271
|
-
Use `dbDefaults()` to stamp `version` / `created` / `updated` on inserts.
|
|
272
|
-
**Always generate `_id` with `nanoid()`** — never `crypto.randomUUID()`,
|
|
273
|
-
`Date.now()`, or `Math.random()` (see `CLAUDE.md`).
|
|
274
|
-
|
|
275
|
-
After schema changes, run `npm run db:schema-gen` then `npm run db:migrate`.
|
|
276
|
-
The app refuses to start when drift is detected (set `SCHEMA_CHECK_SKIP=true`
|
|
277
|
-
only as a last resort).
|
|
278
|
-
|
|
279
|
-
---
|
|
280
|
-
|
|
281
|
-
## Routing
|
|
193
|
+
## 2. Routing
|
|
282
194
|
|
|
283
195
|
Route definitions live in `shared/pages.ts`; the client-side router is
|
|
284
196
|
created by `createRouter({ pages, allPages?, ssrPages? })`.
|
|
285
197
|
|
|
286
|
-
### `definePage` / `definePages`
|
|
198
|
+
### `definePage` / `definePages`
|
|
287
199
|
|
|
288
200
|
```ts
|
|
289
201
|
import { definePage, definePages } from 'ugly-app/shared';
|
|
@@ -452,10 +364,10 @@ virtualized lists with scroll-position persistence, use the richer
|
|
|
452
364
|
|
|
453
365
|
---
|
|
454
366
|
|
|
455
|
-
## Client — `bootstrapApp()`
|
|
367
|
+
## 3. Client — `bootstrapApp()` and `useApp()`
|
|
456
368
|
|
|
457
|
-
The recommended entry point. Handles auth detection, socket
|
|
458
|
-
background account-sync with ugly.bot, and provider wiring.
|
|
369
|
+
The recommended client entry point. Handles auth detection, socket
|
|
370
|
+
creation, background account-sync with ugly.bot, and provider wiring.
|
|
459
371
|
|
|
460
372
|
```tsx
|
|
461
373
|
// client/main.tsx
|
|
@@ -562,7 +474,7 @@ For pure HTTP (no WebSocket), use
|
|
|
562
474
|
|
|
563
475
|
---
|
|
564
476
|
|
|
565
|
-
## Auth
|
|
477
|
+
## 4. Auth flow
|
|
566
478
|
|
|
567
479
|
ugly-app uses HttpOnly cookies and server-side JWT injection — no
|
|
568
480
|
`localStorage`, no client-side token handling.
|
|
@@ -631,12 +543,91 @@ configurator.setAuth({
|
|
|
631
543
|
|
|
632
544
|
---
|
|
633
545
|
|
|
634
|
-
## Database — `TypedDB`
|
|
546
|
+
## 5. Database — `TypedDB`
|
|
635
547
|
|
|
636
548
|
Access via `app.db`. All methods accept a `CollectionDef` (from
|
|
637
549
|
`defineCollections()`) or, on the `raw*` / `getQuery*` variants, a plain
|
|
638
550
|
collection name string.
|
|
639
551
|
|
|
552
|
+
### Requests (`shared/api.ts`)
|
|
553
|
+
|
|
554
|
+
```ts
|
|
555
|
+
import { authReq, defineRequests, req, z } from 'ugly-app/shared';
|
|
556
|
+
|
|
557
|
+
export const requests = defineRequests({
|
|
558
|
+
// Public — handler signature: (userId: string | null, input) => Promise<output>
|
|
559
|
+
getPublicData: req({
|
|
560
|
+
input: z.object({ id: z.string() }),
|
|
561
|
+
output: z.object({ data: z.string() }),
|
|
562
|
+
}),
|
|
563
|
+
|
|
564
|
+
// Authenticated — 401 enforced automatically, userId guaranteed string
|
|
565
|
+
getMe: authReq({
|
|
566
|
+
input: z.object({}),
|
|
567
|
+
output: z.object({ userId: z.string(), email: z.string().optional() }),
|
|
568
|
+
}),
|
|
569
|
+
|
|
570
|
+
// Per-endpoint rate limiting — enforced before the handler runs
|
|
571
|
+
submitFeedback: authReq({
|
|
572
|
+
input: z.object({ type: z.enum(['bug', 'design', 'feature']), message: z.string() }),
|
|
573
|
+
output: z.object({ id: z.string() }),
|
|
574
|
+
rateLimit: { max: 20, window: 60 },
|
|
575
|
+
}),
|
|
576
|
+
});
|
|
577
|
+
```
|
|
578
|
+
|
|
579
|
+
Every request is reachable as **both** `socket.request(name, input)`
|
|
580
|
+
(WebSocket) and `POST /api/:name { input }` (HTTP). `z` is re-exported from
|
|
581
|
+
Zod for convenience.
|
|
582
|
+
|
|
583
|
+
### Collections (`shared/collections.ts`)
|
|
584
|
+
|
|
585
|
+
```ts
|
|
586
|
+
import { defineCollections, InferDocType, neon } from 'ugly-app/shared';
|
|
587
|
+
import { z } from 'zod';
|
|
588
|
+
|
|
589
|
+
export const TodoSchema = z.object({
|
|
590
|
+
userId: z.string(),
|
|
591
|
+
text: z.string(),
|
|
592
|
+
done: z.boolean(),
|
|
593
|
+
});
|
|
594
|
+
export type Todo = InferDocType<typeof TodoSchema>;
|
|
595
|
+
|
|
596
|
+
export const collections = defineCollections({
|
|
597
|
+
todo: {
|
|
598
|
+
schema: TodoSchema,
|
|
599
|
+
meta: {
|
|
600
|
+
db: neon, // REQUIRED — `neon` (Postgres) or `d1` (SQLite / D1)
|
|
601
|
+
cache: true, // or { ttlMs: 60_000 }
|
|
602
|
+
trackable: true,
|
|
603
|
+
public: false,
|
|
604
|
+
cascadeFrom: null,
|
|
605
|
+
},
|
|
606
|
+
},
|
|
607
|
+
});
|
|
608
|
+
```
|
|
609
|
+
|
|
610
|
+
**`CollectionMeta`:**
|
|
611
|
+
- `db` — **required.** `neon` (Postgres) or `d1` (Cloudflare D1 / SQLite). Both handles are exported from `ugly-app/shared`. Omitting it is a compile error and runtime throw.
|
|
612
|
+
- `cache` — `true` / `false` / `{ ttlMs }`. When enabled, `getDoc` / `getByIds` read from an LRU cache; writes invalidate it.
|
|
613
|
+
- `trackable` — enables real-time `trackDoc` / `trackDocs` via change-stream NATS notifications.
|
|
614
|
+
- `public` — allow unauthenticated client reads.
|
|
615
|
+
- `cascadeFrom` — parent collection: when the parent doc is deleted, docs in this collection are cascade-deleted.
|
|
616
|
+
- `trackKeys?` — fields usable as NATS routing keys for scoped `trackDocs` subscriptions.
|
|
617
|
+
- `getter?(ids)` — batch resolver for collections with no local table (e.g. `userPublic` resolves via ugly.bot).
|
|
618
|
+
- `skipReadValidation?` — opt out of per-row zod validation on reads for very hot collections. Writes are always validated. Global kill-switch: `UGLY_DB_VALIDATE_READS=0`.
|
|
619
|
+
- `search?: { fields, language? }` — full-text index over the named JSONB paths (Neon: Postgres FTS; D1: SQLite FTS5, ranked by bm25).
|
|
620
|
+
- `vector?: { dimensions, metric?, filterable? }` — ANN index. Vector supplied out-of-band at write time (`setDoc(c, doc, { vec })`) — never stored in the doc JSON. Query with `getDocs(c, filter, { near })`.
|
|
621
|
+
|
|
622
|
+
All documents extend `DBObject`: `{ _id, version, created, updated }`.
|
|
623
|
+
Use `dbDefaults()` to stamp `version` / `created` / `updated` on inserts.
|
|
624
|
+
**Always generate `_id` with `nanoid()`** — never `crypto.randomUUID()`,
|
|
625
|
+
`Date.now()`, or `Math.random()` (see `CLAUDE.md`).
|
|
626
|
+
|
|
627
|
+
After schema changes, run `npm run db:schema-gen` then `npm run db:migrate`.
|
|
628
|
+
The app refuses to start when drift is detected (set `SCHEMA_CHECK_SKIP=true`
|
|
629
|
+
only as a last resort).
|
|
630
|
+
|
|
640
631
|
### Writing
|
|
641
632
|
|
|
642
633
|
```ts
|
|
@@ -745,7 +736,7 @@ Imports available from `ugly-app`:
|
|
|
745
736
|
|
|
746
737
|
---
|
|
747
738
|
|
|
748
|
-
## AI providers
|
|
739
|
+
## 6. AI providers
|
|
749
740
|
|
|
750
741
|
AI calls are proxied through ugly.bot — your app never holds a provider
|
|
751
742
|
key. Pass `UGLY_BOT_TOKEN` in the environment and the framework handles
|
|
@@ -758,6 +749,7 @@ import { createTextGen } from 'ugly-app';
|
|
|
758
749
|
const textGen = createTextGen(userId);
|
|
759
750
|
|
|
760
751
|
const text = await textGen.generate(messages, { model: 'gemini_2_5_flash' });
|
|
752
|
+
const obj = await textGen.generateJson(mySchema, messages, { model: 'gemini_2_5_flash' });
|
|
761
753
|
```
|
|
762
754
|
|
|
763
755
|
Or invoke the framework `textGen` request through the RPC pipeline — its
|
|
@@ -794,6 +786,7 @@ const url = await imageGen.generate('A red panda eating noodles', { model: 'flux
|
|
|
794
786
|
import { createEmbeddingClient, cosineSimilarity } from 'ugly-app';
|
|
795
787
|
const embeddings = createEmbeddingClient();
|
|
796
788
|
const vector = await embeddings.embed('hello world');
|
|
789
|
+
const many = await embeddings.embedBatch(['a', 'b', 'c']);
|
|
797
790
|
const sim = cosineSimilarity(vectorA, vectorB);
|
|
798
791
|
```
|
|
799
792
|
|
|
@@ -838,9 +831,25 @@ const { speak, stop: stopTTS } = useTTS(uglyBotSocket);
|
|
|
838
831
|
`uglyBotSocket` is the `UglyBotSocket` on `useApp()`; it opens a direct
|
|
839
832
|
WebSocket to the platform.
|
|
840
833
|
|
|
834
|
+
### Sharing / share links
|
|
835
|
+
|
|
836
|
+
```ts
|
|
837
|
+
import { shareLink } from 'ugly-app'; // server
|
|
838
|
+
const url = await shareLink({
|
|
839
|
+
target: `/article/${id}`, // app route or absolute URL
|
|
840
|
+
og: { title, description, image }, // OG card metadata
|
|
841
|
+
requireAuth: false, // true → logged-out web users hit login
|
|
842
|
+
}); // → https://ugly.bot/l/<code>
|
|
843
|
+
```
|
|
844
|
+
|
|
845
|
+
Minting is idempotent (deterministic code) and dedupes within a run.
|
|
846
|
+
Never hand-build outbound URLs (`${PUBLIC_URL}/article/${id}`) in emails,
|
|
847
|
+
push, or share flows — always go through `shareLink()`. See the "sharing
|
|
848
|
+
links" rule in `CLAUDE.md`.
|
|
849
|
+
|
|
841
850
|
---
|
|
842
851
|
|
|
843
|
-
## Storage
|
|
852
|
+
## 7. Storage
|
|
844
853
|
|
|
845
854
|
S3-compatible. Two logical buckets:
|
|
846
855
|
|
package/dist/cli/probeAuth.d.ts
CHANGED
|
@@ -40,5 +40,18 @@ export interface ProbeAuthResult {
|
|
|
40
40
|
* since some service tokens are intentionally non-expiring
|
|
41
41
|
*/
|
|
42
42
|
export declare function inspectJwt(token: string): 'valid' | 'expired' | 'unknown';
|
|
43
|
+
/**
|
|
44
|
+
* The account a token acts as, read from its `sub` claim without verifying the
|
|
45
|
+
* signature (it's our own token — we only need to know whose it is).
|
|
46
|
+
*
|
|
47
|
+
* This is the check that would have caught the worst auth failure this tool has
|
|
48
|
+
* had: a project token minted while a FAKE login was in place carries a phantom
|
|
49
|
+
* subject (`e2e-auth-user`, `e2e-user`, …) that is not a ugly.bot account at
|
|
50
|
+
* all. The token verifies, `dev` works, tests appear to sign in — and then every
|
|
51
|
+
* billable call for that project 402s, or worse, test accounts get created
|
|
52
|
+
* pointing at an account that cannot pay. Nothing in the failure names the
|
|
53
|
+
* token, so it has cost hours more than once.
|
|
54
|
+
*/
|
|
55
|
+
export declare function jwtSubject(token: string): string | null;
|
|
43
56
|
export declare function probeAuth(input: ProbeAuthInput): ProbeAuthResult;
|
|
44
57
|
//# sourceMappingURL=probeAuth.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probeAuth.d.ts","sourceRoot":"","sources":["../../src/cli/probeAuth.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uEAAuE;IACvE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,yCAAyC;IACzC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAyBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAazE;AAyCD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,
|
|
1
|
+
{"version":3,"file":"probeAuth.d.ts","sourceRoot":"","sources":["../../src/cli/probeAuth.ts"],"names":[],"mappings":"AAoBA,MAAM,MAAM,UAAU,GAAG,IAAI,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,CAAC;AAE1D,MAAM,WAAW,QAAQ;IACvB,MAAM,EAAE,UAAU,CAAC;IACnB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,GAAG,IAAI,CAAC;IACzB,uEAAuE;IACvE,OAAO,EAAE,OAAO,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,iEAAiE;IACjE,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,yCAAyC;IACzC,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB;;;;;;OAMG;IACH,UAAU,EAAE,OAAO,CAAC;IACpB,mDAAmD;IACnD,kBAAkB,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IACxC;;;;OAIG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;CACjC;AAyBD;;;;;;GAMG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,GAAG,SAAS,GAAG,SAAS,CAazE;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAWvD;AAyCD,wBAAgB,SAAS,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CA+MhE"}
|
package/dist/cli/probeAuth.js
CHANGED
|
@@ -57,6 +57,30 @@ export function inspectJwt(token) {
|
|
|
57
57
|
return 'unknown';
|
|
58
58
|
}
|
|
59
59
|
}
|
|
60
|
+
/**
|
|
61
|
+
* The account a token acts as, read from its `sub` claim without verifying the
|
|
62
|
+
* signature (it's our own token — we only need to know whose it is).
|
|
63
|
+
*
|
|
64
|
+
* This is the check that would have caught the worst auth failure this tool has
|
|
65
|
+
* had: a project token minted while a FAKE login was in place carries a phantom
|
|
66
|
+
* subject (`e2e-auth-user`, `e2e-user`, …) that is not a ugly.bot account at
|
|
67
|
+
* all. The token verifies, `dev` works, tests appear to sign in — and then every
|
|
68
|
+
* billable call for that project 402s, or worse, test accounts get created
|
|
69
|
+
* pointing at an account that cannot pay. Nothing in the failure names the
|
|
70
|
+
* token, so it has cost hours more than once.
|
|
71
|
+
*/
|
|
72
|
+
export function jwtSubject(token) {
|
|
73
|
+
const parts = token.split('.');
|
|
74
|
+
if (parts.length !== 3)
|
|
75
|
+
return null;
|
|
76
|
+
try {
|
|
77
|
+
const payload = JSON.parse(Buffer.from(parts[1], 'base64url').toString('utf-8'));
|
|
78
|
+
return typeof payload.sub === 'string' && payload.sub ? payload.sub : null;
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
return null;
|
|
82
|
+
}
|
|
83
|
+
}
|
|
60
84
|
function readGlobalAuth(homeDir) {
|
|
61
85
|
const file = path.join(homeDir, '.ugly-bot', 'auth.json');
|
|
62
86
|
const { data, malformed } = readJson(file);
|
|
@@ -219,6 +243,31 @@ export function probeAuth(input) {
|
|
|
219
243
|
});
|
|
220
244
|
}
|
|
221
245
|
}
|
|
246
|
+
// 2b. Does each project token actually act as YOU?
|
|
247
|
+
//
|
|
248
|
+
// A project token whose `sub` isn't your account is not a smaller problem
|
|
249
|
+
// than a missing one — it is a token that works everywhere except where it
|
|
250
|
+
// matters. `auth:create-bot` bills test accounts to that subject, so a
|
|
251
|
+
// phantom one produces exactly the symptom that started all this: accounts
|
|
252
|
+
// that look fine and can't spend.
|
|
253
|
+
if (projectId && globalAuth) {
|
|
254
|
+
for (const [label, token, file] of [
|
|
255
|
+
['auth (cloud)', cloudToken, `${projectId}.json`],
|
|
256
|
+
['auth (local)', localToken, `${projectId}.local.json`],
|
|
257
|
+
]) {
|
|
258
|
+
if (!token)
|
|
259
|
+
continue;
|
|
260
|
+
const sub = jwtSubject(token);
|
|
261
|
+
if (!sub || sub === globalAuth.userId)
|
|
262
|
+
continue;
|
|
263
|
+
lines.push({
|
|
264
|
+
status: 'error',
|
|
265
|
+
label,
|
|
266
|
+
detail: `token acts as "${sub}", not you (${globalAuth.userId}) — test accounts made with it bill an account you don't own`,
|
|
267
|
+
});
|
|
268
|
+
nextSteps.push(`Delete ~/.ugly-bot/${file} and re-run \`npx ugly-app dev\` (or \`login\`) to re-mint it as ${globalAuth.userId}`);
|
|
269
|
+
}
|
|
270
|
+
}
|
|
222
271
|
// 3. Agent-ready summary.
|
|
223
272
|
// For headless tooling, the global user token is what unblocks
|
|
224
273
|
// everything: project tokens are derived. If we're in local mode we
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"probeAuth.js","sourceRoot":"","sources":["../../src/cli/probeAuth.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"probeAuth.js","sourceRoot":"","sources":["../../src/cli/probeAuth.ts"],"names":[],"mappings":"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"}
|
package/dist/cli/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const CLI_VERSION = "0.1.
|
|
1
|
+
export declare const CLI_VERSION = "0.1.989";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/cli/version.js
CHANGED
|
@@ -4,6 +4,7 @@ import type { EditorMode } from './EditorModeToggle.js';
|
|
|
4
4
|
import type { HeadingLabels } from './ProseMirrorEditor/commands.js';
|
|
5
5
|
import type { HighlightActions } from './ProseMirrorEditor/FloatingToolbar.js';
|
|
6
6
|
import type { SpecialMentionItem } from './ProseMirrorEditor/plugins/mentionPlugin.js';
|
|
7
|
+
import type { SelectionAction } from '../shared/SelectionAction.js';
|
|
7
8
|
export declare function MarkdownEditor(props: MarkdownEditorProps): import("react").JSX.Element;
|
|
8
9
|
export interface MarkdownEditorFunctions {
|
|
9
10
|
focus: (selectStart: boolean) => void;
|
|
@@ -156,5 +157,10 @@ export interface MarkdownEditorProps {
|
|
|
156
157
|
* `{ 1: 'Title', 2: 'Chapter', 3: 'Section' }`. Levels left unmapped keep the
|
|
157
158
|
* generic `Heading N`. Purely cosmetic: the underlying markdown is unchanged. */
|
|
158
159
|
headingLabels?: HeadingLabels;
|
|
160
|
+
/** App-defined verbs for the selected text — e.g. Translate / Listen / Copy.
|
|
161
|
+
* They appear in the bubble toolbar AND the right-click menu, so an app
|
|
162
|
+
* declares each action once. The same array drives `SelectionActionBar` in
|
|
163
|
+
* read-only surfaces, giving one set of verbs across read and write. */
|
|
164
|
+
selectionActions?: readonly SelectionAction[];
|
|
159
165
|
}
|
|
160
166
|
//# sourceMappingURL=MarkdownEditor.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../../../src/markdown/client/MarkdownEditor.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAkB,MAAM,OAAO,CAAC;AACrD,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AACrD,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,wCAAwC,CAAC;AAC/E,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,8CAA8C,CAAC;
|
|
1
|
+
{"version":3,"file":"MarkdownEditor.d.ts","sourceRoot":"","sources":["../../../src/markdown/client/MarkdownEditor.tsx"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEditor.js","sourceRoot":"","sources":["../../../src/markdown/client/MarkdownEditor.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAgB,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"MarkdownEditor.js","sourceRoot":"","sources":["../../../src/markdown/client/MarkdownEditor.tsx"],"names":[],"mappings":";AAAA,OAAO,EAAgB,IAAI,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAQrD,MAAM,sBAAsB,GAAG,IAAI,CACjC,GAAG,EAAE,CAAC,MAAM,CAAC,6BAA6B,CAAC,CAC5C,CAAC;AAEF,MAAM,UAAU,cAAc,CAAC,KAA0B;IACvD,OAAO,CACL,KAAC,QAAQ,IAAC,QAAQ,EAAE,eAAO,YACzB,KAAC,sBAAsB,OAAK,KAAK,GAAI,GAC5B,CACZ,CAAC;AACJ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MarkdownEditorInternal.d.ts","sourceRoot":"","sources":["../../../src/markdown/client/MarkdownEditorInternal.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,qBAAqB,CAAC;AAyC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AA4C1D,OAAO,wCAAwC,CAAC;AAEhD,OAAO,0BAA0B,CAAC;AAoPlC;;GAEG;AACH,iBAAwB,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,+
|
|
1
|
+
{"version":3,"file":"MarkdownEditorInternal.d.ts","sourceRoot":"","sources":["../../../src/markdown/client/MarkdownEditorInternal.tsx"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,qBAAqB,CAAC;AAyC7B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AA4C1D,OAAO,wCAAwC,CAAC;AAEhD,OAAO,0BAA0B,CAAC;AAoPlC;;GAEG;AACH,iBAAwB,sBAAsB,CAAC,KAAK,EAAE,mBAAmB,+BA+rCxE;kBA/rCuB,sBAAsB;;;eAAtB,sBAAsB"}
|
|
@@ -1149,9 +1149,9 @@ export default function MarkdownEditorInternal(props) {
|
|
|
1149
1149
|
return (_jsxs("div", { ref: containerRef, style: {
|
|
1150
1150
|
minHeight: 14,
|
|
1151
1151
|
...(props.fillHeight ? { height: '100%' } : {}),
|
|
1152
|
-
}, children: [props.showToolbar && contextMenuPos == null && (_jsx(FloatingToolbar, { view: viewRef.current, editorState: editorState, disabled: props.disabled, limited: props.limitedToolbar, onLinkClick: undefined, highlightActions: props.highlightActions, onAnnotate: props.onAnnotate ? handleAnnotate : undefined, headingLabels: props.headingLabels })), props.showToolbar && (_jsx(SlashCommandMenu, { view: viewRef.current, editorState: editorState, onImageClick: props.onShowImagePicker ? handleImageClick : undefined, onAIAction: props.onAIAction ? handleAIAction : undefined, headingLabels: props.headingLabels })), _jsx(TableToolbar, { view: viewRef.current, editorState: editorState, disabled: props.disabled }), _jsx(EditorContextMenu, { view: viewRef.current, position: contextMenuPos, onClose: () => {
|
|
1152
|
+
}, children: [props.showToolbar && contextMenuPos == null && (_jsx(FloatingToolbar, { view: viewRef.current, editorState: editorState, disabled: props.disabled, limited: props.limitedToolbar, onLinkClick: undefined, highlightActions: props.highlightActions, onAnnotate: props.onAnnotate ? handleAnnotate : undefined, headingLabels: props.headingLabels, selectionActions: props.selectionActions })), props.showToolbar && (_jsx(SlashCommandMenu, { view: viewRef.current, editorState: editorState, onImageClick: props.onShowImagePicker ? handleImageClick : undefined, onAIAction: props.onAIAction ? handleAIAction : undefined, headingLabels: props.headingLabels })), _jsx(TableToolbar, { view: viewRef.current, editorState: editorState, disabled: props.disabled }), _jsx(EditorContextMenu, { view: viewRef.current, position: contextMenuPos, onClose: () => {
|
|
1153
1153
|
setContextMenuPos(null);
|
|
1154
|
-
}, onImageClick: props.onShowImagePicker ? handleImageClick : undefined, onLinkClick: undefined, onPlayFromHere: undefined, onAnnotate: props.onAnnotate ? handleAnnotate : undefined, highlightActions: props.highlightActions, headingLabels: props.headingLabels, onNewComment: isDefined(props.onCommentsChange)
|
|
1154
|
+
}, onImageClick: props.onShowImagePicker ? handleImageClick : undefined, onLinkClick: undefined, onPlayFromHere: undefined, onAnnotate: props.onAnnotate ? handleAnnotate : undefined, highlightActions: props.highlightActions, headingLabels: props.headingLabels, selectionActions: props.selectionActions, onNewComment: isDefined(props.onCommentsChange)
|
|
1155
1155
|
? (newId) => {
|
|
1156
1156
|
const newComment = {
|
|
1157
1157
|
id: newId,
|