hoomanjs 1.33.0 → 1.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (158) hide show
  1. package/README.md +114 -270
  2. package/dist/acp/acp-agent.js +2 -16
  3. package/dist/acp/acp-agent.js.map +1 -1
  4. package/dist/acp/sessions/options.js +2 -2
  5. package/dist/acp/sessions/options.js.map +1 -1
  6. package/dist/acp/sessions/store.d.ts +0 -2
  7. package/dist/acp/sessions/store.js.map +1 -1
  8. package/dist/acp/utils/tool-kind.js +10 -2
  9. package/dist/acp/utils/tool-kind.js.map +1 -1
  10. package/dist/chat/app.d.ts +2 -1
  11. package/dist/chat/app.js +94 -23
  12. package/dist/chat/app.js.map +1 -1
  13. package/dist/chat/components/BottomChrome.d.ts +6 -2
  14. package/dist/chat/components/BottomChrome.js +2 -2
  15. package/dist/chat/components/BottomChrome.js.map +1 -1
  16. package/dist/chat/components/ChromePicker.d.ts +7 -2
  17. package/dist/chat/components/ChromePicker.js +9 -2
  18. package/dist/chat/components/ChromePicker.js.map +1 -1
  19. package/dist/chat/components/StatusBar.d.ts +1 -2
  20. package/dist/chat/components/StatusBar.js +3 -12
  21. package/dist/chat/components/StatusBar.js.map +1 -1
  22. package/dist/chat/components/ToolEvent.js +1 -1
  23. package/dist/chat/components/ToolEvent.js.map +1 -1
  24. package/dist/chat/index.d.ts +2 -1
  25. package/dist/chat/index.js +7 -0
  26. package/dist/chat/index.js.map +1 -1
  27. package/dist/cli.js +120 -4
  28. package/dist/cli.js.map +1 -1
  29. package/dist/configure/app.js +1005 -392
  30. package/dist/configure/app.js.map +1 -1
  31. package/dist/configure/index.js.map +1 -1
  32. package/dist/configure/types.d.ts +18 -0
  33. package/dist/core/agent/index.d.ts +13 -3
  34. package/dist/core/agent/index.js +83 -15
  35. package/dist/core/agent/index.js.map +1 -1
  36. package/dist/core/config.d.ts +319 -87
  37. package/dist/core/config.js +191 -218
  38. package/dist/core/config.js.map +1 -1
  39. package/dist/core/index.d.ts +1 -2
  40. package/dist/core/index.js +6 -7
  41. package/dist/core/index.js.map +1 -1
  42. package/dist/core/mcp/config.d.ts +7 -1
  43. package/dist/core/mcp/config.js +41 -8
  44. package/dist/core/mcp/config.js.map +1 -1
  45. package/dist/core/mcp/manager.js +1 -1
  46. package/dist/core/mcp/manager.js.map +1 -1
  47. package/dist/core/mcp/oauth/provider.js.map +1 -1
  48. package/dist/core/mcp/prefixed-mcp-tool.d.ts +0 -1
  49. package/dist/core/mcp/prefixed-mcp-tool.js +0 -2
  50. package/dist/core/mcp/prefixed-mcp-tool.js.map +1 -1
  51. package/dist/core/memory/index.d.ts +1 -0
  52. package/dist/core/memory/index.js +1 -0
  53. package/dist/core/memory/index.js.map +1 -1
  54. package/dist/core/memory/model-extractor.js.map +1 -0
  55. package/dist/core/models/anthropic.d.ts +3 -12
  56. package/dist/core/models/anthropic.js +20 -91
  57. package/dist/core/models/anthropic.js.map +1 -1
  58. package/dist/core/models/azure.d.ts +4 -0
  59. package/dist/core/models/azure.js +26 -0
  60. package/dist/core/models/azure.js.map +1 -0
  61. package/dist/core/models/bedrock.d.ts +3 -20
  62. package/dist/core/models/bedrock.js +22 -18
  63. package/dist/core/models/bedrock.js.map +1 -1
  64. package/dist/core/models/google.d.ts +2 -9
  65. package/dist/core/models/google.js +12 -31
  66. package/dist/core/models/google.js.map +1 -1
  67. package/dist/core/models/groq.d.ts +2 -9
  68. package/dist/core/models/groq.js +15 -25
  69. package/dist/core/models/groq.js.map +1 -1
  70. package/dist/core/models/index.d.ts +2 -1
  71. package/dist/core/models/index.js +3 -0
  72. package/dist/core/models/index.js.map +1 -1
  73. package/dist/core/models/minimax.d.ts +2 -0
  74. package/dist/core/models/minimax.js +11 -0
  75. package/dist/core/models/minimax.js.map +1 -0
  76. package/dist/core/models/moonshot.d.ts +2 -10
  77. package/dist/core/models/moonshot.js +23 -38
  78. package/dist/core/models/moonshot.js.map +1 -1
  79. package/dist/core/models/ollama/index.d.ts +2 -1
  80. package/dist/core/models/ollama/index.js +12 -5
  81. package/dist/core/models/ollama/index.js.map +1 -1
  82. package/dist/core/models/openai.d.ts +3 -4
  83. package/dist/core/models/openai.js +20 -3
  84. package/dist/core/models/openai.js.map +1 -1
  85. package/dist/core/models/openrouter.d.ts +4 -0
  86. package/dist/core/models/openrouter.js +23 -0
  87. package/dist/core/models/openrouter.js.map +1 -0
  88. package/dist/core/models/types.d.ts +346 -0
  89. package/dist/core/models/types.js +220 -0
  90. package/dist/core/models/types.js.map +1 -0
  91. package/dist/core/models/xai.d.ts +2 -9
  92. package/dist/core/models/xai.js +15 -25
  93. package/dist/core/models/xai.js.map +1 -1
  94. package/dist/core/modes/definitions.js +6 -2
  95. package/dist/core/modes/definitions.js.map +1 -1
  96. package/dist/core/prompts/agents/research.md +8 -4
  97. package/dist/core/prompts/agents/review.md +26 -0
  98. package/dist/core/prompts/agents/test-investigator.md +26 -0
  99. package/dist/core/prompts/modes/ask.md +1 -1
  100. package/dist/core/prompts/modes/plan.md +1 -1
  101. package/dist/core/prompts/runtime.js +2 -30
  102. package/dist/core/prompts/runtime.js.map +1 -1
  103. package/dist/core/prompts/static/subagents.md +12 -8
  104. package/dist/core/prompts/system.js +1 -1
  105. package/dist/core/prompts/system.js.map +1 -1
  106. package/dist/core/runtime-config.d.ts +16 -0
  107. package/dist/core/runtime-config.js +44 -0
  108. package/dist/core/runtime-config.js.map +1 -0
  109. package/dist/core/session-config.js +2 -1
  110. package/dist/core/session-config.js.map +1 -1
  111. package/dist/core/sessions/flat-file-storage.js.map +1 -0
  112. package/dist/core/sessions/lazy-session-manager.js.map +1 -0
  113. package/dist/core/sessions/list-cli-sessions.d.ts +12 -0
  114. package/dist/core/sessions/list-cli-sessions.js +174 -0
  115. package/dist/core/sessions/list-cli-sessions.js.map +1 -0
  116. package/dist/core/skills/built-in/hooman-config/SKILL.md +98 -201
  117. package/dist/core/state/tool-approvals.js +4 -3
  118. package/dist/core/state/tool-approvals.js.map +1 -1
  119. package/dist/core/subagents/index.d.ts +2 -3
  120. package/dist/core/subagents/index.js +2 -3
  121. package/dist/core/subagents/index.js.map +1 -1
  122. package/dist/core/subagents/registry.d.ts +22 -0
  123. package/dist/core/subagents/registry.js +96 -0
  124. package/dist/core/subagents/registry.js.map +1 -0
  125. package/dist/core/subagents/tool.d.ts +6 -14
  126. package/dist/core/subagents/tool.js +73 -53
  127. package/dist/core/subagents/tool.js.map +1 -1
  128. package/dist/core/tools/filesystem.js +2 -9
  129. package/dist/core/tools/filesystem.js.map +1 -1
  130. package/dist/core/tools/shell.js.map +1 -1
  131. package/dist/core/utils/discover-files.d.ts +12 -0
  132. package/dist/core/utils/discover-files.js +47 -0
  133. package/dist/core/utils/discover-files.js.map +1 -0
  134. package/dist/index.d.ts +8 -5
  135. package/dist/index.js +7 -3
  136. package/dist/index.js.map +1 -1
  137. package/package.json +2 -1
  138. package/dist/acp/meta/system-prompt.d.ts +0 -12
  139. package/dist/acp/meta/system-prompt.js +0 -41
  140. package/dist/acp/meta/system-prompt.js.map +0 -1
  141. package/dist/core/context/flat-file-storage.js.map +0 -1
  142. package/dist/core/context/index.d.ts +0 -22
  143. package/dist/core/context/index.js +0 -74
  144. package/dist/core/context/index.js.map +0 -1
  145. package/dist/core/context/lazy-session-manager.js.map +0 -1
  146. package/dist/core/context/model-extractor.js.map +0 -1
  147. package/dist/core/subagents/research.d.ts +0 -16
  148. package/dist/core/subagents/research.js +0 -58
  149. package/dist/core/subagents/research.js.map +0 -1
  150. package/dist/core/subagents/runner.d.ts +0 -37
  151. package/dist/core/subagents/runner.js +0 -273
  152. package/dist/core/subagents/runner.js.map +0 -1
  153. /package/dist/core/{context → memory}/model-extractor.d.ts +0 -0
  154. /package/dist/core/{context → memory}/model-extractor.js +0 -0
  155. /package/dist/core/{context → sessions}/flat-file-storage.d.ts +0 -0
  156. /package/dist/core/{context → sessions}/flat-file-storage.js +0 -0
  157. /package/dist/core/{context → sessions}/lazy-session-manager.d.ts +0 -0
  158. /package/dist/core/{context → sessions}/lazy-session-manager.js +0 -0
