@whispering233/ai-editor-agent 0.0.56 → 0.0.58

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.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  export declare const AGENT_PKG_NAME = "@whispering233/ai-editor-agent";
2
2
  export declare const TOOLS_DEP = "@whispering233/ai-editor-tools";
3
- export { AGENTS_FILE_NAME, contextUsageField, createCustomTools, createPingFrame, createProposalSink, createProposalStore, createProjectRuntime, createSessionFrame, createSpeedMeter, defaultProposalStore, buildResourceLoaderOptions, estimateTokens, extractText, FOCUS_TITLE, findProjectSession, getThinkingPreview, KERNEL_PROMPT, lastVisibleSessionText, listProjectSessions, NoModelConfiguredError, openProjectSessionManager, projectAgentsFilePath, projectMessageForWire, projectSessionMessages, projectSessionsDir, PROPOSAL_BUILDERS, PROPOSAL_MAX_COUNT, PROPOSAL_TTL_MS, readProjectAgentsFile, readProjectSession, readSessionThinking, resolveAgentDir, resolveDefaultModel, sessionUsage, SESSIONS_DIR_NAME, SPEED_MIN_DURATION_MS, stringifyToolResult, THINKING_PREVIEW_MAX_CHARS, toProposalPayload, toSseFrame, TOOL_RESULT_MAX_TOKENS, truncateToolResultText, } from "./runtime/index.js";
3
+ export { AGENTS_FILE_NAME, contextUsageField, createCustomTools, createPingFrame, createProposalSink, createProposalStore, createProjectRuntime, createSessionFrame, createSpeedMeter, defaultProposalStore, buildResourceLoaderOptions, estimateTokens, extractText, FOCUS_TITLE, findProjectSession, getThinkingPreview, KERNEL_PROMPT, KERNEL_PROMPTS, lastVisibleSessionText, listProjectSessions, NoModelConfiguredError, openProjectSessionManager, projectAgentsFilePath, projectMessageForWire, projectSessionMessages, projectSessionsDir, PROPOSAL_BUILDERS, PROPOSAL_MAX_COUNT, PROPOSAL_TTL_MS, PRACTICE_KERNEL_PROMPT, readProjectAgentsFile, readProjectSession, readSessionThinking, resolveAgentDir, resolveDefaultModel, sessionUsage, SESSIONS_DIR_NAME, SPEED_MIN_DURATION_MS, stringifyToolResult, THINKING_PREVIEW_MAX_CHARS, toProposalPayload, toSseFrame, TOOL_RESULT_MAX_TOKENS, truncateToolResultText, } from "./runtime/index.js";
4
4
  export type { CreateCustomToolsOptions, CreateProposalSinkOptions, ProjectRuntime, ProjectRuntimeInput, Proposal, ProposalStore, ProposalStoreOptions, ProposalPayload, ProposalSink, ProposalSinkInput, ResourceLoaderOptions, SessionEntry, SessionInfo, SseFrame, SseProjectionOptions, ThinkingLevel, ThinkingPreviewProjection, WireMessage, WireSessionMessage, WireToolCall, } from "./runtime/index.js";
5
5
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,cAAc,mCAAmC,CAAC;AAC/D,eAAO,MAAM,SAAS,mCAAiB,CAAC;AAExC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,UAAU,EACV,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,oBAAoB,EACpB,aAAa,EACb,yBAAyB,EACzB,WAAW,EACX,kBAAkB,EAClB,YAAY,GACb,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAQA,eAAO,MAAM,cAAc,mCAAmC,CAAC;AAC/D,eAAO,MAAM,SAAS,mCAAiB,CAAC;AAExC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,UAAU,EACV,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC;AAE5B,YAAY,EACV,wBAAwB,EACxB,yBAAyB,EACzB,cAAc,EACd,mBAAmB,EACnB,QAAQ,EACR,aAAa,EACb,oBAAoB,EACpB,eAAe,EACf,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,YAAY,EACZ,WAAW,EACX,QAAQ,EACR,oBAAoB,EACpB,aAAa,EACb,yBAAyB,EACzB,WAAW,EACX,kBAAkB,EAClB,YAAY,GACb,MAAM,oBAAoB,CAAC"}
package/dist/index.js CHANGED
@@ -6,5 +6,5 @@
6
6
  import { TOOLS_PKG_NAME } from "@whispering233/ai-editor-tools";
7
7
  export const AGENT_PKG_NAME = "@whispering233/ai-editor-agent";
8
8
  export const TOOLS_DEP = TOOLS_PKG_NAME;
9
- export { AGENTS_FILE_NAME, contextUsageField, createCustomTools, createPingFrame, createProposalSink, createProposalStore, createProjectRuntime, createSessionFrame, createSpeedMeter, defaultProposalStore, buildResourceLoaderOptions, estimateTokens, extractText, FOCUS_TITLE, findProjectSession, getThinkingPreview, KERNEL_PROMPT, lastVisibleSessionText, listProjectSessions, NoModelConfiguredError, openProjectSessionManager, projectAgentsFilePath, projectMessageForWire, projectSessionMessages, projectSessionsDir, PROPOSAL_BUILDERS, PROPOSAL_MAX_COUNT, PROPOSAL_TTL_MS, readProjectAgentsFile, readProjectSession, readSessionThinking, resolveAgentDir, resolveDefaultModel, sessionUsage, SESSIONS_DIR_NAME, SPEED_MIN_DURATION_MS, stringifyToolResult, THINKING_PREVIEW_MAX_CHARS, toProposalPayload, toSseFrame, TOOL_RESULT_MAX_TOKENS, truncateToolResultText, } from "./runtime/index.js";
9
+ export { AGENTS_FILE_NAME, contextUsageField, createCustomTools, createPingFrame, createProposalSink, createProposalStore, createProjectRuntime, createSessionFrame, createSpeedMeter, defaultProposalStore, buildResourceLoaderOptions, estimateTokens, extractText, FOCUS_TITLE, findProjectSession, getThinkingPreview, KERNEL_PROMPT, KERNEL_PROMPTS, lastVisibleSessionText, listProjectSessions, NoModelConfiguredError, openProjectSessionManager, projectAgentsFilePath, projectMessageForWire, projectSessionMessages, projectSessionsDir, PROPOSAL_BUILDERS, PROPOSAL_MAX_COUNT, PROPOSAL_TTL_MS, PRACTICE_KERNEL_PROMPT, readProjectAgentsFile, readProjectSession, readSessionThinking, resolveAgentDir, resolveDefaultModel, sessionUsage, SESSIONS_DIR_NAME, SPEED_MIN_DURATION_MS, stringifyToolResult, THINKING_PREVIEW_MAX_CHARS, toProposalPayload, toSseFrame, TOOL_RESULT_MAX_TOKENS, truncateToolResultText, } from "./runtime/index.js";
10
10
  //# 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,oCAAoC;AACpC,EAAE;AACF,6EAA6E;AAC7E,sEAAsE;AACtE,qBAAqB;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,MAAM,CAAC,MAAM,cAAc,GAAG,gCAAgC,CAAC;AAC/D,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC;AAExC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,UAAU,EACV,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,oCAAoC;AACpC,EAAE;AACF,6EAA6E;AAC7E,sEAAsE;AACtE,qBAAqB;AAErB,OAAO,EAAE,cAAc,EAAE,MAAM,gCAAgC,CAAC;AAEhE,MAAM,CAAC,MAAM,cAAc,GAAG,gCAAgC,CAAC;AAC/D,MAAM,CAAC,MAAM,SAAS,GAAG,cAAc,CAAC;AAExC,OAAO,EACL,gBAAgB,EAChB,iBAAiB,EACjB,iBAAiB,EACjB,eAAe,EACf,kBAAkB,EAClB,mBAAmB,EACnB,oBAAoB,EACpB,kBAAkB,EAClB,gBAAgB,EAChB,oBAAoB,EACpB,0BAA0B,EAC1B,cAAc,EACd,WAAW,EACX,WAAW,EACX,kBAAkB,EAClB,kBAAkB,EAClB,aAAa,EACb,cAAc,EACd,sBAAsB,EACtB,mBAAmB,EACnB,sBAAsB,EACtB,yBAAyB,EACzB,qBAAqB,EACrB,qBAAqB,EACrB,sBAAsB,EACtB,kBAAkB,EAClB,iBAAiB,EACjB,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,qBAAqB,EACrB,kBAAkB,EAClB,mBAAmB,EACnB,eAAe,EACf,mBAAmB,EACnB,YAAY,EACZ,iBAAiB,EACjB,qBAAqB,EACrB,mBAAmB,EACnB,0BAA0B,EAC1B,iBAAiB,EACjB,UAAU,EACV,sBAAsB,EACtB,sBAAsB,GACvB,MAAM,oBAAoB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/runtime/events.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,EAAkB,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEjF,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,gDAAgD;AAChD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,mCAAmC;AACnC,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC;IACjD,2FAA2F;IAC3F,eAAe,CAAC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC;IAC9C,wFAAwF;IACxF,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AAqBD,qCAAqC;AACrC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAE9D;AAED,2BAA2B;AAC3B,wBAAgB,eAAe,IAAI,QAAQ,CAE1C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMxF;AAmED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,GAAE,oBAAyB,GAAG,QAAQ,GAAG,IAAI,CA4IxG"}
