clawd-automaton 0.1.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.
- package/LICENSE +21 -0
- package/README.md +178 -0
- package/constitution.md +25 -0
- package/dist/__tests__/heartbeat.test.d.ts +7 -0
- package/dist/__tests__/heartbeat.test.d.ts.map +1 -0
- package/dist/__tests__/heartbeat.test.js +125 -0
- package/dist/__tests__/heartbeat.test.js.map +1 -0
- package/dist/__tests__/loop.test.d.ts +7 -0
- package/dist/__tests__/loop.test.d.ts.map +1 -0
- package/dist/__tests__/loop.test.js +150 -0
- package/dist/__tests__/loop.test.js.map +1 -0
- package/dist/__tests__/mocks.d.ts +72 -0
- package/dist/__tests__/mocks.d.ts.map +1 -0
- package/dist/__tests__/mocks.js +197 -0
- package/dist/__tests__/mocks.js.map +1 -0
- package/dist/agent/context.d.ts +26 -0
- package/dist/agent/context.d.ts.map +1 -0
- package/dist/agent/context.js +115 -0
- package/dist/agent/context.js.map +1 -0
- package/dist/agent/injection-defense.d.ts +13 -0
- package/dist/agent/injection-defense.d.ts.map +1 -0
- package/dist/agent/injection-defense.js +236 -0
- package/dist/agent/injection-defense.js.map +1 -0
- package/dist/agent/loop.d.ts +25 -0
- package/dist/agent/loop.d.ts.map +1 -0
- package/dist/agent/loop.js +263 -0
- package/dist/agent/loop.js.map +1 -0
- package/dist/agent/system-prompt.d.ts +30 -0
- package/dist/agent/system-prompt.d.ts.map +1 -0
- package/dist/agent/system-prompt.js +241 -0
- package/dist/agent/system-prompt.js.map +1 -0
- package/dist/agent/tools.d.ts +17 -0
- package/dist/agent/tools.d.ts.map +1 -0
- package/dist/agent/tools.js +1413 -0
- package/dist/agent/tools.js.map +1 -0
- package/dist/clawd/backroom.d.ts +54 -0
- package/dist/clawd/backroom.d.ts.map +1 -0
- package/dist/clawd/backroom.js +130 -0
- package/dist/clawd/backroom.js.map +1 -0
- package/dist/clawd/client.d.ts +16 -0
- package/dist/clawd/client.d.ts.map +1 -0
- package/dist/clawd/client.js +256 -0
- package/dist/clawd/client.js.map +1 -0
- package/dist/clawd/convex-client.d.ts +130 -0
- package/dist/clawd/convex-client.d.ts.map +1 -0
- package/dist/clawd/convex-client.js +118 -0
- package/dist/clawd/convex-client.js.map +1 -0
- package/dist/clawd/credits.d.ts +24 -0
- package/dist/clawd/credits.d.ts.map +1 -0
- package/dist/clawd/credits.js +64 -0
- package/dist/clawd/credits.js.map +1 -0
- package/dist/clawd/deepseek-inference.d.ts +40 -0
- package/dist/clawd/deepseek-inference.d.ts.map +1 -0
- package/dist/clawd/deepseek-inference.js +143 -0
- package/dist/clawd/deepseek-inference.js.map +1 -0
- package/dist/clawd/inference.d.ts +17 -0
- package/dist/clawd/inference.d.ts.map +1 -0
- package/dist/clawd/inference.js +114 -0
- package/dist/clawd/inference.js.map +1 -0
- package/dist/clawd/x402.d.ts +48 -0
- package/dist/clawd/x402.d.ts.map +1 -0
- package/dist/clawd/x402.js +350 -0
- package/dist/clawd/x402.js.map +1 -0
- package/dist/config.d.ts +36 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +84 -0
- package/dist/config.js.map +1 -0
- package/dist/git/state-versioning.d.ts +39 -0
- package/dist/git/state-versioning.d.ts.map +1 -0
- package/dist/git/state-versioning.js +93 -0
- package/dist/git/state-versioning.js.map +1 -0
- package/dist/git/tools.d.ts +40 -0
- package/dist/git/tools.d.ts.map +1 -0
- package/dist/git/tools.js +140 -0
- package/dist/git/tools.js.map +1 -0
- package/dist/heartbeat/config.d.ts +23 -0
- package/dist/heartbeat/config.d.ts.map +1 -0
- package/dist/heartbeat/config.js +156 -0
- package/dist/heartbeat/config.js.map +1 -0
- package/dist/heartbeat/daemon.d.ts +28 -0
- package/dist/heartbeat/daemon.d.ts.map +1 -0
- package/dist/heartbeat/daemon.js +141 -0
- package/dist/heartbeat/daemon.js.map +1 -0
- package/dist/heartbeat/tasks.d.ts +24 -0
- package/dist/heartbeat/tasks.d.ts.map +1 -0
- package/dist/heartbeat/tasks.js +277 -0
- package/dist/heartbeat/tasks.js.map +1 -0
- package/dist/identity/provision.d.ts +28 -0
- package/dist/identity/provision.d.ts.map +1 -0
- package/dist/identity/provision.js +131 -0
- package/dist/identity/provision.js.map +1 -0
- package/dist/identity/wallet.d.ts +28 -0
- package/dist/identity/wallet.d.ts.map +1 -0
- package/dist/identity/wallet.js +69 -0
- package/dist/identity/wallet.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +358 -0
- package/dist/index.js.map +1 -0
- package/dist/ooda/claude-decision.d.ts +18 -0
- package/dist/ooda/claude-decision.d.ts.map +1 -0
- package/dist/ooda/claude-decision.js +82 -0
- package/dist/ooda/claude-decision.js.map +1 -0
- package/dist/ooda/journal.d.ts +22 -0
- package/dist/ooda/journal.d.ts.map +1 -0
- package/dist/ooda/journal.js +26 -0
- package/dist/ooda/journal.js.map +1 -0
- package/dist/ooda/loop.d.ts +3 -0
- package/dist/ooda/loop.d.ts.map +1 -0
- package/dist/ooda/loop.js +210 -0
- package/dist/ooda/loop.js.map +1 -0
- package/dist/ooda/observe.d.ts +21 -0
- package/dist/ooda/observe.d.ts.map +1 -0
- package/dist/ooda/observe.js +75 -0
- package/dist/ooda/observe.js.map +1 -0
- package/dist/ooda/state.d.ts +34 -0
- package/dist/ooda/state.d.ts.map +1 -0
- package/dist/ooda/state.js +48 -0
- package/dist/ooda/state.js.map +1 -0
- package/dist/ooda/tui.d.ts +3 -0
- package/dist/ooda/tui.d.ts.map +1 -0
- package/dist/ooda/tui.js +132 -0
- package/dist/ooda/tui.js.map +1 -0
- package/dist/ooda/validate.d.ts +33 -0
- package/dist/ooda/validate.d.ts.map +1 -0
- package/dist/ooda/validate.js +91 -0
- package/dist/ooda/validate.js.map +1 -0
- package/dist/registry/agent-card.d.ts +26 -0
- package/dist/registry/agent-card.d.ts.map +1 -0
- package/dist/registry/agent-card.js +94 -0
- package/dist/registry/agent-card.js.map +1 -0
- package/dist/registry/discovery.d.ts +24 -0
- package/dist/registry/discovery.d.ts.map +1 -0
- package/dist/registry/discovery.js +74 -0
- package/dist/registry/discovery.js.map +1 -0
- package/dist/registry/erc8004.d.ts +39 -0
- package/dist/registry/erc8004.d.ts.map +1 -0
- package/dist/registry/erc8004.js +209 -0
- package/dist/registry/erc8004.js.map +1 -0
- package/dist/replication/genesis.d.ts +26 -0
- package/dist/replication/genesis.d.ts.map +1 -0
- package/dist/replication/genesis.js +72 -0
- package/dist/replication/genesis.js.map +1 -0
- package/dist/replication/lineage.d.ts +35 -0
- package/dist/replication/lineage.d.ts.map +1 -0
- package/dist/replication/lineage.js +79 -0
- package/dist/replication/lineage.js.map +1 -0
- package/dist/replication/spawn.d.ts +25 -0
- package/dist/replication/spawn.d.ts.map +1 -0
- package/dist/replication/spawn.js +166 -0
- package/dist/replication/spawn.js.map +1 -0
- package/dist/self-mod/audit-log.d.ts +24 -0
- package/dist/self-mod/audit-log.d.ts.map +1 -0
- package/dist/self-mod/audit-log.js +49 -0
- package/dist/self-mod/audit-log.js.map +1 -0
- package/dist/self-mod/code.d.ts +51 -0
- package/dist/self-mod/code.d.ts.map +1 -0
- package/dist/self-mod/code.js +317 -0
- package/dist/self-mod/code.js.map +1 -0
- package/dist/self-mod/tools-manager.d.ts +30 -0
- package/dist/self-mod/tools-manager.d.ts.map +1 -0
- package/dist/self-mod/tools-manager.js +74 -0
- package/dist/self-mod/tools-manager.js.map +1 -0
- package/dist/self-mod/upstream.d.ts +36 -0
- package/dist/self-mod/upstream.d.ts.map +1 -0
- package/dist/self-mod/upstream.js +66 -0
- package/dist/self-mod/upstream.js.map +1 -0
- package/dist/setup/banner.d.ts +2 -0
- package/dist/setup/banner.d.ts.map +1 -0
- package/dist/setup/banner.js +22 -0
- package/dist/setup/banner.js.map +1 -0
- package/dist/setup/defaults.d.ts +3 -0
- package/dist/setup/defaults.d.ts.map +1 -0
- package/dist/setup/defaults.js +113 -0
- package/dist/setup/defaults.js.map +1 -0
- package/dist/setup/environment.d.ts +6 -0
- package/dist/setup/environment.d.ts.map +1 -0
- package/dist/setup/environment.js +24 -0
- package/dist/setup/environment.js.map +1 -0
- package/dist/setup/prompts.d.ts +5 -0
- package/dist/setup/prompts.d.ts.map +1 -0
- package/dist/setup/prompts.js +70 -0
- package/dist/setup/prompts.js.map +1 -0
- package/dist/setup/wizard.d.ts +3 -0
- package/dist/setup/wizard.d.ts.map +1 -0
- package/dist/setup/wizard.js +128 -0
- package/dist/setup/wizard.js.map +1 -0
- package/dist/skills/format.d.ts +14 -0
- package/dist/skills/format.d.ts.map +1 -0
- package/dist/skills/format.js +145 -0
- package/dist/skills/format.js.map +1 -0
- package/dist/skills/loader.d.ts +19 -0
- package/dist/skills/loader.d.ts.map +1 -0
- package/dist/skills/loader.js +98 -0
- package/dist/skills/loader.js.map +1 -0
- package/dist/skills/registry.d.ts +31 -0
- package/dist/skills/registry.d.ts.map +1 -0
- package/dist/skills/registry.js +111 -0
- package/dist/skills/registry.js.map +1 -0
- package/dist/social/client.d.ts +13 -0
- package/dist/social/client.d.ts.map +1 -0
- package/dist/social/client.js +89 -0
- package/dist/social/client.js.map +1 -0
- package/dist/state/database.d.ts +9 -0
- package/dist/state/database.d.ts.map +1 -0
- package/dist/state/database.js +401 -0
- package/dist/state/database.js.map +1 -0
- package/dist/state/schema.d.ts +11 -0
- package/dist/state/schema.d.ts.map +1 -0
- package/dist/state/schema.js +232 -0
- package/dist/state/schema.js.map +1 -0
- package/dist/survival/funding.d.ts +19 -0
- package/dist/survival/funding.d.ts.map +1 -0
- package/dist/survival/funding.js +62 -0
- package/dist/survival/funding.js.map +1 -0
- package/dist/survival/low-compute.d.ts +30 -0
- package/dist/survival/low-compute.d.ts.map +1 -0
- package/dist/survival/low-compute.js +72 -0
- package/dist/survival/low-compute.js.map +1 -0
- package/dist/survival/monitor.d.ts +23 -0
- package/dist/survival/monitor.d.ts.map +1 -0
- package/dist/survival/monitor.js +70 -0
- package/dist/survival/monitor.js.map +1 -0
- package/dist/types.d.ts +461 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +25 -0
- package/dist/types.js.map +1 -0
- package/package.json +85 -0
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills Loader
|
|
3
|
+
*
|
|
4
|
+
* Discovers and loads SKILL.md files from ~/.automaton/skills/
|
|
5
|
+
* Each skill is a directory containing a SKILL.md file with
|
|
6
|
+
* YAML frontmatter + Markdown instructions.
|
|
7
|
+
*/
|
|
8
|
+
import fs from "fs";
|
|
9
|
+
import path from "path";
|
|
10
|
+
import { parseSkillMd } from "./format.js";
|
|
11
|
+
/**
|
|
12
|
+
* Scan the skills directory and load all valid SKILL.md files.
|
|
13
|
+
* Returns loaded skills and syncs them to the database.
|
|
14
|
+
*/
|
|
15
|
+
export function loadSkills(skillsDir, db) {
|
|
16
|
+
const resolvedDir = resolveHome(skillsDir);
|
|
17
|
+
if (!fs.existsSync(resolvedDir)) {
|
|
18
|
+
return db.getSkills(true);
|
|
19
|
+
}
|
|
20
|
+
const entries = fs.readdirSync(resolvedDir, { withFileTypes: true });
|
|
21
|
+
const loaded = [];
|
|
22
|
+
for (const entry of entries) {
|
|
23
|
+
if (!entry.isDirectory())
|
|
24
|
+
continue;
|
|
25
|
+
const skillMdPath = path.join(resolvedDir, entry.name, "SKILL.md");
|
|
26
|
+
if (!fs.existsSync(skillMdPath))
|
|
27
|
+
continue;
|
|
28
|
+
try {
|
|
29
|
+
const content = fs.readFileSync(skillMdPath, "utf-8");
|
|
30
|
+
const skill = parseSkillMd(content, skillMdPath);
|
|
31
|
+
if (!skill)
|
|
32
|
+
continue;
|
|
33
|
+
// Check requirements
|
|
34
|
+
if (!checkRequirements(skill)) {
|
|
35
|
+
continue;
|
|
36
|
+
}
|
|
37
|
+
// Check if already in DB and preserve enabled state
|
|
38
|
+
const existing = db.getSkillByName(skill.name);
|
|
39
|
+
if (existing) {
|
|
40
|
+
skill.enabled = existing.enabled;
|
|
41
|
+
skill.installedAt = existing.installedAt;
|
|
42
|
+
}
|
|
43
|
+
db.upsertSkill(skill);
|
|
44
|
+
loaded.push(skill);
|
|
45
|
+
}
|
|
46
|
+
catch {
|
|
47
|
+
// Skip invalid skill files
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
// Return all enabled skills (includes DB-only skills not on disk)
|
|
51
|
+
return db.getSkills(true);
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Check if a skill's requirements are met.
|
|
55
|
+
*/
|
|
56
|
+
function checkRequirements(skill) {
|
|
57
|
+
if (!skill.requires)
|
|
58
|
+
return true;
|
|
59
|
+
// Check required binaries
|
|
60
|
+
if (skill.requires.bins) {
|
|
61
|
+
for (const bin of skill.requires.bins) {
|
|
62
|
+
try {
|
|
63
|
+
const { execSync } = require("child_process");
|
|
64
|
+
execSync(`which ${bin}`, { stdio: "ignore" });
|
|
65
|
+
}
|
|
66
|
+
catch {
|
|
67
|
+
return false;
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
}
|
|
71
|
+
// Check required environment variables
|
|
72
|
+
if (skill.requires.env) {
|
|
73
|
+
for (const envVar of skill.requires.env) {
|
|
74
|
+
if (!process.env[envVar]) {
|
|
75
|
+
return false;
|
|
76
|
+
}
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
return true;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Get the active skill instructions to inject into the system prompt.
|
|
83
|
+
* Only returns instructions from auto-activate skills that are enabled.
|
|
84
|
+
*/
|
|
85
|
+
export function getActiveSkillInstructions(skills) {
|
|
86
|
+
const active = skills.filter((s) => s.enabled && s.autoActivate);
|
|
87
|
+
if (active.length === 0)
|
|
88
|
+
return "";
|
|
89
|
+
const sections = active.map((s) => `--- SKILL: ${s.name} ---\n${s.description ? `${s.description}\n\n` : ""}${s.instructions}\n--- END SKILL: ${s.name} ---`);
|
|
90
|
+
return sections.join("\n\n");
|
|
91
|
+
}
|
|
92
|
+
function resolveHome(p) {
|
|
93
|
+
if (p.startsWith("~")) {
|
|
94
|
+
return path.join(process.env.HOME || "/root", p.slice(1));
|
|
95
|
+
}
|
|
96
|
+
return p;
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=loader.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/skills/loader.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills Registry
|
|
3
|
+
*
|
|
4
|
+
* Install skills from remote sources:
|
|
5
|
+
* - Git repos: git clone <url> ~/.automaton/skills/<name>
|
|
6
|
+
* - URLs: fetch a SKILL.md from any URL
|
|
7
|
+
* - Self-created: the automaton writes its own SKILL.md files
|
|
8
|
+
*/
|
|
9
|
+
import type { Skill, AutomatonDatabase, ClawdRuntimeClient } from "../types.js";
|
|
10
|
+
/**
|
|
11
|
+
* Install a skill from a git repository.
|
|
12
|
+
* Clones the repo into ~/.automaton/skills/<name>/
|
|
13
|
+
*/
|
|
14
|
+
export declare function installSkillFromGit(repoUrl: string, name: string, skillsDir: string, db: AutomatonDatabase, runtime: ClawdRuntimeClient): Promise<Skill | null>;
|
|
15
|
+
/**
|
|
16
|
+
* Install a skill from a URL (fetches a single SKILL.md).
|
|
17
|
+
*/
|
|
18
|
+
export declare function installSkillFromUrl(url: string, name: string, skillsDir: string, db: AutomatonDatabase, runtime: ClawdRuntimeClient): Promise<Skill | null>;
|
|
19
|
+
/**
|
|
20
|
+
* Create a new skill authored by the automaton itself.
|
|
21
|
+
*/
|
|
22
|
+
export declare function createSkill(name: string, description: string, instructions: string, skillsDir: string, db: AutomatonDatabase, runtime: ClawdRuntimeClient): Promise<Skill>;
|
|
23
|
+
/**
|
|
24
|
+
* Remove a skill (disable in DB and optionally delete from disk).
|
|
25
|
+
*/
|
|
26
|
+
export declare function removeSkill(name: string, db: AutomatonDatabase, runtime: ClawdRuntimeClient, skillsDir: string, deleteFiles?: boolean): Promise<void>;
|
|
27
|
+
/**
|
|
28
|
+
* List all installed skills.
|
|
29
|
+
*/
|
|
30
|
+
export declare function listSkills(db: AutomatonDatabase): Skill[];
|
|
31
|
+
//# sourceMappingURL=registry.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAIH,OAAO,KAAK,EACV,KAAK,EAEL,iBAAiB,EACjB,kBAAkB,EACnB,MAAM,aAAa,CAAC;AAGrB;;;GAGG;AACH,wBAAsB,mBAAmB,CACvC,OAAO,EAAE,MAAM,EACf,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,iBAAiB,EACrB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CA6BvB;AAED;;GAEG;AACH,wBAAsB,mBAAmB,CACvC,GAAG,EAAE,MAAM,EACX,IAAI,EAAE,MAAM,EACZ,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,iBAAiB,EACrB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,KAAK,GAAG,IAAI,CAAC,CA8BvB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,WAAW,EAAE,MAAM,EACnB,YAAY,EAAE,MAAM,EACpB,SAAS,EAAE,MAAM,EACjB,EAAE,EAAE,iBAAiB,EACrB,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,KAAK,CAAC,CA+BhB;AAED;;GAEG;AACH,wBAAsB,WAAW,CAC/B,IAAI,EAAE,MAAM,EACZ,EAAE,EAAE,iBAAiB,EACrB,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,WAAW,GAAE,OAAe,GAC3B,OAAO,CAAC,IAAI,CAAC,CAQf;AAED;;GAEG;AACH,wBAAgB,UAAU,CAAC,EAAE,EAAE,iBAAiB,GAAG,KAAK,EAAE,CAEzD"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills Registry
|
|
3
|
+
*
|
|
4
|
+
* Install skills from remote sources:
|
|
5
|
+
* - Git repos: git clone <url> ~/.automaton/skills/<name>
|
|
6
|
+
* - URLs: fetch a SKILL.md from any URL
|
|
7
|
+
* - Self-created: the automaton writes its own SKILL.md files
|
|
8
|
+
*/
|
|
9
|
+
import path from "path";
|
|
10
|
+
import { parseSkillMd } from "./format.js";
|
|
11
|
+
/**
|
|
12
|
+
* Install a skill from a git repository.
|
|
13
|
+
* Clones the repo into ~/.automaton/skills/<name>/
|
|
14
|
+
*/
|
|
15
|
+
export async function installSkillFromGit(repoUrl, name, skillsDir, db, runtime) {
|
|
16
|
+
const resolvedDir = resolveHome(skillsDir);
|
|
17
|
+
const targetDir = path.join(resolvedDir, name);
|
|
18
|
+
// Clone via sandbox exec
|
|
19
|
+
const result = await runtime.exec(`git clone --depth 1 ${repoUrl} ${targetDir}`, 60000);
|
|
20
|
+
if (result.exitCode !== 0) {
|
|
21
|
+
throw new Error(`Failed to clone skill repo: ${result.stderr}`);
|
|
22
|
+
}
|
|
23
|
+
// Look for SKILL.md
|
|
24
|
+
const skillMdPath = path.join(targetDir, "SKILL.md");
|
|
25
|
+
const checkResult = await runtime.exec(`cat ${skillMdPath}`, 5000);
|
|
26
|
+
if (checkResult.exitCode !== 0) {
|
|
27
|
+
throw new Error(`No SKILL.md found in cloned repo at ${skillMdPath}`);
|
|
28
|
+
}
|
|
29
|
+
const skill = parseSkillMd(checkResult.stdout, skillMdPath, "git");
|
|
30
|
+
if (!skill) {
|
|
31
|
+
throw new Error("Failed to parse SKILL.md from cloned repo");
|
|
32
|
+
}
|
|
33
|
+
db.upsertSkill(skill);
|
|
34
|
+
return skill;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Install a skill from a URL (fetches a single SKILL.md).
|
|
38
|
+
*/
|
|
39
|
+
export async function installSkillFromUrl(url, name, skillsDir, db, runtime) {
|
|
40
|
+
const resolvedDir = resolveHome(skillsDir);
|
|
41
|
+
const targetDir = path.join(resolvedDir, name);
|
|
42
|
+
// Create directory
|
|
43
|
+
await runtime.exec(`mkdir -p ${targetDir}`, 5000);
|
|
44
|
+
// Fetch SKILL.md
|
|
45
|
+
const result = await runtime.exec(`curl -fsSL "${url}" -o ${targetDir}/SKILL.md`, 30000);
|
|
46
|
+
if (result.exitCode !== 0) {
|
|
47
|
+
throw new Error(`Failed to fetch SKILL.md from URL: ${result.stderr}`);
|
|
48
|
+
}
|
|
49
|
+
const content = await runtime.exec(`cat ${targetDir}/SKILL.md`, 5000);
|
|
50
|
+
const skillMdPath = path.join(targetDir, "SKILL.md");
|
|
51
|
+
const skill = parseSkillMd(content.stdout, skillMdPath, "url");
|
|
52
|
+
if (!skill) {
|
|
53
|
+
throw new Error("Failed to parse fetched SKILL.md");
|
|
54
|
+
}
|
|
55
|
+
db.upsertSkill(skill);
|
|
56
|
+
return skill;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Create a new skill authored by the automaton itself.
|
|
60
|
+
*/
|
|
61
|
+
export async function createSkill(name, description, instructions, skillsDir, db, runtime) {
|
|
62
|
+
const resolvedDir = resolveHome(skillsDir);
|
|
63
|
+
const targetDir = path.join(resolvedDir, name);
|
|
64
|
+
// Create directory
|
|
65
|
+
await runtime.exec(`mkdir -p ${targetDir}`, 5000);
|
|
66
|
+
// Write SKILL.md
|
|
67
|
+
const content = `---
|
|
68
|
+
name: ${name}
|
|
69
|
+
description: "${description}"
|
|
70
|
+
auto-activate: true
|
|
71
|
+
---
|
|
72
|
+
${instructions}`;
|
|
73
|
+
const skillMdPath = path.join(targetDir, "SKILL.md");
|
|
74
|
+
await runtime.writeFile(skillMdPath, content);
|
|
75
|
+
const skill = {
|
|
76
|
+
name,
|
|
77
|
+
description,
|
|
78
|
+
autoActivate: true,
|
|
79
|
+
instructions,
|
|
80
|
+
source: "self",
|
|
81
|
+
path: skillMdPath,
|
|
82
|
+
enabled: true,
|
|
83
|
+
installedAt: new Date().toISOString(),
|
|
84
|
+
};
|
|
85
|
+
db.upsertSkill(skill);
|
|
86
|
+
return skill;
|
|
87
|
+
}
|
|
88
|
+
/**
|
|
89
|
+
* Remove a skill (disable in DB and optionally delete from disk).
|
|
90
|
+
*/
|
|
91
|
+
export async function removeSkill(name, db, runtime, skillsDir, deleteFiles = false) {
|
|
92
|
+
db.removeSkill(name);
|
|
93
|
+
if (deleteFiles) {
|
|
94
|
+
const resolvedDir = resolveHome(skillsDir);
|
|
95
|
+
const targetDir = path.join(resolvedDir, name);
|
|
96
|
+
await runtime.exec(`rm -rf ${targetDir}`, 5000);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* List all installed skills.
|
|
101
|
+
*/
|
|
102
|
+
export function listSkills(db) {
|
|
103
|
+
return db.getSkills();
|
|
104
|
+
}
|
|
105
|
+
function resolveHome(p) {
|
|
106
|
+
if (p.startsWith("~")) {
|
|
107
|
+
return path.join(process.env.HOME || "/root", p.slice(1));
|
|
108
|
+
}
|
|
109
|
+
return p;
|
|
110
|
+
}
|
|
111
|
+
//# sourceMappingURL=registry.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registry.js","sourceRoot":"","sources":["../../src/skills/registry.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Social Client Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates a SocialClient for the automaton runtime.
|
|
5
|
+
* Self-contained: uses viem for signing and fetch for HTTP.
|
|
6
|
+
*/
|
|
7
|
+
import { type PrivateKeyAccount } from "viem";
|
|
8
|
+
import type { SocialClientInterface } from "../types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Create a SocialClient wired to the agent's wallet.
|
|
11
|
+
*/
|
|
12
|
+
export declare function createSocialClient(relayUrl: string, account: PrivateKeyAccount): SocialClientInterface;
|
|
13
|
+
//# sourceMappingURL=client.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/social/client.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EACL,KAAK,iBAAiB,EAGvB,MAAM,MAAM,CAAC;AACd,OAAO,KAAK,EAAE,qBAAqB,EAAgB,MAAM,aAAa,CAAC;AAEvE;;GAEG;AACH,wBAAgB,kBAAkB,CAChC,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,iBAAiB,GACzB,qBAAqB,CA+GvB"}
|
|
@@ -0,0 +1,89 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Social Client Factory
|
|
3
|
+
*
|
|
4
|
+
* Creates a SocialClient for the automaton runtime.
|
|
5
|
+
* Self-contained: uses viem for signing and fetch for HTTP.
|
|
6
|
+
*/
|
|
7
|
+
import { keccak256, toBytes, } from "viem";
|
|
8
|
+
/**
|
|
9
|
+
* Create a SocialClient wired to the agent's wallet.
|
|
10
|
+
*/
|
|
11
|
+
export function createSocialClient(relayUrl, account) {
|
|
12
|
+
const baseUrl = relayUrl.replace(/\/$/, "");
|
|
13
|
+
return {
|
|
14
|
+
send: async (to, content, replyTo) => {
|
|
15
|
+
const signedAt = new Date().toISOString();
|
|
16
|
+
const contentHash = keccak256(toBytes(content));
|
|
17
|
+
const canonical = `CLAWD Runtime:send:${to.toLowerCase()}:${contentHash}:${signedAt}`;
|
|
18
|
+
const signature = await account.signMessage({ message: canonical });
|
|
19
|
+
const res = await fetch(`${baseUrl}/v1/messages`, {
|
|
20
|
+
method: "POST",
|
|
21
|
+
headers: { "Content-Type": "application/json" },
|
|
22
|
+
body: JSON.stringify({
|
|
23
|
+
from: account.address.toLowerCase(),
|
|
24
|
+
to: to.toLowerCase(),
|
|
25
|
+
content,
|
|
26
|
+
signature,
|
|
27
|
+
signed_at: signedAt,
|
|
28
|
+
reply_to: replyTo,
|
|
29
|
+
}),
|
|
30
|
+
});
|
|
31
|
+
if (!res.ok) {
|
|
32
|
+
const err = await res.json().catch(() => ({ error: res.statusText }));
|
|
33
|
+
throw new Error(`Send failed (${res.status}): ${err.error || res.statusText}`);
|
|
34
|
+
}
|
|
35
|
+
const data = (await res.json());
|
|
36
|
+
return { id: data.id };
|
|
37
|
+
},
|
|
38
|
+
poll: async (cursor, limit) => {
|
|
39
|
+
const timestamp = new Date().toISOString();
|
|
40
|
+
const canonical = `CLAWD Runtime:poll:${account.address.toLowerCase()}:${timestamp}`;
|
|
41
|
+
const signature = await account.signMessage({ message: canonical });
|
|
42
|
+
const res = await fetch(`${baseUrl}/v1/messages/poll`, {
|
|
43
|
+
method: "POST",
|
|
44
|
+
headers: {
|
|
45
|
+
"Content-Type": "application/json",
|
|
46
|
+
"X-Wallet-Address": account.address.toLowerCase(),
|
|
47
|
+
"X-Signature": signature,
|
|
48
|
+
"X-Timestamp": timestamp,
|
|
49
|
+
},
|
|
50
|
+
body: JSON.stringify({ cursor, limit }),
|
|
51
|
+
});
|
|
52
|
+
if (!res.ok) {
|
|
53
|
+
const err = await res.json().catch(() => ({ error: res.statusText }));
|
|
54
|
+
throw new Error(`Poll failed (${res.status}): ${err.error || res.statusText}`);
|
|
55
|
+
}
|
|
56
|
+
const data = (await res.json());
|
|
57
|
+
return {
|
|
58
|
+
messages: data.messages.map((m) => ({
|
|
59
|
+
id: m.id,
|
|
60
|
+
from: m.from,
|
|
61
|
+
to: m.to,
|
|
62
|
+
content: m.content,
|
|
63
|
+
signedAt: m.signedAt,
|
|
64
|
+
createdAt: m.createdAt,
|
|
65
|
+
replyTo: m.replyTo,
|
|
66
|
+
})),
|
|
67
|
+
nextCursor: data.next_cursor,
|
|
68
|
+
};
|
|
69
|
+
},
|
|
70
|
+
unreadCount: async () => {
|
|
71
|
+
const timestamp = new Date().toISOString();
|
|
72
|
+
const canonical = `CLAWD Runtime:poll:${account.address.toLowerCase()}:${timestamp}`;
|
|
73
|
+
const signature = await account.signMessage({ message: canonical });
|
|
74
|
+
const res = await fetch(`${baseUrl}/v1/messages/count`, {
|
|
75
|
+
method: "GET",
|
|
76
|
+
headers: {
|
|
77
|
+
"X-Wallet-Address": account.address.toLowerCase(),
|
|
78
|
+
"X-Signature": signature,
|
|
79
|
+
"X-Timestamp": timestamp,
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
if (!res.ok)
|
|
83
|
+
return 0;
|
|
84
|
+
const data = (await res.json());
|
|
85
|
+
return data.unread;
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
//# sourceMappingURL=client.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/social/client.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Automaton Database
|
|
3
|
+
*
|
|
4
|
+
* SQLite-backed persistent state for the automaton.
|
|
5
|
+
* Uses better-sqlite3 for synchronous, single-process access.
|
|
6
|
+
*/
|
|
7
|
+
import type { AutomatonDatabase } from "../types.js";
|
|
8
|
+
export declare function createDatabase(dbPath: string): AutomatonDatabase;
|
|
9
|
+
//# sourceMappingURL=database.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"database.d.ts","sourceRoot":"","sources":["../../src/state/database.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAKH,OAAO,KAAK,EACV,iBAAiB,EAclB,MAAM,aAAa,CAAC;AAGrB,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,iBAAiB,CAidhE"}
|