@ai-matrx/associations 0.14.83 → 0.14.85

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.
@@ -178,6 +178,8 @@ var ENTITY_TYPE_TOKENS = [
178
178
  "access_delta_run",
179
179
  "access_request",
180
180
  "access_shadow_log",
181
+ "access_version",
182
+ "access_version_event",
181
183
  "account_addon",
182
184
  "account_closure",
183
185
  "account_facts",
@@ -439,6 +441,9 @@ var ENTITY_TYPE_TOKENS = [
439
441
  "communication_calendar_selected_snapshot_state",
440
442
  "communication_channel_readiness",
441
443
  "comparison_set",
444
+ "computed_org_mark",
445
+ "computed_reader_cols",
446
+ "computed_reader_judgement",
442
447
  "config_manifest",
443
448
  "config_read_bucket",
444
449
  "contact_medium",
@@ -1023,6 +1028,7 @@ var ENTITY_TYPE_TOKENS = [
1023
1028
  "rag_library_audit_log",
1024
1029
  "rate_limit_buckets",
1025
1030
  "reachability_pending",
1031
+ "read_mask_kept",
1026
1032
  "recompute_queue",
1027
1033
  "record",
1028
1034
  "record_alias",
@@ -1725,135 +1731,1112 @@ var ASSOCIATION_PAIRS = /* @__PURE__ */ new Set([
1725
1731
  "quiz_session>agent",
1726
1732
  "quiz_session>processed_document",
1727
1733
  "quiz_session>web_page",
1734
+ "record>access_delta_run",
1735
+ "record>access_request",
1736
+ "record>access_shadow_log",
1737
+ "record>account_addon",
1738
+ "record>account_closure",
1739
+ "record>acquisition_block",
1740
+ "record>activity",
1741
+ "record>admin_audit_log",
1742
+ "record>admin_email_log",
1743
+ "record>admin_markdown_sample",
1728
1744
  "record>agent",
1745
+ "record>agent_card",
1746
+ "record>agent_definition_version",
1747
+ "record>agent_drift_alert",
1748
+ "record>agent_exemplar",
1749
+ "record>agent_mandate_note",
1729
1750
  "record>agent_prompt_block",
1751
+ "record>agent_prompt_block_variant",
1752
+ "record>agent_prompt_remediation",
1753
+ "record>agent_required_flag_change",
1754
+ "record>agent_run",
1755
+ "record>agent_run_stage",
1756
+ "record>agent_schedule",
1757
+ "record>agent_schedule_claim",
1730
1758
  "record>agent_shortcut",
1759
+ "record>agent_surface_binding",
1731
1760
  "record>agent_template",
1732
1761
  "record>agent_term_list",
1762
+ "record>agent_test_result",
1763
+ "record>agent_test_run",
1764
+ "record>agent_usage",
1733
1765
  "record>ai_api",
1766
+ "record>ai_device_model_file",
1767
+ "record>ai_device_model_root",
1734
1768
  "record>ai_endpoint",
1769
+ "record>ai_media_generation_cache",
1735
1770
  "record>ai_model",
1771
+ "record>ai_model_alias",
1772
+ "record>ai_model_artifact",
1773
+ "record>ai_model_candidate",
1774
+ "record>ai_model_presentation",
1775
+ "record>ai_model_upstream",
1776
+ "record>ai_model_variant",
1777
+ "record>ai_model_verification_run",
1778
+ "record>ai_model_want",
1779
+ "record>ai_offering",
1780
+ "record>ai_person_model_want",
1736
1781
  "record>ai_provider",
1782
+ "record>ai_request_latency",
1783
+ "record>ai_runtime",
1784
+ "record>ai_runtime_build",
1785
+ "record>ai_runtime_compat",
1737
1786
  "record>ai_setting",
1787
+ "record>ai_setting_profile",
1788
+ "record>ai_translation_cell",
1789
+ "record>ai_usage_hourly",
1790
+ "record>analysis_result",
1738
1791
  "record>anon_form",
1792
+ "record>anon_form_visit",
1793
+ "record>anon_hit",
1794
+ "record>anon_inbound",
1795
+ "record>anon_replay",
1796
+ "record>anon_submission",
1797
+ "record>anon_token",
1798
+ "record>api_field_warning",
1799
+ "record>api_request_log",
1739
1800
  "record>app",
1801
+ "record>app_config",
1802
+ "record>app_config_history",
1803
+ "record>app_definition_version",
1804
+ "record>app_error",
1805
+ "record>app_execution",
1806
+ "record>app_instance",
1807
+ "record>app_log",
1808
+ "record>app_log_hourly",
1809
+ "record>app_log_lines",
1810
+ "record>app_log_muted_pattern",
1811
+ "record>app_log_norm_exception",
1812
+ "record>app_log_requests_hourly",
1813
+ "record>app_rate_limit",
1814
+ "record>app_setting",
1815
+ "record>app_sync_status",
1816
+ "record>applet_visitor_binding",
1817
+ "record>approach",
1818
+ "record>artifact",
1740
1819
  "record>assessment",
1820
+ "record>assessment_item",
1821
+ "record>assessment_result",
1822
+ "record>assignment_session",
1823
+ "record>assist",
1824
+ "record>assist_producer_policy",
1825
+ "record>assist_producer_policy_history",
1826
+ "record>association_type",
1827
+ "record>assurance_level",
1828
+ "record>attempt",
1829
+ "record>attention_audit",
1830
+ "record>attention_showing",
1831
+ "record>audit_canonical_findings",
1832
+ "record>audit_exemption",
1833
+ "record>base_entity_template",
1834
+ "record>batch_cost_event",
1835
+ "record>batch_provider_batch",
1836
+ "record>batch_work_item",
1837
+ "record>billing_capability",
1838
+ "record>billing_capability_limit",
1839
+ "record>billing_ci_package_build",
1840
+ "record>billing_connect_account",
1841
+ "record>billing_coupon",
1842
+ "record>billing_coupon_redemption",
1843
+ "record>billing_customer",
1844
+ "record>billing_external_call_vendor",
1845
+ "record>billing_free_period_grant",
1846
+ "record>billing_hard_cost_reconciliation",
1847
+ "record>billing_held_run",
1848
+ "record>billing_org_payment_account",
1849
+ "record>billing_payment",
1850
+ "record>billing_payment_ask",
1851
+ "record>billing_plan",
1852
+ "record>billing_plan_limit",
1853
+ "record>billing_price",
1854
+ "record>billing_product",
1855
+ "record>billing_provider_balance_snapshot",
1856
+ "record>billing_spend_alarm",
1857
+ "record>billing_spend_alarm_occurrence",
1858
+ "record>billing_spend_approval",
1859
+ "record>billing_spend_guardrail",
1860
+ "record>billing_spend_hold",
1861
+ "record>billing_stripe_event",
1862
+ "record>billing_subscription",
1863
+ "record>billing_usage_ledger",
1864
+ "record>billing_usage_reset",
1865
+ "record>block_state",
1866
+ "record>board",
1867
+ "record>browser_account_binding",
1868
+ "record>browser_action_event",
1869
+ "record>browser_authenticator_window",
1870
+ "record>browser_capture",
1871
+ "record>browser_control_request",
1872
+ "record>browser_handoff",
1873
+ "record>browser_login_attempt",
1874
+ "record>browser_login_recipe",
1875
+ "record>browser_profile",
1876
+ "record>browser_profile_checkpoint",
1877
+ "record>browser_run",
1878
+ "record>browser_site_observation",
1879
+ "record>browser_site_policy",
1880
+ "record>browser_stream_ticket",
1881
+ "record>calendar_event",
1882
+ "record>campaign_watch_ramp_gate_run",
1883
+ "record>campaign_watch_switch_outbox",
1884
+ "record>campaign_watch_switch_window",
1741
1885
  "record>canvas_comment",
1886
+ "record>canvas_comment_like",
1742
1887
  "record>canvas_item",
1888
+ "record>canvas_item_state",
1889
+ "record>canvas_like",
1743
1890
  "record>canvas_score",
1891
+ "record>canvas_view",
1892
+ "record>catalog_entries_history",
1893
+ "record>catalog_entry",
1744
1894
  "record>category",
1895
+ "record>change_job",
1896
+ "record>change_plan",
1897
+ "record>change_type_default",
1898
+ "record>change_work",
1899
+ "record>citations",
1900
+ "record>class_purchase",
1901
+ "record>client_callable_door",
1902
+ "record>client_callable_door_retirement",
1903
+ "record>cmp_entry",
1904
+ "record>cmp_feedback",
1745
1905
  "record>code_file",
1746
1906
  "record>code_folder",
1747
1907
  "record>code_repository",
1908
+ "record>coding_session",
1909
+ "record>coding_session_entry",
1910
+ "record>collab_checkpoint",
1911
+ "record>collab_op",
1912
+ "record>collab_room",
1913
+ "record>comment",
1914
+ "record>commerce_asset_allocation",
1915
+ "record>commerce_asset_grading",
1916
+ "record>commerce_asset_identifier",
1917
+ "record>commerce_asset_lot_event",
1918
+ "record>commerce_asset_mandate_result",
1919
+ "record>commerce_asset_price_factor",
1920
+ "record>commerce_asset_reshoot_request",
1921
+ "record>commerce_asset_review",
1922
+ "record>commerce_asset_unknown",
1923
+ "record>commerce_certified_printer",
1924
+ "record>commerce_cloud_sync_connection",
1925
+ "record>commerce_ebay_business_policy",
1926
+ "record>commerce_ebay_category",
1927
+ "record>commerce_ebay_category_aspect",
1928
+ "record>commerce_ebay_category_tree",
1929
+ "record>commerce_ebay_custom_policy",
1930
+ "record>commerce_ebay_inventory_item",
1931
+ "record>commerce_ebay_inventory_item_group",
1932
+ "record>commerce_ebay_inventory_item_group_member",
1933
+ "record>commerce_ebay_inventory_location",
1934
+ "record>commerce_ebay_listing",
1935
+ "record>commerce_ebay_marketplace_policy",
1936
+ "record>commerce_ebay_media_asset",
1937
+ "record>commerce_ebay_notification_destination",
1938
+ "record>commerce_ebay_notification_event",
1939
+ "record>commerce_ebay_notification_subscription",
1940
+ "record>commerce_ebay_notification_topic",
1941
+ "record>commerce_ebay_offer",
1942
+ "record>commerce_ebay_order",
1943
+ "record>commerce_ebay_order_line_item",
1944
+ "record>commerce_ebay_shipping_fulfillment",
1945
+ "record>commerce_ebay_store_category",
1946
+ "record>commerce_human_correction",
1947
+ "record>commerce_intake_artifact",
1948
+ "record>commerce_intake_asset",
1949
+ "record>commerce_intake_batch",
1950
+ "record>commerce_label_batch",
1951
+ "record>commerce_label_code",
1952
+ "record>commerce_marketplace_account",
1953
+ "record>commerce_marketplace_account_deletion_audit",
1954
+ "record>commerce_marketplace_api_call",
1955
+ "record>commerce_marketplace_rate_budget",
1956
+ "record>commerce_marketplace_site",
1957
+ "record>commerce_marketplace_sync_run",
1958
+ "record>commerce_prediction_outcome",
1959
+ "record>commerce_print_order",
1960
+ "record>commerce_product",
1961
+ "record>commerce_product_channel_ref",
1962
+ "record>commerce_product_media",
1963
+ "record>commerce_product_variant",
1964
+ "record>commerce_recall_audit",
1965
+ "record>communication_calendar_selected_snapshot_state",
1748
1966
  "record>comparison_set",
1967
+ "record>computed_org_mark",
1968
+ "record>config_manifest",
1969
+ "record>config_read_bucket",
1970
+ "record>contact_medium",
1749
1971
  "record>contact_submission",
1972
+ "record>content_certification",
1973
+ "record>content_ir_converter_definition",
1974
+ "record>content_ir_converter_run",
1750
1975
  "record>content_ir_kind",
1976
+ "record>content_ir_kind_component",
1977
+ "record>content_ir_kind_component_incident",
1978
+ "record>content_ir_kind_component_layer",
1979
+ "record>content_ir_kind_conformance",
1980
+ "record>content_ir_kind_edge",
1981
+ "record>content_ir_kind_example",
1751
1982
  "record>content_ir_kind_instance",
1983
+ "record>content_ir_kind_surface",
1984
+ "record>context_access_log",
1752
1985
  "record>context_item",
1986
+ "record>context_item_suggestion",
1753
1987
  "record>conversation",
1988
+ "record>conversation_value",
1989
+ "record>courts",
1990
+ "record>credential_attachment",
1991
+ "record>credential_item",
1992
+ "record>credential_mutation_receipt",
1993
+ "record>crm_address",
1994
+ "record>crm_affiliation",
1995
+ "record>crm_blocklist_entry",
1996
+ "record>crm_contact_candidate",
1754
1997
  "record>crm_deal",
1998
+ "record>crm_deal_stage_event",
1999
+ "record>crm_enrichment_call",
2000
+ "record>crm_interaction",
2001
+ "record>crm_merge_candidate",
1755
2002
  "record>crm_outreach_list",
2003
+ "record>crm_outreach_list_member",
2004
+ "record>crm_party_merge",
2005
+ "record>crm_party_research",
2006
+ "record>crm_registry_ingest_run",
2007
+ "record>crm_registry_source",
2008
+ "record>crm_sending_claim",
2009
+ "record>crm_sending_event",
2010
+ "record>crm_sending_identity",
2011
+ "record>crm_sending_identity_check",
2012
+ "record>crm_sending_policy",
2013
+ "record>custom_base",
2014
+ "record>custom_base_snapshot",
2015
+ "record>custom_field_definition",
2016
+ "record>custom_field_target",
2017
+ "record>custom_synced_source",
2018
+ "record>custom_template",
2019
+ "record>custom_template_install",
1756
2020
  "record>cx_agent_memory",
2021
+ "record>cx_agent_plan",
2022
+ "record>cx_agent_task",
2023
+ "record>cx_code_edit",
2024
+ "record>cx_code_message_file",
2025
+ "record>cx_media",
2026
+ "record>cx_observational_memory",
2027
+ "record>cx_observational_memory_event",
2028
+ "record>cx_pending_injection",
2029
+ "record>cx_request",
2030
+ "record>cx_request_snapshot",
2031
+ "record>cx_request_values",
2032
+ "record>cx_tool_trace",
2033
+ "record>cx_user_request",
2034
+ "record>cx_user_todo",
2035
+ "record>data_rights_event",
1757
2036
  "record>data_store",
2037
+ "record>data_store_members",
2038
+ "record>ddl_guard_log",
2039
+ "record>deck_suggestion",
2040
+ "record>definer_class_exemption",
2041
+ "record>definer_grant_baseline",
2042
+ "record>derive_run",
2043
+ "record>desktop_app_profile",
2044
+ "record>dev_login_audit",
2045
+ "record>device_handoff",
2046
+ "record>dict_entry",
2047
+ "record>dict_provider_publication",
2048
+ "record>dict_setting",
2049
+ "record>dm_conversation",
1758
2050
  "record>dm_message",
2051
+ "record>dm_participant",
2052
+ "record>dm_session_member",
2053
+ "record>doc_render",
2054
+ "record>doc_signature",
2055
+ "record>dockets",
1759
2056
  "record>document",
2057
+ "record>document_version",
2058
+ "record>domain_classification",
2059
+ "record>egress_device",
2060
+ "record>egress_pairing",
2061
+ "record>egress_ticket",
2062
+ "record>emails",
2063
+ "record>entity_grant",
2064
+ "record>entity_protected_value_version",
2065
+ "record>entity_type",
2066
+ "record>esign_campaign",
2067
+ "record>esign_campaign_member",
2068
+ "record>esign_consent_disclosure",
2069
+ "record>esign_envelope",
2070
+ "record>esign_envelope_certificate",
2071
+ "record>esign_envelope_document",
2072
+ "record>esign_envelope_draft",
2073
+ "record>esign_envelope_event",
2074
+ "record>esign_envelope_external_ref",
2075
+ "record>esign_envelope_signer",
2076
+ "record>esign_provider",
2077
+ "record>esign_provider_binding",
2078
+ "record>esign_saved_signature",
2079
+ "record>esign_signing_key",
2080
+ "record>esign_template",
2081
+ "record>extension_auth_code",
2082
+ "record>external_api_reservation",
2083
+ "record>external_conversation",
2084
+ "record>external_delivery_event",
2085
+ "record>external_inbox",
2086
+ "record>external_link",
2087
+ "record>external_message",
2088
+ "record>external_provider_receipt",
2089
+ "record>external_source",
2090
+ "record>extract_sweep_state",
2091
+ "record>fc_card",
2092
+ "record>fc_detail",
1760
2093
  "record>fc_set",
1761
2094
  "record>feature_doc",
2095
+ "record>feedback_comments",
2096
+ "record>feedback_user_messages",
2097
+ "record>file",
2098
+ "record>file_analysis",
2099
+ "record>file_entities",
2100
+ "record>file_overrides",
2101
+ "record>file_page_annotations",
2102
+ "record>file_pages",
2103
+ "record>file_rag_job",
2104
+ "record>file_template",
2105
+ "record>file_version",
2106
+ "record>files_account_tier",
2107
+ "record>files_machine_written_prefix",
2108
+ "record>files_sync_mapping",
1762
2109
  "record>folder",
2110
+ "record>function_contract",
2111
+ "record>game_badge",
1763
2112
  "record>game_result",
2113
+ "record>game_room",
2114
+ "record>global_execution",
2115
+ "record>global_execution_checkpoint",
2116
+ "record>global_execution_event",
2117
+ "record>global_meter_entry",
2118
+ "record>global_origin",
2119
+ "record>global_request",
2120
+ "record>google_document",
2121
+ "record>growth_loop_event",
2122
+ "record>growth_loop_run",
2123
+ "record>growth_loop_stage_run",
2124
+ "record>guardian_link",
2125
+ "record>guest_conversion_audit",
2126
+ "record>guest_execution_log",
2127
+ "record>guest_executions",
2128
+ "record>guided_checklist_run",
1764
2129
  "record>heatmap_save",
2130
+ "record>hindsight_enrollment",
2131
+ "record>hindsight_finding",
2132
+ "record>hindsight_regression_case",
2133
+ "record>hindsight_replay",
2134
+ "record>hindsight_replay_step",
2135
+ "record>hindsight_review",
2136
+ "record>hr_access_audit",
2137
+ "record>hr_access_role",
2138
+ "record>hr_accommodation_request",
2139
+ "record>hr_ai_evidence",
2140
+ "record>hr_alert_routing_rule",
2141
+ "record>hr_application",
2142
+ "record>hr_approval_authority",
2143
+ "record>hr_approval_delegation",
1765
2144
  "record>hr_asset",
2145
+ "record>hr_asset_assignment",
2146
+ "record>hr_attendance_exception",
2147
+ "record>hr_auto_close_rule",
2148
+ "record>hr_availability",
2149
+ "record>hr_background_check",
2150
+ "record>hr_benefits_event",
2151
+ "record>hr_calculation_snapshot",
1766
2152
  "record>hr_candidate",
2153
+ "record>hr_candidate_conversion",
2154
+ "record>hr_candidate_message",
1767
2155
  "record>hr_careers_portal",
2156
+ "record>hr_checklist_item",
2157
+ "record>hr_checklist_run",
1768
2158
  "record>hr_checklist_template",
2159
+ "record>hr_checklist_template_item",
2160
+ "record>hr_compensation",
2161
+ "record>hr_corrective_action",
1769
2162
  "record>hr_course",
2163
+ "record>hr_course_version",
2164
+ "record>hr_credential",
1770
2165
  "record>hr_crew",
1771
2166
  "record>hr_deduction_code",
1772
2167
  "record>hr_department",
2168
+ "record>hr_derived_grant",
2169
+ "record>hr_disposition_event",
1773
2170
  "record>hr_earning_code",
2171
+ "record>hr_eeo_response",
2172
+ "record>hr_emergency_contact",
1774
2173
  "record>hr_employee",
2174
+ "record>hr_employee_private",
1775
2175
  "record>hr_employer_profile",
2176
+ "record>hr_employment",
2177
+ "record>hr_employment_pin",
2178
+ "record>hr_engagement",
2179
+ "record>hr_establishment",
2180
+ "record>hr_external_identity",
2181
+ "record>hr_field_policy",
2182
+ "record>hr_goal",
2183
+ "record>hr_holiday",
1776
2184
  "record>hr_holiday_calendar",
2185
+ "record>hr_i9",
2186
+ "record>hr_i9_document",
2187
+ "record>hr_incident",
2188
+ "record>hr_incident_party",
2189
+ "record>hr_interview",
1777
2190
  "record>hr_interview_kit",
1778
2191
  "record>hr_job_title",
1779
2192
  "record>hr_jurisdiction",
2193
+ "record>hr_jurisdiction_rule",
1780
2194
  "record>hr_jurisdiction_rule_class",
2195
+ "record>hr_jurisdiction_rule_org_decision",
2196
+ "record>hr_jurisdiction_rule_test",
2197
+ "record>hr_kiosk_device",
2198
+ "record>hr_kiosk_session",
2199
+ "record>hr_labor_target",
2200
+ "record>hr_leave_case",
2201
+ "record>hr_leave_enrollment",
2202
+ "record>hr_leave_ledger",
1781
2203
  "record>hr_leave_policy",
2204
+ "record>hr_leave_request",
1782
2205
  "record>hr_legal_hold",
2206
+ "record>hr_legal_hold_item",
1783
2207
  "record>hr_location",
2208
+ "record>hr_new_hire_report",
2209
+ "record>hr_offer",
2210
+ "record>hr_opening",
2211
+ "record>hr_overtime_alert",
2212
+ "record>hr_overtime_alert_rule",
2213
+ "record>hr_overtime_preapproval",
1784
2214
  "record>hr_pay_group",
1785
2215
  "record>hr_pay_period",
2216
+ "record>hr_pay_period_employment",
2217
+ "record>hr_payroll_export",
2218
+ "record>hr_payroll_export_line",
2219
+ "record>hr_position_assignment",
1786
2220
  "record>hr_posting",
2221
+ "record>hr_posting_publication",
2222
+ "record>hr_provider_binding",
2223
+ "record>hr_provider_event",
2224
+ "record>hr_provisioning_result",
2225
+ "record>hr_punch",
2226
+ "record>hr_recalculation_batch",
1787
2227
  "record>hr_record_class",
2228
+ "record>hr_records_request",
2229
+ "record>hr_reference_check",
2230
+ "record>hr_reporting_line",
1788
2231
  "record>hr_requisition",
2232
+ "record>hr_restricted_note",
2233
+ "record>hr_retention_rule",
2234
+ "record>hr_review",
2235
+ "record>hr_review_cycle",
2236
+ "record>hr_review_peer_nomination",
2237
+ "record>hr_review_response",
2238
+ "record>hr_review_template",
2239
+ "record>hr_role_assignment",
1789
2240
  "record>hr_schedule",
2241
+ "record>hr_schedule_change",
2242
+ "record>hr_schedule_guidance",
1790
2243
  "record>hr_schedule_template",
2244
+ "record>hr_schedule_template_shift",
2245
+ "record>hr_scorecard",
2246
+ "record>hr_separation",
2247
+ "record>hr_shift",
2248
+ "record>hr_shift_claim",
2249
+ "record>hr_staffing_requirement",
1791
2250
  "record>hr_survey",
2251
+ "record>hr_survey_invitation",
2252
+ "record>hr_survey_question",
2253
+ "record>hr_survey_response",
2254
+ "record>hr_tax_registration",
2255
+ "record>hr_tax_withholding",
2256
+ "record>hr_time_adjustment",
2257
+ "record>hr_training_assignment",
2258
+ "record>hr_training_attempt",
2259
+ "record>hr_transcript_entry",
2260
+ "record>hr_verification_letter_request",
2261
+ "record>hr_work_interval",
2262
+ "record>hr_workflow_binding",
2263
+ "record>hr_workflow_decision",
2264
+ "record>hr_workflow_definition",
2265
+ "record>hr_workflow_event",
2266
+ "record>hr_workflow_failure",
2267
+ "record>hr_workflow_flow_type",
2268
+ "record>hr_workflow_instance",
2269
+ "record>hr_workflow_step",
2270
+ "record>hr_workflow_step_definition",
2271
+ "record>hr_workweek",
2272
+ "record>html_extraction",
2273
+ "record>iam_access_audit",
2274
+ "record>iam_api_key",
2275
+ "record>iam_emergency_door_request",
2276
+ "record>iam_oauth_app",
2277
+ "record>iam_org_domain",
2278
+ "record>iam_org_domain_route",
2279
+ "record>iam_record_seat_change",
2280
+ "record>industry",
2281
+ "record>ingest_runs",
2282
+ "record>integration_connection",
2283
+ "record>integration_connection_resource",
2284
+ "record>interview_decision_interview",
2285
+ "record>interview_decision_question",
2286
+ "record>interview_document_revision",
2287
+ "record>interview_hole",
2288
+ "record>interview_question",
2289
+ "record>interview_session",
2290
+ "record>interview_turn",
2291
+ "record>invitation",
2292
+ "record>invitation_code",
2293
+ "record>invitation_request",
2294
+ "record>io_comment",
2295
+ "record>io_contract",
2296
+ "record>io_import",
2297
+ "record>io_outbox",
2298
+ "record>item",
2299
+ "record>item_mastery",
2300
+ "record>judge_verdict",
2301
+ "record>jurisdiction_policy",
2302
+ "record>kg_alert",
2303
+ "record>kg_chunk_entities",
2304
+ "record>kg_chunks",
2305
+ "record>kg_clusters",
2306
+ "record>kg_edges",
2307
+ "record>kg_entities",
2308
+ "record>kg_entity_aliases",
2309
+ "record>kg_suggestion_ack",
2310
+ "record>kg_sweep_queue",
2311
+ "record>kg_sweep_run",
2312
+ "record>kg_sweep_state",
2313
+ "record>kg_value_match",
2314
+ "record>knob_override",
2315
+ "record>knob_override_audit",
2316
+ "record>knob_rung_lock",
2317
+ "record>knob_scope_kind",
2318
+ "record>knob_write_door",
1792
2319
  "record>league_membership",
1793
2320
  "record>learn_doc",
1794
2321
  "record>library_doc",
2322
+ "record>lifecycle_archive",
2323
+ "record>lifecycle_audit",
2324
+ "record>lifecycle_map_build",
2325
+ "record>lifecycle_reference_map",
2326
+ "record>lifecycle_run",
2327
+ "record>lifecycle_tier_ledger",
2328
+ "record>location",
1795
2329
  "record>mandate",
2330
+ "record>mandate_advance_batch_row",
2331
+ "record>mandate_binding",
2332
+ "record>mandate_candidate",
2333
+ "record>mandate_candidate_run",
2334
+ "record>mandate_candidate_run_payload",
2335
+ "record>mandate_goal_clauses",
2336
+ "record>mandate_observation",
2337
+ "record>mandate_proposal",
2338
+ "record>mandate_readiness_verdict",
2339
+ "record>mandate_reference",
2340
+ "record>mandate_scan",
2341
+ "record>mandate_treatment",
1796
2342
  "record>marketing_initiative",
2343
+ "record>masterwork_corpus_item",
2344
+ "record>masterwork_run",
2345
+ "record>masterwork_source",
2346
+ "record>math_course_structure",
2347
+ "record>math_problem",
2348
+ "record>matrx_action_ledger",
2349
+ "record>mcp_config",
2350
+ "record>mcp_server",
2351
+ "record>mcp_user_conn",
2352
+ "record>media_capture_handoff",
2353
+ "record>media_catalog_setting",
2354
+ "record>media_library_item",
2355
+ "record>media_selection_item",
2356
+ "record>media_selection_job",
2357
+ "record>media_source_library",
2358
+ "record>meet_call_invite",
2359
+ "record>meet_chat_message",
2360
+ "record>meet_connection",
2361
+ "record>meet_invitee",
1797
2362
  "record>meet_meeting",
2363
+ "record>meet_note",
2364
+ "record>meet_occurrence_override",
2365
+ "record>meet_participant",
2366
+ "record>meet_recording",
2367
+ "record>meet_session",
2368
+ "record>meet_transcript_segment",
2369
+ "record>membership",
2370
+ "record>memory_trial",
2371
+ "record>memory_trial_step",
2372
+ "record>merge_field_provenance",
2373
+ "record>message",
1798
2374
  "record>message_template",
2375
+ "record>message_template_detail",
2376
+ "record>migration_log",
2377
+ "record>mtx_media_heal_queue",
2378
+ "record>mtx_public_url_guard",
2379
+ "record>ner_shadow",
1799
2380
  "record>note",
1800
2381
  "record>note_folder",
2382
+ "record>notification",
2383
+ "record>notification_channel_preference",
2384
+ "record>notification_event_override",
2385
+ "record>notification_event_type",
2386
+ "record>notification_preference",
2387
+ "record>notification_submission",
2388
+ "record>notify_outsider_door_baseline",
2389
+ "record>opinion_clusters",
2390
+ "record>opinions",
2391
+ "record>ops_auth_lock_watchdog_log",
2392
+ "record>ops_check_item",
2393
+ "record>ops_check_run",
2394
+ "record>ops_db_host_sample",
2395
+ "record>ops_issue_class",
2396
+ "record>ops_issue_event",
2397
+ "record>ops_perf_client_event",
2398
+ "record>ops_perf_sample",
2399
+ "record>ops_perf_statement_snapshot",
2400
+ "record>ops_proof_check",
2401
+ "record>ops_proof_run",
2402
+ "record>ops_proof_scenario",
2403
+ "record>ops_source_read_cache",
2404
+ "record>ops_test_replay_cache",
2405
+ "record>org_admin_audit",
2406
+ "record>org_change_policy",
2407
+ "record>org_context_ledger",
2408
+ "record>org_industries",
2409
+ "record>org_member_control",
2410
+ "record>org_plan",
1801
2411
  "record>organization",
2412
+ "record>organization_preferences",
2413
+ "record>output_feedback",
2414
+ "record>outreach_acceptance",
1802
2415
  "record>page_extraction_job",
2416
+ "record>page_extraction_page_run",
2417
+ "record>page_extraction_results",
2418
+ "record>page_extraction_runs",
2419
+ "record>page_vitals",
1803
2420
  "record>party",
2421
+ "record>party_contact_point",
2422
+ "record>passkey_credential",
1804
2423
  "record>pc_article",
1805
2424
  "record>pc_episode",
1806
2425
  "record>pc_show",
1807
2426
  "record>pc_studio_run",
2427
+ "record>pc_studio_run_asset",
2428
+ "record>pdf_consolidation_log",
2429
+ "record>pdf_redaction_audit",
2430
+ "record>pdf_redaction_key_escrow",
2431
+ "record>permission_grant",
2432
+ "record>personal_data_column",
2433
+ "record>plan_cms_fill_item",
2434
+ "record>plan_cms_fill_job",
2435
+ "record>plan_entity",
2436
+ "record>plan_node",
2437
+ "record>plan_node_artifact",
2438
+ "record>plan_node_step",
2439
+ "record>plan_profile",
2440
+ "record>platform_action_request",
2441
+ "record>platform_actor_session",
2442
+ "record>platform_actor_token",
2443
+ "record>platform_actor_token_event",
2444
+ "record>platform_class_approval_by_arman",
2445
+ "record>platform_class_approval_by_org_admin",
2446
+ "record>platform_continued_access",
2447
+ "record>platform_cutover_census_run",
2448
+ "record>platform_cutover_evaluation_replaced",
2449
+ "record>platform_cutover_evaluation_write",
2450
+ "record>platform_cutover_seam",
2451
+ "record>platform_cutover_seam_measure",
2452
+ "record>platform_cutover_seam_press",
2453
+ "record>platform_dated_change",
2454
+ "record>platform_google_calendar_event_create_intent",
2455
+ "record>platform_google_task_create_intent",
2456
+ "record>platform_hidden_item",
2457
+ "record>platform_kernel_fingerprint_record",
2458
+ "record>platform_outcome_event",
2459
+ "record>platform_outsider_consumer",
2460
+ "record>platform_reference_declaration",
2461
+ "record>platform_saved_view",
2462
+ "record>platform_secure_delivery",
2463
+ "record>platform_share_link",
2464
+ "record>platform_strict_class_probe",
2465
+ "record>podcast_race",
2466
+ "record>position",
2467
+ "record>presentation",
1808
2468
  "record>processed_document",
2469
+ "record>processed_document_page",
2470
+ "record>product_capture_file",
2471
+ "record>product_capture_item",
2472
+ "record>product_capture_payload",
2473
+ "record>product_capture_product",
2474
+ "record>product_capture_question",
1809
2475
  "record>project",
2476
+ "record>provider_account",
2477
+ "record>provider_account_credential",
2478
+ "record>provision",
2479
+ "record>provision_snapshot",
2480
+ "record>provision_spec_grandfather",
2481
+ "record>purpose",
1810
2482
  "record>quiz_session",
2483
+ "record>rag_ingest_run",
2484
+ "record>rag_library_audit_log",
2485
+ "record>recompute_queue",
1811
2486
  "record>record",
2487
+ "record>redaction_mapping",
2488
+ "record>relationship_rule",
2489
+ "record>research_analysis",
2490
+ "record>research_content",
1812
2491
  "record>research_context_bundle",
2492
+ "record>research_document",
2493
+ "record>research_intent",
2494
+ "record>research_keyword",
2495
+ "record>research_media",
2496
+ "record>research_source",
2497
+ "record>research_synthesis",
2498
+ "record>research_tag",
1813
2499
  "record>research_template",
1814
2500
  "record>research_topic",
2501
+ "record>retention_policy",
2502
+ "record>retrieval_audit",
2503
+ "record>review_queue",
2504
+ "record>route_manifest_entry",
2505
+ "record>row_version",
1815
2506
  "record>rulebook",
2507
+ "record>run_approval",
2508
+ "record>run_approval_event",
2509
+ "record>runtime_operation_stream",
2510
+ "record>runtime_operation_stream_batch",
2511
+ "record>sandbox_instance",
2512
+ "record>sch_agent_task",
2513
+ "record>sch_run",
1816
2514
  "record>sch_task",
2515
+ "record>sch_trigger",
2516
+ "record>scheduler_automation_run_subject",
2517
+ "record>schema_templates",
2518
+ "record>scope_association_suggestion",
2519
+ "record>scope_item_value_suggestion",
2520
+ "record>scope_suggestion",
1817
2521
  "record>scope_type",
2522
+ "record>scrape_domain",
2523
+ "record>scrape_domain_settings",
2524
+ "record>scrape_failure_log",
2525
+ "record>scrape_parsed_page",
2526
+ "record>scrape_path_override",
2527
+ "record>scrape_path_pattern",
2528
+ "record>scrape_retry_queue",
2529
+ "record>scraper_comparison_run",
2530
+ "record>scraper_data_fetch_job",
2531
+ "record>scraper_data_source",
2532
+ "record>seo_ai_capability",
2533
+ "record>seo_ai_visibility_brand_check",
2534
+ "record>seo_ai_visibility_citation",
2535
+ "record>seo_ai_visibility_claim",
2536
+ "record>seo_ai_visibility_panel",
2537
+ "record>seo_ai_visibility_response",
2538
+ "record>seo_ai_visibility_signal",
2539
+ "record>seo_backlink",
2540
+ "record>seo_backlink_change_event",
2541
+ "record>seo_backlink_dimension_snapshot",
2542
+ "record>seo_backlink_observation",
2543
+ "record>seo_backlink_snapshot",
2544
+ "record>seo_change_assessment",
2545
+ "record>seo_change_event",
2546
+ "record>seo_change_item",
2547
+ "record>seo_change_metric",
2548
+ "record>seo_change_set",
2549
+ "record>seo_change_theory",
2550
+ "record>seo_competitor",
2551
+ "record>seo_competitor_observation",
2552
+ "record>seo_competitor_opportunity",
2553
+ "record>seo_coverage_mention",
2554
+ "record>seo_coverage_tracker",
2555
+ "record>seo_dimension_value_matcher",
2556
+ "record>seo_engine_schedule",
2557
+ "record>seo_geo_place",
2558
+ "record>seo_gsc_dig_rule",
1818
2559
  "record>seo_keyword",
2560
+ "record>seo_keyword_class_rule",
2561
+ "record>seo_keyword_edge",
2562
+ "record>seo_keyword_facet",
2563
+ "record>seo_keyword_market",
2564
+ "record>seo_keyword_market_observation",
2565
+ "record>seo_keyword_place",
2566
+ "record>seo_keyword_saved_view",
2567
+ "record>seo_keyword_topic",
2568
+ "record>seo_landscape_brief",
2569
+ "record>seo_link_gap_domain",
2570
+ "record>seo_link_gap_match",
2571
+ "record>seo_map_facet",
2572
+ "record>seo_map_facet_value",
2573
+ "record>seo_map_topic",
2574
+ "record>seo_page_measurement_health",
2575
+ "record>seo_page_performance",
2576
+ "record>seo_pr_moment",
2577
+ "record>seo_provider_call",
2578
+ "record>seo_provider_task",
2579
+ "record>seo_rank_observation",
2580
+ "record>seo_rank_target",
2581
+ "record>seo_raw_payload",
2582
+ "record>seo_referring_domain_profile",
2583
+ "record>seo_reputation_case",
2584
+ "record>seo_search_performance_daily",
2585
+ "record>seo_serp_mention",
2586
+ "record>seo_serp_opportunity",
2587
+ "record>seo_serp_result",
2588
+ "record>seo_serp_snapshot",
2589
+ "record>seo_site_geo_area",
2590
+ "record>seo_site_keyword_offering",
2591
+ "record>seo_site_keyword_value",
2592
+ "record>seo_site_offering_value",
2593
+ "record>seo_site_topic_value",
2594
+ "record>seo_site_value_combo",
2595
+ "record>seo_site_value_worth",
2596
+ "record>seo_site_vocabulary",
2597
+ "record>seo_source_request",
2598
+ "record>seo_starter_pack",
2599
+ "record>seo_starter_pack_item",
2600
+ "record>seo_story_angle",
1819
2601
  "record>seo_topic",
2602
+ "record>seo_topical_map",
2603
+ "record>seo_tracker_story",
2604
+ "record>seo_web_analytics_daily",
2605
+ "record>shareable_resource_registry",
1820
2606
  "record>shared_canvas_item",
2607
+ "record>short_link",
1821
2608
  "record>skill",
2609
+ "record>skill_detail",
2610
+ "record>sms_consent",
2611
+ "record>sms_conversation",
2612
+ "record>sms_message",
2613
+ "record>sms_message_media",
2614
+ "record>sms_notification",
2615
+ "record>sms_notification_preference",
2616
+ "record>sms_phone_number",
2617
+ "record>sms_rate_limits",
2618
+ "record>sms_webhook_logs",
2619
+ "record>social_account_insight_daily",
1822
2620
  "record>social_ad",
2621
+ "record>social_captured_post",
2622
+ "record>social_kpi_goal",
2623
+ "record>social_own_post_metric",
1823
2624
  "record>social_post",
2625
+ "record>social_post_analysis",
2626
+ "record>social_post_comment",
2627
+ "record>social_post_metric_snapshot",
2628
+ "record>social_post_stat",
2629
+ "record>social_post_transcript",
1824
2630
  "record>social_profile",
2631
+ "record>social_profile_snapshot",
2632
+ "record>social_remix_output",
1825
2633
  "record>social_swipe_collection",
1826
2634
  "record>social_tracked_account",
2635
+ "record>social_video_composition_version",
2636
+ "record>social_video_project",
2637
+ "record>social_video_variant",
2638
+ "record>social_watchlist_hit",
2639
+ "record>soft_delete_cascade_job",
2640
+ "record>soft_delete_edge",
2641
+ "record>source_authority",
2642
+ "record>space_payload",
2643
+ "record>stage_ref_kind",
2644
+ "record>structure",
1827
2645
  "record>structured_list",
2646
+ "record>studio_cleaned_segments",
2647
+ "record>studio_concept_items",
2648
+ "record>studio_documents",
2649
+ "record>studio_module_segments",
2650
+ "record>studio_raw_segments",
2651
+ "record>studio_recording_chunks",
2652
+ "record>studio_recording_segments",
2653
+ "record>studio_run",
1828
2654
  "record>studio_session",
2655
+ "record>studio_session_settings",
2656
+ "record>study_attempt",
1829
2657
  "record>study_goal",
1830
2658
  "record>study_media",
1831
2659
  "record>study_plan",
1832
2660
  "record>study_plan_block",
2661
+ "record>study_plan_day",
2662
+ "record>study_reminder_context",
2663
+ "record>study_reminder_delivery",
2664
+ "record>study_session",
2665
+ "record>study_source_chunk",
2666
+ "record>study_streak",
2667
+ "record>study_structured_section",
2668
+ "record>superseded_policy",
2669
+ "record>support_session",
2670
+ "record>support_session_event",
1833
2671
  "record>surface",
2672
+ "record>system_announcement",
2673
+ "record>system_context_item",
2674
+ "record>system_context_item_org_value",
2675
+ "record>system_error",
2676
+ "record>system_write_failure",
2677
+ "record>t13_backfill_ledger",
2678
+ "record>tag",
1834
2679
  "record>task",
2680
+ "record>taxonomy_node",
1835
2681
  "record>team",
2682
+ "record>template_context_items",
2683
+ "record>template_scope_types",
2684
+ "record>templates",
2685
+ "record>test_handset_inbox",
2686
+ "record>test_handset_verification",
1836
2687
  "record>thread",
1837
2688
  "record>tool",
2689
+ "record>tool_battle",
2690
+ "record>tool_battle_cell",
2691
+ "record>tool_binding",
1838
2692
  "record>tool_bundle",
2693
+ "record>tool_call",
2694
+ "record>tool_canary_run",
2695
+ "record>tool_catalog_cache",
2696
+ "record>tool_catalog_call",
2697
+ "record>tool_catalog_call_attempt",
2698
+ "record>tool_catalog_call_detail",
2699
+ "record>tool_catalog_endpoint",
2700
+ "record>tool_catalog_entry",
2701
+ "record>tool_catalog_provider",
2702
+ "record>tool_definition_version",
2703
+ "record>tool_executor",
2704
+ "record>tool_feature_scorecard",
2705
+ "record>tool_surface_defaults",
2706
+ "record>tool_test_sample",
2707
+ "record>tool_ui",
2708
+ "record>tool_ui_incident",
2709
+ "record>tool_ui_version",
1839
2710
  "record>transcript",
2711
+ "record>trigger_event",
1840
2712
  "record>udt_document",
2713
+ "record>udt_document_snapshot",
2714
+ "record>udt_workbook_snapshot",
2715
+ "record>ui_client",
2716
+ "record>ui_decision_pick",
2717
+ "record>ui_surface_action",
2718
+ "record>ui_surface_agent_pref",
2719
+ "record>ui_surface_agent_role",
2720
+ "record>ui_surface_client_tool",
2721
+ "record>ui_surface_config",
2722
+ "record>ui_surface_item_type",
2723
+ "record>ui_surface_value",
2724
+ "record>ui_surface_write_target",
2725
+ "record>univer_payload",
2726
+ "record>unsubscribe_token",
2727
+ "record>uploads_inflight",
2728
+ "record>user",
2729
+ "record>user_achievement",
2730
+ "record>user_active_context",
2731
+ "record>user_analysis_preference",
2732
+ "record>user_email_preference",
2733
+ "record>user_feedback",
2734
+ "record>user_follows",
1841
2735
  "record>user_markdown_sample",
2736
+ "record>user_memory",
2737
+ "record>user_preference",
2738
+ "record>user_profile",
2739
+ "record>user_secret",
2740
+ "record>user_secret_audit",
2741
+ "record>user_secret_grant",
2742
+ "record>user_stat",
2743
+ "record>user_surface_state",
2744
+ "record>users_calendar_feed",
2745
+ "record>vault_fill_approvals",
2746
+ "record>vault_fill_devices",
1842
2747
  "record>voice",
1843
2748
  "record>war_room",
2749
+ "record>wbx_demo",
2750
+ "record>wbx_guidance",
2751
+ "record>wbx_highlight",
1844
2752
  "record>wbx_pattern",
2753
+ "record>wbx_recipe",
2754
+ "record>wbx_screenshot",
2755
+ "record>wbx_seo_audit",
2756
+ "record>wc_claim",
2757
+ "record>wc_impairment_definition",
2758
+ "record>wc_injury",
2759
+ "record>wc_report",
1845
2760
  "record>web_analysis_item",
1846
2761
  "record>web_brand",
2762
+ "record>web_brand_asset",
2763
+ "record>web_brand_choice",
2764
+ "record>web_brand_exclusion",
2765
+ "record>web_brand_offering",
1847
2766
  "record>web_brand_persona",
2767
+ "record>web_brand_relation_kind",
2768
+ "record>web_brand_review",
2769
+ "record>web_brand_testimony",
2770
+ "record>web_business_fact",
2771
+ "record>web_business_location",
2772
+ "record>web_channel_analytics_daily",
2773
+ "record>web_crawl_event",
2774
+ "record>web_crawl_preset",
2775
+ "record>web_crawl_schedule",
2776
+ "record>web_crawl_session",
2777
+ "record>web_crawl_url",
2778
+ "record>web_discovered_item",
2779
+ "record>web_domain_category",
2780
+ "record>web_domain_category_observation",
2781
+ "record>web_finding",
2782
+ "record>web_gsc_page_stat",
2783
+ "record>web_link_edge",
2784
+ "record>web_listing_publisher",
2785
+ "record>web_location_listing",
2786
+ "record>web_news_item",
2787
+ "record>web_offering_template",
1848
2788
  "record>web_page",
2789
+ "record>web_page_content",
2790
+ "record>web_page_evidence",
2791
+ "record>web_page_sitemap",
1849
2792
  "record>web_property",
1850
2793
  "record>web_provider",
2794
+ "record>web_result",
1851
2795
  "record>web_site",
2796
+ "record>web_site_endpoint_rule",
2797
+ "record>web_site_item_config",
2798
+ "record>web_site_offering",
2799
+ "record>web_sitemap",
2800
+ "record>web_snapshot",
2801
+ "record>web_tag_manager_snapshot",
2802
+ "record>web_temp_brand_firmographic",
2803
+ "record>web_temp_brand_presence",
2804
+ "record>web_temp_brand_recognition",
2805
+ "record>web_voice_fingerprint",
2806
+ "record>web_youtube_video",
2807
+ "record>webhook_deliveries",
2808
+ "record>webhook_dispatch_state",
2809
+ "record>webhook_test_receipt",
2810
+ "record>webhooks",
2811
+ "record>wf_node_data_slot",
2812
+ "record>work_claim",
2813
+ "record>work_item",
1852
2814
  "record>workbook",
1853
2815
  "record>workflow",
2816
+ "record>workflow_card",
2817
+ "record>workflow_checkpoint",
2818
+ "record>workflow_checkpoint_value",
2819
+ "record>workflow_comparison",
2820
+ "record>workflow_definition_overview",
2821
+ "record>workflow_definition_version",
2822
+ "record>workflow_idempotency",
2823
+ "record>workflow_job",
2824
+ "record>workflow_node_events",
2825
+ "record>workflow_node_outcome",
1854
2826
  "record>workflow_plan",
2827
+ "record>workflow_plan_event",
2828
+ "record>workflow_plan_sample",
2829
+ "record>workflow_recovery_audit",
2830
+ "record>workflow_review_issue",
2831
+ "record>workflow_run",
2832
+ "record>workflow_run_log",
2833
+ "record>workflow_runtime_surface",
1855
2834
  "record>workflow_template",
1856
2835
  "record>workflow_trigger",
2836
+ "record>workflow_trigger_fire",
2837
+ "record>workflow_work_item",
2838
+ "record>write_guard_key",
2839
+ "record>youtube_search",
1857
2840
  "record>youtube_video",
1858
2841
  "research_media>category",
1859
2842
  "research_media>web_brand",
@@ -2952,96 +3935,23 @@ var import_react_dom = require("react-dom");
2952
3935
  var import_design_system2 = require("@ai-matrx/design-system");
2953
3936
 
2954
3937
  // src/react/icons.tsx
2955
- var import_jsx_runtime4 = require("react/jsx-runtime");
2956
- function base(props) {
2957
- return {
2958
- xmlns: "http://www.w3.org/2000/svg",
2959
- width: 24,
2960
- height: 24,
2961
- viewBox: "0 0 24 24",
2962
- fill: "none",
2963
- stroke: "currentColor",
2964
- strokeWidth: 2,
2965
- strokeLinecap: "round",
2966
- strokeLinejoin: "round",
2967
- "aria-hidden": true,
2968
- ...props
2969
- };
2970
- }
2971
- function SpinnerIcon(props) {
2972
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("svg", { ...base(props), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M21 12a9 9 0 1 1-6.219-8.56" }) });
2973
- }
2974
- function Link2Icon(props) {
2975
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { ...base(props), children: [
2976
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M9 17H7A5 5 0 0 1 7 7h2" }),
2977
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M15 7h2a5 5 0 1 1 0 10h-2" }),
2978
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("line", { x1: "8", x2: "16", y1: "12", y2: "12" })
2979
- ] });
2980
- }
2981
- function RefreshIcon(props) {
2982
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { ...base(props), children: [
2983
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M3 12a9 9 0 0 1 9-9 9.75 9.75 0 0 1 6.74 2.74L21 8" }),
2984
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M21 3v5h-5" }),
2985
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M21 12a9 9 0 0 1-9 9 9.75 9.75 0 0 1-6.74-2.74L3 16" }),
2986
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M8 16H3v5" })
2987
- ] });
2988
- }
2989
- function UploadIcon(props) {
2990
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { ...base(props), children: [
2991
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4" }),
2992
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("polyline", { points: "17 8 12 3 7 8" }),
2993
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("line", { x1: "12", x2: "12", y1: "3", y2: "15" })
2994
- ] });
2995
- }
2996
- function FolderOpenIcon(props) {
2997
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("svg", { ...base(props), children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m6 14 1.5-2.9A2 2 0 0 1 9.24 10H20a2 2 0 0 1 1.94 2.5l-1.54 6a2 2 0 0 1-1.95 1.5H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h3.9a2 2 0 0 1 1.69.9l.81 1.2a2 2 0 0 0 1.67.9H18a2 2 0 0 1 2 2v2" }) });
2998
- }
2999
- function CornerDownRightIcon(props) {
3000
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { ...base(props), children: [
3001
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("polyline", { points: "15 10 20 15 15 20" }),
3002
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M4 4v7a4 4 0 0 0 4 4h12" })
3003
- ] });
3004
- }
3005
- function TagIcon(props) {
3006
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { ...base(props), children: [
3007
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M12.586 2.586A2 2 0 0 0 11.172 2H4a2 2 0 0 0-2 2v7.172a2 2 0 0 0 .586 1.414l8.704 8.704a2.426 2.426 0 0 0 3.42 0l6.58-6.58a2.426 2.426 0 0 0 0-3.42z" }),
3008
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("circle", { cx: "7.5", cy: "7.5", r: ".5", fill: "currentColor" })
3009
- ] });
3010
- }
3011
- function DefaultEntityIcon(props) {
3012
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { ...base(props), children: [
3013
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M2.97 12.92A2 2 0 0 0 2 14.63v3.24a2 2 0 0 0 .97 1.71l3 1.8a2 2 0 0 0 2.06 0L12 19v-5.5l-5-3-4.03 2.42Z" }),
3014
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m7 16.5-4.74-2.85" }),
3015
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m7 16.5 5-3" }),
3016
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M7 16.5v5.17" }),
3017
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M12 13.5V19l3.97 2.38a2 2 0 0 0 2.06 0l3-1.8a2 2 0 0 0 .97-1.71v-3.24a2 2 0 0 0-.97-1.71L17 10.5l-5 3Z" }),
3018
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m17 16.5-5-3" }),
3019
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m17 16.5 4.74-2.85" }),
3020
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M17 16.5v5.17" }),
3021
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M7.97 4.42A2 2 0 0 0 7 6.13v4.37l5 3 5-3V6.13a2 2 0 0 0-.97-1.71l-3-1.8a2 2 0 0 0-2.06 0l-3 1.8Z" }),
3022
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M12 8 7.26 5.15" }),
3023
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "m12 8 4.74-2.85" }),
3024
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M12 13.5V8" })
3025
- ] });
3026
- }
3027
- function RestoreIcon(props) {
3028
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { ...base(props), children: [
3029
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M4 14h6v6" }),
3030
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M20 10h-6V4" }),
3031
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M14 10l7-7" }),
3032
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M3 21l7-7" })
3033
- ] });
3034
- }
3035
- function GripResizeIcon(props) {
3036
- return /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("svg", { ...base(props), children: [
3037
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M21 15 15 21" }),
3038
- /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("path", { d: "M21 20 20 21" })
3039
- ] });
3040
- }
3938
+ var import_icons = require("@ai-matrx/design-system/icons");
3939
+ var sized = (Glyph) => (0, import_icons.withGlyphDefaults)(Glyph, { width: 24, height: 24 });
3940
+ var SpinnerIcon = sized(import_icons.Loader2Icon);
3941
+ var Link2Icon = sized(import_icons.Link2Icon);
3942
+ var RefreshIcon = sized(import_icons.RefreshCwIcon);
3943
+ var UploadIcon = sized(import_icons.UploadIcon);
3944
+ var FolderOpenIcon = sized(import_icons.FolderOpenIcon);
3945
+ var FileTextIcon = sized(import_icons.FileTextIcon);
3946
+ var CornerDownRightIcon = sized(import_icons.CornerDownRightIcon);
3947
+ var TagIcon = sized(import_icons.TagIcon);
3948
+ var DefaultEntityIcon = sized(import_icons.BoxesIcon);
3949
+ var RestoreIcon = sized(import_icons.RestoreIcon);
3950
+ var GripResizeIcon = sized(import_icons.GripResizeIcon);
3041
3951
 
