@ai-ecoverse/slicc-spectrum 1.41.0 → 1.43.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.
@@ -0,0 +1,33 @@
1
+ import '@adobe/spectrum-wc/components/button/swc-button.js';
2
+ import '@adobe/spectrum-wc/components/close-button/swc-close-button.js';
3
+ import '@adobe/spectrum-wc-icons/swc-icon-alert-triangle.js';
4
+ import '@adobe/spectrum-wc-icons/swc-icon-info-circle.js';
5
+ import { nothing, type TemplateResult } from 'lit';
6
+ import type { SliccModel } from '../model/types.js';
7
+ import { ModelElement } from './base.js';
8
+ export declare class SliccNotices extends ModelElement {
9
+ #private;
10
+ static properties: {
11
+ model: {
12
+ attribute: boolean;
13
+ };
14
+ dismissed: {
15
+ state: boolean;
16
+ };
17
+ pending: {
18
+ state: boolean;
19
+ };
20
+ failures: {
21
+ state: boolean;
22
+ };
23
+ };
24
+ dismissed: ReadonlySet<string>;
25
+ pending: ReadonlyMap<string, string>;
26
+ failures: ReadonlyMap<string, string>;
27
+ constructor();
28
+ static styles: import("lit").CSSResult;
29
+ protected subscribe(model: SliccModel): Array<() => void>;
30
+ dismiss(id: string): void;
31
+ act(id: string, action: string): Promise<void>;
32
+ render(): TemplateResult | typeof nothing;
33
+ }
@@ -4,8 +4,10 @@ import '@adobe/spectrum-wc/components/progress-bar/swc-progress-bar.js';
4
4
  import '@adobe/spectrum-wc/components/status-light/swc-status-light.js';
5
5
  import '@adobe/spectrum-wc-icons/swc-icon-alert-triangle.js';
6
6
  import { type TemplateResult } from 'lit';
7
- import type { SliccModel, UpdateAction, UpdateItem, UpdatesPort } from '../model/types.js';
7
+ import type { PackageAction, PackageItem, SliccModel, UpdateAction, UpdateItem, UpdatesPort } from '../model/types.js';
8
8
  import { ModelElement } from './base.js';
9
+ export declare function requiresText(item: PackageItem, all: readonly PackageItem[]): string | null;
10
+ type Failures = ReadonlyMap<string, string>;
9
11
  export declare function updatesStatus(items: readonly UpdateItem[]): string | null;
10
12
  export declare class UpdateVisibility {
11
13
  #private;
@@ -24,13 +26,23 @@ export declare class SliccUpdates extends ModelElement {
24
26
  failures: {
25
27
  state: boolean;
26
28
  };
29
+ busy: {
30
+ state: boolean;
31
+ };
32
+ problems: {
33
+ state: boolean;
34
+ };
27
35
  };
28
36
  pending: ReadonlySet<string>;
29
- failures: ReadonlyMap<string, string>;
37
+ failures: Failures;
38
+ busy: ReadonlyMap<string, PackageAction>;
39
+ problems: Failures;
30
40
  constructor();
31
41
  static styles: import("lit").CSSResult[];
32
42
  protected subscribe(model: SliccModel): Array<() => void>;
33
43
  focus(): void;
34
44
  act(id: string, action: UpdateAction): Promise<void>;
45
+ actPackage(id: string, action: PackageAction): Promise<void>;
35
46
  render(): TemplateResult;
36
47
  }
48
+ export {};
@@ -2,18 +2,23 @@ import type { SliccModel } from '../model/types.js';
2
2
  import { type ChangesScenario } from './changes.js';
3
3
  import { type MountScenario } from './files.js';
4
4
  import { DummyNetwork, type NetworkScenario, type TailnetScenario } from './network.js';
5
- import { DummyUpdates, type UpdateScenario } from './updates.js';
5
+ import { DummyNotices, type NoticeScenario } from './notices.js';
6
+ import { DummyUpdates, type PackageConfirm, type PackageScenario, type UpdateScenario } from './updates.js';
6
7
  export interface DummyOptions {
7
8
  delay?: number;
8
9
  storage?: Storage | null;
9
10
  updates?: UpdateScenario;
11
+ packages?: PackageScenario | 'off';
12
+ confirm?: PackageConfirm;
10
13
  mounts?: MountScenario | 'off';
11
14
  network?: NetworkScenario | 'off';
12
15
  tailnet?: TailnetScenario;
13
16
  changes?: ChangesScenario;
17
+ notices?: NoticeScenario | 'off';
14
18
  }
