hoomanjs 1.29.2 → 1.31.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 (292) hide show
  1. package/README.md +216 -69
  2. package/dist/acp/acp-agent.d.ts +5 -5
  3. package/dist/acp/acp-agent.js +55 -54
  4. package/dist/acp/acp-agent.js.map +1 -1
  5. package/dist/acp/approvals.d.ts +3 -3
  6. package/dist/acp/approvals.js +73 -115
  7. package/dist/acp/approvals.js.map +1 -1
  8. package/dist/acp/sessions/options.js +11 -25
  9. package/dist/acp/sessions/options.js.map +1 -1
  10. package/dist/acp/utils/tool-kind.js +1 -5
  11. package/dist/acp/utils/tool-kind.js.map +1 -1
  12. package/dist/chat/app.d.ts +5 -1
  13. package/dist/chat/app.js +469 -234
  14. package/dist/chat/app.js.map +1 -1
  15. package/dist/chat/approvals.d.ts +4 -3
  16. package/dist/chat/approvals.js +11 -45
  17. package/dist/chat/approvals.js.map +1 -1
  18. package/dist/chat/components/BottomChrome.d.ts +52 -0
  19. package/dist/chat/components/BottomChrome.js +12 -0
  20. package/dist/chat/components/BottomChrome.js.map +1 -0
  21. package/dist/chat/components/ChatMessage.d.ts +2 -2
  22. package/dist/chat/components/ChatMessage.js +5 -6
  23. package/dist/chat/components/ChatMessage.js.map +1 -1
  24. package/dist/chat/components/ChromePicker.d.ts +17 -0
  25. package/dist/chat/components/ChromePicker.js +35 -0
  26. package/dist/chat/components/ChromePicker.js.map +1 -0
  27. package/dist/chat/components/EmptyChatBanner.js +2 -3
  28. package/dist/chat/components/EmptyChatBanner.js.map +1 -1
  29. package/dist/chat/components/StatusBar.d.ts +1 -2
  30. package/dist/chat/components/StatusBar.js +8 -5
  31. package/dist/chat/components/StatusBar.js.map +1 -1
  32. package/dist/chat/components/ThoughtEvent.d.ts +7 -0
  33. package/dist/chat/components/ThoughtEvent.js +30 -0
  34. package/dist/chat/components/ThoughtEvent.js.map +1 -0
  35. package/dist/chat/components/TodoPanel.js +52 -2
  36. package/dist/chat/components/TodoPanel.js.map +1 -1
  37. package/dist/chat/components/ToolEvent.js +1 -1
  38. package/dist/chat/components/ToolEvent.js.map +1 -1
  39. package/dist/chat/components/Transcript.d.ts +11 -2
  40. package/dist/chat/components/Transcript.js +78 -4
  41. package/dist/chat/components/Transcript.js.map +1 -1
  42. package/dist/chat/components/markdown/BlockRenderer.js +7 -7
  43. package/dist/chat/components/markdown/BlockRenderer.js.map +1 -1
  44. package/dist/chat/components/markdown/MarkdownMessage.js +1 -1
  45. package/dist/chat/components/markdown/MarkdownMessage.js.map +1 -1
  46. package/dist/chat/components/shared.js +2 -0
  47. package/dist/chat/components/shared.js.map +1 -1
  48. package/dist/chat/index.d.ts +4 -0
  49. package/dist/chat/index.js +21 -4
  50. package/dist/chat/index.js.map +1 -1
  51. package/dist/chat/steering.d.ts +20 -0
  52. package/dist/chat/steering.js +67 -0
  53. package/dist/chat/steering.js.map +1 -0
  54. package/dist/chat/types.d.ts +5 -1
  55. package/dist/cli.js +91 -13
  56. package/dist/cli.js.map +1 -1
  57. package/dist/configure/app.d.ts +1 -1
  58. package/dist/configure/app.js +581 -303
  59. package/dist/configure/app.js.map +1 -1
  60. package/dist/configure/components/MenuScreen.d.ts +4 -2
  61. package/dist/configure/components/MenuScreen.js +33 -6
  62. package/dist/configure/components/MenuScreen.js.map +1 -1
  63. package/dist/configure/components/SelectMenuItem.d.ts +1 -0
  64. package/dist/configure/components/SelectMenuItem.js +19 -10
  65. package/dist/configure/components/SelectMenuItem.js.map +1 -1
  66. package/dist/configure/index.js +4 -2
  67. package/dist/configure/index.js.map +1 -1
  68. package/dist/configure/types.d.ts +14 -12
  69. package/dist/configure/utils.d.ts +2 -0
  70. package/dist/configure/utils.js +21 -2
  71. package/dist/configure/utils.js.map +1 -1
  72. package/dist/core/agent/index.d.ts +3 -3
  73. package/dist/core/agent/index.js +26 -29
  74. package/dist/core/agent/index.js.map +1 -1
  75. package/dist/core/agent/mode-aware-tool-registry.js +2 -1
  76. package/dist/core/agent/mode-aware-tool-registry.js.map +1 -1
  77. package/dist/core/approvals/intervention.d.ts +34 -0
  78. package/dist/core/approvals/intervention.js +94 -0
  79. package/dist/core/approvals/intervention.js.map +1 -0
  80. package/dist/core/config.d.ts +49 -28
  81. package/dist/core/config.js +85 -26
  82. package/dist/core/config.js.map +1 -1
  83. package/dist/core/context/index.d.ts +11 -2
  84. package/dist/core/context/index.js +54 -4
  85. package/dist/core/context/index.js.map +1 -1
  86. package/dist/core/context/model-extractor.d.ts +13 -0
  87. package/dist/core/context/model-extractor.js +98 -0
  88. package/dist/core/context/model-extractor.js.map +1 -0
  89. package/dist/core/index.d.ts +6 -2
  90. package/dist/core/index.js +6 -1
  91. package/dist/core/index.js.map +1 -1
  92. package/dist/core/mcp/config.d.ts +28 -0
  93. package/dist/core/mcp/index.d.ts +5 -3
  94. package/dist/core/mcp/index.js +4 -2
  95. package/dist/core/mcp/index.js.map +1 -1
  96. package/dist/core/mcp/manager.d.ts +14 -1
  97. package/dist/core/mcp/manager.js +76 -4
  98. package/dist/core/mcp/manager.js.map +1 -1
  99. package/dist/core/mcp/oauth/callback-server.d.ts +16 -0
  100. package/dist/core/mcp/oauth/callback-server.js +134 -0
  101. package/dist/core/mcp/oauth/callback-server.js.map +1 -0
  102. package/dist/core/mcp/oauth/identity.d.ts +9 -0
  103. package/dist/core/mcp/oauth/identity.js +31 -0
  104. package/dist/core/mcp/oauth/identity.js.map +1 -0
  105. package/dist/core/mcp/oauth/index.d.ts +11 -0
  106. package/dist/core/mcp/oauth/index.js +15 -0
  107. package/dist/core/mcp/oauth/index.js.map +1 -0
  108. package/dist/core/mcp/oauth/provider.d.ts +43 -0
  109. package/dist/core/mcp/oauth/provider.js +203 -0
  110. package/dist/core/mcp/oauth/provider.js.map +1 -0
  111. package/dist/core/mcp/oauth/service.d.ts +29 -0
  112. package/dist/core/mcp/oauth/service.js +139 -0
  113. package/dist/core/mcp/oauth/service.js.map +1 -0
  114. package/dist/core/mcp/oauth/store.d.ts +14 -0
  115. package/dist/core/mcp/oauth/store.js +86 -0
  116. package/dist/core/mcp/oauth/store.js.map +1 -0
  117. package/dist/core/mcp/oauth/types.d.ts +87 -0
  118. package/dist/core/mcp/oauth/types.js +45 -0
  119. package/dist/core/mcp/oauth/types.js.map +1 -0
  120. package/dist/core/mcp/types.d.ts +56 -0
  121. package/dist/core/mcp/types.js +3 -0
  122. package/dist/core/mcp/types.js.map +1 -1
  123. package/dist/core/memory/file-store.d.ts +24 -0
  124. package/dist/core/memory/file-store.js +151 -0
  125. package/dist/core/memory/file-store.js.map +1 -0
  126. package/dist/core/memory/index.d.ts +2 -5
  127. package/dist/core/memory/index.js +2 -3
  128. package/dist/core/memory/index.js.map +1 -1
  129. package/dist/core/memory/runtime.d.ts +4 -0
  130. package/dist/core/memory/runtime.js +37 -0
  131. package/dist/core/memory/runtime.js.map +1 -0
  132. package/dist/core/models/anthropic.js +24 -1
  133. package/dist/core/models/anthropic.js.map +1 -1
  134. package/dist/core/models/moonshot.js +33 -1
  135. package/dist/core/models/moonshot.js.map +1 -1
  136. package/dist/core/modes/definitions.d.ts +19 -0
  137. package/dist/core/modes/definitions.js +99 -0
  138. package/dist/core/modes/definitions.js.map +1 -0
  139. package/dist/core/modes/index.d.ts +3 -0
  140. package/dist/core/modes/index.js +4 -0
  141. package/dist/core/modes/index.js.map +1 -0
  142. package/dist/core/modes/registry.d.ts +9 -0
  143. package/dist/core/modes/registry.js +57 -0
  144. package/dist/core/modes/registry.js.map +1 -0
  145. package/dist/core/modes/schema.d.ts +5 -0
  146. package/dist/core/modes/schema.js +6 -0
  147. package/dist/core/modes/schema.js.map +1 -0
  148. package/dist/core/prompts/agents/research.md +8 -8
  149. package/dist/core/prompts/bundled.d.ts +3 -0
  150. package/dist/core/prompts/bundled.js +14 -0
  151. package/dist/core/prompts/bundled.js.map +1 -0
  152. package/dist/core/prompts/environment.d.ts +0 -1
  153. package/dist/core/prompts/environment.js +0 -2
  154. package/dist/core/prompts/environment.js.map +1 -1
  155. package/dist/core/prompts/index.d.ts +1 -4
  156. package/dist/core/prompts/index.js +1 -7
  157. package/dist/core/prompts/index.js.map +1 -1
  158. package/dist/core/prompts/modes/agent.md +3 -0
  159. package/dist/core/prompts/modes/ask.md +5 -3
  160. package/dist/core/prompts/modes/plan.md +2 -2
  161. package/dist/core/prompts/runtime.d.ts +10 -0
  162. package/dist/core/prompts/runtime.js +136 -0
  163. package/dist/core/prompts/runtime.js.map +1 -0
  164. package/dist/core/prompts/session-mode-appendix.d.ts +3 -9
  165. package/dist/core/prompts/session-mode-appendix.js +32 -69
  166. package/dist/core/prompts/session-mode-appendix.js.map +1 -1
  167. package/dist/core/prompts/static/environment.md +2 -2
  168. package/dist/core/prompts/static/filesystem.md +2 -0
  169. package/dist/core/prompts/static/init.md +25 -0
  170. package/dist/core/prompts/static/memory.md +9 -123
  171. package/dist/core/prompts/static/planning.md +1 -1
  172. package/dist/core/prompts/static/skills.md +6 -5
  173. package/dist/core/prompts/static/subagents.md +2 -2
  174. package/dist/core/prompts/static/web-search.md +2 -1
  175. package/dist/core/prompts/system.js +12 -29
  176. package/dist/core/prompts/system.js.map +1 -1
  177. package/dist/core/skills/built-in/hooman-config/SKILL.md +105 -32
  178. package/dist/core/skills/built-in/hooman-skills/SKILL.md +1 -1
  179. package/dist/core/skills/index.d.ts +1 -0
  180. package/dist/core/skills/index.js +1 -0
  181. package/dist/core/skills/index.js.map +1 -1
  182. package/dist/core/skills/plugin.d.ts +7 -0
  183. package/dist/core/skills/plugin.js +40 -0
  184. package/dist/core/skills/plugin.js.map +1 -0
  185. package/dist/core/state/agent-app-state.d.ts +1 -1
  186. package/dist/core/state/agent-app-state.js +1 -1
  187. package/dist/core/state/session-mode.d.ts +2 -9
  188. package/dist/core/state/session-mode.js +4 -12
  189. package/dist/core/state/session-mode.js.map +1 -1
  190. package/dist/core/state/tool-approvals.d.ts +4 -8
  191. package/dist/core/state/tool-approvals.js +14 -76
  192. package/dist/core/state/tool-approvals.js.map +1 -1
  193. package/dist/core/subagents/index.d.ts +3 -0
  194. package/dist/core/subagents/index.js +4 -0
  195. package/dist/core/subagents/index.js.map +1 -0
  196. package/dist/core/subagents/research.d.ts +16 -0
  197. package/dist/core/subagents/research.js +58 -0
  198. package/dist/core/subagents/research.js.map +1 -0
  199. package/dist/core/{agents → subagents}/runner.d.ts +6 -5
  200. package/dist/core/{agents → subagents}/runner.js +8 -10
  201. package/dist/core/subagents/runner.js.map +1 -0
  202. package/dist/core/{agents/tools.d.ts → subagents/tool.d.ts} +6 -6
  203. package/dist/core/{agents/tools.js → subagents/tool.js} +14 -16
  204. package/dist/core/subagents/tool.js.map +1 -0
  205. package/dist/core/tools/filesystem.d.ts +1 -0
  206. package/dist/core/tools/filesystem.js +38 -3
  207. package/dist/core/tools/filesystem.js.map +1 -1
  208. package/dist/core/tools/index.d.ts +1 -1
  209. package/dist/core/tools/index.js +1 -1
  210. package/dist/core/tools/index.js.map +1 -1
  211. package/dist/core/tools/plan.js +2 -6
  212. package/dist/core/tools/plan.js.map +1 -1
  213. package/dist/core/tools/time.js +1 -1
  214. package/dist/core/tools/time.js.map +1 -1
  215. package/dist/core/utils/browser.d.ts +1 -0
  216. package/dist/core/utils/browser.js +25 -0
  217. package/dist/core/utils/browser.js.map +1 -0
  218. package/dist/core/utils/paths.d.ts +2 -4
  219. package/dist/core/utils/paths.js +2 -4
  220. package/dist/core/utils/paths.js.map +1 -1
  221. package/dist/daemon/approvals.d.ts +2 -2
  222. package/dist/daemon/approvals.js +51 -56
  223. package/dist/daemon/approvals.js.map +1 -1
  224. package/dist/daemon/index.js +9 -6
  225. package/dist/daemon/index.js.map +1 -1
  226. package/dist/exec/approvals.d.ts +2 -4
  227. package/dist/exec/approvals.js +16 -48
  228. package/dist/exec/approvals.js.map +1 -1
  229. package/dist/index.d.ts +13 -18
  230. package/dist/index.js +9 -11
  231. package/dist/index.js.map +1 -1
  232. package/package.json +5 -18
  233. package/dist/chat/components/ScrollView.d.ts +0 -106
  234. package/dist/chat/components/ScrollView.js +0 -80
  235. package/dist/chat/components/ScrollView.js.map +0 -1
  236. package/dist/chat/components/TranscriptViewport.d.ts +0 -9
  237. package/dist/chat/components/TranscriptViewport.js +0 -124
  238. package/dist/chat/components/TranscriptViewport.js.map +0 -1
  239. package/dist/core/agents/definitions.d.ts +0 -12
  240. package/dist/core/agents/definitions.js +0 -20
  241. package/dist/core/agents/definitions.js.map +0 -1
  242. package/dist/core/agents/index.d.ts +0 -4
  243. package/dist/core/agents/index.js +0 -5
  244. package/dist/core/agents/index.js.map +0 -1
  245. package/dist/core/agents/registry.d.ts +0 -5
  246. package/dist/core/agents/registry.js +0 -84
  247. package/dist/core/agents/registry.js.map +0 -1
  248. package/dist/core/agents/runner.js.map +0 -1
  249. package/dist/core/agents/tools.js.map +0 -1
  250. package/dist/core/inference/embedder.d.ts +0 -26
  251. package/dist/core/inference/embedder.js +0 -85
  252. package/dist/core/inference/embedder.js.map +0 -1
  253. package/dist/core/inference/index.d.ts +0 -9
  254. package/dist/core/inference/index.js +0 -13
  255. package/dist/core/inference/index.js.map +0 -1
  256. package/dist/core/inference/loader.d.ts +0 -16
  257. package/dist/core/inference/loader.js +0 -129
  258. package/dist/core/inference/loader.js.map +0 -1
  259. package/dist/core/inference/reranker.d.ts +0 -28
  260. package/dist/core/inference/reranker.js +0 -66
  261. package/dist/core/inference/reranker.js.map +0 -1
  262. package/dist/core/memory/brain.d.ts +0 -25
  263. package/dist/core/memory/brain.js +0 -137
  264. package/dist/core/memory/brain.js.map +0 -1
  265. package/dist/core/memory/database.d.ts +0 -4
  266. package/dist/core/memory/database.js +0 -87
  267. package/dist/core/memory/database.js.map +0 -1
  268. package/dist/core/memory/tools.d.ts +0 -16
  269. package/dist/core/memory/tools.js +0 -110
  270. package/dist/core/memory/tools.js.map +0 -1
  271. package/dist/core/memory/types.d.ts +0 -11
  272. package/dist/core/memory/types.js +0 -2
  273. package/dist/core/memory/types.js.map +0 -1
  274. package/dist/core/prompts/skills.d.ts +0 -15
  275. package/dist/core/prompts/skills.js +0 -92
  276. package/dist/core/prompts/skills.js.map +0 -1
  277. package/dist/core/prompts/static/wiki.md +0 -25
  278. package/dist/core/wiki/converters.d.ts +0 -12
  279. package/dist/core/wiki/converters.js +0 -73
  280. package/dist/core/wiki/converters.js.map +0 -1
  281. package/dist/core/wiki/database.d.ts +0 -39
  282. package/dist/core/wiki/database.js +0 -177
  283. package/dist/core/wiki/database.js.map +0 -1
  284. package/dist/core/wiki/index.d.ts +0 -7
  285. package/dist/core/wiki/index.js +0 -5
  286. package/dist/core/wiki/index.js.map +0 -1
  287. package/dist/core/wiki/storage.d.ts +0 -38
  288. package/dist/core/wiki/storage.js +0 -206
  289. package/dist/core/wiki/storage.js.map +0 -1
  290. package/dist/core/wiki/tools.d.ts +0 -5
  291. package/dist/core/wiki/tools.js +0 -32
  292. package/dist/core/wiki/tools.js.map +0 -1
