@nonoun/native-chat 0.5.16 → 0.5.21

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 (88) hide show
  1. package/README.md +51 -0
  2. package/dist/adapter-mock-DQ_CxuNu.js +845 -0
  3. package/dist/avatar/chat-avatar-element.d.ts +18 -0
  4. package/dist/avatar/chat-avatar-element.d.ts.map +1 -0
  5. package/dist/avatar/index.d.ts +2 -0
  6. package/dist/avatar/index.d.ts.map +1 -0
  7. package/dist/avatar/n-chat-avatar.d.ts +2 -0
  8. package/dist/avatar/n-chat-avatar.d.ts.map +1 -0
  9. package/dist/chat-input-element.d.ts +32 -0
  10. package/dist/chat-input-element.d.ts.map +1 -0
  11. package/dist/{chat-input-structured-element-C_5MDbpb.js → chat-input-structured-element-Xm4nCA2K.js} +508 -241
  12. package/dist/chat-panel-element.d.ts +100 -0
  13. package/dist/chat-panel-element.d.ts.map +1 -0
  14. package/dist/feed/chat-feed-element.d.ts +48 -0
  15. package/dist/feed/chat-feed-element.d.ts.map +1 -0
  16. package/dist/feed/index.d.ts +2 -0
  17. package/dist/feed/index.d.ts.map +1 -0
  18. package/dist/feed/n-chat-feed.d.ts +2 -0
  19. package/dist/feed/n-chat-feed.d.ts.map +1 -0
  20. package/dist/gateway/adapter-chatgpt.d.ts +67 -0
  21. package/dist/gateway/adapter-chatgpt.d.ts.map +1 -0
  22. package/dist/gateway/adapter-claude.d.ts +68 -0
  23. package/dist/gateway/adapter-claude.d.ts.map +1 -0
  24. package/dist/gateway/adapter-mock.d.ts +3 -0
  25. package/dist/gateway/adapter-mock.d.ts.map +1 -0
  26. package/dist/gateway/adapter.d.ts +71 -0
  27. package/dist/gateway/adapter.d.ts.map +1 -0
  28. package/dist/gateway/controller.d.ts +46 -0
  29. package/dist/gateway/controller.d.ts.map +1 -0
  30. package/dist/gateway/index.d.ts +10 -0
  31. package/dist/gateway/index.d.ts.map +1 -0
  32. package/dist/gateway/runtime.d.ts +53 -0
  33. package/dist/gateway/runtime.d.ts.map +1 -0
  34. package/dist/gateway/types.d.ts +73 -0
  35. package/dist/gateway/types.d.ts.map +1 -0
  36. package/dist/gateway.d.ts +2 -0
  37. package/dist/gateway.d.ts.map +1 -0
  38. package/dist/gateway.js +33 -0
  39. package/dist/index.d.ts +18 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/message/chat-input-structured-element.d.ts +43 -0
  42. package/dist/message/chat-input-structured-element.d.ts.map +1 -0
  43. package/dist/message/chat-message-activity-element.d.ts +32 -0
  44. package/dist/message/chat-message-activity-element.d.ts.map +1 -0
  45. package/dist/message/chat-message-element.d.ts +44 -0
  46. package/dist/message/chat-message-element.d.ts.map +1 -0
  47. package/dist/message/chat-message-genui-element.d.ts +45 -0
  48. package/dist/message/chat-message-genui-element.d.ts.map +1 -0
  49. package/dist/message/chat-message-seed-element.d.ts +33 -0
  50. package/dist/message/chat-message-seed-element.d.ts.map +1 -0
  51. package/dist/message/chat-message-text-element.d.ts +37 -0
  52. package/dist/message/chat-message-text-element.d.ts.map +1 -0
  53. package/dist/message/chat-messages-element.d.ts +39 -0
  54. package/dist/message/chat-messages-element.d.ts.map +1 -0
  55. package/dist/message/index.d.ts +8 -0
  56. package/dist/message/index.d.ts.map +1 -0
  57. package/dist/message/n-chat-message.d.ts +2 -0
  58. package/dist/message/n-chat-message.d.ts.map +1 -0
  59. package/dist/native-chat.css +116 -48
  60. package/dist/native-chat.js +1 -1
  61. package/dist/register.d.ts +13 -0
  62. package/dist/register.d.ts.map +1 -0
  63. package/dist/register.js +3 -3
  64. package/dist/stream/classify.d.ts +19 -0
  65. package/dist/stream/classify.d.ts.map +1 -0
  66. package/dist/stream/create-transport.d.ts +19 -0
  67. package/dist/stream/create-transport.d.ts.map +1 -0
  68. package/dist/stream/index.d.ts +9 -0
  69. package/dist/stream/index.d.ts.map +1 -0
  70. package/dist/stream/parse-json.d.ts +9 -0
  71. package/dist/stream/parse-json.d.ts.map +1 -0
  72. package/dist/stream/parse-ndjson.d.ts +9 -0
  73. package/dist/stream/parse-ndjson.d.ts.map +1 -0
  74. package/dist/stream/parse-sse.d.ts +9 -0
  75. package/dist/stream/parse-sse.d.ts.map +1 -0
  76. package/dist/stream/types.d.ts +42 -0
  77. package/dist/stream/types.d.ts.map +1 -0
  78. package/dist/telemetry/emitter.d.ts +20 -0
  79. package/dist/telemetry/emitter.d.ts.map +1 -0
  80. package/dist/telemetry/events.d.ts +11 -0
  81. package/dist/telemetry/events.d.ts.map +1 -0
  82. package/dist/telemetry/index.d.ts +5 -0
  83. package/dist/telemetry/index.d.ts.map +1 -0
  84. package/dist/telemetry/redactor.d.ts +17 -0
  85. package/dist/telemetry/redactor.d.ts.map +1 -0
  86. package/dist/telemetry/types.d.ts +27 -0
  87. package/dist/telemetry/types.d.ts.map +1 -0
  88. package/package.json +5 -1
