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,110 +0,0 @@
1
- import { tool } from "@strands-agents/sdk";
2
- import { z } from "zod";
3
- import { Brain } from "./brain.js";
4
- import { memoryDbPath, modelsCachePath } from "../utils/paths.js";
5
- import { DEFAULT_EMBED_MODEL, DEFAULT_RERANK_MODEL } from "../config.js";
6
- import { GgufEmbedder, GgufReranker } from "../inference/index.js";
7
- import { md5 } from "../utils/hashing.js";
8
- const MemoryScopes = ["user", "project"];
9
- const MemoryTypes = [
10
- "fact",
11
- "observation",
12
- "preference",
13
- "task",
14
- ];
15
- function toJsonValue(value) {
16
- return JSON.parse(JSON.stringify(value));
17
- }
18
- function toMemoryScope(context, project = false) {
19
- if (!context) {
20
- return "default";
21
- }
22
- const userId = context.agent.appState.get("userId");
23
- if (!userId || typeof userId !== "string") {
24
- return "default";
25
- }
26
- return project
27
- ? md5(userId.trim() + "_" + process.cwd())
28
- : md5(userId.trim());
29
- }
30
- export async function create() {
31
- const cacheDir = modelsCachePath();
32
- const embedder = new GgufEmbedder({
33
- modelUri: DEFAULT_EMBED_MODEL,
34
- cacheDir,
35
- });
36
- const reranker = new GgufReranker({
37
- modelUri: DEFAULT_RERANK_MODEL,
38
- cacheDir,
39
- });
40
- const brain = new Brain(memoryDbPath(), embedder, reranker);
41
- await brain.warmup();
42
- return [
43
- tool({
44
- name: "memory_add",
45
- description: "Remember long-term memory. Use `user` for cross-session personal context, `project` for this working-directory only. Prefer facts, observations, preferences, or tasks. Optional `metadata` is stored and indexed for retrieval; use string values when possible.",
46
- inputSchema: z.object({
47
- scope: z
48
- .enum(MemoryScopes)
49
- .describe("`user`: per-user across projects; `project`: this working directory only."),
50
- content: z.string().min(1).describe("Memory content"),
51
- type: z.enum(MemoryTypes),
52
- metadata: z
53
- .record(z.string(), z.unknown())
54
- .optional()
55
- .describe("Optional JSON-serializable fields (e.g. title, source, tags). `title` can tune embedding."),
56
- }),
57
- callback: async (input, context) => {
58
- const scope = toMemoryScope(context, input.scope === "project");
59
- const id = await brain.memorize(scope, input.content, input.type, input.metadata ?? {});
60
- return toJsonValue({ id });
61
- },
62
- }),
63
- tool({
64
- name: "memory_search",
65
- description: "Search memories in the given scope (`user` or `project`). Use only if additional context is needed. Optionally filter by `types`.",
66
- inputSchema: z.object({
67
- scope: z
68
- .enum(MemoryScopes)
69
- .describe("`user`: per-user across projects; `project`: this working directory only."),
70
- query: z.string().min(1).describe("What to search for"),
71
- types: z
72
- .array(z.enum(MemoryTypes))
73
- .optional()
74
- .describe("If set, only memories of these kinds are returned"),
75
- k: z
76
- .number()
77
- .int()
78
- .min(1)
79
- .max(20)
80
- .optional()
81
- .describe("Number of results (default 5, max 20)"),
82
- }),
83
- callback: async (input, context) => {
84
- const scope = toMemoryScope(context, input.scope === "project");
85
- const memories = await brain.search(scope, input.query, input.types, input.k ?? 5);
86
- return toJsonValue({
87
- count: memories.length,
88
- memories,
89
- });
90
- },
91
- }),
92
- tool({
93
- name: "memory_archive",
94
- description: "Mark a memory in the given scope as no longer relevant (soft archive).",
95
- inputSchema: z.object({
96
- scope: z
97
- .enum(MemoryScopes)
98
- .describe("Must match the scope where the memory was stored (`user` or `project`)."),
99
- id: z.string().min(1),
100
- reason: z.string().optional(),
101
- }),
102
- callback: async (input, context) => {
103
- const scope = toMemoryScope(context, input.scope === "project");
104
- const archived = brain.archive(scope, input.id);
105
- return toJsonValue({ archived });
106
- },
107
- }),
108
- ];
109
- }
110
- //# sourceMappingURL=tools.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"tools.js","sourceRoot":"","sources":["../../../src/core/memory/tools.ts"],"names":[],"mappings":"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"}
@@ -1,11 +0,0 @@
1
- export type Memory = {
2
- id: string;
3
- type: MemoryType;
4
- content: string;
5
- metadata: Record<string, unknown>;
6
- archived: boolean;
7
- createdAt: Date;
8
- distance?: number | null;
9
- score?: number | null;
10
- };
11
- export type MemoryType = "fact" | "observation" | "preference" | "task";
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=types.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/core/memory/types.ts"],"names":[],"mappings":""}
@@ -1,15 +0,0 @@
1
- import type { Registry } from "../skills/registry.js";
2
- /**
3
- * Builds the dynamic **Available skills** markdown block using
4
- * {@link Registry.list}, prefixed by a
5
- * static **Built-in skills** section from `src/core/skills/built-in/`.
6
- *
7
- * Mirrors {@link System}: call {@link reload}, then read {@link content}.
8
- */
9
- export declare class Skills {
10
- private readonly registry;
11
- private data;
12
- constructor(registry: Registry);
13
- get content(): string;
14
- reload(): Promise<void>;
15
- }
@@ -1,92 +0,0 @@
1
- import { readFileSync } from "node:fs";
2
- import { dirname, join } from "node:path";
3
- import { fileURLToPath } from "node:url";
4
- import { parseSkillFrontmatter } from "../skills/metadata.js";
5
- /** Folder names under `src/core/skills/built-in/<id>/SKILL.md` (also copied to `dist/`). */
6
- const BUILTIN_SKILLS = [
7
- "hooman-channels",
8
- "hooman-coding",
9
- "hooman-config",
10
- "hooman-mcp",
11
- "hooman-skills",
12
- ];
13
- const BUILTIN_ROOT = join(dirname(fileURLToPath(import.meta.url)), "../skills/built-in");
14
- /** Markdown for built-in skills; fixed at module load (paths match this install’s `built-in/` tree). */
15
- const BUILTIN_SKILLS_SECTION = (() => {
16
- const header = [
17
- "## Built-in skills",
18
- "",
19
- "Shipped with hooman. Follow the **Skills** section earlier in this prompt for when to load each skill. **hooman-coding** is mandatory before implementation work (including small or throwaway code); read its `SKILL.md` at the path below first. For other entries here, read at the path when the task matches.",
20
- "",
21
- ];
22
- let any = false;
23
- for (const id of BUILTIN_SKILLS) {
24
- const mdPath = join(BUILTIN_ROOT, id, "SKILL.md");
25
- let raw;
26
- try {
27
- raw = readFileSync(mdPath, "utf-8");
28
- }
29
- catch {
30
- continue;
31
- }
32
- const { name, description } = parseSkillFrontmatter(raw, id);
33
- header.push(`- **${name}**`);
34
- header.push(` - Description: ${description ?? "(see SKILL.md)"}`);
35
- header.push(` - Path: \`${mdPath}\``);
36
- header.push("");
37
- any = true;
38
- }
39
- return any ? header.join("\n").trim() : "";
40
- })();
41
- /**
42
- * Builds the dynamic **Available skills** markdown block using
43
- * {@link Registry.list}, prefixed by a
44
- * static **Built-in skills** section from `src/core/skills/built-in/`.
45
- *
46
- * Mirrors {@link System}: call {@link reload}, then read {@link content}.
47
- */
48
- export class Skills {
49
- registry;
50
- data = "";
51
- constructor(registry) {
52
- this.registry = registry;
53
- }
54
- get content() {
55
- return [BUILTIN_SKILLS_SECTION, this.data].filter(Boolean).join("\n\n");
56
- }
57
- async reload() {
58
- let entries;
59
- try {
60
- entries = await this.registry.list();
61
- }
62
- catch {
63
- this.data = [
64
- "## Available skills",
65
- "",
66
- "Installed skills could not be loaded. Check `~/.hooman/skills` and try again later.",
67
- "",
68
- ].join("\n");
69
- return;
70
- }
71
- const lines = [
72
- "## Available skills",
73
- "",
74
- "Installed skills for this environment. When one matches the user's request or would materially help the current turn, read its `SKILL.md` at the path shown (for example with your file-reading tool) and follow that guidance.",
75
- "",
76
- ];
77
- if (entries.length === 0) {
78
- lines.push("No skills are installed yet. Add skill folders under `~/.hooman/skills`.", "");
79
- this.data = lines.join("\n").trim();
80
- return;
81
- }
82
- const sorted = [...entries].sort((a, b) => a.name.localeCompare(b.name, undefined, { sensitivity: "base" }));
83
- for (const e of sorted) {
84
- lines.push(`- **${e.name}**`);
85
- lines.push(` - Description: ${e.description ?? "(see SKILL.md)"}`);
86
- lines.push(` - Path: \`${e.path}\``);
87
- lines.push("");
88
- }
89
- this.data = lines.join("\n").trim();
90
- }
91
- }
92
- //# sourceMappingURL=skills.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/core/prompts/skills.ts"],"names":[],"mappings":"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"}
@@ -1,25 +0,0 @@
1
- ## Wiki
2
-
3
- You have one wiki tool: `wiki_search`.
4
-
5
- Use it to search the available knowledge base when you are unsure of facts or details the user is asking about. Prefer it when grounded reference material might exist beyond what you already know from the conversation. Results are semantic matches (snippets) plus paths you can pass to `read_file` if you need the full document.
6
-
7
- ### What `wiki_search` Returns
8
-
9
- Each match includes:
10
-
11
- - matched `content` chunk
12
- - `file_name`
13
- - `md_file_path` and `original_file_path` (use either with `read_file` when you need more than the snippet)
14
- - ranking hints like `distance`, `score`, and `chunk_pos`
15
-
16
- ### How To Use It
17
-
18
- 1. When the user asks something specific you do not already know, try `wiki_search` with a clear query before guessing.
19
- 2. Read returned snippets first to judge relevance.
20
- 3. If you need the full document, use `read_file` on `md_file_path` or `original_file_path` as appropriate.
21
-
22
- ### Important Constraints
23
-
24
- - Only `wiki_search` exists for wiki; there are no wiki write, list, or edit tools.
25
- - Treat wiki as read-only from your side: search, then optionally read paths from the results.
@@ -1,12 +0,0 @@
1
- export type SupportedWikiMimeType = "application/pdf" | "application/vnd.openxmlformats-officedocument.wordprocessingml.document";
2
- export type ConvertFileOptions = {
3
- filePath: string;
4
- mimeType?: string;
5
- };
6
- export type ConvertedMarkdown = {
7
- fileName: string;
8
- originalPath: string;
9
- mimeType: SupportedWikiMimeType;
10
- markdown: string;
11
- };
12
- export declare function convertFileToMarkdown(options: ConvertFileOptions): Promise<ConvertedMarkdown>;
@@ -1,73 +0,0 @@
1
- import path from "node:path";
2
- import { convert } from "@opendataloader/pdf";
3
- import mammoth from "mammoth";
4
- const EXTENSION_MIME = {
5
- ".pdf": "application/pdf",
6
- ".docx": "application/vnd.openxmlformats-officedocument.wordprocessingml.document",
7
- };
8
- function normalizeText(text) {
9
- return text.replace(/\r\n/g, "\n").trim();
10
- }
11
- function detectMimeType(filePath, provided) {
12
- if (provided &&
13
- Object.values(EXTENSION_MIME).includes(provided)) {
14
- return provided;
15
- }
16
- const ext = path.extname(filePath).toLowerCase();
17
- const fallback = EXTENSION_MIME[ext];
18
- if (fallback) {
19
- return fallback;
20
- }
21
- throw new Error(`Unsupported file type: ${filePath}. Wiki indexing accepts only .pdf and .docx.`);
22
- }
23
- async function convertDocxToMarkdown(filePath, fileName) {
24
- try {
25
- const { value, messages } = await mammoth.convertToMarkdown({ path: filePath });
26
- const errors = messages.filter((m) => m.type === "error");
27
- if (errors.length > 0) {
28
- throw new Error(errors.map((e) => e.message).join("; "));
29
- }
30
- return value;
31
- }
32
- catch (error) {
33
- const msg = error instanceof Error ? error.message : String(error);
34
- throw new Error(`DOCX conversion failed for ${fileName}: ${msg}`);
35
- }
36
- }
37
- async function convertPdfToMarkdown(filePath, fileName) {
38
- try {
39
- const markdown = await convert(filePath, {
40
- format: "markdown",
41
- toStdout: true,
42
- quiet: true,
43
- });
44
- return markdown;
45
- }
46
- catch (error) {
47
- const msg = error instanceof Error ? error.message : String(error);
48
- throw new Error(`PDF conversion failed for ${fileName}: ${msg}. ` +
49
- "OpenDataLoader PDF needs Java 11+ on your PATH (`java -version`).");
50
- }
51
- }
52
- export async function convertFileToMarkdown(options) {
53
- const fileName = path.basename(options.filePath);
54
- const mimeType = detectMimeType(options.filePath, options.mimeType);
55
- let markdown;
56
- if (mimeType === "application/pdf") {
57
- markdown = await convertPdfToMarkdown(options.filePath, fileName);
58
- }
59
- else {
60
- markdown = await convertDocxToMarkdown(options.filePath, fileName);
61
- }
62
- const finalMarkdown = normalizeText(markdown);
63
- if (!finalMarkdown) {
64
- throw new Error(`Converted markdown is empty for ${fileName}`);
65
- }
66
- return {
67
- fileName,
68
- originalPath: options.filePath,
69
- mimeType,
70
- markdown: `${finalMarkdown}\n`,
71
- };
72
- }
73
- //# sourceMappingURL=converters.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"converters.js","sourceRoot":"","sources":["../../../src/core/wiki/converters.ts"],"names":[],"mappings":"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"}
@@ -1,39 +0,0 @@
1
- import BetterSqlite from "better-sqlite3";
2
- export type Sqlite = BetterSqlite.Database;
3
- export type WikiDocRecord = {
4
- doc_id: string;
5
- file_name: string;
6
- md_path: string;
7
- original_path: string;
8
- original_mime_type: string;
9
- content_hash: string;
10
- updated_at_ms: number;
11
- };
12
- export type WikiChunkRecord = {
13
- chunk_id: string;
14
- doc_id: string;
15
- chunk_index: number;
16
- content: string;
17
- };
18
- export type WikiSearchRow = WikiChunkRecord & Pick<WikiDocRecord, "file_name" | "md_path" | "original_path" | "original_mime_type">;
19
- export declare class Database {
20
- private readonly db;
21
- constructor(file: string);
22
- close(): void;
23
- prepare(modelId: string, dimensions: number): void;
24
- countDocs(): number;
25
- listDocs(page: number, pageSize: number): WikiDocRecord[];
26
- getDocById(docId: string): WikiDocRecord | null;
27
- getDocByOriginalPath(originalPath: string): WikiDocRecord | null;
28
- removeDoc(docId: string): void;
29
- addDocAndChunks(doc: WikiDocRecord, chunks: Array<{
30
- chunk_id: string;
31
- chunk_index: number;
32
- content: string;
33
- }>, embeddings: Float32Array[]): void;
34
- vectorSearch(embedding: Float32Array, k: number): Array<{
35
- chunk_id: string;
36
- distance: number;
37
- }>;
38
- getSearchRowsByChunkIds(chunkIds: string[]): WikiSearchRow[];
39
- }
@@ -1,177 +0,0 @@
1
- import fs from "node:fs";
2
- import path from "node:path";
3
- import BetterSqlite from "better-sqlite3";
4
- import * as vector from "sqlite-vec";
5
- const META_DIMS = "embedding_dims";
6
- const META_MODEL = "embedding_model_id";
7
- function getStoreMeta(db, key) {
8
- const row = db
9
- .prepare(`SELECT value FROM wiki_store_meta WHERE key = ?`)
10
- .get(key);
11
- return row?.value ?? null;
12
- }
13
- function setStoreMeta(db, key, value) {
14
- db.prepare(`INSERT INTO wiki_store_meta (key, value) VALUES (?, ?)
15
- ON CONFLICT(key) DO UPDATE SET value = excluded.value`).run(key, value);
16
- }
17
- function migrate(db) {
18
- vector.load(db);
19
- try {
20
- const row = db.prepare(`SELECT vec_version() AS version`).get();
21
- if (!row?.version || typeof row.version !== "string") {
22
- throw new Error("vec_version() returned no version");
23
- }
24
- }
25
- catch (err) {
26
- const msg = err instanceof Error ? err.message : String(err);
27
- throw new Error(`sqlite-vec extension is unavailable (probe failed: ${msg}). ` +
28
- "Ensure sqlite-vec native bindings are installed for your platform.");
29
- }
30
- db.exec(`
31
- CREATE TABLE IF NOT EXISTS wiki_store_meta (
32
- key TEXT PRIMARY KEY,
33
- value TEXT NOT NULL
34
- );
35
-
36
- CREATE TABLE IF NOT EXISTS wiki_docs (
37
- doc_id TEXT PRIMARY KEY NOT NULL,
38
- file_name TEXT NOT NULL,
39
- md_path TEXT NOT NULL,
40
- original_path TEXT NOT NULL,
41
- original_mime_type TEXT NOT NULL,
42
- content_hash TEXT NOT NULL,
43
- updated_at_ms INTEGER NOT NULL
44
- );
45
- CREATE UNIQUE INDEX IF NOT EXISTS idx_wiki_docs_md_path ON wiki_docs(md_path);
46
- CREATE UNIQUE INDEX IF NOT EXISTS idx_wiki_docs_original_path ON wiki_docs(original_path);
47
-
48
- CREATE TABLE IF NOT EXISTS wiki_chunks (
49
- chunk_id TEXT PRIMARY KEY NOT NULL,
50
- doc_id TEXT NOT NULL,
51
- chunk_index INTEGER NOT NULL,
52
- content TEXT NOT NULL,
53
- FOREIGN KEY(doc_id) REFERENCES wiki_docs(doc_id) ON DELETE CASCADE
54
- );
55
- CREATE INDEX IF NOT EXISTS idx_wiki_chunks_doc_id ON wiki_chunks(doc_id);
56
- `);
57
- }
58
- export class Database {
59
- db;
60
- constructor(file) {
61
- const dir = path.dirname(file);
62
- if (!fs.existsSync(dir)) {
63
- fs.mkdirSync(dir, { recursive: true });
64
- }
65
- this.db = new BetterSqlite(file);
66
- this.db.pragma("journal_mode = WAL");
67
- this.db.pragma("foreign_keys = ON");
68
- migrate(this.db);
69
- }
70
- close() {
71
- this.db.close();
72
- }
73
- prepare(modelId, dimensions) {
74
- const existing = this.db
75
- .prepare(`SELECT sql FROM sqlite_master WHERE type='table' AND name='wiki_chunk_vec'`)
76
- .get();
77
- if (existing) {
78
- const match = existing.sql.match(/float\[(\d+)\]/);
79
- const hasId = existing.sql.includes("chunk_id");
80
- const hasCosine = existing.sql.includes("distance_metric=cosine");
81
- const existingDims = match?.[1] ? Number.parseInt(match[1], 10) : null;
82
- if (existingDims === dimensions && hasId && hasCosine) {
83
- return;
84
- }
85
- if (existingDims !== null && existingDims !== dimensions) {
86
- throw new Error(`Wiki embedding dimension mismatch: index is ${existingDims}d but the model produces ${dimensions}d. ` +
87
- "Use the previous model or delete the wiki database (data loss).");
88
- }
89
- this.db.exec("DROP TABLE IF EXISTS wiki_chunk_vec");
90
- }
91
- this.db.exec(`CREATE VIRTUAL TABLE wiki_chunk_vec USING vec0(chunk_id TEXT PRIMARY KEY, embedding float[${dimensions}] distance_metric=cosine)`);
92
- const existingModel = getStoreMeta(this.db, META_MODEL);
93
- if (existingModel != null && existingModel !== modelId) {
94
- throw new Error(`Wiki index was built with model "${existingModel}" but config uses "${modelId}". ` +
95
- "Align models or delete the wiki database (data loss).");
96
- }
97
- setStoreMeta(this.db, META_MODEL, modelId);
98
- setStoreMeta(this.db, META_DIMS, String(dimensions));
99
- }
100
- countDocs() {
101
- const row = this.db.prepare(`SELECT COUNT(*) AS c FROM wiki_docs`).get();
102
- return typeof row?.c === "number" && Number.isFinite(row.c) ? row.c : 0;
103
- }
104
- listDocs(page, pageSize) {
105
- const offset = Math.max(0, (Math.max(1, page) - 1) * Math.max(1, pageSize));
106
- const limit = Math.max(1, pageSize);
107
- return this.db
108
- .prepare(`SELECT doc_id, file_name, md_path, original_path, original_mime_type, content_hash, updated_at_ms
109
- FROM wiki_docs ORDER BY updated_at_ms DESC LIMIT ? OFFSET ?`)
110
- .all(limit, offset);
111
- }
112
- getDocById(docId) {
113
- const row = this.db
114
- .prepare(`SELECT doc_id, file_name, md_path, original_path, original_mime_type, content_hash, updated_at_ms
115
- FROM wiki_docs WHERE doc_id = ?`)
116
- .get(docId);
117
- return row ?? null;
118
- }
119
- getDocByOriginalPath(originalPath) {
120
- const row = this.db
121
- .prepare(`SELECT doc_id, file_name, md_path, original_path, original_mime_type, content_hash, updated_at_ms
122
- FROM wiki_docs WHERE original_path = ?`)
123
- .get(originalPath);
124
- return row ?? null;
125
- }
126
- removeDoc(docId) {
127
- const chunkRows = this.db
128
- .prepare(`SELECT chunk_id FROM wiki_chunks WHERE doc_id = ?`)
129
- .all(docId);
130
- const delVec = this.db.prepare(`DELETE FROM wiki_chunk_vec WHERE chunk_id = ?`);
131
- const delChunks = this.db.prepare(`DELETE FROM wiki_chunks WHERE doc_id = ?`);
132
- const delDoc = this.db.prepare(`DELETE FROM wiki_docs WHERE doc_id = ?`);
133
- this.db.transaction(() => {
134
- for (const row of chunkRows) {
135
- delVec.run(row.chunk_id);
136
- }
137
- delChunks.run(docId);
138
- delDoc.run(docId);
139
- })();
140
- }
141
- addDocAndChunks(doc, chunks, embeddings) {
142
- if (chunks.length !== embeddings.length) {
143
- throw new Error("Chunk/embedding count mismatch");
144
- }
145
- const insDoc = this.db.prepare(`INSERT INTO wiki_docs (doc_id, file_name, md_path, original_path, original_mime_type, content_hash, updated_at_ms)
146
- VALUES (?, ?, ?, ?, ?, ?, ?)`);
147
- const insChunk = this.db.prepare(`INSERT INTO wiki_chunks (chunk_id, doc_id, chunk_index, content) VALUES (?, ?, ?, ?)`);
148
- const insVec = this.db.prepare(`INSERT INTO wiki_chunk_vec (chunk_id, embedding) VALUES (?, ?)`);
149
- this.db.transaction(() => {
150
- insDoc.run(doc.doc_id, doc.file_name, doc.md_path, doc.original_path, doc.original_mime_type, doc.content_hash, doc.updated_at_ms);
151
- for (let i = 0; i < chunks.length; i += 1) {
152
- const chunk = chunks[i];
153
- insChunk.run(chunk.chunk_id, doc.doc_id, chunk.chunk_index, chunk.content);
154
- insVec.run(chunk.chunk_id, embeddings[i]);
155
- }
156
- })();
157
- }
158
- vectorSearch(embedding, k) {
159
- return this.db
160
- .prepare(`SELECT chunk_id, distance FROM wiki_chunk_vec WHERE embedding MATCH ? AND k = ?`)
161
- .all(embedding, k);
162
- }
163
- getSearchRowsByChunkIds(chunkIds) {
164
- if (chunkIds.length === 0) {
165
- return [];
166
- }
167
- const placeholders = chunkIds.map(() => "?").join(",");
168
- return this.db
169
- .prepare(`SELECT c.chunk_id, c.doc_id, c.chunk_index, c.content,
170
- d.file_name, d.md_path, d.original_path, d.original_mime_type
171
- FROM wiki_chunks c
172
- JOIN wiki_docs d ON d.doc_id = c.doc_id
173
- WHERE c.chunk_id IN (${placeholders})`)
174
- .all(...chunkIds);
175
- }
176
- }
177
- //# sourceMappingURL=database.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"database.js","sourceRoot":"","sources":["../../../src/core/wiki/database.ts"],"names":[],"mappings":"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"}
@@ -1,7 +0,0 @@
1
- export { convertFileToMarkdown } from "./converters.js";
2
- export type { ConvertedMarkdown, ConvertFileOptions, SupportedWikiMimeType, } from "./converters.js";
3
- export { Database } from "./database.js";
4
- export type { Sqlite, WikiChunkRecord, WikiDocRecord, WikiSearchRow, } from "./database.js";
5
- export { Storage } from "./storage.js";
6
- export type { WikiAddInput, WikiListResult, WikiSearchMatch, } from "./storage.js";
7
- export { createWikiTools } from "./tools.js";
@@ -1,5 +0,0 @@
1
- export { convertFileToMarkdown } from "./converters.js";
2
- export { Database } from "./database.js";
3
- export { Storage } from "./storage.js";
4
- export { createWikiTools } from "./tools.js";
5
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/wiki/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,qBAAqB,EAAE,MAAM,iBAAiB,CAAC;AAMxD,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AAOzC,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AAMvC,OAAO,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC"}