@@ -1,125 +1,11 @@
1
- ## Memory
1
+ Extract durable facts worth remembering across future conversations from a transcript.
2
2
 
3
- You have long-term memory tools:
3
+ Use the `remember` tool once for each discrete fact worth saving.
4
+ Each tool call must match the full ExtractionResult shape: `content` plus optional `metadata`.
4
5
 
5
- - `memory_add(scope, content, type, metadata?)`
6
- - `memory_search(scope, query, types?, k?)`
7
- - `memory_archive(scope, id, reason?)`
8
-
9
- Use memory to preserve durable context across sessions. Do not treat memory as source of truth over current user instructions.
10
-
11
- ### Scopes
12
-
13
- - `user`: useful across many repositories/sessions for the same user.
14
- - `project`: specific to the current repository or working directory.
15
- - Rule of thumb:
16
- - If it helps only this codebase/task flow -> `project`
17
- - If it reflects stable personal preference/style/rule across projects -> `user`
18
-
19
- ### Types
20
-
21
- - `fact`: stable concrete info
22
- - `observation`: pattern noticed from recent work
23
- - `preference`: how user wants things done
24
- - `task`: ongoing objective or follow-up commitment
25
-
26
- ### Required Habit After Successful Work
27
-
28
- After each successful, non-trivial turn, add one very concise `project` memory capturing:
29
-
30
- - what was done
31
- - how it was done
32
- - why that approach was used
33
-
34
- Keep this to 1-2 short sentences total.
35
-
36
- If, during the same turn, you identify something broadly reusable across projects (preference, style, recurring rule, communication preference), also add a separate `user` memory.
37
-
38
- ### What To Store
39
-
40
- Store only information that is likely to matter later:
41
-
42
- - decisions, constraints, conventions, trade-offs
43
- - user preferences that affect future behavior
44
- - durable troubleshooting findings and known pitfalls
45
- - active tasks/goals that may continue in later sessions
46
-
47
- Do not store:
48
-
49
- - transient one-off chatter
50
- - data obvious from current files unless the decision/rationale matters
51
- - duplicate entries with no new value
52
-
53
- ### How To Write `content`
54
-
55
- Write retrieval-friendly content:
56
-
57
- - concise and specific
58
- - include key nouns (feature/module/file/tool)
59
- - include outcome + rationale
60
- - avoid fluff
61
-
62
- Good pattern:
63
-
64
- - `<Outcome>. <Method>. <Reason/constraint>.`
65
-
66
- ### `metadata` Usage
67
-
68
- Use `metadata` as optional structured context (dictionary), for example:
69
-
70
- - `files`: touched paths
71
- - `decision`: short decision tag
72
- - `reason`: main rationale
73
- - `scope_hint`: optional discriminator
74
- - `title`: short label (helps embeddings)
75
-
76
- Prefer small, meaningful keys and values.
77
-
78
- ### When To Search
79
-
80
- Use `memory_search` when prior context may matter:
81
-
82
- - user says "continue", "as before", "same style", "like last time"
83
- - implementation likely depends on earlier decisions
84
- - personalization may affect response style or technical choices
85
-
86
- Avoid broad fishing queries. Use targeted query strings and optional `types` filters.
87
-
88
- ### Examples
89
-
90
- Project memory after successful turn:
91
-
92
- - `memory_add`
93
- - `scope`: `project`
94
- - `type`: `fact`
95
- - `content`: `Created a consistent scope strategy so project-specific context stays separated from broader user context. Updated the workflow guide to match the new memory commands and argument order. Chosen to improve retrieval precision and reduce accidental cross-context mixing.`
96
- - `metadata`: `{ "title": "scope strategy update", "decision": "context-isolation" }`
97
-
98
- User preference memory:
99
-
100
- - `memory_add`
101
- - `scope`: `user`
102
- - `type`: `preference`
103
- - `content`: `User prefers concise updates and practical, low-overhead solutions unless extra detail is requested.`
104
- - `metadata`: `{ "title": "communication preference", "style": "concise" }`
105
-
106
- Targeted search:
107
-
108
- - `memory_search`
109
- - `scope`: `project`
110
- - `query`: `scope strategy archive behavior usage guidance`
111
- - `types`: `[ "fact", "observation" ]`
112
- - `k`: `5`
113
-
114
- Archive obsolete memory:
115
-
116
- - `memory_archive`
117
- - `scope`: `project`
118
- - `id`: `<memory-id>`
119
- - `reason`: `Superseded by newer guidance and no longer reflects current behavior`
120
-
121
- ### Conflict Handling
122
-
123
- - Current user message and current session context override memory.
124
- - If memory conflicts with fresh instructions, follow fresh instructions.
125
- - Archive stale/incorrect memory once confirmed.
6
+ Only save facts that are likely to be useful in a later conversation without rereading this transcript.
7
+ High-value memories include things like user preferences, standing requirements, recurring workflows, long-lived goals, stable project context, durable decisions, and constraints that should influence future behavior.
8
+ Low-value memories include things like transient chatter, one-off requests, intermediate reasoning, raw tool output, temporary diagnostics, and facts that were only useful for the current turn.
9
+ Prefer memories that will still matter later over details that were merely true during this exchange.
10
+ If nothing is worth saving, do not call the tool.
11
+ When you are done, respond briefly with `done`.
@@ -10,7 +10,7 @@ Call **`enter_plan_mode`** when the task is multi-step, ambiguous, or could caus
10
10
 
