@prettier-ai/dsh-client-ui-settings-plugins 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 +108 -0
- package/README.zh.md +108 -0
- package/lib/client.js +1837 -0
- package/lib/index.js +13 -0
- package/lib/invariant.js +24 -0
- package/lib/types/client/AgentLoopCard.d.ts +12 -0
- package/lib/types/client/BashCard.d.ts +12 -0
- package/lib/types/client/ConfigurablePluginsTab.d.ts +19 -0
- package/lib/types/client/PluginCard.d.ts +42 -0
- package/lib/types/client/PluginsSettingsSection.d.ts +27 -0
- package/lib/types/client/SubagentModelSelectionCard.d.ts +12 -0
- package/lib/types/client/WebSearchCard.d.ts +16 -0
- package/lib/types/client/agent-loop-card-controller.d.ts +43 -0
- package/lib/types/client/bash-card-controller.d.ts +45 -0
- package/lib/types/client/card-form.d.ts +171 -0
- package/lib/types/client/fields.d.ts +61 -0
- package/lib/types/client/index.d.ts +29 -0
- package/lib/types/client/locales.d.ts +8 -0
- package/lib/types/client/slot-contract.d.ts +31 -0
- package/lib/types/client/subagent-model-selection-card-controller.d.ts +127 -0
- package/lib/types/client/tab-store.d.ts +65 -0
- package/lib/types/client/web-search-card-controller.d.ts +94 -0
- package/lib/types/index.d.ts +11 -0
- package/lib/types/invariant.d.ts +16 -0
- package/package.json +81 -0
|
@@ -0,0 +1,127 @@
|
|
|
1
|
+
/** Staged editor for the Host-owned subagent model allowlist. */
|
|
2
|
+
import type { ClientRemote, ModelProviderGroup } from '@prettier-ai/dsh-api-remotes/client';
|
|
3
|
+
import { type SnapshotStore } from '@prettier-ai/dsh-client-store';
|
|
4
|
+
import type { SettingsScope } from '@prettier-ai/dsh-client-ui-settings/client';
|
|
5
|
+
import type { CardShell } from './card-form.ts';
|
|
6
|
+
/** Namespace of the Host-owned subagent model-selection preference. */
|
|
7
|
+
export declare const SUBAGENT_MODEL_SELECTION_NS = "subagent-model-selection";
|
|
8
|
+
/** One exact provider/model route stored as user authorization. */
|
|
9
|
+
export interface AllowedSubagentModel {
|
|
10
|
+
provider: string;
|
|
11
|
+
model: string;
|
|
12
|
+
}
|
|
13
|
+
/** Settings fields stored for subagent model selection. */
|
|
14
|
+
export interface SubagentModelSelectionSettings {
|
|
15
|
+
/** Whether model-facing child route selection applies to new Sessions. */
|
|
16
|
+
enabled: boolean;
|
|
17
|
+
/** Exact child routes offered to newly composed top-level Sessions. */
|
|
18
|
+
allowedModels: AllowedSubagentModel[];
|
|
19
|
+
}
|
|
20
|
+
/** One catalog row joined with a stored route that may no longer be advertised. */
|
|
21
|
+
export interface SubagentModelCandidate extends AllowedSubagentModel {
|
|
22
|
+
/** Stable opaque identity used only for lookup. */
|
|
23
|
+
key: string;
|
|
24
|
+
/** Adapter-owned provider display name. */
|
|
25
|
+
providerName: string;
|
|
26
|
+
/** Adapter-owned model display name. */
|
|
27
|
+
modelName: string;
|
|
28
|
+
/** Whether the current adapter catalog advertises this exact route. */
|
|
29
|
+
available: boolean;
|
|
30
|
+
/** Whether the current draft authorizes this route. */
|
|
31
|
+
selected: boolean;
|
|
32
|
+
}
|
|
33
|
+
/** State rendered by the staged allowlist card. */
|
|
34
|
+
export interface SubagentModelSelectionCardState extends CardShell {
|
|
35
|
+
/** Whether the draft enables model-facing child route selection. */
|
|
36
|
+
enabled: boolean;
|
|
37
|
+
/** Live catalog joined with stored routes. */
|
|
38
|
+
candidates: readonly SubagentModelCandidate[];
|
|
39
|
+
/** Adapter-directory request state. */
|
|
40
|
+
catalogStatus: 'idle' | 'loading' | 'ready' | 'error';
|
|
41
|
+
/** Whether any provider-local catalog request failed. */
|
|
42
|
+
catalogPartial: boolean;
|
|
43
|
+
/** Whether a newer Host revision invalidated the current draft. */
|
|
44
|
+
conflicted: boolean;
|
|
45
|
+
}
|
|
46
|
+
/** Registration-side face for the subagent model-selection card. */
|
|
47
|
+
export interface SubagentModelSelectionCardFace {
|
|
48
|
+
hooks: {
|
|
49
|
+
/** Card snapshot bound by the renderer as useSubagentModelSelectionCard. */
|
|
50
|
+
subagentModelSelectionCard: SnapshotStore<SubagentModelSelectionCardState>;
|
|
51
|
+
};
|
|
52
|
+
/** Stage the enabled state; enabling also loads the adapter directory. */
|
|
53
|
+
toggleEnabled: () => void;
|
|
54
|
+
/** Stage one exact route as allowed or denied. */
|
|
55
|
+
toggleModel: (key: string) => void;
|
|
56
|
+
/** Retry the adapter directory. */
|
|
57
|
+
retryCatalog: () => void;
|
|
58
|
+
/** Persist the switch and exact routes as one revision-fenced mutation. */
|
|
59
|
+
save: () => void;
|
|
60
|
+
/** Drop the staged enabled state and route choices. */
|
|
61
|
+
discard: () => void;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Stable identity for one exact route; callers resolve it by lookup and never parse it.
|
|
65
|
+
* @param route - Provider/model route to identify.
|
|
66
|
+
* @returns Opaque key for lookup within the card.
|
|
67
|
+
*/
|
|
68
|
+
export declare function subagentModelKey(route: AllowedSubagentModel): string;
|
|
69
|
+
/**
|
|
70
|
+
* Join live adapter metadata with stored routes that remain removable after disappearance.
|
|
71
|
+
* @param groups - Current model directory grouped by provider.
|
|
72
|
+
* @param stored - Routes in the effective settings value.
|
|
73
|
+
* @param selected - Opaque route keys selected in the current draft.
|
|
74
|
+
* @returns Candidate rows for the card.
|
|
75
|
+
*/
|
|
76
|
+
export declare function subagentModelCandidates(groups: readonly ModelProviderGroup[], stored: readonly AllowedSubagentModel[], selected: ReadonlySet<string>): SubagentModelCandidate[];
|
|
77
|
+
/** Bridges one settings scope and the live adapter directory onto a staged card. */
|
|
78
|
+
export declare class SubagentModelSelectionCardController {
|
|
79
|
+
private readonly scope;
|
|
80
|
+
private readonly session;
|
|
81
|
+
private catalogGroups;
|
|
82
|
+
private catalogPartial;
|
|
83
|
+
private catalogStatus;
|
|
84
|
+
private draftEnabled;
|
|
85
|
+
private draftRoutes;
|
|
86
|
+
private draftRevision;
|
|
87
|
+
private saving;
|
|
88
|
+
private failed;
|
|
89
|
+
private conflicted;
|
|
90
|
+
private disposed;
|
|
91
|
+
private saveGeneration;
|
|
92
|
+
private catalogGeneration;
|
|
93
|
+
private readonly store;
|
|
94
|
+
private readonly unsubscribe;
|
|
95
|
+
/**
|
|
96
|
+
* @param scope - bound `subagent-model-selection` settings scope.
|
|
97
|
+
* @param session - Host Session model-catalog face.
|
|
98
|
+
*/
|
|
99
|
+
constructor(scope: SettingsScope<SubagentModelSelectionSettings>, session: Pick<ClientRemote['session'], 'modelCatalog'>);
|
|
100
|
+
/** Stop observing settings and suppress late directory/write settlements. */
|
|
101
|
+
dispose(): void;
|
|
102
|
+
/**
|
|
103
|
+
* Build the renderer face for this card.
|
|
104
|
+
* @returns The snapshot and staged card actions injected into the renderer.
|
|
105
|
+
*/
|
|
106
|
+
inject(): SubagentModelSelectionCardFace;
|
|
107
|
+
private currentRoutes;
|
|
108
|
+
private currentEnabled;
|
|
109
|
+
private selected;
|
|
110
|
+
private enabled;
|
|
111
|
+
private beginDraft;
|
|
112
|
+
private toggleEnabled;
|
|
113
|
+
private toggleModel;
|
|
114
|
+
private clearDraft;
|
|
115
|
+
private discard;
|
|
116
|
+
private candidates;
|
|
117
|
+
private desiredRoutes;
|
|
118
|
+
private save;
|
|
119
|
+
/** Invalidate and reload model candidates after a Host model input changes. */
|
|
120
|
+
refreshCatalog(): void;
|
|
121
|
+
/** Drop Host-specific candidates and drafts, then reload after reconnecting. */
|
|
122
|
+
resetConnection(): void;
|
|
123
|
+
private loadCatalog;
|
|
124
|
+
private projection;
|
|
125
|
+
private publish;
|
|
126
|
+
}
|
|
127
|
+
//# sourceMappingURL=subagent-model-selection-card-controller.d.ts.map
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The configurable-plugins tab's card list.
|
|
3
|
+
*
|
|
4
|
+
* The tab dispatches its slot by settings namespace, so what it renders is
|
|
5
|
+
* the intersection of two ledgers: the namespaces the Host serves and the
|
|
6
|
+
* cards registered into `settings.plugin.item`. A served namespace no card
|
|
7
|
+
* claims renders nothing — another surface owns it, or this deployment ships
|
|
8
|
+
* no browser half for it — and a card whose namespace the Host does not serve
|
|
9
|
+
* is never dispatched, so a plugin this deployment did not compose leaves no
|
|
10
|
+
* trace and does not count toward the empty line.
|
|
11
|
+
*/
|
|
12
|
+
import type { SettingsDescribeFace } from '@prettier-ai/dsh-client-ui-settings/client';
|
|
13
|
+
import type { StoredEntry } from '@prettier-ai/dsh-client-ui-slots';
|
|
14
|
+
import { type SnapshotStore } from '@prettier-ai/dsh-client-store';
|
|
15
|
+
/** What the section renders. */
|
|
16
|
+
export interface ConfigurablePluginsTabState {
|
|
17
|
+
/**
|
|
18
|
+
* Whether the Host has answered once. The empty line waits for it: an
|
|
19
|
+
* unanswered read is not the same statement as "this deployment configures
|
|
20
|
+
* no plugin", and saying the second while the first is true would flash a
|
|
21
|
+
* wrong answer on every open.
|
|
22
|
+
*/
|
|
23
|
+
loaded: boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Namespaces to dispatch, in the order their cards registered, narrowed to
|
|
26
|
+
* those the Host serves. Card registration order rather than the Host's
|
|
27
|
+
* description order: the latter follows plugin activation, which async
|
|
28
|
+
* settings injection can reorder between boots, and a settings page whose
|
|
29
|
+
* cards move between visits is worse than one whose order a registrant
|
|
30
|
+
* chose.
|
|
31
|
+
*/
|
|
32
|
+
namespaces: string[];
|
|
33
|
+
}
|
|
34
|
+
/** The registration-side face the tab's slot entry injects. */
|
|
35
|
+
export interface ConfigurablePluginsTabFace {
|
|
36
|
+
hooks: {
|
|
37
|
+
/** Section snapshot bound by the renderer as usePluginConfigSection. */
|
|
38
|
+
configurablePlugins: SnapshotStore<ConfigurablePluginsTabState>;
|
|
39
|
+
};
|
|
40
|
+
}
|
|
41
|
+
/** Derives the served namespaces from the shared describe mirror and pairs them with the cards that claim them. */
|
|
42
|
+
export declare class ConfigurablePluginsTabController {
|
|
43
|
+
private readonly describeFace;
|
|
44
|
+
private readonly entries;
|
|
45
|
+
private readonly store;
|
|
46
|
+
private disposed;
|
|
47
|
+
private readonly unsubscribe;
|
|
48
|
+
/**
|
|
49
|
+
* @param describeFace - the shared mirror's describe face; its refreshes
|
|
50
|
+
* (document commits, reconnects) are what keep the served set current.
|
|
51
|
+
* @param entries - reads the cards currently registered into the section's slot.
|
|
52
|
+
*/
|
|
53
|
+
constructor(describeFace: SettingsDescribeFace, entries: () => readonly StoredEntry[]);
|
|
54
|
+
/** Republish after the slot ledger changed; a card registered late joins here. */
|
|
55
|
+
refresh(): void;
|
|
56
|
+
/** Stop publishing and stop following the mirror. */
|
|
57
|
+
dispose(): void;
|
|
58
|
+
/**
|
|
59
|
+
* Build the face the tab's slot registration injects.
|
|
60
|
+
* @returns the tab's snapshot source.
|
|
61
|
+
*/
|
|
62
|
+
inject(): ConfigurablePluginsTabFace;
|
|
63
|
+
private publish;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=tab-store.d.ts.map
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The web-search card's staged form over the `web-search-deepseek` settings
|
|
3
|
+
* namespace.
|
|
4
|
+
*
|
|
5
|
+
* The key is the one control that does not live in the section: its literal
|
|
6
|
+
* never rides a response, so the card learns only whether one is configured
|
|
7
|
+
* and writes it through the credentials domain, addressed by the reference the
|
|
8
|
+
* section names. It is still staged with the rest of the form, so one save
|
|
9
|
+
* covers everything the card shows.
|
|
10
|
+
*/
|
|
11
|
+
import type { ClientRemote } from '@prettier-ai/dsh-api-remotes/client';
|
|
12
|
+
import type { SnapshotStore } from '@prettier-ai/dsh-client-store';
|
|
13
|
+
import type { SettingsScope } from '@prettier-ai/dsh-client-ui-settings/client';
|
|
14
|
+
import { type CardActions, type CardFieldState, type CardShell } from './card-form.ts';
|
|
15
|
+
/**
|
|
16
|
+
* Namespace of the DeepSeek search provider. Spelled here rather than
|
|
17
|
+
* imported: a client package must not depend on a Host package.
|
|
18
|
+
*/
|
|
19
|
+
export declare const WEB_SEARCH_NS = "web-search-deepseek";
|
|
20
|
+
/** The search-provider fields this card edits. */
|
|
21
|
+
export interface WebSearchSettings {
|
|
22
|
+
/** Credential reference naming the environment key. */
|
|
23
|
+
apiKeyEnv?: string;
|
|
24
|
+
/** Provider endpoint; blank inherits the provider default. */
|
|
25
|
+
baseURL?: string;
|
|
26
|
+
/** Maximum searches served within one request. */
|
|
27
|
+
maxUses?: number;
|
|
28
|
+
}
|
|
29
|
+
/** The credentials Remote methods this card reads and writes through. */
|
|
30
|
+
export type WebSearchCredentials = Pick<ClientRemote['credentials'], 'describe' | 'set'>;
|
|
31
|
+
/** What the web-search card renders. */
|
|
32
|
+
export interface WebSearchCardState extends CardShell {
|
|
33
|
+
/** Provider endpoint. */
|
|
34
|
+
baseURL: CardFieldState;
|
|
35
|
+
/** Searches allowed per request. */
|
|
36
|
+
maxUses: CardFieldState;
|
|
37
|
+
/** The staged credential, which starts blank on every load. */
|
|
38
|
+
apiKey: CardFieldState;
|
|
39
|
+
/** Whether the Host reports a credential configured for the referenced key. */
|
|
40
|
+
apiKeyConfigured: boolean;
|
|
41
|
+
/** Whether the credentials domain accepts a write for it; false disables the control. */
|
|
42
|
+
apiKeyWritable: boolean;
|
|
43
|
+
}
|
|
44
|
+
/** The registration-side face the web-search card's slot entry injects. */
|
|
45
|
+
export interface WebSearchCardFace extends CardActions {
|
|
46
|
+
hooks: {
|
|
47
|
+
/** Card snapshot bound by the renderer as useWebSearchCard. */
|
|
48
|
+
webSearchCard: SnapshotStore<WebSearchCardState>;
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
/** Bridges the `web-search-deepseek` scope and the credentials domain onto the card. */
|
|
52
|
+
export declare class WebSearchCardController {
|
|
53
|
+
private readonly scope;
|
|
54
|
+
private readonly credentials;
|
|
55
|
+
private readonly form;
|
|
56
|
+
private readonly store;
|
|
57
|
+
private credential;
|
|
58
|
+
/**
|
|
59
|
+
* @param scope - the bound settings scope for the `web-search-deepseek` namespace.
|
|
60
|
+
* @param credentials - Remote face used for the credential the section references.
|
|
61
|
+
*/
|
|
62
|
+
constructor(scope: SettingsScope<WebSearchSettings>, credentials: WebSearchCredentials);
|
|
63
|
+
private projection;
|
|
64
|
+
/**
|
|
65
|
+
* Ask the credentials domain about the reference the section currently names.
|
|
66
|
+
*
|
|
67
|
+
* The answer is stored with the reference it describes: `apiKeyEnv` can
|
|
68
|
+
* change between the request and its response, and two reads can settle out
|
|
69
|
+
* of order, so a response is published only while it still answers for the
|
|
70
|
+
* reference in force.
|
|
71
|
+
*/
|
|
72
|
+
private readCredential;
|
|
73
|
+
/**
|
|
74
|
+
* Re-read after the Host reports a change to the reference this card watches.
|
|
75
|
+
*
|
|
76
|
+
* A key can be written from somewhere else — the Models page addresses the
|
|
77
|
+
* same reference — and the settings section does not change when it is, so
|
|
78
|
+
* without this the badge keeps reporting a state the Host already replaced.
|
|
79
|
+
* @param ref - the reference the Host reports as changed.
|
|
80
|
+
*/
|
|
81
|
+
refreshCredential(ref: string): void;
|
|
82
|
+
/**
|
|
83
|
+
* Build the face the card's slot registration injects.
|
|
84
|
+
* @returns the card's snapshot and its form actions.
|
|
85
|
+
*/
|
|
86
|
+
inject(): WebSearchCardFace;
|
|
87
|
+
/**
|
|
88
|
+
* Write the staged key, then re-read whether the Host now holds one.
|
|
89
|
+
* @param value - the staged credential literal.
|
|
90
|
+
* @returns whether the Host reports a configured credential afterwards.
|
|
91
|
+
*/
|
|
92
|
+
private writeKey;
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=web-search-card-controller.d.ts.map
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Plugins settings surface, node half. The empty apply exists so the plugin
|
|
3
|
+
* appears in the host cordis.yml / Loader; the browser half owns the section
|
|
4
|
+
* and its configurable tab through exports["./client"], discovered from the
|
|
5
|
+
* package.json dsh.client declaration. Every section this page edits is owned
|
|
6
|
+
* by the Host plugin that registered it, so this package registers no
|
|
7
|
+
* namespace of its own.
|
|
8
|
+
*/
|
|
9
|
+
/** Host plugin body — no host-side behavior for this surface plugin. */
|
|
10
|
+
export declare function apply(): void;
|
|
11
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package-owned invariant companion for `@prettier-ai/dsh-client-ui-settings-plugins`.
|
|
3
|
+
* @module @prettier-ai/dsh-client-ui-settings-plugins/invariant
|
|
4
|
+
*/
|
|
5
|
+
import type { Context } from '@prettier-ai/cordis';
|
|
6
|
+
/** Cordis companion plugin name. */
|
|
7
|
+
export declare const name = "client-ui-settings-plugins-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,81 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@prettier-ai/dsh-client-ui-settings-plugins",
|
|
3
|
+
"description": "Plugins settings section with feature-owned tabs and configurable host-plane plugin cards",
|
|
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-settings-plugins"
|
|
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-client-connection",
|
|
36
|
+
"@prettier-ai/dsh-client-locale",
|
|
37
|
+
"@prettier-ai/dsh-client-ui-settings",
|
|
38
|
+
"@prettier-ai/dsh-api-remotes"
|
|
39
|
+
],
|
|
40
|
+
"platform": "web"
|
|
41
|
+
}
|
|
42
|
+
},
|
|
43
|
+
"license": "MIT",
|
|
44
|
+
"peerDependencies": {
|
|
45
|
+
"@prettier-ai/cordis": "^4.0.1",
|
|
46
|
+
"@prettier-ai/dsh-api-remotes": "^0.1.2-alpha.1",
|
|
47
|
+
"@prettier-ai/dsh-client-connection": "^0.1.2-alpha.1",
|
|
48
|
+
"@prettier-ai/dsh-client-locale": "^0.1.2-alpha.1",
|
|
49
|
+
"@prettier-ai/dsh-invariants": "^0.1.2-alpha.1",
|
|
50
|
+
"@prettier-ai/dsh-client-ui-settings": "^0.1.2-alpha.1",
|
|
51
|
+
"@prettier-ai/dsh-client-ui-renderer": "^0.1.2-alpha.1"
|
|
52
|
+
},
|
|
53
|
+
"devDependencies": {
|
|
54
|
+
"@types/react": "~18.3.1",
|
|
55
|
+
"react": "^18.2.0",
|
|
56
|
+
"@prettier-ai/cordis": "^4.0.1",
|
|
57
|
+
"@prettier-ai/dsh-client-connection": "^0.1.2-alpha.1",
|
|
58
|
+
"@prettier-ai/dsh-api-remotes": "^0.1.2-alpha.1",
|
|
59
|
+
"@prettier-ai/dsh-client-locale": "^0.1.2-alpha.1",
|
|
60
|
+
"@prettier-ai/dsh-client-store": "^0.1.2-alpha.1",
|
|
61
|
+
"@prettier-ai/dsh-client-test-runtime": "^0.1.2-alpha.1",
|
|
62
|
+
"@prettier-ai/dsh-client-ui-primitives": "^0.1.2-alpha.1",
|
|
63
|
+
"@prettier-ai/dsh-client-ui-settings": "^0.1.2-alpha.1",
|
|
64
|
+
"@prettier-ai/dsh-invariants": "^0.1.2-alpha.1",
|
|
65
|
+
"@prettier-ai/dsh-client-ui-renderer": "^0.1.2-alpha.1",
|
|
66
|
+
"@prettier-ai/dsh-client-ui-slots": "^0.1.2-alpha.1"
|
|
67
|
+
},
|
|
68
|
+
"files": [
|
|
69
|
+
"lib/index.js",
|
|
70
|
+
"lib/invariant.js",
|
|
71
|
+
"lib/client.js",
|
|
72
|
+
"lib/types/**/*.d.ts"
|
|
73
|
+
],
|
|
74
|
+
"dependencies": {
|
|
75
|
+
"clsx": "^2.0.0"
|
|
76
|
+
},
|
|
77
|
+
"scripts": {
|
|
78
|
+
"bundle": "tsdown",
|
|
79
|
+
"watch": "tsdown --watch"
|
|
80
|
+
}
|
|
81
|
+
}
|