@halot/cli 1.0.5 → 1.0.7
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
CHANGED
|
@@ -256,7 +256,7 @@ This creates:
|
|
|
256
256
|
{
|
|
257
257
|
"verifierId": "",
|
|
258
258
|
"displayName": "My Verifier",
|
|
259
|
-
"description": "
|
|
259
|
+
"description": "Text service verification specialist",
|
|
260
260
|
"identity": {
|
|
261
261
|
"domain": "myverifier.0g",
|
|
262
262
|
"domainType": "space-id",
|
|
@@ -289,9 +289,7 @@ This creates:
|
|
|
289
289
|
```json
|
|
290
290
|
{
|
|
291
291
|
"evaluationModel": {
|
|
292
|
-
"
|
|
293
|
-
"serviceType": "chatbot",
|
|
294
|
-
"verifiability": "TeeML"
|
|
292
|
+
"model": "openai/gpt-oss-20b"
|
|
295
293
|
},
|
|
296
294
|
"sdk": {
|
|
297
295
|
"network": "testnet"
|
|
@@ -300,12 +298,20 @@ This creates:
|
|
|
300
298
|
}
|
|
301
299
|
```
|
|
302
300
|
|
|
301
|
+
`model` is the 0G inference model name. The verifier runtime resolves the live TeeML chatbot provider for that model from the 0G registry before it sends the evaluation request.
|
|
302
|
+
|
|
303
|
+
Current 0G testnet TeeML chatbot models include:
|
|
304
|
+
|
|
305
|
+
- `openai/gpt-oss-20b`
|
|
306
|
+
- `google/gemma-3-27b-it`
|
|
307
|
+
- `qwen/qwen-2.5-7b-instruct`
|
|
308
|
+
|
|
303
309
|
`inference.json`:
|
|
304
310
|
|
|
305
311
|
```json
|
|
306
312
|
{
|
|
307
|
-
"systemPrompt": "You are
|
|
308
|
-
"promptTemplate": "Evaluate
|
|
313
|
+
"systemPrompt": "You are a Halot verifier for text-generation services. Return only valid JSON.",
|
|
314
|
+
"promptTemplate": "Evaluate this Halot text-generation job.\\n\\nJob input:\\n{{input}}\\n\\nProvider result:\\n{{result}}\\n\\nService acceptance criteria:\\n{{acceptanceCriteria}}\\n\\nExpected output schema:\\n{{outputSchema}}\\n\\nInput artifacts:\\n{{inputArtifacts}}\\n\\nResult artifacts:\\n{{resultArtifacts}}\\n\\nArtifact validation issues:\\n{{artifactValidationIssues}}\\n\\nApprove only if the result directly answers the requester input, satisfies the service schema, and meets the acceptance criteria.\\nReject empty, irrelevant, malformed, unsafe, inaccessible, or artifact-mismatched results.\\nUse uncertain only when the available evidence is insufficient.\\nReturn only JSON with fields: decision, confidence, reason, failedCriteria.",
|
|
309
315
|
"outputSchema": {
|
|
310
316
|
"decision": "approve | reject | uncertain",
|
|
311
317
|
"confidence": "number between 0 and 1",
|
|
@@ -321,9 +327,9 @@ This creates:
|
|
|
321
327
|
|
|
322
328
|
```json
|
|
323
329
|
{
|
|
324
|
-
"categories": ["text"
|
|
330
|
+
"categories": ["text"],
|
|
325
331
|
"serviceIds": [],
|
|
326
|
-
"maxConcurrentJobs":
|
|
332
|
+
"maxConcurrentJobs": 3,
|
|
327
333
|
"minConfidenceThreshold": 0.75
|
|
328
334
|
}
|
|
329
335
|
```
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.runVerifierInitCommand = runVerifierInitCommand;
|
|
4
|
+
const sdk_1 = require("@halot/sdk");
|
|
4
5
|
const wallet_manager_1 = require("@halot/cli/shared/wallet/wallet.manager");
|
|
5
6
|
const authority_util_1 = require("@halot/cli/shared/wallet/authority.util");
|
|
6
7
|
const init_cluster_util_1 = require("@halot/cli/shared/wallet/init-cluster.util");
|
|
@@ -17,7 +18,7 @@ async function runVerifierInitCommand(options = {}) {
|
|
|
17
18
|
workspace.writeVerifierConfig({
|
|
18
19
|
verifierId: '',
|
|
19
20
|
displayName: 'My Verifier',
|
|
20
|
-
description: '
|
|
21
|
+
description: 'Text service verification specialist',
|
|
21
22
|
identity: {
|
|
22
23
|
erc8004TokenId: '',
|
|
23
24
|
agentRegistry: '',
|
|
@@ -42,9 +43,7 @@ async function runVerifierInitCommand(options = {}) {
|
|
|
42
43
|
});
|
|
43
44
|
workspace.writeModelConfig({
|
|
44
45
|
evaluationModel: {
|
|
45
|
-
|
|
46
|
-
serviceType: 'chatbot',
|
|
47
|
-
verifiability: 'TeeML',
|
|
46
|
+
model: sdk_1.DEFAULT_ZERO_G_VERIFIER_EVALUATION_MODEL,
|
|
48
47
|
},
|
|
49
48
|
sdk: {
|
|
50
49
|
network: cluster,
|
|
@@ -52,8 +51,36 @@ async function runVerifierInitCommand(options = {}) {
|
|
|
52
51
|
timeout: 60,
|
|
53
52
|
});
|
|
54
53
|
workspace.writeInferenceTemplate({
|
|
55
|
-
systemPrompt: 'You are
|
|
56
|
-
promptTemplate:
|
|
54
|
+
systemPrompt: 'You are a Halot verifier for text-generation services. Return only valid JSON.',
|
|
55
|
+
promptTemplate: [
|
|
56
|
+
'Evaluate this Halot text-generation job.',
|
|
57
|
+
'',
|
|
58
|
+
'Job input:',
|
|
59
|
+
'{{input}}',
|
|
60
|
+
'',
|
|
61
|
+
'Provider result:',
|
|
62
|
+
'{{result}}',
|
|
63
|
+
'',
|
|
64
|
+
'Service acceptance criteria:',
|
|
65
|
+
'{{acceptanceCriteria}}',
|
|
66
|
+
'',
|
|
67
|
+
'Expected output schema:',
|
|
68
|
+
'{{outputSchema}}',
|
|
69
|
+
'',
|
|
70
|
+
'Input artifacts:',
|
|
71
|
+
'{{inputArtifacts}}',
|
|
72
|
+
'',
|
|
73
|
+
'Result artifacts:',
|
|
74
|
+
'{{resultArtifacts}}',
|
|
75
|
+
'',
|
|
76
|
+
'Artifact validation issues:',
|
|
77
|
+
'{{artifactValidationIssues}}',
|
|
78
|
+
'',
|
|
79
|
+
'Approve only if the result directly answers the requester input, satisfies the service schema, and meets the acceptance criteria.',
|
|
80
|
+
'Reject empty, irrelevant, malformed, unsafe, inaccessible, or artifact-mismatched results.',
|
|
81
|
+
'Use uncertain only when the available evidence is insufficient.',
|
|
82
|
+
'Return only JSON with fields: decision, confidence, reason, failedCriteria.',
|
|
83
|
+
].join('\n'),
|
|
57
84
|
outputSchema: {
|
|
58
85
|
decision: 'approve | reject | uncertain',
|
|
59
86
|
confidence: 'number between 0 and 1',
|
|
@@ -64,9 +91,9 @@ async function runVerifierInitCommand(options = {}) {
|
|
|
64
91
|
temperature: 0,
|
|
65
92
|
});
|
|
66
93
|
workspace.writeSpecializations({
|
|
67
|
-
categories: ['text'
|
|
94
|
+
categories: ['text'],
|
|
68
95
|
serviceIds: [],
|
|
69
|
-
maxConcurrentJobs:
|
|
96
|
+
maxConcurrentJobs: 3,
|
|
70
97
|
minConfidenceThreshold: 0.75,
|
|
71
98
|
});
|
|
72
99
|
(0, console_1.printInitSummary)({
|
|
@@ -89,7 +116,7 @@ async function runVerifierInitCommand(options = {}) {
|
|
|
89
116
|
warnings: ['wallets.json contains private keys. Do not commit it.'],
|
|
90
117
|
nextSteps: [
|
|
91
118
|
'Edit halot.verifier.json',
|
|
92
|
-
'
|
|
119
|
+
'Review model.config.json, inference.json, and specializations.json',
|
|
93
120
|
`Run ${(0, console_1.command)('halot verifier register')}`,
|
|
94
121
|
`Run ${(0, console_1.command)('halot verifier run')}`,
|
|
95
122
|
],
|
|
@@ -23,7 +23,6 @@ async function runVerifierRunCommand(options) {
|
|
|
23
23
|
const compute = new sdk_1.ZeroGComputeService({
|
|
24
24
|
privateKey: verifierWallet.privateKey,
|
|
25
25
|
rpcUrl: modelConfig.sdk.rpcUrl ?? chain.rpcUrl,
|
|
26
|
-
providerAddress: modelConfig.evaluationModel.providerAddress,
|
|
27
26
|
ledgerContractAddress: modelConfig.sdk.ledgerContractAddress,
|
|
28
27
|
inferenceContractAddress: modelConfig.sdk.inferenceContractAddress,
|
|
29
28
|
fineTuningContractAddress: modelConfig.sdk.fineTuningContractAddress,
|
|
@@ -32,9 +31,6 @@ async function runVerifierRunCommand(options) {
|
|
|
32
31
|
const workerId = (0, sdk_1.createPrefixedId)('worker');
|
|
33
32
|
const cursorKey = `verifier:${config.verifierId}`;
|
|
34
33
|
let lastEventId = workspace.readStreamCursor(cursorKey);
|
|
35
|
-
if (!modelConfig.evaluationModel.providerAddress) {
|
|
36
|
-
throw new Error('model.config.json must set evaluationModel.providerAddress for real 0G TeeML verification.');
|
|
37
|
-
}
|
|
38
34
|
if (options.once) {
|
|
39
35
|
const assignmentPath = `/verifiers/${config.verifierId}/jobs/next`;
|
|
40
36
|
const headers = await (0, actor_headers_service_1.createSignedActorHeaders)(verifierWallet, config.verifierId, 'verifier', 'GET', assignmentPath);
|
|
@@ -89,7 +85,7 @@ async function processVerifierAssignment(api, verifierWallet, verifierId, assign
|
|
|
89
85
|
input: assignment.job.input,
|
|
90
86
|
result: assignment.result.output,
|
|
91
87
|
service: assignment.service,
|
|
92
|
-
|
|
88
|
+
model: modelConfig.evaluationModel.model,
|
|
93
89
|
systemPrompt: inferenceTemplate.systemPrompt,
|
|
94
90
|
promptTemplate: inferenceTemplate.promptTemplate,
|
|
95
91
|
outputSchema: inferenceTemplate.outputSchema,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@halot/cli",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.7",
|
|
4
4
|
"description": "Halot protocol CLI",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"bin": {
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"./*": "./dist/*.js"
|
|
31
31
|
},
|
|
32
32
|
"dependencies": {
|
|
33
|
-
"@halot/sdk": "^1.0.
|
|
33
|
+
"@halot/sdk": "^1.0.4",
|
|
34
34
|
"@stellar/stellar-sdk": "^15.0.1",
|
|
35
35
|
"@web3-name-sdk/core": "^0.1.18",
|
|
36
36
|
"commander": "^14.0.3",
|