arcane-os 0.5.9 → 0.5.11
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 +28 -0
- package/README.md +117 -26
- package/browser-runtime/ai/browser-speech-providers.mjs +1 -1
- package/browser-runtime/ai/browser-wasm-llm-provider.mjs +63 -39
- package/docs/architecture.md +303 -0
- package/docs/compatibility.md +38 -0
- package/docs/event-manager.md +263 -0
- package/docs/platform-targets.md +104 -0
- package/docs/publishing.md +126 -0
- package/docs/reference/README.md +206 -0
- package/docs/reference/ai/browser-speech.md +813 -0
- package/docs/reference/ai/browser-wasm.md +637 -0
- package/docs/reference/ai/twin-cloud.md +156 -0
- package/docs/reference/arcane-ollama.md +288 -0
- package/docs/reference/availability-and-normalization.md +224 -0
- package/docs/reference/behavioral-testing.md +129 -0
- package/docs/reference/cli.md +820 -0
- package/docs/reference/core/README.md +61 -0
- package/docs/reference/core/arcane-ai-contracts.md +907 -0
- package/docs/reference/core/arcane-api.md +601 -0
- package/docs/reference/core/arcane-entities.md +59 -0
- package/docs/reference/core/arcane-events.md +134 -0
- package/docs/reference/core/ollama-module.md +181 -0
- package/docs/reference/core/reference/arcane-api/ai-and-ollama.md +1909 -0
- package/docs/reference/core/reference/arcane-api/applications-terminal-capabilities.md +1057 -0
- package/docs/reference/core/reference/arcane-api/core-and-events.md +320 -0
- package/docs/reference/core/reference/arcane-api/filesystem-storage-preferences-appearance.md +610 -0
- package/docs/reference/core/reference/arcane-api/namespaces.md +1157 -0
- package/docs/reference/core/reference/arcane-api/platform-installation-users-system.md +1423 -0
- package/docs/reference/core/reference/arcane-api/session-provisioning-diagnostics-development.md +315 -0
- package/docs/reference/event-manager.md +1409 -0
- package/docs/reference/inventory/package-api.json +3194 -0
- package/docs/reference/inventory/runtime-components.json +1015 -0
- package/docs/reference/inventory/runtime-entities.json +25 -0
- package/docs/reference/inventory/runtime-modules.json +1367 -0
- package/docs/reference/mail.md +309 -0
- package/docs/reference/protocols.md +749 -0
- package/docs/reference/runtime-components.md +1529 -0
- package/docs/reference/runtime-entities.md +305 -0
- package/docs/reference/runtime-modules.md +3275 -0
- package/docs/reference/sdk-api.md +6733 -0
- package/docs/roadmap.md +79 -0
- package/docs/work-amplification.md +66 -0
- package/examples/wasm-ai-demo/README.md +80 -0
- package/examples/wasm-ai-demo/app.js +787 -0
- package/examples/wasm-ai-demo/index.html +343 -0
- package/examples/wasm-ai-demo/profile-tools.js +217 -0
- package/examples/wasm-ai-demo/profiles/BOSS.Modelfile +106 -0
- package/examples/wasm-ai-demo/profiles/PreCrisis.Modelfile +693 -0
- package/examples/wasm-ai-demo/rag/boss-library.json +3006 -0
- package/examples/wasm-ai-demo/rag.js +295 -0
- package/examples/wasm-ai-demo/server.mjs +71 -0
- package/package.json +11 -2
- package/runtime/arcane/modules/AI.js +1 -1
- package/runtime/arcane/modules/AIProviderRuntime.js +26 -5
|
@@ -0,0 +1,1529 @@
|
|
|
1
|
+
# Arcane runtime component catalog
|
|
2
|
+
|
|
3
|
+
Arcane components are reusable HTML fragments loaded through the shared `<html-import>` element. They are browser UI, so they run in an ordinary supported browser renderer and in native Arcane WebViews. They do not run in Node or as cloud services.
|
|
4
|
+
|
|
5
|
+
A component file does not register its own custom element. The `<html-import>` host fetches the fragment from the same origin, attaches an open shadow root, runs its inline scripts with `this` bound to the host, and publishes `html-import-ready` or `html-import-error`. Component methods and properties are attached to that host.
|
|
6
|
+
|
|
7
|
+
## Basic loading pattern
|
|
8
|
+
|
|
9
|
+
```html
|
|
10
|
+
<script type="module">
|
|
11
|
+
import '/arcane/modules/HTMLImport.js';
|
|
12
|
+
</script>
|
|
13
|
+
|
|
14
|
+
<html-import id="widget" href="/arcane/components/weather-widget.html"></html-import>
|
|
15
|
+
|
|
16
|
+
<script type="module">
|
|
17
|
+
const widget = document.querySelector('#widget');
|
|
18
|
+
widget.addEventListener('html-import-ready', () => {
|
|
19
|
+
console.log('Component methods are attached.', typeof widget.setWeather);
|
|
20
|
+
}, {once: true});
|
|
21
|
+
</script>
|
|
22
|
+
```
|
|
23
|
+
|
|
24
|
+
## Shared semantic-event and lifecycle contract
|
|
25
|
+
|
|
26
|
+
Except for shared `header.html` and platform-owned `theme-switcher.html`,
|
|
27
|
+
each component owns exactly one source created through
|
|
28
|
+
`createArcaneEventSource(host,{source:'arcane.component.<name>',eventTypes})`.
|
|
29
|
+
That source publishes synchronously to the realm's branded
|
|
30
|
+
`globalThis.arcaneEvents` authority. Component DOM events are one-way
|
|
31
|
+
projections of the same canonical occurrence; they are never
|
|
32
|
+
republished into the authority. Every projected detail has the canonical
|
|
33
|
+
`occurrenceId`, `arcaneSource`, `instanceId`, and `operationId` fields in a
|
|
34
|
+
mutable complete record. A source payload's existing `source` field remains
|
|
35
|
+
source-local and may differ from `arcaneSource`; the payload may additionally
|
|
36
|
+
retain source-local browser or provider objects.
|
|
37
|
+
|
|
38
|
+
When a component uses a cancelable event before a requested operation, cancellation on
|
|
39
|
+
either the canonical occurrence or its DOM projection makes the publication
|
|
40
|
+
unaccepted, and the component does not continue the guarded operation. A
|
|
41
|
+
cancelable projected notification emitted after committed work does not
|
|
42
|
+
roll that work back unless its component section explicitly says otherwise.
|
|
43
|
+
Asynchronous work keeps its own `AbortSignal`, operation generation, and
|
|
44
|
+
promise ownership; canonical publication is synchronous and does not become an
|
|
45
|
+
async queue.
|
|
46
|
+
|
|
47
|
+
Every singleton-backed component publishes its ready event only after its host
|
|
48
|
+
members are installed. Its idempotent `destroy()` (unless a more specific
|
|
49
|
+
return is documented) disposes the canonical source and marks the host
|
|
50
|
+
unready. Cleanup of owned listeners, pending work, nested subscriptions, and
|
|
51
|
+
controllers is component-specific and is stated below where it forms part of
|
|
52
|
+
that component's public contract. Removing an `<html-import>` host calls an
|
|
53
|
+
imported component's `destroy()` through `HTMLImport`; callers that invoke
|
|
54
|
+
`destroy()` directly retain responsibility for removing the element when
|
|
55
|
+
appropriate.
|
|
56
|
+
|
|
57
|
+
## Canonical inventory
|
|
58
|
+
|
|
59
|
+
| Component | Capability | Principal methods | Events | Normalization |
|
|
60
|
+
| --- | --- | --- | --- | --- |
|
|
61
|
+
| [`app-bar.html`](#app-barhtml) | Responsive application navigation, route state, status, and trailing actions. | `setNavigation()`<br>`setActiveRoute()`<br>`setStatus()`<br>`refresh()`<br>`destroy()` | `app-bar-ready` | DOM-normalized |
|
|
62
|
+
| [`assistant-panel.html`](#assistant-panelhtml) | Reusable assistant drawer, message area, composer, pending/streaming/empty/error state, and actions. | `open()`<br>`close()`<br>`toggle()`<br>`send()`<br>`clear()`<br>`setState()`<br>`focusComposer()`<br>`scrollToEnd()`<br>`destroy()` | `assistant-ready`<br>`assistant-opened`<br>`assistant-closed`<br>`assistant-send`<br>`assistant-clear` | DOM-normalized; caller/provider results remain external |
|
|
63
|
+
| [`calculator.html`](#calculatorhtml) | Calculator keypad and result/error event surface backed by CalculatorEngine. | `calculate()`<br>`destroy()` | `calculator-ready`<br>`calculation-complete`<br>`calculation-error` | Normalized Calculation/error events |
|
|
64
|
+
| [`chart.html`](#charthtml) | Accessible uPlot line, area, or point chart with normalized options and rows. | `configure()`<br>`populate()`<br>`setData()`<br>`addData()`<br>`update()`<br>`destroy()` | `chart-ready`<br>`chart-remove` | Options/rows normalized; uPlot rendering is vendor-native |
|
|
65
|
+
| [`chat.html`](#chathtml) | Shared chat, visible selected-model activation request, file upload, streaming, structural tool settlement, speech, language, availability, and conversation-timebox surface. | `streamMessage()`<br>`setMessageProgress()`<br>`setAIAvailability()`<br>`setInitialSpeechMuted()`<br>`setConversationComplete()`<br>`bindConversationTimebox()`<br>`bindSession()`<br>`submitMessage()`<br>`submitToolResult()`<br>`submitToolResults()`<br>`sendMessage()`<br>`languageChanged()`<br>`requestAIActivation()`<br>`destroy()` | `chat-ready`<br>`chat-session-bound`<br>`chat-session-message`<br>`chat-session-error`<br>`chat-send-message`<br>`chat-send-error`<br>`chat-file-uploaded`<br>`chat-file-upload-error`<br>`chat-language-changed`<br>`chat-language-change-error`<br>`chat-ai-activation-request`<br>`chat-ai-activation-error`<br>`chat-speech-synthesis-error`<br>`conversation-timebox-error` | UI/runtime state, explicit user activation intent, and honest structural-call settlement normalized; AI/storage/media behavior mixed |
|
|
66
|
+
| [`conversation-view.html`](#conversation-viewhtml) | Provider-neutral conversation display, advisory actions, composer, busy state, and status. | `setConversation()`<br>`setBusy()`<br>`setStatus()`<br>`clearComposer()`<br>`destroy()` | `conversation-view-ready`<br>`communication-send`<br>`communication-advisory-action` | DOM-normalized |
|
|
67
|
+
| [`dashboard-config.html`](#dashboard-confightml) | Selects which normalized chart definitions are visible on a dashboard. | `configure()`<br>`setDefinitions()`<br>`setVisibility()`<br>`getChartOptions()`<br>`getEffectiveVisibility()`<br>`open()`<br>`close()`<br>`destroy()` | `dashboard-config-ready`<br>`dashboard-config-opened`<br>`dashboard-config-closed`<br>`dashboard-config-change` | Fully normalized definitions and visibility |
|
|
68
|
+
| [`data-maintenance.html`](#data-maintenancehtml) | Runs destructive cleanup of empty chats and memories inside the current app data scope. | `open()`<br>`destroy()` | `data-maintenance-ready`<br>`data-maintenance-complete` | Normalized counts; DBOPFS failures mixed |
|
|
69
|
+
| [`data-view.html`](#data-viewhtml) | Opens a generic modal-style data view around an injected provider. | `beforeOpen()`<br>`open()`<br>`destroy()` | `data-view-ready` | DOM-native result |
|
|
70
|
+
| [`directory-picker.html`](#directory-pickerhtml) | Presents the provider-owned OS directory chooser with change/cancel/error states. | `configure()`<br>`focus()`<br>`select()`<br>`destroy()` | `directory-picker-ready`<br>`directory-picker-change`<br>`directory-picker-cancel`<br>`directory-picker-error` | Complete plain-text paths and native selection/error |
|
|
71
|
+
| [`document-inspector.html`](#document-inspectorhtml) | Inspects PDF, text, or source documents and records review state. | `loadDocument()`<br>`selectView()`<br>`markSaved()`<br>`destroy()` | `document-inspector-ready`<br>`document-review-change` | Document state normalized; browser document APIs mixed |
|
|
72
|
+
| [`file-drop.html`](#file-drophtml) | Acquires complete file selections by drag/drop or picker and presents busy, progress, error, and cleared state. | `configure()`<br>`openPicker()`<br>`clear()`<br>`setBusy()`<br>`setError()`<br>`setProgress()`<br>`destroy()` | `file-drop-ready`<br>`file-drop-selected`<br>`file-drop-progress`<br>`file-drop-state`<br>`file-drop-error` | Complete selections preserved; browser File/drop errors mixed |
|
|
73
|
+
| [`file-inspector.html`](#file-inspectorhtml) | Displays file metadata, preview, busy/error state, and caller-defined actions. | `configure()`<br>`show()`<br>`clear()`<br>`setActions()`<br>`setBusy()`<br>`setError()`<br>`setPreview()`<br>`destroy()` | `file-inspector-ready`<br>`file-inspector-action`<br>`file-inspector-change`<br>`file-inspector-cleared`<br>`file-inspector-error` | State normalized; preview/provider behavior mixed |
|
|
74
|
+
| [`file-manager.html`](#file-managerhtml) | Browses, filters, selects, opens, and acts on app-scoped files. | `setProvider()`<br>`loadAll()`<br>`setFilter()`<br>`select()`<br>`clearSelection()`<br>`destroy()` | `file-manager-ready`<br>`file-manager-select`<br>`file-manager-open`<br>`file-manager-action` | Selection/filter state normalized; storage/provider behavior mixed |
|
|
75
|
+
| [`header.html`](#headerhtml) | Shared title bar with history, reload, online marker, presentation labels, and 988 link. | None | No component-specific event | Browser/platform-native behavior; no component-ready contract |
|
|
76
|
+
| [`integration-settings.html`](#integration-settingshtml) | Edits non-secret communication service configuration and service actions. | `configure()`<br>`getValues()`<br>`setStatus()`<br>`destroy()` | `integration-settings-ready`<br>`integration-settings-save`<br>`integration-settings-close`<br>`integration-action` | Normalized non-secret values |
|
|
77
|
+
| [`local-ai-status.html`](#local-ai-statushtml) | Presents local-AI standby, failure, recovery, guidance, retry, and dismissal states. | `configure()`<br>`begin()`<br>`present()`<br>`destroy()`<br>`hidden` | `local-ai-status-ready`<br>`local-ai-status-dismissed`<br>`local-ai-retry` | Fully normalized LocalAIReadiness report |
|
|
78
|
+
| [`markdown-document.html`](#markdown-documenthtml) | Renders and navigates a complete Markdown document with focusable fragments. | `configure()`<br>`load()`<br>`render()`<br>`clear()`<br>`fail()`<br>`focus()`<br>`focusFragment()`<br>`destroy()` | `markdown-document-ready`<br>`markdown-document-state`<br>`markdown-document-loading`<br>`markdown-document-rendered`<br>`markdown-document-empty`<br>`markdown-document-error`<br>`markdown-document-navigate` | Complete Markdown/state normalized; malformed input and Marked/DOM failures remain visible |
|
|
79
|
+
| [`markdown-editor.html`](#markdown-editorhtml) | Configurable Markdown authoring, toolbar, preview, title, and save surface. | `configure()`<br>`focus()`<br>`clear()`<br>`saveEntry()`<br>`destroy()` | `markdown-editor-ready`<br>`markdown-editor-change`<br>`markdown-editor-saved` | Editor values normalized; injected save result mixed |
|
|
80
|
+
| [`media-embed.html`](#media-embedhtml) | Loads a parsed YouTube video or playlist embed with ordinary hosting by default, optional privacy enhancement, and an external-platform action. | `configure()`<br>`load()`<br>`destroy()` | `media-embed-ready`<br>`media-load`<br>`media-error`<br>`media-open-platform` | URL/error normalized; iframe/platform behavior native |
|
|
81
|
+
| [`modal.html`](#modalhtml) | Generic modal with population, open/close, actions, and sequential task execution. | `populate()`<br>`open()`<br>`close()`<br>`runTasks()`<br>`destroy()` | `modal-ready`<br>`modal-opened`<br>`modal-closed`<br>`modal-action` | Modal state normalized; injected task results mixed |
|
|
82
|
+
| [`output-panel.html`](#output-panelhtml) | Presents status, output, body, coverage, actions, pending, error, and cleared states. | `configure()`<br>`setOutput()`<br>`setBody()`<br>`setCoverage()`<br>`setActions()`<br>`setPending()`<br>`setStatus()`<br>`setError()`<br>`clear()`<br>`destroy()` | `output-panel-ready`<br>`output-panel-state`<br>`output-panel-change`<br>`output-panel-action`<br>`output-panel-error`<br>`output-panel-cleared` | DOM-normalized |
|
|
83
|
+
| [`preferences-form.html`](#preferences-formhtml) | Builds a schema-driven preferences form with submit, reset, busy, and status behavior. | `configure()`<br>`getValues()`<br>`setValues()`<br>`setBusy()`<br>`setStatus()`<br>`destroy()` | `preferences-form-ready`<br>`preferences-change`<br>`preferences-submit`<br>`preferences-reset` | Normalized form values |
|
|
84
|
+
| [`record-timeline.html`](#record-timelinehtml) | Displays complete chronological records/evidence and emits open actions. | `setItems()`<br>`populate()`<br>`destroy()` | `record-timeline-ready`<br>`record-timeline-open` | Complete item fields and inventories preserved |
|
|
85
|
+
| [`relationship-board.html`](#relationship-boardhtml) | Displays complete normalized relationship nodes/edges in graph and list forms. | `setGraph()`<br>`populate()`<br>`destroy()` | `relationship-board-ready`<br>`relationship-node-open`<br>`relationship-edge-open` | Complete graph inventories and fields preserved |
|
|
86
|
+
| [`screen-capture.html`](#screen-capturehtml) | Presents image, video, or GIF display-capture workflow. | `capture` (`ScreenCapture` instance)<br>`destroy()` | `screen-capture-ready`<br>`screen-capture-result` | State/result normalized; media permission/codec failures mixed |
|
|
87
|
+
| [`source-code-viewer.html`](#source-code-viewerhtml) | Renders complete line-addressable source code with load, error, focus, and state behavior. | `configure()`<br>`load()`<br>`render()`<br>`clear()`<br>`fail()`<br>`focus()`<br>`focusLine()`<br>`destroy()` | `source-code-viewer-ready`<br>`source-code-viewer-state`<br>`source-code-viewer-state-loading`<br>`source-code-viewer-state-ready`<br>`source-code-viewer-state-empty`<br>`source-code-viewer-state-error` | Complete mutable source/state |
|
|
88
|
+
| [`source-explanation.html`](#source-explanationhtml) | Presents an evidence finding, source selection, explanation, and save state. | `showFinding()`<br>`populate()`<br>`selectSource()`<br>`markSaved()`<br>`destroy()` | `source-explanation-ready`<br>`source-explanation-save`<br>`source-explanation-source-selected` | DOM-normalized |
|
|
89
|
+
| [`speech.html`](#speechhtml) | Coordinates explicit STT activation, speech controls, transcription completion, mute state, and microphone availability. | `configure()`<br>`setMuted()`<br>`reportTTSError()`<br>`requestSTTActivation()`<br>`destroy()`<br>`availability`<br>`muted`<br>`initialMuted`<br>`componentReady` | `speech-ready`<br>`speech-transcription-complete`<br>`speech-transcription-error`<br>`speech-transcription-cancelled`<br>`speech-microphone-unavailable`<br>`speech-stt-activation-request`<br>`speech-stt-activation-error`<br>`speech-tts-lifecycle-error`<br>`speech-synthesis-error` | Sticky runtime speech readiness, explicit STT activation, request cancellation, TTS mute lifecycle intent, and exact TTS operation failures normalized; provider/model authority remains external |
|
|
90
|
+
| [`summary-strip.html`](#summary-striphtml) | Displays compact selectable KPI or summary items. | `configure()`<br>`setItems()`<br>`updateItem()`<br>`clear()`<br>`destroy()` | `summary-strip-ready`<br>`summary-strip-change`<br>`summary-strip-select` | DOM-normalized |
|
|
91
|
+
| [`table.html`](#tablehtml) | Builds and updates a simple header/body table. | `buildHeader()`<br>`buildTable()`<br>`destroy()` | `table-ready`<br>`header-update`<br>`body-update` | DOM-normalized |
|
|
92
|
+
| [`task-progress.html`](#task-progresshtml) | Runs and displays a task list with started/change/complete/error state. | `configure()`<br>`setTasks()`<br>`updateTask()`<br>`runTasks()`<br>`clear()`<br>`destroy()` | `task-progress-ready`<br>`task-progress-started`<br>`task-progress-change`<br>`task-progress-complete`<br>`task-progress-error` | Task state normalized; injected task results mixed |
|
|
93
|
+
| [`terminal-workspace.html`](#terminal-workspacehtml) | Presents multiple terminal sessions, output, active selection, theme, and terminal actions. | `configure()`<br>`addSession()`<br>`removeSession()`<br>`activateSession()`<br>`append()`<br>`clear()`<br>`setState()`<br>`setTheme()`<br>`focus()`<br>`destroy()` | `terminal-workspace-ready`<br>`terminal-submit`<br>`terminal-interrupt`<br>`terminal-clear`<br>`terminal-session-new`<br>`terminal-session-close`<br>`terminal-session-select`<br>`terminal-settings` | UI/session state normalized; native command results supplied externally |
|
|
94
|
+
| [`theme-editor.html`](#theme-editorhtml) | Edits, previews, saves, and resets semantic custom theme tokens. | `configure()`<br>`getTheme()`<br>`setTheme()`<br>`setBusy()`<br>`setStatus()`<br>`destroy()` | `theme-editor-ready`<br>`theme-preview`<br>`theme-save`<br>`theme-reset` | Fully normalized Theme values |
|
|
95
|
+
| [`theme-switcher.html`](#theme-switcherhtml) | Selects and refreshes system, light, dark, or custom theme mode. | `setMode()`<br>`refresh()` | No component-specific event | Preference/native appearance behavior mixed; no component-ready contract |
|
|
96
|
+
| [`unified-inbox.html`](#unified-inboxhtml) | Displays provider-neutral communication threads with active/loading state. | `configure()`<br>`setThreads()`<br>`setActive()`<br>`setLoading()`<br>`destroy()` | `unified-inbox-ready`<br>`inbox-refresh`<br>`thread-select` | DOM-normalized |
|
|
97
|
+
| [`voice-transcription.html`](#voice-transcriptionhtml) | Records segmented microphone audio only after authoritative STT readiness, exposes explicit selected-STT activation, transcribes complete content with cancellation, persists, and completes a combined transcript. | `configure()`<br>`requestSTTActivation()`<br>`startRecording()`<br>`stopRecording()`<br>`save()`<br>`completeTranscription()/complete()`<br>`clear()`<br>`reset()`<br>`destroy()` | `voice-transcription-ready`<br>`voice-transcription-state`<br>`voice-transcription-segment`<br>`voice-transcription-change`<br>`voice-transcription-complete`<br>`speech-transcription-complete`<br>`speech-transcription-cancelled`<br>`speech-stt-activation-request`<br>`speech-stt-activation-error` | Sticky runtime STT readiness, explicit activation, request cancellation, and complete state/text are normalized; media/provider behavior remains external |
|
|
98
|
+
| [`weather-widget.html`](#weather-widgethtml) | Displays normalized current and daily weather with refresh intent. | `setWeather()`<br>`clear()`<br>`destroy()` | `weather-widget-ready`<br>`weather-refresh` | Display normalized; provider supplied externally |
|
|
99
|
+
| [`web-navigator.html`](#web-navigatorhtml) | Guards embedded/external navigation and surfaces allow/block/open intents. | `configure()`<br>`navigate()`<br>`currentUrl()`<br>`destroy()` | `web-navigator-ready`<br>`web-navigate`<br>`web-navigation-blocked`<br>`web-open-external` | Navigation intent/decision normalized; browser navigation result platform-native |
|
|
100
|
+
|
|
101
|
+
## app-bar.html
|
|
102
|
+
|
|
103
|
+
### Overview
|
|
104
|
+
|
|
105
|
+
Responsive application navigation, route state, status, and trailing actions.
|
|
106
|
+
|
|
107
|
+
### Public surface
|
|
108
|
+
|
|
109
|
+
Methods/properties: `setNavigation()`, `setActiveRoute()`, `setStatus()`, `refresh()`, `destroy()`.
|
|
110
|
+
|
|
111
|
+
Events: `app-bar-ready`.
|
|
112
|
+
|
|
113
|
+
Slots: `brand-mark`, `product-name`, `navigation`, `status`, `trailing`.
|
|
114
|
+
|
|
115
|
+
### Availability and normalization
|
|
116
|
+
|
|
117
|
+
**Browser and supported native WebViews.** DOM-normalized. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
118
|
+
|
|
119
|
+
### Example
|
|
120
|
+
|
|
121
|
+
```html
|
|
122
|
+
<html-import
|
|
123
|
+
id="app-bar.html"
|
|
124
|
+
href="/arcane/components/app-bar.html">
|
|
125
|
+
</html-import>
|
|
126
|
+
```
|
|
127
|
+
|
|
128
|
+
## assistant-panel.html
|
|
129
|
+
|
|
130
|
+
### Overview
|
|
131
|
+
|
|
132
|
+
Reusable assistant drawer, message area, composer, pending/streaming/empty/error state, and actions.
|
|
133
|
+
|
|
134
|
+
### Public surface
|
|
135
|
+
|
|
136
|
+
Methods/properties: `open()`, `close()`, `toggle()`, `send()`, `clear()`, `setState()`, `focusComposer()`, `scrollToEnd()`, `destroy()`.
|
|
137
|
+
|
|
138
|
+
Events: `assistant-ready`, `assistant-opened`, `assistant-closed`,
|
|
139
|
+
`assistant-send`, `assistant-clear`.
|
|
140
|
+
|
|
141
|
+
Slots: `title`, `subtitle`, `identity`, `messages/message`, `composer`, `actions`, `pending`, `streaming`, `empty`, `error`, `footer`.
|
|
142
|
+
|
|
143
|
+
### Availability and normalization
|
|
144
|
+
|
|
145
|
+
**Browser and supported native WebViews.** DOM-normalized; caller/provider results remain external. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
146
|
+
|
|
147
|
+
### Example
|
|
148
|
+
|
|
149
|
+
```html
|
|
150
|
+
<html-import
|
|
151
|
+
id="assistant-panel.html"
|
|
152
|
+
href="/arcane/components/assistant-panel.html">
|
|
153
|
+
</html-import>
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
## calculator.html
|
|
157
|
+
|
|
158
|
+
### Overview
|
|
159
|
+
|
|
160
|
+
Calculator keypad and result/error event surface backed by CalculatorEngine.
|
|
161
|
+
|
|
162
|
+
### Public surface
|
|
163
|
+
|
|
164
|
+
Methods/properties: `calculate()`, `destroy()`.
|
|
165
|
+
|
|
166
|
+
Events: `calculator-ready`, `calculation-complete`, `calculation-error`.
|
|
167
|
+
|
|
168
|
+
Shared dependencies: [`CalculatorEngine.js`](runtime-modules.md#calculatorenginejs).
|
|
169
|
+
|
|
170
|
+
### Availability and normalization
|
|
171
|
+
|
|
172
|
+
**Browser and supported native WebViews.** Normalized Calculation/error events. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
173
|
+
|
|
174
|
+
### Example
|
|
175
|
+
|
|
176
|
+
```html
|
|
177
|
+
<html-import
|
|
178
|
+
id="calculator.html"
|
|
179
|
+
href="/arcane/components/calculator.html">
|
|
180
|
+
</html-import>
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
## chart.html
|
|
184
|
+
|
|
185
|
+
### Overview
|
|
186
|
+
|
|
187
|
+
Accessible uPlot line, area, or point chart with normalized options and rows.
|
|
188
|
+
|
|
189
|
+
### Public surface
|
|
190
|
+
|
|
191
|
+
Methods/properties: `configure()`, `populate()`, `setData()`, `addData()`, `update()`, `destroy()`.
|
|
192
|
+
|
|
193
|
+
Events: `chart-ready`, `chart-remove`.
|
|
194
|
+
|
|
195
|
+
Shared dependencies: [`ChartLibrary.js`](runtime-modules.md#chartlibraryjs), [`ComponentContracts.js`](runtime-modules.md#componentcontractsjs).
|
|
196
|
+
|
|
197
|
+
### Availability and normalization
|
|
198
|
+
|
|
199
|
+
**Browser and supported native WebViews.** Options/rows normalized; uPlot rendering is vendor-native. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
200
|
+
|
|
201
|
+
### Example
|
|
202
|
+
|
|
203
|
+
```html
|
|
204
|
+
<html-import
|
|
205
|
+
id="chart.html"
|
|
206
|
+
href="/arcane/components/chart.html">
|
|
207
|
+
</html-import>
|
|
208
|
+
```
|
|
209
|
+
|
|
210
|
+
## chat.html
|
|
211
|
+
|
|
212
|
+
### Overview
|
|
213
|
+
|
|
214
|
+
Shared chat, visible selected-model activation request, file upload, streaming,
|
|
215
|
+
speech, language, availability, and conversation-timebox surface.
|
|
216
|
+
|
|
217
|
+
### Public surface
|
|
218
|
+
|
|
219
|
+
Methods/properties: `streamMessage()`, `setMessageProgress()`,
|
|
220
|
+
`setAIAvailability()`, `setInitialSpeechMuted()`,
|
|
221
|
+
`setConversationComplete()`, `bindConversationTimebox()`, `bindSession()`,
|
|
222
|
+
`submitMessage()`, `submitToolResult()`, `submitToolResults()`, `sendMessage()`,
|
|
223
|
+
`languageChanged()`, `requestAIActivation()`, `session`, `sessionStatus`,
|
|
224
|
+
`pendingTool`, `pendingTools`, `pendingToolCall`, `pendingToolCalls`, `modelName`,
|
|
225
|
+
and `destroy()`.
|
|
226
|
+
|
|
227
|
+
`sendMessage(text)` and `languageChanged(text)` are host-overridable async
|
|
228
|
+
extension callbacks. The component installs warning-only defaults when the host
|
|
229
|
+
does not supply them; applications may instead consume the corresponding
|
|
230
|
+
`chat-send-message` and `chat-language-changed` events.
|
|
231
|
+
|
|
232
|
+
`submitMessage(textOverride='',context={})` returns `Promise<boolean>`.
|
|
233
|
+
`context` accepts `source`, `preserveDraft`, `synthetic`, an optional exact
|
|
234
|
+
`operationId`, and an optional caller-owned `AbortSignal`. The component owns a
|
|
235
|
+
derived signal for each submission, supplies it in the mutable complete source
|
|
236
|
+
`{message,context}` detail, and aborts it on canonical/DOM cancellation,
|
|
237
|
+
component destruction, or caller cancellation. `chat-send-message` is
|
|
238
|
+
cancelable and is the gate before `sendMessage(text,context)`; a canceled event
|
|
239
|
+
never reaches the host callback. Rejected host promises are observed as
|
|
240
|
+
`chat-send-error`, and stale settlement after abort or destruction is
|
|
241
|
+
suppressed.
|
|
242
|
+
|
|
243
|
+
`bindSession({ai,session,sessionOptions})` accepts exactly one of a public AI API
|
|
244
|
+
module or an existing compatible session, restores the UI transcript when
|
|
245
|
+
available, and uses provider-safe history as its restoration fallback. The
|
|
246
|
+
transcript is a masked vertical scroll viewport; status and composer remain
|
|
247
|
+
outside it. Initial restoration and every user, assistant, tool, streaming,
|
|
248
|
+
progress, or failure mutation scrolls that viewport to its true bottom. Each
|
|
249
|
+
restored or new message uses a separate semantic `<time>` element at the card's
|
|
250
|
+
lower-right with an ISO `datetime`, full local title, and local 24-hour `HH:MM`
|
|
251
|
+
text.
|
|
252
|
+
|
|
253
|
+
Assistant structural calls render their nonempty `function.arguments.message`
|
|
254
|
+
as ordinary visible progress. The exact call name and argument string are
|
|
255
|
+
retained inside a collapsed `Tool call details` inspection surface. Displaying
|
|
256
|
+
a call does not settle it or enable another user turn.
|
|
257
|
+
`submitToolResults({results,request?},{operationId?,signal?})` atomically settles
|
|
258
|
+
the current ordered pending-call set. `results` supplies exactly one
|
|
259
|
+
`{toolCallId,status,message,persist?}` record for every pending ID, without
|
|
260
|
+
duplicates or omissions. `status` is `executed`, `declined`, `cancelled`,
|
|
261
|
+
or `not-executed`; every result in the batch uses the same persistence choice.
|
|
262
|
+
The method preserves pending order, persists and renders every human-readable
|
|
263
|
+
status plus complete message as matching `role:'tool'` requests, and then
|
|
264
|
+
renders one assistant continuation. Live submission and restored history both
|
|
265
|
+
require nonblank user-facing result content; accepted text is preserved exactly
|
|
266
|
+
rather than trimmed or rewritten.
|
|
267
|
+
|
|
268
|
+
`submitToolResult({toolCallId?,status,message,persist?,request?},{operationId?,signal?})`
|
|
269
|
+
is the single-call method. It infers the only pending ID when omitted
|
|
270
|
+
and rejects when zero or multiple calls are pending; parallel calls must use
|
|
271
|
+
`submitToolResults()`.
|
|
272
|
+
Optional plain-object `request` contains per-turn generation choices forwarded
|
|
273
|
+
through the session; a visibility-only host can use
|
|
274
|
+
`request:{toolChoice:'none'}` after a not-executed result so that continuation
|
|
275
|
+
cannot open another tool loop. Session-owned messages, signal, and streaming
|
|
276
|
+
state remain unavailable through that field. Its
|
|
277
|
+
terminal `chat-session-message` event releases the completed request ownership
|
|
278
|
+
before publication, so a listener may call `submitToolResult()` immediately
|
|
279
|
+
without a timer or microtask workaround. Internal protocol diagnostics remain
|
|
280
|
+
in the developer console; they are not inserted as assistant content, and a
|
|
281
|
+
rejected user draft is restored without losing its text.
|
|
282
|
+
|
|
283
|
+
Visible Chat failure copy is opt-in: only an Error deliberately marked
|
|
284
|
+
`userSafe:true` may provide its nonblank `userMessage` or `message`. Every
|
|
285
|
+
unknown provider, protocol, dispatch, persistence, or settlement failure keeps
|
|
286
|
+
its complete Error object in the developer console and diagnostic event while
|
|
287
|
+
the transcript and status use a generic user outcome. New diagnostic codes
|
|
288
|
+
therefore cannot become conversational text merely because they are absent
|
|
289
|
+
from a finite internal-error list.
|
|
290
|
+
|
|
291
|
+
`streamMessage(text,id,isThinking)` accepts text content only. An Error supplied
|
|
292
|
+
as a stream chunk is logged and rejected rather than stringified into the
|
|
293
|
+
transcript; any other nontext chunk fails with
|
|
294
|
+
`ARCANE_CHAT_STREAM_CONTENT_INVALID`. `setMessageProgress()` preserves explicit
|
|
295
|
+
string labels/status, but routes Error objects through the same user-safe copy
|
|
296
|
+
boundary and otherwise displays generic progress text while logging the exact
|
|
297
|
+
diagnostic value. Finite fractional and over-total progress remains visible in
|
|
298
|
+
the status text and accessibility description; only the decorative track width
|
|
299
|
+
is constrained to its visual range.
|
|
300
|
+
|
|
301
|
+
`pendingTools` is the mutable ordered array of actionable `{id,name,message}`
|
|
302
|
+
summaries and never exposes raw arguments. `pendingTool` is that single-call
|
|
303
|
+
summary only when exactly one call is pending. `pendingToolCalls` exposes
|
|
304
|
+
complete copied call envelopes for an explicitly selected inspection or host
|
|
305
|
+
settlement surface, while `pendingToolCall` is its single-call view.
|
|
306
|
+
These pending-call views exist only for the active transient protocol. Durable
|
|
307
|
+
history stores each tool's required user-facing message as an ordinary
|
|
308
|
+
`role:'tool'` record with optional public name and result status; it stores no
|
|
309
|
+
call envelope or ID and therefore does not recreate a pending executable call
|
|
310
|
+
after reload. `submitToolResult()` and `submitToolResults()` accept `status` as
|
|
311
|
+
the public result term; `disposition` remains an accepted input spelling.
|
|
312
|
+
When a submitted turn uses `persist:false`, Chat may show its cards while that
|
|
313
|
+
one operation is active, then removes them when the operation settles; neither
|
|
314
|
+
the input nor response remains in the retained transcript or model context.
|
|
315
|
+
|
|
316
|
+
For streaming sessions, every provisional structural card and the terminal
|
|
317
|
+
result must preserve the same choice, ordered call position, exact ID, type,
|
|
318
|
+
function name, argument string, and extension fields. A changed or omitted
|
|
319
|
+
observed call fails with
|
|
320
|
+
`AI_CHAT_STREAM_TOOL_CALL_MISMATCH`; the provisional card is removed and the
|
|
321
|
+
prior pending-call state is restored instead of leaving a ghost card or a false
|
|
322
|
+
settlement.
|
|
323
|
+
|
|
324
|
+
`setAIAvailability()` remains a current LLM availability input, but selected
|
|
325
|
+
sticky `AIRuntimeState` LLM state wins over that boolean. STT and TTS readiness always
|
|
326
|
+
comes from sticky runtime role state; the method never forwards standalone
|
|
327
|
+
speech booleans or synthesizes ready speech roles without a selected, loaded
|
|
328
|
+
provider.
|
|
329
|
+
|
|
330
|
+
When a selected LLM route is `unloaded` or in `error`, the component exposes a
|
|
331
|
+
keyboard-operable Start/Try again control while Send stays disabled. During
|
|
332
|
+
`loading`, the control becomes Cancel loading and reflects sticky progress
|
|
333
|
+
inside the same activation area. Progress is indeterminate until a real finite
|
|
334
|
+
positive total exists. A complete provider-reported `completed`, `total`, and
|
|
335
|
+
`unit` measure is informational and remains visible without gating activation.
|
|
336
|
+
`modelName` supplies the application-owned display label without moving model
|
|
337
|
+
policy into the component.
|
|
338
|
+
The default `requestAIActivation(intent)` forwards mutable
|
|
339
|
+
`{role:'llm',action:'load'|'unload',reason:'user'}` to
|
|
340
|
+
`requestAIRuntimeIntent()`. A host may replace that callback.
|
|
341
|
+
|
|
342
|
+
Before the callback, the component dispatches the bubbles/composed/cancelable
|
|
343
|
+
`chat-ai-activation-request` event with mutable complete `{intent,state}` detail.
|
|
344
|
+
`preventDefault()` suppresses the callback. A callback failure dispatches the
|
|
345
|
+
bubbles/composed, noncancelable `chat-ai-activation-error` event with mutable complete
|
|
346
|
+
`{request,error,message}`. A recognized canceled load whose current route is
|
|
347
|
+
`unloaded` or `unloading` is not reported as an activation error.
|
|
348
|
+
|
|
349
|
+
On `pagehide`, a BFCache-persisted page retains the component and its session,
|
|
350
|
+
speech, listeners, and provider state. A matching persisted `pageshow` refreshes
|
|
351
|
+
the current availability UI without rebinding or duplicating listeners.
|
|
352
|
+
Nonpersisted `pagehide` remains terminal and calls `destroy()`.
|
|
353
|
+
|
|
354
|
+
`destroy()` aborts the component's AI-runtime-state subscription, destroys the
|
|
355
|
+
activation controller, removes both page lifecycle listeners, calls the
|
|
356
|
+
optional speech controller's `destroy()`, sets `ready` to `false`, and returns
|
|
357
|
+
`true`; later calls return `false`. It does not initiate a provider load or
|
|
358
|
+
unload.
|
|
359
|
+
|
|
360
|
+
Chat listens for the bound (or current global) AI runtime's `ai-tts-failure`
|
|
361
|
+
event and forwards its complete Error and exact operation boundary to
|
|
362
|
+
`speech.reportTTSError()`. This includes decode and playback-start failures that
|
|
363
|
+
settle after `streamTTS()` has already resolved. Runtime mute, cancellation,
|
|
364
|
+
permission waiting, and stale generations remain non-errors.
|
|
365
|
+
|
|
366
|
+
Each visible model chunk is still forwarded to `AI.streamTTS()` in arrival
|
|
367
|
+
order. The AI owner preserves exact segmentation, admits completed segments to
|
|
368
|
+
bounded synthesis immediately, and schedules the contiguous ready audio prefix
|
|
369
|
+
on the audio clock. Chat neither creates a second queue nor reorders, combines,
|
|
370
|
+
or rewrites speech text.
|
|
371
|
+
|
|
372
|
+
Events: `chat-ready`, `chat-session-bound`, `chat-session-message`,
|
|
373
|
+
`chat-session-error`, `chat-send-message`, `chat-send-error`,
|
|
374
|
+
`chat-file-uploaded`, `chat-file-upload-error`, `chat-language-changed`,
|
|
375
|
+
`chat-language-change-error`, `chat-ai-activation-request`,
|
|
376
|
+
`chat-ai-activation-error`, `chat-speech-synthesis-error`, and
|
|
377
|
+
`conversation-timebox-error`.
|
|
378
|
+
|
|
379
|
+
All chat operation ids have the form
|
|
380
|
+
`<component-instance-id>:<kind>:<sequence>`. The stable public reasons are
|
|
381
|
+
`chat-ready`, `message-submission-requested`,
|
|
382
|
+
`message-submission-cancelled`, `caller-signal-aborted`,
|
|
383
|
+
`component-destroyed`, `host-message-submission-rejected`,
|
|
384
|
+
`file-storage-completed`, `file-storage-rejected`,
|
|
385
|
+
`language-change-requested`, `language-change-callback-rejected`,
|
|
386
|
+
`language-model-activation-requested`,
|
|
387
|
+
`language-model-activation-rejected`, `speech-synthesis-rejected`, and
|
|
388
|
+
`conversation-timebox-delivery-rejected`.
|
|
389
|
+
|
|
390
|
+
The stable chat boundary codes are:
|
|
391
|
+
|
|
392
|
+
- `ARCANE_CHAT_MESSAGE_SUBMISSION_ABORTED` for the owned submission signal;
|
|
393
|
+
- `ARCANE_CHAT_LANGUAGE_MODEL_ACTIVATION_REQUEST_REJECTED`;
|
|
394
|
+
- `ARCANE_CHAT_HOST_MESSAGE_SUBMISSION_REJECTED`;
|
|
395
|
+
- `ARCANE_CHAT_FILE_STORAGE_REJECTED`;
|
|
396
|
+
- `ARCANE_CHAT_LANGUAGE_CHANGE_CALLBACK_REJECTED`;
|
|
397
|
+
- `ARCANE_CHAT_SPEECH_SYNTHESIS_REQUEST_REJECTED`;
|
|
398
|
+
- `ARCANE_CHAT_CONVERSATION_TIMEBOX_DELIVERY_REJECTED`.
|
|
399
|
+
|
|
400
|
+
Error projections preserve the complete error detail, with the boundary `code`
|
|
401
|
+
and any distinct dependency `causeCode`. File projections preserve the complete
|
|
402
|
+
live `File` and its authored metadata. Language and LLM activation requests are
|
|
403
|
+
cancelable before their host callbacks. Every public detail remains mutable.
|
|
404
|
+
|
|
405
|
+
Shared dependencies: [`MD.js`](runtime-modules.md#mdjs), [`File.js`](runtime-entities.md#filejs), [`ConversationTimebox.js`](runtime-modules.md#conversationtimeboxjs), [`AIRuntimeState.js`](runtime-modules.md#airuntimestatejs).
|
|
406
|
+
|
|
407
|
+
### Availability and normalization
|
|
408
|
+
|
|
409
|
+
**Browser and supported native WebViews.** UI and provider-runtime state are
|
|
410
|
+
normalized; AI/storage/media behavior remains mixed. The component emits no
|
|
411
|
+
activation request on import or startup. After the user operates the visible
|
|
412
|
+
control and the component event is not canceled, it publishes a
|
|
413
|
+
capability-neutral user intent; a provider/runtime owner decides whether and
|
|
414
|
+
how to execute the requested load or unload. HTMLImport + DOM; injected
|
|
415
|
+
Arcane/provider modules where listed. Native methods remain subject to the
|
|
416
|
+
bound app's capabilities. [Deep protocol details](protocols.md).
|
|
417
|
+
|
|
418
|
+
### Example
|
|
419
|
+
|
|
420
|
+
```html
|
|
421
|
+
<html-import
|
|
422
|
+
id="chat.html"
|
|
423
|
+
href="/arcane/components/chat.html">
|
|
424
|
+
</html-import>
|
|
425
|
+
```
|
|
426
|
+
|
|
427
|
+
## conversation-view.html
|
|
428
|
+
|
|
429
|
+
### Overview
|
|
430
|
+
|
|
431
|
+
Provider-neutral conversation display, advisory actions, composer, busy state, and status.
|
|
432
|
+
|
|
433
|
+
### Public surface
|
|
434
|
+
|
|
435
|
+
Methods/properties: `setConversation()`, `setBusy()`, `setStatus()`, `clearComposer()`, `destroy()`.
|
|
436
|
+
|
|
437
|
+
Events: `conversation-view-ready`, `communication-send`, `communication-advisory-action`.
|
|
438
|
+
|
|
439
|
+
### Availability and normalization
|
|
440
|
+
|
|
441
|
+
**Browser and supported native WebViews.** DOM-normalized. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
442
|
+
|
|
443
|
+
### Example
|
|
444
|
+
|
|
445
|
+
```html
|
|
446
|
+
<html-import
|
|
447
|
+
id="conversation-view.html"
|
|
448
|
+
href="/arcane/components/conversation-view.html">
|
|
449
|
+
</html-import>
|
|
450
|
+
```
|
|
451
|
+
|
|
452
|
+
## dashboard-config.html
|
|
453
|
+
|
|
454
|
+
### Overview
|
|
455
|
+
|
|
456
|
+
Selects which normalized chart definitions are visible on a dashboard.
|
|
457
|
+
|
|
458
|
+
### Public surface
|
|
459
|
+
|
|
460
|
+
Methods/properties: `configure()`, `setDefinitions()`, `setVisibility()`, `getChartOptions()`, `getEffectiveVisibility()`, `open()`, `close()`, `destroy()`.
|
|
461
|
+
|
|
462
|
+
Events: `dashboard-config-ready`, `dashboard-config-opened`, `dashboard-config-closed`, `dashboard-config-change`.
|
|
463
|
+
|
|
464
|
+
Shared dependencies: [`ComponentContracts.js`](runtime-modules.md#componentcontractsjs), [`WaitForComponent.js`](runtime-modules.md#waitforcomponentjs).
|
|
465
|
+
|
|
466
|
+
### Availability and normalization
|
|
467
|
+
|
|
468
|
+
**Browser and supported native WebViews.** Fully normalized definitions and visibility. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
469
|
+
|
|
470
|
+
### Example
|
|
471
|
+
|
|
472
|
+
```html
|
|
473
|
+
<html-import
|
|
474
|
+
id="dashboard-config.html"
|
|
475
|
+
href="/arcane/components/dashboard-config.html">
|
|
476
|
+
</html-import>
|
|
477
|
+
```
|
|
478
|
+
|
|
479
|
+
## data-maintenance.html
|
|
480
|
+
|
|
481
|
+
### Overview
|
|
482
|
+
|
|
483
|
+
Runs destructive cleanup of empty chats and memories inside the current app data scope.
|
|
484
|
+
|
|
485
|
+
### Public surface
|
|
486
|
+
|
|
487
|
+
Methods/properties: `open()`, `destroy()`.
|
|
488
|
+
|
|
489
|
+
Events: `data-maintenance-ready`, `data-maintenance-complete`.
|
|
490
|
+
|
|
491
|
+
Shared dependencies: [`DataMaintenance.js`](runtime-modules.md#datamaintenancejs), [`WaitForComponent.js`](runtime-modules.md#waitforcomponentjs).
|
|
492
|
+
|
|
493
|
+
### Availability and normalization
|
|
494
|
+
|
|
495
|
+
**Browser and supported native WebViews.** Normalized counts; DBOPFS failures mixed. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
496
|
+
|
|
497
|
+
### Example
|
|
498
|
+
|
|
499
|
+
```html
|
|
500
|
+
<html-import
|
|
501
|
+
id="data-maintenance.html"
|
|
502
|
+
href="/arcane/components/data-maintenance.html">
|
|
503
|
+
</html-import>
|
|
504
|
+
```
|
|
505
|
+
|
|
506
|
+
## data-view.html
|
|
507
|
+
|
|
508
|
+
### Overview
|
|
509
|
+
|
|
510
|
+
Opens a generic modal-style data view around an injected provider.
|
|
511
|
+
|
|
512
|
+
### Public surface
|
|
513
|
+
|
|
514
|
+
Methods/properties: `beforeOpen()`, `open()`, `destroy()`.
|
|
515
|
+
|
|
516
|
+
Events: `data-view-ready`.
|
|
517
|
+
|
|
518
|
+
Shared dependencies: [`WaitForComponent.js`](runtime-modules.md#waitforcomponentjs).
|
|
519
|
+
|
|
520
|
+
### Availability and normalization
|
|
521
|
+
|
|
522
|
+
**Browser and supported native WebViews.** DOM-native result. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
523
|
+
|
|
524
|
+
### Example
|
|
525
|
+
|
|
526
|
+
```html
|
|
527
|
+
<html-import
|
|
528
|
+
id="data-view.html"
|
|
529
|
+
href="/arcane/components/data-view.html">
|
|
530
|
+
</html-import>
|
|
531
|
+
```
|
|
532
|
+
|
|
533
|
+
## directory-picker.html
|
|
534
|
+
|
|
535
|
+
### Overview
|
|
536
|
+
|
|
537
|
+
Presents the provider-owned OS directory chooser with change/cancel/error states.
|
|
538
|
+
|
|
539
|
+
### Public surface
|
|
540
|
+
|
|
541
|
+
Methods/properties: `configure()`, `focus()`, `select()`, `destroy()`.
|
|
542
|
+
|
|
543
|
+
Events: `directory-picker-ready`, `directory-picker-change`, `directory-picker-cancel`, `directory-picker-error`.
|
|
544
|
+
|
|
545
|
+
Shared dependencies: [`DirectoryPicker.js`](runtime-modules.md#directorypickerjs).
|
|
546
|
+
|
|
547
|
+
### Availability and normalization
|
|
548
|
+
|
|
549
|
+
**Browser and supported native WebViews.** Complete directory paths and native
|
|
550
|
+
selection/error content are preserved without trimming, character caps, or a
|
|
551
|
+
generic control-character gate. The provider or operating system owns any
|
|
552
|
+
platform-specific path failure. HTMLImport + DOM; injected Arcane/provider
|
|
553
|
+
modules where listed. Native methods remain subject to the bound app's
|
|
554
|
+
capabilities. [Deep protocol details](protocols.md).
|
|
555
|
+
|
|
556
|
+
### Example
|
|
557
|
+
|
|
558
|
+
```html
|
|
559
|
+
<html-import
|
|
560
|
+
id="directory-picker.html"
|
|
561
|
+
href="/arcane/components/directory-picker.html">
|
|
562
|
+
</html-import>
|
|
563
|
+
```
|
|
564
|
+
|
|
565
|
+
## document-inspector.html
|
|
566
|
+
|
|
567
|
+
### Overview
|
|
568
|
+
|
|
569
|
+
Inspects PDF, text, or source documents and records review state.
|
|
570
|
+
|
|
571
|
+
### Public surface
|
|
572
|
+
|
|
573
|
+
Methods/properties: `loadDocument()`, `selectView()`, `markSaved()`, `destroy()`.
|
|
574
|
+
|
|
575
|
+
Events: `document-inspector-ready`, `document-review-change`.
|
|
576
|
+
|
|
577
|
+
Shared dependencies: [`MD.js`](runtime-modules.md#mdjs).
|
|
578
|
+
|
|
579
|
+
### Availability and normalization
|
|
580
|
+
|
|
581
|
+
**Browser and supported native WebViews.** Document state normalized; browser document APIs mixed. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
582
|
+
|
|
583
|
+
### Example
|
|
584
|
+
|
|
585
|
+
```html
|
|
586
|
+
<html-import
|
|
587
|
+
id="document-inspector.html"
|
|
588
|
+
href="/arcane/components/document-inspector.html">
|
|
589
|
+
</html-import>
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
## file-drop.html
|
|
593
|
+
|
|
594
|
+
### Overview
|
|
595
|
+
|
|
596
|
+
Acquires files by drag/drop or picker and presents busy, progress, error, and cleared state.
|
|
597
|
+
|
|
598
|
+
### Public surface
|
|
599
|
+
|
|
600
|
+
Methods/properties: `configure()`, `openPicker()`, `clear()`, `setBusy()`, `setError()`, `setProgress()`, `destroy()`.
|
|
601
|
+
|
|
602
|
+
Events: `file-drop-ready`, `file-drop-selected`, `file-drop-progress`, `file-drop-state`, `file-drop-error`.
|
|
603
|
+
|
|
604
|
+
### Availability and normalization
|
|
605
|
+
|
|
606
|
+
**Browser and supported native WebViews.** Complete picker, drop, and API selections are preserved; `multiple` remains a picker hint and `maxFiles` remains compatible configuration rather than a rejection or discard gate. Browser File/drop errors are mixed. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
607
|
+
|
|
608
|
+
### Example
|
|
609
|
+
|
|
610
|
+
```html
|
|
611
|
+
<html-import
|
|
612
|
+
id="file-drop.html"
|
|
613
|
+
href="/arcane/components/file-drop.html">
|
|
614
|
+
</html-import>
|
|
615
|
+
```
|
|
616
|
+
|
|
617
|
+
## file-inspector.html
|
|
618
|
+
|
|
619
|
+
### Overview
|
|
620
|
+
|
|
621
|
+
Displays file metadata, preview, busy/error state, and caller-defined actions.
|
|
622
|
+
|
|
623
|
+
### Public surface
|
|
624
|
+
|
|
625
|
+
Methods/properties: `configure()`, `show()`, `clear()`, `setActions()`, `setBusy()`, `setError()`, `setPreview()`, `destroy()`.
|
|
626
|
+
|
|
627
|
+
Events: `file-inspector-ready`, `file-inspector-action`, `file-inspector-change`, `file-inspector-cleared`, `file-inspector-error`.
|
|
628
|
+
|
|
629
|
+
Slots: `title`, `preview`, `metadata`, `actions`.
|
|
630
|
+
|
|
631
|
+
### Availability and normalization
|
|
632
|
+
|
|
633
|
+
**Browser and supported native WebViews.** State normalized; preview/provider behavior mixed. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
634
|
+
|
|
635
|
+
### Example
|
|
636
|
+
|
|
637
|
+
```html
|
|
638
|
+
<html-import
|
|
639
|
+
id="file-inspector.html"
|
|
640
|
+
href="/arcane/components/file-inspector.html">
|
|
641
|
+
</html-import>
|
|
642
|
+
```
|
|
643
|
+
|
|
644
|
+
## file-manager.html
|
|
645
|
+
|
|
646
|
+
### Overview
|
|
647
|
+
|
|
648
|
+
Browses, filters, selects, opens, and acts on app-scoped files.
|
|
649
|
+
|
|
650
|
+
### Public surface
|
|
651
|
+
|
|
652
|
+
Methods/properties: `setProvider()`, `loadAll()`, `setFilter()`, `select()`, `clearSelection()`, `destroy()`.
|
|
653
|
+
|
|
654
|
+
Events: `file-manager-ready`, `file-manager-select`, `file-manager-open`, `file-manager-action`.
|
|
655
|
+
|
|
656
|
+
Shared dependencies: [`DBOPFS.js`](runtime-modules.md#dbopfsjs), [`File.js`](runtime-entities.md#filejs), [`WaitForComponent.js`](runtime-modules.md#waitforcomponentjs).
|
|
657
|
+
|
|
658
|
+
### Availability and normalization
|
|
659
|
+
|
|
660
|
+
**Browser and supported native WebViews.** Selection/filter state normalized; storage/provider behavior mixed. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
661
|
+
|
|
662
|
+
### Example
|
|
663
|
+
|
|
664
|
+
```html
|
|
665
|
+
<html-import
|
|
666
|
+
id="file-manager.html"
|
|
667
|
+
href="/arcane/components/file-manager.html">
|
|
668
|
+
</html-import>
|
|
669
|
+
```
|
|
670
|
+
|
|
671
|
+
## header.html
|
|
672
|
+
|
|
673
|
+
### Overview
|
|
674
|
+
|
|
675
|
+
Shared title bar with history, reload, online marker, presentation labels, and 988 link.
|
|
676
|
+
|
|
677
|
+
### Public surface
|
|
678
|
+
|
|
679
|
+
This fragment declares no public host method.
|
|
680
|
+
|
|
681
|
+
This fragment declares no component-specific readiness or action event; use the loader's `html-import-ready` only to know that import execution completed.
|
|
682
|
+
|
|
683
|
+
### Availability and normalization
|
|
684
|
+
|
|
685
|
+
**Browser and supported native WebViews.** Browser/platform-native behavior; no component-ready contract. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
686
|
+
|
|
687
|
+
### Example
|
|
688
|
+
|
|
689
|
+
```html
|
|
690
|
+
<html-import
|
|
691
|
+
id="header.html"
|
|
692
|
+
href="/arcane/components/header.html">
|
|
693
|
+
</html-import>
|
|
694
|
+
```
|
|
695
|
+
|
|
696
|
+
## integration-settings.html
|
|
697
|
+
|
|
698
|
+
### Overview
|
|
699
|
+
|
|
700
|
+
Edits non-secret communication service configuration and service actions.
|
|
701
|
+
|
|
702
|
+
### Public surface
|
|
703
|
+
|
|
704
|
+
Methods/properties: `configure()`, `getValues()`, `setStatus()`, `destroy()`.
|
|
705
|
+
|
|
706
|
+
Events: `integration-settings-ready`, `integration-settings-save`, `integration-settings-close`, `integration-action`.
|
|
707
|
+
|
|
708
|
+
### Availability and normalization
|
|
709
|
+
|
|
710
|
+
**Browser and supported native WebViews.** Normalized non-secret values. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
711
|
+
|
|
712
|
+
### Example
|
|
713
|
+
|
|
714
|
+
```html
|
|
715
|
+
<html-import
|
|
716
|
+
id="integration-settings.html"
|
|
717
|
+
href="/arcane/components/integration-settings.html">
|
|
718
|
+
</html-import>
|
|
719
|
+
```
|
|
720
|
+
|
|
721
|
+
## local-ai-status.html
|
|
722
|
+
|
|
723
|
+
### Overview
|
|
724
|
+
|
|
725
|
+
Presents local-AI standby, failure, recovery, guidance, retry, and dismissal states.
|
|
726
|
+
|
|
727
|
+
### Public surface
|
|
728
|
+
|
|
729
|
+
Methods/properties: `configure()`, `begin()`, `present()`, `destroy()`, and the `hidden` property.
|
|
730
|
+
|
|
731
|
+
Events: `local-ai-status-ready`, `local-ai-status-dismissed`, `local-ai-retry`.
|
|
732
|
+
|
|
733
|
+
Shared dependencies: [`LocalAIReadiness.js`](runtime-modules.md#localaireadinessjs).
|
|
734
|
+
|
|
735
|
+
### Availability and normalization
|
|
736
|
+
|
|
737
|
+
**Browser and supported native WebViews.** Fully normalized LocalAIReadiness report. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
738
|
+
|
|
739
|
+
### Example
|
|
740
|
+
|
|
741
|
+
```html
|
|
742
|
+
<html-import
|
|
743
|
+
id="local-ai-status.html"
|
|
744
|
+
href="/arcane/components/local-ai-status.html">
|
|
745
|
+
</html-import>
|
|
746
|
+
```
|
|
747
|
+
|
|
748
|
+
## markdown-document.html
|
|
749
|
+
|
|
750
|
+
### Overview
|
|
751
|
+
|
|
752
|
+
Renders and navigates a complete Markdown document with focusable fragments.
|
|
753
|
+
|
|
754
|
+
### Public surface
|
|
755
|
+
|
|
756
|
+
Methods/properties: `configure()`, `load()`, `render()`, `clear()`, `fail()`, `focus()`, `focusFragment()`, `destroy()`.
|
|
757
|
+
|
|
758
|
+
Events: `markdown-document-ready`, `markdown-document-state`,
|
|
759
|
+
`markdown-document-loading`, `markdown-document-rendered`,
|
|
760
|
+
`markdown-document-empty`, `markdown-document-error`, and
|
|
761
|
+
`markdown-document-navigate`.
|
|
762
|
+
|
|
763
|
+
Shared dependencies: [`MD.js`](runtime-modules.md#mdjs).
|
|
764
|
+
|
|
765
|
+
### Availability and normalization
|
|
766
|
+
|
|
767
|
+
**Browser and supported native WebViews.** Complete Markdown and state are
|
|
768
|
+
normalized; malformed input and Marked/DOM failures remain visible. HTMLImport
|
|
769
|
+
+ DOM; injected Arcane/provider modules where listed. Native methods remain
|
|
770
|
+
subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
771
|
+
|
|
772
|
+
### Example
|
|
773
|
+
|
|
774
|
+
```html
|
|
775
|
+
<html-import
|
|
776
|
+
id="markdown-document.html"
|
|
777
|
+
href="/arcane/components/markdown-document.html">
|
|
778
|
+
</html-import>
|
|
779
|
+
```
|
|
780
|
+
|
|
781
|
+
## markdown-editor.html
|
|
782
|
+
|
|
783
|
+
### Overview
|
|
784
|
+
|
|
785
|
+
Configurable Markdown authoring, toolbar, preview, title, and save surface.
|
|
786
|
+
|
|
787
|
+
### Public surface
|
|
788
|
+
|
|
789
|
+
Methods/properties: `configure()`, `focus()`, `clear()`, `saveEntry()`, `destroy()`.
|
|
790
|
+
|
|
791
|
+
Events: `markdown-editor-ready`, `markdown-editor-change`, `markdown-editor-saved`.
|
|
792
|
+
|
|
793
|
+
Shared dependencies: [`MD.js`](runtime-modules.md#mdjs), [`ComponentContracts.js`](runtime-modules.md#componentcontractsjs).
|
|
794
|
+
|
|
795
|
+
### Availability and normalization
|
|
796
|
+
|
|
797
|
+
**Browser and supported native WebViews.** Editor values normalized; injected save result mixed. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
798
|
+
|
|
799
|
+
### Example
|
|
800
|
+
|
|
801
|
+
```html
|
|
802
|
+
<html-import
|
|
803
|
+
id="markdown-editor.html"
|
|
804
|
+
href="/arcane/components/markdown-editor.html">
|
|
805
|
+
</html-import>
|
|
806
|
+
```
|
|
807
|
+
|
|
808
|
+
## media-embed.html
|
|
809
|
+
|
|
810
|
+
### Overview
|
|
811
|
+
|
|
812
|
+
Loads a parsed YouTube video or playlist embed and exposes an external-platform
|
|
813
|
+
action. Ordinary YouTube hosting is the default; `configure({privacyEnhanced:true})`
|
|
814
|
+
explicitly selects the privacy-enhanced host.
|
|
815
|
+
|
|
816
|
+
### Public surface
|
|
817
|
+
|
|
818
|
+
Methods/properties: `configure()`, `load()`, `destroy()`.
|
|
819
|
+
|
|
820
|
+
Events: `media-embed-ready`, `media-load`, `media-error`, `media-open-platform`.
|
|
821
|
+
|
|
822
|
+
Shared dependencies: [`YouTubeMedia.js`](runtime-modules.md#youtubemediajs).
|
|
823
|
+
|
|
824
|
+
### Availability and normalization
|
|
825
|
+
|
|
826
|
+
**Browser and supported native WebViews.** URL/error normalized; iframe/platform behavior native. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
827
|
+
|
|
828
|
+
### Example
|
|
829
|
+
|
|
830
|
+
```html
|
|
831
|
+
<html-import
|
|
832
|
+
id="media-embed.html"
|
|
833
|
+
href="/arcane/components/media-embed.html">
|
|
834
|
+
</html-import>
|
|
835
|
+
```
|
|
836
|
+
|
|
837
|
+
## modal.html
|
|
838
|
+
|
|
839
|
+
### Overview
|
|
840
|
+
|
|
841
|
+
Generic modal with population, open/close, actions, and sequential task execution.
|
|
842
|
+
|
|
843
|
+
### Public surface
|
|
844
|
+
|
|
845
|
+
Methods/properties: `populate()`, `open()`, `close()`, `runTasks()`, `destroy()`.
|
|
846
|
+
|
|
847
|
+
Events: `modal-ready`, `modal-opened`, `modal-closed`, `modal-action`.
|
|
848
|
+
|
|
849
|
+
Slots: `header`, `body`, `footer`.
|
|
850
|
+
|
|
851
|
+
### Availability and normalization
|
|
852
|
+
|
|
853
|
+
**Browser and supported native WebViews.** Modal state normalized; injected task results mixed. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
854
|
+
|
|
855
|
+
### Example
|
|
856
|
+
|
|
857
|
+
```html
|
|
858
|
+
<html-import
|
|
859
|
+
id="modal.html"
|
|
860
|
+
href="/arcane/components/modal.html">
|
|
861
|
+
</html-import>
|
|
862
|
+
```
|
|
863
|
+
|
|
864
|
+
## output-panel.html
|
|
865
|
+
|
|
866
|
+
### Overview
|
|
867
|
+
|
|
868
|
+
Presents status, output, body, coverage, actions, pending, error, and cleared states.
|
|
869
|
+
|
|
870
|
+
### Public surface
|
|
871
|
+
|
|
872
|
+
Methods/properties: `configure()`, `setOutput()`, `setBody()`, `setCoverage()`, `setActions()`, `setPending()`, `setStatus()`, `setError()`, `clear()`, `destroy()`.
|
|
873
|
+
|
|
874
|
+
Events: `output-panel-ready`, `output-panel-state`, `output-panel-change`, `output-panel-action`, `output-panel-error`, `output-panel-cleared`.
|
|
875
|
+
|
|
876
|
+
Slots: `title`, `header-actions`, `body`, `coverage`, `actions`.
|
|
877
|
+
|
|
878
|
+
### Availability and normalization
|
|
879
|
+
|
|
880
|
+
**Browser and supported native WebViews.** DOM-normalized. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
881
|
+
|
|
882
|
+
### Example
|
|
883
|
+
|
|
884
|
+
```html
|
|
885
|
+
<html-import
|
|
886
|
+
id="output-panel.html"
|
|
887
|
+
href="/arcane/components/output-panel.html">
|
|
888
|
+
</html-import>
|
|
889
|
+
```
|
|
890
|
+
|
|
891
|
+
## preferences-form.html
|
|
892
|
+
|
|
893
|
+
### Overview
|
|
894
|
+
|
|
895
|
+
Builds a schema-driven preferences form with submit, reset, busy, and status behavior.
|
|
896
|
+
|
|
897
|
+
### Public surface
|
|
898
|
+
|
|
899
|
+
Methods/properties: `configure()`, `getValues()`, `setValues()`, `setBusy()`, `setStatus()`, `destroy()`.
|
|
900
|
+
|
|
901
|
+
Events: `preferences-form-ready`, `preferences-change`, `preferences-submit`, `preferences-reset`.
|
|
902
|
+
|
|
903
|
+
### Availability and normalization
|
|
904
|
+
|
|
905
|
+
**Browser and supported native WebViews.** Normalized form values. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
906
|
+
|
|
907
|
+
### Example
|
|
908
|
+
|
|
909
|
+
```html
|
|
910
|
+
<html-import
|
|
911
|
+
id="preferences-form.html"
|
|
912
|
+
href="/arcane/components/preferences-form.html">
|
|
913
|
+
</html-import>
|
|
914
|
+
```
|
|
915
|
+
|
|
916
|
+
## record-timeline.html
|
|
917
|
+
|
|
918
|
+
### Overview
|
|
919
|
+
|
|
920
|
+
Displays chronological records/evidence and emits open actions.
|
|
921
|
+
|
|
922
|
+
### Public surface
|
|
923
|
+
|
|
924
|
+
Methods/properties: `setItems()`, `populate()`, `destroy()`.
|
|
925
|
+
|
|
926
|
+
Events: `record-timeline-ready`, `record-timeline-open`.
|
|
927
|
+
|
|
928
|
+
### Availability and normalization
|
|
929
|
+
|
|
930
|
+
**Browser and supported native WebViews.** Complete item inventories and fields are preserved while missing identity/date records remain non-renderable. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
931
|
+
|
|
932
|
+
### Example
|
|
933
|
+
|
|
934
|
+
```html
|
|
935
|
+
<html-import
|
|
936
|
+
id="record-timeline.html"
|
|
937
|
+
href="/arcane/components/record-timeline.html">
|
|
938
|
+
</html-import>
|
|
939
|
+
```
|
|
940
|
+
|
|
941
|
+
## relationship-board.html
|
|
942
|
+
|
|
943
|
+
### Overview
|
|
944
|
+
|
|
945
|
+
Displays normalized relationship nodes/edges in graph and list forms.
|
|
946
|
+
|
|
947
|
+
### Public surface
|
|
948
|
+
|
|
949
|
+
Methods/properties: `setGraph()`, `populate()`, `destroy()`.
|
|
950
|
+
|
|
951
|
+
Events: `relationship-board-ready`, `relationship-node-open`, `relationship-edge-open`.
|
|
952
|
+
|
|
953
|
+
### Availability and normalization
|
|
954
|
+
|
|
955
|
+
**Browser and supported native WebViews.** Complete node, edge, lane, label, and summary inventories are preserved; edges still require existing endpoints. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
956
|
+
|
|
957
|
+
### Example
|
|
958
|
+
|
|
959
|
+
```html
|
|
960
|
+
<html-import
|
|
961
|
+
id="relationship-board.html"
|
|
962
|
+
href="/arcane/components/relationship-board.html">
|
|
963
|
+
</html-import>
|
|
964
|
+
```
|
|
965
|
+
|
|
966
|
+
## screen-capture.html
|
|
967
|
+
|
|
968
|
+
### Overview
|
|
969
|
+
|
|
970
|
+
Presents image, video, or GIF display-capture workflow.
|
|
971
|
+
|
|
972
|
+
### Public surface
|
|
973
|
+
|
|
974
|
+
Methods/properties: `capture` (the component-owned `ScreenCapture` instance) and `destroy()`.
|
|
975
|
+
|
|
976
|
+
Events: `screen-capture-ready`, `screen-capture-result`.
|
|
977
|
+
|
|
978
|
+
Ready uses operation id `screen-capture-ready-<component-instance-id>`;
|
|
979
|
+
capture results use the current instance-owned generation. `destroy()`
|
|
980
|
+
invalidates that generation, aborts UI listeners, revokes the preview URL,
|
|
981
|
+
destroys the `ScreenCapture` instance, disposes the source, marks the host
|
|
982
|
+
unready, and returns `true`; repeated calls return `false`.
|
|
983
|
+
|
|
984
|
+
Shared dependencies: [`ScreenCapture.js`](runtime-modules.md#screencapturejs).
|
|
985
|
+
|
|
986
|
+
### Availability and normalization
|
|
987
|
+
|
|
988
|
+
**Browser and supported native WebViews.** State/result normalized; media permission/codec failures mixed. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
989
|
+
|
|
990
|
+
### Example
|
|
991
|
+
|
|
992
|
+
```html
|
|
993
|
+
<html-import
|
|
994
|
+
id="screen-capture.html"
|
|
995
|
+
href="/arcane/components/screen-capture.html">
|
|
996
|
+
</html-import>
|
|
997
|
+
```
|
|
998
|
+
|
|
999
|
+
## source-code-viewer.html
|
|
1000
|
+
|
|
1001
|
+
### Overview
|
|
1002
|
+
|
|
1003
|
+
Renders line-addressable source code with load, error, focus, and state behavior.
|
|
1004
|
+
|
|
1005
|
+
### Public surface
|
|
1006
|
+
|
|
1007
|
+
Methods/properties: `configure()`, `load()`, `render()`, `clear()`, `fail()`, `focus()`, `focusLine()`, `destroy()`.
|
|
1008
|
+
|
|
1009
|
+
Events: `source-code-viewer-ready`, `source-code-viewer-state`,
|
|
1010
|
+
`source-code-viewer-state-loading`, `source-code-viewer-state-ready`,
|
|
1011
|
+
`source-code-viewer-state-empty`, and `source-code-viewer-state-error`.
|
|
1012
|
+
|
|
1013
|
+
### Availability and normalization
|
|
1014
|
+
|
|
1015
|
+
**Browser and supported native WebViews.** Complete mutable source/state is rendered without character or line caps; malformed control-character metadata still fails honestly. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
1016
|
+
|
|
1017
|
+
### Example
|
|
1018
|
+
|
|
1019
|
+
```html
|
|
1020
|
+
<html-import
|
|
1021
|
+
id="source-code-viewer.html"
|
|
1022
|
+
href="/arcane/components/source-code-viewer.html">
|
|
1023
|
+
</html-import>
|
|
1024
|
+
```
|
|
1025
|
+
|
|
1026
|
+
## source-explanation.html
|
|
1027
|
+
|
|
1028
|
+
### Overview
|
|
1029
|
+
|
|
1030
|
+
Presents an evidence finding, source selection, explanation, and save state.
|
|
1031
|
+
|
|
1032
|
+
### Public surface
|
|
1033
|
+
|
|
1034
|
+
Methods/properties: `showFinding()`, `populate()`, `selectSource()`, `markSaved()`, `destroy()`.
|
|
1035
|
+
|
|
1036
|
+
Events: `source-explanation-ready`, `source-explanation-save`, `source-explanation-source-selected`.
|
|
1037
|
+
|
|
1038
|
+
### Availability and normalization
|
|
1039
|
+
|
|
1040
|
+
**Browser and supported native WebViews.** DOM-normalized. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
1041
|
+
|
|
1042
|
+
### Example
|
|
1043
|
+
|
|
1044
|
+
```html
|
|
1045
|
+
<html-import
|
|
1046
|
+
id="source-explanation.html"
|
|
1047
|
+
href="/arcane/components/source-explanation.html">
|
|
1048
|
+
</html-import>
|
|
1049
|
+
```
|
|
1050
|
+
|
|
1051
|
+
## speech.html
|
|
1052
|
+
|
|
1053
|
+
### Overview
|
|
1054
|
+
|
|
1055
|
+
Coordinates explicit speech-to-text activation, speech controls, transcription
|
|
1056
|
+
completion, mute state, and microphone availability.
|
|
1057
|
+
|
|
1058
|
+
### Public surface
|
|
1059
|
+
|
|
1060
|
+
Methods/properties: `configure()`, `setMuted()`,
|
|
1061
|
+
`reportTTSError(error,boundary='synthesis')`, `requestSTTActivation()`,
|
|
1062
|
+
`destroy()`, `availability`, `muted`, `initialMuted`, and `componentReady`.
|
|
1063
|
+
|
|
1064
|
+
Events: `speech-ready`, `speech-transcription-complete`,
|
|
1065
|
+
`speech-transcription-error`, `speech-transcription-cancelled`,
|
|
1066
|
+
`speech-microphone-unavailable`, `speech-stt-activation-request`,
|
|
1067
|
+
`speech-stt-activation-error`, `speech-tts-lifecycle-error`, and
|
|
1068
|
+
`speech-synthesis-error`.
|
|
1069
|
+
|
|
1070
|
+
Shared dependencies: [`AI.js`](runtime-modules.md#aijs),
|
|
1071
|
+
[`AIRuntimeState.js`](runtime-modules.md#airuntimestatejs),
|
|
1072
|
+
[`ComponentContracts.js`](runtime-modules.md#componentcontractsjs), and
|
|
1073
|
+
[`DBLS.js`](runtime-modules.md#dblsjs).
|
|
1074
|
+
|
|
1075
|
+
The Hold to talk control remains disabled unless sticky STT state is `ready`,
|
|
1076
|
+
the role is not busy, and microphone capture is available. For an explicitly
|
|
1077
|
+
selected STT route, a separate keyboard-operable control presents Start
|
|
1078
|
+
transcription while `unloaded`, Cancel loading while `loading`, a disabled
|
|
1079
|
+
Canceling state while `unloading`, and Try again with the sticky error while
|
|
1080
|
+
`error`. Selected-unloaded, busy, and error states are shown as distinct facts;
|
|
1081
|
+
none is treated as ready.
|
|
1082
|
+
|
|
1083
|
+
Only captured microphone input that completes the selected STT route emits
|
|
1084
|
+
`speech-transcription-complete`. A transient capture rejection reports
|
|
1085
|
+
`speech-microphone-unavailable` but remains locally retryable; an observed
|
|
1086
|
+
permission-denied state disables capture until the browser reports that the
|
|
1087
|
+
permission is available again, at which point the microphone-owned status is
|
|
1088
|
+
cleared.
|
|
1089
|
+
|
|
1090
|
+
The default `requestSTTActivation(intent)` forwards the mutable
|
|
1091
|
+
`{role:'stt',action:'load'|'unload',reason:'user'}` record to
|
|
1092
|
+
`requestAIRuntimeIntent()`. Before calling it, the component emits a bubbling,
|
|
1093
|
+
composed, cancelable `speech-stt-activation-request` event with mutable complete
|
|
1094
|
+
`{intent,state}` detail. `preventDefault()` suppresses the callback and intent.
|
|
1095
|
+
Callback failure emits `speech-stt-activation-error` with mutable complete
|
|
1096
|
+
`{request,error,message}` detail. Cancel loading publishes an `unload` intent;
|
|
1097
|
+
only subsequent sticky `unloading` or `unloaded` state confirms lifecycle
|
|
1098
|
+
progress, and callback return never proves provider work stopped.
|
|
1099
|
+
|
|
1100
|
+
Provider and runtime failures use generic visible speech status unless their
|
|
1101
|
+
Error owner explicitly marks nonblank copy with `userSafe:true`. Complete
|
|
1102
|
+
unknown diagnostics remain available through the developer console and error
|
|
1103
|
+
events; they do not become control labels or status text by default. The same
|
|
1104
|
+
boundary applies to STT activation, transcription, TTS lifecycle, synthesis,
|
|
1105
|
+
and playback failures.
|
|
1106
|
+
|
|
1107
|
+
`reportTTSError()` recognizes `synthesis`, `decode`, `playback-start`, and
|
|
1108
|
+
`playback-resume`. It mutes and stops the failed operation, preserves sticky
|
|
1109
|
+
provider readiness, and emits `speech-synthesis-error` with the exact boundary,
|
|
1110
|
+
stable reason/code, generic user-safe status, and complete Error in the local
|
|
1111
|
+
event detail.
|
|
1112
|
+
|
|
1113
|
+
- `synthesis`: `tts-synthesis-rejected` / `ARCANE_SPEECH_TTS_SYNTHESIS_REQUEST_REJECTED`;
|
|
1114
|
+
- `decode`: `tts-decode-rejected` / `ARCANE_SPEECH_TTS_DECODE_REJECTED`;
|
|
1115
|
+
- `playback-start`: `tts-playback-start-rejected` / `ARCANE_SPEECH_TTS_PLAYBACK_START_REJECTED`;
|
|
1116
|
+
- `playback-resume`: `tts-playback-resume-rejected` / `ARCANE_SPEECH_TTS_PLAYBACK_RESUME_REJECTED`.
|
|
1117
|
+
|
|
1118
|
+
The component emits no activation request on import or state observation.
|
|
1119
|
+
Provider registration and selection remain inert, and default
|
|
1120
|
+
`startTranscription=false` does not request STT during runtime startup. The
|
|
1121
|
+
provider/runtime owner decides whether and how to execute a user intent; the
|
|
1122
|
+
component never selects a runtime or model, downloads artifacts, reloads after
|
|
1123
|
+
failure, or falls back to another provider.
|
|
1124
|
+
|
|
1125
|
+
Each transcription request owns an `AbortController`; its signal is passed as
|
|
1126
|
+
the second argument to `AI.fetchSTT()`. Cancel, a newer capture, and `destroy()`
|
|
1127
|
+
abort that controller and suppress late results. This proves request delivery
|
|
1128
|
+
was canceled, not that an uncooperative provider stopped underlying work.
|
|
1129
|
+
|
|
1130
|
+
Each microphone attempt also owns one capture generation and one operation id
|
|
1131
|
+
from the initial `getUserMedia()` request through transcription settlement. A
|
|
1132
|
+
release while permission is still pending retires only that generation because
|
|
1133
|
+
the browser request cannot be canceled synchronously. If that stale request
|
|
1134
|
+
later resolves, the component stops its returned stream without clearing a
|
|
1135
|
+
newer press, status, operation id, or retry. Active capture finalization checks
|
|
1136
|
+
both the generation and operation id, and successful transcription retains the
|
|
1137
|
+
same capture operation id rather than inventing a second correlation boundary.
|
|
1138
|
+
|
|
1139
|
+
User Unmute calls the shared `AI.setSpeechMuted(false)` lifecycle owner before
|
|
1140
|
+
or with publishing the TTS load intent, so the runtime can legally load TTS.
|
|
1141
|
+
Configured `initialMuted:false` records that same unmute intent even when the
|
|
1142
|
+
TTS route is still unselected or loading; the component remains publicly muted
|
|
1143
|
+
until the selected role reaches `ready`, then applies the preserved intent.
|
|
1144
|
+
Mute calls `AI.setSpeechMuted(true)`, stops playback, cancels active TTS work,
|
|
1145
|
+
and unloads the selected TTS role. Lifecycle failures remain visible through
|
|
1146
|
+
`speech-tts-lifecycle-error` and sticky role state.
|
|
1147
|
+
|
|
1148
|
+
A BFCache-persisted `pagehide` retains the component, active provider state,
|
|
1149
|
+
microphone permission observation, and listeners. On persisted `pageshow`, the
|
|
1150
|
+
component resynchronizes the current AI mute state and rerenders its controls
|
|
1151
|
+
and status without duplicating activation or provider work. Nonpersisted
|
|
1152
|
+
`pagehide` remains terminal and destroys the component.
|
|
1153
|
+
|
|
1154
|
+
Speech operation ids are
|
|
1155
|
+
`<component-instance-id>:<kind>:<sequence>`. Canonical cancellation reasons are
|
|
1156
|
+
`stt-role-unready`, `stt-provider-transcription-cancelled`, `stt-role-busy`,
|
|
1157
|
+
`microphone-unavailable`, `component-destroyed`, and
|
|
1158
|
+
`stt-transcription-cancelled`. Microphone capture-failure reasons are
|
|
1159
|
+
`microphone-input-missing`, `microphone-input-unavailable`,
|
|
1160
|
+
`microphone-capture-denied`, and `microphone-capture-rejected`. Component
|
|
1161
|
+
boundary codes are `ARCANE_SPEECH_MICROPHONE_CAPTURE_REJECTED`,
|
|
1162
|
+
`ARCANE_SPEECH_STT_TRANSCRIPTION_REQUEST_REJECTED`,
|
|
1163
|
+
`ARCANE_SPEECH_TTS_LOAD_REJECTED`, `ARCANE_SPEECH_TTS_UNLOAD_REJECTED`,
|
|
1164
|
+
`ARCANE_SPEECH_TTS_SYNTHESIS_REQUEST_REJECTED`,
|
|
1165
|
+
`ARCANE_SPEECH_TTS_DECODE_REJECTED`,
|
|
1166
|
+
`ARCANE_SPEECH_TTS_PLAYBACK_START_REJECTED`, and
|
|
1167
|
+
`ARCANE_SPEECH_TTS_PLAYBACK_RESUME_REJECTED`. Each of those component-boundary
|
|
1168
|
+
public projections keeps the exact boundary in `code` and preserves a distinct
|
|
1169
|
+
string code from the browser, runtime, or provider additively as `causeCode`.
|
|
1170
|
+
A missing STT method therefore uses boundary
|
|
1171
|
+
`ARCANE_SPEECH_STT_TRANSCRIPTION_REQUEST_REJECTED` with
|
|
1172
|
+
`causeCode:'ARCANE_SPEECH_STT_RUNTIME_METHOD_UNAVAILABLE'`.
|
|
1173
|
+
|
|
1174
|
+
Stable rejection reasons are `stt-transcription-rejected`,
|
|
1175
|
+
`tts-load-rejected`, `tts-unload-rejected`, `tts-synthesis-rejected`,
|
|
1176
|
+
`tts-decode-rejected`, `tts-playback-start-rejected`, and
|
|
1177
|
+
`tts-playback-resume-rejected`. Shared activation rejection uses
|
|
1178
|
+
`ARCANE_STT_ACTIVATION_REQUEST_REJECTED` and `activation-request-rejected`.
|
|
1179
|
+
|
|
1180
|
+
### Availability and normalization
|
|
1181
|
+
|
|
1182
|
+
**Browser and supported native WebViews.** UI/runtime state and explicit user
|
|
1183
|
+
STT activation intent are normalized; provider/model authority and media
|
|
1184
|
+
behavior remain external. HTMLImport + DOM; injected Arcane/provider modules
|
|
1185
|
+
where listed. Native methods remain subject to the bound app's capabilities.
|
|
1186
|
+
[Deep protocol details](protocols.md).
|
|
1187
|
+
|
|
1188
|
+
### Example
|
|
1189
|
+
|
|
1190
|
+
```html
|
|
1191
|
+
<html-import
|
|
1192
|
+
id="speech.html"
|
|
1193
|
+
href="/arcane/components/speech.html">
|
|
1194
|
+
</html-import>
|
|
1195
|
+
```
|
|
1196
|
+
|
|
1197
|
+
## summary-strip.html
|
|
1198
|
+
|
|
1199
|
+
### Overview
|
|
1200
|
+
|
|
1201
|
+
Displays compact selectable KPI or summary items.
|
|
1202
|
+
|
|
1203
|
+
### Public surface
|
|
1204
|
+
|
|
1205
|
+
Methods/properties: `configure()`, `setItems()`, `updateItem()`, `clear()`, `destroy()`.
|
|
1206
|
+
|
|
1207
|
+
Events: `summary-strip-ready`, `summary-strip-change`, `summary-strip-select`.
|
|
1208
|
+
|
|
1209
|
+
### Availability and normalization
|
|
1210
|
+
|
|
1211
|
+
**Browser and supported native WebViews.** DOM-normalized. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
1212
|
+
|
|
1213
|
+
### Example
|
|
1214
|
+
|
|
1215
|
+
```html
|
|
1216
|
+
<html-import
|
|
1217
|
+
id="summary-strip.html"
|
|
1218
|
+
href="/arcane/components/summary-strip.html">
|
|
1219
|
+
</html-import>
|
|
1220
|
+
```
|
|
1221
|
+
|
|
1222
|
+
## table.html
|
|
1223
|
+
|
|
1224
|
+
### Overview
|
|
1225
|
+
|
|
1226
|
+
Builds and updates a simple header/body table.
|
|
1227
|
+
|
|
1228
|
+
### Public surface
|
|
1229
|
+
|
|
1230
|
+
Methods/properties: `buildHeader()`, `buildTable()`, `destroy()`.
|
|
1231
|
+
|
|
1232
|
+
Events: `table-ready`, `header-update`, `body-update`.
|
|
1233
|
+
|
|
1234
|
+
### Availability and normalization
|
|
1235
|
+
|
|
1236
|
+
**Browser and supported native WebViews.** DOM-normalized. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
1237
|
+
|
|
1238
|
+
### Example
|
|
1239
|
+
|
|
1240
|
+
```html
|
|
1241
|
+
<html-import
|
|
1242
|
+
id="table.html"
|
|
1243
|
+
href="/arcane/components/table.html">
|
|
1244
|
+
</html-import>
|
|
1245
|
+
```
|
|
1246
|
+
|
|
1247
|
+
## task-progress.html
|
|
1248
|
+
|
|
1249
|
+
### Overview
|
|
1250
|
+
|
|
1251
|
+
Runs and displays a task list with started/change/complete/error state.
|
|
1252
|
+
|
|
1253
|
+
### Public surface
|
|
1254
|
+
|
|
1255
|
+
Methods/properties: `configure()`, `setTasks()`, `updateTask()`, `runTasks()`, `clear()`, `destroy()`.
|
|
1256
|
+
|
|
1257
|
+
Events: `task-progress-ready`, `task-progress-started`, `task-progress-change`, `task-progress-complete`, `task-progress-error`.
|
|
1258
|
+
|
|
1259
|
+
### Availability and normalization
|
|
1260
|
+
|
|
1261
|
+
**Browser and supported native WebViews.** Task state normalized; injected task results mixed. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
1262
|
+
|
|
1263
|
+
### Example
|
|
1264
|
+
|
|
1265
|
+
```html
|
|
1266
|
+
<html-import
|
|
1267
|
+
id="task-progress.html"
|
|
1268
|
+
href="/arcane/components/task-progress.html">
|
|
1269
|
+
</html-import>
|
|
1270
|
+
```
|
|
1271
|
+
|
|
1272
|
+
## terminal-workspace.html
|
|
1273
|
+
|
|
1274
|
+
### Overview
|
|
1275
|
+
|
|
1276
|
+
Presents multiple terminal sessions, output, active selection, theme, and terminal actions.
|
|
1277
|
+
|
|
1278
|
+
### Public surface
|
|
1279
|
+
|
|
1280
|
+
Methods/properties: `configure()`, `addSession()`, `removeSession()`, `activateSession()`, `append()`, `clear()`, `setState()`, `setTheme()`, `focus()`, `destroy()`.
|
|
1281
|
+
|
|
1282
|
+
Events: `terminal-workspace-ready`, `terminal-submit`, `terminal-interrupt`, `terminal-clear`, `terminal-session-new`, `terminal-session-close`, `terminal-session-select`, `terminal-settings`.
|
|
1283
|
+
|
|
1284
|
+
Shared dependencies: [`AnsiText.js`](runtime-modules.md#ansitextjs).
|
|
1285
|
+
|
|
1286
|
+
### Availability and normalization
|
|
1287
|
+
|
|
1288
|
+
**Browser and supported native WebViews.** UI/session state normalized; native command results supplied externally. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
1289
|
+
|
|
1290
|
+
### Example
|
|
1291
|
+
|
|
1292
|
+
```html
|
|
1293
|
+
<html-import
|
|
1294
|
+
id="terminal-workspace.html"
|
|
1295
|
+
href="/arcane/components/terminal-workspace.html">
|
|
1296
|
+
</html-import>
|
|
1297
|
+
```
|
|
1298
|
+
|
|
1299
|
+
## theme-editor.html
|
|
1300
|
+
|
|
1301
|
+
### Overview
|
|
1302
|
+
|
|
1303
|
+
Edits, previews, saves, and resets semantic custom theme tokens.
|
|
1304
|
+
|
|
1305
|
+
### Public surface
|
|
1306
|
+
|
|
1307
|
+
Methods/properties: `configure()`, `getTheme()`, `setTheme()`, `setBusy()`, `setStatus()`, `destroy()`.
|
|
1308
|
+
|
|
1309
|
+
Events: `theme-editor-ready`, `theme-preview`, `theme-save`, `theme-reset`.
|
|
1310
|
+
|
|
1311
|
+
Shared dependencies: [`Theme.js`](runtime-entities.md#themejs).
|
|
1312
|
+
|
|
1313
|
+
### Availability and normalization
|
|
1314
|
+
|
|
1315
|
+
**Browser and supported native WebViews.** Fully normalized Theme values. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
1316
|
+
|
|
1317
|
+
### Example
|
|
1318
|
+
|
|
1319
|
+
```html
|
|
1320
|
+
<html-import
|
|
1321
|
+
id="theme-editor.html"
|
|
1322
|
+
href="/arcane/components/theme-editor.html">
|
|
1323
|
+
</html-import>
|
|
1324
|
+
```
|
|
1325
|
+
|
|
1326
|
+
## theme-switcher.html
|
|
1327
|
+
|
|
1328
|
+
### Overview
|
|
1329
|
+
|
|
1330
|
+
Selects and refreshes system, light, dark, or custom theme mode.
|
|
1331
|
+
|
|
1332
|
+
### Public surface
|
|
1333
|
+
|
|
1334
|
+
Methods/properties: `setMode()`, `refresh()`.
|
|
1335
|
+
|
|
1336
|
+
This fragment declares no component-specific readiness or action event; use the loader's `html-import-ready` only to know that import execution completed.
|
|
1337
|
+
|
|
1338
|
+
Shared dependencies: [`ThemeManager.js`](runtime-modules.md#thememanagerjs).
|
|
1339
|
+
|
|
1340
|
+
### Availability and normalization
|
|
1341
|
+
|
|
1342
|
+
**Browser and supported native WebViews.** Preference/native appearance behavior mixed; no component-ready contract. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
1343
|
+
|
|
1344
|
+
### Example
|
|
1345
|
+
|
|
1346
|
+
```html
|
|
1347
|
+
<html-import
|
|
1348
|
+
id="theme-switcher.html"
|
|
1349
|
+
href="/arcane/components/theme-switcher.html">
|
|
1350
|
+
</html-import>
|
|
1351
|
+
```
|
|
1352
|
+
|
|
1353
|
+
## unified-inbox.html
|
|
1354
|
+
|
|
1355
|
+
### Overview
|
|
1356
|
+
|
|
1357
|
+
Displays provider-neutral communication threads with active/loading state.
|
|
1358
|
+
|
|
1359
|
+
### Public surface
|
|
1360
|
+
|
|
1361
|
+
Methods/properties: `configure()`, `setThreads()`, `setActive()`, `setLoading()`, `destroy()`.
|
|
1362
|
+
|
|
1363
|
+
Events: `unified-inbox-ready`, `inbox-refresh`, `thread-select`.
|
|
1364
|
+
|
|
1365
|
+
### Availability and normalization
|
|
1366
|
+
|
|
1367
|
+
**Browser and supported native WebViews.** DOM-normalized. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
1368
|
+
|
|
1369
|
+
### Example
|
|
1370
|
+
|
|
1371
|
+
```html
|
|
1372
|
+
<html-import
|
|
1373
|
+
id="unified-inbox.html"
|
|
1374
|
+
href="/arcane/components/unified-inbox.html">
|
|
1375
|
+
</html-import>
|
|
1376
|
+
```
|
|
1377
|
+
|
|
1378
|
+
## voice-transcription.html
|
|
1379
|
+
|
|
1380
|
+
### Overview
|
|
1381
|
+
|
|
1382
|
+
Records segmented microphone audio only after authoritative STT readiness,
|
|
1383
|
+
exposes explicit selected-STT activation, transcribes with cancellation,
|
|
1384
|
+
persists, and completes a combined transcript.
|
|
1385
|
+
|
|
1386
|
+
### Public surface
|
|
1387
|
+
|
|
1388
|
+
Methods/properties: `configure()`, `requestSTTActivation()`, `startRecording()`,
|
|
1389
|
+
`stopRecording()`, `save()`, `completeTranscription()/complete()`, `clear()`,
|
|
1390
|
+
`reset()`, `destroy()`.
|
|
1391
|
+
|
|
1392
|
+
Events: `voice-transcription-ready`, `voice-transcription-state`,
|
|
1393
|
+
`voice-transcription-segment`, `voice-transcription-change`,
|
|
1394
|
+
`voice-transcription-complete`, `speech-transcription-complete`,
|
|
1395
|
+
`speech-transcription-cancelled`, `speech-stt-activation-request`, and
|
|
1396
|
+
`speech-stt-activation-error`.
|
|
1397
|
+
|
|
1398
|
+
Shared dependencies: [`MD.js`](runtime-modules.md#mdjs),
|
|
1399
|
+
[`ComponentContracts.js`](runtime-modules.md#componentcontractsjs),
|
|
1400
|
+
[`AIRuntimeState.js`](runtime-modules.md#airuntimestatejs), and
|
|
1401
|
+
[`AI.js`](runtime-modules.md#aijs).
|
|
1402
|
+
|
|
1403
|
+
### Availability and normalization
|
|
1404
|
+
|
|
1405
|
+
**Browser and supported native WebViews.** The component subscribes
|
|
1406
|
+
synchronously to sticky `AIRuntimeState.roles.stt`; its recording Start button
|
|
1407
|
+
and public `startRecording()` both remain unavailable unless that role is exactly
|
|
1408
|
+
`ready` and not busy. A configured `transcribe(file,context)` callback remains
|
|
1409
|
+
request plumbing rather than readiness authority. Its context now includes the
|
|
1410
|
+
owned `signal` additively. The default route calls `AI.fetchSTT(file,signal)` so
|
|
1411
|
+
readiness loss or destruction can abort delivery.
|
|
1412
|
+
|
|
1413
|
+
For a selected `unloaded`, `loading`, `unloading`, or `error` role, the component
|
|
1414
|
+
keeps recording Start disabled and presents the same keyboard-operable Start
|
|
1415
|
+
transcription/Try again or Cancel loading control as `speech.html`. Both use the
|
|
1416
|
+
shared `createSTTActivationController()` contract. User operation emits the
|
|
1417
|
+
cancelable `speech-stt-activation-request` event with mutable complete `{intent,state}`;
|
|
1418
|
+
`preventDefault()` suppresses the callback. The default
|
|
1419
|
+
`requestSTTActivation(intent)` publishes the mutable
|
|
1420
|
+
`{role:'stt',action:'load'|'unload',reason:'user'}` intent. Callback failure emits
|
|
1421
|
+
`speech-stt-activation-error` with mutable complete `{request,error,message}`. Import and
|
|
1422
|
+
state observation emit no activation request and never begin a model download.
|
|
1423
|
+
Unknown provider/runtime diagnostics remain complete in the developer console
|
|
1424
|
+
and error events, while controls use generic visible outcomes unless the Error
|
|
1425
|
+
owner explicitly marks nonblank copy with `userSafe:true`.
|
|
1426
|
+
|
|
1427
|
+
If sticky readiness is lost during microphone acquisition, capture, or the STT
|
|
1428
|
+
request, the component invalidates the session, aborts the owned request signal,
|
|
1429
|
+
releases media, discards late completion, and emits
|
|
1430
|
+
`speech-transcription-cancelled`. Its source-local reason is
|
|
1431
|
+
`runtime-unready`, while its canonical/public reason is `stt-role-unready`. A
|
|
1432
|
+
busy role uses `stt-role-busy` in both views. A current provider cancellation
|
|
1433
|
+
returns the component workflow to `idle` with local
|
|
1434
|
+
`stt-provider-request-cancelled` and canonical/public
|
|
1435
|
+
`stt-provider-transcription-cancelled`; destruction uses
|
|
1436
|
+
`component-destroyed` in both views. Replacing configuration without an
|
|
1437
|
+
`initialValue` during active work uses `configuration-replaced` in both views.
|
|
1438
|
+
Stale teardown results remain suppressed. A
|
|
1439
|
+
current save failure, including `AbortError`, enters the visible `error` state.
|
|
1440
|
+
Readiness loss after transcription has finished does not invalidate an already
|
|
1441
|
+
pending application save or completion callback: its settlement remains
|
|
1442
|
+
observable, while any new recording remains gated by current sticky readiness.
|
|
1443
|
+
Assigning `value` or calling `configure({initialValue})` explicitly supersedes
|
|
1444
|
+
an in-flight microphone start, STT request, save, or completion. The component
|
|
1445
|
+
advances its generation, aborts owned STT delivery, releases owned media, emits
|
|
1446
|
+
`speech-transcription-cancelled` with
|
|
1447
|
+
`reason:'transcript-replaced'`, and suppresses
|
|
1448
|
+
late settlement before publishing the assigned transcript. Assigning transcript
|
|
1449
|
+
text during active recording preserves that recording and changes the transcript
|
|
1450
|
+
to which the captured segment will be appended.
|
|
1451
|
+
On a BFCache-persisted `pagehide`, the component and its owned state remain
|
|
1452
|
+
live. A persisted `pageshow` rerenders the retained authoritative state without
|
|
1453
|
+
restarting capture, transcription, or activation. Nonpersisted `pagehide`
|
|
1454
|
+
retains terminal destruction.
|
|
1455
|
+
`destroy()` aborts the state subscription, cancels active work, removes the
|
|
1456
|
+
activation listener, sets component `ready` to `false`, and returns `true`;
|
|
1457
|
+
repeated destruction is
|
|
1458
|
+
idempotent. Destruction is terminal: Start, activation, and Complete remain
|
|
1459
|
+
disabled and status remains unavailable. `voice-transcription-state` detail is
|
|
1460
|
+
the mutable complete `{message,state,stt}` record, where `state` remains the component
|
|
1461
|
+
workflow and `stt` is the authoritative mutable role record. Transcript
|
|
1462
|
+
completion stays available when STT is unavailable before destruction.
|
|
1463
|
+
State/text, explicit activation, and request cancellation are normalized;
|
|
1464
|
+
provider/model authority and media behavior remain external. HTMLImport + DOM;
|
|
1465
|
+
injected Arcane/provider modules where listed.
|
|
1466
|
+
Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
1467
|
+
|
|
1468
|
+
### Example
|
|
1469
|
+
|
|
1470
|
+
```html
|
|
1471
|
+
<html-import
|
|
1472
|
+
id="voice-transcription.html"
|
|
1473
|
+
href="/arcane/components/voice-transcription.html">
|
|
1474
|
+
</html-import>
|
|
1475
|
+
```
|
|
1476
|
+
|
|
1477
|
+
## weather-widget.html
|
|
1478
|
+
|
|
1479
|
+
### Overview
|
|
1480
|
+
|
|
1481
|
+
Displays normalized current and daily weather with refresh intent.
|
|
1482
|
+
|
|
1483
|
+
### Public surface
|
|
1484
|
+
|
|
1485
|
+
Methods/properties: `setWeather()`, `clear()`, `destroy()`.
|
|
1486
|
+
|
|
1487
|
+
Events: `weather-widget-ready`, `weather-refresh`.
|
|
1488
|
+
|
|
1489
|
+
### Availability and normalization
|
|
1490
|
+
|
|
1491
|
+
**Browser and supported native WebViews.** Display normalized; provider supplied externally. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
1492
|
+
|
|
1493
|
+
### Example
|
|
1494
|
+
|
|
1495
|
+
```html
|
|
1496
|
+
<html-import
|
|
1497
|
+
id="weather-widget.html"
|
|
1498
|
+
href="/arcane/components/weather-widget.html">
|
|
1499
|
+
</html-import>
|
|
1500
|
+
```
|
|
1501
|
+
|
|
1502
|
+
## web-navigator.html
|
|
1503
|
+
|
|
1504
|
+
### Overview
|
|
1505
|
+
|
|
1506
|
+
Guards embedded/external navigation and surfaces allow/block/open intents.
|
|
1507
|
+
|
|
1508
|
+
### Public surface
|
|
1509
|
+
|
|
1510
|
+
Methods/properties: `configure()`, `navigate()`, `currentUrl()`, `destroy()`.
|
|
1511
|
+
|
|
1512
|
+
Events: `web-navigator-ready`, `web-navigate`, `web-navigation-blocked`, `web-open-external`.
|
|
1513
|
+
|
|
1514
|
+
### Availability and normalization
|
|
1515
|
+
|
|
1516
|
+
**Browser and supported native WebViews.** Navigation intent/decision normalized; browser navigation result platform-native. HTMLImport + DOM; injected Arcane/provider modules where listed. Native methods remain subject to the bound app's capabilities. [Deep protocol details](protocols.md).
|
|
1517
|
+
|
|
1518
|
+
### Example
|
|
1519
|
+
|
|
1520
|
+
```html
|
|
1521
|
+
<html-import
|
|
1522
|
+
id="web-navigator.html"
|
|
1523
|
+
href="/arcane/components/web-navigator.html">
|
|
1524
|
+
</html-import>
|
|
1525
|
+
```
|
|
1526
|
+
|
|
1527
|
+
## Readiness caveats
|
|
1528
|
+
|
|
1529
|
+
`header.html` and `theme-switcher.html` do not currently publish a component-specific ready event/property. Consumers can observe `html-import-ready` for completed fragment execution and then feature-detect their methods. Other fragments publish the exact ready event listed above.
|