@ai-setting/roy-agent-core 1.7.70 → 1.7.72

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 (66) hide show
  1. package/dist/env/agent/agent-component.js +2 -2
  2. package/dist/env/agent/index.js +2 -2
  3. package/dist/env/agent/summary-agent.d.ts +6 -15
  4. package/dist/env/agent/types.d.ts +0 -17
  5. package/dist/env/event-source/event-source-handlers.js +6 -6
  6. package/dist/env/event-source/index.js +7 -7
  7. package/dist/env/event-source/reset-command.d.ts +41 -0
  8. package/dist/env/index.js +19 -20
  9. package/dist/env/llm/index.js +1 -1
  10. package/dist/env/llm/temperature-policy.d.ts +107 -0
  11. package/dist/env/llm/types.d.ts +2 -2
  12. package/dist/env/prompt/index.js +3 -3
  13. package/dist/env/prompt/prompts-index.d.ts +341 -3
  14. package/dist/env/session/__bench__/replay-compact.d.ts +137 -0
  15. package/dist/env/session/__bench__/run-replay.d.ts +15 -0
  16. package/dist/env/session/compact-checkpoint-content.d.ts +67 -0
  17. package/dist/env/session/index.d.ts +1 -0
  18. package/dist/env/session/index.js +2 -3
  19. package/dist/env/session/session-component.d.ts +47 -30
  20. package/dist/env/session/storage/index.js +1 -1
  21. package/dist/env/session/storage/sqlite.d.ts +8 -0
  22. package/dist/env/session/types.d.ts +45 -30
  23. package/dist/env/task/delegate/delegate-tool.js +4 -4
  24. package/dist/env/task/delegate/index.js +4 -4
  25. package/dist/env/task/index.js +6 -6
  26. package/dist/env/task/mcp/index.js +2 -2
  27. package/dist/env/task/plugins/index.js +4 -4
  28. package/dist/env/task/plugins/lark-card-patch-notifier.d.ts +50 -0
  29. package/dist/env/task/plugins/lark-card-patch-notifier.js +3 -1
  30. package/dist/env/task/prompt/index.d.ts +11 -0
  31. package/dist/env/task/prompt/index.js +16 -0
  32. package/dist/env/task/prompt/task-discipline.d.ts +32 -0
  33. package/dist/env/task/tools/index.js +2 -2
  34. package/dist/env/workflow/engine/index.js +2 -3
  35. package/dist/env/workflow/index.js +6 -7
  36. package/dist/env/workflow/plugins/index.js +2 -2
  37. package/dist/env/workflow/tools/index.js +3 -4
  38. package/dist/index.d.ts +2 -1
  39. package/dist/index.js +39 -28
  40. package/dist/shared/@ai-setting/{roy-agent-core-bk8kyzv8.js → roy-agent-core-1p6syv85.js} +1 -1
  41. package/dist/shared/@ai-setting/{roy-agent-core-8bjj3d1b.js → roy-agent-core-1w9y7mxj.js} +1 -1
  42. package/dist/shared/@ai-setting/{roy-agent-core-nersksh1.js → roy-agent-core-2gzt2q8c.js} +2 -2
  43. package/dist/shared/@ai-setting/{roy-agent-core-27f59kjv.js → roy-agent-core-34jz9mgh.js} +1 -1
  44. package/dist/shared/@ai-setting/{roy-agent-core-tadj19vp.js → roy-agent-core-46rv4d7d.js} +71 -49
  45. package/dist/shared/@ai-setting/roy-agent-core-4jjwewvw.js +182 -0
  46. package/dist/shared/@ai-setting/{roy-agent-core-hx46nhh1.js → roy-agent-core-5gw0qa8m.js} +4 -4
  47. package/dist/shared/@ai-setting/{roy-agent-core-0j94tj1z.js → roy-agent-core-7qvw65jt.js} +4 -4
  48. package/dist/shared/@ai-setting/{roy-agent-core-h5vmff8w.js → roy-agent-core-7sj9xs9c.js} +7 -33
  49. package/dist/shared/@ai-setting/{roy-agent-core-002g6nfk.js → roy-agent-core-attpry6g.js} +3 -3
  50. package/dist/shared/@ai-setting/{roy-agent-core-37tj4y6a.js → roy-agent-core-gr48c89p.js} +3 -3
  51. package/dist/shared/@ai-setting/{roy-agent-core-0cb6w0k7.js → roy-agent-core-hfyfavp3.js} +1 -1
  52. package/dist/shared/@ai-setting/{roy-agent-core-hfr6bzts.js → roy-agent-core-jgb3bb42.js} +1 -1
  53. package/dist/shared/@ai-setting/{roy-agent-core-9bshyqjn.js → roy-agent-core-pakhchy7.js} +183 -132
  54. package/dist/shared/@ai-setting/roy-agent-core-qkdegdvc.js +0 -0
  55. package/dist/shared/@ai-setting/{roy-agent-core-02j24hrg.js → roy-agent-core-rxb00gjm.js} +70 -3
  56. package/dist/shared/@ai-setting/{roy-agent-core-8cx7cfdg.js → roy-agent-core-skyc30qx.js} +1 -2
  57. package/dist/shared/@ai-setting/{roy-agent-core-hy3zn2q2.js → roy-agent-core-sm0sf6sb.js} +20 -0
  58. package/dist/shared/@ai-setting/{roy-agent-core-mw2cen6s.js → roy-agent-core-vah6g5yx.js} +1 -1
  59. package/dist/shared/@ai-setting/{roy-agent-core-07fvy74y.js → roy-agent-core-vm8h5zyj.js} +20 -6
  60. package/dist/shared/@ai-setting/{roy-agent-core-x3xpkx84.js → roy-agent-core-wr7mv7k3.js} +1 -1
  61. package/dist/shared/@ai-setting/{roy-agent-core-npvejsg8.js → roy-agent-core-y12kyxwa.js} +83 -3
  62. package/dist/shared/@ai-setting/{roy-agent-core-vaz9350j.js → roy-agent-core-yhwxpj12.js} +34 -175
  63. package/dist/test-utils/ipc-test-server.d.ts +10 -0
  64. package/package.json +6 -1
  65. package/dist/shared/@ai-setting/roy-agent-core-6m4bw8jy.js +0 -6
  66. package/dist/shared/@ai-setting/roy-agent-core-ze068vc9.js +0 -37
