@ai-ecoverse/slicc-spectrum 1.68.3 → 1.69.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.
@@ -1,11 +1,15 @@
1
1
  import '@adobe/spectrum-wc/components/action-button/swc-action-button.js';
2
2
  import '@adobe/spectrum-wc/components/tooltip/swc-tooltip.js';
3
+ import '@adobe/spectrum-wc-icons/swc-icon-add.js';
3
4
  import '@adobe/spectrum-wc-icons/swc-icon-close.js';
4
5
  import '@adobe/spectrum-wc-icons/swc-icon-delete.js';
5
6
  import { type TemplateResult } from 'lit';
6
7
  import type { Agent, SliccModel } from '../model/types.js';
7
8
  import { ModelElement } from './base.js';
8
9
  export declare function ordered(agents: readonly Agent[]): Agent[];
10
+ export declare function creatable(model: SliccModel | null | undefined): boolean;
11
+ export declare function createCone(model: SliccModel, trigger: HTMLElement): Promise<Agent | undefined>;
12
+ export declare function fillShown(fill: number): boolean;
9
13
  export declare class SliccAgents extends ModelElement {
10
14
  #private;
11
15
  static properties: {
@@ -8,7 +8,11 @@ export declare function countdown(ms: number): string;
8
8
  export declare function asking(approval: Approval): string;
9
9
  export declare function sudo(approval: Approval): string;
10
10
  export declare const certain: (rules: string) => boolean;
11
- export declare function secretRules(approval: Approval): string | null;
11
+ export interface SecretRulesVerdict {
12
+ certain: string | null;
13
+ maybe: string | null;
14
+ }
15
+ export declare function secretRules(command: string, cwd?: string | null): SecretRulesVerdict;
12
16
  export declare function waiting(model: SliccModel | null, now: number): Approval[];
13
17
  export declare class SliccApprovals extends ModelElement {
14
18
  #private;
@@ -9,6 +9,7 @@ import '@adobe/spectrum-wc-icons/swc-icon-alert-triangle.js';
9
9
  import '@adobe/spectrum-wc-icons/swc-icon-camera.js';
10
10
  import '@adobe/spectrum-wc-icons/swc-icon-chevron-down.js';
11
11
  import '@adobe/spectrum-wc-icons/swc-icon-chevron-left.js';
12
+ import '@adobe/spectrum-wc-icons/swc-icon-chevron-right.js';
12
13
  import '@adobe/spectrum-wc-icons/swc-icon-close.js';
13
14
  import '@adobe/spectrum-wc-icons/swc-icon-code.js';
14
15
  import '@adobe/spectrum-wc-icons/swc-icon-copy.js';
@@ -32,6 +33,7 @@ export declare function since(at: number, now?: number): string;
32
33
  export declare function describe(action: BrowserAction): string;
33
34
  export declare const refresh = 10000;
34
35
  export declare const fresh = 3000;
36
+ export declare const actionPage = 50;
35
37
  export declare class SliccBrowser extends ModelElement {
36
38
  #private;
37
39
  static properties: {
@@ -20,9 +20,13 @@ export declare class SliccChat extends ThemedElement {
20
20
  dropping: {
21
21
  state: boolean;
22
22
  };
23
+ compact: {
24
+ state: boolean;
25
+ };
23
26
  };
24
27
  agent: string;
25
28
  dropping: boolean;
29
+ compact: boolean;
26
30
  constructor();
27
31
  static styles: import("lit").CSSResult[];
28
32
  protected subscribe(model: SliccModel): Array<() => void>;
@@ -0,0 +1,8 @@
1
+ import type { ModelOption, SliccModel } from '../model/types.js';
2
+ export interface ModelSwitch {
3
+ to: ModelOption;
4
+ }
5
+ export declare function fallbackModel(options: readonly ModelOption[]): ModelOption | undefined;
6
+ export declare function settleModels(model: SliccModel): void;
7
+ export declare function modelSwitch(model: SliccModel): ModelSwitch | undefined;
8
+ export declare function forgetSwitch(model: SliccModel): void;
@@ -1,13 +1,14 @@
1
1
  import { Emitter } from '../model/emitter.js';
2
2
  import type { Approval, ApprovalDecision, ApprovalEnd, ApprovalsEvents, ApprovalsPort } from '../model/types.js';
3
3
  import type { Clock } from './clock.js';
4
- export type ApprovalScenario = 'agent' | 'user' | 'many' | 'follower' | 'fail' | 'soon' | 'elsewhere' | 'withdrawn' | 'secrets';
4
+ export type ApprovalScenario = 'agent' | 'user' | 'many' | 'follower' | 'fail' | 'soon' | 'elsewhere' | 'withdrawn' | 'secrets' | 'none';
5
5
  export declare function approvalFixtures(scenario: ApprovalScenario, now?: number): Approval[];
6
6
  export declare class DummyApprovals extends Emitter<ApprovalsEvents> implements ApprovalsPort {
7
7
  #private;
8
8
  decisions: Array<[string, ApprovalDecision]>;
9
9
  decide?: (id: string, decision: ApprovalDecision) => Promise<void>;
10
10
  constructor(scenario: ApprovalScenario, time: Clock);
11
+ raise(approval: Approval): void;
11
12
  end(id: string, reason: ApprovalEnd): void;
12
13
  list(): readonly Approval[];
13
14
  }
@@ -4,6 +4,11 @@ import type { Clock } from './clock.js';
4
4
  export type BrowserScenario = 'idle' | 'driving' | 'off';
5
5
  export type ActionDraft = Omit<BrowserAction, 'id' | 'at' | 'status'> & Partial<Pick<BrowserAction, 'status' | 'at'>>;
6
6
  export declare function page(tab: BrowserTab, mark?: number): string;
7
+ export declare const actionLimits: {
8
+ perTab: number;
9
+ total: number;
10
+ age: number;
11
+ };
7
12
  export declare function browserHistory(scenario: BrowserScenario, now?: number): ActionDraft[];
8
13
  export declare const drive: readonly ActionDraft[];
9
14
  export declare class DummyBrowser extends Emitter<BrowserEvents> implements BrowserPort {
@@ -6,6 +6,7 @@ export declare const mounted: Record<string, string>;
6
6
  export declare const pending: Change[];
7
7
  export declare const skillEdit: Change;
8
8
  export declare const models: ModelOption[];
9
+ export declare const laterModels: ModelOption[];
9
10
  export declare const defaults: Settings;
10
11
  export declare const accounts: Account[];
11
12
  export declare const agents: Agent[];
@@ -26,6 +26,7 @@ export interface DummyOptions {
26
26
  follow?: FollowScenario | 'off';
27
27
  vault?: VaultScenario | 'off';
28
28
  accounts?: 'settings' | 'vault';
29
+ providers?: 'connected' | 'none';
29
30
  hold?: AgentHold['reason'] | 'off';
30
31
  browser?: BrowserScenario;
31
32
  sprinkles?: 'builtin' | 'cones';
@@ -42,4 +43,4 @@ export interface DummyModel extends SliccModel {
42
43
  vault?: DummyVault;
43
44
  }
44
45
  export declare function vaultAccounts(accounts: readonly Account[]): Account[];
45
- export declare function createDummyModel({ delay, storage, updates, packages, confirm, mounts, network, tailnet, links, changes, notices, tabs, approvals, follow, vault, accounts, hold, browser: scenario, sprinkles, monitor, }?: DummyOptions): DummyModel;
46
+ export declare function createDummyModel({ delay, storage, updates, packages, confirm, mounts, network, tailnet, links, changes, notices, tabs, approvals, follow, vault, accounts, providers, hold, browser: scenario, sprinkles, monitor, }?: DummyOptions): DummyModel;
@@ -4,7 +4,7 @@ import type { Clock } from './clock.js';
4
4
  export declare const dummySettingsKey = "slicc-ui.settings";
5
5
  export declare class DummySettings extends Emitter<SettingsEvents> implements SettingsPort {
6
6
  #private;
7
- constructor(defaults: Settings, models: readonly ModelOption[], accounts: readonly Account[], storage: Storage | null, clock: Clock, keys?: readonly string[]);
7
+ constructor(defaults: Settings, models: readonly ModelOption[], accounts: readonly Account[], storage: Storage | null, clock: Clock, keys?: readonly string[], gated?: boolean);
8
8
  get(): Settings;
9
9
  update(patch: Partial<Settings>): void;
10
10
  models(): readonly ModelOption[];
@@ -1,7 +1,7 @@
1
1
  export type { ApprovalScenario } from './dummy/approvals.js';
2
2
  export { approvalFixtures, DummyApprovals } from './dummy/approvals.js';
3
3
  export type { ActionDraft, BrowserScenario } from './dummy/browser.js';
4
- export { browserHistory, DummyBrowser, page } from './dummy/browser.js';
4
+ export { actionLimits, browserHistory, DummyBrowser, page } from './dummy/browser.js';
5
5
  export type { ChangesScenario } from './dummy/changes.js';
6
6
  export { DummyChanges } from './dummy/changes.js';
7
7
  export type { DummyMount, MountScenario } from './dummy/files.js';
@@ -432,6 +432,7 @@ export interface ModelOption {
432
432
  reasoning?: boolean;
433
433
  tools?: boolean;
434
434
  images?: boolean;
435
+ default?: boolean;
435
436
  }
436
437
  export interface SettingsEvents {
437
438
  settings: Settings;
@@ -18,6 +18,8 @@ import { SliccVaultButton } from './app/vault.js';
18
18
  import { SliccCodeView, SliccDiffView } from './components/code-view.js';
19
19
  import { SliccDock } from './components/dock.js';
20
20
  import { SliccFileTree } from './components/file-tree.js';
21
+ export type { SecretRulesVerdict } from './app/approvals.js';
22
+ export { secretRules } from './app/approvals.js';
21
23
  export type { Color } from './app/base.js';
22
24
  export { resolveColor } from './app/base.js';
23
25
  export type { ConfirmOptions, ConfirmVariant, PromptOptions } from './app/confirm.js';
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-spectrum",
3
- "version": "1.68.3",
3
+ "version": "1.69.1",
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",
@@ -72,9 +72,9 @@
72
72
  "devDependencies": {
73
73
  "@adobe/spectrum-wc": "2.0.0-beta.4",
74
74
  "@adobe/spectrum-wc-icons": "2.0.0-beta.4",
75
- "@ai-ecoverse/slicc-kernel": "1.82.0",
75
+ "@ai-ecoverse/slicc-kernel": "1.85.1",
76
76
  "@ai-ecoverse/slicc-shared-web": "1.13.1",
77
- "@ai-ecoverse/slicc-vault": "1.9.0",
77
+ "@ai-ecoverse/slicc-vault": "1.9.1",
78
78
  "@ai-ecoverse/wasm-bash": "5.3.0-18",
79
79
  "@ai-ecoverse/wasm-coreutils": "9.7.0-3",
80
80
  "@biomejs/biome": "2.5.15",
@@ -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\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 ) {\n super();\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 return this.#models;\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": ";;;;;AAKO,SAAS,MAAM,OAAsB;AAC1C,SAAO;AAAA,IACL;AAAA,IACA,OAAO,CAAC,QAAQ,MAAM,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,QAAQ,KAAK,CAAC;AAAA,EACnF;AACF;;;ACCO,IAAM,mBAAmB;AAEzB,IAAM,gBAAN,cAA4B,QAAgD;AAAA,EACjF;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA,WAAW,oBAAI,IAAyD;AAAA,EAExE,YACE,UACA,QACA,UACA,SACAA,QACA,OAA0B,CAAC,gBAAgB,GAC3C;AACA,UAAM;AACN,SAAK,QAAQ;AACb,SAAK,WAAW;AAChB,SAAK,SAASA;AACd,SAAK,UAAU;AACf,SAAK,YAAY,SAAS,IAAI,CAAC,aAAa,EAAE,GAAG,QAAQ,EAAE;AAC3D,SAAK,YAAY,EAAE,GAAG,UAAU,GAAG,KAAK,MAAM,EAAE;AAAA,EAClD;AAAA,EAEA,QAA2B;AACzB,QAAI;AACF,YAAM,QAAQ,KAAK,MAChB,IAAI,CAAC,QAAQ,KAAK,UAAU,QAAQ,GAAG,CAAC,EACxC,KAAK,CAAC,UAAU,SAAS,IAAI;AAChC,aAAO,KAAK,MAAM,SAAS,IAAI;AAAA,IACjC,QAAQ;AACN,aAAO,CAAC;AAAA,IACV;AAAA,EACF;AAAA,EAEA,MAAgB;AACd,WAAO,EAAE,GAAG,KAAK,UAAU;AAAA,EAC7B;AAAA,EAEA,OAAO,OAAgC;AACrC,SAAK,YAAY,EAAE,GAAG,KAAK,WAAW,GAAG,MAAM;AAC/C,SAAK,UAAU,QAAQ,KAAK,MAAM,CAAC,GAAG,KAAK,UAAU,KAAK,SAAS,CAAC;AACpE,SAAK,KAAK,YAAY,KAAK,IAAI,CAAC;AAAA,EAClC;AAAA,EAEA,SAAiC;AAC/B,WAAO,KAAK;AAAA,EACd;AAAA,EAEA,WAA+B;AAC7B,WAAO,KAAK,UAAU,IAAI,CAAC,aAAa,EAAE,GAAG,QAAQ,EAAE;AAAA,EACzD;AAAA,EAEA,KAAK,IAAY,OAA+B;AAC9C,SAAK,YAAY,KAAK,UAAU;AAAA,MAAI,CAAC,YACnC,QAAQ,OAAO,KAAK,EAAE,GAAG,SAAS,GAAG,MAAM,IAAI;AAAA,IACjD;AACA,SAAK,KAAK,YAAY,KAAK,SAAS,CAAC;AAAA,EACvC;AAAA,EAEA,MAAM,QAAQ,IAAY,QAAgC;AACxD,UAAM,UAAU,KAAK,UAAU,KAAK,CAAC,cAAc,UAAU,OAAO,EAAE;AACtE,QAAI,WAAW,QAAQ,SAAS,aAAa,CAAE,MAAM,KAAK,QAAQ,OAAO,EAAI;AAC7E,QAAI,SAAS,SAAS,aAAa,CAAC,QAAS,OAAM,KAAK,OAAO,MAAM,EAAE;AACvE,QAAI,SAAS,SAAS,aAAa,QAAQ,UAAU,WAAW,CAAC;AAC/D,YAAM,IAAI;AAAA,QACR,GAAG,QAAQ,QAAQ,UAAU,QAAQ,WAAW,UAAU,YAAY,YAAY;AAAA,MACpF;AACF,UAAM,WACJ,SAAS,UAAU,QACf,QAAQ,WACR,SAAS,SAAS,YAChB,YACA,SAAS,YAAY,GAAG,EAAE;AAClC,SAAK,KAAK,IAAI,EAAE,QAAQ,aAAa,SAAS,CAAC;AAAA,EACjD;AAAA,EAEA,QAAQ,SAAoC;AAC1C,UAAM,SAAS,KAAK,SAAS,IAAI,QAAQ,EAAE,GAAG,UAAU,QAAQ;AAChE,SAAK,SAAS,IAAI,QAAQ,EAAE,GAAG,KAAK;AACpC,SAAK,KAAK,QAAQ,IAAI,EAAE,QAAQ,aAAa,CAAC;AAC9C,WAAO,IAAI,QAAQ,CAAC,YAAY;AAC9B,YAAM,OAAO,MAAM;AACjB,aAAK,SAAS,OAAO,QAAQ,EAAE;AAC/B,aAAK,KAAK,QAAQ,IAAI,EAAE,QAAQ,OAAO,CAAC;AACxC,gBAAQ,KAAK;AAAA,MACf;AACA,WAAK,SAAS,IAAI,QAAQ,IAAI,EAAE,QAAQ,KAAK,CAAC;AAC9C,WAAK,KAAK,OAAO,MAAM,GAAG,EAAE,KAAK,MAAM;AACrC,YAAI,KAAK,SAAS,IAAI,QAAQ,EAAE,GAAG,SAAS,KAAM;AAClD,aAAK,SAAS,OAAO,QAAQ,EAAE;AAC/B,gBAAQ,IAAI;AAAA,MACd,CAAC;AAAA,IACH,CAAC;AAAA,EACH;AAAA,EAEA,OAAO,IAAkB;AACvB,SAAK,SAAS,IAAI,EAAE,GAAG,KAAK;AAAA,EAC9B;AAAA,EAEA,WAAW,IAAkB;AAC3B,SAAK,KAAK,IAAI,EAAE,QAAQ,eAAe,CAAC;AAAA,EAC1C;AACF;",
6
- "names": ["clock"]
7
- }