@usemilkyway/agent-sdk 0.2.0 → 0.3.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/agent.d.ts.map +1 -1
- package/dist/agent.js +30 -15
- package/dist/agent.js.map +1 -1
- package/package.json +1 -1
package/dist/agent.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AAI5E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAiB,MAAM,SAAS,CAAC;AAE/D,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,aAAa;IACrB,GAAG,EAAK,OAAO,CAAC;IAChB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CACvD;
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"AAAA,OAAgB,EAAE,OAAO,EAAmC,MAAM,SAAS,CAAC;AAI5E,OAAO,EAAE,WAAW,EAAE,QAAQ,EAAiB,MAAM,SAAS,CAAC;AAE/D,UAAU,kBAAkB;IAC1B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB;AAED,UAAU,aAAa;IACrB,GAAG,EAAK,OAAO,CAAC;IAChB,MAAM,EAAE,CAAC,IAAI,EAAE,MAAM,EAAE,QAAQ,CAAC,EAAE,MAAM,IAAI,KAAK,IAAI,CAAC;CACvD;AAsBD,wBAAgB,WAAW,CACzB,MAAM,EAAI,WAAW,EACrB,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAG,kBAAuB,GAChC,aAAa,CAgGf"}
|
package/dist/agent.js
CHANGED
|
@@ -8,7 +8,22 @@ const express_1 = __importDefault(require("express"));
|
|
|
8
8
|
const x402_1 = require("./x402");
|
|
9
9
|
const router_1 = require("./router");
|
|
10
10
|
const logger_1 = require("./logger");
|
|
11
|
+
// Resolves ${ENV_VAR} placeholders in agent.json values at startup
|
|
12
|
+
function resolveEnvVars(config) {
|
|
13
|
+
const json = JSON.stringify(config);
|
|
14
|
+
const resolved = json.replace(/\$\{([^}]+)\}/g, (match, key) => {
|
|
15
|
+
const val = process.env[key];
|
|
16
|
+
if (!val) {
|
|
17
|
+
console.warn(`[MilkyWay SDK] Warning: environment variable "${key}" ` +
|
|
18
|
+
`referenced in agent.json is not set`);
|
|
19
|
+
return match;
|
|
20
|
+
}
|
|
21
|
+
return val;
|
|
22
|
+
});
|
|
23
|
+
return JSON.parse(resolved);
|
|
24
|
+
}
|
|
11
25
|
function createAgent(config, handlers, options = {}) {
|
|
26
|
+
const resolvedConfig = resolveEnvVars(config);
|
|
12
27
|
const app = (0, express_1.default)();
|
|
13
28
|
app.use(express_1.default.json());
|
|
14
29
|
const devMode = options.devMode ?? process.env.MILKYWAY_DEV_MODE === "true";
|
|
@@ -32,44 +47,44 @@ function createAgent(config, handlers, options = {}) {
|
|
|
32
47
|
});
|
|
33
48
|
// ── Standard endpoints ─────────────────────────────────────────────────────
|
|
34
49
|
app.get("/health", (_req, res) => {
|
|
35
|
-
res.json({ name:
|
|
50
|
+
res.json({ name: resolvedConfig.name, version: "1.0.0", status: "ok", ...(devMode && { devMode: true }) });
|
|
36
51
|
});
|
|
37
52
|
app.get("/about", (_req, res) => {
|
|
38
53
|
const about = {
|
|
39
54
|
milkyway_version: "1.0",
|
|
40
|
-
name:
|
|
41
|
-
description:
|
|
42
|
-
wallet:
|
|
43
|
-
max_deadline_seconds:
|
|
44
|
-
capabilities:
|
|
55
|
+
name: resolvedConfig.name,
|
|
56
|
+
description: resolvedConfig.description,
|
|
57
|
+
wallet: resolvedConfig.wallet,
|
|
58
|
+
max_deadline_seconds: resolvedConfig.max_deadline_seconds || 30,
|
|
59
|
+
capabilities: resolvedConfig.capabilities,
|
|
45
60
|
};
|
|
46
61
|
res.json(about);
|
|
47
62
|
});
|
|
48
63
|
app.post("/execute", async (req, res) => {
|
|
49
|
-
const capabilityName = req.body?.task?.capability || Object.keys(
|
|
50
|
-
const capability =
|
|
64
|
+
const capabilityName = req.body?.task?.capability || Object.keys(resolvedConfig.capabilities)[0];
|
|
65
|
+
const capability = resolvedConfig.capabilities[capabilityName];
|
|
51
66
|
if (!capability) {
|
|
52
|
-
return (0, router_1.buildExecuteHandler)(
|
|
67
|
+
return (0, router_1.buildExecuteHandler)(resolvedConfig, handlers)(req, res);
|
|
53
68
|
}
|
|
54
|
-
(0, x402_1.requirePayment)(
|
|
69
|
+
(0, x402_1.requirePayment)(resolvedConfig.wallet, capability.pricing, devMode)(req, res, () => (0, router_1.buildExecuteHandler)(resolvedConfig, handlers)(req, res));
|
|
55
70
|
});
|
|
56
71
|
// ── Graceful shutdown ──────────────────────────────────────────────────────
|
|
57
72
|
function setupGracefulShutdown(server) {
|
|
58
73
|
const DRAIN_TIMEOUT_MS = 30000;
|
|
59
74
|
async function shutdown(signal) {
|
|
60
|
-
console.log(`\n[${
|
|
75
|
+
console.log(`\n[${resolvedConfig.name}] ${signal} received — shutting down gracefully`);
|
|
61
76
|
isShuttingDown = true;
|
|
62
77
|
server.close();
|
|
63
78
|
const start = Date.now();
|
|
64
79
|
while (inFlightCount > 0) {
|
|
65
80
|
if (Date.now() - start > DRAIN_TIMEOUT_MS) {
|
|
66
|
-
console.warn(`[${
|
|
81
|
+
console.warn(`[${resolvedConfig.name}] Drain timeout — ${inFlightCount} request(s) still in flight. Forcing exit.`);
|
|
67
82
|
break;
|
|
68
83
|
}
|
|
69
|
-
console.log(`[${
|
|
84
|
+
console.log(`[${resolvedConfig.name}] Draining — ${inFlightCount} request(s) in flight...`);
|
|
70
85
|
await new Promise((r) => setTimeout(r, 500));
|
|
71
86
|
}
|
|
72
|
-
console.log(`[${
|
|
87
|
+
console.log(`[${resolvedConfig.name}] Shutdown complete`);
|
|
73
88
|
process.exit(0);
|
|
74
89
|
}
|
|
75
90
|
process.on("SIGTERM", () => shutdown("SIGTERM"));
|
|
@@ -79,7 +94,7 @@ function createAgent(config, handlers, options = {}) {
|
|
|
79
94
|
app,
|
|
80
95
|
listen: (port, callback) => {
|
|
81
96
|
const server = app.listen(port, callback || (() => {
|
|
82
|
-
(0, logger_1.logStartup)(
|
|
97
|
+
(0, logger_1.logStartup)(resolvedConfig.name, port, Object.keys(resolvedConfig.capabilities));
|
|
83
98
|
}));
|
|
84
99
|
setupGracefulShutdown(server);
|
|
85
100
|
},
|
package/dist/agent.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":";;;;;
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../src/agent.ts"],"names":[],"mappings":"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"}
|