@lukeashford/aurelius 3.2.1 → 3.3.0
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/dist/index.d.mts +12 -16
- package/dist/index.d.ts +12 -16
- package/dist/index.js +39 -13
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +29 -3
- package/dist/index.mjs.map +1 -1
- package/llms.md +4 -17
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -846,23 +846,13 @@ interface TodosListProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
846
846
|
* @default "Tasks"
|
|
847
847
|
*/
|
|
848
848
|
title?: string;
|
|
849
|
+
/**
|
|
850
|
+
* Called when the "Stop All Tasks" button is clicked.
|
|
851
|
+
* Only shown when at least one task is in_progress.
|
|
852
|
+
* The consumer decides what stopping means (cancel API calls, mark cancelled, etc.).
|
|
853
|
+
*/
|
|
854
|
+
onStopAllTasks?: () => void;
|
|
849
855
|
}
|
|
850
|
-
/**
|
|
851
|
-
* TodosList displays a structured list of tasks with status indicators.
|
|
852
|
-
*
|
|
853
|
-
* Features:
|
|
854
|
-
* - Nested tasks with indentation
|
|
855
|
-
* - Status indicators: done (checkmark), in_progress (snake animation), pending (empty),
|
|
856
|
-
* cancelled, failed
|
|
857
|
-
* - Done tasks are crossed out with golden checkmark
|
|
858
|
-
* - Cancelled/failed tasks are crossed out with subtle styling and sorted to bottom of their local
|
|
859
|
-
* group
|
|
860
|
-
* - Max 1/4 screen height with scroll
|
|
861
|
-
* - Subtasks appear when parent task is in_progress or done
|
|
862
|
-
*
|
|
863
|
-
* The component automatically sorts cancelled/failed tasks to the bottom of their local group
|
|
864
|
-
* (not globally), so just changing a task's status will reorder it appropriately.
|
|
865
|
-
*/
|
|
866
856
|
declare const TodosList: React$1.ForwardRefExoticComponent<TodosListProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
867
857
|
/**
|
|
868
858
|
* Returns true when every task (and subtask, recursively) is in a
|
|
@@ -1402,6 +1392,12 @@ interface ChatInterfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
|
|
|
1402
1392
|
* @default "Tasks"
|
|
1403
1393
|
*/
|
|
1404
1394
|
tasksTitle?: string;
|
|
1395
|
+
/**
|
|
1396
|
+
* Called when the "Stop All Tasks" button is clicked in the tasks panel.
|
|
1397
|
+
* Only shown when at least one task has in_progress status.
|
|
1398
|
+
* The consumer app decides what stopping means (cancel API calls, mark tasks cancelled, etc.).
|
|
1399
|
+
*/
|
|
1400
|
+
onStopAllTasks?: () => void;
|
|
1405
1401
|
/**
|
|
1406
1402
|
* Additional tools to add to the tool sidebars. Each ExternalToolDefinition provides
|
|
1407
1403
|
* an id, icon, label, group ('top-left' | 'bottom-left' | 'top-right' | 'bottom-right'),
|
package/dist/index.d.ts
CHANGED
|
@@ -846,23 +846,13 @@ interface TodosListProps extends React$1.HTMLAttributes<HTMLDivElement> {
|
|
|
846
846
|
* @default "Tasks"
|
|
847
847
|
*/
|
|
848
848
|
title?: string;
|
|
849
|
+
/**
|
|
850
|
+
* Called when the "Stop All Tasks" button is clicked.
|
|
851
|
+
* Only shown when at least one task is in_progress.
|
|
852
|
+
* The consumer decides what stopping means (cancel API calls, mark cancelled, etc.).
|
|
853
|
+
*/
|
|
854
|
+
onStopAllTasks?: () => void;
|
|
849
855
|
}
|
|
850
|
-
/**
|
|
851
|
-
* TodosList displays a structured list of tasks with status indicators.
|
|
852
|
-
*
|
|
853
|
-
* Features:
|
|
854
|
-
* - Nested tasks with indentation
|
|
855
|
-
* - Status indicators: done (checkmark), in_progress (snake animation), pending (empty),
|
|
856
|
-
* cancelled, failed
|
|
857
|
-
* - Done tasks are crossed out with golden checkmark
|
|
858
|
-
* - Cancelled/failed tasks are crossed out with subtle styling and sorted to bottom of their local
|
|
859
|
-
* group
|
|
860
|
-
* - Max 1/4 screen height with scroll
|
|
861
|
-
* - Subtasks appear when parent task is in_progress or done
|
|
862
|
-
*
|
|
863
|
-
* The component automatically sorts cancelled/failed tasks to the bottom of their local group
|
|
864
|
-
* (not globally), so just changing a task's status will reorder it appropriately.
|
|
865
|
-
*/
|
|
866
856
|
declare const TodosList: React$1.ForwardRefExoticComponent<TodosListProps & React$1.RefAttributes<HTMLDivElement>>;
|
|
867
857
|
/**
|
|
868
858
|
* Returns true when every task (and subtask, recursively) is in a
|
|
@@ -1402,6 +1392,12 @@ interface ChatInterfaceProps extends Omit<React$1.HTMLAttributes<HTMLDivElement>
|
|
|
1402
1392
|
* @default "Tasks"
|
|
1403
1393
|
*/
|
|
1404
1394
|
tasksTitle?: string;
|
|
1395
|
+
/**
|
|
1396
|
+
* Called when the "Stop All Tasks" button is clicked in the tasks panel.
|
|
1397
|
+
* Only shown when at least one task has in_progress status.
|
|
1398
|
+
* The consumer app decides what stopping means (cancel API calls, mark tasks cancelled, etc.).
|
|
1399
|
+
*/
|
|
1400
|
+
onStopAllTasks?: () => void;
|
|
1405
1401
|
/**
|
|
1406
1402
|
* Additional tools to add to the tool sidebars. Each ExternalToolDefinition provides
|
|
1407
1403
|
* an id, icon, label, group ('top-left' | 'bottom-left' | 'top-right' | 'bottom-right'),
|
package/dist/index.js
CHANGED
|
@@ -6061,6 +6061,7 @@ ArtifactsPanelToggle.displayName = "ArtifactsPanelToggle";
|
|
|
6061
6061
|
|
|
6062
6062
|
// src/components/chat/TodosList.tsx
|
|
6063
6063
|
var import_react73 = __toESM(require("react"));
|
|
6064
|
+
var import_lucide_react14 = require("lucide-react");
|
|
6064
6065
|
var TASK_STATUSES = {
|
|
6065
6066
|
PENDING: "pending",
|
|
6066
6067
|
IN_PROGRESS: "in_progress",
|
|
@@ -6126,8 +6127,15 @@ function TaskItem({ task, depth = 0 }) {
|
|
|
6126
6127
|
)
|
|
6127
6128
|
), showSubtasks && /* @__PURE__ */ import_react73.default.createElement("div", { className: "flex flex-col" }, sortedSubtasks.map((subtask) => /* @__PURE__ */ import_react73.default.createElement(TaskItem, { key: subtask.id, task: subtask, depth: depth + 1 }))));
|
|
6128
6129
|
}
|
|
6130
|
+
function hasInProgressTask(tasks) {
|
|
6131
|
+
return tasks.some((t) => {
|
|
6132
|
+
if (t.status === "in_progress") return true;
|
|
6133
|
+
if (t.subtasks && t.subtasks.length > 0) return hasInProgressTask(t.subtasks);
|
|
6134
|
+
return false;
|
|
6135
|
+
});
|
|
6136
|
+
}
|
|
6129
6137
|
var TodosList = import_react73.default.forwardRef(
|
|
6130
|
-
({ tasks, title = "Tasks", className, ...rest }, ref) => {
|
|
6138
|
+
({ tasks, title = "Tasks", onStopAllTasks, className, ...rest }, ref) => {
|
|
6131
6139
|
const sortedTasks = (0, import_react73.useMemo)(() => sortTasks(tasks), [tasks]);
|
|
6132
6140
|
const countCompleted = (taskList) => {
|
|
6133
6141
|
let count = 0;
|
|
@@ -6150,6 +6158,7 @@ var TodosList = import_react73.default.forwardRef(
|
|
|
6150
6158
|
}
|
|
6151
6159
|
return count;
|
|
6152
6160
|
};
|
|
6161
|
+
const showStopButton = !!onStopAllTasks && hasInProgressTask(tasks);
|
|
6153
6162
|
if (tasks.length === 0) {
|
|
6154
6163
|
return null;
|
|
6155
6164
|
}
|
|
@@ -6172,7 +6181,23 @@ var TodosList = import_react73.default.forwardRef(
|
|
|
6172
6181
|
/* @__PURE__ */ import_react73.default.createElement("h4", { className: "text-xs font-medium text-white" }, title),
|
|
6173
6182
|
/* @__PURE__ */ import_react73.default.createElement("span", { className: "text-xs text-silver/60" }, countCompleted(tasks), "/", countTotal(tasks))
|
|
6174
6183
|
),
|
|
6175
|
-
/* @__PURE__ */ import_react73.default.createElement("div", { className: "flex-1 overflow-y-auto px-4 py-2" }, sortedTasks.map((task) => /* @__PURE__ */ import_react73.default.createElement(TaskItem, { key: task.id, task })))
|
|
6184
|
+
/* @__PURE__ */ import_react73.default.createElement("div", { className: "flex-1 overflow-y-auto px-4 py-2" }, sortedTasks.map((task) => /* @__PURE__ */ import_react73.default.createElement(TaskItem, { key: task.id, task }))),
|
|
6185
|
+
showStopButton && /* @__PURE__ */ import_react73.default.createElement("div", { className: "px-4 py-2 border-t border-ash/40 flex-shrink-0" }, /* @__PURE__ */ import_react73.default.createElement(
|
|
6186
|
+
"button",
|
|
6187
|
+
{
|
|
6188
|
+
type: "button",
|
|
6189
|
+
onClick: onStopAllTasks,
|
|
6190
|
+
className: cx(
|
|
6191
|
+
"w-full flex items-center justify-center gap-2 px-3 py-1.5",
|
|
6192
|
+
"bg-error/10 hover:bg-error/20 text-error",
|
|
6193
|
+
"border border-error/30",
|
|
6194
|
+
"text-xs font-medium",
|
|
6195
|
+
"transition-colors duration-200"
|
|
6196
|
+
)
|
|
6197
|
+
},
|
|
6198
|
+
/* @__PURE__ */ import_react73.default.createElement(import_lucide_react14.Square, { className: "w-3 h-3 fill-current" }),
|
|
6199
|
+
"Stop All Tasks"
|
|
6200
|
+
))
|
|
6176
6201
|
);
|
|
6177
6202
|
}
|
|
6178
6203
|
);
|
|
@@ -6438,6 +6463,7 @@ var ChatInterface = import_react77.default.forwardRef(
|
|
|
6438
6463
|
onArtifactsPanelOpenChange,
|
|
6439
6464
|
tasks = [],
|
|
6440
6465
|
tasksTitle,
|
|
6466
|
+
onStopAllTasks,
|
|
6441
6467
|
tools: externalTools = [],
|
|
6442
6468
|
className,
|
|
6443
6469
|
...rest
|
|
@@ -6698,7 +6724,7 @@ var ChatInterface = import_react77.default.forwardRef(
|
|
|
6698
6724
|
}
|
|
6699
6725
|
);
|
|
6700
6726
|
case "todos":
|
|
6701
|
-
return tasks.length > 0 ? /* @__PURE__ */ import_react77.default.createElement(TodosList, { tasks, title: tasksTitle, className: "h-full" }) : /* @__PURE__ */ import_react77.default.createElement("div", { className: "h-full flex flex-col" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex items-center p-4 border-b border-ash/40 shrink-0" }, /* @__PURE__ */ import_react77.default.createElement("h3", { className: "text-xs font-medium text-white" }, "Tasks")), /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex-1 flex items-center justify-center" }, /* @__PURE__ */ import_react77.default.createElement("p", { className: "text-xs text-silver/60" }, "No tasks")));
|
|
6727
|
+
return tasks.length > 0 ? /* @__PURE__ */ import_react77.default.createElement(TodosList, { tasks, title: tasksTitle, onStopAllTasks, className: "h-full" }) : /* @__PURE__ */ import_react77.default.createElement("div", { className: "h-full flex flex-col" }, /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex items-center p-4 border-b border-ash/40 shrink-0" }, /* @__PURE__ */ import_react77.default.createElement("h3", { className: "text-xs font-medium text-white" }, "Tasks")), /* @__PURE__ */ import_react77.default.createElement("div", { className: "flex-1 flex items-center justify-center" }, /* @__PURE__ */ import_react77.default.createElement("p", { className: "text-xs text-silver/60" }, "No tasks")));
|
|
6702
6728
|
default: {
|
|
6703
6729
|
const externalTool = externalTools.find((t) => t.id === toolId);
|
|
6704
6730
|
return externalTool?.content ?? null;
|
|
@@ -6796,7 +6822,7 @@ ChatInterface.displayName = "ChatInterface";
|
|
|
6796
6822
|
|
|
6797
6823
|
// src/components/chat/MessageActions.tsx
|
|
6798
6824
|
var import_react78 = __toESM(require("react"));
|
|
6799
|
-
var
|
|
6825
|
+
var import_lucide_react15 = require("lucide-react");
|
|
6800
6826
|
var ActionButton2 = ({ onClick, label, children, className, disabled }) => /* @__PURE__ */ import_react78.default.createElement(
|
|
6801
6827
|
"button",
|
|
6802
6828
|
{
|
|
@@ -6917,7 +6943,7 @@ var MessageActions = import_react78.default.forwardRef(
|
|
|
6917
6943
|
label: "Cancel edit",
|
|
6918
6944
|
className: "text-silver/60 hover:text-error"
|
|
6919
6945
|
},
|
|
6920
|
-
/* @__PURE__ */ import_react78.default.createElement(
|
|
6946
|
+
/* @__PURE__ */ import_react78.default.createElement(import_lucide_react15.X, { className: "w-4 h-4" })
|
|
6921
6947
|
), /* @__PURE__ */ import_react78.default.createElement(
|
|
6922
6948
|
ActionButton2,
|
|
6923
6949
|
{
|
|
@@ -6926,7 +6952,7 @@ var MessageActions = import_react78.default.forwardRef(
|
|
|
6926
6952
|
className: "text-silver/60 hover:text-gold",
|
|
6927
6953
|
disabled: !editValue.trim() || editValue.trim() === content
|
|
6928
6954
|
},
|
|
6929
|
-
/* @__PURE__ */ import_react78.default.createElement(
|
|
6955
|
+
/* @__PURE__ */ import_react78.default.createElement(import_lucide_react15.Send, { className: "w-4 h-4" })
|
|
6930
6956
|
))
|
|
6931
6957
|
),
|
|
6932
6958
|
/* @__PURE__ */ import_react78.default.createElement("p", { className: "text-xs text-silver/50 mt-1" }, "Press Enter to submit, Esc to cancel. This will create a new branch.")
|
|
@@ -6943,9 +6969,9 @@ var MessageActions = import_react78.default.forwardRef(
|
|
|
6943
6969
|
),
|
|
6944
6970
|
...rest
|
|
6945
6971
|
},
|
|
6946
|
-
/* @__PURE__ */ import_react78.default.createElement(ActionButton2, { onClick: handleCopy, label: copied ? "Copied!" : "Copy message" }, copied ? /* @__PURE__ */ import_react78.default.createElement(
|
|
6947
|
-
isUser && onEdit && /* @__PURE__ */ import_react78.default.createElement(ActionButton2, { onClick: handleStartEdit, label: "Edit message" }, /* @__PURE__ */ import_react78.default.createElement(
|
|
6948
|
-
!isUser && onRetry && /* @__PURE__ */ import_react78.default.createElement(ActionButton2, { onClick: onRetry, label: "Regenerate response" }, /* @__PURE__ */ import_react78.default.createElement(
|
|
6972
|
+
/* @__PURE__ */ import_react78.default.createElement(ActionButton2, { onClick: handleCopy, label: copied ? "Copied!" : "Copy message" }, copied ? /* @__PURE__ */ import_react78.default.createElement(import_lucide_react15.Check, { className: "w-3.5 h-3.5 text-success" }) : /* @__PURE__ */ import_react78.default.createElement(import_lucide_react15.Copy, { className: "w-3.5 h-3.5" })),
|
|
6973
|
+
isUser && onEdit && /* @__PURE__ */ import_react78.default.createElement(ActionButton2, { onClick: handleStartEdit, label: "Edit message" }, /* @__PURE__ */ import_react78.default.createElement(import_lucide_react15.Pencil, { className: "w-3.5 h-3.5" })),
|
|
6974
|
+
!isUser && onRetry && /* @__PURE__ */ import_react78.default.createElement(ActionButton2, { onClick: onRetry, label: "Regenerate response" }, /* @__PURE__ */ import_react78.default.createElement(import_lucide_react15.RotateCcw, { className: "w-3.5 h-3.5" }))
|
|
6949
6975
|
);
|
|
6950
6976
|
}
|
|
6951
6977
|
);
|
|
@@ -6953,7 +6979,7 @@ MessageActions.displayName = "MessageActions";
|
|
|
6953
6979
|
|
|
6954
6980
|
// src/components/chat/BranchNavigator.tsx
|
|
6955
6981
|
var import_react79 = __toESM(require("react"));
|
|
6956
|
-
var
|
|
6982
|
+
var import_lucide_react16 = require("lucide-react");
|
|
6957
6983
|
var BranchNavigator = import_react79.default.forwardRef(
|
|
6958
6984
|
({
|
|
6959
6985
|
current,
|
|
@@ -6985,7 +7011,7 @@ var BranchNavigator = import_react79.default.forwardRef(
|
|
|
6985
7011
|
"aria-label": "Branch navigation",
|
|
6986
7012
|
...rest
|
|
6987
7013
|
},
|
|
6988
|
-
showIcon && /* @__PURE__ */ import_react79.default.createElement(
|
|
7014
|
+
showIcon && /* @__PURE__ */ import_react79.default.createElement(import_lucide_react16.GitBranch, { className: cx(iconSize, "mr-0.5 text-silver/50"), "aria-hidden": "true" }),
|
|
6989
7015
|
/* @__PURE__ */ import_react79.default.createElement(
|
|
6990
7016
|
"button",
|
|
6991
7017
|
{
|
|
@@ -6999,7 +7025,7 @@ var BranchNavigator = import_react79.default.forwardRef(
|
|
|
6999
7025
|
),
|
|
7000
7026
|
"aria-label": "Previous branch"
|
|
7001
7027
|
},
|
|
7002
|
-
/* @__PURE__ */ import_react79.default.createElement(
|
|
7028
|
+
/* @__PURE__ */ import_react79.default.createElement(import_lucide_react16.ChevronLeft, { className: iconSize })
|
|
7003
7029
|
),
|
|
7004
7030
|
/* @__PURE__ */ import_react79.default.createElement("span", { className: cx(textSize, "tabular-nums min-w-6 text-center") }, current, "/", total),
|
|
7005
7031
|
/* @__PURE__ */ import_react79.default.createElement(
|
|
@@ -7015,7 +7041,7 @@ var BranchNavigator = import_react79.default.forwardRef(
|
|
|
7015
7041
|
),
|
|
7016
7042
|
"aria-label": "Next branch"
|
|
7017
7043
|
},
|
|
7018
|
-
/* @__PURE__ */ import_react79.default.createElement(
|
|
7044
|
+
/* @__PURE__ */ import_react79.default.createElement(import_lucide_react16.ChevronRight, { className: iconSize })
|
|
7019
7045
|
)
|
|
7020
7046
|
);
|
|
7021
7047
|
}
|