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,39 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Versioning
|
|
3
|
+
*
|
|
4
|
+
* Version control the automaton's own state files (~/.automaton/).
|
|
5
|
+
* Every self-modification triggers a git commit with a descriptive message.
|
|
6
|
+
* The automaton's entire identity history is version-controlled and replayable.
|
|
7
|
+
*/
|
|
8
|
+
import type { ClawdRuntimeClient } from "../types.js";
|
|
9
|
+
/**
|
|
10
|
+
* Initialize git repo for the automaton's state directory.
|
|
11
|
+
* Creates .gitignore to exclude sensitive files.
|
|
12
|
+
*/
|
|
13
|
+
export declare function initStateRepo(runtime: ClawdRuntimeClient): Promise<void>;
|
|
14
|
+
/**
|
|
15
|
+
* Commit a state change with a descriptive message.
|
|
16
|
+
* Called after any self-modification.
|
|
17
|
+
*/
|
|
18
|
+
export declare function commitStateChange(runtime: ClawdRuntimeClient, description: string, category?: string): Promise<string>;
|
|
19
|
+
/**
|
|
20
|
+
* Commit after a SOUL.md update.
|
|
21
|
+
*/
|
|
22
|
+
export declare function commitSoulUpdate(runtime: ClawdRuntimeClient, description: string): Promise<string>;
|
|
23
|
+
/**
|
|
24
|
+
* Commit after a skill installation or removal.
|
|
25
|
+
*/
|
|
26
|
+
export declare function commitSkillChange(runtime: ClawdRuntimeClient, skillName: string, action: "install" | "remove" | "update"): Promise<string>;
|
|
27
|
+
/**
|
|
28
|
+
* Commit after heartbeat config change.
|
|
29
|
+
*/
|
|
30
|
+
export declare function commitHeartbeatChange(runtime: ClawdRuntimeClient, description: string): Promise<string>;
|
|
31
|
+
/**
|
|
32
|
+
* Commit after config change.
|
|
33
|
+
*/
|
|
34
|
+
export declare function commitConfigChange(runtime: ClawdRuntimeClient, description: string): Promise<string>;
|
|
35
|
+
/**
|
|
36
|
+
* Get the state repo history.
|
|
37
|
+
*/
|
|
38
|
+
export declare function getStateHistory(runtime: ClawdRuntimeClient, limit?: number): Promise<import("../types.js").GitLogEntry[]>;
|
|
39
|
+
//# sourceMappingURL=state-versioning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-versioning.d.ts","sourceRoot":"","sources":["../../src/git/state-versioning.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAqB,MAAM,aAAa,CAAC;AAazE;;;GAGG;AACH,wBAAsB,aAAa,CACjC,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,IAAI,CAAC,CAsCf;AAED;;;GAGG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,MAAM,EACnB,QAAQ,GAAE,MAAgB,GACzB,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;GAEG;AACH,wBAAsB,gBAAgB,CACpC,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,kBAAkB,EAC3B,SAAS,EAAE,MAAM,EACjB,MAAM,EAAE,SAAS,GAAG,QAAQ,GAAG,QAAQ,GACtC,OAAO,CAAC,MAAM,CAAC,CAMjB;AAED;;GAEG;AACH,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;GAEG;AACH,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,kBAAkB,EAC3B,WAAW,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAEjB;AAED;;GAEG;AACH,wBAAsB,eAAe,CACnC,OAAO,EAAE,kBAAkB,EAC3B,KAAK,GAAE,MAAW,gDAInB"}
|
|
@@ -0,0 +1,93 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* State Versioning
|
|
3
|
+
*
|
|
4
|
+
* Version control the automaton's own state files (~/.automaton/).
|
|
5
|
+
* Every self-modification triggers a git commit with a descriptive message.
|
|
6
|
+
* The automaton's entire identity history is version-controlled and replayable.
|
|
7
|
+
*/
|
|
8
|
+
import { gitInit, gitCommit, gitStatus, gitLog } from "./tools.js";
|
|
9
|
+
const AUTOMATON_DIR = "~/.automaton";
|
|
10
|
+
function resolveHome(p) {
|
|
11
|
+
const home = process.env.HOME || "/root";
|
|
12
|
+
if (p.startsWith("~")) {
|
|
13
|
+
return `${home}${p.slice(1)}`;
|
|
14
|
+
}
|
|
15
|
+
return p;
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Initialize git repo for the automaton's state directory.
|
|
19
|
+
* Creates .gitignore to exclude sensitive files.
|
|
20
|
+
*/
|
|
21
|
+
export async function initStateRepo(runtime) {
|
|
22
|
+
const dir = resolveHome(AUTOMATON_DIR);
|
|
23
|
+
// Check if already initialized
|
|
24
|
+
const checkResult = await runtime.exec(`test -d ${dir}/.git && echo "exists" || echo "nope"`, 5000);
|
|
25
|
+
if (checkResult.stdout.trim() === "exists") {
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
// Initialize
|
|
29
|
+
await gitInit(runtime, dir);
|
|
30
|
+
// Create .gitignore for sensitive files
|
|
31
|
+
const gitignore = `# Sensitive files - never commit
|
|
32
|
+
wallet.json
|
|
33
|
+
config.json
|
|
34
|
+
state.db
|
|
35
|
+
state.db-wal
|
|
36
|
+
state.db-shm
|
|
37
|
+
logs/
|
|
38
|
+
*.log
|
|
39
|
+
*.err
|
|
40
|
+
`;
|
|
41
|
+
await runtime.writeFile(`${dir}/.gitignore`, gitignore);
|
|
42
|
+
// Configure git user
|
|
43
|
+
await runtime.exec(`cd ${dir} && git config user.name "Automaton" && git config user.email "automaton@x402.wtf"`, 5000);
|
|
44
|
+
// Initial commit
|
|
45
|
+
await gitCommit(runtime, dir, "genesis: automaton state repository initialized");
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Commit a state change with a descriptive message.
|
|
49
|
+
* Called after any self-modification.
|
|
50
|
+
*/
|
|
51
|
+
export async function commitStateChange(runtime, description, category = "state") {
|
|
52
|
+
const dir = resolveHome(AUTOMATON_DIR);
|
|
53
|
+
// Check if there are changes
|
|
54
|
+
const status = await gitStatus(runtime, dir);
|
|
55
|
+
if (status.clean) {
|
|
56
|
+
return "No changes to commit";
|
|
57
|
+
}
|
|
58
|
+
const message = `${category}: ${description}`;
|
|
59
|
+
const result = await gitCommit(runtime, dir, message);
|
|
60
|
+
return result;
|
|
61
|
+
}
|
|
62
|
+
/**
|
|
63
|
+
* Commit after a SOUL.md update.
|
|
64
|
+
*/
|
|
65
|
+
export async function commitSoulUpdate(runtime, description) {
|
|
66
|
+
return commitStateChange(runtime, description, "soul");
|
|
67
|
+
}
|
|
68
|
+
/**
|
|
69
|
+
* Commit after a skill installation or removal.
|
|
70
|
+
*/
|
|
71
|
+
export async function commitSkillChange(runtime, skillName, action) {
|
|
72
|
+
return commitStateChange(runtime, `${action} skill: ${skillName}`, "skill");
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Commit after heartbeat config change.
|
|
76
|
+
*/
|
|
77
|
+
export async function commitHeartbeatChange(runtime, description) {
|
|
78
|
+
return commitStateChange(runtime, description, "heartbeat");
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Commit after config change.
|
|
82
|
+
*/
|
|
83
|
+
export async function commitConfigChange(runtime, description) {
|
|
84
|
+
return commitStateChange(runtime, description, "config");
|
|
85
|
+
}
|
|
86
|
+
/**
|
|
87
|
+
* Get the state repo history.
|
|
88
|
+
*/
|
|
89
|
+
export async function getStateHistory(runtime, limit = 20) {
|
|
90
|
+
const dir = resolveHome(AUTOMATON_DIR);
|
|
91
|
+
return gitLog(runtime, dir, limit);
|
|
92
|
+
}
|
|
93
|
+
//# sourceMappingURL=state-versioning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"state-versioning.js","sourceRoot":"","sources":["../../src/git/state-versioning.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Tools
|
|
3
|
+
*
|
|
4
|
+
* Built-in git operations for the automaton.
|
|
5
|
+
* Used for both state versioning and code development.
|
|
6
|
+
*/
|
|
7
|
+
import type { ClawdRuntimeClient, GitStatus, GitLogEntry } from "../types.js";
|
|
8
|
+
/**
|
|
9
|
+
* Get git status for a repository.
|
|
10
|
+
*/
|
|
11
|
+
export declare function gitStatus(runtime: ClawdRuntimeClient, repoPath: string): Promise<GitStatus>;
|
|
12
|
+
/**
|
|
13
|
+
* Get git diff output.
|
|
14
|
+
*/
|
|
15
|
+
export declare function gitDiff(runtime: ClawdRuntimeClient, repoPath: string, staged?: boolean): Promise<string>;
|
|
16
|
+
/**
|
|
17
|
+
* Create a git commit.
|
|
18
|
+
*/
|
|
19
|
+
export declare function gitCommit(runtime: ClawdRuntimeClient, repoPath: string, message: string, addAll?: boolean): Promise<string>;
|
|
20
|
+
/**
|
|
21
|
+
* Get git log.
|
|
22
|
+
*/
|
|
23
|
+
export declare function gitLog(runtime: ClawdRuntimeClient, repoPath: string, limit?: number): Promise<GitLogEntry[]>;
|
|
24
|
+
/**
|
|
25
|
+
* Push to remote.
|
|
26
|
+
*/
|
|
27
|
+
export declare function gitPush(runtime: ClawdRuntimeClient, repoPath: string, remote?: string, branch?: string): Promise<string>;
|
|
28
|
+
/**
|
|
29
|
+
* Manage branches.
|
|
30
|
+
*/
|
|
31
|
+
export declare function gitBranch(runtime: ClawdRuntimeClient, repoPath: string, action: "list" | "create" | "checkout" | "delete", branchName?: string): Promise<string>;
|
|
32
|
+
/**
|
|
33
|
+
* Clone a repository.
|
|
34
|
+
*/
|
|
35
|
+
export declare function gitClone(runtime: ClawdRuntimeClient, url: string, targetPath: string, depth?: number): Promise<string>;
|
|
36
|
+
/**
|
|
37
|
+
* Initialize a git repository.
|
|
38
|
+
*/
|
|
39
|
+
export declare function gitInit(runtime: ClawdRuntimeClient, repoPath: string): Promise<string>;
|
|
40
|
+
//# sourceMappingURL=tools.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../../src/git/tools.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,kBAAkB,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAE9E;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,SAAS,CAAC,CAuCpB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,OAAe,GACtB,OAAO,CAAC,MAAM,CAAC,CAOjB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,MAAM,EACf,MAAM,GAAE,OAAc,GACrB,OAAO,CAAC,MAAM,CAAC,CAejB;AAED;;GAEG;AACH,wBAAsB,MAAM,CAC1B,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,EAChB,KAAK,GAAE,MAAW,GACjB,OAAO,CAAC,WAAW,EAAE,CAAC,CAexB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,EAChB,MAAM,GAAE,MAAiB,EACzB,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;GAEG;AACH,wBAAsB,SAAS,CAC7B,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,GAAG,QAAQ,GAAG,UAAU,GAAG,QAAQ,EACjD,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,MAAM,CAAC,CAyBjB;AAED;;GAEG;AACH,wBAAsB,QAAQ,CAC5B,OAAO,EAAE,kBAAkB,EAC3B,GAAG,EAAE,MAAM,EACX,UAAU,EAAE,MAAM,EAClB,KAAK,CAAC,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAYjB;AAED;;GAEG;AACH,wBAAsB,OAAO,CAC3B,OAAO,EAAE,kBAAkB,EAC3B,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,MAAM,CAAC,CAMjB"}
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Git Tools
|
|
3
|
+
*
|
|
4
|
+
* Built-in git operations for the automaton.
|
|
5
|
+
* Used for both state versioning and code development.
|
|
6
|
+
*/
|
|
7
|
+
/**
|
|
8
|
+
* Get git status for a repository.
|
|
9
|
+
*/
|
|
10
|
+
export async function gitStatus(runtime, repoPath) {
|
|
11
|
+
const result = await runtime.exec(`cd ${repoPath} && git status --porcelain -b 2>/dev/null`, 10000);
|
|
12
|
+
const lines = result.stdout.split("\n").filter(Boolean);
|
|
13
|
+
let branch = "unknown";
|
|
14
|
+
const staged = [];
|
|
15
|
+
const modified = [];
|
|
16
|
+
const untracked = [];
|
|
17
|
+
for (const line of lines) {
|
|
18
|
+
if (line.startsWith("## ")) {
|
|
19
|
+
branch = line.slice(3).split("...")[0];
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
const statusCode = line.slice(0, 2);
|
|
23
|
+
const file = line.slice(3);
|
|
24
|
+
if (statusCode[0] !== " " && statusCode[0] !== "?") {
|
|
25
|
+
staged.push(file);
|
|
26
|
+
}
|
|
27
|
+
if (statusCode[1] === "M" || statusCode[1] === "D") {
|
|
28
|
+
modified.push(file);
|
|
29
|
+
}
|
|
30
|
+
if (statusCode === "??") {
|
|
31
|
+
untracked.push(file);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
return {
|
|
35
|
+
branch,
|
|
36
|
+
staged,
|
|
37
|
+
modified,
|
|
38
|
+
untracked,
|
|
39
|
+
clean: staged.length === 0 && modified.length === 0 && untracked.length === 0,
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
/**
|
|
43
|
+
* Get git diff output.
|
|
44
|
+
*/
|
|
45
|
+
export async function gitDiff(runtime, repoPath, staged = false) {
|
|
46
|
+
const flag = staged ? "--cached" : "";
|
|
47
|
+
const result = await runtime.exec(`cd ${repoPath} && git diff ${flag} 2>/dev/null`, 10000);
|
|
48
|
+
return result.stdout || "(no changes)";
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Create a git commit.
|
|
52
|
+
*/
|
|
53
|
+
export async function gitCommit(runtime, repoPath, message, addAll = true) {
|
|
54
|
+
if (addAll) {
|
|
55
|
+
await runtime.exec(`cd ${repoPath} && git add -A`, 10000);
|
|
56
|
+
}
|
|
57
|
+
const result = await runtime.exec(`cd ${repoPath} && git commit -m ${escapeShellArg(message)} --allow-empty 2>&1`, 10000);
|
|
58
|
+
if (result.exitCode !== 0) {
|
|
59
|
+
throw new Error(`Git commit failed: ${result.stderr || result.stdout}`);
|
|
60
|
+
}
|
|
61
|
+
return result.stdout;
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Get git log.
|
|
65
|
+
*/
|
|
66
|
+
export async function gitLog(runtime, repoPath, limit = 10) {
|
|
67
|
+
const result = await runtime.exec(`cd ${repoPath} && git log --format="%H|%s|%an|%ai" -n ${limit} 2>/dev/null`, 10000);
|
|
68
|
+
if (!result.stdout.trim())
|
|
69
|
+
return [];
|
|
70
|
+
return result.stdout
|
|
71
|
+
.trim()
|
|
72
|
+
.split("\n")
|
|
73
|
+
.map((line) => {
|
|
74
|
+
const [hash, message, author, date] = line.split("|");
|
|
75
|
+
return { hash, message, author, date };
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Push to remote.
|
|
80
|
+
*/
|
|
81
|
+
export async function gitPush(runtime, repoPath, remote = "origin", branch) {
|
|
82
|
+
const branchArg = branch ? ` ${branch}` : "";
|
|
83
|
+
const result = await runtime.exec(`cd ${repoPath} && git push ${remote}${branchArg} 2>&1`, 30000);
|
|
84
|
+
if (result.exitCode !== 0) {
|
|
85
|
+
throw new Error(`Git push failed: ${result.stderr || result.stdout}`);
|
|
86
|
+
}
|
|
87
|
+
return result.stdout || "Push successful";
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Manage branches.
|
|
91
|
+
*/
|
|
92
|
+
export async function gitBranch(runtime, repoPath, action, branchName) {
|
|
93
|
+
let cmd;
|
|
94
|
+
switch (action) {
|
|
95
|
+
case "list":
|
|
96
|
+
cmd = `cd ${repoPath} && git branch -a 2>/dev/null`;
|
|
97
|
+
break;
|
|
98
|
+
case "create":
|
|
99
|
+
if (!branchName)
|
|
100
|
+
throw new Error("Branch name required");
|
|
101
|
+
cmd = `cd ${repoPath} && git checkout -b ${escapeShellArg(branchName)} 2>&1`;
|
|
102
|
+
break;
|
|
103
|
+
case "checkout":
|
|
104
|
+
if (!branchName)
|
|
105
|
+
throw new Error("Branch name required");
|
|
106
|
+
cmd = `cd ${repoPath} && git checkout ${escapeShellArg(branchName)} 2>&1`;
|
|
107
|
+
break;
|
|
108
|
+
case "delete":
|
|
109
|
+
if (!branchName)
|
|
110
|
+
throw new Error("Branch name required");
|
|
111
|
+
cmd = `cd ${repoPath} && git branch -d ${escapeShellArg(branchName)} 2>&1`;
|
|
112
|
+
break;
|
|
113
|
+
default:
|
|
114
|
+
throw new Error(`Unknown branch action: ${action}`);
|
|
115
|
+
}
|
|
116
|
+
const result = await runtime.exec(cmd, 10000);
|
|
117
|
+
return result.stdout || result.stderr || "Done";
|
|
118
|
+
}
|
|
119
|
+
/**
|
|
120
|
+
* Clone a repository.
|
|
121
|
+
*/
|
|
122
|
+
export async function gitClone(runtime, url, targetPath, depth) {
|
|
123
|
+
const depthArg = depth ? ` --depth ${depth}` : "";
|
|
124
|
+
const result = await runtime.exec(`git clone${depthArg} ${url} ${targetPath} 2>&1`, 120000);
|
|
125
|
+
if (result.exitCode !== 0) {
|
|
126
|
+
throw new Error(`Git clone failed: ${result.stderr || result.stdout}`);
|
|
127
|
+
}
|
|
128
|
+
return `Cloned ${url} to ${targetPath}`;
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Initialize a git repository.
|
|
132
|
+
*/
|
|
133
|
+
export async function gitInit(runtime, repoPath) {
|
|
134
|
+
const result = await runtime.exec(`cd ${repoPath} && git init 2>&1`, 10000);
|
|
135
|
+
return result.stdout || "Git initialized";
|
|
136
|
+
}
|
|
137
|
+
function escapeShellArg(arg) {
|
|
138
|
+
return `'${arg.replace(/'/g, "'\\''")}'`;
|
|
139
|
+
}
|
|
140
|
+
//# sourceMappingURL=tools.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../../src/git/tools.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heartbeat Configuration
|
|
3
|
+
*
|
|
4
|
+
* Parses and manages heartbeat.yml configuration.
|
|
5
|
+
*/
|
|
6
|
+
import type { HeartbeatConfig, AutomatonDatabase } from "../types.js";
|
|
7
|
+
/**
|
|
8
|
+
* Load heartbeat config from YAML file, falling back to defaults.
|
|
9
|
+
*/
|
|
10
|
+
export declare function loadHeartbeatConfig(configPath?: string): HeartbeatConfig;
|
|
11
|
+
/**
|
|
12
|
+
* Save heartbeat config to YAML file.
|
|
13
|
+
*/
|
|
14
|
+
export declare function saveHeartbeatConfig(config: HeartbeatConfig, configPath?: string): void;
|
|
15
|
+
/**
|
|
16
|
+
* Write the default heartbeat.yml file.
|
|
17
|
+
*/
|
|
18
|
+
export declare function writeDefaultHeartbeatConfig(configPath?: string): void;
|
|
19
|
+
/**
|
|
20
|
+
* Sync heartbeat entries from YAML config into the database.
|
|
21
|
+
*/
|
|
22
|
+
export declare function syncHeartbeatToDb(config: HeartbeatConfig, db: AutomatonDatabase): void;
|
|
23
|
+
//# sourceMappingURL=config.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../src/heartbeat/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAKH,OAAO,KAAK,EAAkB,eAAe,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AA8DtF;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,eAAe,CAiCxE;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CACjC,MAAM,EAAE,eAAe,EACvB,UAAU,CAAC,EAAE,MAAM,GAClB,IAAI,CASN;AAED;;GAEG;AACH,wBAAgB,2BAA2B,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAErE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,eAAe,EACvB,EAAE,EAAE,iBAAiB,GACpB,IAAI,CAIN"}
|
|
@@ -0,0 +1,156 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heartbeat Configuration
|
|
3
|
+
*
|
|
4
|
+
* Parses and manages heartbeat.yml configuration.
|
|
5
|
+
*/
|
|
6
|
+
import fs from "fs";
|
|
7
|
+
import path from "path";
|
|
8
|
+
import YAML from "yaml";
|
|
9
|
+
import { getAutomatonDir } from "../identity/wallet.js";
|
|
10
|
+
const USDC_TOPUP_ENTRY_NAME = "check_usdc_balance";
|
|
11
|
+
const USDC_TOPUP_FAST_SCHEDULE = "*/5 * * * *";
|
|
12
|
+
const USDC_TOPUP_OLD_SCHEDULE = "0 */12 * * *";
|
|
13
|
+
const DEFAULT_HEARTBEAT_CONFIG = {
|
|
14
|
+
entries: [
|
|
15
|
+
{
|
|
16
|
+
name: "heartbeat_ping",
|
|
17
|
+
schedule: "*/15 * * * *",
|
|
18
|
+
task: "heartbeat_ping",
|
|
19
|
+
enabled: true,
|
|
20
|
+
},
|
|
21
|
+
{
|
|
22
|
+
name: "check_credits",
|
|
23
|
+
schedule: "0 */6 * * *",
|
|
24
|
+
task: "check_credits",
|
|
25
|
+
enabled: true,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
name: "check_usdc_balance",
|
|
29
|
+
schedule: USDC_TOPUP_FAST_SCHEDULE,
|
|
30
|
+
task: "check_usdc_balance",
|
|
31
|
+
enabled: true,
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: "check_for_updates",
|
|
35
|
+
schedule: "0 */4 * * *",
|
|
36
|
+
task: "check_for_updates",
|
|
37
|
+
enabled: true,
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
name: "health_check",
|
|
41
|
+
schedule: "*/30 * * * *",
|
|
42
|
+
task: "health_check",
|
|
43
|
+
enabled: true,
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: "convex_heartbeat",
|
|
47
|
+
schedule: "*/2 * * * *",
|
|
48
|
+
task: "convex_heartbeat",
|
|
49
|
+
enabled: true,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
name: "check_social_inbox",
|
|
53
|
+
schedule: "*/2 * * * *",
|
|
54
|
+
task: "check_social_inbox",
|
|
55
|
+
enabled: true,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
name: "backroom_conversation",
|
|
59
|
+
schedule: "0 */2 * * *",
|
|
60
|
+
task: "backroom_conversation",
|
|
61
|
+
enabled: true,
|
|
62
|
+
},
|
|
63
|
+
],
|
|
64
|
+
defaultIntervalMs: 60_000,
|
|
65
|
+
lowComputeMultiplier: 4,
|
|
66
|
+
};
|
|
67
|
+
/**
|
|
68
|
+
* Load heartbeat config from YAML file, falling back to defaults.
|
|
69
|
+
*/
|
|
70
|
+
export function loadHeartbeatConfig(configPath) {
|
|
71
|
+
const filePath = configPath || path.join(getAutomatonDir(), "heartbeat.yml");
|
|
72
|
+
if (!fs.existsSync(filePath)) {
|
|
73
|
+
return DEFAULT_HEARTBEAT_CONFIG;
|
|
74
|
+
}
|
|
75
|
+
try {
|
|
76
|
+
const raw = fs.readFileSync(filePath, "utf-8");
|
|
77
|
+
const parsed = YAML.parse(raw) || {};
|
|
78
|
+
const parsedEntries = (parsed.entries || []).map((e) => ({
|
|
79
|
+
name: e.name,
|
|
80
|
+
schedule: e.schedule,
|
|
81
|
+
task: e.task,
|
|
82
|
+
enabled: e.enabled !== false,
|
|
83
|
+
params: e.params,
|
|
84
|
+
}));
|
|
85
|
+
const entries = mergeWithDefaults(parsedEntries);
|
|
86
|
+
return {
|
|
87
|
+
entries,
|
|
88
|
+
defaultIntervalMs: parsed.defaultIntervalMs || DEFAULT_HEARTBEAT_CONFIG.defaultIntervalMs,
|
|
89
|
+
lowComputeMultiplier: parsed.lowComputeMultiplier ||
|
|
90
|
+
DEFAULT_HEARTBEAT_CONFIG.lowComputeMultiplier,
|
|
91
|
+
};
|
|
92
|
+
}
|
|
93
|
+
catch {
|
|
94
|
+
return DEFAULT_HEARTBEAT_CONFIG;
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Save heartbeat config to YAML file.
|
|
99
|
+
*/
|
|
100
|
+
export function saveHeartbeatConfig(config, configPath) {
|
|
101
|
+
const filePath = configPath || path.join(getAutomatonDir(), "heartbeat.yml");
|
|
102
|
+
const dir = path.dirname(filePath);
|
|
103
|
+
if (!fs.existsSync(dir)) {
|
|
104
|
+
fs.mkdirSync(dir, { recursive: true, mode: 0o700 });
|
|
105
|
+
}
|
|
106
|
+
fs.writeFileSync(filePath, YAML.stringify(config), { mode: 0o600 });
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Write the default heartbeat.yml file.
|
|
110
|
+
*/
|
|
111
|
+
export function writeDefaultHeartbeatConfig(configPath) {
|
|
112
|
+
saveHeartbeatConfig(DEFAULT_HEARTBEAT_CONFIG, configPath);
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Sync heartbeat entries from YAML config into the database.
|
|
116
|
+
*/
|
|
117
|
+
export function syncHeartbeatToDb(config, db) {
|
|
118
|
+
for (const entry of config.entries) {
|
|
119
|
+
db.upsertHeartbeatEntry(entry);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
function mergeWithDefaults(entries) {
|
|
123
|
+
const defaults = DEFAULT_HEARTBEAT_CONFIG.entries.map((entry) => ({ ...entry }));
|
|
124
|
+
const defaultsByName = new Map(defaults.map((entry) => [entry.name, entry]));
|
|
125
|
+
const mergedByName = new Map(defaultsByName);
|
|
126
|
+
for (const entry of entries) {
|
|
127
|
+
if (!entry?.name)
|
|
128
|
+
continue;
|
|
129
|
+
const fallback = defaultsByName.get(entry.name);
|
|
130
|
+
mergedByName.set(entry.name, {
|
|
131
|
+
...(fallback || {}),
|
|
132
|
+
...entry,
|
|
133
|
+
enabled: entry.enabled !== false,
|
|
134
|
+
task: entry.task || fallback?.task || "",
|
|
135
|
+
schedule: entry.schedule || fallback?.schedule || "",
|
|
136
|
+
});
|
|
137
|
+
}
|
|
138
|
+
const fallbackTopup = defaultsByName.get(USDC_TOPUP_ENTRY_NAME);
|
|
139
|
+
if (fallbackTopup) {
|
|
140
|
+
const current = mergedByName.get(USDC_TOPUP_ENTRY_NAME) || fallbackTopup;
|
|
141
|
+
const migratedSchedule = current.schedule?.trim() === USDC_TOPUP_OLD_SCHEDULE
|
|
142
|
+
? USDC_TOPUP_FAST_SCHEDULE
|
|
143
|
+
: current.schedule || fallbackTopup.schedule;
|
|
144
|
+
mergedByName.set(USDC_TOPUP_ENTRY_NAME, {
|
|
145
|
+
...fallbackTopup,
|
|
146
|
+
...current,
|
|
147
|
+
task: current.task || fallbackTopup.task,
|
|
148
|
+
schedule: migratedSchedule,
|
|
149
|
+
});
|
|
150
|
+
}
|
|
151
|
+
const orderedDefaultEntries = defaults.map((defaultEntry) => mergedByName.get(defaultEntry.name) || defaultEntry);
|
|
152
|
+
const knownNames = new Set(defaults.map((entry) => entry.name));
|
|
153
|
+
const customEntries = [...mergedByName.values()].filter((entry) => !knownNames.has(entry.name));
|
|
154
|
+
return [...orderedDefaultEntries, ...customEntries];
|
|
155
|
+
}
|
|
156
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../src/heartbeat/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Heartbeat Daemon
|
|
3
|
+
*
|
|
4
|
+
* Runs periodic tasks on cron schedules inside the same Node.js process.
|
|
5
|
+
* The heartbeat runs even when the agent is sleeping.
|
|
6
|
+
* It IS the automaton's pulse. When it stops, the automaton is dead.
|
|
7
|
+
*/
|
|
8
|
+
import type { AutomatonConfig, AutomatonDatabase, ClawdRuntimeClient, AutomatonIdentity, SocialClientInterface, InferenceClient } from "../types.js";
|
|
9
|
+
export interface HeartbeatDaemonOptions {
|
|
10
|
+
identity: AutomatonIdentity;
|
|
11
|
+
config: AutomatonConfig;
|
|
12
|
+
db: AutomatonDatabase;
|
|
13
|
+
runtime: ClawdRuntimeClient;
|
|
14
|
+
inference?: InferenceClient;
|
|
15
|
+
social?: SocialClientInterface;
|
|
16
|
+
onWakeRequest?: (reason: string) => void;
|
|
17
|
+
}
|
|
18
|
+
export interface HeartbeatDaemon {
|
|
19
|
+
start(): void;
|
|
20
|
+
stop(): void;
|
|
21
|
+
isRunning(): boolean;
|
|
22
|
+
forceRun(taskName: string): Promise<void>;
|
|
23
|
+
}
|
|
24
|
+
/**
|
|
25
|
+
* Create and return the heartbeat daemon.
|
|
26
|
+
*/
|
|
27
|
+
export declare function createHeartbeatDaemon(options: HeartbeatDaemonOptions): HeartbeatDaemon;
|
|
28
|
+
//# sourceMappingURL=daemon.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"daemon.d.ts","sourceRoot":"","sources":["../../src/heartbeat/daemon.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EACV,eAAe,EACf,iBAAiB,EACjB,kBAAkB,EAClB,iBAAiB,EAEjB,qBAAqB,EACrB,eAAe,EAChB,MAAM,aAAa,CAAC;AAIrB,MAAM,WAAW,sBAAsB;IACrC,QAAQ,EAAE,iBAAiB,CAAC;IAC5B,MAAM,EAAE,eAAe,CAAC;IACxB,EAAE,EAAE,iBAAiB,CAAC;IACtB,OAAO,EAAE,kBAAkB,CAAC;IAC5B,SAAS,CAAC,EAAE,eAAe,CAAC;IAC5B,MAAM,CAAC,EAAE,qBAAqB,CAAC;IAC/B,aAAa,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CAC1C;AAED,MAAM,WAAW,eAAe;IAC9B,KAAK,IAAI,IAAI,CAAC;IACd,IAAI,IAAI,IAAI,CAAC;IACb,SAAS,IAAI,OAAO,CAAC;IACrB,QAAQ,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;CAC3C;AAED;;GAEG;AACH,wBAAgB,qBAAqB,CACnC,OAAO,EAAE,sBAAsB,GAC9B,eAAe,CAmJjB"}
|