@senpi/runtime 1.0.95-dev.runtime-phase-2-api.20260507134852 → 1.0.95-dev.runtime-phase-2-api.20260507182734

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.
@@ -0,0 +1,51 @@
1
+ /**
2
+ * Fastify route: `GET /state`.
3
+ *
4
+ * Returns the full {@link RuntimeSystemState} for every running runtime —
5
+ * the same shape `senpi runtime state --json` returns over the OpenClaw
6
+ * gateway, exposed here over HTTP for callers (e.g. the producer wrapper's
7
+ * daemon liveness check) that don't want a gateway dependency.
8
+ *
9
+ * Mirrors the existing CLI separation:
10
+ * - {@link registerHealthRoute `/health`} — lightweight readiness probe
11
+ * suitable for LB / Kubernetes probes (returns wallet + queue depth only).
12
+ * - `/state` (this route) — full runtime state including registered
13
+ * scanners, action handles, DSL state, risk gates.
14
+ *
15
+ * HTTP status:
16
+ * - `200` with envelope `{ success: true, data: { runtimes: [...] } }` on
17
+ * success. Always 200 — the response is informational; an empty
18
+ * `runtimes` array is a valid answer ("no runtimes registered").
19
+ * - `503` on internal error from a `getSystemState()` call. Surfaces
20
+ * the senpi-stack error envelope.
21
+ *
22
+ * Optional filter: `?address=0x...` returns only the runtime matching
23
+ * that wallet address (case-insensitive). Saves bytes per probe when a
24
+ * caller only cares about its own wallet.
25
+ */
26
+ import type { FastifyInstance } from "fastify";
27
+ import type { RuntimeHandle } from "../../runtime/run.js";
28
+ import type { Logger } from "../../utils/logger.js";
29
+ /**
30
+ * Dependencies injected into the `/state` route at registration time.
31
+ */
32
+ export interface StateRouteDeps {
33
+ /** Live runtime handles maintained by the plugin, keyed by lowercased address. */
34
+ runtimeHandles: Map<string, RuntimeHandle>;
35
+ /** Logger instance for unexpected errors. */
36
+ logger: Logger;
37
+ }
38
+ /**
39
+ * Register `GET /state` on the given Fastify instance.
40
+ *
41
+ * Iterates runtime handles, calls `getSystemState()` on each, returns the
42
+ * collected list under `data.runtimes[]`. A handle whose `getSystemState()`
43
+ * returns `null` (runtime is mid-startup or mid-shutdown) is omitted from
44
+ * the result rather than included as a sentinel — callers waiting for a
45
+ * specific wallet should re-probe rather than try to interpret a null.
46
+ *
47
+ * @param fastify Fastify instance to register the route on.
48
+ * @param deps Route dependencies injected at plugin start.
49
+ */
50
+ export declare function registerStateRoute(fastify: FastifyInstance, deps: StateRouteDeps): void;
51
+ //# sourceMappingURL=state.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.d.ts","sourceRoot":"","sources":["../../../src/runtime-api/routes/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAEH,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,SAAS,CAAC;AAG/C,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAEpD;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,kFAAkF;IAClF,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,6CAA6C;IAC7C,MAAM,EAAE,MAAM,CAAC;CAChB;AAeD;;;;;;;;;;;GAWG;AACH,wBAAgB,kBAAkB,CAChC,OAAO,EAAE,eAAe,EACxB,IAAI,EAAE,cAAc,GACnB,IAAI,CAkDN"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Fastify route: `GET /state`.
3
+ *
4
+ * Returns the full {@link RuntimeSystemState} for every running runtime —
5
+ * the same shape `senpi runtime state --json` returns over the OpenClaw
6
+ * gateway, exposed here over HTTP for callers (e.g. the producer wrapper's
7
+ * daemon liveness check) that don't want a gateway dependency.
8
+ *
9
+ * Mirrors the existing CLI separation:
10
+ * - {@link registerHealthRoute `/health`} — lightweight readiness probe
11
+ * suitable for LB / Kubernetes probes (returns wallet + queue depth only).
12
+ * - `/state` (this route) — full runtime state including registered
13
+ * scanners, action handles, DSL state, risk gates.
14
+ *
15
+ * HTTP status:
16
+ * - `200` with envelope `{ success: true, data: { runtimes: [...] } }` on
17
+ * success. Always 200 — the response is informational; an empty
18
+ * `runtimes` array is a valid answer ("no runtimes registered").
19
+ * - `503` on internal error from a `getSystemState()` call. Surfaces
20
+ * the senpi-stack error envelope.
21
+ *
22
+ * Optional filter: `?address=0x...` returns only the runtime matching
23
+ * that wallet address (case-insensitive). Saves bytes per probe when a
24
+ * caller only cares about its own wallet.
25
+ */
26
+ import { Type } from "@sinclair/typebox";
27
+ /**
28
+ * Query schema for `/state`. All filters are optional.
29
+ */
30
+ const StateQuery = Type.Object({
31
+ /** Filter to a single wallet address (case-insensitive). */
32
+ address: Type.Optional(Type.String({
33
+ pattern: "^0[xX][0-9a-fA-F]{40}$",
34
+ description: "Strategy wallet address (0x-prefixed, 40 hex chars).",
35
+ })),
36
+ });
37
+ /**
38
+ * Register `GET /state` on the given Fastify instance.
39
+ *
40
+ * Iterates runtime handles, calls `getSystemState()` on each, returns the
41
+ * collected list under `data.runtimes[]`. A handle whose `getSystemState()`
42
+ * returns `null` (runtime is mid-startup or mid-shutdown) is omitted from
43
+ * the result rather than included as a sentinel — callers waiting for a
44
+ * specific wallet should re-probe rather than try to interpret a null.
45
+ *
46
+ * @param fastify Fastify instance to register the route on.
47
+ * @param deps Route dependencies injected at plugin start.
48
+ */
49
+ export function registerStateRoute(fastify, deps) {
50
+ fastify.get("/state", { schema: { querystring: StateQuery } }, async (req, reply) => {
51
+ const q = req.query;
52
+ const filterAddress = q.address?.toLowerCase();
53
+ // The runtimeHandles map is keyed by runtime id (e.g.
54
+ // "pangolin-tracker-68ef"), NOT by wallet address — so address
55
+ // filtering must walk values and compare `handle.wallet`. N is
56
+ // small (typically 1–2 runtimes per host), so the O(N) walk is
57
+ // negligible compared to the per-handle getSystemState() that
58
+ // follows.
59
+ const allHandles = Array.from(deps.runtimeHandles.values());
60
+ const handles = filterAddress !== undefined
61
+ ? allHandles.filter((h) => h.wallet.toLowerCase() === filterAddress)
62
+ : allHandles;
63
+ const collected = [];
64
+ for (const handle of handles) {
65
+ try {
66
+ const state = await handle.getSystemState();
67
+ if (state !== null)
68
+ collected.push(state);
69
+ }
70
+ catch (err) {
71
+ deps.logger.error("[senpi-core][runtime-api] /state getSystemState failed", {
72
+ err,
73
+ wallet: handle.wallet,
74
+ });
75
+ return reply.status(503).send({
76
+ success: false,
77
+ error: {
78
+ code: "UNAVAILABLE",
79
+ message: err instanceof Error
80
+ ? `getSystemState failed: ${err.message}`
81
+ : "getSystemState failed",
82
+ },
83
+ });
84
+ }
85
+ }
86
+ return reply
87
+ .header("Cache-Control", "no-store")
88
+ .send({
89
+ success: true,
90
+ data: { runtimes: collected },
91
+ });
92
+ });
93
+ }
94
+ //# sourceMappingURL=state.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"state.js","sourceRoot":"","sources":["../../../src/runtime-api/routes/state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;GAwBG;AAIH,OAAO,EAAE,IAAI,EAAE,MAAM,mBAAmB,CAAC;AAezC;;GAEG;AACH,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7B,4DAA4D;IAC5D,OAAO,EAAE,IAAI,CAAC,QAAQ,CACpB,IAAI,CAAC,MAAM,CAAC;QACV,OAAO,EAAE,wBAAwB;QACjC,WAAW,EAAE,sDAAsD;KACpE,CAAC,CACH;CACF,CAAC,CAAC;AAEH;;;;;;;;;;;GAWG;AACH,MAAM,UAAU,kBAAkB,CAChC,OAAwB,EACxB,IAAoB;IAEpB,OAAO,CAAC,GAAG,CACT,QAAQ,EACR,EAAE,MAAM,EAAE,EAAE,WAAW,EAAE,UAAU,EAAE,EAAE,EACvC,KAAK,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACnB,MAAM,CAAC,GAAG,GAAG,CAAC,KAAkC,CAAC;QACjD,MAAM,aAAa,GAAG,CAAC,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC;QAE/C,sDAAsD;QACtD,+DAA+D;QAC/D,+DAA+D;QAC/D,+DAA+D;QAC/D,8DAA8D;QAC9D,WAAW;QACX,MAAM,UAAU,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,MAAM,EAAE,CAAC,CAAC;QAC5D,MAAM,OAAO,GAAG,aAAa,KAAK,SAAS;YACzC,CAAC,CAAC,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,WAAW,EAAE,KAAK,aAAa,CAAC;YACpE,CAAC,CAAC,UAAU,CAAC;QAEf,MAAM,SAAS,GAAyB,EAAE,CAAC;QAC3C,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;YAC7B,IAAI,CAAC;gBACH,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,cAAc,EAAE,CAAC;gBAC5C,IAAI,KAAK,KAAK,IAAI;oBAAE,SAAS,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;YAC5C,CAAC;YAAC,OAAO,GAAG,EAAE,CAAC;gBACb,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,wDAAwD,EAAE;oBAC1E,GAAG;oBACH,MAAM,EAAE,MAAM,CAAC,MAAM;iBACtB,CAAC,CAAC;gBACH,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;oBAC5B,OAAO,EAAE,KAAK;oBACd,KAAK,EAAE;wBACL,IAAI,EAAE,aAAa;wBACnB,OAAO,EACL,GAAG,YAAY,KAAK;4BAClB,CAAC,CAAC,0BAA0B,GAAG,CAAC,OAAO,EAAE;4BACzC,CAAC,CAAC,uBAAuB;qBAC9B;iBACF,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,OAAO,KAAK;aACT,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC;aACnC,IAAI,CAAC;YACJ,OAAO,EAAE,IAAI;YACb,IAAI,EAAE,EAAE,QAAQ,EAAE,SAAS,EAAE;SAC9B,CAAC,CAAC;IACP,CAAC,CACF,CAAC;AACJ,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/runtime-api/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAIxD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,4EAA4E;IAC5E,SAAS,EAAE,SAAS,CAAC;IACrB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,CAqE3D"}
1
+ {"version":3,"file":"server.d.ts","sourceRoot":"","sources":["../../src/runtime-api/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAgB,EAAE,KAAK,eAAe,EAAE,MAAM,SAAS,CAAC;AAKxD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AACjD,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,oBAAoB,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAE7C;;GAEG;AACH,MAAM,WAAW,aAAa;IAC5B,kFAAkF;IAClF,cAAc,EAAE,GAAG,CAAC,MAAM,EAAE,aAAa,CAAC,CAAC;IAC3C,4EAA4E;IAC5E,SAAS,EAAE,SAAS,CAAC;IACrB,mFAAmF;IACnF,MAAM,EAAE,MAAM,CAAC;IACf;;;OAGG;IACH,OAAO,EAAE,MAAM,CAAC;CACjB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,YAAY;IAC3B,OAAO,EAAE,eAAe,CAAC;IACzB,SAAS,EAAE,UAAU,CAAC,OAAO,eAAe,CAAC,CAAC;IAC9C,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,wBAAgB,SAAS,CAAC,IAAI,EAAE,aAAa,GAAG,YAAY,CA0E3D"}
@@ -17,6 +17,7 @@ import Fastify from "fastify";
17
17
  import { registerSignalsRoute } from "./routes/signals.js";
18
18
  import { registerAuditRoute } from "./routes/audit.js";
19
19
  import { registerHealthRoute } from "./routes/health.js";
20
+ import { registerStateRoute } from "./routes/state.js";
20
21
  import { createReadiness } from "./readiness.js";
21
22
  /**
22
23
  * Create and configure the Fastify HTTP server.
@@ -104,6 +105,10 @@ export function createApi(deps) {
104
105
  version: deps.version,
105
106
  bootedAt,
106
107
  });
108
+ registerStateRoute(fastify, {
109
+ runtimeHandles: deps.runtimeHandles,
110
+ logger: deps.logger,
111
+ });
107
112
  return { fastify, readiness, bootedAt };
108
113
  }
109
114
  //# sourceMappingURL=server.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/runtime-api/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,OAAiC,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAsCjD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,SAAS,CAAC,IAAmB;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IAEpC,MAAM,OAAO,GAAG,OAAO,CAAC;QACtB,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QACzB,SAAS,EAAE,GAAG,GAAG,IAAI,EAAE,2DAA2D;QAClF,qBAAqB,EAAE,KAAK;QAC5B;;;;;WAKG;QACH,cAAc,EAAE,MAAM;KACvB,CAAC,CAAC;IAEH,6EAA6E;IAC7E,2EAA2E;IAC3E,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAC7C,8EAA8E;QAC9E,MAAM,GAAG,GAAG,KAAwC,CAAC;QACrD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAClC,IACE,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,GAAG,EAClB,CAAC;YACD,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;gBACnC,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB;aACF,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE;YAC7D,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC5B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,oBAAoB,CAAC,OAAO,EAAE;QAC5B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,yBAAyB;QAClD,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IAEH,kBAAkB,CAAC,OAAO,EAAE;QAC1B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;IAEH,mBAAmB,CAAC,OAAO,EAAE;QAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACnE,SAAS;QACT,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ;KACT,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC"}
1
+ {"version":3,"file":"server.js","sourceRoot":"","sources":["../../src/runtime-api/server.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,OAAiC,MAAM,SAAS,CAAC;AACxD,OAAO,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAC3D,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AACvD,OAAO,EAAE,eAAe,EAAE,MAAM,gBAAgB,CAAC;AAsCjD;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AACH,MAAM,UAAU,SAAS,CAAC,IAAmB;IAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC5B,MAAM,SAAS,GAAG,eAAe,EAAE,CAAC;IAEpC,MAAM,OAAO,GAAG,OAAO,CAAC;QACtB,MAAM,EAAE,EAAE,KAAK,EAAE,MAAM,EAAE;QACzB,SAAS,EAAE,GAAG,GAAG,IAAI,EAAE,2DAA2D;QAClF,qBAAqB,EAAE,KAAK;QAC5B;;;;;WAKG;QACH,cAAc,EAAE,MAAM;KACvB,CAAC,CAAC;IAEH,6EAA6E;IAC7E,2EAA2E;IAC3E,OAAO,CAAC,eAAe,CAAC,CAAC,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE;QAC7C,8EAA8E;QAC9E,MAAM,GAAG,GAAG,KAAwC,CAAC;QACrD,MAAM,UAAU,GAAG,GAAG,CAAC,UAAU,CAAC;QAClC,IACE,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,GAAG;YAClB,UAAU,KAAK,GAAG,EAClB,CAAC;YACD,OAAO,KAAK,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC,IAAI,CAAC;gBACnC,OAAO,EAAE,KAAK;gBACd,KAAK,EAAE;oBACL,IAAI,EAAE,iBAAiB;oBACvB,OAAO,EAAE,GAAG,CAAC,OAAO;iBACrB;aACF,CAAC,CAAC;QACL,CAAC;QACD,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,2CAA2C,EAAE;YAC7D,GAAG;SACJ,CAAC,CAAC;QACH,OAAO,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC;YAC5B,OAAO,EAAE,KAAK;YACd,KAAK,EAAE;gBACL,IAAI,EAAE,aAAa;gBACnB,OAAO,EAAE,GAAG,CAAC,OAAO;aACrB;SACF,CAAC,CAAC;IACL,CAAC,CAAC,CAAC;IAEH,oBAAoB,CAAC,OAAO,EAAE;QAC5B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,yBAAyB;QAClD,SAAS,EAAE,MAAM;KAClB,CAAC,CAAC;IAEH,kBAAkB,CAAC,OAAO,EAAE;QAC1B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;IAEH,mBAAmB,CAAC,OAAO,EAAE;QAC3B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,SAAS,EAAE,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE;QACnE,SAAS;QACT,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,QAAQ;KACT,CAAC,CAAC;IAEH,kBAAkB,CAAC,OAAO,EAAE;QAC1B,cAAc,EAAE,IAAI,CAAC,cAAc;QACnC,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAC,CAAC;IAEH,OAAO,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;AAC1C,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@senpi/runtime",
3
- "version": "1.0.95-dev.runtime-phase-2-api.20260507134852",
3
+ "version": "1.0.95-dev.runtime-phase-2-api.20260507182734",
4
4
  "description": "Senpi runtime plugin for OpenClaw",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",