@trismegisto/spine 2.1.2 → 3.0.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +74 -17
- package/fesm2022/trismegisto-spine-audit.mjs +264 -10
- package/fesm2022/trismegisto-spine-audit.mjs.map +1 -1
- package/fesm2022/trismegisto-spine-auto-service-apps.technical-dKM4fG42.mjs +89 -0
- package/fesm2022/trismegisto-spine-auto-service-apps.technical-dKM4fG42.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-apps.usage-VMrCG5o3.mjs +91 -0
- package/fesm2022/trismegisto-spine-auto-service-apps.usage-VMrCG5o3.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-audit.technical-C901aIIQ.mjs → trismegisto-spine-auto-service-audit.technical-B75d4mh2.mjs} +6 -5
- package/fesm2022/trismegisto-spine-auto-service-audit.technical-B75d4mh2.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-audit.usage-GIJ2RwuH.mjs → trismegisto-spine-auto-service-audit.usage-IdXMruv5.mjs} +9 -8
- package/fesm2022/trismegisto-spine-auto-service-audit.usage-IdXMruv5.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-audit.component-BNtNWfiu.mjs +37 -0
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-audit.component-CCiz-q8o.mjs.map → trismegisto-spine-auto-service-auto-service-audit.component-BNtNWfiu.mjs.map} +1 -1
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-client-picker.component-Z0wCANF6.mjs → trismegisto-spine-auto-service-auto-service-client-picker.component-DdtDk_xl.mjs} +3 -3
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-client-picker.component-Z0wCANF6.mjs.map → trismegisto-spine-auto-service-auto-service-client-picker.component-DdtDk_xl.mjs.map} +1 -1
- package/fesm2022/{trismegisto-spine-auto-service-auto-service-client.component-C7SPavrX.mjs → trismegisto-spine-auto-service-auto-service-client.component-DXl1y6Sx.mjs} +123 -27
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-DXl1y6Sx.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-B1tXgMvi.mjs +88 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-B1tXgMvi.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-C4iQ2GPX.mjs +599 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-C4iQ2GPX.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-login-attempts.component-B87vibNB.mjs +37 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service-login-attempts.component-B87vibNB.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service.component-DV88Uger.mjs +941 -0
- package/fesm2022/trismegisto-spine-auto-service-auto-service.component-DV88Uger.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-client.technical-BHWhpyWv.mjs → trismegisto-spine-auto-service-client.technical-DP5G8i3o.mjs} +24 -3
- package/fesm2022/trismegisto-spine-auto-service-client.technical-DP5G8i3o.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-client.usage-CM2WB2e2.mjs → trismegisto-spine-auto-service-client.usage-CcJANb20.mjs} +15 -6
- package/fesm2022/trismegisto-spine-auto-service-client.usage-CcJANb20.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-groups.technical-D05838rU.mjs +69 -0
- package/fesm2022/trismegisto-spine-auto-service-groups.technical-D05838rU.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-groups.usage-ChGMgYU3.mjs +80 -0
- package/fesm2022/trismegisto-spine-auto-service-groups.usage-ChGMgYU3.mjs.map +1 -0
- package/fesm2022/{trismegisto-spine-auto-service-home.component-vl3BPFnk.mjs → trismegisto-spine-auto-service-home.component-5_aji1hf.mjs} +5 -4
- package/fesm2022/trismegisto-spine-auto-service-home.component-5_aji1hf.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-login-attempts.technical-CasKIIws.mjs +37 -0
- package/fesm2022/trismegisto-spine-auto-service-login-attempts.technical-CasKIIws.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service-login-attempts.usage-BMgLNu7W.mjs +60 -0
- package/fesm2022/trismegisto-spine-auto-service-login-attempts.usage-BMgLNu7W.mjs.map +1 -0
- package/fesm2022/trismegisto-spine-auto-service.mjs +49 -29
- package/fesm2022/trismegisto-spine-auto-service.mjs.map +1 -1
- package/fesm2022/trismegisto-spine-layout.mjs +1698 -156
- package/fesm2022/trismegisto-spine-layout.mjs.map +1 -1
- package/fesm2022/trismegisto-spine-shell.mjs +17 -1
- package/fesm2022/trismegisto-spine-shell.mjs.map +1 -1
- package/fesm2022/trismegisto-spine.mjs +1175 -85
- package/fesm2022/trismegisto-spine.mjs.map +1 -1
- package/package.json +6 -6
- package/types/trismegisto-spine-audit.d.ts +180 -5
- package/types/trismegisto-spine-audit.d.ts.map +1 -1
- package/types/trismegisto-spine-auto-service.d.ts +100 -7
- package/types/trismegisto-spine-auto-service.d.ts.map +1 -1
- package/types/trismegisto-spine-layout.d.ts +833 -13
- package/types/trismegisto-spine-layout.d.ts.map +1 -1
- package/types/trismegisto-spine-shell.d.ts +8 -0
- package/types/trismegisto-spine-shell.d.ts.map +1 -1
- package/types/trismegisto-spine.d.ts +506 -32
- package/types/trismegisto-spine.d.ts.map +1 -1
- package/fesm2022/trismegisto-spine-auto-service-apps.technical-ClMKB9cK.mjs +0 -48
- package/fesm2022/trismegisto-spine-auto-service-apps.technical-ClMKB9cK.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-apps.usage-Cf5SG-oQ.mjs +0 -55
- package/fesm2022/trismegisto-spine-auto-service-apps.usage-Cf5SG-oQ.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-audit.technical-C901aIIQ.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-audit.usage-GIJ2RwuH.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service-audit.component-CCiz-q8o.mjs +0 -37
- package/fesm2022/trismegisto-spine-auto-service-auto-service-client.component-C7SPavrX.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-6Bk46MOf.mjs +0 -39
- package/fesm2022/trismegisto-spine-auto-service-auto-service-delete-6Bk46MOf.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-CqIVe2LU.mjs +0 -357
- package/fesm2022/trismegisto-spine-auto-service-auto-service-groups.component-CqIVe2LU.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-auto-service.component-BLN49F4a.mjs +0 -502
- package/fesm2022/trismegisto-spine-auto-service-auto-service.component-BLN49F4a.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-client.technical-BHWhpyWv.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-client.usage-CM2WB2e2.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-groups.technical-jQlwaQPn.mjs +0 -39
- package/fesm2022/trismegisto-spine-auto-service-groups.technical-jQlwaQPn.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-groups.usage-Bh7ig2zZ.mjs +0 -54
- package/fesm2022/trismegisto-spine-auto-service-groups.usage-Bh7ig2zZ.mjs.map +0 -1
- package/fesm2022/trismegisto-spine-auto-service-home.component-vl3BPFnk.mjs.map +0 -1
|
@@ -2,12 +2,12 @@ import * as _angular_core from '@angular/core';
|
|
|
2
2
|
import { OnDestroy, OnInit, ElementRef, InjectionToken, Type, Provider } from '@angular/core';
|
|
3
3
|
import { Router } from '@angular/router';
|
|
4
4
|
import * as _trismegisto_spine from '@trismegisto/spine';
|
|
5
|
-
import { SpineConfig, SpineNewsSlide, Route, ThemeService, ThemePresetService, DensityService, SpinePreferencesService } from '@trismegisto/spine';
|
|
5
|
+
import { SpineConfig, SpineNewsSlide, Route, ThemeService, ThemePresetService, DensityService, SpineHourCyclePreference, SpineStartPagePreference, SpineNoticeType, SpinePreferencesService, SpineMcpServer, SpineFeatures } from '@trismegisto/spine';
|
|
6
6
|
import { BehaviorSubject, Observable, Subject } from 'rxjs';
|
|
7
7
|
import * as _trismegisto_angular from '@trismegisto/angular';
|
|
8
|
-
import { HermesShortcutItem, WorkspaceStore, TabItem, MenuItem, SidebarNode,
|
|
8
|
+
import { HermesShortcutItem, WorkspaceStore, TabItem, MenuItem, SidebarNode, HermesThemeMode, HermesDensity, HermesSidebarService, SegmentedOption, ComboboxOption } from '@trismegisto/angular';
|
|
9
9
|
import * as _trismegisto_primitives from '@trismegisto/primitives';
|
|
10
|
-
import { formatMessage, HermesFont } from '@trismegisto/primitives';
|
|
10
|
+
import { formatMessage, HermesMotionPreference, Weekday, AlertVariant, HermesFont } from '@trismegisto/primitives';
|
|
11
11
|
import * as _orfeu_angular_core from '@orfeu/angular/core';
|
|
12
12
|
import { AuthorizationService, ViewService, UserProfile, AppDef, RealmAppsService } from '@orfeu/angular/core';
|
|
13
13
|
import * as _trismegisto_tokens from '@trismegisto/tokens';
|
|
@@ -291,6 +291,10 @@ declare class LayoutComponent implements OnInit {
|
|
|
291
291
|
private readonly settings;
|
|
292
292
|
/** Também liga, uma vez, o aviso de falha do logout (`logoutFailed$` do `@orfeu/angular`). */
|
|
293
293
|
private readonly logoutService;
|
|
294
|
+
/** Recursos opcionais (`SpineConfig.features`): cada serviço não faz nada com o seu recurso desligado. */
|
|
295
|
+
private readonly idle;
|
|
296
|
+
private readonly startPage;
|
|
297
|
+
private readonly accountPreferences;
|
|
294
298
|
/** Esconde sidebar e área de trabalho quando a rota ATIVA (do Router real, ver
|
|
295
299
|
* `router.events` abaixo) é a de sem-permissão — nesse caso não existe menu/página válido
|
|
296
300
|
* como contexto. Note que isto reflete só a URL do painel FOCADO (dona do Router real); um
|
|
@@ -767,12 +771,30 @@ declare class ShortcutsCheatsheetComponent implements OnInit, OnDestroy {
|
|
|
767
771
|
/** Seções que o próprio spine já traz. `key` é também o valor de `?settings=` na URL. */
|
|
768
772
|
declare const SPINE_SETTINGS_KEYS: {
|
|
769
773
|
readonly appearance: "aparencia";
|
|
774
|
+
/** Tamanho do texto e animações. */
|
|
775
|
+
readonly accessibility: "acessibilidade";
|
|
770
776
|
readonly region: "regiao";
|
|
771
777
|
readonly shortcuts: "atalhos";
|
|
778
|
+
/** Novidades e tour guiado. */
|
|
779
|
+
readonly help: "ajuda";
|
|
780
|
+
/** Tipos de aviso do app e aviso do navegador (`SpineFeatures.notices`). */
|
|
781
|
+
readonly notices: "notificacoes";
|
|
782
|
+
/** Listas guardadas neste navegador (recentes, buscas, favoritos) e restaurar preferências. */
|
|
783
|
+
readonly data: "dados";
|
|
772
784
|
readonly account: "conta";
|
|
785
|
+
/** Verificação em duas etapas e códigos de recuperação (API da conta do Argos). */
|
|
786
|
+
readonly mfa: "mfa";
|
|
787
|
+
/** Sessão atual, token de acesso, tokens de aplicação e sessões e dispositivos. */
|
|
788
|
+
readonly sessions: "sessoes";
|
|
789
|
+
/** @deprecated A seção "Conta e segurança" virou "MFA" e "Sessões": `seguranca` abre a de MFA (ver
|
|
790
|
+
* `SPINE_SETTINGS_ALIASES`). Use `mfa` ou `sessions`. */
|
|
773
791
|
readonly security: "seguranca";
|
|
774
792
|
readonly about: "sobre";
|
|
775
793
|
};
|
|
794
|
+
/** Chaves antigas de `?settings=` que continuam abrindo a seção que as substituiu (links já publicados). */
|
|
795
|
+
declare const SPINE_SETTINGS_ALIASES: Readonly<Record<string, string>>;
|
|
796
|
+
/** Chave de seção que vale hoje: troca uma chave antiga pela nova; as demais passam iguais. */
|
|
797
|
+
declare function resolveSettingsSection(section: string): string;
|
|
776
798
|
/** Seção extra do painel, registrada pelo app (ex.: preferências de deploy do hefesto). */
|
|
777
799
|
interface SpineSettingsSection {
|
|
778
800
|
/** Identificador estável; também o que `?settings=<key>` abre. Não repetir os do spine. */
|
|
@@ -795,6 +817,7 @@ declare class SpineSettingsService {
|
|
|
795
817
|
readonly isOpen: _angular_core.WritableSignal<boolean>;
|
|
796
818
|
/** Seção pedida na abertura (vazio = a primeira). */
|
|
797
819
|
readonly section: _angular_core.WritableSignal<string>;
|
|
820
|
+
/** `section` aceita também as chaves antigas (`seguranca` abre "MFA"). */
|
|
798
821
|
open(section?: string): void;
|
|
799
822
|
close(): void;
|
|
800
823
|
toggle(): void;
|
|
@@ -802,11 +825,159 @@ declare class SpineSettingsService {
|
|
|
802
825
|
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SpineSettingsService>;
|
|
803
826
|
}
|
|
804
827
|
|
|
828
|
+
/** Espera depois da última mudança antes de gravar. */
|
|
829
|
+
declare const SPINE_PREFERENCES_SAVE_DELAY_MS = 1500;
|
|
830
|
+
/** Documento de preferências guardado no Argos (`PUT {api}/preferences`): chaves planas, todas opcionais. */
|
|
831
|
+
interface SpineAccountPreferencesDoc {
|
|
832
|
+
v: number;
|
|
833
|
+
themeMode?: HermesThemeMode;
|
|
834
|
+
family?: string;
|
|
835
|
+
density?: HermesDensity;
|
|
836
|
+
font?: string;
|
|
837
|
+
sidebar?: 'auto' | 'fixed' | 'compact';
|
|
838
|
+
language?: string;
|
|
839
|
+
timeZone?: string;
|
|
840
|
+
textScale?: number;
|
|
841
|
+
motion?: HermesMotionPreference;
|
|
842
|
+
hourCycle?: SpineHourCyclePreference;
|
|
843
|
+
weekStart?: Weekday | null;
|
|
844
|
+
characterKeys?: boolean;
|
|
845
|
+
idleMinutes?: number;
|
|
846
|
+
startPage?: SpineStartPagePreference;
|
|
847
|
+
notices?: Record<string, boolean>;
|
|
848
|
+
browserNotices?: boolean;
|
|
849
|
+
favorites?: unknown[];
|
|
850
|
+
}
|
|
851
|
+
/** `local`: só no navegador (recurso desligado, sem API da conta, ou Argos sem o endpoint). */
|
|
852
|
+
type SpineAccountPreferencesStatus = 'idle' | 'local' | 'loading' | 'saving' | 'synced' | 'error';
|
|
853
|
+
/**
|
|
854
|
+
* Preferências na conta (`SpineFeatures.accountPreferences`): espelha no Argos (`GET/PUT {api}/preferences`, por
|
|
855
|
+
* usuário e aplicação) o que o painel de configurações guarda no navegador — tema, cor, densidade, fonte, menu
|
|
856
|
+
* lateral, idioma, fuso, relógio, primeiro dia da semana, tamanho do texto, animações, atalhos de tecla única,
|
|
857
|
+
* inatividade, tela inicial, tipos de aviso e favoritos. As telas Aparência, Região etc. não mudam: o
|
|
858
|
+
* armazenamento local continua sendo a fonte de cada tela, e este serviço só sincroniza.
|
|
859
|
+
*
|
|
860
|
+
* - No início da sessão (`start()`, chamado pelo layout e pelo `/callback`), lê a conta e aplica o que estiver lá
|
|
861
|
+
* (pelos mesmos `set*` das telas); favoritos são somados (os da conta primeiro). Conta vazia recebe o que está no
|
|
862
|
+
* navegador.
|
|
863
|
+
* - Depois, cada mudança é gravada na conta, agrupada (`SPINE_PREFERENCES_SAVE_DELAY_MS`).
|
|
864
|
+
* - Sem a API da conta, com o recurso desligado ou com um Argos que não tem o endpoint (404/400), fica só no
|
|
865
|
+
* navegador (`status() === 'local'`), sem erro na tela.
|
|
866
|
+
*/
|
|
867
|
+
declare class SpineAccountPreferencesService {
|
|
868
|
+
private readonly browser;
|
|
869
|
+
private readonly api;
|
|
870
|
+
private readonly preferences;
|
|
871
|
+
private readonly quickAccess;
|
|
872
|
+
private readonly hermesTheme;
|
|
873
|
+
private readonly themeConfig;
|
|
874
|
+
private readonly theme;
|
|
875
|
+
private readonly density;
|
|
876
|
+
private readonly presets;
|
|
877
|
+
private readonly sidebar;
|
|
878
|
+
/** Recurso ligado e API da conta disponível. */
|
|
879
|
+
readonly enabled: boolean;
|
|
880
|
+
readonly status: _angular_core.WritableSignal<SpineAccountPreferencesStatus>;
|
|
881
|
+
/** Hora da última leitura/gravação bem-sucedida. */
|
|
882
|
+
readonly syncedAt: _angular_core.WritableSignal<Date | null>;
|
|
883
|
+
/** O documento que o navegador tem agora. */
|
|
884
|
+
readonly snapshot: _angular_core.Signal<SpineAccountPreferencesDoc>;
|
|
885
|
+
private loaded;
|
|
886
|
+
private lastSaved;
|
|
887
|
+
private timer;
|
|
888
|
+
private readyPromise;
|
|
889
|
+
constructor();
|
|
890
|
+
/**
|
|
891
|
+
* Lê a conta e aplica (uma vez por sessão do app; chamadas seguintes devolvem a mesma promessa). Nunca rejeita.
|
|
892
|
+
*/
|
|
893
|
+
start(): Promise<void>;
|
|
894
|
+
/** Como `start()`, mas sem esperar mais que `timeoutMs` (o login não fica parado se o Argos demorar). */
|
|
895
|
+
ready(timeoutMs?: number): Promise<void>;
|
|
896
|
+
/** Grava agora o que estiver pendente ("Sincronizar agora"); relê a conta se ela ainda não respondeu. */
|
|
897
|
+
syncNow(): Promise<void>;
|
|
898
|
+
private load;
|
|
899
|
+
/** Aplica o documento da conta pelos mesmos caminhos das telas (cada `set*` também grava no navegador). */
|
|
900
|
+
private apply;
|
|
901
|
+
private schedule;
|
|
902
|
+
private save;
|
|
903
|
+
private failed;
|
|
904
|
+
private clearTimer;
|
|
905
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpineAccountPreferencesService, never>;
|
|
906
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SpineAccountPreferencesService>;
|
|
907
|
+
}
|
|
908
|
+
/** JSON com as chaves dos objetos em ordem (a conta pode devolver outra ordem). */
|
|
909
|
+
declare function stable(value: unknown): string;
|
|
910
|
+
|
|
911
|
+
/** Um aviso do app (`SpineNoticesService.notify`). */
|
|
912
|
+
interface SpineNotice {
|
|
913
|
+
title: string;
|
|
914
|
+
/** Detalhe (segunda linha do aviso do navegador; no aviso da tela vai depois do título). */
|
|
915
|
+
body?: string;
|
|
916
|
+
/** Caminho interno (`/solicitacoes/42`) aberto pelo "Abrir" do aviso e pelo clique no aviso do navegador. */
|
|
917
|
+
url?: string;
|
|
918
|
+
/** Cor do aviso na tela. Padrão: `info`. */
|
|
919
|
+
intent?: AlertVariant;
|
|
920
|
+
}
|
|
921
|
+
/** Permissão do navegador para avisos, ou `unsupported` (sem Notification API, ou fora do navegador). */
|
|
922
|
+
type SpineNoticePermission = NotificationPermission | 'unsupported';
|
|
923
|
+
/**
|
|
924
|
+
* Avisos do app (`SpineFeatures.notices`): o app declara os tipos que emite (`{ id, label }`) e chama
|
|
925
|
+
* `notify(tipo, aviso)` de onde já sabe do acontecimento (subscription, polling). Cada tipo pode ser desligado em
|
|
926
|
+
* Configurações › Notificações; tipo desligado não aparece. O aviso ligado:
|
|
927
|
+
*
|
|
928
|
+
* - aparece na tela (`HermesToastService`, com "Abrir" quando tem `url`);
|
|
929
|
+
* - com a aba em segundo plano, o aviso do navegador ligado e a permissão concedida, vira também um aviso do sistema
|
|
930
|
+
* (Notification API); clicar nele traz a aba para a frente e abre a `url`.
|
|
931
|
+
*
|
|
932
|
+
* Tipo não declarado em `SpineFeatures.notices.types` aparece sempre (em desenvolvimento, com um aviso no console).
|
|
933
|
+
*/
|
|
934
|
+
declare class SpineNoticesService {
|
|
935
|
+
private readonly browser;
|
|
936
|
+
private readonly zone;
|
|
937
|
+
private readonly injector;
|
|
938
|
+
private readonly toast;
|
|
939
|
+
private readonly preferences;
|
|
940
|
+
private readonly messages;
|
|
941
|
+
private readonly config;
|
|
942
|
+
private readonly warned;
|
|
943
|
+
/** Recurso ligado pelo app. */
|
|
944
|
+
readonly enabled: boolean;
|
|
945
|
+
/** Tipos declarados pelo app. */
|
|
946
|
+
readonly types: readonly SpineNoticeType[];
|
|
947
|
+
/** Permissão atual do navegador. */
|
|
948
|
+
readonly permission: _angular_core.WritableSignal<SpineNoticePermission>;
|
|
949
|
+
/** Aviso do navegador valendo de fato: ligado nas configurações e permitido pelo navegador. */
|
|
950
|
+
readonly browserActive: _angular_core.Signal<boolean>;
|
|
951
|
+
/** O tipo está ligado (escolha da pessoa ou, sem escolha, o `defaultEnabled` dele). */
|
|
952
|
+
isEnabled(typeId: string): boolean;
|
|
953
|
+
setEnabled(typeId: string, enabled: boolean): void;
|
|
954
|
+
/**
|
|
955
|
+
* Liga o aviso do navegador: pede a permissão quando ainda não foi pedida. Devolve se ficou ligado (permissão
|
|
956
|
+
* negada ou navegador sem suporte: continua desligado).
|
|
957
|
+
*/
|
|
958
|
+
enableBrowser(): Promise<boolean>;
|
|
959
|
+
disableBrowser(): void;
|
|
960
|
+
/** Relê a permissão (a pessoa pode ter mudado nas configurações do navegador). */
|
|
961
|
+
refreshPermission(): void;
|
|
962
|
+
/** Mostra o aviso, se o tipo estiver ligado. Devolve se mostrou. */
|
|
963
|
+
notify(typeId: string, notice: SpineNotice): boolean;
|
|
964
|
+
private system;
|
|
965
|
+
private open;
|
|
966
|
+
private readPermission;
|
|
967
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpineNoticesService, never>;
|
|
968
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SpineNoticesService>;
|
|
969
|
+
}
|
|
970
|
+
|
|
971
|
+
/** Uma lista guardada neste navegador que a seção "Dados do navegador" limpa. */
|
|
972
|
+
type BrowserList = 'recents' | 'searches' | 'favorites';
|
|
805
973
|
/**
|
|
806
|
-
* Painel de configurações do shell (substitui as telas do antigo módulo "Sistema"):
|
|
807
|
-
*
|
|
808
|
-
*
|
|
809
|
-
*
|
|
974
|
+
* Painel de configurações do shell (substitui as telas do antigo módulo "Sistema"): Conta (perfil, nível,
|
|
975
|
+
* sessão, sair), MFA (verificação em duas etapas e códigos de recuperação do Argos), Sessões (token de
|
|
976
|
+
* acesso, tokens de aplicação e sessões e dispositivos do Argos), Aparência, Acessibilidade (tamanho do texto,
|
|
977
|
+
* animações), Região (idioma, fuso, formato de hora, primeiro dia da semana), Atalhos, Dados do navegador
|
|
978
|
+
* (limpar listas, restaurar preferências), Ajuda (novidades, tour) e Sobre, mais as seções que o app registrar
|
|
979
|
+
* com `provideSettingsSection`. Tudo vale na hora — cada controle chama o serviço que já persiste aquela
|
|
980
|
+
* preferência (tema, densidade, menu lateral, fuso, tamanho do texto…).
|
|
810
981
|
*
|
|
811
982
|
* Aberto por `SpineSettingsService.open()` — menu do perfil, `Ctrl+,` ou `?settings=<seção>`.
|
|
812
983
|
*/
|
|
@@ -837,6 +1008,7 @@ declare class SettingsPanelComponent {
|
|
|
837
1008
|
sidebar: string;
|
|
838
1009
|
sidebarDescription: string;
|
|
839
1010
|
sidebarKeywords: string;
|
|
1011
|
+
sidebarHelp: string;
|
|
840
1012
|
sidebarAuto: string;
|
|
841
1013
|
sidebarFixed: string;
|
|
842
1014
|
sidebarCompact: string;
|
|
@@ -850,6 +1022,16 @@ declare class SettingsPanelComponent {
|
|
|
850
1022
|
timeZoneKeywords: string;
|
|
851
1023
|
timeZoneHint: string;
|
|
852
1024
|
timeZoneAuto: string;
|
|
1025
|
+
hourCycle: string;
|
|
1026
|
+
hourCycleHint: string;
|
|
1027
|
+
hourCycleKeywords: string;
|
|
1028
|
+
hourCycleAuto: string;
|
|
1029
|
+
hourCycle24: string;
|
|
1030
|
+
hourCycle12: string;
|
|
1031
|
+
weekStart: string;
|
|
1032
|
+
weekStartDescription: string;
|
|
1033
|
+
weekStartKeywords: string;
|
|
1034
|
+
weekStartAuto: string;
|
|
853
1035
|
shortcuts: string;
|
|
854
1036
|
shortcutsDescription: string;
|
|
855
1037
|
shortcutsKeywords: string;
|
|
@@ -857,6 +1039,47 @@ declare class SettingsPanelComponent {
|
|
|
857
1039
|
tourDescription: string;
|
|
858
1040
|
tourKeywords: string;
|
|
859
1041
|
replayTour: string;
|
|
1042
|
+
accessibility: string;
|
|
1043
|
+
accessibilityKeywords: string;
|
|
1044
|
+
textSize: string;
|
|
1045
|
+
textSizeDescription: string;
|
|
1046
|
+
textSizeKeywords: string;
|
|
1047
|
+
motion: string;
|
|
1048
|
+
motionDescription: string;
|
|
1049
|
+
motionKeywords: string;
|
|
1050
|
+
motionSystem: string;
|
|
1051
|
+
motionReduce: string;
|
|
1052
|
+
motionFull: string;
|
|
1053
|
+
help: string;
|
|
1054
|
+
helpKeywords: string;
|
|
1055
|
+
news: string;
|
|
1056
|
+
newsDescription: string;
|
|
1057
|
+
newsKeywords: string;
|
|
1058
|
+
showNews: string;
|
|
1059
|
+
browserData: string;
|
|
1060
|
+
browserDataDescription: string;
|
|
1061
|
+
browserDataKeywords: string;
|
|
1062
|
+
recentPages: string;
|
|
1063
|
+
recentPagesKeywords: string;
|
|
1064
|
+
recentSearches: string;
|
|
1065
|
+
recentSearchesKeywords: string;
|
|
1066
|
+
favorites: string;
|
|
1067
|
+
favoritesKeywords: string;
|
|
1068
|
+
pagesCount: _trismegisto_primitives.PluralMessage;
|
|
1069
|
+
searchesCount: _trismegisto_primitives.PluralMessage;
|
|
1070
|
+
clear: string;
|
|
1071
|
+
confirmClear: string;
|
|
1072
|
+
cancel: string;
|
|
1073
|
+
recentPagesCleared: string;
|
|
1074
|
+
recentSearchesCleared: string;
|
|
1075
|
+
favoritesCleared: string;
|
|
1076
|
+
restorePreferences: string;
|
|
1077
|
+
restorePreferencesDescription: string;
|
|
1078
|
+
restorePreferencesHelp: string;
|
|
1079
|
+
restorePreferencesKeywords: string;
|
|
1080
|
+
restore: string;
|
|
1081
|
+
confirmRestore: string;
|
|
1082
|
+
preferencesRestored: string;
|
|
860
1083
|
account: string;
|
|
861
1084
|
accountKeywords: string;
|
|
862
1085
|
user: string;
|
|
@@ -873,15 +1096,17 @@ declare class SettingsPanelComponent {
|
|
|
873
1096
|
accessTokenDescription: string;
|
|
874
1097
|
accessTokenKeywords: string;
|
|
875
1098
|
copy: string;
|
|
1099
|
+
moreAbout: string;
|
|
876
1100
|
appTokens: string;
|
|
877
1101
|
appTokensDescription: string;
|
|
878
1102
|
appTokensKeywords: string;
|
|
1103
|
+
appTokensHelp: string;
|
|
879
1104
|
logout: string;
|
|
880
1105
|
logoutDescription: string;
|
|
881
1106
|
logoutKeywords: string;
|
|
882
|
-
|
|
883
|
-
|
|
884
|
-
|
|
1107
|
+
mfa: string;
|
|
1108
|
+
mfaDescription: string;
|
|
1109
|
+
mfaKeywords: string;
|
|
885
1110
|
signedInAccount: string;
|
|
886
1111
|
signedInRealm: string;
|
|
887
1112
|
twoFactor: string;
|
|
@@ -893,6 +1118,9 @@ declare class SettingsPanelComponent {
|
|
|
893
1118
|
sessions: string;
|
|
894
1119
|
sessionsDescription: string;
|
|
895
1120
|
sessionsKeywords: string;
|
|
1121
|
+
sessionsSection: string;
|
|
1122
|
+
sessionsSectionDescription: string;
|
|
1123
|
+
sessionsSectionKeywords: string;
|
|
896
1124
|
about: string;
|
|
897
1125
|
aboutKeywords: string;
|
|
898
1126
|
application: string;
|
|
@@ -920,14 +1148,28 @@ declare class SettingsPanelComponent {
|
|
|
920
1148
|
protected readonly fmt: typeof formatMessage;
|
|
921
1149
|
protected readonly keys: {
|
|
922
1150
|
readonly appearance: "aparencia";
|
|
1151
|
+
readonly accessibility: "acessibilidade";
|
|
923
1152
|
readonly region: "regiao";
|
|
924
1153
|
readonly shortcuts: "atalhos";
|
|
1154
|
+
readonly help: "ajuda";
|
|
1155
|
+
readonly notices: "notificacoes";
|
|
1156
|
+
readonly data: "dados";
|
|
925
1157
|
readonly account: "conta";
|
|
1158
|
+
readonly mfa: "mfa";
|
|
1159
|
+
readonly sessions: "sessoes";
|
|
926
1160
|
readonly security: "seguranca";
|
|
927
1161
|
readonly about: "sobre";
|
|
928
1162
|
};
|
|
1163
|
+
/** Seção aberta, com a chave antiga já trocada pela nova (`seguranca` → `mfa`). */
|
|
1164
|
+
protected readonly activeSection: _angular_core.Signal<string>;
|
|
929
1165
|
private readonly theme;
|
|
930
1166
|
private readonly hermesTheme;
|
|
1167
|
+
private readonly themeConfig;
|
|
1168
|
+
private readonly sidebarConfig;
|
|
1169
|
+
private readonly i18n;
|
|
1170
|
+
private readonly news;
|
|
1171
|
+
private readonly quickAccess;
|
|
1172
|
+
private readonly userStorage;
|
|
931
1173
|
private readonly presets;
|
|
932
1174
|
private readonly density;
|
|
933
1175
|
protected readonly sidebar: HermesSidebarService;
|
|
@@ -941,6 +1183,85 @@ declare class SettingsPanelComponent {
|
|
|
941
1183
|
private readonly config;
|
|
942
1184
|
protected readonly appSections: _trismegisto_spine_layout.SpineSettingsSection[];
|
|
943
1185
|
protected readonly appName: string;
|
|
1186
|
+
/** Recursos opcionais ligados pelo app (`SpineConfig.features`). */
|
|
1187
|
+
protected readonly features: _trismegisto_spine.SpineFeatures;
|
|
1188
|
+
protected readonly featureText: {
|
|
1189
|
+
aiAgent: string;
|
|
1190
|
+
aiAgentDescription: string;
|
|
1191
|
+
aiAgentKeywords: string;
|
|
1192
|
+
aiAgentHelp: string;
|
|
1193
|
+
aiAgentStart: string;
|
|
1194
|
+
aiAgentServers: string;
|
|
1195
|
+
aiAgentAccess: string;
|
|
1196
|
+
aiAgentReadOnly: string;
|
|
1197
|
+
aiAgentReadWrite: string;
|
|
1198
|
+
aiAgentWriteHint: string;
|
|
1199
|
+
aiAgentReadOnlyServer: string;
|
|
1200
|
+
aiAgentTokenName: string;
|
|
1201
|
+
aiAgentGenerate: string;
|
|
1202
|
+
aiAgentSelectServer: string;
|
|
1203
|
+
aiAgentResult: string;
|
|
1204
|
+
aiAgentResultHint: string;
|
|
1205
|
+
aiAgentCopy: string;
|
|
1206
|
+
aiAgentCopied: string;
|
|
1207
|
+
aiAgentDone: string;
|
|
1208
|
+
aiAgentCreateError: string;
|
|
1209
|
+
aiAgentUnavailable: string;
|
|
1210
|
+
activity: string;
|
|
1211
|
+
activityDescription: string;
|
|
1212
|
+
activityKeywords: string;
|
|
1213
|
+
activityFilter: string;
|
|
1214
|
+
activityAll: string;
|
|
1215
|
+
activityFailures: string;
|
|
1216
|
+
activityDetail: string;
|
|
1217
|
+
activityApp: string;
|
|
1218
|
+
activityEmpty: string;
|
|
1219
|
+
activityMore: string;
|
|
1220
|
+
activityShowing: string;
|
|
1221
|
+
activityLoadError: string;
|
|
1222
|
+
unknownIp: string;
|
|
1223
|
+
unknownApp: string;
|
|
1224
|
+
idle: string;
|
|
1225
|
+
idleDescription: string;
|
|
1226
|
+
idleKeywords: string;
|
|
1227
|
+
idleNever: string;
|
|
1228
|
+
idleOption: string;
|
|
1229
|
+
idleLimitHint: string;
|
|
1230
|
+
idleWarningHeading: string;
|
|
1231
|
+
idleWarningText: _trismegisto_primitives.PluralMessage;
|
|
1232
|
+
idleStay: string;
|
|
1233
|
+
idleLogout: string;
|
|
1234
|
+
startPage: string;
|
|
1235
|
+
startPageDescription: string;
|
|
1236
|
+
startPageKeywords: string;
|
|
1237
|
+
startHome: string;
|
|
1238
|
+
startLast: string;
|
|
1239
|
+
startFavorite: string;
|
|
1240
|
+
startPageHint: string;
|
|
1241
|
+
defaultBadge: string;
|
|
1242
|
+
defaultBadgeDescription: string;
|
|
1243
|
+
defaultBadgeKeywords: string;
|
|
1244
|
+
defaultBadgeAuto: string;
|
|
1245
|
+
defaultBadgeSaved: string;
|
|
1246
|
+
defaultBadgeError: string;
|
|
1247
|
+
defaultBadgeLoadError: string;
|
|
1248
|
+
notices: string;
|
|
1249
|
+
noticesDescription: string;
|
|
1250
|
+
noticesKeywords: string;
|
|
1251
|
+
browserNotices: string;
|
|
1252
|
+
browserNoticesDescription: string;
|
|
1253
|
+
browserNoticesDenied: string;
|
|
1254
|
+
browserNoticesUnsupported: string;
|
|
1255
|
+
noticeOpen: string;
|
|
1256
|
+
sync: string;
|
|
1257
|
+
syncDescription: string;
|
|
1258
|
+
syncKeywords: string;
|
|
1259
|
+
syncSynced: string;
|
|
1260
|
+
syncSaving: string;
|
|
1261
|
+
syncLocal: string;
|
|
1262
|
+
syncError: string;
|
|
1263
|
+
syncNow: string;
|
|
1264
|
+
};
|
|
944
1265
|
/**
|
|
945
1266
|
* "Copiar token de acesso" é ferramenta de desenvolvimento: põe o token da sessão (Bearer de tudo que a
|
|
946
1267
|
* pessoa pode fazer) na área de transferência, ao alcance de qualquer app/extensão que leia o clipboard.
|
|
@@ -962,6 +1283,12 @@ declare class SettingsPanelComponent {
|
|
|
962
1283
|
protected setDensity(value: string): void;
|
|
963
1284
|
protected setFont(value: string): void;
|
|
964
1285
|
protected setSidebarMode(value: string): void;
|
|
1286
|
+
/** 100%, 110%, 125%, 150% — no formato de porcentagem do idioma. */
|
|
1287
|
+
protected readonly textSizeOptions: _angular_core.Signal<readonly SegmentedOption<string>[]>;
|
|
1288
|
+
protected readonly textSizeValue: _angular_core.Signal<string>;
|
|
1289
|
+
protected readonly motionOptions: _angular_core.Signal<readonly SegmentedOption<string>[]>;
|
|
1290
|
+
protected setTextSize(value: string): void;
|
|
1291
|
+
protected setMotion(value: string): void;
|
|
965
1292
|
protected readonly languageOptions: _angular_core.Signal<{
|
|
966
1293
|
readonly value: string;
|
|
967
1294
|
readonly label: string;
|
|
@@ -972,9 +1299,45 @@ declare class SettingsPanelComponent {
|
|
|
972
1299
|
protected readonly timeZoneOptions: _angular_core.Signal<readonly ComboboxOption[]>;
|
|
973
1300
|
/** Hora agora no fuso efetivo — prévia de como as datas vão aparecer. */
|
|
974
1301
|
protected readonly timeZonePreview: _angular_core.Signal<string>;
|
|
1302
|
+
protected readonly hourCycleOptions: _angular_core.Signal<readonly SegmentedOption<string>[]>;
|
|
1303
|
+
/** Hora agora, no relógio escolhido — prévia do formato. */
|
|
1304
|
+
protected readonly hourCyclePreview: _angular_core.Signal<string>;
|
|
1305
|
+
/** Automático, domingo e segunda — os nomes dos dias saem do `Intl`, no idioma. */
|
|
1306
|
+
protected readonly weekStartOptions: _angular_core.Signal<readonly SegmentedOption<string>[]>;
|
|
1307
|
+
protected readonly weekStartValue: _angular_core.Signal<string>;
|
|
1308
|
+
protected setHourCycle(value: string): void;
|
|
1309
|
+
protected setWeekStart(value: string): void;
|
|
975
1310
|
/** Atalhos registrados (favoritos numa linha só) + os que outra peça dispara — os mesmos do painel "?". */
|
|
976
1311
|
protected readonly shortcutItems: _angular_core.Signal<readonly _trismegisto_angular.HermesShortcutItem[]>;
|
|
1312
|
+
/** "Ver novidades" só quando o app tem alguma vigente (`provideSpineNews`). */
|
|
1313
|
+
protected readonly hasNews: _angular_core.Signal<boolean>;
|
|
1314
|
+
/** Fecha o painel antes: novidades e tour ocupam a tela. */
|
|
1315
|
+
protected showNews(): void;
|
|
977
1316
|
protected replayTour(): void;
|
|
1317
|
+
/** Relida quando o painel abre e depois de limpar (as buscas recentes não têm sinal próprio). */
|
|
1318
|
+
private readonly dataVersion;
|
|
1319
|
+
protected readonly counts: _angular_core.Signal<Readonly<Record<BrowserList, number>>>;
|
|
1320
|
+
/** As três listas, com a contagem já no texto da linha. */
|
|
1321
|
+
protected readonly browserLists: _angular_core.Signal<{
|
|
1322
|
+
id: BrowserList;
|
|
1323
|
+
label: string;
|
|
1324
|
+
keywords: string;
|
|
1325
|
+
count: string;
|
|
1326
|
+
empty: boolean;
|
|
1327
|
+
}[]>;
|
|
1328
|
+
/** Ação destrutiva esperando confirmação (uma por vez, como nas listas do painel). */
|
|
1329
|
+
protected readonly confirming: _angular_core.WritableSignal<"preferences" | BrowserList | null>;
|
|
1330
|
+
constructor();
|
|
1331
|
+
protected cancelConfirm(): void;
|
|
1332
|
+
/** 1º clique pede confirmação; o 2º apaga a lista do usuário atual e avisa. */
|
|
1333
|
+
protected clearList(list: BrowserList): void;
|
|
1334
|
+
/**
|
|
1335
|
+
* Restaurar preferências (com confirmação): tema (sistema), cor principal (a padrão do app), densidade
|
|
1336
|
+
* (confortável), fonte (a padrão do app), menu lateral (o modo padrão do app), tamanho do texto (100%),
|
|
1337
|
+
* animações (sistema), formato de hora e primeiro dia da semana (automáticos). Idioma, fuso horário e
|
|
1338
|
+
* atalhos de tecla única ficam: mudam como a pessoa lê e digita, e não são "aparência".
|
|
1339
|
+
*/
|
|
1340
|
+
protected restorePreferences(): void;
|
|
978
1341
|
protected get profile(): _orfeu_angular_core.UserProfile;
|
|
979
1342
|
protected get badge(): _orfeu_angular_core.Badge | null;
|
|
980
1343
|
/** Validade da sessão lida do `exp` do próprio token (só leitura do payload, sem validar). */
|
|
@@ -986,11 +1349,49 @@ declare class SettingsPanelComponent {
|
|
|
986
1349
|
/** O painel fica aberto até a saída dar certo: com falha, a pessoa continua aqui, com o aviso de erro. */
|
|
987
1350
|
protected logout(): Promise<void>;
|
|
988
1351
|
/** API da conta no Argos (Bearer com o token da sessão), a partir do `AUTH_CONFIG`. Sem ela (sem
|
|
989
|
-
* `authority`/`realmId`, ou com `CHANGE_ME`) a seção não
|
|
1352
|
+
* `authority`/`realmId`, ou com `CHANGE_ME`) a seção MFA e a linha "Sessões e dispositivos" não aparecem. */
|
|
990
1353
|
protected readonly accountSecurity: boolean;
|
|
991
1354
|
/** Login da pessoa (`preferred_username` do token, ou o e-mail), para dizer QUAL conta do Argos. */
|
|
992
1355
|
protected get accountLogin(): string;
|
|
1356
|
+
/** Realm pelo nome (`master`, `Minha Empresa`); um id (UUID) não diz nada a quem lê e fica de fora. */
|
|
993
1357
|
protected get accountRealm(): string;
|
|
1358
|
+
/** Linhas da seção Sessões, cada uma com a própria condição. "Tokens de aplicação" sempre aparece (sem
|
|
1359
|
+
* `SPINE_ADMIN_API` os tokens explicam que não estão disponíveis); o token de acesso só com
|
|
1360
|
+
* `technicalDocs`; sessões e dispositivos só com a API da conta. A "Sessão" (validade) fica em Conta. */
|
|
1361
|
+
protected readonly sessionsItems: {
|
|
1362
|
+
readonly accessToken: boolean;
|
|
1363
|
+
readonly appTokens: true;
|
|
1364
|
+
readonly aiAgent: boolean;
|
|
1365
|
+
readonly devices: boolean;
|
|
1366
|
+
};
|
|
1367
|
+
/** Sem nenhuma linha visível a seção não aparece. */
|
|
1368
|
+
protected readonly hasSessionsSection: boolean;
|
|
1369
|
+
private readonly idle;
|
|
1370
|
+
private readonly startPageService;
|
|
1371
|
+
private readonly router;
|
|
1372
|
+
protected readonly notices: SpineNoticesService;
|
|
1373
|
+
protected readonly accountPreferences: SpineAccountPreferencesService;
|
|
1374
|
+
/** Conta › "Encerrar por inatividade": opções dentro dos limites do app. */
|
|
1375
|
+
protected readonly idleOptions: _angular_core.Signal<readonly SegmentedOption<string>[]>;
|
|
1376
|
+
protected readonly idleValue: _angular_core.Signal<string>;
|
|
1377
|
+
protected readonly idleHint: string;
|
|
1378
|
+
protected setIdle(value: string): void;
|
|
1379
|
+
/** Conta › "Tela inicial": início, última tela e cada favorito. */
|
|
1380
|
+
protected readonly startPageOptions: _angular_core.Signal<{
|
|
1381
|
+
value: string;
|
|
1382
|
+
label: string;
|
|
1383
|
+
}[]>;
|
|
1384
|
+
/** Favorito escolhido que deixou de ser favorito: mostra "Início" (é para onde o login vai). */
|
|
1385
|
+
protected readonly startPageValue: _angular_core.Signal<SpineStartPagePreference>;
|
|
1386
|
+
protected readonly quickAccessHasFavorites: _angular_core.Signal<boolean>;
|
|
1387
|
+
protected setStartPage(value: string): void;
|
|
1388
|
+
/** Conta › "Crachá padrão": só com mais de um crachá nesta aplicação (claim `badges` do token). */
|
|
1389
|
+
protected get showDefaultBadge(): boolean;
|
|
1390
|
+
/** Notificações: aviso do navegador ligado (escolha + permissão). */
|
|
1391
|
+
protected setBrowserNotices(enabled: boolean): Promise<void>;
|
|
1392
|
+
/** "Preferências na conta": situação da sincronização. */
|
|
1393
|
+
protected readonly syncStatus: _angular_core.Signal<string>;
|
|
1394
|
+
protected syncNow(): void;
|
|
994
1395
|
protected readonly dependencies: {
|
|
995
1396
|
version: string | undefined;
|
|
996
1397
|
name: string;
|
|
@@ -1053,6 +1454,8 @@ declare class SpineAppTokensService {
|
|
|
1053
1454
|
private readonly auth;
|
|
1054
1455
|
private readonly adminApi;
|
|
1055
1456
|
readonly available: boolean;
|
|
1457
|
+
/** Sobe a cada token criado por aqui (o "Conectar um agente de IA" cria um; a lista de tokens relê). */
|
|
1458
|
+
readonly changes: _angular_core.WritableSignal<number>;
|
|
1056
1459
|
private get baseUrl();
|
|
1057
1460
|
private get headers();
|
|
1058
1461
|
list(): Promise<AppTokenList>;
|
|
@@ -1120,6 +1523,55 @@ interface AccountSession {
|
|
|
1120
1523
|
name: string | null;
|
|
1121
1524
|
}[];
|
|
1122
1525
|
}
|
|
1526
|
+
/** Uma tentativa de entrar na conta (`GET {api}/activity`): sucesso, falha ou cancelamento. */
|
|
1527
|
+
interface AccountActivityEntry {
|
|
1528
|
+
id: string;
|
|
1529
|
+
/** Data e hora (ISO). */
|
|
1530
|
+
at: string;
|
|
1531
|
+
result: 'success' | 'failure' | 'cancelled';
|
|
1532
|
+
/** `local`, `mfa`, `github`, `google`, `keycloak`, `entraid`. */
|
|
1533
|
+
method: string;
|
|
1534
|
+
/** Motivo da falha (`bad_password`, `mfa_failed`, `locked`…); `null` no sucesso. */
|
|
1535
|
+
reason: string | null;
|
|
1536
|
+
ip: string | null;
|
|
1537
|
+
device: {
|
|
1538
|
+
browser?: string | null;
|
|
1539
|
+
os?: string | null;
|
|
1540
|
+
mobile: boolean;
|
|
1541
|
+
label: string;
|
|
1542
|
+
};
|
|
1543
|
+
/** Aplicativo em que a pessoa tentou entrar. */
|
|
1544
|
+
client: {
|
|
1545
|
+
client_id: string;
|
|
1546
|
+
name: string | null;
|
|
1547
|
+
} | null;
|
|
1548
|
+
}
|
|
1549
|
+
interface AccountActivityPage {
|
|
1550
|
+
attempts: AccountActivityEntry[];
|
|
1551
|
+
total: number;
|
|
1552
|
+
limit: number;
|
|
1553
|
+
offset: number;
|
|
1554
|
+
/** Começo da janela (90 dias). */
|
|
1555
|
+
since: string;
|
|
1556
|
+
}
|
|
1557
|
+
/** Crachás da pessoa nesta aplicação e o padrão guardado no Argos (`GET {api}/badges`). */
|
|
1558
|
+
interface AccountBadges {
|
|
1559
|
+
client: {
|
|
1560
|
+
id: string;
|
|
1561
|
+
name: string | null;
|
|
1562
|
+
};
|
|
1563
|
+
badges: {
|
|
1564
|
+
id: string;
|
|
1565
|
+
name: string;
|
|
1566
|
+
}[];
|
|
1567
|
+
default_badge_id: string | null;
|
|
1568
|
+
active_badge_id: string | null;
|
|
1569
|
+
}
|
|
1570
|
+
/** Preferências guardadas na conta para esta aplicação (`GET/PUT {api}/preferences`). */
|
|
1571
|
+
interface AccountPreferences {
|
|
1572
|
+
preferences: Record<string, unknown>;
|
|
1573
|
+
updated_at: string | null;
|
|
1574
|
+
}
|
|
1123
1575
|
type AccountReauth = {
|
|
1124
1576
|
password: string;
|
|
1125
1577
|
} | {
|
|
@@ -1176,6 +1628,20 @@ declare class SpineAccountSecurityService {
|
|
|
1176
1628
|
endOtherSessions(): Promise<{
|
|
1177
1629
|
ended: number;
|
|
1178
1630
|
}>;
|
|
1631
|
+
/** Entradas e tentativas desta conta nos últimos 90 dias, da mais recente. `result` filtra só sucessos ou falhas. */
|
|
1632
|
+
activity(params?: {
|
|
1633
|
+
limit?: number;
|
|
1634
|
+
offset?: number;
|
|
1635
|
+
result?: 'success' | 'failure';
|
|
1636
|
+
}): Promise<AccountActivityPage>;
|
|
1637
|
+
badges(): Promise<AccountBadges>;
|
|
1638
|
+
/** Crachá com que o login entra nesta aplicação (`null` volta ao padrão: o de menor nível). */
|
|
1639
|
+
setDefaultBadge(badgeId: string | null): Promise<{
|
|
1640
|
+
default_badge_id: string | null;
|
|
1641
|
+
}>;
|
|
1642
|
+
preferences(): Promise<AccountPreferences>;
|
|
1643
|
+
/** Substitui o documento de preferências desta aplicação na conta (até 16 KB). */
|
|
1644
|
+
savePreferences(preferences: Record<string, unknown>): Promise<AccountPreferences>;
|
|
1179
1645
|
private send;
|
|
1180
1646
|
private request;
|
|
1181
1647
|
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpineAccountSecurityService, never>;
|
|
@@ -1184,6 +1650,360 @@ declare class SpineAccountSecurityService {
|
|
|
1184
1650
|
/** Código de erro que o Argos devolveu (`{ error: 'invalid_code' }`), ou `''`. */
|
|
1185
1651
|
declare function accountErrorCode(err: unknown): string;
|
|
1186
1652
|
|
|
1653
|
+
/** Monta o `.mcp.json` do Claude Code: uma entrada por servidor, todas com o mesmo token. Com `write`, cada servidor
|
|
1654
|
+
* que tem `writeScopes` pede esses escopos; os demais (e todos sem `write`) vão com `readScopes`, ou sem o header
|
|
1655
|
+
* (o MCP já é só leitura sem ele). URL relativa é resolvida contra `origin`. */
|
|
1656
|
+
declare function buildMcpConfig(servers: readonly SpineMcpServer[], token: string, write: boolean, origin: string): string;
|
|
1657
|
+
/**
|
|
1658
|
+
* Sessões › "Conectar um agente de IA" (`SpineFeatures.aiAgent`): em um passo, cria um token de aplicação pessoal
|
|
1659
|
+
* (`x-app-token`, a mesma API de "Tokens de aplicação") e monta a configuração MCP pronta para o Claude Code, com os
|
|
1660
|
+
* servidores que o app declarou e os escopos do acesso escolhido (só leitura ou leitura e escrita). O token aparece
|
|
1661
|
+
* uma única vez, dentro da configuração; nunca vai para o console nem para o armazenamento do navegador, e some ao
|
|
1662
|
+
* concluir ou fechar o painel.
|
|
1663
|
+
*/
|
|
1664
|
+
declare class AiAgentComponent {
|
|
1665
|
+
private readonly messages;
|
|
1666
|
+
protected readonly t: {
|
|
1667
|
+
aiAgent: string;
|
|
1668
|
+
aiAgentDescription: string;
|
|
1669
|
+
aiAgentKeywords: string;
|
|
1670
|
+
aiAgentHelp: string;
|
|
1671
|
+
aiAgentStart: string;
|
|
1672
|
+
aiAgentServers: string;
|
|
1673
|
+
aiAgentAccess: string;
|
|
1674
|
+
aiAgentReadOnly: string;
|
|
1675
|
+
aiAgentReadWrite: string;
|
|
1676
|
+
aiAgentWriteHint: string;
|
|
1677
|
+
aiAgentReadOnlyServer: string;
|
|
1678
|
+
aiAgentTokenName: string;
|
|
1679
|
+
aiAgentGenerate: string;
|
|
1680
|
+
aiAgentSelectServer: string;
|
|
1681
|
+
aiAgentResult: string;
|
|
1682
|
+
aiAgentResultHint: string;
|
|
1683
|
+
aiAgentCopy: string;
|
|
1684
|
+
aiAgentCopied: string;
|
|
1685
|
+
aiAgentDone: string;
|
|
1686
|
+
aiAgentCreateError: string;
|
|
1687
|
+
aiAgentUnavailable: string;
|
|
1688
|
+
activity: string;
|
|
1689
|
+
activityDescription: string;
|
|
1690
|
+
activityKeywords: string;
|
|
1691
|
+
activityFilter: string;
|
|
1692
|
+
activityAll: string;
|
|
1693
|
+
activityFailures: string;
|
|
1694
|
+
activityDetail: string;
|
|
1695
|
+
activityApp: string;
|
|
1696
|
+
activityEmpty: string;
|
|
1697
|
+
activityMore: string;
|
|
1698
|
+
activityShowing: string;
|
|
1699
|
+
activityLoadError: string;
|
|
1700
|
+
unknownIp: string;
|
|
1701
|
+
unknownApp: string;
|
|
1702
|
+
idle: string;
|
|
1703
|
+
idleDescription: string;
|
|
1704
|
+
idleKeywords: string;
|
|
1705
|
+
idleNever: string;
|
|
1706
|
+
idleOption: string;
|
|
1707
|
+
idleLimitHint: string;
|
|
1708
|
+
idleWarningHeading: string;
|
|
1709
|
+
idleWarningText: _trismegisto_primitives.PluralMessage;
|
|
1710
|
+
idleStay: string;
|
|
1711
|
+
idleLogout: string;
|
|
1712
|
+
startPage: string;
|
|
1713
|
+
startPageDescription: string;
|
|
1714
|
+
startPageKeywords: string;
|
|
1715
|
+
startHome: string;
|
|
1716
|
+
startLast: string;
|
|
1717
|
+
startFavorite: string;
|
|
1718
|
+
startPageHint: string;
|
|
1719
|
+
defaultBadge: string;
|
|
1720
|
+
defaultBadgeDescription: string;
|
|
1721
|
+
defaultBadgeKeywords: string;
|
|
1722
|
+
defaultBadgeAuto: string;
|
|
1723
|
+
defaultBadgeSaved: string;
|
|
1724
|
+
defaultBadgeError: string;
|
|
1725
|
+
defaultBadgeLoadError: string;
|
|
1726
|
+
notices: string;
|
|
1727
|
+
noticesDescription: string;
|
|
1728
|
+
noticesKeywords: string;
|
|
1729
|
+
browserNotices: string;
|
|
1730
|
+
browserNoticesDescription: string;
|
|
1731
|
+
browserNoticesDenied: string;
|
|
1732
|
+
browserNoticesUnsupported: string;
|
|
1733
|
+
noticeOpen: string;
|
|
1734
|
+
sync: string;
|
|
1735
|
+
syncDescription: string;
|
|
1736
|
+
syncKeywords: string;
|
|
1737
|
+
syncSynced: string;
|
|
1738
|
+
syncSaving: string;
|
|
1739
|
+
syncLocal: string;
|
|
1740
|
+
syncError: string;
|
|
1741
|
+
syncNow: string;
|
|
1742
|
+
};
|
|
1743
|
+
protected readonly tokens: {
|
|
1744
|
+
unavailable: string;
|
|
1745
|
+
created: string;
|
|
1746
|
+
sendHeader: string;
|
|
1747
|
+
copyToken: string;
|
|
1748
|
+
saved: string;
|
|
1749
|
+
loading: string;
|
|
1750
|
+
expiredOn: string;
|
|
1751
|
+
expiresOn: string;
|
|
1752
|
+
lastUsed: string;
|
|
1753
|
+
never: string;
|
|
1754
|
+
revoke: string;
|
|
1755
|
+
confirmRevoke: string;
|
|
1756
|
+
empty: string;
|
|
1757
|
+
noBadges: string;
|
|
1758
|
+
appOnly: string;
|
|
1759
|
+
accessLevel: string;
|
|
1760
|
+
name: string;
|
|
1761
|
+
namePlaceholder: string;
|
|
1762
|
+
nameRequired: string;
|
|
1763
|
+
nameMax: string;
|
|
1764
|
+
validity: string;
|
|
1765
|
+
days30: string;
|
|
1766
|
+
days90: string;
|
|
1767
|
+
months6: string;
|
|
1768
|
+
year1: string;
|
|
1769
|
+
create: string;
|
|
1770
|
+
cancel: string;
|
|
1771
|
+
newToken: string;
|
|
1772
|
+
validCount: string;
|
|
1773
|
+
limit: string;
|
|
1774
|
+
loadError: string;
|
|
1775
|
+
badgesError: string;
|
|
1776
|
+
createError: string;
|
|
1777
|
+
copied: string;
|
|
1778
|
+
copyFailed: string;
|
|
1779
|
+
revoked: string;
|
|
1780
|
+
revokeError: string;
|
|
1781
|
+
};
|
|
1782
|
+
protected readonly fmt: typeof formatMessage;
|
|
1783
|
+
private readonly service;
|
|
1784
|
+
private readonly toast;
|
|
1785
|
+
private readonly preferences;
|
|
1786
|
+
protected readonly available: boolean;
|
|
1787
|
+
protected readonly servers: readonly SpineMcpServer[];
|
|
1788
|
+
protected readonly open: _angular_core.WritableSignal<boolean>;
|
|
1789
|
+
protected readonly starting: _angular_core.WritableSignal<boolean>;
|
|
1790
|
+
protected readonly submitting: _angular_core.WritableSignal<boolean>;
|
|
1791
|
+
protected readonly selected: _angular_core.WritableSignal<ReadonlySet<string>>;
|
|
1792
|
+
protected readonly access: _angular_core.WritableSignal<"read" | "write">;
|
|
1793
|
+
protected readonly badges: _angular_core.WritableSignal<{
|
|
1794
|
+
id: string;
|
|
1795
|
+
name: string;
|
|
1796
|
+
}[]>;
|
|
1797
|
+
protected readonly badgeId: _angular_core.WritableSignal<string>;
|
|
1798
|
+
protected readonly validity: _angular_core.WritableSignal<string>;
|
|
1799
|
+
/** Configuração gerada (com o token), mostrada uma única vez. */
|
|
1800
|
+
protected readonly result: _angular_core.WritableSignal<{
|
|
1801
|
+
config: string;
|
|
1802
|
+
expires: string;
|
|
1803
|
+
} | null>;
|
|
1804
|
+
protected readonly canWrite: _angular_core.Signal<boolean>;
|
|
1805
|
+
protected readonly noBadges: _angular_core.Signal<boolean>;
|
|
1806
|
+
protected readonly canSubmit: _angular_core.Signal<boolean>;
|
|
1807
|
+
protected readonly accessOptions: _angular_core.Signal<readonly SegmentedOption<string>[]>;
|
|
1808
|
+
protected readonly badgeOptions: _angular_core.Signal<readonly SegmentedOption<string>[]>;
|
|
1809
|
+
protected readonly validityOptions: _angular_core.Signal<readonly SegmentedOption<string>[]>;
|
|
1810
|
+
protected serverLabel(server: SpineMcpServer): string;
|
|
1811
|
+
protected toggleServer(name: string, checked: boolean): void;
|
|
1812
|
+
protected start(): Promise<void>;
|
|
1813
|
+
protected cancel(): void;
|
|
1814
|
+
protected generate(): Promise<void>;
|
|
1815
|
+
protected copy(): Promise<void>;
|
|
1816
|
+
protected done(): void;
|
|
1817
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<AiAgentComponent, never>;
|
|
1818
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<AiAgentComponent, "spine-ai-agent", never, {}, {}, never, never, true, never>;
|
|
1819
|
+
}
|
|
1820
|
+
|
|
1821
|
+
/** Limites de "Encerrar por inatividade" já resolvidos a partir de `SpineFeatures.idleTimeout`. */
|
|
1822
|
+
interface SpineIdleLimits {
|
|
1823
|
+
enabled: boolean;
|
|
1824
|
+
/** Minutos mínimos (0 = sem mínimo). */
|
|
1825
|
+
min: number;
|
|
1826
|
+
/** Minutos máximos (0 = sem máximo; com máximo a opção "Nunca" some). */
|
|
1827
|
+
max: number;
|
|
1828
|
+
/** Opções oferecidas (0 = nunca), já filtradas pelos limites. */
|
|
1829
|
+
options: readonly number[];
|
|
1830
|
+
}
|
|
1831
|
+
/** Opções e limites de inatividade do app. Sem o recurso, `enabled` é falso e não há opções. */
|
|
1832
|
+
declare function idleLimits(features: SpineFeatures | undefined): SpineIdleLimits;
|
|
1833
|
+
/** Minutos que valem de fato: a escolha da pessoa dentro dos limites do app (0 = não encerra). */
|
|
1834
|
+
declare function effectiveIdleMinutes(chosen: number, limits: SpineIdleLimits): number;
|
|
1835
|
+
|
|
1836
|
+
/** Segundos de aviso antes de encerrar. */
|
|
1837
|
+
declare const SPINE_IDLE_WARNING_SECONDS = 60;
|
|
1838
|
+
/**
|
|
1839
|
+
* Encerrar por inatividade (`SpineFeatures.idleTimeout`): conta o tempo sem uso (ponteiro, teclado, rolagem) em
|
|
1840
|
+
* TODAS as abas do app — a última atividade vai para o `localStorage` (`hermes_<clientId>_last_activity`) e cada aba
|
|
1841
|
+
* confere a mais recente —, abre o aviso com contagem regressiva `SPINE_IDLE_WARNING_SECONDS` antes do fim e, se
|
|
1842
|
+
* ninguém responder, sai pelo `SpineLogoutService` (o mesmo "Sair" do menu). Com o aviso aberto, só "Continuar
|
|
1843
|
+
* conectado" (ou atividade em outra aba) mantém a sessão: mexer o ponteiro sobre o aviso não conta.
|
|
1844
|
+
*
|
|
1845
|
+
* Os minutos vêm do `SpinePreferencesService.idleMinutes`, limitados pelo app (`effectiveIdleMinutes`). Ligado pelo
|
|
1846
|
+
* `LayoutComponent` (só existe com sessão); não faz nada fora do navegador.
|
|
1847
|
+
*/
|
|
1848
|
+
declare class SpineIdleService {
|
|
1849
|
+
private readonly browser;
|
|
1850
|
+
private readonly zone;
|
|
1851
|
+
private readonly preferences;
|
|
1852
|
+
private readonly logoutService;
|
|
1853
|
+
private readonly config;
|
|
1854
|
+
private readonly storageKey;
|
|
1855
|
+
readonly limits: _trismegisto_spine_layout.SpineIdleLimits;
|
|
1856
|
+
/** Minutos que valem agora (0 = não encerra). */
|
|
1857
|
+
readonly minutes: _angular_core.Signal<number>;
|
|
1858
|
+
/** Aviso aberto. */
|
|
1859
|
+
readonly warning: _angular_core.WritableSignal<boolean>;
|
|
1860
|
+
/** Segundos que faltam, enquanto o aviso está aberto. */
|
|
1861
|
+
readonly secondsLeft: _angular_core.WritableSignal<number>;
|
|
1862
|
+
private lastActivity;
|
|
1863
|
+
private lastWrite;
|
|
1864
|
+
private timer;
|
|
1865
|
+
private expiring;
|
|
1866
|
+
/** Ligado por `start()` (o layout, que só existe com sessão). */
|
|
1867
|
+
private readonly active;
|
|
1868
|
+
private readonly onActivity;
|
|
1869
|
+
constructor();
|
|
1870
|
+
/** Liga a contagem (idempotente). Para sozinha quando a escolha vira "Nunca". */
|
|
1871
|
+
start(): void;
|
|
1872
|
+
/** "Continuar conectado": fecha o aviso e recomeça a contagem. */
|
|
1873
|
+
stay(): void;
|
|
1874
|
+
/** "Sair agora". */
|
|
1875
|
+
logoutNow(): void;
|
|
1876
|
+
/** Conta uma atividade agora (e a grava para as outras abas no máximo a cada 5 s, ou já, com `force`). */
|
|
1877
|
+
touch(force?: boolean): void;
|
|
1878
|
+
/** Confere o tempo sem uso: abre o aviso, atualiza a contagem ou encerra. Exposto para os testes. */
|
|
1879
|
+
check(now?: number): void;
|
|
1880
|
+
private storedActivity;
|
|
1881
|
+
private run;
|
|
1882
|
+
private stop;
|
|
1883
|
+
private expire;
|
|
1884
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpineIdleService, never>;
|
|
1885
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SpineIdleService>;
|
|
1886
|
+
}
|
|
1887
|
+
|
|
1888
|
+
/**
|
|
1889
|
+
* Aviso de "Encerrar por inatividade" (`SpineIdleService`): contagem regressiva, "Continuar conectado" (padrão, e o
|
|
1890
|
+
* que fechar pelo X/Esc faz) e "Sair agora". Montado uma vez no `spine-layout`.
|
|
1891
|
+
*/
|
|
1892
|
+
declare class SpineIdleWarningComponent {
|
|
1893
|
+
protected readonly idle: SpineIdleService;
|
|
1894
|
+
private readonly messages;
|
|
1895
|
+
protected readonly text: {
|
|
1896
|
+
aiAgent: string;
|
|
1897
|
+
aiAgentDescription: string;
|
|
1898
|
+
aiAgentKeywords: string;
|
|
1899
|
+
aiAgentHelp: string;
|
|
1900
|
+
aiAgentStart: string;
|
|
1901
|
+
aiAgentServers: string;
|
|
1902
|
+
aiAgentAccess: string;
|
|
1903
|
+
aiAgentReadOnly: string;
|
|
1904
|
+
aiAgentReadWrite: string;
|
|
1905
|
+
aiAgentWriteHint: string;
|
|
1906
|
+
aiAgentReadOnlyServer: string;
|
|
1907
|
+
aiAgentTokenName: string;
|
|
1908
|
+
aiAgentGenerate: string;
|
|
1909
|
+
aiAgentSelectServer: string;
|
|
1910
|
+
aiAgentResult: string;
|
|
1911
|
+
aiAgentResultHint: string;
|
|
1912
|
+
aiAgentCopy: string;
|
|
1913
|
+
aiAgentCopied: string;
|
|
1914
|
+
aiAgentDone: string;
|
|
1915
|
+
aiAgentCreateError: string;
|
|
1916
|
+
aiAgentUnavailable: string;
|
|
1917
|
+
activity: string;
|
|
1918
|
+
activityDescription: string;
|
|
1919
|
+
activityKeywords: string;
|
|
1920
|
+
activityFilter: string;
|
|
1921
|
+
activityAll: string;
|
|
1922
|
+
activityFailures: string;
|
|
1923
|
+
activityDetail: string;
|
|
1924
|
+
activityApp: string;
|
|
1925
|
+
activityEmpty: string;
|
|
1926
|
+
activityMore: string;
|
|
1927
|
+
activityShowing: string;
|
|
1928
|
+
activityLoadError: string;
|
|
1929
|
+
unknownIp: string;
|
|
1930
|
+
unknownApp: string;
|
|
1931
|
+
idle: string;
|
|
1932
|
+
idleDescription: string;
|
|
1933
|
+
idleKeywords: string;
|
|
1934
|
+
idleNever: string;
|
|
1935
|
+
idleOption: string;
|
|
1936
|
+
idleLimitHint: string;
|
|
1937
|
+
idleWarningHeading: string;
|
|
1938
|
+
idleWarningText: _trismegisto_primitives.PluralMessage;
|
|
1939
|
+
idleStay: string;
|
|
1940
|
+
idleLogout: string;
|
|
1941
|
+
startPage: string;
|
|
1942
|
+
startPageDescription: string;
|
|
1943
|
+
startPageKeywords: string;
|
|
1944
|
+
startHome: string;
|
|
1945
|
+
startLast: string;
|
|
1946
|
+
startFavorite: string;
|
|
1947
|
+
startPageHint: string;
|
|
1948
|
+
defaultBadge: string;
|
|
1949
|
+
defaultBadgeDescription: string;
|
|
1950
|
+
defaultBadgeKeywords: string;
|
|
1951
|
+
defaultBadgeAuto: string;
|
|
1952
|
+
defaultBadgeSaved: string;
|
|
1953
|
+
defaultBadgeError: string;
|
|
1954
|
+
defaultBadgeLoadError: string;
|
|
1955
|
+
notices: string;
|
|
1956
|
+
noticesDescription: string;
|
|
1957
|
+
noticesKeywords: string;
|
|
1958
|
+
browserNotices: string;
|
|
1959
|
+
browserNoticesDescription: string;
|
|
1960
|
+
browserNoticesDenied: string;
|
|
1961
|
+
browserNoticesUnsupported: string;
|
|
1962
|
+
noticeOpen: string;
|
|
1963
|
+
sync: string;
|
|
1964
|
+
syncDescription: string;
|
|
1965
|
+
syncKeywords: string;
|
|
1966
|
+
syncSynced: string;
|
|
1967
|
+
syncSaving: string;
|
|
1968
|
+
syncLocal: string;
|
|
1969
|
+
syncError: string;
|
|
1970
|
+
syncNow: string;
|
|
1971
|
+
};
|
|
1972
|
+
protected readonly countdown: _angular_core.Signal<string>;
|
|
1973
|
+
protected onOpenChange(open: boolean): void;
|
|
1974
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpineIdleWarningComponent, never>;
|
|
1975
|
+
static ɵcmp: _angular_core.ɵɵComponentDeclaration<SpineIdleWarningComponent, "spine-idle-warning", never, {}, {}, never, never, true, never>;
|
|
1976
|
+
}
|
|
1977
|
+
|
|
1978
|
+
/** Caminho interno seguro (`/x`, nunca `//host` nem `http:`). */
|
|
1979
|
+
declare function isInternalPath(url: unknown): url is string;
|
|
1980
|
+
/**
|
|
1981
|
+
* Tela inicial (`SpineFeatures.startPage`): para onde o app vai depois do login quando a pessoa não pediu uma URL
|
|
1982
|
+
* (`/callback` sem URL de retorno, ou com `/` ou `/home`) — o início do app, um favorito ou a última tela visitada.
|
|
1983
|
+
*
|
|
1984
|
+
* A última tela fica no `SpineUserStorage` (`lastPage`, por usuário) e só é gravada enquanto a escolha for
|
|
1985
|
+
* "Última tela visitada" (`track()`, ligado pelo `LayoutComponent`); ao contrário dos recentes, ela fica no logout.
|
|
1986
|
+
*/
|
|
1987
|
+
declare class SpineStartPageService {
|
|
1988
|
+
private readonly browser;
|
|
1989
|
+
private readonly injector;
|
|
1990
|
+
private readonly destroyRef;
|
|
1991
|
+
private readonly preferences;
|
|
1992
|
+
private readonly storage;
|
|
1993
|
+
readonly enabled: boolean;
|
|
1994
|
+
private tracking;
|
|
1995
|
+
/** Grava a URL de cada navegação enquanto a escolha for "Última tela visitada" (idempotente). */
|
|
1996
|
+
track(): void;
|
|
1997
|
+
/** Guarda `url` como última tela (só com a escolha "Última tela visitada"). */
|
|
1998
|
+
remember(url: string): void;
|
|
1999
|
+
/** Destino da tela inicial escolhida, ou `null` (início do app, recurso desligado ou favorito que sumiu). */
|
|
2000
|
+
target(): string | null;
|
|
2001
|
+
/** `true` quando o login não pediu uma URL própria (aí a tela inicial manda). */
|
|
2002
|
+
static isDefaultReturn(returnUrl: string | null): boolean;
|
|
2003
|
+
static ɵfac: _angular_core.ɵɵFactoryDeclaration<SpineStartPageService, never>;
|
|
2004
|
+
static ɵprov: _angular_core.ɵɵInjectableDeclaration<SpineStartPageService>;
|
|
2005
|
+
}
|
|
2006
|
+
|
|
1187
2007
|
/** Documento de uma tela que a pessoa logada pode abrir. */
|
|
1188
2008
|
interface DocsEntry extends RouteDocument {
|
|
1189
2009
|
/** Chave da tela (router_id ou, sem ele, o do template), sempre em minúsculas. */
|
|
@@ -1293,6 +2113,6 @@ declare const SPINE_MARKDOWN_PURIFY_CONFIG: Config;
|
|
|
1293
2113
|
/** HTML limpo pelo perfil do spine, ou `null` quando não há DOM (SSR: melhor não renderizar). */
|
|
1294
2114
|
declare function sanitizeSpineMarkdownHtml(html: string): string | null;
|
|
1295
2115
|
|
|
1296
|
-
export { AppLauncherComponent, HeaderComponent, LayoutComponent, OnboardingOverlayComponent, OnboardingService, SPINE_BRAND, SPINE_MARKDOWN_PURIFY_CONFIG, SPINE_SETTINGS_KEYS, SPINE_SETTINGS_SECTIONS, SettingsPanelComponent, ShortcutService, ShortcutsCheatsheetComponent, SidebarComponent, SpineAccountSecurityService, SpineAppTokensService, SpineBrandComponent, SpineConnectionBannerComponent, SpineDocsComponent, SpineDocsService, SpineLogoutService, SpineMarkdownComponent, SpineNewsComponent, SpineNewsService, SpineSettingsService, accountErrorCode, argosAccountApi, findTourTarget, provideSettingsSection, sanitizeSpineMarkdownHtml };
|
|
1297
|
-
export type { AccountMethod, AccountOverview, AccountReauth, AccountSession, AppToken, AppTokenList, AppTokenOptions, CreatedAppToken, DocsEntry, DocsGroup, DocsView, OnboardingState, OnboardingStep, ShortcutActions, ShortcutGroup, ShortcutGroupId, ShortcutItem, SpineSettingsSection };
|
|
2116
|
+
export { AiAgentComponent, AppLauncherComponent, HeaderComponent, LayoutComponent, OnboardingOverlayComponent, OnboardingService, SPINE_BRAND, SPINE_IDLE_WARNING_SECONDS, SPINE_MARKDOWN_PURIFY_CONFIG, SPINE_PREFERENCES_SAVE_DELAY_MS, SPINE_SETTINGS_ALIASES, SPINE_SETTINGS_KEYS, SPINE_SETTINGS_SECTIONS, SettingsPanelComponent, ShortcutService, ShortcutsCheatsheetComponent, SidebarComponent, SpineAccountPreferencesService, SpineAccountSecurityService, SpineAppTokensService, SpineBrandComponent, SpineConnectionBannerComponent, SpineDocsComponent, SpineDocsService, SpineIdleService, SpineIdleWarningComponent, SpineLogoutService, SpineMarkdownComponent, SpineNewsComponent, SpineNewsService, SpineNoticesService, SpineSettingsService, SpineStartPageService, accountErrorCode, argosAccountApi, buildMcpConfig, effectiveIdleMinutes, findTourTarget, idleLimits, isInternalPath, provideSettingsSection, resolveSettingsSection, sanitizeSpineMarkdownHtml, stable };
|
|
2117
|
+
export type { AccountActivityEntry, AccountActivityPage, AccountBadges, AccountMethod, AccountOverview, AccountPreferences, AccountReauth, AccountSession, AppToken, AppTokenList, AppTokenOptions, CreatedAppToken, DocsEntry, DocsGroup, DocsView, OnboardingState, OnboardingStep, ShortcutActions, ShortcutGroup, ShortcutGroupId, ShortcutItem, SpineAccountPreferencesDoc, SpineAccountPreferencesStatus, SpineIdleLimits, SpineNotice, SpineNoticePermission, SpineSettingsSection };
|
|
1298
2118
|
//# sourceMappingURL=trismegisto-spine-layout.d.ts.map
|