@@ -7,10 +7,10 @@ import {
7
7
  filterToolsByAgent,
8
8
  parseToolList,
9
9
  toLLMMessage
10
- } from "../../shared/@ai-setting/roy-agent-core-hfr6bzts.js";
10
+ } from "../../shared/@ai-setting/roy-agent-core-jgb3bb42.js";
11
11
  import"../../shared/@ai-setting/roy-agent-core-dt104qa1.js";
12
12
  import"../../shared/@ai-setting/roy-agent-core-jvv2h3d6.js";
13
- import"../../shared/@ai-setting/roy-agent-core-07fvy74y.js";
13
+ import"../../shared/@ai-setting/roy-agent-core-vm8h5zyj.js";
14
14
  import"../../shared/@ai-setting/roy-agent-core-qxnbvgwe.js";
15
15
  import"../../shared/@ai-setting/roy-agent-core-f77k3gqt.js";
16
16
  import"../../shared/@ai-setting/roy-agent-core-kmbct9yg.js";
@@ -4,10 +4,10 @@ import {
4
4
  import {
5
5
  AgentComponent,
6
6
  AgentComponentConfigSchema
7
- } from "../../shared/@ai-setting/roy-agent-core-hfr6bzts.js";
7
+ } from "../../shared/@ai-setting/roy-agent-core-jgb3bb42.js";
8
8
  import"../../shared/@ai-setting/roy-agent-core-dt104qa1.js";
9
9
  import"../../shared/@ai-setting/roy-agent-core-jvv2h3d6.js";
10
- import"../../shared/@ai-setting/roy-agent-core-07fvy74y.js";
10
+ import"../../shared/@ai-setting/roy-agent-core-vm8h5zyj.js";
11
11
  import"../../shared/@ai-setting/roy-agent-core-qxnbvgwe.js";
12
12
  import"../../shared/@ai-setting/roy-agent-core-f77k3gqt.js";
13
13
  import"../../shared/@ai-setting/roy-agent-core-kmbct9yg.js";
