pulseed 0.4.14 → 0.4.15

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 (165) hide show
  1. package/assets/seedy.png +0 -0
  2. package/dist/adapters/types/mcp.d.ts +6 -6
  3. package/dist/base/config/global-config.d.ts.map +1 -1
  4. package/dist/base/config/global-config.js +2 -2
  5. package/dist/base/config/global-config.js.map +1 -1
  6. package/dist/base/llm/provider-config.d.ts +6 -1
  7. package/dist/base/llm/provider-config.d.ts.map +1 -1
  8. package/dist/base/llm/provider-config.js +148 -94
  9. package/dist/base/llm/provider-config.js.map +1 -1
  10. package/dist/base/utils/json-io.d.ts +6 -1
  11. package/dist/base/utils/json-io.d.ts.map +1 -1
  12. package/dist/base/utils/json-io.js +16 -3
  13. package/dist/base/utils/json-io.js.map +1 -1
  14. package/dist/interface/chat/chat-history.d.ts +6 -1
  15. package/dist/interface/chat/chat-history.d.ts.map +1 -1
  16. package/dist/interface/chat/chat-history.js +16 -2
  17. package/dist/interface/chat/chat-history.js.map +1 -1
  18. package/dist/interface/chat/chat-runner.d.ts +27 -1
  19. package/dist/interface/chat/chat-runner.d.ts.map +1 -1
  20. package/dist/interface/chat/chat-runner.js +412 -5
  21. package/dist/interface/chat/chat-runner.js.map +1 -1
  22. package/dist/interface/chat/grounding.d.ts.map +1 -1
  23. package/dist/interface/chat/grounding.js +2 -1
  24. package/dist/interface/chat/grounding.js.map +1 -1
  25. package/dist/interface/chat/mutation-tool-defs.d.ts +0 -21
  26. package/dist/interface/chat/mutation-tool-defs.d.ts.map +1 -1
  27. package/dist/interface/chat/mutation-tool-defs.js +1 -164
  28. package/dist/interface/chat/mutation-tool-defs.js.map +1 -1
  29. package/dist/interface/cli/commands/daemon.d.ts.map +1 -1
  30. package/dist/interface/cli/commands/daemon.js +4 -14
  31. package/dist/interface/cli/commands/daemon.js.map +1 -1
  32. package/dist/interface/cli/commands/setup/import/apply.d.ts.map +1 -1
  33. package/dist/interface/cli/commands/setup/import/apply.js +4 -0
  34. package/dist/interface/cli/commands/setup/import/apply.js.map +1 -1
  35. package/dist/interface/cli/commands/setup/import/discovery.d.ts.map +1 -1
  36. package/dist/interface/cli/commands/setup/import/discovery.js +10 -2
  37. package/dist/interface/cli/commands/setup/import/discovery.js.map +1 -1
  38. package/dist/interface/cli/commands/setup/import/flow.d.ts.map +1 -1
  39. package/dist/interface/cli/commands/setup/import/flow.js +11 -1
  40. package/dist/interface/cli/commands/setup/import/flow.js.map +1 -1
  41. package/dist/interface/cli/commands/setup/import/types.d.ts +3 -0
  42. package/dist/interface/cli/commands/setup/import/types.d.ts.map +1 -1
  43. package/dist/interface/cli/commands/setup-wizard.d.ts.map +1 -1
  44. package/dist/interface/cli/commands/setup-wizard.js +14 -1
  45. package/dist/interface/cli/commands/setup-wizard.js.map +1 -1
  46. package/dist/interface/cli/setup.d.ts.map +1 -1
  47. package/dist/interface/cli/setup.js +6 -5
  48. package/dist/interface/cli/setup.js.map +1 -1
  49. package/dist/interface/mcp-server/index.d.ts.map +1 -1
  50. package/dist/interface/mcp-server/index.js +2 -1
  51. package/dist/interface/mcp-server/index.js.map +1 -1
  52. package/dist/platform/observation/observation-tools.d.ts.map +1 -1
  53. package/dist/platform/observation/observation-tools.js +4 -1
  54. package/dist/platform/observation/observation-tools.js.map +1 -1
  55. package/dist/platform/soil/config.d.ts.map +1 -1
  56. package/dist/platform/soil/config.js +1 -2
  57. package/dist/platform/soil/config.js.map +1 -1
  58. package/dist/platform/soil/display/index.d.ts +4 -0
  59. package/dist/platform/soil/display/index.d.ts.map +1 -0
  60. package/dist/platform/soil/display/index.js +4 -0
  61. package/dist/platform/soil/display/index.js.map +1 -0
  62. package/dist/platform/soil/display/materialize.d.ts +3 -0
  63. package/dist/platform/soil/display/materialize.d.ts.map +1 -0
  64. package/dist/platform/soil/display/materialize.js +381 -0
  65. package/dist/platform/soil/display/materialize.js.map +1 -0
  66. package/dist/platform/soil/display/registry.d.ts +4 -0
  67. package/dist/platform/soil/display/registry.d.ts.map +1 -0
  68. package/dist/platform/soil/display/registry.js +19 -0
  69. package/dist/platform/soil/display/registry.js.map +1 -0
  70. package/dist/platform/soil/display/types.d.ts +28 -0
  71. package/dist/platform/soil/display/types.d.ts.map +1 -0
  72. package/dist/platform/soil/display/types.js +2 -0
  73. package/dist/platform/soil/display/types.js.map +1 -0
  74. package/dist/platform/soil/index.d.ts +1 -0
  75. package/dist/platform/soil/index.d.ts.map +1 -1
  76. package/dist/platform/soil/index.js +1 -0
  77. package/dist/platform/soil/index.js.map +1 -1
  78. package/dist/platform/soil/open.d.ts.map +1 -1
  79. package/dist/platform/soil/open.js +2 -0
  80. package/dist/platform/soil/open.js.map +1 -1
  81. package/dist/platform/soil/publish/publisher.d.ts.map +1 -1
  82. package/dist/platform/soil/publish/publisher.js +2 -0
  83. package/dist/platform/soil/publish/publisher.js.map +1 -1
  84. package/dist/reflection/evening-catchup.d.ts.map +1 -1
  85. package/dist/reflection/evening-catchup.js +6 -41
  86. package/dist/reflection/evening-catchup.js.map +1 -1
  87. package/dist/reflection/morning-planning.d.ts.map +1 -1
  88. package/dist/reflection/morning-planning.js +6 -46
  89. package/dist/reflection/morning-planning.js.map +1 -1
  90. package/dist/reflection/reflection-utils.d.ts +16 -0
  91. package/dist/reflection/reflection-utils.d.ts.map +1 -0
  92. package/dist/reflection/reflection-utils.js +56 -0
  93. package/dist/reflection/reflection-utils.js.map +1 -0
  94. package/dist/reflection/weekly-review.d.ts.map +1 -1
  95. package/dist/reflection/weekly-review.js +3 -12
  96. package/dist/reflection/weekly-review.js.map +1 -1
  97. package/dist/reporting/report-formatters.d.ts +7 -0
  98. package/dist/reporting/report-formatters.d.ts.map +1 -1
  99. package/dist/reporting/report-formatters.js +22 -33
  100. package/dist/reporting/report-formatters.js.map +1 -1
  101. package/dist/reporting/reporting-engine.d.ts.map +1 -1
  102. package/dist/reporting/reporting-engine.js +34 -49
  103. package/dist/reporting/reporting-engine.js.map +1 -1
  104. package/dist/runtime/builtin-integrations.d.ts +4 -0
  105. package/dist/runtime/builtin-integrations.d.ts.map +1 -0
  106. package/dist/runtime/builtin-integrations.js +45 -0
  107. package/dist/runtime/builtin-integrations.js.map +1 -0
  108. package/dist/runtime/event/server.d.ts +1 -1
  109. package/dist/runtime/event/server.d.ts.map +1 -1
  110. package/dist/runtime/event/server.js +5 -27
  111. package/dist/runtime/event/server.js.map +1 -1
  112. package/dist/runtime/executor/loop-supervisor.d.ts.map +1 -1
  113. package/dist/runtime/executor/loop-supervisor.js +2 -2
  114. package/dist/runtime/executor/loop-supervisor.js.map +1 -1
  115. package/dist/runtime/foreign-plugins/compatibility.d.ts +7 -0
  116. package/dist/runtime/foreign-plugins/compatibility.d.ts.map +1 -0
  117. package/dist/runtime/foreign-plugins/compatibility.js +175 -0
  118. package/dist/runtime/foreign-plugins/compatibility.js.map +1 -0
  119. package/dist/runtime/foreign-plugins/index.d.ts +3 -0
  120. package/dist/runtime/foreign-plugins/index.d.ts.map +1 -0
  121. package/dist/runtime/foreign-plugins/index.js +2 -0
  122. package/dist/runtime/foreign-plugins/index.js.map +1 -0
  123. package/dist/runtime/foreign-plugins/types.d.ts +25 -0
  124. package/dist/runtime/foreign-plugins/types.d.ts.map +1 -0
  125. package/dist/runtime/foreign-plugins/types.js +2 -0
  126. package/dist/runtime/foreign-plugins/types.js.map +1 -0
  127. package/dist/runtime/schedule/engine.d.ts +12 -0
  128. package/dist/runtime/schedule/engine.d.ts.map +1 -1
  129. package/dist/runtime/schedule/engine.js +402 -243
  130. package/dist/runtime/schedule/engine.js.map +1 -1
  131. package/dist/runtime/types/builtin-integration.d.ts +13 -0
  132. package/dist/runtime/types/builtin-integration.d.ts.map +1 -0
  133. package/dist/runtime/types/builtin-integration.js +2 -0
  134. package/dist/runtime/types/builtin-integration.js.map +1 -0
  135. package/dist/tools/executor.js +2 -2
  136. package/dist/tools/executor.js.map +1 -1
  137. package/dist/tools/fs/ReadPulseedFileTool/ReadPulseedFileTool.d.ts.map +1 -1
  138. package/dist/tools/fs/ReadPulseedFileTool/ReadPulseedFileTool.js +21 -5
  139. package/dist/tools/fs/ReadPulseedFileTool/ReadPulseedFileTool.js.map +1 -1
  140. package/dist/tools/fs/WritePulseedFileTool/WritePulseedFileTool.d.ts.map +1 -1
  141. package/dist/tools/fs/WritePulseedFileTool/WritePulseedFileTool.js +61 -6
  142. package/dist/tools/fs/WritePulseedFileTool/WritePulseedFileTool.js.map +1 -1
  143. package/dist/tools/interaction/plan-utils.js +2 -2
  144. package/dist/tools/interaction/plan-utils.js.map +1 -1
  145. package/dist/tools/network/McpStdioTool/McpStdioTool.d.ts +8 -8
  146. package/dist/tools/query/ConfigTool/ConfigTool.d.ts.map +1 -1
  147. package/dist/tools/query/ConfigTool/ConfigTool.js +4 -3
  148. package/dist/tools/query/ConfigTool/ConfigTool.js.map +1 -1
  149. package/dist/tools/query/PluginStateTool/PluginStateTool.d.ts.map +1 -1
  150. package/dist/tools/query/PluginStateTool/PluginStateTool.js +13 -2
  151. package/dist/tools/query/PluginStateTool/PluginStateTool.js.map +1 -1
  152. package/dist/tools/system/ProcessSessionTool/ProcessSessionTool.d.ts +4 -4
  153. package/package.json +2 -1
  154. package/dist/interface/chat/self-knowledge-mutation-tools.d.ts +0 -12
  155. package/dist/interface/chat/self-knowledge-mutation-tools.d.ts.map +0 -1
  156. package/dist/interface/chat/self-knowledge-mutation-tools.js +0 -261
  157. package/dist/interface/chat/self-knowledge-mutation-tools.js.map +0 -1
  158. package/dist/interface/chat/self-knowledge-tools.d.ts +0 -30
  159. package/dist/interface/chat/self-knowledge-tools.d.ts.map +0 -1
  160. package/dist/interface/chat/self-knowledge-tools.js +0 -248
  161. package/dist/interface/chat/self-knowledge-tools.js.map +0 -1
  162. package/dist/prompt/index.d.ts +0 -12
  163. package/dist/prompt/index.d.ts.map +0 -1
  164. package/dist/prompt/index.js +0 -9
  165. package/dist/prompt/index.js.map +0 -1
