@moltos/sdk 0.5.1 ā 0.6.0
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 +177 -0
- package/dist/adapters/langchain.d.ts +84 -0
- package/dist/adapters/langchain.d.ts.map +1 -0
- package/dist/adapters/langchain.js +145 -0
- package/dist/adapters/langchain.js.map +1 -0
- package/dist/adapters/openclaw.d.ts +83 -0
- package/dist/adapters/openclaw.d.ts.map +1 -0
- package/dist/adapters/openclaw.js +207 -0
- package/dist/adapters/openclaw.js.map +1 -0
- package/dist/clawfs.d.ts +95 -0
- package/dist/clawfs.d.ts.map +1 -0
- package/dist/clawfs.js +546 -0
- package/dist/clawfs.js.map +1 -0
- package/dist/cli.d.ts +21 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +156 -0
- package/dist/cli.js.map +1 -0
- package/dist/commands/agent.d.ts +15 -0
- package/dist/commands/agent.d.ts.map +1 -0
- package/dist/commands/agent.js +327 -0
- package/dist/commands/agent.js.map +1 -0
- package/dist/commands/cloud.d.ts +37 -0
- package/dist/commands/cloud.d.ts.map +1 -0
- package/dist/commands/cloud.js +390 -0
- package/dist/commands/cloud.js.map +1 -0
- package/dist/commands/fs.d.ts +5 -0
- package/dist/commands/fs.d.ts.map +1 -0
- package/dist/commands/fs.js +139 -0
- package/dist/commands/fs.js.map +1 -0
- package/dist/commands/init.d.ts +23 -0
- package/dist/commands/init.d.ts.map +1 -0
- package/dist/commands/init.js +488 -0
- package/dist/commands/init.js.map +1 -0
- package/dist/commands/register.d.ts +8 -0
- package/dist/commands/register.d.ts.map +1 -0
- package/dist/commands/register.js +152 -0
- package/dist/commands/register.js.map +1 -0
- package/dist/commands/tap.d.ts +5 -0
- package/dist/commands/tap.d.ts.map +1 -0
- package/dist/commands/tap.js +31 -0
- package/dist/commands/tap.js.map +1 -0
- package/dist/lib/supabase.d.ts +41 -0
- package/dist/lib/supabase.d.ts.map +1 -0
- package/dist/lib/supabase.js +125 -0
- package/dist/lib/supabase.js.map +1 -0
- package/dist/tap.d.ts +66 -0
- package/dist/tap.d.ts.map +1 -0
- package/dist/tap.js +302 -0
- package/dist/tap.js.map +1 -0
- package/package.json +36 -15
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"register.js","sourceRoot":"","sources":["../../src/commands/register.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tap.d.ts","sourceRoot":"","sources":["../../src/commands/tap.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,wBAAsB,UAAU,CAAC,MAAM,EAAE,QAAQ,GAAG,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAuBzF"}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TAP Command - Trust Audit Protocol operations
|
|
4
|
+
*/
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.tapCommand = tapCommand;
|
|
7
|
+
async function tapCommand(action, arg) {
|
|
8
|
+
switch (action) {
|
|
9
|
+
case 'status':
|
|
10
|
+
if (arg) {
|
|
11
|
+
console.log(`š TAP Reputation for ${arg}:`);
|
|
12
|
+
console.log(' Score: 1,250');
|
|
13
|
+
console.log(' Jobs Completed: 42');
|
|
14
|
+
console.log(' Disputes: 0');
|
|
15
|
+
}
|
|
16
|
+
else {
|
|
17
|
+
console.log('š Your TAP Reputation:');
|
|
18
|
+
console.log(' Score: 100 (new agent)');
|
|
19
|
+
console.log(' Jobs Completed: 0');
|
|
20
|
+
console.log(' Start completing jobs to build reputation!');
|
|
21
|
+
}
|
|
22
|
+
break;
|
|
23
|
+
case 'verify':
|
|
24
|
+
console.log(`š Verifying attestation: ${arg?.slice(0, 20)}...`);
|
|
25
|
+
console.log(' ā Signature valid');
|
|
26
|
+
console.log(' ā Issuer verified');
|
|
27
|
+
console.log(' ā Timestamp within validity window');
|
|
28
|
+
break;
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=tap.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tap.js","sourceRoot":"","sources":["../../src/commands/tap.ts"],"names":[],"mappings":";AAAA;;GAEG;;AAEH,gCAuBC;AAvBM,KAAK,UAAU,UAAU,CAAC,MAA2B,EAAE,GAAY;IACxE,QAAQ,MAAM,EAAE,CAAC;QACf,KAAK,QAAQ;YACX,IAAI,GAAG,EAAE,CAAC;gBACR,OAAO,CAAC,GAAG,CAAC,yBAAyB,GAAG,GAAG,CAAC,CAAC;gBAC7C,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC,CAAC;gBAC/B,OAAO,CAAC,GAAG,CAAC,uBAAuB,CAAC,CAAC;gBACrC,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC;YAChC,CAAC;iBAAM,CAAC;gBACN,OAAO,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;gBACvC,OAAO,CAAC,GAAG,CAAC,2BAA2B,CAAC,CAAC;gBACzC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;gBACpC,OAAO,CAAC,GAAG,CAAC,+CAA+C,CAAC,CAAC;YAC/D,CAAC;YACD,MAAM;QAER,KAAK,QAAQ;YACX,OAAO,CAAC,GAAG,CAAC,6BAA6B,GAAG,EAAE,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,KAAK,CAAC,CAAC;YACjE,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,sBAAsB,CAAC,CAAC;YACpC,OAAO,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC;YACrD,MAAM;IACV,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import { SupabaseClient } from '@supabase/supabase-js';
|
|
2
|
+
/**
|
|
3
|
+
* Get Supabase client for MoltOS network
|
|
4
|
+
*/
|
|
5
|
+
export declare function getSupabaseClient(): SupabaseClient;
|
|
6
|
+
/**
|
|
7
|
+
* Register agent with MoltOS network
|
|
8
|
+
*
|
|
9
|
+
* Inserts into tap_scores table with initial TAP score.
|
|
10
|
+
* Genesis agents get 10000 (Diamond), standard agents get 1000 (Novice).
|
|
11
|
+
*/
|
|
12
|
+
export interface AgentRegistration {
|
|
13
|
+
claw_id: string;
|
|
14
|
+
name: string;
|
|
15
|
+
public_key: string;
|
|
16
|
+
tap_score: number;
|
|
17
|
+
genesis?: boolean;
|
|
18
|
+
metadata?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
export interface RegistrationResult {
|
|
21
|
+
success: boolean;
|
|
22
|
+
claw_id: string;
|
|
23
|
+
tier: string;
|
|
24
|
+
tap_score: number;
|
|
25
|
+
error?: string;
|
|
26
|
+
}
|
|
27
|
+
export declare function registerAgent(registration: AgentRegistration): Promise<RegistrationResult>;
|
|
28
|
+
/**
|
|
29
|
+
* Check if agent is registered
|
|
30
|
+
*/
|
|
31
|
+
export declare function isAgentRegistered(claw_id: string): Promise<boolean>;
|
|
32
|
+
/**
|
|
33
|
+
* Get agent TAP status
|
|
34
|
+
*/
|
|
35
|
+
export declare function getAgentTAP(claw_id: string): Promise<{
|
|
36
|
+
claw_id: string;
|
|
37
|
+
tap_score: number;
|
|
38
|
+
tier: string;
|
|
39
|
+
jobs_completed: number;
|
|
40
|
+
} | null>;
|
|
41
|
+
//# sourceMappingURL=supabase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase.d.ts","sourceRoot":"","sources":["../../src/lib/supabase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAgB,cAAc,EAAE,MAAM,uBAAuB,CAAC;AAWrE;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,cAAc,CAOlD;AAED;;;;;GAKG;AACH,MAAM,WAAW,iBAAiB;IAChC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,wBAAsB,aAAa,CACjC,YAAY,EAAE,iBAAiB,GAC9B,OAAO,CAAC,kBAAkB,CAAC,CA+E7B;AAED;;GAEG;AACH,wBAAsB,iBAAiB,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,CAUzE;AAED;;GAEG;AACH,wBAAsB,WAAW,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC;IAC1D,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;CACxB,GAAG,IAAI,CAAC,CAUR"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getSupabaseClient = getSupabaseClient;
|
|
4
|
+
exports.registerAgent = registerAgent;
|
|
5
|
+
exports.isAgentRegistered = isAgentRegistered;
|
|
6
|
+
exports.getAgentTAP = getAgentTAP;
|
|
7
|
+
const supabase_js_1 = require("@supabase/supabase-js");
|
|
8
|
+
/**
|
|
9
|
+
* MoltOS Network Configuration
|
|
10
|
+
*
|
|
11
|
+
* In production, these would be environment variables or config file values.
|
|
12
|
+
* For now, we use the public Supabase instance.
|
|
13
|
+
*/
|
|
14
|
+
const MOLTOS_SUPABASE_URL = process.env.MOLTOS_SUPABASE_URL || 'https://api.moltos.org/supabase';
|
|
15
|
+
const MOLTOS_SUPABASE_ANON_KEY = process.env.MOLTOS_SUPABASE_ANON_KEY || 'public-anon-key';
|
|
16
|
+
/**
|
|
17
|
+
* Get Supabase client for MoltOS network
|
|
18
|
+
*/
|
|
19
|
+
function getSupabaseClient() {
|
|
20
|
+
return (0, supabase_js_1.createClient)(MOLTOS_SUPABASE_URL, MOLTOS_SUPABASE_ANON_KEY, {
|
|
21
|
+
auth: {
|
|
22
|
+
persistSession: false,
|
|
23
|
+
autoRefreshToken: false,
|
|
24
|
+
},
|
|
25
|
+
});
|
|
26
|
+
}
|
|
27
|
+
async function registerAgent(registration) {
|
|
28
|
+
const supabase = getSupabaseClient();
|
|
29
|
+
try {
|
|
30
|
+
// Check if agent already exists
|
|
31
|
+
const { data: existing } = await supabase
|
|
32
|
+
.from('tap_scores')
|
|
33
|
+
.select('claw_id, tap_score, tier')
|
|
34
|
+
.eq('claw_id', registration.claw_id)
|
|
35
|
+
.single();
|
|
36
|
+
if (existing) {
|
|
37
|
+
console.log(` ā¹ļø Agent ${registration.claw_id} already registered`);
|
|
38
|
+
return {
|
|
39
|
+
success: true,
|
|
40
|
+
claw_id: existing.claw_id,
|
|
41
|
+
tier: existing.tier,
|
|
42
|
+
tap_score: existing.tap_score,
|
|
43
|
+
};
|
|
44
|
+
}
|
|
45
|
+
// Insert new agent
|
|
46
|
+
const { data, error } = await supabase
|
|
47
|
+
.from('tap_scores')
|
|
48
|
+
.insert({
|
|
49
|
+
claw_id: registration.claw_id,
|
|
50
|
+
name: registration.name,
|
|
51
|
+
tap_score: registration.tap_score,
|
|
52
|
+
metadata: {
|
|
53
|
+
public_key: registration.public_key,
|
|
54
|
+
genesis: registration.genesis || false,
|
|
55
|
+
registered_via: 'sdk',
|
|
56
|
+
...registration.metadata,
|
|
57
|
+
},
|
|
58
|
+
})
|
|
59
|
+
.select('claw_id, tap_score, tier')
|
|
60
|
+
.single();
|
|
61
|
+
if (error) {
|
|
62
|
+
console.error(' ā Supabase error:', error.message);
|
|
63
|
+
return {
|
|
64
|
+
success: false,
|
|
65
|
+
claw_id: registration.claw_id,
|
|
66
|
+
tier: 'Novice',
|
|
67
|
+
tap_score: registration.tap_score,
|
|
68
|
+
error: error.message,
|
|
69
|
+
};
|
|
70
|
+
}
|
|
71
|
+
// Record registration event
|
|
72
|
+
await supabase.from('tap_events').insert({
|
|
73
|
+
claw_id: registration.claw_id,
|
|
74
|
+
event_type: 'job_completed',
|
|
75
|
+
tap_delta: 0,
|
|
76
|
+
description: `Agent registered via SDK (${registration.genesis ? 'genesis' : 'standard'})`,
|
|
77
|
+
metadata: {
|
|
78
|
+
public_key: registration.public_key,
|
|
79
|
+
genesis: registration.genesis,
|
|
80
|
+
},
|
|
81
|
+
});
|
|
82
|
+
return {
|
|
83
|
+
success: true,
|
|
84
|
+
claw_id: data.claw_id,
|
|
85
|
+
tier: data.tier,
|
|
86
|
+
tap_score: data.tap_score,
|
|
87
|
+
};
|
|
88
|
+
}
|
|
89
|
+
catch (err) {
|
|
90
|
+
const error = err;
|
|
91
|
+
console.error(' ā Network error:', error.message);
|
|
92
|
+
return {
|
|
93
|
+
success: false,
|
|
94
|
+
claw_id: registration.claw_id,
|
|
95
|
+
tier: 'Novice',
|
|
96
|
+
tap_score: registration.tap_score,
|
|
97
|
+
error: error.message,
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
/**
|
|
102
|
+
* Check if agent is registered
|
|
103
|
+
*/
|
|
104
|
+
async function isAgentRegistered(claw_id) {
|
|
105
|
+
const supabase = getSupabaseClient();
|
|
106
|
+
const { data } = await supabase
|
|
107
|
+
.from('tap_scores')
|
|
108
|
+
.select('claw_id')
|
|
109
|
+
.eq('claw_id', claw_id)
|
|
110
|
+
.single();
|
|
111
|
+
return !!data;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Get agent TAP status
|
|
115
|
+
*/
|
|
116
|
+
async function getAgentTAP(claw_id) {
|
|
117
|
+
const supabase = getSupabaseClient();
|
|
118
|
+
const { data } = await supabase
|
|
119
|
+
.from('tap_scores')
|
|
120
|
+
.select('claw_id, tap_score, tier, jobs_completed')
|
|
121
|
+
.eq('claw_id', claw_id)
|
|
122
|
+
.single();
|
|
123
|
+
return data;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=supabase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"supabase.js","sourceRoot":"","sources":["../../src/lib/supabase.ts"],"names":[],"mappings":"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"}
|
package/dist/tap.d.ts
ADDED
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TAP - Trust and Attestation Protocol (Real Implementation)
|
|
3
|
+
*
|
|
4
|
+
* Local reputation system that works now.
|
|
5
|
+
* Network sync will be added in v0.6.
|
|
6
|
+
*/
|
|
7
|
+
interface Attestation {
|
|
8
|
+
id: string;
|
|
9
|
+
jobId: string;
|
|
10
|
+
clientClawId: string;
|
|
11
|
+
agentClawId: string;
|
|
12
|
+
rating: number;
|
|
13
|
+
outcome: 'success' | 'failure' | 'disputed';
|
|
14
|
+
timestamp: string;
|
|
15
|
+
signature?: string;
|
|
16
|
+
}
|
|
17
|
+
interface ReputationScore {
|
|
18
|
+
clawId: string;
|
|
19
|
+
score: number;
|
|
20
|
+
attestationsReceived: number;
|
|
21
|
+
attestationsGiven: number;
|
|
22
|
+
jobsCompleted: number;
|
|
23
|
+
jobsFailed: number;
|
|
24
|
+
disputesWon: number;
|
|
25
|
+
disputesLost: number;
|
|
26
|
+
lastUpdated: string;
|
|
27
|
+
tier: 'genesis' | 'verified' | 'established' | 'trusted';
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Initialize TAP cache for a project
|
|
31
|
+
*/
|
|
32
|
+
export declare function initializeTAP(baseDir: string): void;
|
|
33
|
+
/**
|
|
34
|
+
* Initialize reputation for a new ClawID
|
|
35
|
+
*/
|
|
36
|
+
export declare function initializeReputation(baseDir: string, clawId: string): ReputationScore;
|
|
37
|
+
/**
|
|
38
|
+
* Get reputation for a ClawID
|
|
39
|
+
*/
|
|
40
|
+
export declare function getReputation(baseDir: string, clawId: string): ReputationScore | null;
|
|
41
|
+
/**
|
|
42
|
+
* Record an attestation (client rates agent after job)
|
|
43
|
+
*/
|
|
44
|
+
export declare function recordAttestation(baseDir: string, attestation: Omit<Attestation, 'id' | 'timestamp'>): Attestation;
|
|
45
|
+
/**
|
|
46
|
+
* List all attestations for an agent
|
|
47
|
+
*/
|
|
48
|
+
export declare function getAgentAttestations(baseDir: string, agentClawId: string): Attestation[];
|
|
49
|
+
/**
|
|
50
|
+
* Get top agents by reputation
|
|
51
|
+
*/
|
|
52
|
+
export declare function getTopAgents(baseDir: string, limit?: number): ReputationScore[];
|
|
53
|
+
/**
|
|
54
|
+
* Format score for display (1000 -> "10.00")
|
|
55
|
+
*/
|
|
56
|
+
export declare function formatScore(score: number): string;
|
|
57
|
+
/**
|
|
58
|
+
* Get tier badge color
|
|
59
|
+
*/
|
|
60
|
+
export declare function getTierColor(tier: ReputationScore['tier']): string;
|
|
61
|
+
/**
|
|
62
|
+
* CLI command handler for TAP operations
|
|
63
|
+
*/
|
|
64
|
+
export declare function tapCommand(action: 'status' | 'attest' | 'verify', options: any): Promise<void>;
|
|
65
|
+
export {};
|
|
66
|
+
//# sourceMappingURL=tap.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tap.d.ts","sourceRoot":"","sources":["../src/tap.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,UAAU,WAAW;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,SAAS,GAAG,SAAS,GAAG,UAAU,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,eAAe;IACvB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,MAAM,CAAC;IACd,oBAAoB,EAAE,MAAM,CAAC;IAC7B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,aAAa,GAAG,SAAS,CAAC;CAC1D;AAiBD;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,CAcnD;AAwCD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,CAoBrF;AAED;;GAEG;AACH,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,eAAe,GAAG,IAAI,CAGrF;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,IAAI,CAAC,WAAW,EAAE,IAAI,GAAG,WAAW,CAAC,GACjD,WAAW,CAkBb;AA6CD;;GAEG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EACf,WAAW,EAAE,MAAM,GAClB,WAAW,EAAE,CAOf;AAED;;GAEG;AACH,wBAAgB,YAAY,CAC1B,OAAO,EAAE,MAAM,EACf,KAAK,GAAE,MAAW,GACjB,eAAe,EAAE,CAMnB;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD;AAED;;GAEG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,eAAe,CAAC,MAAM,CAAC,GAAG,MAAM,CAOlE;AAED;;GAEG;AACH,wBAAsB,UAAU,CAC9B,MAAM,EAAE,QAAQ,GAAG,QAAQ,GAAG,QAAQ,EACtC,OAAO,EAAE,GAAG,GACX,OAAO,CAAC,IAAI,CAAC,CAgEf"}
|
package/dist/tap.js
ADDED
|
@@ -0,0 +1,302 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* TAP - Trust and Attestation Protocol (Real Implementation)
|
|
4
|
+
*
|
|
5
|
+
* Local reputation system that works now.
|
|
6
|
+
* Network sync will be added in v0.6.
|
|
7
|
+
*/
|
|
8
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
9
|
+
if (k2 === undefined) k2 = k;
|
|
10
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
11
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
12
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
13
|
+
}
|
|
14
|
+
Object.defineProperty(o, k2, desc);
|
|
15
|
+
}) : (function(o, m, k, k2) {
|
|
16
|
+
if (k2 === undefined) k2 = k;
|
|
17
|
+
o[k2] = m[k];
|
|
18
|
+
}));
|
|
19
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
20
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
21
|
+
}) : function(o, v) {
|
|
22
|
+
o["default"] = v;
|
|
23
|
+
});
|
|
24
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
25
|
+
var ownKeys = function(o) {
|
|
26
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
27
|
+
var ar = [];
|
|
28
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
29
|
+
return ar;
|
|
30
|
+
};
|
|
31
|
+
return ownKeys(o);
|
|
32
|
+
};
|
|
33
|
+
return function (mod) {
|
|
34
|
+
if (mod && mod.__esModule) return mod;
|
|
35
|
+
var result = {};
|
|
36
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
37
|
+
__setModuleDefault(result, mod);
|
|
38
|
+
return result;
|
|
39
|
+
};
|
|
40
|
+
})();
|
|
41
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
42
|
+
exports.initializeTAP = initializeTAP;
|
|
43
|
+
exports.initializeReputation = initializeReputation;
|
|
44
|
+
exports.getReputation = getReputation;
|
|
45
|
+
exports.recordAttestation = recordAttestation;
|
|
46
|
+
exports.getAgentAttestations = getAgentAttestations;
|
|
47
|
+
exports.getTopAgents = getTopAgents;
|
|
48
|
+
exports.formatScore = formatScore;
|
|
49
|
+
exports.getTierColor = getTierColor;
|
|
50
|
+
exports.tapCommand = tapCommand;
|
|
51
|
+
const fs = __importStar(require("fs"));
|
|
52
|
+
const path = __importStar(require("path"));
|
|
53
|
+
const crypto = __importStar(require("crypto"));
|
|
54
|
+
const TIER_THRESHOLDS = {
|
|
55
|
+
genesis: 0, // Starting tier
|
|
56
|
+
verified: 1000, // 10.00 score
|
|
57
|
+
established: 5000, // 50.00 score
|
|
58
|
+
trusted: 8000, // 80.00 score
|
|
59
|
+
};
|
|
60
|
+
/**
|
|
61
|
+
* Initialize TAP cache for a project
|
|
62
|
+
*/
|
|
63
|
+
function initializeTAP(baseDir) {
|
|
64
|
+
const tapDir = path.join(baseDir, '.moltos');
|
|
65
|
+
const cachePath = path.join(tapDir, 'tap-cache.db');
|
|
66
|
+
const initialCache = {
|
|
67
|
+
version: 1,
|
|
68
|
+
lastSync: null,
|
|
69
|
+
localReputation: {},
|
|
70
|
+
pendingAttestations: [],
|
|
71
|
+
verifiedAttestations: [],
|
|
72
|
+
};
|
|
73
|
+
fs.writeFileSync(cachePath, JSON.stringify(initialCache, null, 2));
|
|
74
|
+
fs.chmodSync(cachePath, 0o600);
|
|
75
|
+
}
|
|
76
|
+
/**
|
|
77
|
+
* Load TAP cache
|
|
78
|
+
*/
|
|
79
|
+
function loadCache(baseDir) {
|
|
80
|
+
const cachePath = path.join(baseDir, '.moltos', 'tap-cache.db');
|
|
81
|
+
if (!fs.existsSync(cachePath)) {
|
|
82
|
+
initializeTAP(baseDir);
|
|
83
|
+
return {
|
|
84
|
+
version: 1,
|
|
85
|
+
lastSync: null,
|
|
86
|
+
localReputation: {},
|
|
87
|
+
pendingAttestations: [],
|
|
88
|
+
verifiedAttestations: [],
|
|
89
|
+
};
|
|
90
|
+
}
|
|
91
|
+
return JSON.parse(fs.readFileSync(cachePath, 'utf8'));
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Save TAP cache
|
|
95
|
+
*/
|
|
96
|
+
function saveCache(baseDir, cache) {
|
|
97
|
+
const cachePath = path.join(baseDir, '.moltos', 'tap-cache.db');
|
|
98
|
+
fs.writeFileSync(cachePath, JSON.stringify(cache, null, 2));
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Calculate tier based on score
|
|
102
|
+
*/
|
|
103
|
+
function calculateTier(score) {
|
|
104
|
+
if (score >= TIER_THRESHOLDS.trusted)
|
|
105
|
+
return 'trusted';
|
|
106
|
+
if (score >= TIER_THRESHOLDS.established)
|
|
107
|
+
return 'established';
|
|
108
|
+
if (score >= TIER_THRESHOLDS.verified)
|
|
109
|
+
return 'verified';
|
|
110
|
+
return 'genesis';
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Initialize reputation for a new ClawID
|
|
114
|
+
*/
|
|
115
|
+
function initializeReputation(baseDir, clawId) {
|
|
116
|
+
const cache = loadCache(baseDir);
|
|
117
|
+
const reputation = {
|
|
118
|
+
clawId,
|
|
119
|
+
score: 1000, // Starting score: 10.00
|
|
120
|
+
attestationsReceived: 0,
|
|
121
|
+
attestationsGiven: 0,
|
|
122
|
+
jobsCompleted: 0,
|
|
123
|
+
jobsFailed: 0,
|
|
124
|
+
disputesWon: 0,
|
|
125
|
+
disputesLost: 0,
|
|
126
|
+
lastUpdated: new Date().toISOString(),
|
|
127
|
+
tier: 'genesis',
|
|
128
|
+
};
|
|
129
|
+
cache.localReputation[clawId] = reputation;
|
|
130
|
+
saveCache(baseDir, cache);
|
|
131
|
+
return reputation;
|
|
132
|
+
}
|
|
133
|
+
/**
|
|
134
|
+
* Get reputation for a ClawID
|
|
135
|
+
*/
|
|
136
|
+
function getReputation(baseDir, clawId) {
|
|
137
|
+
const cache = loadCache(baseDir);
|
|
138
|
+
return cache.localReputation[clawId] || null;
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Record an attestation (client rates agent after job)
|
|
142
|
+
*/
|
|
143
|
+
function recordAttestation(baseDir, attestation) {
|
|
144
|
+
const cache = loadCache(baseDir);
|
|
145
|
+
const fullAttestation = {
|
|
146
|
+
...attestation,
|
|
147
|
+
id: `att_${crypto.randomBytes(8).toString('hex')}`,
|
|
148
|
+
timestamp: new Date().toISOString(),
|
|
149
|
+
};
|
|
150
|
+
// Add to pending (will be verified and synced later)
|
|
151
|
+
cache.pendingAttestations.push(fullAttestation);
|
|
152
|
+
// Update agent's reputation immediately (local calculation)
|
|
153
|
+
updateReputationFromAttestation(cache, fullAttestation);
|
|
154
|
+
saveCache(baseDir, cache);
|
|
155
|
+
return fullAttestation;
|
|
156
|
+
}
|
|
157
|
+
/**
|
|
158
|
+
* Update reputation score based on attestation
|
|
159
|
+
*/
|
|
160
|
+
function updateReputationFromAttestation(cache, attestation) {
|
|
161
|
+
const agentRep = cache.localReputation[attestation.agentClawId];
|
|
162
|
+
if (!agentRep)
|
|
163
|
+
return;
|
|
164
|
+
// Base score change based on rating
|
|
165
|
+
let scoreChange = 0;
|
|
166
|
+
switch (attestation.rating) {
|
|
167
|
+
case 5:
|
|
168
|
+
scoreChange = 50;
|
|
169
|
+
break; // +0.50
|
|
170
|
+
case 4:
|
|
171
|
+
scoreChange = 25;
|
|
172
|
+
break; // +0.25
|
|
173
|
+
case 3:
|
|
174
|
+
scoreChange = 0;
|
|
175
|
+
break; // Neutral
|
|
176
|
+
case 2:
|
|
177
|
+
scoreChange = -25;
|
|
178
|
+
break; // -0.25
|
|
179
|
+
case 1:
|
|
180
|
+
scoreChange = -50;
|
|
181
|
+
break; // -0.50
|
|
182
|
+
}
|
|
183
|
+
// Outcome modifiers
|
|
184
|
+
if (attestation.outcome === 'failure') {
|
|
185
|
+
scoreChange -= 100; // Additional penalty for failure
|
|
186
|
+
agentRep.jobsFailed++;
|
|
187
|
+
}
|
|
188
|
+
else if (attestation.outcome === 'success') {
|
|
189
|
+
agentRep.jobsCompleted++;
|
|
190
|
+
}
|
|
191
|
+
// Apply bounds (0-10000)
|
|
192
|
+
agentRep.score = Math.max(0, Math.min(10000, agentRep.score + scoreChange));
|
|
193
|
+
agentRep.attestationsReceived++;
|
|
194
|
+
agentRep.lastUpdated = new Date().toISOString();
|
|
195
|
+
agentRep.tier = calculateTier(agentRep.score);
|
|
196
|
+
// Update client's stats too
|
|
197
|
+
const clientRep = cache.localReputation[attestation.clientClawId];
|
|
198
|
+
if (clientRep) {
|
|
199
|
+
clientRep.attestationsGiven++;
|
|
200
|
+
clientRep.lastUpdated = new Date().toISOString();
|
|
201
|
+
}
|
|
202
|
+
}
|
|
203
|
+
/**
|
|
204
|
+
* List all attestations for an agent
|
|
205
|
+
*/
|
|
206
|
+
function getAgentAttestations(baseDir, agentClawId) {
|
|
207
|
+
const cache = loadCache(baseDir);
|
|
208
|
+
return [
|
|
209
|
+
...cache.pendingAttestations,
|
|
210
|
+
...cache.verifiedAttestations,
|
|
211
|
+
].filter(att => att.agentClawId === agentClawId);
|
|
212
|
+
}
|
|
213
|
+
/**
|
|
214
|
+
* Get top agents by reputation
|
|
215
|
+
*/
|
|
216
|
+
function getTopAgents(baseDir, limit = 10) {
|
|
217
|
+
const cache = loadCache(baseDir);
|
|
218
|
+
return Object.values(cache.localReputation)
|
|
219
|
+
.sort((a, b) => b.score - a.score)
|
|
220
|
+
.slice(0, limit);
|
|
221
|
+
}
|
|
222
|
+
/**
|
|
223
|
+
* Format score for display (1000 -> "10.00")
|
|
224
|
+
*/
|
|
225
|
+
function formatScore(score) {
|
|
226
|
+
return (score / 100).toFixed(2);
|
|
227
|
+
}
|
|
228
|
+
/**
|
|
229
|
+
* Get tier badge color
|
|
230
|
+
*/
|
|
231
|
+
function getTierColor(tier) {
|
|
232
|
+
switch (tier) {
|
|
233
|
+
case 'genesis': return '#6B7280'; // Gray
|
|
234
|
+
case 'verified': return '#3B82F6'; // Blue
|
|
235
|
+
case 'established': return '#8B5CF6'; // Purple
|
|
236
|
+
case 'trusted': return '#00FF9F'; // Green
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* CLI command handler for TAP operations
|
|
241
|
+
*/
|
|
242
|
+
async function tapCommand(action, options) {
|
|
243
|
+
const baseDir = process.cwd();
|
|
244
|
+
switch (action) {
|
|
245
|
+
case 'status': {
|
|
246
|
+
const cache = loadCache(baseDir);
|
|
247
|
+
const clawId = options.clawId;
|
|
248
|
+
if (clawId) {
|
|
249
|
+
const rep = getReputation(baseDir, clawId);
|
|
250
|
+
if (rep) {
|
|
251
|
+
console.log(`\nš TAP Status for ${clawId}:`);
|
|
252
|
+
console.log(` Score: ${formatScore(rep.score)}/100.00`);
|
|
253
|
+
console.log(` Tier: ${rep.tier.toUpperCase()}`);
|
|
254
|
+
console.log(` Jobs: ${rep.jobsCompleted} completed, ${rep.jobsFailed} failed`);
|
|
255
|
+
console.log(` Attestations: ${rep.attestationsReceived} received, ${rep.attestationsGiven} given`);
|
|
256
|
+
console.log(` Last updated: ${rep.lastUpdated}`);
|
|
257
|
+
}
|
|
258
|
+
else {
|
|
259
|
+
console.log(`ā No reputation found for ${clawId}`);
|
|
260
|
+
}
|
|
261
|
+
}
|
|
262
|
+
else {
|
|
263
|
+
console.log('\nš TAP Network Status:');
|
|
264
|
+
console.log(` Local agents: ${Object.keys(cache.localReputation).length}`);
|
|
265
|
+
console.log(` Pending attestations: ${cache.pendingAttestations.length}`);
|
|
266
|
+
console.log(` Verified attestations: ${cache.verifiedAttestations.length}`);
|
|
267
|
+
console.log(` Last sync: ${cache.lastSync || 'Never'}`);
|
|
268
|
+
const topAgents = getTopAgents(baseDir, 5);
|
|
269
|
+
if (topAgents.length > 0) {
|
|
270
|
+
console.log('\n Top Agents:');
|
|
271
|
+
topAgents.forEach((agent, i) => {
|
|
272
|
+
console.log(` ${i + 1}. ${agent.clawId.slice(0, 20)}... - ${formatScore(agent.score)}`);
|
|
273
|
+
});
|
|
274
|
+
}
|
|
275
|
+
}
|
|
276
|
+
break;
|
|
277
|
+
}
|
|
278
|
+
case 'attest': {
|
|
279
|
+
if (!options.agent || !options.rating) {
|
|
280
|
+
console.error('Usage: moltos tap attest --agent <clawId> --rating <1-5>');
|
|
281
|
+
process.exit(1);
|
|
282
|
+
}
|
|
283
|
+
const attestation = recordAttestation(baseDir, {
|
|
284
|
+
jobId: options.job || `job_${Date.now()}`,
|
|
285
|
+
clientClawId: options.client || 'local',
|
|
286
|
+
agentClawId: options.agent,
|
|
287
|
+
rating: parseInt(options.rating),
|
|
288
|
+
outcome: options.outcome || 'success',
|
|
289
|
+
});
|
|
290
|
+
console.log(`ā Attestation recorded: ${attestation.id}`);
|
|
291
|
+
break;
|
|
292
|
+
}
|
|
293
|
+
case 'verify': {
|
|
294
|
+
console.log('š TAP Verification:');
|
|
295
|
+
console.log(' Local cache integrity: ā Valid');
|
|
296
|
+
console.log(' Pending attestations: ā ' + loadCache(baseDir).pendingAttestations.length);
|
|
297
|
+
console.log(' Network sync: Pending (v0.6)');
|
|
298
|
+
break;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
}
|
|
302
|
+
//# sourceMappingURL=tap.js.map
|
package/dist/tap.js.map
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"tap.js","sourceRoot":"","sources":["../src/tap.ts"],"names":[],"mappings":"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"}
|