@agentplugged/claw 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/dist/cli.d.ts +11 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +111 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +29 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +94 -0
- package/dist/config.js.map +1 -0
- package/dist/index.d.ts +17 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +54 -0
- package/dist/index.js.map +1 -0
- package/dist/memory/capture.d.ts +13 -0
- package/dist/memory/capture.d.ts.map +1 -0
- package/dist/memory/capture.js +102 -0
- package/dist/memory/capture.js.map +1 -0
- package/dist/memory/db.d.ts +56 -0
- package/dist/memory/db.d.ts.map +1 -0
- package/dist/memory/db.js +206 -0
- package/dist/memory/db.js.map +1 -0
- package/dist/memory/index.d.ts +8 -0
- package/dist/memory/index.d.ts.map +1 -0
- package/dist/memory/index.js +42 -0
- package/dist/memory/index.js.map +1 -0
- package/dist/memory/llm-extract.d.ts +13 -0
- package/dist/memory/llm-extract.d.ts.map +1 -0
- package/dist/memory/llm-extract.js +135 -0
- package/dist/memory/llm-extract.js.map +1 -0
- package/dist/memory/recall.d.ts +16 -0
- package/dist/memory/recall.d.ts.map +1 -0
- package/dist/memory/recall.js +131 -0
- package/dist/memory/recall.js.map +1 -0
- package/dist/observability/collector.d.ts +40 -0
- package/dist/observability/collector.d.ts.map +1 -0
- package/dist/observability/collector.js +119 -0
- package/dist/observability/collector.js.map +1 -0
- package/dist/observability/db.d.ts +60 -0
- package/dist/observability/db.d.ts.map +1 -0
- package/dist/observability/db.js +189 -0
- package/dist/observability/db.js.map +1 -0
- package/dist/observability/index.d.ts +7 -0
- package/dist/observability/index.d.ts.map +1 -0
- package/dist/observability/index.js +35 -0
- package/dist/observability/index.js.map +1 -0
- package/dist/observability/queries.d.ts +54 -0
- package/dist/observability/queries.d.ts.map +1 -0
- package/dist/observability/queries.js +181 -0
- package/dist/observability/queries.js.map +1 -0
- package/dist/router/classifier.d.ts +8 -0
- package/dist/router/classifier.d.ts.map +1 -0
- package/dist/router/classifier.js +90 -0
- package/dist/router/classifier.js.map +1 -0
- package/dist/router/fallback.d.ts +18 -0
- package/dist/router/fallback.d.ts.map +1 -0
- package/dist/router/fallback.js +102 -0
- package/dist/router/fallback.js.map +1 -0
- package/dist/router/index.d.ts +5 -0
- package/dist/router/index.d.ts.map +1 -0
- package/dist/router/index.js +214 -0
- package/dist/router/index.js.map +1 -0
- package/dist/router/leak-detector.d.ts +33 -0
- package/dist/router/leak-detector.d.ts.map +1 -0
- package/dist/router/leak-detector.js +320 -0
- package/dist/router/leak-detector.js.map +1 -0
- package/dist/router/logger.d.ts +18 -0
- package/dist/router/logger.d.ts.map +1 -0
- package/dist/router/logger.js +130 -0
- package/dist/router/logger.js.map +1 -0
- package/dist/router/models.d.ts +5 -0
- package/dist/router/models.d.ts.map +1 -0
- package/dist/router/models.js +96 -0
- package/dist/router/models.js.map +1 -0
- package/dist/router/providers.d.ts +4 -0
- package/dist/router/providers.d.ts.map +1 -0
- package/dist/router/providers.js +323 -0
- package/dist/router/providers.js.map +1 -0
- package/dist/router/strategy.d.ts +29 -0
- package/dist/router/strategy.d.ts.map +1 -0
- package/dist/router/strategy.js +169 -0
- package/dist/router/strategy.js.map +1 -0
- package/dist/router/types.d.ts +63 -0
- package/dist/router/types.d.ts.map +1 -0
- package/dist/router/types.js +3 -0
- package/dist/router/types.js.map +1 -0
- package/dist/sidecar/auth.d.ts +7 -0
- package/dist/sidecar/auth.d.ts.map +1 -0
- package/dist/sidecar/auth.js +36 -0
- package/dist/sidecar/auth.js.map +1 -0
- package/dist/sidecar/index.d.ts +2 -0
- package/dist/sidecar/index.d.ts.map +1 -0
- package/dist/sidecar/index.js +336 -0
- package/dist/sidecar/index.js.map +1 -0
- package/dist/sidecar/routes/addons.d.ts +6 -0
- package/dist/sidecar/routes/addons.d.ts.map +1 -0
- package/dist/sidecar/routes/addons.js +332 -0
- package/dist/sidecar/routes/addons.js.map +1 -0
- package/dist/sidecar/routes/backup.d.ts +7 -0
- package/dist/sidecar/routes/backup.d.ts.map +1 -0
- package/dist/sidecar/routes/backup.js +204 -0
- package/dist/sidecar/routes/backup.js.map +1 -0
- package/dist/sidecar/routes/channels.d.ts +4 -0
- package/dist/sidecar/routes/channels.d.ts.map +1 -0
- package/dist/sidecar/routes/channels.js +120 -0
- package/dist/sidecar/routes/channels.js.map +1 -0
- package/dist/sidecar/routes/health.d.ts +5 -0
- package/dist/sidecar/routes/health.d.ts.map +1 -0
- package/dist/sidecar/routes/health.js +28 -0
- package/dist/sidecar/routes/health.js.map +1 -0
- package/dist/sidecar/routes/memory.d.ts +7 -0
- package/dist/sidecar/routes/memory.d.ts.map +1 -0
- package/dist/sidecar/routes/memory.js +234 -0
- package/dist/sidecar/routes/memory.js.map +1 -0
- package/dist/sidecar/routes/metrics.d.ts +5 -0
- package/dist/sidecar/routes/metrics.d.ts.map +1 -0
- package/dist/sidecar/routes/metrics.js +273 -0
- package/dist/sidecar/routes/metrics.js.map +1 -0
- package/dist/sidecar/routes/restart.d.ts +4 -0
- package/dist/sidecar/routes/restart.d.ts.map +1 -0
- package/dist/sidecar/routes/restart.js +81 -0
- package/dist/sidecar/routes/restart.js.map +1 -0
- package/dist/sidecar/routes/router-config.d.ts +5 -0
- package/dist/sidecar/routes/router-config.d.ts.map +1 -0
- package/dist/sidecar/routes/router-config.js +150 -0
- package/dist/sidecar/routes/router-config.js.map +1 -0
- package/dist/sidecar/routes/security.d.ts +8 -0
- package/dist/sidecar/routes/security.d.ts.map +1 -0
- package/dist/sidecar/routes/security.js +308 -0
- package/dist/sidecar/routes/security.js.map +1 -0
- package/dist/sidecar/routes/skills.d.ts +5 -0
- package/dist/sidecar/routes/skills.d.ts.map +1 -0
- package/dist/sidecar/routes/skills.js +146 -0
- package/dist/sidecar/routes/skills.js.map +1 -0
- package/dist/sidecar/routes/soul.d.ts +4 -0
- package/dist/sidecar/routes/soul.d.ts.map +1 -0
- package/dist/sidecar/routes/soul.js +115 -0
- package/dist/sidecar/routes/soul.js.map +1 -0
- package/dist/sidecar/routes/team.d.ts +4 -0
- package/dist/sidecar/routes/team.d.ts.map +1 -0
- package/dist/sidecar/routes/team.js +139 -0
- package/dist/sidecar/routes/team.js.map +1 -0
- package/dist/sidecar/routes/update.d.ts +4 -0
- package/dist/sidecar/routes/update.d.ts.map +1 -0
- package/dist/sidecar/routes/update.js +96 -0
- package/dist/sidecar/routes/update.js.map +1 -0
- package/dist/sidecar/utils.d.ts +9 -0
- package/dist/sidecar/utils.d.ts.map +1 -0
- package/dist/sidecar/utils.js +57 -0
- package/dist/sidecar/utils.js.map +1 -0
- package/package.json +45 -0
|
@@ -0,0 +1,139 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.handleDeployTeam = handleDeployTeam;
|
|
37
|
+
const fs = __importStar(require("fs/promises"));
|
|
38
|
+
const path = __importStar(require("path"));
|
|
39
|
+
const utils_1 = require("../utils");
|
|
40
|
+
function validateFileName(name) {
|
|
41
|
+
// Prevent path traversal
|
|
42
|
+
return (typeof name === "string" &&
|
|
43
|
+
name.length > 0 &&
|
|
44
|
+
!name.includes("..") &&
|
|
45
|
+
!name.includes("/") &&
|
|
46
|
+
!name.includes("\\"));
|
|
47
|
+
}
|
|
48
|
+
async function writeFiles(dir, files, defaultExtension) {
|
|
49
|
+
await fs.mkdir(dir, { recursive: true });
|
|
50
|
+
const written = [];
|
|
51
|
+
for (const file of files) {
|
|
52
|
+
// Ensure a safe file extension
|
|
53
|
+
const hasExtension = /\.[a-z]+$/i.test(file.name);
|
|
54
|
+
const fileName = hasExtension ? file.name : `${file.name}${defaultExtension}`;
|
|
55
|
+
const filePath = path.join(dir, fileName);
|
|
56
|
+
await fs.writeFile(filePath, file.content, "utf-8");
|
|
57
|
+
written.push(fileName);
|
|
58
|
+
}
|
|
59
|
+
return written;
|
|
60
|
+
}
|
|
61
|
+
function handleDeployTeam(config) {
|
|
62
|
+
return async (req, res) => {
|
|
63
|
+
let body;
|
|
64
|
+
try {
|
|
65
|
+
body = (await (0, utils_1.parseBody)(req));
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
(0, utils_1.sendError)(res, 400, "Invalid JSON body");
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
const skills = body.skills ?? [];
|
|
72
|
+
const shared = body.shared ?? [];
|
|
73
|
+
if (skills.length === 0 && shared.length === 0) {
|
|
74
|
+
(0, utils_1.sendError)(res, 422, "At least one skill or shared file must be provided");
|
|
75
|
+
return;
|
|
76
|
+
}
|
|
77
|
+
// Validate all file names to prevent path traversal
|
|
78
|
+
for (const skill of skills) {
|
|
79
|
+
if (!validateFileName(skill.name)) {
|
|
80
|
+
(0, utils_1.sendError)(res, 422, `Invalid skill name: '${skill.name}'`);
|
|
81
|
+
return;
|
|
82
|
+
}
|
|
83
|
+
if (typeof skill.content !== "string") {
|
|
84
|
+
(0, utils_1.sendError)(res, 422, `Skill '${skill.name}' must have string content`);
|
|
85
|
+
return;
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
for (const file of shared) {
|
|
89
|
+
if (!validateFileName(file.name)) {
|
|
90
|
+
(0, utils_1.sendError)(res, 422, `Invalid shared file name: '${file.name}'`);
|
|
91
|
+
return;
|
|
92
|
+
}
|
|
93
|
+
if (typeof file.content !== "string") {
|
|
94
|
+
(0, utils_1.sendError)(res, 422, `Shared file '${file.name}' must have string content`);
|
|
95
|
+
return;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
const skillsDir = path.join(config.runtimeDir, "workspace", "skills");
|
|
99
|
+
const sharedDir = path.join(config.runtimeDir, "workspace", "shared");
|
|
100
|
+
let writtenSkills = [];
|
|
101
|
+
let writtenShared = [];
|
|
102
|
+
try {
|
|
103
|
+
if (skills.length > 0) {
|
|
104
|
+
writtenSkills = await writeFiles(skillsDir, skills, ".md");
|
|
105
|
+
}
|
|
106
|
+
if (shared.length > 0) {
|
|
107
|
+
writtenShared = await writeFiles(sharedDir, shared, ".md");
|
|
108
|
+
}
|
|
109
|
+
}
|
|
110
|
+
catch (err) {
|
|
111
|
+
(0, utils_1.sendError)(res, 500, `Failed to write files: ${err.message}`);
|
|
112
|
+
return;
|
|
113
|
+
}
|
|
114
|
+
// Restart openclaw to pick up the new team configuration
|
|
115
|
+
let restartResult;
|
|
116
|
+
try {
|
|
117
|
+
const { stdout, stderr } = await (0, utils_1.execCommand)("systemctl restart openclaw");
|
|
118
|
+
restartResult = stdout || stderr || "restarted";
|
|
119
|
+
}
|
|
120
|
+
catch (err) {
|
|
121
|
+
restartResult = `restart failed: ${err.message}`;
|
|
122
|
+
}
|
|
123
|
+
(0, utils_1.sendJson)(res, 201, {
|
|
124
|
+
deployed: true,
|
|
125
|
+
skills: {
|
|
126
|
+
written: writtenSkills,
|
|
127
|
+
count: writtenSkills.length,
|
|
128
|
+
directory: skillsDir,
|
|
129
|
+
},
|
|
130
|
+
shared: {
|
|
131
|
+
written: writtenShared,
|
|
132
|
+
count: writtenShared.length,
|
|
133
|
+
directory: sharedDir,
|
|
134
|
+
},
|
|
135
|
+
restart: restartResult,
|
|
136
|
+
});
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
//# sourceMappingURL=team.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"team.js","sourceRoot":"","sources":["../../../src/sidecar/routes/team.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../src/sidecar/routes/update.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAE1C,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AAOxC,wBAAgB,YAAY,CAAC,MAAM,EAAE,UAAU,GAAG,YAAY,CAoE7D"}
|
|
@@ -0,0 +1,96 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.handleUpdate = handleUpdate;
|
|
37
|
+
const utils_1 = require("../utils");
|
|
38
|
+
function handleUpdate(config) {
|
|
39
|
+
return async (req, res) => {
|
|
40
|
+
let body = {};
|
|
41
|
+
try {
|
|
42
|
+
const { parseBody } = await Promise.resolve().then(() => __importStar(require("../utils")));
|
|
43
|
+
body = (await parseBody(req));
|
|
44
|
+
}
|
|
45
|
+
catch {
|
|
46
|
+
// Body is optional
|
|
47
|
+
}
|
|
48
|
+
const steps = [];
|
|
49
|
+
const run = async (step, cmd) => {
|
|
50
|
+
try {
|
|
51
|
+
const { stdout, stderr } = await (0, utils_1.execCommand)(cmd);
|
|
52
|
+
steps.push({ step, result: stdout || stderr || "ok", success: true });
|
|
53
|
+
return true;
|
|
54
|
+
}
|
|
55
|
+
catch (err) {
|
|
56
|
+
steps.push({
|
|
57
|
+
step,
|
|
58
|
+
result: err.message,
|
|
59
|
+
success: false,
|
|
60
|
+
});
|
|
61
|
+
return false;
|
|
62
|
+
}
|
|
63
|
+
};
|
|
64
|
+
try {
|
|
65
|
+
// 1. Update @agentplugged/claw package
|
|
66
|
+
const versionSuffix = body.version ? `@${body.version}` : "@latest";
|
|
67
|
+
await run("update_claw", `npm install -g @agentplugged/claw${versionSuffix}`);
|
|
68
|
+
// 2. Pull latest config if git-managed
|
|
69
|
+
await run("pull_config", `cd ${config.runtimeDir} && git pull --ff-only 2>/dev/null || echo "not a git repo"`);
|
|
70
|
+
// 3. Restart all services
|
|
71
|
+
await run("restart_openclaw", "systemctl restart openclaw");
|
|
72
|
+
await run("restart_router", "systemctl restart claw-router");
|
|
73
|
+
await run("restart_sidecar", "systemctl restart claw-sidecar");
|
|
74
|
+
// 4. Get new version
|
|
75
|
+
let newVersion = "unknown";
|
|
76
|
+
try {
|
|
77
|
+
const { stdout } = await (0, utils_1.execCommand)("claw --version 2>/dev/null || echo unknown");
|
|
78
|
+
newVersion = stdout.trim();
|
|
79
|
+
}
|
|
80
|
+
catch {
|
|
81
|
+
// ignore
|
|
82
|
+
}
|
|
83
|
+
const allSucceeded = steps.every((s) => s.success);
|
|
84
|
+
(0, utils_1.sendJson)(res, allSucceeded ? 200 : 207, {
|
|
85
|
+
updated: allSucceeded,
|
|
86
|
+
version: newVersion,
|
|
87
|
+
requestedVersion: body.version ?? "latest",
|
|
88
|
+
steps,
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
catch (err) {
|
|
92
|
+
(0, utils_1.sendError)(res, 500, `Update failed: ${err.message}`);
|
|
93
|
+
}
|
|
94
|
+
};
|
|
95
|
+
}
|
|
96
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/sidecar/routes/update.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAUA,oCAoEC;AA5ED,oCAA4D;AAQ5D,SAAgB,YAAY,CAAC,MAAkB;IAC7C,OAAO,KAAK,EAAE,GAAoB,EAAE,GAAmB,EAAiB,EAAE;QACxE,IAAI,IAAI,GAAe,EAAE,CAAC;QAE1B,IAAI,CAAC;YACH,MAAM,EAAE,SAAS,EAAE,GAAG,wDAAa,UAAU,GAAC,CAAC;YAC/C,IAAI,GAAG,CAAC,MAAM,SAAS,CAAC,GAAG,CAAC,CAAe,CAAC;QAC9C,CAAC;QAAC,MAAM,CAAC;YACP,mBAAmB;QACrB,CAAC;QAED,MAAM,KAAK,GAA8D,EAAE,CAAC;QAE5E,MAAM,GAAG,GAAG,KAAK,EAAE,IAAY,EAAE,GAAW,EAAoB,EAAE;YAChE,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,mBAAW,EAAC,GAAG,CAAC,CAAC;gBAClD,KAAK,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,MAAM,IAAI,MAAM,IAAI,IAAI,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;gBACtE,OAAO,IAAI,CAAC;YACd,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,KAAK,CAAC,IAAI,CAAC;oBACT,IAAI;oBACJ,MAAM,EAAG,GAAa,CAAC,OAAO;oBAC9B,OAAO,EAAE,KAAK;iBACf,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,uCAAuC;YACvC,MAAM,aAAa,GAAG,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACpE,MAAM,GAAG,CACP,aAAa,EACb,oCAAoC,aAAa,EAAE,CACpD,CAAC;YAEF,uCAAuC;YACvC,MAAM,GAAG,CACP,aAAa,EACb,MAAM,MAAM,CAAC,UAAU,6DAA6D,CACrF,CAAC;YAEF,0BAA0B;YAC1B,MAAM,GAAG,CAAC,kBAAkB,EAAE,4BAA4B,CAAC,CAAC;YAC5D,MAAM,GAAG,CAAC,gBAAgB,EAAE,+BAA+B,CAAC,CAAC;YAC7D,MAAM,GAAG,CAAC,iBAAiB,EAAE,gCAAgC,CAAC,CAAC;YAE/D,qBAAqB;YACrB,IAAI,UAAU,GAAG,SAAS,CAAC;YAC3B,IAAI,CAAC;gBACH,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,IAAA,mBAAW,EAAC,4CAA4C,CAAC,CAAC;gBACnF,UAAU,GAAG,MAAM,CAAC,IAAI,EAAE,CAAC;YAC7B,CAAC;YAAC,MAAM,CAAC;gBACP,SAAS;YACX,CAAC;YAED,MAAM,YAAY,GAAG,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAC;YAEnD,IAAA,gBAAQ,EAAC,GAAG,EAAE,YAAY,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE;gBACtC,OAAO,EAAE,YAAY;gBACrB,OAAO,EAAE,UAAU;gBACnB,gBAAgB,EAAE,IAAI,CAAC,OAAO,IAAI,QAAQ;gBAC1C,KAAK;aACN,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,GAAG,EAAE,CAAC;YACb,IAAA,iBAAS,EAAC,GAAG,EAAE,GAAG,EAAE,kBAAmB,GAAa,CAAC,OAAO,EAAE,CAAC,CAAC;QAClE,CAAC;IACH,CAAC,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
import { IncomingMessage, ServerResponse } from "http";
|
|
2
|
+
export declare function parseBody(req: IncomingMessage): Promise<unknown>;
|
|
3
|
+
export declare function sendJson(res: ServerResponse, status: number, data: unknown): void;
|
|
4
|
+
export declare function sendError(res: ServerResponse, status: number, message: string): void;
|
|
5
|
+
export declare function execCommand(cmd: string): Promise<{
|
|
6
|
+
stdout: string;
|
|
7
|
+
stderr: string;
|
|
8
|
+
}>;
|
|
9
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/sidecar/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,MAAM,MAAM,CAAC;AAKvD,wBAAgB,SAAS,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,CAyBhE;AAED,wBAAgB,QAAQ,CACtB,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,IAAI,EAAE,OAAO,GACZ,IAAI,CAON;AAED,wBAAgB,SAAS,CACvB,GAAG,EAAE,cAAc,EACnB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,MAAM,GACd,IAAI,CAEN;AAED,wBAAgB,WAAW,CACzB,GAAG,EAAE,MAAM,GACV,OAAO,CAAC;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC,CAmB7C"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.parseBody = parseBody;
|
|
4
|
+
exports.sendJson = sendJson;
|
|
5
|
+
exports.sendError = sendError;
|
|
6
|
+
exports.execCommand = execCommand;
|
|
7
|
+
const child_process_1 = require("child_process");
|
|
8
|
+
const EXEC_TIMEOUT_MS = 10_000;
|
|
9
|
+
function parseBody(req) {
|
|
10
|
+
return new Promise((resolve, reject) => {
|
|
11
|
+
const chunks = [];
|
|
12
|
+
req.on("data", (chunk) => {
|
|
13
|
+
chunks.push(chunk);
|
|
14
|
+
});
|
|
15
|
+
req.on("end", () => {
|
|
16
|
+
const raw = Buffer.concat(chunks).toString("utf-8");
|
|
17
|
+
if (!raw) {
|
|
18
|
+
resolve({});
|
|
19
|
+
return;
|
|
20
|
+
}
|
|
21
|
+
try {
|
|
22
|
+
resolve(JSON.parse(raw));
|
|
23
|
+
}
|
|
24
|
+
catch {
|
|
25
|
+
reject(new Error("Invalid JSON body"));
|
|
26
|
+
}
|
|
27
|
+
});
|
|
28
|
+
req.on("error", reject);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
function sendJson(res, status, data) {
|
|
32
|
+
const body = JSON.stringify(data);
|
|
33
|
+
res.writeHead(status, {
|
|
34
|
+
"Content-Type": "application/json",
|
|
35
|
+
"Content-Length": Buffer.byteLength(body),
|
|
36
|
+
});
|
|
37
|
+
res.end(body);
|
|
38
|
+
}
|
|
39
|
+
function sendError(res, status, message) {
|
|
40
|
+
sendJson(res, status, { error: message });
|
|
41
|
+
}
|
|
42
|
+
function execCommand(cmd) {
|
|
43
|
+
return new Promise((resolve, reject) => {
|
|
44
|
+
const child = (0, child_process_1.exec)(cmd, { timeout: EXEC_TIMEOUT_MS }, (error, stdout, stderr) => {
|
|
45
|
+
if (error && !stdout) {
|
|
46
|
+
reject(error);
|
|
47
|
+
return;
|
|
48
|
+
}
|
|
49
|
+
resolve({
|
|
50
|
+
stdout: stdout.trim(),
|
|
51
|
+
stderr: stderr.trim(),
|
|
52
|
+
});
|
|
53
|
+
});
|
|
54
|
+
child.on("error", reject);
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/sidecar/utils.ts"],"names":[],"mappings":";;AAKA,8BAyBC;AAED,4BAWC;AAED,8BAMC;AAED,kCAqBC;AAzED,iDAAqC;AAErC,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,SAAgB,SAAS,CAAC,GAAoB;IAC5C,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,MAAM,GAAa,EAAE,CAAC;QAE5B,GAAG,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YAC/B,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACrB,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,EAAE;YACjB,MAAM,GAAG,GAAG,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;YAEpD,IAAI,CAAC,GAAG,EAAE,CAAC;gBACT,OAAO,CAAC,EAAE,CAAC,CAAC;gBACZ,OAAO;YACT,CAAC;YAED,IAAI,CAAC;gBACH,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC;YAC3B,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,CAAC,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC,CAAC;YACzC,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,GAAG,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC1B,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,QAAQ,CACtB,GAAmB,EACnB,MAAc,EACd,IAAa;IAEb,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;IAClC,GAAG,CAAC,SAAS,CAAC,MAAM,EAAE;QACpB,cAAc,EAAE,kBAAkB;QAClC,gBAAgB,EAAE,MAAM,CAAC,UAAU,CAAC,IAAI,CAAC;KAC1C,CAAC,CAAC;IACH,GAAG,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC;AAChB,CAAC;AAED,SAAgB,SAAS,CACvB,GAAmB,EACnB,MAAc,EACd,OAAe;IAEf,QAAQ,CAAC,GAAG,EAAE,MAAM,EAAE,EAAE,KAAK,EAAE,OAAO,EAAE,CAAC,CAAC;AAC5C,CAAC;AAED,SAAgB,WAAW,CACzB,GAAW;IAEX,OAAO,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,EAAE;QACrC,MAAM,KAAK,GAAG,IAAA,oBAAI,EAChB,GAAG,EACH,EAAE,OAAO,EAAE,eAAe,EAAE,EAC5B,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YACxB,IAAI,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;gBACrB,MAAM,CAAC,KAAK,CAAC,CAAC;gBACd,OAAO;YACT,CAAC;YACD,OAAO,CAAC;gBACN,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;gBACrB,MAAM,EAAE,MAAM,CAAC,IAAI,EAAE;aACtB,CAAC,CAAC;QACL,CAAC,CACF,CAAC;QAEF,KAAK,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IAC5B,CAAC,CAAC,CAAC;AACL,CAAC"}
|
package/package.json
ADDED
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@agentplugged/claw",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "AgentPlugged Claw — Enhanced OpenClaw distribution with smart routing, memory, observability, and security",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"bin": {
|
|
8
|
+
"agentplugged-claw": "dist/cli.js"
|
|
9
|
+
},
|
|
10
|
+
"files": [
|
|
11
|
+
"dist"
|
|
12
|
+
],
|
|
13
|
+
"scripts": {
|
|
14
|
+
"build": "tsc",
|
|
15
|
+
"dev": "tsc --watch",
|
|
16
|
+
"prepublishOnly": "npm run build",
|
|
17
|
+
"start:router": "node dist/router/index.js",
|
|
18
|
+
"start:sidecar": "node dist/sidecar/index.js",
|
|
19
|
+
"start": "node dist/cli.js start"
|
|
20
|
+
},
|
|
21
|
+
"keywords": [
|
|
22
|
+
"agentplugged",
|
|
23
|
+
"openclaw",
|
|
24
|
+
"ai-agent",
|
|
25
|
+
"llm-router",
|
|
26
|
+
"sidecar"
|
|
27
|
+
],
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "https://github.com/rezopress/AgentPlugged.git",
|
|
32
|
+
"directory": "packages/claw"
|
|
33
|
+
},
|
|
34
|
+
"dependencies": {
|
|
35
|
+
"better-sqlite3": "^11.0.0"
|
|
36
|
+
},
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/better-sqlite3": "^7.6.0",
|
|
39
|
+
"@types/node": "^22.0.0",
|
|
40
|
+
"typescript": "^5.5.0"
|
|
41
|
+
},
|
|
42
|
+
"engines": {
|
|
43
|
+
"node": ">=22.0.0"
|
|
44
|
+
}
|
|
45
|
+
}
|