@ebowwa/daemons 0.5.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/README.md +264 -0
- package/dist/bin/discord-cli.js +124118 -0
- package/dist/bin/manager.js +143 -0
- package/dist/bin/telegram-cli.js +124114 -0
- package/dist/index.js +125340 -0
- package/package.json +94 -0
- package/src/agent.ts +111 -0
- package/src/channels/base.ts +573 -0
- package/src/channels/discord.ts +306 -0
- package/src/channels/index.ts +169 -0
- package/src/channels/telegram.ts +315 -0
- package/src/daemon.ts +534 -0
- package/src/hooks.ts +97 -0
- package/src/index.ts +111 -0
- package/src/memory.ts +369 -0
- package/src/skills/coding/commit.ts +202 -0
- package/src/skills/coding/execute-subtask.ts +136 -0
- package/src/skills/coding/fix-issues.ts +126 -0
- package/src/skills/coding/index.ts +26 -0
- package/src/skills/coding/plan-task.ts +158 -0
- package/src/skills/coding/quality-check.ts +155 -0
- package/src/skills/index.ts +65 -0
- package/src/skills/registry.ts +380 -0
- package/src/skills/shared/index.ts +21 -0
- package/src/skills/shared/reflect.ts +156 -0
- package/src/skills/shared/review.ts +201 -0
- package/src/skills/shared/trajectory.ts +319 -0
- package/src/skills/trading/analyze-market.ts +144 -0
- package/src/skills/trading/check-risk.ts +176 -0
- package/src/skills/trading/execute-trade.ts +185 -0
- package/src/skills/trading/generate-signal.ts +160 -0
- package/src/skills/trading/index.ts +26 -0
- package/src/skills/trading/monitor-position.ts +179 -0
- package/src/skills/types.ts +235 -0
- package/src/skills/workflows.ts +340 -0
- package/src/state.ts +77 -0
- package/src/tools.ts +134 -0
- package/src/types.ts +314 -0
- package/src/workflow.ts +341 -0
- package/src/workflows/coding.ts +580 -0
- package/src/workflows/index.ts +61 -0
- package/src/workflows/trading.ts +608 -0
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
#!/usr/bin/env bun
|
|
2
|
+
// @bun
|
|
3
|
+
|
|
4
|
+
// bin/manager.ts
|
|
5
|
+
var {$ } = globalThis.Bun;
|
|
6
|
+
var INSTALL_DIR = process.env.HOME + "/.glm-daemon";
|
|
7
|
+
var BIN_DIR = INSTALL_DIR + "/bin";
|
|
8
|
+
var SERVICE_DIR = process.env.HOME + "/.config/systemd/user";
|
|
9
|
+
async function install() {
|
|
10
|
+
console.log(`\uD83D\uDE80 Installing GLM daemon channels...
|
|
11
|
+
`);
|
|
12
|
+
await $`mkdir -p ${BIN_DIR}`;
|
|
13
|
+
await $`mkdir -p ${INSTALL_DIR}/logs`;
|
|
14
|
+
await $`mkdir -p ${INSTALL_DIR}/data`;
|
|
15
|
+
await $`mkdir -p ${INSTALL_DIR}/pids`;
|
|
16
|
+
await $`mkdir -p ${SERVICE_DIR}`;
|
|
17
|
+
const channels = [
|
|
18
|
+
{ name: "telegram", bin: "glm-daemon-telegram", desc: "Telegram bot" },
|
|
19
|
+
{ name: "discord", bin: "glm-daemon-discord", desc: "Discord bot" }
|
|
20
|
+
];
|
|
21
|
+
for (const channel of channels) {
|
|
22
|
+
const serviceFile = `${SERVICE_DIR}/glm-daemon-${channel.name}.service`;
|
|
23
|
+
const serviceContent = `[Unit]
|
|
24
|
+
Description=GLM Daemon ${channel.desc}
|
|
25
|
+
After=network.target doppler.service
|
|
26
|
+
|
|
27
|
+
[Service]
|
|
28
|
+
Type=simple
|
|
29
|
+
User=${process.env.USER}
|
|
30
|
+
WorkingDirectory=${INSTALL_DIR}
|
|
31
|
+
ExecStart=/bin/sh -c "doppler run -- ${channel.bin}"
|
|
32
|
+
Restart=on-failure
|
|
33
|
+
RestartSec=10
|
|
34
|
+
StandardOutput=journal
|
|
35
|
+
StandardError=journal
|
|
36
|
+
SyslogIdentifier=glm-daemon-${channel.name}
|
|
37
|
+
|
|
38
|
+
[Install]
|
|
39
|
+
WantedBy=default.target
|
|
40
|
+
`;
|
|
41
|
+
await $`cat > ${serviceFile}`.stdin(serviceContent);
|
|
42
|
+
console.log(` \u2705 Created ${channel.name} service`);
|
|
43
|
+
}
|
|
44
|
+
await $`systemctl --user daemon-reload`;
|
|
45
|
+
console.log(`
|
|
46
|
+
\u2705 Installation complete!
|
|
47
|
+
`);
|
|
48
|
+
console.log("To enable and start services:");
|
|
49
|
+
console.log(" systemctl --user enable --now glm-daemon-telegram");
|
|
50
|
+
console.log(" systemctl --user enable --now glm-daemon-discord");
|
|
51
|
+
console.log(`
|
|
52
|
+
To manage services:`);
|
|
53
|
+
console.log(" systemctl --user start glm-daemon-telegram");
|
|
54
|
+
console.log(" systemctl --user stop glm-daemon-telegram");
|
|
55
|
+
console.log(" systemctl --user status glm-daemon-telegram");
|
|
56
|
+
console.log(`
|
|
57
|
+
View logs:`);
|
|
58
|
+
console.log(" journalctl --user -u glm-daemon-telegram -f");
|
|
59
|
+
}
|
|
60
|
+
async function uninstall() {
|
|
61
|
+
console.log(`\uD83D\uDDD1\uFE0F Uninstalling GLM daemon channels...
|
|
62
|
+
`);
|
|
63
|
+
const channels = ["telegram", "discord"];
|
|
64
|
+
for (const channel of channels) {
|
|
65
|
+
const serviceFile = `${SERVICE_DIR}/glm-daemon-${channel}.service`;
|
|
66
|
+
try {
|
|
67
|
+
await $`test -f ${serviceFile}`;
|
|
68
|
+
await $`systemctl --user stop glm-daemon-${channel}`.quiet();
|
|
69
|
+
await $`systemctl --user disable glm-daemon-${channel}`.quiet();
|
|
70
|
+
await $`rm ${serviceFile}`;
|
|
71
|
+
console.log(` \u2705 Removed ${channel} service`);
|
|
72
|
+
} catch {
|
|
73
|
+
console.log(` \u26A0\uFE0F ${channel} service not found`);
|
|
74
|
+
}
|
|
75
|
+
}
|
|
76
|
+
await $`systemctl --user daemon-reload`;
|
|
77
|
+
console.log(`
|
|
78
|
+
\u2705 Uninstallation complete!`);
|
|
79
|
+
}
|
|
80
|
+
async function status() {
|
|
81
|
+
console.log(`\uD83D\uDCCA GLM Daemon Channels Status
|
|
82
|
+
`);
|
|
83
|
+
const channels = ["telegram", "discord"];
|
|
84
|
+
for (const channel of channels) {
|
|
85
|
+
const serviceName = `glm-daemon-${channel}`;
|
|
86
|
+
try {
|
|
87
|
+
const result = await $`systemctl --user is-active ${serviceName}`.quiet();
|
|
88
|
+
const isActive = result.exitCode === 0;
|
|
89
|
+
if (isActive) {
|
|
90
|
+
const statusResult = await $`systemctl --user status ${serviceName}`;
|
|
91
|
+
console.log(`\u2705 ${channel}: ACTIVE`);
|
|
92
|
+
} else {
|
|
93
|
+
console.log(`\u23F8\uFE0F ${channel}: INACTIVE`);
|
|
94
|
+
}
|
|
95
|
+
} catch {
|
|
96
|
+
console.log(`\u274C ${channel}: NOT INSTALLED`);
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
async function logs(channel, follow = false) {
|
|
101
|
+
const serviceName = `glm-daemon-${channel}`;
|
|
102
|
+
const cmd = follow ? "journalctl --user -u " + serviceName + " -f" : "journalctl --user -u " + serviceName + " -n 50";
|
|
103
|
+
await $`${cmd}`;
|
|
104
|
+
}
|
|
105
|
+
async function main() {
|
|
106
|
+
const command = process.argv[2];
|
|
107
|
+
switch (command) {
|
|
108
|
+
case "install":
|
|
109
|
+
await install();
|
|
110
|
+
break;
|
|
111
|
+
case "uninstall":
|
|
112
|
+
await uninstall();
|
|
113
|
+
break;
|
|
114
|
+
case "status":
|
|
115
|
+
await status();
|
|
116
|
+
break;
|
|
117
|
+
case "logs":
|
|
118
|
+
const channel = process.argv[3];
|
|
119
|
+
if (!channel || !["telegram", "discord"].includes(channel)) {
|
|
120
|
+
console.error("Usage: bun run manager logs <telegram|discord>");
|
|
121
|
+
process.exit(1);
|
|
122
|
+
}
|
|
123
|
+
await logs(channel, process.argv.includes("-f"));
|
|
124
|
+
break;
|
|
125
|
+
default:
|
|
126
|
+
console.log("GLM Daemon Manager CLI");
|
|
127
|
+
console.log(`
|
|
128
|
+
Commands:`);
|
|
129
|
+
console.log(" install - Install systemd services for telegram and discord bots");
|
|
130
|
+
console.log(" uninstall - Remove systemd services");
|
|
131
|
+
console.log(" status - Show status of all channels");
|
|
132
|
+
console.log(" logs - View logs: bun run manager logs <telegram|discord> [-f]");
|
|
133
|
+
console.log(`
|
|
134
|
+
Examples:`);
|
|
135
|
+
console.log(" bun run manager install");
|
|
136
|
+
console.log(" bun run manager status");
|
|
137
|
+
console.log(" bun run manager logs telegram -f");
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
main().catch((error) => {
|
|
141
|
+
console.error("\u274C Error:", error);
|
|
142
|
+
process.exit(1);
|
|
143
|
+
});
|