@@ -1,56 +1,17 @@
1
1
  import { existsSync, readFileSync, writeFileSync } from "node:fs";
2
2
  import { z } from "zod";
3
- /** LLM backend; extend as you add providers. */
4
- export var LlmProvider;
5
- (function (LlmProvider) {
6
- LlmProvider["Anthropic"] = "anthropic";
7
- LlmProvider["Bifrost"] = "bifrost";
8
- LlmProvider["Google"] = "google";
9
- LlmProvider["Groq"] = "groq";
10
- LlmProvider["Moonshot"] = "moonshot";
11
- LlmProvider["OpenAI"] = "openai";
12
- LlmProvider["Ollama"] = "ollama";
13
- LlmProvider["Bedrock"] = "bedrock";
14
- LlmProvider["TensorZero"] = "tensorzero";
15
- LlmProvider["Xai"] = "xai";
16
- })(LlmProvider || (LlmProvider = {}));
17
- const ResolvedLlmSchema = z.object({
18
- provider: z.nativeEnum(LlmProvider),
19
- model: z.string().min(1),
20
- params: z.record(z.string(), z.any()).default({}),
21
- });
22
- const ProviderSchema = z.object({
23
- provider: z.nativeEnum(LlmProvider),
24
- params: z.record(z.string(), z.any()).default({}),
25
- });
26
- const NamedProviderSchema = z.object({
27
- name: z.string().min(1),
28
- options: ProviderSchema,
29
- });
30
- const LlmSchema = z.object({
31
- provider: z.string().min(1),
32
- model: z.string().min(1),
33
- params: z.record(z.string(), z.any()).default({}),
34
- });
35
- const NamedLlmSchema = z.object({
36
- name: z.string().min(1),
37
- options: LlmSchema,
38
- default: z.boolean().default(false),
39
- });
40
- /** Partial compaction overrides from JSON; missing fields use defaults below. */
3
+ import { LlmProvider, NamedLlmConfigSchema, NamedProviderConfigSchema, } from "./models/types.js";
4
+ const SearchProviderSchema = z.enum([
5
+ "brave",
6
+ "exa",
7
+ "firecrawl",
8
+ "serper",
9
+ "tavily",
10
+ ]);
41
11
  const CompactionPartialSchema = z.object({
42
- /** Fraction of context to target after compaction (e.g. 0.75 = keep ~75% budget). */
43
12
  ratio: z.number().min(0).max(1).optional(),
44
- /** Minimum number of recent turns / message groups to preserve verbatim when compacting. */
45
13
  keep: z.number().int().nonnegative().optional(),
46
14
  });
