@william2000/dsh-nova-ui-task-board 0.2.1 → 0.3.1

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.
Files changed (51) hide show
  1. package/LICENSE +202 -0
  2. package/README.md +34 -74
  3. package/cordis.patch.yml +0 -6
  4. package/lib/client.js +4 -5777
  5. package/lib/index.js +11 -4950
  6. package/lib/types/client/NovaPluginsSection.d.ts +0 -23
  7. package/lib/types/client/NovaTaskBoardSettingsCard.d.ts +0 -8
  8. package/lib/types/client/apply-guard.d.ts +0 -20
  9. package/lib/types/client/board/ConfirmDialog.d.ts +0 -3
  10. package/lib/types/client/board/ConfirmTaskDialog.d.ts +0 -1
  11. package/lib/types/client/board/ConvertTaskModal.d.ts +0 -4
  12. package/lib/types/client/board/NewTaskModal.d.ts +0 -1
  13. package/lib/types/client/board/RequirementSplitModal.d.ts +0 -4
  14. package/lib/types/client/board/SplitConfirmDialog.d.ts +0 -2
  15. package/lib/types/client/board/TaskBoard.d.ts +0 -5
  16. package/lib/types/client/board/TaskCard.d.ts +0 -23
  17. package/lib/types/client/board/TaskDetail.d.ts +0 -1
  18. package/lib/types/client/board/status-key.d.ts +0 -5
  19. package/lib/types/client/board-controller.d.ts +0 -159
  20. package/lib/types/client/board-mount.d.ts +0 -7
  21. package/lib/types/client/chat-integration.d.ts +0 -64
  22. package/lib/types/client/drag-utils.d.ts +0 -52
  23. package/lib/types/client/filter.d.ts +0 -22
  24. package/lib/types/client/grouping.d.ts +0 -39
  25. package/lib/types/client/host-api.d.ts +0 -44
  26. package/lib/types/client/index.d.ts +0 -21
  27. package/lib/types/client/legacy-store.d.ts +0 -22
  28. package/lib/types/client/locales.d.ts +4 -22
  29. package/lib/types/client/schedule-presets.d.ts +0 -9
  30. package/lib/types/client/sidebar-entry-core.d.ts +0 -33
  31. package/lib/types/client/sidebar-entry.d.ts +0 -16
  32. package/lib/types/core/context.d.ts +0 -77
  33. package/lib/types/core/cron.d.ts +0 -42
  34. package/lib/types/core/migrate.d.ts +0 -31
  35. package/lib/types/core/model.d.ts +0 -263
  36. package/lib/types/core/recovery.d.ts +0 -18
  37. package/lib/types/core/split.d.ts +0 -55
  38. package/lib/types/core/transitions.d.ts +0 -349
  39. package/lib/types/dsh-home.d.ts +0 -16
  40. package/lib/types/host-automation.d.ts +0 -40
  41. package/lib/types/host-ledger.d.ts +0 -104
  42. package/lib/types/host-routes.d.ts +0 -42
  43. package/lib/types/host-runner.d.ts +0 -85
  44. package/lib/types/host-service.d.ts +0 -219
  45. package/lib/types/index.d.ts +0 -61
  46. package/lib/types/loopback.d.ts +0 -18
  47. package/lib/types/mount-once.d.ts +0 -8
  48. package/lib/types/protocol.d.ts +0 -75
  49. package/package.json +16 -5
  50. package/lib/client.js.map +0 -1
  51. package/lib/types/client/PlaceholderBoard.d.ts +0 -9
@@ -1,90 +1,29 @@
1
- /**
2
- * Host loader entry for the dsh-nova-ui-task-board plugin.
3
- *
4
- * T001 脚手架:插件配置项、设置命名空间(nova-task-board)、agent 播报;
5
- * T003 起加载协议控制面:Host 权威账本(T002 HostLedger)+ 状态机 +
6
- * `/api/nova-task-board/{state,action,events}` 三端点(安全栅栏 + 幂等);
7
- * T005 接入真实执行:HostExecutionRunner 经 `ctx.apiProxy` 创建独立 DSH 会话
8
- * (钉住工作区/agent 预设,权限经宿主 commands 注册表的 `/permission` 命令
9
- * 应用),5s 轮询结算;调度(T006/T007)后续接入同一账本。
10
- *
11
- * 命名空间取 `nova-task-board` 而非参考实现的 `task-board`:参考实现
12
- * @linxin666/dsh-client-ui-task-board 已在本机同一宿主注册 `task-board`
13
- * 命名空间(dsh-settings 对重复注册直接 throw,插件加载失败),本项目与
14
- * 其共存(AGENTS.md D2/D3),因此所有宿主侧标识均带 nova- 前缀;API 前缀
15
- * 同理取 `/api/nova-task-board`(参考实现已占用 `/api/task-board`)。
16
- */
17
1
  import type { Context } from '@deepseek-ai/cordis';
