@prettier-ai/dsh-client-ui-user-questions 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 +103 -0
- package/README.zh.md +103 -0
- package/lib/client.js +891 -0
- package/lib/index.js +16 -0
- package/lib/invariant.js +24 -0
- package/lib/types/client/PlanReviewPanel.d.ts +14 -0
- package/lib/types/client/QuestionComposer.d.ts +26 -0
- package/lib/types/client/contract/slots.d.ts +109 -0
- package/lib/types/client/draft-store.d.ts +37 -0
- package/lib/types/client/index.d.ts +34 -0
- package/lib/types/client/locales.d.ts +40 -0
- package/lib/types/index.d.ts +14 -0
- package/lib/types/invariant.d.ts +16 -0
- package/package.json +94 -0
package/lib/index.js
ADDED
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
//#region lib/types/index.js
|
|
2
|
+
/**
|
|
3
|
+
* Web question plugin, node half.
|
|
4
|
+
*
|
|
5
|
+
* Deliberately empty. Mounting `ask_user_question` here put it in the tools
|
|
6
|
+
* registry's GLOBAL layer, so every agent saw it no matter which preset
|
|
7
|
+
* composed it — a two-tool benchmark preset actually presented three, and a
|
|
8
|
+
* locally authored `bash-only` preset presented two. Rendering a question is
|
|
9
|
+
* a host UI capability; having the tool is an agent capability, and only a
|
|
10
|
+
* preset decides that. The `tool-ask-user` row belongs in the presets that
|
|
11
|
+
* want it (and in the TUI composition, which has no presets).
|
|
12
|
+
*/
|
|
13
|
+
/** Host plugin body — the model-facing tool is composed per preset, not here. */
|
|
14
|
+
function apply() {}
|
|
15
|
+
//#endregion
|
|
16
|
+
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-user-questions`.
|
|
4
|
+
* @module @prettier-ai/dsh-client-ui-user-questions/invariant
|
|
5
|
+
*/
|
|
6
|
+
const PACKAGE_NAME = "@prettier-ai/dsh-client-ui-user-questions";
|
|
7
|
+
/** Cordis companion plugin name. */
|
|
8
|
+
const name = "client-ui-user-questions-invariant";
|
|
9
|
+
/** Service required before the companion can reserve package ownership. */
|
|
10
|
+
const inject = ["invariants"];
|
|
11
|
+
/**
|
|
12
|
+
* No runtime invariant: tool and slot registrations are effects
|
|
13
|
+
* owned and observed by their respective registries; the host pending table is
|
|
14
|
+
* exercised through the public wire protocol.
|
|
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,14 @@
|
|
|
1
|
+
import type { PendingQuestion, PlanReview, QuestionComposerProps } from './contract/slots.ts';
|
|
2
|
+
/** The panel's own props: the question domain face, the narrowed review, and the locale seat. */
|
|
3
|
+
export type PlanReviewPanelProps = {
|
|
4
|
+
pending: PendingQuestion;
|
|
5
|
+
review: PlanReview;
|
|
6
|
+
} & Pick<QuestionComposerProps, 't'>;
|
|
7
|
+
/**
|
|
8
|
+
* Render a plan review as a decision card.
|
|
9
|
+
*
|
|
10
|
+
* @param props - the question domain face, the narrowed plan review, and `t`.
|
|
11
|
+
* @returns The plan-review takeover for this request.
|
|
12
|
+
*/
|
|
13
|
+
export declare function PlanReviewPanel({ pending, review, t }: PlanReviewPanelProps): import("react").JSX.Element;
|
|
14
|
+
//# sourceMappingURL=PlanReviewPanel.d.ts.map
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { type QuestionComposerProps } from './contract/slots.ts';
|
|
2
|
+
/**
|
|
3
|
+
* Split the conventional recommendation suffix without changing the answer value.
|
|
4
|
+
* @param label - Original option label returned if selected.
|
|
5
|
+
* @returns Display label plus recommendation state.
|
|
6
|
+
*/
|
|
7
|
+
export declare function parseRecommendedLabel(label: string): {
|
|
8
|
+
label: string;
|
|
9
|
+
recommended: boolean;
|
|
10
|
+
};
|
|
11
|
+
/**
|
|
12
|
+
* Composer takeover router. Generic-question drafts live in this entry's
|
|
13
|
+
* Session-scoped Slot store, keyed by the pending carrier, so a strict Session
|
|
14
|
+
* entry remount restores the same request without exposing it to another one.
|
|
15
|
+
*
|
|
16
|
+
* One takeover, two presentations: a request that declares a presentation intent this
|
|
17
|
+
* package renders uses that presentation (a plan review is one decision over one
|
|
18
|
+
* plan, not a question set), and every other request takes the generic flow.
|
|
19
|
+
* The routing lives here, at the one entry that owns the composer seat, so
|
|
20
|
+
* neither presentation can claim a request the other is already rendering.
|
|
21
|
+
*
|
|
22
|
+
* @param props - the selector-matched pending question carrier plus the framework standard kit.
|
|
23
|
+
* @returns The question flow, or the intent's own surface, for this request.
|
|
24
|
+
*/
|
|
25
|
+
export declare function QuestionComposer(props: QuestionComposerProps): import("react").JSX.Element;
|
|
26
|
+
//# sourceMappingURL=QuestionComposer.d.ts.map
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
/** Question composer props and one pending Remote waterfall response. */
|
|
2
|
+
import type { PropsLocale, PropsRuntime, PropsStore } from '@prettier-ai/dsh-client-ui-slots';
|
|
3
|
+
import type { SessionId } from '@prettier-ai/dsh-session/types';
|
|
4
|
+
import type { AskUserQuestionAnswer, AskUserQuestionItem } from '@prettier-ai/dsh-user-questions';
|
|
5
|
+
import type { createQuestionDraftStore } from '../draft-store.ts';
|
|
6
|
+
declare module '@prettier-ai/dsh-client-ui-session/client' {
|
|
7
|
+
interface SessionPendingInteractionMap {
|
|
8
|
+
/** Pending question or plan-review request. */
|
|
9
|
+
question: PendingQuestion;
|
|
10
|
+
}
|
|
11
|
+
}
|
|
12
|
+
/** One structured answer batch covering every question of the request. */
|
|
13
|
+
export type QuestionAnswer = AskUserQuestionAnswer;
|
|
14
|
+
/** One question of the request. */
|
|
15
|
+
type QuestionItem = AskUserQuestionItem;
|
|
16
|
+
/** One option the asker offered on a question. */
|
|
17
|
+
type QuestionOption = NonNullable<QuestionItem['options']>[number];
|
|
18
|
+
/**
|
|
19
|
+
* A request narrowed to the `plan-review` presentation intent: everything the
|
|
20
|
+
* decision card renders and answers with, so the panel never re-reads the
|
|
21
|
+
* request fields. `approve` and `decline` are the asker's own options — an
|
|
22
|
+
* answer must carry one of those labels verbatim — and `plan` is the markdown
|
|
23
|
+
* body under review.
|
|
24
|
+
*/
|
|
25
|
+
export interface PlanReview {
|
|
26
|
+
/** The reviewed question's id, echoed in the answer. */
|
|
27
|
+
id: string;
|
|
28
|
+
/** The question text, kept as the card's accessible name. */
|
|
29
|
+
question: string;
|
|
30
|
+
/** The plan markdown under review. */
|
|
31
|
+
plan: string;
|
|
32
|
+
/** The option that approves the plan. */
|
|
33
|
+
approve: QuestionOption;
|
|
34
|
+
/** The option that declines it; absent when the asker offered no other option. */
|
|
35
|
+
decline?: QuestionOption;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Narrow a request to a renderable plan review, or return undefined to leave it
|
|
39
|
+
* to the generic question flow.
|
|
40
|
+
*
|
|
41
|
+
* The card is one decision over one plan, and it claims a request only when it
|
|
42
|
+
* can send every answer that request allows — an intent changes the layout,
|
|
43
|
+
* never which answers are reachable. So the batch must be a single question
|
|
44
|
+
* that declares the intent, carries the plan as its detail, offers the approve
|
|
45
|
+
* label the intent names, and is a binary single choice: at most one option
|
|
46
|
+
* besides approve, and not multi-select. A third option or a multi-select batch
|
|
47
|
+
* has answers two buttons cannot express, so the generic flow keeps it — as it
|
|
48
|
+
* keeps any request whose intent the asker's own service would have rejected,
|
|
49
|
+
* because the client sits downstream of a wire boundary and every request must
|
|
50
|
+
* stay answerable.
|
|
51
|
+
*
|
|
52
|
+
* @param questions - the request's whole question batch.
|
|
53
|
+
* @returns The narrowed review, or undefined when the generic flow owns it.
|
|
54
|
+
*/
|
|
55
|
+
export declare function planReviewOf(questions: readonly QuestionItem[]): PlanReview | undefined;
|
|
56
|
+
/** One answerable Client presentation of a pending Host waterfall. */
|
|
57
|
+
export declare class PendingQuestion {
|
|
58
|
+
#private;
|
|
59
|
+
readonly sessionId: SessionId;
|
|
60
|
+
/** Presentation discriminator used by Session pending-interaction consumers. */
|
|
61
|
+
readonly kind: 'question' | 'plan-review';
|
|
62
|
+
/** Opaque render identity and request key for the Session-scoped draft store. */
|
|
63
|
+
readonly key: string;
|
|
64
|
+
/** The request's question list. */
|
|
65
|
+
readonly questions: readonly AskUserQuestionItem[];
|
|
66
|
+
/** Result returned by the Remote Event listener to the Host waterfall. */
|
|
67
|
+
readonly result: Promise<QuestionAnswer>;
|
|
68
|
+
/**
|
|
69
|
+
* @param sessionId - Agent/Session identity owning the scoped request.
|
|
70
|
+
* @param questions - complete question batch.
|
|
71
|
+
* @param signal - Host request and delivery lifetime.
|
|
72
|
+
*/
|
|
73
|
+
constructor(sessionId: SessionId, questions: readonly AskUserQuestionItem[], signal?: AbortSignal);
|
|
74
|
+
/**
|
|
75
|
+
* Resolve the Host waterfall with the whole answer batch.
|
|
76
|
+
* @param answer - complete structured answer batch.
|
|
77
|
+
*/
|
|
78
|
+
answer(answer: QuestionAnswer): Promise<void>;
|
|
79
|
+
/** Delegate an unanswered request to the next waterfall listener. */
|
|
80
|
+
delegate(): void;
|
|
81
|
+
/**
|
|
82
|
+
* Test whether a rejection requests waterfall delegation.
|
|
83
|
+
* @param reason - rejection received from {@link PendingQuestion.result}.
|
|
84
|
+
* @returns whether {@link PendingQuestion.delegate} produced it.
|
|
85
|
+
*/
|
|
86
|
+
isDelegation(reason: unknown): boolean;
|
|
87
|
+
/** Reject the Host waterfall because the user closed the question. */
|
|
88
|
+
cancel(): Promise<void>;
|
|
89
|
+
/**
|
|
90
|
+
* End an unanswered presentation when its transport, scope, or plugin lifetime ends.
|
|
91
|
+
* @param reason - rejection exposed to the waiting Remote Event listener.
|
|
92
|
+
*/
|
|
93
|
+
abort(reason: unknown): void;
|
|
94
|
+
private finish;
|
|
95
|
+
}
|
|
96
|
+
/** Pending value returned by the composer-chain selector. */
|
|
97
|
+
export type QuestionWait = PendingQuestion;
|
|
98
|
+
/**
|
|
99
|
+
* Full component props: the framework runtime share (chain currency +
|
|
100
|
+
* session/global standard kit) plus the chain `matched` share — the entry's
|
|
101
|
+
* selector result, already narrowed to the question carrier — plus the
|
|
102
|
+
* standard locale seat; the carrier plus the domain face above carry the
|
|
103
|
+
* whole behavior surface.
|
|
104
|
+
*/
|
|
105
|
+
export type QuestionComposerProps = PropsRuntime<'conversation.composer'> & PropsStore<ReturnType<typeof createQuestionDraftStore>> & {
|
|
106
|
+
matched: QuestionWait;
|
|
107
|
+
} & PropsLocale<'question'>;
|
|
108
|
+
export {};
|
|
109
|
+
//# sourceMappingURL=slots.d.ts.map
|
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Session-scoped draft state for the generic question composer. The Slot
|
|
3
|
+
* registry owns store instances; this module exports only the factory so a
|
|
4
|
+
* plugin reload cannot reuse a module-global handle.
|
|
5
|
+
*/
|
|
6
|
+
import { type EngineStoreHandle } from '@prettier-ai/dsh-client-store';
|
|
7
|
+
/** One in-progress answer, including an explicit skip. */
|
|
8
|
+
export interface QuestionDraftAnswer {
|
|
9
|
+
/** Offered labels currently selected. */
|
|
10
|
+
selected: string[];
|
|
11
|
+
/** Human-authored alternative or additional answer. */
|
|
12
|
+
custom: string;
|
|
13
|
+
/** Whether the user explicitly skipped this question. */
|
|
14
|
+
skipped: boolean;
|
|
15
|
+
}
|
|
16
|
+
/** Navigation and answer drafts for one pending request. */
|
|
17
|
+
export interface QuestionDraftProgress {
|
|
18
|
+
/** Current question index. */
|
|
19
|
+
index: number;
|
|
20
|
+
/** One draft per question, in request order. */
|
|
21
|
+
drafts: QuestionDraftAnswer[];
|
|
22
|
+
}
|
|
23
|
+
interface QuestionDraftState {
|
|
24
|
+
requestKey?: string;
|
|
25
|
+
progress: QuestionDraftProgress;
|
|
26
|
+
}
|
|
27
|
+
type QuestionDraftActions = {
|
|
28
|
+
replace: (draft: QuestionDraftState, requestKey: string, progress: QuestionDraftProgress) => void;
|
|
29
|
+
clear: (draft: QuestionDraftState, requestKey: string) => void;
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Declare the question composer's transient Session store.
|
|
33
|
+
* @returns a non-persisted store handle whose instance is owned by the Slot registry.
|
|
34
|
+
*/
|
|
35
|
+
export declare function createQuestionDraftStore(): EngineStoreHandle<QuestionDraftState, QuestionDraftActions>;
|
|
36
|
+
export {};
|
|
37
|
+
//# sourceMappingURL=draft-store.d.ts.map
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web question plugin, browser half: QuestionComposer registered as a
|
|
3
|
+
* selector-routed entry of the conversation-declared composer chain, plus the
|
|
4
|
+
* `question` dictionaries. The selector narrows the owner's currency to the
|
|
5
|
+
* question carrier (matched prop), and the whole behavior surface rides the
|
|
6
|
+
* carrier (domain encoding in contract/slots.ts PendingQuestion); copy rides
|
|
7
|
+
* the standard locale seat. Export discipline: packages/client/AGENTS.md.
|
|
8
|
+
*
|
|
9
|
+
* One entry, two shapes: the composer renders a request that declares a
|
|
10
|
+
* presentation intent as that intent's own surface (`plan-review` → the plan
|
|
11
|
+
* decision card) and every other request as the generic question flow. A
|
|
12
|
+
* separate chain entry per shape would race the same carrier, so the shape
|
|
13
|
+
* choice lives inside this entry — see QuestionComposer.
|
|
14
|
+
*/
|
|
15
|
+
import type { Context as ClientContext } from '@prettier-ai/cordis';
|
|
16
|
+
import { type QuestionKey } from './locales.ts';
|
|
17
|
+
export type { PendingQuestion, PlanReview, QuestionAnswer, QuestionComposerProps, QuestionWait, } from './contract/slots.ts';
|
|
18
|
+
export type { QuestionKey } from './locales.ts';
|
|
19
|
+
declare module '@prettier-ai/dsh-client-ui-slots' {
|
|
20
|
+
interface LocaleNamespaceMap {
|
|
21
|
+
/** The question composer's copy. */
|
|
22
|
+
question: QuestionKey;
|
|
23
|
+
}
|
|
24
|
+
}
|
|
25
|
+
/** Required services: Agent scopes, Remote Events, Session UI, Slot registry, and copy. */
|
|
26
|
+
export declare const inject: string[];
|
|
27
|
+
/**
|
|
28
|
+
* Client plugin body: register the `question` dictionaries and the question
|
|
29
|
+
* composer into the composer chain. Zero business face — data and verbs live
|
|
30
|
+
* on the matched carrier; t rides the standard locale seat.
|
|
31
|
+
* @param ctx - client root context.
|
|
32
|
+
*/
|
|
33
|
+
export declare function apply(ctx: ClientContext): void;
|
|
34
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/** `question` namespace dictionaries. */
|
|
2
|
+
/** Simplified Chinese dictionary (the key-set source of truth). */
|
|
3
|
+
export declare const zh: {
|
|
4
|
+
'error.incomplete': string;
|
|
5
|
+
'error.unanswered': string;
|
|
6
|
+
'nav.prev': string;
|
|
7
|
+
'nav.next': string;
|
|
8
|
+
'nav.minimize': string;
|
|
9
|
+
'nav.maximize': string;
|
|
10
|
+
'nav.cancel': string;
|
|
11
|
+
'option.recommended': string;
|
|
12
|
+
'custom.placeholder': string;
|
|
13
|
+
'action.skip': string;
|
|
14
|
+
'action.next': string;
|
|
15
|
+
'plan.header': string;
|
|
16
|
+
'plan.approve': string;
|
|
17
|
+
'plan.decline': string;
|
|
18
|
+
'plan.discuss': string;
|
|
19
|
+
};
|
|
20
|
+
/** The question namespace key union. */
|
|
21
|
+
export type QuestionKey = keyof typeof zh;
|
|
22
|
+
/** English dictionary, checked complete against the zh key set. */
|
|
23
|
+
export declare const en: {
|
|
24
|
+
'error.incomplete': string;
|
|
25
|
+
'error.unanswered': string;
|
|
26
|
+
'nav.prev': string;
|
|
27
|
+
'nav.next': string;
|
|
28
|
+
'nav.minimize': string;
|
|
29
|
+
'nav.maximize': string;
|
|
30
|
+
'nav.cancel': string;
|
|
31
|
+
'option.recommended': string;
|
|
32
|
+
'custom.placeholder': string;
|
|
33
|
+
'action.skip': string;
|
|
34
|
+
'action.next': string;
|
|
35
|
+
'plan.header': string;
|
|
36
|
+
'plan.approve': string;
|
|
37
|
+
'plan.decline': string;
|
|
38
|
+
'plan.discuss': string;
|
|
39
|
+
};
|
|
40
|
+
//# sourceMappingURL=locales.d.ts.map
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Web question plugin, node half.
|
|
3
|
+
*
|
|
4
|
+
* Deliberately empty. Mounting `ask_user_question` here put it in the tools
|
|
5
|
+
* registry's GLOBAL layer, so every agent saw it no matter which preset
|
|
6
|
+
* composed it — a two-tool benchmark preset actually presented three, and a
|
|
7
|
+
* locally authored `bash-only` preset presented two. Rendering a question is
|
|
8
|
+
* a host UI capability; having the tool is an agent capability, and only a
|
|
9
|
+
* preset decides that. The `tool-ask-user` row belongs in the presets that
|
|
10
|
+
* want it (and in the TUI composition, which has no presets).
|
|
11
|
+
*/
|
|
12
|
+
/** Host plugin body — the model-facing tool is composed per preset, not here. */
|
|
13
|
+
export declare function apply(): void;
|
|
14
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Package-owned invariant companion for `@prettier-ai/dsh-client-ui-user-questions`.
|
|
3
|
+
* @module @prettier-ai/dsh-client-ui-user-questions/invariant
|
|
4
|
+
*/
|
|
5
|
+
import type { Context } from '@prettier-ai/cordis';
|
|
6
|
+
/** Cordis companion plugin name. */
|
|
7
|
+
export declare const name = "client-ui-user-questions-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,94 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@prettier-ai/dsh-client-ui-user-questions",
|
|
3
|
+
"description": "Web ask_user_question composer takeover and plan-review presentation UI",
|
|
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-user-questions"
|
|
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-remotes",
|
|
36
|
+
"@prettier-ai/dsh-api-session-controller",
|
|
37
|
+
"@prettier-ai/dsh-client-locale",
|
|
38
|
+
"@prettier-ai/dsh-client-ui-conversation",
|
|
39
|
+
"@prettier-ai/dsh-client-ui-renderer",
|
|
40
|
+
"@prettier-ai/dsh-client-ui-session"
|
|
41
|
+
],
|
|
42
|
+
"platform": "web"
|
|
43
|
+
}
|
|
44
|
+
},
|
|
45
|
+
"license": "MIT",
|
|
46
|
+
"dependencies": {
|
|
47
|
+
"clsx": "^2.0.0"
|
|
48
|
+
},
|
|
49
|
+
"peerDependencies": {
|
|
50
|
+
"@prettier-ai/cordis": "^4.0.1",
|
|
51
|
+
"@prettier-ai/dsh-api-remotes": "^0.1.2-alpha.1",
|
|
52
|
+
"@prettier-ai/dsh-api-session-controller": "^0.1.2-alpha.1",
|
|
53
|
+
"@prettier-ai/dsh-invariants": "^0.1.2-alpha.1",
|
|
54
|
+
"@prettier-ai/dsh-client-locale": "^0.1.2-alpha.1",
|
|
55
|
+
"@prettier-ai/dsh-client-ui-renderer": "^0.1.2-alpha.1",
|
|
56
|
+
"@prettier-ai/dsh-typert-protocol": "^0.1.2-alpha.1",
|
|
57
|
+
"@prettier-ai/dsh-session": "^0.1.2-alpha.1",
|
|
58
|
+
"@prettier-ai/dsh-client-ui-session": "^0.1.2-alpha.1",
|
|
59
|
+
"@prettier-ai/dsh-user-questions": "^0.1.2-alpha.1",
|
|
60
|
+
"@prettier-ai/dsh-client-ui-conversation": "^0.1.2-alpha.1"
|
|
61
|
+
},
|
|
62
|
+
"devDependencies": {
|
|
63
|
+
"@types/react": "~18.3.1",
|
|
64
|
+
"react": "^18.2.0",
|
|
65
|
+
"@prettier-ai/dsh-api-remotes": "^0.1.2-alpha.1",
|
|
66
|
+
"@prettier-ai/cordis": "^4.0.1",
|
|
67
|
+
"@prettier-ai/dsh-api-session-controller": "^0.1.2-alpha.1",
|
|
68
|
+
"@prettier-ai/dsh-agent": "^0.1.2-alpha.1",
|
|
69
|
+
"@prettier-ai/dsh-client-store": "^0.1.2-alpha.1",
|
|
70
|
+
"@prettier-ai/dsh-client-locale": "^0.1.2-alpha.1",
|
|
71
|
+
"@prettier-ai/dsh-invariants": "^0.1.2-alpha.1",
|
|
72
|
+
"@prettier-ai/dsh-system-prompt": "^0.1.2-alpha.1",
|
|
73
|
+
"@prettier-ai/dsh-client-ui-primitives": "^0.1.2-alpha.1",
|
|
74
|
+
"@prettier-ai/dsh-client-ui-renderer": "^0.1.2-alpha.1",
|
|
75
|
+
"@prettier-ai/dsh-client-ui-slots": "^0.1.2-alpha.1",
|
|
76
|
+
"@prettier-ai/dsh-user-questions": "^0.1.2-alpha.1",
|
|
77
|
+
"@prettier-ai/dsh-tools": "^0.1.2-alpha.1",
|
|
78
|
+
"@prettier-ai/dsh-typert-protocol": "^0.1.2-alpha.1",
|
|
79
|
+
"@prettier-ai/dsh-client-connection": "^0.1.2-alpha.1",
|
|
80
|
+
"@prettier-ai/dsh-client-ui-session": "^0.1.2-alpha.1",
|
|
81
|
+
"@prettier-ai/dsh-client-ui-conversation": "^0.1.2-alpha.1",
|
|
82
|
+
"@prettier-ai/dsh-session": "^0.1.2-alpha.1"
|
|
83
|
+
},
|
|
84
|
+
"files": [
|
|
85
|
+
"lib/index.js",
|
|
86
|
+
"lib/invariant.js",
|
|
87
|
+
"lib/client.js",
|
|
88
|
+
"lib/types/**/*.d.ts"
|
|
89
|
+
],
|
|
90
|
+
"scripts": {
|
|
91
|
+
"bundle": "tsdown",
|
|
92
|
+
"watch": "tsdown --watch"
|
|
93
|
+
}
|
|
94
|
+
}
|