@@ -15,8 +15,12 @@ import type { LLMComponent } from "../llm/llm";
15
15
  * SessionComponent.generateCompactHint() using AgentComponent.run("compact-hint", ...).
16
16
  *
17
17
  * This class is retained for backward compatibility with existing tests
18
- * (summary-agent.role-filter.test.ts, invoke-threshold-check.test.ts).
19
- * It no longer contains any active logic.
18
+ * (see invoke-threshold-check.test.ts). It no longer contains any active logic.
19
+ *
20
+ * Note: its former `parseCompactJsonResponse()` helper and the
21
+ * `SummaryAgentResult` type were removed in Task #4933 — they encoded the
22
+ * five-field JSON checkpoint extraction that was explicitly rejected; the
23
+ * checkpoint is now a single natural-language `content` string.
20
24
  */
21
25
  export declare class SummaryAgent {
22
26
  private llmComponent;
@@ -29,16 +33,3 @@ export declare class SummaryAgent {
29
33
  * 纯函数,可独立测试
30
34
  */
31
35
  export declare function parseCompactHintResponse(content: string): string;
32
- /**
33
- * 解析 JSON 响应(用于 Phase 2 compact agent 输出解析)
34
- *
35
- * 从 SessionComponent.compact() 中解析 compact agent 返回的 JSON。
36
- * 纯函数,方便测试。
37
- */
38
- export declare function parseCompactJsonResponse(content: string): {
39
- title: string;
40
- processKeyPoints: string[];
41
- currentState: string;
42
- nextSteps: string[];
43
- userIntents: string[];
44
- };
@@ -484,23 +484,6 @@ export interface SummaryAgentRunOptions {
484
484
  */
485
485
  scenarioHint?: string;
486
486
  }
487
- /**
488
- * Summary Agent 运行结果
489
- */
490
- export interface SummaryAgentResult {
491
- /** Checkpoint 标题 */
492
- title: string;
493
- /** 过程要点 */
494
- processKeyPoints: string[];
495
- /** 当前状态 */
496
- currentState: string;
497
- /** 后续待跟进 */
498
- nextSteps: string[];
499
- /** 用户意图列表 - 从对话中提取的用户相关意图 */
500
- userIntents: string[];
501
- /** 原始 LLM 响应 */
502
- rawResponse?: string;
503
- }
504
487
  /**
505
488
  * Compact Hint 生成选项
506
489
  *
@@ -11,22 +11,22 @@ import {
11
11
  patchCardByLarkCli,
12
12
  renderRuleNoticeSection,
13
13
  timerHandler
14
- } from "../../shared/@ai-setting/roy-agent-core-npvejsg8.js";
14
+ } from "../../shared/@ai-setting/roy-agent-core-y12kyxwa.js";
15
15
  import"../../shared/@ai-setting/roy-agent-core-bxkjk7zx.js";
16
16
  import"../../shared/@ai-setting/roy-agent-core-add1zqsh.js";
17
17
  import {
18
18
  cliCommandHandler
19
19
  } from "../../shared/@ai-setting/roy-agent-core-v0hf14bj.js";
20
20
  import"../../shared/@ai-setting/roy-agent-core-tm1mxttk.js";
21
- import"../../shared/@ai-setting/roy-agent-core-hx46nhh1.js";
21
+ import"../../shared/@ai-setting/roy-agent-core-5gw0qa8m.js";
22
22
  import"../../shared/@ai-setting/roy-agent-core-na18zwj0.js";
23
+ import"../../shared/@ai-setting/roy-agent-core-yhwxpj12.js";
23
24
  import"../../shared/@ai-setting/roy-agent-core-abqhkbn3.js";
24
25
  import"../../shared/@ai-setting/roy-agent-core-1pg0fepg.js";
25
- import"../../shared/@ai-setting/roy-agent-core-vaz9350j.js";
26
26
  import"../../shared/@ai-setting/roy-agent-core-tr3ep81v.js";
27
- import"../../shared/@ai-setting/roy-agent-core-6m4bw8jy.js";
28
- import"../../shared/@ai-setting/roy-agent-core-8bjj3d1b.js";
29
- import"../../shared/@ai-setting/roy-agent-core-tadj19vp.js";
27
+ import"../../shared/@ai-setting/roy-agent-core-4jjwewvw.js";
28
+ import"../../shared/@ai-setting/roy-agent-core-1w9y7mxj.js";
29
+ import"../../shared/@ai-setting/roy-agent-core-46rv4d7d.js";
30
30
  import"../../shared/@ai-setting/roy-agent-core-c2gbt68e.js";
31
31
  import"../../shared/@ai-setting/roy-agent-core-yr1mryb8.js";
32
32
  import"../../shared/@ai-setting/roy-agent-core-mds8tqd0.js";
@@ -1,7 +1,7 @@
1
1
  import"../../shared/@ai-setting/roy-agent-core-b4x6x4k2.js";
2
2
  import {
3
3
  EventSourceComponent
4
- } from "../../shared/@ai-setting/roy-agent-core-x3xpkx84.js";
4
+ } from "../../shared/@ai-setting/roy-agent-core-wr7mv7k3.js";
5
5
  import {
6
6
  BountyIMInstance,
7
7
  COMMAND_PREFIX,
@@ -33,7 +33,7 @@ import {
33
33
  timerHandler,
34
34
  translateCardActionToCommand,
35
35
  writeFallbackModelList
36
- } from "../../shared/@ai-setting/roy-agent-core-npvejsg8.js";
36
+ } from "../../shared/@ai-setting/roy-agent-core-y12kyxwa.js";
37
37
  import {
38
38
  BUILT_IN_EVENT_SOURCE_TYPES,
39
39
  BUILT_IN_EVENT_SOURCE_TYPE_LIST,
@@ -52,20 +52,20 @@ import {
52
52
  parseCliSessionChatId
53
53
  } from "../../shared/@ai-setting/roy-agent-core-v0hf14bj.js";
54
54
  import"../../shared/@ai-setting/roy-agent-core-tm1mxttk.js";
55
- import"../../shared/@ai-setting/roy-agent-core-hx46nhh1.js";
55
+ import"../../shared/@ai-setting/roy-agent-core-5gw0qa8m.js";
56
56
  import {
57
57
  EventStoreImpl,
58
58
  getSharedEventStore,
59
59
  resetSharedEventStore,
60
60
  setSharedEventStore
61
61
  } from "../../shared/@ai-setting/roy-agent-core-na18zwj0.js";
62
+ import"../../shared/@ai-setting/roy-agent-core-yhwxpj12.js";
62
63
  import"../../shared/@ai-setting/roy-agent-core-abqhkbn3.js";
63
64
  import"../../shared/@ai-setting/roy-agent-core-1pg0fepg.js";
64
- import"../../shared/@ai-setting/roy-agent-core-vaz9350j.js";
65
65
  import"../../shared/@ai-setting/roy-agent-core-tr3ep81v.js";
66
- import"../../shared/@ai-setting/roy-agent-core-6m4bw8jy.js";
67
- import"../../shared/@ai-setting/roy-agent-core-8bjj3d1b.js";
68
- import"../../shared/@ai-setting/roy-agent-core-tadj19vp.js";
66
+ import"../../shared/@ai-setting/roy-agent-core-4jjwewvw.js";
67
+ import"../../shared/@ai-setting/roy-agent-core-1w9y7mxj.js";
68
+ import"../../shared/@ai-setting/roy-agent-core-46rv4d7d.js";
69
69
  import"../../shared/@ai-setting/roy-agent-core-c2gbt68e.js";
70
70
  import"../../shared/@ai-setting/roy-agent-core-yr1mryb8.js";
71
71
  import"../../shared/@ai-setting/roy-agent-core-mds8tqd0.js";
@@ -0,0 +1,41 @@
1
+ /**
2
+ * Task #4896 — `reset` command.
3
+ *
4
+ * User sends `##command##: reset` (optionally `reset <reason>`)
5
+ * to the roy-agent es frontend. This command notifies the
6
+ * deamon-for-roy daemon over a Unix socket (JSON line protocol):
7
+ *
8
+ * -> {"type":"reset","reason":"..."}
9
+ * <- {"type":"ack","action":"respawning"}
10
+ *
11
+ * The daemon then SIGTERMs this process and respawns the
12
+ * (possibly rebuilt) binary — hot version swap.
13
+ *
14
+ * ## Iron rule: the command must NEVER fail
15
+ *
16
+ * If the socket is missing / connect fails / daemon doesn't
17
+ * answer within 3s, we still return ok:true with text telling
18
+ * the user the daemon did NOT confirm. A broken IPC must not
19
+ * leave the user without any feedback (the es frontend renders
20
+ * CommandResult to a feishu card).
21
+ *
22
+ * ## Socket path resolution
23
+ *
24
+ * 1. env ROY_DAEMON_SOCKET (tests / ops override)
25
+ * 2. default /tmp/deamon-for-roy.sock
26
+ */
27
+ import type { CommandDefinition } from "./command-registry";
28
+ import { type LarkCard } from "./command-cards";
29
+ /** Default IPC socket path of deamon-for-roy. */
30
+ export declare const DEFAULT_SOCKET_PATH = "/tmp/deamon-for-roy.sock";
31
+ /** How long to wait for the daemon ACK before giving up (ms). */
32
+ export declare const RESET_ACK_TIMEOUT_MS = 3000;
33
+ export declare function resolveSocketPath(): string;
34
+ /**
35
+ * Build the feishu interactive card for the reset result.
36
+ *
37
+ * Uses the repo's Card 2.0 convention (renderTextCard) so the reset card
38
+ * looks the same as the other command cards (header + markdown body).
39
+ */
40
+ export declare function buildResetCard(text: string): LarkCard;
41
+ export declare const resetCommand: CommandDefinition;
package/dist/env/index.js CHANGED
@@ -1,24 +1,24 @@
1
1
  import {
2
2
  BaseEnvironment
3
- } from "../shared/@ai-setting/roy-agent-core-bk8kyzv8.js";
3
+ } from "../shared/@ai-setting/roy-agent-core-1p6syv85.js";
4
4
  import {
5
5
  TaskComponent
6
- } from "../shared/@ai-setting/roy-agent-core-nersksh1.js";
6
+ } from "../shared/@ai-setting/roy-agent-core-2gzt2q8c.js";
7
7
  import"../shared/@ai-setting/roy-agent-core-58804s3j.js";
