@oddkin/ai 1.0.0-beta.0 → 1.0.0-beta.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.
Files changed (50) hide show
  1. package/README.md +2 -2
  2. package/agent/GUIDE.md +3 -11
  3. package/agent/kit.json +10 -10
  4. package/agent/llms.txt +1 -1
  5. package/agent/references/components/odd-action-approval.md +1 -5
  6. package/agent/references/components/odd-activity.md +1 -5
  7. package/agent/references/components/odd-ai-label.md +1 -5
  8. package/agent/references/components/odd-artifact.md +1 -5
  9. package/agent/references/components/odd-change-review.md +1 -5
  10. package/agent/references/components/odd-checkpoint.md +1 -5
  11. package/agent/references/components/odd-citation.md +1 -5
  12. package/agent/references/components/odd-context-picker.md +1 -5
  13. package/agent/references/components/odd-conversation.md +1 -5
  14. package/agent/references/components/odd-inline-assist.md +1 -5
  15. package/agent/references/components/odd-message-branch.md +1 -5
  16. package/agent/references/components/odd-message.md +1 -5
  17. package/agent/references/components/odd-model-select.md +1 -5
  18. package/agent/references/components/odd-prompt-input.md +1 -5
  19. package/agent/references/components/odd-question.md +1 -5
  20. package/agent/references/components/odd-response-feedback.md +1 -5
  21. package/agent/references/components/odd-response.md +1 -5
  22. package/agent/references/components/odd-sources.md +1 -5
  23. package/agent/references/components/odd-suggestions.md +1 -5
  24. package/agent/references/components/odd-task-plan.md +1 -5
  25. package/agent/references/components/odd-tool-call.md +1 -5
  26. package/agent/references/components/odd-transcript.md +1 -5
  27. package/agent/references/components/odd-usage-meter.md +1 -5
  28. package/agent/references/components/odd-voice-input.md +1 -5
  29. package/dist/artifact/artifact.styles.d.ts.map +1 -1
  30. package/dist/artifact/artifact.styles.js +5 -0
  31. package/dist/artifact/artifact.styles.js.map +1 -1
  32. package/dist/context-picker/context-picker.styles.d.ts.map +1 -1
  33. package/dist/context-picker/context-picker.styles.js +5 -0
  34. package/dist/context-picker/context-picker.styles.js.map +1 -1
  35. package/dist/controllers/conversation.d.ts.map +1 -1
  36. package/dist/controllers/conversation.js +9 -1
  37. package/dist/controllers/conversation.js.map +1 -1
  38. package/dist/inline-assist/inline-assist.styles.d.ts.map +1 -1
  39. package/dist/inline-assist/inline-assist.styles.js +2 -0
  40. package/dist/inline-assist/inline-assist.styles.js.map +1 -1
  41. package/dist/prod/artifact/artifact.styles.js +5 -0
  42. package/dist/prod/context-picker/context-picker.styles.js +5 -0
  43. package/dist/prod/controllers/conversation.js +5 -2
  44. package/dist/prod/inline-assist/inline-assist.styles.js +2 -0
  45. package/dist/prod/prompt-input/prompt-input.template.js +1 -1
  46. package/dist/prompt-input/prompt-input.template.d.ts.map +1 -1
  47. package/dist/prompt-input/prompt-input.template.js +3 -1
  48. package/dist/prompt-input/prompt-input.template.js.map +1 -1
  49. package/oddkin.metadata.json +923 -1344
  50. package/package.json +7 -5
package/README.md CHANGED
@@ -1,12 +1,12 @@
1
1
  # @oddkin/ai
2
2
 
