@usemilkyway/agent-sdk 0.2.0 → 0.3.1
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/dist/types.d.ts +3 -3
- package/dist/types.d.ts.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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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
export type FieldType = "string" | "number" | "boolean" | "array" | "object";
|
|
2
2
|
export interface FieldDef {
|
|
3
|
-
type:
|
|
3
|
+
type: string;
|
|
4
4
|
required?: boolean;
|
|
5
5
|
description?: string;
|
|
6
6
|
default?: unknown;
|
|
@@ -14,9 +14,9 @@ export interface AgentSchema {
|
|
|
14
14
|
[field: string]: FieldDef;
|
|
15
15
|
}
|
|
16
16
|
export interface AgentPricing {
|
|
17
|
-
model:
|
|
17
|
+
model: string;
|
|
18
18
|
amount: string;
|
|
19
|
-
currency:
|
|
19
|
+
currency: string;
|
|
20
20
|
}
|
|
21
21
|
export type PermissionType = "READ_WALLET_BALANCE" | "ACCESS_EXTERNAL_APIS" | "EXECUTE_TRANSACTIONS" | "MANAGE_AGENTS";
|
|
22
22
|
export interface PermissionDeclaration {
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,OAAO,GACP,QAAQ,CAAC;AAEb,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAU,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,SAAS,GACjB,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,OAAO,GACP,QAAQ,CAAC;AAEb,MAAM,WAAW,QAAQ;IACvB,IAAI,EAAU,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAK,OAAO,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAM,OAAO,CAAC;IACtB,GAAG,CAAC,EAAU,MAAM,CAAC;IACrB,GAAG,CAAC,EAAU,MAAM,CAAC;IACrB,SAAS,CAAC,EAAI,MAAM,CAAC;IACrB,SAAS,CAAC,EAAI,MAAM,CAAC;IACrB,IAAI,CAAC,EAAS,OAAO,EAAE,CAAC;CACzB;AAED,MAAM,WAAW,WAAW;IAC1B,CAAC,KAAK,EAAE,MAAM,GAAG,QAAQ,CAAC;CAC3B;AAED,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAK,MAAM,CAAC;IACjB,MAAM,EAAI,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,MAAM,cAAc,GACtB,qBAAqB,GACrB,sBAAsB,GACtB,sBAAsB,GACtB,eAAe,CAAC;AAEpB,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAkB,cAAc,CAAC;IACrC,MAAM,EAAgB,MAAM,CAAC;IAE7B,KAAK,CAAC,EAAgB,MAAM,CAAC;IAC7B,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,YAAY,CAAC,EAAS,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,aAAa;IAC5B,WAAW,EAAI,MAAM,CAAC;IACtB,WAAW,CAAC,EAAG,qBAAqB,EAAE,CAAC;IACvC,OAAO,EAAQ,YAAY,CAAC;IAC5B,YAAY,EAAG,WAAW,CAAC;IAC3B,aAAa,EAAE,WAAW,CAAC;CAC5B;AAED,MAAM,WAAW,WAAW;IAC1B,gBAAgB,EAAO,MAAM,CAAC;IAC9B,IAAI,EAAmB,MAAM,CAAC;IAC9B,WAAW,EAAY,MAAM,CAAC;IAC9B,MAAM,EAAiB,MAAM,CAAC;IAC9B,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,YAAY,EAAE;QACZ,CAAC,cAAc,EAAE,MAAM,GAAG,aAAa,CAAC;KACzC,CAAC;CACH;AAED,MAAM,MAAM,aAAa,GAAG,WAAW,CAAC;AAExC,MAAM,WAAW,cAAc;IAC7B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAY,MAAM,CAAC;IACzB,IAAI,EAAE;QACJ,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,KAAK,EAAQ,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KACtC,CAAC;IACF,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,eAAe;IAC9B,gBAAgB,EAAE,MAAM,CAAC;IACzB,MAAM,EAAY,MAAM,CAAC;IACzB,MAAM,EAAY,WAAW,GAAG,QAAQ,GAAG,SAAS,CAAC;IACrD,MAAM,CAAC,EAAW,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC1C,KAAK,CAAC,EAAY,MAAM,CAAC;IACzB,UAAU,CAAC,EAAO,YAAY,GAAG,SAAS,GAAG,UAAU,GAAG,YAAY,GAAG,UAAU,CAAC;IACpF,YAAY,CAAC,EAAK,MAAM,CAAC;CAC1B;AAED,MAAM,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;AAE7F,MAAM,MAAM,QAAQ,GAChB,SAAS,GACT;IAAE,CAAC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAA;CAAE,CAAC"}
|