@ai-ecoverse/slicc-spectrum 2.4.1 → 2.5.0
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 +11 -8
- package/dist/slicc-dummy.js +79 -8
- package/dist/slicc-dummy.js.map +2 -2
- package/dist/slicc-ui.js +482 -29
- package/dist/slicc-ui.js.map +3 -3
- package/dist/types/app/composer.d.ts +13 -0
- package/dist/types/app/secrets.d.ts +10 -0
- package/dist/types/app/settings.d.ts +13 -1
- package/dist/types/app/vault.d.ts +7 -1
- package/dist/types/dummy/index.d.ts +2 -1
- package/dist/types/dummy/vault.d.ts +4 -1
- package/dist/types/model/types.d.ts +21 -2
- package/dist/types/ui.d.ts +1 -0
- package/package.json +2 -2
|
@@ -91,6 +91,12 @@ export declare class SliccComposer extends ThemedElement {
|
|
|
91
91
|
secretField: {
|
|
92
92
|
state: boolean;
|
|
93
93
|
};
|
|
94
|
+
secretName: {
|
|
95
|
+
state: boolean;
|
|
96
|
+
};
|
|
97
|
+
entry: {
|
|
98
|
+
state: boolean;
|
|
99
|
+
};
|
|
94
100
|
failure: {
|
|
95
101
|
state: boolean;
|
|
96
102
|
};
|
|
@@ -108,6 +114,12 @@ export declare class SliccComposer extends ThemedElement {
|
|
|
108
114
|
sharing: boolean;
|
|
109
115
|
secretError: string | null;
|
|
110
116
|
secretField: string | null;
|
|
117
|
+
secretName: string;
|
|
118
|
+
entry: {
|
|
119
|
+
request: string;
|
|
120
|
+
name: string;
|
|
121
|
+
vault: VaultPort;
|
|
122
|
+
} | null;
|
|
111
123
|
failure: string | null;
|
|
112
124
|
reattach: Kept[] | null;
|
|
113
125
|
agent: string;
|
|
@@ -128,6 +140,7 @@ export declare class SliccComposer extends ThemedElement {
|
|
|
128
140
|
screenshot(): Promise<void>;
|
|
129
141
|
attachPath(path: string): Promise<void>;
|
|
130
142
|
shareSecret(name: string, field?: HTMLInputElement | null): Promise<void>;
|
|
143
|
+
enterSecret(name: string, replace?: boolean): Promise<void>;
|
|
131
144
|
closeSecret(): void;
|
|
132
145
|
openPopup(kind: 'file' | 'secret'): void;
|
|
133
146
|
pick(choice: Choice): void;
|
|
@@ -106,6 +106,9 @@ export declare class SliccSecrets extends ThemedElement {
|
|
|
106
106
|
said: {
|
|
107
107
|
state: boolean;
|
|
108
108
|
};
|
|
109
|
+
entry: {
|
|
110
|
+
state: boolean;
|
|
111
|
+
};
|
|
109
112
|
acting: {
|
|
110
113
|
state: boolean;
|
|
111
114
|
};
|
|
@@ -139,6 +142,12 @@ export declare class SliccSecrets extends ThemedElement {
|
|
|
139
142
|
problem: string | null;
|
|
140
143
|
invalid: string | null;
|
|
141
144
|
said: Said | null;
|
|
145
|
+
entry: {
|
|
146
|
+
request: string;
|
|
147
|
+
form: SecretForm;
|
|
148
|
+
vault: VaultPort;
|
|
149
|
+
name: string;
|
|
150
|
+
} | null;
|
|
142
151
|
acting: ReadonlySet<string>;
|
|
143
152
|
importKind: ImportKind;
|
|
144
153
|
candidates: readonly ImportCandidate[] | null;
|
|
@@ -151,6 +160,7 @@ export declare class SliccSecrets extends ThemedElement {
|
|
|
151
160
|
protected updated(): void;
|
|
152
161
|
protected subscribe(model: SliccModel): Array<() => void>;
|
|
153
162
|
open(form: SecretForm | null): void;
|
|
163
|
+
next(vault: VaultPort): Promise<void>;
|
|
154
164
|
save(vault: VaultPort): Promise<void>;
|
|
155
165
|
removeSecret(vault: VaultPort, secret: SecretView, trigger?: HTMLElement | null): Promise<void>;
|
|
156
166
|
restoreSecret(vault: VaultPort, secret: SecretView): Promise<void>;
|
|
@@ -10,8 +10,14 @@ import '@adobe/spectrum-wc-icons/swc-icon-checkmark.js';
|
|
|
10
10
|
import '@adobe/spectrum-wc-icons/swc-icon-delete.js';
|
|
11
11
|
import '@spectrum-web-components/field-label/sp-field-label.js';
|
|
12
12
|
import { type TemplateResult } from 'lit';
|
|
13
|
-
import type { Account, ConnectOptions, McpRefusal, ProviderOption, SliccModel } from '../model/types.js';
|
|
13
|
+
import type { Account, ConnectOptions, McpRefusal, ProviderOption, SliccModel, VaultPort } from '../model/types.js';
|
|
14
14
|
import { ThemedElement } from './base.js';
|
|
15
|
+
interface KeyEntry {
|
|
16
|
+
id: string;
|
|
17
|
+
request: string;
|
|
18
|
+
fields: Record<string, string> | undefined;
|
|
19
|
+
vault: VaultPort;
|
|
20
|
+
}
|
|
15
21
|
type ServerLeft = ['record' | 'url', unknown];
|
|
16
22
|
export declare function serverLeft(account: Account, left: readonly ServerLeft[]): string;
|
|
17
23
|
type ServerField = 'name' | 'url' | 'form';
|
|
@@ -29,6 +35,9 @@ export declare class SliccSettings extends ThemedElement {
|
|
|
29
35
|
entering: {
|
|
30
36
|
state: boolean;
|
|
31
37
|
};
|
|
38
|
+
keyEntry: {
|
|
39
|
+
state: boolean;
|
|
40
|
+
};
|
|
32
41
|
failure: {
|
|
33
42
|
state: boolean;
|
|
34
43
|
};
|
|
@@ -77,6 +86,7 @@ export declare class SliccSettings extends ThemedElement {
|
|
|
77
86
|
};
|
|
78
87
|
pending: ReadonlySet<string>;
|
|
79
88
|
entering: string | null;
|
|
89
|
+
keyEntry: KeyEntry | null;
|
|
80
90
|
failure: {
|
|
81
91
|
id: string;
|
|
82
92
|
message: string;
|
|
@@ -110,6 +120,8 @@ export declare class SliccSettings extends ThemedElement {
|
|
|
110
120
|
connect(id: string, secret?: string, fields?: Record<string, string>, options?: ConnectOptions): Promise<void>;
|
|
111
121
|
keep(account: Account, value: string, fields?: Record<string, string>): Promise<void>;
|
|
112
122
|
get busyReason(): string | null;
|
|
123
|
+
disconnectedCallback(): void;
|
|
124
|
+
protected willUpdate(changed: Map<PropertyKey, unknown>): void;
|
|
113
125
|
protected updated(changed: Map<PropertyKey, unknown>): void;
|
|
114
126
|
render(): TemplateResult;
|
|
115
127
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LitElement, type PropertyValues } from 'lit';
|
|
1
|
+
import { LitElement, type PropertyValues, type TemplateResult } from 'lit';
|
|
2
2
|
import type { ButtonConfig, ExecGrant, ExecMode, ExitName, LinkedDevice, PolicyChange, PopupIntent, PopupState, Rule, SliccModel, ValueConfig, ValueEvent, VaultPort, Widening } from '../model/types.js';
|
|
3
3
|
export declare function devicesOf(model: SliccModel | null): readonly LinkedDevice[];
|
|
4
4
|
export declare function deviceName(id: string, devices: readonly LinkedDevice[]): string;
|
|
@@ -43,6 +43,12 @@ export declare class SliccVaultButton extends LitElement {
|
|
|
43
43
|
export type ValueDetail = Extract<ValueEvent, {
|
|
44
44
|
event: 'done' | 'gone' | 'error' | 'escape';
|
|
45
45
|
}>;
|
|
46
|
+
export declare function valueConfig(doc: Document, theme: 'light' | 'dark'): ValueConfig;
|
|
47
|
+
export declare function enters(vault: VaultPort | null | undefined): boolean;
|
|
48
|
+
export declare function ours(detail: ValueDetail, request: string, open: string | undefined): boolean;
|
|
49
|
+
export declare function drop(vault: VaultPort | null | undefined, request: string): void;
|
|
50
|
+
export declare function goneText(state: string): string;
|
|
51
|
+
export declare function valueField(vault: VaultPort, request: string, config: ValueConfig, on: (detail: ValueDetail, request: string) => void): TemplateResult;
|
|
46
52
|
export declare const frameHeight = 480;
|
|
47
53
|
export declare const frameInset = 4;
|
|
48
54
|
export declare class SliccVaultValue extends LitElement {
|
|
@@ -30,6 +30,7 @@ export interface DummyOptions {
|
|
|
30
30
|
notices?: NoticeScenario | 'off';
|
|
31
31
|
tabs?: TabsScenario | 'off';
|
|
32
32
|
approvals?: ApprovalScenario | 'off';
|
|
33
|
+
entry?: 'input' | 'frame';
|
|
33
34
|
asks?: 'long' | 'off';
|
|
34
35
|
live?: LiveScenario | 'off';
|
|
35
36
|
switches?: 'capture' | 'off';
|
|
@@ -69,4 +70,4 @@ export interface DummyModel extends SliccModel {
|
|
|
69
70
|
export declare function vaultAccounts(accounts: readonly Account[]): Account[];
|
|
70
71
|
export declare const docsUrl = "https://docs.example/mcp";
|
|
71
72
|
export declare const movedDocs = "https://docs.eu.example/mcp";
|
|
72
|
-
export declare function createDummyModel({ delay, storage, updates, packages, confirm, beta, mounts, network, tailnet, links, leaders, changes, notices, tabs, approvals, asks, live, switches, follow, vault, guests, accounts, providers, mcp, servers, transport, hold, readonly, agent: arrival, browser: scenario, sprinkles, monitor, import: imports, login, budget, older, }?: DummyOptions): DummyModel;
|
|
73
|
+
export declare function createDummyModel({ delay, storage, updates, packages, confirm, beta, mounts, network, tailnet, links, leaders, changes, notices, tabs, approvals, asks, live, switches, follow, vault, entry, guests, accounts, providers, mcp, servers, transport, hold, readonly, agent: arrival, browser: scenario, sprinkles, monitor, import: imports, login, budget, older, }?: DummyOptions): DummyModel;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { Emitter } from '../model/emitter.js';
|
|
2
|
-
import type { AuditEntry, AuditPage, Availability, ButtonConfig, ButtonEvent, ButtonMessage, ErrorCode, ImportKind, ImportPick, ImportResult, PendingRequest, PolicyNotice, PopupIntent, PutOptions, RecordKind, RefusedRule, RequestState, SealResult, SecretView, ValueConfig, ValueEvent, ValueMessage, VaultButton, VaultEndpointChange, VaultError, VaultEvents, VaultList, VaultPort, VaultStatus, VaultValueFrame } from '../model/types.js';
|
|
2
|
+
import type { AuditEntry, AuditPage, Availability, ButtonConfig, ButtonEvent, ButtonMessage, EnterOptions, EnterResult, ErrorCode, ImportKind, ImportPick, ImportResult, PendingRequest, PolicyNotice, PopupIntent, PutOptions, RecordKind, RefusedRule, RequestState, SealResult, SecretView, ValueConfig, ValueEvent, ValueMessage, VaultButton, VaultEndpointChange, VaultError, VaultEvents, VaultList, VaultPort, VaultStatus, VaultValueFrame } from '../model/types.js';
|
|
3
3
|
import type { Clock } from './clock.js';
|
|
4
4
|
export type VaultScenario = 'empty' | 'secrets' | 'policy' | 'notice' | 'locked' | 'paused' | 'request' | 'backup' | 'waiting' | 'purged' | 'session' | 'endpoints-fail';
|
|
5
5
|
export declare function vaultSecrets(now?: number): SecretView[];
|
|
@@ -46,6 +46,7 @@ export declare class DummyVault extends Emitter<VaultEvents> implements VaultPor
|
|
|
46
46
|
#private;
|
|
47
47
|
buttons: DummyVaultButton[];
|
|
48
48
|
frames: DummyValueFrame[];
|
|
49
|
+
entered: EnterOptions[];
|
|
49
50
|
answered: Set<string>;
|
|
50
51
|
revealed: string[];
|
|
51
52
|
puts: {
|
|
@@ -68,6 +69,7 @@ export declare class DummyVault extends Emitter<VaultEvents> implements VaultPor
|
|
|
68
69
|
status(): VaultStatus | null;
|
|
69
70
|
list(): VaultList | null;
|
|
70
71
|
availability(): Availability;
|
|
72
|
+
wait(): void;
|
|
71
73
|
arrive(): void;
|
|
72
74
|
fail(code: ErrorCode, message: string, cause?: VaultError['cause']): void;
|
|
73
75
|
acknowledge(notice: string): Promise<void>;
|
|
@@ -89,6 +91,7 @@ export declare class DummyVault extends Emitter<VaultEvents> implements VaultPor
|
|
|
89
91
|
valueFrame(request: string): DummyValueFrame;
|
|
90
92
|
hold(request: PendingRequest): void;
|
|
91
93
|
ask(request: string): PendingRequest | undefined;
|
|
94
|
+
enter?: (options: EnterOptions) => Promise<EnterResult>;
|
|
92
95
|
seal(request: string, value: string): Promise<SealResult>;
|
|
93
96
|
allow(request: string): Promise<void>;
|
|
94
97
|
autoLabel(): string;
|
|
@@ -1196,7 +1196,7 @@ export type RecordKind = 'secret' | 'grant' | 'model' | 'mcp';
|
|
|
1196
1196
|
export type RecordState = 'active' | 'inert' | 'removed';
|
|
1197
1197
|
export type RecordSource = 'settings' | 'popup' | 'process' | `jerk:${string}@${DeviceId}` | `oauth:${string}` | `import:${string}`;
|
|
1198
1198
|
export type LockMode = 'auto' | 'passkey' | 'passphrase';
|
|
1199
|
-
export type RequestKind = 'value' | 'oauth' | 'jerk-seal' | 'jerk' | 'unseal' | 'ask';
|
|
1199
|
+
export type RequestKind = 'value' | 'oauth' | 'jerk-seal' | 'jerk' | 'unseal' | 'ask' | 'enter';
|
|
1200
1200
|
export type RequestState = 'pending' | 'done' | 'cancelled' | 'expired' | 'withdrawn';
|
|
1201
1201
|
export type ErrorCode = 'EINVAL' | 'ENOENT' | 'EACCES' | 'EEXIST' | 'EAGAIN' | 'ETIMEDOUT' | 'ENOTCONN' | 'ENOTSUP';
|
|
1202
1202
|
export type ErrorCause = 'policy-paused' | 'no-placeholder' | 'url-invalid' | 'placeholder-in-url' | 'placeholder-in-header-name' | 'url-credentials' | 'insecure-destination' | 'path-ambiguous' | 'exit-encoded-bodies' | 'record-removed' | 'record-kind' | 'record-expired' | 'vault-locked' | 'no-rule' | 'rule-domain' | 'rule-request' | 'rule-exit' | 'placeholder-repeated' | 'mcp-server' | 'exit-follows-redirects' | 'value-overlaps' | 'basic-invalid' | 'basic-user' | 'header-unsafe' | 'users-off' | 'endpoint-protected' | 'endpoint-model' | 'mcp-body-framing' | 'changed';
|
|
@@ -1630,7 +1630,14 @@ export type ValueEvent = {
|
|
|
1630
1630
|
} | {
|
|
1631
1631
|
event: 'done';
|
|
1632
1632
|
request: string;
|
|
1633
|
-
state: 'sealed'
|
|
1633
|
+
state: 'sealed';
|
|
1634
|
+
name?: string;
|
|
1635
|
+
placeholder?: string;
|
|
1636
|
+
record?: RecordState;
|
|
1637
|
+
} | {
|
|
1638
|
+
event: 'done';
|
|
1639
|
+
request: string;
|
|
1640
|
+
state: 'allowed';
|
|
1634
1641
|
} | {
|
|
1635
1642
|
event: 'gone';
|
|
1636
1643
|
request: string;
|
|
@@ -1642,6 +1649,17 @@ export type ValueEvent = {
|
|
|
1642
1649
|
} | {
|
|
1643
1650
|
event: 'escape';
|
|
1644
1651
|
});
|
|
1652
|
+
export interface EnterOptions {
|
|
1653
|
+
name: string;
|
|
1654
|
+
kind?: 'secret' | 'model' | 'mcp';
|
|
1655
|
+
provider?: string;
|
|
1656
|
+
server?: string;
|
|
1657
|
+
settings?: Record<string, string>;
|
|
1658
|
+
replace?: boolean;
|
|
1659
|
+
}
|
|
1660
|
+
export interface EnterResult {
|
|
1661
|
+
request: string;
|
|
1662
|
+
}
|
|
1645
1663
|
export interface VaultValueFrame {
|
|
1646
1664
|
element: HTMLElement;
|
|
1647
1665
|
post(message: ValueMessage): void;
|
|
@@ -1681,6 +1699,7 @@ export interface VaultPort extends Subscribable<VaultEvents> {
|
|
|
1681
1699
|
settings?(name: string, kind: RecordKind, settings: Record<string, string>): Promise<void>;
|
|
1682
1700
|
button(): VaultButton;
|
|
1683
1701
|
valueFrame?(request: string): VaultValueFrame;
|
|
1702
|
+
enter?(options: EnterOptions): Promise<EnterResult>;
|
|
1684
1703
|
}
|
|
1685
1704
|
export type GuestGate = 'user' | 'cone' | 'agent' | `scoop:${string}` | 'off';
|
|
1686
1705
|
export interface GuestGates {
|
package/dist/types/ui.d.ts
CHANGED
|
@@ -37,5 +37,6 @@ export type { Listener, Subscribable } from './model/emitter.js';
|
|
|
37
37
|
export { Emitter } from './model/emitter.js';
|
|
38
38
|
export type * from './model/types.js';
|
|
39
39
|
export { isVaultFailure } from './model/values.js';
|
|
40
|
+
export declare const valueEntry = true;
|
|
40
41
|
export { approvalKinds, SliccAgents, SliccApp, SliccApprovals, SliccBrowser, SliccChanges, SliccChat, SliccCodeView, SliccComposer, SliccConfirm, SliccDiffPanel, SliccDiffView, SliccDock, SliccFiles, SliccFileTree, SliccFileView, SliccFollow, SliccFreezerImport, SliccGuestInvite, SliccLive, SliccNetwork, SliccNotices, SliccPrompt, SliccSecrets, SliccUpdates, SliccValueRequest, SliccVaultButton, SliccVaultValue, };
|
|
41
42
|
export declare function define(): void;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/slicc-spectrum",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.5.0",
|
|
4
4
|
"description": "Web components for SLICC on Spectrum Web Components: the terminal, the app shell and its surfaces",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"license": "Apache-2.0",
|
|
@@ -65,7 +65,7 @@
|
|
|
65
65
|
"@ai-ecoverse/slicc-cdp": "1.46.7",
|
|
66
66
|
"@ai-ecoverse/slicc-kernel": "1.176.0",
|
|
67
67
|
"@ai-ecoverse/slicc-shared-web": "2.13.10",
|
|
68
|
-
"@ai-ecoverse/slicc-vault": "1.
|
|
68
|
+
"@ai-ecoverse/slicc-vault": "1.24.0",
|
|
69
69
|
"@ai-ecoverse/wasm-bash": "5.3.0-23",
|
|
70
70
|
"@ai-ecoverse/wasm-coreutils": "9.12.0-15",
|
|
71
71
|
"@biomejs/biome": "2.6.4",
|