18
2
  import z from 'schemastery';
19
- /** Default environment variable holding the authenticated proxy token. */
20
3
  export declare const DEFAULT_PROXY_TOKEN_ENV = "DSH_TASK_BOARD_PROXY_TOKEN";
21
- /** Default environment variable holding the GitHub Webhook HMAC secret. */
22
4
  export declare const DEFAULT_GITHUB_WEBHOOK_SECRET_ENV = "DSH_TASK_BOARD_GITHUB_WEBHOOK_SECRET";
23
- /** Default environment variable holding the GitHub API token (issue polling). */
24
5
  export declare const DEFAULT_GITHUB_TOKEN_ENV = "DSH_TASK_BOARD_GITHUB_TOKEN";
25
- /** Required services (the announcement section needs the system-prompt seam; the control plane registers on the webServer; execution uses the apiProxy + agent/command registries). */
26
6
  export declare const inject: readonly ["systemPrompt", "webServer", "apiProxy", "agents", "commands"];
27
- /**
28
- * Settings namespace of the board — the section the web settings surface
29
- * edits. Spelled here rather than imported: the browser half spells the same
30
- * value and must not depend on a Host package.
31
- */
32
7
  export declare const NOVA_TASK_BOARD_SETTINGS_NAMESPACE: import("@deepseek-ai/dsh-settings").SettingsNamespace;
33
- /** Model-facing announcement: plugin presence, capabilities, and limits. */
34
8
  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
- /** Plugin config, validated by the same-named schemastery schema. */
36
9
  export interface Config {
37
- /**
38
- * When true (default), a system-prompt section announces the board to every
39
- * agent. Set false to keep the board silent in prompts; agents then learn
40
- * about it only when the user mentions it.
41
- */
42
10
  announceToAgent?: boolean;
43
- /** Master switch for the plugin (browser half + host announcement). */
44
11
  enabled?: boolean;
45
- /** Prevent idle system sleep while sessions run or schedules are armed. */
46
12
  preventIdleSleep?: boolean;
47
- /** Canonical reverse-proxy Host authorities admitted with a server-side token. */
48
13
  trustedProxyHosts?: string[];
49
- /** Environment variable whose value the authenticated proxy injects upstream. */
50
14
  proxyTokenEnv?: string;
51
- /**
52
- * Environment variable holding the GitHub Webhook HMAC secret
53
- * (`DSH_TASK_BOARD_GITHUB_WEBHOOK_SECRET`); when unset the webhook endpoint
54
- * answers 503 (T010 §14.1).
55
- */
56
15
  githubWebhookSecretEnv?: string;
57
- /**
58
- * Environment variable holding the GitHub API token used by the issue
59
- * polling collector (`DSH_TASK_BOARD_GITHUB_TOKEN`); when unset the poller
60
- * runs anonymously (rate-limited).
61
- */
62
16
  githubTokenEnv?: string;
63
17
  }
64
18
  export declare const Config: z<Config>;
65
- /** Resolve proxy access without ever placing the token value in plugin config. */
66
19
  export declare function resolveProxyAccess(config: Config | undefined, env?: NodeJS.ProcessEnv): {
67
20
  trustedProxyHosts: string[];
68
21
  proxyToken?: string;
69
22
  };
70
- /**
71
- * Resolve T010 automation secrets from environment variables (never placed in
72
- * plugin config or the ledger). Empty/absent env values resolve to undefined:
73
- * - webhookSecret 缺省 → GitHub Webhook 端点 503(未配置);
74
- * - githubToken 缺省 → Issue 轮询走匿名(GitHub 限速)。
75
- */
76
23
  export declare function resolveAutomationSecrets(config: Config | undefined, env?: NodeJS.ProcessEnv): {
77
24
  webhookSecret?: string;
78
25
  githubToken?: string;
79
26
  };
