@qilin-agent/client-ui-sidebar-tasks 0.0.0-stage → 3.1.4
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 +40 -0
- package/README.md +83 -2
- package/README.zh.md +84 -0
- package/lib/client.js +2006 -0
- package/lib/index.js +6 -0
- package/lib/types/client/TasksBadge.d.ts +35 -0
- package/lib/types/client/TasksBody.d.ts +30 -0
- package/lib/types/client/TasksGraphView.d.ts +22 -0
- package/lib/types/client/definition.d.ts +20 -0
- package/lib/types/client/face.d.ts +94 -0
- package/lib/types/client/index.d.ts +38 -0
- package/lib/types/client/lineage.d.ts +21 -0
- package/lib/types/client/locales.d.ts +133 -0
- package/lib/types/client/rows.d.ts +166 -0
- package/lib/types/client/tasks-graph-layout.d.ts +104 -0
- package/lib/types/client/tasks-graph-model.d.ts +132 -0
- package/lib/types/client/tasks-graph-store.d.ts +82 -0
- package/lib/types/client/work-sources.d.ts +25 -0
- package/lib/types/index.d.ts +4 -0
- package/package.json +77 -3
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Pure layered layout for the tasks graph: depth rows, leaf-packed horizontal
|
|
3
|
+
* ordering (parents centered over their subtrees), cubic parent→child edges,
|
|
4
|
+
* and the content bounding box the canvas fits to.
|
|
5
|
+
*
|
|
6
|
+
* Folded and unhydrated groups arrive as leaf nodes (aggregate and placeholder
|
|
7
|
+
* kinds) — the view model has already applied the expansion state before this
|
|
8
|
+
* runs. Framework-free: every function is a pure mapping from the view model
|
|
9
|
+
* to rectangles.
|
|
10
|
+
*/
|
|
11
|
+
import type { TaskNodeVM, TasksGraphModel } from './tasks-graph-model.ts';
|
|
12
|
+
/** Node card metrics in px at zoom 1: the card is a top segment plus a bottom bar. */
|
|
13
|
+
export declare const TASK_NODE_W = 208;
|
|
14
|
+
/** Height of the card's top segment (badge line plus label line). */
|
|
15
|
+
export declare const TASK_NODE_TOP_H = 46;
|
|
16
|
+
/** Height of the card's bottom status bar. */
|
|
17
|
+
export declare const TASK_NODE_BAR_H = 20;
|
|
18
|
+
/** Total card height. */
|
|
19
|
+
export declare const TASK_NODE_H: number;
|
|
20
|
+
/**
|
|
21
|
+
* Arrangement modes (the arrange control):
|
|
22
|
+
*
|
|
23
|
+
* - `tree` — the hierarchical default, parents centered over their subtrees;
|
|
24
|
+
* - `compact` — the same hierarchy with tighter gaps, for deep trees on a
|
|
25
|
+
* narrow pane;
|
|
26
|
+
* - `grid` — depth rows packed into a column grid, wrapping after
|
|
27
|
+
* {@link GRID_MAX_COLS}, which keeps a wide fan-out readable.
|
|
28
|
+
*/
|
|
29
|
+
export type TaskLayoutMode = 'tree' | 'compact' | 'grid';
|
|
30
|
+
/** Grid mode wraps a depth row after this many columns. */
|
|
31
|
+
export declare const GRID_MAX_COLS = 6;
|
|
32
|
+
/** One laid-out node: the view-model node plus its canvas rectangle. */
|
|
33
|
+
export interface TaskNodeBox {
|
|
34
|
+
readonly node: TaskNodeVM;
|
|
35
|
+
readonly x: number;
|
|
36
|
+
readonly y: number;
|
|
37
|
+
readonly w: number;
|
|
38
|
+
readonly h: number;
|
|
39
|
+
}
|
|
40
|
+
/** One laid-out edge: parent bottom-center → child top-center, as a cubic curve. */
|
|
41
|
+
export interface TaskEdgePath {
|
|
42
|
+
/** `${from}->${to}`; also the SVG element key. */
|
|
43
|
+
readonly id: string;
|
|
44
|
+
/** The SVG path data. */
|
|
45
|
+
readonly d: string;
|
|
46
|
+
/** The child node id. */
|
|
47
|
+
readonly to: string;
|
|
48
|
+
}
|
|
49
|
+
/** One manual position delta for one node (what a drag writes). */
|
|
50
|
+
export interface NodeOffset {
|
|
51
|
+
readonly x: number;
|
|
52
|
+
readonly y: number;
|
|
53
|
+
}
|
|
54
|
+
/** Manual node offsets by node id, relative to the auto layout. */
|
|
55
|
+
export type NodeOffsets = Readonly<Record<string, NodeOffset>>;
|
|
56
|
+
/** The laid-out graph: node boxes, edge paths, and the content bounding box. */
|
|
57
|
+
export interface TasksGraphLayout {
|
|
58
|
+
readonly nodes: readonly TaskNodeBox[];
|
|
59
|
+
readonly edges: readonly TaskEdgePath[];
|
|
60
|
+
/** Content box size; a dragged node can push it beyond the auto layout. */
|
|
61
|
+
readonly width: number;
|
|
62
|
+
readonly height: number;
|
|
63
|
+
/** Content box origin; negative once a node is dragged up or left of 0,0. */
|
|
64
|
+
readonly minX: number;
|
|
65
|
+
readonly minY: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Lay out the view model.
|
|
69
|
+
* @param model - the view model (pre-order nodes plus the children index).
|
|
70
|
+
* @param offsets - manual node offsets applied after auto placement.
|
|
71
|
+
* @param mode - the arrangement mode.
|
|
72
|
+
* @returns node boxes, edge paths, and the content box.
|
|
73
|
+
*/
|
|
74
|
+
export declare function layoutTasksGraph(model: TasksGraphModel, offsets?: NodeOffsets, mode?: TaskLayoutMode): TasksGraphLayout;
|
|
75
|
+
/**
|
|
76
|
+
* Every id in one node's subtree, the node itself first.
|
|
77
|
+
* @param model - the view model, for the children graph.
|
|
78
|
+
* @param nodeId - the subtree root.
|
|
79
|
+
* @returns the subtree ids in depth-first order.
|
|
80
|
+
*/
|
|
81
|
+
export declare function subtreeIds(model: Pick<TasksGraphModel, 'childrenOf'>, nodeId: string): string[];
|
|
82
|
+
/**
|
|
83
|
+
* The offsets after dragging one node by (dx, dy).
|
|
84
|
+
*
|
|
85
|
+
* Always computed from the offsets captured when the gesture started plus the
|
|
86
|
+
* total delta, so a long drag cannot accumulate rounding drift. With
|
|
87
|
+
* `subtree` the descendants ride along — the default, since a card that owns
|
|
88
|
+
* other cards moves them naturally; the Alt key drags the single card.
|
|
89
|
+
* @param model - the view model, for the children graph.
|
|
90
|
+
* @param base - the offsets captured at gesture start.
|
|
91
|
+
* @param nodeId - the dragged node.
|
|
92
|
+
* @param dx - the total horizontal delta.
|
|
93
|
+
* @param dy - the total vertical delta.
|
|
94
|
+
* @param subtree - whether the node's descendants move too.
|
|
95
|
+
* @returns the next offsets.
|
|
96
|
+
*/
|
|
97
|
+
export declare function dragOffsets(model: Pick<TasksGraphModel, 'childrenOf'>, base: NodeOffsets, nodeId: string, dx: number, dy: number, subtree: boolean): NodeOffsets;
|
|
98
|
+
/**
|
|
99
|
+
* Whether any manual offset is in effect; drives the reset affordance.
|
|
100
|
+
* @param offsets - the offsets in force.
|
|
101
|
+
* @returns whether at least one node is displaced.
|
|
102
|
+
*/
|
|
103
|
+
export declare function hasOffsets(offsets: NodeOffsets): boolean;
|
|
104
|
+
//# sourceMappingURL=tasks-graph-layout.d.ts.map
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tasks graph's shared view model: the single source the canvas renders.
|
|
3
|
+
*
|
|
4
|
+
* Inactive direct children split into two groups by their continuation mode —
|
|
5
|
+
* `done` (one-shot, finished) and `standby` (continuable, finished a turn and
|
|
6
|
+
* callable again). A group at or over {@link FOLD_MIN} renders as one
|
|
7
|
+
* aggregate node until the user expands it, so a long-finished fan-out stays
|
|
8
|
+
* one card instead of dozens. A child whose own catalog has not been read
|
|
9
|
+
* contributes one placeholder node standing in for its unread level. Workflow
|
|
10
|
+
* runs hang under the agent that started them, their members re-parented
|
|
11
|
+
* below the run's phase boxes.
|
|
12
|
+
*
|
|
13
|
+
* Labels and secondaries are injected (`labelOf` / `secondaryOf`) so this
|
|
14
|
+
* module stays free of the locale runtime. Pure over its inputs.
|
|
15
|
+
*/
|
|
16
|
+
import type { SessionId } from '@qilin-agent/session/types';
|
|
17
|
+
import type { SubagentAddress } from '@qilin-agent/subagent/client';
|
|
18
|
+
import type { CatalogRow, Catalogs } from './rows.ts';
|
|
19
|
+
/** Fold threshold: a done or standby group at or over this size renders as one aggregate node. */
|
|
20
|
+
export declare const FOLD_MIN = 6;
|
|
21
|
+
/** Discriminates what a graph node renders as. */
|
|
22
|
+
export type TaskNodeKind = 'main' | 'subagent' | 'done-agg' | 'standby-agg' | 'placeholder' | 'diagnostic'
|
|
23
|
+
/** One workflow run, hung under the agent that started it. */
|
|
24
|
+
| 'run'
|
|
25
|
+
/** One phase box of a run (members grouped per phase). */
|
|
26
|
+
| 'phase'
|
|
27
|
+
/** A run member without a catalog row, synthesized from the run's own data. */
|
|
28
|
+
| 'member';
|
|
29
|
+
/** One session row the model reads. The Session list's summaries satisfy this structurally. */
|
|
30
|
+
export interface GraphSummaryEntry {
|
|
31
|
+
readonly id: SessionId;
|
|
32
|
+
/** The human-facing label the session is known by. */
|
|
33
|
+
readonly displayTitle: string;
|
|
34
|
+
readonly running: boolean;
|
|
35
|
+
readonly parentId?: SessionId;
|
|
36
|
+
readonly origin?: 'subagent';
|
|
37
|
+
}
|
|
38
|
+
/** One member of a workflow run phase. */
|
|
39
|
+
export interface WorkflowRunMemberRow {
|
|
40
|
+
readonly seq: number;
|
|
41
|
+
readonly label: string;
|
|
42
|
+
readonly childId: SessionId;
|
|
43
|
+
/** The member's settled outcome; absent while it still runs. */
|
|
44
|
+
readonly outcome?: string;
|
|
45
|
+
}
|
|
46
|
+
/** One phase group of a workflow run. */
|
|
47
|
+
export interface WorkflowRunPhaseRow {
|
|
48
|
+
/** The phase name; absent for members the run never phased. */
|
|
49
|
+
readonly phase?: string;
|
|
50
|
+
readonly members: readonly WorkflowRunMemberRow[];
|
|
51
|
+
}
|
|
52
|
+
/** One workflow run, as the model hangs it under its origin agent. */
|
|
53
|
+
export interface WorkflowRunRow {
|
|
54
|
+
readonly runId: string;
|
|
55
|
+
readonly name: string;
|
|
56
|
+
/** The Session the run was started from; its node hangs under that agent. */
|
|
57
|
+
readonly originSessionId: SessionId;
|
|
58
|
+
readonly running: boolean;
|
|
59
|
+
readonly phases: readonly WorkflowRunPhaseRow[];
|
|
60
|
+
}
|
|
61
|
+
/** One renderable node of the tasks graph. */
|
|
62
|
+
export interface TaskNodeVM {
|
|
63
|
+
/** A Session id, a synthesized key (`done:${id}` / `standby:${id}` / `run:` / `phase:` / `placeholder:`), or a member's Session id. */
|
|
64
|
+
readonly id: string;
|
|
65
|
+
readonly kind: TaskNodeKind;
|
|
66
|
+
/** The parent id; `undefined` for the root. */
|
|
67
|
+
readonly parentId: string | undefined;
|
|
68
|
+
/** Nesting level under the root. */
|
|
69
|
+
readonly depth: number;
|
|
70
|
+
readonly label: string;
|
|
71
|
+
readonly secondary: string;
|
|
72
|
+
readonly running: boolean;
|
|
73
|
+
/** Whether the node is the Session the page is currently drawing. */
|
|
74
|
+
readonly current: boolean;
|
|
75
|
+
/** Subagent nodes only: the address every navigation travels through. */
|
|
76
|
+
readonly address: SubagentAddress | undefined;
|
|
77
|
+
/** How many members a placeholder or aggregate node stands in for. */
|
|
78
|
+
readonly childCount: number | undefined;
|
|
79
|
+
/** Aggregate nodes only: the key that toggles them in the fold state. */
|
|
80
|
+
readonly aggregateKey: string | undefined;
|
|
81
|
+
}
|
|
82
|
+
/** The built view model: flat pre-order nodes plus the parent→children index. */
|
|
83
|
+
export interface TasksGraphModel {
|
|
84
|
+
/** Pre-order: every parent before its children. */
|
|
85
|
+
readonly nodes: readonly TaskNodeVM[];
|
|
86
|
+
/** Visible children per parent id (the root id included). */
|
|
87
|
+
readonly childrenOf: Readonly<Record<string, readonly TaskNodeVM[]>>;
|
|
88
|
+
}
|
|
89
|
+
/** The model's inputs. */
|
|
90
|
+
export interface BuildTasksGraphModelInput {
|
|
91
|
+
/** The Session the page draws; the graph's root and main node. */
|
|
92
|
+
readonly rootId: SessionId;
|
|
93
|
+
/** Direct-child catalogs keyed by parent Session id. */
|
|
94
|
+
readonly catalogs: Catalogs;
|
|
95
|
+
/** Session summaries keyed by id (labels, running state, lineage counts). */
|
|
96
|
+
readonly summaries: Readonly<Record<SessionId, GraphSummaryEntry>>;
|
|
97
|
+
/** Aggregate keys currently expanded; the default state is folded. */
|
|
98
|
+
readonly expanded: ReadonlySet<string>;
|
|
99
|
+
/** The Session the page highlights as current. */
|
|
100
|
+
readonly currentSessionId: SessionId;
|
|
101
|
+
/** Workflow runs, each hung under its origin agent; absent means none. */
|
|
102
|
+
readonly runs?: readonly WorkflowRunRow[];
|
|
103
|
+
/**
|
|
104
|
+
* The display label of one catalog child.
|
|
105
|
+
* @param entry - the catalog's child row.
|
|
106
|
+
* @param summary - the child's summary, when the Session list holds one.
|
|
107
|
+
* @returns the label the node shows.
|
|
108
|
+
*/
|
|
109
|
+
readonly labelOf: (entry: Extract<CatalogRow, {
|
|
110
|
+
kind: 'child';
|
|
111
|
+
}>, summary: GraphSummaryEntry | undefined) => string;
|
|
112
|
+
/**
|
|
113
|
+
* The secondary line of one catalog child.
|
|
114
|
+
* @param entry - the catalog's child row.
|
|
115
|
+
* @returns the secondary the node shows.
|
|
116
|
+
*/
|
|
117
|
+
readonly secondaryOf: (entry: Extract<CatalogRow, {
|
|
118
|
+
kind: 'child';
|
|
119
|
+
}>) => string;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Build the tasks graph view model.
|
|
123
|
+
*
|
|
124
|
+
* A level is one parent's catalog, siblings in catalog order, and the walk
|
|
125
|
+
* descends only into a child whose own catalog has settled; a child the page
|
|
126
|
+
* has never read contributes one placeholder. The seen set makes a repeated
|
|
127
|
+
* or cyclic catalog an ordinary skip rather than an endless walk.
|
|
128
|
+
* @param input - the model's inputs.
|
|
129
|
+
* @returns pre-order nodes and the parent→children index.
|
|
130
|
+
*/
|
|
131
|
+
export declare function buildTasksGraphModel(input: BuildTasksGraphModelInput): TasksGraphModel;
|
|
132
|
+
//# sourceMappingURL=tasks-graph-model.d.ts.map
|
|
@@ -0,0 +1,82 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The tasks page's graph view state: which form the subagents section draws,
|
|
3
|
+
* which aggregate groups the user expanded, and the canvas's arrangement,
|
|
4
|
+
* manual node offsets, and camera — the state that survives the body's
|
|
5
|
+
* unmounts. One bucket per store instance; the registration is session-scoped,
|
|
6
|
+
* so a tree's framing comes back with its Session.
|
|
7
|
+
*/
|
|
8
|
+
import { type EngineStoreHandle } from '@qilin-agent/client-store';
|
|
9
|
+
import type { NodeOffsets, TaskLayoutMode } from './tasks-graph-layout.ts';
|
|
10
|
+
/** Which form the subagents section draws. */
|
|
11
|
+
export type TasksGraphViewKind = 'list' | 'graph';
|
|
12
|
+
/** The canvas camera: zoom, translate, and whether the user took it over. */
|
|
13
|
+
export interface TasksGraphCamera {
|
|
14
|
+
readonly k: number;
|
|
15
|
+
readonly tx: number;
|
|
16
|
+
readonly ty: number;
|
|
17
|
+
/**
|
|
18
|
+
* The user panned or zoomed: the auto-fit policy stops steering the canvas
|
|
19
|
+
* until an arrange resets the framing.
|
|
20
|
+
*/
|
|
21
|
+
readonly userAdjusted: boolean;
|
|
22
|
+
}
|
|
23
|
+
/** The graph view's state. */
|
|
24
|
+
export interface TasksGraphState {
|
|
25
|
+
/** Which form the subagents section draws; the list stays the default. */
|
|
26
|
+
view: TasksGraphViewKind;
|
|
27
|
+
/** Aggregate keys the user expanded, keyed `done-agg:${id}` / `standby-agg:${id}`. */
|
|
28
|
+
expanded: Record<string, boolean>;
|
|
29
|
+
/** The canvas arrangement. */
|
|
30
|
+
mode: TaskLayoutMode;
|
|
31
|
+
/** Manual node offsets from drags, relative to the auto layout. */
|
|
32
|
+
offsets: NodeOffsets;
|
|
33
|
+
/** The canvas camera; `undefined` until the first fit. */
|
|
34
|
+
camera: TasksGraphCamera | undefined;
|
|
35
|
+
}
|
|
36
|
+
/** The store's write set. */
|
|
37
|
+
type TasksGraphActions = {
|
|
38
|
+
/**
|
|
39
|
+
* Switch the subagents section's form.
|
|
40
|
+
* @param d - draft state.
|
|
41
|
+
* @param view - the form to show.
|
|
42
|
+
*/
|
|
43
|
+
viewSet: (d: TasksGraphState, view: TasksGraphViewKind) => void;
|
|
44
|
+
/**
|
|
45
|
+
* Expand or collapse one aggregate group.
|
|
46
|
+
* @param d - draft state.
|
|
47
|
+
* @param key - the aggregate's fold key.
|
|
48
|
+
*/
|
|
49
|
+
aggregateToggled: (d: TasksGraphState, key: string) => void;
|
|
50
|
+
/**
|
|
51
|
+
* Rearrange the canvas: the new mode clears the manual offsets and the
|
|
52
|
+
* camera, so the next auto-fit frames the fresh arrangement.
|
|
53
|
+
* @param d - draft state.
|
|
54
|
+
* @param mode - the arrangement to apply.
|
|
55
|
+
*/
|
|
56
|
+
modeArranged: (d: TasksGraphState, mode: TaskLayoutMode) => void;
|
|
57
|
+
/**
|
|
58
|
+
* Record one node drag's offsets, replacing the previous gesture frame.
|
|
59
|
+
* @param d - draft state.
|
|
60
|
+
* @param offsets - the offsets in force after this frame.
|
|
61
|
+
*/
|
|
62
|
+
offsetsDragged: (d: TasksGraphState, offsets: NodeOffsets) => void;
|
|
63
|
+
/**
|
|
64
|
+
* Drop every manual offset; every node returns to its auto-layout spot.
|
|
65
|
+
* @param d - draft state.
|
|
66
|
+
*/
|
|
67
|
+
offsetsReset: (d: TasksGraphState) => void;
|
|
68
|
+
/**
|
|
69
|
+
* Move the canvas camera. A frame identical to the one in force writes
|
|
70
|
+
* nothing, so a settled auto-fit cannot loop re-publishing itself.
|
|
71
|
+
* @param d - draft state.
|
|
72
|
+
* @param camera - the camera to put in force.
|
|
73
|
+
*/
|
|
74
|
+
cameraMoved: (d: TasksGraphState, camera: TasksGraphCamera) => void;
|
|
75
|
+
};
|
|
76
|
+
/**
|
|
77
|
+
* Declare the graph view's store.
|
|
78
|
+
* @returns the store handle the registration declares.
|
|
79
|
+
*/
|
|
80
|
+
export declare function createTasksGraphStore(): EngineStoreHandle<TasksGraphState, TasksGraphActions>;
|
|
81
|
+
export {};
|
|
82
|
+
//# sourceMappingURL=tasks-graph-store.d.ts.map
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { SessionListState } from '@qilin-agent/api-session-controller/client';
|
|
2
|
+
import type { JobView } from '@qilin-agent/jobs/view';
|
|
3
|
+
import type { UseSessions } from '@qilin-agent/client-ui-session/client';
|
|
4
|
+
import type { InjectFace } from '@qilin-agent/client-ui-slots';
|
|
5
|
+
import type { SessionId } from '@qilin-agent/session/types';
|
|
6
|
+
import type { TasksJobsFace } from './face.ts';
|
|
7
|
+
import { catalogsOf } from './rows.ts';
|
|
8
|
+
/** The seats the hook reads: the standing Session list and the injected jobs roster. */
|
|
9
|
+
type WorkSeats = Pick<InjectFace<TasksJobsFace>, 'useJobs' | 'watchRows'> & {
|
|
10
|
+
readonly useSessions: UseSessions;
|
|
11
|
+
};
|
|
12
|
+
/**
|
|
13
|
+
* Read the Session list and the job roster once per render and derive the
|
|
14
|
+
* running-work catalogs from them.
|
|
15
|
+
* @param sessionId - the Session whose job rows and subagent topology to read.
|
|
16
|
+
* @param seats - the standing Session list, the bound jobs roster, and its watcher.
|
|
17
|
+
* @returns this Session's job rows, the Session list summaries the surfaces fold over, and the running catalogs keyed by Session.
|
|
18
|
+
*/
|
|
19
|
+
export declare function useWorkSources(sessionId: SessionId, seats: WorkSeats): {
|
|
20
|
+
readonly jobs: readonly JobView[];
|
|
21
|
+
readonly summaries: SessionListState['byId'];
|
|
22
|
+
readonly catalogs: ReturnType<typeof catalogsOf>;
|
|
23
|
+
};
|
|
24
|
+
export {};
|
|
25
|
+
//# sourceMappingURL=work-sources.d.ts.map
|
package/package.json
CHANGED
|
@@ -1,6 +1,80 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@qilin-agent/client-ui-sidebar-tasks",
|
|
3
|
-
"
|
|
4
|
-
"
|
|
5
|
-
"
|
|
3
|
+
"description": "Subagent topology and background-job tab type for the right Sidebar: this Session's direct-child catalog, the descendant totals its summary lineage records, and its live job list",
|
|
4
|
+
"version": "3.1.4",
|
|
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-sidebar-tasks"
|
|
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-session-controller",
|
|
35
|
+
"@qilin-agent/client-ui-primitives",
|
|
36
|
+
"@qilin-agent/client-ui-session",
|
|
37
|
+
"@qilin-agent/client-ui-sidebar-right"
|
|
38
|
+
],
|
|
39
|
+
"platform": "web"
|
|
40
|
+
}
|
|
41
|
+
},
|
|
42
|
+
"license": "MIT",
|
|
43
|
+
"peerDependencies": {
|
|
44
|
+
"@qilin-agent/kylin": "~4.0.3"
|
|
45
|
+
},
|
|
46
|
+
"devDependencies": {
|
|
47
|
+
"@testing-library/react": "^16.1.0",
|
|
48
|
+
"@types/react": "~18.3.1",
|
|
49
|
+
"@types/react-dom": "~18.3.0",
|
|
50
|
+
"clsx": "^2.0.0",
|
|
51
|
+
"react": "^18.2.0",
|
|
52
|
+
"react-dom": "^18.2.0",
|
|
53
|
+
"@qilin-agent/jobs": "3.1.4",
|
|
54
|
+
"@qilin-agent/api-remotes": "3.1.4",
|
|
55
|
+
"@qilin-agent/client-locale": "3.1.4",
|
|
56
|
+
"@qilin-agent/client-store": "3.1.4",
|
|
57
|
+
"@qilin-agent/api-session-controller": "3.1.4",
|
|
58
|
+
"@qilin-agent/api-job-controller": "3.1.4",
|
|
59
|
+
"@qilin-agent/client-test-runtime": "3.1.4",
|
|
60
|
+
"@qilin-agent/client-ui-primitives": "3.1.4",
|
|
61
|
+
"@qilin-agent/client-ui-renderer": "3.1.4",
|
|
62
|
+
"@qilin-agent/client-ui-session": "3.1.4",
|
|
63
|
+
"@qilin-agent/client-ui-sidebar-right": "3.1.4",
|
|
64
|
+
"@qilin-agent/client-ui-slots": "3.1.4",
|
|
65
|
+
"@qilin-agent/client-ui-workspace": "3.1.4",
|
|
66
|
+
"@qilin-agent/kylin": "~4.0.3",
|
|
67
|
+
"@qilin-agent/subagent": "3.1.4",
|
|
68
|
+
"@qilin-agent/session": "3.1.4",
|
|
69
|
+
"@qilin-agent/typert-protocol": "3.1.4"
|
|
70
|
+
},
|
|
71
|
+
"files": [
|
|
72
|
+
"lib/index.js",
|
|
73
|
+
"lib/client.js",
|
|
74
|
+
"lib/types/**/*.d.ts"
|
|
75
|
+
],
|
|
76
|
+
"scripts": {
|
|
77
|
+
"bundle": "tsdown",
|
|
78
|
+
"watch": "tsdown --watch"
|
|
79
|
+
}
|
|
6
80
|
}
|