15
19
  export interface DummyModel extends SliccModel {
16
20
  updates: DummyUpdates;
17
21
  network?: DummyNetwork;
22
+ notices?: DummyNotices;
18
23
  }
19
- export declare function createDummyModel({ delay, storage, updates, mounts, network, tailnet, changes, }?: DummyOptions): DummyModel;
24
+ export declare function createDummyModel({ delay, storage, updates, packages, confirm, mounts, network, tailnet, changes, notices, }?: DummyOptions): DummyModel;
@@ -0,0 +1,14 @@
1
+ import { Emitter } from '../model/emitter.js';
2
+ import type { Notice, NoticesPort } from '../model/types.js';
3
+ import type { Clock } from './clock.js';
4
+ export type NoticeScenario = 'storage' | 'mixed' | 'fail';
5
+ export declare const noticeFixtures: Record<'storage' | 'welcome', Notice>;
6
+ export declare class DummyNotices extends Emitter<{
7
+ notices: readonly Notice[];
8
+ }> implements NoticesPort {
9
+ #private;
10
+ constructor(scenario: NoticeScenario, time: Clock);
11
+ list(): readonly Notice[];
12
+ act(id: string, action: string): Promise<void>;
13
+ dismiss(id: string): void;
14
+ }
@@ -1,13 +1,25 @@
1
1
  import { Emitter } from '../model/emitter.js';
2
- import type { UpdateAction, UpdateItem, UpdatesPort } from '../model/types.js';
2
+ import type { PackageAction, PackageItem, UpdateAction, UpdateItem, UpdatesEvents, UpdatesPort } from '../model/types.js';
3
3
  import type { Clock } from './clock.js';
4
4
  export type UpdateScenario = 'current' | 'boot' | 'starting' | 'available' | 'restart' | 'failure';
5
+ export type PackageScenario = 'mixed' | 'empty' | 'fail';
6
+ export type PackageConfirm = (options: {
7
+ title: string;
8
+ body: string;
9
+ action: string;
10
+ variant: 'confirmation';
11
+ }) => Promise<boolean>;
5
12
  export declare function updateFixtures(scenario: UpdateScenario): readonly UpdateItem[];