1
+ {"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/runtime/events.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,iBAAiB,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACvF,OAAO,EAA0C,KAAK,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAEzG,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AAE7C,gDAAgD;AAChD,MAAM,WAAW,QAAQ;IACvB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAC/B;AAED,mCAAmC;AACnC,MAAM,WAAW,oBAAoB;IACnC,4EAA4E;IAC5E,eAAe,CAAC,EAAE,MAAM,YAAY,GAAG,SAAS,CAAC;IACjD,2FAA2F;IAC3F,eAAe,CAAC,EAAE,MAAM,SAAS,GAAG,SAAS,CAAC;IAC9C,wFAAwF;IACxF,UAAU,CAAC,EAAE,UAAU,CAAC;CACzB;AA2BD,qCAAqC;AACrC,wBAAgB,kBAAkB,CAAC,SAAS,EAAE,MAAM,GAAG,QAAQ,CAE9D;AAED,2BAA2B;AAC3B,wBAAgB,eAAe,IAAI,QAAQ,CAE1C;AAED;;;GAGG;AACH,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAMxF;AAmED;;;;GAIG;AACH,wBAAgB,UAAU,CAAC,KAAK,EAAE,iBAAiB,EAAE,OAAO,GAAE,oBAAyB,GAAG,QAAQ,GAAG,IAAI,CA4IxG"}
@@ -4,16 +4,22 @@
4
4
  // 三件必须做的事(每件都有「不做就会出事」的理由):
5
5
  // 1. **剥离 `partial`/完整消息大对象**:pi 的增量事件都挂一份完整消息快照,原样转发单帧可达数百 KB。
6
6
  // 2. **thinking 降预览**:全文走按需端点,帧里只给预览 + 定位参数(流式期间已由 thinking_delta 下发增量)。
7
- // 3. **AUTO 工具的 `details` 不下发**:与 `content` 重复且可能极大;只有 PROPOSAL 工具的
8
- // details(提案载荷)是 UI 的真实消费面。
7
+ // 3. **AUTO 工具的 `details` 不下发**:与 `content` 重复且可能极大;只有「details 是 UI 真实消费面」的
8
+ // 工具放行(提案工具 + shared `TOOL_DETAILS_TO_CLIENT`,如练习点评卡)。
9
9
  //
10
10
  // 丢弃 pi 的内部状态事件(entry_appended / queue_update / session_info_changed /
11
11
  // thinking_level_changed / agent_settled / summarization_retry_* / bash_execution_update):
12
12
  // 事件表没有登记 = UI 没有消费方,转发只会变成无人接的噪声。
13
- import { PROPOSAL_TOOLS } from "@whispering233/ai-editor-shared";
13
+ import { PROPOSAL_TOOLS, TOOL_DETAILS_TO_CLIENT } from "@whispering233/ai-editor-shared";
14
14
  import { getThinkingPreview, projectMessageForWire } from "./message-projection.js";
15
- /** 提案工具名集合(details 门控依据;shared 常量是工具名的唯一事实来源) */
16
- const PROPOSAL_TOOL_NAME_SET = new Set(PROPOSAL_TOOLS);
15
+ /**
16
+ * details 随帧下发的工具名集合(门控依据):提案工具(提案载荷)∪ shared `TOOL_DETAILS_TO_CLIENT`
17
+ * (details 是 UI 真实数据面的 AUTO 工具,如练习点评卡)——两份工具名清单都来自 shared,此处只做并集。
18
+ */
19
+ const DETAILS_TO_CLIENT_TOOL_NAME_SET = new Set([
20
+ ...PROPOSAL_TOOLS,
21
+ ...TOOL_DETAILS_TO_CLIENT,
22
+ ]);
17
23
  /** 丢弃的事件类型(未登记进事件表的内部状态) */
