@qilin-agent/client-ui-deliverables 0.0.0-stage → 3.1.3

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,42 @@
1
+ /** What one store makes of its reads. */
2
+ export interface HostReadPolicy<T> {
3
+ /** The state published while a request runs. */
4
+ loading: T;
5
+ /** The state a transport failure publishes. */
6
+ failed: T;
7
+ /**
8
+ * Whether a later request replaces a standing state with a new read.
9
+ * @param state - the standing state.
10
+ * @returns true to read again.
11
+ */
12
+ retryable(state: T): boolean;
13
+ /**
14
+ * Turn a settled response into a state.
15
+ * @param response - the Host's answer.
16
+ * @returns the state to publish.
17
+ */
18
+ decode(response: Response): Promise<T>;
19
+ }
20
+ /** One browser plugin's reads of one record kind. */
21
+ export declare class HostReadStore<T> {
22
+ private readonly policy;
23
+ /** Record URLs key the state across Sessions and turns. */
24
+ readonly state: import("@qilin-agent/client-store").SnapshotStore<Record<string, T | undefined>>;
25
+ private readonly lifetime;
26
+ /** The connection generation the current states belong to; a reset aborts it so no older read publishes. */
27
+ private generation;
28
+ private readonly pending;
29
+ constructor(policy: HostReadPolicy<T>);
30
+ /**
31
+ * Read one URL unless a state the policy keeps already stands for it.
32
+ * @param url - the record's authenticated URL.
33
+ * @returns after the state is published.
34
+ */
35
+ protected loadUrl(url: string): Promise<void>;
36
+ /** Forget every state and abandon in-flight reads; a replaced connection may reach a Host that no longer serves them. */
37
+ reset(): void;
38
+ /** Cancel outstanding reads and wait until none can publish state. */
39
+ dispose(): Promise<void>;
40
+ private read;
41
+ }
42
+ //# sourceMappingURL=host-read-store.d.ts.map
@@ -0,0 +1,8 @@
1
+ /**
2
+ * Package-local glyph for the changed-files card until the shared icon set
3
+ * carries it; its props already match the shared icon contract.
4
+ */
5
+ import type { IconProps } from '@qilin-agent/client-ui-primitives';
6
+ /** Angle brackets, the code mark the card's header tile shows. */
7
+ export declare const IconCodeBracketsOutline16: ({ size, className }: IconProps) => import("react").JSX.Element;
8
+ //# sourceMappingURL=icons.d.ts.map
@@ -0,0 +1,26 @@
1
+ /**
2
+ * Deliverables plugin, browser half: registers the changed-files card and
3
+ * delivery cards into the chat view's turn-tail list, the `changes-review`
4
+ * right-Sidebar tab type that reviews one turn's changed files one comparison
5
+ * at a time, and provides the `chatFileMentions` service that links
6
+ * inline-code mentions of produced or delivered files in the closing prose.
7
+ * All policy lives here — the supported mutation calls, mention matching, row
8
+ * cap, and copy — so composing this plugin out of cordis.yml removes every
9
+ * surface; the owning view renders an empty list and inert prose at zero cost.
10
+ */
11
+ import type { Context as ClientContext } from '@qilin-agent/kylin';
12
+ import { type DeliverablesKey } from './locales.ts';
13
+ declare module '@qilin-agent/client-ui-slots' {
14
+ interface LocaleNamespaceMap {
15
+ /** Changed-files card, review tab, delivery card, and file-mention copy. */
16
+ 'deliverables': DeliverablesKey;
17
+ }
18
+ }
19
+ /** Required services for the tail-slot and tab-type registrations and their dictionaries. */
20
+ export declare const inject: string[];
21
+ /**
22
+ * Client plugin body: register the dictionaries, the turn-tail entry, and the comparison tab type.
23
+ * @param ctx - client root context.
24
+ */
25
+ export declare function apply(ctx: ClientContext): void;
26
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,79 @@
1
+ /** `deliverables` namespace dictionaries: cards, comparison tab, and file-mention copy. */
2
+ /** Dictionary namespace owned by this plugin. */
3
+ export declare const NS = "deliverables";
4
+ /** Simplified Chinese dictionary (the key-set source of truth). */
5
+ export declare const zh: {
6
+ 'presented.nativeUnavailable': string;
7
+ 'presented.revealError': string;
8
+ 'presented.directoryError': string;
9
+ 'presented.directoryOpening': string;
10
+ 'presented.directoryOpened': string;
11
+ 'presented.revealed': string;
12
+ 'presented.revealing': string;
13
+ 'presented.unavailable': string;
14
+ 'presented.retry': string;
15
+ 'presented.hostError': string;
16
+ 'presented.directory': string;
17
+ 'presented.explorer': string;
18
+ 'presented.finder': string;
19
+ 'presented.defaultApp': string;
20
+ 'presented.more': string;
21
+ 'presented.action': string;
22
+ 'presented.preview': string;
23
+ 'presented.previewButton': string;
24
+ 'presented.previewCard': string;
25
+ 'presented.all': string;
26
+ 'presented.expandAria': string;
27
+ 'presented.collapse': string;
28
+ 'presented.collapseAria': string;
29
+ 'presented.opening': string;
30
+ 'presented.opened': string;
31
+ 'presented.error': string;
32
+ 'presented.file': string;
33
+ 'row.title': string;
34
+ 'row.running': string;
35
+ 'row.preparing': string;
36
+ 'row.ok': string;
37
+ 'row.error': string;
38
+ 'row.stopped': string;
39
+ 'row.inspect': string;
40
+ 'changes.title': string;
41
+ 'changes.added': string;
42
+ 'changes.deleted': string;
43
+ 'changes.binary': string;
44
+ 'changes.openReview': string;
45
+ 'changes.all': string;
46
+ 'changes.expandAria': string;
47
+ 'changes.collapse': string;
48
+ 'changes.collapseAria': string;
49
+ 'changes.oversized': string;
50
+ 'changes.viewDiff': string;
51
+ 'review.title': string;
52
+ 'review.selectFile': string;
53
+ 'review.split': string;
54
+ 'review.unified': string;
55
+ 'review.splitAria': string;
56
+ 'review.wrap': string;
57
+ 'review.nowrap': string;
58
+ 'review.wrapAria': string;
59
+ 'review.openFile': string;
60
+ 'review.openFileAria': string;
61
+ 'diff.openNativeAria': string;
62
+ 'diff.loading': string;
63
+ 'diff.missing': string;
64
+ 'diff.error': string;
65
+ 'diff.binary': string;
66
+ 'diff.oversized': string;
67
+ 'diff.created': string;
68
+ 'diff.deleted': string;
69
+ 'diff.unchanged': string;
70
+ 'diff.coarse': string;
71
+ 'diff.truncated': string;
72
+ 'diff.openNative': string;
73
+ 'diff.openNativeError': string;
74
+ };
75
+ /** English dictionary (same key set). */
76
+ export declare const en: Record<DeliverablesKey, string>;
77
+ /** Union of this namespace's dictionary keys. */
78
+ export type DeliverablesKey = keyof typeof zh;
79
+ //# sourceMappingURL=locales.d.ts.map
@@ -0,0 +1,46 @@
1
+ import type { SessionId } from '@qilin-agent/session/types';
2
+ import { type PresentedAction, type PresentedHost } from '../presented.ts';
3
+ /** State of the latest explicit open gesture for one saved file. */
4
+ export type PresentedOpenPhase = 'opening' | 'opened' | 'revealing' | 'revealed' | 'error' | 'revealError' | 'nativeUnavailable';
5
+ /** One browser plugin's file-open requests, cancelled when that plugin is disposed. */
6
+ export declare class PresentedOpenController {
7
+ /** File action URLs key the state across Sessions, turns, and both clickable surfaces. */
8
+ readonly state: import("@qilin-agent/client-store").SnapshotStore<Record<string, PresentedOpenPhase | undefined>>;
9
+ /** Native destination metadata, or a retryable read failure. */
10
+ readonly host: import("@qilin-agent/client-store").SnapshotStore<PresentedHost | "error" | null>;
11
+ private loading;
12
+ private metadata;
13
+ private readonly lifetime;
14
+ private readonly pending;
15
+ /**
16
+ * Open a declared file once while a request for the same coordinates is pending.
17
+ * Failures remain visible on the card and a later gesture retries them.
18
+ * @param sessionId - viewed Session, including a fork's own identity.
19
+ * @param seq - durable delivery event sequence.
20
+ * @param index - original file index within that event.
21
+ * @param action - default application open or file-manager reveal.
22
+ * @returns after the Host acknowledges opening or the error state is published.
23
+ */
24
+ open(sessionId: SessionId, seq: number, index: number, action?: PresentedAction): Promise<void>;
25
+ /**
26
+ * Open one recorded changed file in the Host's default application.
27
+ * @param sessionId - viewed Session.
28
+ * @param seq - durable workspace/changes event sequence.
29
+ * @param index - original file index within that event.
30
+ * @returns after the Host acknowledges opening or the error state is published.
31
+ */
32
+ openChanged(sessionId: SessionId, seq: number, index: number): Promise<void>;
33
+ private openUrl;
34
+ /**
35
+ * Read the serving desktop metadata, coalescing concurrent reads; a later call retries failure.
36
+ * @returns after metadata or a retryable error is published.
37
+ */
38
+ loadHost(): Promise<void>;
39
+ /** Invalidate desktop metadata on connection replacement; mounted cards request the new Host. */
40
+ resetHost(): void;
41
+ private readHost;
42
+ /** Cancel outstanding requests and wait until no request can publish state. */
43
+ dispose(): Promise<void>;
44
+ private request;
45
+ }
46
+ //# sourceMappingURL=present-open.d.ts.map
@@ -0,0 +1,33 @@
1
+ /**
2
+ * What the `changes-review` tab type IS: the right-Sidebar review of one
3
+ * turn's changed files, showing one file's turn-start and turn-end
4
+ * comparison at a time. It claims the `qilin-resource://changes-review/session/…`
5
+ * addresses the changed-files card mints; the Session and the event sequence
6
+ * in the address identify the content, and the turn they carry names the tab.
7
+ * A row opens the tab with the file's index as its navigation parameter.
8
+ */
9
+ import type { SidebarRightTabDefinition } from '@qilin-agent/client-ui-sidebar-right/client';
10
+ import type { TranslateNS } from '@qilin-agent/client-locale/client';
11
+ import type { NS } from './locales.ts';
12
+ /** The tab kind this package owns. */
13
+ export declare const CHANGES_REVIEW_KIND = "changes-review";
14
+ /** This implementation's identity in the tab system, and the key its body registers under. */
15
+ export declare const CHANGES_REVIEW_ID = "@qilin-agent/client-ui-deliverables";
16
+ /** The file a review opens on. */
17
+ export interface ChangesReviewParams {
18
+ /** Original index in the summary's files array. */
19
+ index?: number;
20
+ }
21
+ declare module '@qilin-agent/client-ui-sidebar-right/client' {
22
+ interface SidebarRightResourceParamsMap {
23
+ /** The file a review tab opens on. */
24
+ 'changes-review': ChangesReviewParams;
25
+ }
26
+ }
27
+ /**
28
+ * The review type's registry definition.
29
+ * @param t - namespace-bound translate, read fresh on every title call.
30
+ * @returns the definition to register.
31
+ */
32
+ export declare function changesReviewDefinition(t: TranslateNS<typeof NS>): SidebarRightTabDefinition;
33
+ //# sourceMappingURL=review-definition.d.ts.map
@@ -0,0 +1,39 @@
1
+ /**
2
+ * The review tab's view state: which listed file is shown, whether hunks are
3
+ * drawn side by side, and whether long lines wrap. One bucket per tab, so two
4
+ * reviews in one session keep their own choices; the bucket ends with the
5
+ * tab record's signal.
6
+ */
7
+ import { type EngineStoreHandle } from '@qilin-agent/client-store';
8
+ import type { TabId } from '@qilin-agent/client-ui-dockkit';
9
+ /** One review tab's choices. */
10
+ export interface ReviewTabState {
11
+ /** Original index of the shown file in the summary's files array. */
12
+ index: number;
13
+ /** Whether deletions and additions are drawn in two columns. */
14
+ split: boolean;
15
+ /** Whether long lines wrap instead of scrolling. */
16
+ wrap: boolean;
17
+ /** The navigation revision whose file index was last applied. */
18
+ navigated: number;
19
+ }
20
+ /** Every review tab's choices, keyed by tab id. */
21
+ export interface ReviewState {
22
+ byTab: Record<TabId, ReviewTabState>;
23
+ }
24
+ /** The review store's write set; every action names the tab it writes. */
25
+ type ReviewActions = {
26
+ navigated: (draft: ReviewState, tabId: TabId, revision: number, index: number) => void;
27
+ selected: (draft: ReviewState, tabId: TabId, index: number) => void;
28
+ toggledSplit: (draft: ReviewState, tabId: TabId) => void;
29
+ toggledWrap: (draft: ReviewState, tabId: TabId) => void;
30
+ forget: (draft: ReviewState, tabId: TabId) => void;
31
+ };
32
+ /**
33
+ * Declare the review tab's store; the registration declares it as an
34
+ * exclusive store, so the framework mints one instance per session.
35
+ * @returns the store handle to declare on the registration.
36
+ */
37
+ export declare function createReviewStore(): EngineStoreHandle<ReviewState, ReviewActions>;
38
+ export {};
39
+ //# sourceMappingURL=review-store.d.ts.map
@@ -0,0 +1,84 @@
1
+ import type { TurnTailOwnerProps } from '@qilin-agent/client-ui-chat/client';
2
+ import type { ConversationNodeDefinition } from '@qilin-agent/client-ui-conversation/client';
3
+ import type { MarkdownFileMentions } from '@qilin-agent/client-ui-primitives';
4
+ import type { PresentedFile } from '@qilin-agent/tool-present/types';
5
+ /** A declared file with its authorized open coordinates. */
6
+ export interface PresentedPath extends PresentedFile {
7
+ readonly seq: number;
8
+ readonly index: number;
9
+ }
10
+ interface ProducedPath {
11
+ readonly seq: number;
12
+ readonly path: string;
13
+ }
14
+ /** The latest `workspace/changes` announcement of one Turn; the Host serves its summary by this sequence. */
15
+ export interface ChangesTurnData {
16
+ readonly seq: number;
17
+ }
18
+ /** Immutable produced-file facts published against one Turn. */
19
+ export interface DeliverablesTurnData {
20
+ readonly produced: readonly ProducedPath[];
21
+ readonly presented?: readonly PresentedPath[];
22
+ readonly changes?: ChangesTurnData;
23
+ }
24
+ declare module '@qilin-agent/client-ui-conversation/client' {
25
+ interface ConversationTurnDataMap {
26
+ /** Successful mutation paths, recorded changed files, and deliveries accumulated in this Turn. */
27
+ deliverables: DeliverablesTurnData;
28
+ }
29
+ }
30
+ interface DeliverablesState extends DeliverablesTurnData {
31
+ readonly turn: number;
32
+ readonly calls: ReadonlyMap<string, string | null>;
33
+ }
34
+ /**
35
+ * Files produced by one Turn data value.
36
+ *
37
+ * The source is the arguments of successful `write`, `edit`, and mutating
38
+ * `str_replace_editor` calls, not the closing prose: a produced file must be
39
+ * listed whether or not the model remembered to name it. Reads, unsupported
40
+ * tools, malformed calls, and failed results contribute nothing. Paths keep
41
+ * first-seen order and appear once, so a file written and then edited in the
42
+ * same turn is one entry.
43
+ *
44
+ * The Conversation Location index owns turn membership before this function
45
+ * runs, so paths cannot spill across turns and this derivation does not infer
46
+ * boundaries from neighboring presentation Nodes.
47
+ * @param data - engine-published Deliverables data for one Turn.
48
+ * @param seq - closing Assistant seq; later Tool settlements are excluded.
49
+ * @returns Produced paths in first-seen order; empty when the turn wrote nothing.
50
+ */
51
+ export declare function producedForClosing(data: Readonly<DeliverablesTurnData> | undefined, seq?: number): readonly string[];
52
+ /**
53
+ * Claim the turn-tail chain only when its closing turn produced files.
54
+ * @param owner - Turn-tail owner currency for the closing assistant.
55
+ * @returns Produced paths as the component's match, or null to decline before mount.
56
+ */
57
+ export declare function selectProducedFiles(owner: TurnTailOwnerProps): readonly string[] | null;
58
+ /** Turn-local successful mutation accumulator; it publishes no view Node. */
59
+ export declare const deliverablesDefinition: ConversationNodeDefinition<DeliverablesState>;
60
+ /**
61
+ * The turn's latest change announcement.
62
+ * @param owner - closing turn.
63
+ * @returns the announcement, or null when the Host recorded none.
64
+ */
65
+ export declare function changesForClosing(owner: TurnTailOwnerProps): ChangesTurnData | null;
66
+ /**
67
+ * Select the latest declaration of each path before the closing reply.
68
+ * @param owner - closing turn and sequence.
69
+ * @returns replayable deliveries in first-seen path order.
70
+ */
71
+ export declare function presentedForClosing(owner: TurnTailOwnerProps): PresentedPath[];
72
+ export { basename } from '../presented.ts';
73
+ /**
74
+ * Resolves inline-code references against one turn's produced or delivered
75
+ * paths. Exact paths resolve directly; a basename resolves only when exactly
76
+ * one supplied path has that basename. Ambiguous and unknown tokens stay inert.
77
+ * @param paths - The turn's produced or delivered paths, already deduplicated.
78
+ * @param openFile - The chat view's file opener.
79
+ * @param label - Localizes the accessible open-label for a resolved path.
80
+ * @returns The resolver MarkdownText consumes; the full path rides `title`,
81
+ * the same disambiguator the row's chips carry.
82
+ */
83
+ export declare function producedFileMentions(paths: readonly string[], openFile: (path: string) => void, label: (path: string) => string): MarkdownFileMentions;
84
+ //# sourceMappingURL=turn-deliverables.d.ts.map
@@ -0,0 +1,15 @@
1
+ /**
2
+ * Deliverables plugin, node half. Registers Web file-reference guidance and
3
+ * serves authenticated native opens of declared files. The browser
4
+ * half ships via exports["./client"], discovered through the package.json
5
+ * qilin.client declaration.
6
+ */
7
+ import type { Context } from '@qilin-agent/kylin';
8
+ /** Services required for file-reference guidance, change summaries, and authenticated native opens. */
9
+ export declare const inject: string[];
10
+ /**
11
+ * Register Web file-reference guidance and native opens for declared files.
12
+ * @param ctx - host context carrying the system-prompt registry.
13
+ */
14
+ export declare function apply(ctx: Context): void;
15
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1,10 @@
1
+ /** Serve change summaries and comparisons, and open declared or changed workspace files verified by the viewed Session's filesystem. */
2
+ import type { Context } from '@qilin-agent/kylin';
3
+ /**
4
+ * Register the deliverables routes inside Connection's authentication fence:
5
+ * desktop metadata, change summaries and comparisons, declared-file actions,
6
+ * and changed-file opening.
7
+ * @param ctx - Session lookup, change summaries, native opener, and route lifetime.
8
+ */
9
+ export declare function registerPresentOpen(ctx: Context): void;
10
+ //# sourceMappingURL=present-open.d.ts.map
@@ -0,0 +1,60 @@
1
+ /** Validate declared workspace paths and address their native-open actions. */
2
+ import type { PresentedFile } from '@qilin-agent/tool-present/types';
3
+ import type { SessionId } from '@qilin-agent/session/types';
4
+ import type { ToolCallId } from '@qilin-agent/llm/brand';
5
+ /** Authenticated POST route for opening a workspace file on the Host desktop. */
6
+ export declare const PRESENT_OPEN_PATH = "/api/present.open";
7
+ /** Authenticated desktop availability and destination metadata. */
8
+ export declare const PRESENT_HOST_PATH = "/api/present.host";
9
+ /**
10
+ * Browser-relative form of {@link PRESENT_OPEN_PATH}; see
11
+ * .agents/notes/implemented/architecture/2026-09-14-web-document-relative-app-routes.md.
12
+ */
13
+ export declare const PRESENT_OPEN_ROUTE: string;
14
+ /** Browser-relative form of {@link PRESENT_HOST_PATH}. */
15
+ export declare const PRESENT_HOST_ROUTE: string;
16
+ /** Native file action selected by an explicit user gesture. */
17
+ export type PresentedAction = 'open' | 'reveal';
18
+ /** Serving Host information; file-manager names never derive from the browser's OS. */
19
+ export interface PresentedHost {
20
+ name: string;
21
+ available: boolean;
22
+ fileManager: 'finder' | 'explorer' | 'directory' | null;
23
+ }
24
+ /**
25
+ * Validate desktop metadata received over HTTP.
26
+ * @param value - decoded response.
27
+ * @returns whether all displayed and actionable fields are supported.
28
+ */
29
+ export declare function isPresentedHost(value: unknown): value is PresentedHost;
30
+ /**
31
+ * Validate a file declaration read from a Session log.
32
+ * @param value - decoded durable data.
33
+ * @returns whether the declaration contains a path and optional description.
34
+ */
35
+ export declare function isPresentedFile(value: unknown): value is PresentedFile;
36
+ /**
37
+ * Build authenticated coordinates for a declared file.
38
+ * @param sessionId - owning Session.
39
+ * @param seq - deliverables/presented event sequence.
40
+ * @param index - original index in the event's files array.
41
+ * @returns document-relative file action route.
42
+ */
43
+ export declare function presentedFileUrl(sessionId: SessionId, seq: number, index: number): string;
44
+ /**
45
+ * Validate a delivery event before reading its turn or file declarations.
46
+ * @param value - decoded durable event data.
47
+ * @returns whether the event identifies a turn, call, and file list.
48
+ */
49
+ export declare function isPresentedData(value: unknown): value is {
50
+ turn: number;
51
+ callId: ToolCallId;
52
+ files: unknown[];
53
+ };
54
+ /**
55
+ * Trailing path segment, the part that identifies the file at a glance.
56
+ * @param path - Slash- or backslash-separated path.
57
+ * @returns The final segment, or the whole string when separator-free.
58
+ */
59
+ export declare function basename(path: string): string;
60
+ //# sourceMappingURL=presented.d.ts.map
package/package.json CHANGED
@@ -1,6 +1,93 @@
1
1
  {
2
2
  "name": "@qilin-agent/client-ui-deliverables",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
3
+ "description": "Changed-files card with per-file comparison tabs, delivery cards, and clickable final-response file references for Web",
4
+ "version": "3.1.3",
5
+ "publishConfig": {
6
+ "access": "public"
7
+ },
8
+ "repository": {
9
+ "type": "git",
10
+ "url": "git+https://github.com/kkutysllb/QiLin.git",
11
+ "directory": "packages/client/ui-deliverables"
12
+ },
13
+ "engines": {
14
+ "node": "^22.19.0 || >=24.0.0"
15
+ },
16
+ "type": "module",
17
+ "main": "lib/index.js",
18
+ "types": "lib/types/index.d.ts",
19
+ "exports": {
20
+ ".": {
21
+ "types": "./lib/types/index.d.ts",
22
+ "default": "./lib/index.js"
23
+ },
24
+ "./client": {
25
+ "types": "./lib/types/client/index.d.ts",
26
+ "default": "./lib/client.js"
27
+ },
28
+ "./src/*": "./src/*",
29
+ "./package.json": "./package.json"
30
+ },
31
+ "qilin": {
32
+ "client": {
33
+ "inject": [
34
+ "@qilin-agent/api-remotes",
35
+ "@qilin-agent/client-connection",
36
+ "@qilin-agent/client-locale",
37
+ "@qilin-agent/client-ui-chat",
38
+ "@qilin-agent/client-ui-conversation",
39
+ "@qilin-agent/client-ui-renderer",
40
+ "@qilin-agent/client-ui-sidebar-right",
41
+ "@qilin-agent/client-ui-tool"
42
+ ],
43
+ "platform": "web"
44
+ }
45
+ },
46
+ "license": "MIT",
47
+ "peerDependencies": {
48
+ "@qilin-agent/kylin": "~4.0.3"
49
+ },
50
+ "devDependencies": {
51
+ "@types/react": "~18.3.1",
52
+ "react": "^18.2.0",
53
+ "@qilin-agent/api-remotes": "3.1.3",
54
+ "@qilin-agent/client-connection": "3.1.3",
55
+ "@qilin-agent/client-locale": "3.1.3",
56
+ "@qilin-agent/client-store": "3.1.3",
57
+ "@qilin-agent/client-test-runtime": "3.1.3",
58
+ "@qilin-agent/client-ui-chat": "3.1.3",
59
+ "@qilin-agent/client-ui-conversation": "3.1.3",
60
+ "@qilin-agent/client-ui-dockkit": "3.1.3",
61
+ "@qilin-agent/client-ui-renderer": "3.1.3",
62
+ "@qilin-agent/client-ui-slots": "3.1.3",
63
+ "@qilin-agent/kylin": "~4.0.3",
64
+ "@qilin-agent/client-ui-primitives": "3.1.3",
65
+ "@qilin-agent/session": "3.1.3",
66
+ "@qilin-agent/client-ui-sidebar-right": "3.1.3",
67
+ "@qilin-agent/system-prompt": "3.1.3",
68
+ "@qilin-agent/session-query": "3.1.3",
69
+ "@qilin-agent/llm": "3.1.3",
70
+ "@qilin-agent/client-ui-tool": "3.1.3",
71
+ "@qilin-agent/tool-present": "3.1.3",
72
+ "@qilin-agent/workspace-changes": "3.1.3",
73
+ "@qilin-agent/api-session-controller": "3.1.3",
74
+ "@qilin-agent/util-workspace-path": "3.1.3",
75
+ "@qilin-agent/api-workspace-files": "3.1.3",
76
+ "@qilin-agent/fs": "3.1.3",
77
+ "@qilin-agent/sandbox-policy": "3.1.3",
78
+ "@qilin-agent/fs-local": "3.1.3",
79
+ "@qilin-agent/agent": "3.1.3"
80
+ },
81
+ "files": [
82
+ "lib/index.js",
83
+ "lib/client.js",
84
+ "lib/types/**/*.d.ts"
85
+ ],
86
+ "dependencies": {
87
+ "@qilin-agent/typert-protocol": "3.1.3"
88
+ },
89
+ "scripts": {
90
+ "bundle": "tsdown",
91
+ "watch": "tsdown --watch"
92
+ }
6
93
  }