From 0023a087e62bcf027e0c1dd4c233a07fa4398700 Mon Sep 17 00:00:00 2001 From: Valery Antopol Date: Sun, 8 Feb 2026 23:18:34 +0400 Subject: [PATCH 01/12] fix image --- .../cli/package/src/lib/chain/commitment.ts | 69 +------------------ 1 file changed, 2 insertions(+), 67 deletions(-) diff --git a/packages/cli/package/src/lib/chain/commitment.ts b/packages/cli/package/src/lib/chain/commitment.ts index 0b636944e..4a554fb52 100644 --- a/packages/cli/package/src/lib/chain/commitment.ts +++ b/packages/cli/package/src/lib/chain/commitment.ts @@ -570,52 +570,6 @@ export async function collateralWithdraw( })) { const { ccId, name: peerName } = commitment; - // TODO: improve how we get this info - const [unitIds, isExitedStatuses] = - await contracts.diamond.getUnitExitStatuses(ccId); - - // eslint-disable-next-line @typescript-eslint/consistent-type-assertions - const computeUnitInfos = (await multicallRead( - unitIds.map((unitId): MulticallReadItem => { - return { - target: contracts.deployment.diamond, - callData: contracts.diamond.interface.encodeFunctionData( - "getComputeUnit", - [unitId], - ), - decode(returnData) { - return contracts.diamond.interface.decodeFunctionResult( - "getComputeUnit", - returnData, - ); - }, - }; - }), - )) as ( - | Awaited> - | undefined - )[]; - - const units = unitIds.map((unitId, i) => { - return { - unitId, - unitInfo: - computeUnitInfos[i] ?? - (() => { - throw new Error( - `Unreachable. Unit ${unitId} not found after running getComputeUnit`, - ); - })(), - isExited: - isExitedStatuses[i] ?? - (() => { - throw new Error( - `Unreachable. No exit status returned from getUnitExitStatuses for unit ${unitId}`, - ); - })(), - }; - }); - await sign({ title: `withdraw collateral from: ${ccId}`, method: contracts.diamond.withdrawCollateral, @@ -632,28 +586,9 @@ export async function collateralWithdraw( continue; } - const [firstNotExitedUnit, ...restNotExitedUnits] = units.filter( - ({ isExited }) => { - return !isExited; - }, - ); - await signBatch({ - title: `${firstNotExitedUnit === undefined ? "Finish" : "Remove compute units from capacity commitments and finish"} commitment ${peerName === undefined ? ccId : `for ${peerName} (${ccId})`} ${ccId}`, - populatedTxs: - firstNotExitedUnit === undefined - ? [populateTx(contracts.diamond.finishCommitment, ccId)] - : [ - populateTx(contracts.diamond.removeCUFromCC, ccId, [ - firstNotExitedUnit.unitId, - ]), - ...restNotExitedUnits.map(({ unitId }) => { - return populateTx(contracts.diamond.removeCUFromCC, ccId, [ - unitId, - ]); - }), - populateTx(contracts.diamond.finishCommitment, ccId), - ], + title: `Finish commitment ${peerName === undefined ? ccId : `for ${peerName} (${ccId})`} ${ccId}`, + populatedTxs: [populateTx(contracts.diamond.finishCommitment, ccId)], }); } } From 2e748541d48f6f93f43293d97d8c9d1917fc8e25 Mon Sep 17 00:00:00 2001 From: Valery Antopol Date: Mon, 9 Feb 2026 12:41:21 +0400 Subject: [PATCH 02/12] update chain version --- packages/cli/package/src/versions.json | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/packages/cli/package/src/versions.json b/packages/cli/package/src/versions.json index dc317bf0c..842db70f5 100644 --- a/packages/cli/package/src/versions.json +++ b/packages/cli/package/src/versions.json @@ -1,6 +1,6 @@ { "protocolVersion": 2, - "chain-rpc": "docker.fluence.dev/chain-rpc:feat-beam-support-f0edb5b-8391-1", - "chain-deploy-script": "docker.fluence.dev/chain-deploy-script:feat-beam-support-f0edb5b-8391-1", - "subgraph-deploy-script": "docker.fluence.dev/subgraph-deploy-script:feat-beam-support-f0edb5b-8391-1" + "chain-rpc": "docker.fluence.dev/chain-rpc:release-candidate-v0-27-2-1d44fe4-9165-1", + "chain-deploy-script": "docker.fluence.dev/chain-deploy-script:release-candidate-v0-27-2-1d44fe4-9165-1", + "subgraph-deploy-script": "docker.fluence.dev/subgraph-deploy-script:release-candidate-v0-27-2-1d44fe4-9165-1" } From 56e70020558bbf588e004c2db25124e87abe8c14 Mon Sep 17 00:00:00 2001 From: Valery Antopol Date: Mon, 9 Feb 2026 12:51:34 +0400 Subject: [PATCH 03/12] upade bindings dep --- packages/cli/package/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/package/package.json b/packages/cli/package/package.json index b7830ffd4..0012d4ff4 100644 --- a/packages/cli/package/package.json +++ b/packages/cli/package/package.json @@ -56,7 +56,7 @@ "whatwg-url": "^14.0.0" }, "dependencies": { - "@fluencelabs/deal-ts-clients": "0.24.3-feat-beam-support-f0edb5b-8391-1.0", + "@fluencelabs/deal-ts-clients": "0.27.1", "@kubernetes/client-node": "github:fluencelabs/kubernetes-client-javascript#e72ee00a52fec4eb4a8327632895d888ee504f4d", "@libp2p/crypto": "4.0.1", "@libp2p/peer-id-factory": "4.0.5", From df187fa6f2a9a78ce7cf457a6cbde74763e99efd Mon Sep 17 00:00:00 2001 From: Valery Antopol Date: Mon, 9 Feb 2026 13:14:57 +0400 Subject: [PATCH 04/12] use snapshot --- packages/cli/package/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/package/package.json b/packages/cli/package/package.json index 0012d4ff4..aa757e7ad 100644 --- a/packages/cli/package/package.json +++ b/packages/cli/package/package.json @@ -56,7 +56,7 @@ "whatwg-url": "^14.0.0" }, "dependencies": { - "@fluencelabs/deal-ts-clients": "0.27.1", + "@fluencelabs/deal-ts-clients": "0.27.1@0.27.2-release-candidate-v0-27-2-7faf671-9169-1.0", "@kubernetes/client-node": "github:fluencelabs/kubernetes-client-javascript#e72ee00a52fec4eb4a8327632895d888ee504f4d", "@libp2p/crypto": "4.0.1", "@libp2p/peer-id-factory": "4.0.5", From 6e40867fc9346dd0d43dd2f116c5da50a14d0a78 Mon Sep 17 00:00:00 2001 From: Valery Antopol Date: Mon, 9 Feb 2026 13:19:26 +0400 Subject: [PATCH 05/12] use snapshot --- packages/cli/package/package.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/package/package.json b/packages/cli/package/package.json index aa757e7ad..c2328da25 100644 --- a/packages/cli/package/package.json +++ b/packages/cli/package/package.json @@ -56,7 +56,7 @@ "whatwg-url": "^14.0.0" }, "dependencies": { - "@fluencelabs/deal-ts-clients": "0.27.1@0.27.2-release-candidate-v0-27-2-7faf671-9169-1.0", + "@fluencelabs/deal-ts-clients": "0.27.2-release-candidate-v0-27-2-7faf671-9169-1.0", "@kubernetes/client-node": "github:fluencelabs/kubernetes-client-javascript#e72ee00a52fec4eb4a8327632895d888ee504f4d", "@libp2p/crypto": "4.0.1", "@libp2p/peer-id-factory": "4.0.5", From 456faa2b780ca3a4b48b321797171e17671eab57 Mon Sep 17 00:00:00 2001 From: Valery Antopol Date: Mon, 9 Feb 2026 13:28:56 +0400 Subject: [PATCH 06/12] allow finish active cc --- packages/cli/package/src/commands/provider/cc-finish.ts | 3 ++- packages/cli/package/src/lib/chain/commitment.ts | 6 +++++- packages/cli/package/src/lib/const.ts | 6 ++++++ 3 files changed, 13 insertions(+), 2 deletions(-) diff --git a/packages/cli/package/src/commands/provider/cc-finish.ts b/packages/cli/package/src/commands/provider/cc-finish.ts index 7301123b4..4366b0c9f 100644 --- a/packages/cli/package/src/commands/provider/cc-finish.ts +++ b/packages/cli/package/src/commands/provider/cc-finish.ts @@ -17,7 +17,7 @@ import { BaseCommand } from "../../baseCommand.js"; import { collateralWithdraw } from "../../lib/chain/commitment.js"; -import { CHAIN_FLAGS, FLT_SYMBOL, CC_FLAGS } from "../../lib/const.js"; +import { CHAIN_FLAGS, FLT_SYMBOL, CC_FLAGS, CC_FINISH_FORCE_FLAG } from "../../lib/const.js"; import { aliasesText } from "../../lib/helpers/aliasesText.js"; import { initCli } from "../../lib/lifeCycle.js"; @@ -30,6 +30,7 @@ export default class CCFinish extends BaseCommand { static override flags = { ...CC_FLAGS, ...CHAIN_FLAGS, + ...CC_FINISH_FORCE_FLAG, }; async run(): Promise { diff --git a/packages/cli/package/src/lib/chain/commitment.ts b/packages/cli/package/src/lib/chain/commitment.ts index 4a554fb52..c43cf0890 100644 --- a/packages/cli/package/src/lib/chain/commitment.ts +++ b/packages/cli/package/src/lib/chain/commitment.ts @@ -538,12 +538,16 @@ export async function removeCommitments(flags: CCFlags) { export async function collateralWithdraw( flags: CCFlags & { [FINISH_COMMITMENT_FLAG_NAME]?: boolean; + force?: boolean; }, ) { + + const allowedStatuses = (flags.force === true) ? ["Active", "Completed", "Failed"] : ["Completed", "Failed"]; + const [invalidCommitments, commitments] = splitErrorsAndResults( await getCommitmentsGroupedByStatus(flags), (c) => { - return c.status === "Completed" || c.status === "Failed" + return c.status in allowedStatuses ? { result: c } : { error: c }; }, diff --git a/packages/cli/package/src/lib/const.ts b/packages/cli/package/src/lib/const.ts index 0407b6de7..1615daede 100644 --- a/packages/cli/package/src/lib/const.ts +++ b/packages/cli/package/src/lib/const.ts @@ -258,6 +258,12 @@ export const CC_FLAGS = { ...OFFER_FLAG, }; +export const CC_FINISH_FORCE_FLAG = { + force: Flags.boolean({ + description: "allow finish Active CC", + }), +} + export const FINISH_COMMITMENT_FLAG_NAME = "finish"; export const JSON_FLAG = { From 4176882b6f20a7d996f3967358c709476716271f Mon Sep 17 00:00:00 2001 From: Valery Antopol Date: Mon, 9 Feb 2026 14:01:15 +0400 Subject: [PATCH 07/12] update lockfile --- packages/cli/package/yarn.lock | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/packages/cli/package/yarn.lock b/packages/cli/package/yarn.lock index 93029f0ff..d7fa82641 100644 --- a/packages/cli/package/yarn.lock +++ b/packages/cli/package/yarn.lock @@ -1964,7 +1964,7 @@ __metadata: dependencies: "@actions/core": "npm:1.11.1" "@aws-sdk/lib-storage": "npm:^3.501.0" - "@fluencelabs/deal-ts-clients": "npm:0.24.3-feat-beam-support-f0edb5b-8391-1.0" + "@fluencelabs/deal-ts-clients": "npm:0.27.2-release-candidate-v0-27-2-7faf671-9169-1.0" "@graphql-codegen/cli": "npm:^5.0.3" "@graphql-codegen/typescript": "npm:^4.1.1" "@graphql-codegen/typescript-graphql-request": "npm:^6.2.0" @@ -2038,9 +2038,9 @@ __metadata: languageName: unknown linkType: soft -"@fluencelabs/deal-ts-clients@npm:0.24.3-feat-beam-support-f0edb5b-8391-1.0": - version: 0.24.3-feat-beam-support-f0edb5b-8391-1.0 - resolution: "@fluencelabs/deal-ts-clients@npm:0.24.3-feat-beam-support-f0edb5b-8391-1.0" +"@fluencelabs/deal-ts-clients@npm:0.27.2-release-candidate-v0-27-2-7faf671-9169-1.0": + version: 0.27.2-release-candidate-v0-27-2-7faf671-9169-1.0 + resolution: "@fluencelabs/deal-ts-clients@npm:0.27.2-release-candidate-v0-27-2-7faf671-9169-1.0" dependencies: "@graphql-typed-document-node/core": "npm:^3.2.0" debug: "npm:^4.3.4" @@ -2052,7 +2052,7 @@ __metadata: graphql-tag: "npm:^2.12.6" ipfs-http-client: "npm:^60.0.1" multiformats: "npm:^13.0.1" - checksum: 10c0/2478de8b0eeb12a98f3206dbf2af4501f59da55d413b261dbd84303054ad1053c7f602ce786e4fafb4ce322318605e897d48182759c5875c46685877f5356d58 + checksum: 10c0/21a9db2c8f3651a7fd0e89d53aed6fe69755577c3c379317406fd9542006e7cb2f273e4f2786135bf1fbdaba8f8f2370d03cececb0afe95cad2929d6713f1835 languageName: node linkType: hard From 6e1f95956171ceef4ae31f4d2395cd8fa2e7be80 Mon Sep 17 00:00:00 2001 From: ValeryAntopol <36988194+ValeryAntopol@users.noreply.github.com> Date: Mon, 9 Feb 2026 10:07:04 +0000 Subject: [PATCH 08/12] Apply automatic changes --- packages/cli/package/docs/commands/README.md | 3 ++- .../cli/package/src/commands/provider/cc-finish.ts | 7 ++++++- packages/cli/package/src/lib/chain/commitment.ts | 10 +++++----- packages/cli/package/src/lib/const.ts | 2 +- 4 files changed, 14 insertions(+), 8 deletions(-) diff --git a/packages/cli/package/docs/commands/README.md b/packages/cli/package/docs/commands/README.md index c37bf3c31..2e7ed3dc7 100644 --- a/packages/cli/package/docs/commands/README.md +++ b/packages/cli/package/docs/commands/README.md @@ -319,11 +319,12 @@ Move resources from deals, withdraw FLT collateral from capacity commitments, re ``` USAGE $ fluence provider cc-finish [--no-input] [--peer-names | --cc-ids ] [--offers - ] [--env ] [--priv-key ] + ] [--env ] [--priv-key ] [--force] FLAGS --cc-ids= Comma separated capacity commitment IDs --env= Fluence Environment to use when running the command + --force allow finish Active CC --no-input Don't interactively ask for any input from the user --offers= Comma-separated list of offer names. To use all of your offers: --offers all diff --git a/packages/cli/package/src/commands/provider/cc-finish.ts b/packages/cli/package/src/commands/provider/cc-finish.ts index 4366b0c9f..93fbda133 100644 --- a/packages/cli/package/src/commands/provider/cc-finish.ts +++ b/packages/cli/package/src/commands/provider/cc-finish.ts @@ -17,7 +17,12 @@ import { BaseCommand } from "../../baseCommand.js"; import { collateralWithdraw } from "../../lib/chain/commitment.js"; -import { CHAIN_FLAGS, FLT_SYMBOL, CC_FLAGS, CC_FINISH_FORCE_FLAG } from "../../lib/const.js"; +import { + CHAIN_FLAGS, + FLT_SYMBOL, + CC_FLAGS, + CC_FINISH_FORCE_FLAG, +} from "../../lib/const.js"; import { aliasesText } from "../../lib/helpers/aliasesText.js"; import { initCli } from "../../lib/lifeCycle.js"; diff --git a/packages/cli/package/src/lib/chain/commitment.ts b/packages/cli/package/src/lib/chain/commitment.ts index c43cf0890..7dbb1b978 100644 --- a/packages/cli/package/src/lib/chain/commitment.ts +++ b/packages/cli/package/src/lib/chain/commitment.ts @@ -541,15 +541,15 @@ export async function collateralWithdraw( force?: boolean; }, ) { - - const allowedStatuses = (flags.force === true) ? ["Active", "Completed", "Failed"] : ["Completed", "Failed"]; + const allowedStatuses = + flags.force === true + ? ["Active", "Completed", "Failed"] + : ["Completed", "Failed"]; const [invalidCommitments, commitments] = splitErrorsAndResults( await getCommitmentsGroupedByStatus(flags), (c) => { - return c.status in allowedStatuses - ? { result: c } - : { error: c }; + return c.status in allowedStatuses ? { result: c } : { error: c }; }, ); diff --git a/packages/cli/package/src/lib/const.ts b/packages/cli/package/src/lib/const.ts index 1615daede..70559539b 100644 --- a/packages/cli/package/src/lib/const.ts +++ b/packages/cli/package/src/lib/const.ts @@ -262,7 +262,7 @@ export const CC_FINISH_FORCE_FLAG = { force: Flags.boolean({ description: "allow finish Active CC", }), -} +}; export const FINISH_COMMITMENT_FLAG_NAME = "finish"; From 704738d83769d9d2b8d1ad3b4819035596b12de4 Mon Sep 17 00:00:00 2001 From: Valery Antopol Date: Mon, 9 Feb 2026 14:23:28 +0400 Subject: [PATCH 09/12] fix status check --- packages/cli/package/src/lib/chain/commitment.ts | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/packages/cli/package/src/lib/chain/commitment.ts b/packages/cli/package/src/lib/chain/commitment.ts index 7dbb1b978..bc316a5e6 100644 --- a/packages/cli/package/src/lib/chain/commitment.ts +++ b/packages/cli/package/src/lib/chain/commitment.ts @@ -541,15 +541,15 @@ export async function collateralWithdraw( force?: boolean; }, ) { - const allowedStatuses = + const isStatusAllowed: (status: CapacityCommitmentStatusString) => boolean = flags.force === true - ? ["Active", "Completed", "Failed"] - : ["Completed", "Failed"]; + ? (status) => {return status === "Completed" || status === "Failed" || status === "Active" } + : (status) => {return status === "Completed" || status === "Failed"}; const [invalidCommitments, commitments] = splitErrorsAndResults( await getCommitmentsGroupedByStatus(flags), (c) => { - return c.status in allowedStatuses ? { result: c } : { error: c }; + return isStatusAllowed(c.status) ? { result: c } : { error: c }; }, ); From 55bd6ce8e8df86095778a2a2b9fbeb232d8d1fda Mon Sep 17 00:00:00 2001 From: ValeryAntopol <36988194+ValeryAntopol@users.noreply.github.com> Date: Mon, 9 Feb 2026 10:25:16 +0000 Subject: [PATCH 10/12] Apply automatic changes --- packages/cli/package/src/lib/chain/commitment.ts | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/cli/package/src/lib/chain/commitment.ts b/packages/cli/package/src/lib/chain/commitment.ts index bc316a5e6..14c73e9c2 100644 --- a/packages/cli/package/src/lib/chain/commitment.ts +++ b/packages/cli/package/src/lib/chain/commitment.ts @@ -543,8 +543,14 @@ export async function collateralWithdraw( ) { const isStatusAllowed: (status: CapacityCommitmentStatusString) => boolean = flags.force === true - ? (status) => {return status === "Completed" || status === "Failed" || status === "Active" } - : (status) => {return status === "Completed" || status === "Failed"}; + ? (status) => { + return ( + status === "Completed" || status === "Failed" || status === "Active" + ); + } + : (status) => { + return status === "Completed" || status === "Failed"; + }; const [invalidCommitments, commitments] = splitErrorsAndResults( await getCommitmentsGroupedByStatus(flags), From 77a182b7ce5b40ece6f8ae604a2b343d4759ee74 Mon Sep 17 00:00:00 2001 From: Valery Antopol Date: Mon, 9 Feb 2026 16:24:52 +0400 Subject: [PATCH 11/12] fix text --- packages/cli/package/src/lib/const.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/package/src/lib/const.ts b/packages/cli/package/src/lib/const.ts index 70559539b..f2f7f2bb8 100644 --- a/packages/cli/package/src/lib/const.ts +++ b/packages/cli/package/src/lib/const.ts @@ -260,7 +260,7 @@ export const CC_FLAGS = { export const CC_FINISH_FORCE_FLAG = { force: Flags.boolean({ - description: "allow finish Active CC", + description: "Allow finish Active CC", }), }; From 3028462c2468640aeb6d44e3a5a11c20c2e8871a Mon Sep 17 00:00:00 2001 From: ValeryAntopol <36988194+ValeryAntopol@users.noreply.github.com> Date: Mon, 9 Feb 2026 12:26:49 +0000 Subject: [PATCH 12/12] Apply automatic changes --- packages/cli/package/docs/commands/README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/packages/cli/package/docs/commands/README.md b/packages/cli/package/docs/commands/README.md index 2e7ed3dc7..273c1542e 100644 --- a/packages/cli/package/docs/commands/README.md +++ b/packages/cli/package/docs/commands/README.md @@ -324,7 +324,7 @@ USAGE FLAGS --cc-ids= Comma separated capacity commitment IDs --env= Fluence Environment to use when running the command - --force allow finish Active CC + --force Allow finish Active CC --no-input Don't interactively ask for any input from the user --offers= Comma-separated list of offer names. To use all of your offers: --offers all