arcane-os 0.5.16 → 0.5.18
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 +44 -0
- package/README.md +42 -19
- package/bin/arcane-test.mjs +16 -13
- package/browser-runtime/ai/browser-speech-artifacts.mjs +41 -38
- package/browser-runtime/ai/browser-speech-providers.mjs +53 -46
- package/browser-runtime/ai/browser-wasm-llm-provider.mjs +127 -124
- package/browser-runtime/ai/browser-wasm.mjs +6 -3
- package/browser-runtime/ai/browser-wllama-runtime.mjs +26 -23
- package/browser-runtime/ai/model-controller.mjs +94 -91
- package/browser-runtime/ai/speech-worker-client.mjs +12 -9
- package/browser-runtime/ai/speech-worker-runtime.mjs +56 -53
- package/browser-runtime/dependencies/strong-type/index.js +207 -82
- package/browser-runtime/dependencies/strong-type/package.json +15 -6
- package/browser-runtime/dom-event-instrumentation.mjs +24 -20
- package/browser-runtime/event-manager.mjs +111 -108
- package/browser-runtime/speech-text.mjs +35 -0
- package/docs/architecture.md +1 -1
- package/docs/reference/README.md +8 -8
- package/docs/reference/ai/browser-speech.md +230 -16
- package/docs/reference/ai/twin-cloud.md +1 -1
- package/docs/reference/availability-and-normalization.md +42 -1
- package/docs/reference/cli.md +1 -1
- package/docs/reference/core/arcane-ai-contracts.md +1 -1
- package/docs/reference/inventory/package-api.json +60 -4
- package/docs/reference/inventory/runtime-components.json +2 -2
- package/docs/reference/inventory/runtime-modules.json +29 -31
- package/docs/reference/protocols.md +17 -13
- package/docs/reference/runtime-components.md +6 -5
- package/docs/reference/runtime-modules.md +212 -70
- package/docs/reference/sdk-api.md +197 -11
- package/examples/wasm-ai-demo/index.html +1 -0
- package/node_modules/event-pubsub/node_modules/strong-type/README.md +408 -0
- package/node_modules/event-pubsub/node_modules/strong-type/assets/strong-type-header.png +0 -0
- package/node_modules/event-pubsub/node_modules/strong-type/index.js +1151 -0
- package/node_modules/event-pubsub/node_modules/strong-type/licence +21 -0
- package/node_modules/event-pubsub/node_modules/strong-type/node.js +125 -0
- package/node_modules/event-pubsub/node_modules/strong-type/package.json +61 -0
- package/node_modules/strong-type/README.md +42 -24
- package/node_modules/strong-type/benchmark/core.js +324 -0
- package/node_modules/strong-type/index.js +207 -82
- package/node_modules/strong-type/package.json +14 -6
- package/package.json +4 -3
- package/runtime/arcane/components/app-bar.html +5 -2
- package/runtime/arcane/components/assistant-panel.html +5 -2
- package/runtime/arcane/components/chart.html +15 -12
- package/runtime/arcane/components/chat.html +118 -141
- package/runtime/arcane/components/dashboard-config.html +6 -3
- package/runtime/arcane/components/data-view.html +4 -1
- package/runtime/arcane/components/directory-picker.html +5 -2
- package/runtime/arcane/components/document-inspector.html +6 -3
- package/runtime/arcane/components/file-drop.html +5 -2
- package/runtime/arcane/components/file-inspector.html +9 -6
- package/runtime/arcane/components/file-manager.html +16 -13
- package/runtime/arcane/components/local-ai-status.html +5 -2
- package/runtime/arcane/components/markdown-document.html +14 -11
- package/runtime/arcane/components/markdown-editor.html +4 -1
- package/runtime/arcane/components/modal.html +4 -1
- package/runtime/arcane/components/output-panel.html +6 -3
- package/runtime/arcane/components/preferences-form.html +4 -1
- package/runtime/arcane/components/record-timeline.html +8 -5
- package/runtime/arcane/components/relationship-board.html +9 -6
- package/runtime/arcane/components/source-code-viewer.html +12 -9
- package/runtime/arcane/components/source-explanation.html +8 -5
- package/runtime/arcane/components/speech.html +24 -21
- package/runtime/arcane/components/summary-strip.html +4 -1
- package/runtime/arcane/components/task-progress.html +6 -3
- package/runtime/arcane/components/terminal-workspace.html +4 -1
- package/runtime/arcane/components/voice-transcription.html +11 -8
- package/runtime/arcane/components/web-navigator.html +5 -2
- package/runtime/arcane/entities/ApiModelRecord.js +5 -2
- package/runtime/arcane/entities/Calculation.js +5 -2
- package/runtime/arcane/entities/Chat.js +33 -33
- package/runtime/arcane/entities/CommunicationMessage.js +4 -1
- package/runtime/arcane/entities/CommunicationThread.js +4 -1
- package/runtime/arcane/entities/File.js +1 -1
- package/runtime/arcane/entities/Image.js +8 -5
- package/runtime/arcane/entities/IntentEnvelope.js +20 -17
- package/runtime/arcane/entities/Preference.js +9 -6
- package/runtime/arcane/entities/Theme.js +5 -2
- package/runtime/arcane/entities/User.js +11 -11
- package/runtime/arcane/entities/Weather.js +5 -2
- package/runtime/arcane/modules/AI.js +503 -187
- package/runtime/arcane/modules/AIPreferenceRuntime.js +5 -2
- package/runtime/arcane/modules/AIPreferenceTuple.js +9 -6
- package/runtime/arcane/modules/AIProviderRuntime.js +117 -92
- package/runtime/arcane/modules/AIResponseURLPolicy.js +148 -62
- package/runtime/arcane/modules/AIRuntimeState.js +29 -26
- package/runtime/arcane/modules/AnsiText.js +4 -1
- package/runtime/arcane/modules/ApiModelDatabase.js +22 -19
- package/runtime/arcane/modules/AppDataScope.js +8 -5
- package/runtime/arcane/modules/ArcaneCommunicationBridge.js +4 -1
- package/runtime/arcane/modules/ArcaneNavigationPolicy.js +8 -5
- package/runtime/arcane/modules/ArcaneNetworkPolicy.js +18 -15
- package/runtime/arcane/modules/AsyncBoundary.js +13 -10
- package/runtime/arcane/modules/BrowserTestSuite.js +19 -16
- package/runtime/arcane/modules/CalculatorEngine.js +5 -2
- package/runtime/arcane/modules/ChatRecords.js +18 -15
- package/runtime/arcane/modules/CommunicationAppController.js +9 -6
- package/runtime/arcane/modules/CommunicationHub.js +9 -6
- package/runtime/arcane/modules/CommunicationPreferences.js +4 -1
- package/runtime/arcane/modules/CommunicationProviderRegistry.js +4 -1
- package/runtime/arcane/modules/ComponentContracts.js +56 -53
- package/runtime/arcane/modules/ConfiguredAIChatSession.js +30 -27
- package/runtime/arcane/modules/ConversationActionItems.js +15 -12
- package/runtime/arcane/modules/ConversationClosingReport.js +11 -8
- package/runtime/arcane/modules/ConversationTimebox.js +28 -25
- package/runtime/arcane/modules/CoreLocalModelCatalog.js +17 -14
- package/runtime/arcane/modules/DBLS.js +7 -4
- package/runtime/arcane/modules/DBOPFS.js +7 -7
- package/runtime/arcane/modules/DBOPFSDocumentLibrary.js +34 -31
- package/runtime/arcane/modules/DevelopmentWorkspace.js +4 -1
- package/runtime/arcane/modules/DirectoryPicker.js +8 -5
- package/runtime/arcane/modules/DocumentLexicalSearch.js +11 -8
- package/runtime/arcane/modules/DocumentNavigation.js +7 -4
- package/runtime/arcane/modules/Errors.js +28 -25
- package/runtime/arcane/modules/HTMLImport.js +7 -4
- package/runtime/arcane/modules/IsolatedModelQuestionRunner.js +15 -12
- package/runtime/arcane/modules/LocalAIReadiness.js +21 -18
- package/runtime/arcane/modules/LocalAIReadinessController.js +6 -3
- package/runtime/arcane/modules/MD.js +1 -1
- package/runtime/arcane/modules/Mail.js +46 -43
- package/runtime/arcane/modules/MailOutbox.mjs +48 -45
- package/runtime/arcane/modules/MailTransport.mjs +29 -26
- package/runtime/arcane/modules/MarkdownSpeech.js +1 -50
- package/runtime/arcane/modules/MemoryRecords.js +7 -4
- package/runtime/arcane/modules/MessageAdvisory.js +6 -3
- package/runtime/arcane/modules/ModelDefinition.js +7 -4
- package/runtime/arcane/modules/Ollama.js +6 -3
- package/runtime/arcane/modules/OllamaModelIdentifier.js +4 -1
- package/runtime/arcane/modules/OpenMeteoWeatherProvider.js +18 -15
- package/runtime/arcane/modules/PersistentAIChatSession.js +33 -30
- package/runtime/arcane/modules/PreferenceStore.js +20 -17
- package/runtime/arcane/modules/PreparedSpeech.js +485 -0
- package/runtime/arcane/modules/Questionnaire.js +6 -3
- package/runtime/arcane/modules/RecordLinkIndex.js +4 -1
- package/runtime/arcane/modules/RecordPassageIndex.js +9 -6
- package/runtime/arcane/modules/RecordReviewStore.js +12 -9
- package/runtime/arcane/modules/RiskSignalAnalyzer.js +4 -1
- package/runtime/arcane/modules/ScopedOPFSCache.js +6 -3
- package/runtime/arcane/modules/ScreenCapture.js +20 -17
- package/runtime/arcane/modules/SpeechPlayback.js +61 -28
- package/runtime/arcane/modules/StaticDocumentCatalog.js +33 -30
- package/runtime/arcane/modules/SystemAppearance.js +5 -2
- package/runtime/arcane/modules/SystemToolRegistry.js +6 -3
- package/runtime/arcane/modules/TerminalClient.js +14 -11
- package/runtime/arcane/modules/TerminalCommandRegistry.js +4 -1
- package/runtime/arcane/modules/ThemeBootstrap.js +9 -6
- package/runtime/arcane/modules/ThemeManager.js +5 -2
- package/runtime/arcane/modules/TimeGuard.js +1 -1
- package/runtime/arcane/modules/ToolCallRouter.js +11 -8
- package/runtime/arcane/modules/WaitForComponent.js +19 -16
- package/runtime/arcane/modules/YouTubeMedia.js +4 -1
- package/runtime/strong-type/index.js +1276 -352
- package/runtime/strong-type/package.json +69 -45
- package/src/app-descriptor.mjs +17 -14
- package/src/application-tests.mjs +4 -1
- package/src/cli/main.mjs +8 -5
- package/src/constants.mjs +4 -1
- package/src/dev-server.mjs +8 -5
- package/src/doctor.mjs +5 -2
- package/src/dom-event-instrumentation.mjs +24 -20
- package/src/errors.mjs +7 -3
- package/src/event-manager.mjs +111 -108
- package/src/event-queue.mjs +8 -5
- package/src/events.mjs +12 -9
- package/src/import-map.mjs +36 -27
- package/src/installed-sdk-runtime.mjs +4 -1
- package/src/integrated-provider-loader.mjs +9 -6
- package/src/mail-credentials.mjs +16 -13
- package/src/mail-server.mjs +53 -50
- package/src/mail.mjs +18 -15
- package/src/native-plan.mjs +12 -9
- package/src/native-provider-loader.mjs +7 -4
- package/src/packager/core.mjs +18 -15
- package/src/process.mjs +6 -3
- package/src/release-bundle.mjs +14 -11
- package/src/runtime.mjs +4 -1
- package/src/scaffold.mjs +9 -6
- package/src/sdk-browser-runtime.mjs +4 -1
- package/src/source-server.mjs +17 -14
- package/src/targets/index.mjs +5 -2
- package/src/templates/workspace-template.mjs +13 -6
- package/src/testing-loader.mjs +7 -4
- package/src/testing.mjs +10 -7
- package/src/toolchain.mjs +13 -10
- package/src/update-check.mjs +9 -6
- package/src/workspace-operation-lock.mjs +14 -11
- package/src/workspace-runtime.mjs +4 -1
- package/src/workspace.mjs +17 -14
- package/runtime/arcane/modules/AIResponseLength.js +0 -32
|
@@ -5,12 +5,12 @@
|
|
|
5
5
|
"repository": "https://github.com/TheWizardNexus/arcane-os-sdk.git",
|
|
6
6
|
"branch": "main",
|
|
7
7
|
"path": "runtime/arcane",
|
|
8
|
-
"sdkVersion": "0.5.
|
|
8
|
+
"sdkVersion": "0.5.18",
|
|
9
9
|
"protocol": "arcane/1"
|
|
10
10
|
},
|
|
11
11
|
"artifactCount": 85,
|
|
12
12
|
"javascriptArtifactCount": 83,
|
|
13
|
-
"esmExportCount":
|
|
13
|
+
"esmExportCount": 352,
|
|
14
14
|
"artifacts": [
|
|
15
15
|
{
|
|
16
16
|
"file": "runtime/arcane/modules/AI.js",
|
|
@@ -29,8 +29,8 @@
|
|
|
29
29
|
"summary": "Owns provider-selectable chat and the one-time caller-authority browser STT/TTS configuration, lifecycle, synthesis, transcription, and playback boundary.",
|
|
30
30
|
"availability": "Browser + native bridge + TWiN Cloud",
|
|
31
31
|
"protocol": "arcane-ai-browser-speech-configuration/1, AIProviderRuntime arcane-ai-provider/2 routes, globalThis.arcaneEvents, TWiN Cloud HTTPS, Arcane.ollama, Arcane.speech, Android WebView bridge",
|
|
32
|
-
"normalization": "Complete mutable caller-owned browser speech authority, SDK-owned provider registration/replacement/disposal, explicit STT/TTS activation, normalized Kokoro TTS execution with default capacity 4, explicit provider-neutral execution snapshots through status(role,{execution:true}), sticky readiness, canonical window.user readiness without compatibility-event object-identity admission or polling, exact ordered structural calls with required arguments.message, atomic nonblank all-ID tool-result sequencing, complete all-choice streaming/data validation, native Ollama structural adaptation, complete-response then all validated tool callbacks then completion ordering, observed async callbacks, Blob/File transcription, immediate exact-segment synthesis, per-call voice/speed capture, optional final-segment pause on the existing audio clock, optional per-call terminal playback completion, ordered audio-clock scheduling, playable audio, active-generation TTS operation-failure routing, mute, and cancellation are normalized; provider/model/runtime/voice policy remains caller-owned.",
|
|
33
|
-
"surface": "Browser-speech protocol/event/error/reason constants; default `AI`; read-only `providerRuntime`, `browserSpeechConfiguration`, and `browserSpeechDescriptor`; explicit `providerRuntime.status(role,{execution:true})` snapshots; `streamTTS(text,end,options={})` with optional voice, speed, pauseAfterMs, waitForPlayback
|
|
32
|
+
"normalization": "Complete mutable caller-owned browser speech authority, SDK-owned provider registration/replacement/disposal, explicit STT/TTS activation, normalized Kokoro TTS execution with default capacity 4, explicit provider-neutral execution snapshots through status(role,{execution:true}), sticky readiness, canonical window.user readiness without compatibility-event object-identity admission or polling, exact ordered structural calls with required arguments.message, atomic nonblank all-ID tool-result sequencing, complete all-choice streaming/data validation, native Ollama structural adaptation, complete-response then all validated tool callbacks then completion ordering, observed async callbacks, Blob/File transcription, automatic repeated-formatting-mark removal from cloned outbound TTS input while caller and visible content stays exact, immediate exact-segment synthesis, per-call voice/speed capture, optional final-segment pause on the existing audio clock, optional per-call terminal playback completion, detached preparation with complete semantic DBOPFS audio reuse and same-owner pending request sharing, independent prepared playback without a model load for cached audio, ordered audio-clock scheduling, playable audio, active-generation TTS operation-failure routing, mute, and cancellation are normalized; provider/model/runtime/voice policy remains caller-owned.",
|
|
33
|
+
"surface": "Browser-speech protocol/event/error/reason constants; default `AI`; read-only `providerRuntime`, `browserSpeechConfiguration`, and `browserSpeechDescriptor`; explicit `providerRuntime.status(role,{execution:true})` snapshots; `streamTTS(text,end,options={})` with optional voice, speed, pauseAfterMs, and waitForPlayback; automatic speech-input cleanup with SDK-internal preparation metadata; `prepareTTS({parts,storage,identity,signal,onState})` returning ordered segments, state, ready, getAudio(index), and cancel(); `playPreparedTTS(prepared,{signal,onState})` returning state, error, finished, pause(), resume(), and stop() with one playback lane per AI and observational state/error callbacks; configure/dispose speech, route lifecycle, declaration-validated chat/stream requests with exact ordered calls, synthesis/transcription, and playback controls; initializes from current canonical user readiness, installs `window.ai`, and projects `ai-ready` plus active-generation `ai-tts-failure`."
|
|
34
34
|
},
|
|
35
35
|
{
|
|
36
36
|
"file": "runtime/arcane/modules/AIPreferenceRuntime.js",
|
|
@@ -76,25 +76,8 @@
|
|
|
76
76
|
"summary": "Provider-neutral selection, lifecycle, routing, startup, request, streaming, cancellation, and independent LLM/STT/TTS state.",
|
|
77
77
|
"availability": "Cross-host in-process runtime; registered providers remain browser, native, or cloud specific",
|
|
78
78
|
"protocol": "arcane-ai-runtime/2, arcane-ai-provider/2, arcane-ai-model-authority/1",
|
|
79
|
-
"normalization": "Normalizes mutable complete per-role routes, lifecycle/status, cancellation, streaming cleanup, capacity-1 FIFO LLM/STT lanes, bounded provider-declared parallel TTS requests with FIFO overflow, local-only selection, direct LLM history/declaration/terminal structural contracts, complete all-choice content/reasoning FIFO iteration, private automatic provider draining with result-first buffering, terminal-only structural calls, exact per-choice observed/terminal correlation, and a separate complete validated terminal result without creating a fallback.",
|
|
80
|
-
"surface": "Protocol constants; singleton-only `AIProviderRuntime`; `aiProviderRuntime`; `getAIProviderRuntime()`; provider registration/identity/selection, closed three-role and STT/TTS-only validation/configuration/replacement, status/catalog/inspection, startup, per-role load/unload/dispose/cancel, dispose-all, request/stream/speech aliases, and mute controls."
|
|
81
|
-
},
|
|
82
|
-
{
|
|
83
|
-
"file": "runtime/arcane/modules/AIResponseLength.js",
|
|
84
|
-
"name": "AIResponseLength.js",
|
|
85
|
-
"kind": "esm",
|
|
86
|
-
"exports": [
|
|
87
|
-
"AI_RESPONSE_LENGTH_DEFAULT",
|
|
88
|
-
"AI_RESPONSE_LENGTH_OPTIONS",
|
|
89
|
-
"aiResponseLengthInstruction",
|
|
90
|
-
"applyAIResponseLength",
|
|
91
|
-
"normalizeAIResponseLength"
|
|
92
|
-
],
|
|
93
|
-
"summary": "Normalizes low/medium/high response-preference selectors while leaving complete prompts unchanged.",
|
|
94
|
-
"availability": "Cross-host",
|
|
95
|
-
"protocol": "In-process only",
|
|
96
|
-
"normalization": "Selectors normalize to low, medium, or high; every label is Complete, the instruction is empty, and prompt content remains unchanged.",
|
|
97
|
-
"surface": "Response-preference constants plus `normalizeAIResponseLength()`, `aiResponseLengthInstruction()`, and `applyAIResponseLength()`."
|
|
79
|
+
"normalization": "Normalizes mutable complete per-role routes, lifecycle/status, cancellation, streaming cleanup, capacity-1 FIFO LLM/STT lanes, bounded provider-declared parallel TTS requests with FIFO overflow, automatic repeated-formatting-mark removal from cloned direct TTS payloads, local-only selection, direct LLM history/declaration/terminal structural contracts, complete all-choice content/reasoning FIFO iteration, private automatic provider draining with result-first buffering, terminal-only structural calls, exact per-choice observed/terminal correlation, and a separate complete validated terminal result without creating a fallback.",
|
|
80
|
+
"surface": "Protocol constants; singleton-only `AIProviderRuntime`; `aiProviderRuntime`; `getAIProviderRuntime()`; provider registration/identity/selection, closed three-role and STT/TTS-only validation/configuration/replacement, status/catalog/inspection, startup, per-role load/unload/dispose/cancel, dispose-all, request/stream/speech aliases, SDK-internal speech-input preparation metadata, and mute controls."
|
|
98
81
|
},
|
|
99
82
|
{
|
|
100
83
|
"file": "runtime/arcane/modules/AIResponseURLPolicy.js",
|
|
@@ -108,8 +91,8 @@
|
|
|
108
91
|
],
|
|
109
92
|
"summary": "Extracts and audits links from AI Markdown, rendered HTML, CSS, srcset, bare URLs, and email text.",
|
|
110
93
|
"availability": "Cross-host",
|
|
111
|
-
"protocol": "In-process; bundled Marked parser",
|
|
112
|
-
"normalization": "
|
|
94
|
+
"protocol": "In-process; bundled Marked parser and native HTML parsing when a document is available",
|
|
95
|
+
"normalization": "Mutable audit with exact link comparison after entity and Markdown escape decoding, without URI canonicalization or response mutation. Browsers use native HTML parsing; hosts without a document retain lexical extraction and the existing limited entity decoder. Already decoded rendered values are not decoded again. Authored links retain source offsets; DOM-only attribute links use document order after authored links.",
|
|
113
96
|
"surface": "`auditAIResponseLinks()`, `extractAIResponseLinks()`, `normalizeAIResponseLink()`, `decodeHTMLCharacterReferences()`."
|
|
114
97
|
},
|
|
115
98
|
{
|
|
@@ -831,10 +814,10 @@
|
|
|
831
814
|
"exports": [
|
|
832
815
|
"MarkdownSpeech"
|
|
833
816
|
],
|
|
834
|
-
"summary": "
|
|
817
|
+
"summary": "Re-exports the shared MarkdownSpeech class that removes repeated same formatting marks from streamed narration before speech segmentation.",
|
|
835
818
|
"availability": "Cross-host",
|
|
836
|
-
"protocol": "
|
|
837
|
-
"normalization": "
|
|
819
|
+
"protocol": "Shared arcane-os/speech-text package entrypoint",
|
|
820
|
+
"normalization": "The runtime projection and public package subpath share speech-only filtering of repeated *, #, _, backtick, and ~ runs across chunks; single marks and all other characters remain literal; terminal flush and reset clear pending formatting state.",
|
|
838
821
|
"surface": "`MarkdownSpeech`; `append(text='',end=false)`, `reset()`."
|
|
839
822
|
},
|
|
840
823
|
{
|
|
@@ -1018,6 +1001,19 @@
|
|
|
1018
1001
|
"normalization": "Complete ordinary values remain mutable; setAll uses one optional atomic adapter batch for every selected value when advertised, otherwise retains complete serial per-key compatibility, never retries a rejected dispatched batch serially, and only exact unsupported native capability changes future operations to the browser fallback.",
|
|
1019
1002
|
"surface": "Event/error constants, default `PreferenceStore`, re-exported `Preference`/schema; load/set/setAll/reset APIs, required adapter get/set/delete plus optional setMany, state-free EventTarget/on compatibility, and `dispose()`."
|
|
1020
1003
|
},
|
|
1004
|
+
{
|
|
1005
|
+
"file": "runtime/arcane/modules/PreparedSpeech.js",
|
|
1006
|
+
"name": "PreparedSpeech.js",
|
|
1007
|
+
"kind": "esm",
|
|
1008
|
+
"exports": [
|
|
1009
|
+
"prepareSpeech"
|
|
1010
|
+
],
|
|
1011
|
+
"summary": "Owns detached ordered speech preparation, complete semantic audio reuse, and per-caller cancellation behind AI.prepareTTS.",
|
|
1012
|
+
"availability": "Browser or native WebView with Blob, AbortController, an injected synthesis callback, and optional ready DBOPFS",
|
|
1013
|
+
"protocol": "In-process preparation handle plus caller-owned DBOPFS raw audio and version-1 semantic manifest",
|
|
1014
|
+
"normalization": "Preserves complete original parts and JSON-compatible semantic context, shares pending matching work on the same owner/storage group, admits segments in order, stores complete Blobs and MIME metadata, retains successful audio after failure or cancellation, and separates generation readiness from playback.",
|
|
1015
|
+
"surface": "Named prepareSpeech({owner,parts,originalParts,selection,segmentation,storage,identity,signal,onState,synthesize}) returns {segments,state,ready,getAudio(index),cancel()}; applications use AI.prepareTTS and AI.playPreparedTTS so the shared AI owner retains segmentation, provider readiness, capacity, and playback."
|
|
1016
|
+
},
|
|
1021
1017
|
{
|
|
1022
1018
|
"file": "runtime/arcane/modules/QRCode.min.js",
|
|
1023
1019
|
"name": "QRCode.min.js",
|
|
@@ -1162,15 +1158,17 @@
|
|
|
1162
1158
|
"kind": "esm",
|
|
1163
1159
|
"exports": [
|
|
1164
1160
|
"SPEECH_PLAYBACK_STATE_EVENT",
|
|
1161
|
+
"SPEECH_VOICE_ALIASES",
|
|
1162
|
+
"SPEECH_VOICE_OPTIONS",
|
|
1165
1163
|
"SpeechPlayback",
|
|
1166
1164
|
"default",
|
|
1167
1165
|
"splitSpeechText"
|
|
1168
1166
|
],
|
|
1169
|
-
"summary": "Preserves exact nonblank segment text
|
|
1167
|
+
"summary": "Preserves exact nonblank stored segment text; removes repeated formatting marks from only each outbound synthesis copy; eagerly submits complete parts to a capacity-advertising fetchTTS provider while keeping playback indexed; and retains serialized one-segment lookahead for other clients.",
|
|
1170
1168
|
"availability": "Browser + compatible AI/native bridge",
|
|
1171
1169
|
"protocol": "AI.fetchTTS plus providerRuntime TTS execution capacity, or compatible serialized Arcane.speech.synthesize; globalThis.arcaneEvents, Blob URLs, audio element",
|
|
1172
|
-
"normalization": "Exact nonblank split/part input strings are preserved in mutable records. A capable provider receives complete segments immediately and owns bounded FIFO admission; URLs and playback stay in exact input order. Native/custom clients remain serialized. Cancellation, Replay recovery, Blob results, and lifecycle state are normalized; provider failures remain external.",
|
|
1173
|
-
"surface": "SpeechPlayback class/default, `SPEECH_PLAYBACK_STATE_EVENT`, `splitSpeechText()`, canonical playback lifecycle events, cancellation, and destroy APIs."
|
|
1170
|
+
"normalization": "Exact nonblank split/part input strings are preserved in mutable records. Each synthesis request clones that part, removes repeated formatting marks from only the outbound input, and carries SDK-internal preparation metadata to prevent a second cleanup pass. A capable provider receives complete segments immediately and owns bounded FIFO admission; URLs and playback stay in exact input order. Native/custom clients remain serialized. Canonical state dispatch precedes the optional synchronous onState callback. Cancellation, Replay recovery, Blob results, and lifecycle state are normalized; provider failures remain external.",
|
|
1171
|
+
"surface": "SpeechPlayback class/default, mutable `SPEECH_VOICE_OPTIONS` records, mutable `SPEECH_VOICE_ALIASES` membership, `SPEECH_PLAYBACK_STATE_EVENT`, optional constructor `onState(detail)`, `splitSpeechText()`, canonical playback lifecycle events, cancellation, and destroy APIs."
|
|
1174
1172
|
},
|
|
1175
1173
|
{
|
|
1176
1174
|
"file": "runtime/arcane/modules/StaticDocumentCatalog.js",
|
|
@@ -61,11 +61,13 @@ explicit identity fails, and the selected page then must pass exact path-relativ
|
|
|
61
61
|
base validation.
|
|
62
62
|
Included HTML with neither signal is a component fragment and remains a
|
|
63
63
|
complete package file.
|
|
64
|
-
`arcane-os/preference-store` and
|
|
65
|
-
|
|
66
|
-
exports and managed browser keys
|
|
67
|
-
|
|
68
|
-
|
|
64
|
+
`arcane-os/preference-store` and `arcane-os/speech-playback` are the two
|
|
65
|
+
portable subpaths that resolve directly to canonical runtime-module namespaces
|
|
66
|
+
from both Node package exports and managed browser keys;
|
|
67
|
+
`arcane/PreferenceStore` and `arcane/SpeechPlayback` remain their established
|
|
68
|
+
browser import-map names. The additional portable `arcane-os/speech-text`
|
|
69
|
+
subpath owns shared speech-input cleanup and has the same
|
|
70
|
+
managed browser key. There is
|
|
69
71
|
no exported `importMapApplication()` function, `generateImportMap()` function, or
|
|
70
72
|
`arcane-os/import-map` package subpath.
|
|
71
73
|
|
|
@@ -159,7 +161,7 @@ imports such as:
|
|
|
159
161
|
import ollama from 'arcane/Ollama';
|
|
160
162
|
```
|
|
161
163
|
|
|
162
|
-
The physical-v1 tree lives entirely beneath `arcane/`. SDK `0.5.
|
|
164
|
+
The physical-v1 tree lives entirely beneath `arcane/`. SDK `0.5.17` projects the
|
|
163
165
|
complete canonical runtime and browser runtime selected by the installed SDK
|
|
164
166
|
package. Runtime dependencies stay under
|
|
165
167
|
`arcane/dependencies/`; the SDK event and browser-AI closure stays under
|
|
@@ -174,13 +176,13 @@ integrated physical route uses the same ordered include list in its one route.
|
|
|
174
176
|
Omitting only that final optional entry is compatible. Removing, reordering, or
|
|
175
177
|
renaming any preceding entry changes the physical contract.
|
|
176
178
|
|
|
177
|
-
The `0.5.
|
|
179
|
+
The `0.5.17` map derives its complete entries from the selected runtime graph;
|
|
178
180
|
application source imports do not select a fixed entry count. The operation
|
|
179
181
|
result reports `imports`, `entryCount`, and `excludedModules`; reached-file
|
|
180
182
|
traversal remains internal. The
|
|
181
183
|
managed graph exposes `arcane-os/event-manager`, `arcane-os/ai/browser-wasm`,
|
|
182
184
|
`arcane-os/ai/browser-speech`, `arcane-os/preference-store`, and
|
|
183
|
-
`arcane-os/speech-playback`; dependency compatibility mappings are added when
|
|
185
|
+
`arcane-os/speech-playback` plus `arcane-os/speech-text`; dependency compatibility mappings are added when
|
|
184
186
|
runtime or SDK root traversal observes them.
|
|
185
187
|
|
|
186
188
|
The focused physical targets remain stable when their bindings are reached:
|
|
@@ -190,6 +192,7 @@ The focused physical targets remain stable when their bindings are reached:
|
|
|
190
192
|
| `arcane-os/event-manager` | `./arcane/sdk/event-manager.mjs` |
|
|
191
193
|
| `arcane-os/ai/browser-wasm` | `./arcane/sdk/ai/browser-wasm.mjs` |
|
|
192
194
|
| `arcane-os/ai/browser-speech` | `./arcane/sdk/ai/browser-speech.mjs` |
|
|
195
|
+
| `arcane-os/speech-text` | `./arcane/sdk/speech-text.mjs` |
|
|
193
196
|
| `arcane-os/preference-store` | `./arcane/modules/PreferenceStore.js` |
|
|
194
197
|
| `arcane-os/speech-playback` | `./arcane/modules/SpeechPlayback.js` |
|
|
195
198
|
| `event-pubsub` | `./arcane/sdk/dependencies/event-pubsub/index.js` |
|
|
@@ -202,8 +205,9 @@ invented package bindings. Development serves the selected app plus the
|
|
|
202
205
|
complete selected tree.
|
|
203
206
|
Packaging copies the same map, app entry, and physical content into `dist/<id>`;
|
|
204
207
|
targets never resolve through the consumer workspace's root `node_modules/`.
|
|
205
|
-
The two lowercase static runtime package specifiers above
|
|
206
|
-
package exports, so Node and managed-browser
|
|
208
|
+
The two lowercase static runtime package specifiers above and the shared
|
|
209
|
+
speech-text helper are exact npm package exports, so Node and managed-browser
|
|
210
|
+
source can share those specifiers
|
|
207
211
|
without data URLs, copied modules, or a consumer-owned loader.
|
|
208
212
|
|
|
209
213
|
`generateImportMap()` is an internal toolchain operation, not a package export.
|
|
@@ -239,8 +243,8 @@ exactly `dependencyName`, `packageSource`,
|
|
|
239
243
|
`canonicalPackageRoot`, `packageName`, `packageVersion`, `runtimeRoot`,
|
|
240
244
|
and `browserRuntimeRoot`. A
|
|
241
245
|
workspace may use the canonical dependency name or one exact npm alias such as
|
|
242
|
-
`npm:arcane-os@0.5.
|
|
243
|
-
exactly as `arcane-os@0.5.
|
|
246
|
+
`npm:arcane-os@0.5.17`; the physical package manifest must still identify
|
|
247
|
+
exactly as `arcane-os@0.5.17`. Canonical-plus-alias duplicates, multiple aliases,
|
|
244
248
|
links/junctions, indirect package roots, or version drift are reported.
|
|
245
249
|
|
|
246
250
|
For external workspaces, `arcane dev` serves the projected `arcane/` root,
|
|
@@ -351,7 +355,7 @@ does not silently delete the app-owned cache. A complete whole member supersedes
|
|
|
351
355
|
its current resumable fragments. Cleanup failure is warned without hiding the
|
|
352
356
|
usable model.
|
|
353
357
|
|
|
354
|
-
SDK `0.5.
|
|
358
|
+
SDK `0.5.17` requires WebGPU. Load requests full offload and waits for the runtime
|
|
355
359
|
to report a loaded model. `navigator.gpu` presence alone is
|
|
356
360
|
not readiness. There is no CPU fallback, partial-offload success mode, or
|
|
357
361
|
silent switch to native/Core/cloud inference.
|
|
@@ -366,14 +366,15 @@ terminal result of the segments submitted by one invocation; Chat continues
|
|
|
366
366
|
to feed chunks without waiting for playback. Runtime mute, cancellation,
|
|
367
367
|
permission waiting, and stale generations remain non-errors.
|
|
368
368
|
|
|
369
|
-
Each visible model chunk is forwarded to
|
|
370
|
-
|
|
371
|
-
|
|
369
|
+
Each visible model chunk is forwarded to `AI.streamTTS(text)` in arrival
|
|
370
|
+
order. The AI owner automatically removes repeated formatting marks from an
|
|
371
|
+
outbound speech-input copy before the
|
|
372
372
|
configured segmentation, admits completed segments to bounded synthesis
|
|
373
373
|
immediately, and schedules the contiguous ready audio prefix on the audio
|
|
374
374
|
clock. Chat retains the original Markdown for display and storage and owns no
|
|
375
|
-
second speech queue.
|
|
376
|
-
language, and voice retain their
|
|
375
|
+
second speech queue. No app option selects or disables this cleanup. Single
|
|
376
|
+
punctuation, ordinary repeated punctuation, language, and voice retain their
|
|
377
|
+
existing behavior.
|
|
377
378
|
|
|
378
379
|
Events: `chat-ready`, `chat-session-bound`, `chat-session-message`,
|
|
379
380
|
`chat-session-error`, `chat-send-message`, `chat-send-error`,
|