47
- const DEFAULT_COMPACTION = { ratio: 0.75, keep: 5 };
48
- const DEFAULT_PROMPTS = {
49
- behaviour: true,
50
- communication: true,
51
- execution: true,
52
- guardrails: true,
53
- };
54
15
  const ToolTogglePartialSchema = z.object({
55
16
  enabled: z.boolean().optional(),
56
17
  });
@@ -60,45 +21,17 @@ const PromptsPartialSchema = z.object({
60
21
  execution: z.boolean().optional(),
61
22
  guardrails: z.boolean().optional(),
62
23
  });
63
- const AgentsPartialSchema = z.object({
24
+ const SubagentsPartialSchema = z.object({
64
25
  enabled: z.boolean().optional(),
65
- concurrency: z.number().int().min(1).optional(),
66
26
  });
67
- const SearchProviderSchema = z.enum([
68
- "brave",
69
- "exa",
70
- "firecrawl",
71
- "serper",
72
- "tavily",
73
- ]);
74
27
  const SearchPartialSchema = z.object({
75
28
  enabled: z.boolean().optional(),
76
29
  provider: SearchProviderSchema.optional(),
77
- brave: z
78
- .object({
79
- apiKey: z.string().min(1).optional(),
80
- })
81
- .optional(),
82
- exa: z
83
- .object({
84
- apiKey: z.string().min(1).optional(),
85
- })
86
- .optional(),
87
- firecrawl: z
88
- .object({
89
- apiKey: z.string().min(1).optional(),
90
- })
91
- .optional(),
92
- serper: z
93
- .object({
94
- apiKey: z.string().min(1).optional(),
95
- })
96
- .optional(),
97
- tavily: z
98
- .object({
99
- apiKey: z.string().min(1).optional(),
100
- })
101
- .optional(),
30
+ brave: z.object({ apiKey: z.string().min(1).optional() }).optional(),
31
+ exa: z.object({ apiKey: z.string().min(1).optional() }).optional(),
32
+ firecrawl: z.object({ apiKey: z.string().min(1).optional() }).optional(),
33
+ serper: z.object({ apiKey: z.string().min(1).optional() }).optional(),
34
+ tavily: z.object({ apiKey: z.string().min(1).optional() }).optional(),
102
35
  });
103
36
  const ToolsPartialSchema = z.object({
104
37
  todo: ToolTogglePartialSchema.optional(),
@@ -106,24 +39,28 @@ const ToolsPartialSchema = z.object({
106
39
  filesystem: ToolTogglePartialSchema.optional(),
107
40
  shell: ToolTogglePartialSchema.optional(),
108
41
  sleep: ToolTogglePartialSchema.optional(),
109
- agents: AgentsPartialSchema.optional(),
42
+ subagents: SubagentsPartialSchema.optional(),
110
43
  });
44
+ const DEFAULT_COMPACTION = { ratio: 0.75, keep: 5 };
45
+ const DEFAULT_PROMPTS = {
46
+ behaviour: true,
47
+ communication: true,
48
+ execution: true,
49
+ guardrails: true,
50
+ };
111
51
  const ConfigSchema = z
112
52
  .object({
113
53
  name: z.string().min(1),
114
- providers: z.array(NamedProviderSchema).nullish(),
115
- llms: z.array(NamedLlmSchema).min(1),
54
+ providers: z.array(NamedProviderConfigSchema),
55
+ llms: z.array(NamedLlmConfigSchema).min(1),
116
56
  search: SearchPartialSchema.nullish(),
117
57
  prompts: PromptsPartialSchema.nullish(),
118
58
  tools: ToolsPartialSchema.nullish(),
119
- compaction: CompactionPartialSchema.nullish().transform((c) => ({
120
- ratio: c?.ratio ?? DEFAULT_COMPACTION.ratio,
121
- keep: c?.keep ?? DEFAULT_COMPACTION.keep,
122
- })),
59
+ compaction: CompactionPartialSchema.nullish(),
123
60
  })
124
61
  .superRefine((input, ctx) => {
125
62
  const seenProviders = new Set();
126
- for (const provider of input.providers ?? []) {
63
+ for (const provider of input.providers) {
127
64
  if (seenProviders.has(provider.name)) {
128
65
  ctx.addIssue({
129
66
  code: z.ZodIssueCode.custom,
@@ -135,88 +72,75 @@ const ConfigSchema = z
135
72
  seenProviders.add(provider.name);
136
73
  }
137
74
  for (const llm of input.llms) {
138
- const ref = llm.options.provider;
139
- if (!seenProviders.has(ref)) {
75
+ if (!seenProviders.has(llm.provider)) {
140
76
  ctx.addIssue({
141
77
  code: z.ZodIssueCode.custom,
142
- message: `LLM "${llm.name}" references unknown provider "${ref}".`,
78
+ message: `LLM "${llm.name}" references unknown provider "${llm.provider}".`,
143
79
  path: ["llms"],
144
80
  });
145
81
  }
146
82
  }
147
83
  })
148
- .transform((input) => {
149
- return {
150
- name: input.name,
151
- providers: input.providers ?? [],
152
- llms: input.llms,
153
- search: {
154
- enabled: input.search?.enabled ?? false,
155
- provider: input.search?.provider ?? "brave",
156
- brave: {
157
- apiKey: input.search?.brave?.apiKey,
158
- },
159
- exa: {
160
- apiKey: input.search?.exa?.apiKey,
161
- },
162
- firecrawl: {
163
- apiKey: input.search?.firecrawl?.apiKey,
164
- },
165
- serper: {
166
- apiKey: input.search?.serper?.apiKey,
167
- },
168
- tavily: {
169
- apiKey: input.search?.tavily?.apiKey,
170
- },
171
- },
172
- prompts: {
173
- behaviour: input.prompts?.behaviour ?? DEFAULT_PROMPTS.behaviour,
174
- communication: input.prompts?.communication ?? DEFAULT_PROMPTS.communication,
175
- execution: input.prompts?.execution ?? DEFAULT_PROMPTS.execution,
176
- guardrails: input.prompts?.guardrails ?? DEFAULT_PROMPTS.guardrails,
177
- },
178
- tools: {
179
- todo: {
180
- enabled: input.tools?.todo?.enabled ?? true,
181
- },
182
- fetch: {
183
- enabled: input.tools?.fetch?.enabled ?? true,
184
- },
185
- filesystem: {
186
- enabled: input.tools?.filesystem?.enabled ?? true,
187
- },
188
- shell: {
189
- enabled: input.tools?.shell?.enabled ?? true,
190
- },
191
- sleep: {
192
- enabled: input.tools?.sleep?.enabled ?? true,
193
- },
194
- agents: {
195
- enabled: input.tools?.agents?.enabled ?? true,
196
- concurrency: input.tools?.agents?.concurrency ?? 3,
197
- },
84
+ .transform((input) => ({
85
+ name: input.name,
86
+ providers: input.providers,
87
+ llms: input.llms,
88
+ search: {
89
+ enabled: input.search?.enabled ?? false,
90
+ provider: input.search?.provider ?? "brave",
91
+ brave: { apiKey: input.search?.brave?.apiKey },
92
+ exa: { apiKey: input.search?.exa?.apiKey },
93
+ firecrawl: { apiKey: input.search?.firecrawl?.apiKey },
94
+ serper: { apiKey: input.search?.serper?.apiKey },
95
+ tavily: { apiKey: input.search?.tavily?.apiKey },
96
+ },
97
+ prompts: {
98
+ behaviour: input.prompts?.behaviour ?? DEFAULT_PROMPTS.behaviour,
99
+ communication: input.prompts?.communication ?? DEFAULT_PROMPTS.communication,
100
+ execution: input.prompts?.execution ?? DEFAULT_PROMPTS.execution,
101
+ guardrails: input.prompts?.guardrails ?? DEFAULT_PROMPTS.guardrails,
102
+ },
103
+ tools: {
104
+ todo: { enabled: input.tools?.todo?.enabled ?? true },
105
+ fetch: { enabled: input.tools?.fetch?.enabled ?? true },
106
+ filesystem: { enabled: input.tools?.filesystem?.enabled ?? true },
107
+ shell: { enabled: input.tools?.shell?.enabled ?? true },
108
+ sleep: { enabled: input.tools?.sleep?.enabled ?? true },
109
+ subagents: {
110
+ enabled: input.tools?.subagents?.enabled ?? true,
198
111
  },
199
- compaction: input.compaction,
200
- };
201
- });
112
+ },
113
+ compaction: {
114
+ ratio: input.compaction?.ratio ?? DEFAULT_COMPACTION.ratio,
115
+ keep: input.compaction?.keep ?? DEFAULT_COMPACTION.keep,
116
+ },
117
+ }));
118
+ const ConfigOverlaySchema = z
119
+ .object({
120
+ name: z.string().min(1).optional(),
121
+ providers: z.array(NamedProviderConfigSchema).optional(),
122
+ llms: z.array(NamedLlmConfigSchema).optional(),
123
+ search: SearchPartialSchema.optional(),
124
+ prompts: PromptsPartialSchema.optional(),
125
+ tools: ToolsPartialSchema.optional(),
126
+ compaction: CompactionPartialSchema.optional(),
127
+ })
128
+ .strict();
202
129
  const defaultConfigData = () => ({
203
130
  name: "Hooman",
204
131
  providers: [
205
132
  {
206
- name: "ollama-local",
207
- options: {
208
- provider: LlmProvider.Ollama,
209
- params: {},
210
- },
133
+ name: "Ollama",
134
+ provider: LlmProvider.Ollama,
135
+ options: {},
211
136
  },
212
137
  ],
213
138
  llms: [
214
139
  {
215
140
  name: "Default",
141
+ provider: "Ollama",
216
142
  options: {
217
- provider: "ollama-local",
218
143
  model: "gemma4:e4b",
219
- params: {},
220
144
  },
221
145
  default: true,
222
146
  },
@@ -232,74 +156,106 @@ const defaultConfigData = () => ({
232
156
  },
233
157
  prompts: { ...DEFAULT_PROMPTS },
234
158
  tools: {
235
- todo: {
236
- enabled: true,
237
- },
238
- fetch: {
239
- enabled: true,
240
- },
241
- filesystem: {
242
- enabled: true,
243
- },
244
- shell: {
245
- enabled: true,
246
- },
247
- sleep: {
248
- enabled: true,
249
- },
250
- agents: {
251
- enabled: true,
252
- concurrency: 2,
253
- },
159
+ todo: { enabled: true },
160
+ fetch: { enabled: true },
161
+ filesystem: { enabled: true },
162
+ shell: { enabled: true },
163
+ sleep: { enabled: true },
164
+ subagents: { enabled: true },
254
165
  },
255
166
  compaction: {
256
167
  ratio: 0.75,
257
168
  keep: 5,
258
169
  },
259
170
  });
171
+ function clone(value) {
172
+ return structuredClone(value);
173
+ }
174
+ function mergeNamedEntries(base, overlay) {
175
+ const merged = new Map(base.map((entry) => [entry.name, entry]));
176
+ for (const entry of overlay) {
177
+ merged.set(entry.name, entry);
178
+ }
179
+ return [...merged.values()];
180
+ }
181
+ function isPlainObject(value) {
182
+ return typeof value === "object" && value !== null && !Array.isArray(value);
183
+ }
184
+ function deepMerge(base, overlay) {
185
+ if (!isPlainObject(base) || !isPlainObject(overlay)) {
186
+ return overlay;
187
+ }
188
+ const result = { ...base };
189
+ for (const [key, value] of Object.entries(overlay)) {
190
+ if (value === undefined) {
191
+ continue;
192
+ }
193
+ const current = result[key];
194
+ if (isPlainObject(current) && isPlainObject(value)) {
195
+ result[key] = deepMerge(current, value);
196
+ continue;
197
+ }
198
+ result[key] = value;
199
+ }
200
+ return result;
201
+ }
202
+ function applyOverlay(base, overlay) {
203
+ const { providers, llms, ...remaining } = overlay;
204
+ const mergedBase = deepMerge(base, remaining);
205
+ return {
206
+ ...mergedBase,
207
+ providers: providers
208
+ ? mergeNamedEntries(mergedBase.providers, providers)
209
+ : mergedBase.providers,
210
+ llms: llms ? mergeNamedEntries(mergedBase.llms, llms) : mergedBase.llms,
211
+ };
212
+ }
213
+ function formatLoadError(path, error) {
214
+ const message = error instanceof Error ? error.message : "Unknown configuration error.";
215
+ return new Error(`Failed to load config from "${path}": ${message}`, {
216
+ cause: error instanceof Error ? error : undefined,
217
+ });
218
+ }
219
+ export { LlmProvider };
260
220
  export class Config {
261
221
  data;
262
222
  path;
263
- constructor(path) {
223
+ overlayPaths;
224
+ constructor(path, options) {
264
225
  this.path = path;
226
+ this.overlayPaths = [...(options?.overlayPaths ?? [])];
265
227
  this.reload();
266
228
  }
267
229
  get name() {
268
230
  return this.data.name;
269
231
  }
270
232
  resolveNamedLlm(entry) {
271
- const matched = this.data.providers.find((p) => p.name === entry.options.provider);
233
+ const matched = this.data.providers.find((provider) => provider.name === entry.provider);
272
234
  if (!matched) {
273
- throw new Error(`LLM "${entry.name}" references unknown provider "${entry.options.provider}".`);
235
+ throw new Error(`LLM "${entry.name}" references unknown provider "${entry.provider}".`);
274
236
  }
275
237
  return {
276
238
  name: entry.name,
239
+ provider: matched.provider,
240
+ providerOptions: clone(matched.options),
241
+ llmOptions: clone(entry.options),
277
242
  default: entry.default,
278
- options: {
279
- provider: matched.options.provider,
280
- model: entry.options.model,
281
- params: {
282
- ...matched.options.params,
283
- ...entry.options.params,
284
- },
285
- },
286
243
  };
287
244
  }
288
245
  get providers() {
289
- return this.data.providers.map((provider) => ({
290
- ...provider,
291
- options: {
292
- ...provider.options,
293
- params: { ...provider.options.params },
294
- },
295
- }));
246
+ return clone(this.data.providers);
296
247
  }
297
248
  get llm() {
298
- const found = this.data.llms.find((m) => m.default) ?? this.data.llms[0];
299
- return { ...this.resolveNamedLlm(found).options };
249
+ const found = this.data.llms.find((entry) => entry.default) ?? this.data.llms[0];
250
+ const resolved = this.resolveNamedLlm(found);
251
+ return {
252
+ provider: resolved.provider,
253
+ providerOptions: resolved.providerOptions,
254
+ llmOptions: resolved.llmOptions,
255
+ };
300
256
  }
301
257
  get llms() {
302
- return this.data.llms.map((m) => ({ ...m, options: { ...m.options } }));
258
+ return clone(this.data.llms);
303
259
  }
304
260
  get resolvedLlms() {
305
261
  return this.data.llms.map((entry) => this.resolveNamedLlm(entry));
@@ -309,41 +265,59 @@ export class Config {
309
265
  return found ? this.resolveNamedLlm(found) : undefined;
310
266
  }
311
267
  get search() {
312
- return {
313
- ...this.data.search,
314
- brave: { ...this.data.search.brave },
315
- exa: { ...this.data.search.exa },
316
- firecrawl: { ...this.data.search.firecrawl },
317
- serper: { ...this.data.search.serper },
318
- tavily: { ...this.data.search.tavily },
319
- };
268
+ return clone(this.data.search);
320
269
  }
321
270
  get prompts() {
322
- return { ...this.data.prompts };
271
+ return clone(this.data.prompts);
323
272
  }
324
273
  get tools() {
325
- return {
326
- ...this.data.tools,
327
- todo: { ...this.data.tools.todo },
328
- fetch: { ...this.data.tools.fetch },
329
- filesystem: { ...this.data.tools.filesystem },
330
- shell: { ...this.data.tools.shell },
331
- sleep: { ...this.data.tools.sleep },
332
- agents: { ...this.data.tools.agents },
333
- };
274
+ return clone(this.data.tools);
334
275
  }
335
276
  get compaction() {
336
- return this.data.compaction;
277
+ return clone(this.data.compaction);
337
278
  }
338
- readJson() {
339
- if (!existsSync(this.path)) {
340
- return defaultConfigData();
279
+ readJson(path, fallback) {
280
+ if (!existsSync(path)) {
281
+ return fallback;
282
+ }
283
+ try {
284
+ return JSON.parse(readFileSync(path, "utf8"));
285
+ }
286
+ catch (error) {
287
+ throw formatLoadError(path, error);
288
+ }
289
+ }
290
+ readOverlay(path) {
291
+ try {
292
+ return ConfigOverlaySchema.parse(this.readJson(path, {}));
293
+ }
294
+ catch (error) {
295
+ throw formatLoadError(path, error);
341
296
  }
342
- return JSON.parse(readFileSync(this.path, "utf8"));
343
297
  }
344
298
  reload() {
345
299
  const wasMissing = !existsSync(this.path);
346
- this.data = ConfigSchema.parse(this.readJson());
300
+ let resolved;
301
+ try {
302
+ resolved = ConfigSchema.parse(this.readJson(this.path, defaultConfigData()));
303
+ }
304
+ catch (error) {
305
+ throw formatLoadError(this.path, error);
306
+ }
307
+ for (const overlayPath of this.overlayPaths) {
308
+ resolved = applyOverlay(resolved, this.readOverlay(overlayPath));
309
+ }
310
+ try {
311
+ this.data = ConfigSchema.parse(resolved);
312
+ }
313
+ catch (error) {
314
+ const origins = [this.path, ...this.overlayPaths].join(", ");
315
+ throw new Error(`Failed to validate merged config (sources: ${origins}): ${error instanceof Error
316
+ ? error.message
317
+ : "Unknown configuration error."}`, {
318
+ cause: error instanceof Error ? error : undefined,
319
+ });
320
+ }
347
321
  if (wasMissing) {
348
322
  this.persist();
349
323
  }
@@ -352,8 +326,7 @@ export class Config {
352
326
  writeFileSync(this.path, JSON.stringify(this.data, null, 2), "utf8");
353
327
  }
354
328
  update(partial) {
355
- const updated = { ...this.data, ...partial };
356
- this.data = ConfigSchema.parse(updated);
329
+ this.data = ConfigSchema.parse({ ...this.data, ...partial });
357
330
  this.persist();
358
331
  }
359
332
  }
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/core/config.ts"],"names":[],"mappings":"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"}
@@ -9,7 +9,7 @@ export type BootstrapMeta = {
9
9
  /** When true, seeds `hooman.yolo` on the agent appState (auto-approve tools). */
10
10
  yolo?: boolean;
11
11
  /** Seeds session mode on agent appState (`agent`, `ask`, or `plan`). */
12
- sessionMode?: SessionMode;
12
+ mode?: SessionMode;
13
13
  interventions?: InterventionHandler[];
14
14
  createInterventions?: (deps: {
15
15
  manager: McpConnectionManager;
@@ -18,7 +18,6 @@ export type BootstrapMeta = {
18
18
  };
19
19
  export type BootstrapMode = "default" | "daemon" | "acp";
20
20
  export type AcpMeta = {
21
- systemPrompt?: string;
22
21
  mcpServers?: NamedMcpTransport[];
23
22
  };
24
23
  export declare function bootstrap(mode: BootstrapMode, meta: BootstrapMeta, print?: boolean, config?: Config): Promise<{
@@ -1,11 +1,11 @@
1
- import { Config } from "./config.js";
2
1
  import { create as createAgent } from "./agent/index.js";
3
- import { createMcpConfig, createMcpManager, } from "./mcp/index.js";
2
+ import { createMcpManager, } from "./mcp/index.js";
3
+ import { createRuntimeConfig, createRuntimeMcpConfig, } from "./runtime-config.js";
4
4
  import { createSkillsRegistry } from "./skills/index.js";
5
5
  import { system as createSystemPrompt } from "./prompts/index.js";
6
- import { basePath, configJsonPath, instructionsMdPath, mcpJsonPath, } from "./utils/paths.js";
7
- export async function bootstrap(mode, meta, print = false, config = new Config(configJsonPath())) {
8
- const mcpConfig = createMcpConfig(mcpJsonPath());
6
+ import { basePath, instructionsMdPath } from "./utils/paths.js";
7
+ export async function bootstrap(mode, meta, print = false, config = createRuntimeConfig()) {
8
+ const mcpConfig = createRuntimeMcpConfig();
9
9
  const mcpManager = createMcpManager(mcpConfig, mode === "acp", meta.acp?.mcpServers ?? []);
10
10
  const mcp = { config: mcpConfig, manager: mcpManager };
11
11
  const registry = createSkillsRegistry(basePath());
@@ -17,9 +17,8 @@ export async function bootstrap(mode, meta, print = false, config = new Config(c
17
17
  const agent = await createAgent(config, system, mcp, print, {
18
18
  userId: meta?.userId ?? meta?.sessionId,
19
19
  sessionId: meta?.sessionId,
20
- systemPrompt: meta?.acp?.systemPrompt,
21
20
  yolo: meta?.yolo,
22
- sessionMode: meta?.sessionMode,
21
+ mode: meta?.mode,
23
22
  interventions,
24
23
  });
25
24
  return { config, agent, mcp, registry };
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AACrC,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EACL,eAAe,EACf,gBAAgB,GAIjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,MAAM,IAAI,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EACL,QAAQ,EACR,cAAc,EACd,kBAAkB,EAClB,WAAW,GACZ,MAAM,kBAAkB,CAAC;AAuB1B,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAmB,EACnB,IAAmB,EACnB,QAAiB,KAAK,EACtB,SAAiB,IAAI,MAAM,CAAC,cAAc,EAAE,CAAC;IAO7C,MAAM,SAAS,GAAG,eAAe,CAAC,WAAW,EAAE,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,gBAAgB,CACjC,SAAS,EACT,IAAI,KAAK,KAAK,EACd,IAAI,CAAC,GAAG,EAAE,UAAU,IAAI,EAAE,CAC3B,CAAC;IACF,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACvD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG;QACpB,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;KAC/D,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;QAC1D,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,SAAS;QACvC,SAAS,EAAE,IAAI,EAAE,SAAS;QAC1B,YAAY,EAAE,IAAI,EAAE,GAAG,EAAE,YAAY;QACrC,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,WAAW,EAAE,IAAI,EAAE,WAAW;QAC9B,aAAa;KACd,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/core/index.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,MAAM,IAAI,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAEzD,OAAO,EACL,gBAAgB,GAIjB,MAAM,gBAAgB,CAAC;AACxB,OAAO,EACL,mBAAmB,EACnB,sBAAsB,GACvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEzD,OAAO,EAAE,MAAM,IAAI,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAClE,OAAO,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAsBhE,MAAM,CAAC,KAAK,UAAU,SAAS,CAC7B,IAAmB,EACnB,IAAmB,EACnB,QAAiB,KAAK,EACtB,SAAiB,mBAAmB,EAAE;IAOtC,MAAM,SAAS,GAAG,sBAAsB,EAAE,CAAC;IAC3C,MAAM,UAAU,GAAG,gBAAgB,CACjC,SAAS,EACT,IAAI,KAAK,KAAK,EACd,IAAI,CAAC,GAAG,EAAE,UAAU,IAAI,EAAE,CAC3B,CAAC;IACF,MAAM,GAAG,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC;IACvD,MAAM,QAAQ,GAAG,oBAAoB,CAAC,QAAQ,EAAE,CAAC,CAAC;IAClD,MAAM,MAAM,GAAG,MAAM,kBAAkB,CAAC,kBAAkB,EAAE,EAAE,MAAM,EAAE,IAAI,CAAC,CAAC;IAC5E,MAAM,aAAa,GAAG;QACpB,GAAG,CAAC,IAAI,CAAC,aAAa,IAAI,EAAE,CAAC;QAC7B,GAAG,CAAC,IAAI,CAAC,mBAAmB,EAAE,CAAC,EAAE,OAAO,EAAE,UAAU,EAAE,CAAC,IAAI,EAAE,CAAC;KAC/D,CAAC;IACF,MAAM,KAAK,GAAG,MAAM,WAAW,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,EAAE,KAAK,EAAE;QAC1D,MAAM,EAAE,IAAI,EAAE,MAAM,IAAI,IAAI,EAAE,SAAS;QACvC,SAAS,EAAE,IAAI,EAAE,SAAS;QAC1B,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,IAAI,EAAE,IAAI,EAAE,IAAI;QAChB,aAAa;KACd,CAAC,CAAC;IACH,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,GAAG,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC"}
@@ -46,6 +46,9 @@ declare const McpServersFileSchema: z.ZodObject<{
46
46
  }, z.core.$strip>], "type">>>;
47
47
  }, z.core.$strip>;
48
48
  export type McpServersFile = z.infer<typeof McpServersFileSchema>;
49
+ export type ConfigOptions = {
50
+ overlayPaths?: readonly string[];
51
+ };
49
52
  /** One named MCP transport from the config file. */
50
53
  export type NamedMcpTransport = {
51
54
  name: string;
@@ -56,9 +59,12 @@ export type NamedMcpTransport = {
56
59
  */
57
60
  export declare class Config {
58
61
  private readonly path;
62
+ private readonly overlayPaths;
59
63
  private servers;
60
- constructor(path: string);
64
+ constructor(path: string, options?: ConfigOptions);
61
65
  private readJson;
66
+ private parse;
67
+ private mergedServers;
62
68
  /** Reload servers from disk (overwrites unsaved in-memory changes). */
63
69
  reload(): void;
64
70
  /** All configured servers, stable sort by name. */