6
- export declare class DummyUpdates extends Emitter<{
7
- items: readonly UpdateItem[];
8
- }> implements UpdatesPort {
13
+ export declare function packageFixtures(scenario: PackageScenario): readonly PackageItem[];
14
+ export interface DummyUpdatesOptions {
15
+ packages?: PackageScenario;
16
+ confirm?: PackageConfirm;
17
+ }
18
+ export declare class DummyUpdates extends Emitter<UpdatesEvents> implements UpdatesPort {
9
19
  #private;
10
- constructor(scenario: UpdateScenario, clock: Clock);
20
+ packages?: () => readonly PackageItem[];
21
+ actPackage?: (id: string, action: PackageAction) => Promise<void>;
22
+ constructor(scenario: UpdateScenario, clock: Clock, options?: DummyUpdatesOptions);
11
23
  list(): readonly UpdateItem[];
12
24
  ready(): boolean;
13
25
  setScenario(scenario: UpdateScenario): void;
@@ -5,5 +5,7 @@ export type { DummyModel, DummyOptions } from './dummy/index.js';
5
5
  export { createDummyModel } from './dummy/index.js';
6
6
  export type { NetworkScenario, TailnetScenario } from './dummy/network.js';
7
7
  export { DummyNetwork, networkFixtures, tailnetFixtures } from './dummy/network.js';
8
- export type { UpdateScenario } from './dummy/updates.js';
9
- export { DummyUpdates, updateFixtures } from './dummy/updates.js';
8
+ export type { NoticeScenario } from './dummy/notices.js';
9
+ export { DummyNotices, noticeFixtures } from './dummy/notices.js';
10
+ export type { DummyUpdatesOptions, PackageConfirm, PackageScenario, UpdateScenario, } from './dummy/updates.js';
11
+ export { DummyUpdates, packageFixtures, updateFixtures } from './dummy/updates.js';
@@ -530,12 +530,38 @@ export interface UpdateItem {
530
530
  actions: readonly UpdateAction[];
531
531
  log?: string;
532
532
  }
533
- export interface UpdatesPort extends Subscribable<{
533
+ export type PackageState = 'available' | 'queued' | 'installing' | 'installed' | 'outdated' | 'updating' | 'removing' | 'failed';
534
+ export type PackageAction = 'install' | 'update' | 'remove' | 'retry';
535
+ export interface PackageItem {
536
+ id: string;
537
+ package: string;
538
+ label: string;
539
+ description: string;
540
+ commands: readonly string[];
541
+ requires?: readonly string[];
542
+ state: PackageState;
543
+ version: string | null;
544
+ offered: string | null;
545
+ size?: number;
546
+ progress: {
547
+ phase: 'download' | 'link';
548
+ done: number;
549
+ total: number;
550
+ } | null;
551
+ error: string | null;
552
+ actions: readonly PackageAction[];
553
+ log?: string;
554
+ }
555
+ export interface UpdatesEvents {
534
556
  items: readonly UpdateItem[];
535
- }> {
557
+ packages: readonly PackageItem[];
558
+ }
559
+ export interface UpdatesPort extends Subscribable<UpdatesEvents> {
536
560
  list(): readonly UpdateItem[];
537
561
  ready(): boolean;
538
562
  act(id: string, action: UpdateAction): Promise<void>;
563
+ packages?(): readonly PackageItem[];
564
+ actPackage?(id: string, action: PackageAction): Promise<void>;
539
565
  }
540
566
  export type NetworkRoute = 'proxy' | 'extension' | 'tailnet' | 'page';
541
567
  export interface NetworkFailure {
@@ -587,6 +613,24 @@ export interface NetworkPort extends Subscribable<{
587
613
  submitAuthKey?(key: string): Promise<void>;
588
614
  logoutTailnet?(): Promise<void>;
589
615
  }
616
+ export interface NoticeAction {
617
+ id: string;
618
+ label: string;
619
+ }
620
+ export interface Notice {
621
+ id: string;
622
+ tone: 'info' | 'warning';
623
+ title: string;
624
+ body: string;
625
+ actions: readonly NoticeAction[];
626
+ }
627
+ export interface NoticesPort extends Subscribable<{
628
+ notices: readonly Notice[];
629
+ }> {
630
+ list(): readonly Notice[];
631
+ act(id: string, action: string): Promise<void>;
632
+ dismiss(id: string): void;
633
+ }
590
634
  export interface SliccModel {
591
635
  agent: AgentPort;
592
636
  files: FilePort;
@@ -600,4 +644,5 @@ export interface SliccModel {
600
644
  updates?: UpdatesPort;
601
645
  network?: NetworkPort;
602
646
  changes?: ChangesPort;
647
+ notices?: NoticesPort;
603
648
  }
@@ -8,6 +8,7 @@ import { SliccComposer } from './app/composer.js';
8
8
  import { SliccConfirm, SliccPrompt } from './app/confirm.js';
9
9
  import { SliccFiles, SliccFileView } from './app/files.js';
10
10
  import { SliccNetwork } from './app/network.js';
11
+ import { SliccNotices } from './app/notices.js';
11
12
  import { SliccUpdates } from './app/updates.js';
12
13
  import { SliccCodeView, SliccDiffView } from './components/code-view.js';
13
14
  import { SliccDock } from './components/dock.js';
@@ -26,5 +27,5 @@ export type { GitStatusEntry } from './components/file-tree.js';
26
27
  export type { Listener, Subscribable } from './model/emitter.js';
27
28
  export { Emitter } from './model/emitter.js';
28
29
  export type * from './model/types.js';
29
- export { SliccAgents, SliccApp, SliccBrowser, SliccChanges, SliccChat, SliccCodeView, SliccComposer, SliccConfirm, SliccDiffPanel, SliccDiffView, SliccDock, SliccFiles, SliccFileTree, SliccFileView, SliccNetwork, SliccPrompt, SliccUpdates, };
30
+ export { SliccAgents, SliccApp, SliccBrowser, SliccChanges, SliccChat, SliccCodeView, SliccComposer, SliccConfirm, SliccDiffPanel, SliccDiffView, SliccDock, SliccFiles, SliccFileTree, SliccFileView, SliccNetwork, SliccNotices, SliccPrompt, SliccUpdates, };
30
31
  export declare function define(): void;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-ecoverse/slicc-spectrum",
3
- "version": "1.41.0",
3
+ "version": "1.43.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",