18
24
  const DROPPED_EVENT_TYPES = new Set([
19
25
  "entry_appended",
@@ -241,13 +247,15 @@ export function toSseFrame(event, options = {}) {
241
247
  }
242
248
  /**
243
249
  * 工具结果 projection:
244
- * - AUTO 工具:只给 `content`(details 与 content 重复,且可能是整棵大纲/全图)
245
- * - PROPOSAL 工具:附带 `details`(提案载荷 `{ proposal_id, type, preview }`,前端提案卡的唯一数据面)
250
+ * - details 不在放行集合(`DETAILS_TO_CLIENT_TOOL_NAME_SET`)的工具:只给 `content`
251
+ * (details 与 content 重复,且可能是整棵大纲/全图)
252
+ * - 放行的工具:附带 `details`——提案工具为提案载荷 `{ proposal_id, type, preview }`
253
+ * (前端提案卡的唯一数据面),AUTO 工具为它自己的产出载荷(练习点评卡,见 shared `TOOL_DETAILS_TO_CLIENT`)
246
254
  */
247
255
  function projectToolResult(toolName, result) {
248
256
  const record = (typeof result === "object" && result !== null ? result : {});
249
257
  const content = record.content ?? [];
250
- if (!PROPOSAL_TOOL_NAME_SET.has(toolName))
258
+ if (!DETAILS_TO_CLIENT_TOOL_NAME_SET.has(toolName))
251
259
  return { content };
252
260
  return record.details === undefined ? { content } : { content, details: record.details };
253
261
  }
@@ -1 +1 @@
1
- {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/runtime/events.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"events.js","sourceRoot":"","sources":["../../src/runtime/events.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import type { Api, Model } from "@earendil-works/pi-ai";
2
2
  import { AgentSession, ModelRuntime, SessionManager, SettingsManager, type AgentSessionServices } from "@earendil-works/pi-coding-agent";
3
3
  import type { ToolContext } from "@whispering233/ai-editor-tools";
4
+ import type { WorkspaceKind } from "@whispering233/ai-editor-shared";
4
5
  import { type ProposalStore } from "./proposals.js";
5
6
  import { type ProposalSink } from "./tools.js";
6
7
  /** 思考强度(取自 AgentSession 的公开签名,避免直接依赖 pi-agent-core 类型) */
@@ -12,6 +13,11 @@ export declare class NoModelConfiguredError extends Error {
12
13
  export interface ProjectRuntimeInput {
13
14
  /** 项目根目录(AGENTS.md 与 sessions/ 都在这里) */
14
15
  projectRoot: string;
16
+ /**
17
+ * 工作区类型(**必填**):决定内核提示词与工具集(`docs/design/architecture.md`
18
+ * 「工作区类型(kind)与能力收窄」);调用方(server)经 shared `resolveWorkspaceKind` 归一后传入。
19
+ */
20
+ kind: WorkspaceKind;
15
21
  /** 工具执行上下文(db / outlineDir / projectId) */
16
22
  toolContext: ToolContext;
17
23
  /** pi agent dir 覆盖(缺省 `~/.pi/agent`;测试隔离用) */
@@ -1 +1 @@
1
- {"version":3,"file":"project-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/project-runtime.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,YAAY,EAGZ,YAAY,EACZ,cAAc,EACd,eAAe,EACf,KAAK,oBAAoB,EAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAElE,OAAO,EAA4C,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE9F,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAElE,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5E,oCAAoC;AACpC,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB,2CAA2C;IAC3C,WAAW,EAAE,WAAW,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,0CAA0C;IAC1C,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,uDAAuD;IACvD,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,qCAAqC;IACrC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gEAAgE;IAChE,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,8BAA8B;AAC9B,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,OAAO,EAAE,YAAY,CAAC;IACtB,sCAAsC;IACtC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,EAAE,YAAY,CAAC;IAC3B,yBAAyB;IACzB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAa/G;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyC9F"}
1
+ {"version":3,"file":"project-runtime.d.ts","sourceRoot":"","sources":["../../src/runtime/project-runtime.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,MAAM,uBAAuB,CAAC;AACxD,OAAO,EACL,YAAY,EAGZ,YAAY,EACZ,cAAc,EACd,eAAe,EACf,KAAK,oBAAoB,EAC1B,MAAM,iCAAiC,CAAC;AACzC,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,gCAAgC,CAAC;AAClE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE,OAAO,EAA4C,KAAK,aAAa,EAAE,MAAM,gBAAgB,CAAC;AAE9F,OAAO,EAAqB,KAAK,YAAY,EAAE,MAAM,YAAY,CAAC;AAElE,0DAA0D;AAC1D,MAAM,MAAM,aAAa,GAAG,UAAU,CAAC,YAAY,CAAC,kBAAkB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAE5E,oCAAoC;AACpC,qBAAa,sBAAuB,SAAQ,KAAK;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,MAAM,WAAW,mBAAmB;IAClC,wCAAwC;IACxC,WAAW,EAAE,MAAM,CAAC;IACpB;;;OAGG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB,2CAA2C;IAC3C,WAAW,EAAE,WAAW,CAAC;IACzB,8CAA8C;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,qDAAqD;IACrD,YAAY,CAAC,EAAE,YAAY,CAAC;IAC5B,0CAA0C;IAC1C,eAAe,CAAC,EAAE,eAAe,CAAC;IAClC,+CAA+C;IAC/C,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,uDAAuD;IACvD,KAAK,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC;IACnB,qCAAqC;IACrC,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,+DAA+D;IAC/D,aAAa,CAAC,EAAE,aAAa,CAAC;IAC9B,gEAAgE;IAChE,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AAED,8BAA8B;AAC9B,MAAM,WAAW,cAAc;IAC7B,2DAA2D;IAC3D,OAAO,EAAE,YAAY,CAAC;IACtB,sCAAsC;IACtC,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,cAAc,EAAE,cAAc,CAAC;IAC/B,eAAe,EAAE,eAAe,CAAC;IACjC,YAAY,EAAE,YAAY,CAAC;IAC3B,yBAAyB;IACzB,OAAO,IAAI,IAAI,CAAC;CACjB;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,OAAO,EAAE,YAAY,EAAE,QAAQ,EAAE,eAAe,GAAG,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAa/G;AAED;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,KAAK,EAAE,mBAAmB,GAAG,OAAO,CAAC,cAAc,CAAC,CAyC9F"}
@@ -52,7 +52,7 @@ export async function createProjectRuntime(input) {
52
52
  agentDir,
53
53
  settingsManager,
54
54
  ...(input.modelRuntime === undefined ? {} : { modelRuntime: input.modelRuntime }),
55
- resourceLoaderOptions: buildResourceLoaderOptions(projectRoot),
55
+ resourceLoaderOptions: buildResourceLoaderOptions(projectRoot, input.kind),
56
56
  });
57
57
  const model = input.model ?? (await resolveDefaultModel(services.modelRuntime, settingsManager));
58
58
  // 提案接线:PROPOSAL 工具执行成功 → 重建完整 Proposal 入仓 + details 携带前端载荷
@@ -64,7 +64,7 @@ export async function createProjectRuntime(input) {
64
64
  ...(input.thinkingLevel === undefined ? {} : { thinkingLevel: input.thinkingLevel }),
65
65
  // builtin(read/bash/edit/write…)全关:本项目不是编码 agent;领域工具是自定义工具,不受此开关影响
66
66
  noTools: "builtin",
67
- customTools: createCustomTools({ toolContext: input.toolContext, proposalSink }),
67
+ customTools: createCustomTools({ toolContext: input.toolContext, proposalSink, kind: input.kind }),
68
68
  });
69
69
  return {
70
70
  session,
@@ -1 +1 @@
1
- {"version":3,"file":"project-runtime.js","sourceRoot":"","sources":["../../src/runtime/project-runtime.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"project-runtime.js","sourceRoot":"","sources":["../../src/runtime/project-runtime.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  import type { CreateAgentSessionServicesOptions } from "@earendil-works/pi-coding-agent";
2
+ import type { WorkspaceKind } from "@whispering233/ai-editor-shared";
2
3
  /** pi 资源加载选项(cwd/agentDir/settingsManager 由 SDK 填充,此处只给行为开关) */
3
4
  export type ResourceLoaderOptions = NonNullable<CreateAgentSessionServicesOptions["resourceLoaderOptions"]>;
4
5
  /** 项目根 AGENTS.md 内容(不存在/不可读 → null;读取失败不阻塞会话装配) */
@@ -7,8 +8,9 @@ export declare function readProjectAgentsFile(projectRoot: string): {
7
8
  content: string;
8
9
  } | null;
9
10
  /**
10
- * 资源加载选项:内核提示词作 system prompt 主体 + 只注入项目根 AGENTS.md。
11
+ * 资源加载选项:内核提示词(按工作区类型取小说版 / 练习版)作 system prompt 主体
12
+ * + 只注入项目根 AGENTS.md。
11
13
  * `agentsFilesOverride` 忽略 pi 的发现结果(祖先目录 + agent dir),只回项目根文件。
12
14
  */
13
- export declare function buildResourceLoaderOptions(projectRoot: string): ResourceLoaderOptions;
15
+ export declare function buildResourceLoaderOptions(projectRoot: string, kind: WorkspaceKind): ResourceLoaderOptions;
14
16
  //# sourceMappingURL=resources.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/runtime/resources.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AAIzF,gEAAgE;AAChE,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,iCAAiC,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAE5G,mDAAmD;AACnD,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQnG;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,GAAG,qBAAqB,CAWrF"}
1
+ {"version":3,"file":"resources.d.ts","sourceRoot":"","sources":["../../src/runtime/resources.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,iCAAiC,EAAE,MAAM,iCAAiC,CAAC;AACzF,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAIrE,gEAAgE;AAChE,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC,iCAAiC,CAAC,uBAAuB,CAAC,CAAC,CAAC;AAE5G,mDAAmD;AACnD,wBAAgB,qBAAqB,CAAC,WAAW,EAAE,MAAM,GAAG;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAAG,IAAI,CAQnG;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CAAC,WAAW,EAAE,MAAM,EAAE,IAAI,EAAE,aAAa,GAAG,qBAAqB,CAW1G"}
@@ -7,7 +7,7 @@
7
7
  // 那会把创作根之外(甚至 HOME)的规则悄悄注进对话。
8
8
  import { existsSync, readFileSync } from "node:fs";
9
9
  import { projectAgentsFilePath } from "./paths.js";
10
- import { KERNEL_PROMPT } from "./system-prompt.js";
10
+ import { KERNEL_PROMPTS } from "./system-prompt.js";
11
11
  /** 项目根 AGENTS.md 内容(不存在/不可读 → null;读取失败不阻塞会话装配) */
12
12
  export function readProjectAgentsFile(projectRoot) {
13
13
  const path = projectAgentsFilePath(projectRoot);
@@ -21,15 +21,16 @@ export function readProjectAgentsFile(projectRoot) {
21
21
  }
22
22
  }
23
23
  /**
24
- * 资源加载选项:内核提示词作 system prompt 主体 + 只注入项目根 AGENTS.md。
24
+ * 资源加载选项:内核提示词(按工作区类型取小说版 / 练习版)作 system prompt 主体
25
+ * + 只注入项目根 AGENTS.md。
25
26
  * `agentsFilesOverride` 忽略 pi 的发现结果(祖先目录 + agent dir),只回项目根文件。
26
27
  */
27
- export function buildResourceLoaderOptions(projectRoot) {
28
+ export function buildResourceLoaderOptions(projectRoot, kind) {
28
29
  return {
29
30
  noExtensions: true,
30
31
  noSkills: true,
31
32
  noPromptTemplates: true,
32
- systemPrompt: KERNEL_PROMPT,
33
+ systemPrompt: KERNEL_PROMPTS[kind],
33
34
  agentsFilesOverride: () => {
34
35
  const agentsFile = readProjectAgentsFile(projectRoot);
35
36
  return { agentsFiles: agentsFile === null ? [] : [agentsFile] };
@@ -1 +1 @@
1
- {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/runtime/resources.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,uEAAuE;AACvE,sDAAsD;AACtD,4CAA4C;AAC5C,yDAAyD;AACzD,iCAAiC;AAEjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAKnD,mDAAmD;AACnD,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,MAAM,IAAI,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,0BAA0B,CAAC,WAAmB;IAC5D,OAAO;QACL,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,aAAa;QAC3B,mBAAmB,EAAE,GAAG,EAAE;YACxB,MAAM,UAAU,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACtD,OAAO,EAAE,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"resources.js","sourceRoot":"","sources":["../../src/runtime/resources.ts"],"names":[],"mappings":"AAAA,+BAA+B;AAC/B,EAAE;AACF,uEAAuE;AACvE,sDAAsD;AACtD,4CAA4C;AAC5C,yDAAyD;AACzD,iCAAiC;AAEjC,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAGnD,OAAO,EAAE,qBAAqB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKpD,mDAAmD;AACnD,MAAM,UAAU,qBAAqB,CAAC,WAAmB;IACvD,MAAM,IAAI,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;IAChD,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,IAAI,CAAC;IACnC,IAAI,CAAC;QACH,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,IAAI,EAAE,MAAM,CAAC,EAAE,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,0BAA0B,CAAC,WAAmB,EAAE,IAAmB;IACjF,OAAO;QACL,YAAY,EAAE,IAAI;QAClB,QAAQ,EAAE,IAAI;QACd,iBAAiB,EAAE,IAAI;QACvB,YAAY,EAAE,cAAc,CAAC,IAAI,CAAC;QAClC,mBAAmB,EAAE,GAAG,EAAE;YACxB,MAAM,UAAU,GAAG,qBAAqB,CAAC,WAAW,CAAC,CAAC;YACtD,OAAO,EAAE,WAAW,EAAE,UAAU,KAAK,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,UAAU,CAAC,EAAE,CAAC;QAClE,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -25,7 +25,13 @@ export declare function readProjectSession(projectRoot: string, sessionId: strin
25
25
  export declare function openProjectSessionManager(projectRoot: string, sessionFile?: string): SessionManager;
26
26
  /** 条目 → API 消息投影(只保留 user/assistant/tool 三类;未知角色不投影) */
27
27
  export declare function projectSessionMessages(entries: readonly SessionEntry[]): WireSessionMessage[];
28
- /** 末条可见文本(列表摘要用;全为空 → 空串) */
28
+ /**
29
+ * 末条可见文本(会话列表摘要用;全为空 → 空串)。
30
+ *
31
+ * **工具结果不算「可见文本」**(`role === "tool"` 跳过):工具结果是一大段 JSON,
32
+ * 以工具调用收尾的轮次(如练习点评 / 出题、小说侧提案类工具)会把工具输出当会话标题显示
33
+ * (ui-verifier 像素走查实录:标题栏出现 `{"author_id":"jiangnan",…}`)。
34
+ */
29
35
  export declare function lastVisibleSessionText(entries: readonly SessionEntry[]): string;
30
36
  /**
31
37
  * 读取某条 assistant 消息指定下标块的思维链全文;不是 thinking 块 / 下标越界 → null
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/runtime/sessions.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGlF,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEjF,gDAAgD;AAChD,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAGrF;AAED,kCAAkC;AAClC,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAG5G;AAED,0DAA0D;AAC1D,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CAQhE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc,CAKnG;AAED,wDAAwD;AACxD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,kBAAkB,EAAE,CAS7F;AAED,6BAA6B;AAC7B,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAQ/E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,IAAI,CAQf"}
1
+ {"version":3,"file":"sessions.d.ts","sourceRoot":"","sources":["../../src/runtime/sessions.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,cAAc,EAAE,KAAK,YAAY,EAAE,KAAK,WAAW,EAAE,MAAM,iCAAiC,CAAC;AACtG,OAAO,EAAyB,KAAK,WAAW,EAAE,MAAM,yBAAyB,CAAC;AAGlF,YAAY,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,iCAAiC,CAAC;AAEjF,gDAAgD;AAChD,MAAM,WAAW,kBAAmB,SAAQ,WAAW;IACrD,EAAE,EAAE,MAAM,CAAC;CACZ;AAED;;;;GAIG;AACH,wBAAsB,mBAAmB,CAAC,WAAW,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC,CAGrF;AAED,kCAAkC;AAClC,wBAAsB,kBAAkB,CAAC,WAAW,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,GAAG,IAAI,CAAC,CAG5G;AAED,0DAA0D;AAC1D,wBAAsB,kBAAkB,CACtC,WAAW,EAAE,MAAM,EACnB,SAAS,EAAE,MAAM,GAChB,OAAO,CAAC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,YAAY,EAAE,CAAA;CAAE,GAAG,IAAI,CAAC,CAQhE;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,WAAW,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,cAAc,CAKnG;AAED,wDAAwD;AACxD,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,kBAAkB,EAAE,CAS7F;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,GAAG,MAAM,CAS/E;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CACjC,OAAO,EAAE,SAAS,YAAY,EAAE,EAChC,SAAS,EAAE,MAAM,EACjB,UAAU,EAAE,MAAM,GACjB,MAAM,GAAG,IAAI,CAQf"}
@@ -58,14 +58,22 @@ export function projectSessionMessages(entries) {
58
58
  }
59
59
  return messages;
60
60
  }
61
- /** 末条可见文本(列表摘要用;全为空 → 空串) */
61
+ /**
62
+ * 末条可见文本(会话列表摘要用;全为空 → 空串)。
63
+ *
64
+ * **工具结果不算「可见文本」**(`role === "tool"` 跳过):工具结果是一大段 JSON,
65
+ * 以工具调用收尾的轮次(如练习点评 / 出题、小说侧提案类工具)会把工具输出当会话标题显示
66
+ * (ui-verifier 像素走查实录:标题栏出现 `{"author_id":"jiangnan",…}`)。
67
+ */
62
68
  export function lastVisibleSessionText(entries) {
63
69
  for (let index = entries.length - 1; index >= 0; index -= 1) {
64
70
  const entry = entries[index];
65
71
  if (entry.type !== "message")
66
72
  continue;
67
73
  const projected = projectMessageForWire(entry.message);
68
- if (projected !== null && projected.content.trim() !== "")
74
+ if (projected === null || projected.role === "tool")
75
+ continue;
76
+ if (projected.content.trim() !== "")
69
77
  return projected.content;
70
78
  }
71
79
  return "";
@@ -1 +1 @@
1
- {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/runtime/sessions.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"sessions.js","sourceRoot":"","sources":["../../src/runtime/sessions.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,10 @@
1
- /** 内核提示词(system prompt 主体;pi `<project_instructions>` 段追加其后) */
1
+ import type { WorkspaceKind } from "@whispering233/ai-editor-shared";
2
+ /** 小说工作区内核提示词(system prompt 主体;pi `<project_instructions>` 段追加其后) */
2
3
  export declare const KERNEL_PROMPT = "\u4F60\u662F\u300C\u521B\u4F5C\u987E\u95EE\u300D\uFF0C\u4E00\u540D\u8D44\u6DF1\u5C0F\u8BF4\u521B\u4F5C\u642D\u6863\uFF0C\u670D\u52A1\u4E8E\u4F5C\u8005\u7684 AI \u5199\u4F5C\u5DE5\u4F5C\u53F0\u3002\n\u4F60\u7684\u804C\u8D23\u662F\u5E2E\u52A9\u4F5C\u8005\u5206\u6790\u5927\u7EB2\u3001\u4EBA\u7269\u3001\u5173\u7CFB\u3001\u60C5\u8282\u4E0E\u4F0F\u7B14\uFF0C\u63D0\u51FA\u53EF\u6267\u884C\u7684\u4FEE\u6539\u5EFA\u8BAE\u2014\u2014\u4F60\u662F\u5206\u6790\u987E\u95EE\uFF0C\u4E0D\u662F\u64CD\u4F5C\u5458\uFF0C\u4E5F\u4E0D\u4EE3\u5199\u6B63\u6587\u3002\n\n\u884C\u4E3A\u51C6\u5219\uFF1A\n1. \u4E0D\u751F\u6210\u6B63\u6587\uFF1A\u4E0D\u4EE3\u5199\u5C0F\u8BF4\u6B63\u6587\u6216\u7AE0\u8282\u5185\u5BB9\uFF0C\u8F93\u51FA\u59CB\u7EC8\u662F\u5206\u6790\u3001\u5EFA\u8BAE\u4E0E\u65B9\u6848\u3002\u6B63\u6587\u4E0E\u53C2\u8003\u8D44\u6599\u5BF9\u4F60**\u53EF\u8BFB**\uFF08\u805A\u7126\u7AE0\u7684\u8282\u9009\u968F\u672C\u8F6E\u6D88\u606F\u6CE8\u5165\uFF0C\u5B8C\u6574\u7AE0\u6B63\u6587\u7528 get_chapter_text \u6309\u9700\u5206\u9875\u62C9\u53D6\uFF1B\u53C2\u8003\u8D44\u6599\u5168\u6587\u7528 get_entity \u7684 reference \u7C7B\u578B\uFF09\uFF0C\u4F46**\u7EDD\u4E0D\u6539\u5199\u6B63\u6587**\u2014\u2014\u5DE5\u5177\u9762\u4E0A\u4E0D\u5B58\u5728\u4EFB\u4F55\u6B63\u6587/\u6587\u6863\u5199\u5DE5\u5177\uFF0C\u4F60\u53EA\u80FD\u5C31\u6B63\u6587\u63D0\u51FA\u5EFA\u8BAE\uFF0C\u843D\u7B14\u6C38\u8FDC\u7531\u4F5C\u8005\u5B8C\u6210\u3002\n2. \u4E0D\u76F4\u63A5\u5199\u5165\uFF1A\u7EDD\u4E0D\u76F4\u63A5\u5199\u5165\u3001\u4FEE\u6539\u6216\u5220\u9664\u4EFB\u4F55\u6570\u636E\uFF08\u5B9E\u4F53/\u5173\u7CFB/\u5927\u7EB2\u8282\u70B9/\u4F0F\u7B14/Delta\uFF09\uFF1B\u5199\u64CD\u4F5C\u4E00\u5F8B\u901A\u8FC7 propose_* \u5DE5\u5177\u751F\u6210\u63D0\u6848\uFF0C\u7531\u7528\u6237\u786E\u8BA4\u540E\u6267\u884C\u2014\u2014\u7528\u6237\u59CB\u7EC8\u662F\u6700\u7EC8\u51B3\u7B56\u8005\u3002\n3. \u67E5\u8BE2\u4E0E\u5206\u6790\u81EA\u7531\uFF1A\u53EF\u968F\u65F6\u8C03\u7528\u67E5\u8BE2\u7C7B\u4E0E\u5206\u6790\u7C7B\u5DE5\u5177\u83B7\u53D6\u6570\u636E\u3001\u8FD0\u884C\u7ED3\u6784\u5316\u5206\u6790\u3002\n4. \u7ED3\u679C\u622A\u65AD\u987B\u77E5\uFF1A\u5DE5\u5177\u7ED3\u679C\u82E5\u542B\u300C\u5DF2\u622A\u65AD\u300D\u6807\u8BB0\u5373\u6570\u636E\u4E0D\u5B8C\u6574\u2014\u2014\u8BF7\u7F29\u5C0F\u67E5\u8BE2\u8303\u56F4\u6216\u5206\u9875\u83B7\u53D6\uFF0C\u4E0D\u5F97\u57FA\u4E8E\u6B8B\u7F3A\u6570\u636E\u4E0B\u7ED3\u8BBA\u3002\n5. \u957F\u5EA6\u622A\u65AD\u987B\u77E5\uFF1A\u82E5\u4F60\u7684\u56DE\u590D\u56E0\u957F\u5EA6\u9650\u5236\u88AB\u622A\u65AD\uFF0C\u7CFB\u7EDF\u4E0D\u4F1A\u91CD\u53D1\u4F60\u7684\u534A\u6761\u56DE\u590D\uFF1B\u8BF7\u63A7\u5236\u7BC7\u5E45\uFF0C\u4F18\u5148\u7ED9\u51FA\u7ED3\u8BBA\u4E0E\u8981\u70B9\u3002\n6. \u805A\u7126\u4F18\u5148\uFF1A\u672C\u8F6E\u6D88\u606F\u4E2D\u82E5\u5E26\u300C\u5F53\u524D\u805A\u7126\u300D\u6807\u8BB0\uFF0C\u5B83\u662F\u4F5C\u8005\u6B63\u5728\u67E5\u770B\u7684\u5185\u5BB9\uFF0C\u4F18\u5148\u56F4\u7ED5\u5B83\u5C55\u5F00\u3002\n7. \u63D0\u6848\u8BED\u4E49\uFF1A\u8C03\u7528\u63D0\u6848\u5DE5\u5177\u540E\u9700\u7528\u6237\u786E\u8BA4\u624D\u751F\u6548\uFF1B\u786E\u8BA4\u524D\u4E0D\u8981\u5047\u8BBE\u4EFB\u4F55\u4FEE\u6539\u5DF2\u53D1\u751F\u3002\n8. \u56DE\u590D\u4F7F\u7528\u9879\u76EE\u914D\u7F6E\u7684\u8BED\u8A00\u3002";
4
+ /** 练习工作区内核提示词(`kind = "practice"`;要点见 docs/design/60-practice.md §7/§8) */
5
+ export declare const PRACTICE_KERNEL_PROMPT = "\u4F60\u662F\u300C\u5199\u4F5C\u966A\u7EC3\u300D\uFF0C\u4E00\u540D\u8D1F\u8D23\u6587\u98CE\u7EC3\u4E60\u7684\u8D44\u6DF1\u5199\u4F5C\u8005\uFF0C\u670D\u52A1\u4E8E\u4F5C\u8005\u7684\u6587\u98CE\u7EC3\u4E60\u5DE5\u4F5C\u53F0\u3002\n\u7EC3\u4E60\u5DE5\u4F5C\u533A\u6709\u4E24\u4EF6\u4E8B\uFF1A**\u4EFF\u5199\u70B9\u8BC4**\uFF08\u5BF9\u7167\u8303\u6587\u8BCA\u65AD\u7528\u6237\u7684\u4EFF\u5199\u7A3F\uFF09\u4E0E**\u81EA\u7531\u7EC3\u4E60**\uFF08\u70B9\u8BC4\u7528\u6237\u7684\u81EA\u7531\u7A3F\uFF0C\u4EE5\u53CA\u5728\u7528\u6237\u8981\u6C42\u65F6**\u51FA\u9898**\uFF09\u3002\n\u4F60\u662F\u8BCA\u65AD\u8005\u4E0E\u51FA\u9898\u8005\uFF0C\u4E0D\u662F\u4EE3\u7B14\u3002\n\n\u884C\u4E3A\u51C6\u5219\uFF1A\n1. \u53EA\u8BCA\u65AD\u3001\u4E0D\u4EE3\u5199\uFF1A\u4E0D\u5199\u4E5F\u4E0D\u6539\u5199\u7528\u6237\u7684\u7A3F\u4EF6\uFF0C\u4E0D\u7ED9\u6210\u6BB5\u53EF\u6284\u7684\u300C\u793A\u8303\u6587\u300D\u3002\u5DE5\u5177\u9762\u4E0A\u4E0D\u5B58\u5728\u4EFB\u4F55\u5199\u7A3F\u5DE5\u5177\uFF08\u7A3F\u4EF6\u53EA\u6709\u7528\u6237\u80FD\u5199\uFF09\u2014\u2014\u4F60\u7684\u4EA7\u51FA\u53EA\u6709\u70B9\u8BC4\u5361\u4E0E\u9898\u76EE\u3002\n2. \u70B9\u8BC4\u5FC5\u987B\u8D70\u63D0\u4EA4\u5DE5\u5177\uFF1A\u4EFF\u5199\u8C03 submit_style_feedback\u3001\u81EA\u7531\u7EC3\u4E60\u8C03 submit_free_feedback \u63D0\u4EA4\u7ED3\u6784\u5316\u70B9\u8BC4\u5361\uFF08\u7EF4\u5EA6\u540D / \u4F9D\u636E\u7279\u5F81 / \u4F60\u7684\u5199\u6CD5 / \u5EFA\u8BAE\uFF09\u2014\u2014\u5361\u7247\u662F\u672C\u6B21\u70B9\u8BC4\u7684\u6B63\u5F0F\u4EA7\u51FA\uFF0C\u4E0D\u8981\u53EA\u7528\u804A\u5929\u6587\u5B57\u7ED9\u7ED3\u8BBA\u3002\n3. \u51FA\u9898\u5FC5\u987B\u8D70\u63D0\u4EA4\u5DE5\u5177\uFF1A\u4E3A\u81EA\u7531\u7EC3\u4E60\u51FA\u9898\u65F6\u8C03 submit_practice_topic \u5199\u9898\u76EE\u4E0E\u5199\u4F5C\u8981\u6C42\u3002\u5199\u4F5C\u8981\u6C42\u8981**\u53EF\u6267\u884C**\uFF08\u7BC7\u5E45\u3001\u4EBA\u79F0\u3001\u573A\u666F\u7EA6\u675F\u3001\u8981\u7EC3\u7684\u5177\u4F53\u6280\u6CD5\uFF09\uFF0C\u4E0D\u8981\u5199\u300C\u5199\u5F97\u597D\u4E00\u70B9\u300D\u8FD9\u7C7B\u7A7A\u8BDD\uFF1B\u9898\u76EE\u5DF2\u5B58\u5728\u7684\u7BC7\u4F1A\u62D2\u5199\uFF08\u4E0D\u8986\u76D6\u5DF2\u51FA\u7684\u9898\u4E0E\u7528\u6237\u5DF2\u5F00\u59CB\u7684\u7EC3\u4E60\uFF09\u3002\n4. \u5F15\u7528\u5FC5\u987B\u6765\u81EA\u539F\u6587\uFF1A\u4F9D\u636E\u4FA7\u7684\u6BCF\u6761\u5F15\u7528\u5FC5\u987B\u662F**\u8BE5\u6B21\u7EC3\u4E60\u4F9D\u636E**\u7684\u9010\u5B57\u5B50\u4E32\uFF08\u4EFF\u5199 = \u8303\u6587\u3001\u81EA\u7531\u7EC3\u4E60 = \u98CE\u683C\u8BF4\u660E\uFF09\uFF0C\u7A3F\u4EF6\u4FA7\u7684\u6BCF\u6761\u5F15\u7528\u5FC5\u987B\u662F**\u7528\u6237\u7A3F\u4EF6**\u7684\u9010\u5B57\u5B50\u4E32\uFF0C\u4E0D\u5F97\u6539\u5199\u3001\u62FC\u63A5\u6216\u51ED\u5370\u8C61\u590D\u8FF0\uFF1B\u9010\u5B57\u627E\u4E0D\u5230\uFF08\u542B\u7A7A\u4E32\u4E0E\u7EAF\u7A7A\u767D\uFF09\u7684\u5F15\u7528\u4F1A\u88AB\u670D\u52A1\u7AEF\u4E22\u5F03\uFF08\u63D0\u4EA4\u7ED3\u679C\u91CC\u4F1A\u7ED9\u51FA\u4E22\u5F03\u6761\u6570\uFF09\u3002\n5. \u5148\u8BFB\u540E\u8BC4\uFF1A\u8303\u6587\u3001\u7A3F\u4EF6\u4E0E\u98CE\u683C\u8BF4\u660E\u90FD\u4E0D\u8FDB\u672C\u8F6E\u4E0A\u4E0B\u6587\u2014\u2014\u4EFF\u5199\u7528 get_practice_sample / get_practice_draft \u62C9\u53D6\uFF0C\u81EA\u7531\u7EC3\u4E60\u7528 get_free_draft \u62C9\u53D6\uFF0C\u98CE\u683C\u8BF4\u660E\u7528 get_style_notes \u62C9\u53D6\uFF08\u8FD4\u56DE truncated = true \u65F6\u7528\u5176\u4E2D\u7ED9\u51FA\u7684 offset \u7EED\u8BFB\uFF09\uFF1B\u4E0D\u5F97\u51ED\u4F5C\u54C1\u540D\u3001\u9898\u76EE\u4E00\u7C7B\u5143\u4FE1\u606F\u4E0B\u7ED3\u8BBA\u3002\n6. \u4E24\u79CD\u7EC3\u4E60\u7684\u4F9D\u636E\u4E0D\u540C\uFF1A\u4EFF\u5199\u4EE5**\u8303\u6587\u4E3A\u5BF9\u7167\u57FA\u51C6**\uFF08\u98CE\u683C\u8BF4\u660E\u53EA\u662F\u53EF\u6309\u9700\u53C2\u8003\u7684\u80CC\u666F\u77E5\u8BC6\uFF0C\u4E0D\u5F3A\u5236\u5F15\u7528\uFF09\uFF1B\u81EA\u7531\u7EC3\u4E60\u4EE5**\u98CE\u683C\u8BF4\u660E\u4E3A\u552F\u4E00\u4F9D\u636E**\u3002\n7. \u7EF4\u5EA6\u81EA\u5B9A\uFF1A\u7EF4\u5EA6\u7531\u4F60\u4ECE\u4F9D\u636E\u4E2D\u63D0\u70BC\uFF08\u5982\u53E5\u957F\u8282\u594F\u3001\u53D9\u8FF0\u8DDD\u79BB\uFF09\uFF0C\u4E0D\u5957\u56FA\u5B9A\u6E05\u5355\uFF1B\u6BCF\u4E2A\u7EF4\u5EA6\u7ED9\u51FA\u7684\u5EFA\u8BAE\u8981\u53EF\u6267\u884C\uFF0C\u800C\u975E\u7B3C\u7EDF\u8BC4\u4EF7\u3002\n8. \u81EA\u7531\u95EE\u7B54\u4E0D\u8D85\u754C\uFF1A\u804A\u5929\u91CC\u53EF\u4EE5\u89E3\u91CA\u300C\u8FD9\u53E5\u4E3A\u4EC0\u4E48\u597D\u300D\u3001\u8BA8\u8BBA\u6280\u6CD5\uFF0C\u4F46\u843D\u7B14\u6539\u7A3F\u4E0E\u4EFF\u5199\u6C38\u8FDC\u7531\u7528\u6237\u5B8C\u6210\u3002\n9. \u7ED3\u679C\u622A\u65AD\u987B\u77E5\uFF1A\u5DE5\u5177\u7ED3\u679C\u82E5\u542B\u300C\u5DF2\u622A\u65AD\u300D\u6807\u8BB0\u5373\u6570\u636E\u4E0D\u5B8C\u6574\u2014\u2014\u8BF7\u7F29\u5C0F\u8BFB\u53D6\u8303\u56F4\u6216\u5206\u9875\u83B7\u53D6\uFF0C\u4E0D\u5F97\u57FA\u4E8E\u6B8B\u7F3A\u6570\u636E\u4E0B\u7ED3\u8BBA\u3002\n10. \u957F\u5EA6\u622A\u65AD\u987B\u77E5\uFF1A\u82E5\u4F60\u7684\u56DE\u590D\u56E0\u957F\u5EA6\u9650\u5236\u88AB\u622A\u65AD\uFF0C\u7CFB\u7EDF\u4E0D\u4F1A\u91CD\u53D1\u4F60\u7684\u534A\u6761\u56DE\u590D\uFF1B\u8BF7\u63A7\u5236\u7BC7\u5E45\uFF0C\u4F18\u5148\u7ED9\u51FA\u7ED3\u8BBA\u4E0E\u8981\u70B9\u3002\n11. \u56DE\u590D\u4F7F\u7528\u9879\u76EE\u914D\u7F6E\u7684\u8BED\u8A00\u3002";
6
+ /** 工作区类型 → 内核提示词(**唯一定义处**:装配层按 `kind` 取,禁止在别处再写一份判断) */
7
+ export declare const KERNEL_PROMPTS: Record<WorkspaceKind, string>;
3
8
  /** 「当前聚焦」段标题(调用方注入聚焦上下文时使用,语义与内核提示词第 6 条对应) */
4
9
  export declare const FOCUS_TITLE = "## \u5F53\u524D\u805A\u7126";
5
10
  //# sourceMappingURL=system-prompt.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/runtime/system-prompt.ts"],"names":[],"mappings":"AAOA,gEAAgE;AAChE,eAAO,MAAM,aAAa,+rGAWV,CAAC;AAEjB,+CAA+C;AAC/C,eAAO,MAAM,WAAW,gCAAY,CAAC"}
1
+ {"version":3,"file":"system-prompt.d.ts","sourceRoot":"","sources":["../../src/runtime/system-prompt.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iCAAiC,CAAC;AAErE,qEAAqE;AACrE,eAAO,MAAM,aAAa,+rGAWV,CAAC;AAEjB,2EAA2E;AAC3E,eAAO,MAAM,sBAAsB,2oKAelB,CAAC;AAElB,yDAAyD;AACzD,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAGxD,CAAC;AAEF,+CAA+C;AAC/C,eAAO,MAAM,WAAW,gCAAY,CAAC"}
@@ -4,7 +4,9 @@
4
4
  // 临时指令 = 聊天框消息。见 docs/design/20-context.md §1。
5
5
  //
6
6
  // 内核提示词是产品定位的代码化(AI 是创作顾问不是代笔),改它等于改产品行为。
7
- /** 内核提示词(system prompt 主体;pi `<project_instructions>` 段追加其后) */
7
+ // **按工作区类型分叉(2026-10)**:小说版 / 练习版两份常量并列维护,装配时经 `KERNEL_PROMPTS`
8
+ // 按 `kind` 取(唯一定义处)——两份都是同层的代码常量,不是运行时可配内容。
9
+ /** 小说工作区内核提示词(system prompt 主体;pi `<project_instructions>` 段追加其后) */
8
10
  export const KERNEL_PROMPT = `你是「创作顾问」,一名资深小说创作搭档,服务于作者的 AI 写作工作台。
9
11
  你的职责是帮助作者分析大纲、人物、关系、情节与伏笔,提出可执行的修改建议——你是分析顾问,不是操作员,也不代写正文。
10
12
 
@@ -17,6 +19,28 @@ export const KERNEL_PROMPT = `你是「创作顾问」,一名资深小说创
17
19
  6. 聚焦优先:本轮消息中若带「当前聚焦」标记,它是作者正在查看的内容,优先围绕它展开。
18
20
  7. 提案语义:调用提案工具后需用户确认才生效;确认前不要假设任何修改已发生。
19
21
  8. 回复使用项目配置的语言。`;
22
+ /** 练习工作区内核提示词(`kind = "practice"`;要点见 docs/design/60-practice.md §7/§8) */
23
+ export const PRACTICE_KERNEL_PROMPT = `你是「写作陪练」,一名负责文风练习的资深写作者,服务于作者的文风练习工作台。
24
+ 练习工作区有两件事:**仿写点评**(对照范文诊断用户的仿写稿)与**自由练习**(点评用户的自由稿,以及在用户要求时**出题**)。
25
+ 你是诊断者与出题者,不是代笔。
26
+
27
+ 行为准则:
28
+ 1. 只诊断、不代写:不写也不改写用户的稿件,不给成段可抄的「示范文」。工具面上不存在任何写稿工具(稿件只有用户能写)——你的产出只有点评卡与题目。
29
+ 2. 点评必须走提交工具:仿写调 submit_style_feedback、自由练习调 submit_free_feedback 提交结构化点评卡(维度名 / 依据特征 / 你的写法 / 建议)——卡片是本次点评的正式产出,不要只用聊天文字给结论。
30
+ 3. 出题必须走提交工具:为自由练习出题时调 submit_practice_topic 写题目与写作要求。写作要求要**可执行**(篇幅、人称、场景约束、要练的具体技法),不要写「写得好一点」这类空话;题目已存在的篇会拒写(不覆盖已出的题与用户已开始的练习)。
31
+ 4. 引用必须来自原文:依据侧的每条引用必须是**该次练习依据**的逐字子串(仿写 = 范文、自由练习 = 风格说明),稿件侧的每条引用必须是**用户稿件**的逐字子串,不得改写、拼接或凭印象复述;逐字找不到(含空串与纯空白)的引用会被服务端丢弃(提交结果里会给出丢弃条数)。
32
+ 5. 先读后评:范文、稿件与风格说明都不进本轮上下文——仿写用 get_practice_sample / get_practice_draft 拉取,自由练习用 get_free_draft 拉取,风格说明用 get_style_notes 拉取(返回 truncated = true 时用其中给出的 offset 续读);不得凭作品名、题目一类元信息下结论。
33
+ 6. 两种练习的依据不同:仿写以**范文为对照基准**(风格说明只是可按需参考的背景知识,不强制引用);自由练习以**风格说明为唯一依据**。
34
+ 7. 维度自定:维度由你从依据中提炼(如句长节奏、叙述距离),不套固定清单;每个维度给出的建议要可执行,而非笼统评价。
35
+ 8. 自由问答不超界:聊天里可以解释「这句为什么好」、讨论技法,但落笔改稿与仿写永远由用户完成。
36
+ 9. 结果截断须知:工具结果若含「已截断」标记即数据不完整——请缩小读取范围或分页获取,不得基于残缺数据下结论。
37
+ 10. 长度截断须知:若你的回复因长度限制被截断,系统不会重发你的半条回复;请控制篇幅,优先给出结论与要点。
38
+ 11. 回复使用项目配置的语言。`;
39
+ /** 工作区类型 → 内核提示词(**唯一定义处**:装配层按 `kind` 取,禁止在别处再写一份判断) */
40
+ export const KERNEL_PROMPTS = {
41
+ novel: KERNEL_PROMPT,
42
+ practice: PRACTICE_KERNEL_PROMPT,
43
+ };
20
44
  /** 「当前聚焦」段标题(调用方注入聚焦上下文时使用,语义与内核提示词第 6 条对应) */
21
45
  export const FOCUS_TITLE = "## 当前聚焦";
22
46
  //# sourceMappingURL=system-prompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/runtime/system-prompt.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,EAAE;AACF,kEAAkE;AAClE,+CAA+C;AAC/C,EAAE;AACF,0CAA0C;AAE1C,gEAAgE;AAChE,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;gBAWb,CAAC;AAEjB,+CAA+C;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC"}
1
+ {"version":3,"file":"system-prompt.js","sourceRoot":"","sources":["../../src/runtime/system-prompt.ts"],"names":[],"mappings":"AAAA,2CAA2C;AAC3C,EAAE;AACF,kEAAkE;AAClE,+CAA+C;AAC/C,EAAE;AACF,0CAA0C;AAC1C,gEAAgE;AAChE,4CAA4C;AAI5C,qEAAqE;AACrE,MAAM,CAAC,MAAM,aAAa,GAAG;;;;;;;;;;;gBAWb,CAAC;AAEjB,2EAA2E;AAC3E,MAAM,CAAC,MAAM,sBAAsB,GAAG;;;;;;;;;;;;;;;iBAerB,CAAC;AAElB,yDAAyD;AACzD,MAAM,CAAC,MAAM,cAAc,GAAkC;IAC3D,KAAK,EAAE,aAAa;IACpB,QAAQ,EAAE,sBAAsB;CACjC,CAAC;AAEF,+CAA+C;AAC/C,MAAM,CAAC,MAAM,WAAW,GAAG,SAAS,CAAC"}
@@ -1,4 +1,5 @@
1
1
  import type { ToolDefinition as PiToolDefinition } from "@earendil-works/pi-coding-agent";
2
+ import { type WorkspaceKind } from "@whispering233/ai-editor-shared";
2
3
  import { type ToolContext } from "@whispering233/ai-editor-tools";
3
4
  /** 提案载荷(`propose_*` 工具的 details;推送前端的形态见 docs/api/80-api-chat.md) */
4
5
  export interface ProposalPayload {
@@ -20,9 +21,14 @@ export interface ProposalSinkInput {
20
21
  export type ProposalSink = (input: ProposalSinkInput) => ProposalPayload | undefined;
21
22
  export interface CreateCustomToolsOptions {
22
23
  toolContext: ToolContext;
24
+ /**
25
+ * 当前工作区类型(**必填**):决定装配哪些工具(`scope` 过滤)。
26
+ * 刻意不给缺省值——「忘了传 = 注册全量」会让收窄静默失效。
27
+ */
28
+ kind: WorkspaceKind;
23
29
  proposalSink?: ProposalSink;
24
30
  }
25
- /** registry 全部工具 → pi 工具定义(顺序 = listTools 的稳定序) */
31
+ /** registry 中属于该工作区的工具 → pi 工具定义(顺序 = listTools 的稳定序) */
26
32
  export declare function createCustomTools(options: CreateCustomToolsOptions): PiToolDefinition[];
27
33
  /** 工具参数 schema 类型(测试/调用方按需引用) */
28
34
  //# sourceMappingURL=tools.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/runtime/tools.ts"],"names":[],"mappings":"AAQA,OAAO,KAAK,EAAE,cAAc,IAAI,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAE1F,OAAO,EAAa,KAAK,WAAW,EAA+C,MAAM,gCAAgC,CAAC;AAG1H,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,MAAM,EAAE,OAAO,CAAC;IAChB,8DAA8D;IAC9D,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wCAAwC;AACxC,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,eAAe,GAAG,SAAS,CAAC;AAErF,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AA4CD,mDAAmD;AACnD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,gBAAgB,EAAE,CAEvF;AAED,iCAAiC"}
1
+ {"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/runtime/tools.ts"],"names":[],"mappings":"AAWA,OAAO,KAAK,EAAE,cAAc,IAAI,gBAAgB,EAAE,MAAM,iCAAiC,CAAC;AAC1F,OAAO,EAGL,KAAK,aAAa,EACnB,MAAM,iCAAiC,CAAC;AACzC,OAAO,EAAa,KAAK,WAAW,EAA+C,MAAM,gCAAgC,CAAC;AAG1H,qEAAqE;AACrE,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAClC;AAED,6DAA6D;AAC7D,MAAM,WAAW,iBAAiB;IAChC,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,kDAAkD;IAClD,MAAM,EAAE,OAAO,CAAC;IAChB,8DAA8D;IAC9D,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,WAAW,CAAC;CAC1B;AAED,wCAAwC;AACxC,MAAM,MAAM,YAAY,GAAG,CAAC,KAAK,EAAE,iBAAiB,KAAK,eAAe,GAAG,SAAS,CAAC;AAErF,MAAM,WAAW,wBAAwB;IACvC,WAAW,EAAE,WAAW,CAAC;IACzB;;;OAGG;IACH,IAAI,EAAE,aAAa,CAAC;IACpB,YAAY,CAAC,EAAE,YAAY,CAAC;CAC7B;AA+DD,yDAAyD;AACzD,wBAAgB,iBAAiB,CAAC,OAAO,EAAE,wBAAwB,GAAG,gBAAgB,EAAE,CAKvF;AAED,iCAAiC"}
@@ -3,11 +3,28 @@
3
3
  // 适配面很薄:name/label/description/parameters 直通;execute 注入 ToolContext(db/outlineDir/projectId),
4
4
  // 把 tools 包的返回值文本化回填并做截断;PROPOSAL 权限工具的提案载荷走 `details`(K3 接提案仓)。
5
5
  //
6
+ // 工作区过滤(2026-10):只装配属于当前工作区 `kind` 的工具(shared `isToolScopeRegistered`)——
7
+ // 练习工作区根本没有小说工具与 `propose_*`,这是**结构性边界**(靠注册过滤,不靠提示词)。
8
+ //
6
9
  // 契约见 docs/api/tool-calling.md:抛错即失败(不把失败编码进 content);提案 content 只给
7
10
  // 「提案已发出」提示,预览细节在 details 里随 SSE 推给 GUI。
8
- import { TOOL_PERMISSION } from "@whispering233/ai-editor-shared";
11
+ import { isToolScopeRegistered, TOOL_PERMISSION, } from "@whispering233/ai-editor-shared";
9
12
  import { listTools } from "@whispering233/ai-editor-tools";
10
13
  import { stringifyToolResult, truncateToolResultText } from "./tool-result.js";
14
+ /** 装配入参的必填键(同一份清单做两件事:下面的编译期断言 + 运行时守卫) */
15
+ const requiredOptionKeys = ["toolContext", "kind"];
16
+ /**
17
+ * 编译期防回归(本仓约定:编译期断言写 src,`*.test.ts` 不进 `pnpm typecheck`):
18
+ * `requiredOptionKeys` 必须恰好是入参的必填键——把 `kind` 改成可选 / 加缺省值,上面那行即报红。
19
+ * 运行时同一份清单再拦一次:缺必填项直接抛错,**不退化为「注册全量」**。
20
+ */
21
+ function assertRequiredOptions(options) {
22
+ const provided = options;
23
+ const missing = requiredOptionKeys.filter((key) => provided[key] === undefined);
24
+ if (missing.length > 0) {
25
+ throw new Error(`createCustomTools: 缺少必填入参 ${missing.join(" / ")}(工具集按工作区类型收窄,不接受缺省)`);
26
+ }
27
+ }
11
28
  /** 提案已发出提示(content 不含预览细节——避免模型误以为提案已生效)
12
29
  * 一句话摘要取自 preview.summary(结构化 preview 的提案没有该字段,则只给 id) */
13
30
  function proposalAckText(payload) {
@@ -46,9 +63,12 @@ function toPiTool(tool, options) {
46
63
  },
47
64
  };
48
65
  }
49
- /** registry 全部工具 → pi 工具定义(顺序 = listTools 的稳定序) */
66
+ /** registry 中属于该工作区的工具 → pi 工具定义(顺序 = listTools 的稳定序) */
50
67
  export function createCustomTools(options) {
51
- return listTools().map((tool) => toPiTool(tool, options));
68
+ assertRequiredOptions(options);
69
+ return listTools()
70
+ .filter((tool) => isToolScopeRegistered(options.kind, tool.scope))
71
+ .map((tool) => toPiTool(tool, options));
52
72
  }
53
73
  /** 工具参数 schema 类型(测试/调用方按需引用) */
54
74
  //# sourceMappingURL=tools.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/runtime/tools.ts"],"names":[],"mappings":"AAAA,wCAAwC;AACxC,EAAE;AACF,8FAA8F;AAC9F,iEAAiE;AACjE,EAAE;AACF,oEAAoE;AACpE,yCAAyC;AAGzC,OAAO,EAAE,eAAe,EAAE,MAAM,iCAAiC,CAAC;AAClE,OAAO,EAAE,SAAS,EAAiE,MAAM,gCAAgC,CAAC;AAC1H,OAAO,EAAE,mBAAmB,EAAE,sBAAsB,EAAE,MAAM,kBAAkB,CAAC;AA4B/E;0DAC0D;AAC1D,SAAS,eAAe,CAAC,OAAwB;IAC/C,MAAM,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;IACxC,MAAM,WAAW,GAAG,OAAO,OAAO,KAAK,QAAQ,IAAI,OAAO,KAAK,EAAE,CAAC,CAAC,CAAC,GAAG,OAAO,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;IACvF,OAAO,qBAAqB,OAAO,CAAC,WAAW,KAAK,WAAW,4BAA4B,CAAC;AAC9F,CAAC;AAED,uBAAuB;AACvB,SAAS,QAAQ,CAAC,IAA0B,EAAE,OAAiC;IAC7E,OAAO;QACL,IAAI,EAAE,IAAI,CAAC,IAAI;QACf,KAAK,EAAE,IAAI,CAAC,IAAI;QAChB,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;QAC3B,OAAO,EAAE,KAAK,EAAE,UAAU,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC5C,MAAM,MAAM,GAAY,MAAM,IAAI,CAAC,GAAG,CAAC,OAAO,CAAC,WAAW,EAAE,MAAe,EAAE,MAAM,CAAC,CAAC;YAErF,IAAI,IAAI,CAAC,UAAU,KAAK,eAAe,CAAC,QAAQ,EAAE,CAAC;gBACjD,MAAM,QAAQ,GAAG,OAAO,CAAC,YAAY,EAAE,CAAC;oBACtC,QAAQ,EAAE,IAAI,CAAC,IAAI;oBACnB,UAAU;oBACV,MAAM;oBACN,MAAM;oBACN,WAAW,EAAE,OAAO,CAAC,WAAW;iBACjC,CAAC,CAAC;gBACH,IAAI,QAAQ,KAAK,SAAS,EAAE,CAAC;oBAC3B,OAAO;wBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,eAAe,CAAC,QAAQ,CAAC,EAAE,CAAC;wBACrE,OAAO,EAAE,QAAQ;qBAClB,CAAC;gBACJ,CAAC;YACH,CAAC;YAED,OAAO;gBACL,OAAO,EAAE,CAAC,EAAE,IAAI,EAAE,MAAe,EAAE,IAAI,EAAE,sBAAsB,CAAC,mBAAmB,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC;gBAC/F,OAAO,EAAE,MAAM;aAChB,CAAC;QACJ,CAAC;KACF,CAAC;AACJ,CAAC;AAED,mDAAmD;AACnD,MAAM,UAAU,iBAAiB,CAAC,OAAiC;IACjE,OAAO,SAAS,EAAE,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC;AAC5D,CAAC;AAED,iCAAiC"}
1
+ {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/runtime/tools.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/runtime/usage.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAmBjE,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CACpD;AAyBD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAsBtG"}
1
+ {"version":3,"file":"usage.d.ts","sourceRoot":"","sources":["../../src/runtime/usage.ts"],"names":[],"mappings":"AAUA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iCAAiC,CAAC;AACpE,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,iCAAiC,CAAC;AAmBjE,MAAM,WAAW,mBAAmB;IAClC;;;;OAIG;IACH,mBAAmB,EAAE,CAAC,QAAQ,EAAE,MAAM,KAAK,OAAO,CAAC;CACpD;AA4BD;;;GAGG;AACH,wBAAgB,YAAY,CAAC,OAAO,EAAE,SAAS,YAAY,EAAE,EAAE,OAAO,EAAE,mBAAmB,GAAG,SAAS,CAsBtG"}
@@ -2,8 +2,9 @@
2
2
  //
3
3
  // 契约 = docs/api/80-api-chat.md「会话用量字段」+ docs/design/20-context.md §2.1:
4
4
  // 本模块是 `usage` 的唯一实现点,口径逐条对齐 pi `AgentSession.getSessionStats()`——
5
- // 只有三类计入:assistant 消息、`toolResult.usage`(工具自身开销)、
6
- // `compaction` / `branch_summary` 的 usage(压缩与分支摘要同样要付费,账目不能漏)。
5
+ // 四类计入:assistant 消息、`toolResult.usage`(工具自身开销)、
6
+ // `compaction` / `branch_summary` 的 usage(压缩与分支摘要同样要付费,账目不能漏)、
7
+ // 独立 `usage` 条目(cache warming 的 `kind: "cache_warm"`)。
7
8
  // 命中率与订阅布尔同在此处算:客户端只格式化,不复算分母。
8
9
  /**
9
10
  * 订阅型 provider 的补充字面量:`kimi-coding` 用 API-key 凭据时 `isUsingOAuth()` 为 false
@@ -14,6 +15,10 @@
14
15
  const SUBSCRIPTION_PROVIDER = "kimi-coding";
15
16
  /** 单条 entry 计入账目的 usage(user / 状态类 entry 不产生费用) */
16
17
  function entryUsage(entry) {
18
+ // pi 0.86 起新增独立的 `usage` 条目(cache warming 的 `kind: "cache_warm"`):
19
+ // pi 的 `getSessionStats()` 把它计入总量,本模块同口径——漏掉会让状态栏费用低于实际
20
+ if (entry.type === "usage")
21
+ return entry.usage;
17
22
  if (entry.type === "branch_summary" || entry.type === "compaction")
18
23
  return entry.usage;
19
24
  if (entry.type !== "message")
@@ -1 +1 @@
1
- {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/runtime/usage.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"usage.js","sourceRoot":"","sources":["../../src/runtime/usage.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@whispering233/ai-editor-agent",
3
- "version": "0.0.56",
3
+ "version": "0.0.58",
4
4
  "license": "MIT",
5
5
  "description": "AI 对话循环:会话管理 / 上下文组装 / 工具调度",
6
6
  "type": "module",
@@ -26,10 +26,10 @@
26
26
  "postpack": "node ../../scripts/restore-package-json.mjs"
27
27
  },
28
28
  "dependencies": {
29
- "@earendil-works/pi-ai": "0.85.1",
30
- "@earendil-works/pi-coding-agent": "0.85.1",
31
- "@whispering233/ai-editor-shared": "0.0.56",
32
- "@whispering233/ai-editor-tools": "0.0.56"
29
+ "@earendil-works/pi-ai": "1.0.4",
30
+ "@earendil-works/pi-coding-agent": "1.0.4",
31
+ "@whispering233/ai-editor-shared": "0.0.58",
32
+ "@whispering233/ai-editor-tools": "0.0.58"
33
33
  },
34
34
  "devDependencies": {
35
35
  "typescript": "^5.8.0"