@imenam/mcp-messenger 1.0.30 → 1.0.31

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.
@@ -1813,6 +1813,689 @@ body {
1813
1813
  color: var(--muted);
1814
1814
  }
1815
1815
 
1816
+ /* --- Onglets de la barre du haut ------------------------------------------ */
1817
+
1818
+ .tabs {
1819
+ display: flex;
1820
+ align-self: stretch;
1821
+ gap: 4px;
1822
+ flex: none;
1823
+ }
1824
+
1825
+ .tab {
1826
+ display: inline-flex;
1827
+ align-items: center;
1828
+ gap: 8px;
1829
+ padding: 0 10px;
1830
+ border: 0;
1831
+ border-top: 3px solid transparent;
1832
+ border-bottom: 3px solid transparent;
1833
+ background: none;
1834
+ font: inherit;
1835
+ font-size: 14px;
1836
+ color: var(--muted);
1837
+ cursor: pointer;
1838
+ }
1839
+
1840
+ .tab:hover {
1841
+ color: var(--text);
1842
+ }
1843
+
1844
+ .tab.is-active {
1845
+ color: var(--accent);
1846
+ font-weight: 600;
1847
+ border-bottom-color: var(--accent);
1848
+ }
1849
+
1850
+ .tab:focus-visible {
1851
+ outline: 2px solid var(--accent);
1852
+ outline-offset: -4px;
1853
+ }
1854
+
1855
+ /* --- Liaisons -------------------------------------------------------------- */
1856
+
1857
+ .links {
1858
+ display: grid;
1859
+ grid-template-columns: minmax(0, 1fr) 360px;
1860
+ height: calc(100vh - var(--topbar-h));
1861
+ }
1862
+
1863
+ .links.is-linking {
1864
+ cursor: crosshair;
1865
+ user-select: none;
1866
+ }
1867
+
1868
+ .links-map {
1869
+ display: flex;
1870
+ flex-direction: column;
1871
+ min-width: 0;
1872
+ min-height: 0;
1873
+ }
1874
+
1875
+ .links-toolbar {
1876
+ display: flex;
1877
+ align-items: flex-start;
1878
+ justify-content: space-between;
1879
+ gap: 16px;
1880
+ padding: 16px 20px 12px;
1881
+ }
1882
+
1883
+ .links-toolbar h2 {
1884
+ margin: 0;
1885
+ font-size: 17px;
1886
+ }
1887
+
1888
+ .links-toolbar p {
1889
+ margin: 2px 0 0;
1890
+ font-size: 12px;
1891
+ }
1892
+
1893
+ .links-window {
1894
+ display: flex;
1895
+ align-items: center;
1896
+ gap: 8px;
1897
+ flex: none;
1898
+ font-size: 13px;
1899
+ color: var(--muted);
1900
+ }
1901
+
1902
+ .links-window select {
1903
+ font: inherit;
1904
+ font-size: 13px;
1905
+ padding: 5px 8px;
1906
+ border-radius: var(--radius);
1907
+ border: 1px solid var(--border);
1908
+ background: var(--panel);
1909
+ color: var(--text);
1910
+ }
1911
+
1912
+ .links-scroll {
1913
+ flex: 1;
1914
+ overflow: auto;
1915
+ padding: 0 20px 12px 0;
1916
+ }
1917
+
1918
+ .links-canvas {
1919
+ position: relative;
1920
+ }
1921
+
1922
+ .links-canvas > * {
1923
+ position: absolute;
1924
+ }
1925
+
1926
+ .links-canvas > .empty {
1927
+ position: static;
1928
+ }
1929
+
1930
+ .links-lane {
1931
+ z-index: 0;
1932
+ background: var(--panel);
1933
+ border: 1px solid var(--border);
1934
+ border-radius: 12px;
1935
+ }
1936
+
1937
+ .links-lane-head {
1938
+ display: flex;
1939
+ align-items: center;
1940
+ gap: 8px;
1941
+ height: 56px;
1942
+ padding: 0 12px;
1943
+ border-bottom: 1px solid var(--border-soft);
1944
+ }
1945
+
1946
+ .links-lane-text {
1947
+ min-width: 0;
1948
+ }
1949
+
1950
+ .links-lane-name {
1951
+ font-size: 13px;
1952
+ font-weight: 600;
1953
+ white-space: nowrap;
1954
+ overflow: hidden;
1955
+ text-overflow: ellipsis;
1956
+ }
1957
+
1958
+ .links-lane-last {
1959
+ font-size: 11px;
1960
+ color: var(--muted);
1961
+ white-space: nowrap;
1962
+ }
1963
+
1964
+ .links-lane-last.is-fresh {
1965
+ color: var(--ok);
1966
+ }
1967
+
1968
+ .links-zoom {
1969
+ z-index: 1;
1970
+ pointer-events: none;
1971
+ background: var(--accent);
1972
+ opacity: 0.05;
1973
+ }
1974
+
1975
+ .links-tick {
1976
+ z-index: 1;
1977
+ pointer-events: none;
1978
+ border-top: 1px solid var(--border-soft);
1979
+ }
1980
+
1981
+ .links-tick--zoom {
1982
+ border-top-color: var(--accent-softer);
1983
+ }
1984
+
1985
+ .links-tick--now {
1986
+ border-top: 2px solid var(--ok);
1987
+ }
1988
+
1989
+ .links-separator {
1990
+ z-index: 1;
1991
+ border-top: 2px solid var(--border);
1992
+ }
1993
+
1994
+ .links-axis-label {
1995
+ z-index: 1;
1996
+ display: flex;
1997
+ flex-direction: column;
1998
+ font-size: 11px;
1999
+ line-height: 1.3;
2000
+ color: var(--muted);
2001
+ }
2002
+
2003
+ .links-axis-label strong {
2004
+ font-weight: 600;
2005
+ }
2006
+
2007
+ .links-axis-label .mono {
2008
+ font-size: 10px;
2009
+ }
2010
+
2011
+ .links-axis-label--now {
2012
+ color: var(--ok);
2013
+ }
2014
+
2015
+ .links-axis-label--zoom strong {
2016
+ color: var(--accent);
2017
+ }
2018
+
2019
+ .links-axis-old {
2020
+ color: var(--text);
2021
+ }
2022
+
2023
+ .links-axis-old span {
2024
+ color: var(--muted);
2025
+ font-size: 10px;
2026
+ }
2027
+
2028
+ .links-wires {
2029
+ z-index: 2;
2030
+ top: 0;
2031
+ left: 0;
2032
+ pointer-events: none;
2033
+ overflow: visible;
2034
+ }
2035
+
2036
+ .links-wire {
2037
+ fill: none;
2038
+ stroke: var(--muted);
2039
+ stroke-width: 2;
2040
+ opacity: 0.7;
2041
+ }
2042
+
2043
+ .links-wire.is-active {
2044
+ stroke: var(--accent);
2045
+ stroke-width: 3;
2046
+ opacity: 1;
2047
+ }
2048
+
2049
+ .links-wire.is-drawing {
2050
+ stroke: var(--accent);
2051
+ stroke-width: 3;
2052
+ stroke-dasharray: 6 4;
2053
+ opacity: 1;
2054
+ }
2055
+
2056
+ .links-card {
2057
+ z-index: 3;
2058
+ display: flex;
2059
+ align-items: center;
2060
+ gap: 8px;
2061
+ padding: 0 10px 0 8px;
2062
+ border: 1px solid var(--border);
2063
+ border-radius: var(--radius);
2064
+ background: var(--panel);
2065
+ font: inherit;
2066
+ color: var(--text);
2067
+ text-align: left;
2068
+ cursor: pointer;
2069
+ }
2070
+
2071
+ .links-card:hover,
2072
+ .links-card.is-linked {
2073
+ border-color: var(--accent);
2074
+ }
2075
+
2076
+ .links-card:focus-visible,
2077
+ .links-old-row:focus-visible {
2078
+ outline: 2px solid var(--accent);
2079
+ outline-offset: 1px;
2080
+ }
2081
+
2082
+ .links-card.is-selected {
2083
+ background: var(--accent-soft);
2084
+ border: 2px solid var(--accent);
2085
+ }
2086
+
2087
+ .links-rank {
2088
+ display: inline-grid;
2089
+ place-items: center;
2090
+ width: 22px;
2091
+ height: 22px;
2092
+ border-radius: 50%;
2093
+ flex: none;
2094
+ font-size: 11px;
2095
+ font-weight: 700;
2096
+ color: var(--panel);
2097
+ background: var(--muted);
2098
+ }
2099
+
2100
+ .links-rank.is-top {
2101
+ background: var(--text);
2102
+ }
2103
+
2104
+ .links-card.is-selected .links-rank {
2105
+ background: var(--accent);
2106
+ color: #ffffff;
2107
+ }
2108
+
2109
+ .links-rank.is-old {
2110
+ background: none;
2111
+ color: var(--muted);
2112
+ }
2113
+
2114
+ .links-card-text {
2115
+ display: flex;
2116
+ flex-direction: column;
2117
+ flex: 1;
2118
+ min-width: 0;
2119
+ }
2120
+
2121
+ .links-card-name {
2122
+ font-size: 12px;
2123
+ font-weight: 600;
2124
+ white-space: nowrap;
2125
+ overflow: hidden;
2126
+ text-overflow: ellipsis;
2127
+ }
2128
+
2129
+ .links-card-name.is-absent,
2130
+ .links-old-name.is-absent {
2131
+ font-weight: 400;
2132
+ color: var(--muted);
2133
+ }
2134
+
2135
+ .links-card-meta {
2136
+ display: flex;
2137
+ justify-content: space-between;
2138
+ gap: 6px;
2139
+ font-size: 11px;
2140
+ white-space: nowrap;
2141
+ }
2142
+
2143
+ .links-card-meta .mono {
2144
+ font-size: 11px;
2145
+ }
2146
+
2147
+ .links-card-ago {
2148
+ color: var(--muted);
2149
+ font-weight: 600;
2150
+ }
2151
+
2152
+ .links-card-ago.is-fresh {
2153
+ color: var(--ok);
2154
+ }
2155
+
2156
+ .links-card-count {
2157
+ position: absolute;
2158
+ top: 4px;
2159
+ right: 12px;
2160
+ display: inline-flex;
2161
+ align-items: center;
2162
+ gap: 2px;
2163
+ font-size: 11px;
2164
+ color: var(--muted);
2165
+ }
2166
+
2167
+ .links-card:has(.links-card-count) .links-card-name {
2168
+ padding-right: 24px;
2169
+ }
2170
+
2171
+ .links-card-count .icon {
2172
+ width: 11px;
2173
+ height: 11px;
2174
+ }
2175
+
2176
+ /* Poignée à cheval sur le bord droit de la carte : c'est d'elle que part le fil. */
2177
+ .links-handle {
2178
+ position: absolute;
2179
+ right: -7px;
2180
+ top: calc(50% - 7px);
2181
+ width: 14px;
2182
+ height: 14px;
2183
+ border-radius: 50%;
2184
+ border: 2px solid var(--panel);
2185
+ background: var(--border);
2186
+ cursor: crosshair;
2187
+ touch-action: none;
2188
+ }
2189
+
2190
+ .links-card:hover .links-handle,
2191
+ .links-card.is-selected .links-handle {
2192
+ background: var(--accent);
2193
+ }
2194
+
2195
+ .links-old-row {
2196
+ z-index: 3;
2197
+ display: flex;
2198
+ align-items: center;
2199
+ gap: 6px;
2200
+ padding: 0 10px;
2201
+ border: 1px solid transparent;
2202
+ border-radius: 6px;
2203
+ background: var(--bg);
2204
+ font: inherit;
2205
+ font-size: 12px;
2206
+ color: var(--text);
2207
+ text-align: left;
2208
+ cursor: pointer;
2209
+ }
2210
+
2211
+ .links-old-row:hover,
2212
+ .links-old-row.is-linked {
2213
+ border-color: var(--accent);
2214
+ }
2215
+
2216
+ .links-old-row.is-selected {
2217
+ background: var(--accent-soft);
2218
+ border-color: var(--accent);
2219
+ }
2220
+
2221
+ .links-old-row .icon {
2222
+ width: 11px;
2223
+ height: 11px;
2224
+ color: var(--muted);
2225
+ }
2226
+
2227
+ .links-old-name {
2228
+ flex: 1;
2229
+ min-width: 0;
2230
+ white-space: nowrap;
2231
+ overflow: hidden;
2232
+ text-overflow: ellipsis;
2233
+ }
2234
+
2235
+ .links-old-date {
2236
+ font-size: 11px;
2237
+ color: var(--muted);
2238
+ flex: none;
2239
+ }
2240
+
2241
+ .links-old-none {
2242
+ z-index: 3;
2243
+ font-size: 11px;
2244
+ font-style: italic;
2245
+ color: var(--muted);
2246
+ padding: 4px 10px;
2247
+ }
2248
+
2249
+ .links-old-more {
2250
+ z-index: 3;
2251
+ border: 0;
2252
+ background: none;
2253
+ font: inherit;
2254
+ font-size: 11px;
2255
+ color: var(--accent);
2256
+ text-align: left;
2257
+ padding: 2px 10px;
2258
+ cursor: pointer;
2259
+ }
2260
+
2261
+ .links-legend {
2262
+ display: flex;
2263
+ flex-wrap: wrap;
2264
+ gap: 8px 24px;
2265
+ padding: 10px 20px 14px;
2266
+ border-top: 1px solid var(--border-soft);
2267
+ font-size: 12px;
2268
+ color: var(--muted);
2269
+ }
2270
+
2271
+ .links-legend-item {
2272
+ display: inline-flex;
2273
+ align-items: center;
2274
+ gap: 8px;
2275
+ }
2276
+
2277
+ .links-legend .links-rank {
2278
+ width: 18px;
2279
+ height: 18px;
2280
+ font-size: 10px;
2281
+ background: var(--text);
2282
+ }
2283
+
2284
+ .links-legend-line {
2285
+ display: inline-block;
2286
+ width: 24px;
2287
+ border-top: 2px solid var(--muted);
2288
+ }
2289
+
2290
+ .links-legend-line.is-new {
2291
+ border-top: 3px solid var(--accent);
2292
+ }
2293
+
2294
+ .links-panel {
2295
+ overflow-y: auto;
2296
+ background: var(--panel);
2297
+ border-left: 1px solid var(--border);
2298
+ padding: 16px 20px;
2299
+ display: flex;
2300
+ flex-direction: column;
2301
+ gap: 16px;
2302
+ }
2303
+
2304
+ .links-panel-head {
2305
+ display: flex;
2306
+ align-items: center;
2307
+ justify-content: space-between;
2308
+ }
2309
+
2310
+ .links-panel-identity {
2311
+ display: flex;
2312
+ align-items: center;
2313
+ gap: 12px;
2314
+ }
2315
+
2316
+ .links-panel-agent {
2317
+ font-size: 17px;
2318
+ font-weight: 700;
2319
+ white-space: nowrap;
2320
+ overflow: hidden;
2321
+ text-overflow: ellipsis;
2322
+ }
2323
+
2324
+ .links-panel-identity .party-addr {
2325
+ font-size: 13px;
2326
+ flex-wrap: wrap;
2327
+ }
2328
+
2329
+ .links-panel-meta {
2330
+ margin: 10px 0 0;
2331
+ font-size: 12px;
2332
+ color: var(--muted);
2333
+ }
2334
+
2335
+ .links-panel-section {
2336
+ border-top: 1px solid var(--border-soft);
2337
+ padding-top: 14px;
2338
+ }
2339
+
2340
+ .links-panel-section h3 {
2341
+ margin: 0 0 10px;
2342
+ font-size: 14px;
2343
+ }
2344
+
2345
+ .links-panel-title {
2346
+ display: flex;
2347
+ align-items: baseline;
2348
+ justify-content: space-between;
2349
+ font-size: 11px;
2350
+ }
2351
+
2352
+ .links-panel-links,
2353
+ .links-candidates {
2354
+ list-style: none;
2355
+ margin: 0;
2356
+ padding: 0;
2357
+ }
2358
+
2359
+ .links-panel-none {
2360
+ font-size: 12px;
2361
+ color: var(--muted);
2362
+ }
2363
+
2364
+ .links-panel-link + .links-panel-link {
2365
+ border-top: 1px solid var(--border-soft);
2366
+ margin-top: 10px;
2367
+ padding-top: 10px;
2368
+ }
2369
+
2370
+ .links-panel-link-top {
2371
+ display: flex;
2372
+ align-items: center;
2373
+ gap: 8px;
2374
+ }
2375
+
2376
+ .links-unlink.btn--danger {
2377
+ padding: 4px 10px;
2378
+ font-size: 12px;
2379
+ }
2380
+
2381
+ .links-panel-note {
2382
+ margin: 6px 0 0 32px;
2383
+ font-size: 12px;
2384
+ font-style: italic;
2385
+ color: var(--muted);
2386
+ }
2387
+
2388
+ .links-panel-status {
2389
+ display: flex;
2390
+ flex-wrap: wrap;
2391
+ align-items: center;
2392
+ gap: 6px;
2393
+ margin: 6px 0 0 32px;
2394
+ font-size: 11px;
2395
+ }
2396
+
2397
+ .links-input,
2398
+ .links-search {
2399
+ width: 100%;
2400
+ height: 34px;
2401
+ border-radius: var(--radius);
2402
+ border: 1px solid var(--border);
2403
+ background: var(--panel);
2404
+ font: inherit;
2405
+ font-size: 13px;
2406
+ color: var(--text);
2407
+ }
2408
+
2409
+ .links-input {
2410
+ padding: 0 10px;
2411
+ margin-bottom: 8px;
2412
+ }
2413
+
2414
+ .links-search {
2415
+ display: flex;
2416
+ align-items: center;
2417
+ gap: 8px;
2418
+ padding: 0 10px;
2419
+ color: var(--muted);
2420
+ }
2421
+
2422
+ .links-search input {
2423
+ flex: 1;
2424
+ min-width: 0;
2425
+ border: 0;
2426
+ background: none;
2427
+ font: inherit;
2428
+ color: var(--text);
2429
+ outline: none;
2430
+ }
2431
+
2432
+ .links-input:focus,
2433
+ .links-search:focus-within {
2434
+ border-color: var(--accent);
2435
+ outline: none;
2436
+ }
2437
+
2438
+ .links-error {
2439
+ margin: 6px 0 0;
2440
+ font-size: 12px;
2441
+ color: var(--danger);
2442
+ }
2443
+
2444
+ .links-error:empty {
2445
+ display: none;
2446
+ }
2447
+
2448
+ .links-candidates {
2449
+ margin-top: 8px;
2450
+ }
2451
+
2452
+ .links-candidate {
2453
+ display: flex;
2454
+ align-items: center;
2455
+ gap: 8px;
2456
+ padding: 8px 6px;
2457
+ border-radius: var(--radius);
2458
+ }
2459
+
2460
+ .links-candidate:hover {
2461
+ background: var(--accent-soft);
2462
+ }
2463
+
2464
+ .links-candidate .agent-box.is-fresh {
2465
+ color: var(--ok);
2466
+ }
2467
+
2468
+ .links-link {
2469
+ padding: 4px 12px;
2470
+ flex: none;
2471
+ }
2472
+
2473
+ .links-candidate:hover .links-link {
2474
+ background: var(--accent);
2475
+ border-color: var(--accent);
2476
+ color: #ffffff;
2477
+ }
2478
+
2479
+ .links-candidates-sep {
2480
+ margin: 12px 6px 4px;
2481
+ font-size: 11px;
2482
+ font-weight: 600;
2483
+ letter-spacing: 0.06em;
2484
+ text-transform: uppercase;
2485
+ color: var(--muted);
2486
+ }
2487
+
2488
+ .links-delivery {
2489
+ display: flex;
2490
+ gap: 8px;
2491
+ margin: auto 0 0;
2492
+ padding: 12px;
2493
+ border-radius: var(--radius);
2494
+ background: var(--bg);
2495
+ font-size: 12px;
2496
+ color: var(--muted);
2497
+ }
2498
+
1816
2499
  /* --- États vides et erreurs ----------------------------------------------- */
