@finchtech/cli 0.5.3 → 0.5.4
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/README.md +8 -0
- package/dist/finch.js +131 -20
- package/package.json +4 -4
package/README.md
CHANGED
|
@@ -196,3 +196,11 @@ CLI 0.5.1 allows ordinary logout and wallet switching with unfinished transactio
|
|
|
196
196
|
## Actionable usage errors, wallet list and network diagnostics (CLI 0.5.2)
|
|
197
197
|
|
|
198
198
|
CLI 0.5.2 names the rejected option, missing argument or unknown subcommand together with the command's usage instead of a generic schema message; every command already prints JSON, so there is no `--json` option. `finch wallet list` shows the current wallet and registered addresses offline. Failed `finch mcp doctor` network checks report `httpStatus` or `networkErrorCode`, so a TLS-intercepting proxy, DNS failure or timeout is distinguishable from a server outage. Its PROD authentication-chain help also lists Injective (`1776`). Upgrade the installed executable to receive these changes; updating the Skill or website alone does not apply them.
|
|
199
|
+
|
|
200
|
+
### Injective Skill transactions (0.5.4)
|
|
201
|
+
|
|
202
|
+
CLI 0.5.4 supports Skill publication, acquisition, version updates, price/supply changes and recovery on Injective EVM (`1776`). The real transaction adapter now accepts the reviewed Injective chain definition; older executables can reject these plans before reaching RPC. Use the exact chain from the Remote MCP plan; prices and gas use INJ. Upgrade the executable while preserving existing recovery journals.
|
|
203
|
+
|
|
204
|
+
### Skill display languages (0.5.4)
|
|
205
|
+
|
|
206
|
+
Publication plans accept `sourceLocale` (`en`, `zh`, `zh-TW`). The gateway records it when the publication is confirmed; it stays outside chain metadata and SkillRoot hashes. Display edits and confirmation use Remote MCP after publication. A display-save failure retains recovery state: retry the same intent or fingerprint to finish database initialization without repeating the mint. Deploy the matching gateway and migration before using language-bearing plans.
|
package/dist/finch.js
CHANGED
|
@@ -6619,7 +6619,7 @@ var init_package = __esm({
|
|
|
6619
6619
|
"package.json"() {
|
|
6620
6620
|
package_default = {
|
|
6621
6621
|
name: "@finchtech/cli",
|
|
6622
|
-
version: "0.5.
|
|
6622
|
+
version: "0.5.4",
|
|
6623
6623
|
description: "Finch Agent CLI for wallet custody, Session-owned execution, and MCP OAuth approval.",
|
|
6624
6624
|
type: "module",
|
|
6625
6625
|
bin: {
|
|
@@ -22263,6 +22263,33 @@ var init_skill_protocol = __esm({
|
|
|
22263
22263
|
factoryFirstBlock: "96438471",
|
|
22264
22264
|
confirmations: 2
|
|
22265
22265
|
}
|
|
22266
|
+
},
|
|
22267
|
+
"1776": {
|
|
22268
|
+
enabled: true,
|
|
22269
|
+
network: {
|
|
22270
|
+
chainId: 1776,
|
|
22271
|
+
name: "Injective",
|
|
22272
|
+
explorerUrl: "https://blockscout.injective.network",
|
|
22273
|
+
defaultRpcUrls: [
|
|
22274
|
+
"https://sentry.evm-rpc.injective.network"
|
|
22275
|
+
]
|
|
22276
|
+
},
|
|
22277
|
+
sourceRepository: "FinchipAI/finchip-protocol",
|
|
22278
|
+
sourceCommit: "fcaa22761169b1e45aca5ea783d2315341c243a5",
|
|
22279
|
+
abiSourceCommit: "61982867d271ea9ebf0730b1a650bee1b9894642",
|
|
22280
|
+
contracts: {
|
|
22281
|
+
skillToken: "0x7ed98f8d72a447483446f28a973288d3301863cc",
|
|
22282
|
+
revenueRight: "0x6e8360b46225f40ecd66ef7c2b7fbfa4fa72dc82",
|
|
22283
|
+
skillInstance: "0xad8999ae8a63fc30dac591dc613105dccbb74c99",
|
|
22284
|
+
skillFactory: "0x6a82c248ffa66b064e3ddd913aa3be18e292a5ee",
|
|
22285
|
+
skillMarket: "0xa21716201931de0744230a58b58f48b94462ed8c",
|
|
22286
|
+
feeRouter: "0x5f3ecf942953e7acbce0b9b49b2ff7e159921de9"
|
|
22287
|
+
},
|
|
22288
|
+
deployment: {
|
|
22289
|
+
firstBlock: "187103028",
|
|
22290
|
+
factoryFirstBlock: "187103063",
|
|
22291
|
+
confirmations: 2
|
|
22292
|
+
}
|
|
22266
22293
|
}
|
|
22267
22294
|
}
|
|
22268
22295
|
}
|
|
@@ -22285,6 +22312,7 @@ var init_task_protocol = __esm({
|
|
|
22285
22312
|
chains: {
|
|
22286
22313
|
"84532": {
|
|
22287
22314
|
enabled: true,
|
|
22315
|
+
creationOpen: true,
|
|
22288
22316
|
network: {
|
|
22289
22317
|
chainId: 84532,
|
|
22290
22318
|
name: "Base Sepolia",
|
|
@@ -22330,6 +22358,7 @@ var init_task_protocol = __esm({
|
|
|
22330
22358
|
chains: {
|
|
22331
22359
|
"8453": {
|
|
22332
22360
|
enabled: true,
|
|
22361
|
+
creationOpen: true,
|
|
22333
22362
|
network: {
|
|
22334
22363
|
chainId: 8453,
|
|
22335
22364
|
name: "Base",
|
|
@@ -22370,6 +22399,7 @@ var init_task_protocol = __esm({
|
|
|
22370
22399
|
},
|
|
22371
22400
|
"1776": {
|
|
22372
22401
|
enabled: true,
|
|
22402
|
+
creationOpen: false,
|
|
22373
22403
|
network: {
|
|
22374
22404
|
chainId: 1776,
|
|
22375
22405
|
name: "Injective",
|
|
@@ -22528,7 +22558,8 @@ function getTaskProtocolDeployment(environment3, chainId) {
|
|
|
22528
22558
|
paymentTokenDecimals: value.policy.paymentTokenDecimals,
|
|
22529
22559
|
expectedAwardAttestorAddress: value.authority.awardAttestor,
|
|
22530
22560
|
expectedCreditGranterAddress: value.authority.creditGranter ?? null,
|
|
22531
|
-
defaultRpcUrls: Object.freeze([...value.network.defaultRpcUrls])
|
|
22561
|
+
defaultRpcUrls: Object.freeze([...value.network.defaultRpcUrls]),
|
|
22562
|
+
creationOpen: value.creationOpen
|
|
22532
22563
|
});
|
|
22533
22564
|
}
|
|
22534
22565
|
function getTaskProtocolDeploymentByChainId(chainId) {
|
|
@@ -22717,6 +22748,14 @@ var init_chains = __esm({
|
|
|
22717
22748
|
});
|
|
22718
22749
|
taskActiveSchema = external_exports.strictObject({
|
|
22719
22750
|
enabled: external_exports.literal(true),
|
|
22751
|
+
/**
|
|
22752
|
+
* Whether publishers may create new Tasks on this chain. A chain can be
|
|
22753
|
+
* deployed and reviewed — drafts, reads, and settlement stay resolvable —
|
|
22754
|
+
* while creation stays closed because its treasury, gas funding, or RPC
|
|
22755
|
+
* retention is not production-ready. Opening a chain is a one-line manifest
|
|
22756
|
+
* review, never a UI edit.
|
|
22757
|
+
*/
|
|
22758
|
+
creationOpen: external_exports.boolean(),
|
|
22720
22759
|
network: networkSchema,
|
|
22721
22760
|
...sourceSchema,
|
|
22722
22761
|
abiSourceCommit: commitSchema,
|
|
@@ -22877,6 +22916,7 @@ var init_chains = __esm({
|
|
|
22877
22916
|
8453: "production",
|
|
22878
22917
|
42161: "production",
|
|
22879
22918
|
43114: "production",
|
|
22919
|
+
1776: "production",
|
|
22880
22920
|
84532: "test"
|
|
22881
22921
|
});
|
|
22882
22922
|
REVIEWED_NETWORKS = Object.freeze({
|
|
@@ -22930,17 +22970,26 @@ var init_sales_inquiries = __esm({
|
|
|
22930
22970
|
local: {
|
|
22931
22971
|
enabled: false,
|
|
22932
22972
|
ipHourlyLimit: 5,
|
|
22933
|
-
emailDailyLimit: 10
|
|
22973
|
+
emailDailyLimit: 10,
|
|
22974
|
+
emailFrom: "Finch <notifications@notify.finchtech.ai>",
|
|
22975
|
+
emailReplyTo: "customersupport@finchtech.ai",
|
|
22976
|
+
opsOrigin: "http://localhost:3002"
|
|
22934
22977
|
},
|
|
22935
22978
|
test: {
|
|
22936
22979
|
enabled: true,
|
|
22937
22980
|
ipHourlyLimit: 5,
|
|
22938
|
-
emailDailyLimit: 10
|
|
22981
|
+
emailDailyLimit: 10,
|
|
22982
|
+
emailFrom: "Finch <notifications@notify.finchtech.ai>",
|
|
22983
|
+
emailReplyTo: "customersupport@finchtech.ai",
|
|
22984
|
+
opsOrigin: "https://finch-ops-git-staging-fin-chip-team.vercel.app"
|
|
22939
22985
|
},
|
|
22940
22986
|
production: {
|
|
22941
22987
|
enabled: false,
|
|
22942
22988
|
ipHourlyLimit: 5,
|
|
22943
|
-
emailDailyLimit: 10
|
|
22989
|
+
emailDailyLimit: 10,
|
|
22990
|
+
emailFrom: "Finch <notifications@notify.finchtech.ai>",
|
|
22991
|
+
emailReplyTo: "customersupport@finchtech.ai",
|
|
22992
|
+
opsOrigin: "https://ops.finchtech.ai"
|
|
22944
22993
|
}
|
|
22945
22994
|
}
|
|
22946
22995
|
};
|
|
@@ -22954,7 +23003,7 @@ var init_sales_inquiries2 = __esm({
|
|
|
22954
23003
|
"use strict";
|
|
22955
23004
|
init_zod();
|
|
22956
23005
|
init_sales_inquiries();
|
|
22957
|
-
policy = external_exports.strictObject({ enabled: external_exports.boolean(), ipHourlyLimit: external_exports.number().int().min(1).max(100), emailDailyLimit: external_exports.number().int().min(1).max(100) });
|
|
23006
|
+
policy = external_exports.strictObject({ enabled: external_exports.boolean(), ipHourlyLimit: external_exports.number().int().min(1).max(100), emailDailyLimit: external_exports.number().int().min(1).max(100), emailFrom: external_exports.string().regex(/^Finch <[^<>\r\n]+>$/u).refine((value) => external_exports.email().safeParse(value.slice(7, -1)).success), emailReplyTo: external_exports.email(), opsOrigin: external_exports.url() });
|
|
22958
23007
|
schema = external_exports.strictObject({ schemaVersion: external_exports.literal(1), kind: external_exports.literal("sales_inquiries"), environments: external_exports.strictObject({ local: policy, test: policy, production: policy }) });
|
|
22959
23008
|
parseSalesInquiryManifest = (value) => schema.parse(value);
|
|
22960
23009
|
parsed = parseSalesInquiryManifest(sales_inquiries_default);
|
|
@@ -23222,6 +23271,15 @@ var init_skill_delivery = __esm({
|
|
|
23222
23271
|
pkpId: "0xdf87a5d625926cedc0ad0ef74888adb643936f25",
|
|
23223
23272
|
groupId: 1
|
|
23224
23273
|
}
|
|
23274
|
+
},
|
|
23275
|
+
"1776": {
|
|
23276
|
+
chainId: 1776,
|
|
23277
|
+
chainTag: "injective",
|
|
23278
|
+
lit: {
|
|
23279
|
+
provider: "chipotle",
|
|
23280
|
+
pkpId: "0xdf87a5d625926cedc0ad0ef74888adb643936f25",
|
|
23281
|
+
groupId: 1
|
|
23282
|
+
}
|
|
23225
23283
|
}
|
|
23226
23284
|
}
|
|
23227
23285
|
}
|
|
@@ -23447,7 +23505,7 @@ function getSkillDeliveryDeployment(environment3, chainId) {
|
|
|
23447
23505
|
});
|
|
23448
23506
|
}
|
|
23449
23507
|
function getSkillDeliveryDeploymentByChainId(chainId) {
|
|
23450
|
-
const environment3 = chainId === 84532 ? "test" : [1, 10, 56, 8453, 42161, 43114].includes(chainId) ? "production" : void 0;
|
|
23508
|
+
const environment3 = chainId === 84532 ? "test" : [1, 10, 56, 8453, 42161, 43114, 1776].includes(chainId) ? "production" : void 0;
|
|
23451
23509
|
if (!environment3) throw new DeploymentManifestError(`Skill delivery has no reviewed binding for chain ${chainId}.`);
|
|
23452
23510
|
return getSkillDeliveryDeployment(environment3, chainId);
|
|
23453
23511
|
}
|
|
@@ -23538,7 +23596,7 @@ var init_platform = __esm({
|
|
|
23538
23596
|
});
|
|
23539
23597
|
skillDeliveryBindingSchema = external_exports.strictObject({
|
|
23540
23598
|
chainId: external_exports.number().int().positive(),
|
|
23541
|
-
chainTag: external_exports.enum(["base", "baseSepolia", "ethereum", "optimism", "bsc", "arbitrum", "avalanche"]),
|
|
23599
|
+
chainTag: external_exports.enum(["base", "baseSepolia", "ethereum", "optimism", "bsc", "arbitrum", "avalanche", "injective"]),
|
|
23542
23600
|
lit: external_exports.strictObject({
|
|
23543
23601
|
provider: external_exports.literal("chipotle"),
|
|
23544
23602
|
pkpId: external_exports.string().min(1).max(512),
|
|
@@ -29896,7 +29954,7 @@ var init_validation_input = __esm({
|
|
|
29896
29954
|
});
|
|
29897
29955
|
|
|
29898
29956
|
// ../../packages/agent-market-contracts/src/v1/errors.ts
|
|
29899
|
-
var creatorRequestReasonCodes, buyerStateReasonCodes, agentMarketErrorCodes, nextActionValues, AGENT_MARKET_ERROR_DEFINITIONS, nullableStringSchema, nullableUuidSchema, nullableRevisionSchema2, agentMarketErrorEnvelopeSchema;
|
|
29957
|
+
var creatorRequestReasonCodes, buyerStateReasonCodes, FREE_CALL_FAILURE_MESSAGES, agentMarketErrorCodes, nextActionValues, AGENT_MARKET_ERROR_DEFINITIONS, nullableStringSchema, nullableUuidSchema, nullableRevisionSchema2, agentMarketErrorEnvelopeSchema;
|
|
29900
29958
|
var init_errors3 = __esm({
|
|
29901
29959
|
"../../packages/agent-market-contracts/src/v1/errors.ts"() {
|
|
29902
29960
|
"use strict";
|
|
@@ -29918,6 +29976,12 @@ var init_errors3 = __esm({
|
|
|
29918
29976
|
"AVATAR_VIDEO_ACCOUNT_DAILY_LIMIT_REACHED",
|
|
29919
29977
|
"AVATAR_VIDEO_PLATFORM_DAILY_LIMIT_REACHED"
|
|
29920
29978
|
];
|
|
29979
|
+
FREE_CALL_FAILURE_MESSAGES = Object.freeze({
|
|
29980
|
+
AGENT_FREE_ONLY_NOT_AVAILABLE: "This free Agent call is no longer available. Refresh your free allowance or connect your wallet to use purchased Credits.",
|
|
29981
|
+
AGENT_FREE_PAID_CONFIRMATION_REQUIRED: "This Agent has reached its daily free usage limit. Confirm paid Credits before continuing.",
|
|
29982
|
+
AGENT_FREE_DAILY_LIMIT_REACHED: "This Agent has reached its daily free usage limit. Please try again tomorrow.",
|
|
29983
|
+
AGENT_FREE_CALLS_PENDING: "Your remaining free calls are reserved by running requests. Wait for them to finish before starting another call."
|
|
29984
|
+
});
|
|
29921
29985
|
agentMarketErrorCodes = [
|
|
29922
29986
|
...ONLINE_API_TECHNICAL_ERROR_CODES,
|
|
29923
29987
|
"AGENT_MARKET_AUTH_REQUIRED",
|
|
@@ -29934,6 +29998,10 @@ var init_errors3 = __esm({
|
|
|
29934
29998
|
"PRODUCTION_NOT_AVAILABLE",
|
|
29935
29999
|
"INTEGRATION_FAMILY_IN_DEVELOPMENT",
|
|
29936
30000
|
"AGENT_MARKET_STATE_CONFLICT",
|
|
30001
|
+
"AGENT_FREE_PAID_CONFIRMATION_REQUIRED",
|
|
30002
|
+
"AGENT_FREE_ONLY_NOT_AVAILABLE",
|
|
30003
|
+
"AGENT_FREE_DAILY_LIMIT_REACHED",
|
|
30004
|
+
"AGENT_FREE_CALLS_PENDING",
|
|
29937
30005
|
"AGENT_MARKET_VALIDATION_REQUIRED",
|
|
29938
30006
|
"AGENT_MARKET_OPERATION_NOT_FOUND",
|
|
29939
30007
|
"AGENT_MARKET_INPUT_INVALID",
|
|
@@ -29981,6 +30049,10 @@ var init_errors3 = __esm({
|
|
|
29981
30049
|
PRODUCTION_NOT_AVAILABLE: { httpStatus: 409, retryable: false, nextAction: "none" },
|
|
29982
30050
|
INTEGRATION_FAMILY_IN_DEVELOPMENT: { httpStatus: 409, retryable: false, nextAction: "choose_supported_integration" },
|
|
29983
30051
|
AGENT_MARKET_STATE_CONFLICT: { httpStatus: 409, retryable: false, nextAction: "refresh_resource" },
|
|
30052
|
+
AGENT_FREE_PAID_CONFIRMATION_REQUIRED: { httpStatus: 409, retryable: false, nextAction: "refresh_resource" },
|
|
30053
|
+
AGENT_FREE_ONLY_NOT_AVAILABLE: { httpStatus: 409, retryable: false, nextAction: "refresh_resource" },
|
|
30054
|
+
AGENT_FREE_DAILY_LIMIT_REACHED: { httpStatus: 429, retryable: true, nextAction: "retry_tomorrow" },
|
|
30055
|
+
AGENT_FREE_CALLS_PENDING: { httpStatus: 409, retryable: true, nextAction: "retry_later" },
|
|
29984
30056
|
AGENT_MARKET_VALIDATION_REQUIRED: { httpStatus: 409, retryable: false, nextAction: "run_connection_test" },
|
|
29985
30057
|
AGENT_MARKET_OPERATION_NOT_FOUND: { httpStatus: 404, retryable: false, nextAction: "none" },
|
|
29986
30058
|
AGENT_MARKET_INPUT_INVALID: { httpStatus: 422, retryable: false, nextAction: "fix_request" },
|
|
@@ -31255,7 +31327,7 @@ function taskProjectionSchema(properties) {
|
|
|
31255
31327
|
terminalContent: taskPresentationContentSchema
|
|
31256
31328
|
}, Object.keys(properties));
|
|
31257
31329
|
}
|
|
31258
|
-
var booleanSchema2, jsonValueSchema, nullSchema2, agentOnInitialInputSchema, agentOnFollowUpContentSchema, feeBpsCapSchema, createPurchaseIntentRequestSchema, purchaseIntentAcceptedSchema, PURCHASE_FEE_DECISION_CONTRACT, feeSnapshotCommon, purchaseFeeDecisionSnapshotSchema, PURCHASE_LIFECYCLE_CONTRACT, FINANCIAL_AUTHORIZATION_CONTRACT, nonNegativeIntegerStringSchema2, callRightPurchaseBatchSchema, callRightsListResponseSchema, CALL_RIGHTS_PAGE_CONTRACT, CALL_FUNDING_SOURCES, fundingSourceSchema, callEligibilityQuerySchema, described2, callEligibilityResponseSchema, invocationStartRequestSchema, invocationContinueRequestSchema, runtimeHandoffStateSchema, p1InvocationReceiptProperties, p1InvocationReceiptSchema, p1InvocationAcceptedSchema, directInvocationAcceptedSchema, supplementalQuestionOptionSchema, p1QuestionSchema, p1QuestionsSchema, p1AwaitingCompletionQuestionsSchema, taskQuestionSchema, taskQuestionsSchema, closedPublicFailureSchema, timeoutFailureSchema, invocationCommon, p1InvocationResponseSchema, directInvocationCommon, directPublicFailureSchema, directInvocationResponseSchema, DIRECT_INVOCATION_READ_CONTRACT, invocationResponseSchema, createTaskRequestSchema, TASK_QUANTITY_AUTHORITY_CONTRACT, taskCreateReceiptProperties, taskCreateReceiptSchema, taskCreateAcceptedSchema, taskStrongEtagSchema, taskInputReceiptSchema, taskInputAcceptedSchema, taskCommon, buyerOutputArtifactSchema, buyerOutputArtifactsSchema, taskFailureCodeSchema, taskFailureSchema, taskPresentationContentSchema, taskResponseSchema, BUYER_AGENTON_RECOVERY_CONTRACT, appendTaskInputRequestSchema, directInvocationRequestSchema, TASK_COMPLETED_CANONICALIZATION;
|
|
31330
|
+
var booleanSchema2, jsonValueSchema, nullSchema2, agentOnInitialInputSchema, agentOnFollowUpContentSchema, feeBpsCapSchema, createPurchaseIntentRequestSchema, purchaseIntentAcceptedSchema, PURCHASE_FEE_DECISION_CONTRACT, feeSnapshotCommon, purchaseFeeDecisionSnapshotSchema, PURCHASE_LIFECYCLE_CONTRACT, FINANCIAL_AUTHORIZATION_CONTRACT, nonNegativeIntegerStringSchema2, callRightPurchaseBatchSchema, callRightsListResponseSchema, CALL_RIGHTS_PAGE_CONTRACT, CALL_FUNDING_SOURCES, fundingSourceSchema, callEligibilityQuerySchema, described2, freeConsentFields, freeCallConsentRequestSchema, freeCallConsentResponseSchema, callEligibilityResponseSchema, invocationStartRequestSchema, invocationContinueRequestSchema, runtimeHandoffStateSchema, p1InvocationReceiptProperties, p1InvocationReceiptSchema, p1InvocationAcceptedSchema, directInvocationAcceptedSchema, supplementalQuestionOptionSchema, p1QuestionSchema, p1QuestionsSchema, p1AwaitingCompletionQuestionsSchema, taskQuestionSchema, taskQuestionsSchema, closedPublicFailureSchema, timeoutFailureSchema, invocationCommon, p1InvocationResponseSchema, directInvocationCommon, directPublicFailureSchema, directInvocationResponseSchema, DIRECT_INVOCATION_READ_CONTRACT, invocationResponseSchema, createTaskRequestSchema, TASK_QUANTITY_AUTHORITY_CONTRACT, taskCreateReceiptProperties, taskCreateReceiptSchema, taskCreateAcceptedSchema, taskStrongEtagSchema, taskInputReceiptSchema, taskInputAcceptedSchema, taskCommon, buyerOutputArtifactSchema, buyerOutputArtifactsSchema, taskFailureCodeSchema, taskFailureSchema, taskPresentationContentSchema, taskResponseSchema, BUYER_AGENTON_RECOVERY_CONTRACT, appendTaskInputRequestSchema, directInvocationRequestSchema, TASK_COMPLETED_CANONICALIZATION;
|
|
31259
31331
|
var init_buyer = __esm({
|
|
31260
31332
|
"../../packages/agent-market-contracts/src/v1/buyer.ts"() {
|
|
31261
31333
|
"use strict";
|
|
@@ -31423,6 +31495,30 @@ var init_buyer = __esm({
|
|
|
31423
31495
|
}
|
|
31424
31496
|
}, []);
|
|
31425
31497
|
described2 = (schema6, description) => Object.freeze({ ...schema6, description });
|
|
31498
|
+
freeConsentFields = {
|
|
31499
|
+
confirmed: { const: true, description: "Must be true only after the user explicitly approves paid fallback for this one call." },
|
|
31500
|
+
requiredUnits: { ...positiveIntegerStringSchema2, maxLength: 78, description: "Exact paid unit cost returned by call eligibility; a changed price invalidates this consent." }
|
|
31501
|
+
};
|
|
31502
|
+
freeCallConsentRequestSchema = Object.freeze({
|
|
31503
|
+
oneOf: [
|
|
31504
|
+
strictObjectSchema2({
|
|
31505
|
+
...freeConsentFields,
|
|
31506
|
+
offerId: canonicalUuidSchema2,
|
|
31507
|
+
versionId: nullSchema2,
|
|
31508
|
+
quantity: { type: "integer", minimum: 1, maximum: 2147483647 }
|
|
31509
|
+
}),
|
|
31510
|
+
strictObjectSchema2({
|
|
31511
|
+
...freeConsentFields,
|
|
31512
|
+
offerId: nullSchema2,
|
|
31513
|
+
versionId: canonicalUuidSchema2,
|
|
31514
|
+
quantity: { const: 1 }
|
|
31515
|
+
})
|
|
31516
|
+
]
|
|
31517
|
+
});
|
|
31518
|
+
freeCallConsentResponseSchema = strictObjectSchema2({ confirmed: {
|
|
31519
|
+
const: true,
|
|
31520
|
+
description: "The exact one-request paid fallback consent was recorded; no invocation was admitted or charged."
|
|
31521
|
+
} });
|
|
31426
31522
|
callEligibilityResponseSchema = strictObjectSchema2({
|
|
31427
31523
|
serviceVersionId: described2(canonicalUuidSchema2, "Service version the call would run on."),
|
|
31428
31524
|
offerId: { anyOf: [canonicalUuidSchema2, nullSchema2], description: "The checked AgentOn offer, or null for a Direct API version." },
|
|
@@ -31430,18 +31526,18 @@ var init_buyer = __esm({
|
|
|
31430
31526
|
requiredUnits: described2(positiveIntegerStringSchema2, "Call-right units a paid call would reserve, as a decimal integer string."),
|
|
31431
31527
|
fundingSource: {
|
|
31432
31528
|
enum: ["merchant_self_test", "promotion", "paid", "insufficient"],
|
|
31433
|
-
description: "
|
|
31529
|
+
description: "merchant_self_test and promotion are free; paid reserves requiredUnits purchased call rights. If unused personal calls remain but dailyRemaining is zero, paid funding requires explicit one-request confirmation first. insufficient can mean missing purchased rights or all remaining free calls are still in flight."
|
|
31434
31530
|
},
|
|
31435
31531
|
merchantSelfTest: described2(booleanSchema2, "True when the caller owns this contract-tested agent, so calls are a free owner self-test."),
|
|
31436
31532
|
promotion: {
|
|
31437
31533
|
anyOf: [strictObjectSchema2({
|
|
31438
|
-
availableOperations: described2(nonNegativeIntegerStringSchema2, "Free calls usable now
|
|
31439
|
-
personalRemaining: described2(nonNegativeIntegerStringSchema2, "
|
|
31440
|
-
expiresAt: described2(canonicalSecondTimestampSchema, "
|
|
31441
|
-
dailyRemaining: { anyOf: [nonNegativeIntegerStringSchema2, nullSchema2], description: "
|
|
31442
|
-
dailyResetsAt: { anyOf: [canonicalSecondTimestampSchema, nullSchema2], description: "
|
|
31534
|
+
availableOperations: described2(nonNegativeIntegerStringSchema2, "Free calls usable now after deducting running reservations and applying the shared Agent daily ceiling."),
|
|
31535
|
+
personalRemaining: described2(nonNegativeIntegerStringSchema2, "Unexpired unused calls out of the account/Agent lifetime grant of 10. Only success consumes a call; in-flight reservations are not consumption. This balance ignores shared daily capacity."),
|
|
31536
|
+
expiresAt: described2(canonicalSecondTimestampSchema, "Exclusive Beijing midnight on day 31, starting on max(first Agent publication date, account registration date). Display the preceding Beijing date."),
|
|
31537
|
+
dailyRemaining: { anyOf: [nonNegativeIntegerStringSchema2, nullSchema2], description: "Remaining shared capacity out of 100 free calls per canonical Agent and Beijing calendar day; includes running reservations." },
|
|
31538
|
+
dailyResetsAt: { anyOf: [canonicalSecondTimestampSchema, nullSchema2], description: "Next Beijing (UTC+8) midnight. Revisions and republication never reset daily capacity." }
|
|
31443
31539
|
}), nullSchema2],
|
|
31444
|
-
description: "The
|
|
31540
|
+
description: "The canonical account/Agent trial, including expired or exhausted trials for status display; null when no first publication is known. Never renews on login, Revision or republication."
|
|
31445
31541
|
},
|
|
31446
31542
|
paid: Object.freeze({
|
|
31447
31543
|
...strictObjectSchema2({
|
|
@@ -34695,6 +34791,19 @@ var init_operations = __esm({
|
|
|
34695
34791
|
integrationFamilies: families.active,
|
|
34696
34792
|
writes: false
|
|
34697
34793
|
}),
|
|
34794
|
+
"buyer_free_call_consent.confirm": operation({
|
|
34795
|
+
id: "buyer_free_call_consent.confirm",
|
|
34796
|
+
requiredScope: "agent_market:buyer:invoke",
|
|
34797
|
+
http: http("post", "/api/v1/agent-market/buyer/call-eligibility", 200, {
|
|
34798
|
+
requestSchema: freeCallConsentRequestSchema,
|
|
34799
|
+
responseSchema: freeCallConsentResponseSchema,
|
|
34800
|
+
idempotencyRequired: true
|
|
34801
|
+
}),
|
|
34802
|
+
mcp: { name: "agent_market_buyer_free_call_consent_confirm" },
|
|
34803
|
+
cli: null,
|
|
34804
|
+
integrationFamilies: families.active,
|
|
34805
|
+
writes: true
|
|
34806
|
+
}),
|
|
34698
34807
|
"buyer_p1_invocations.create": operation({
|
|
34699
34808
|
id: "buyer_p1_invocations.create",
|
|
34700
34809
|
requiredScope: "agent_market:buyer:invoke",
|
|
@@ -35675,6 +35784,7 @@ var init_schemas3 = __esm({
|
|
|
35675
35784
|
deadline: nullableString,
|
|
35676
35785
|
startAt: nullableString,
|
|
35677
35786
|
goals: { type: "array", maxItems: 5, items: openObjectSchema2 },
|
|
35787
|
+
chainId: positiveInteger,
|
|
35678
35788
|
publishNow: { const: false }
|
|
35679
35789
|
}, ["title", "goal", "rewardAmount", "publishNow"]);
|
|
35680
35790
|
taskSubmissionRequestSchema = strictObjectSchema3({
|
|
@@ -57839,7 +57949,7 @@ function publishPlan(value, context) {
|
|
|
57839
57949
|
const chainId = assertAuthority(plan, "publish", context.walletAddress);
|
|
57840
57950
|
assertLocalAction(plan.localAction, "skill publish-submit");
|
|
57841
57951
|
const request2 = object2(plan.request, "Skill publish request");
|
|
57842
|
-
exact2(request2, ["chainId", "slug", "name", "category", "licenseTypeName", "imageURI", "sourceKind", "contentMode", "unitPrice", "maxSupply", ...Object.hasOwn(request2, "summary") ? ["summary"] : []], "Skill publish request");
|
|
57952
|
+
exact2(request2, ["chainId", "slug", "name", "category", "licenseTypeName", "imageURI", "sourceKind", "contentMode", "unitPrice", "maxSupply", ...Object.hasOwn(request2, "summary") ? ["summary"] : [], ...Object.hasOwn(request2, "sourceLocale") ? ["sourceLocale"] : []], "Skill publish request");
|
|
57843
57953
|
if (request2.chainId !== chainId) throw new TypeError("Skill publish request chain is invalid.");
|
|
57844
57954
|
string4(request2.slug, "Skill slug");
|
|
57845
57955
|
string4(request2.name, "Skill name");
|
|
@@ -57849,6 +57959,7 @@ function publishPlan(value, context) {
|
|
|
57849
57959
|
throw new TypeError("Skill publish metadata is invalid.");
|
|
57850
57960
|
}
|
|
57851
57961
|
if (Object.hasOwn(request2, "summary") && (typeof request2.summary !== "string" || request2.summary.length > 500)) throw new TypeError("Skill summary is invalid.");
|
|
57962
|
+
if (request2.sourceLocale !== void 0 && !["en", "zh", "zh-TW"].includes(String(request2.sourceLocale))) throw new TypeError("Skill source language is invalid.");
|
|
57852
57963
|
sourceKind(request2.sourceKind);
|
|
57853
57964
|
contentMode(request2.contentMode);
|
|
57854
57965
|
string4(request2.unitPrice, "Skill unitPrice", DECIMAL);
|
|
@@ -58614,7 +58725,7 @@ var init_skill_local_flow = __esm({
|
|
|
58614
58725
|
objectKind: "manifest"
|
|
58615
58726
|
});
|
|
58616
58727
|
const chainMetadata = Object.fromEntries(
|
|
58617
|
-
Object.entries(request2).filter(([key]) => key !== "sourceKind" && key !== "contentMode" && key !== "summary")
|
|
58728
|
+
Object.entries(request2).filter(([key]) => key !== "sourceKind" && key !== "contentMode" && key !== "summary" && key !== "sourceLocale")
|
|
58618
58729
|
);
|
|
58619
58730
|
const createRequest = {
|
|
58620
58731
|
action: "createSkill",
|
|
@@ -63712,7 +63823,7 @@ function textValue(value, name, allowEmpty = false) {
|
|
|
63712
63823
|
return value;
|
|
63713
63824
|
}
|
|
63714
63825
|
function resolveSkillViemChain(chainId) {
|
|
63715
|
-
const chain = [mainnet, optimism, bsc, base2, arbitrum, avalanche, baseSepolia].find((candidate) => candidate.id === chainId);
|
|
63826
|
+
const chain = [mainnet, optimism, bsc, base2, arbitrum, avalanche, injective, baseSepolia].find((candidate) => candidate.id === chainId);
|
|
63716
63827
|
if (chain !== void 0) return chain;
|
|
63717
63828
|
throw new TypeError(`Unsupported Skill chain ${String(chainId)}.`);
|
|
63718
63829
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@finchtech/cli",
|
|
3
|
-
"version": "0.5.
|
|
3
|
+
"version": "0.5.4",
|
|
4
4
|
"description": "Finch Agent CLI for wallet custody, Session-owned execution, and MCP OAuth approval.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -36,11 +36,11 @@
|
|
|
36
36
|
"typescript-eslint": "8.67.0",
|
|
37
37
|
"viem": "2.55.15",
|
|
38
38
|
"vitest": "4.1.10",
|
|
39
|
-
"@finch/deployment-manifest": "0.1.0",
|
|
40
39
|
"@finch/agent-market-contracts": "0.1.0",
|
|
41
|
-
"@finch/
|
|
40
|
+
"@finch/deployment-manifest": "0.1.0",
|
|
42
41
|
"@finch/skill-market-contracts": "0.1.0",
|
|
43
|
-
"@finch/skill-content": "0.1.0"
|
|
42
|
+
"@finch/skill-content": "0.1.0",
|
|
43
|
+
"@finch/task-market-contracts": "0.1.0"
|
|
44
44
|
},
|
|
45
45
|
"scripts": {
|
|
46
46
|
"build": "esbuild src/bootstrap.ts --bundle --platform=node --format=esm --target=node20 --outfile=dist/finch.js --banner:js=\"import { createRequire as createBundleRequire } from 'node:module'; const require = createBundleRequire(import.meta.url);\"",
|