@fased/fased 0.1.48 → 0.1.51
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/agents/auth-health.js +11 -5
- package/dist/agents/current-model-catalog.js +45 -0
- package/dist/agents/model-catalog-source.js +28 -3
- package/dist/agents/provider-id.js +1 -1
- package/dist/brand.js +1 -1
- package/dist/build-info.json +3 -3
- package/dist/canvas-host/a2ui/.bundle.hash +1 -1
- package/dist/cli/lightweight/gateway-runtime-probe.js +50 -0
- package/dist/cli/update-cli/update-command.js +120 -0
- package/dist/commands/doctor-state-integrity.js +25 -2
- package/dist/config/sessions/transcript.js +30 -16
- package/dist/config/sessions.js +2 -2
- package/dist/control-ui/assets/{app-CHqTx3P_.js → app-wJm5kuje.js} +1274 -1259
- package/dist/control-ui/assets/{chat-model-ref-BbrdMKjQ.js → chat-model-ref-Cs2TTOtF.js} +2 -2
- package/dist/control-ui/assets/{config-FFZLTSLS.js → config-CU5Zi8Dh.js} +2 -2
- package/dist/control-ui/assets/{index-CFHfNlLv.js → index-vTDTf5Zv.js} +3 -3
- package/dist/control-ui/assets/{mining-D_VAMFMY.js → mining-BdhMn18r.js} +3 -3
- package/dist/control-ui/assets/{providers-DqFL6WrJ.js → providers-C0DEXi8e.js} +14 -3
- package/dist/control-ui/index.html +1 -1
- package/dist/gateway/probe-payload.js +14 -0
- package/dist/gateway/probe.js +8 -4
- package/dist/gateway/protocol/schema/agents-models-skills.js +1 -0
- package/dist/gateway/protocol/schema/frames.js +5 -0
- package/dist/gateway/protocol/schema/snapshot.js +1 -0
- package/dist/gateway/server/ws-connection/message-handler.js +2 -1
- package/dist/gateway/server-http-lazy.js +2 -4
- package/dist/gateway/server-http.js +3 -4
- package/dist/gateway/server-methods/chat.js +4 -29
- package/dist/gateway/server-methods/models.js +3 -2
- package/dist/infra/system-presence.js +4 -2
- package/dist/light-update-precheck.js +1 -1
- package/dist/light-update-status.js +1 -1
- package/dist/memory/inventory.js +19 -0
- package/dist/plugin-sdk/{accounts-DI5226U8.js → accounts-BfdIB9Ud.js} +1 -1
- package/dist/plugin-sdk/{actions-CEj4gOU2.js → actions-DHN_x97P.js} +2 -2
- package/dist/plugin-sdk/{active-listener-Ss4UKXZb.js → active-listener-CIP_Ht8d.js} +1 -1
- package/dist/plugin-sdk/{audio-preflight-Cu4alGjb.js → audio-preflight-CKGhXtyV.js} +26 -26
- package/dist/plugin-sdk/{audit-BTskqjJ_.js → audit-Cmg38KPG.js} +1 -1
- package/dist/plugin-sdk/{channel-access-B1KciKmw.js → channel-access-JHDguu4T.js} +1 -1
- package/dist/plugin-sdk/{channel-access-configure-Y91FLOJc.js → channel-access-configure-B8mwKp-Z.js} +1 -1
- package/dist/plugin-sdk/channel-plugin-common.d.ts +2 -2
- package/dist/plugin-sdk/channel-plugin-common.js +4 -4
- package/dist/plugin-sdk/{chunk-items-Q8HhMuSe.js → chunk-items-iKdlZyWZ.js} +1 -1
- package/dist/plugin-sdk/{chunk-CSUjIQSx.js → chunk-oJRyTNTL.js} +1 -1
- package/dist/plugin-sdk/command-status.js +26 -26
- package/dist/plugin-sdk/{commands-registry-DJ0pfCcY.js → commands-registry-Cjo7OjIf.js} +2 -2
- package/dist/plugin-sdk/{common-Cjm8psuW.js → common-Dx4sUa9f.js} +1 -1
- package/dist/plugin-sdk/{config-DutIeFge.js → config-DdS0zHiU.js} +80 -4
- package/dist/plugin-sdk/{config-schema-Cg6PYSHR.js → config-schema-BJQEjMPz.js} +2090 -523
- package/dist/plugin-sdk/device-pair.d.ts +1 -1
- package/dist/plugin-sdk/discord.d.ts +4 -4
- package/dist/plugin-sdk/discord.js +19 -19
- package/dist/plugin-sdk/{handle-action-Dp2741iu.js → handle-action-wR0x9b0c.js} +13 -13
- package/dist/plugin-sdk/{helpers-BCZ9d3fl.js → helpers-DkauqZNP.js} +1 -1
- package/dist/plugin-sdk/{image-ops-B-QR_M9Z.js → image-ops-DmSjpAeh.js} +1 -1
- package/dist/plugin-sdk/index.d.ts +17 -17
- package/dist/plugin-sdk/index.js +28 -28
- package/dist/plugin-sdk/{login-BFvQxf9o.js → login-DB9LIbi8.js} +3 -3
- package/dist/plugin-sdk/{login-qr-CERTe_nD.js → login-qr-CDhMa-c7.js} +3 -3
- package/dist/plugin-sdk/{manager-Dhq3SXpO.js → manager-DGZsMQWR.js} +2 -2
- package/dist/plugin-sdk/{markdown-tables-B1Tx7c77.js → markdown-tables-BX7JXDUV.js} +1 -1
- package/dist/plugin-sdk/{media-BwsqooWC.js → media-DyzsScOp.js} +2 -2
- package/dist/plugin-sdk/{monitor-BYzN5Qr4.js → monitor-B91PZ2mD.js} +31 -31
- package/dist/plugin-sdk/{monitor-CJiacqtR.js → monitor-BH9rTJFq.js} +30 -30
- package/dist/plugin-sdk/{openresponses-http-VLSSqCZZ.js → openresponses-http-CmBLZ9bH.js} +26 -26
- package/dist/plugin-sdk/{optional-runtime-dependency-BEBP4VFJ.js → optional-runtime-dependency-DaMkPVe_.js} +1 -1
- package/dist/plugin-sdk/{outbound-BqWgaC5M.js → outbound-X-m2mBZn.js} +6 -6
- package/dist/plugin-sdk/{outbound-attachment-L1q40kiu.js → outbound-attachment-M0NCUSG-.js} +2 -2
- package/dist/plugin-sdk/{pairing-message-DWXHX-jt.d.ts → pairing-message-BaQiXKLE.d.ts} +1 -1
- package/dist/plugin-sdk/{pairing-message-CZBahREg.js → pairing-message-hnmpJlW2.js} +1 -1
- package/dist/plugin-sdk/{pairing-store-D7I1Qmiw.js → pairing-store-DyghUm9G.js} +2 -2
- package/dist/plugin-sdk/{pi-model-discovery-C5klknQZ.js → pi-model-discovery-ReorOh7W.js} +1 -1
- package/dist/plugin-sdk/{pi-model-discovery-runtime-DIEMhCZ5.js → pi-model-discovery-runtime-C-CHZo03.js} +2 -2
- package/dist/plugin-sdk/provider-web-search-config-contract.d.ts +1 -1
- package/dist/plugin-sdk/{pw-ai-Bv-q25gY.js → pw-ai-D_gli3_r.js} +3 -3
- package/dist/plugin-sdk/{replies-Bd9ktEkq.js → replies-Djyehmcu.js} +2 -2
- package/dist/plugin-sdk/{resolve-outbound-target-CCIyBb5H.js → resolve-outbound-target-Chznq8rS.js} +1 -1
- package/dist/plugin-sdk/{resolve-route-B7vZ3nKp.js → resolve-route-Ce08Fx-G.js} +1 -1
- package/dist/plugin-sdk/{retry-policy-ChC3G4lv.js → retry-policy-eS25atAo.js} +1 -1
- package/dist/plugin-sdk/{runtime-BLknHFGz.js → runtime-Cv3gX3Wc.js} +31 -18
- package/dist/plugin-sdk/{runtime-dependency-C5rJfC0u.js → runtime-dependency-p_iKbESf.js} +2 -2
- package/dist/plugin-sdk/sat-runtime.d.ts +2 -2
- package/dist/plugin-sdk/sat-runtime.js +5 -5
- package/dist/plugin-sdk/{send-Bd3Z-jAd.js → send-B3RAELvw.js} +6 -6
- package/dist/plugin-sdk/{send-Bmtz9ICm.js → send-BuPGxx3-.js} +8 -8
- package/dist/plugin-sdk/{send-mkyZzhCO.js → send-C-jaxZJG.js} +5 -5
- package/dist/plugin-sdk/{send-CUGEhiUa.js → send-CSob7dn9.js} +6 -6
- package/dist/plugin-sdk/{send-CMoWt-EX.js → send-CsLJsIvv.js} +7 -7
- package/dist/plugin-sdk/{session-D2zmelOL.js → session-DKJGakm1.js} +2 -2
- package/dist/plugin-sdk/{skill-commands-BybEjJ1_.js → skill-commands-BqpZG5nW.js} +2 -2
- package/dist/plugin-sdk/{slack-DogXvGG3.js → slack-CQqN9uBH.js} +38 -38
- package/dist/plugin-sdk/{slack-actions-uXb55QWW.js → slack-actions-DlbVH5SS.js} +11 -11
- package/dist/plugin-sdk/slack.d.ts +4 -4
- package/dist/plugin-sdk/slack.js +9 -9
- package/dist/plugin-sdk/{sticker-cache-BuPw7fTf.js → sticker-cache-CDyt2ZMh.js} +3 -3
- package/dist/plugin-sdk/{tables-CVDOT5dX.js → tables-Cij4iAXw.js} +1 -1
- package/dist/plugin-sdk/{targets-DskkhJAp.js → targets-VrYeAmeT.js} +1 -1
- package/dist/plugin-sdk/{telegram-actions-_KQPbjpI.js → telegram-actions-ZwUBOkwa.js} +29 -29
- package/dist/plugin-sdk/telegram.d.ts +4 -4
- package/dist/plugin-sdk/telegram.js +8 -8
- package/dist/plugin-sdk/{thread-bindings.lifecycle-CrhQXYEU.js → thread-bindings.lifecycle-BWIzwpPM.js} +3 -3
- package/dist/plugin-sdk/{thread-bindings.state-ssxdG7xV.js → thread-bindings.state-CpAQrGco.js} +2 -2
- package/dist/plugin-sdk/{tmp-fased-dir-Be1wBhVz.d.ts → tmp-fased-dir-DLba1ePP.d.ts} +1 -1
- package/dist/plugin-sdk/{types-CXLEOrJX.d.ts → types-CKR2Lvsa.d.ts} +1 -1
- package/dist/plugin-sdk/{types-CJGVZX6j.d.ts → types-NR-f-rw-.d.ts} +3 -3
- package/dist/plugin-sdk/{wallet-status-CQI89c_6.js → wallet-status-ClmXigGN.js} +10 -3
- package/dist/plugin-sdk/{web-C8DwA0eO.js → web-BK2j9z6c.js} +31 -31
- package/dist/plugin-sdk/{whatsapp-actions-DfvM-mlZ.js → whatsapp-actions-CaenMy79.js} +13 -13
- package/dist/plugin-sdk/{whatsapp-heartbeat-DyJasLDB.js → whatsapp-heartbeat-Cr9K5Sil.js} +2 -2
- package/dist/plugin-sdk/whatsapp.d.ts +11 -11
- package/dist/plugin-sdk/whatsapp.js +12 -12
- package/dist/plugin-sdk/{wsl-JwmI6Zu8.js → wsl-D_I-iL4U.js} +3 -3
- package/dist/plugin-sdk/{zod-schema.providers-core-BE_5DNhj.d.ts → zod-schema.providers-core-CIzCjXH9.d.ts} +71 -71
- package/dist/plugins/status-cache.js +1 -1
- package/dist/providers/refresh.js +1 -1
- package/dist/providers/refreshed-model-capabilities.js +1935 -406
- package/dist/providers/registry.js +14 -3
- package/dist/version.js +11 -1
- package/extensions/acpx/package.json +1 -1
- package/extensions/bluebubbles/package.json +1 -1
- package/extensions/copilot-proxy/package.json +1 -1
- package/extensions/diagnostics-otel/package.json +1 -1
- package/extensions/fased-federation/package.json +1 -1
- package/extensions/google-gemini-cli-auth/package.json +1 -1
- package/extensions/imessage/package.json +1 -1
- package/extensions/irc/package.json +1 -1
- package/extensions/line/package.json +1 -1
- package/extensions/llm-task/package.json +1 -1
- package/extensions/lobster/package.json +1 -1
- package/extensions/matrix/CHANGELOG.md +18 -0
- package/extensions/matrix/package.json +1 -1
- package/extensions/mattermost/package.json +1 -1
- package/extensions/memory-core/package.json +2 -2
- package/extensions/memory-lancedb/package.json +1 -1
- package/extensions/minimax-portal-auth/package.json +1 -1
- package/extensions/msteams/CHANGELOG.md +18 -0
- package/extensions/msteams/package.json +1 -1
- package/extensions/nextcloud-talk/package.json +1 -1
- package/extensions/nostr/CHANGELOG.md +18 -0
- package/extensions/nostr/package.json +1 -1
- package/extensions/open-prose/package.json +1 -1
- package/extensions/sat-mining/index.ts +121 -12
- package/extensions/sat-mining/package.json +1 -1
- package/extensions/sat-mining/src/runtime.ts +9 -3
- package/extensions/signal/package.json +1 -1
- package/extensions/synology-chat/package.json +1 -1
- package/extensions/tlon/package.json +1 -1
- package/extensions/twitch/CHANGELOG.md +18 -0
- package/extensions/twitch/package.json +1 -1
- package/extensions/voice-call/CHANGELOG.md +18 -0
- package/extensions/voice-call/package.json +1 -1
- package/extensions/zalo/CHANGELOG.md +18 -0
- package/extensions/zalo/package.json +1 -1
- package/extensions/zalouser/CHANGELOG.md +18 -0
- package/extensions/zalouser/package.json +1 -1
- package/package.json +1 -1
- package/scripts/start-managed.sh +35 -1
|
@@ -138,7 +138,9 @@ const CHUTES_MODEL_IDS = [
|
|
|
138
138
|
"moonshotai/Kimi-K2.6-TEE",
|
|
139
139
|
"Qwen/Qwen3.6-27B-TEE",
|
|
140
140
|
"Qwen/Qwen3.5-397B-A17B-TEE",
|
|
141
|
-
"zai-org/GLM-5-TEE"
|
|
141
|
+
"zai-org/GLM-5-TEE",
|
|
142
|
+
"Qwen/Qwen3-235B-A22B-Thinking-2507-TEE",
|
|
143
|
+
"zai-org/GLM-5.2-TEE"
|
|
142
144
|
];
|
|
143
145
|
const CHUTES_MODEL_REFS = CHUTES_MODEL_IDS.map((id) => `${CHUTES_ROUTE_ID}/${id}`);
|
|
144
146
|
const OLLAMA_MODEL_REFS = [];
|
|
@@ -505,7 +507,7 @@ const ANTHROPIC_MODEL_CAPABILITY_OVERRIDES = {
|
|
|
505
507
|
thinkingLevels: ANTHROPIC_THINKING_LEVELS,
|
|
506
508
|
defaultThinkingLevel: "low",
|
|
507
509
|
thinkingMode: "anthropic-adaptive",
|
|
508
|
-
reasoningBudgetSupported:
|
|
510
|
+
reasoningBudgetSupported: false
|
|
509
511
|
},
|
|
510
512
|
"anthropic/claude-haiku-4-5": {
|
|
511
513
|
thinkingLevels: ANTHROPIC_THINKING_LEVELS,
|
|
@@ -853,6 +855,7 @@ const OLLAMA_PROVIDER_MANIFEST = {
|
|
|
853
855
|
models: {
|
|
854
856
|
recommended: OLLAMA_MODEL_REFS,
|
|
855
857
|
dynamic: true,
|
|
858
|
+
operatorCatalog: true,
|
|
856
859
|
routeRules: { [OLLAMA_ROUTE_ID]: [`${OLLAMA_ROUTE_ID}/*`] }
|
|
857
860
|
},
|
|
858
861
|
modelCapabilities: buildProviderModelCapabilities(OLLAMA_MODEL_REFS)
|
|
@@ -874,6 +877,7 @@ const LMSTUDIO_PROVIDER_MANIFEST = {
|
|
|
874
877
|
models: {
|
|
875
878
|
recommended: LMSTUDIO_MODEL_REFS,
|
|
876
879
|
dynamic: true,
|
|
880
|
+
operatorCatalog: true,
|
|
877
881
|
routeRules: { [LMSTUDIO_ROUTE_ID]: [`${LMSTUDIO_ROUTE_ID}/*`] }
|
|
878
882
|
},
|
|
879
883
|
modelCapabilities: buildProviderModelCapabilities(LMSTUDIO_MODEL_REFS)
|
|
@@ -895,6 +899,7 @@ const VLLM_PROVIDER_MANIFEST = {
|
|
|
895
899
|
models: {
|
|
896
900
|
recommended: VLLM_MODEL_REFS,
|
|
897
901
|
dynamic: true,
|
|
902
|
+
operatorCatalog: true,
|
|
898
903
|
routeRules: { [VLLM_ROUTE_ID]: [`${VLLM_ROUTE_ID}/*`] }
|
|
899
904
|
},
|
|
900
905
|
modelCapabilities: buildProviderModelCapabilities(VLLM_MODEL_REFS)
|
|
@@ -1432,6 +1437,7 @@ const LITELLM_PROVIDER_MANIFEST = {
|
|
|
1432
1437
|
models: {
|
|
1433
1438
|
recommended: [...LITELLM_MODEL_REFS],
|
|
1434
1439
|
dynamic: true,
|
|
1440
|
+
operatorCatalog: true,
|
|
1435
1441
|
routeRules: { [LITELLM_ROUTE_ID]: [`${LITELLM_ROUTE_ID}/*`] }
|
|
1436
1442
|
},
|
|
1437
1443
|
modelCapabilities: LITELLM_MODEL_CAPABILITY_OVERRIDES
|
|
@@ -1473,6 +1479,7 @@ const CUSTOM_PROVIDER_MANIFEST = {
|
|
|
1473
1479
|
models: {
|
|
1474
1480
|
recommended: CUSTOM_PROVIDER_MODEL_REFS,
|
|
1475
1481
|
dynamic: true,
|
|
1482
|
+
operatorCatalog: true,
|
|
1476
1483
|
routeRules: { [CUSTOM_PROVIDER_ROUTE_ID]: [`${CUSTOM_PROVIDER_ROUTE_ID}/*`] }
|
|
1477
1484
|
},
|
|
1478
1485
|
modelCapabilities: buildProviderModelCapabilities(CUSTOM_PROVIDER_MODEL_REFS)
|
|
@@ -1559,7 +1566,11 @@ function isStandardProviderModelRef(ref) {
|
|
|
1559
1566
|
if (!getProviderBrandManifestForRoute(provider)) {
|
|
1560
1567
|
return false;
|
|
1561
1568
|
}
|
|
1562
|
-
|
|
1569
|
+
const manifest = getProviderBrandManifestForRoute(provider);
|
|
1570
|
+
if (!manifest) {
|
|
1571
|
+
return false;
|
|
1572
|
+
}
|
|
1573
|
+
if (manifest.models.operatorCatalog) {
|
|
1563
1574
|
return true;
|
|
1564
1575
|
}
|
|
1565
1576
|
return STANDARD_PROVIDER_MODEL_REFS.has(value.toLowerCase());
|
package/dist/version.js
CHANGED
|
@@ -52,10 +52,20 @@ function readVersionFromBuildInfoForModuleUrl(moduleUrl) {
|
|
|
52
52
|
function resolveVersionFromModuleUrl(moduleUrl) {
|
|
53
53
|
return readVersionFromPackageJsonForModuleUrl(moduleUrl) || readVersionFromBuildInfoForModuleUrl(moduleUrl);
|
|
54
54
|
}
|
|
55
|
+
function resolveRuntimeSource(env = process.env, moduleUrl = import.meta.url) {
|
|
56
|
+
const configured = env["FASED_RUNTIME_SOURCE"]?.trim();
|
|
57
|
+
if (configured === "source-checkout" || configured === "managed-package" || configured === "packaged-runtime") {
|
|
58
|
+
return configured;
|
|
59
|
+
}
|
|
60
|
+
if (moduleUrl.includes("/install-cache/npm-global/") || moduleUrl.includes("/node_modules/@fased/fased/")) {
|
|
61
|
+
return "managed-package";
|
|
62
|
+
}
|
|
63
|
+
return env["FASED_GATEWAY_MODE"] === "managed" ? "packaged-runtime" : "source-checkout";
|
|
64
|
+
}
|
|
55
65
|
function resolveRuntimeServiceVersion(env = process.env, fallback = "dev") {
|
|
56
66
|
return firstNonEmpty(env["FASED_VERSION"], env["FASED_SERVICE_VERSION"], env["npm_package_version"]) ?? fallback;
|
|
57
67
|
}
|
|
58
68
|
const VERSION = typeof __FASED_VERSION__ === "string" && __FASED_VERSION__ || process.env.FASED_BUNDLED_VERSION || resolveVersionFromModuleUrl(import.meta.url) || "0.0.0";
|
|
59
69
|
|
|
60
70
|
//#endregion
|
|
61
|
-
export { VERSION, resolveRuntimeServiceVersion };
|
|
71
|
+
export { VERSION, resolveRuntimeServiceVersion, resolveRuntimeSource };
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.51
|
|
4
|
+
|
|
5
|
+
### Changes
|
|
6
|
+
|
|
7
|
+
- Version alignment with core FasedAgent release numbers.
|
|
8
|
+
|
|
9
|
+
## 0.1.50
|
|
10
|
+
|
|
11
|
+
### Changes
|
|
12
|
+
|
|
13
|
+
- Version alignment with core FasedAgent release numbers.
|
|
14
|
+
|
|
15
|
+
## 0.1.49
|
|
16
|
+
|
|
17
|
+
### Changes
|
|
18
|
+
|
|
19
|
+
- Version alignment with core FasedAgent release numbers.
|
|
20
|
+
|
|
3
21
|
## 0.1.48
|
|
4
22
|
|
|
5
23
|
### Changes
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@fased/memory-core",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.51",
|
|
4
4
|
"private": true,
|
|
5
5
|
"description": "FasedAgent core memory search plugin",
|
|
6
6
|
"type": "module",
|
|
7
7
|
"peerDependencies": {
|
|
8
|
-
"@fased/fased": "^0.1.
|
|
8
|
+
"@fased/fased": "^0.1.51"
|
|
9
9
|
},
|
|
10
10
|
"fased": {
|
|
11
11
|
"extensions": [
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.51
|
|
4
|
+
|
|
5
|
+
### Changes
|
|
6
|
+
|
|
7
|
+
- Version alignment with core FasedAgent release numbers.
|
|
8
|
+
|
|
9
|
+
## 0.1.50
|
|
10
|
+
|
|
11
|
+
### Changes
|
|
12
|
+
|
|
13
|
+
- Version alignment with core FasedAgent release numbers.
|
|
14
|
+
|
|
15
|
+
## 0.1.49
|
|
16
|
+
|
|
17
|
+
### Changes
|
|
18
|
+
|
|
19
|
+
- Version alignment with core FasedAgent release numbers.
|
|
20
|
+
|
|
3
21
|
## 0.1.48
|
|
4
22
|
|
|
5
23
|
### Changes
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.51
|
|
4
|
+
|
|
5
|
+
### Changes
|
|
6
|
+
|
|
7
|
+
- Version alignment with core FasedAgent release numbers.
|
|
8
|
+
|
|
9
|
+
## 0.1.50
|
|
10
|
+
|
|
11
|
+
### Changes
|
|
12
|
+
|
|
13
|
+
- Version alignment with core FasedAgent release numbers.
|
|
14
|
+
|
|
15
|
+
## 0.1.49
|
|
16
|
+
|
|
17
|
+
### Changes
|
|
18
|
+
|
|
19
|
+
- Version alignment with core FasedAgent release numbers.
|
|
20
|
+
|
|
3
21
|
## 0.1.48
|
|
4
22
|
|
|
5
23
|
### Changes
|
|
@@ -784,6 +784,17 @@ const satMiningPlugin = {
|
|
|
784
784
|
const walletId = readWalletProviderRegistry(effectiveEnv).defaultWalletId?.trim();
|
|
785
785
|
return walletId ? walletId : undefined;
|
|
786
786
|
};
|
|
787
|
+
const readRegisteredWalletRole = (walletId: string | undefined) => {
|
|
788
|
+
const resolvedWalletId = walletId?.trim();
|
|
789
|
+
if (!resolvedWalletId) {
|
|
790
|
+
return undefined;
|
|
791
|
+
}
|
|
792
|
+
const { effectiveEnv } = resolveWalletRuntimeContext();
|
|
793
|
+
const wallet = readWalletProviderRegistry(effectiveEnv).wallets.find(
|
|
794
|
+
(entry) => entry.id === resolvedWalletId,
|
|
795
|
+
);
|
|
796
|
+
return wallet ? resolveWalletUserRole(wallet) : undefined;
|
|
797
|
+
};
|
|
787
798
|
const resolveMiningWalletSelection = async (opts?: {
|
|
788
799
|
walletId?: string;
|
|
789
800
|
requireResolvedWallet?: boolean;
|
|
@@ -807,9 +818,46 @@ const satMiningPlugin = {
|
|
|
807
818
|
return { wallets: wallet ? [wallet] : [], wallet, selectedWalletId };
|
|
808
819
|
};
|
|
809
820
|
const ensureStartupWalletBinding = async (opts?: { requireResolvedWallet?: boolean }) => {
|
|
810
|
-
|
|
811
|
-
|
|
812
|
-
|
|
821
|
+
let selection: Awaited<ReturnType<typeof resolveMiningWalletSelection>>;
|
|
822
|
+
try {
|
|
823
|
+
selection = await resolveMiningWalletSelection({
|
|
824
|
+
requireResolvedWallet: opts?.requireResolvedWallet,
|
|
825
|
+
});
|
|
826
|
+
} catch (error) {
|
|
827
|
+
const configuredWalletId = resolveConfiguredWalletId();
|
|
828
|
+
if (!configuredWalletId) {
|
|
829
|
+
throw error;
|
|
830
|
+
}
|
|
831
|
+
const configuredWalletRole = readRegisteredWalletRole(configuredWalletId);
|
|
832
|
+
if (!configuredWalletRole || configuredWalletRole === "mining") {
|
|
833
|
+
throw error;
|
|
834
|
+
}
|
|
835
|
+
const miningWallets = await listMiningWallets();
|
|
836
|
+
if (miningWallets.length === 1) {
|
|
837
|
+
await attachWallet(miningWallets[0]!.walletId);
|
|
838
|
+
api.logger.warn(
|
|
839
|
+
`[sat-mining] migrated invalid miner profile wallet ${configuredWalletId} to ${miningWallets[0]!.walletId}`,
|
|
840
|
+
);
|
|
841
|
+
selection = await resolveMiningWalletSelection({
|
|
842
|
+
requireResolvedWallet: opts?.requireResolvedWallet,
|
|
843
|
+
});
|
|
844
|
+
} else {
|
|
845
|
+
state.activeConfig.walletId = undefined;
|
|
846
|
+
state.activeConfig.enabled = false;
|
|
847
|
+
state.activeWalletAddress = null;
|
|
848
|
+
state.running = false;
|
|
849
|
+
await stopSatWorkerServices();
|
|
850
|
+
await persistActiveConfig({ includeEnabled: true });
|
|
851
|
+
if (opts?.requireResolvedWallet) {
|
|
852
|
+
throw new Error(
|
|
853
|
+
miningWallets.length === 0
|
|
854
|
+
? "the saved mining profile referenced an invalid wallet and no dedicated Mining wallet exists; create or import @wallet:mining first"
|
|
855
|
+
: "the saved mining profile referenced an invalid wallet; select the dedicated Mining wallet before starting",
|
|
856
|
+
);
|
|
857
|
+
}
|
|
858
|
+
selection = { wallets: [], wallet: undefined, selectedWalletId: undefined };
|
|
859
|
+
}
|
|
860
|
+
}
|
|
813
861
|
state.activeWalletAddress = selection.wallet?.address ?? null;
|
|
814
862
|
await ensureSatCapitalActionSignerReady();
|
|
815
863
|
return selection;
|
|
@@ -3288,8 +3336,20 @@ const satMiningPlugin = {
|
|
|
3288
3336
|
options?: { syncActiveCommit?: boolean; freezeCommitMs?: number },
|
|
3289
3337
|
) => {
|
|
3290
3338
|
const previousWalletId = resolveConfiguredWalletId();
|
|
3291
|
-
|
|
3339
|
+
const requestedWalletId =
|
|
3292
3340
|
typeof profile.walletId === "string" ? profile.walletId.trim() || undefined : undefined;
|
|
3341
|
+
if (requestedWalletId) {
|
|
3342
|
+
const requestedWalletRole = readRegisteredWalletRole(requestedWalletId);
|
|
3343
|
+
if (!requestedWalletRole) {
|
|
3344
|
+
throw new Error(`walletId not found: ${requestedWalletId}`);
|
|
3345
|
+
}
|
|
3346
|
+
if (requestedWalletRole !== "mining") {
|
|
3347
|
+
throw new Error(
|
|
3348
|
+
`walletId ${requestedWalletId} is not the dedicated Mining wallet; create or import @wallet:mining and use that wallet for SAT mining`,
|
|
3349
|
+
);
|
|
3350
|
+
}
|
|
3351
|
+
}
|
|
3352
|
+
state.activeConfig.walletId = requestedWalletId;
|
|
3293
3353
|
state.activeConfig.role =
|
|
3294
3354
|
profile.role === "validator" || profile.role === "admin" || profile.role === "miner"
|
|
3295
3355
|
? profile.role
|
|
@@ -3522,9 +3582,14 @@ const satMiningPlugin = {
|
|
|
3522
3582
|
);
|
|
3523
3583
|
}
|
|
3524
3584
|
if (options?.syncActiveCommit !== false && state.activeWalletAddress) {
|
|
3525
|
-
|
|
3526
|
-
|
|
3527
|
-
|
|
3585
|
+
try {
|
|
3586
|
+
await submitSatSetActiveCommit(state.activeConfig, {
|
|
3587
|
+
lamports: state.activeConfig.commitLamports ?? 250_000_000,
|
|
3588
|
+
});
|
|
3589
|
+
} catch (error) {
|
|
3590
|
+
const detail = error instanceof Error ? error.message : String(error);
|
|
3591
|
+
throw new Error(`mining profile saved, but active commit was not confirmed: ${detail}`);
|
|
3592
|
+
}
|
|
3528
3593
|
}
|
|
3529
3594
|
return readProfile();
|
|
3530
3595
|
};
|
|
@@ -5830,6 +5895,40 @@ const satMiningPlugin = {
|
|
|
5830
5895
|
updatedAt: source.updatedAt,
|
|
5831
5896
|
};
|
|
5832
5897
|
};
|
|
5898
|
+
const uiMiningStatusPayload = (status: unknown) => {
|
|
5899
|
+
const source =
|
|
5900
|
+
status && typeof status === "object" && !Array.isArray(status)
|
|
5901
|
+
? (status as Record<string, unknown>)
|
|
5902
|
+
: {};
|
|
5903
|
+
const {
|
|
5904
|
+
recentPlannerOutcomes: _recentPlannerOutcomes,
|
|
5905
|
+
plannerRegimeBuckets: _plannerRegimeBuckets,
|
|
5906
|
+
plannerTimeWindowStats: _plannerTimeWindowStats,
|
|
5907
|
+
deterministicBaseline: _deterministicBaseline,
|
|
5908
|
+
plannerPolicyContexts: _plannerPolicyContexts,
|
|
5909
|
+
plannerCapitalTierStats: _plannerCapitalTierStats,
|
|
5910
|
+
plannerLiveValidation: _plannerLiveValidation,
|
|
5911
|
+
recentCycleFeeBuckets: _recentCycleFeeBuckets,
|
|
5912
|
+
...rest
|
|
5913
|
+
} = source;
|
|
5914
|
+
const settledHistory = Array.isArray(source.settledHistory) ? source.settledHistory : [];
|
|
5915
|
+
const recentActions = Array.isArray(source.recentActions) ? source.recentActions : [];
|
|
5916
|
+
const archivedFailures = Array.isArray(source.archivedFailures)
|
|
5917
|
+
? source.archivedFailures
|
|
5918
|
+
: [];
|
|
5919
|
+
return {
|
|
5920
|
+
...rest,
|
|
5921
|
+
mode: "ui",
|
|
5922
|
+
recentActions: recentActions.slice(0, 30),
|
|
5923
|
+
archivedFailures: archivedFailures.slice(0, 20),
|
|
5924
|
+
settledHistory: settledHistory.slice(0, 12),
|
|
5925
|
+
historyPage: {
|
|
5926
|
+
settledTotal: settledHistory.length,
|
|
5927
|
+
settledReturned: Math.min(settledHistory.length, 12),
|
|
5928
|
+
fullHistoryMethod: "sat.getMiningHistory",
|
|
5929
|
+
},
|
|
5930
|
+
};
|
|
5931
|
+
};
|
|
5833
5932
|
const resolveMiningAuthorityOrThrow = async () => {
|
|
5834
5933
|
const { wallet } = await ensureStartupWalletBinding({ requireResolvedWallet: true });
|
|
5835
5934
|
const authority = wallet?.address?.trim();
|
|
@@ -7712,9 +7811,15 @@ const satMiningPlugin = {
|
|
|
7712
7811
|
? getMiningStatusResponsive({ forceFresh })
|
|
7713
7812
|
: getMiningStatus({ includeTxReceipts: false, forceFresh })),
|
|
7714
7813
|
)
|
|
7715
|
-
:
|
|
7716
|
-
|
|
7717
|
-
|
|
7814
|
+
: statusMode === "ui"
|
|
7815
|
+
? uiMiningStatusPayload(
|
|
7816
|
+
await (effectiveResponsive
|
|
7817
|
+
? getMiningStatusResponsive({ forceFresh })
|
|
7818
|
+
: getMiningStatus({ includeTxReceipts, forceFresh })),
|
|
7819
|
+
)
|
|
7820
|
+
: await (effectiveResponsive
|
|
7821
|
+
? getMiningStatusResponsive({ forceFresh })
|
|
7822
|
+
: getMiningStatus({ includeTxReceipts, forceFresh })),
|
|
7718
7823
|
),
|
|
7719
7824
|
);
|
|
7720
7825
|
} catch (error) {
|
|
@@ -7988,8 +8093,12 @@ const satMiningPlugin = {
|
|
|
7988
8093
|
typeof (params as { walletId?: string })?.walletId === "string"
|
|
7989
8094
|
? String((params as { walletId?: string }).walletId).trim()
|
|
7990
8095
|
: undefined;
|
|
7991
|
-
if (walletId
|
|
7992
|
-
|
|
8096
|
+
if (walletId) {
|
|
8097
|
+
if (walletId !== resolveConfiguredWalletId()) {
|
|
8098
|
+
await attachWallet(walletId);
|
|
8099
|
+
} else {
|
|
8100
|
+
await resolveMiningWalletSelection({ walletId, requireResolvedWallet: true });
|
|
8101
|
+
}
|
|
7993
8102
|
}
|
|
7994
8103
|
const { wallet: activeWallet } = await ensureStartupWalletBinding({
|
|
7995
8104
|
requireResolvedWallet: true,
|
|
@@ -212,6 +212,9 @@ export type SatMiningRuntimeState = {
|
|
|
212
212
|
|
|
213
213
|
const SAT_RATE_LIMIT_BASE_DELAY_MS = 60_000;
|
|
214
214
|
const SAT_RATE_LIMIT_MAX_DELAY_MS = 5 * 60_000;
|
|
215
|
+
const SAT_RATE_LIMIT_CIRCUIT_BREAKER_DELAY_MS = 15 * 60_000;
|
|
216
|
+
const SAT_RATE_LIMIT_CIRCUIT_BREAKER_RETRY_COUNT = 8;
|
|
217
|
+
const SAT_RETRY_COUNT_MAX = 1_000;
|
|
215
218
|
const SAT_CHAIN_TIME_FRESH_MS = 15_000;
|
|
216
219
|
const SAT_CHAIN_TIME_STALE_MS = 60_000;
|
|
217
220
|
const SAT_CLAIM_BATCH_DEFAULT_CYCLES = 5;
|
|
@@ -351,7 +354,7 @@ export function markWorkerFailure(
|
|
|
351
354
|
) {
|
|
352
355
|
const entry = state.workers[worker];
|
|
353
356
|
entry.running = false;
|
|
354
|
-
entry.retryCount
|
|
357
|
+
entry.retryCount = Math.min(SAT_RETRY_COUNT_MAX, entry.retryCount + 1);
|
|
355
358
|
entry.lastFailureAt = new Date().toISOString();
|
|
356
359
|
entry.lastError = error instanceof Error ? error.message : String(error);
|
|
357
360
|
entry.lastDetail = detail ?? entry.lastDetail;
|
|
@@ -442,6 +445,9 @@ export function isSatRateLimitedError(error: unknown): boolean {
|
|
|
442
445
|
|
|
443
446
|
export function satRateLimitBackoffMs(retryCount: number): number {
|
|
444
447
|
const normalizedRetryCount = Math.max(1, Math.floor(retryCount));
|
|
448
|
+
if (normalizedRetryCount >= SAT_RATE_LIMIT_CIRCUIT_BREAKER_RETRY_COUNT) {
|
|
449
|
+
return SAT_RATE_LIMIT_CIRCUIT_BREAKER_DELAY_MS;
|
|
450
|
+
}
|
|
445
451
|
return Math.min(
|
|
446
452
|
SAT_RATE_LIMIT_MAX_DELAY_MS,
|
|
447
453
|
SAT_RATE_LIMIT_BASE_DELAY_MS * 2 ** Math.max(0, normalizedRetryCount - 1),
|
|
@@ -503,7 +509,7 @@ export function upsertSatClaimBacklogEntry(
|
|
|
503
509
|
stage: patch.stage ?? existing?.stage ?? "pending",
|
|
504
510
|
retryCount:
|
|
505
511
|
typeof patch.retryCount === "number" && Number.isFinite(patch.retryCount)
|
|
506
|
-
? Math.max(0, Math.floor(patch.retryCount))
|
|
512
|
+
? Math.min(SAT_RETRY_COUNT_MAX, Math.max(0, Math.floor(patch.retryCount)))
|
|
507
513
|
: (existing?.retryCount ?? 0),
|
|
508
514
|
firstSeenAt: existing?.firstSeenAt ?? now,
|
|
509
515
|
lastUpdatedAt: patch.lastUpdatedAt ?? now,
|
|
@@ -567,7 +573,7 @@ export function markSatClaimBacklogFailure(
|
|
|
567
573
|
const existing = state.claimBacklog.get(cycleId);
|
|
568
574
|
upsertSatClaimBacklogEntry(state, cycleId, {
|
|
569
575
|
stage: "failed",
|
|
570
|
-
retryCount: (existing?.retryCount ?? 0) + 1,
|
|
576
|
+
retryCount: Math.min(SAT_RETRY_COUNT_MAX, (existing?.retryCount ?? 0) + 1),
|
|
571
577
|
lastError: message,
|
|
572
578
|
reason: "claim batch failed; retry will keep the same oldest cycles first",
|
|
573
579
|
});
|
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 0.1.51
|
|
4
|
+
|
|
5
|
+
### Changes
|
|
6
|
+
|
|
7
|
+
- Version alignment with core FasedAgent release numbers.
|
|
8
|
+
|
|
9
|
+
## 0.1.50
|
|
10
|
+
|
|
11
|
+
### Changes
|
|
12
|
+
|
|
13
|
+
- Version alignment with core FasedAgent release numbers.
|
|
14
|
+
|
|
15
|
+
## 0.1.49
|
|
16
|
+
|
|
17
|
+
### Changes
|
|
18
|
+
|
|
19
|
+
- Version alignment with core FasedAgent release numbers.
|
|
20
|
+
|
|
3
21
|
## 0.1.48
|
|
4
22
|
|
|
5
23
|
### Changes
|