Binary file
@@ -46,8 +46,8 @@ export declare const MCPServerConfigSchema: z.ZodObject<{
46
46
  args_template?: Record<string, unknown> | undefined;
47
47
  }[];
48
48
  url?: string | undefined;
49
- command?: string | undefined;
50
49
  env?: Record<string, string> | undefined;
50
+ command?: string | undefined;
51
51
  args?: string[] | undefined;
52
52
  }, {
53
53
  name: string;
@@ -60,8 +60,8 @@ export declare const MCPServerConfigSchema: z.ZodObject<{
60
60
  }[];
61
61
  enabled?: boolean | undefined;
62
62
  url?: string | undefined;
63
- command?: string | undefined;
64
63
  env?: Record<string, string> | undefined;
64
+ command?: string | undefined;
65
65
  args?: string[] | undefined;
66
66
  }>;
67
67
  export type MCPServerConfig = z.infer<typeof MCPServerConfigSchema>;
@@ -99,8 +99,8 @@ export declare const MCPServersConfigSchema: z.ZodObject<{
99
99
  args_template?: Record<string, unknown> | undefined;
100
100
  }[];
101
101
  url?: string | undefined;
102
- command?: string | undefined;
103
102
  env?: Record<string, string> | undefined;
103
+ command?: string | undefined;
104
104
  args?: string[] | undefined;