package/README.md CHANGED
@@ -24,6 +24,53 @@ npm install @nonoun/native-chat @nonoun/native-ui
24
24
  </native-chat-panel>
25
25
  ```
26
26
 
27
+ ## Architecture
28
+
29
+ Components follow three patterns:
30
+
31
+ | Pattern | Elements | Description |
32
+ |---------|----------|-------------|
33
+ | **Orchestrator** | `native-chat-panel`, `n-chat-input` | Stamp their own children (header, feed, composer) and manage lifecycle. Host writes a single tag; JS builds the tree. |
34
+ | **Container** | `n-chat-feed`, `n-chat-messages`, `n-chat-message` | Arrange author-provided or panel-stamped children. CSS layout works without JS; JS adds auto-scroll, MutationObserver routing, action toolbars. |
35
+ | **Renderer** | `n-chat-message-text`, `n-chat-message-activity`, `n-chat-message-seed`, `n-chat-message-genui`, `n-chat-input-structured`, `n-chat-avatar` | Transform data (markdown, JSON, schema) into DOM. JS-essential — content is dynamic and stream-driven. |
36
+
37
+ Chat is a **real-time, stream-driven UI** — JavaScript is fundamental, not optional. See `docs/PRINCIPLES.md` for the exception clause covering interactive components.
38
+
39
+ ## Gateway Mode (Claude + ChatGPT)
40
+
41
+ `native-chat-panel` can run fully managed send/stream behavior when `gateway` and `gateway-url` are set. All configuration is attribute-driven — no JavaScript required:
42
+
43
+ ```html
44
+ <native-chat-panel
45
+ gateway="claude"
46
+ gateway-url="/api/anthropic"
47
+ model="claude-haiku-4-5-20251001"
48
+ models="claude-haiku-4-5-20251001,claude-sonnet-4-6-20250514,gpt-4.1-mini,gpt-4.1"
49
+ gateway-urls='{"claude":"/api/anthropic","gpt":"/api/openai"}'
50
+ open
51
+ ></native-chat-panel>
52
+ ```
53
+
54
+ The `models` attribute accepts a comma-separated list of model IDs. The `gateway-urls` attribute is a JSON map of provider prefixes to URLs — when the user selects a model, the panel auto-resolves the correct gateway and URL from the prefix (e.g., `gpt-4.1` matches the `gpt` prefix → switches to `/api/openai`).
55
+
56
+ For advanced configuration, use JS properties:
57
+
58
+ ```ts
59
+ const panel = document.querySelector('native-chat-panel');
60
+ panel.gatewayConfig = { maxTokens: 1024 };
61
+ ```
62
+
63
+ ### Required server routes
64
+
65
+ Use first-party backend routes in production (do not call providers directly from browser):
66
+
67
+ - `POST /api/anthropic/messages`
68
+ - `GET /api/anthropic/models`
69
+ - `POST /api/openai/chat/completions`
70
+ - `GET /api/openai/models`
71
+
72
+ Provider keys must stay server-side.
73
+
27
74
  ## Components
28
75
 
29
76
  | Element | Description |
@@ -323,6 +370,10 @@ import type {
323
370
  import { renderMarkdown, renderInline, sanitizeHtml } from '@nonoun/native-chat';
324
371
  ```
325
372
 
373
+ ## Astro Integration
374
+
375
+ See the [Astro + native-chat-panel Playbook](../../docs/ASTRO-CHAT.md) for the canonical Astro recipe: CSS load order, registration, event wiring, View Transitions, and troubleshooting.
376
+
326
377
  ## Peer Dependency
327
378
 
328
379
  Requires `@nonoun/native-ui >= 0.6.0`.