11
11
  - You receive a **`plan_file`** path under the app plans directory. Expand it with **`read_file`**, **`write_file`**, and **`edit_file`** as needed (paths must stay within allowed locations).
12
12
  - Prefer **`think`** or **`update_todos`** to organize reasoning; avoid shell and other tools not exposed in this phase.
13
- - **`run_agents`** is available: use it for **read-only** parallel exploration when splitting investigations helps (same discipline as subagents—narrow prompts, synthesize results yourself). Child agents are constrained like other tooling in this phase; you remain responsible for the plan document.
13
+ - **`run_subagents`** is available: use it for **read-only** parallel exploration when splitting investigations helps (same discipline as subagents—narrow prompts, synthesize results yourself). Child agents are constrained like other tooling in this phase; you remain responsible for the plan document.
14
14
 
15
15
  ### Leaving plan mode
16
16
 
@@ -1,18 +1,19 @@
1
1
  ## Skills
2
2
 
3
- You may have a dynamic **Available skills** or **Built-in skills** section elsewhere in the system prompt listing installed skills with absolute paths to each `SKILL.md`.
3
+ You may have an `<available_skills>` section elsewhere in the system prompt listing skill names, descriptions, and optional `SKILL.md` locations. Use the `skills` tool to activate a skill and load its full instructions when needed.
4
4
 