80
- /**
81
- * Register the board's announcement section, gated on the composition entry's
82
- * `announceToAgent` (and the live settings value once the web settings
83
- * surface is served). The section is re-registered whenever the source
84
- * changes, so a settings edit takes effect without a restart.
85
- * @param ctx - the plugin context (systemPrompt injected).
86
- * @param config - resolved plugin config (schema defaults applied by the loader).
87
- */
88
27
  export declare const apply: typeof applyImpl;
89
28
  declare function applyImpl(ctx: Context, config?: Config): void;
90
29
  export {};
@@ -1,23 +1,5 @@
1
- /**
2
- * 回环信任栅栏(DSH-REQ-001 §16.1):socket 地址、Host 头、浏览器同源标记。
3
- *
4
- * 语义(对齐参考实现的共享 loopback 模块,本插件自持一份):
5
- * - RFC 5735 IPv4 127/8、`::1`、IPv4-mapped `::ffff:127/8` 视为回环地址;
6
- * - `localhost` / `[::1]` / 127/8 主机名视为回环 authority;
7
- * - 请求级信任 = 回环 socket 地址 AND 回环 Host 头 AND 浏览器同源标记
8
- * (`sec-fetch-site` 与 `Origin`);socket 地址为权威依据,
9
- * `X-Forwarded-For` 永不信任。
10
- */
11
1
  import type { IncomingMessage } from 'node:http';
12
- /** IPv4 127/8 谓词(四个十进制八位组、首段 == 127)。 */
13
2
  export declare function isIPv4Loopback(v4: string): boolean;
14
- /** socket 远端地址是否属于回环范围(127/8、::1、IPv4-mapped)。 */
15
3
  export declare function isLoopbackAddress(address: string | undefined): boolean;
16
- /** 归一化 URL 主机名是否为回环 authority(localhost、[::1]、127/8)。 */
17
4
  export declare function isLoopbackHostname(hostname: string): boolean;
18
- /**
19
- * 请求级信任栅栏:回环 socket 地址 AND 回环 Host 头,加上浏览器同源标记。
20
- * socket 地址权威;`X-Forwarded-For` 永不信任。Origin 缺省时仅接受
21
- * `sec-fetch-site: same-origin` 的显式标记。
22
- */
23
5
  export declare function isLoopbackRequest(request: IncomingMessage): boolean;
@@ -1,9 +1 @@
1
- /**
2
- * Wrap a cordis plugin apply so the package runs at most once per process.
3
- * The first mount registers normally and unmarks when its fiber disposes;
4
- * any later mount of the same package name is a no-op.
5
- * @param packageName - npm package identity shared by every install source.
6
- * @param fn - the original plugin apply.
7
- * @returns an apply of the same shape.
8
- */
9
1
  export declare function mountOnce<T extends (...args: any[]) => unknown>(packageName: string, fn: T): T;
