@prettier-ai/dsh-client-ui-model-selection 0.1.2-alpha.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/LICENSE +21 -0
- package/README.i18n.yaml +6 -0
- package/README.md +92 -0
- package/README.zh.md +92 -0
- package/lib/client.js +900 -0
- package/lib/index.js +11 -0
- package/lib/invariant.js +24 -0
- package/lib/types/client/ModelSelect.d.ts +12 -0
- package/lib/types/client/catalog.d.ts +34 -0
- package/lib/types/client/directory.d.ts +77 -0
- package/lib/types/client/index.d.ts +23 -0
- package/lib/types/client/locales.d.ts +54 -0
- package/lib/types/client/service.d.ts +46 -0
- package/lib/types/client/slots.d.ts +25 -0
- package/lib/types/index.d.ts +9 -0
- package/lib/types/invariant.d.ts +16 -0
- package/package.json +91 -0
package/lib/index.js
ADDED
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
//#region lib/types/index.js
|
|
2
|
+
/**
|
|
3
|
+
* Model selection plugin, node half. Pure UI plugin: the empty apply exists
|
|
4
|
+
* so the plugin appears in the host cordis.yml / Loader; the browser half
|
|
5
|
+
* ships via exports["./client"], discovered through the package.json
|
|
6
|
+
* dsh.client declaration.
|
|
7
|
+
*/
|
|
8
|
+
/** Host plugin body — no host-side behavior for this surface plugin. */
|
|
9
|
+
function apply() {}
|
|
10
|
+
//#endregion
|
|
11
|
+
export { apply };
|
package/lib/invariant.js
ADDED
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
//#region lib/types/invariant.js
|
|
2
|
+
/**
|
|
3
|
+
* Package-owned invariant companion for `@prettier-ai/dsh-client-ui-model-selection`.
|
|
4
|
+
* @module @prettier-ai/dsh-client-ui-model-selection/invariant
|
|
5
|
+
*/
|
|
6
|
+
const PACKAGE_NAME = "@prettier-ai/dsh-client-ui-model-selection";
|
|
7
|
+
/** Cordis companion plugin name. */
|
|
8
|
+
const name = "client-ui-model-selection-invariant";
|
|
9
|
+
/** Service required before the companion can reserve package ownership. */
|
|
10
|
+
const inject = ["invariants"];
|
|
11
|
+
/**
|
|
12
|
+
* No runtime invariant: a single command contribution registration whose disposal is
|
|
13
|
+
* proven by the HMR-safety spec — it emits no cordis events and owns no
|
|
14
|
+
* cross-plugin mutable state.
|
|
15
|
+
*/
|
|
16
|
+
const install = () => {};
|
|
17
|
+
/**
|
|
18
|
+
* Register this package's invariant companion.
|
|
19
|
+
* @param ctx - Cordis context carrying the invariant service.
|
|
20
|
+
* @returns the installed registration's disposer after setup succeeds.
|
|
21
|
+
*/
|
|
22
|
+
const apply = (ctx) => Promise.resolve(ctx.invariants.register(PACKAGE_NAME, install));
|
|
23
|
+
//#endregion
|
|
24
|
+
export { apply, inject, name };
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import type { PropsLocale } from '@prettier-ai/dsh-client-ui-slots';
|
|
2
|
+
import type { ModelSelectInjected } from './slots.ts';
|
|
3
|
+
/**
|
|
4
|
+
* Render the composer model seat.
|
|
5
|
+
* @param props - owner share (locked) + injected face (shared directory
|
|
6
|
+
* store/verbs) + the standard locale seat.
|
|
7
|
+
* @returns the trigger and, while open, the two-level menu.
|
|
8
|
+
*/
|
|
9
|
+
export declare function ModelSelect({ locked, available, directory, load, select, t }: ModelSelectInjected & {
|
|
10
|
+
locked: boolean;
|
|
11
|
+
} & PropsLocale<'model'>): import("react").JSX.Element | null;
|
|
12
|
+
//# sourceMappingURL=ModelSelect.d.ts.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/** One Host-generation model catalog shared by every Session selector. */
|
|
2
|
+
import type { ClientRemote, ModelCatalog } from '@prettier-ai/dsh-api-remotes/client';
|
|
3
|
+
import { type SnapshotStore } from '@prettier-ai/dsh-client-store';
|
|
4
|
+
/** Observable lifecycle of the shared model catalog. */
|
|
5
|
+
export interface ModelCatalogState {
|
|
6
|
+
value: ModelCatalog | null;
|
|
7
|
+
status: 'idle' | 'loading' | 'ready' | 'error';
|
|
8
|
+
error: string | null;
|
|
9
|
+
}
|
|
10
|
+
/** Loads at most one model catalog for the current Host generation. */
|
|
11
|
+
export declare class ModelCatalogDirectory {
|
|
12
|
+
private readonly session;
|
|
13
|
+
/** Current shared catalog value and load lifecycle. */
|
|
14
|
+
readonly store: SnapshotStore<ModelCatalogState>;
|
|
15
|
+
private generation;
|
|
16
|
+
private inflight;
|
|
17
|
+
/** @param session - Session Remote namespace carrying the Host-generation catalog. */
|
|
18
|
+
constructor(session: Pick<ClientRemote['session'], 'modelCatalog'>);
|
|
19
|
+
/**
|
|
20
|
+
* Return the current generation's catalog, sharing its one in-flight load.
|
|
21
|
+
* @returns the loaded global catalog.
|
|
22
|
+
*/
|
|
23
|
+
load(): Promise<ModelCatalog>;
|
|
24
|
+
/**
|
|
25
|
+
* Invalidate the loaded catalog; the next explicit menu read reloads it.
|
|
26
|
+
* @param clear - whether values from the previous Host generation must be hidden.
|
|
27
|
+
*/
|
|
28
|
+
private invalidate;
|
|
29
|
+
/** Invalidate and reload the catalog after a Host-side model input changes. */
|
|
30
|
+
refresh(): void;
|
|
31
|
+
/** Clear Host-specific values and load the replacement Host generation. */
|
|
32
|
+
resetGeneration(): void;
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=catalog.d.ts.map
|
|
@@ -0,0 +1,77 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Per-session model directory: the ONE state both selection entries share.
|
|
3
|
+
* The /model popup and composer seat combine one shared Host catalog with the
|
|
4
|
+
* Session's durable selection projection, then submit through the same
|
|
5
|
+
* selectModel call. A switch made in either entry updates this shared state.
|
|
6
|
+
*/
|
|
7
|
+
import type { ModelCatalogFailure, ModelProviderGroup, ModelSelection } from '@prettier-ai/dsh-api-session-controller/types';
|
|
8
|
+
import type { SessionId } from '@prettier-ai/dsh-api-remotes/client';
|
|
9
|
+
import type { TypertClientRemote } from '@prettier-ai/dsh-typert-protocol';
|
|
10
|
+
import type { ObservableSnapshot, SnapshotStore } from '@prettier-ai/dsh-client-store';
|
|
11
|
+
import type { ModelCatalogDirectory } from './catalog.ts';
|
|
12
|
+
/** Directory snapshot both entries render from. */
|
|
13
|
+
export interface ModelDirectoryState {
|
|
14
|
+
/** Effective selection: durable next-request projection, then Host default. */
|
|
15
|
+
current: ModelSelection | null;
|
|
16
|
+
/**
|
|
17
|
+
* Whether an adapter serves the current selection's provider, as the host reports
|
|
18
|
+
* it — null before the first load, which is NOT the same as blocked. Read
|
|
19
|
+
* this rather than "current matches no group": catalog membership is
|
|
20
|
+
* advisory, so a route serving a model it stopped advertising is missing
|
|
21
|
+
* from the groups yet perfectly usable.
|
|
22
|
+
*/
|
|
23
|
+
routable: boolean | null;
|
|
24
|
+
/** Successfully loaded provider groups (last good load). */
|
|
25
|
+
groups: readonly ModelProviderGroup[];
|
|
26
|
+
/** Provider-local failures from the last load; usable groups stay usable. */
|
|
27
|
+
failures: readonly ModelCatalogFailure[];
|
|
28
|
+
/** Lifecycle of the in-flight operation. */
|
|
29
|
+
status: 'idle' | 'loading' | 'ready' | 'selecting' | 'error';
|
|
30
|
+
/** Whole-request or selection failure text; null when none. */
|
|
31
|
+
error: string | null;
|
|
32
|
+
}
|
|
33
|
+
/** One session's shared directory controller; disposed with the session scope. */
|
|
34
|
+
export declare class ModelDirectory {
|
|
35
|
+
private readonly sessions;
|
|
36
|
+
private readonly sessionId;
|
|
37
|
+
private readonly available;
|
|
38
|
+
private readonly catalog;
|
|
39
|
+
private readonly projected;
|
|
40
|
+
/** The shared snapshot both entries render from (uSES-safe store). */
|
|
41
|
+
readonly store: SnapshotStore<ModelDirectoryState>;
|
|
42
|
+
/** Latest selection operation wins; an older response never overwrites a newer one. */
|
|
43
|
+
private generation;
|
|
44
|
+
private disposed;
|
|
45
|
+
private resolved;
|
|
46
|
+
private readonly unsubscribeCatalog;
|
|
47
|
+
private readonly unsubscribeSelection;
|
|
48
|
+
/**
|
|
49
|
+
* @param sessions - the session wire face (captured from the plugin's root connection).
|
|
50
|
+
* @param sessionId - the owning session.
|
|
51
|
+
* @param available - whether this session may use Agent-bound model RPCs.
|
|
52
|
+
* @param catalog - Host-generation catalog shared by every Session.
|
|
53
|
+
* @param projected - durable model selection projected from Session history.
|
|
54
|
+
*/
|
|
55
|
+
constructor(sessions: Pick<TypertClientRemote['session'], 'selectModel'>, sessionId: SessionId, available: () => boolean, catalog: ModelCatalogDirectory, projected: ObservableSnapshot<unknown>);
|
|
56
|
+
/**
|
|
57
|
+
* Ensure the Host generation's shared advisory catalog is loaded.
|
|
58
|
+
* @returns the fresh directory value.
|
|
59
|
+
*/
|
|
60
|
+
load(): Promise<ModelDirectoryState>;
|
|
61
|
+
/**
|
|
62
|
+
* Select the complete provider/model/reasoning selection. The durable
|
|
63
|
+
* projection frame updates the shared current; failures surface on the store
|
|
64
|
+
* and throw so each entry's own retry surface engages.
|
|
65
|
+
* @param selection - provider, provider-owned model id, and optional adapter-owned effort.
|
|
66
|
+
*/
|
|
67
|
+
select(selection: ModelSelection): Promise<void>;
|
|
68
|
+
/**
|
|
69
|
+
* Invalidate an in-flight selection response from the previous Host generation.
|
|
70
|
+
*/
|
|
71
|
+
resetConnected(): void;
|
|
72
|
+
/** Scope teardown: late settlements lose write access to the store. */
|
|
73
|
+
dispose(): void;
|
|
74
|
+
private assertAvailable;
|
|
75
|
+
private syncInputs;
|
|
76
|
+
}
|
|
77
|
+
//# sourceMappingURL=directory.d.ts.map
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { Context as ClientContext } from '@prettier-ai/cordis';
|
|
2
|
+
import { type ModelKey } from './locales.ts';
|
|
3
|
+
export { ModelDirectory } from './directory.ts';
|
|
4
|
+
export type { ModelDirectoryState } from './directory.ts';
|
|
5
|
+
export { ModelDirectoryResolver } from './service.ts';
|
|
6
|
+
export type { ModelSelectInjected } from './slots.ts';
|
|
7
|
+
export type { ModelKey } from './locales.ts';
|
|
8
|
+
declare module '@prettier-ai/dsh-client-ui-slots' {
|
|
9
|
+
interface LocaleNamespaceMap {
|
|
10
|
+
/** The model selection surfaces' copy (/model popup + composer seat). */
|
|
11
|
+
model: ModelKey;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
/** Required services: the contribution registry, the seat's slot registry, locale, and the service's own faces. */
|
|
15
|
+
export declare const inject: string[];
|
|
16
|
+
/**
|
|
17
|
+
* Client plugin body: mount ModelDirectoryResolver, register the `model` dictionaries,
|
|
18
|
+
* then register the /model popup contribution and the composer model seat
|
|
19
|
+
* over the service.
|
|
20
|
+
* @param ctx - client root context.
|
|
21
|
+
*/
|
|
22
|
+
export declare function apply(ctx: ClientContext): void;
|
|
23
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* `model` namespace dictionaries.
|
|
3
|
+
*
|
|
4
|
+
* `trigger.selectAria` intentionally matches `trigger.fallback` but remains a
|
|
5
|
+
* separate key: the visible fallback label and the accessible name of
|
|
6
|
+
* an unset trigger are free to diverge per locale, and folding it into
|
|
7
|
+
* `trigger.aria` would announce the degenerate "Select model, current Select
|
|
8
|
+
* model".
|
|
9
|
+
*/
|
|
10
|
+
/** Simplified Chinese dictionary (the key-set source of truth). */
|
|
11
|
+
export declare const zh: {
|
|
12
|
+
'command.description': string;
|
|
13
|
+
'option.loadError': string;
|
|
14
|
+
'trigger.fallback': string;
|
|
15
|
+
'trigger.loading': string;
|
|
16
|
+
'trigger.selectAria': string;
|
|
17
|
+
'trigger.aria': string;
|
|
18
|
+
'trigger.ariaEffort': string;
|
|
19
|
+
'menu.aria': string;
|
|
20
|
+
'menu.model': string;
|
|
21
|
+
'menu.effort': string;
|
|
22
|
+
'effort.providerDefault': string;
|
|
23
|
+
'status.loading': string;
|
|
24
|
+
'error.action': string;
|
|
25
|
+
'action.reload': string;
|
|
26
|
+
'warning.groupLoad': string;
|
|
27
|
+
'empty.models': string;
|
|
28
|
+
'blocked.composer': string;
|
|
29
|
+
'empty.efforts': string;
|
|
30
|
+
};
|
|
31
|
+
/** The model namespace key union. */
|
|
32
|
+
export type ModelKey = keyof typeof zh;
|
|
33
|
+
/** English dictionary, checked complete against the zh key set. */
|
|
34
|
+
export declare const en: {
|
|
35
|
+
'command.description': string;
|
|
36
|
+
'option.loadError': string;
|
|
37
|
+
'trigger.fallback': string;
|
|
38
|
+
'trigger.loading': string;
|
|
39
|
+
'trigger.selectAria': string;
|
|
40
|
+
'trigger.aria': string;
|
|
41
|
+
'trigger.ariaEffort': string;
|
|
42
|
+
'menu.aria': string;
|
|
43
|
+
'menu.model': string;
|
|
44
|
+
'menu.effort': string;
|
|
45
|
+
'effort.providerDefault': string;
|
|
46
|
+
'status.loading': string;
|
|
47
|
+
'error.action': string;
|
|
48
|
+
'action.reload': string;
|
|
49
|
+
'warning.groupLoad': string;
|
|
50
|
+
'empty.models': string;
|
|
51
|
+
'blocked.composer': string;
|
|
52
|
+
'empty.efforts': string;
|
|
53
|
+
};
|
|
54
|
+
//# sourceMappingURL=locales.d.ts.map
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ModelDirectoryResolver (`ctx.modelDirectories`): the root owner of per-session
|
|
3
|
+
* {@link ModelDirectory} instances. Both selection entries (the /model popup
|
|
4
|
+
* and the composer model seat) resolve their session's directory through
|
|
5
|
+
* this service, which is what makes the dual entry one shared state.
|
|
6
|
+
*
|
|
7
|
+
* Per-session storage follows the client service pattern (InputTriggerService /
|
|
8
|
+
* CommandUiRuntime): a lazy service-internal map whose entry is deleted by the
|
|
9
|
+
* owning scope's disposer. The host `dsh-scope` ScopedLayers registry does
|
|
10
|
+
* does not belong here: it derives scope from the host carrier mechanism
|
|
11
|
+
* (object-keyed), while client scopes tag contexts with branded SessionId
|
|
12
|
+
* strings, and it models global+shadow named registries — this is a
|
|
13
|
+
* per-session singleton with no global layer to merge.
|
|
14
|
+
*/
|
|
15
|
+
import { Service } from '@prettier-ai/cordis';
|
|
16
|
+
import type { Context } from '@prettier-ai/cordis';
|
|
17
|
+
import type { SessionId } from '@prettier-ai/dsh-session/types';
|
|
18
|
+
import { ModelDirectory } from './directory.ts';
|
|
19
|
+
declare module '@prettier-ai/cordis' {
|
|
20
|
+
interface Context {
|
|
21
|
+
modelDirectories: ModelDirectoryResolver;
|
|
22
|
+
}
|
|
23
|
+
}
|
|
24
|
+
/** The `ctx.modelDirectories` session model-selection service. */
|
|
25
|
+
export declare class ModelDirectoryResolver extends Service {
|
|
26
|
+
static inject: string[];
|
|
27
|
+
private readonly live;
|
|
28
|
+
private readonly catalog;
|
|
29
|
+
/** Localized composer-block copy; this plugin owns the string it raises. */
|
|
30
|
+
private readonly blockReason;
|
|
31
|
+
/**
|
|
32
|
+
* @param ctx - owning root context (the service registers itself as `models`).
|
|
33
|
+
* @param config - the bound translator for this plugin's own dictionary.
|
|
34
|
+
*/
|
|
35
|
+
constructor(ctx: Context, config: {
|
|
36
|
+
blockReason: () => string;
|
|
37
|
+
});
|
|
38
|
+
/**
|
|
39
|
+
* Resolve the per-session shared directory (lazy; the scope disposer
|
|
40
|
+
* removes and disposes it). Unknown sessions fail loud.
|
|
41
|
+
* @param sessionId - the owning session.
|
|
42
|
+
* @returns the resident directory both entries share.
|
|
43
|
+
*/
|
|
44
|
+
directoryFor(sessionId: SessionId): ModelDirectory;
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=service.d.ts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ModelSelect's injected face. The target 'conversation.input.model' seat is
|
|
3
|
+
* declared (children table) and typed by ui-conversation's composer-bar
|
|
4
|
+
* entry; this package only contributes the single occupant, so no SlotMap
|
|
5
|
+
* merge lives here.
|
|
6
|
+
*/
|
|
7
|
+
import type { ModelSelection } from '@prettier-ai/dsh-api-remotes/client';
|
|
8
|
+
import type { SnapshotStore } from '@prettier-ai/dsh-client-store';
|
|
9
|
+
import type { ModelDirectoryState } from './directory.ts';
|
|
10
|
+
/** Injected business face of the composer model seat. */
|
|
11
|
+
export interface ModelSelectInjected {
|
|
12
|
+
/** Whether this session supports Agent-bound model inspection and selection. */
|
|
13
|
+
available: boolean;
|
|
14
|
+
/** The session's shared directory store (same instance the /model popup reads). */
|
|
15
|
+
directory: SnapshotStore<ModelDirectoryState>;
|
|
16
|
+
/** Ensure the shared advisory catalog is loaded (errors land on the store). */
|
|
17
|
+
load: () => void;
|
|
18
|
+
/**
|
|
19
|
+
* Select a complete provider/model/reasoning selection.
|
|
20
|
+
* @param selection - model selection and optional adapter-owned effort.
|
|
21
|
+
* @returns whether the host accepted the selection.
|
|
22
|
+
*/
|
|
23
|
+
select: (selection: ModelSelection) => Promise<boolean>;
|
|
24
|
+
}
|
|
25
|
+
//# sourceMappingURL=slots.d.ts.map
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Model selection plugin, node half. Pure UI plugin: the empty apply exists
|
|
3
|
+
* so the plugin appears in the host cordis.yml / Loader; the browser half
|
|
4
|
+
* ships via exports["./client"], discovered through the package.json
|
|
5
|
+
* dsh.client declaration.
|
|
6
|
+
*/
|
|
7
|
+
/** Host plugin body — no host-side behavior for this surface plugin. */
|
|
8
|
+
export declare function apply(): void;
|
|
9
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package-owned invariant companion for `@prettier-ai/dsh-client-ui-model-selection`.
|
|
3
|
+
* @module @prettier-ai/dsh-client-ui-model-selection/invariant
|
|
4
|
+
*/
|
|
5
|
+
import type { Context } from '@prettier-ai/cordis';
|
|
6
|
+
/** Cordis companion plugin name. */
|
|
7
|
+
export declare const name = "client-ui-model-selection-invariant";
|
|
8
|
+
/** Service required before the companion can reserve package ownership. */
|
|
9
|
+
export declare const inject: string[];
|
|
10
|
+
/**
|
|
11
|
+
* Register this package's invariant companion.
|
|
12
|
+
* @param ctx - Cordis context carrying the invariant service.
|
|
13
|
+
* @returns the installed registration's disposer after setup succeeds.
|
|
14
|
+
*/
|
|
15
|
+
export declare const apply: (ctx: Context) => Promise<() => void>;
|
|
16
|
+
//# sourceMappingURL=invariant.d.ts.map
|
package/package.json
ADDED
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@prettier-ai/dsh-client-ui-model-selection",
|
|
3
|
+
"description": "Model selection over the shared model catalog, Session projection, and session.selectModel",
|
|
4
|
+
"version": "0.1.2-alpha.1",
|
|
5
|
+
"publishConfig": {
|
|
6
|
+
"access": "public"
|
|
7
|
+
},
|
|
8
|
+
"repository": {
|
|
9
|
+
"type": "git",
|
|
10
|
+
"url": "git+https://github.com/deepseek-ai/deepseek-harness.git",
|
|
11
|
+
"directory": "packages/client/ui-model-selection"
|
|
12
|
+
},
|
|
13
|
+
"type": "module",
|
|
14
|
+
"main": "lib/index.js",
|
|
15
|
+
"types": "lib/types/index.d.ts",
|
|
16
|
+
"exports": {
|
|
17
|
+
".": {
|
|
18
|
+
"types": "./lib/types/index.d.ts",
|
|
19
|
+
"default": "./lib/index.js"
|
|
20
|
+
},
|
|
21
|
+
"./invariant": {
|
|
22
|
+
"types": "./lib/types/invariant.d.ts",
|
|
23
|
+
"default": "./lib/invariant.js"
|
|
24
|
+
},
|
|
25
|
+
"./client": {
|
|
26
|
+
"types": "./lib/types/client/index.d.ts",
|
|
27
|
+
"default": "./lib/client.js"
|
|
28
|
+
},
|
|
29
|
+
"./src/*": "./src/*",
|
|
30
|
+
"./package.json": "./package.json"
|
|
31
|
+
},
|
|
32
|
+
"dsh": {
|
|
33
|
+
"client": {
|
|
34
|
+
"inject": [
|
|
35
|
+
"@prettier-ai/dsh-api-session-controller",
|
|
36
|
+
"@prettier-ai/dsh-client-locale",
|
|
37
|
+
"@prettier-ai/dsh-client-ui-commands",
|
|
38
|
+
"@prettier-ai/dsh-api-remotes"
|
|
39
|
+
],
|
|
40
|
+
"platform": "web"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"license": "MIT",
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"@prettier-ai/dsh-client-locale": "^0.1.2-alpha.1",
|
|
46
|
+
"@prettier-ai/dsh-client-ui-commands": "^0.1.2-alpha.1",
|
|
47
|
+
"@prettier-ai/dsh-client-ui-conversation": "^0.1.2-alpha.1",
|
|
48
|
+
"@prettier-ai/dsh-api-remotes": "^0.1.2-alpha.1",
|
|
49
|
+
"@prettier-ai/dsh-api-session-controller": "^0.1.2-alpha.1",
|
|
50
|
+
"@prettier-ai/cordis": "^4.0.1",
|
|
51
|
+
"@prettier-ai/dsh-client-ui-input-trigger": "^0.1.2-alpha.1",
|
|
52
|
+
"@prettier-ai/dsh-typert-protocol": "^0.1.2-alpha.1",
|
|
53
|
+
"@prettier-ai/dsh-session": "^0.1.2-alpha.1",
|
|
54
|
+
"@prettier-ai/dsh-client-ui-renderer": "^0.1.2-alpha.1",
|
|
55
|
+
"@prettier-ai/dsh-client-ui-session": "^0.1.2-alpha.1",
|
|
56
|
+
"@prettier-ai/dsh-invariants": "^0.1.2-alpha.1"
|
|
57
|
+
},
|
|
58
|
+
"devDependencies": {
|
|
59
|
+
"@types/react": "~18.3.1",
|
|
60
|
+
"react": "^18.2.0",
|
|
61
|
+
"@prettier-ai/dsh-api-remotes": "^0.1.2-alpha.1",
|
|
62
|
+
"@prettier-ai/dsh-client-test-runtime": "^0.1.2-alpha.1",
|
|
63
|
+
"@prettier-ai/dsh-api-session-controller": "^0.1.2-alpha.1",
|
|
64
|
+
"@prettier-ai/dsh-client-ui-conversation": "^0.1.2-alpha.1",
|
|
65
|
+
"@prettier-ai/dsh-client-ui-commands": "^0.1.2-alpha.1",
|
|
66
|
+
"@prettier-ai/dsh-client-locale": "^0.1.2-alpha.1",
|
|
67
|
+
"@prettier-ai/dsh-client-ui-input-trigger": "^0.1.2-alpha.1",
|
|
68
|
+
"@prettier-ai/dsh-client-ui-primitives": "^0.1.2-alpha.1",
|
|
69
|
+
"@prettier-ai/dsh-client-ui-slots": "^0.1.2-alpha.1",
|
|
70
|
+
"@prettier-ai/dsh-invariants": "^0.1.2-alpha.1",
|
|
71
|
+
"@prettier-ai/dsh-typert-protocol": "^0.1.2-alpha.1",
|
|
72
|
+
"@prettier-ai/cordis": "^4.0.1",
|
|
73
|
+
"@prettier-ai/dsh-client-store": "^0.1.2-alpha.1",
|
|
74
|
+
"@prettier-ai/dsh-session": "^0.1.2-alpha.1",
|
|
75
|
+
"@prettier-ai/dsh-client-ui-renderer": "^0.1.2-alpha.1",
|
|
76
|
+
"@prettier-ai/dsh-client-ui-session": "^0.1.2-alpha.1"
|
|
77
|
+
},
|
|
78
|
+
"files": [
|
|
79
|
+
"lib/index.js",
|
|
80
|
+
"lib/invariant.js",
|
|
81
|
+
"lib/client.js",
|
|
82
|
+
"lib/types/**/*.d.ts"
|
|
83
|
+
],
|
|
84
|
+
"dependencies": {
|
|
85
|
+
"clsx": "^2.1.1"
|
|
86
|
+
},
|
|
87
|
+
"scripts": {
|
|
88
|
+
"bundle": "tsdown",
|
|
89
|
+
"watch": "tsdown --watch"
|
|
90
|
+
}
|
|
91
|
+
}
|