5
5
  ### When to use a skill during this turn
6
6
 
7
7
  - When the user's goal, stack, or workflow clearly matches a listed skill (same product, API, or task family), treat that skill as the preferred playbook before improvising.
8
- - **Programming and implementation** (creating or changing source, tests, tooling config, dependencies, package manifests, installs, builds, or new scaffold directories): **before** your first implementation tool call in that task, **read** the built-in **hooman-coding** `SKILL.md` from the path under **Built-in skills** using your filesystem tool. Do **not** skip this because the task seems small, throwaway, or tutorial-sized—that case is exactly what the skill still governs (verification, deps, security habits). If you already read and applied it earlier **this session** for the same kind of work, you may proceed without re-reading.
9
- - When you are unsure but a skill's title plausibly fits the task, open its `SKILL.md` using the **absolute path** from the Available skills list and skim it; if it helps, follow it for the rest of the turn.
10
- - Prefer **reading** `SKILL.md` over guessing conventions (naming, CLI flags, safety steps) that the skill is meant to encode.
8
+ - **Programming and implementation** (creating or changing source, tests, tooling config, dependencies, package manifests, installs, builds, or new scaffold directories): **before** your first implementation tool call in that task, activate the built-in `hooman-coding` skill with the `skills` tool so you have its full instructions in context. Do **not** skip this because the task seems small, throwaway, or tutorial-sized.
9
+ - When you are unsure but a listed skill plausibly fits the task, activate it with the `skills` tool and skim the returned instructions; if it helps, follow it for the rest of the turn.
10
+ - Prefer using the `skills` tool over guessing conventions (naming, CLI flags, safety steps) that the skill is meant to encode.
11
11
  - Do **not** load skills unrelated to the request. Other skills stay selective; **hooman-coding** is the exception for any implementation work as above.