@@ -1,86 +1,30 @@
1
- /**
2
- * 协议层(DSH-REQ-001 §11):严格版本化 Action 判别联合、全量快照与 SSE 事件
3
- * 帧类型、幂等信封解析。T003 交付协议基线:
4
- *
5
- * - 端点前缀 `/api/nova-task-board`(AGENTS.md D2:参考实现已占用
6
- * `/api/task-board`,本插件必须使用 nova- 前缀);
7
- * - Action 判别联合基线:`import / create / update / delete / move / archive /
8
- * restore`;T005 扩展 `run / rerun`(真实执行,§13.2);T006 扩展
9
- * `set-schedule`(cron 周期定时,§9.4/§11.2:enabled/cron patch,nextRunAt/
10
- * lastTriggeredAt 浏览器不可写);T007 扩展 `set-one-shot`(一次性计划,
11
- * §11.2:runAt 缺省或 0 = 取消,与 set-schedule 互斥 D6);T008 扩展
12
- * `create.input`/`update.patch` 支持 project/tags(§9.2/§12.8);T009 扩展
13
- * `reorder`(列内排序/分组落位,§11.2:status 须与当前状态一致、order 有限
14
- * 数字、可携带 project/tags 归属变更)与 `move.order`(跨列拖拽落位,缺省
15
- * 追加目标列末尾);T011 扩展 `propose`(对话提取/手动转任务 → proposed
16
- * 候选,§11.2/§14.4:输入沿用 NewTaskInput 校验 + sourceConversationId/
17
- * sourceMessageId 来源引用,命令类字段递归拒绝 §16.7)、`confirm`(确认候选
18
- * → 落 backlog/todo,确认是唯一 promote 路径)、`dismiss`(拒绝/忽略删除);
19
- * T012 扩展 `propose-batch`(批量候选,§11.2/§14.5:items 逐条沿用 propose
20
- * 校验 + parentId 引用校验,整批原子落账、单 revision、幂等指纹按整批计算、
21
- * 载荷上限对齐 import 2 MiB)与 `start-split`(需求拆分驱动,§11.2/§12.9/
22
- * §14.5:提交需求文本/文件路径,Host 启动独立拆分会话并在结算时落账);
23
- * - 严格校验:exact keys、类型、枚举、cron 合法性、有限时间戳;未知字段/未知
24
- * action 一律拒绝;import 载荷递归拒绝 `args/command/executable/powershell/
25
- * shell` 字段(防注入,§16.2/§19-9);
26
- * - 幂等(§11.3):requestId + SHA-256 action 指纹,缓存判定复用 T002
27
- * HostLedger 的持久化 recentRequests(本层负责信封解析,指纹由账本层计算)。
28
- *
29
- * T010 扩展(§9.5/§11.2/§14,P3 自动化与闭环):
30
- * - `add-comment`(评论,author/body/type)、`add-artifact`(产物,
31
- * type/title/url/contentRef)、`update-context`(上下文快照部分补丁,空串/
32
- * 空数组 = 清除,updatedAt 浏览器不可写);
33
- * - `upsert-automation`(自动化规则创建/替换;nextRunAt/lastTriggeredAt 为
34
- * Host 独占字段,浏览器不可写)、`delete-automation`、`run-automation`
35
- * (手动触发一次收集);
36
- * - snapshot 新增 `automationRules`(§9.5 automation_rules 集合)。
37
- *
38
- * 分层说明:import 的任务行做「字段级严格校验 + 未知字段剥离」——v1 迁移数据
39
- * 可能携带 `priority` 等历史字段(§9.5 列入 P4 metadata),整行拒绝会阻断迁移,
40
- * 但命令类字段(禁止集)与类型/枚举/时间戳错误整行拒绝;envelope/action 层则
41
- * 是 exact-keys 严格拒绝。
42
- */
43
1
  import type { AutomationRule, ArtifactType, BatchProposeItem, CommentType, NewTaskInput, ProposeTaskInput, SchedulerSnapshot, SplitRequestInput, TaskRecord, TaskStatus, TaskUpdatePatch } from './core/model.ts';
44
2
  import { LEDGER_SCHEMA_VERSION } from './core/model.ts';
45
3
  import type { AutomationRuleInput, ContextSnapshotPatch } from './core/transitions.ts';
46
- /** 本项目 API 前缀(AGENTS.md D2,2026-08-22 定值;参考实现占用 /api/task-board)。 */
47
4
  export declare const TASK_BOARD_API_PREFIX = "/api/nova-task-board";
48
- /** 电源保护阶段(§11.1 snapshot 的 power 字段;保护实现随后续任务,本期仅类型+基础值)。 */
49
5
  export type PowerPhase = 'disabled' | 'idle' | 'acquiring' | 'active' | 'error' | 'unsupported';
50
- /** 电源保护对外快照(对齐参考实现形状,保证 T004 UI 的类型契约稳定)。 */
51
6
  export interface TaskBoardPowerSnapshot {
52
- /** 宿主平台。 */
53
7
  platform: string;
54
- /** 电源保护阶段。 */
55
8
  phase: PowerPhase;
56
- /** 保护是否启用(enabled 配置 + 平台支持)。 */
57
9
  enabled: boolean;
58
- /** 正在运行的执行数。 */
59
10
  runningSessions: number;
60
- /** 已武装的计划数。 */
61
11
  armedSchedules: number;
62
- /** 会话状态是否已知(T005 起由 5s 会话轮询驱动;轮询失败降级 false)。 */
63
12
  sessionStateKnown: boolean;
64
- /** 最近可见错误。 */
65
13
  lastError?: string;
66
14
  }
67
- /** 全量状态快照(§11.1 `GET /state`)。 */
68
15
  export interface TaskBoardSnapshot {
69
16
  schemaVersion: typeof LEDGER_SCHEMA_VERSION;
70
17
  revision: number;
71
18
  tasks: TaskRecord[];
72
19
  scheduler: SchedulerSnapshot;
73
20
  power: TaskBoardPowerSnapshot;
74
- /** 自动化收集规则(T010,§9.5 automation_rules)。 */
75
21
  automationRules: AutomationRule[];
76
22
  }