3042
3952
  // src/react/components/DefaultWindowShell.tsx
3043
- var import_icons2 = require("@ai-matrx/design-system/icons");
3044
- var import_jsx_runtime5 = require("react/jsx-runtime");
3953
+ var import_icons3 = require("@ai-matrx/design-system/icons");
3954
+ var import_jsx_runtime4 = require("react/jsx-runtime");
3045
3955
  var DEFAULT_WIDTH = 440;
3046
3956
  var DEFAULT_HEIGHT = 580;
3047
3957
  var MIN_WIDTH = 330;
@@ -3125,7 +4035,7 @@ function DefaultWindowShell({
3125
4035
  height: rect.height
3126
4036
  };
3127
4037
  return (0, import_react_dom.createPortal)(
3128
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_design_system2.FloatingLayer, { children: /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
4038
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_design_system2.FloatingLayer, { children: /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
3129
4039
  "div",
3130
4040
  {
3131
4041
  ref: setPanelRef,
@@ -3142,7 +4052,7 @@ function DefaultWindowShell({
3142
4052
  className
3143
4053
  ),
3144
4054
  children: [
3145
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
4055
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
3146
4056
  "header",
3147
4057
  {
3148
4058
  onPointerDown: drag.onPointerDown,
@@ -3154,51 +4064,51 @@ function DefaultWindowShell({
3154
4064
  isMobile ? "" : "cursor-move touch-none"
3155
4065
  ),
3156
4066
  children: [
3157
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)(
4067
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)(
3158
4068
  "span",
3159
4069
  {
3160
4070
  id: labelId,
3161
4071
  className: "flex min-w-0 items-center gap-1.5 text-sm font-medium text-foreground",
3162
4072
  children: [
3163
4073
  icon,
3164
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("span", { className: "truncate", children: title })
4074
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("span", { className: "truncate", children: title })
3165
4075
  ]
3166
4076
  }
3167
4077
  ),
3168
- /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("span", { className: "flex shrink-0 items-center gap-0.5", children: [
3169
- isMobile ? null : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
4078
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsxs)("span", { className: "flex shrink-0 items-center gap-0.5", children: [
4079
+ isMobile ? null : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
3170
4080
  "button",
3171
4081
  {
3172
4082
  type: "button",
3173
4083
  onClick: () => setMaximized((v) => !v),
3174
4084
  "aria-label": maximized ? "Restore window" : "Maximize window",
3175
4085
  className: "flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
3176
- children: maximized ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(RestoreIcon, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_icons2.Maximize2Icon, { className: "h-3.5 w-3.5" })
4086
+ children: maximized ? /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(RestoreIcon, { className: "h-3.5 w-3.5" }) : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_icons3.Maximize2Icon, { className: "h-3.5 w-3.5" })
3177
4087
  }
3178
4088
  ),
3179
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
4089
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
3180
4090
  "button",
3181
4091
  {
3182
4092
  type: "button",
3183
4093
  onClick: onClose,
3184
4094
  "aria-label": "Close",
3185
4095
  className: "flex h-6 w-6 items-center justify-center rounded-md text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
3186
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(import_icons2.XIcon, { className: "h-3.5 w-3.5" })
4096
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(import_icons3.XIcon, { className: "h-3.5 w-3.5" })
3187
4097
  }
3188
4098
  )
3189
4099
  ] })
3190
4100
  ]
3191
4101
  }
3192
4102
  ),
3193
- /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "min-h-0 flex-1 overflow-hidden", children }),
3194
- isMobile || maximized ? null : /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
4103
+ /* @__PURE__ */ (0, import_jsx_runtime4.jsx)("div", { className: "min-h-0 flex-1 overflow-hidden", children }),
4104
+ isMobile || maximized ? null : /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(
3195
4105
  "button",
3196
4106
  {
3197
4107
  type: "button",
3198
4108
  "aria-label": "Resize window",
3199
4109
  onPointerDown: drag.resizeHandle("se"),
3200
4110
  className: "absolute bottom-0 right-0 flex h-4 w-4 cursor-nwse-resize touch-none items-center justify-center text-muted-foreground/60 hover:text-foreground",
3201
- children: /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(GripResizeIcon, { className: "h-3 w-3" })
4111
+ children: /* @__PURE__ */ (0, import_jsx_runtime4.jsx)(GripResizeIcon, { className: "h-3 w-3" })
3202
4112
  }
3203
4113
  )
3204
4114
  ]
@@ -3209,7 +4119,7 @@ function DefaultWindowShell({
3209
4119
  }
3210
4120
 
3211
4121
  // src/react/components/AssociationWindow.tsx
3212
- var import_jsx_runtime6 = require("react/jsx-runtime");
4122
+ var import_jsx_runtime5 = require("react/jsx-runtime");
3213
4123
  function AssociationWindow({
3214
4124
  open,
3215
4125
  onClose,
@@ -3222,16 +4132,16 @@ function AssociationWindow({
3222
4132
  const instanceId = (0, import_react13.useId)();
3223
4133
  const { windowShell } = useAssociationsUiPorts();
3224
4134
  if (!open) return null;
3225
- const body = /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex h-full min-h-0 flex-col gap-2 p-3", children: [
3226
- subtitle ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "shrink-0 text-xs text-muted-foreground", children: subtitle }) : null,
4135
+ const body = /* @__PURE__ */ (0, import_jsx_runtime5.jsxs)("div", { className: "flex h-full min-h-0 flex-col gap-2 p-3", children: [
4136
+ subtitle ? /* @__PURE__ */ (0, import_jsx_runtime5.jsx)("div", { className: "shrink-0 text-xs text-muted-foreground", children: subtitle }) : null,
3227
4137
  children
3228
4138
  ] });
3229
4139
  const windowId = `association:${scopeId}:${instanceId}`;
3230
4140
  if (windowShell) {
3231
4141
  const HostWindow = windowShell.Window;
3232
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(HostWindow, { id: windowId, title, onClose, children: body });
4142
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(HostWindow, { id: windowId, title, onClose, children: body });
3233
4143
  }
3234
- return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
4144
+ return /* @__PURE__ */ (0, import_jsx_runtime5.jsx)(
3235
4145
  DefaultWindowShell,
3236
4146
  {
3237
4147
  id: windowId,
@@ -3246,28 +4156,28 @@ function AssociationWindow({
3246
4156
  // src/react/components/AssociationPicker.tsx
3247
4157
  var import_react14 = require("react");
3248
4158
  var import_design_system3 = require("@ai-matrx/design-system");
3249
- var import_icons4 = require("@ai-matrx/design-system/icons");
3250
- var import_jsx_runtime7 = require("react/jsx-runtime");
4159
+ var import_icons5 = require("@ai-matrx/design-system/icons");
4160
+ var import_jsx_runtime6 = require("react/jsx-runtime");
3251
4161
  function AssociationPicker(props) {
3252
4162
  const store = useAssociationsStore();
3253
4163
  const { pickerOverrides } = useAssociationsUiPorts();
3254
4164
  const info = store.registry.getEntityInfo(props.token);
3255
4165
  const Icon = info.Icon ?? DefaultEntityIcon;
3256
4166
  const Override = pickerOverrides?.[props.token];
3257
- if (Override) return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Override, { ...props });
4167
+ if (Override) return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Override, { ...props });
3258
4168
  const title = `Add ${info.labelPlural}`;
3259
4169
  const subtitle = props.filing ? `File ${props.containerLabel ?? "this"} under a ${info.label.toLowerCase()}` : props.containerLabel ? `Attach to ${props.containerLabel}` : "Click an item to attach or detach it";
3260
4170
  if (!props.open) return null;
3261
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4171
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3262
4172
  AssociationWindow,
3263
4173
  {
3264
4174
  open: props.open,
3265
4175
  onClose: () => props.onOpenChange(false),
3266
4176
  scopeId: `picker:${props.token}`,
3267
4177
  title,
3268
- icon: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon, { className: "size-3.5 text-primary" }),
4178
+ icon: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Icon, { className: "size-3.5 text-primary" }),
3269
4179
  subtitle,
3270
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4180
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3271
4181
  AssociationCandidateBody,
3272
4182
  {
3273
4183
  token: props.token,
@@ -3292,7 +4202,7 @@ function AssociationCandidateBody({
3292
4202
  onClose
3293
4203
  }) {
3294
4204
  void onClose;
3295
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4205
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3296
4206
  EntityCandidateList,
3297
4207
  {
3298
4208
  token,
@@ -3352,10 +4262,10 @@ function EntityCandidateList({
3352
4262
  setBusyId(null);
3353
4263
  }
3354
4264
  };
3355
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(import_jsx_runtime7.Fragment, { children: [
3356
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "relative mb-2", children: [
3357
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_icons4.SearchIcon, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }),
3358
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4265
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(import_jsx_runtime6.Fragment, { children: [
4266
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "relative mb-2", children: [
4267
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_icons5.SearchIcon, { className: "absolute left-2.5 top-1/2 -translate-y-1/2 h-4 w-4 text-muted-foreground" }),
4268
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3359
4269
  import_design_system3.Input,
3360
4270
  {
3361
4271
  autoFocus: true,
@@ -3367,8 +4277,8 @@ function EntityCandidateList({
3367
4277
  }
3368
4278
  )
3369
4279
  ] }),
3370
- /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "flex-1 min-h-0 overflow-y-auto -mx-1 px-1", children: [
3371
- !search.trim() && !error && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4280
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "flex-1 min-h-0 overflow-y-auto -mx-1 px-1", children: [
4281
+ !search.trim() && !error && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3372
4282
  SearchFailureNotice,
3373
4283
  {
3374
4284
  error: null,
@@ -3378,13 +4288,13 @@ function EntityCandidateList({
3378
4288
  className: "mb-1"
3379
4289
  }
3380
4290
  ),
3381
- (loading || recentsLoading) && visibleCount === 0 ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(ListMessage, { children: [
3382
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(SpinnerIcon, { className: "h-4 w-4 animate-spin" }),
4291
+ (loading || recentsLoading) && visibleCount === 0 ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(ListMessage, { children: [
4292
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SpinnerIcon, { className: "h-4 w-4 animate-spin" }),
3383
4293
  "Loading\u2026"
3384
- ] }) : error ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-[12px] text-destructive", children: [
3385
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "font-medium", children: "Couldn\u2019t load items" }),
3386
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "opacity-80", children: error }),
3387
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4294
+ ] }) : error ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-[12px] text-destructive", children: [
4295
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "font-medium", children: "Couldn\u2019t load items" }),
4296
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "opacity-80", children: error }),
4297
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3388
4298
  "button",
3389
4299
  {
3390
4300
  type: "button",
@@ -3393,32 +4303,32 @@ function EntityCandidateList({
3393
4303
  children: "Retry"
3394
4304
  }
3395
4305
  )
3396
- ] }) : visibleCount === 0 ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(ListMessage, { children: canCreate ? `Nothing to attach yet \u2014 create a new ${info.label.toLowerCase()} below.` : "Nothing to attach." }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "space-y-2", children: [
3397
- visibleRecents.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4306
+ ] }) : visibleCount === 0 ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(ListMessage, { children: canCreate ? `Nothing to attach yet \u2014 create a new ${info.label.toLowerCase()} below.` : "Nothing to attach." }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "space-y-2", children: [
4307
+ visibleRecents.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3398
4308
  CandidateSection,
3399
4309
  {
3400
4310
  label: "Recent",
3401
4311
  candidates: visibleRecents,
3402
4312
  attachedIds,
3403
4313
  busyId,
3404
- icon: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
4314
+ icon: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Icon, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
3405
4315
  onToggle: toggle
3406
4316
  }
3407
4317
  ),
3408
- ordinaryCandidates.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4318
+ ordinaryCandidates.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3409
4319
  CandidateSection,
3410
4320
  {
3411
4321
  label: visibleRecents.length > 0 ? `All ${info.labelPlural}` : null,
3412
4322
  candidates: ordinaryCandidates,
3413
4323
  attachedIds,
3414
4324
  busyId,
3415
- icon: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(Icon, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
4325
+ icon: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(Icon, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
3416
4326
  onToggle: toggle
3417
4327
  }
3418
4328
  )
3419
4329
  ] })
3420
4330
  ] }),
