@senpi/runtime 3.0.169 → 3.0.171
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/deploy/orchestrator.d.ts +0 -5
- package/dist/deploy/orchestrator.d.ts.map +1 -1
- package/dist/deploy/orchestrator.js +0 -10
- package/dist/deploy/orchestrator.js.map +1 -1
- package/dist/deploy/register.d.ts +0 -6
- package/dist/deploy/register.d.ts.map +1 -1
- package/dist/deploy/register.js +0 -1
- package/dist/deploy/register.js.map +1 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -3
- package/dist/index.js.map +1 -1
- package/dist/strategy/__tests__/fixtures/hawk-facts.d.ts +6 -0
- package/dist/strategy/__tests__/fixtures/hawk-facts.d.ts.map +1 -1
- package/dist/strategy/__tests__/fixtures/hawk-facts.js +6 -0
- package/dist/strategy/__tests__/fixtures/hawk-facts.js.map +1 -1
- package/dist/strategy/facts-sync.d.ts +13 -5
- package/dist/strategy/facts-sync.d.ts.map +1 -1
- package/dist/strategy/facts-sync.js +33 -16
- package/dist/strategy/facts-sync.js.map +1 -1
- package/openclaw.plugin.json +1 -1
- package/package.json +1 -1
|
@@ -19,7 +19,7 @@ import { parse as parseYaml } from "yaml";
|
|
|
19
19
|
import { z } from "zod";
|
|
20
20
|
import { errorText } from "../deploy/error-text.js";
|
|
21
21
|
import { computeConfigHash } from "../telemetry/identity.js";
|
|
22
|
-
import { strategyFacts } from "./facts.js";
|
|
22
|
+
import { catalogCopy, strategyFacts, } from "./facts.js";
|
|
23
23
|
export const FACTS_STATE_FILE = "strategy-facts.json";
|
|
24
24
|
/** Bound on one boot facts send (connect excluded; the SDK bounds that). Detached from boot either way. */
|
|
25
25
|
export const BOOT_FACTS_CALL_TIMEOUT_MS = 30_000;
|
|
@@ -27,6 +27,10 @@ const MANIFEST_FILE = "strategy.yaml";
|
|
|
27
27
|
export function factsHash(facts) {
|
|
28
28
|
return computeConfigHash(facts) ?? "";
|
|
29
29
|
}
|
|
30
|
+
/** Hash of what one send carries: the facts alone, or the facts with the catalog copy. */
|
|
31
|
+
export function sendHash(facts, catalog) {
|
|
32
|
+
return catalog ? (computeConfigHash({ facts, catalog }) ?? "") : factsHash(facts);
|
|
33
|
+
}
|
|
30
34
|
function isMap(value) {
|
|
31
35
|
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
32
36
|
}
|
|
@@ -90,6 +94,7 @@ function statePath(stateDir) {
|
|
|
90
94
|
const factsSyncStateSchema = z.object({
|
|
91
95
|
v: z.literal(1),
|
|
92
96
|
hash: z.string(),
|
|
97
|
+
factsHash: z.string().optional(),
|
|
93
98
|
outcome: z.enum(["sent", "refused"]),
|
|
94
99
|
sent: z.object({ v: z.literal(1) }).passthrough().nullable(),
|
|
95
100
|
});
|
|
@@ -110,35 +115,47 @@ async function writeFactsState(stateDir, state) {
|
|
|
110
115
|
await writeFile(tmp, JSON.stringify(state, null, 2), "utf8");
|
|
111
116
|
await rename(tmp, target);
|
|
112
117
|
}
|
|
113
|
-
/** Record facts the backend already holds (the deploy sent them on create), so boot does not resend. */
|
|
114
|
-
export async function recordFactsSent(stateDir, facts) {
|
|
115
|
-
await writeFactsState(stateDir, { v: 1, hash: factsHash(facts), outcome: "sent", sent: facts });
|
|
116
|
-
}
|
|
117
118
|
/** What this boot would send for one instance. Local only: files, no network. */
|
|
118
119
|
export async function planBootFacts(input) {
|
|
119
120
|
const manifest = await readPackageManifest(input.runtimeYamlDir);
|
|
120
121
|
const previous = await readFactsState(input.stateDir);
|
|
121
122
|
const facts = mergeBootFacts(strategyFacts(input.config, manifest), previous?.sent ?? null);
|
|
122
|
-
const
|
|
123
|
+
const catalog = catalogCopy(manifest?.catalog);
|
|
124
|
+
const hash = sendHash(facts, catalog);
|
|
125
|
+
// Without a catalog this boot (no manifest, or an incomplete one) the facts alone are compared,
|
|
126
|
+
// so a catalog sent earlier does not make identical facts go out again. A refused pair never
|
|
127
|
+
// vouches for its facts alone.
|
|
128
|
+
const settled = previous?.hash === hash || (catalog === null && previous?.outcome === "sent" && previous.factsHash === hash);
|
|
123
129
|
return {
|
|
124
130
|
runtimeId: input.runtimeId,
|
|
125
131
|
wallet: input.wallet,
|
|
126
132
|
stateDir: input.stateDir,
|
|
127
133
|
facts,
|
|
134
|
+
catalog,
|
|
128
135
|
hash,
|
|
129
|
-
unchanged:
|
|
130
|
-
delivered: previous?.outcome === "sent" &&
|
|
136
|
+
unchanged: settled,
|
|
137
|
+
delivered: previous?.outcome === "sent" && settled,
|
|
131
138
|
previous,
|
|
132
139
|
};
|
|
133
140
|
}
|
|
134
141
|
/**
|
|
135
|
-
*
|
|
136
|
-
*
|
|
142
|
+
* The only answers that judge the facts themselves, so repeating the send cannot change them:
|
|
143
|
+
* SERR044 (no such strategy), SERR045 (strategy not updatable), SERR180-182 (facts or catalog
|
|
144
|
+
* rejected) and INVALID_ARGUMENT (the MCP's schema check of facts or catalog). Everything else
|
|
145
|
+
* says something about the deployment, not the facts: NOT_FOUND from an MCP that does not know
|
|
146
|
+
* the tool yet, UNAUTHENTICATED from a gateway that does not know the route, UNAVAILABLE, INTERNAL,
|
|
147
|
+
* SERR032 (the box's token). Those retry on the next boot, whatever `retryable` says.
|
|
137
148
|
*/
|
|
138
|
-
const
|
|
139
|
-
|
|
149
|
+
const FINAL_REFUSAL_CODES = new Set([
|
|
150
|
+
"SERR044",
|
|
151
|
+
"SERR045",
|
|
152
|
+
"SERR180",
|
|
153
|
+
"SERR181",
|
|
154
|
+
"SERR182",
|
|
155
|
+
"INVALID_ARGUMENT",
|
|
156
|
+
]);
|
|
140
157
|
function isFinalRefusal(result) {
|
|
141
|
-
return result.errorCode !== undefined &&
|
|
158
|
+
return result.errorCode !== undefined && FINAL_REFUSAL_CODES.has(result.errorCode);
|
|
142
159
|
}
|
|
143
160
|
/**
|
|
144
161
|
* Send one instance's planned facts, at most once. Never throws. A state write that fails after a
|
|
@@ -152,7 +169,7 @@ export async function syncBootFacts(plan, deps) {
|
|
|
152
169
|
return { outcome: "failed", detail: "no strategy id known for this wallet" };
|
|
153
170
|
let result;
|
|
154
171
|
try {
|
|
155
|
-
result = await deps.patch(strategyId, plan.facts);
|
|
172
|
+
result = await deps.patch(strategyId, plan.facts, plan.catalog ?? undefined);
|
|
156
173
|
}
|
|
157
174
|
catch (err) {
|
|
158
175
|
return { outcome: "failed", detail: errorText(err) };
|
|
@@ -164,11 +181,11 @@ export async function syncBootFacts(plan, deps) {
|
|
|
164
181
|
let state;
|
|
165
182
|
if (result.success) {
|
|
166
183
|
settled = { outcome: "sent" };
|
|
167
|
-
state = { v: 1, hash: plan.hash, outcome: "sent", sent: plan.facts };
|
|
184
|
+
state = { v: 1, hash: plan.hash, factsHash: factsHash(plan.facts), outcome: "sent", sent: plan.facts };
|
|
168
185
|
}
|
|
169
186
|
else if (isFinalRefusal(result)) {
|
|
170
187
|
settled = { outcome: "refused", detail };
|
|
171
|
-
state = { v: 1, hash: plan.hash, outcome: "refused", sent: plan.previous?.sent ?? null };
|
|
188
|
+
state = { v: 1, hash: plan.hash, factsHash: factsHash(plan.facts), outcome: "refused", sent: plan.previous?.sent ?? null };
|
|
172
189
|
}
|
|
173
190
|
else {
|
|
174
191
|
return { outcome: "failed", detail };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"facts-sync.js","sourceRoot":"","sources":["../../src/strategy/facts-sync.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AACzC,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AACnD,OAAO,EAAE,KAAK,IAAI,SAAS,EAAE,MAAM,MAAM,CAAC;AAC1C,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AAEpD,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,
|
|
1
|
+
{"version":3,"file":"facts-sync.js","sourceRoot":"","sources":["../../src/strategy/facts-sync.ts"],"names":[],"mappings":"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"}
|
package/openclaw.plugin.json
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
"id": "runtime",
|
|
3
3
|
"name": "Senpi Runtime",
|
|
4
4
|
"description": "Senpi runtime plugin for OpenClaw. Orchestrates scanners, LLM-based trade decisions, and a DSL trailing stop-loss exit engine.",
|
|
5
|
-
"version": "3.0.
|
|
5
|
+
"version": "3.0.171",
|
|
6
6
|
"commandAliases": [
|
|
7
7
|
{
|
|
8
8
|
"name": "senpi"
|