page-agent-sdk 3.16.0 → 3.17.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/README.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  [![npm](https://img.shields.io/npm/v/page-agent-sdk.svg)](https://www.npmjs.com/package/page-agent-sdk)
10
10
  [![license](https://img.shields.io/badge/license-ISC-blue.svg)](https://github.com/whyymj/page-agent-sdk/blob/master/LICENSE)
11
- [![tests](https://img.shields.io/badge/self%20tests-2181%20asserts-brightgreen.svg)](#self-tests)
11
+ [![tests](https://img.shields.io/badge/self%20tests-2192%20asserts-brightgreen.svg)](#self-tests)
12
12
 
13
13
  ---
14
14
 
@@ -247,6 +247,8 @@ ChatDialog, MessageContent, CodePreview, SkillPanel, DebugDrawer, useChat
247
247
  | `drawerHidden` | `boolean` · default `false` | Drawer mode hidden by default (not shown after `mount`; requires `sdk.show()` to display): for "click button to show chatbox" scenarios; only effective when `drawer: true` |
248
248
  | `inputRows` | `number` · default `2` | Input box rows (visible height); `1` = single row; `2` = 2-row initial height, auto-expands up to max-height:100px; `>2` = taller initial height |
249
249
  | `onClose` | `() => void` | Drawer mode close callback (default `hide`; pass to override and sync external mount state) |
250
+ | `theme` | `'light' \| 'dark'` · default `'dark'` | Built-in theme (dark = Ark design palette); fully customizable via `--cs-*` on an ancestor |
251
+ | `icons` | `Partial<DialogIcons>` | **Icon customization**: partial override of default emojis (`header` 🤖 / `subagent` 🤖 / `subagentProgress` 🧬 / `empty` 💬 / `focus` 🎯 / `queued` 📋 / `queuedEdit` ✏️ / `recommend` 💡 / `conflict` ⚠️; `assistantAvatar`/`userAvatar` default to built-in SVG, pass a text glyph to replace). Values are plain text (emoji/char, not parsed as HTML); empty string hides the icon; unset keys keep defaults |
250
252
 
251
253
  ### Extension points
252
254
 
@@ -528,7 +530,7 @@ function switchTo(i: number) {
528
530
  ## Self-tests
529
531
 
530
532
  ```bash
531
- npm test # 2181 assertions (tsx, source-level; no LLM dependency)
533
+ npm test # 2192 assertions (tsx, source-level; no LLM dependency)
532
534
  npm run test:e2e # 698 integration assertions (node, built dist; covers APIs/options/modules/simple&complex scenes: default systemPrompt(capability overview) / dynamic register + inspect sync / inspect(tools/middleware/subagent/verify/mcp/todos/lastCompression/checkpoints reflect config) / custom tools/middleware/skills/memory injection / runtime dynamic reconfiguration(setTools/addTool/removeTool/setLlm/setMemory/setSubagents reflect) / switchSession(on/off) / shareContext on/off sharing/independent / storage backends + object config / presets(3) / checkpoint / exports complete(39+ fns/components) / util fns usable(isQuotaError/estimateTokens/jpEval/searchJson) / source=builtin / mount boundary / hook multi-listener / llm config / hide/show / error scenes)
533
535
  ```
534
536
 
package/README.zh-CN.md CHANGED
@@ -8,7 +8,7 @@
8
8
 
9
9
  [![npm](https://img.shields.io/npm/v/page-agent-sdk.svg)](https://www.npmjs.com/package/page-agent-sdk)
10
10
  [![license](https://img.shields.io/badge/license-ISC-blue.svg)](https://github.com/whyymj/page-agent-sdk/blob/master/LICENSE)
11
- [![tests](https://img.shields.io/badge/self%20tests-2181%20asserts-brightgreen.svg)](#自测)
11
+ [![tests](https://img.shields.io/badge/self%20tests-2192%20asserts-brightgreen.svg)](#自测)
12
12
 
13
13
  ---
14
14
 
@@ -243,6 +243,8 @@ ChatDialog, MessageContent, CodePreview, SkillPanel, DebugDrawer, useChat
243
243
  | `drawerHidden` | `boolean` · 默认 `false` | 抽屉模式默认隐藏(`mount` 后不显示,需 `sdk.show()` 才出现):适合「点击按钮才出现聊天框」场景;仅 `drawer:true` 生效 |
244
244
  | `inputRows` | `number` · 默认 `2` | 输入框行数(可见高度);`1` = 单行;`2` = 2 行初始高度,自动扩展至 max-height:100px;`>2` = 更高初始高度 |
245
245
  | `onClose` | `() => void` | 抽屉模式关闭回调(默认 `hide`;传此选项覆盖默认,便于同步外部挂载状态) |
246
+ | `theme` | `'light' \| 'dark'` · 默认 `'dark'` | 内置主题(dark = 方舟设计稿深色紫调);亦可祖先覆盖 `--cs-*` 完全自定义 |
247
+ | `icons` | `Partial<DialogIcons>` | **图标自定义**:局部覆盖默认 emoji(`header` 🤖 / `subagent` 🤖 / `subagentProgress` 🧬 / `empty` 💬 / `focus` 🎯 / `queued` 📋 / `queuedEdit` ✏️ / `recommend` 💡 / `conflict` ⚠️;`assistantAvatar`/`userAvatar` 缺省 = 内置 SVG,传文本字形替换)。值为纯文本(emoji/字符,不解析 HTML);空串 = 隐藏该图标;未传键用默认 |
246
248
 
247
249
  ### 扩展点
248
250
 
@@ -473,7 +475,7 @@ function switchTo(i: number) {
473
475
  ## 自测
474
476
 
475
477
  ```bash
476
- npm test # 2181 项断言(tsx 源码级,不依赖 LLM)
478
+ npm test # 2192 项断言(tsx 源码级,不依赖 LLM)
477
479
  npm run test:e2e # 698 项集成断言(node 跑构建产物 dist;覆盖各 API/配置项/功能模块/简单与复杂场景:默认 systemPrompt(含能力概述) / 动态注册与 inspect 同步 / inspect(tools/middleware/subagent/verify/mcp/todos/lastCompression/checkpoints 反映配置) / 自定义 tools/middleware/skills/memory 注入 / 运行时动态重配置(setTools/addTool/removeTool/setLlm/setMemory/setSubagents 反映) / switchSession(开/未开) / shareContext 开/关共享独立 / storage 后端+对象配置 / presets 三预设 / checkpoint / 导出项完整(39+ 函数/组件) / 工具函数可用(isQuotaError/estimateTokens/jpEval/searchJson) / source=builtin / mount 边界 / hook 多监听器 / llm 配置 / 错误场景)
478
480
  ```
479
481
 
@@ -11508,9 +11508,32 @@ function Nd(e = {}) {
11508
11508
  };
11509
11509
  }
11510
11510
  //#endregion
11511
+ //#region src/core/components/icons.ts
11512
+ var Pd = {
11513
+ header: "🤖",
11514
+ subagent: "🤖",
11515
+ subagentProgress: "🧬",
11516
+ empty: "💬",
11517
+ focus: "🎯",
11518
+ queued: "📋",
11519
+ queuedEdit: "✏️",
11520
+ recommend: "💡",
11521
+ conflict: "⚠️"
11522
+ };
11523
+ function Fd(e) {
11524
+ let t = { ...Pd };
11525
+ if (!e) return t;
11526
+ let n = Object.keys(Pd);
11527
+ for (let r of n) {
11528
+ let n = e[r];
11529
+ typeof n == "string" && (t[r] = n);
11530
+ }
11531
+ return e.assistantAvatar && (t.assistantAvatar = e.assistantAvatar), e.userAvatar && (t.userAvatar = e.userAvatar), t;
11532
+ }
11533
+ //#endregion
11511
11534
  //#region src/core/composables/chatContext.ts
11512
- var Pd = Symbol("chatContext");
11513
- function Fd(e = {}) {
11535
+ var Id = Symbol("chatContext");
11536
+ function Ld(e = {}) {
11514
11537
  let t = Nd({
11515
11538
  fetchResponse: e.fetchResponse,
11516
11539
  fetchStream: e.fetchStream,
@@ -11596,18 +11619,19 @@ function Fd(e = {}) {
11596
11619
  },
11597
11620
  focusChipClick: (t) => {
11598
11621
  e.onFocusChipClick?.(t);
11599
- }
11622
+ },
11623
+ icons: Fd(e.icons)
11600
11624
  };
11601
11625
  }
11602
- function Id() {
11603
- let e = Rn(Pd);
11626
+ function Rd() {
11627
+ let e = Rn(Id);
11604
11628
  if (!e) throw Error("useChatContext 必须在 provide(chatContextKey) 的组件子树内调用");
11605
11629
  return e;
11606
11630
  }
11607
11631
  //#endregion
11608
11632
  //#region src/core/index.headless.ts
11609
- function Ld(e) {
11633
+ function zd(e) {
11610
11634
  return wd(e);
11611
11635
  }
11612
11636
  //#endregion
11613
- export { Ll as CAPABILITIES, Bl as CONTEXT_PRESETS, Zc as CompressDecisionSchema, is as DEFAULT_PROMPT_SOFT_CAP, nc as DEFAULT_SYSTEM_PROMPT, vc as HTML_VOID_TAGS, Ao as HUMAN_CONFIRM_TOOL_NAME, ai as MIN_CONTEXT_WINDOW, rs as SOFT_CAP_MIN_WINDOW, Zo as STOP_WORDS, Aa as UNSAFE_KEYS, $u as actionsToInspectInfo, Qu as actionsToTools, Qr as agentError, Ys as analyzeContext, Ba as applyPatchToClone, Ua as applyPatchToLive, Zr as asAgentError, rc as buildDataPrompt, ic as buildSystemPrompt, Pd as chatContextKey, Eu as commitSetToBind, tc as connectMcp, m as constructLlmFromConfig, p as constructOpenLlmSync, jd as copyText, Wi as createAgent, ko as createApprovalMiddleware, Fd as createChatContext, Ld as createChatSdk, Bo as createCheckpointManager, Vo as createCheckpointMiddleware, ll as createConflictManager, Xs as createContextInspectorMiddleware, Pu as createDataOps, Wc as createHtmlFormatCheck, qc as createHtmlSubagent, No as createHumanConfirmMiddleware, Mo as createHumanConfirmTool, Al as createMemoryBackend, So as createMemoryMiddleware, u as createProxyLlm, Ad as createRagSubagent, ao as createSandboxRunner, zl as createSdkEvents, gd as createSerialRunner, Pl as createSessionStore, fd as createSkillStore, Es as createSubagentMiddleware, us as createSubagentTracker, ks as createSubagentsMiddleware, od as createUsageHintsMiddleware, As as createVerifyMiddleware, cc as createVfs, Ml as createWebStorageBackend, Is as createWriteBackCheck, Fa as deepClone, nd as defineDataToolset, so as defineSkill, Jc as defineTool, Pa as deleteByPath, Qc as deriveTitle, sa as describeSchemaNode, Oi as detectGarbledToolCall, qa as diffObjects, Bu as domToStructure, Hu as domTools, td as domToolsStatic, $o as estimateMessageTokens, es as estimateRoundTokens, X as estimateTokens, g as extractReasoningDelta, ba as extractSchemaHint, Zs as extractText, h as extractTextDelta, _ as extractUsage, Iu as fetchDocTools, ed as fetchTools, Tu as filterByToolMode, Ka as findStrippedKeys, ca as formatConstraints, qr as formatZodIssues, Z as getByPath, Vu as getDomTool, Gu as getEnvSummary, Ji as getSchemaAtPath, Gi as getSchemaTopKeys, li as getTraceMetrics, $ as hashValue, ha as htmlOrchestratorPrompt, ts as indexSummarize, Ju as inspectEnvTool, Yu as inspectTools, $c as isChatModel, yi as isContextLengthError, Ki as isPathAllowed, Sl as isQuotaError, ja as isUnsafePath, eu as jpEval, Yr as jsonParseError, Ra as limitDepth, Ia as maybeParseValue, y as normalizeUsage, ci as offloadPassThroughChars, si as offloadThresholdChars, ma as presets, ta as projectBySchema, ea as projectBySchemaDeep, La as projectFields, ns as recallRounds, la as renderSchemaHint, ua as renderSchemaOverview, pa as renderSchemaShallow, Rl as resolveCapabilities, Hl as resolveContextOptions, Il as resolveDialogConfig, cl as resolveLlm, oi as resolveModelCaps, as as resolvePromptSoftCap, Fl as resolveStorage, Ga as restoreInPlace, Wa as restoreLive, Xr as routeError, oo as runHostScript, iu as runSandboxedScript, Ma as safeMerge, Wu as safeSerialize, Q as safeStringify, nu as searchJson, rd as selectBuiltinTools, Na as setByPath, os as shouldTriggerCompression, ga as systemPromptHelpers, Qo as tokenize, Y as toolError, qi as unwrapSchema, Nd as useChat, Id as useChatContext, bc as validateHtmlFormat, e as z, Jr as zodError };
11637
+ export { Ll as CAPABILITIES, Bl as CONTEXT_PRESETS, Zc as CompressDecisionSchema, is as DEFAULT_PROMPT_SOFT_CAP, nc as DEFAULT_SYSTEM_PROMPT, vc as HTML_VOID_TAGS, Ao as HUMAN_CONFIRM_TOOL_NAME, ai as MIN_CONTEXT_WINDOW, rs as SOFT_CAP_MIN_WINDOW, Zo as STOP_WORDS, Aa as UNSAFE_KEYS, $u as actionsToInspectInfo, Qu as actionsToTools, Qr as agentError, Ys as analyzeContext, Ba as applyPatchToClone, Ua as applyPatchToLive, Zr as asAgentError, rc as buildDataPrompt, ic as buildSystemPrompt, Id as chatContextKey, Eu as commitSetToBind, tc as connectMcp, m as constructLlmFromConfig, p as constructOpenLlmSync, jd as copyText, Wi as createAgent, ko as createApprovalMiddleware, Ld as createChatContext, zd as createChatSdk, Bo as createCheckpointManager, Vo as createCheckpointMiddleware, ll as createConflictManager, Xs as createContextInspectorMiddleware, Pu as createDataOps, Wc as createHtmlFormatCheck, qc as createHtmlSubagent, No as createHumanConfirmMiddleware, Mo as createHumanConfirmTool, Al as createMemoryBackend, So as createMemoryMiddleware, u as createProxyLlm, Ad as createRagSubagent, ao as createSandboxRunner, zl as createSdkEvents, gd as createSerialRunner, Pl as createSessionStore, fd as createSkillStore, Es as createSubagentMiddleware, us as createSubagentTracker, ks as createSubagentsMiddleware, od as createUsageHintsMiddleware, As as createVerifyMiddleware, cc as createVfs, Ml as createWebStorageBackend, Is as createWriteBackCheck, Fa as deepClone, nd as defineDataToolset, so as defineSkill, Jc as defineTool, Pa as deleteByPath, Qc as deriveTitle, sa as describeSchemaNode, Oi as detectGarbledToolCall, qa as diffObjects, Bu as domToStructure, Hu as domTools, td as domToolsStatic, $o as estimateMessageTokens, es as estimateRoundTokens, X as estimateTokens, g as extractReasoningDelta, ba as extractSchemaHint, Zs as extractText, h as extractTextDelta, _ as extractUsage, Iu as fetchDocTools, ed as fetchTools, Tu as filterByToolMode, Ka as findStrippedKeys, ca as formatConstraints, qr as formatZodIssues, Z as getByPath, Vu as getDomTool, Gu as getEnvSummary, Ji as getSchemaAtPath, Gi as getSchemaTopKeys, li as getTraceMetrics, $ as hashValue, ha as htmlOrchestratorPrompt, ts as indexSummarize, Ju as inspectEnvTool, Yu as inspectTools, $c as isChatModel, yi as isContextLengthError, Ki as isPathAllowed, Sl as isQuotaError, ja as isUnsafePath, eu as jpEval, Yr as jsonParseError, Ra as limitDepth, Ia as maybeParseValue, y as normalizeUsage, ci as offloadPassThroughChars, si as offloadThresholdChars, ma as presets, ta as projectBySchema, ea as projectBySchemaDeep, La as projectFields, ns as recallRounds, la as renderSchemaHint, ua as renderSchemaOverview, pa as renderSchemaShallow, Rl as resolveCapabilities, Hl as resolveContextOptions, Il as resolveDialogConfig, cl as resolveLlm, oi as resolveModelCaps, as as resolvePromptSoftCap, Fl as resolveStorage, Ga as restoreInPlace, Wa as restoreLive, Xr as routeError, oo as runHostScript, iu as runSandboxedScript, Ma as safeMerge, Wu as safeSerialize, Q as safeStringify, nu as searchJson, rd as selectBuiltinTools, Na as setByPath, os as shouldTriggerCompression, ga as systemPromptHelpers, Qo as tokenize, Y as toolError, qi as unwrapSchema, Nd as useChat, Rd as useChatContext, bc as validateHtmlFormat, e as z, Jr as zodError };