3421
- canCreate && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4331
+ canCreate && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3422
4332
  CreateAndAttachFooter,
3423
4333
  {
3424
4334
  token,
@@ -3438,12 +4348,12 @@ function CandidateSection({
3438
4348
  icon,
3439
4349
  onToggle
3440
4350
  }) {
3441
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("section", { className: "space-y-0.5", children: [
3442
- label && /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("p", { className: "px-1 text-[10px] font-medium uppercase tracking-wider text-muted-foreground/60", children: label }),
3443
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("ul", { className: "space-y-0.5", children: candidates.map((candidate) => {
4351
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("section", { className: "space-y-0.5", children: [
4352
+ label && /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("p", { className: "px-1 text-[10px] font-medium uppercase tracking-wider text-muted-foreground/60", children: label }),
4353
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("ul", { className: "space-y-0.5", children: candidates.map((candidate) => {
3444
4354
  const attached = attachedIds.has(candidate.id);
3445
4355
  const busy = busyId === candidate.id;
3446
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
4356
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
3447
4357
  "button",
3448
4358
  {
3449
4359
  type: "button",
@@ -3456,15 +4366,15 @@ function CandidateSection({
3456
4366
  ),
3457
4367
  children: [
3458
4368
  icon,
3459
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "flex-1 min-w-0 truncate text-foreground", children: candidate.title }),
3460
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4369
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("span", { className: "flex-1 min-w-0 truncate text-foreground", children: candidate.title }),
4370
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3461
4371
  "span",
3462
4372
  {
3463
4373
  className: (0, import_design_system3.cn)(
3464
4374
  "flex h-5 w-5 items-center justify-center rounded-full shrink-0",
3465
4375
  attached ? "bg-primary text-primary-foreground" : "border border-border text-muted-foreground group-hover:border-primary/60"
3466
4376
  ),
3467
- children: busy ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(SpinnerIcon, { className: "h-3 w-3 animate-spin" }) : attached ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_icons4.CheckIcon, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_icons4.PlusIcon, { className: "h-3 w-3" })
4377
+ children: busy ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SpinnerIcon, { className: "h-3 w-3 animate-spin" }) : attached ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_icons5.CheckIcon, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_icons5.PlusIcon, { className: "h-3 w-3" })
3468
4378
  }
3469
4379
  )
3470
4380
  ]
@@ -3520,7 +4430,7 @@ function CreateAndAttachFooter({
3520
4430
  }
3521
4431
  };
3522
4432
  if (!editing) {
3523
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
4433
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)(
3524
4434
  "button",
3525
4435
  {
3526
4436
  type: "button",
@@ -3530,10 +4440,10 @@ function CreateAndAttachFooter({
3530
4440
  },
3531
4441
  className: "mt-2 flex min-h-11 w-full shrink-0 items-center justify-center gap-1.5 rounded-md border border-dashed border-border px-3 py-2 text-sm text-muted-foreground transition-colors hover:border-primary/60 hover:text-foreground md:min-h-0",
3532
4442
  children: [
3533
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_icons4.PlusIcon, { className: "h-4 w-4" }),
4443
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_icons5.PlusIcon, { className: "h-4 w-4" }),
3534
4444
  "New ",
3535
4445
  info.label,
3536
- seed ? /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("span", { className: "max-w-40 truncate text-muted-foreground/70", children: [
4446
+ seed ? /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("span", { className: "max-w-40 truncate text-muted-foreground/70", children: [
3537
4447
  "\u201C",
3538
4448
  seed,
3539
4449
  "\u201D"
@@ -3542,8 +4452,8 @@ function CreateAndAttachFooter({
3542
4452
  }
3543
4453
  );
3544
4454
  }
3545
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)("div", { className: "mt-2 flex shrink-0 items-center gap-1.5", children: [
3546
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4455
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsxs)("div", { className: "mt-2 flex shrink-0 items-center gap-1.5", children: [
4456
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3547
4457
  import_design_system3.Input,
3548
4458
  {
3549
4459
  autoFocus: true,
@@ -3562,17 +4472,17 @@ function CreateAndAttachFooter({
3562
4472
  style: { fontSize: 16 }
3563
4473
  }
3564
4474
  ),
3565
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4475
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3566
4476
  "button",
3567
4477
  {
3568
4478
  type: "button",
3569
4479
  disabled: busy || !name.trim(),
3570
4480
  onClick: () => void submit(),
3571
4481
  className: "flex h-11 items-center gap-1 rounded-md bg-primary px-2.5 text-sm font-medium text-primary-foreground transition-opacity disabled:opacity-50 md:h-8",
3572
- children: busy ? /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(SpinnerIcon, { className: "h-3.5 w-3.5 animate-spin" }) : "Create"
4482
+ children: busy ? /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(SpinnerIcon, { className: "h-3.5 w-3.5 animate-spin" }) : "Create"
3573
4483
  }
3574
4484
  ),
3575
- /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
4485
+ /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(
3576
4486
  "button",
3577
4487
  {
3578
4488
  type: "button",
@@ -3583,35 +4493,35 @@ function CreateAndAttachFooter({
3583
4493
  },
3584
4494
  title: "Cancel",
3585
4495
  className: "flex h-11 w-11 items-center justify-center rounded-md border border-border text-muted-foreground transition-colors hover:text-foreground disabled:opacity-50 md:h-8 md:w-8",
3586
- children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_icons4.XIcon, { className: "h-4 w-4" })
4496
+ children: /* @__PURE__ */ (0, import_jsx_runtime6.jsx)(import_icons5.XIcon, { className: "h-4 w-4" })
3587
4497
  }
3588
4498
  )
3589
4499
  ] });
3590
4500
  }
3591
4501
  function ListMessage({ children }) {
3592
- return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("div", { className: "flex items-center justify-center gap-2 py-8 text-[13px] text-muted-foreground", children });
4502
+ return /* @__PURE__ */ (0, import_jsx_runtime6.jsx)("div", { className: "flex items-center justify-center gap-2 py-8 text-[13px] text-muted-foreground", children });
3593
4503
  }
3594
4504
 
3595
4505
  // src/react/components/UniversalAssociationPicker.tsx
3596
4506
  var import_react15 = require("react");
3597
4507
  var import_design_system5 = require("@ai-matrx/design-system");
3598
- var import_icons7 = require("@ai-matrx/design-system/icons");
4508
+ var import_icons8 = require("@ai-matrx/design-system/icons");
3599
4509
 
3600
4510
  // src/react/components/entityDoors.tsx
3601
4511
  var import_design_system4 = require("@ai-matrx/design-system");
3602
- var import_icons5 = require("@ai-matrx/design-system/icons");
4512
+ var import_icons6 = require("@ai-matrx/design-system/icons");
3603
4513
  var import_outbound_react = require("@ai-matrx/kit/outbound-react");
3604
- var import_jsx_runtime8 = require("react/jsx-runtime");
4514
+ var import_jsx_runtime7 = require("react/jsx-runtime");
3605
4515
  function DoorRef(props) {
3606
4516
  const { onOpen, ...refProps } = props;
3607
4517
  const { entityDoors } = useAssociationsUiPorts();
3608
4518
  const store = useAssociationsStore();
3609
4519
  const HostRef = entityDoors?.EntityRef;
3610
- if (HostRef) return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(HostRef, { ...refProps });
4520
+ if (HostRef) return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(HostRef, { ...refProps });
3611
4521
  const name = refProps.name ?? null;
3612
4522
  const href = store.registry.tryGetEntityInfo(refProps.token)?.hrefFor?.(refProps.id) ?? null;
3613
4523
  if (onOpen) {
3614
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4524
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3615
4525
  "button",
3616
4526
  {
3617
4527
  type: "button",
@@ -3625,7 +4535,7 @@ function DoorRef(props) {
3625
4535
  );
3626
4536
  }
3627
4537
  if (href) {
3628
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
4538
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsxs)(
3629
4539
  "a",
3630
4540
  {
3631
4541
  href,
@@ -3636,19 +4546,19 @@ function DoorRef(props) {
3636
4546
  refProps.className
3637
4547
  ),
3638
4548
  children: [
3639
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "min-w-0 truncate", children: name }),
3640
- /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_icons5.ExternalLinkIcon, { className: "h-3 w-3 shrink-0 opacity-0 transition-opacity group-hover:opacity-60" })
4549
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: "min-w-0 truncate", children: name }),
4550
+ /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_icons6.ExternalLinkIcon, { className: "h-3 w-3 shrink-0 opacity-0 transition-opacity group-hover:opacity-60" })
3641
4551
  ]
3642
4552
  }
3643
4553
  );
3644
4554
  }
3645
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: (0, import_design_system4.cn)("min-w-0 truncate", refProps.className), children: name });
4555
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)("span", { className: (0, import_design_system4.cn)("min-w-0 truncate", refProps.className), children: name });
3646
4556
  }
3647
4557
  function UnresolvedRef({ token, id }) {
3648
4558
  const { entityDoors } = useAssociationsUiPorts();
3649
4559
  const HostUnresolved = entityDoors?.UnresolvedRef;
3650
- if (HostUnresolved) return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(HostUnresolved, { token, id });
3651
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4560
+ if (HostUnresolved) return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(HostUnresolved, { token, id });
4561
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3652
4562
  "span",
3653
4563
  {
3654
4564
  className: "inline-flex items-center rounded border border-border/60 bg-muted/40 px-1.5 py-0.5 text-[11px] text-muted-foreground",
@@ -3661,11 +4571,11 @@ function DoorControlsSlot(props) {
3661
4571
  const { entityDoors } = useAssociationsUiPorts();
3662
4572
  const store = useAssociationsStore();
3663
4573
  const HostControls = entityDoors?.DoorControls;
3664
- if (HostControls) return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(HostControls, { ...props });
4574
+ if (HostControls) return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(HostControls, { ...props });
3665
4575
  const href = store.registry.tryGetEntityInfo(props.token)?.hrefFor?.(props.id) ?? null;
3666
4576
  if (!href) return null;
3667
4577
  const label = props.name ? `Open ${props.name}` : `Open this ${props.token}`;
3668
- return /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
4578
+ return /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(
3669
4579
  import_outbound_react.OutboundLink,
3670
4580
  {
3671
4581
  href,
@@ -3675,13 +4585,13 @@ function DoorControlsSlot(props) {
3675
4585
  "inline-flex h-5 w-5 shrink-0 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
3676
4586
  props.className
3677
4587
  ),
3678
- children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_icons5.ExternalLinkIcon, { className: "h-3 w-3" })
4588
+ children: /* @__PURE__ */ (0, import_jsx_runtime7.jsx)(import_icons6.ExternalLinkIcon, { className: "h-3 w-3" })
3679
4589
  }
3680
4590
  );
3681
4591
  }
3682
4592
 
3683
4593
  // src/react/components/UniversalAssociationPicker.tsx
3684
- var import_jsx_runtime9 = require("react/jsx-runtime");
4594
+ var import_jsx_runtime8 = require("react/jsx-runtime");
3685
4595
  function attachedKey(token, id) {
3686
4596
  return `${token}:${id}`;
3687
4597
  }
@@ -3736,10 +4646,10 @@ function UniversalAssociationPicker(props) {
3736
4646
  groups.set(r.token, list);
3737
4647
  }
3738
4648
  const BrowseOverride = browseToken ? pickerOverrides?.[browseToken] : void 0;
3739
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: (0, import_design_system5.cn)("flex min-h-0 flex-1 flex-col gap-2", className), children: [
3740
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "relative", children: [
3741
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_icons7.SearchIcon, { className: "absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
3742
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4649
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: (0, import_design_system5.cn)("flex min-h-0 flex-1 flex-col gap-2", className), children: [
4650
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "relative", children: [
4651
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_icons8.SearchIcon, { className: "absolute left-2.5 top-1/2 h-4 w-4 -translate-y-1/2 text-muted-foreground" }),
4652
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3743
4653
  import_design_system5.Input,
3744
4654
  {
3745
4655
  autoFocus: true,
@@ -3753,9 +4663,9 @@ function UniversalAssociationPicker(props) {
3753
4663
  style: { fontSize: 16 }
3754
4664
  }
3755
4665
  ),
3756
- loading && browseToken === null && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SpinnerIcon, { className: "absolute right-2.5 top-1/2 h-4 w-4 -translate-y-1/2 animate-spin text-muted-foreground" })
4666
+ loading && browseToken === null && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SpinnerIcon, { className: "absolute right-2.5 top-1/2 h-4 w-4 -translate-y-1/2 animate-spin text-muted-foreground" })
3757
4667
  ] }),
3758
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4668
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3759
4669
  "div",
3760
4670
  {
3761
4671
  role: "group",
@@ -3765,7 +4675,7 @@ function UniversalAssociationPicker(props) {
3765
4675
  const info = store.registry.getEntityInfo(t);
3766
4676
  const ChipIcon = info.Icon ?? DefaultEntityIcon;
3767
4677
  const active = browseToken === t;
3768
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
4678
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
3769
4679
  "button",
3770
4680
  {
3771
4681
  type: "button",
@@ -3776,7 +4686,7 @@ function UniversalAssociationPicker(props) {
3776
4686
  active ? "border-primary/50 bg-primary/10 text-foreground" : "border-border text-muted-foreground hover:text-foreground hover:bg-accent"
3777
4687
  ),
3778
4688
  children: [
3779
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(ChipIcon, { className: "h-3 w-3" }),
4689
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(ChipIcon, { className: "h-3 w-3" }),
3780
4690
  info.labelPlural
3781
4691
  ]
3782
4692
  },
@@ -3789,17 +4699,17 @@ function UniversalAssociationPicker(props) {
3789
4699
  // The token's canonical host picker (e.g. the stored-files browser)
3790
4700
  // owns per-token browsing when registered — never a plain list twin.
3791
4701
  // It opens in its own window; this body says where it went.
3792
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
4702
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
3793
4703
  "div",
3794
4704
  {
3795
4705
  role: "region",
3796
4706
  "aria-label": `${store.registry.getEntityInfo(browseToken).labelPlural} window`,
3797
4707
  className: "flex flex-1 flex-col items-center justify-center gap-3 px-4 py-8 text-center",
3798
4708
  children: [
3799
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "text-sm text-foreground", children: overrideOpen ? `The ${store.registry.getEntityInfo(browseToken).labelPlural.toLowerCase()} window is open.` : `The ${store.registry.getEntityInfo(browseToken).labelPlural.toLowerCase()} window is closed.` }),
3800
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "max-w-xs text-[12px] text-muted-foreground", children: overrideOpen ? "Check items there to attach them; uncheck to detach. Changes save as you go." : "Reopen it to pick more, or go back to search everything." }),
3801
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex flex-wrap items-center justify-center gap-2", children: [
3802
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
4709
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "text-sm text-foreground", children: overrideOpen ? `The ${store.registry.getEntityInfo(browseToken).labelPlural.toLowerCase()} window is open.` : `The ${store.registry.getEntityInfo(browseToken).labelPlural.toLowerCase()} window is closed.` }),
4710
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "max-w-xs text-[12px] text-muted-foreground", children: overrideOpen ? "Check items there to attach them; uncheck to detach. Changes save as you go." : "Reopen it to pick more, or go back to search everything." }),
4711
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "flex flex-wrap items-center justify-center gap-2", children: [
4712
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
3803
4713
  import_design_system5.Button,
3804
4714
  {
3805
4715
  type: "button",
@@ -3810,12 +4720,12 @@ function UniversalAssociationPicker(props) {
3810
4720
  setOverrideMount((n) => n + 1);
3811
4721
  },
3812
4722
  children: [
3813
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_icons7.Maximize2Icon, { className: "mr-1.5 h-3.5 w-3.5" }),
4723
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_icons8.Maximize2Icon, { className: "mr-1.5 h-3.5 w-3.5" }),
3814
4724
  overrideOpen ? "Bring window to front" : "Reopen window"
3815
4725
  ]
3816
4726
  }
3817
4727
  ),
3818
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4728
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3819
4729
  import_design_system5.Button,
3820
4730
  {
3821
4731
  type: "button",
@@ -3826,7 +4736,7 @@ function UniversalAssociationPicker(props) {
3826
4736
  }
3827
4737
  )
3828
4738
  ] }),
3829
- overrideOpen && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4739
+ overrideOpen && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3830
4740
  BrowseOverride,
3831
4741
  {
3832
4742
  open: true,
@@ -3846,7 +4756,7 @@ function UniversalAssociationPicker(props) {
3846
4756
  ]
3847
4757
  }
3848
4758
  )
3849
- ) : browseToken ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex min-h-0 flex-1 flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4759
+ ) : browseToken ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("div", { className: "flex min-h-0 flex-1 flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3850
4760
  AssociationCandidateBody,
3851
4761
  {
3852
4762
  token: browseToken,
@@ -3859,13 +4769,13 @@ function UniversalAssociationPicker(props) {
3859
4769
  onAttach: (id, title) => onAttach(browseToken, id, title),
3860
4770
  onDetach: (id) => onDetach(browseToken, id)
3861
4771
  }
3862
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4772
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3863
4773
  "div",
3864
4774
  {
3865
4775
  role: "region",
3866
4776
  "aria-label": "Association search results",
3867
4777
  className: "-mx-1 min-h-24 flex-1 overflow-y-auto overscroll-contain px-1",
3868
- children: error ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4778
+ children: error ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3869
4779
  SearchFailureNotice,
3870
4780
  {
3871
4781
  error,
@@ -3873,8 +4783,8 @@ function UniversalAssociationPicker(props) {
3873
4783
  operation: "Search to attach",
3874
4784
  origin: "associations/UniversalAssociationPicker"
3875
4785
  }
3876
- ) : results.length === 0 && failures.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "py-6 text-center text-[12px] text-muted-foreground", children: loading ? "Searching\u2026" : query.trim() ? "No matches \u2014 narrow with a type chip to browse." : "Nothing to attach yet. Type to search, or pick a type to browse." }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "space-y-2", children: [
3877
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4786
+ ) : results.length === 0 && failures.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "py-6 text-center text-[12px] text-muted-foreground", children: loading ? "Searching\u2026" : query.trim() ? "No matches \u2014 narrow with a type chip to browse." : "Nothing to attach yet. Type to search, or pick a type to browse." }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "space-y-2", children: [
4787
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3878
4788
  SearchFailureNotice,
3879
4789
  {
3880
4790
  error: null,
@@ -3883,20 +4793,20 @@ function UniversalAssociationPicker(props) {
3883
4793
  origin: "associations/UniversalAssociationPicker"
3884
4794
  }
3885
4795
  ),
3886
- source !== "search" && results.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("p", { className: "px-1 text-[10px] font-medium uppercase tracking-wider text-muted-foreground/60", children: source === "recents" ? "Recent" : "Browse" }),
4796
+ source !== "search" && results.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("p", { className: "px-1 text-[10px] font-medium uppercase tracking-wider text-muted-foreground/60", children: source === "recents" ? "Recent" : "Browse" }),
3887
4797
  [...groups.entries()].map(([token, items]) => {
3888
4798
  const info = store.registry.getEntityInfo(token);
3889
4799
  const GroupIcon = info.Icon ?? DefaultEntityIcon;
3890
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "space-y-0.5", children: [
3891
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("p", { className: "flex items-center gap-1 px-1 text-[10px] font-medium uppercase tracking-wider text-muted-foreground/70", children: [
3892
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(GroupIcon, { className: "h-3 w-3" }),
4800
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("div", { className: "space-y-0.5", children: [
4801
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)("p", { className: "flex items-center gap-1 px-1 text-[10px] font-medium uppercase tracking-wider text-muted-foreground/70", children: [
4802
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(GroupIcon, { className: "h-3 w-3" }),
3893
4803
  info.labelPlural
3894
4804
  ] }),
3895
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("ul", { className: "space-y-0.5", children: items.map((c) => {
4805
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("ul", { className: "space-y-0.5", children: items.map((c) => {
3896
4806
  const key = attachedKey(c.token, c.id);
3897
4807
  const attached = attachedKeys.has(key);
3898
4808
  const busy = busyKey === key;
3899
- return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
4809
+ return /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
3900
4810
  "li",
3901
4811
  {
3902
4812
  className: (0, import_design_system5.cn)(
@@ -3905,7 +4815,7 @@ function UniversalAssociationPicker(props) {
3905
4815
  attached && "bg-accent/40"
3906
4816
  ),
3907
4817
  children: [
3908
- /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
4818
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsxs)(
3909
4819
  "button",
3910
4820
  {
3911
4821
  type: "button",
@@ -3917,21 +4827,21 @@ function UniversalAssociationPicker(props) {
3917
4827
  "disabled:opacity-50"
3918
4828
  ),
3919
4829
  children: [
3920
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "min-w-0 flex-1 truncate text-foreground", children: c.title }),
3921
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4830
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)("span", { className: "min-w-0 flex-1 truncate text-foreground", children: c.title }),
4831
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3922
4832
  "span",
3923
4833
  {
3924
4834
  className: (0, import_design_system5.cn)(
3925
4835
  "flex h-5 w-5 shrink-0 items-center justify-center rounded-full",
3926
4836
  attached ? "bg-primary text-primary-foreground" : "border border-border text-muted-foreground group-hover:border-primary/60"
3927
4837
  ),
3928
- children: busy ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SpinnerIcon, { className: "h-3 w-3 animate-spin" }) : attached ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_icons7.CheckIcon, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_icons7.PlusIcon, { className: "h-3 w-3" })
4838
+ children: busy ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(SpinnerIcon, { className: "h-3 w-3 animate-spin" }) : attached ? /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_icons8.CheckIcon, { className: "h-3 w-3" }) : /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(import_icons8.PlusIcon, { className: "h-3 w-3" })
3929
4839
  }
3930
4840
  )
3931
4841
  ]
3932
4842
  }
3933
4843
  ),
3934
- /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4844
+ /* @__PURE__ */ (0, import_jsx_runtime8.jsx)(
3935
4845
  DoorControlsSlot,
3936
4846
  {
3937
4847
  token: c.token,
@@ -3955,8 +4865,8 @@ function UniversalAssociationPicker(props) {
3955
4865
  // src/react/components/AttachedItemsSheet.tsx
3956
4866
  var import_react16 = require("react");
3957
4867
  var import_design_system6 = require("@ai-matrx/design-system");
3958
- var import_icons9 = require("@ai-matrx/design-system/icons");
3959
- var import_jsx_runtime10 = require("react/jsx-runtime");
4868
+ var import_icons10 = require("@ai-matrx/design-system/icons");
4869
+ var import_jsx_runtime9 = require("react/jsx-runtime");
3960
4870
  function metadataIsPinned(metadata) {
3961
4871
  return metadata !== null && typeof metadata === "object" && !Array.isArray(metadata) && Reflect.get(metadata, "pinned") === true;
3962
4872
  }
@@ -3967,9 +4877,9 @@ function AttachedItemsSheet(props) {
3967
4877
  const title = info.labelPlural;
3968
4878
  const containerName = props.container?.label ?? props.containerLabel;
3969
4879
  const filing = props.container?.direction === "outgoing";
3970
- const subtitle = props.container ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "inline-flex min-w-0 max-w-full items-center gap-1", children: [
4880
+ const subtitle = props.container ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("span", { className: "inline-flex min-w-0 max-w-full items-center gap-1", children: [
3971
4881
  filing ? "What this is filed under:" : "Attached to",
3972
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4882
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
3973
4883
  DoorRef,
3974
4884
  {
3975
4885
  token: props.container.type,
@@ -3980,16 +4890,16 @@ function AttachedItemsSheet(props) {
3980
4890
  )
3981
4891
  ] }) : props.containerLabel ? `Attached to ${props.containerLabel}` : "Attached items";
3982
4892
  if (!props.open) return null;
3983
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4893
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
3984
4894
  AssociationWindow,
3985
4895
  {
3986
4896
  open: props.open,
3987
4897
  onClose: () => props.onOpenChange(false),
3988
4898
  scopeId: `attached:${props.token}`,
3989
4899
  title,
3990
- icon: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon, { className: "size-3.5 text-primary" }),
4900
+ icon: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Icon, { className: "size-3.5 text-primary" }),
3991
4901
  subtitle,
3992
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4902
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
3993
4903
  AttachedItemsBody,
3994
4904
  {
3995
4905
  token: props.token,
@@ -4078,31 +4988,31 @@ function AttachedItemsBody({
4078
4988
  setBusyId(null);
4079
4989
  }
4080
4990
  };
4081
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
4082
- titleError ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "mb-2 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-[12px] text-destructive", children: [
4991
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(import_jsx_runtime9.Fragment, { children: [
4992
+ titleError ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "mb-2 rounded-md border border-destructive/40 bg-destructive/10 px-3 py-2 text-[12px] text-destructive", children: [
4083
4993
  "Showing names recorded at attach time \u2014 they may be out of date.",
4084
4994
  " ",
4085
4995
  titleError
4086
4996
  ] }) : null,
4087
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex-1 min-h-0 overflow-y-auto -mx-1 px-1", children: links.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("div", { className: "flex items-center justify-center py-8 text-[13px] text-muted-foreground", children: "Nothing attached yet." }) : titles === null ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("div", { className: "flex items-center justify-center gap-2 py-8 text-[13px] text-muted-foreground", children: [
4088
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SpinnerIcon, { className: "h-4 w-4 animate-spin" }),
4997
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex-1 min-h-0 overflow-y-auto -mx-1 px-1", children: links.length === 0 ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("div", { className: "flex items-center justify-center py-8 text-[13px] text-muted-foreground", children: "Nothing attached yet." }) : titles === null ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)("div", { className: "flex items-center justify-center gap-2 py-8 text-[13px] text-muted-foreground", children: [
4998
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SpinnerIcon, { className: "h-4 w-4 animate-spin" }),
4089
4999
  "Loading\u2026"
4090
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("ul", { className: "space-y-0.5", children: links.map((link) => {
5000
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("ul", { className: "space-y-0.5", children: links.map((link) => {
4091
5001
  const resolved = titles.get(link.resourceId);
4092
5002
  const missing = !titles.has(link.resourceId);
4093
5003
  const name = resolved ?? link.label ?? (missing ? null : "Untitled");
4094
5004
  const busy = busyId === link.resourceId;
4095
5005
  const pinned = metadataIsPinned(link.metadata);
4096
- return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
5006
+ return /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
4097
5007
  "li",
4098
5008
  {
4099
5009
  className: "group/entity-ref group flex items-center gap-2 rounded-md px-2.5 py-2 text-sm transition-colors hover:bg-accent",
4100
5010
  children: [
4101
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
4102
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "flex-1 min-w-0 truncate", children: name === null ? (
5011
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(Icon, { className: "h-4 w-4 shrink-0 text-muted-foreground" }),
5012
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)("span", { className: "flex-1 min-w-0 truncate", children: name === null ? (
4103
5013
  // The X beside the row stays the one-click detach.
4104
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(UnresolvedRef, { token, id: link.resourceId })
4105
- ) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
5014
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(UnresolvedRef, { token, id: link.resourceId })
5015
+ ) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4106
5016
  DoorRef,
4107
5017
  {
4108
5018
  token,
@@ -4112,7 +5022,7 @@ function AttachedItemsBody({
4112
5022
  className: "text-foreground"
4113
5023
  }
4114
5024
  ) }),
4115
- onSetPinned ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
5025
+ onSetPinned ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4116
5026
  "button",
4117
5027
  {
4118
5028
  type: "button",
@@ -4124,8 +5034,8 @@ function AttachedItemsBody({
4124
5034
  "flex h-6 w-6 shrink-0 items-center justify-center rounded-md transition-colors hover:bg-accent hover:text-foreground disabled:opacity-50",
4125
5035
  pinned ? "text-primary" : "text-muted-foreground"
4126
5036
  ),
4127
- children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4128
- import_icons9.PinIcon,
5037
+ children: /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
5038
+ import_icons10.PinIcon,
4129
5039
  {
4130
5040
  className: (0, import_design_system6.cn)(
4131
5041
  "h-3.5 w-3.5",
@@ -4135,7 +5045,7 @@ function AttachedItemsBody({
4135
5045
  )
4136
5046
  }
4137
5047
  ) : null,
4138
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
5048
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(
4139
5049
  "button",
4140
5050
  {
4141
5051
  type: "button",
@@ -4146,7 +5056,7 @@ function AttachedItemsBody({
4146
5056
  "flex h-6 w-6 shrink-0 items-center justify-center rounded-md text-muted-foreground transition-colors",
4147
5057
  "hover:bg-destructive/10 hover:text-destructive disabled:opacity-50"
4148
5058
  ),
4149
- children: busy ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SpinnerIcon, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_icons9.XIcon, { className: "h-3.5 w-3.5" })
5059
+ children: busy ? /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(SpinnerIcon, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_icons10.XIcon, { className: "h-3.5 w-3.5" })
4150
5060
  }
4151
5061
  )
4152
5062
  ]
@@ -4154,14 +5064,14 @@ function AttachedItemsBody({
4154
5064
  link.edgeId
4155
5065
  );
4156
5066
  }) }) }),
4157
- onAdd ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
5067
+ onAdd ? /* @__PURE__ */ (0, import_jsx_runtime9.jsxs)(
4158
5068
  "button",
4159
5069
  {
4160
5070
  type: "button",
4161
5071
  onClick: onAdd,
4162
5072
  className: "mt-2 flex w-full items-center justify-center gap-1.5 rounded-md border border-border px-3 py-2 text-sm text-muted-foreground transition-colors hover:border-primary/60 hover:text-foreground",
4163
5073
  children: [
4164
- /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_icons9.PlusIcon, { className: "h-4 w-4" }),
5074
+ /* @__PURE__ */ (0, import_jsx_runtime9.jsx)(import_icons10.PlusIcon, { className: "h-4 w-4" }),
4165
5075
  "Attach ",
4166
5076
  info.labelPlural.toLowerCase()
4167
5077
  ]
@@ -4223,8 +5133,8 @@ function getContentRoleMeta(role) {
4223
5133
  }
4224
5134
 
4225
5135
  // src/react/components/AssociationCard.tsx
4226
- var import_icons11 = require("@ai-matrx/design-system/icons");
4227
- var import_jsx_runtime11 = require("react/jsx-runtime");
5136
+ var import_icons12 = require("@ai-matrx/design-system/icons");
5137
+ var import_jsx_runtime10 = require("react/jsx-runtime");
4228
5138
  function AssociationCard({
4229
5139
  token,
4230
5140
  container: containerProp,
@@ -4263,7 +5173,7 @@ function AssociationCard({
4263
5173
  const canDrillIn = count > 0;
4264
5174
  const countWord = filing ? "filed under" : "attached";
4265
5175
  const drillTitle = canDrillIn ? `View the ${info.labelPlural.toLowerCase()} attached to ${container.label ?? "this"}` : void 0;
4266
- return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(import_jsx_runtime11.Fragment, { children: [
5176
+ return /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(import_jsx_runtime10.Fragment, { children: [
4267
5177
  look !== "tiles" ? (
4268
5178
  // ONE-LINE LOOKS (opt-in, off by default): small icon, UPPERCASE name,
4269
5179
  // count, then the "+".
@@ -4275,7 +5185,7 @@ function AssociationCard({
4275
5185
  // so the tap target's own 44px box centers the 28px circle with
4276
5186
  // 8px on every side. Never pass a layout class to a tap button —
4277
5187
  // its className lands on the ICON (the 2026-09-27 crooked "+").
4278
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
5188
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
4279
5189
  "div",
4280
5190
  {
4281
5191
  "data-association-card": token,
@@ -4286,7 +5196,7 @@ function AssociationCard({
4286
5196
  className
4287
5197
  ),
4288
5198
  children: [
4289
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
5199
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
4290
5200
  "button",
4291
5201
  {
4292
5202
  type: "button",
@@ -4299,13 +5209,13 @@ function AssociationCard({
4299
5209
  canDrillIn ? "cursor-pointer hover:text-foreground" : "cursor-default"
4300
5210
  ),
4301
5211
  children: [
4302
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
4303
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "min-w-0 truncate text-xs font-semibold uppercase tracking-wider text-foreground", children: info.labelPlural }),
4304
- loading ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SpinnerIcon, { className: "h-3 w-3 animate-spin text-muted-foreground" }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "text-xs tabular-nums text-muted-foreground", children: count })
5212
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon, { className: "h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
5213
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "min-w-0 truncate text-xs font-semibold uppercase tracking-wider text-foreground", children: info.labelPlural }),
5214
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SpinnerIcon, { className: "h-3 w-3 animate-spin text-muted-foreground" }) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "text-xs tabular-nums text-muted-foreground", children: count })
4305
5215
  ]
4306
5216
  }
4307
5217
  ),
4308
- canAttach && (look === "compact" ? /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
5218
+ canAttach && (look === "compact" ? /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4309
5219
  import_buttons.PlusTapButton,
4310
5220
  {
4311
5221
  variant: "outline",
@@ -4313,7 +5223,7 @@ function AssociationCard({
4313
5223
  tooltip: false,
4314
5224
  onClick: () => setOpen(true)
4315
5225
  }
4316
- ) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
5226
+ ) : /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4317
5227
  "button",
4318
5228
  {
4319
5229
  type: "button",
@@ -4321,13 +5231,13 @@ function AssociationCard({
4321
5231
  "aria-label": `Attach ${info.labelPlural.toLowerCase()}`,
4322
5232
  title: `Attach ${info.labelPlural.toLowerCase()}`,
4323
5233
  className: "flex h-11 w-11 shrink-0 items-center justify-center rounded-md border border-border text-muted-foreground transition-colors hover:border-primary/60 hover:text-foreground lg:h-7 lg:w-7",
4324
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_icons11.PlusIcon, { className: "h-4 w-4" })
5234
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_icons12.PlusIcon, { className: "h-4 w-4" })
4325
5235
  }
4326
5236
  ))
4327
5237
  ]
4328
5238
  }
4329
5239
  )
4330
- ) : /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
5240
+ ) : /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
4331
5241
  "div",
4332
5242
  {
4333
5243
  "data-association-card": token,
@@ -4337,7 +5247,7 @@ function AssociationCard({
4337
5247
  className
4338
5248
  ),
4339
5249
  children: [
4340
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
5250
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4341
5251
  "span",
4342
5252
  {
4343
5253
  className: (0, import_design_system7.cn)(
@@ -4346,7 +5256,7 @@ function AssociationCard({
4346
5256
  )
4347
5257
  }
4348
5258
  ),
4349
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
5259
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)(
4350
5260
  "button",
4351
5261
  {
4352
5262
  type: "button",
@@ -4358,7 +5268,7 @@ function AssociationCard({
4358
5268
  canDrillIn ? "cursor-pointer" : "cursor-default"
4359
5269
  ),
4360
5270
  children: [
4361
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
5271
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4362
5272
  "span",
4363
5273
  {
4364
5274
  className: (0, import_design_system7.cn)(
@@ -4366,20 +5276,20 @@ function AssociationCard({
4366
5276
  role.accentBg,
4367
5277
  role.accentText
4368
5278
  ),
4369
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(Icon, { className: "h-4 w-4" })
5279
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(Icon, { className: "h-4 w-4" })
4370
5280
  }
4371
5281
  ),
4372
- /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: "min-w-0 flex-1", children: [
4373
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "block truncate text-sm font-medium text-foreground", children: info.labelPlural }),
4374
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: "block text-xs text-muted-foreground tabular-nums", children: loading ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("span", { className: "inline-flex items-center gap-1", children: [
4375
- /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(SpinnerIcon, { className: "h-3 w-3 animate-spin" }),
5282
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "min-w-0 flex-1", children: [
5283
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "block truncate text-sm font-medium text-foreground", children: info.labelPlural }),
5284
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)("span", { className: "block text-xs text-muted-foreground tabular-nums", children: loading ? /* @__PURE__ */ (0, import_jsx_runtime10.jsxs)("span", { className: "inline-flex items-center gap-1", children: [
5285
+ /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(SpinnerIcon, { className: "h-3 w-3 animate-spin" }),
4376
5286
  "Loading\u2026"
4377
5287
  ] }) : `${count} ${countWord}` })
4378
5288
  ] })
4379
5289
  ]
4380
5290
  }
4381
5291
  ),
4382
- canAttach && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
5292
+ canAttach && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4383
5293
  "button",
4384
5294
  {
4385
5295
  type: "button",
@@ -4387,13 +5297,13 @@ function AssociationCard({
4387
5297
  "aria-label": `Attach ${info.labelPlural.toLowerCase()}`,
4388
5298
  title: `Attach ${info.labelPlural.toLowerCase()}`,
4389
5299
  className: "mr-2 flex h-11 w-11 shrink-0 items-center justify-center rounded-md border border-border text-muted-foreground transition-colors hover:border-primary/60 hover:text-foreground lg:mr-3 lg:h-7 lg:w-7",
4390
- children: /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(import_icons11.PlusIcon, { className: "h-4 w-4" })
5300
+ children: /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(import_icons12.PlusIcon, { className: "h-4 w-4" })
4391
5301
  }
4392
5302
  )
4393
5303
  ]
4394
5304
  }
4395
5305
  ),
4396
- listOpen && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
5306
+ listOpen && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4397
5307
  AttachedItemsSheet,
4398
5308
  {
4399
5309
  open: listOpen,
@@ -4412,7 +5322,7 @@ function AssociationCard({
4412
5322
  onSetPinned: (resourceId, pinned, role2) => setPinned(token, resourceId, pinned, role2 ?? void 0)
4413
5323
  }
4414
5324
  ),
4415
- canAttach && /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
5325
+ canAttach && /* @__PURE__ */ (0, import_jsx_runtime10.jsx)(
4416
5326
  AssociationPicker,
4417
5327
  {
4418
5328
  open,
@@ -4431,7 +5341,7 @@ function AssociationCard({
4431
5341
 
4432
5342
  // src/react/components/AssociationCardGrid.tsx
4433
5343
  var import_design_system8 = require("@ai-matrx/design-system");
4434
- var import_jsx_runtime12 = require("react/jsx-runtime");
5344
+ var import_jsx_runtime11 = require("react/jsx-runtime");
4435
5345
  var SIMPLE_GROUP_LABEL = "mb-1 text-xs font-medium uppercase tracking-wider text-muted-foreground";
4436
5346
  var SIMPLE_TILE_ROW = "flex flex-wrap gap-2 [&>*]:min-w-[16rem] [&>*]:flex-1";
4437
5347
  var TILE_GRID = "grid grid-cols-1 gap-2 @md:grid-cols-2 @3xl:grid-cols-3";
@@ -4440,11 +5350,11 @@ function GroupHeader({
4440
5350
  title,
4441
5351
  dotClassName
4442
5352
  }) {
4443
- if (look !== "tiles") return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("h3", { className: SIMPLE_GROUP_LABEL, children: title });
4444
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "mb-2.5 flex items-baseline gap-3 pl-1.5", children: dotClassName ? /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center gap-2", children: [
4445
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: (0, import_design_system8.cn)("h-2.5 w-2.5 rounded-full", dotClassName) }),
4446
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("h3", { className: "text-sm font-semibold text-foreground", children: title })
4447
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("h3", { className: "text-sm font-semibold text-foreground", children: title }) });
5353
+ if (look !== "tiles") return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h3", { className: SIMPLE_GROUP_LABEL, children: title });
5354
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: "mb-2.5 flex items-baseline gap-3 pl-1.5", children: dotClassName ? /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("div", { className: "flex items-center gap-2", children: [
5355
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("span", { className: (0, import_design_system8.cn)("h-2.5 w-2.5 rounded-full", dotClassName) }),
5356
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h3", { className: "text-sm font-semibold text-foreground", children: title })
5357
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("h3", { className: "text-sm font-semibold text-foreground", children: title }) });
4448
5358
  }
4449
5359
  function AssociationCardGrid({
4450
5360
  tokens,
@@ -4457,13 +5367,13 @@ function AssociationCardGrid({
4457
5367
  const excluded = new Set(excludeTokens ?? []);
4458
5368
  const filing = primary?.direction === "outgoing";
4459
5369
  const links = useContainerLinks(containerLinksArgs(primary));
4460
- const base2 = tokens ?? store.registry.curatedTokens();
5370
+ const base = tokens ?? store.registry.curatedTokens();
4461
5371
  const withPresent = filing ? [
4462
- ...base2,
5372
+ ...base,
4463
5373
  ...links.presentTokens.filter(
4464
- (t) => isEntityTypeToken(t) && !base2.includes(t)
5374
+ (t) => isEntityTypeToken(t) && !base.includes(t)
4465
5375
  )
4466
- ] : base2;
5376
+ ] : base;
4467
5377
  const list = withPresent.filter(
4468
5378
  (token) => !excluded.has(token) && (!filing || isAssociationTargetType(token))
4469
5379
  );
@@ -4473,7 +5383,7 @@ function AssociationCardGrid({
4473
5383
  return !role || !roleIds.has(role);
4474
5384
  }) : [];
4475
5385
  const rowClass = look !== "tiles" ? SIMPLE_TILE_ROW : TILE_GRID;
4476
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
5386
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)(
4477
5387
  "div",
4478
5388
  {
4479
5389
  "data-association-grid-look": look,
@@ -4484,8 +5394,8 @@ function AssociationCardGrid({
4484
5394
  (token) => store.registry.getEntityInfo(token).contentRole === role.id
4485
5395
  );
4486
5396
  if (inRole.length === 0) return null;
4487
- return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("section", { children: [
4488
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
5397
+ return /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("section", { children: [
5398
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
4489
5399
  GroupHeader,
4490
5400
  {
4491
5401
  look,
@@ -4493,18 +5403,18 @@ function AssociationCardGrid({
4493
5403
  dotClassName: role.accentBar
4494
5404
  }
4495
5405
  ),
4496
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: rowClass, children: inRole.map((token) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(AssociationCard, { token, look }, token)) })
5406
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: rowClass, children: inRole.map((token) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(AssociationCard, { token, look }, token)) })
4497
5407
  ] }, role.id);
4498
5408
  }),
4499
- roleless.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("section", { children: [
4500
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
5409
+ roleless.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime11.jsxs)("section", { children: [
5410
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(
4501
5411
  GroupHeader,
4502
5412
  {
4503
5413
  look,
4504
5414
  title: "Filed under"
4505
5415
  }
4506
5416
  ),
4507
- /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: rowClass, children: roleless.map((token) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(AssociationCard, { token, look }, token)) })
5417
+ /* @__PURE__ */ (0, import_jsx_runtime11.jsx)("div", { className: rowClass, children: roleless.map((token) => /* @__PURE__ */ (0, import_jsx_runtime11.jsx)(AssociationCard, { token, look }, token)) })
4508
5418
  ] })
4509
5419
  ]
4510
5420
  }
@@ -4514,9 +5424,9 @@ function AssociationCardGrid({
4514
5424
  // src/react/components/AssociationList.tsx
4515
5425
  var import_react18 = require("react");
4516
5426
  var import_design_system9 = require("@ai-matrx/design-system");
4517
- var import_icons13 = require("@ai-matrx/design-system/icons");
5427
+ var import_icons14 = require("@ai-matrx/design-system/icons");
4518
5428
  var import_outbound = require("@ai-matrx/kit/outbound");
4519
- var import_jsx_runtime13 = require("react/jsx-runtime");
5429
+ var import_jsx_runtime12 = require("react/jsx-runtime");
4520
5430
  function metadataIsPinned2(metadata) {
4521
5431
  return metadata !== null && typeof metadata === "object" && !Array.isArray(metadata) && Reflect.get(metadata, "pinned") === true;
4522
5432
  }
@@ -4627,15 +5537,15 @@ function AssociationList(props) {
4627
5537
  const grouped = groupRows(store, visibleRows);
4628
5538
  const isLoading = adapter.status === "loading" || adapter.status === "idle";
4629
5539
  const attachableTokens = tokenFilter ?? store.registry.listableTokens();
4630
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: (0, import_design_system9.cn)("flex flex-col gap-2 text-foreground", props.className), children: [
4631
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: (0, import_design_system9.cn)("flex items-center gap-2 px-1", props.title === null ? "justify-end" : "justify-between"), children: [
4632
- props.title === null ? null : /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("h3", { className: "flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: [
4633
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Link2Icon, { className: "h-3.5 w-3.5" }),
5540
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: (0, import_design_system9.cn)("flex flex-col gap-2 text-foreground", props.className), children: [
5541
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: (0, import_design_system9.cn)("flex items-center gap-2 px-1", props.title === null ? "justify-end" : "justify-between"), children: [
5542
+ props.title === null ? null : /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("h3", { className: "flex items-center gap-1.5 text-xs font-semibold uppercase tracking-wide text-muted-foreground", children: [
5543
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(Link2Icon, { className: "h-3.5 w-3.5" }),
4634
5544
  props.title ?? "Resources",
4635
- visibleRows.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "rounded bg-muted px-1 text-[10px] font-medium text-muted-foreground", children: visibleRows.length })
5545
+ visibleRows.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "rounded bg-muted px-1 text-[10px] font-medium text-muted-foreground", children: visibleRows.length })
4636
5546
  ] }),
4637
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-center gap-1.5", children: [
4638
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
5547
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center gap-1.5", children: [
5548
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
4639
5549
  "button",
4640
5550
  {
4641
5551
  type: "button",
@@ -4645,19 +5555,19 @@ function AssociationList(props) {
4645
5555
  showUniversal ? "bg-accent text-foreground" : "text-muted-foreground hover:bg-accent hover:text-foreground"
4646
5556
  ),
4647
5557
  children: [
4648
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_icons13.PlusIcon, { className: "h-3 w-3" }),
5558
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_icons14.PlusIcon, { className: "h-3 w-3" }),
4649
5559
  "Add"
4650
5560
  ]
4651
5561
  }
4652
5562
  ),
4653
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5563
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4654
5564
  "button",
4655
5565
  {
4656
5566
  type: "button",
4657
5567
  onClick: () => void adapter.reload(),
4658
5568
  title: "Refresh",
4659
5569
  className: "text-muted-foreground/60 transition-colors hover:text-foreground",
4660
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5570
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4661
5571
  RefreshIcon,
4662
5572
  {
4663
5573
  className: (0, import_design_system9.cn)(
@@ -4670,7 +5580,7 @@ function AssociationList(props) {
4670
5580
  )
4671
5581
  ] })
4672
5582
  ] }),
4673
- showUniversal && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "rounded-md border border-border/60 bg-muted/30 p-2 max-h-80 flex flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5583
+ showUniversal && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "rounded-md border border-border/60 bg-muted/30 p-2 max-h-80 flex flex-col", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4674
5584
  UniversalAssociationPicker,
4675
5585
  {
4676
5586
  tokens: attachableTokens,
@@ -4680,9 +5590,9 @@ function AssociationList(props) {
4680
5590
  onDetach: (token, id) => adapter.detach(token, id)
4681
5591
  }
4682
5592
  ) }),
4683
- adapter.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-center justify-between gap-2 rounded-md border border-destructive/40 bg-destructive/10 px-2.5 py-2", children: [
4684
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "truncate text-[11px] text-destructive", children: adapter.error || "Failed to load resources" }),
4685
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5593
+ adapter.status === "error" && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center justify-between gap-2 rounded-md border border-destructive/40 bg-destructive/10 px-2.5 py-2", children: [
5594
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "truncate text-[11px] text-destructive", children: adapter.error || "Failed to load resources" }),
5595
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4686
5596
  "button",
4687
5597
  {
4688
5598
  type: "button",
@@ -4692,17 +5602,17 @@ function AssociationList(props) {
4692
5602
  }
4693
5603
  )
4694
5604
  ] }),
4695
- adapter.status !== "error" && isLoading && visibleRows.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "space-y-1.5 px-1", children: [
4696
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_design_system9.Skeleton, { className: "h-3 w-20" }),
4697
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_design_system9.Skeleton, { className: "h-7 w-full rounded-md" }),
4698
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_design_system9.Skeleton, { className: "h-7 w-3/4 rounded-md" })
5605
+ adapter.status !== "error" && isLoading && visibleRows.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "space-y-1.5 px-1", children: [
5606
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_design_system9.Skeleton, { className: "h-3 w-20" }),
5607
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_design_system9.Skeleton, { className: "h-7 w-full rounded-md" }),
5608
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_design_system9.Skeleton, { className: "h-7 w-3/4 rounded-md" })
4699
5609
  ] }),
4700
- adapter.status === "ready" && visibleRows.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("p", { className: "px-1 py-1 text-[11px] text-muted-foreground", children: "Nothing attached yet \u2014 use Add to link anything." }),
4701
- visibleRows.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "space-y-2.5", children: grouped.map(({ role, tokens: tokenGroups }) => {
5610
+ adapter.status === "ready" && visibleRows.length === 0 && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("p", { className: "px-1 py-1 text-[11px] text-muted-foreground", children: "Nothing attached yet \u2014 use Add to link anything." }),
5611
+ visibleRows.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("div", { className: "space-y-2.5", children: grouped.map(({ role, tokens: tokenGroups }) => {
4702
5612
  const roleMeta = getContentRoleMeta(role);
4703
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "space-y-1.5", children: [
4704
- variant === "full" && /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-center gap-1.5 px-1", children: [
4705
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5613
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "space-y-1.5", children: [
5614
+ variant === "full" && /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center gap-1.5 px-1", children: [
5615
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4706
5616
  "span",
4707
5617
  {
4708
5618
  className: (0, import_design_system9.cn)(
@@ -4711,7 +5621,7 @@ function AssociationList(props) {
4711
5621
  )
4712
5622
  }
4713
5623
  ),
4714
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5624
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4715
5625
  "p",
4716
5626
  {
4717
5627
  className: (0, import_design_system9.cn)(
@@ -4724,28 +5634,28 @@ function AssociationList(props) {
4724
5634
  ] }),
4725
5635
  tokenGroups.map(({ info, token, rows: tokenRows }) => {
4726
5636
  const TokenIcon = info?.Icon ?? null;
4727
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "space-y-0.5", children: [
4728
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-center justify-between gap-1 px-1", children: [
4729
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("p", { className: "flex items-center gap-1 text-[10px] font-medium text-muted-foreground/80", children: [
4730
- TokenIcon ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(TokenIcon, { className: "h-3 w-3" }) : null,
5637
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "space-y-0.5", children: [
5638
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center justify-between gap-1 px-1", children: [
5639
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("p", { className: "flex items-center gap-1 text-[10px] font-medium text-muted-foreground/80", children: [
5640
+ TokenIcon ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(TokenIcon, { className: "h-3 w-3" }) : null,
4731
5641
  info?.labelPlural ?? titleize(token),
4732
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "text-muted-foreground/50", children: tokenRows.length })
5642
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "text-muted-foreground/50", children: tokenRows.length })
4733
5643
  ] }),
4734
- /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex items-center gap-1", children: [
5644
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("div", { className: "flex items-center gap-1", children: [
4735
5645
  props.renderSectionActions && info ? props.renderSectionActions(info.token) : null,
4736
- info?.canListCandidates && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5646
+ info?.canListCandidates && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4737
5647
  "button",
4738
5648
  {
4739
5649
  type: "button",
4740
5650
  onClick: () => setPickerToken(info.token),
4741
5651
  title: `Add ${info.labelPlural}`,
4742
5652
  className: "rounded p-0.5 text-muted-foreground/60 transition-colors hover:bg-accent hover:text-foreground",
4743
- children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_icons13.PlusIcon, { className: "h-3 w-3" })
5653
+ children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_icons14.PlusIcon, { className: "h-3 w-3" })
4744
5654
  }
4745
5655
  )
4746
5656
  ] })
4747
5657
  ] }),
4748
- /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("ul", { className: "space-y-0.5", children: tokenRows.map((row) => {
5658
+ /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("ul", { className: "space-y-0.5", children: tokenRows.map((row) => {
4749
5659
  const busy = removingKeys.has(row.key);
4750
5660
  const custom = props.renderRow?.(row, {
4751
5661
  title: titleFor({
@@ -4758,9 +5668,9 @@ function AssociationList(props) {
4758
5668
  onOpen: () => openRow(row)
4759
5669
  });
4760
5670
  if (custom != null) {
4761
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("li", { children: custom }, row.key);
5671
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("li", { children: custom }, row.key);
4762
5672
  }
4763
- return /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
5673
+ return /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("li", { children: /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)(
4764
5674
  "div",
4765
5675
  {
4766
5676
  className: (0, import_design_system9.cn)(
@@ -4772,7 +5682,7 @@ function AssociationList(props) {
4772
5682
  token: row.token,
4773
5683
  id: row.resourceId,
4774
5684
  label: row.label
4775
- }) ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "min-w-0 flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(UnresolvedRef, { token: row.token, id: row.resourceId }) }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5685
+ }) ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "min-w-0 flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(UnresolvedRef, { token: row.token, id: row.resourceId }) }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4776
5686
  DoorRef,
4777
5687
  {
4778
5688
  token: row.token,
@@ -4788,9 +5698,9 @@ function AssociationList(props) {
4788
5698
  className: "min-w-0 flex-1 text-foreground"
4789
5699
  }
4790
5700
  ),
4791
- row.originRefs && row.originRefs.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "flex shrink-0 items-center gap-1 text-[10px] text-muted-foreground/60", children: [
5701
+ row.originRefs && row.originRefs.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime12.jsxs)("span", { className: "flex shrink-0 items-center gap-1 text-[10px] text-muted-foreground/60", children: [
4792
5702
  "via",
4793
- row.originRefs.map((origin) => /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5703
+ row.originRefs.map((origin) => /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4794
5704
  DoorRef,
4795
5705
  {
4796
5706
  token: origin.token,
@@ -4802,8 +5712,8 @@ function AssociationList(props) {
4802
5712
  },
4803
5713
  `${origin.token}:${origin.id}`
4804
5714
  ))
4805
- ] }) : row.originNote ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "shrink-0 text-[10px] text-muted-foreground/60", children: row.originNote }) : null,
4806
- adapter.setPinned && info && row.removable && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5715
+ ] }) : row.originNote ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)("span", { className: "shrink-0 text-[10px] text-muted-foreground/60", children: row.originNote }) : null,
5716
+ adapter.setPinned && info && row.removable && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4807
5717
  "button",
4808
5718
  {
4809
5719
  type: "button",
@@ -4815,8 +5725,8 @@ function AssociationList(props) {
4815
5725
  "shrink-0 rounded p-0.5 transition-colors hover:!text-foreground",
4816
5726
  row.pinned ? "text-primary" : "text-muted-foreground/0 group-hover:text-muted-foreground"
4817
5727
  ),
4818
- children: pinningKeys.has(row.key) ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SpinnerIcon, { className: "h-3 w-3 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
4819
- import_icons13.PinIcon,
5728
+ children: pinningKeys.has(row.key) ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SpinnerIcon, { className: "h-3 w-3 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
5729
+ import_icons14.PinIcon,
4820
5730
  {
4821
5731
  className: (0, import_design_system9.cn)(
4822
5732
  "h-3 w-3",
@@ -4826,7 +5736,7 @@ function AssociationList(props) {
4826
5736
  )
4827
5737
  }
4828
5738
  ),
4829
- row.removable && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5739
+ row.removable && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4830
5740
  "button",
4831
5741
  {
4832
5742
  type: "button",
@@ -4835,7 +5745,7 @@ function AssociationList(props) {
4835
5745
  title: "Detach",
4836
5746
  "aria-label": "Detach",
4837
5747
  className: "shrink-0 rounded p-0.5 text-muted-foreground/0 transition-colors group-hover:text-muted-foreground hover:!text-destructive disabled:opacity-50",
4838
- children: busy ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SpinnerIcon, { className: "h-3 w-3 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(import_icons13.XIcon, { className: "h-3 w-3" })
5748
+ children: busy ? /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(SpinnerIcon, { className: "h-3 w-3 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(import_icons14.XIcon, { className: "h-3 w-3" })
4839
5749
  }
4840
5750
  )
4841
5751
  ]
@@ -4846,7 +5756,7 @@ function AssociationList(props) {
4846
5756
  })
4847
5757
  ] }, role);
4848
5758
  }) }),
4849
- pickerToken && /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5759
+ pickerToken && /* @__PURE__ */ (0, import_jsx_runtime12.jsx)(
4850
5760
  AssociationPicker,
4851
5761
  {
4852
5762
  open: true,
@@ -4904,9 +5814,9 @@ function titleize(token) {
4904
5814
  // src/react/components/AssociationCaptureToolbar.tsx
4905
5815
  var import_react19 = require("react");
4906
5816
  var import_design_system10 = require("@ai-matrx/design-system");
4907
- var import_icons15 = require("@ai-matrx/design-system/icons");
5817
+ var import_icons16 = require("@ai-matrx/design-system/icons");
4908
5818
  var import_outbound2 = require("@ai-matrx/kit/outbound");
4909
- var import_jsx_runtime14 = require("react/jsx-runtime");
5819
+ var import_jsx_runtime13 = require("react/jsx-runtime");
4910
5820
  function AssociationCaptureToolbar({
4911
5821
  attach,
4912
5822
  uploadFolderPath,
@@ -5139,7 +6049,7 @@ function AssociationCaptureToolbar({
5139
6049
  }
5140
6050
  };
5141
6051
  const anyBuiltIn = actions.upload || actions.addFile || actions.newDocument;
5142
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
6052
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
5143
6053
  "div",
5144
6054
  {
5145
6055
  className: (0, import_design_system10.cn)(
@@ -5160,11 +6070,11 @@ function AssociationCaptureToolbar({
5160
6070
  },
5161
6071
  onDrop: handleDrop,
5162
6072
  children: [
5163
- isDragOver ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "pointer-events-none absolute inset-0 z-10 grid place-items-center bg-background/70", children: /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("span", { className: "flex items-center gap-2 rounded-md border border-primary/40 bg-card px-3 py-1.5 text-xs font-medium text-foreground", children: [
5164
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(UploadIcon, { className: "size-3.5 text-primary" }),
6073
+ isDragOver ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "pointer-events-none absolute inset-0 z-10 grid place-items-center bg-background/70", children: /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("span", { className: "flex items-center gap-2 rounded-md border border-primary/40 bg-card px-3 py-1.5 text-xs font-medium text-foreground", children: [
6074
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(UploadIcon, { className: "size-3.5 text-primary" }),
5165
6075
  "Drop to upload & attach"
5166
6076
  ] }) }) : null,
5167
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
6077
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5168
6078
  "input",
5169
6079
  {
5170
6080
  ref: fileInputRef,
@@ -5174,8 +6084,8 @@ function AssociationCaptureToolbar({
5174
6084
  onChange: handleFilesSelected
5175
6085
  }
5176
6086
  ),
5177
- showToolbar && (anyBuiltIn || extraActions) ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("div", { className: "flex flex-wrap items-center gap-0.5 border-b border-border/60 px-1.5 py-1", children: namingDoc ? /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)("div", { className: "flex flex-1 items-center gap-1.5 py-0.5", children: [
5178
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
6087
+ showToolbar && (anyBuiltIn || extraActions) ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("div", { className: "flex flex-wrap items-center gap-0.5 border-b border-border/60 px-1.5 py-1", children: namingDoc ? /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)("div", { className: "flex flex-1 items-center gap-1.5 py-0.5", children: [
6088
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5179
6089
  import_design_system10.Input,
5180
6090
  {
5181
6091
  autoFocus: true,
@@ -5194,17 +6104,17 @@ function AssociationCaptureToolbar({
5194
6104
  style: { fontSize: 16 }
5195
6105
  }
5196
6106
  ),
5197
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
6107
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5198
6108
  "button",
5199
6109
  {
5200
6110
  type: "button",
5201
6111
  disabled: creatingDoc || !docName.trim(),
5202
6112
  onClick: () => void handleCreateDoc(),
5203
6113
  className: "flex h-7 items-center rounded-md bg-primary px-2 text-[11px] font-medium text-primary-foreground disabled:opacity-50",
5204
- children: creatingDoc ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(SpinnerIcon, { className: "size-3.5 animate-spin" }) : "Create"
6114
+ children: creatingDoc ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(SpinnerIcon, { className: "size-3.5 animate-spin" }) : "Create"
5205
6115
  }
5206
6116
  ),
5207
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
6117
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5208
6118
  "button",
5209
6119
  {
5210
6120
  type: "button",
@@ -5217,8 +6127,8 @@ function AssociationCaptureToolbar({
5217
6127
  children: "Cancel"
5218
6128
  }
5219
6129
  )
5220
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(import_jsx_runtime14.Fragment, { children: [
5221
- actions.upload ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
6130
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(import_jsx_runtime13.Fragment, { children: [
6131
+ actions.upload ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5222
6132
  CaptureToolbarAction,
5223
6133
  {
5224
6134
  icon: isUploading ? SpinnerIcon : UploadIcon,
@@ -5228,7 +6138,7 @@ function AssociationCaptureToolbar({
5228
6138
  disabled: isPicking || isUploading
5229
6139
  }
5230
6140
  ) : null,
5231
- actions.addFile ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
6141
+ actions.addFile ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5232
6142
  CaptureToolbarAction,
5233
6143
  {
5234
6144
  icon: isPicking ? SpinnerIcon : FolderOpenIcon,
@@ -5238,11 +6148,11 @@ function AssociationCaptureToolbar({
5238
6148
  disabled: isPicking || isUploading
5239
6149
  }
5240
6150
  ) : null,
5241
- (actions.upload || actions.addFile) && actions.newDocument ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)("span", { className: "mx-1 h-4 w-px bg-border" }) : null,
5242
- actions.newDocument ? /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(
6151
+ (actions.upload || actions.addFile) && actions.newDocument ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)("span", { className: "mx-1 h-4 w-px bg-border" }) : null,
6152
+ actions.newDocument ? /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(
5243
6153
  CaptureToolbarAction,
5244
6154
  {
5245
- icon: creatingDoc ? SpinnerIcon : import_icons15.PlusIcon,
6155
+ icon: creatingDoc ? SpinnerIcon : import_icons16.PlusIcon,
5246
6156
  spinning: creatingDoc,
5247
6157
  label: "New document",
5248
6158
  onClick: () => setNamingDoc(true),
@@ -5263,7 +6173,7 @@ function CaptureToolbarAction({
5263
6173
  disabled,
5264
6174
  spinning
5265
6175
  }) {
5266
- return /* @__PURE__ */ (0, import_jsx_runtime14.jsxs)(
6176
+ return /* @__PURE__ */ (0, import_jsx_runtime13.jsxs)(
5267
6177
  import_design_system10.Button,
5268
6178
  {
5269
6179
  type: "button",
@@ -5273,7 +6183,7 @@ function CaptureToolbarAction({
5273
6183
  disabled,
5274
6184
  className: "h-7 gap-1 px-2 text-[11px] text-muted-foreground hover:text-foreground",
5275
6185
  children: [
5276
- /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Icon, { className: (0, import_design_system10.cn)("size-3.5", spinning && "animate-spin") }),
6186
+ /* @__PURE__ */ (0, import_jsx_runtime13.jsx)(Icon, { className: (0, import_design_system10.cn)("size-3.5", spinning && "animate-spin") }),
5277
6187
  label
5278
6188
  ]
5279
6189
  }
@@ -5282,7 +6192,7 @@ function CaptureToolbarAction({
5282
6192
 
5283
6193
  // src/react/lazyPorts.tsx
5284
6194
  var import_react20 = require("react");
5285
- var import_jsx_runtime15 = require("react/jsx-runtime");
6195
+ var import_jsx_runtime14 = require("react/jsx-runtime");
5286
6196
  function lazyComponent(load) {
5287
6197
  return (0, import_react20.lazy)(async () => {
5288
6198
  const loaded = await load();
@@ -5292,14 +6202,14 @@ function lazyComponent(load) {
5292
6202
  function lazyWindowShell(load) {
5293
6203
  const Loaded = lazyComponent(load);
5294
6204
  return function LazyWindowShell(props) {
5295
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react20.Suspense, { fallback: null, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Loaded, { ...props }) });
6205
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_react20.Suspense, { fallback: null, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Loaded, { ...props }) });
5296
6206
  };
5297
6207
  }
5298
6208
  function lazyPickerOverride(load) {
5299
6209
  const Loaded = lazyComponent(load);
5300
6210
  return function LazyPickerOverride(props) {
5301
6211
  if (!props.open) return null;
5302
- return /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_react20.Suspense, { fallback: null, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(Loaded, { ...props }) });
6212
+ return /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(import_react20.Suspense, { fallback: null, children: /* @__PURE__ */ (0, import_jsx_runtime14.jsx)(Loaded, { ...props }) });
5303
6213
  };
5304
6214
  }
5305
6215
 
@@ -5413,8 +6323,8 @@ function useAssociationPickerBridge(props, options = {}) {
5413
6323
  // src/react/components/AssociationEntitySelect.tsx
5414
6324
  var import_react22 = require("react");
5415
6325
  var import_design_system11 = require("@ai-matrx/design-system");
5416
- var import_icons17 = require("@ai-matrx/design-system/icons");
5417
- var import_jsx_runtime16 = require("react/jsx-runtime");
6326
+ var import_icons18 = require("@ai-matrx/design-system/icons");
6327
+ var import_jsx_runtime15 = require("react/jsx-runtime");
5418
6328
  function AssociationEntitySelect({
5419
6329
  token,
5420
6330
  adapter,
@@ -5455,7 +6365,7 @@ function AssociationEntitySelect({
5455
6365
  if (id) close();
5456
6366
  else notifier.error(`Couldn't create the ${entityLabel}`);
5457
6367
  };
5458
- return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
6368
+ return /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5459
6369
  "div",
5460
6370
  {
5461
6371
  className: (0, import_design_system11.cn)(
@@ -5463,7 +6373,7 @@ function AssociationEntitySelect({
5463
6373
  className
5464
6374
  ),
5465
6375
  children: [
5466
- showIcon ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6376
+ showIcon ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5467
6377
  InfoIcon,
5468
6378
  {
5469
6379
  className: (0, import_design_system11.cn)(
@@ -5473,7 +6383,7 @@ function AssociationEntitySelect({
5473
6383
  "aria-hidden": true
5474
6384
  }
5475
6385
  ) : null,
5476
- active ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6386
+ active ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5477
6387
  import_design_system11.EditableLabel,
5478
6388
  {
5479
6389
  value: active.title,
@@ -5492,8 +6402,8 @@ function AssociationEntitySelect({
5492
6402
  inputClassName: "text-xs font-medium"
5493
6403
  }
5494
6404
  ) : null,
5495
- active ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(DoorControlsSlot, { token, id: active.id, name: active.title }) : null,
5496
- !active ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6405
+ active ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(DoorControlsSlot, { token, id: active.id, name: active.title }) : null,
6406
+ !active ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5497
6407
  "span",
5498
6408
  {
5499
6409
  className: (0, import_design_system11.cn)(
@@ -5503,13 +6413,13 @@ function AssociationEntitySelect({
5503
6413
  children: adapter.loading ? "\u2026" : emptyLabel ?? info.labelPlural
5504
6414
  }
5505
6415
  ) : null,
5506
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
6416
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5507
6417
  import_design_system11.Popover,
5508
6418
  {
5509
6419
  open,
5510
6420
  onOpenChange: (next) => next ? setOpen(true) : close(),
5511
6421
  children: [
5512
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system11.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
6422
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system11.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5513
6423
  "button",
5514
6424
  {
5515
6425
  type: "button",
@@ -5517,17 +6427,17 @@ function AssociationEntitySelect({
5517
6427
  title: `Switch or add ${info.labelPlural.toLowerCase()}`,
5518
6428
  "aria-label": `Switch or add ${info.labelPlural.toLowerCase()}`,
5519
6429
  children: [
5520
- items.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("span", { className: "tabular-nums", children: [
6430
+ items.length > 1 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("span", { className: "tabular-nums", children: [
5521
6431
  activeIndex >= 0 ? activeIndex + 1 : "\u2014",
5522
6432
  "/",
5523
6433
  items.length
5524
6434
  ] }) : null,
5525
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_icons17.ChevronDownIcon, { className: "size-3 opacity-60" })
6435
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_icons18.ChevronDownIcon, { className: "size-3 opacity-60" })
5526
6436
  ]
5527
6437
  }
5528
6438
  ) }),
5529
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system11.PopoverContent, { sizing: "content", className: "p-0", align, children: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_design_system11.Command, { children: [
5530
- items.length > 5 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6439
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system11.PopoverContent, { sizing: "content", className: "p-0", align, children: /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_design_system11.Command, { children: [
6440
+ items.length > 5 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5531
6441
  import_design_system11.CommandInput,
5532
6442
  {
5533
6443
  value: query,
@@ -5535,9 +6445,9 @@ function AssociationEntitySelect({
5535
6445
  placeholder: `Search ${info.labelPlural.toLowerCase()}\u2026`
5536
6446
  }
5537
6447
  ) : null,
5538
- /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_design_system11.CommandList, { children: [
5539
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system11.CommandEmpty, { children: "No match." }),
5540
- items.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system11.CommandGroup, { children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
6448
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(import_design_system11.CommandList, { children: [
6449
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system11.CommandEmpty, { children: "No match." }),
6450
+ items.length > 0 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_design_system11.CommandGroup, { children: items.map((item) => /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5541
6451
  import_design_system11.CommandItem,
5542
6452
  {
5543
6453
  value: `${item.title} ${item.id}`,
@@ -5548,8 +6458,8 @@ function AssociationEntitySelect({
5548
6458
  },
5549
6459
  className: "group/entity-ref group gap-2",
5550
6460
  children: [
5551
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
5552
- import_icons17.CheckIcon,
6461
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
6462
+ import_icons18.CheckIcon,
5553
6463
  {
5554
6464
  className: (0, import_design_system11.cn)(
5555
6465
  "size-3.5 shrink-0",
@@ -5557,8 +6467,8 @@ function AssociationEntitySelect({
5557
6467
  )
5558
6468
  }
5559
6469
  ),
5560
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "min-w-0 flex-1 truncate", children: item.title }),
5561
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6470
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("span", { className: "min-w-0 flex-1 truncate", children: item.title }),
6471
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5562
6472
  "span",
5563
6473
  {
5564
6474
  className: "inline-flex shrink-0 items-center",
@@ -5566,7 +6476,7 @@ function AssociationEntitySelect({
5566
6476
  e.preventDefault();
5567
6477
  e.stopPropagation();
5568
6478
  },
5569
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6479
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5570
6480
  DoorControlsSlot,
5571
6481
  {
5572
6482
  token,
@@ -5576,7 +6486,7 @@ function AssociationEntitySelect({
5576
6486
  )
5577
6487
  }
5578
6488
  ),
5579
- adapter.detach && item.id !== activeId ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6489
+ adapter.detach && item.id !== activeId ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5580
6490
  "button",
5581
6491
  {
5582
6492
  type: "button",
@@ -5591,7 +6501,7 @@ function AssociationEntitySelect({
5591
6501
  className: "grid size-5 shrink-0 place-items-center rounded text-muted-foreground opacity-0 transition-opacity hover:bg-accent hover:text-destructive group-hover:opacity-100",
5592
6502
  title: `Remove this ${entityLabel} from here (does not delete it)`,
5593
6503
  "aria-label": `Remove ${item.title}`,
5594
- children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_icons17.XIcon, { className: "size-3" })
6504
+ children: /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_icons18.XIcon, { className: "size-3" })
5595
6505
  }
5596
6506
  ) : null
5597
6507
  ]
@@ -5599,9 +6509,9 @@ function AssociationEntitySelect({
5599
6509
  item.id
5600
6510
  )) }) : null
5601
6511
  ] }),
5602
- createSlot !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "border-t border-border p-1", children: typeof createSlot === "function" ? createSlot(close) : createSlot }) : null,
5603
- createSlot === void 0 && adapter.createAndAttach ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("div", { className: "border-t border-border p-1", children: creating ? /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { className: "flex items-center gap-1 px-1 py-0.5", children: [
5604
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6512
+ createSlot !== void 0 ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "border-t border-border p-1", children: typeof createSlot === "function" ? createSlot(close) : createSlot }) : null,
6513
+ createSlot === void 0 && adapter.createAndAttach ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)("div", { className: "border-t border-border p-1", children: creating ? /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)("div", { className: "flex items-center gap-1 px-1 py-0.5", children: [
6514
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5605
6515
  "input",
5606
6516
  {
5607
6517
  autoFocus: true,
@@ -5625,17 +6535,17 @@ function AssociationEntitySelect({
5625
6535
  "aria-label": `New ${entityLabel} name`
5626
6536
  }
5627
6537
  ),
5628
- /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
6538
+ /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(
5629
6539
  "button",
5630
6540
  {
5631
6541
  type: "button",
5632
6542
  disabled: busy || !draftName.trim(),
5633
6543
  onClick: () => void create(draftName),
5634
6544
  className: "inline-flex h-6 shrink-0 items-center rounded-md px-1.5 text-[10px] font-medium text-primary transition-colors hover:bg-accent disabled:opacity-50",
5635
- children: busy ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(SpinnerIcon, { className: "size-3 animate-spin" }) : "Create"
6545
+ children: busy ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(SpinnerIcon, { className: "size-3 animate-spin" }) : "Create"
5636
6546
  }
5637
6547
  )
5638
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
6548
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsxs)(
5639
6549
  "button",
5640
6550
  {
5641
6551
  type: "button",
@@ -5646,7 +6556,7 @@ function AssociationEntitySelect({
5646
6556
  },
5647
6557
  className: "flex w-full items-center gap-2 rounded-sm px-2 py-1.5 text-xs text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
5648
6558
  children: [
5649
- busy ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(SpinnerIcon, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_icons17.PlusIcon, { className: "size-3.5" }),
6559
+ busy ? /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(SpinnerIcon, { className: "size-3.5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime15.jsx)(import_icons18.PlusIcon, { className: "size-3.5" }),
5650
6560
  query.trim() ? `Create "${query.trim()}"` : `New ${info.label}`
5651
6561
  ]
5652
6562
  }
@@ -5729,7 +6639,7 @@ function buildCategoryHierarchy(categories) {
5729
6639
  }
5730
6640
 
5731
6641
  // src/react/components/CategorySelect.tsx
5732
- var import_jsx_runtime17 = require("react/jsx-runtime");
6642
+ var import_jsx_runtime16 = require("react/jsx-runtime");
5733
6643
  var NONE = "__none__";
5734
6644
  var ROOT_PARENT = "__root__";
5735
6645
  function plural(noun) {
@@ -5765,9 +6675,9 @@ function CategorySelect({
5765
6675
  // The type-ahead matches the parent's name too, so someone who knows
5766
6676
  // the branch but not the leaf still finds it.
5767
6677
  keywords: parent ? parent.name : "",
5768
- render: depth === 0 ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "font-medium", children: category.name }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("span", { className: "flex items-center gap-1.5 pl-3 text-muted-foreground", children: [
5769
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CornerDownRightIcon, { className: "h-3.5 w-3.5 shrink-0" }),
5770
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: "text-foreground", children: category.name })
6678
+ render: depth === 0 ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "font-medium", children: category.name }) : /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("span", { className: "flex items-center gap-1.5 pl-3 text-muted-foreground", children: [
6679
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(CornerDownRightIcon, { className: "h-3.5 w-3.5 shrink-0" }),
6680
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("span", { className: "text-foreground", children: category.name })
5771
6681
  ] })
5772
6682
  })) : categories.map((category) => ({
5773
6683
  value: category.id,
@@ -5814,8 +6724,8 @@ function CategorySelect({
5814
6724
  );
5815
6725
  return result.id;
5816
6726
  };
5817
- return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { children: [
5818
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6727
+ return /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("div", { children: [
6728
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
5819
6729
  import_design_system12.CreatablePicker,
5820
6730
  {
5821
6731
  value: value ?? (allowNone ? NONE : null),
@@ -5831,18 +6741,18 @@ function CategorySelect({
5831
6741
  emptyLabel: `No ${noun} matches that.`,
5832
6742
  ...allowCreate ? { onCreate: create } : {},
5833
6743
  ...allowCreate && hierarchy.hasHierarchy ? {
5834
- createExtra: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_design_system12.Select, { value: createParentId, onValueChange: setCreateParentId, children: [
5835
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6744
+ createExtra: /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_design_system12.Select, { value: createParentId, onValueChange: setCreateParentId, children: [
6745
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(
5836
6746
  import_design_system12.SelectTrigger,
5837
6747
  {
5838
6748
  className: "h-7 text-xs",
5839
6749
  "aria-label": `Put the new ${noun} under`,
5840
- children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system12.SelectValue, {})
6750
+ children: /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system12.SelectValue, {})
5841
6751
  }
5842
6752
  ),
5843
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_design_system12.SelectContent, { children: [
5844
- /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system12.SelectItem, { value: ROOT_PARENT, className: "text-xs", children: "Top level" }),
5845
- hierarchy.items.filter((item) => item.depth === 0).map((item) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
6753
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(import_design_system12.SelectContent, { children: [
6754
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsx)(import_design_system12.SelectItem, { value: ROOT_PARENT, className: "text-xs", children: "Top level" }),
6755
+ hierarchy.items.filter((item) => item.depth === 0).map((item) => /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)(
5846
6756
  import_design_system12.SelectItem,
5847
6757
  {
5848
6758
  value: item.category.id,
@@ -5862,21 +6772,21 @@ function CategorySelect({
5862
6772
  selected === null && value !== null ? (
5863
6773
  // A stored id whose row this reader cannot see is not "nothing chosen":
5864
6774
  // saying so beats a blank box that looks like an unsaved field.
5865
- /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("p", { className: "mt-1 text-xs text-muted-foreground", children: [
6775
+ /* @__PURE__ */ (0, import_jsx_runtime16.jsxs)("p", { className: "mt-1 text-xs text-muted-foreground", children: [
5866
6776
  "This ",
5867
6777
  noun,
5868
6778
  " is no longer available to you."
5869
6779
  ] })
5870
6780
  ) : null,
5871
- error ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "mt-1 text-xs text-destructive", children: error }) : null
6781
+ error ? /* @__PURE__ */ (0, import_jsx_runtime16.jsx)("p", { className: "mt-1 text-xs text-destructive", children: error }) : null
5872
6782
  ] });
5873
6783
  }
5874
6784
 
5875
6785
  // src/react/components/CategoryTagPicker.tsx
5876
6786
  var import_react24 = require("react");
5877
6787
  var import_design_system13 = require("@ai-matrx/design-system");
5878
- var import_icons20 = require("@ai-matrx/design-system/icons");
5879
- var import_jsx_runtime18 = require("react/jsx-runtime");
6788
+ var import_icons21 = require("@ai-matrx/design-system/icons");
6789
+ var import_jsx_runtime17 = require("react/jsx-runtime");
5880
6790
  var ROOT_PARENT2 = "__root__";
5881
6791
  function CategoryTagPicker({
5882
6792
  entityType,
@@ -6000,44 +6910,44 @@ function CategoryTagPicker({
6000
6910
  const exactMatch = categories.some(
6001
6911
  (c) => c.name.toLowerCase() === search.trim().toLowerCase()
6002
6912
  );
6003
- return /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "flex flex-wrap items-center gap-1.5", children: [
6004
- selected.map((c) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
6913
+ return /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "flex flex-wrap items-center gap-1.5", children: [
6914
+ selected.map((c) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
6005
6915
  import_design_system13.Badge,
6006
6916
  {
6007
6917
  variant: "secondary",
6008
6918
  className: "gap-1 pr-1 text-xs font-medium",
6009
6919
  children: [
6010
6920
  showHierarchy ? hierarchyById.get(c.id)?.displayName ?? c.name : c.name,
6011
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6921
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6012
6922
  "button",
6013
6923
  {
6014
6924
  type: "button",
6015
6925
  onClick: () => void toggle(c.id),
6016
6926
  className: "ml-0.5 rounded-full p-0.5 hover:bg-muted-foreground/20",
6017
6927
  "aria-label": `Remove ${c.name}`,
6018
- children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_icons20.XIcon, { className: "h-2.5 w-2.5" })
6928
+ children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_icons21.XIcon, { className: "h-2.5 w-2.5" })
6019
6929
  }
6020
6930
  )
6021
6931
  ]
6022
6932
  },
6023
6933
  c.id
6024
6934
  )),
6025
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_design_system13.Popover, { open, onOpenChange: setOpen, children: [
6026
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system13.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
6935
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_design_system13.Popover, { open, onOpenChange: setOpen, children: [
6936
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system13.PopoverTrigger, { asChild: true, children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
6027
6937
  import_design_system13.Button,
6028
6938
  {
6029
6939
  variant: "outline",
6030
6940
  size: "sm",
6031
6941
  className: "h-7 gap-1 px-2 text-xs",
6032
6942
  children: [
6033
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Icon, { className: "h-3.5 w-3.5" }),
6943
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Icon, { className: "h-3.5 w-3.5" }),
6034
6944
  selected.length === 0 ? addLabel : "Edit",
6035
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system13.SelectChevron, { size: "sm" })
6945
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system13.SelectChevron, { size: "sm" })
6036
6946
  ]
6037
6947
  }
6038
6948
  ) }),
6039
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system13.PopoverContent, { sizing: "content", className: "p-0", align: "start", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_design_system13.Command, { shouldFilter: false, children: [
6040
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6949
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system13.PopoverContent, { sizing: "content", className: "p-0", align: "start", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_design_system13.Command, { shouldFilter: false, children: [
6950
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6041
6951
  import_design_system13.CommandInput,
6042
6952
  {
6043
6953
  placeholder: allowCreate ? "Search or create..." : "Search...",
@@ -6045,9 +6955,9 @@ function CategoryTagPicker({
6045
6955
  onValueChange: setSearch
6046
6956
  }
6047
6957
  ),
6048
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_design_system13.CommandList, { children: [
6049
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system13.CommandEmpty, { className: "px-2 py-3 text-xs text-muted-foreground", children: search.trim() ? "No match." : emptyText }),
6050
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system13.CommandGroup, { children: showHierarchy ? filteredHierarchy.map(({ category, depth, parent }) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
6958
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_design_system13.CommandList, { children: [
6959
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system13.CommandEmpty, { className: "px-2 py-3 text-xs text-muted-foreground", children: search.trim() ? "No match." : emptyText }),
6960
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system13.CommandGroup, { children: showHierarchy ? filteredHierarchy.map(({ category, depth, parent }) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
6051
6961
  import_design_system13.CommandItem,
6052
6962
  {
6053
6963
  value: category.id,
@@ -6055,8 +6965,8 @@ function CategoryTagPicker({
6055
6965
  onSelect: () => void toggle(category.id),
6056
6966
  className: (0, import_design_system13.cn)("text-xs", depth === 1 && "pl-6"),
6057
6967
  children: [
6058
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6059
- import_icons20.CheckIcon,
6968
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6969
+ import_icons21.CheckIcon,
6060
6970
  {
6061
6971
  className: (0, import_design_system13.cn)(
6062
6972
  "mr-2 h-3.5 w-3.5",
@@ -6064,20 +6974,20 @@ function CategoryTagPicker({
6064
6974
  )
6065
6975
  }
6066
6976
  ),
6067
- depth === 1 ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(CornerDownRightIcon, { className: "mr-1.5 h-3.5 w-3.5 shrink-0 text-muted-foreground" }) : null,
6068
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("span", { className: (0, import_design_system13.cn)(depth === 0 && "font-medium"), children: category.name })
6977
+ depth === 1 ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(CornerDownRightIcon, { className: "mr-1.5 h-3.5 w-3.5 shrink-0 text-muted-foreground" }) : null,
6978
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("span", { className: (0, import_design_system13.cn)(depth === 0 && "font-medium"), children: category.name })
6069
6979
  ]
6070
6980
  },
6071
6981
  category.id
6072
- )) : filtered.map((c) => /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
6982
+ )) : filtered.map((c) => /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
6073
6983
  import_design_system13.CommandItem,
6074
6984
  {
6075
6985
  value: c.id,
6076
6986
  onSelect: () => void toggle(c.id),
6077
6987
  className: "text-xs",
6078
6988
  children: [
6079
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6080
- import_icons20.CheckIcon,
6989
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(
6990
+ import_icons21.CheckIcon,
6081
6991
  {
6082
6992
  className: (0, import_design_system13.cn)(
6083
6993
  "mr-2 h-3.5 w-3.5",
@@ -6090,25 +7000,25 @@ function CategoryTagPicker({
6090
7000
  },
6091
7001
  c.id
6092
7002
  )) }),
6093
- allowCreate && search.trim() && !exactMatch ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_design_system13.CommandGroup, { children: [
6094
- showHierarchy ? /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)("div", { className: "space-y-1.5 px-2 pb-2", children: [
6095
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "text-[11px] font-medium text-muted-foreground", children: "Place in" }),
6096
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
7003
+ allowCreate && search.trim() && !exactMatch ? /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_design_system13.CommandGroup, { children: [
7004
+ showHierarchy ? /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)("div", { className: "space-y-1.5 px-2 pb-2", children: [
7005
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)("p", { className: "text-[11px] font-medium text-muted-foreground", children: "Place in" }),
7006
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
6097
7007
  import_design_system13.Select,
6098
7008
  {
6099
7009
  value: createParentId,
6100
7010
  onValueChange: setCreateParentId,
6101
7011
  children: [
6102
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system13.SelectTrigger, { size: "sm", className: "bg-background", children: /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system13.SelectValue, {}) }),
6103
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(import_design_system13.SelectContent, { children: [
6104
- /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system13.SelectItem, { value: ROOT_PARENT2, children: "Top level" }),
6105
- hierarchy.roots.map((root) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_design_system13.SelectItem, { value: root.id, children: root.name }, root.id))
7012
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system13.SelectTrigger, { size: "sm", className: "bg-background", children: /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system13.SelectValue, {}) }),
7013
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(import_design_system13.SelectContent, { children: [
7014
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system13.SelectItem, { value: ROOT_PARENT2, children: "Top level" }),
7015
+ hierarchy.roots.map((root) => /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(import_design_system13.SelectItem, { value: root.id, children: root.name }, root.id))
6106
7016
  ] })
6107
7017
  ]
6108
7018
  }
6109
7019
  )
6110
7020
  ] }) : null,
6111
- /* @__PURE__ */ (0, import_jsx_runtime18.jsxs)(
7021
+ /* @__PURE__ */ (0, import_jsx_runtime17.jsxs)(
6112
7022
  import_design_system13.CommandItem,
6113
7023
  {
6114
7024
  value: `__create__${search}`,
@@ -6116,7 +7026,7 @@ function CategoryTagPicker({
6116
7026
  disabled: creating,
6117
7027
  className: "text-xs text-primary",
6118
7028
  children: [
6119
- creating ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(SpinnerIcon, { className: "mr-2 h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(Icon, { className: "mr-2 h-3.5 w-3.5" }),
7029
+ creating ? /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(SpinnerIcon, { className: "mr-2 h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime17.jsx)(Icon, { className: "mr-2 h-3.5 w-3.5" }),
6120
7030
  "Create \u201C",
6121
7031
  search.trim(),
6122
7032
  "\u201D"
@@ -6143,20 +7053,20 @@ function partKeyOf(comment) {
6143
7053
  // src/react/components/CommentBody.tsx
6144
7054
  var import_react25 = require("react");
6145
7055
  var import_design_system14 = require("@ai-matrx/design-system");
6146
- var import_jsx_runtime19 = require("react/jsx-runtime");
7056
+ var import_jsx_runtime18 = require("react/jsx-runtime");
6147
7057
  var INLINE = /(\*\*[^*\n]+\*\*|`[^`\n]+`|\*[^*\n]+\*)/g;
6148
7058
  function renderInline(text) {
6149
7059
  return text.split(INLINE).map((part, i) => {
6150
7060
  if (part.length > 4 && part.startsWith("**") && part.endsWith("**")) {
6151
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("strong", { children: part.slice(2, -2) }, i);
7061
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("strong", { children: part.slice(2, -2) }, i);
6152
7062
  }
6153
7063
  if (part.length > 2 && part.startsWith("`") && part.endsWith("`")) {
6154
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("code", { className: "rounded bg-muted px-1 text-[0.9em]", children: part.slice(1, -1) }, i);
7064
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("code", { className: "rounded bg-muted px-1 text-[0.9em]", children: part.slice(1, -1) }, i);
6155
7065
  }
6156
7066
  if (part.length > 2 && part.startsWith("*") && part.endsWith("*")) {
6157
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("em", { children: part.slice(1, -1) }, i);
7067
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("em", { children: part.slice(1, -1) }, i);
6158
7068
  }
6159
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react25.Fragment, { children: part }, i);
7069
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react25.Fragment, { children: part }, i);
6160
7070
  });
6161
7071
  }
6162
7072
  var BULLET = /^\s*[-*]\s+(.*)$/;
@@ -6167,14 +7077,14 @@ function renderBlocks(lines, keyPrefix) {
6167
7077
  const flushBullets = () => {
6168
7078
  if (!bullets.length) return;
6169
7079
  out.push(
6170
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("ul", { className: "list-disc pl-5", children: bullets.map((b, i) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("li", { children: renderInline(b) }, i)) }, `${keyPrefix}-u${out.length}`)
7080
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("ul", { className: "list-disc pl-5", children: bullets.map((b, i) => /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("li", { children: renderInline(b) }, i)) }, `${keyPrefix}-u${out.length}`)
6171
7081
  );
6172
7082
  bullets = [];
6173
7083
  };
6174
7084
  const flushPara = () => {
6175
7085
  if (!para.length) return;
6176
7086
  out.push(
6177
- /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "whitespace-pre-wrap", children: renderInline(para.join("\n")) }, `${keyPrefix}-p${out.length}`)
7087
+ /* @__PURE__ */ (0, import_jsx_runtime18.jsx)("p", { className: "whitespace-pre-wrap", children: renderInline(para.join("\n")) }, `${keyPrefix}-p${out.length}`)
6178
7088
  );
6179
7089
  para = [];
6180
7090
  };
@@ -6208,20 +7118,20 @@ function renderCommentMarkdown(body) {
6208
7118
  }
6209
7119
  return runs.map((run, i) => {
6210
7120
  const blocks = renderBlocks(run.lines, `r${i}`);
6211
- return run.quoted ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
7121
+ return run.quoted ? /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6212
7122
  "blockquote",
6213
7123
  {
6214
7124
  className: "border-l-2 border-border pl-2 text-muted-foreground",
6215
7125
  children: blocks
6216
7126
  },
6217
7127
  i
6218
- ) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_react25.Fragment, { children: blocks }, i);
7128
+ ) : /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(import_react25.Fragment, { children: blocks }, i);
6219
7129
  });
6220
7130
  }
6221
7131
  function CommentBody({ body, className }) {
6222
7132
  const { commentBody: HostBody } = useAssociationsUiPorts();
6223
- if (HostBody) return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(HostBody, { body, className });
6224
- return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
7133
+ if (HostBody) return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(HostBody, { body, className });
7134
+ return /* @__PURE__ */ (0, import_jsx_runtime18.jsx)(
6225
7135
  "div",
6226
7136
  {
6227
7137
  "data-comment-body": true,
@@ -6233,7 +7143,7 @@ function CommentBody({ body, className }) {
6233
7143
 
6234
7144
  // src/react/components/CommentThread.tsx
6235
7145
  var import_format = require("@ai-matrx/kit/format");
6236
- var import_jsx_runtime20 = require("react/jsx-runtime");
7146
+ var import_jsx_runtime19 = require("react/jsx-runtime");
6237
7147
  var AUTHOR_DOOR_TOKEN = "user";
6238
7148
  var SYSTEM_AUTHOR_NAME = "AI Matrx";
6239
7149
  function resolveAuthor(comment, authorDisplay) {
@@ -6248,24 +7158,24 @@ function resolveAuthor(comment, authorDisplay) {
6248
7158
  isAgent: true
6249
7159
  };
6250
7160
  }
6251
- const base2 = {
7161
+ const base = {
6252
7162
  userId: comment.createdBy,
6253
7163
  email: comment.author.email,
6254
7164
  displayName: comment.author.displayName,
6255
7165
  avatarUrl: comment.author.avatarUrl
6256
7166
  };
6257
- const enriched = authorDisplay ? authorDisplay(base2) : null;
6258
- const name = enriched?.displayName ?? base2.displayName ?? base2.email ?? "Unknown user";
7167
+ const enriched = authorDisplay ? authorDisplay(base) : null;
7168
+ const name = enriched?.displayName ?? base.displayName ?? base.email ?? "Unknown user";
6259
7169
  return {
6260
7170
  name,
6261
- avatarUrl: enriched?.avatarUrl !== void 0 && enriched?.avatarUrl !== null ? enriched.avatarUrl : base2.avatarUrl,
7171
+ avatarUrl: enriched?.avatarUrl !== void 0 && enriched?.avatarUrl !== null ? enriched.avatarUrl : base.avatarUrl,
6262
7172
  userId: comment.createdBy,
6263
7173
  isAgent: false
6264
7174
  };
6265
7175
  }
6266
7176
  function AuthorAvatar({ author }) {
6267
7177
  if (author.avatarUrl) {
6268
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7178
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6269
7179
  "img",
6270
7180
  {
6271
7181
  src: author.avatarUrl,
@@ -6274,7 +7184,7 @@ function AuthorAvatar({ author }) {
6274
7184
  }
6275
7185
  );
6276
7186
  }
6277
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7187
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6278
7188
  "span",
6279
7189
  {
6280
7190
  "aria-hidden": true,
@@ -6289,7 +7199,7 @@ function AuthorName({
6289
7199
  }) {
6290
7200
  const DoorRef2 = entityDoors?.EntityRef;
6291
7201
  if (DoorRef2 && author.userId) {
6292
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7202
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6293
7203
  DoorRef2,
6294
7204
  {
6295
7205
  token: AUTHOR_DOOR_TOKEN,
@@ -6300,7 +7210,7 @@ function AuthorName({
6300
7210
  }
6301
7211
  );
6302
7212
  }
6303
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "text-sm font-medium text-foreground", children: author.name });
7213
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-sm font-medium text-foreground", children: author.name });
6304
7214
  }
6305
7215
  function CommentComposer({
6306
7216
  onSubmit,
@@ -6331,8 +7241,8 @@ function CommentComposer({
6331
7241
  }
6332
7242
  setBody("");
6333
7243
  }
6334
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("form", { onSubmit: submit, className: "flex flex-col gap-1.5", children: [
6335
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7244
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("form", { onSubmit: submit, className: "flex flex-col gap-1.5", children: [
7245
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6336
7246
  "textarea",
6337
7247
  {
6338
7248
  value: body,
@@ -6347,7 +7257,7 @@ function CommentComposer({
6347
7257
  className: "w-full resize-y rounded-md border border-border bg-background px-3 py-2 text-sm text-foreground placeholder:text-muted-foreground focus-visible:outline-none focus-visible:ring-1 focus-visible:ring-ring"
6348
7258
  }
6349
7259
  ),
6350
- error && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7260
+ error && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6351
7261
  import_design_system15.ErrorBox,
6352
7262
  {
6353
7263
  className: "text-xs text-destructive",
@@ -6357,10 +7267,10 @@ function CommentComposer({
6357
7267
  origin: "associations/CommentThread"
6358
7268
  }
6359
7269
  ),
6360
- error && signIn && isSignedOutMessage(error) && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SignInAgain, { onClick: signIn }),
6361
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center gap-2", children: [
6362
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_design_system15.Button, { type: "submit", size: "sm", disabled: !body.trim() || submitting, children: [
6363
- submitting && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SpinnerIcon, { className: "mr-1 h-3 w-3 animate-spin" }),
7270
+ error && signIn && isSignedOutMessage(error) && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SignInAgain, { onClick: signIn }),
7271
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-2", children: [
7272
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_design_system15.Button, { type: "submit", size: "sm", disabled: !body.trim() || submitting, children: [
7273
+ submitting && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SpinnerIcon, { className: "mr-1 h-3 w-3 animate-spin" }),
6364
7274
  submitLabel
6365
7275
  ] }),
6366
7276
  trailing
@@ -6402,7 +7312,7 @@ function CommentItem({
6402
7312
  notifier.error(res.error ?? "Could not delete the comment");
6403
7313
  }
6404
7314
  }
6405
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
7315
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
6406
7316
  "div",
6407
7317
  {
6408
7318
  "data-comment-id": comment.id,
@@ -6411,15 +7321,15 @@ function CommentItem({
6411
7321
  depth > 0 && "border-l border-border pl-3"
6412
7322
  ),
6413
7323
  children: [
6414
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-center gap-2", children: [
6415
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(AuthorAvatar, { author }),
6416
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(AuthorName, { author, entityDoors }),
6417
- author.isAgent && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "rounded bg-muted px-1 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: "Agent" }),
6418
- showPart && partLabel && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("span", { className: "truncate text-xs text-muted-foreground", title: partLabel, children: [
7324
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-center gap-2", children: [
7325
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AuthorAvatar, { author }),
7326
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(AuthorName, { author, entityDoors }),
7327
+ author.isAgent && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "rounded bg-muted px-1 py-0.5 text-[10px] font-medium uppercase tracking-wide text-muted-foreground", children: "Agent" }),
7328
+ showPart && partLabel && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("span", { className: "truncate text-xs text-muted-foreground", title: partLabel, children: [
6419
7329
  "on ",
6420
7330
  partLabel
6421
7331
  ] }),
6422
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7332
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6423
7333
  "span",
6424
7334
  {
6425
7335
  className: "text-xs text-muted-foreground",
@@ -6430,7 +7340,7 @@ function CommentItem({
6430
7340
  })
6431
7341
  }
6432
7342
  ),
6433
- edited && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7343
+ edited && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6434
7344
  "span",
6435
7345
  {
6436
7346
  className: "text-xs text-muted-foreground",
@@ -6439,7 +7349,7 @@ function CommentItem({
6439
7349
  }
6440
7350
  )
6441
7351
  ] }),
6442
- editing ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "pl-8", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7352
+ editing ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "pl-8", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6443
7353
  CommentComposer,
6444
7354
  {
6445
7355
  initialValue: comment.body,
@@ -6451,7 +7361,7 @@ function CommentItem({
6451
7361
  if (res.ok) setEditing(false);
6452
7362
  return res;
6453
7363
  },
6454
- trailing: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7364
+ trailing: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6455
7365
  import_design_system15.Button,
6456
7366
  {
6457
7367
  type: "button",
@@ -6462,10 +7372,10 @@ function CommentItem({
6462
7372
  }
6463
7373
  )
6464
7374
  }
6465
- ) }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(CommentBody, { body: comment.body, className: "pl-8" }),
6466
- !editing && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex items-center gap-1 pl-7", children: confirmingDelete ? /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
6467
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "text-xs text-destructive", children: "Deletes this comment for everyone." }),
6468
- /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
7375
+ ) }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CommentBody, { body: comment.body, className: "pl-8" }),
7376
+ !editing && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex items-center gap-1 pl-7", children: confirmingDelete ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
7377
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-xs text-destructive", children: "Deletes this comment for everyone." }),
7378
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
6469
7379
  import_design_system15.Button,
6470
7380
  {
6471
7381
  type: "button",
@@ -6474,12 +7384,12 @@ function CommentItem({
6474
7384
  disabled: deleting,
6475
7385
  onClick: () => void confirmDelete(),
6476
7386
  children: [
6477
- deleting && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SpinnerIcon, { className: "mr-1 h-3 w-3 animate-spin" }),
7387
+ deleting && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SpinnerIcon, { className: "mr-1 h-3 w-3 animate-spin" }),
6478
7388
  "Delete"
6479
7389
  ]
6480
7390
  }
6481
7391
  ),
6482
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7392
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6483
7393
  import_design_system15.Button,
6484
7394
  {
6485
7395
  type: "button",
@@ -6490,8 +7400,8 @@ function CommentItem({
6490
7400
  children: "Cancel"
6491
7401
  }
6492
7402
  )
6493
- ] }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
6494
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7403
+ ] }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
7404
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6495
7405
  "button",
6496
7406
  {
6497
7407
  type: "button",
@@ -6500,8 +7410,8 @@ function CommentItem({
6500
7410
  children: "Reply"
6501
7411
  }
6502
7412
  ),
6503
- isOwn && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(import_jsx_runtime20.Fragment, { children: [
6504
- canEdit && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7413
+ isOwn && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(import_jsx_runtime19.Fragment, { children: [
7414
+ canEdit && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6505
7415
  "button",
6506
7416
  {
6507
7417
  type: "button",
@@ -6510,7 +7420,7 @@ function CommentItem({
6510
7420
  children: "Edit"
6511
7421
  }
6512
7422
  ),
6513
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7423
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6514
7424
  "button",
6515
7425
  {
6516
7426
  type: "button",
@@ -6521,9 +7431,9 @@ function CommentItem({
6521
7431
  )
6522
7432
  ] })
6523
7433
  ] }) }),
6524
- replying && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex items-start gap-2 pl-8 pt-1", children: [
6525
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(CornerDownRightIcon, { className: "mt-2 h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
6526
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7434
+ replying && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex items-start gap-2 pl-8 pt-1", children: [
7435
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(CornerDownRightIcon, { className: "mt-2 h-3.5 w-3.5 shrink-0 text-muted-foreground" }),
7436
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "min-w-0 flex-1", children: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6527
7437
  CommentComposer,
6528
7438
  {
6529
7439
  submitLabel: "Reply",
@@ -6540,7 +7450,7 @@ function CommentItem({
6540
7450
  }
6541
7451
  return res;
6542
7452
  },
6543
- trailing: /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7453
+ trailing: /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6544
7454
  import_design_system15.Button,
6545
7455
  {
6546
7456
  type: "button",
@@ -6553,7 +7463,7 @@ function CommentItem({
6553
7463
  }
6554
7464
  ) })
6555
7465
  ] }),
6556
- replies.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex flex-col gap-3 pl-8 pt-1", children: replies.map((reply) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7466
+ replies.length > 0 && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex flex-col gap-3 pl-8 pt-1", children: replies.map((reply) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6557
7467
  CommentItem,
6558
7468
  {
6559
7469
  comment: reply,
@@ -6609,11 +7519,11 @@ function CommentThread({
6609
7519
  const roots = part ? tree.roots.filter((c) => partKeyOf(c) === part.key) : tree.roots;
6610
7520
  const shownCount = part ? countThread(roots, childrenOf) : thread.comments.length;
6611
7521
  const loading = (thread.status === "loading" || thread.status === "idle") && thread.comments.length === 0;
6612
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("section", { className: (0, import_design_system15.cn)("flex flex-col gap-3", className), children: [
6613
- showHeader && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("header", { className: "flex items-center gap-2", children: [
6614
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("h3", { className: "text-sm font-semibold text-foreground", children: "Comments" }),
6615
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "text-xs text-muted-foreground tabular-nums", children: shownCount }),
6616
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7522
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("section", { className: (0, import_design_system15.cn)("flex flex-col gap-3", className), children: [
7523
+ showHeader && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("header", { className: "flex items-center gap-2", children: [
7524
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("h3", { className: "text-sm font-semibold text-foreground", children: "Comments" }),
7525
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "text-xs text-muted-foreground tabular-nums", children: shownCount }),
7526
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6617
7527
  "button",
6618
7528
  {
6619
7529
  type: "button",
@@ -6621,11 +7531,11 @@ function CommentThread({
6621
7531
  "aria-label": "Refresh comments",
6622
7532
  title: "Refresh comments",
6623
7533
  className: "ml-auto flex h-6 w-6 items-center justify-center rounded text-muted-foreground transition-colors hover:bg-accent hover:text-foreground",
6624
- children: thread.status === "loading" ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SpinnerIcon, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(RefreshIcon, { className: "h-3.5 w-3.5" })
7534
+ children: thread.status === "loading" ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SpinnerIcon, { className: "h-3.5 w-3.5 animate-spin" }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(RefreshIcon, { className: "h-3.5 w-3.5" })
6625
7535
  }
6626
7536
  )
6627
7537
  ] }),
6628
- thread.error && /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)(
7538
+ thread.error && /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)(
6629
7539
  import_design_system15.ErrorBox,
6630
7540
  {
6631
7541
  as: "div",
@@ -6634,9 +7544,9 @@ function CommentThread({
6634
7544
  operation: "Load comments",
6635
7545
  origin: "associations/CommentThread",
6636
7546
  children: [
6637
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("span", { className: "min-w-0 flex-1", children: thread.error }),
6638
- signInPort && isSignedOutMessage(thread.error) && /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(SignInAgain, { onClick: signInPort }),
6639
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7547
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("span", { className: "min-w-0 flex-1", children: thread.error }),
7548
+ signInPort && isSignedOutMessage(thread.error) && /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(SignInAgain, { onClick: signInPort }),
7549
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6640
7550
  import_design_system15.Button,
6641
7551
  {
6642
7552
  type: "button",
@@ -6650,10 +7560,10 @@ function CommentThread({
6650
7560
  ]
6651
7561
  }
6652
7562
  ),
6653
- loading ? /* @__PURE__ */ (0, import_jsx_runtime20.jsxs)("div", { className: "flex flex-col gap-3", "aria-hidden": true, "data-testid": "comments-loading", children: [
6654
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_design_system15.Skeleton, { className: "h-12 w-full" }),
6655
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_design_system15.Skeleton, { className: "h-12 w-4/5" })
6656
- ] }) : roots.length === 0 && !thread.error ? /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("p", { className: "text-sm text-muted-foreground", children: "No comments yet." }) : /* @__PURE__ */ (0, import_jsx_runtime20.jsx)("div", { className: "flex flex-col gap-4", children: roots.map((comment) => /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7563
+ loading ? /* @__PURE__ */ (0, import_jsx_runtime19.jsxs)("div", { className: "flex flex-col gap-3", "aria-hidden": true, "data-testid": "comments-loading", children: [
7564
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_design_system15.Skeleton, { className: "h-12 w-full" }),
7565
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_design_system15.Skeleton, { className: "h-12 w-4/5" })
7566
+ ] }) : roots.length === 0 && !thread.error ? /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("p", { className: "text-sm text-muted-foreground", children: "No comments yet." }) : /* @__PURE__ */ (0, import_jsx_runtime19.jsx)("div", { className: "flex flex-col gap-4", children: roots.map((comment) => /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6657
7567
  CommentItem,
6658
7568
  {
6659
7569
  comment,
@@ -6666,7 +7576,7 @@ function CommentThread({
6666
7576
  },
6667
7577
  comment.id
6668
7578
  )) }),
6669
- /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(
7579
+ /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(
6670
7580
  CommentComposer,
6671
7581
  {
6672
7582
  onSubmit: async (body) => {
@@ -6680,6 +7590,6 @@ function CommentThread({
6680
7590
  ] });
6681
7591
  }
6682
7592
  function SignInAgain({ onClick }) {
6683
- return /* @__PURE__ */ (0, import_jsx_runtime20.jsx)(import_design_system15.Button, { type: "button", size: "sm", variant: "outline", onClick, children: "Sign in" });
7593
+ return /* @__PURE__ */ (0, import_jsx_runtime19.jsx)(import_design_system15.Button, { type: "button", size: "sm", variant: "outline", onClick, children: "Sign in" });
6684
7594
  }
6685
7595
  //# sourceMappingURL=index.cjs.map