manifest 5.10.1 → 5.10.3
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/backend/analytics/controllers/agents.controller.js +2 -0
- package/dist/backend/analytics/controllers/agents.controller.js.map +1 -1
- package/dist/backend/database/local-bootstrap.service.js +2 -0
- package/dist/backend/database/local-bootstrap.service.js.map +1 -1
- package/dist/backend/otlp/otlp.controller.js +23 -6
- package/dist/backend/otlp/otlp.controller.js.map +1 -1
- package/dist/index.js +2 -2
- package/package.json +1 -1
- package/public/assets/{index-C3Vk-816.js → index-CC1lL4n3.js} +6 -6
- package/public/index.html +8 -3
- package/public/og-image.png +0 -0
|
@@ -25,6 +25,7 @@ const rename_agent_dto_1 = require("../../common/dto/rename-agent.dto");
|
|
|
25
25
|
const user_cache_interceptor_1 = require("../../common/interceptors/user-cache.interceptor");
|
|
26
26
|
const cache_constants_1 = require("../../common/constants/cache.constants");
|
|
27
27
|
const local_mode_constants_1 = require("../../common/constants/local-mode.constants");
|
|
28
|
+
const product_telemetry_1 = require("../../common/utils/product-telemetry");
|
|
28
29
|
let AgentsController = class AgentsController {
|
|
29
30
|
timeseries;
|
|
30
31
|
aggregation;
|
|
@@ -46,6 +47,7 @@ let AgentsController = class AgentsController {
|
|
|
46
47
|
agentName: body.name,
|
|
47
48
|
email: user.email,
|
|
48
49
|
});
|
|
50
|
+
(0, product_telemetry_1.trackCloudEvent)('agent_created', user.id, { agent_name: body.name });
|
|
49
51
|
return { agent: { id: result.agentId, name: body.name }, apiKey: result.apiKey };
|
|
50
52
|
}
|
|
51
53
|
async getAgentKey(user, agentName) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agents.controller.js","sourceRoot":"","sources":["../../../src/analytics/controllers/agents.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;AAAA,2CAAwH;AACxH,yDAAiD;AACjD,2CAA+C;AAC/C,uFAAkF;AAClF,yEAAqE;AACrE,yEAA6E;AAC7E,8EAAgE;AAEhE,wEAAmE;AACnE,wEAAmE;AACnE,6FAAwF;AACxF,4EAAgF;AAChF,sFAA8E;
|
|
1
|
+
{"version":3,"file":"agents.controller.js","sourceRoot":"","sources":["../../../src/analytics/controllers/agents.controller.ts"],"names":[],"mappings":"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"}
|
|
@@ -28,6 +28,7 @@ const hash_util_1 = require("../common/utils/hash.util");
|
|
|
28
28
|
const model_pricing_cache_service_1 = require("../model-prices/model-pricing-cache.service");
|
|
29
29
|
const pricing_sync_service_1 = require("./pricing-sync.service");
|
|
30
30
|
const local_mode_constants_1 = require("../common/constants/local-mode.constants");
|
|
31
|
+
const product_telemetry_1 = require("../common/utils/product-telemetry");
|
|
31
32
|
let LocalBootstrapService = LocalBootstrapService_1 = class LocalBootstrapService {
|
|
32
33
|
tenantRepo;
|
|
33
34
|
agentRepo;
|
|
@@ -71,6 +72,7 @@ let LocalBootstrapService = LocalBootstrapService_1 = class LocalBootstrapServic
|
|
|
71
72
|
is_active: true,
|
|
72
73
|
tenant_id: local_mode_constants_1.LOCAL_TENANT_ID,
|
|
73
74
|
});
|
|
75
|
+
(0, product_telemetry_1.trackEvent)('agent_created', { agent_name: local_mode_constants_1.LOCAL_AGENT_NAME });
|
|
74
76
|
const apiKey = this.readApiKeyFromConfig();
|
|
75
77
|
if (apiKey) {
|
|
76
78
|
await this.registerApiKey(apiKey);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-bootstrap.service.js","sourceRoot":"","sources":["../../src/database/local-bootstrap.service.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAkE;AAClE,6CAAmD;AACnD,qCAAqC;AACrC,2BAA8C;AAC9C,+BAA4B;AAC5B,2BAA6B;AAC7B,6DAAmD;AACnD,2DAAiD;AACjD,2EAA+D;AAC/D,2EAAgE;AAChE,yDAA8D;AAC9D,6FAAuF;AACvF,iEAA4D;AAC5D,mFAMkD;
|
|
1
|
+
{"version":3,"file":"local-bootstrap.service.js","sourceRoot":"","sources":["../../src/database/local-bootstrap.service.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,6 +15,9 @@ var OtlpController_1;
|
|
|
15
15
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
16
16
|
exports.OtlpController = void 0;
|
|
17
17
|
const common_1 = require("@nestjs/common");
|
|
18
|
+
const fs_1 = require("fs");
|
|
19
|
+
const path_1 = require("path");
|
|
20
|
+
const os_1 = require("os");
|
|
18
21
|
const public_decorator_1 = require("../common/decorators/public.decorator");
|
|
19
22
|
const otlp_auth_guard_1 = require("./guards/otlp-auth.guard");
|
|
20
23
|
const otlp_decoder_service_1 = require("./services/otlp-decoder.service");
|
|
@@ -72,12 +75,26 @@ let OtlpController = OtlpController_1 = class OtlpController {
|
|
|
72
75
|
return { partialSuccess: result.accepted === 0 ? { rejectedLogRecords: 0 } : undefined };
|
|
73
76
|
}
|
|
74
77
|
trackFirstTelemetry(ctx) {
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
78
|
+
const isLocal = process.env['MANIFEST_MODE'] === 'local';
|
|
79
|
+
if (isLocal) {
|
|
80
|
+
const markerDir = (0, path_1.join)((0, os_1.homedir)(), '.openclaw', 'manifest');
|
|
81
|
+
const markerPath = (0, path_1.join)(markerDir, '.first_telemetry_sent');
|
|
82
|
+
if ((0, fs_1.existsSync)(markerPath))
|
|
83
|
+
return;
|
|
84
|
+
(0, product_telemetry_1.trackEvent)('first_telemetry_received', {
|
|
85
|
+
agent_id_hash: ctx.agentId.slice(0, 8),
|
|
86
|
+
});
|
|
87
|
+
(0, fs_1.mkdirSync)(markerDir, { recursive: true });
|
|
88
|
+
(0, fs_1.writeFileSync)(markerPath, new Date().toISOString(), { mode: 0o600 });
|
|
89
|
+
}
|
|
90
|
+
else {
|
|
91
|
+
if (this.seenAgents.has(ctx.agentId))
|
|
92
|
+
return;
|
|
93
|
+
this.seenAgents.add(ctx.agentId);
|
|
94
|
+
(0, product_telemetry_1.trackCloudEvent)('first_telemetry_received', ctx.tenantId, {
|
|
95
|
+
agent_id_hash: ctx.agentId.slice(0, 8),
|
|
96
|
+
});
|
|
97
|
+
}
|
|
81
98
|
}
|
|
82
99
|
};
|
|
83
100
|
exports.OtlpController = OtlpController;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"otlp.controller.js","sourceRoot":"","sources":["../../src/otlp/otlp.controller.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAoF;AAEpF,4EAA+D;AAC/D,8DAAyD;AACzD,0EAAqE;AACrE,0EAAqE;AACrE,4EAAuE;AACvE,sEAAiE;AAEjE,0FAAoF;AACpF,
|
|
1
|
+
{"version":3,"file":"otlp.controller.js","sourceRoot":"","sources":["../../src/otlp/otlp.controller.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -17,13 +17,13 @@ To resolve the conflict:`,(0,si.getConflictResolutionRecipe)(u,r))),c=a):ag.diag
|
|
|
17
17
|
openclaw config set plugins.entries.manifest.config.endpoint https://app.manifest.build/otlp`:`Invalid apiKey format. Keys must start with '${Ce}'. Fix it via:
|
|
18
18
|
openclaw config set manifest.apiKey ${Ce}YOUR_KEY`:`Missing apiKey. Set it via:
|
|
19
19
|
openclaw config set manifest.apiKey ${Ce}YOUR_KEY
|
|
20
|
-
or export MANIFEST_API_KEY=${Ce}YOUR_KEY`}var ca=Oe(fM()),la=Oe(Ni()),jI=Oe(wI()),qI=Oe(KI()),WI=Oe(Po());m();var Zr=null,en=null,Cc=null,xc=null;function tn(o,r){let i=new WI.Resource({"service.name":Sr.SERVICE_NAME,"service.version":"5.10.1","manifest.plugin":"true"}),c=o.apiKey?{Authorization:`Bearer ${o.apiKey}`}:{},a=new jI.OTLPTraceExporter({url:`${o.endpoint}/v1/traces`,headers:c});Zr=new ca.BasicTracerProvider({resource:i,spanProcessors:[new ca.BatchSpanProcessor(a,{scheduledDelayMillis:5e3,maxQueueSize:2048,maxExportBatchSize:512})]}),Zr.register(),r.debug(`[manifest] Trace exporter -> ${o.endpoint}/v1/traces`);let u=new qI.OTLPMetricExporter({url:`${o.endpoint}/v1/metrics`,headers:c}),t=o.mode==="dev"?Gc.METRICS_INTERVAL_MS:o.mode==="local"?Bc.METRICS_INTERVAL_MS:Sr.METRICS_INTERVAL_MS;return en=new la.MeterProvider({resource:i,readers:[new la.PeriodicExportingMetricReader({exporter:u,exportIntervalMillis:t})]}),gt.setGlobalMeterProvider(en),r.debug(`[manifest] Metrics exporter -> ${o.endpoint}/v1/metrics (interval=${t}ms)`),Cc=Fe.getTracer("manifest-plugin","5.10.1"),xc=gt.getMeter("manifest-plugin","5.10.1"),{tracer:Cc,meter:xc}}async function rn(o){o.info("[manifest] Shutting down telemetry..."),Zr&&(await Zr.shutdown(),Zr=null),en&&(await en.shutdown(),en=null),Cc=null,xc=null,o.info("[manifest] Telemetry shut down")}m();var w5=5,JI=30*60*1e3,B5=3e3,G5=5*60*1e3,H5=new Set(["system","developer"]),k5=10,nn=new Map,zI=!1;function Y5(){if(zI)return;zI=!0;let o=setInterval(()=>{let r=Date.now();for(let[i,c]of nn)r-c.lastUpdated>JI&&nn.delete(i)},G5);typeof o=="object"&&"unref"in o&&o.unref()}async function XI(o,r,i,c){Y5();let u=`${o.endpoint.replace(/\/otlp(\/v1)?\/?$/,"")}/api/v1/routing/resolve`;try{if(!r||!Array.isArray(r)||r.length===0)return c.debug("[manifest] Routing resolve: no messages, skipping"),null;let t=r.filter(I=>I&&typeof I=="object"&&"role"in I&&!H5.has(I.role)).slice(-k5).map(I=>({role:I.role,content:I.content}));if(t.length===0)return c.debug("[manifest] Routing resolve: no scorable messages, skipping"),null;let e=nn.get(i),n=e&&Date.now()-e.lastUpdated<JI?e.tiers:void 0,s={messages:t};n&&(s.recentTiers=n);let l={"Content-Type":"application/json"};o.apiKey&&(l.Authorization=`Bearer ${o.apiKey}`);let E=await fetch(u,{method:"POST",headers:l,body:JSON.stringify(s),signal:AbortSignal.timeout(B5)});if(!E.ok)return c.debug(`[manifest] Routing resolve returned ${E.status}`),null;let A=await E.json();if(!A.model)return c.debug(`[manifest] Routing resolve: no model for tier=${A.tier}`),null;let y=nn.get(i);return y?(y.tiers=[A.tier,...y.tiers].slice(0,w5),y.lastUpdated=Date.now()):nn.set(i,{tiers:[A.tier],lastUpdated:Date.now()}),c.debug(`[manifest] Routing resolved: tier=${A.tier} model=${A.model} provider=${A.provider}`),{tier:A.tier,model:A.model,provider:A.provider??"unknown"}}catch(t){let e=t instanceof Error?t.message:String(t);return c.debug(`[manifest] Routing resolve failed (${e})`),null}}function on(o,r,i){if(typeof o.registerProvider!="function"){i.debug("[manifest] registerProvider not available, skipping provider registration");return}let c=r.endpoint.replace(/\/otlp(\/v1)?\/?$/,"");try{o.registerProvider({id:"manifest",name:"Manifest Router",api:"openai-completions",baseUrl:c,apiKey:r.apiKey,models:["auto"]}),i.info("[manifest] Registered as OpenAI-compatible provider (proxy mode)")}catch(a){let u=a instanceof Error?a.message:String(a);i.debug(`[manifest] registerProvider failed (${u})`)}}var Er=new Map,$I,QI,ZI,eC,F5,tC,rC,nC,oC;function an(o){$I=o.createCounter(me.LLM_REQUESTS,{description:"Total LLM inference requests"}),QI=o.createCounter(me.LLM_TOKENS_INPUT,{description:"Total input tokens sent to LLM"}),ZI=o.createCounter(me.LLM_TOKENS_OUTPUT,{description:"Total output tokens from LLM"}),eC=o.createCounter(me.LLM_TOKENS_CACHE_READ,{description:"Total cache-read tokens"}),F5=o.createHistogram(me.LLM_DURATION,{description:"LLM request duration in ms",unit:"ms"}),tC=o.createCounter(me.TOOL_CALLS,{description:"Total tool invocations"}),rC=o.createCounter(me.TOOL_ERRORS,{description:"Total tool errors"}),nC=o.createHistogram(me.TOOL_DURATION,{description:"Tool execution duration in ms",unit:"ms"}),oC=o.createCounter(me.MESSAGES_RECEIVED,{description:"Total messages received from users"})}function un(o,r,i,c){o.on("message_received",a=>{let u=a.sessionKey||a.session?.key||`agent:${a.agent||"main"}:main`,t=a.channel||"unknown",e=r.startSpan(En.REQUEST,{kind:ke.SERVER,attributes:{[V.SESSION_KEY]:u,[V.CHANNEL]:t}});Er.set(u,{root:e}),oC.add(1,{[V.CHANNEL]:t}),c.debug(`[manifest] Root span started for session=${u}`)}),o.on("before_agent_start",a=>{let u=a.sessionKey||a.session?.key||`agent:${a.agent||"main"}:main`,t=a.agent||"main",e=Er.get(u),n=e?.root?Fe.setSpan(Ye.active(),e.root):Ye.active(),s=r.startSpan(En.AGENT_TURN,{kind:ke.INTERNAL,attributes:{[V.AGENT_NAME]:t,[V.SESSION_KEY]:u}},n);e?e.turn=s:Er.set(u,{root:s,turn:s}),c.debug(`[manifest] Agent turn started: agent=${t}, session=${u}`)}),o.on("tool_result_persist",a=>{let u=a.toolName||a.tool||"unknown",t=a.durationMs||0,e=a.error==null,n=a.sessionKey||"unknown",s=Er.get(n),l=s?.turn?Fe.setSpan(Ye.active(),s.turn):Ye.active(),E=r.startSpan(`${En.TOOL_PREFIX}${u}`,{kind:ke.INTERNAL,attributes:{[V.TOOL_NAME]:u,[V.TOOL_SUCCESS]:String(e),[V.SESSION_KEY]:n}},l);e||(E.setStatus({code:Mt.ERROR,message:a.error?.message||"Tool execution failed"}),rC.add(1,{[V.TOOL_NAME]:u})),E.end(),tC.add(1,{[V.TOOL_NAME]:u}),nC.record(t,{[V.TOOL_NAME]:u})}),o.on("agent_end",async a=>{let u=a.sessionKey||a.session?.key||`agent:${a.agent||"main"}:main`,t=a.messages||[],e=[...t].reverse().find(Be=>Be.role==="assistant"&&Be.usage),n=e?.model||a.model||"unknown",s=e?.provider||a.provider||"unknown",l=e?.usage||a.usage||{},E=l.input||l.inputTokens||0,A=l.output||l.outputTokens||0,y=l.cacheRead||l.cacheReadTokens||0,I=l.cacheWrite||l.cacheWriteTokens||0,Ie=n,we=s,Tr=null;if(Ie==="auto"&&i.mode!=="cloud"){let Be=await XI(i,t,u,c);Be&&(Ie=Be.model,we=Be.provider,Tr=Be.tier)}let Ee=Er.get(u);Ee?.turn&&(Ee.turn.setAttributes({[V.MODEL]:Ie,[V.PROVIDER]:we,[V.INPUT_TOKENS]:E,[V.OUTPUT_TOKENS]:A,[V.CACHE_READ_TOKENS]:y,[V.CACHE_WRITE_TOKENS]:I}),Tr&&Ee.turn.setAttribute(V.ROUTING_TIER,Tr),Ee.turn.end()),Ee?.root&&Ee.root!==Ee.turn&&Ee.root.end(),Er.delete(u);let ht={[V.MODEL]:Ie,[V.PROVIDER]:we};$I.add(1,ht),QI.add(E,ht),ZI.add(A,ht),y>0&&eC.add(y,ht),c.debug(`[manifest] agent_end tokens: in=${E}, out=${A}, cache=${y}`),c.debug(`[manifest] Trace completed for session=${u}`)}),c.debug("[manifest] All hooks registered")}async function sn(o){let r=o.endpoint.replace(/\/otlp(\/v1)?\/?$/,""),i={endpointReachable:!1,authValid:!1,agentName:null,error:null};try{let c=await fetch(`${r}/api/v1/health`,{signal:AbortSignal.timeout(5e3)});if(!c.ok)return i.error=`Health endpoint returned ${c.status}`,i;i.endpointReachable=!0}catch(c){let a=c instanceof Error?c.message:String(c);return i.error=`Cannot reach endpoint: ${a}`,i}try{let c=o.apiKey?{Authorization:`Bearer ${o.apiKey}`}:{},a=await fetch(`${r}/api/v1/agent/usage?range=24h`,{headers:c,signal:AbortSignal.timeout(5e3)});if(a.status===401||a.status===403)return i.error="API key rejected \u2014 check your mnfst_ key is correct",i;if(!a.ok)return i.error=`Usage endpoint returned ${a.status}`,i;i.authValid=!0;let u=await a.json();u&&typeof u.agentName=="string"&&(i.agentName=u.agentName)}catch(c){let a=c instanceof Error?c.message:String(c);return i.error=`Auth check failed: ${a}`,i}return i}var iC={today:"24h",week:"7d",month:"30d"};async function aC(o,r,i,c){let a=`${o}${r}`;try{let u=i?{Authorization:`Bearer ${i}`}:{},t=await fetch(a,{headers:u});return t.ok?{result:await t.json()}:{error:`API returned ${t.status}`}}catch(u){let t=u instanceof Error?u.message:String(u);return c.error(`[manifest] API call failed: ${t}`),{error:t}}}function cn(o,r,i){let c=r.endpoint.replace(/\/otlp(\/v1)?\/?$/,"");o.registerTool({name:"manifest_usage",description:"Get token consumption for this agent: total, input, output, cache-read tokens, and action count. Use when the user asks about token usage or consumption.",parameters:{type:"object",properties:{period:{type:"string",enum:["today","week","month"],default:"today",description:"Time period"}}},handler:async a=>{let u=iC[a.period||"today"]||"24h";return aC(c,`/api/v1/agent/usage?range=${u}`,r.apiKey,i)}}),o.registerTool({name:"manifest_costs",description:"Get cost breakdown for this agent in USD, grouped by model. Use when the user asks about costs, spending, or money burned.",parameters:{type:"object",properties:{period:{type:"string",enum:["today","week","month"],default:"week",description:"Time period"}}},handler:async a=>{let u=iC[a.period||"week"]||"7d";return aC(c,`/api/v1/agent/costs?range=${u}`,r.apiKey,i)}}),o.registerTool({name:"manifest_health",description:"Check whether Manifest observability is connected and working. Use when the user asks if monitoring is set up or wants a connectivity test.",parameters:{type:"object",properties:{}},handler:async()=>{let a=await sn(r);return a.error?{error:a.error}:{result:{endpointReachable:a.endpointReachable,authValid:a.authValid,agentName:a.agentName,status:"ok"}}}}),i.debug("[manifest] Registered agent tools: manifest_usage, manifest_costs, manifest_health")}var D=require("fs"),ve=require("path"),bc=require("os"),sC=require("crypto");var pa=(0,ve.join)((0,bc.homedir)(),".openclaw","manifest"),ln=(0,ve.join)(pa,"config.json"),cC=(0,ve.join)((0,bc.homedir)(),".openclaw"),uC=(0,ve.join)(cC,"openclaw.json"),K5=3e3;function j5(){(0,D.existsSync)(pa)||(0,D.mkdirSync)(pa,{recursive:!0,mode:448})}function q5(){if(j5(),(0,D.existsSync)(ln))try{let i=JSON.parse((0,D.readFileSync)(ln,"utf-8"));if(i.apiKey&&i.apiKey.startsWith(Ce))return i.apiKey}catch{}let o=`${Ce}local_${(0,sC.randomBytes)(24).toString("hex")}`,r={};if((0,D.existsSync)(ln))try{r=JSON.parse((0,D.readFileSync)(ln,"utf-8"))}catch{}return(0,D.writeFileSync)(ln,JSON.stringify({...r,apiKey:o},null,2),{mode:384}),o}function lC(o){if(!(0,D.existsSync)(o))return{};try{return JSON.parse((0,D.readFileSync)(o,"utf-8"))}catch{return{}}}function pC(o,r){let i=(0,ve.dirname)(o);(0,D.existsSync)(i)||(0,D.mkdirSync)(i,{recursive:!0,mode:448});let c=`${o}.tmp.${process.pid}`;(0,D.writeFileSync)(c,JSON.stringify(r,null,2),{mode:384}),(0,D.renameSync)(c,o)}function Uc(o,r,i,c,a){let t={baseUrl:`http://${r}:${i}/v1`,api:"openai-completions",apiKey:c,models:[{id:"auto",name:"auto"}]};try{let e=lC(uC);e.models||(e.models={}),e.models.providers||(e.models.providers={}),e.models.providers.manifest=t,e.agents||(e.agents={}),e.agents.defaults||(e.agents.defaults={}),e.agents.defaults.models||(e.agents.defaults.models={});let n=e.agents.defaults.models;Array.isArray(n)?n.includes("manifest/auto")||n.push("manifest/auto"):typeof n=="object"&&("manifest/auto"in n||(n["manifest/auto"]={})),pC(uC,e),a.debug("[manifest] Wrote provider config to openclaw.json")}catch(e){let n=e instanceof Error?e.message:String(e);a.debug(`[manifest] Could not write openclaw.json: ${n}`)}try{if(o.config){o.config.models||(o.config.models={}),o.config.models.providers||(o.config.models.providers={}),o.config.models.providers.manifest=t,o.config.agents||(o.config.agents={}),o.config.agents.defaults||(o.config.agents.defaults={}),o.config.agents.defaults.models||(o.config.agents.defaults.models={});let e=o.config.agents.defaults.models;Array.isArray(e)?e.includes("manifest/auto")||e.push("manifest/auto"):typeof e=="object"&&("manifest/auto"in e||(e["manifest/auto"]={}))}a.debug("[manifest] Injected provider into runtime config")}catch(e){let n=e instanceof Error?e.message:String(e);a.debug(`[manifest] Could not inject runtime config: ${n}`)}}function Dc(o,r){let i=(0,ve.join)(cC,"agents");if(!(0,D.existsSync)(i)){r.debug("[manifest] No agents directory found, skipping auth profile injection");return}let c={type:"api_key",provider:"manifest",key:o},a=0;try{let u=(0,D.readdirSync)(i,{withFileTypes:!0}).filter(t=>t.isDirectory());for(let t of u){let e=(0,ve.join)(i,t.name,"agent","auth-profiles.json"),n=(0,ve.dirname)(e);if(!(0,D.existsSync)(n))continue;let s=lC(e);s.version||(s.version=1),s.profiles||(s.profiles={});let l=s.profiles["manifest:default"];l&&l.key===o||(s.profiles["manifest:default"]=c,pC(e,s),a++)}}catch(u){let t=u instanceof Error?u.message:String(u);r.debug(`[manifest] Auth profile injection error: ${t}`)}a>0&&r.debug(`[manifest] Injected auth profile into ${a} agent(s)`)}async function W5(o,r){try{return(await fetch(`http://${o}:${r}/api/v1/health`,{signal:AbortSignal.timeout(K5)})).ok}catch{return!1}}function _C(o,r,i){let c=r.port,a=r.host,u=q5(),t=(0,ve.join)(pa,"manifest.db");i.debug("[manifest] Local mode \u2014 starting embedded server..."),Uc(o,a,c,u,i),Dc(u,i);let e;try{e=require("./server")}catch(A){let y=A instanceof Error?A.message:String(A);i.error(`[manifest] Failed to load embedded server.
|
|
20
|
+
or export MANIFEST_API_KEY=${Ce}YOUR_KEY`}var ca=Oe(fM()),la=Oe(Ni()),jI=Oe(wI()),qI=Oe(KI()),WI=Oe(Po());m();var Zr=null,en=null,Cc=null,xc=null;function tn(o,r){let i=new WI.Resource({"service.name":Sr.SERVICE_NAME,"service.version":"5.10.3","manifest.plugin":"true"}),c=o.apiKey?{Authorization:`Bearer ${o.apiKey}`}:{},a=new jI.OTLPTraceExporter({url:`${o.endpoint}/v1/traces`,headers:c});Zr=new ca.BasicTracerProvider({resource:i,spanProcessors:[new ca.BatchSpanProcessor(a,{scheduledDelayMillis:5e3,maxQueueSize:2048,maxExportBatchSize:512})]}),Zr.register(),r.debug(`[manifest] Trace exporter -> ${o.endpoint}/v1/traces`);let u=new qI.OTLPMetricExporter({url:`${o.endpoint}/v1/metrics`,headers:c}),t=o.mode==="dev"?Gc.METRICS_INTERVAL_MS:o.mode==="local"?Bc.METRICS_INTERVAL_MS:Sr.METRICS_INTERVAL_MS;return en=new la.MeterProvider({resource:i,readers:[new la.PeriodicExportingMetricReader({exporter:u,exportIntervalMillis:t})]}),gt.setGlobalMeterProvider(en),r.debug(`[manifest] Metrics exporter -> ${o.endpoint}/v1/metrics (interval=${t}ms)`),Cc=Fe.getTracer("manifest-plugin","5.10.3"),xc=gt.getMeter("manifest-plugin","5.10.3"),{tracer:Cc,meter:xc}}async function rn(o){o.info("[manifest] Shutting down telemetry..."),Zr&&(await Zr.shutdown(),Zr=null),en&&(await en.shutdown(),en=null),Cc=null,xc=null,o.info("[manifest] Telemetry shut down")}m();var w5=5,JI=30*60*1e3,B5=3e3,G5=5*60*1e3,H5=new Set(["system","developer"]),k5=10,nn=new Map,zI=!1;function Y5(){if(zI)return;zI=!0;let o=setInterval(()=>{let r=Date.now();for(let[i,c]of nn)r-c.lastUpdated>JI&&nn.delete(i)},G5);typeof o=="object"&&"unref"in o&&o.unref()}async function XI(o,r,i,c){Y5();let u=`${o.endpoint.replace(/\/otlp(\/v1)?\/?$/,"")}/api/v1/routing/resolve`;try{if(!r||!Array.isArray(r)||r.length===0)return c.debug("[manifest] Routing resolve: no messages, skipping"),null;let t=r.filter(I=>I&&typeof I=="object"&&"role"in I&&!H5.has(I.role)).slice(-k5).map(I=>({role:I.role,content:I.content}));if(t.length===0)return c.debug("[manifest] Routing resolve: no scorable messages, skipping"),null;let e=nn.get(i),n=e&&Date.now()-e.lastUpdated<JI?e.tiers:void 0,s={messages:t};n&&(s.recentTiers=n);let l={"Content-Type":"application/json"};o.apiKey&&(l.Authorization=`Bearer ${o.apiKey}`);let E=await fetch(u,{method:"POST",headers:l,body:JSON.stringify(s),signal:AbortSignal.timeout(B5)});if(!E.ok)return c.debug(`[manifest] Routing resolve returned ${E.status}`),null;let A=await E.json();if(!A.model)return c.debug(`[manifest] Routing resolve: no model for tier=${A.tier}`),null;let y=nn.get(i);return y?(y.tiers=[A.tier,...y.tiers].slice(0,w5),y.lastUpdated=Date.now()):nn.set(i,{tiers:[A.tier],lastUpdated:Date.now()}),c.debug(`[manifest] Routing resolved: tier=${A.tier} model=${A.model} provider=${A.provider}`),{tier:A.tier,model:A.model,provider:A.provider??"unknown"}}catch(t){let e=t instanceof Error?t.message:String(t);return c.debug(`[manifest] Routing resolve failed (${e})`),null}}function on(o,r,i){if(typeof o.registerProvider!="function"){i.debug("[manifest] registerProvider not available, skipping provider registration");return}let c=r.endpoint.replace(/\/otlp(\/v1)?\/?$/,"");try{o.registerProvider({id:"manifest",name:"Manifest Router",api:"openai-completions",baseUrl:c,apiKey:r.apiKey,models:["auto"]}),i.info("[manifest] Registered as OpenAI-compatible provider (proxy mode)")}catch(a){let u=a instanceof Error?a.message:String(a);i.debug(`[manifest] registerProvider failed (${u})`)}}var Er=new Map,$I,QI,ZI,eC,F5,tC,rC,nC,oC;function an(o){$I=o.createCounter(me.LLM_REQUESTS,{description:"Total LLM inference requests"}),QI=o.createCounter(me.LLM_TOKENS_INPUT,{description:"Total input tokens sent to LLM"}),ZI=o.createCounter(me.LLM_TOKENS_OUTPUT,{description:"Total output tokens from LLM"}),eC=o.createCounter(me.LLM_TOKENS_CACHE_READ,{description:"Total cache-read tokens"}),F5=o.createHistogram(me.LLM_DURATION,{description:"LLM request duration in ms",unit:"ms"}),tC=o.createCounter(me.TOOL_CALLS,{description:"Total tool invocations"}),rC=o.createCounter(me.TOOL_ERRORS,{description:"Total tool errors"}),nC=o.createHistogram(me.TOOL_DURATION,{description:"Tool execution duration in ms",unit:"ms"}),oC=o.createCounter(me.MESSAGES_RECEIVED,{description:"Total messages received from users"})}function un(o,r,i,c){o.on("message_received",a=>{let u=a.sessionKey||a.session?.key||`agent:${a.agent||"main"}:main`,t=a.channel||"unknown",e=r.startSpan(En.REQUEST,{kind:ke.SERVER,attributes:{[V.SESSION_KEY]:u,[V.CHANNEL]:t}});Er.set(u,{root:e}),oC.add(1,{[V.CHANNEL]:t}),c.debug(`[manifest] Root span started for session=${u}`)}),o.on("before_agent_start",a=>{let u=a.sessionKey||a.session?.key||`agent:${a.agent||"main"}:main`,t=a.agent||"main",e=Er.get(u),n=e?.root?Fe.setSpan(Ye.active(),e.root):Ye.active(),s=r.startSpan(En.AGENT_TURN,{kind:ke.INTERNAL,attributes:{[V.AGENT_NAME]:t,[V.SESSION_KEY]:u}},n);e?e.turn=s:Er.set(u,{root:s,turn:s}),c.debug(`[manifest] Agent turn started: agent=${t}, session=${u}`)}),o.on("tool_result_persist",a=>{let u=a.toolName||a.tool||"unknown",t=a.durationMs||0,e=a.error==null,n=a.sessionKey||"unknown",s=Er.get(n),l=s?.turn?Fe.setSpan(Ye.active(),s.turn):Ye.active(),E=r.startSpan(`${En.TOOL_PREFIX}${u}`,{kind:ke.INTERNAL,attributes:{[V.TOOL_NAME]:u,[V.TOOL_SUCCESS]:String(e),[V.SESSION_KEY]:n}},l);e||(E.setStatus({code:Mt.ERROR,message:a.error?.message||"Tool execution failed"}),rC.add(1,{[V.TOOL_NAME]:u})),E.end(),tC.add(1,{[V.TOOL_NAME]:u}),nC.record(t,{[V.TOOL_NAME]:u})}),o.on("agent_end",async a=>{let u=a.sessionKey||a.session?.key||`agent:${a.agent||"main"}:main`,t=a.messages||[],e=[...t].reverse().find(Be=>Be.role==="assistant"&&Be.usage),n=e?.model||a.model||"unknown",s=e?.provider||a.provider||"unknown",l=e?.usage||a.usage||{},E=l.input||l.inputTokens||0,A=l.output||l.outputTokens||0,y=l.cacheRead||l.cacheReadTokens||0,I=l.cacheWrite||l.cacheWriteTokens||0,Ie=n,we=s,Tr=null;if(Ie==="auto"&&i.mode!=="cloud"){let Be=await XI(i,t,u,c);Be&&(Ie=Be.model,we=Be.provider,Tr=Be.tier)}let Ee=Er.get(u);Ee?.turn&&(Ee.turn.setAttributes({[V.MODEL]:Ie,[V.PROVIDER]:we,[V.INPUT_TOKENS]:E,[V.OUTPUT_TOKENS]:A,[V.CACHE_READ_TOKENS]:y,[V.CACHE_WRITE_TOKENS]:I}),Tr&&Ee.turn.setAttribute(V.ROUTING_TIER,Tr),Ee.turn.end()),Ee?.root&&Ee.root!==Ee.turn&&Ee.root.end(),Er.delete(u);let ht={[V.MODEL]:Ie,[V.PROVIDER]:we};$I.add(1,ht),QI.add(E,ht),ZI.add(A,ht),y>0&&eC.add(y,ht),c.debug(`[manifest] agent_end tokens: in=${E}, out=${A}, cache=${y}`),c.debug(`[manifest] Trace completed for session=${u}`)}),c.debug("[manifest] All hooks registered")}async function sn(o){let r=o.endpoint.replace(/\/otlp(\/v1)?\/?$/,""),i={endpointReachable:!1,authValid:!1,agentName:null,error:null};try{let c=await fetch(`${r}/api/v1/health`,{signal:AbortSignal.timeout(5e3)});if(!c.ok)return i.error=`Health endpoint returned ${c.status}`,i;i.endpointReachable=!0}catch(c){let a=c instanceof Error?c.message:String(c);return i.error=`Cannot reach endpoint: ${a}`,i}try{let c=o.apiKey?{Authorization:`Bearer ${o.apiKey}`}:{},a=await fetch(`${r}/api/v1/agent/usage?range=24h`,{headers:c,signal:AbortSignal.timeout(5e3)});if(a.status===401||a.status===403)return i.error="API key rejected \u2014 check your mnfst_ key is correct",i;if(!a.ok)return i.error=`Usage endpoint returned ${a.status}`,i;i.authValid=!0;let u=await a.json();u&&typeof u.agentName=="string"&&(i.agentName=u.agentName)}catch(c){let a=c instanceof Error?c.message:String(c);return i.error=`Auth check failed: ${a}`,i}return i}var iC={today:"24h",week:"7d",month:"30d"};async function aC(o,r,i,c){let a=`${o}${r}`;try{let u=i?{Authorization:`Bearer ${i}`}:{},t=await fetch(a,{headers:u});return t.ok?{result:await t.json()}:{error:`API returned ${t.status}`}}catch(u){let t=u instanceof Error?u.message:String(u);return c.error(`[manifest] API call failed: ${t}`),{error:t}}}function cn(o,r,i){let c=r.endpoint.replace(/\/otlp(\/v1)?\/?$/,"");o.registerTool({name:"manifest_usage",description:"Get token consumption for this agent: total, input, output, cache-read tokens, and action count. Use when the user asks about token usage or consumption.",parameters:{type:"object",properties:{period:{type:"string",enum:["today","week","month"],default:"today",description:"Time period"}}},handler:async a=>{let u=iC[a.period||"today"]||"24h";return aC(c,`/api/v1/agent/usage?range=${u}`,r.apiKey,i)}}),o.registerTool({name:"manifest_costs",description:"Get cost breakdown for this agent in USD, grouped by model. Use when the user asks about costs, spending, or money burned.",parameters:{type:"object",properties:{period:{type:"string",enum:["today","week","month"],default:"week",description:"Time period"}}},handler:async a=>{let u=iC[a.period||"week"]||"7d";return aC(c,`/api/v1/agent/costs?range=${u}`,r.apiKey,i)}}),o.registerTool({name:"manifest_health",description:"Check whether Manifest observability is connected and working. Use when the user asks if monitoring is set up or wants a connectivity test.",parameters:{type:"object",properties:{}},handler:async()=>{let a=await sn(r);return a.error?{error:a.error}:{result:{endpointReachable:a.endpointReachable,authValid:a.authValid,agentName:a.agentName,status:"ok"}}}}),i.debug("[manifest] Registered agent tools: manifest_usage, manifest_costs, manifest_health")}var D=require("fs"),ve=require("path"),bc=require("os"),sC=require("crypto");var pa=(0,ve.join)((0,bc.homedir)(),".openclaw","manifest"),ln=(0,ve.join)(pa,"config.json"),cC=(0,ve.join)((0,bc.homedir)(),".openclaw"),uC=(0,ve.join)(cC,"openclaw.json"),K5=3e3;function j5(){(0,D.existsSync)(pa)||(0,D.mkdirSync)(pa,{recursive:!0,mode:448})}function q5(){if(j5(),(0,D.existsSync)(ln))try{let i=JSON.parse((0,D.readFileSync)(ln,"utf-8"));if(i.apiKey&&i.apiKey.startsWith(Ce))return i.apiKey}catch{}let o=`${Ce}local_${(0,sC.randomBytes)(24).toString("hex")}`,r={};if((0,D.existsSync)(ln))try{r=JSON.parse((0,D.readFileSync)(ln,"utf-8"))}catch{}return(0,D.writeFileSync)(ln,JSON.stringify({...r,apiKey:o},null,2),{mode:384}),o}function lC(o){if(!(0,D.existsSync)(o))return{};try{return JSON.parse((0,D.readFileSync)(o,"utf-8"))}catch{return{}}}function pC(o,r){let i=(0,ve.dirname)(o);(0,D.existsSync)(i)||(0,D.mkdirSync)(i,{recursive:!0,mode:448});let c=`${o}.tmp.${process.pid}`;(0,D.writeFileSync)(c,JSON.stringify(r,null,2),{mode:384}),(0,D.renameSync)(c,o)}function Uc(o,r,i,c,a){let t={baseUrl:`http://${r}:${i}/v1`,api:"openai-completions",apiKey:c,models:[{id:"auto",name:"auto"}]};try{let e=lC(uC);e.models||(e.models={}),e.models.providers||(e.models.providers={}),e.models.providers.manifest=t,e.agents||(e.agents={}),e.agents.defaults||(e.agents.defaults={}),e.agents.defaults.models||(e.agents.defaults.models={});let n=e.agents.defaults.models;Array.isArray(n)?n.includes("manifest/auto")||n.push("manifest/auto"):typeof n=="object"&&("manifest/auto"in n||(n["manifest/auto"]={})),pC(uC,e),a.debug("[manifest] Wrote provider config to openclaw.json")}catch(e){let n=e instanceof Error?e.message:String(e);a.debug(`[manifest] Could not write openclaw.json: ${n}`)}try{if(o.config){o.config.models||(o.config.models={}),o.config.models.providers||(o.config.models.providers={}),o.config.models.providers.manifest=t,o.config.agents||(o.config.agents={}),o.config.agents.defaults||(o.config.agents.defaults={}),o.config.agents.defaults.models||(o.config.agents.defaults.models={});let e=o.config.agents.defaults.models;Array.isArray(e)?e.includes("manifest/auto")||e.push("manifest/auto"):typeof e=="object"&&("manifest/auto"in e||(e["manifest/auto"]={}))}a.debug("[manifest] Injected provider into runtime config")}catch(e){let n=e instanceof Error?e.message:String(e);a.debug(`[manifest] Could not inject runtime config: ${n}`)}}function Dc(o,r){let i=(0,ve.join)(cC,"agents");if(!(0,D.existsSync)(i)){r.debug("[manifest] No agents directory found, skipping auth profile injection");return}let c={type:"api_key",provider:"manifest",key:o},a=0;try{let u=(0,D.readdirSync)(i,{withFileTypes:!0}).filter(t=>t.isDirectory());for(let t of u){let e=(0,ve.join)(i,t.name,"agent","auth-profiles.json"),n=(0,ve.dirname)(e);if(!(0,D.existsSync)(n))continue;let s=lC(e);s.version||(s.version=1),s.profiles||(s.profiles={});let l=s.profiles["manifest:default"];l&&l.key===o||(s.profiles["manifest:default"]=c,pC(e,s),a++)}}catch(u){let t=u instanceof Error?u.message:String(u);r.debug(`[manifest] Auth profile injection error: ${t}`)}a>0&&r.debug(`[manifest] Injected auth profile into ${a} agent(s)`)}async function W5(o,r){try{return(await fetch(`http://${o}:${r}/api/v1/health`,{signal:AbortSignal.timeout(K5)})).ok}catch{return!1}}function _C(o,r,i){let c=r.port,a=r.host,u=q5(),t=(0,ve.join)(pa,"manifest.db");i.debug("[manifest] Local mode \u2014 starting embedded server..."),Uc(o,a,c,u,i),Dc(u,i);let e;try{e=require("./server")}catch(A){let y=A instanceof Error?A.message:String(A);i.error(`[manifest] Failed to load embedded server.
|
|
21
21
|
Error: ${y}
|
|
22
22
|
This is a packaging error \u2014 please reinstall the manifest plugin.`);return}let n=`http://${a}:${c}/otlp`,s={...r,apiKey:u,endpoint:n},{tracer:l,meter:E}=tn(s,i);an(E),un(o,l,s,i),on(o,s,i),typeof o.registerTool=="function"&&cn(o,s,i),i.info(`[manifest] \u{1F99A} View your Manifest Dashboard -> http://${a}:${c}`),o.registerService({id:"manifest-local",start:async()=>{try{await e.start({port:c,host:a,dbPath:t,quiet:!0}),i.info(`[manifest] Local server running on http://${a}:${c}`),i.info(`[manifest] Dashboard: http://${a}:${c}`),i.info(`[manifest] DB: ${t}`)}catch(A){let y=A instanceof Error?A.message:String(A);y.includes("EADDRINUSE")||y.includes("address already in use")?await W5(a,c)?i.info(`[manifest] Reusing existing server at http://${a}:${c}`):i.error(`[manifest] Port ${c} is already in use by another process.
|
|
23
23
|
Change it with: openclaw config set plugins.entries.manifest.config.port ${c+1}
|
|
24
24
|
Then restart the gateway.`):i.error(`[manifest] Failed to start local server: ${y}
|
|
25
25
|
Try reinstalling: openclaw plugins install manifest
|
|
26
|
-
Then restart: openclaw gateway restart`)}},stop:async()=>{await rn(i)}})}var TC=require("crypto"),Ve=require("os");function EC(){return{optedOut:__fromEnv.MANIFEST_TELEMETRY_OPTOUT==="1"||__fromEnv.MANIFEST_TELEMETRY_OPTOUT==="true",packageVersion:"5.10.
|
|
26
|
+
Then restart: openclaw gateway restart`)}},stop:async()=>{await rn(i)}})}var TC=require("crypto"),Ve=require("os");function EC(){return{optedOut:__fromEnv.MANIFEST_TELEMETRY_OPTOUT==="1"||__fromEnv.MANIFEST_TELEMETRY_OPTOUT==="true",packageVersion:"5.10.3"}}var z5="https://eu.i.posthog.com",J5="phc_g5pLOu5bBRjhVJBwAsx0eCzJFWq0cri2TyVLQLxf045";function X5(){let o=`${(0,Ve.hostname)()}-${(0,Ve.platform)()}-${(0,Ve.arch)()}`;return(0,TC.createHash)("sha256").update(o).digest("hex").slice(0,16)}function Vc(o,r){let i=EC();if(i.optedOut)return;let c={api_key:J5,event:o,properties:{distinct_id:X5(),os:(0,Ve.platform)(),os_version:(0,Ve.release)(),node_version:process.versions.node,package_version:i.packageVersion,...r},timestamp:new Date().toISOString()};fetch(`${z5}/capture`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify(c)}).catch(()=>{})}module.exports={id:"manifest",name:"Manifest \u2014 Agent Observability",register(o){let r=o.logger||{info:(...e)=>console.log(...e),debug:()=>{},error:(...e)=>console.error(...e),warn:(...e)=>console.warn(...e)},i=Hc(o.pluginConfig);if(i.mode!=="dev"&&(Vc("plugin_registered"),Vc("plugin_mode_selected",{mode:i.mode})),i.mode==="local"){_C(o,i,r);return}let c=kc(i);if(c){i.mode==="cloud"&&!i.apiKey?r.info(`[manifest] Cloud mode requires an API key:
|
|
27
27
|
openclaw config set plugins.entries.manifest.config.apiKey mnfst_YOUR_KEY
|
|
28
28
|
openclaw gateway restart
|
|
29
29
|
|