1817
2500
 
1818
2501
  .empty {
@@ -1848,4 +2531,8 @@ body {
1848
2531
  .console.is-collapsed {
1849
2532
  grid-template-columns: 57px var(--w-gutter) 300px var(--w-gutter) minmax(0, 1fr);
1850
2533
  }
2534
+
2535
+ .links {
2536
+ grid-template-columns: minmax(0, 1fr) 300px;
2537
+ }
1851
2538
  }
@@ -1 +1 @@
1
- export declare const APP_VERSION = "1.0.30";
1
+ export declare const APP_VERSION: string;
@@ -1,2 +1,16 @@
1
- // Généré par scripts/generate-version.js — ne pas modifier à la main.
2
- export const APP_VERSION = "1.0.30";
1
+ import { existsSync, readFileSync } from "node:fs";
2
+ import path from "node:path";
3
+ import { fileURLToPath } from "node:url";
4
+ // Lit la version dans le premier package.json trouvé en remontant depuis ce module.
5
+ function readPackageVersion() {
6
+ let dir = path.dirname(fileURLToPath(import.meta.url));
7
+ while (!existsSync(path.join(dir, "package.json"))) {
8
+ const parent = path.dirname(dir);
9
+ if (parent === dir)
10
+ throw new Error("package.json introuvable");
11
+ dir = parent;
12
+ }
13
+ const pkg = JSON.parse(readFileSync(path.join(dir, "package.json"), "utf8"));
14
+ return pkg.version;
15
+ }
16
+ export const APP_VERSION = readPackageVersion();
package/package.json CHANGED
@@ -1,10 +1,10 @@
1
1
  {
2
2
  "name": "@imenam/mcp-messenger",
3
- "version": "1.0.30",
3
+ "version": "1.0.31",
4
4
  "main": "dist/src/index.js",
5
5
  "scripts": {
6
6
  "test": "npm run build && vitest run",
7
- "build": "node scripts/generate-version.js && tsc && node scripts/copy-assets.js",
7
+ "build": "tsc && node scripts/copy-assets.js",
8
8
  "start": "node dist/src/index.js",
9
9
  "serve": "node dist/src/index.js --server",
10
10
  "prepublishOnly": "npm run build",