12
12
 
13
13
  ### Coordination with tools
14
14
 
15
- - Use **filesystem** tools to read `SKILL.md` at the given path when you need full instructions.
15
+ - Use the `skills` tool to load full instructions.
16
+ - Use **filesystem** tools to inspect a skill's `SKILL.md`, scripts, references, or assets only when the task specifically needs the underlying files.
16
17
  - When the user wants to manage Hooman skills, use the built-in `hooman-skills` skill and edit `~/.hooman/skills` directly.
17
18
 
18
19
  ### Goal
@@ -1,6 +1,6 @@
1
1
  ## Sub Agents
2
2
 
3
- You can delegate specific work using the `run_agents` tool.
3
+ You can delegate specific work using the `run_subagents` tool.
4
4
 
5
5
  Use this tool when delegation makes the response better:
6
6
 
@@ -15,7 +15,7 @@ Use delegation thoughtfully:
15
15
  - Prefer concise descriptions that state the expected output.
16
16
  - Run only as many jobs as needed for quality and speed.
17
17
 
18
- Do not use `run_agents` when:
18
+ Do not use `run_subagents` when:
19
19
 
20
20
  - The task is simple and can be handled directly.
21
21
  - The work is tightly coupled and cannot be split cleanly.
@@ -26,7 +26,8 @@ Do not invent provider-specific parameters.
26
26
  - Keep `query` focused on the topic, entity, source, and search operators.
27
27
  - Do not add specific dates, months, or years to `query` for recency unless the user explicitly asked for that date/month/year or it is essential to disambiguate the topic.
28
28
  - For "latest", "recent", "today", "this week", "this month", or other relative-time requests, use `freshness` or `start_date` + `end_date` instead of adding date words to `query`.
29
- - Use the current date/time from the Environment section when interpreting relative dates. If the task needs precise real time during a later turn, call `get_current_time` before choosing `freshness` or date ranges.
29
+ - Use the injected `<now>...</now>` ISO timestamp when interpreting relative dates.
30
+ - Use `get_current_time` only if you need current time in a specific timezone before choosing `freshness` or date ranges.
30
31
 
31
32
  ### Examples
32
33
 
@@ -1,14 +1,13 @@
1
1
  import { existsSync, readFileSync, statSync } from "node:fs";
2
- import { dirname, join } from "node:path";
3
- import { fileURLToPath } from "node:url";
4
2
  import handlebars from "handlebars";
3
+ import { bundledPromptPath, hasBundledPrompt, readBundledPrompt, } from "./bundled.js";
5
4
  import { getEnvironmentPromptContext } from "./environment.js";
5
+ import { candidateAgentInstructionPaths, readAgentInstructions, } from "./runtime.js";
6
6
  const { compile } = handlebars;
7
7
  /** Bundled markdown next to this module (`prompts/static/`). */
