hoomanjs 1.18.1 → 1.19.1
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.
- package/README.md +5 -4
- package/dist/acp/utils/tool-kind.js +0 -9
- package/dist/acp/utils/tool-kind.js.map +1 -1
- package/dist/core/agent/index.d.ts +2 -3
- package/dist/core/agent/index.js +0 -4
- package/dist/core/agent/index.js.map +1 -1
- package/dist/core/mcp/config.d.ts +1 -1
- package/dist/core/mcp/config.js +14 -13
- package/dist/core/mcp/config.js.map +1 -1
- package/dist/core/mcp/index.d.ts +0 -1
- package/dist/core/mcp/index.js +0 -1
- package/dist/core/mcp/index.js.map +1 -1
- package/dist/core/prompts/skills.d.ts +1 -1
- package/dist/core/prompts/skills.js +9 -5
- package/dist/core/prompts/skills.js.map +1 -1
- package/dist/core/prompts/static/identity.md +1 -1
- package/dist/core/prompts/static/skills.md +3 -3
- package/dist/core/skills/built-in/hooman-config/SKILL.md +355 -5
- package/dist/core/skills/built-in/hooman-mcp/SKILL.md +211 -0
- package/dist/core/skills/built-in/hooman-skills/SKILL.md +205 -0
- package/dist/core/skills/index.d.ts +0 -1
- package/dist/core/skills/index.js +0 -1
- package/dist/core/skills/index.js.map +1 -1
- package/dist/core/state/tool-approvals.js +0 -6
- package/dist/core/state/tool-approvals.js.map +1 -1
- package/dist/core/tools/wiki.d.ts +2 -2
- package/package.json +1 -1
- package/dist/core/mcp/tools.d.ts +0 -5
- package/dist/core/mcp/tools.js +0 -82
- package/dist/core/mcp/tools.js.map +0 -1
- package/dist/core/skills/tools.d.ts +0 -9
- package/dist/core/skills/tools.js +0 -73
- package/dist/core/skills/tools.js.map +0 -1
package/README.md
CHANGED
|
@@ -32,7 +32,7 @@ It gives you a practical toolkit to build and run agent workflows:
|
|
|
32
32
|
- MCP server support via `stdio`, `streamable-http`, and `sse`
|
|
33
33
|
- MCP server `instructions` support: server-provided instructions are appended to the agent system prompt
|
|
34
34
|
- MCP channel notification support through `hooman daemon --channels`
|
|
35
|
-
- Skill discovery
|
|
35
|
+
- Skill discovery from local `~/.hooman/skills` folders
|
|
36
36
|
- Bundled prompt harness toggles (`behaviour`, `communication`, `execution`, `engineering`, `guardrails`)
|
|
37
37
|
- Built-in subagent runner tools (`research`, `plan`) with configurable concurrency
|
|
38
38
|
- Toolkit-oriented architecture with configurable tools, prompts, memory, and transports
|
|
@@ -41,7 +41,7 @@ It gives you a practical toolkit to build and run agent workflows:
|
|
|
41
41
|
## Requirements
|
|
42
42
|
|
|
43
43
|
- [Node.js](https://nodejs.org) `>= 24`
|
|
44
|
-
- npm for
|
|
44
|
+
- npm for package installs and JavaScript tooling
|
|
45
45
|
- Provider credentials or local model runtime depending on the LLM you choose
|
|
46
46
|
|
|
47
47
|
## Usage
|
|
@@ -200,8 +200,8 @@ Runtime tool and prompt switches are controlled from `config.json`:
|
|
|
200
200
|
- `tools.sleep.enabled`
|
|
201
201
|
- `tools.ltm.enabled`
|
|
202
202
|
- `tools.wiki.enabled`
|
|
203
|
-
- `tools.mcp.enabled` (enables
|
|
204
|
-
- `tools.skills.enabled` (enables skills
|
|
203
|
+
- `tools.mcp.enabled` (enables configured MCP server tools/instructions)
|
|
204
|
+
- `tools.skills.enabled` (enables skills prompt guidance)
|
|
205
205
|
- `tools.agents.enabled` (enables built-in `run_agents` tool)
|
|
206
206
|
- `tools.agents.concurrency`
|
|
207
207
|
|
|
@@ -566,6 +566,7 @@ Skills are installed under:
|
|
|
566
566
|
~/.hooman/skills
|
|
567
567
|
```
|
|
568
568
|
|
|
569
|
+
Skills are discovered by scanning direct child directories for `SKILL.md`.
|
|
569
570
|
The configure workflow can:
|
|
570
571
|
|
|
571
572
|
- search the public skills catalog
|
|
@@ -25,19 +25,10 @@ const KNOWN_TOOL_KINDS = new Map([
|
|
|
25
25
|
["update_todos", "other"],
|
|
26
26
|
["get_current_time", "other"],
|
|
27
27
|
["convert_time", "other"],
|
|
28
|
-
["list_skills", "read"],
|
|
29
|
-
["search_skills", "search"],
|
|
30
|
-
["install_skill", "edit"],
|
|
31
|
-
["delete_skill", "edit"],
|
|
32
28
|
["store_memory", "edit"],
|
|
33
29
|
["search_memory", "search"],
|
|
34
30
|
["update_memory", "edit"],
|
|
35
31
|
["archive_memory", "edit"],
|
|
36
|
-
["list_mcp_servers", "read"],
|
|
37
|
-
["get_mcp_server", "read"],
|
|
38
|
-
["add_mcp_server", "edit"],
|
|
39
|
-
["update_mcp_server", "edit"],
|
|
40
|
-
["delete_mcp_server", "edit"],
|
|
41
32
|
]);
|
|
42
33
|
export { INTERNAL_ALWAYS_ALLOWED };
|
|
43
34
|
export function inferToolKind(toolName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tool-kind.js","sourceRoot":"","sources":["../../../src/acp/utils/tool-kind.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAmB;IACjD,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAC/B,CAAC,YAAY,EAAE,MAAM,CAAC;IACtB,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC5B,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC1B,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC1B,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,cAAc,EAAE,QAAQ,CAAC;IAC1B,CAAC,eAAe,EAAE,MAAM,CAAC;IACzB,CAAC,OAAO,EAAE,SAAS,CAAC;IACpB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAC3B,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC1B,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAC3B,CAAC,sBAAsB,EAAE,MAAM,CAAC;IAChC,CAAC,YAAY,EAAE,MAAM,CAAC;IACtB,CAAC,aAAa,EAAE,QAAQ,CAAC;IACzB,CAAC,YAAY,EAAE,QAAQ,CAAC;IACxB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,YAAY,EAAE,OAAO,CAAC;IACvB,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,CAAC,
|
|
1
|
+
{"version":3,"file":"tool-kind.js","sourceRoot":"","sources":["../../../src/acp/utils/tool-kind.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,uBAAuB,EAAE,MAAM,oCAAoC,CAAC;AAE7E,MAAM,gBAAgB,GAAG,IAAI,GAAG,CAAmB;IACjD,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,qBAAqB,EAAE,MAAM,CAAC;IAC/B,CAAC,YAAY,EAAE,MAAM,CAAC;IACtB,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,kBAAkB,EAAE,MAAM,CAAC;IAC5B,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC1B,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC1B,CAAC,WAAW,EAAE,MAAM,CAAC;IACrB,CAAC,cAAc,EAAE,QAAQ,CAAC;IAC1B,CAAC,eAAe,EAAE,MAAM,CAAC;IACzB,CAAC,OAAO,EAAE,SAAS,CAAC;IACpB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAC3B,CAAC,gBAAgB,EAAE,MAAM,CAAC;IAC1B,CAAC,iBAAiB,EAAE,MAAM,CAAC;IAC3B,CAAC,sBAAsB,EAAE,MAAM,CAAC;IAChC,CAAC,YAAY,EAAE,MAAM,CAAC;IACtB,CAAC,aAAa,EAAE,QAAQ,CAAC;IACzB,CAAC,YAAY,EAAE,QAAQ,CAAC;IACxB,CAAC,OAAO,EAAE,OAAO,CAAC;IAClB,CAAC,YAAY,EAAE,OAAO,CAAC;IACvB,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,CAAC,kBAAkB,EAAE,OAAO,CAAC;IAC7B,CAAC,cAAc,EAAE,OAAO,CAAC;IACzB,CAAC,cAAc,EAAE,MAAM,CAAC;IACxB,CAAC,eAAe,EAAE,QAAQ,CAAC;IAC3B,CAAC,eAAe,EAAE,MAAM,CAAC;IACzB,CAAC,gBAAgB,EAAE,MAAM,CAAC;CAC3B,CAAC,CAAC;AAEH,OAAO,EAAE,uBAAuB,EAAE,CAAC;AAEnC,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,OAAO,gBAAgB,CAAC,GAAG,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC;AACnD,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,QAAgB,EAChB,IAAsB;IAEtB,MAAM,IAAI,GAAG,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,CAAC;IACvC,IAAI,IAAI,IAAI,IAAI,CAAC,MAAM,IAAI,GAAG,EAAE,CAAC;QAC/B,OAAO,GAAG,QAAQ,KAAK,IAAI,EAAE,CAAC;IAChC,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
1
|
import { Agent } from "@strands-agents/sdk";
|
|
2
2
|
import type { Config } from "../config.js";
|
|
3
|
-
import
|
|
3
|
+
import type { Manager as McpManager } from "../mcp/index.js";
|
|
4
4
|
import type { System as SystemPrompt } from "../prompts/index.js";
|
|
5
|
-
import {
|
|
5
|
+
import type { Registry } from "../skills/index.js";
|
|
6
6
|
export declare function create(config: Config, system: SystemPrompt, registry: Registry, mcp: {
|
|
7
|
-
config: McpConfig;
|
|
8
7
|
manager: McpManager;
|
|
9
8
|
}, print: boolean | undefined, meta: {
|
|
10
9
|
userId?: string;
|
package/dist/core/agent/index.js
CHANGED
|
@@ -1,9 +1,7 @@
|
|
|
1
1
|
import { Agent, BeforeInvocationEvent } from "@strands-agents/sdk";
|
|
2
2
|
import { modelProviders } from "../models/index.js";
|
|
3
|
-
import { createMcpTools, } from "../mcp/index.js";
|
|
4
3
|
import { skills as createSkillsPrompt } from "../prompts/index.js";
|
|
5
4
|
import { createShortTermMemory, createLongTermMemoryStore, createLongTermMemoryTools, } from "../memory/index.js";
|
|
6
|
-
import { createSkillsTools } from "../skills/index.js";
|
|
7
5
|
import { createRunAgentsTools, loadBuiltInAgentDefinitions, } from "../agents/index.js";
|
|
8
6
|
import { createTodoTools, createFetchTools, createFilesystemTools, createSleepTools, createShellTools, createThinkingTools, createTimeTools, createWikiTools, createWebSearchTools, } from "../tools/index.js";
|
|
9
7
|
import { clearTodoState } from "../state/todos.js";
|
|
@@ -33,8 +31,6 @@ export async function create(config, system, registry, mcp, print = false, meta)
|
|
|
33
31
|
...(config.tools.shell.enabled ? createShellTools() : []),
|
|
34
32
|
...(config.search.enabled ? createWebSearchTools(config) : []),
|
|
35
33
|
...(config.tools.wiki.enabled ? createWikiTools(config) : []),
|
|
36
|
-
...(config.tools.mcp.enabled ? createMcpTools(mcp.config) : []),
|
|
37
|
-
...(config.tools.skills.enabled ? createSkillsTools(registry) : []),
|
|
38
34
|
...createThinkingTools(),
|
|
39
35
|
...prefixed,
|
|
40
36
|
];
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/agent/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,qBAAqB,EAAE,MAAM,qBAAqB,CAAC;AAGnE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/agent/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -33,10 +33,10 @@ export declare class Config {
|
|
|
33
33
|
private readJson;
|
|
34
34
|
/** Reload servers from disk (overwrites unsaved in-memory changes). */
|
|
35
35
|
reload(): void;
|
|
36
|
-
private persist;
|
|
37
36
|
/** All configured servers, stable sort by name. */
|
|
38
37
|
list(): NamedMcpTransport[];
|
|
39
38
|
get(name: string): McpTransport | undefined;
|
|
39
|
+
private persist;
|
|
40
40
|
add(name: string, transport: McpTransport): void;
|
|
41
41
|
update(name: string, transport: McpTransport): void;
|
|
42
42
|
remove(name: string): void;
|
package/dist/core/mcp/config.js
CHANGED
|
@@ -27,10 +27,6 @@ export class Config {
|
|
|
27
27
|
const parsed = McpServersFileSchema.parse(this.readJson());
|
|
28
28
|
this.servers = { ...parsed.mcpServers };
|
|
29
29
|
}
|
|
30
|
-
persist() {
|
|
31
|
-
const payload = { mcpServers: { ...this.servers } };
|
|
32
|
-
writeFileSync(this.path, JSON.stringify(payload, null, 2), "utf8");
|
|
33
|
-
}
|
|
34
30
|
/** All configured servers, stable sort by name. */
|
|
35
31
|
list() {
|
|
36
32
|
return Object.entries(this.servers)
|
|
@@ -40,25 +36,30 @@ export class Config {
|
|
|
40
36
|
get(name) {
|
|
41
37
|
return this.servers[name];
|
|
42
38
|
}
|
|
39
|
+
persist() {
|
|
40
|
+
const data = { mcpServers: this.servers };
|
|
41
|
+
writeFileSync(this.path, JSON.stringify(data, null, 2), "utf8");
|
|
42
|
+
}
|
|
43
43
|
add(name, transport) {
|
|
44
|
-
if (
|
|
45
|
-
throw new Error(`MCP server "${name}" already exists
|
|
44
|
+
if (this.servers[name]) {
|
|
45
|
+
throw new Error(`MCP server "${name}" already exists.`);
|
|
46
46
|
}
|
|
47
|
-
this.servers[name]
|
|
47
|
+
this.servers = { ...this.servers, [name]: transport };
|
|
48
48
|
this.persist();
|
|
49
49
|
}
|
|
50
50
|
update(name, transport) {
|
|
51
|
-
if (!
|
|
52
|
-
throw new Error(`MCP server "${name}" not
|
|
51
|
+
if (!this.servers[name]) {
|
|
52
|
+
throw new Error(`MCP server "${name}" does not exist.`);
|
|
53
53
|
}
|
|
54
|
-
this.servers[name]
|
|
54
|
+
this.servers = { ...this.servers, [name]: transport };
|
|
55
55
|
this.persist();
|
|
56
56
|
}
|
|
57
57
|
remove(name) {
|
|
58
|
-
if (!
|
|
59
|
-
throw new Error(`MCP server "${name}" not
|
|
58
|
+
if (!this.servers[name]) {
|
|
59
|
+
throw new Error(`MCP server "${name}" does not exist.`);
|
|
60
60
|
}
|
|
61
|
-
|
|
61
|
+
const { [name]: _removed, ...remaining } = this.servers;
|
|
62
|
+
this.servers = remaining;
|
|
62
63
|
this.persist();
|
|
63
64
|
}
|
|
64
65
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/mcp/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,YAAY,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAClE,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,kBAAkB,EAAqB,MAAM,YAAY,CAAC;AAEnE,MAAM,oBAAoB,GAAG,CAAC,CAAC,MAAM,CAAC;IACpC,UAAU,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,kBAAkB,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;CACxE,CAAC,CAAC;AAOH;;GAEG;AACH,MAAM,OAAO,MAAM;IACA,IAAI,CAAS;IACtB,OAAO,CAA+B;IAE9C,YAAmB,IAAY;QAC7B,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,OAAO,GAAG,EAAE,CAAC;QAClB,IAAI,CAAC,MAAM,EAAE,CAAC;IAChB,CAAC;IAEO,QAAQ;QACd,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;YAC3B,OAAO,EAAE,UAAU,EAAE,EAAE,EAAE,CAAC;QAC5B,CAAC;QACD,MAAM,GAAG,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,CAAmB,CAAC;IAC3C,CAAC;IAED,uEAAuE;IAChE,MAAM;QACX,MAAM,MAAM,GAAG,oBAAoB,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC;QAC3D,IAAI,CAAC,OAAO,GAAG,EAAE,GAAG,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1C,CAAC;
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/core/mcp/config.ts"],"names":[],"mappings":"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"}
|
package/dist/core/mcp/index.d.ts
CHANGED
|
@@ -3,6 +3,5 @@ import { Manager, HOOMAN_CHANNEL, HOOMAN_CHANNEL_PERMISSION, type ChannelMessage
|
|
|
3
3
|
export { Config, Manager };
|
|
4
4
|
export { HOOMAN_CHANNEL, HOOMAN_CHANNEL_PERMISSION };
|
|
5
5
|
export type { ChannelMessage, ChannelPermissionBehavior, ChannelSubscription, ChannelSubscriptionHandle, NamedMcpTransport, };
|
|
6
|
-
export { createMcpTools } from "./tools.js";
|
|
7
6
|
export declare function createMcpConfig(path: string): Config;
|
|
8
7
|
export declare function createMcpManager(config: Config, acp?: boolean, mcpServers?: readonly NamedMcpTransport[]): Manager;
|
package/dist/core/mcp/index.js
CHANGED
|
@@ -2,7 +2,6 @@ import { Config } from "./config.js";
|
|
|
2
2
|
import { Manager, HOOMAN_CHANNEL, HOOMAN_CHANNEL_PERMISSION, } from "./manager.js";
|
|
3
3
|
export { Config, Manager };
|
|
4
4
|
export { HOOMAN_CHANNEL, HOOMAN_CHANNEL_PERMISSION };
|
|
5
|
-
export { createMcpTools } from "./tools.js";
|
|
6
5
|
export function createMcpConfig(path) {
|
|
7
6
|
return new Config(path);
|
|
8
7
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA0B,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,OAAO,EACP,cAAc,EACd,yBAAyB,GAK1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/core/mcp/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAA0B,MAAM,aAAa,CAAC;AAC7D,OAAO,EACL,OAAO,EACP,cAAc,EACd,yBAAyB,GAK1B,MAAM,cAAc,CAAC;AAEtB,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;AAC3B,OAAO,EAAE,cAAc,EAAE,yBAAyB,EAAE,CAAC;AASrD,MAAM,UAAU,eAAe,CAAC,IAAY;IAC1C,OAAO,IAAI,MAAM,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,MAAM,UAAU,gBAAgB,CAC9B,MAAc,EACd,GAAG,GAAG,KAAK,EACX,aAA2C,EAAE;IAE7C,OAAO,IAAI,OAAO,CAAC,MAAM,EAAE,GAAG,EAAE,UAAU,CAAC,CAAC;AAC9C,CAAC"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { Registry } from "../skills/registry.js";
|
|
2
2
|
/**
|
|
3
3
|
* Builds the dynamic **Available skills** markdown block using
|
|
4
|
-
* {@link Registry.list}
|
|
4
|
+
* {@link Registry.list}, prefixed by a
|
|
5
5
|
* static **Built-in skills** section from `src/core/skills/built-in/`.
|
|
6
6
|
*
|
|
7
7
|
* Mirrors {@link System}: call {@link reload}, then read {@link content}.
|
|
@@ -3,14 +3,18 @@ import { dirname, join } from "node:path";
|
|
|
3
3
|
import { fileURLToPath } from "node:url";
|
|
4
4
|
import { parseSkillFrontmatter } from "../skills/metadata.js";
|
|
5
5
|
/** Folder names under `src/core/skills/built-in/<id>/SKILL.md` (also copied to `dist/`). */
|
|
6
|
-
const BUILTIN_SKILLS = [
|
|
6
|
+
const BUILTIN_SKILLS = [
|
|
7
|
+
"hooman-config",
|
|
8
|
+
"hooman-mcp",
|
|
9
|
+
"hooman-skills",
|
|
10
|
+
];
|
|
7
11
|
const BUILTIN_ROOT = join(dirname(fileURLToPath(import.meta.url)), "../skills/built-in");
|
|
8
12
|
/** Markdown for built-in skills; fixed at module load (paths match this install’s `built-in/` tree). */
|
|
9
13
|
const BUILTIN_SKILLS_SECTION = (() => {
|
|
10
14
|
const header = [
|
|
11
15
|
"## Built-in skills",
|
|
12
16
|
"",
|
|
13
|
-
"Shipped with hooman
|
|
17
|
+
"Shipped with hooman. When one matches the request, read its `SKILL.md` at the path shown and follow that guidance.",
|
|
14
18
|
"",
|
|
15
19
|
];
|
|
16
20
|
let any = false;
|
|
@@ -34,7 +38,7 @@ const BUILTIN_SKILLS_SECTION = (() => {
|
|
|
34
38
|
})();
|
|
35
39
|
/**
|
|
36
40
|
* Builds the dynamic **Available skills** markdown block using
|
|
37
|
-
* {@link Registry.list}
|
|
41
|
+
* {@link Registry.list}, prefixed by a
|
|
38
42
|
* static **Built-in skills** section from `src/core/skills/built-in/`.
|
|
39
43
|
*
|
|
40
44
|
* Mirrors {@link System}: call {@link reload}, then read {@link content}.
|
|
@@ -57,7 +61,7 @@ export class Skills {
|
|
|
57
61
|
this.data = [
|
|
58
62
|
"## Available skills",
|
|
59
63
|
"",
|
|
60
|
-
"
|
|
64
|
+
"Installed skills could not be loaded. Check `~/.hooman/skills` and try again later.",
|
|
61
65
|
"",
|
|
62
66
|
].join("\n");
|
|
63
67
|
return;
|
|
@@ -69,7 +73,7 @@ export class Skills {
|
|
|
69
73
|
"",
|
|
70
74
|
];
|
|
71
75
|
if (entries.length === 0) {
|
|
72
|
-
lines.push("No skills are installed yet.
|
|
76
|
+
lines.push("No skills are installed yet. Add skill folders under `~/.hooman/skills`.", "");
|
|
73
77
|
this.data = lines.join("\n").trim();
|
|
74
78
|
return;
|
|
75
79
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/core/prompts/skills.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAC;AAC1C,OAAO,EAAE,aAAa,EAAE,MAAM,UAAU,CAAC;AACzC,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAG9D,4FAA4F;AAC5F,MAAM,cAAc,GAAG,
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../../../src/core/prompts/skills.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,18 +1,18 @@
|
|
|
1
1
|
## Skills
|
|
2
2
|
|
|
3
|
-
You may have
|
|
3
|
+
You may have a dynamic **Available skills** section elsewhere in the system prompt listing installed skills with absolute paths to each `SKILL.md`.
|
|
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
8
|
- 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.
|
|
9
9
|
- Prefer **reading** `SKILL.md` over guessing conventions (naming, CLI flags, safety steps) that the skill is meant to encode.
|
|
10
|
-
- Do **not** load or follow skills that are unrelated to the current request, and do not treat the
|
|
10
|
+
- Do **not** load or follow skills that are unrelated to the current request, and do not treat the available-skills listing as mandatory background reading for every reply.
|
|
11
11
|
|
|
12
12
|
### Coordination with tools
|
|
13
13
|
|
|
14
14
|
- Use **filesystem** tools to read `SKILL.md` at the given path when you need full instructions.
|
|
15
|
-
-
|
|
15
|
+
- When the user wants to manage Hooman skills, use the built-in `hooman-skills` skill and edit `~/.hooman/skills` directly.
|
|
16
16
|
|
|
17
17
|
### Goal
|
|
18
18
|
|