105
105
  }, {
106
106
  name: string;
@@ -113,8 +113,8 @@ export declare const MCPServersConfigSchema: z.ZodObject<{
113
113
  }[];
114
114
  enabled?: boolean | undefined;
115
115
  url?: string | undefined;
116
- command?: string | undefined;
117
116
  env?: Record<string, string> | undefined;
117
+ command?: string | undefined;
118
118
  args?: string[] | undefined;
119
119
  }>, "many">;
120
120
  }, "strip", z.ZodTypeAny, {
@@ -129,8 +129,8 @@ export declare const MCPServersConfigSchema: z.ZodObject<{
129
129
  args_template?: Record<string, unknown> | undefined;
130
130
  }[];
131
131
  url?: string | undefined;
132
- command?: string | undefined;
133
132
  env?: Record<string, string> | undefined;
133
+ command?: string | undefined;
134
134
  args?: string[] | undefined;
135
135
  }[];
136
136
  }, {
@@ -145,8 +145,8 @@ export declare const MCPServersConfigSchema: z.ZodObject<{
145
145
  }[];
146
146
  enabled?: boolean | undefined;
147
147
  url?: string | undefined;
148
- command?: string | undefined;
149
148
  env?: Record<string, string> | undefined;
149
+ command?: string | undefined;
150
150
  args?: string[] | undefined;
151
151
  }[];
152
152
  }>;