8
8
  const STATIC_PROMPT_FILES = [
9
9
  "identity.md",
10
10
  "environment.md",
11
- "memory.md",
12
11
  "todo.md",
13
12
  "thinking.md",
14
13
  "filesystem.md",
@@ -18,7 +17,6 @@ const STATIC_PROMPT_FILES = [
18
17
  "sleep.md",
19
18
  "bye.md",
20
19
  "daemon.md",
21
- "wiki.md",
22
20
  "skills.md",
23
21
  "subagents.md",
24
22
  "planning.md",
@@ -30,7 +28,6 @@ const HARNESS_PROMPT_FILES = [
30
28
  { key: "guardrails", file: "guardrails.md" },
31
29
  ];
32
30
  const SECTION_BREAK = "\n\n---\n\n";
33
- const EXTRA_CWD_INSTRUCTIONS = "AGENTS.md";
34
31
  /**
35
32
  * Loads `prompts/static/*.md` from the package, then `instructions.md` from disk,
36
33
  * concatenates them, and renders with Handlebars using `context`.
@@ -50,8 +47,6 @@ export class System {
50
47
  staticPromptFiles() {
51
48
  return STATIC_PROMPT_FILES.filter((file) => {
52
49
  switch (file) {
53
- case "memory.md":
54
- return this.config.tools.memory.enabled;
55
50
  case "fetch.md":
56
51
  return this.config.tools.fetch.enabled;
57
52
  case "web-search.md":
@@ -64,8 +59,6 @@ export class System {
64
59
  return this.config.tools.shell.enabled;
65
60
  case "sleep.md":
66
61
  return this.config.tools.sleep.enabled;
67
- case "wiki.md":
68
- return this.config.tools.wiki.enabled;
69
62
  case "subagents.md":
70
63
  return this.config.tools.agents.enabled;
71
64
  case "daemon.md":
@@ -76,14 +69,12 @@ export class System {
76
69
  });
77
70
  }
78
71
  readBundledStaticPrompts() {
79
- const dir = join(dirname(fileURLToPath(import.meta.url)), "static");
80
72
  const parts = [];
81
73
  for (const file of this.staticPromptFiles()) {
82
- const full = join(dir, file);
83
- if (!existsSync(full)) {
74
+ if (!hasBundledPrompt("static", file)) {
84
75
  continue;
85
76
  }
86
- const text = readFileSync(full, "utf8").trim();
77
+ const text = readBundledPrompt("static", file);
87
78
  if (text.length > 0) {
88
79
  parts.push(text);
89
80
  }
@@ -91,17 +82,15 @@ export class System {
91
82
  return parts.join("\n\n");
92
83
  }
93
84
  readBundledHarnessPrompts() {
94
- const dir = join(dirname(fileURLToPath(import.meta.url)), "harness");
95
85
  const parts = [];
96
86
  for (const { key, file } of HARNESS_PROMPT_FILES) {
97
87
  if (!this.config.prompts[key]) {
98
88
  continue;
99
89
  }
100
- const full = join(dir, file);
101
- if (!existsSync(full)) {
90
+ if (!hasBundledPrompt("harness", file)) {
102
91
  continue;
103
92
  }
104
- const text = readFileSync(full, "utf8").trim();
93
+ const text = readBundledPrompt("harness", file);
105
94
  if (text.length > 0) {
106
95
  parts.push(text);
107
96
  }
@@ -109,11 +98,7 @@ export class System {
109
98
  return parts.join("\n\n");
110
99
  }
111
100
  readCwdAgentsInstructions() {
112
- const path = join(process.cwd(), EXTRA_CWD_INSTRUCTIONS);
113
- if (!existsSync(path)) {
114
- return "";
115
- }
116
- return readFileSync(path, "utf8").trim();
101
+ return readAgentInstructions();
117
102
  }
118
103
  /** Stats prompt sources so we only re-read disk + recompile Handlebars when files change. */
119
104
  computeSourceFingerprint() {
@@ -127,18 +112,18 @@ export class System {
127
112
  parts.push(`${label}:${st.mtimeMs}:${st.size}`);
128
113
  };
129
114
  pushPath("instructions", this.path);
130
- const staticDir = join(dirname(fileURLToPath(import.meta.url)), "static");
131
115
  for (const file of this.staticPromptFiles()) {
132
- pushPath(`static:${file}`, join(staticDir, file));
116
+ pushPath(`static:${file}`, bundledPromptPath("static", file));
133
117
  }
134
- const harnessDir = join(dirname(fileURLToPath(import.meta.url)), "harness");
135
118
  for (const { key, file } of HARNESS_PROMPT_FILES) {
136
119
  if (!this.config.prompts[key]) {
137
120
  continue;
138
121
  }
139
- pushPath(`harness:${file}`, join(harnessDir, file));
122
+ pushPath(`harness:${file}`, bundledPromptPath("harness", file));
123
+ }
124
+ for (const path of candidateAgentInstructionPaths()) {
125
+ pushPath(`agents-md:${path}`, path);
140
126
  }
141
- pushPath("agents-md", join(process.cwd(), EXTRA_CWD_INSTRUCTIONS));
142
127
  return parts.join("|");
143
128
  }
144
129
  readRawText() {
@@ -175,8 +160,6 @@ export class System {
175
160
  name: this.config.name,
176
161
  llm: this.config.llm,
177
162
  environment: getEnvironmentPromptContext(),
178
- memory: this.config.tools.memory,
179
- wiki: this.config.tools.wiki,
180
163
  compaction: this.config.compaction,
181
164
  mode: this.mode,
182
165
  };
@@ -1 +1 @@
1
- {"version":3,"file":"system.js","sourceRoot":"","sources":["../../../src/core/prompts/system.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"system.js","sourceRoot":"","sources":["../../../src/core/prompts/system.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  ---
2
2
  name: hooman-config
3
- description: Read and update Hooman's own config.json and instructions.md safely. Use when the user asks about Hooman config, custom instructions, model providers, LLM params, tool toggles, prompts, search, memory, wiki (knowledge search), agents, compaction, or ~/.hooman config settings.
3
+ description: Read and update Hooman's own config.json and instructions.md safely. Use when the user asks about Hooman config, custom instructions, model providers, LLM params, tool toggles, prompts, search, agents, compaction, or ~/.hooman config settings.
4
4
  ---
5
5
 
6
6
  # Hooman Config
@@ -18,9 +18,9 @@ Use this skill when the user asks you to inspect, explain, or change Hooman's ow
18
18
 
19
19
  1. Read the existing JSON first. Preserve user values, comments are not supported, and secrets such as API keys may be present.
20
20
  2. Make the smallest JSON edit that satisfies the request. Do not rewrite unrelated sections or normalize formatting beyond valid pretty JSON.
21
- 3. `name` and `llms` are required. `llms` must be a **non-empty array** of entries (see below). `search`, `prompts`, `tools`, and `compaction` are optional in input, but Hooman expands them with defaults when loading.
21
+ 3. `name`, `providers`, and `llms` are required. `providers` stores shared credentials/config, and `llms` must be a **non-empty array** of entries that reference provider names (see below). `search`, `prompts`, `tools`, and `compaction` are optional in input, but Hooman expands them with defaults when loading.
22
22
  4. Unknown keys are unsupported and may be dropped when Hooman parses and persists the config.
23
- 5. `tools.memory` has only `enabled` (embedding model is fixed in code; vectors live in the app data directory). `tools.wiki` has only `enabled` (when on, the agent gets `wiki_search` over the indexed knowledge base; ingestion is not configured here).
23
+ 5. `tools` only manages built-in runtime toggles exposed in `config.json`.
24
24
  6. Any change to `config.json` or `instructions.md` requires restarting the running Hooman agent/session before it takes effect.
25
25
 
26
26
  ## Full Config Shape
@@ -30,11 +30,20 @@ This is the default shape Hooman writes when `~/.hooman/config.json` is missing:
30
30
  ```json
31
31
  {
32
32
  "name": "Hooman",
33
+ "providers": [
34
+ {
35
+ "name": "ollama-local",
36
+ "options": {
37
+ "provider": "ollama",
38
+ "params": {}
39
+ }
40
+ }
41
+ ],
33
42
  "llms": [
34
43
  {
35
44
  "name": "Default",
36
45
  "options": {
37
- "provider": "ollama",
46
+ "provider": "ollama-local",
38
47
  "model": "gemma4:e4b",
39
48
  "params": {}
40
49
  },
@@ -82,12 +91,6 @@ This is the default shape Hooman writes when `~/.hooman/config.json` is missing:
82
91
  "sleep": {
83
92
  "enabled": true
84
93
  },
85
- "memory": {
86
- "enabled": false
87
- },
88
- "wiki": {
89
- "enabled": false
90
- },
91
94
  "agents": {
92
95
  "enabled": true,
93
96
  "concurrency": 2
@@ -103,6 +106,7 @@ This is the default shape Hooman writes when `~/.hooman/config.json` is missing:
103
106
  ## Top-Level Options
104
107
 
105
108
  - `name`: non-empty display name for the agent.
109
+ - `providers`: required reusable provider definitions. Configure shared credentials or transport params once, then reference the provider from one or more LLM entries.
106
110
  - `llms`: required non-empty list of named LLM configs (see **LLMs array**).
107
111
  - `search`: optional web search config; defaults to disabled Brave.
108
112
  - `prompts`: optional built-in static prompt toggles; omitted fields default to `true`. Custom user instructions live in `~/.hooman/instructions.md`.
@@ -114,14 +118,24 @@ This is the default shape Hooman writes when `~/.hooman/config.json` is missing:
114
118
  Each element of `llms` has:
115
119
 
116
120
  - `name`: non-empty label for this entry (for display and editing).
117
- - `options`: the provider configuration (`provider`, `model`, `params`) same semantics as the former single `llm` object.
121
+ - `options.provider`: provider reference name. It must match one of the entries in top-level `providers`.
122
+ - `options.model`: model id passed to the resolved runtime provider.
123
+ - `options.params`: model-specific params. When `options.provider` references a named provider, these params override the provider's shared params on key conflict.
118
124
  - `default`: boolean; mark **one** entry `"default": true` for the active model. If several have `true`, the **first** in the array wins; if none have `true`, Hooman uses the **first** entry—so keep a single default when possible.
119
125
 
120
126
  Runtime APIs may still expose a single active profile as `llm` (derived from the default entry); on disk the source of truth is always `llms`.
121
127
 
128
+ ## Providers array
129
+
130
+ Each element of `providers` has:
131
+
132
+ - `name`: non-empty reference name used by `llms[].options.provider`.
133
+ - `options.provider`: runtime provider id such as `"openai"`, `"bedrock"`, or `"ollama"`.
134
+ - `options.params`: shared provider params such as API keys, host/base URL, region, headers, or client config.
135
+
122
136
  ### LLM Providers
123
137
 
124
- `options.provider` must be one of the values Hooman registers at runtime (the config schema may list additional legacy enum values; stick to this set):
138
+ `providers[].options.provider` must be one of the values Hooman registers at runtime (the config schema may list additional legacy enum values; stick to this set):
125
139
 
126
140
  ```json
127
141
  [
@@ -140,6 +154,17 @@ Common shape (single default model):
140
154
 
141
155
  ```json
142
156
  {
157
+ "providers": [
158
+ {
159
+ "name": "anthropic",
160
+ "options": {
161
+ "provider": "anthropic",
162
+ "params": {
163
+ "apiKey": "..."
164
+ }
165
+ }
166
+ }
167
+ ],
143
168
  "llms": [
144
169
  {
145
170
  "name": "Default",
@@ -147,7 +172,6 @@ Common shape (single default model):
147
172
  "provider": "anthropic",
148
173
  "model": "claude-sonnet-4-20250514",
149
174
  "params": {
150
- "apiKey": "...",
151
175
  "temperature": 0.2,
152
176
  "maxTokens": 4096
153
177
  }
@@ -158,9 +182,9 @@ Common shape (single default model):
158
182
  }
159
183
  ```
160
184
 
161
- Provider notes (these refer to fields inside `options.params` unless noted):
185
+ Provider notes (these refer to fields inside `providers[].options.params` unless noted; `llms[].options.params` can override them per model):
162
186
 
163
- - `anthropic`: Strands **AnthropicModel** (Anthropic Messages API via `@anthropic-ai/sdk`). `params.apiKey` or `params.authToken`, optional `baseURL` and `headers` (merged into `clientConfig`), optional `clientConfig`, plus model fields such as `temperature`, `maxTokens`, `topP`, `stopSequences`, and `params`. A custom `client` instance is not supported from config. If no key is set, `ANTHROPIC_API_KEY` is used.
187
+ - `anthropic`: Strands **AnthropicModel** (Anthropic Messages API via `@anthropic-ai/sdk`). `params.apiKey` or `params.authToken`, optional `baseURL` and `headers` (merged into `clientConfig`), optional `clientConfig`, `betas`, and `useNativeTokenCount`, plus model fields such as `temperature`, `maxTokens`, `topP`, and `stopSequences`. Any unknown keys are forwarded into the underlying Anthropic Messages request body, so Anthropic-compatible providers can use fields like `thinking` or `service_tier` directly. A custom `client` instance is not supported from config. If no key is set, `ANTHROPIC_API_KEY` is used.
164
188
  - `google`: `params.apiKey`, `client`, `clientConfig`, and `builtInTools` are top-level Google model options. Other keys become Gemini generation params, such as `temperature`, `maxOutputTokens`, `topP`, and `topK`.
165
189
  - `groq`: `params.apiKey`, `baseURL`, and `headers` configure the provider. Other keys are forwarded as Vercel model config.
166
190
  - `moonshot`: `params.apiKey`, `baseURL`, `headers`, and `fetch` configure the provider. Other keys are forwarded as Vercel model config.
@@ -173,15 +197,25 @@ Examples:
173
197
 
174
198
  ```json
175
199
  {
200
+ "providers": [
201
+ {
202
+ "name": "ollama-local",
203
+ "options": {
204
+ "provider": "ollama",
205
+ "params": {
206
+ "host": "http://127.0.0.1:11434",
207
+ "think": "medium"
208
+ }
209
+ }
210
+ }
211
+ ],
176
212
  "llms": [
177
213
  {
178
214
  "name": "Local",
179
215
  "options": {
180
- "provider": "ollama",
216
+ "provider": "ollama-local",
181
217
  "model": "qwen3:8b",
182
218
  "params": {
183
- "host": "http://127.0.0.1:11434",
184
- "think": "medium",
185
219
  "options": {
186
220
  "num_ctx": 32768,
187
221
  "temperature": 0.2
@@ -196,6 +230,17 @@ Examples:
196
230
 
197
231
  ```json
198
232
  {
233
+ "providers": [
234
+ {
235
+ "name": "google",
236
+ "options": {
237
+ "provider": "google",
238
+ "params": {
239
+ "apiKey": "..."
240
+ }
241
+ }
242
+ }
243
+ ],
199
244
  "llms": [
200
245
  {
201
246
  "name": "Gemini",
@@ -203,7 +248,6 @@ Examples:
203
248
  "provider": "google",
204
249
  "model": "gemini-2.5-flash",
205
250
  "params": {
206
- "apiKey": "...",
207
251
  "temperature": 0.2,
208
252
  "maxOutputTokens": 8192
209
253
  }
@@ -216,12 +260,11 @@ Examples:
216
260
 
217
261
  ```json
218
262
  {
219
- "llms": [
263
+ "providers": [
220
264
  {
221
- "name": "Bedrock",
265
+ "name": "bedrock-dev",
222
266
  "options": {
223
267
  "provider": "bedrock",
224
- "model": "anthropic.claude-3-5-sonnet-20241022-v2:0",
225
268
  "params": {
226
269
  "region": "us-west-2",
227
270
  "clientConfig": {
@@ -232,7 +275,18 @@ Examples:
232
275
  "secretAccessKey": "...",
233
276
  "sessionToken": "..."
234
277
  }
235
- },
278
+ }
279
+ }
280
+ }
281
+ }
282
+ ],
283
+ "llms": [
284
+ {
285
+ "name": "Bedrock",
286
+ "options": {
287
+ "provider": "bedrock-dev",
288
+ "model": "anthropic.claude-3-5-sonnet-20241022-v2:0",
289
+ "params": {
236
290
  "temperature": 0.2,
237
291
  "maxTokens": 4096
238
292
  }
@@ -251,13 +305,33 @@ You may list several entries and flip which one is default:
251
305
 
252
306
  ```json
253
307
  {
308
+ "providers": [
309
+ {
310
+ "name": "openai",
311
+ "options": {
312
+ "provider": "openai",
313
+ "params": {
314
+ "apiKey": "..."
315
+ }
316
+ }
317
+ },
318
+ {
319
+ "name": "anthropic",
320
+ "options": {
321
+ "provider": "anthropic",
322
+ "params": {
323
+ "apiKey": "..."
324
+ }
325
+ }
326
+ }
327
+ ],
254
328
  "llms": [
255
329
  {
256
330
  "name": "Fast",
257
331
  "options": {
258
332
  "provider": "openai",
259
333
  "model": "gpt-4.1-mini",
260
- "params": { "apiKey": "..." }
334
+ "params": {}
261
335
  },
262
336
  "default": true
263
337
  },
@@ -266,7 +340,7 @@ You may list several entries and flip which one is default:
266
340
  "options": {
267
341
  "provider": "anthropic",
268
342
  "model": "claude-opus-4-20250514",
269
- "params": { "apiKey": "..." }
343
+ "params": {}
270
344
  },
271
345
  "default": false
272
346
  }
@@ -274,7 +348,7 @@ You may list several entries and flip which one is default:
274
348
  }
275
349
  ```
276
350
 
277
- When editing `llms`, preserve unrelated entries and API keys unless the user asks to remove or replace them.
351
+ When editing `providers` or `llms`, preserve unrelated entries and API keys unless the user asks to remove or replace them.
278
352
 
279
353
  ## Search
280
354
 
@@ -339,15 +413,12 @@ Simple toggles:
339
413
  "filesystem": { "enabled": true },
340
414
  "shell": { "enabled": true },
341
415
  "sleep": { "enabled": true },
342
- "memory": { "enabled": true },
343
- "wiki": { "enabled": true }
416
+ "agents": { "enabled": true, "concurrency": 3 }
344
417
  }
345
418
  }
346
419
  ```
347
420
 
348
- With `wiki` enabled, the model only receives **`wiki_search`**: semantic retrieval over the knowledge index. There are no wiki write or list tools in config.
349
-
350
- Agents:
421
+ Subagents:
351
422
 
352
423
  ```json
353
424
  {
@@ -360,10 +431,12 @@ Agents:
360
431
  }
361
432
  ```
362
433
 
363
- Defaults: `todo`, `fetch`, `filesystem`, `shell`, `sleep`, and `agents` enabled; `memory` and `wiki` disabled. Memory uses a local SQLite index and the built-in embedding model URI in code (`DEFAULT_EMBED_MODEL` in `core/config.ts`). MCP servers and installed skills are not controlled by these toggles; do not inspect or edit them for this skill.
434
+ Defaults: `todo`, `fetch`, `filesystem`, `shell`, `sleep`, and `agents` enabled. MCP servers and installed skills are not controlled by these toggles; do not inspect or edit them for this skill.
364
435
 
365
436
  `agents`: the default file Hooman writes when `config.json` was missing includes `tools.agents.concurrency: 2`. On load, if `concurrency` is absent (for example `tools` or `tools.agents` is omitted), the merged config uses `3` until you set it explicitly.
366
437
 
438
+ Compatibility note: the config key remains `tools.agents`, but it controls the built-in `run_subagents` tool.
439
+
367
440
  ## Instructions
368
441
 
369
442
  `~/.hooman/instructions.md` contains the user's custom instructions. Read or edit it only when the user asks about Hooman instructions, custom instructions, persistent guidance, or agent behavior that belongs outside `config.json`.