@optima-chat/agentic-sdk 0.27.1 → 0.28.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/hooks/use-tasks.d.ts +12 -3
- package/dist/hooks/use-tasks.d.ts.map +1 -1
- package/dist/hooks/use-tasks.js +78 -12
- package/dist/hooks/use-tasks.js.map +1 -1
- package/dist/index.d.ts +2 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/dist/tasks/default-provider.d.ts +11 -1
- package/dist/tasks/default-provider.d.ts.map +1 -1
- package/dist/tasks/default-provider.js +31 -2
- package/dist/tasks/default-provider.js.map +1 -1
- package/dist/tasks/types.d.ts +37 -2
- package/dist/tasks/types.d.ts.map +1 -1
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/package.json +1 -1
|
@@ -22,9 +22,18 @@ export interface UseTasksResult {
|
|
|
22
22
|
refetch: () => void;
|
|
23
23
|
}
|
|
24
24
|
/**
|
|
25
|
-
* useTasks — hydrates the tasks store slice from REST
|
|
26
|
-
*
|
|
27
|
-
*
|
|
25
|
+
* useTasks — hydrates the tasks store slice from REST (user-wide via
|
|
26
|
+
* `listAllTasks` when the provider supports it, #1591; else legacy
|
|
27
|
+
* per-session `listTasks(sessionId)`; user-wide 端点缺失(404/501)时同样回退
|
|
28
|
+
* per-session,解耦 gateway 部署顺序), and derives a `stale` flag for ghost
|
|
29
|
+
* `running` rows as a #979 mitigation.
|
|
30
|
+
*
|
|
31
|
+
* Authority model(聚合模式下按 session 分野,review Important-4):
|
|
32
|
+
* - 当前 session 的行:live task_* WS 事件(B3 store slice)保持权威 ——
|
|
33
|
+
* task_* 只经该 session 自己的反向 WS 上行,gateway 无 user 级 fanout。
|
|
34
|
+
* - 跨 session 的行:WS 事件到不了,终态只能靠重新 hydrate 收敛
|
|
35
|
+
* (mount / sessionId 变化 / 消费方接 refetch 于 WS 重连时)。无定时对账 ——
|
|
36
|
+
* 其他 session 已完成的任务在下次 hydrate 前可能仍显示进行中。
|
|
28
37
|
*
|
|
29
38
|
* Missing-provider behavior matches useWorkspaceFiles exactly: throw if
|
|
30
39
|
* `tasksProvider` is null on the context.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tasks.d.ts","sourceRoot":"","sources":["../../src/hooks/use-tasks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,2GAA2G;IAC3G,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED
|
|
1
|
+
{"version":3,"file":"use-tasks.d.ts","sourceRoot":"","sources":["../../src/hooks/use-tasks.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAExD;;;;;;;;;;GAUG;AACH,eAAO,MAAM,2BAA2B,QAAiB,CAAC;AAE1D,MAAM,WAAW,eAAe;IAC9B,2GAA2G;IAC3G,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,cAAc,EAAE,CAAC;IACxB,SAAS,EAAE,OAAO,CAAC;IACnB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,OAAO,EAAE,MAAM,IAAI,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;GAgBG;AACH,wBAAgB,QAAQ,CAAC,IAAI,CAAC,EAAE,eAAe,GAAG,cAAc,CAmI/D"}
|
package/dist/hooks/use-tasks.js
CHANGED
|
@@ -15,9 +15,18 @@ import { useChatContext } from '../provider/chat-context.js';
|
|
|
15
15
|
*/
|
|
16
16
|
export const DEFAULT_TASK_STALE_AFTER_MS = 70 * 60 * 1000; // 70 min
|
|
17
17
|
/**
|
|
18
|
-
* useTasks — hydrates the tasks store slice from REST
|
|
19
|
-
*
|
|
20
|
-
*
|
|
18
|
+
* useTasks — hydrates the tasks store slice from REST (user-wide via
|
|
19
|
+
* `listAllTasks` when the provider supports it, #1591; else legacy
|
|
20
|
+
* per-session `listTasks(sessionId)`; user-wide 端点缺失(404/501)时同样回退
|
|
21
|
+
* per-session,解耦 gateway 部署顺序), and derives a `stale` flag for ghost
|
|
22
|
+
* `running` rows as a #979 mitigation.
|
|
23
|
+
*
|
|
24
|
+
* Authority model(聚合模式下按 session 分野,review Important-4):
|
|
25
|
+
* - 当前 session 的行:live task_* WS 事件(B3 store slice)保持权威 ——
|
|
26
|
+
* task_* 只经该 session 自己的反向 WS 上行,gateway 无 user 级 fanout。
|
|
27
|
+
* - 跨 session 的行:WS 事件到不了,终态只能靠重新 hydrate 收敛
|
|
28
|
+
* (mount / sessionId 变化 / 消费方接 refetch 于 WS 重连时)。无定时对账 ——
|
|
29
|
+
* 其他 session 已完成的任务在下次 hydrate 前可能仍显示进行中。
|
|
21
30
|
*
|
|
22
31
|
* Missing-provider behavior matches useWorkspaceFiles exactly: throw if
|
|
23
32
|
* `tasksProvider` is null on the context.
|
|
@@ -36,21 +45,65 @@ export function useTasks(opts) {
|
|
|
36
45
|
const [error, setError] = useState(null);
|
|
37
46
|
// ── Hydration ──────────────────────────────────────────────────────────────
|
|
38
47
|
const hydrate = useCallback(async () => {
|
|
39
|
-
|
|
40
|
-
|
|
48
|
+
// #1591 止血 B:部署替换容器后前端拿到**新** sessionId,per-session 快照查到
|
|
49
|
+
// 空 → 面板清零。provider 支持 listAllTasks(user-wide,服务端从 token 自解
|
|
50
|
+
// userId)时走它,hydrate 不再依赖 sessionId 触发/过滤。
|
|
51
|
+
// 回退(BC):第三方注入的 TasksProvider 可能没实现 listAllTasks —— 保留旧的
|
|
52
|
+
// per-session 行为(需要 sessionId,否则保持 idle)。
|
|
53
|
+
const listAllTasks = typeof tasksProvider.listAllTasks === 'function'
|
|
54
|
+
? tasksProvider.listAllTasks.bind(tasksProvider)
|
|
55
|
+
: undefined;
|
|
56
|
+
if (!listAllTasks && !sessionId)
|
|
57
|
+
return; // legacy path: no session yet — stay idle
|
|
41
58
|
setIsLoading(true);
|
|
42
59
|
setError(null);
|
|
43
60
|
try {
|
|
44
|
-
|
|
61
|
+
let restRows;
|
|
62
|
+
if (listAllTasks) {
|
|
63
|
+
try {
|
|
64
|
+
restRows = await listAllTasks();
|
|
65
|
+
}
|
|
66
|
+
catch (err) {
|
|
67
|
+
// 部署解耦(review Important-1):gateway 侧 user-wide 端点未上线的环境
|
|
68
|
+
// (404/501,如 epic/coo 未合入)回退旧 per-session hydrate —— 面板不空,
|
|
69
|
+
// 行为不差于旧版。其他错误(网络/5xx)照常抛给外层 setError。
|
|
70
|
+
const status = err?.status;
|
|
71
|
+
const endpointMissing = status === 404 || status === 501;
|
|
72
|
+
if (!endpointMissing)
|
|
73
|
+
throw err;
|
|
74
|
+
if (!sessionId) {
|
|
75
|
+
// 端点缺失且尚无 session:与 legacy gate 一致,保持 idle 不报错。
|
|
76
|
+
return;
|
|
77
|
+
}
|
|
78
|
+
restRows = await tasksProvider.listTasks(sessionId);
|
|
79
|
+
}
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
restRows = await tasksProvider.listTasks(sessionId);
|
|
83
|
+
}
|
|
45
84
|
// Merge-prefer-terminal: if a live WS event already landed a terminal
|
|
46
85
|
// (completed/failed) row while listTasks was in-flight, keep that row
|
|
47
86
|
// rather than overwriting it with the stale REST "running" snapshot.
|
|
48
87
|
// Live WS events are one-shot; the REST result cannot self-heal them.
|
|
88
|
+
//
|
|
89
|
+
// Key (review PLAUSIBLE-5): task id 只在 session 内唯一,跨 session 可撞名
|
|
90
|
+
// (gateway 刻意如此)——按 `${sessionId}:${id}` 复合键 merge;WS 行不带
|
|
91
|
+
// sessionId,退化裸 id 与同 id REST 行配对(接受该退化:极小概率把别的
|
|
92
|
+
// session 的同 id 行认成当前 session 的)。
|
|
93
|
+
const keyOf = (t) => t.sessionId !== undefined ? `${t.sessionId}:${t.id}` : t.id;
|
|
49
94
|
const currentTasks = store.getState().tasks;
|
|
50
|
-
const
|
|
51
|
-
const
|
|
95
|
+
const storeByKey = new Map(currentTasks.map((t) => [keyOf(t), t]));
|
|
96
|
+
const restKeys = new Set(restRows.map((r) => keyOf(r)));
|
|
97
|
+
const restBareIds = new Set(restRows.map((r) => r.id));
|
|
52
98
|
const merged = restRows.map((restRow) => {
|
|
53
|
-
|
|
99
|
+
// 复合键精确命中优先;REST 行带 sessionId 而 miss 时,退化找 WS 裸行。
|
|
100
|
+
let storeRow = storeByKey.get(keyOf(restRow));
|
|
101
|
+
if (!storeRow && restRow.sessionId !== undefined) {
|
|
102
|
+
storeRow = storeByKey.get(restRow.id);
|
|
103
|
+
// 裸行一次性认领,避免同 id 多 session 的 REST 行重复吞并同一 WS 行。
|
|
104
|
+
if (storeRow)
|
|
105
|
+
storeByKey.delete(restRow.id);
|
|
106
|
+
}
|
|
54
107
|
if (storeRow && (storeRow.status === 'completed' || storeRow.status === 'failed')) {
|
|
55
108
|
// The store has a terminal row — live WS authority wins over REST.
|
|
56
109
|
return storeRow;
|
|
@@ -59,8 +112,12 @@ export function useTasks(opts) {
|
|
|
59
112
|
});
|
|
60
113
|
// Append live-only rows that REST didn't return (e.g. tasks started
|
|
61
114
|
// very recently and not yet reflected in the REST snapshot).
|
|
115
|
+
// WS 裸行(无 sessionId)按裸 id 判断是否已被 REST 覆盖,与上面的退化一致。
|
|
62
116
|
for (const storeRow of currentTasks) {
|
|
63
|
-
|
|
117
|
+
const covered = storeRow.sessionId !== undefined
|
|
118
|
+
? restKeys.has(keyOf(storeRow))
|
|
119
|
+
: restBareIds.has(storeRow.id);
|
|
120
|
+
if (!covered) {
|
|
64
121
|
merged.push(storeRow);
|
|
65
122
|
}
|
|
66
123
|
}
|
|
@@ -79,9 +136,18 @@ export function useTasks(opts) {
|
|
|
79
136
|
// ── Staleness derivation (#979 backstop) ───────────────────────────────────
|
|
80
137
|
const staleAfterMs = opts?.staleAfterMs ?? DEFAULT_TASK_STALE_AFTER_MS;
|
|
81
138
|
const now = Date.now();
|
|
82
|
-
|
|
139
|
+
// 排序放派生层而非 hydrate(review Important-3):live WS 行在 store 里 append 到底,
|
|
140
|
+
// 聚合模式下列表是全量历史 —— 若只在 hydrate 时排,刚启动的任务会沉底首屏不可见。
|
|
141
|
+
// startedAt 不可解析(WS 终态先到的占位行 startedAt='')按 0 处理,沉底。
|
|
142
|
+
const startedAtMs = (t) => {
|
|
143
|
+
const ms = Date.parse(t.startedAt);
|
|
144
|
+
return Number.isNaN(ms) ? 0 : ms;
|
|
145
|
+
};
|
|
146
|
+
const tasks = rawTasks
|
|
147
|
+
.map((t) => t.status === 'running' && now - Date.parse(t.startedAt) > staleAfterMs
|
|
83
148
|
? { ...t, stale: true }
|
|
84
|
-
: t)
|
|
149
|
+
: t)
|
|
150
|
+
.sort((a, b) => startedAtMs(b) - startedAtMs(a));
|
|
85
151
|
// ── refetch (for WS-reconnect reconciliation) ──────────────────────────────
|
|
86
152
|
const refetch = useCallback(() => {
|
|
87
153
|
void hydrate();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-tasks.js","sourceRoot":"","sources":["../../src/hooks/use-tasks.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AACzD,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAG7D;;;;;;;;;;GAUG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,EAAE,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC,SAAS;AAcpE
|
|
1
|
+
{"version":3,"file":"use-tasks.js","sourceRoot":"","sources":["../../src/hooks/use-tasks.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -25,7 +25,7 @@ export type { ChatProviderProps, ConnectionState, MessageStatus, ToolCallStatus,
|
|
|
25
25
|
export type { WorkspaceProvider, WorkspaceFile, FilePreview, ShareLink, UploadProgress, AuthenticatedUploader, UploadOptions, ListOptions, DeleteOptions, } from './workspace/types.js';
|
|
26
26
|
export { WorkspaceFileError } from './workspace/errors.js';
|
|
27
27
|
export { createDefaultWorkspaceProvider, type DefaultWorkspaceProviderOptions, } from './workspace/default-provider.js';
|
|
28
|
-
export type { TasksProvider, NormalizedTask } from './tasks/types.js';
|
|
29
|
-
export { createDefaultTasksProvider } from './tasks/default-provider.js';
|
|
28
|
+
export type { TasksProvider, NormalizedTask, NormalizedTaskStatus, UserTaskState } from './tasks/types.js';
|
|
29
|
+
export { createDefaultTasksProvider, TasksProviderHttpError } from './tasks/default-provider.js';
|
|
30
30
|
export type { ServerEvent, ClientEvent, FinishInfo, Question, ApprovalRequest, ApprovalResponse, TokenProgress, BillingError, WorkerTaskState, WorkerTaskStatus, WorkerTaskKind, } from '@optima-chat/gateway-protocol';
|
|
31
31
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAK3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,YAAY,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACxF,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGxG,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,cAAc,EACd,SAAS,EACT,YAAY,EACZ,2BAA2B,EAC3B,OAAO,EACP,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,8BAA8B,EAC9B,KAAK,+BAA+B,GACrC,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAK3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,YAAY,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAGvE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAC/E,YAAY,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,sBAAsB,CAAC;AAC5E,YAAY,EAAE,uBAAuB,EAAE,MAAM,+BAA+B,CAAC;AAC7E,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAC5C,YAAY,EACV,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,oCAAoC,CAAC;AAC5C,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AACxF,YAAY,EAAE,wBAAwB,EAAE,uBAAuB,EAAE,MAAM,gCAAgC,CAAC;AAGxG,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,aAAa,EACb,cAAc,EACd,SAAS,EACT,YAAY,EACZ,2BAA2B,EAC3B,OAAO,EACP,iBAAiB,EACjB,QAAQ,EACR,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,YAAY,EACZ,cAAc,GACf,MAAM,YAAY,CAAC;AAGpB,YAAY,EACV,iBAAiB,EACjB,aAAa,EACb,WAAW,EACX,SAAS,EACT,cAAc,EACd,qBAAqB,EACrB,aAAa,EACb,WAAW,EACX,aAAa,GACd,MAAM,sBAAsB,CAAC;AAC9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,8BAA8B,EAC9B,KAAK,+BAA+B,GACrC,MAAM,iCAAiC,CAAC;AAGzC,YAAY,EAAE,aAAa,EAAE,cAAc,EAAE,oBAAoB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAC3G,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AAGjG,YAAY,EACV,WAAW,EACX,WAAW,EACX,UAAU,EACV,QAAQ,EACR,eAAe,EACf,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,eAAe,EACf,gBAAgB,EAChB,cAAc,GACf,MAAM,+BAA+B,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -23,5 +23,5 @@ export { useDeleteFile, useRenameFile, useUploadFiles, useMakeDirectory, } from
|
|
|
23
23
|
export { workspaceKeys, WORKSPACE_DEFAULT_PATH } from './hooks/workspace-query-keys.js';
|
|
24
24
|
export { WorkspaceFileError } from './workspace/errors.js';
|
|
25
25
|
export { createDefaultWorkspaceProvider, } from './workspace/default-provider.js';
|
|
26
|
-
export { createDefaultTasksProvider } from './tasks/default-provider.js';
|
|
26
|
+
export { createDefaultTasksProvider, TasksProviderHttpError } from './tasks/default-provider.js';
|
|
27
27
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,2DAA2D;AAC3D,8EAA8E;AAC9E,wDAAwD;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,QAAQ;AACR,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAG/E,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAM5C,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAkCxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,8BAA8B,GAE/B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,0BAA0B,EAAE,MAAM,6BAA6B,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,WAAW;AACX,OAAO,EAAE,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAE3D,2DAA2D;AAC3D,8EAA8E;AAC9E,wDAAwD;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAG3D,QAAQ;AACR,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,UAAU,EAAE,MAAM,wBAAwB,CAAC;AACpD,OAAO,EAAE,gBAAgB,EAAE,MAAM,8BAA8B,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,WAAW,EAAE,MAAM,yBAAyB,CAAC;AACtD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,0BAA0B,EAAE,MAAM,yCAAyC,CAAC;AACrF,OAAO,EAAE,mBAAmB,EAAE,MAAM,kCAAkC,CAAC;AACvE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EAAE,uBAAuB,EAAE,MAAM,sCAAsC,CAAC;AAG/E,OAAO,EACL,aAAa,EACb,aAAa,EACb,cAAc,EACd,gBAAgB,GACjB,MAAM,oCAAoC,CAAC;AAM5C,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,iCAAiC,CAAC;AAkCxF,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EACL,8BAA8B,GAE/B,MAAM,iCAAiC,CAAC;AAIzC,OAAO,EAAE,0BAA0B,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC"}
|
|
@@ -1,7 +1,17 @@
|
|
|
1
1
|
import type { AuthFetch, TasksProvider } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* HTTP error thrown by the default TasksProvider. Carries the response
|
|
4
|
+
* `status` so callers (useTasks) can distinguish endpoint-missing
|
|
5
|
+
* (404/501 → fall back to per-session `listTasks`) from other failures.
|
|
6
|
+
*/
|
|
7
|
+
export declare class TasksProviderHttpError extends Error {
|
|
8
|
+
readonly status: number;
|
|
9
|
+
constructor(operation: string, status: number);
|
|
10
|
+
}
|
|
2
11
|
/**
|
|
3
12
|
* Default TasksProvider backed by the gateway's
|
|
4
|
-
* `GET /api/sessions/{sessionId}/tasks`
|
|
13
|
+
* `GET /api/sessions/{sessionId}/tasks` (per-session) and
|
|
14
|
+
* `GET /api/users/me/tasks` (user-wide, #1591) endpoints.
|
|
5
15
|
*
|
|
6
16
|
* @param gatewayBaseUrl Gateway origin (e.g. `https://gateway.example.com`).
|
|
7
17
|
* Trailing slash tolerated.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-provider.d.ts","sourceRoot":"","sources":["../../src/tasks/default-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,
|
|
1
|
+
{"version":3,"file":"default-provider.d.ts","sourceRoot":"","sources":["../../src/tasks/default-provider.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAiB,MAAM,YAAY,CAAC;AAE1E;;;;GAIG;AACH,qBAAa,sBAAuB,SAAQ,KAAK;IAC/C,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC;gBACZ,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM;CAK9C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,0BAA0B,CACxC,cAAc,EAAE,MAAM,EACtB,kBAAkB,EAAE,SAAS,GAC5B,aAAa,CAoCf"}
|
|
@@ -1,6 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HTTP error thrown by the default TasksProvider. Carries the response
|
|
3
|
+
* `status` so callers (useTasks) can distinguish endpoint-missing
|
|
4
|
+
* (404/501 → fall back to per-session `listTasks`) from other failures.
|
|
5
|
+
*/
|
|
6
|
+
export class TasksProviderHttpError extends Error {
|
|
7
|
+
status;
|
|
8
|
+
constructor(operation, status) {
|
|
9
|
+
super(`${operation} failed: ${status}`);
|
|
10
|
+
this.name = 'TasksProviderHttpError';
|
|
11
|
+
this.status = status;
|
|
12
|
+
}
|
|
13
|
+
}
|
|
1
14
|
/**
|
|
2
15
|
* Default TasksProvider backed by the gateway's
|
|
3
|
-
* `GET /api/sessions/{sessionId}/tasks`
|
|
16
|
+
* `GET /api/sessions/{sessionId}/tasks` (per-session) and
|
|
17
|
+
* `GET /api/users/me/tasks` (user-wide, #1591) endpoints.
|
|
4
18
|
*
|
|
5
19
|
* @param gatewayBaseUrl Gateway origin (e.g. `https://gateway.example.com`).
|
|
6
20
|
* Trailing slash tolerated.
|
|
@@ -18,7 +32,22 @@ export function createDefaultTasksProvider(gatewayBaseUrl, authenticatedFetch) {
|
|
|
18
32
|
: `${base}${path}`;
|
|
19
33
|
const res = await authenticatedFetch(url, { method: 'GET' });
|
|
20
34
|
if (!res.ok) {
|
|
21
|
-
throw new
|
|
35
|
+
throw new TasksProviderHttpError('listTasks', res.status);
|
|
36
|
+
}
|
|
37
|
+
const body = (await res.json());
|
|
38
|
+
return body.tasks;
|
|
39
|
+
},
|
|
40
|
+
// #1591 止血 B:user-wide 列表。服务端从 token 自解 userId(无必选参数),
|
|
41
|
+
// 部署换 session 后初次 hydrate 不再因 per-session 查询清零面板。
|
|
42
|
+
// `opts` 预留(review NIT):kind 与 listTasks 同语义转发为查询参数。
|
|
43
|
+
async listAllTasks(opts) {
|
|
44
|
+
const path = `/api/users/me/tasks`;
|
|
45
|
+
const url = opts?.kind !== undefined
|
|
46
|
+
? `${base}${path}?kind=${encodeURIComponent(opts.kind)}`
|
|
47
|
+
: `${base}${path}`;
|
|
48
|
+
const res = await authenticatedFetch(url, { method: 'GET' });
|
|
49
|
+
if (!res.ok) {
|
|
50
|
+
throw new TasksProviderHttpError('listAllTasks', res.status);
|
|
22
51
|
}
|
|
23
52
|
const body = (await res.json());
|
|
24
53
|
return body.tasks;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"default-provider.js","sourceRoot":"","sources":["../../src/tasks/default-provider.ts"],"names":[],"mappings":"AAGA
|
|
1
|
+
{"version":3,"file":"default-provider.js","sourceRoot":"","sources":["../../src/tasks/default-provider.ts"],"names":[],"mappings":"AAGA;;;;GAIG;AACH,MAAM,OAAO,sBAAuB,SAAQ,KAAK;IACtC,MAAM,CAAS;IACxB,YAAY,SAAiB,EAAE,MAAc;QAC3C,KAAK,CAAC,GAAG,SAAS,YAAY,MAAM,EAAE,CAAC,CAAC;QACxC,IAAI,CAAC,IAAI,GAAG,wBAAwB,CAAC;QACrC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;IACvB,CAAC;CACF;AAED;;;;;;;;;;GAUG;AACH,MAAM,UAAU,0BAA0B,CACxC,cAAsB,EACtB,kBAA6B;IAE7B,MAAM,IAAI,GAAG,cAAc,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,cAAc,CAAC;IAEzF,OAAO;QACL,KAAK,CAAC,SAAS,CAAC,SAAiB,EAAE,IAAgC;YACjE,MAAM,IAAI,GAAG,iBAAiB,SAAS,QAAQ,CAAC;YAChD,MAAM,GAAG,GACP,IAAI,EAAE,IAAI,KAAK,SAAS;gBACtB,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,SAAS,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACxD,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YAEvB,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,sBAAsB,CAAC,WAAW,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAC5D,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAAiC,CAAC;YAChE,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;QAED,uDAAuD;QACvD,kDAAkD;QAClD,qDAAqD;QACrD,KAAK,CAAC,YAAY,CAAC,IAAgC;YACjD,MAAM,IAAI,GAAG,qBAAqB,CAAC;YACnC,MAAM,GAAG,GACP,IAAI,EAAE,IAAI,KAAK,SAAS;gBACtB,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,SAAS,kBAAkB,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACxD,CAAC,CAAC,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;YACvB,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,GAAG,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC,CAAC;YAC7D,IAAI,CAAC,GAAG,CAAC,EAAE,EAAE,CAAC;gBACZ,MAAM,IAAI,sBAAsB,CAAC,cAAc,EAAE,GAAG,CAAC,MAAM,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM,IAAI,GAAG,CAAC,MAAM,GAAG,CAAC,IAAI,EAAE,CAA+B,CAAC;YAC9D,OAAO,IAAI,CAAC,KAAK,CAAC;QACpB,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/tasks/types.d.ts
CHANGED
|
@@ -1,4 +1,12 @@
|
|
|
1
|
-
import type { WorkerTaskState, WorkerTaskKind } from '@optima-chat/gateway-protocol';
|
|
1
|
+
import type { WorkerTaskState, WorkerTaskKind, WorkerTaskStatus } from '@optima-chat/gateway-protocol';
|
|
2
|
+
/**
|
|
3
|
+
* Task status as actually seen on the wire (review Important-2).
|
|
4
|
+
*
|
|
5
|
+
* gateway 的 per-user 端点(`/api/users/me/tasks`)对超过 staleFloor(>70min)的
|
|
6
|
+
* 幽灵 `running` 行返回 `timed_out` —— gateway-protocol 的 `WorkerTaskStatus`
|
|
7
|
+
* 尚未发布该值,先本地扩宽;protocol 发布后交集兼容。
|
|
8
|
+
*/
|
|
9
|
+
export type NormalizedTaskStatus = WorkerTaskStatus | 'timed_out';
|
|
2
10
|
/**
|
|
3
11
|
* Authenticated fetch — structural alias matching the workspace-provider pattern.
|
|
4
12
|
* NOT `typeof fetch`; the consumer-supplied function must attach Bearer tokens.
|
|
@@ -13,7 +21,30 @@ export interface TasksProvider {
|
|
|
13
21
|
listTasks(sessionId: string, opts?: {
|
|
14
22
|
kind?: WorkerTaskKind;
|
|
15
23
|
}): Promise<WorkerTaskState[]>;
|
|
24
|
+
/**
|
|
25
|
+
* #1591 止血 B:user-wide task list — `GET /api/users/me/tasks`。
|
|
26
|
+
* 服务端从 auth token 自解 userId,无参数;响应形状与 per-session 端点相同,
|
|
27
|
+
* 每项多一个 `sessionId`(归属 session)。
|
|
28
|
+
*
|
|
29
|
+
* 可选(BC):第三方注入的 provider 可能没实现——useTasks 缺失时回退旧的
|
|
30
|
+
* per-session `listTasks(sessionId)` hydrate 行为。
|
|
31
|
+
*
|
|
32
|
+
* `opts` 预留(review NIT):与 `listTasks` 能力对称;将来加分页等不动契约。
|
|
33
|
+
*/
|
|
34
|
+
listAllTasks?(opts?: {
|
|
35
|
+
kind?: WorkerTaskKind;
|
|
36
|
+
}): Promise<UserTaskState[]>;
|
|
16
37
|
}
|
|
38
|
+
/**
|
|
39
|
+
* UserTaskState — per-user 端点(`/api/users/me/tasks`)返回的行:
|
|
40
|
+
* WorkerTaskState + 归属 `sessionId`。Local type-extend until
|
|
41
|
+
* @optima-chat/gateway-protocol publishes `WorkerTaskState.sessionId`;
|
|
42
|
+
* the intersection stays compatible once it does.
|
|
43
|
+
*/
|
|
44
|
+
export type UserTaskState = Omit<WorkerTaskState, 'status'> & {
|
|
45
|
+
status: NormalizedTaskStatus;
|
|
46
|
+
sessionId?: string;
|
|
47
|
+
};
|
|
17
48
|
/**
|
|
18
49
|
* NormalizedTask — REST WorkerTaskState + optional `stale` flag.
|
|
19
50
|
* The `stale` flag is set by B4 (useTasks) when the REST snapshot may be
|
|
@@ -24,8 +55,12 @@ export interface TasksProvider {
|
|
|
24
55
|
* `WorkerTaskState.conversationId`; the intersection stays compatible once
|
|
25
56
|
* it does. Absent whenever the gateway flag is off.
|
|
26
57
|
*/
|
|
27
|
-
export type NormalizedTask = WorkerTaskState & {
|
|
58
|
+
export type NormalizedTask = Omit<WorkerTaskState, 'status'> & {
|
|
59
|
+
/** Wire status incl. `timed_out`(per-user 端点对幽灵行返回,见 NormalizedTaskStatus)。 */
|
|
60
|
+
status: NormalizedTaskStatus;
|
|
28
61
|
stale?: boolean;
|
|
29
62
|
conversationId?: string;
|
|
63
|
+
/** 归属 session(per-user hydrate #1591 带回;per-session hydrate / WS 事件行缺省)。 */
|
|
64
|
+
sessionId?: string;
|
|
30
65
|
};
|
|
31
66
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tasks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,+BAA+B,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/tasks/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,eAAe,EAAE,cAAc,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEvG;;;;;;GAMG;AACH,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,GAAG,WAAW,CAAC;AAElE;;;GAGG;AACH,MAAM,MAAM,SAAS,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAC;AAE/E;;;;GAIG;AACH,MAAM,WAAW,aAAa;IAC5B,SAAS,CAAC,SAAS,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,cAAc,CAAA;KAAE,GAAG,OAAO,CAAC,eAAe,EAAE,CAAC,CAAC;IAC3F;;;;;;;;;OASG;IACH,YAAY,CAAC,CAAC,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,cAAc,CAAA;KAAE,GAAG,OAAO,CAAC,aAAa,EAAE,CAAC,CAAC;CAC3E;AAED;;;;;GAKG;AACH,MAAM,MAAM,aAAa,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;IAC5D,MAAM,EAAE,oBAAoB,CAAC;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,cAAc,GAAG,IAAI,CAAC,eAAe,EAAE,QAAQ,CAAC,GAAG;IAC7D,+EAA+E;IAC/E,MAAM,EAAE,oBAAoB,CAAC;IAC7B,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,4EAA4E;IAC5E,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB,CAAC"}
|
package/dist/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const SDK_VERSION = "0.
|
|
1
|
+
export declare const SDK_VERSION = "0.28.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/version.js
CHANGED