From 7c99ef2cc7530b458df3736d2579dda5e83f88b2 Mon Sep 17 00:00:00 2001 From: tiye Date: Thu, 3 Sep 2026 00:50:45 +0800 Subject: [PATCH] fix: narrow browser and extension boundaries --- .gitattributes | 4 +- .github/workflows/upload.yaml | 4 +- calcit.cirru | 234 +++-- config/calcit-quality.cirru | 770 +++++++++++++++++ config/calcit-quality.json | 810 ------------------ deps.cirru | 14 +- history/202609030040-typed-host-boundaries.md | 18 + package.json | 4 +- yarn.lock | 10 +- 9 files changed, 968 insertions(+), 900 deletions(-) create mode 100644 config/calcit-quality.cirru delete mode 100644 config/calcit-quality.json create mode 100644 history/202609030040-typed-host-boundaries.md diff --git a/.gitattributes b/.gitattributes index f4d5078..7651c95 100644 --- a/.gitattributes +++ b/.gitattributes @@ -1,7 +1,9 @@ yarn.lock -diff linguist-generated +config/calcit-quality.cirru text -diff linguist-generated + Agents.md -diff linguist-generated llms/*.md -diff linguist-generated -history/*.md -diff linguist-generated \ No newline at end of file +history/*.md -diff linguist-generated diff --git a/.github/workflows/upload.yaml b/.github/workflows/upload.yaml index 05bd618..c456ec4 100644 --- a/.github/workflows/upload.yaml +++ b/.github/workflows/upload.yaml @@ -27,7 +27,7 @@ jobs: tools: calcit,caps - name: Resolve Calcit dependencies - run: caps --ci + run: caps --strict --ci - name: Install JavaScript dependencies run: yarn install --immutable @@ -36,7 +36,7 @@ jobs: run: calcit calcit.cirru --check-only - name: Check Calcit quality baseline - run: calcit calcit.cirru analyze quality --baseline config/calcit-quality.json + run: calcit calcit.cirru analyze quality --baseline config/calcit-quality.cirru - name: Compile Calcit JavaScript run: calcit calcit.cirru js diff --git a/calcit.cirru b/calcit.cirru index dc5ee45..f8acb60 100644 --- a/calcit.cirru +++ b/calcit.cirru @@ -32,6 +32,39 @@ :code $ quote (defatom *viewing-archive-session false) :examples $ [] :schema $ :: 'Ref + 'DomTokenListHost $ %{} 'CodeEntry (:doc |) + :code $ quote + deftrait DomTokenListHost + .contains? $ :: 'Fn + {} + :args $ [] 'app.comp.container/DomTokenListHost 'String + :return 'Bool + .add! $ :: 'Fn + {} + :args $ [] 'app.comp.container/DomTokenListHost 'String + :return 'Unit + .remove! $ :: 'Fn + {} + :args $ [] 'app.comp.container/DomTokenListHost 'String + :return 'Unit + :examples $ [] + :ffi $ {} (:backend :js) (:kind :external-object) (:target :browser) + :names $ {} (:add! |add) (:contains? |contains) (:remove! |remove) + :schema $ :: 'Trait + 'FocusEventHost $ %{} 'CodeEntry (:doc |) + :code $ quote + deftrait FocusEventHost $ :target (:: 'JsNullish 'app.comp.container/FocusTargetHost) + :examples $ [] + :ffi $ {} (:backend :js) (:kind :external-object) (:target :browser) + :schema $ :: 'Trait + 'FocusTargetHost $ %{} 'CodeEntry (:doc |) + :code $ quote + deftrait FocusTargetHost + :parentElement $ :: 'JsNullish 'app.comp.container/FocusTargetHost + :classList 'app.comp.container/DomTokenListHost + :examples $ [] + :ffi $ {} (:backend :js) (:kind :external-object) (:target :browser) + :schema $ :: 'Trait 'StreamChunk $ %{} 'CodeEntry (:doc |) :code $ quote defstruct StreamChunk (:text 'String) (:thinking? 'Bool) @@ -955,38 +988,8 @@ option:unwrap-or (get e :ctrl?) false on-submit (:content state) (:search? state) (:think? state) d! , &unit - :on-focus $ fn (e d!) - let - target $ unsafe-coerce - .-target $ option:unwrap-or (get e :event) js/undefined - , 'Dynamic - parent $ unsafe-coerce (.-parentElement target) 'Dynamic - box $ unsafe-coerce (.-parentElement parent) 'Dynamic - class-list $ unsafe-coerce (.-classList target) 'Dynamic - box-class $ unsafe-coerce (.-classList box) 'Dynamic - if - not $ unsafe-coerce (.!contains class-list |focus-within) 'Bool - .!add class-list |focus-within - if - not $ unsafe-coerce (.!contains box-class |focus-within) 'Bool - .!add box-class |focus-within - , &unit - :on-blur $ fn (e d!) - let - target $ unsafe-coerce - .-target $ option:unwrap-or (get e :event) js/undefined - , 'Dynamic - parent $ unsafe-coerce (.-parentElement target) 'Dynamic - box $ unsafe-coerce (.-parentElement parent) 'Dynamic - class-list $ unsafe-coerce (.-classList target) 'Dynamic - box-class $ unsafe-coerce (.-classList box) 'Dynamic - if - unsafe-coerce (.!contains class-list |focus-within) 'Bool - .!remove class-list |focus-within - if - unsafe-coerce (.!contains box-class |focus-within) 'Bool - .!remove box-class |focus-within - , &unit + :on-focus $ fn (e d!) (toggle-focus-within! e true) &unit + :on-blur $ fn (e d!) (toggle-focus-within! e false) &unit if not $ :focus-mode? state do (=< nil 4) @@ -1451,8 +1454,8 @@ %{} app.schema/ChatState :answer $ stream-text option:unwrap-or (get data :answer) | - :loading? $ if (bool? loading-value) loading-value false - :done? $ if (bool? done-value) done-value true + :loading? $ case-default loading-value false (true true) (false false) + :done? $ case-default done-value true (true true) (false false) :messages $ unsafe-coerce option:unwrap-or (get data :messages) ([]) :: 'List 'app.schema/ChatMessage @@ -1951,6 +1954,45 @@ {} (:return 'Dynamic) :args $ [] 'List 'app.schema/ChatState 'String 'Bool 'Bool 'Tag 'Dynamic :features $ #{} :js-ffi + 'toggle-focus-within! $ %{} 'CodeEntry (:doc |) + :code $ quote + defn toggle-focus-within! (respo-event active?) + let + raw-event $ option:unwrap-or (get respo-event :event) js/undefined + when (js-present-dynamic? raw-event) + let + event $ unsafe-coerce raw-event FocusEventHost + target0 $ .-target event + when (js-present? target0) + let + target $ unsafe-coerce target0 FocusTargetHost + parent0 $ .-parentElement target + when (js-present? parent0) + let + parent $ unsafe-coerce parent0 FocusTargetHost + box0 $ .-parentElement parent + when (js-present? box0) + let + box $ unsafe-coerce box0 FocusTargetHost + class-list $ .-classList target + box-class $ .-classList box + if active? + do + when + not $ class-list .contains? |focus-within + class-list .add! |focus-within + when + not $ box-class .contains? |focus-within + box-class .add! |focus-within + do + when (class-list .contains? |focus-within) (class-list .remove! |focus-within) + when (box-class .contains? |focus-within) (box-class .remove! |focus-within) + , &unit + :examples $ [] + :schema $ :: 'Fn + {} (:return 'Unit) + :args $ [] (:: 'Map 'Tag 'Dynamic) 'Bool + :features $ #{} :js-ffi 'upsert-assistant-message $ %{} 'CodeEntry (:doc |) :code $ quote defn upsert-assistant-message (messages content thinking) @@ -2028,6 +2070,22 @@ defatom *reel $ -> reel-schema/reel (assoc :base schema/store) (assoc :store schema/store) :examples $ [] :schema $ :: 'Ref + 'DocumentHost $ %{} 'CodeEntry (:doc |) + :code $ quote + deftrait DocumentHost $ :visibilityState (:: 'JsNullish 'String) + :examples $ [] + :ffi $ {} (:backend :js) (:kind :external-object) (:target :browser) + :schema $ :: 'Trait + 'ExtensionMessageHost $ %{} 'CodeEntry (:doc |) + :code $ quote + deftrait ExtensionMessageHost + :action $ :: 'JsNullish 'String + :content $ :: 'JsNullish 'String + :text $ :: 'JsNullish 'String + :submit? $ :: 'JsNullish 'Bool + :examples $ [] + :ffi $ {} (:backend :js) (:kind :external-object) (:target :browser) + :schema $ :: 'Trait 'connect-to-worker! $ %{} 'CodeEntry (:doc |) :code $ quote defn connect-to-worker! () $ when config/chrome-extension? @@ -2051,6 +2109,16 @@ reset! *reel $ reel-updater updater @*reel op :examples $ [] :schema $ :: 'Dynamic + 'extension-action $ %{} 'CodeEntry (:doc |) + :code $ quote + defn extension-action (message) + js-nullish->option $ .-action message + :examples $ [] + :schema $ :: 'Fn + {} + :args $ [] 'app.main/ExtensionMessageHost + :features $ #{} :js-ffi + :return $ :: 'Option 'String 'hydrate-storage-later! $ %{} 'CodeEntry (:doc |) :code $ quote defn hydrate-storage-later! () $ js/setTimeout @@ -2070,41 +2138,55 @@ 'listen-extension! $ %{} 'CodeEntry (:doc |) :code $ quote defn listen-extension! () - js/chrome.runtime.onMessage.addListener $ fn (message sender respond!) - when - = |menu-summary $ .-action message - let - content $ str "|你扮演一个专业的工程师, 对以下内容做一下讲解, 用中文, 注意要简略, 内容注意分块.\n\n" &newline &newline (.-content message) - event-tuple $ :: :fill-text - {} (:text content) (:submit? true) - send-to-component! event-tuple - when - = |fill-text $ .-action message - let - content $ .-text message - submit? $ let - raw-submit? $ .-submit? message - if (js-present? raw-submit?) (unsafe-coerce raw-submit? 'Bool) true - event-tuple $ :: :fill-text - {} (:text content) (:submit? submit?) - send-to-component! event-tuple - when - = |menu-translate $ .-action message - let - content $ str "|请将以下内容翻译成中文, 保持简洁分段:\n\n" &newline &newline (.-content message) - event-tuple $ :: :fill-text - {} (:text content) (:submit? true) - send-to-component! event-tuple - when - = |menu-custom $ .-action message - let - content $ .-content message - event-tuple $ :: :fill-text - {} (:text content) (:submit? false) - send-to-component! event-tuple + js/chrome.runtime.onMessage.addListener $ fn (raw-message sender respond!) + let + message $ unsafe-coerce raw-message ExtensionMessageHost + action $ option:unwrap-or (extension-action message) | + when (= |menu-summary action) + let + source $ option:unwrap-or + js-nullish->option $ .-content message + , | + content $ str "|你扮演一个专业的工程师, 对以下内容做一下讲解, 用中文, 注意要简略, 内容注意分块.\n\n" &newline &newline source + event-tuple $ :: :fill-text + {} (:text content) (:submit? true) + send-to-component! event-tuple + when (= |fill-text action) + let + content $ option:unwrap-or + js-nullish->option $ .-text message + , | + submit? $ option:unwrap-or + js-nullish->option $ .-submit? message + , true + event-tuple $ :: :fill-text + {} (:text content) (:submit? submit?) + send-to-component! event-tuple + when (= |menu-translate action) + let + source $ option:unwrap-or + js-nullish->option $ .-content message + , | + content $ str "|请将以下内容翻译成中文, 保持简洁分段:\n\n" &newline &newline source + event-tuple $ :: :fill-text + {} (:text content) (:submit? true) + send-to-component! event-tuple + when (= |menu-custom action) + let + content $ option:unwrap-or + js-nullish->option $ .-content message + , | + event-tuple $ :: :fill-text + {} (:text content) (:submit? false) + send-to-component! event-tuple + , &unit connect-to-worker! + , &unit :examples $ [] - :schema $ :: 'Dynamic + :schema $ :: 'Fn + {} (:return 'Unit) + :args $ [] + :features $ #{} :js-ffi 'main! $ %{} 'CodeEntry (:doc |) :code $ quote defn main! () $ let @@ -2119,7 +2201,12 @@ listen-devtools! |k dispatch! js/window.addEventListener |beforeunload $ fn (event) (persist-storage!) js/window.addEventListener |visibilitychange $ fn (event) - if (= |hidden js/document.visibilityState) (persist-storage!) + let + document $ unsafe-coerce js/document DocumentHost + visibility-state $ option:unwrap-or + js-nullish->option $ .-visibilityState document + , | + if (= |hidden visibility-state) (persist-storage!) js/window.addEventListener |dblclick $ fn (event) (.!preventDefault event) js/window.addEventListener |wheel fn (event) @@ -2127,13 +2214,14 @@ js-object $ :passive false hydrate-storage-later! if config/chrome-extension? $ listen-extension! - , sync-gemini-key! - let - t1 $ unsafe-coerce (js/Date.now) 'Number - println "|App started at" t1 |cost (- t1 t0) |ms + sync-gemini-key! + let + t1 $ unsafe-coerce (js/Date.now) 'Number + println "|App started at" t1 |cost (- t1 t0) |ms + , &unit :examples $ [] :schema $ :: 'Fn - {} (:return 'Dynamic) + {} (:return 'Unit) :args $ [] :features $ #{} :js-ffi 'mount-target $ %{} 'CodeEntry (:doc |) diff --git a/config/calcit-quality.cirru b/config/calcit-quality.cirru new file mode 100644 index 0000000..fa6f36b --- /dev/null +++ b/config/calcit-quality.cirru @@ -0,0 +1,770 @@ +{} (:schemaVersion 2) + :definitions $ {} + |app.comp.container/*abort-control $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 0 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/*archived-sessions $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 0 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/*gen-ai-new $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 0 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/*image-cache $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 0 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/*openai $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 0 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/*viewing-archive-session $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 0 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/call-anthropic-msg! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 0 + :unsafeCoerce 5 + |app.comp.container/call-flash-imagen-msg! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 0 + :unsafeCoerce 16 + |app.comp.container/call-genai-msg! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 0 + :unsafeCoerce 7 + |app.comp.container/call-imagen-4-msg! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 0 + :unsafeCoerce 10 + |app.comp.container/call-openrouter! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 0 + :unsafeCoerce 9 + |app.comp.container/clear-image-cache! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 1 + |app.comp.container/comp-abort $ {} (:codeDynamic 0) + :codeNil 1 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 2 + :unsafeCoerce 1 + |app.comp.container/comp-container $ {} (:codeDynamic 0) + :codeNil 9 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 9 + :unsafeCoerce 7 + |app.comp.container/comp-fill $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/comp-message-box $ {} (:codeDynamic 0) + :codeNil 3 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 3 + :unsafeCoerce 3 + |app.comp.container/comp-sessions-modal $ {} (:codeDynamic 0) + :codeNil 1 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 2 + |app.comp.container/create-session $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 0 + :unresolved 0 + :unsafeCoerce 1 + |app.comp.container/decode-genai-chunk $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 0 + :unresolved 0 + :unsafeCoerce 8 + |app.comp.container/download-sessions! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 0 + :unsafeCoerce 4 + |app.comp.container/effect-focus $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 2 + |app.comp.container/get-deepinfra-key! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/js-present-dynamic? $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 0 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 1 + |app.comp.container/messages->anthropic $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 0 + :unsafeCoerce 0 + |app.comp.container/messages->gemini $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 0 + :unsafeCoerce 0 + |app.comp.container/messages->openai $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 0 + :unsafeCoerce 0 + |app.comp.container/models-menu $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 0 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/normalize-chat-state $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 0 + :unresolved 0 + :unsafeCoerce 3 + |app.comp.container/on-fill $ {} (:codeDynamic 0) + :codeNil 1 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 3 + :typeNone 0 + :typeNotFull 1 + :unresolved 4 + :unsafeCoerce 0 + |app.comp.container/pattern-spaced-code $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/required-key! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 0 + :unresolved 0 + :unsafeCoerce 1 + |app.comp.container/style-a-toggler $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-abort-close $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-app-global $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-archive-close $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-archive-header $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-archive-row $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-checkbox $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-clear $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-code-content $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-delete-button $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-fill $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-focus-box $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-focus-link $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-gap12 $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-history-button $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-history-count $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-image $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-md-content $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-message-actions $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-message-area $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-message-assistant $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-message-box $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-message-box-panel $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-message-item $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-message-list $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-message-role $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-message-text $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-message-user $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-more $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-reply-actions $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-reply-button $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-session-item $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-sessions-list $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-submit $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-textbox $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-textbox-compact $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/style-thinking $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.comp.container/submit-message! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 0 + :unsafeCoerce 1 + |app.comp.container/toggle-focus-within! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 0 + :unsafeCoerce 4 + |app.main/*reel $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 0 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.main/connect-to-worker! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.main/dispatch! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.main/hydrate-storage-later! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 3 + |app.main/listen-extension! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 0 + :unresolved 0 + :unsafeCoerce 1 + |app.main/main! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 0 + :unresolved 0 + :unsafeCoerce 3 + |app.main/mount-target $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 0 + |app.main/persist-storage! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 0 + :unsafeCoerce 0 + |app.main/reload! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 2 + |app.main/render-app! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 1 + :typeNone 1 + :typeNotFull 1 + :unresolved 1 + :unsafeCoerce 2 + |app.main/sync-gemini-key! $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 1 + :unresolved 0 + :unsafeCoerce 0 + |app.schema/normalize-chat-session $ {} (:codeDynamic 0) + :codeNil 0 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 0 + :unresolved 0 + :unsafeCoerce 1 + |app.schema/store $ {} (:codeDynamic 0) + :codeNil 2 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 2 + :typeNone 0 + :typeNotFull 1 + :unresolved 4 + :unsafeCoerce 0 + |app.updater/updater $ {} (:codeDynamic 0) + :codeNil 3 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 0 + :typeNone 0 + :typeNotFull 0 + :unresolved 3 + :unsafeCoerce 1 + :metrics $ {} (:codeDynamic 0) + :codeNil 20 + :declaredOptional 0 + :deprecatedCalls 0 + :schemaDynamic 63 + :typeNone 49 + :typeNotFull 76 + :unresolved 83 + :unsafeCoerce 99 + :scope $ {} (:includeDependencies false) + :namespace nil + :namespacePrefix nil diff --git a/config/calcit-quality.json b/config/calcit-quality.json deleted file mode 100644 index 2a2d28a..0000000 --- a/config/calcit-quality.json +++ /dev/null @@ -1,810 +0,0 @@ -{ - "schemaVersion": 1, - "scope": { - "namespace": null, - "namespacePrefix": null, - "includeDependencies": false - }, - "metrics": { - "typeNone": 50, - "typeNotFull": 78, - "schemaDynamic": 65, - "codeDynamic": 0, - "codeNil": 41, - "unresolved": 106, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "definitions": { - "app.comp.container/*abort-control": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/*archived-sessions": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/*gen-ai-new": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/*image-cache": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/*openai": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/*viewing-archive-session": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/call-anthropic-msg!": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 5, - "unresolved": 5, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/call-flash-imagen-msg!": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 1, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/call-genai-msg!": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 3, - "unresolved": 3, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/call-imagen-4-msg!": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 1, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/call-openrouter!": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 3, - "unresolved": 3, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/clear-image-cache!": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/comp-abort": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 1, - "unresolved": 2, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/comp-container": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 16, - "unresolved": 16, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/comp-fill": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/comp-message-box": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 3, - "unresolved": 3, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/comp-sessions-modal": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 1, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/download-sessions!": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 0, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/effect-focus": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/get-deepinfra-key!": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/js-present-dynamic?": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/messages->anthropic": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 0, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/messages->gemini": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 0, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/messages->openai": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 0, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/models-menu": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/on-fill": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 3, - "codeDynamic": 0, - "codeNil": 1, - "unresolved": 4, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/pattern-spaced-code": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-a-toggler": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-abort-close": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-app-global": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-archive-close": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-archive-header": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-archive-row": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-checkbox": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-clear": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-code-content": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-delete-button": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-fill": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-focus-box": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-focus-link": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-gap12": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-history-button": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-history-count": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-image": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-md-content": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-message-actions": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-message-area": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-message-assistant": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-message-box": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-message-box-panel": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-message-item": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-message-list": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-message-role": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-message-text": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-message-user": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-more": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-reply-actions": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-reply-button": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-session-item": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-sessions-list": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-submit": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-textbox": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-textbox-compact": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/style-thinking": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/submit-message!": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 1, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.comp.container/upsert-assistant-message": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.main/*reel": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.main/connect-to-worker!": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.main/dispatch!": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.main/hydrate-storage-later!": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.main/listen-extension!": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.main/main!": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 0, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.main/mount-target": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.main/persist-storage!": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 0, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.main/reload!": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.main/render-app!": { - "typeNone": 1, - "typeNotFull": 1, - "schemaDynamic": 1, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 1, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.main/sync-gemini-key!": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 0, - "unresolved": 0, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.schema/store": { - "typeNone": 0, - "typeNotFull": 1, - "schemaDynamic": 2, - "codeDynamic": 0, - "codeNil": 2, - "unresolved": 4, - "declaredOptional": 0, - "deprecatedCalls": 0 - }, - "app.updater/updater": { - "typeNone": 0, - "typeNotFull": 0, - "schemaDynamic": 0, - "codeDynamic": 0, - "codeNil": 3, - "unresolved": 3, - "declaredOptional": 0, - "deprecatedCalls": 0 - } - } -} diff --git a/deps.cirru b/deps.cirru index fd53f2c..cef887e 100644 --- a/deps.cirru +++ b/deps.cirru @@ -1,9 +1,9 @@ -{} (:calcit-version |0.13.73) +{} (:calcit-version |0.13.75) :version |0.0.4 - :dependencies $ {} (|Respo/alerts.calcit |0.10.26) - |Respo/reel.calcit |0.6.10 - |Respo/respo-feather.calcit |0.4.7 - |Respo/respo-markdown.calcit |0.4.28 - |Respo/respo-ui.calcit |0.7.13 - |Respo/respo.calcit |0.16.88 + :dependencies $ {} (|Respo/alerts.calcit |0.10.27) + |Respo/reel.calcit |0.6.11 + |Respo/respo-feather.calcit |0.4.8 + |Respo/respo-markdown.calcit |0.4.29 + |Respo/respo-ui.calcit |0.7.14 + |Respo/respo.calcit |0.16.89 diff --git a/history/202609030040-typed-host-boundaries.md b/history/202609030040-typed-host-boundaries.md new file mode 100644 index 0000000..8259497 --- /dev/null +++ b/history/202609030040-typed-host-boundaries.md @@ -0,0 +1,18 @@ +# Typed host boundaries and Cirru quality baseline / 类型化宿主边界与 Cirru 质量基线 + +- Upgrade the released stack to Calcit/@calcit/procs 0.13.75, alerts 0.10.27, respo-feather 0.4.8, Reel 0.6.11, respo-markdown 0.4.29, respo-ui 0.7.14, and Respo 0.16.89. +- 将已发布依赖栈升级到 Calcit/@calcit/procs 0.13.75、alerts 0.10.27、respo-feather 0.4.8、Reel 0.6.11、respo-markdown 0.4.29、respo-ui 0.7.14 与 Respo 0.16.89。 +- Introduce external-object traits for document visibility, extension messages, focus events, target ancestry, and DOM token lists; nullable host values are narrowed before application control flow. +- 为 document visibility、extension message、focus event、target ancestry 与 DOM token list 增加 external-object traits;宿主可空值在进入应用控制流前完成收窄。 +- Resolve all seven warnings tracked by Termina/msg-buffer#37 without raw equality primitives or broad Dynamic propagation. +- 在不使用底层 equality primitive、也不扩大 Dynamic 传播的前提下,清零 Termina/msg-buffer#37 跟踪的 7 条告警。 +- Align `package.json` with project version 0.0.4, addressing the unresolved review note from PR #35. +- 将 `package.json` 对齐到项目版本 0.0.4,处理 PR #35 尚未落实的 review 意见。 +- Normalize legacy nullable boolean fields with explicit boolean cases so the existing `legacy-nil-fields` regression remains valid under Calcit 0.13.75. +- 通过显式布尔分支规范化旧数据中的 nullable boolean 字段,使现有 `legacy-nil-fields` 回归测试在 Calcit 0.13.75 下继续成立。 +- Replace the compiler-owned JSON quality baseline with generated Cirru EDN and mark it as generated text in `.gitattributes`. +- 将编译器直接消费的 JSON 质量 baseline 改为生成的 Cirru EDN,并在 `.gitattributes` 中标记为生成文本。 +- Disable textual diffs for the large generated baseline while retaining its text and generated attributes. +- 对大型生成 baseline 禁用文本 diff,同时保留 text 与 generated 属性。 +- Unresolved weak-type totals move from 84 to 83; schema Dynamic moves from 64 to 63 while the 20 remaining nil sites stay in the existing staged debt baseline. +- unresolved weak-type 总数从 84 降到 83,schema Dynamic 从 64 降到 63;剩余 20 个 nil 位置继续留在既有分阶段债务 baseline 中。 diff --git a/package.json b/package.json index 3ae901e..354a28e 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "dependencies": { - "@calcit/procs": "0.13.73", + "@calcit/procs": "0.13.75", "@google/genai": "^2.18.0", "@tiye/main-fonts": "0.0.1", "axios": "^1.15.0", @@ -17,6 +17,6 @@ "scripts": { "build": "rm -rfv dist && calcit calcit.cirru js && yarn vite build --base ./ && rm -rfv extension/dist && cp -vr dist extension/" }, - "version": "0.0.3", + "version": "0.0.4", "packageManager": "yarn@4.12.0" } diff --git a/yarn.lock b/yarn.lock index c85d910..e48b396 100644 --- a/yarn.lock +++ b/yarn.lock @@ -5,14 +5,14 @@ __metadata: version: 8 cacheKey: 10c0 -"@calcit/procs@npm:0.13.73": - version: 0.13.73 - resolution: "@calcit/procs@npm:0.13.73" +"@calcit/procs@npm:0.13.75": + version: 0.13.75 + resolution: "@calcit/procs@npm:0.13.75" dependencies: "@calcit/ternary-tree": "npm:0.0.26" "@cirru/parser.ts": "npm:^0.0.9" "@cirru/writer.ts": "npm:^0.1.9" - checksum: 10c0/ea00d50da82f2c855c89597ea40ddaa0c16e02e12e5b3cf19938f35fcceb01fa5b3bd8c85f0f09b4864df908fb8f25ce30e0f8020269cf7742616048ec634c4e + checksum: 10c0/e07fabba496261c49f32b398d0a01d229ff7048e3b7b4c12dedbbfb879bc9d0208b4c7838e85b6579394c0c1c983fcbf45f207315aaeefd726f85eefd47748ac languageName: node linkType: hard @@ -1573,7 +1573,7 @@ __metadata: version: 0.0.0-use.local resolution: "root-workspace-0b6124@workspace:." dependencies: - "@calcit/procs": "npm:0.13.73" + "@calcit/procs": "npm:0.13.75" "@google/genai": "npm:^2.18.0" "@tiye/main-fonts": "npm:0.0.1" axios: "npm:^1.15.0"