@william2000/dsh-nova-ui-task-board 0.1.1 → 0.2.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/lib/client.js +84 -21
- package/lib/client.js.map +1 -1
- package/lib/index.js +1 -1
- package/lib/types/client/NovaPluginsSection.d.ts +27 -0
- package/lib/types/client/board-controller.d.ts +2 -0
- package/lib/types/client/index.d.ts +11 -8
- package/lib/types/client/locales.d.ts +14 -0
- package/lib/types/index.d.ts +1 -1
- package/package.json +1 -1
package/lib/index.js
CHANGED
|
@@ -4765,7 +4765,7 @@ const inject = [
|
|
|
4765
4765
|
*/
|
|
4766
4766
|
const NOVA_TASK_BOARD_SETTINGS_NAMESPACE = settingsNamespace("nova-task-board");
|
|
4767
4767
|
/** Model-facing announcement: plugin presence, capabilities, and limits. */
|
|
4768
|
-
const TASK_BOARD_GUIDANCE = "本机已安装 dsh-nova-ui-task-board 插件(DSH Web GUI
|
|
4768
|
+
const TASK_BOARD_GUIDANCE = "本机已安装 dsh-nova-ui-task-board 插件(DSH Web GUI 的 Nova 任务看板,区别于参考实现「任务看板」):侧边栏「Nova 任务看板」入口。能力:多列看板管理任务;Host 权威账本;关闭浏览器后仍由 Host 执行和结算;任务可钉住工作区、agent 预设和权限;支持 Host 本地时区的 5 段 cron,错过的触发点不补跑;可选且默认关闭的空闲系统睡眠保护。对话候选任务流转(P3.1):用户要求「做某事」「记下来」「后续要处理」等明确任务意图时,在回复末尾输出一行结构化候选标记 `⟦task-board:propose⟧ 标题 | 描述 | prompt`(描述可为空,prompt 为执行时发送给 agent 的完整指令、可省略),前端解析后进入看板「待确认」列,经用户确认后方可执行。用户提到「任务看板 / Nova 任务看板 / 看板 / 定时任务 / 候选任务」时即指本插件(若同时装有参考实现「任务看板」,请优先使用本插件的「Nova 任务看板」),请据此协作。";
|
|
4769
4769
|
const Config = z.object({
|
|
4770
4770
|
announceToAgent: z.boolean().default(false),
|
|
4771
4771
|
enabled: z.boolean().default(true),
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* The "Nova 插件" settings section (a first-level entry in the settings nav).
|
|
3
|
+
*
|
|
4
|
+
* This is our OWN top-level settings page, distinct from the reference
|
|
5
|
+
* "Web UI 插件" group: it declares its own child slot (`nova.plugin.item`)
|
|
6
|
+
* and its own locale namespace (`nova-plugins`), so the dsh-nova-ui family
|
|
7
|
+
* plugins never share the reference group's slot, id, or namespace
|
|
8
|
+
* (AGENTS.md D2/D4 — the reference implementation `@linxin666/dsh-web-ui`
|
|
9
|
+
* already occupies the `web-ui.plugin` slot family and the `web-ui-plugins`
|
|
10
|
+
* section id, and we must not collide with it).
|
|
11
|
+
*
|
|
12
|
+
* The section body is deliberately thin: it renders the family plugin
|
|
13
|
+
* configuration cards contributed into `nova.plugin.item` (today that is
|
|
14
|
+
* `NovaTaskBoardSettingsCard`; future Nova family plugins add their own), so
|
|
15
|
+
* expanding the family never means editing this file.
|
|
16
|
+
*/
|
|
17
|
+
import type { ReactNode } from 'react';
|
|
18
|
+
import type { PropsLocale, PropsRenderSlots, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
19
|
+
/** Full composed component props (settings.section seat + the child-slot render + the group locale). */
|
|
20
|
+
export type NovaPluginsSectionProps = PropsRuntime<'settings.section'> & PropsRenderSlots<'nova.plugin.item'> & PropsLocale<'nova-plugins'>;
|
|
21
|
+
/**
|
|
22
|
+
* Render the Nova plugins section content column: a heading, a lede, and the
|
|
23
|
+
* family plugin cards contributed into `nova.plugin.item`.
|
|
24
|
+
* @param props - composed slot props (close, renderSlot, t).
|
|
25
|
+
* @returns the section.
|
|
26
|
+
*/
|
|
27
|
+
export declare function NovaPluginsSection(props: NovaPluginsSectionProps): ReactNode;
|
|
@@ -257,6 +257,8 @@ export declare class BoardController {
|
|
|
257
257
|
private performRemote;
|
|
258
258
|
private initializeRemote;
|
|
259
259
|
private doInitializeRemote;
|
|
260
|
+
/** 幂等建立 SSE 订阅(bootstrap 失败也要订阅,见 doInitializeRemote 注释)。 */
|
|
261
|
+
private ensureRemoteSubscription;
|
|
260
262
|
/**
|
|
261
263
|
* SSE 帧处理(§11.1):revision 与已应用的一致 → 就地更新 scheduler/power
|
|
262
264
|
* (不动任务列表,memo 边界保持);否则(帧不完整/新 revision/同步信号)重拉
|
|
@@ -1,27 +1,30 @@
|
|
|
1
1
|
import type { SettingsScope, SettingsScopeSpec } from '@deepseek-ai/dsh-client-runtime/client';
|
|
2
2
|
import type { ClientContext } from '@deepseek-ai/dsh-client-runtime/client';
|
|
3
|
-
import { type NovaTaskBoardKey } from './locales.ts';
|
|
3
|
+
import { type NovaPluginsKey, type NovaTaskBoardKey } from './locales.ts';
|
|
4
4
|
declare module '@deepseek-ai/dsh-client-ui-slots' {
|
|
5
5
|
interface LocaleNamespaceMap {
|
|
6
6
|
/** Nova task-board surface copy. */
|
|
7
7
|
'nova-task-board': NovaTaskBoardKey;
|
|
8
|
+
/** Locale copy of the "Nova 插件" settings section heading/lede. */
|
|
9
|
+
'nova-plugins': NovaPluginsKey;
|
|
8
10
|
}
|
|
9
11
|
interface SlotMap {
|
|
10
12
|
/**
|
|
11
|
-
* The child slot the
|
|
12
|
-
*
|
|
13
|
-
*
|
|
14
|
-
*
|
|
13
|
+
* The child slot the "Nova 插件" section declares. The dsh-nova-ui family
|
|
14
|
+
* plugins contribute their configuration cards here — NOT into the
|
|
15
|
+
* reference `web-ui.plugin.item` child of the "Web UI 插件" group, which
|
|
16
|
+
* `@linxin666/dsh-web-ui` owns (AGENTS.md D4). Spelled here with the same
|
|
17
|
+
* shape so this package can register without depending on the group plugin.
|
|
15
18
|
*/
|
|
16
|
-
'
|
|
19
|
+
'nova.plugin.item': {
|
|
17
20
|
kind: 'list';
|
|
18
21
|
scope: 'root';
|
|
19
|
-
owner:
|
|
22
|
+
owner: NovaPluginItemOwnerProps;
|
|
20
23
|
};
|
|
21
24
|
}
|
|
22
25
|
}
|
|
23
26
|
/** Owner share of a plugin card (the section supplies nothing). */
|
|
24
|
-
export interface
|
|
27
|
+
export interface NovaPluginItemOwnerProps {
|
|
25
28
|
/** Marker field: card owner props are intentionally empty. */
|
|
26
29
|
children?: never;
|
|
27
30
|
}
|
|
@@ -200,3 +200,17 @@ export type NovaTaskBoardKey = keyof typeof zh;
|
|
|
200
200
|
export declare function dictionary(): Record<NovaTaskBoardKey, string>;
|
|
201
201
|
/** Translate a key with optional {name} template params. */
|
|
202
202
|
export declare function t(key: NovaTaskBoardKey, params?: Record<string, string>): string;
|
|
203
|
+
/**
|
|
204
|
+
* Locale dictionary for the "Nova 插件" settings section (the first-level nav
|
|
205
|
+
* entry that hosts the dsh-nova-ui family plugin cards). Kept as its own
|
|
206
|
+
* namespace (`nova-plugins`) so the section copy never collides with the
|
|
207
|
+
* task-board card's `nova-task-board` namespace (AGENTS.md D4). Key set 以 zh 为准。
|
|
208
|
+
*/
|
|
209
|
+
export declare const groupZh: {
|
|
210
|
+
title: string;
|
|
211
|
+
description: string;
|
|
212
|
+
};
|
|
213
|
+
/** en dictionary, complete against the groupZh key set. */
|
|
214
|
+
export declare const groupEn: Record<keyof typeof groupZh, string>;
|
|
215
|
+
/** The "Nova 插件" section dictionary key union. */
|
|
216
|
+
export type NovaPluginsKey = keyof typeof groupZh;
|
package/lib/types/index.d.ts
CHANGED
|
@@ -31,7 +31,7 @@ export declare const inject: readonly ["systemPrompt", "webServer", "apiProxy",
|
|
|
31
31
|
*/
|
|
32
32
|
export declare const NOVA_TASK_BOARD_SETTINGS_NAMESPACE: import("@deepseek-ai/dsh-settings").SettingsNamespace;
|
|
33
33
|
/** Model-facing announcement: plugin presence, capabilities, and limits. */
|
|
34
|
-
export declare const TASK_BOARD_GUIDANCE = "\u672C\u673A\u5DF2\u5B89\u88C5 dsh-nova-ui-task-board \u63D2\u4EF6\uFF08DSH Web GUI \u7684\u4EFB\u52A1\u770B\u677F\
|
|
34
|
+
export declare const TASK_BOARD_GUIDANCE = "\u672C\u673A\u5DF2\u5B89\u88C5 dsh-nova-ui-task-board \u63D2\u4EF6\uFF08DSH Web GUI \u7684 Nova \u4EFB\u52A1\u770B\u677F\uFF0C\u533A\u522B\u4E8E\u53C2\u8003\u5B9E\u73B0\u300C\u4EFB\u52A1\u770B\u677F\u300D\uFF09\uFF1A\u4FA7\u8FB9\u680F\u300CNova \u4EFB\u52A1\u770B\u677F\u300D\u5165\u53E3\u3002\u80FD\u529B\uFF1A\u591A\u5217\u770B\u677F\u7BA1\u7406\u4EFB\u52A1\uFF1BHost \u6743\u5A01\u8D26\u672C\uFF1B\u5173\u95ED\u6D4F\u89C8\u5668\u540E\u4ECD\u7531 Host \u6267\u884C\u548C\u7ED3\u7B97\uFF1B\u4EFB\u52A1\u53EF\u9489\u4F4F\u5DE5\u4F5C\u533A\u3001agent \u9884\u8BBE\u548C\u6743\u9650\uFF1B\u652F\u6301 Host \u672C\u5730\u65F6\u533A\u7684 5 \u6BB5 cron\uFF0C\u9519\u8FC7\u7684\u89E6\u53D1\u70B9\u4E0D\u8865\u8DD1\uFF1B\u53EF\u9009\u4E14\u9ED8\u8BA4\u5173\u95ED\u7684\u7A7A\u95F2\u7CFB\u7EDF\u7761\u7720\u4FDD\u62A4\u3002\u5BF9\u8BDD\u5019\u9009\u4EFB\u52A1\u6D41\u8F6C\uFF08P3.1\uFF09\uFF1A\u7528\u6237\u8981\u6C42\u300C\u505A\u67D0\u4E8B\u300D\u300C\u8BB0\u4E0B\u6765\u300D\u300C\u540E\u7EED\u8981\u5904\u7406\u300D\u7B49\u660E\u786E\u4EFB\u52A1\u610F\u56FE\u65F6\uFF0C\u5728\u56DE\u590D\u672B\u5C3E\u8F93\u51FA\u4E00\u884C\u7ED3\u6784\u5316\u5019\u9009\u6807\u8BB0 `\u27E6task-board:propose\u27E7 \u6807\u9898 | \u63CF\u8FF0 | prompt`\uFF08\u63CF\u8FF0\u53EF\u4E3A\u7A7A\uFF0Cprompt \u4E3A\u6267\u884C\u65F6\u53D1\u9001\u7ED9 agent \u7684\u5B8C\u6574\u6307\u4EE4\u3001\u53EF\u7701\u7565\uFF09\uFF0C\u524D\u7AEF\u89E3\u6790\u540E\u8FDB\u5165\u770B\u677F\u300C\u5F85\u786E\u8BA4\u300D\u5217\uFF0C\u7ECF\u7528\u6237\u786E\u8BA4\u540E\u65B9\u53EF\u6267\u884C\u3002\u7528\u6237\u63D0\u5230\u300C\u4EFB\u52A1\u770B\u677F / Nova \u4EFB\u52A1\u770B\u677F / \u770B\u677F / \u5B9A\u65F6\u4EFB\u52A1 / \u5019\u9009\u4EFB\u52A1\u300D\u65F6\u5373\u6307\u672C\u63D2\u4EF6\uFF08\u82E5\u540C\u65F6\u88C5\u6709\u53C2\u8003\u5B9E\u73B0\u300C\u4EFB\u52A1\u770B\u677F\u300D\uFF0C\u8BF7\u4F18\u5148\u4F7F\u7528\u672C\u63D2\u4EF6\u7684\u300CNova \u4EFB\u52A1\u770B\u677F\u300D\uFF09\uFF0C\u8BF7\u636E\u6B64\u534F\u4F5C\u3002";
|
|
35
35
|
/** Plugin config, validated by the same-named schemastery schema. */
|
|
36
36
|
export interface Config {
|
|
37
37
|
/**
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@william2000/dsh-nova-ui-task-board",
|
|
3
3
|
"description": "Host-authoritative task board for the DSH Web GUI with real session execution, Host cron/one-shot scheduling, sorting/grouping/drag-drop, tag & project filtering; mounted without DSH source changes. Nova 系列核心功能包(任务看板插件本体:Host 服务 + 浏览器 UI)。",
|
|
4
|
-
"version": "0.
|
|
4
|
+
"version": "0.2.0",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"engines": {
|
|
7
7
|
"node": ">=20"
|