@ai-ecoverse/slicc-spectrum 1.86.7 → 1.87.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 +4 -1
- package/dist/{chunk-X4C3AZJT.js → chunk-VRFAMBWK.js} +12 -2
- package/dist/chunk-VRFAMBWK.js.map +7 -0
- package/dist/slicc-dummy.js +23 -3
- package/dist/slicc-dummy.js.map +2 -2
- package/dist/slicc-kernel-model.js +1 -1
- package/dist/slicc-ui.js +112 -18
- package/dist/slicc-ui.js.map +3 -3
- package/dist/types/app/messages.d.ts +9 -1
- package/dist/types/app/settings.d.ts +1 -0
- package/dist/types/dummy/index.d.ts +2 -1
- package/dist/types/dummy/settings.d.ts +6 -1
- package/dist/types/model/types.d.ts +2 -0
- package/package.json +2 -2
- package/dist/chunk-X4C3AZJT.js.map +0 -7
|
@@ -29,6 +29,7 @@ import '@adobe/spectrum-wc-icons/swc-icon-search.js';
|
|
|
29
29
|
import '@adobe/spectrum-wc-icons/swc-icon-tools.js';
|
|
30
30
|
import '@adobe/spectrum-wc-icons/swc-icon-user-group.js';
|
|
31
31
|
import '@adobe/spectrum-wc-icons/swc-icon-web-page.js';
|
|
32
|
+
import '@spectrum-web-components/help-text/sp-help-text.js';
|
|
32
33
|
import { nothing, type TemplateResult } from 'lit';
|
|
33
34
|
import type { AssistantMessage, ErrorAction, LickChannel, LickMessage, LickState, Message, MessagePart, Question, Seat, SliccModel, SystemMessage, ToolCall, ToolMessage, ToolStatus, UserMessage } from '../model/types.js';
|
|
34
35
|
import type { ViewSet } from './view-state.js';
|
|
@@ -38,7 +39,9 @@ export interface Handlers {
|
|
|
38
39
|
readOnly: boolean;
|
|
39
40
|
answer(questionId: string, answer: string): void;
|
|
40
41
|
resolve(messageId: string, state: Exclude<LickState, 'pending'>): void;
|
|
41
|
-
action(action: ErrorAction, messageId?: string): void;
|
|
42
|
+
action(action: ErrorAction, messageId?: string, account?: string): void;
|
|
43
|
+
login?(account: string, messageId: string): Login | undefined;
|
|
44
|
+
cancelLogin?(account: string, messageId: string): void;
|
|
42
45
|
dropping(messageId: string): number;
|
|
43
46
|
open(path: string): void;
|
|
44
47
|
show(surfaceId: string): void;
|
|
@@ -48,6 +51,11 @@ export interface Handlers {
|
|
|
48
51
|
seat?: string;
|
|
49
52
|
licks?: ViewSet;
|
|
50
53
|
}
|
|
54
|
+
export interface Login {
|
|
55
|
+
state: 'idle' | 'signing-in' | 'connected';
|
|
56
|
+
error?: string;
|
|
57
|
+
cancel?: boolean;
|
|
58
|
+
}
|
|
51
59
|
export interface Owner {
|
|
52
60
|
id?: string;
|
|
53
61
|
at: number;
|
|
@@ -42,6 +42,7 @@ export declare class SliccSettings extends ThemedElement {
|
|
|
42
42
|
static styles: import("lit").CSSResult[];
|
|
43
43
|
protected subscribe(model: SliccModel): Array<() => void>;
|
|
44
44
|
focus(): void;
|
|
45
|
+
reveal(section: string): void;
|
|
45
46
|
connect(id: string, secret?: string, fields?: Record<string, string>): Promise<void>;
|
|
46
47
|
keep(account: Account, value: string, fields?: Record<string, string>): Promise<void>;
|
|
47
48
|
get busyReason(): string | null;
|
|
@@ -35,6 +35,7 @@ export interface DummyOptions {
|
|
|
35
35
|
browser?: BrowserScenario;
|
|
36
36
|
sprinkles?: 'builtin' | 'cones';
|
|
37
37
|
monitor?: 'dummy' | 'agent';
|
|
38
|
+
login?: 'ok' | 'fail';
|
|
38
39
|
}
|
|
39
40
|
export interface DummyModel extends SliccModel {
|
|
40
41
|
browser: DummyBrowser;
|
|
@@ -48,4 +49,4 @@ export interface DummyModel extends SliccModel {
|
|
|
48
49
|
guests?: DummyGuests;
|
|
49
50
|
}
|
|
50
51
|
export declare function vaultAccounts(accounts: readonly Account[]): Account[];
|
|
51
|
-
export declare function createDummyModel({ delay, storage, updates, packages, confirm, mounts, network, tailnet, links, leaders, changes, notices, tabs, approvals, follow, vault, guests, accounts, providers, hold, readonly, browser: scenario, sprinkles, monitor, }?: DummyOptions): DummyModel;
|
|
52
|
+
export declare function createDummyModel({ delay, storage, updates, packages, confirm, mounts, network, tailnet, links, leaders, changes, notices, tabs, approvals, follow, vault, guests, accounts, providers, hold, readonly, browser: scenario, sprinkles, monitor, login, }?: DummyOptions): DummyModel;
|
|
@@ -2,9 +2,14 @@ import { Emitter } from '../model/emitter.js';
|
|
|
2
2
|
import type { Account, ModelOption, Settings, SettingsEvents, SettingsPort } from '../model/types.js';
|
|
3
3
|
import type { Clock } from './clock.js';
|
|
4
4
|
export declare const dummySettingsKey = "slicc-ui.settings";
|
|
5
|
+
export declare const signInClosed = "The sign-in window was closed before it finished.";
|
|
5
6
|
export declare class DummySettings extends Emitter<SettingsEvents> implements SettingsPort {
|
|
6
7
|
#private;
|
|
7
|
-
|
|
8
|
+
readonly connects: Array<{
|
|
9
|
+
id: string;
|
|
10
|
+
gesture: boolean | null;
|
|
11
|
+
}>;
|
|
12
|
+
constructor(defaults: Settings, models: readonly ModelOption[], accounts: readonly Account[], storage: Storage | null, clock: Clock, keys?: readonly string[], gated?: boolean, login?: 'ok' | 'fail');
|
|
8
13
|
get(): Settings;
|
|
9
14
|
update(patch: Partial<Settings>): void;
|
|
10
15
|
models(): readonly ModelOption[];
|
|
@@ -146,6 +146,7 @@ export type MessagePart = {
|
|
|
146
146
|
message: string;
|
|
147
147
|
detail?: string;
|
|
148
148
|
action?: ErrorAction;
|
|
149
|
+
account?: string;
|
|
149
150
|
};
|
|
150
151
|
export type SendMode = 'send' | 'steer' | 'queue';
|
|
151
152
|
export type DeliveredAs = 'run' | 'steer' | 'follow-up';
|
|
@@ -192,6 +193,7 @@ export interface SystemMessage {
|
|
|
192
193
|
trigger?: 'threshold' | 'overflow' | 'idle' | 'manual';
|
|
193
194
|
state?: CompactionState;
|
|
194
195
|
action?: ErrorAction;
|
|
196
|
+
account?: string;
|
|
195
197
|
}
|
|
196
198
|
export interface ToolMessage {
|
|
197
199
|
id: string;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-ecoverse/slicc-spectrum",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.87.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",
|
|
@@ -73,7 +73,7 @@
|
|
|
73
73
|
"devDependencies": {
|
|
74
74
|
"@adobe/spectrum-wc": "2.0.0-beta.5",
|
|
75
75
|
"@adobe/spectrum-wc-icons": "2.0.0-beta.5",
|
|
76
|
-
"@ai-ecoverse/slicc-kernel": "1.125.
|
|
76
|
+
"@ai-ecoverse/slicc-kernel": "1.125.10",
|
|
77
77
|
"@ai-ecoverse/slicc-shared-web": "1.24.2",
|
|
78
78
|
"@ai-ecoverse/slicc-vault": "1.9.2",
|
|
79
79
|
"@ai-ecoverse/wasm-bash": "5.3.0-20",
|
|
@@ -1,7 +0,0 @@
|
|
|
1
|
-
{
|
|
2
|
-
"version": 3,
|
|
3
|
-
"sources": ["../src/dummy/clock.ts", "../src/dummy/settings.ts"],
|
|
4
|
-
"sourcesContent": ["export interface Clock {\n delay: number;\n sleep(ticks?: number): Promise<void>;\n}\n\nexport function clock(delay: number): Clock {\n return {\n delay,\n sleep: (ticks = 1) => new Promise((resolve) => setTimeout(resolve, delay * ticks)),\n };\n}\n", "import { Emitter } from '../model/emitter.ts';\nimport type {\n Account,\n AccountStatus,\n ModelOption,\n Settings,\n SettingsEvents,\n SettingsPort,\n} from '../model/types.ts';\nimport type { Clock } from './clock.ts';\n\nexport const dummySettingsKey = 'slicc-ui.settings';\n\nexport class DummySettings extends Emitter<SettingsEvents> implements SettingsPort {\n #settings: Settings;\n #accounts: Account[];\n #models: readonly ModelOption[];\n #storage: Storage | null;\n #clock: Clock;\n #keys: readonly string[];\n #signIns = new Map<string, { before: AccountStatus; stop: () => void }>();\n #gated: boolean;\n\n constructor(\n defaults: Settings,\n models: readonly ModelOption[],\n accounts: readonly Account[],\n storage: Storage | null,\n clock: Clock,\n keys: readonly string[] = [dummySettingsKey],\n gated = false\n ) {\n super();\n this.#gated = gated;\n this.#keys = keys;\n this.#storage = storage;\n this.#clock = clock;\n this.#models = models;\n this.#accounts = accounts.map((account) => ({ ...account }));\n this.#settings = { ...defaults, ...this.#load() };\n }\n\n #load(): Partial<Settings> {\n try {\n const saved = this.#keys\n .map((key) => this.#storage?.getItem(key))\n .find((value) => value != null);\n return JSON.parse(saved ?? '{}');\n } catch {\n return {};\n }\n }\n\n get(): Settings {\n return { ...this.#settings };\n }\n\n update(patch: Partial<Settings>): void {\n this.#settings = { ...this.#settings, ...patch };\n this.#storage?.setItem(this.#keys[0], JSON.stringify(this.#settings));\n this.emit('settings', this.get());\n }\n\n models(): readonly ModelOption[] {\n if (!this.#gated) return this.#models;\n const live = new Set(\n this.#accounts\n .filter((account) => account.status === 'connected')\n .map((account) => account.provider)\n );\n return this.#models.filter((option) => live.has(option.provider));\n }\n\n accounts(): readonly Account[] {\n return this.#accounts.map((account) => ({ ...account }));\n }\n\n #set(id: string, patch: Partial<Account>): void {\n this.#accounts = this.#accounts.map((account) =>\n account.id === id ? { ...account, ...patch } : account\n );\n this.emit('accounts', this.accounts());\n }\n\n async connect(id: string, secret?: string): Promise<void> {\n const account = this.#accounts.find((candidate) => candidate.id === id);\n if (account && account.auth !== 'api-key' && !(await this.#signIn(account))) return;\n if (account?.auth === 'api-key' || !account) await this.#clock.sleep(10);\n if (account?.auth === 'api-key' && account.store !== 'vault' && !secret)\n throw new Error(\n `${account.provider} needs ${account.secret === 'token' ? 'a token' : 'an API key'}`\n );\n const identity =\n account?.group === 'mcp'\n ? account.identity\n : account?.auth === 'api-key'\n ? 'API key'\n : account?.identity || `${id}-user@example.com`;\n this.#set(id, { status: 'connected', identity });\n }\n\n #signIn(account: Account): Promise<boolean> {\n const before = this.#signIns.get(account.id)?.before ?? account.status;\n this.#signIns.get(account.id)?.stop();\n this.#set(account.id, { status: 'signing-in' });\n return new Promise((resolve) => {\n const stop = () => {\n this.#signIns.delete(account.id);\n this.#set(account.id, { status: before });\n resolve(false);\n };\n this.#signIns.set(account.id, { before, stop });\n void this.#clock.sleep(100).then(() => {\n if (this.#signIns.get(account.id)?.stop !== stop) return;\n this.#signIns.delete(account.id);\n resolve(true);\n });\n });\n }\n\n cancel(id: string): void {\n this.#signIns.get(id)?.stop();\n }\n\n disconnect(id: string): void {\n this.#set(id, { status: 'disconnected' });\n }\n}\n"],
|
|
5
|
-
"mappings": "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",
|
|
6
|
-
"names": ["clock"]
|
|
7
|
-
}
|