@@ -1 +1 @@
1
- {"version":3,"file":"global-config.d.ts","sourceRoot":"","sources":["../../../src/base/config/global-config.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,QAAA,MAAM,kBAAkB;;;;;;;;;EAGtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,QAAA,MAAM,cAAc,EAAE,YAGrB,CAAC;AAOF,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC,CAQ9D;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAI1E;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAK9F;AAED,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"global-config.d.ts","sourceRoot":"","sources":["../../../src/base/config/global-config.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,QAAA,MAAM,kBAAkB;;;;;;;;;EAGtB,CAAC;AAEH,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAE9D,QAAA,MAAM,cAAc,EAAE,YAGrB,CAAC;AAMF,wBAAsB,gBAAgB,IAAI,OAAO,CAAC,YAAY,CAAC,CAQ9D;AAED,wBAAsB,gBAAgB,CAAC,MAAM,EAAE,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAI1E;AAED,wBAAsB,kBAAkB,CAAC,OAAO,EAAE,OAAO,CAAC,YAAY,CAAC,GAAG,OAAO,CAAC,YAAY,CAAC,CAK9F;AAED,wBAAgB,aAAa,IAAI,MAAM,EAAE,CAExC;AAED,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC"}
@@ -4,6 +4,7 @@
4
4
  import fs from "node:fs/promises";
5
5
  import path from "node:path";
6
6
  import { z } from "zod";
7
+ import { getPulseedDirPath } from "../utils/paths.js";
7
8
  const GlobalConfigSchema = z.object({
8
9
  daemon_mode: z.boolean().default(false),
9
10
  no_flicker: z.boolean().default(true),
@@ -13,8 +14,7 @@ const DEFAULT_CONFIG = {
13
14
  no_flicker: true,
14
15
  };
15
16
  function getConfigPath() {
16
- const baseDir = process.env.PULSEED_HOME ?? path.join(process.env.HOME ?? "~", ".pulseed");
17
- return path.join(baseDir, "config.json");
17
+ return path.join(getPulseedDirPath(), "config.json");
18
18
  }
19
19
  export async function loadGlobalConfig() {
20
20
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"global-config.js","sourceRoot":"","sources":["../../../src/base/config/global-config.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,EAAE;AACF,mFAAmF;AAEnF,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACtC,CAAC,CAAC;AAIH,MAAM,cAAc,GAAiB;IACnC,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF,SAAS,aAAa;IACpB,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,GAAG,CAAC,IAAI,IAAI,GAAG,EAAE,UAAU,CAAC,CAAC;IAC3F,OAAO,IAAI,CAAC,IAAI,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC;AAC3C,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,kBAAkB,CAAC,KAAK,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAoB;IACzD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA8B;IACrE,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACrE,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACrC,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC"}
1
+ {"version":3,"file":"global-config.js","sourceRoot":"","sources":["../../../src/base/config/global-config.ts"],"names":[],"mappings":"AAAA,wBAAwB;AACxB,EAAE;AACF,mFAAmF;AAEnF,OAAO,EAAE,MAAM,kBAAkB,CAAC;AAClC,OAAO,IAAI,MAAM,WAAW,CAAC;AAC7B,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAC;AAEtD,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC;IAClC,WAAW,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACvC,UAAU,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACtC,CAAC,CAAC;AAIH,MAAM,cAAc,GAAiB;IACnC,WAAW,EAAE,KAAK;IAClB,UAAU,EAAE,IAAI;CACjB,CAAC;AAEF,SAAS,aAAa;IACpB,OAAO,IAAI,CAAC,IAAI,CAAC,iBAAiB,EAAE,EAAE,aAAa,CAAC,CAAC;AACvD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB;IACpC,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,EAAE,OAAO,CAAC,CAAC;QACxD,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;QAC/B,OAAO,kBAAkB,CAAC,KAAK,CAAC,EAAE,GAAG,cAAc,EAAE,GAAG,MAAM,EAAE,CAAC,CAAC;IACpE,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,EAAE,GAAG,cAAc,EAAE,CAAC;IAC/B,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gBAAgB,CAAC,MAAoB;IACzD,MAAM,UAAU,GAAG,aAAa,EAAE,CAAC;IACnC,MAAM,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,UAAU,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IAC9D,MAAM,EAAE,CAAC,SAAS,CAAC,UAAU,EAAE,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,GAAG,IAAI,CAAC,CAAC;AACzE,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,OAA8B;IACrE,MAAM,OAAO,GAAG,MAAM,gBAAgB,EAAE,CAAC;IACzC,MAAM,OAAO,GAAG,kBAAkB,CAAC,KAAK,CAAC,EAAE,GAAG,OAAO,EAAE,GAAG,OAAO,EAAE,CAAC,CAAC;IACrE,MAAM,gBAAgB,CAAC,OAAO,CAAC,CAAC;IAChC,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,MAAM,UAAU,aAAa;IAC3B,OAAO,MAAM,CAAC,IAAI,CAAC,cAAc,CAAC,CAAC;AACrC,CAAC;AAED,OAAO,EAAE,kBAAkB,EAAE,cAAc,EAAE,CAAC"}
@@ -102,6 +102,10 @@ export interface ValidationResult {
102
102
  * Logs warnings but does not throw — allows unknown models for flexibility.
103
103
  */
104
104
  export declare function validateProviderConfig(config: ProviderConfig): ValidationResult;
105
+ export interface LoadProviderConfigOptions {
106
+ baseDir?: string;
107
+ saveMigration?: boolean;
108
+ }
105
109
  /**
106
110
  * Load provider configuration.
107
111
  *
@@ -112,7 +116,8 @@ export declare function validateProviderConfig(config: ProviderConfig): Validati
112
116
  *
113
117
  * Auto-migrates old nested format to new flat format.
114
118
  */
115
- export declare function loadProviderConfig(): Promise<ProviderConfig>;
119
+ export declare function loadProviderConfig(options?: LoadProviderConfigOptions): Promise<ProviderConfig>;
120
+ export declare function resolveOpenAIApiKey(): Promise<string | undefined>;
116
121
  export declare function getProviderRuntimeFingerprint(): Promise<string>;
117
122
  /**
118
123
  * Save provider configuration to ~/.pulseed/provider.json.
@@ -1 +1 @@
1
- {"version":3,"file":"provider-config.d.ts","sourceRoot":"","sources":["../../../src/base/llm/provider-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-config.d.ts","sourceRoot":"","sources":["../../../src/base/llm/provider-config.ts"],"names":[],"mappings":"AAeA,oFAAoF;AACpF,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAUnD;AAED,2FAA2F;AAC3F,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAevE;AAID;;;GAGG;AACH,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,MAAM,EAAE;IAAE,QAAQ,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,EAAE,CAAA;CAAE,CAcnF,CAAC;AAIF,MAAM,WAAW,cAAc;IAC7B,mDAAmD;IACnD,QAAQ,EAAE,QAAQ,GAAG,WAAW,GAAG,QAAQ,CAAC;IAE5C,yBAAyB;IACzB,KAAK,EAAE,MAAM,CAAC;IAEd;+CAC2C;IAC3C,WAAW,CAAC,EAAE,MAAM,CAAC;IAErB,yDAAyD;IACzD,OAAO,EAAE,iBAAiB,GAAG,YAAY,GAAG,kBAAkB,GAAG,YAAY,GAAG,YAAY,CAAC;IAE7F,wCAAwC;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IAEjB,gDAAgD;IAChD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,4CAA4C;IAC5C,cAAc,CAAC,EAAE,MAAM,CAAC;IAExB,4DAA4D;IAC5D,gBAAgB,CAAC,EAAE;QACjB,IAAI,EAAE,OAAO,GAAG,QAAQ,CAAC;QACzB,MAAM,CAAC,EAAE;YACP,KAAK,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;YACjB,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,QAAQ,CAAC;YACrC,GAAG,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;YAC7B,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;SACpB,CAAC;KACH,CAAC;IAEF,mCAAmC;IACnC,GAAG,CAAC,EAAE;QACJ,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE;YACtB,QAAQ,EAAE,MAAM,CAAC;YACjB,UAAU,CAAC,EAAE,MAAM,CAAC;YACpB,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;YACxB,gBAAgB,CAAC,EAAE,OAAO,CAAC;YAC3B,gBAAgB,CAAC,EAAE,MAAM,CAAC;YAC1B,WAAW,CAAC,EAAE,MAAM,CAAC;SACtB,CAAC,CAAC;KACJ,CAAC;IAEF,6DAA6D;IAC7D,QAAQ,CAAC,EAAE;QACT,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,CAAC,EAAE,MAAM,CAAC;KACnB,CAAC;IAEF,wCAAwC;IACxC,UAAU,CAAC,EAAE;QACX,QAAQ,CAAC,EAAE;YACT,OAAO,CAAC,EAAE,OAAO,CAAC;YAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;YAClB,cAAc,CAAC,EAAE,OAAO,CAAC;YACzB,cAAc,CAAC,EAAE,YAAY,GAAG,QAAQ,GAAG,OAAO,CAAC;SACpD,CAAC;KACH,CAAC;CACH;AAED,wDAAwD;AACxD,UAAU,oBAAoB;IAC5B,YAAY,EAAE,WAAW,GAAG,QAAQ,GAAG,QAAQ,GAAG,OAAO,CAAC;IAC1D,eAAe,EAAE,iBAAiB,GAAG,YAAY,GAAG,kBAAkB,GAAG,YAAY,GAAG,YAAY,CAAC;IACrG,SAAS,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjD,MAAM,CAAC,EAAE;QAAE,OAAO,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAC;QAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IACjE,MAAM,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC/C,KAAK,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IAC9C,GAAG,CAAC,EAAE,cAAc,CAAC,KAAK,CAAC,CAAC;CAC7B;AAYD,QAAA,MAAM,uBAAuB,EAAE,cAI9B,CAAC;AAyBF;;GAEG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,oBAAoB,GAAG,cAAc,CA0C/E;AAID,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,OAAO,CAAC;IACf,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,cAAc,GAAG,gBAAgB,CA+B/E;AA4ID,MAAM,WAAW,yBAAyB;IACxC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AA4HD;;;;;;;;;GASG;AACH,wBAAsB,kBAAkB,CAAC,OAAO,GAAE,yBAA8B,GAAG,OAAO,CAAC,cAAc,CAAC,CAUzG;AAED,wBAAsB,mBAAmB,IAAI,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAYvE;AAED,wBAAsB,6BAA6B,IAAI,OAAO,CAAC,MAAM,CAAC,CAmBrE;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,cAAc,GAAG,OAAO,CAAC,IAAI,CAAC,CAK9E;AAGD,OAAO,EAAE,uBAAuB,EAAE,CAAC"}
@@ -65,8 +65,12 @@ export const MODEL_REGISTRY = {
65
65
  "claude-haiku-4-5": { provider: "anthropic", adapters: ["claude_code_cli", "claude_api", "agent_loop"] },
66
66
  };
67
67
  // ─── Constants ───
68
- const PROVIDER_CONFIG_PATH = path.join(getPulseedDirPath(), "provider.json");
69
- const PROVIDER_ENV_PATH = path.join(getPulseedDirPath(), ".env");
68
+ function providerConfigPath(baseDir = getPulseedDirPath()) {
69
+ return path.join(baseDir, "provider.json");
70
+ }
71
+ function providerEnvPath(baseDir = getPulseedDirPath()) {
72
+ return path.join(baseDir, ".env");
73
+ }
70
74
  const DEFAULT_PROVIDER_CONFIG = {
71
75
  provider: "openai",
72
76
  model: "gpt-5.4-mini",
@@ -231,6 +235,9 @@ function resolveBaseUrl(fileUrl, provider, envFile) {
231
235
  }
232
236
  return fileUrl;
233
237
  }
238
+ function resolveLightModel(fileLightModel, envFile) {
239
+ return process.env["PULSEED_LIGHT_MODEL"] ?? envFile["PULSEED_LIGHT_MODEL"] ?? fileLightModel;
240
+ }
234
241
  function parseEnvFile(raw) {
235
242
  const entries = raw
236
243
  .split(/\r?\n/)
@@ -246,125 +253,169 @@ function parseEnvFile(raw) {
246
253
  });
247
254
  return Object.fromEntries(entries);
248
255
  }
249
- async function readProviderEnvFile() {
256
+ async function readProviderEnvFile(baseDir) {
250
257
  try {
251
- return parseEnvFile(await fsp.readFile(PROVIDER_ENV_PATH, "utf-8"));
258
+ return parseEnvFile(await fsp.readFile(providerEnvPath(baseDir), "utf-8"));
252
259
  }
253
260
  catch {
254
261
  return {};
255
262
  }
256
263
  }
257
- // ─── Public API ───
258
- /**
259
- * Load provider configuration.
260
- *
261
- * Priority (highest to lowest):
262
- * 1. Environment variables for provider/adapter selection
263
- * 2. ~/.pulseed/provider.json
264
- * 3. Defaults (openai + gpt-5.4-mini + openai_codex_cli)
265
- *
266
- * Auto-migrates old nested format to new flat format.
267
- */
268
- export async function loadProviderConfig() {
269
- let fileConfig = {};
270
- let needsMigrationSave = false;
271
- const envFile = await readProviderEnvFile();
264
+ async function readProviderConfigFile(baseDir) {
265
+ const configPath = providerConfigPath(baseDir);
272
266
  try {
273
- await fsp.access(PROVIDER_CONFIG_PATH);
274
- try {
275
- const raw = await fsp.readFile(PROVIDER_CONFIG_PATH, "utf-8");
276
- const parsed = JSON.parse(raw);
277
- if (isLegacyConfig(parsed)) {
278
- fileConfig = migrateProviderConfig(parsed);
279
- needsMigrationSave = true;
280
- }
281
- else {
282
- fileConfig = parsed;
283
- }
284
- }
285
- catch {
286
- fileConfig = {};
287
- }
267
+ await fsp.access(configPath);
268
+ const raw = await fsp.readFile(configPath, "utf-8");
269
+ const parsed = JSON.parse(raw);
270
+ return isLegacyConfig(parsed)
271
+ ? migrateProviderConfig(parsed)
272
+ : parsed;
288
273
  }
289
274
  catch {
290
- // File does not exist
275
+ return {};
291
276
  }
292
- const provider = resolveProvider(fileConfig.provider);
293
- const resolvedModel = resolveModel(fileConfig.model, provider);
294
- let model = resolvedModel.model;
295
- const adapter = resolveAdapter(fileConfig.adapter);
296
- // Only env/default-selected models are auto-corrected. Explicit provider.json
297
- // models are preserved and surfaced as warnings instead of being replaced.
298
- const registryEntry = MODEL_REGISTRY[model];
299
- if (registryEntry && !registryEntry.adapters.includes(adapter)) {
300
- if (resolvedModel.source === "file") {
301
- console.warn(`[provider-config] Model "${model}" is not compatible with adapter "${adapter}". Keeping provider.json model and relying on validation to surface the mismatch.`);
302
- }
303
- else {
304
- const fallback = defaultModelForProvider(provider);
305
- console.warn(`[provider-config] Model "${model}" is not compatible with adapter "${adapter}". Falling back to "${fallback}".`);
306
- model = fallback;
277
+ }
278
+ async function loadProviderFileConfig(configPath) {
279
+ try {
280
+ await fsp.access(configPath);
281
+ }
282
+ catch {
283
+ return { fileConfig: {}, needsMigrationSave: false };
284
+ }
285
+ try {
286
+ const raw = await fsp.readFile(configPath, "utf-8");
287
+ const parsed = JSON.parse(raw);
288
+ if (isLegacyConfig(parsed)) {
289
+ return {
290
+ fileConfig: migrateProviderConfig(parsed),
291
+ needsMigrationSave: true,
292
+ };
307
293
  }
294
+ return { fileConfig: parsed, needsMigrationSave: false };
308
295
  }
309
- let api_key = resolveApiKey(fileConfig.api_key, provider, adapter, envFile);
310
- // Fallback: read OAuth token from ~/.codex/auth.json when no API key is configured
311
- if (!api_key && provider === "openai" && adapter === "openai_codex_cli") {
312
- api_key = await readCodexOAuthToken();
296
+ catch {
297
+ return { fileConfig: {}, needsMigrationSave: false };
298
+ }
299
+ }
300
+ function resolveCompatibleModel(resolvedModel, provider, adapter) {
301
+ const registryEntry = MODEL_REGISTRY[resolvedModel.model];
302
+ if (!registryEntry || registryEntry.adapters.includes(adapter)) {
303
+ return resolvedModel.model;
313
304
  }
314
- const base_url = resolveBaseUrl(fileConfig.base_url, provider, envFile);
305
+ if (resolvedModel.source === "file") {
306
+ console.warn(`[provider-config] Model "${resolvedModel.model}" is not compatible with adapter "${adapter}". Keeping provider.json model and relying on validation to surface the mismatch.`);
307
+ return resolvedModel.model;
308
+ }
309
+ const fallback = defaultModelForProvider(provider);
310
+ console.warn(`[provider-config] Model "${resolvedModel.model}" is not compatible with adapter "${adapter}". Falling back to "${fallback}".`);
311
+ return fallback;
312
+ }
313
+ async function resolveApiKeyWithFallback(fileKey, provider, adapter, envFile) {
314
+ const apiKey = resolveApiKey(fileKey, provider, adapter, envFile);
315
+ if (apiKey || provider !== "openai" || adapter !== "openai_codex_cli") {
316
+ return apiKey;
317
+ }
318
+ return readCodexOAuthToken();
319
+ }
320
+ async function resolveProviderConfig(fileConfig, envFile) {
321
+ const provider = resolveProvider(fileConfig.provider);
322
+ const adapter = resolveAdapter(fileConfig.adapter);
323
+ const model = resolveCompatibleModel(resolveModel(fileConfig.model, provider), provider, adapter);
324
+ const apiKey = await resolveApiKeyWithFallback(fileConfig.api_key, provider, adapter, envFile);
325
+ const baseUrl = resolveBaseUrl(fileConfig.base_url, provider, envFile);
326
+ const lightModel = resolveLightModel(fileConfig.light_model, envFile);
315
327
  const config = { provider, model, adapter };
316
- if (api_key !== undefined)
317
- config.api_key = api_key;
318
- if (base_url !== undefined)
319
- config.base_url = base_url;
328
+ if (apiKey !== undefined)
329
+ config.api_key = apiKey;
330
+ if (baseUrl !== undefined)
331
+ config.base_url = baseUrl;
320
332
  if (fileConfig.codex_cli_path !== undefined)
321
333
  config.codex_cli_path = fileConfig.codex_cli_path;
322
334
  if (fileConfig.terminal_backend !== undefined)
323
335
  config.terminal_backend = fileConfig.terminal_backend;
324
336
  if (fileConfig.a2a !== undefined)
325
337
  config.a2a = fileConfig.a2a;
326
- if (fileConfig.light_model !== undefined)
327
- config.light_model = fileConfig.light_model;
338
+ if (lightModel !== undefined)
339
+ config.light_model = lightModel;
328
340
  if (fileConfig.openclaw !== undefined)
329
341
  config.openclaw = fileConfig.openclaw;
330
342
  if (fileConfig.agent_loop !== undefined)
331
343
  config.agent_loop = fileConfig.agent_loop;
332
- // Validate and log warnings (only once per process)
344
+ return config;
345
+ }
346
+ function warnOnceForInvalidProviderConfig(config) {
333
347
  const validation = validateProviderConfig(config);
334
- if (!validation.valid && !_warnedOnce) {
335
- for (const err of validation.errors) {
336
- console.warn(`[provider-config] Warning: ${err}`);
337
- }
338
- _warnedOnce = true;
339
- }
340
- // Auto-save migrated config (save file-only values, not env-var-resolved ones)
341
- if (needsMigrationSave) {
342
- try {
343
- const fileOnly = {
344
- provider: fileConfig.provider ?? "openai",
345
- model: fileConfig.model ?? "gpt-5.4-mini",
346
- adapter: fileConfig.adapter ?? "openai_codex_cli",
347
- };
348
- if (fileConfig.api_key !== undefined)
349
- fileOnly.api_key = fileConfig.api_key;
350
- if (fileConfig.base_url !== undefined)
351
- fileOnly.base_url = fileConfig.base_url;
352
- if (fileConfig.codex_cli_path !== undefined)
353
- fileOnly.codex_cli_path = fileConfig.codex_cli_path;
354
- if (fileConfig.terminal_backend !== undefined)
355
- fileOnly.terminal_backend = fileConfig.terminal_backend;
356
- if (fileConfig.a2a !== undefined)
357
- fileOnly.a2a = fileConfig.a2a;
358
- if (fileConfig.agent_loop !== undefined)
359
- fileOnly.agent_loop = fileConfig.agent_loop;
360
- await saveProviderConfig(fileOnly);
361
- }
362
- catch {
363
- // Best-effort don't fail if we can't save
364
- }
348
+ if (validation.valid || _warnedOnce)
349
+ return;
350
+ for (const err of validation.errors) {
351
+ console.warn(`[provider-config] Warning: ${err}`);
352
+ }
353
+ _warnedOnce = true;
354
+ }
355
+ function providerFileOnlyConfig(fileConfig) {
356
+ const fileOnly = {
357
+ provider: fileConfig.provider ?? "openai",
358
+ model: fileConfig.model ?? "gpt-5.4-mini",
359
+ adapter: fileConfig.adapter ?? "openai_codex_cli",
360
+ };
361
+ if (fileConfig.api_key !== undefined)
362
+ fileOnly.api_key = fileConfig.api_key;
363
+ if (fileConfig.base_url !== undefined)
364
+ fileOnly.base_url = fileConfig.base_url;
365
+ if (fileConfig.codex_cli_path !== undefined)
366
+ fileOnly.codex_cli_path = fileConfig.codex_cli_path;
367
+ if (fileConfig.terminal_backend !== undefined)
368
+ fileOnly.terminal_backend = fileConfig.terminal_backend;
369
+ if (fileConfig.a2a !== undefined)
370
+ fileOnly.a2a = fileConfig.a2a;
371
+ if (fileConfig.agent_loop !== undefined)
372
+ fileOnly.agent_loop = fileConfig.agent_loop;
373
+ return fileOnly;
374
+ }
375
+ async function saveMigratedProviderConfig(configPath, fileConfig) {
376
+ try {
377
+ await writeJsonFileAtomic(configPath, providerFileOnlyConfig(fileConfig), {
378
+ mode: 0o600,
379
+ directoryMode: 0o700,
380
+ });
381
+ }
382
+ catch {
383
+ // Best-effort — don't fail if we can't save
384
+ }
385
+ }
386
+ /**
387
+ * Load provider configuration.
388
+ *
389
+ * Priority (highest to lowest):
390
+ * 1. Environment variables for provider/adapter selection
391
+ * 2. ~/.pulseed/provider.json
392
+ * 3. Defaults (openai + gpt-5.4-mini + openai_codex_cli)
393
+ *
394
+ * Auto-migrates old nested format to new flat format.
395
+ */
396
+ export async function loadProviderConfig(options = {}) {
397
+ const envFile = await readProviderEnvFile(options.baseDir);
398
+ const configPath = providerConfigPath(options.baseDir);
399
+ const { fileConfig, needsMigrationSave } = await loadProviderFileConfig(configPath);
400
+ const config = await resolveProviderConfig(fileConfig, envFile);
401
+ warnOnceForInvalidProviderConfig(config);
402
+ if (needsMigrationSave && options.saveMigration !== false) {
403
+ await saveMigratedProviderConfig(configPath, fileConfig);
365
404
  }
366
405
  return config;
367
406
  }
407
+ export async function resolveOpenAIApiKey() {
408
+ const envFile = await readProviderEnvFile();
409
+ const envKey = process.env["OPENAI_API_KEY"] ?? envFile["OPENAI_API_KEY"];
410
+ if (envKey) {
411
+ return envKey;
412
+ }
413
+ const fileConfig = await readProviderConfigFile();
414
+ if (fileConfig.provider === "openai" || fileConfig.adapter === "openai_api") {
415
+ return fileConfig.api_key;
416
+ }
417
+ return undefined;
418
+ }
368
419
  export async function getProviderRuntimeFingerprint() {
369
420
  const config = await loadProviderConfig();
370
421
  const fingerprintSource = {
@@ -389,7 +440,10 @@ export async function getProviderRuntimeFingerprint() {
389
440
  * Creates the ~/.pulseed directory if it does not exist.
390
441
  */
391
442
  export async function saveProviderConfig(config) {
392
- await writeJsonFileAtomic(PROVIDER_CONFIG_PATH, config);
443
+ await writeJsonFileAtomic(providerConfigPath(), config, {
444
+ mode: 0o600,
445
+ directoryMode: 0o700,
446
+ });
393
447
  }
394
448
  // Re-export default for tests that need it
395
449
  export { DEFAULT_PROVIDER_CONFIG };
@@ -1 +1 @@
1
- {"version":3,"file":"provider-config.js","sourceRoot":"","sources":["../../../src/base/llm/provider-config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"provider-config.js","sourceRoot":"","sources":["../../../src/base/llm/provider-config.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,13 @@
1
1
  import { z } from "zod";
2
+ interface WriteJsonFileAtomicOptions {
3
+ mode?: number;
4
+ directoryMode?: number;
5
+ }
2
6
  /**
3
7
  * Write data to a JSON file atomically (write to a unique .tmp, then rename).
4
8
  * Creates parent directories as needed.
5
9
  */
6
- export declare function writeJsonFileAtomic(filePath: string, data: unknown): Promise<void>;
10
+ export declare function writeJsonFileAtomic(filePath: string, data: unknown, options?: WriteJsonFileAtomicOptions): Promise<void>;
7
11
  /**
8
12
  * Read and parse a JSON file asynchronously.
9
13
  * Returns null on ENOENT or invalid JSON (does not throw).
@@ -25,4 +29,5 @@ export declare function readJsonFile<T>(filePath: string): Promise<T>;
25
29
  * @deprecated Prefer writeJsonFileAtomic
26
30
  */
27
31
  export declare function writeJsonFile(filePath: string, data: unknown): Promise<void>;
32
+ export {};
28
33
  //# sourceMappingURL=json-io.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"json-io.d.ts","sourceRoot":"","sources":["../../../src/base/utils/json-io.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB;;;GAGG;AACH,wBAAsB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAcxF;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAOzF;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAKnB;AAKD;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAGlE;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAElF"}
1
+ {"version":3,"file":"json-io.d.ts","sourceRoot":"","sources":["../../../src/base/utils/json-io.ts"],"names":[],"mappings":"AASA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,UAAU,0BAA0B;IAClC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC;CACxB;AAED;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,OAAO,EACb,OAAO,GAAE,0BAA+B,GACvC,OAAO,CAAC,IAAI,CAAC,CA2Bf;AAED;;;GAGG;AACH,wBAAsB,kBAAkB,CAAC,CAAC,GAAG,OAAO,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAOzF;AAED;;;GAGG;AACH,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GACnB,OAAO,CAAC,CAAC,GAAG,IAAI,CAAC,CAKnB;AAKD;;;;GAIG;AACH,wBAAsB,YAAY,CAAC,CAAC,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,CAAC,CAAC,CAGlE;AAED;;;GAGG;AACH,wBAAsB,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,IAAI,CAAC,CAElF"}
@@ -10,12 +10,25 @@ import { dirname } from "node:path";
10
10
  * Write data to a JSON file atomically (write to a unique .tmp, then rename).
11
11
  * Creates parent directories as needed.
12
12
  */
13
- export async function writeJsonFileAtomic(filePath, data) {
14
- await fsp.mkdir(dirname(filePath), { recursive: true });
13
+ export async function writeJsonFileAtomic(filePath, data, options = {}) {
14
+ const parentDir = dirname(filePath);
15
+ await fsp.mkdir(parentDir, { recursive: true, mode: options.directoryMode });
16
+ if (options.directoryMode !== undefined) {
17
+ await fsp.chmod(parentDir, options.directoryMode).catch(() => undefined);
18
+ }
15
19
  const tmpPath = `${filePath}.${process.pid}.${randomUUID()}.tmp`;
16
20
  try {
17
- await fsp.writeFile(tmpPath, JSON.stringify(data, null, 2), "utf-8");
21
+ await fsp.writeFile(tmpPath, JSON.stringify(data, null, 2), {
22
+ encoding: "utf-8",
23
+ mode: options.mode,
24
+ });
25
+ if (options.mode !== undefined) {
26
+ await fsp.chmod(tmpPath, options.mode).catch(() => undefined);
27
+ }
18
28
  await fsp.rename(tmpPath, filePath);
29
+ if (options.mode !== undefined) {
30
+ await fsp.chmod(filePath, options.mode).catch(() => undefined);
31
+ }
19
32
  }
20
33
  catch (err) {
21
34
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"json-io.js","sourceRoot":"","sources":["../../../src/base/utils/json-io.ts"],"names":[],"mappings":"AAAA,4BAA4B;AAC5B,EAAE;AACF,qDAAqD;AACrD,mFAAmF;AACnF,kEAAkE;AAElE,OAAO,KAAK,GAAG,MAAM,kBAAkB,CAAC;AACxC,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAGpC;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAC,QAAgB,EAAE,IAAa;IACvE,MAAM,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACxD,MAAM,OAAO,GAAG,GAAG,QAAQ,IAAI,OAAO,CAAC,GAAG,IAAI,UAAU,EAAE,MAAM,CAAC;IACjE,IAAI,CAAC;QACH,MAAM,GAAG,CAAC,SAAS,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;QACrE,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,EAAE,QAAQ,CAAC,CAAC;IACtC,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IAAI,CAAC;YACH,MAAM,GAAG,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC;QAC5B,CAAC;QAAC,MAAM,CAAC;YACP,wBAAwB;QAC1B,CAAC;QACD,MAAM,GAAG,CAAC;IACZ,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAc,QAAgB;IACpE,IAAI,CAAC;QACH,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACtD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;IAClC,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAC1C,QAAgB,EAChB,MAAoB;IAEpB,MAAM,GAAG,GAAG,MAAM,kBAAkB,CAAC,QAAQ,CAAC,CAAC;IAC/C,IAAI,GAAG,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAC9B,MAAM,MAAM,GAAG,MAAM,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;IACrC,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC;AAC7C,CAAC;AAED,kEAAkE;AAClE,2DAA2D;AAE3D;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,YAAY,CAAI,QAAgB;IACpD,MAAM,OAAO,GAAG,MAAM,GAAG,CAAC,QAAQ,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;IACtD,OAAO,IAAI,CAAC,KAAK,CAAC,OAAO,CAAM,CAAC;AAClC,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,QAAgB,EAAE,IAAa;IACjE,MAAM,GAAG,CAAC,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACxE,CAAC"}
1
+ {"version":3,"file":"json-io.js","sourceRoot":"","sources":["../../../src/base/utils/json-io.ts"],"names":[],"mappings":"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"}
@@ -176,7 +176,12 @@ export declare class ChatHistory {
176
176
  /** Append an assistant message and persist it as the committed assistant turn. */
177
177
  appendAssistantMessage(content: string): Promise<void>;
178
178
  /** Clear all messages and persist the empty state. */
179
- clear(): void;
179
+ clear(): Promise<void>;
180
+ /** Persist a compacted summary and keep only the latest turns in message history. */
181
+ compact(summary: string, keepMessageCount?: number): Promise<{
182
+ before: number;
183
+ after: number;
184
+ }>;
180
185
  getMessages(): ChatMessage[];
181
186
  getSessionData(): ChatSession;
182
187
  getSessionId(): string;
@@ -1 +1 @@
1
- {"version":3,"file":"chat-history.d.ts","sourceRoot":"","sources":["../../../src/interface/chat/chat-history.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAItE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;gCAKd,CAAC;AACjB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;gCAK/B,CAAC;AACjB,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE9F,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAad,CAAC;AACjB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAE1B,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,WAAW;IAuBrG,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW;IAIjF,0EAA0E;IACpE,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD,kFAAkF;IAC5E,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D,sDAAsD;IACtD,KAAK,IAAI,IAAI;IAKb,WAAW,IAAI,WAAW,EAAE;IAI5B,cAAc,IAAI,WAAW;IAI7B,YAAY,IAAI,MAAM;IAItB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQpC,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQ/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B"}
1
+ {"version":3,"file":"chat-history.d.ts","sourceRoot":"","sources":["../../../src/interface/chat/chat-history.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,mCAAmC,CAAC;AAItE,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;gCAKd,CAAC;AACjB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAE5D,eAAO,MAAM,kCAAkC;;;;;;;;;;;;;;;gCAK/B,CAAC;AACjB,MAAM,MAAM,4BAA4B,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kCAAkC,CAAC,CAAC;AAE9F,eAAO,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;gCAad,CAAC;AACjB,MAAM,MAAM,WAAW,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,iBAAiB,CAAC,CAAC;AAI5D,qBAAa,WAAW;IACtB,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAe;IAC5C,OAAO,CAAC,QAAQ,CAAC,SAAS,CAAS;IACnC,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAc;gBAE1B,YAAY,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,EAAE,eAAe,CAAC,EAAE,WAAW;IAuBrG,MAAM,CAAC,WAAW,CAAC,YAAY,EAAE,YAAY,EAAE,OAAO,EAAE,WAAW,GAAG,WAAW;IAIjF,0EAA0E;IACpE,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAUvD,kFAAkF;IAC5E,sBAAsB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC;IAU5D,sDAAsD;IAChD,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAM5B,qFAAqF;IAC/E,OAAO,CAAC,OAAO,EAAE,MAAM,EAAE,gBAAgB,SAAI,GAAG,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;IAahG,WAAW,IAAI,WAAW,EAAE;IAI5B,cAAc,IAAI,WAAW;IAI7B,YAAY,IAAI,MAAM;IAItB,QAAQ,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQpC,qBAAqB,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI,GAAG,IAAI;IAQ/C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;CAO/B"}
@@ -82,9 +82,23 @@ export class ChatHistory {
82
82
  await this.persist();
83
83
  }
84
84
  /** Clear all messages and persist the empty state. */
85
- clear() {
85
+ async clear() {
86
86
  this.session.messages = [];
87
- void this.persist();
87
+ delete this.session.compactionSummary;
88
+ await this.persist();
89
+ }
90
+ /** Persist a compacted summary and keep only the latest turns in message history. */
91
+ async compact(summary, keepMessageCount = 4) {
92
+ const before = this.session.messages.length;
93
+ const keepCount = Math.max(0, keepMessageCount);
94
+ const kept = keepCount === 0 ? [] : this.session.messages.slice(-keepCount);
95
+ this.session.messages = kept.map((message, index) => ({
96
+ ...message,
97
+ turnIndex: index,
98
+ }));
99
+ this.session.compactionSummary = summary;
100
+ await this.persist();
101
+ return { before, after: this.session.messages.length };
88
102
  }
89
103
  getMessages() {
90
104
  return [...this.session.messages];