8
8
  import"../shared/@ai-setting/roy-agent-core-jm136jzh.js";
9
- import"../shared/@ai-setting/roy-agent-core-0j94tj1z.js";
9
+ import"../shared/@ai-setting/roy-agent-core-7qvw65jt.js";
10
10
  import"../shared/@ai-setting/roy-agent-core-fttgm52a.js";
11
11
  import"../shared/@ai-setting/roy-agent-core-ntq0gz7q.js";
12
12
  import"../shared/@ai-setting/roy-agent-core-8gxth0eh.js";
13
- import"../shared/@ai-setting/roy-agent-core-h5vmff8w.js";
13
+ import"../shared/@ai-setting/roy-agent-core-7sj9xs9c.js";
14
14
  import"../shared/@ai-setting/roy-agent-core-p5cz9m8v.js";
15
15
  import {
16
16
  EventSourceComponent
17
- } from "../shared/@ai-setting/roy-agent-core-x3xpkx84.js";
17
+ } from "../shared/@ai-setting/roy-agent-core-wr7mv7k3.js";
18
18
  import {
19
19
  builtInHandlers,
20
20
  larkCliHandler
21
- } from "../shared/@ai-setting/roy-agent-core-npvejsg8.js";
21
+ } from "../shared/@ai-setting/roy-agent-core-y12kyxwa.js";
22
22
  import {
23
23
  EventSourceInitHooks,
24
24
  getDefaultConfigForType,
@@ -29,32 +29,31 @@ import {
29
29
  import"../shared/@ai-setting/roy-agent-core-add1zqsh.js";
30
30
  import"../shared/@ai-setting/roy-agent-core-v0hf14bj.js";
31
31
  import"../shared/@ai-setting/roy-agent-core-tm1mxttk.js";
32
- import"../shared/@ai-setting/roy-agent-core-hx46nhh1.js";
32
+ import"../shared/@ai-setting/roy-agent-core-5gw0qa8m.js";
33
33
  import"../shared/@ai-setting/roy-agent-core-na18zwj0.js";
34
+ import"../shared/@ai-setting/roy-agent-core-yhwxpj12.js";
34
35
  import"../shared/@ai-setting/roy-agent-core-abqhkbn3.js";
35
36
  import"../shared/@ai-setting/roy-agent-core-1pg0fepg.js";
36
- import"../shared/@ai-setting/roy-agent-core-vaz9350j.js";
37
37
  import"../shared/@ai-setting/roy-agent-core-tr3ep81v.js";
38
- import"../shared/@ai-setting/roy-agent-core-6m4bw8jy.js";
39
- import"../shared/@ai-setting/roy-agent-core-8bjj3d1b.js";
40
- import"../shared/@ai-setting/roy-agent-core-tadj19vp.js";
38
+ import"../shared/@ai-setting/roy-agent-core-4jjwewvw.js";
39
+ import"../shared/@ai-setting/roy-agent-core-1w9y7mxj.js";
40
+ import"../shared/@ai-setting/roy-agent-core-46rv4d7d.js";
41
41
  import {
42
42
  WorkflowComponent
43
- } from "../shared/@ai-setting/roy-agent-core-37tj4y6a.js";
43
+ } from "../shared/@ai-setting/roy-agent-core-gr48c89p.js";
44
44
  import"../shared/@ai-setting/roy-agent-core-es203w7p.js";
45
45
  import"../shared/@ai-setting/roy-agent-core-h0x19xgn.js";
46
46
  import"../shared/@ai-setting/roy-agent-core-1ce3fqrk.js";
47
- import"../shared/@ai-setting/roy-agent-core-0cb6w0k7.js";
48
- import"../shared/@ai-setting/roy-agent-core-9bshyqjn.js";
49
- import"../shared/@ai-setting/roy-agent-core-hy3zn2q2.js";
47
+ import"../shared/@ai-setting/roy-agent-core-hfyfavp3.js";
48
+ import"../shared/@ai-setting/roy-agent-core-pakhchy7.js";
49
+ import"../shared/@ai-setting/roy-agent-core-sm0sf6sb.js";
50
50
  import"../shared/@ai-setting/roy-agent-core-hhrg314p.js";
51
51
  import"../shared/@ai-setting/roy-agent-core-12n08pg5.js";
52
- import"../shared/@ai-setting/roy-agent-core-mw2cen6s.js";
52
+ import"../shared/@ai-setting/roy-agent-core-vah6g5yx.js";
53
53
  import"../shared/@ai-setting/roy-agent-core-6atd905e.js";
54
- import"../shared/@ai-setting/roy-agent-core-002g6nfk.js";
54
+ import"../shared/@ai-setting/roy-agent-core-attpry6g.js";
55
55
  import"../shared/@ai-setting/roy-agent-core-efkjyh69.js";
56
56
  import"../shared/@ai-setting/roy-agent-core-1db4vpc6.js";
57
- import"../shared/@ai-setting/roy-agent-core-ze068vc9.js";
58
57
  import"../shared/@ai-setting/roy-agent-core-dvtg4sn0.js";
59
58
  import"../shared/@ai-setting/roy-agent-core-c2gbt68e.js";
60
59
  import"../shared/@ai-setting/roy-agent-core-7exqwax1.js";
@@ -68,10 +67,10 @@ import"../shared/@ai-setting/roy-agent-core-jagkferh.js";
68
67
  import {
69
68
  AgentComponent,
70
69
  AgentComponentConfigSchema
71
- } from "../shared/@ai-setting/roy-agent-core-hfr6bzts.js";
70
+ } from "../shared/@ai-setting/roy-agent-core-jgb3bb42.js";
72
71
  import"../shared/@ai-setting/roy-agent-core-dt104qa1.js";