3
- Optional AI interaction package: typed records, DOM-free controllers, stream adapters, and accessible `odd-*` elements for conversation interfaces, inline assistance, research tools, and agent workflows. No model calls, no storage, no third-party runtime dependencies.
3
+ Optional AI interaction package: typed records, DOM-free controllers, stream adapters, and `odd-*` elements for conversation interfaces, inline assistance, research tools, and agent workflows. No model calls, no storage, no third-party runtime dependencies. The AI demos are audited with axe-core in Chromium, Firefox, and WebKit; screen readers are not yet verified ([support policy](../../docs/support.md#accessibility)).
4
4
 
5
5
  **Status:** implemented and verified (IMPLEMENTATION_PLAN.md §5j). Contract: [ai-interaction.md](../../docs/architecture/ai-interaction.md). Decision: [ADR 0040](../../docs/architecture/decisions/0040-ai-interaction-package.md). Demos: [research assistant](../../examples/ai-research/), [inline writing assistant](../../examples/ai-writing/), [agent task panel](../../examples/ai-agent/).
6
6
 
7
7
  ## Install and register
8
8
 
9
- Depends on `@oddkin/core`, `@oddkin/tokens`, and `@oddkin/components`. Load a theme stylesheet (e.g. `@oddkin/tokens/css/default.css`). Register only what you use:
9
+ `@oddkin/core` and `@oddkin/components` are peer dependencies, which npm installs with it; with Yarn, add them yourself (`yarn add @oddkin/components @oddkin/core`). `@oddkin/tokens` is a dependency. Load a theme stylesheet (e.g. `@oddkin/tokens/css/default.css`). Register only what you use:
10
10
 
11
11
  ```js
12
12
  import '@oddkin/ai/define/conversation'; // also registers odd-message, odd-response, odd-tool-call, …
package/agent/GUIDE.md CHANGED
@@ -1,4 +1,4 @@
1
- # @oddkin/ai 1.0.0-beta.0: agent guide
1
+ # @oddkin/ai 1.0.0-beta.1: agent guide
2
2
 
3
3
  Generated from this package's published metadata when it was built (fingerprint in kit.json), so it matches the installed version. Read the reference for a component before using it.
4
4
 
@@ -6,6 +6,8 @@ Generated from this package's published metadata when it was built (fingerprint
6
6
 
7
7
  - Package `@oddkin/ai`, which depends on `@oddkin/components`, `@oddkin/core`, `@oddkin/tokens`.
8
8
  - Register an element once before using its tag: `import '@oddkin/ai/define/<name>';`, where `<name>` is the tag after its prefix (`<odd-action-approval>`: `import '@oddkin/ai/define/action-approval';`). Class exports are in each component reference.
9
+ - Link the theme's stylesheet once per document, `@oddkin/tokens/css/default.css`: the design tokens every component reads.
10
+ - Without a bundler, an import map must map every bare specifier a page loads, the packages' own imports included (`@oddkin/components/…`, `@oddkin/core/…`, `@oddkin/tokens/…`), to the file each package's `exports` names under the `default` condition. Never mix in a `development` build: it is a second copy of the package.
9
11
 
10
12
  ## Components
11
13
 
@@ -27,13 +29,3 @@ Choosing between them: references/choosing-components.md.
27
29
  - Recipes: references/recipes/action-approval.md, references/recipes/activity.md, references/recipes/ai-element.md, references/recipes/artifact.md, references/recipes/change-review.md, references/recipes/checkpoint.md, references/recipes/citation.md, references/recipes/context-picker.md, references/recipes/conversation.md, references/recipes/inline-assist.md, references/recipes/message.md, references/recipes/prompt-input.md, references/recipes/question.md, references/recipes/response-feedback.md, references/recipes/sources.md, references/recipes/suggestions.md, references/recipes/task-plan.md, references/recipes/tool-call.md, references/recipes/transcript.md, references/recipes/usage-meter.md, references/recipes/voice-input.md.
28
30
  - Models: references/models/oddkin.ai.approval.md, references/models/oddkin.ai.artifact.md, references/models/oddkin.ai.checkpoint.md, references/models/oddkin.ai.context-item.md, references/models/oddkin.ai.conversation.md, references/models/oddkin.ai.feedback.md, references/models/oddkin.ai.message.md, references/models/oddkin.ai.model-option.md, references/models/oddkin.ai.plan.md, references/models/oddkin.ai.question.md, references/models/oddkin.ai.suggestion.md, references/models/oddkin.ai.tool-call.md, references/models/oddkin.ai.transcript-segment.md, references/models/oddkin.ai.usage.md.
29
31
  - JSON keyed by stable id, shipped beside this kit: `@oddkin/ai/oddkin.metadata.json` (components, recipes, stylesheets, models), `@oddkin/ai/custom-elements.json`, and the theme's tokens in `@oddkin/tokens/inspect/default.json`.
30
-
31
- ## Workspace commands
32
-
33
- - build: `npm run build`
34
- - typecheck: `npm run typecheck`
35
- - test: `npm test`
36
- - e2e: `npm run test:e2e`
37
- - lint: `npm run lint`
38
- - verify: `npm run verify`
39
- - metadata: `npm run verify:metadata`
package/agent/kit.json CHANGED
@@ -2,30 +2,30 @@
2
2
  "schema": "https://oddkin.dev/schemas/agent-kit/v1.json",
3
3
  "library": {
4
4
  "name": "@oddkin/ai",
5
- "version": "1.0.0-beta.0"
5
+ "version": "1.0.0-beta.1"
6
6
  },
7
7
  "fingerprint": {
8
8
  "generator": {
9
- "name": "oddkin-agent-kit-pilot",
10
- "version": "0.0.0-pilot.af99be4d5faf"
9
+ "name": "@oddkin/analyzer/kit",
10
+ "version": "1.0.0-beta.1+49bd82ea5834"
11
11
  },
12
12
  "schemaVersion": 1,
13
13
  "packages": {
14
- "@oddkin/ai": "1.0.0-beta.0",
15
- "@oddkin/components": "1.0.0-beta.0",
16
- "@oddkin/core": "1.0.0-beta.0",
17
- "@oddkin/tokens": "1.0.0-beta.0"
14
+ "@oddkin/ai": "1.0.0-beta.1",
15
+ "@oddkin/tokens": "1.0.0-beta.1",
16
+ "@oddkin/components": "1.0.0-beta.1",
17
+ "@oddkin/core": "1.0.0-beta.1"
18
18
  },
19
- "inputs": "sha256-729a37e207a109509e85c7160a9d9866cb11f1ec593575ed36218c0c1e84579c"
19
+ "inputs": "sha256-741221bff86df8859bec45486a8847cd68572eb09ff425b0f45b78c9497d9552"
20
20
  },
21
21
  "metadata": {
22
22
  "file": "oddkin.metadata.json",
23
- "sha256": "4c0eb0c400f7c2800797f72bfa4ff87bcc2cfc735a6db8ae977867979e888367"
23
+ "sha256": "4bbe6e3db9a09d39cd4688b2f88e81c5d41e3b9f79689cbdd5ca312433602521"
24
24
  },
25
25
  "guide": {
26
26
  "path": "GUIDE.md",
27
27
  "budgetBytes": 8192,
28
- "bytes": 7108
28
+ "bytes": 7347
29
29
  },
30
30
  "entries": [
31
31
  {
package/agent/llms.txt CHANGED
@@ -1,4 +1,4 @@
1
- # @oddkin/ai 1.0.0-beta.0
1
+ # @oddkin/ai 1.0.0-beta.1
2
2
 
3
3
  > Optional AI interaction elements, headless controllers, and stream adapters for conversation, inline assistance, research, and agent workflows.
4
4
 
@@ -1,6 +1,6 @@
1
1
  # `<odd-action-approval>` (OddkinActionApproval)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  Review an action, its target, and its changes, then approve or reject it. The decision is a
6
6
  request: the element shows it as pending until the authoritative record changes, refuses
@@ -75,7 +75,3 @@ None.
75
75
  - `contract:core/update-complete`
76
76
  - `contract:core/scope`
77
77
  - `contract:core/composition`
78
-
79
- ## Verified
80
-
81
- - 17 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-activity>` (OddkinActivity)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  Status of the current attempt, separating the work's state from the connection: active tools,
6
6
  approvals, stopping, disconnection, and interruption, with the recovery actions the adapter
@@ -72,7 +72,3 @@ None.
72
72
  - `contract:core/update-complete`
73
73
  - `contract:core/scope`
74
74
  - `contract:core/composition`
75
-
76
- ## Verified
77
-
78
- - 13 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-ai-label>` (OddkinAiLabel)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  A provenance label for generated or assisted content, with the origin details the application
6
6
  supplied in a native disclosure. Shows information as supplied; it never asserts accuracy.
@@ -67,7 +67,3 @@ None.
67
67
  - `contract:core/update-complete`
68
68
  - `contract:core/scope`
69
69
  - `contract:core/composition`
70
-
71
- ## Verified
72
-
73
- - 6 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-artifact>` (OddkinArtifact)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  A generated artifact with a stable identity across revisions: revision history, preview and
6
6
  source modes, application-provided renderers, and export actions. Copy and the default
@@ -82,7 +82,3 @@ Explained mistakes (never use these as patterns):
82
82
  - `contract:core/update-complete`
83
83
  - `contract:core/scope`
84
84
  - `contract:core/composition`
85
-
86
- ## Verified
87
-
88
- - 24 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-change-review>` (OddkinChangeReview)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  Review proposed edits as before/after or inline word or line diffs; accept, reject, or undo
6
6
  each one. Every action is a request; statuses (applied, stale, undone) come from the records,
@@ -75,7 +75,3 @@ None.
75
75
  - `contract:core/update-complete`
76
76
  - `contract:core/scope`
77
77
  - `contract:core/composition`
78
-
79
- ## Verified
80
-
81
- - 28 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-checkpoint>` (OddkinCheckpoint)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  A restore point: what it restores, a confirmed restore request, pending work, and the outcome
6
6
  the application confirms. Success is shown only when the record says `restored`.
@@ -72,7 +72,3 @@ None.
72
72
  - `contract:core/update-complete`
73
73
  - `contract:core/scope`
74
74
  - `contract:core/composition`
75
-
76
- ## Verified
77
-
78
- - 15 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-citation>` (OddkinCitation)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  An inline citation marker with an accessible preview of its source. A missing source record
6
6
  renders as an unresolved reference; nothing is invented.
@@ -70,7 +70,3 @@ None.
70
70
  - `contract:core/update-complete`
71
71
  - `contract:core/scope`
72
72
  - `contract:core/composition`
73
-
74
- ## Verified
75
-
76
- - 19 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-context-picker>` (OddkinContextPicker)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  Select, inspect, and remove the context sent with a request: files, documents, links, and
6
6
  selected text. Adding is a request; items appear when the host adds their records.
@@ -72,7 +72,3 @@ None.
72
72
  - `contract:core/update-complete`
73
73
  - `contract:core/scope`
74
74
  - `contract:core/composition`
75
-
76
- ## Verified
77
-
78
- - 26 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-conversation>` (OddkinConversation)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  A conversation surface: messages as an ARIA feed, history loading, a follow-latest scrolling
6
6
  policy that respects reading earlier content, a visible-anchor guarantee when history is
@@ -100,7 +100,3 @@ None.
100
100
  - `contract:core/update-complete`
101
101
  - `contract:core/scope`
102
102
  - `contract:core/composition`
103
-
104
- ## Verified
105
-
106
- - 29 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-inline-assist>` (OddkinInlineAssist)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  Selection-based assistance: rewrite, explain, summarize, translate, and expand (or host
6
6
  actions). Requests carry the selection with its content revision, so results can be checked
@@ -78,7 +78,3 @@ None.
78
78
  - `contract:core/update-complete`
79
79
  - `contract:core/scope`
80
80
  - `contract:core/composition`
81
-
82
- ## Verified
83
-
84
- - 29 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-message-branch>` (OddkinMessageBranch)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  Navigate between alternative versions of a message (regenerated answers, edited prompts).
6
6
  Every version stays in history; switching only changes which branch is shown.
@@ -67,7 +67,3 @@ None.
67
67
  - `contract:core/update-complete`
68
68
  - `contract:core/scope`
69
69
  - `contract:core/composition`
70
-
71
- ## Verified
72
-
73
- - 12 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-message>` (OddkinMessage)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  One message: its role, structured parts in order (text, reasoning, files, sources, tools,
6
6
  approvals, artifacts, data), and message actions (copy, regenerate, edit, versions,
@@ -93,7 +93,3 @@ None.
93
93
  - `contract:core/update-complete`
94
94
  - `contract:core/scope`
95
95
  - `contract:core/composition`
96
-
97
- ## Verified
98
-
99
- - 23 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-model-select>` (OddkinModelSelect)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  Choose among application-provided models, with capabilities and availability. Built on a
6
6
  native `<select>`; unavailable models are listed but disabled, with the host's reason.
@@ -78,7 +78,3 @@ None.
78
78
  - `contract:core/update-complete`
79
79
  - `contract:core/scope`
80
80
  - `contract:core/composition`
81
-
82
- ## Verified
83
-
84
- - 23 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-prompt-input>` (OddkinPromptInput)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  The prompt composer: an expanding text area with attachments (button, paste, and drop),
6
6
  toolbar slots, send and stop, and a draft that survives failures. Submission is a cancelable
@@ -110,7 +110,3 @@ Explained mistakes (never use these as patterns):
110
110
  - `contract:core/update-complete`
111
111
  - `contract:core/scope`
112
112
  - `contract:core/composition`
113
-
114
- ## Verified
115
-
116
- - 67 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-question>` (OddkinQuestion)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  A clarifying question from an assistant or agent: choices, a structured form, or free text,
6
6
  with an optional custom answer. Submitted, skipped, expired, and failed states come from the
@@ -72,7 +72,3 @@ None.
72
72
  - `contract:core/update-complete`
73
73
  - `contract:core/scope`
74
74
  - `contract:core/composition`
75
-
76
- ## Verified
77
-
78
- - 15 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-response-feedback>` (OddkinResponseFeedback)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  Feedback on one response: a rating, optional reasons and comment, a pending state, and the
6
6
  confirmed outcome from the feedback record.
@@ -73,7 +73,3 @@ None.
73
73
  - `contract:core/update-complete`
74
74
  - `contract:core/scope`
75
75
  - `contract:core/composition`
76
-
77
- ## Verified
78
-
79
- - 24 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-response>` (OddkinResponse)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  Streamed rich text (Oddkin Markdown) with partial-output, completion, interruption, and error
6
6
  states. The canonical source is `text`; rendering repairs incomplete syntax for display only,
@@ -88,7 +88,3 @@ None.
88
88
  - `contract:core/update-complete`
89
89
  - `contract:core/scope`
90
90
  - `contract:core/composition`
91
-
92
- ## Verified
93
-
94
- - 21 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-sources>` (OddkinSources)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  The list of sources behind a response. Each entry is a navigation target for citations.
6
6
 
@@ -74,7 +74,3 @@ Explained mistakes (never use these as patterns):
74
74
  - `contract:core/update-complete`
75
75
  - `contract:core/scope`
76
76
  - `contract:core/composition`
77
-
78
- ## Verified
79
-
80
- - 11 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-suggestions>` (OddkinSuggestions)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  Suggested prompts. Activating a suggestion inserts it for editing; the separate send button
6
6
  submits it directly. The two intents are distinct events.
@@ -70,7 +70,3 @@ None.
70
70
  - `contract:core/update-complete`
71
71
  - `contract:core/scope`
72
72
  - `contract:core/composition`
73
-
74
- ## Verified
75
-
76
- - 20 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-task-plan>` (OddkinTaskPlan)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  An agent's plan: ordered steps, parallel tasks within a step, blockers, progress, and requests
6
6
  for input.
@@ -67,7 +67,3 @@ None.
67
67
  - `contract:core/update-complete`
68
68
  - `contract:core/scope`
69
69
  - `contract:core/composition`
70
-
71
- ## Verified
72
-
73
- - 8 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-tool-call>` (OddkinToolCall)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  One tool call: identity, purpose, streamed arguments, execution state, result or failure, and
6
6
  the recovery actions the host supports. Argument generation, approval, and execution are
@@ -76,7 +76,3 @@ None.
76
76
  - `contract:core/update-complete`
77
77
  - `contract:core/scope`
78
78
  - `contract:core/composition`
79
-
80
- ## Verified
81
-
82
- - 12 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-transcript>` (OddkinTranscript)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  A transcript with final segments (optionally editable) and interim text that may still change.
6
6
 
@@ -67,7 +67,3 @@ None.
67
67
  - `contract:core/update-complete`
68
68
  - `contract:core/scope`
69
69
  - `contract:core/composition`
70
-
71
- ## Verified
72
-
73
- - 14 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-usage-meter>` (OddkinUsageMeter)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  Token, context, quota, and cost figures exactly as the host supplies them, each marked
6
6
  measured, estimated, or unknown. Never computes or guesses a value.
@@ -65,7 +65,3 @@ None.
65
65
  - `contract:core/update-complete`
66
66
  - `contract:core/scope`
67
67
  - `contract:core/composition`
68
-
69
- ## Verified
70
-
71
- - 10 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1,6 +1,6 @@
1
1
  # `<odd-voice-input>` (OddkinVoiceInput)
2
2
 
3
- Package `@oddkin/ai` 1.0.0-beta.0 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
3
+ Package `@oddkin/ai` 1.0.0-beta.1 · category AI. Generated from `custom-elements.json` and `oddkin.metadata.json`; facts are extracted unless marked authored or verified.
4
4
 
5
5
  Voice capture with transcription: start, stop (keep), and cancel (discard), with permission,
6
6
  device, interruption, and processing states. Uses a replaceable `VoiceAdapter`; an element
@@ -74,7 +74,3 @@ None.
74
74
  - `contract:core/update-complete`
75
75
  - `contract:core/scope`
76
76
  - `contract:core/composition`
77
-
78
- ## Verified
79
-
80
- - 15 facts verified by `oddkin.cem-contract@1.0.0` in chromium 156.0.8078.4, firefox 157.0, webkit 27.2 (packages/ai/test/contract.browser.test.ts, 2026-10-28)
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.styles.d.ts","sourceRoot":"","sources":["../../src/artifact/artifact.styles.ts"],"names":[],"mappings":"AAIA,oEAAoE;AACpE,eAAO,MAAM,cAAc,yCA2D1B,CAAC"}
1
+ {"version":3,"file":"artifact.styles.d.ts","sourceRoot":"","sources":["../../src/artifact/artifact.styles.ts"],"names":[],"mappings":"AAIA,oEAAoE;AACpE,eAAO,MAAM,cAAc,yCAgE1B,CAAC"}
@@ -18,7 +18,12 @@ export const artifactStyles = css `
18
18
  p {
19
19
  margin: 0;
20
20
  }
21
+ .revision {
22
+ min-inline-size: 0;
23
+ }
21
24
  select {
25
+ /* Never wider than the header: a wide font in a narrow container clips the label instead. */
26
+ max-inline-size: 100%;
22
27
  min-block-size: ${token('target.min')};
23
28
  border: ${token('border.width.default')} solid ${token('color.border.default')};
24
29
  border-radius: ${token('control.radius')};
@@ -1 +1 @@
1
- {"version":3,"file":"artifact.styles.js","sourceRoot":"","sources":["../../src/artifact/artifact.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;IAC7B,oBAAoB;;eAET,KAAK,CAAC,UAAU,CAAC;cAClB,KAAK,CAAC,sBAAsB,CAAC,UAAU,KAAK,CAAC,sBAAsB,CAAC;qBAC7D,KAAK,CAAC,WAAW,CAAC;kBACrB,KAAK,CAAC,uBAAuB,CAAC;;;;;mBAK7B,KAAK,CAAC,sBAAsB,CAAC;;;;;;sBAM1B,KAAK,CAAC,YAAY,CAAC;cAC3B,KAAK,CAAC,sBAAsB,CAAC,UAAU,KAAK,CAAC,sBAAsB,CAAC;qBAC7D,KAAK,CAAC,gBAAgB,CAAC;kBAC1B,KAAK,CAAC,uBAAuB,CAAC;;;iBAG/B,KAAK,CAAC,cAAc,CAAC;;;;;;;;;;;;eAYvB,KAAK,CAAC,UAAU,CAAC;;qBAEX,KAAK,CAAC,WAAW,CAAC;kBACrB,KAAK,CAAC,sBAAsB,CAAC;mBAC5B,KAAK,CAAC,kBAAkB,CAAC;iBAC3B,KAAK,CAAC,cAAc,CAAC;;;;;;;;aAQzB,KAAK,CAAC,YAAY,CAAC;;;aAGnB,KAAK,CAAC,YAAY,CAAC;;;aAGnB,KAAK,CAAC,0BAA0B,CAAC;;;aAGjC,KAAK,CAAC,sBAAsB,CAAC;;CAEzC,CAAC"}
1
+ {"version":3,"file":"artifact.styles.js","sourceRoot":"","sources":["../../src/artifact/artifact.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAEnE,oEAAoE;AACpE,MAAM,CAAC,MAAM,cAAc,GAAG,GAAG,CAAA;IAC7B,oBAAoB;;eAET,KAAK,CAAC,UAAU,CAAC;cAClB,KAAK,CAAC,sBAAsB,CAAC,UAAU,KAAK,CAAC,sBAAsB,CAAC;qBAC7D,KAAK,CAAC,WAAW,CAAC;kBACrB,KAAK,CAAC,uBAAuB,CAAC;;;;;mBAK7B,KAAK,CAAC,sBAAsB,CAAC;;;;;;;;;;;sBAW1B,KAAK,CAAC,YAAY,CAAC;cAC3B,KAAK,CAAC,sBAAsB,CAAC,UAAU,KAAK,CAAC,sBAAsB,CAAC;qBAC7D,KAAK,CAAC,gBAAgB,CAAC;kBAC1B,KAAK,CAAC,uBAAuB,CAAC;;;iBAG/B,KAAK,CAAC,cAAc,CAAC;;;;;;;;;;;;eAYvB,KAAK,CAAC,UAAU,CAAC;;qBAEX,KAAK,CAAC,WAAW,CAAC;kBACrB,KAAK,CAAC,sBAAsB,CAAC;mBAC5B,KAAK,CAAC,kBAAkB,CAAC;iBAC3B,KAAK,CAAC,cAAc,CAAC;;;;;;;;aAQzB,KAAK,CAAC,YAAY,CAAC;;;aAGnB,KAAK,CAAC,YAAY,CAAC;;;aAGnB,KAAK,CAAC,0BAA0B,CAAC;;;aAGjC,KAAK,CAAC,sBAAsB,CAAC;;CAEzC,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"context-picker.styles.d.ts","sourceRoot":"","sources":["../../src/context-picker/context-picker.styles.ts"],"names":[],"mappings":"AAIA,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,yCAyC/B,CAAC"}
1
+ {"version":3,"file":"context-picker.styles.d.ts","sourceRoot":"","sources":["../../src/context-picker/context-picker.styles.ts"],"names":[],"mappings":"AAIA,0EAA0E;AAC1E,eAAO,MAAM,mBAAmB,yCA8C/B,CAAC"}
@@ -34,7 +34,12 @@ export const contextPickerStyles = css `
34
34
  font-size: ${token('font.size.xs')};
35
35
  white-space: pre-wrap;
36
36
  }
37
+ .url > label {
38
+ min-inline-size: 0;
39
+ }
37
40
  input[type='url'] {
41
+ /* Its own width, but never wider than the form (narrow containers, wide fonts). */
42
+ max-inline-size: 100%;
38
43
  min-block-size: ${token('target.min')};
39
44
  padding-inline: ${token('space.xs')};
40
45
  border: ${token('border.width.default')} solid ${token('color.border.default')};
@@ -1 +1 @@
1
- {"version":3,"file":"context-picker.styles.js","sourceRoot":"","sources":["../../src/context-picker/context-picker.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;IAClC,yBAAyB;;;;;;;;;;eAUd,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC;cACxC,KAAK,CAAC,sBAAsB,CAAC,UAAU,KAAK,CAAC,sBAAsB,CAAC;qBAC7D,KAAK,CAAC,WAAW,CAAC;kBACrB,KAAK,CAAC,uBAAuB,CAAC;;;;;;;iBAO/B,KAAK,CAAC,cAAc,CAAC;;;;;cAKxB,KAAK,CAAC,WAAW,CAAC;;mBAEb,KAAK,CAAC,kBAAkB,CAAC;iBAC3B,KAAK,CAAC,cAAc,CAAC;;;;sBAIhB,KAAK,CAAC,YAAY,CAAC;sBACnB,KAAK,CAAC,UAAU,CAAC;cACzB,KAAK,CAAC,sBAAsB,CAAC,UAAU,KAAK,CAAC,sBAAsB,CAAC;qBAC7D,KAAK,CAAC,gBAAgB,CAAC;kBAC1B,KAAK,CAAC,uBAAuB,CAAC;;;;CAI/C,CAAC"}
1
+ {"version":3,"file":"context-picker.styles.js","sourceRoot":"","sources":["../../src/context-picker/context-picker.styles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,qBAAqB,CAAC;AAC1C,OAAO,EAAE,KAAK,EAAE,MAAM,qBAAqB,CAAC;AAC5C,OAAO,EAAE,yBAAyB,EAAE,MAAM,mCAAmC,CAAC;AAE9E,0EAA0E;AAC1E,MAAM,CAAC,MAAM,mBAAmB,GAAG,GAAG,CAAA;IAClC,yBAAyB;;;;;;;;;;eAUd,KAAK,CAAC,WAAW,CAAC,IAAI,KAAK,CAAC,UAAU,CAAC;cACxC,KAAK,CAAC,sBAAsB,CAAC,UAAU,KAAK,CAAC,sBAAsB,CAAC;qBAC7D,KAAK,CAAC,WAAW,CAAC;kBACrB,KAAK,CAAC,uBAAuB,CAAC;;;;;;;iBAO/B,KAAK,CAAC,cAAc,CAAC;;;;;cAKxB,KAAK,CAAC,WAAW,CAAC;;mBAEb,KAAK,CAAC,kBAAkB,CAAC;iBAC3B,KAAK,CAAC,cAAc,CAAC;;;;;;;;;sBAShB,KAAK,CAAC,YAAY,CAAC;sBACnB,KAAK,CAAC,UAAU,CAAC;cACzB,KAAK,CAAC,sBAAsB,CAAC,UAAU,KAAK,CAAC,sBAAsB,CAAC;qBAC7D,KAAK,CAAC,gBAAgB,CAAC;kBAC1B,KAAK,CAAC,uBAAuB,CAAC;;;;CAI/C,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/controllers/conversation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"conversation.d.ts","sourceRoot":"","sources":["../../src/controllers/conversation.ts"],"names":[],"mappings":"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"}
@@ -357,8 +357,12 @@ export class ConversationController {
357
357
  const next = applyStopOutcome(a.status, outcome);
358
358
  return { ...a, ...next };
359
359
  });
360
- if (outcome === 'cancelled')
360
+ if (outcome === 'cancelled') {
361
+ // The stream's own end may never arrive now: its events are dropped from here on.
362
+ if (this.#state.peek().attempts[attemptId]?.status === 'cancelled')
363
+ this.#settle(attemptId, 'cancelled');
361
364
  this.#sinks.get(attemptId)?._invalidate();
365
+ }
362
366
  return outcome === 'rejected' ? { ok: false, reason: 'rejected' } : { ok: true, attemptId };
363
367
  }
364
368
  /**
@@ -846,6 +850,10 @@ export class ConversationController {
846
850
  ...(error ? { error } : {}),
847
851
  };
848
852
  });
853
+ this.#settle(attemptId, status);
854
+ }
855
+ /** An attempt that ended: its message parts stop streaming, and when cancelled or failed, its tools. */
856
+ #settle(attemptId, status) {
849
857
  const attempt = this.#state.peek().attempts[attemptId];
850
858
  if (!attempt)
851
859
  return;