77
- /** SSE 事件帧(§11.1 `GET /events`):只推 revision/scheduler/power,绝不携带任务列表。 */
78
23
  export interface TaskBoardEventPayload {
79
24
  revision: number;
80
25
  scheduler: SchedulerSnapshot;
81
26
  power: TaskBoardPowerSnapshot;
82
27
  }
83
- /** Action 判别联合(§11.2 基线 + T005 执行扩展 + T006 定时扩展 + T009 排序/拖拽扩展 + T011 候选流转扩展)。 */
84
28
  export type TaskBoardAction = {
85
29
  kind: 'import';
86
30
  sourceId: string;
@@ -187,28 +131,9 @@ export type TaskBoardAction = {
187
131
  kind: 'run-automation';
188
132
  ruleId: string;
189
133
  };
190
- /** 幂等 action 信封(§11.3):requestId 浏览器 uuid。 */
191
134
  export interface TaskBoardActionEnvelope {
192
135
  requestId: string;
193
136
  action: TaskBoardAction;
194
137
  }
195
- /**
196
- * 载荷是否含命令类字段(§16.2/§19-9):对键名递归检查
197
- * `args/command/executable/powershell/shell`(大小写不敏感)。import 与
198
- * GitHub Webhook 外部载荷共用(T010 §14.3:自动收集内容不携带命令结构)。
199
- */
200
138
  export declare function hasForbiddenCommandFields(value: unknown): boolean;
201
- /**
202
- * 解析幂等 action 信封(§11.2/§11.3)。任何结构/类型/枚举/时间戳/cron/未知
203
- * 字段/未知 action 问题 → undefined(路由层 400 invalid-action)。返回的 action
204
- * 为规范化对象(import 任务行经严格校验与字段剥离)。
205
- *
206
- * T009(§11.2/D10):
207
- * - `reorder`:`order` 必填有限数字(浏览器提交的落位下标,0-based;Host 重算
208
- * 同列唯一,不信任浏览器序号——见 transitions.applyReorderTask);`status` 须
209
- * 为合法状态且与任务当前状态一致(防竞态,状态机层校验);`project` 可选字符串
210
- * (空串 = 清除归属,沿用 update 语义);`tags` 可选字符串数组(整体替换,
211
- * 沿用 update 的 normalizeTags 语义)。
212
- * - `move`:新增可选 `order`(有限数字 = 目标列落位下标,缺省追加目标列末尾)。
213
- */
214
139
  export declare function parseActionEnvelope(value: unknown): TaskBoardActionEnvelope | undefined;
package/package.json CHANGED
@@ -1,7 +1,16 @@
1
1
  {
2
2
  "name": "@william2000/dsh-nova-ui-task-board",
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.2.1",
3
+ "description": "Task board plugin for the DeepSeek Harness (DSH) Web GUI: real session execution, cron & one-shot scheduling, tags & projects, drag-and-drop, and conversation task capture.",
4
+ "keywords": [
5
+ "dsh",
6
+ "deepseek-harness",
7
+ "nova-ui",
8
+ "task-board",
9
+ "taskboard",
10
+ "kanban",
11
+ "plugin"
12
+ ],
13
+ "version": "0.3.1",
5
14
  "type": "module",
6
15
  "engines": {
7
16
  "node": ">=20"
@@ -17,7 +26,6 @@
17
26
  "types": "./lib/types/client/index.d.ts",
18
27
  "default": "./lib/client.js"
19
28
  },
20
- "./src/*": "./src/*",
21
29
  "./package.json": "./package.json"
22
30
  },
23
31
  "dsh": {
@@ -70,7 +78,7 @@
70
78
  "vitest": "^3.0.0"
71
79
  },
72
80
  "scripts": {
73
- "build": "tsc -p tsconfig.build.json && tsdown",
81
+ "build": "rm -rf lib && tsc -p tsconfig.build.json && tsdown",
74
82
  "bundle": "tsdown",
75
83
  "watch": "tsdown --watch",
76
84
  "typecheck": "tsc --noEmit",
@@ -78,9 +86,12 @@
78
86
  "test:watch": "vitest"
79
87
  },
80
88
  "license": "Apache-2.0",
89
+ "author": "william2000",
90
+ "homepage": "https://gitee.com/xyoc/dsh-nova-ui",
81
91
  "files": [
82
92
  "lib",
83
- "cordis.patch.yml"
93
+ "cordis.patch.yml",
94
+ "!lib/*.map"
84
95
  ],
85
96
  "repository": {
86
97
  "type": "git",