73
72
  import"../shared/@ai-setting/roy-agent-core-jvv2h3d6.js";
74
- import"../shared/@ai-setting/roy-agent-core-07fvy74y.js";
73
+ import"../shared/@ai-setting/roy-agent-core-vm8h5zyj.js";
75
74
  import {
76
75
  XDG_PATHS,
77
76
  getXDGPath,
@@ -13,7 +13,7 @@ import {
13
13
  createLLMAdapter,
14
14
  getLLMProviderOverride,
15
15
  setLLMProvider
16
- } from "../../shared/@ai-setting/roy-agent-core-02j24hrg.js";
16
+ } from "../../shared/@ai-setting/roy-agent-core-rxb00gjm.js";
17
17
  import"../../shared/@ai-setting/roy-agent-core-adg9ghbt.js";
18
18
  import {
19
19
  PiAiAdapter,
@@ -0,0 +1,107 @@
1
+ /**
2
+ * Temperature policy — 端点硬约束 + 优先级解析(Task #4946)
3
+ *
4
+ * ## 为什么需要这个模块
5
+ *
6
+ * 2026-11-04 用户在飞书报告:
7
+ * `roy-agent act hi --model kimi/k3.1-pro-highspeed`
8
+ * → `AI_APICallError: invalid temperature: only 1 is allowed for this model`
9
+ * (`https://api.kimi.com/coding/v1/chat/completions`, requestBody temperature: 0.7)
10
+ *
11
+ * 直打真实端点的实测结论(6 个模型全覆盖):
12
+ * - `temperature: 0.7` → HTTP 400 invalid temperature
13
+ * - `temperature: 1` → HTTP 200
14
+ * - 省略 `temperature` → HTTP 200
15
+ * ⇒ Kimi For Coding 端点**只接受 1 或不传**,与模型 id 无关,是端点级约束。
16
+ *
17
+ * ## 为什么不能只靠用户配置
18
+ *
19
+ * `ProviderConfig.temperature`(types.ts 的字段 + Zod schema)此前**没有任何
20
+ * 读取点** —— 用户在 `config.jsonc` 的 provider 块里写 `"temperature": 1` 完全
21
+ * 无效,而全局 `llm.temperature` 又会把同一份值广播给**所有** provider。
22
+ * 于是用户只能在「全局改成 1(污染所有模型)」和「报 400」之间二选一。
23
+ *
24
+ * 本模块做两件事:
25
+ * 1. `FIXED_TEMPERATURE_ENDPOINTS` —— 把「端点硬约束」变成**声明式数据**,
26
+ * 由 baseURL(首选证据)或已知 provider id 识别,避免按用户自定义
27
+ * provider 名字瞎猜(`kimi` 是用户起的名字,`kimi-coding` 才是 pi-ai 内置 id)。
28
+ * 2. `resolveTemperature()` —— 单一优先级解析函数:
29
+ * request > 显式全局 `llm.temperature` > provider 级 `temperature` > 内置 0.7
30
+ * 最后再套用端点硬约束。这样 provider 级配置从此是**活的**,
31
+ * 而硬约束端点无论上层传什么都不可能再发出非法值。
32
+ *
33
+ * @module
34
+ */
35
+ /** 一条「端点硬约束 temperature」声明。 */
36
+ export interface FixedTemperatureEndpoint {
37
+ /** 说明性标识(日志 / 报错用)。 */
38
+ id: string;
39
+ /**
40
+ * 命中用的 baseURL 片段(**首选证据**)。
41
+ *
42
+ * 刻意匹配到域名 + 路径前缀(如 `api.kimi.com/coding`),这样同一家
43
+ * 厂商「编码套餐」和「通用 API」两条线不会互相误伤。
44
+ */
45
+ baseURLIncludes: string;
46
+ /**
47
+ * 已知的 pi-ai 内置 provider id(baseURL 缺失时的兜底证据)。
48
+ *
49
+ * 只在 baseURL 解析不出来时使用,且必须是厂商官方 id,不能是用户自定义
50
+ * 的 provider 别名(用户随时可能把 `kimi` 指向别家网关)。
51
+ */
52
+ providerIds?: readonly string[];
53
+ /** 强制发送的 temperature 值。 */
54
+ temperature: number;
55
+ /** 为什么必须固定(写进文档/日志,避免日后被当成魔法数删掉)。 */
56
+ reason: string;
57
+ }
58
+ /**
59
+ * 端点硬约束表。
60
+ *
61
+ * 新增条目要求:
62
+ * - 有**真实请求**证据(curl 过 400 / 200 两组对照,不是看文档猜的);
63
+ * - `baseURLIncludes` 足够具体(域名 + 路径前缀),不要只写厂商名片段。
64
+ */
65
+ export declare const FIXED_TEMPERATURE_ENDPOINTS: readonly FixedTemperatureEndpoint[];
66
+ /**
67
+ * 在硬约束表里查找匹配项。
68
+ *
69
+ * 匹配顺序:baseURL 优先(真实证据),providerIds 兜底(已知官方 id)。
70
+ * 两者都无命中时返回 `undefined`。
71
+ */
72
+ export declare function findFixedTemperatureRule(input: {
73
+ providerId?: string;
74
+ baseURL?: string;
75
+ }): FixedTemperatureEndpoint | undefined;
76
+ /** 未做任何配置时沿用的历史默认值(保持向后兼容)。 */
77
+ export declare const DEFAULT_TEMPERATURE = 0.7;
78
+ export interface ResolveTemperatureInput {
79
+ /** 调用方显式指定的 temperature(最高优先级)。 */
80
+ requestTemperature?: number;
81
+ /**
82
+ * 显式配置的全局 `llm.temperature`。
83
+ *
84
+ * 注意:**必须是「用户真的配了」才有值**。不要把 `?? 0.7` 在这里做完 ——
85
+ * 否则 provider 级配置永远不会生效(这正是修复前的死锁)。
86
+ */
87
+ globalTemperature?: number;
88
+ /** provider 块里的 `temperature`(修复前是 dead field)。 */
89
+ providerTemperature?: number;
90
+ /** 解析后的 provider baseURL(硬约束识别的主证据)。 */
91
+ baseURL?: string;
92
+ /** provider id(硬约束识别的兜底证据)。 */
93
+ providerId?: string;
94
+ }
95
+ export interface ResolveTemperatureResult {
96
+ /** 最终应当放进请求体的 temperature。 */
97
+ temperature: number;
98
+ /** 若命中了端点硬约束,这里是那条规则(调用方可用于日志)。 */
99
+ clampedBy?: FixedTemperatureEndpoint;
100
+ }
101
+ /**
102
+ * 解析最终 temperature。
103
+ *
104
+ * 优先级:request > 显式全局 > provider 级 > {@link DEFAULT_TEMPERATURE},
105
+ * 最后套用端点硬约束(命中则无条件覆盖,因为端点会直接 400)。
106
+ */
107
+ export declare function resolveTemperature(input: ResolveTemperatureInput): ResolveTemperatureResult;
@@ -627,13 +627,12 @@ export declare const LLMConfigSchema: z.ZodObject<{
627
627
  providerOptions?: Record<string, unknown> | undefined;
628
628
  }>>;
629
629
  defaultProvider: z.ZodString;
630
- temperature: z.ZodDefault<z.ZodNumber>;
630
+ temperature: z.ZodOptional<z.ZodNumber>;
631
631
  maxTokens: z.ZodOptional<z.ZodNumber>;
632
632
  topP: z.ZodOptional<z.ZodNumber>;
633
633
  stream: z.ZodDefault<z.ZodBoolean>;
634
634
  options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
635
635
  }, "strip", z.ZodTypeAny, {
636
- temperature: number;
637
636
  providers: Record<string, {
638
637
  provider: string;
639
638
  apiKey: string;
@@ -668,6 +667,7 @@ export declare const LLMConfigSchema: z.ZodObject<{
668
667
  stream: boolean;
669
668
  options?: Record<string, unknown> | undefined;
670
669
  defaultModel?: string | undefined;
670
+ temperature?: number | undefined;
671
671
  maxTokens?: number | undefined;
672
672
  default?: {
673
673
  temperature?: number | undefined;
@@ -3,9 +3,9 @@ import {
3
3
  PromptConfigSchema,
4
4
  PromptPathSchema,
5
5
  PromptRenderer
6
- } from "../../shared/@ai-setting/roy-agent-core-27f59kjv.js";
7
- import"../../shared/@ai-setting/roy-agent-core-vaz9350j.js";
8
- import"../../shared/@ai-setting/roy-agent-core-6m4bw8jy.js";
6
+ } from "../../shared/@ai-setting/roy-agent-core-34jz9mgh.js";
7
+ import"../../shared/@ai-setting/roy-agent-core-yhwxpj12.js";
8
+ import"../../shared/@ai-setting/roy-agent-core-4jjwewvw.js";
9
9
  import"../../shared/@ai-setting/roy-agent-core-qxnbvgwe.js";
10
10
  import"../../shared/@ai-setting/roy-agent-core-7hh0brvs.js";
11
11
  import"../../shared/@ai-setting/roy-agent-core-pgvcf91v.js";