@clawtrail/context-graph-openclaw 0.5.2 → 0.7.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.
@@ -8,6 +8,8 @@ export interface ChainStateSubmission {
8
8
  export interface ChainState {
9
9
  nextBlockNumber: number;
10
10
  lastSubmission: ChainStateSubmission | null;
11
+ /** Epoch ms of the last successfully processed time window (submitted or idle-skipped). */
12
+ lastSubmittedAt: number | null;
11
13
  }
12
14
  /** Load chain state from disk. Returns default state if file doesn't exist. */
13
15
  export declare function loadChainState(contextGraphRoot: string): Promise<ChainState>;
@@ -1 +1 @@
1
- {"version":3,"file":"chain-state.d.ts","sourceRoot":"","sources":["../src/chain-state.ts"],"names":[],"mappings":"AAWA,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;CAC7C;AAWD,+EAA+E;AAC/E,wBAAsB,cAAc,CAAC,gBAAgB,EAAE,MAAM,GAAG,OAAO,CAAC,UAAU,CAAC,CAYlF;AAED,6DAA6D;AAC7D,wBAAsB,cAAc,CAClC,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC,CAIf"}
1
+ {"version":3,"file":"chain-state.d.ts","sourceRoot":"","sources":["../src/chain-state.ts"],"names":[],"mappings":"AAeA,MAAM,WAAW,oBAAoB;IACnC,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,UAAU;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,oBAAoB,GAAG,IAAI,CAAC;IAC5C,2FAA2F;IAC3F,eAAe,EAAE,MAAM,GAAG,IAAI,CAAC;CAChC;AAYD,+EAA+E;AAC/E,wBAAsB,cAAc,CAClC,gBAAgB,EAAE,MAAM,GACvB,OAAO,CAAC,UAAU,CAAC,CAmBrB;AAED,6DAA6D;AAC7D,wBAAsB,cAAc,CAClC,gBAAgB,EAAE,MAAM,EACxB,KAAK,EAAE,UAAU,GAChB,OAAO,CAAC,IAAI,CAAC,CAIf"}
@@ -5,25 +5,35 @@
5
5
  * survives process restarts. Stores the last submission's ID, merkle root,
6
6
  * payload hash, and block number for building the next block's
7
7
  * `cg:previousBlock` reference.
8
+ *
9
+ * Also tracks `lastSubmittedAt` — the epoch-ms timestamp of the last
10
+ * successful block submission (or the last time-window that was processed).
11
+ * Used by the catch-up system to detect gaps and submit retroactive blocks.
8
12
  */
9
- import { readFile, writeFile, mkdir } from 'node:fs/promises';
10
- import { join, dirname } from 'node:path';
13
+ import { readFile, writeFile, mkdir } from "node:fs/promises";
14
+ import { join, dirname } from "node:path";
11
15
  const DEFAULT_STATE = {
12
16
  nextBlockNumber: 1,
13
17
  lastSubmission: null,
18
+ lastSubmittedAt: null,
14
19
  };
15
20
  function chainStatePath(contextGraphRoot) {
16
- return join(contextGraphRoot, 'chain-state.json');
21
+ return join(contextGraphRoot, "chain-state.json");
17
22
  }
18
23
  /** Load chain state from disk. Returns default state if file doesn't exist. */
19
24
  export async function loadChainState(contextGraphRoot) {
20
25
  try {
21
- const raw = await readFile(chainStatePath(contextGraphRoot), 'utf-8');
26
+ const raw = await readFile(chainStatePath(contextGraphRoot), "utf-8");
22
27
  const parsed = JSON.parse(raw);
23
28
  // Validate essential fields
24
- if (typeof parsed.nextBlockNumber !== 'number' || parsed.nextBlockNumber < 1) {
29
+ if (typeof parsed.nextBlockNumber !== "number" ||
30
+ parsed.nextBlockNumber < 1) {
25
31
  return DEFAULT_STATE;
26
32
  }
33
+ // Backfill lastSubmittedAt for existing chain-state files
34
+ if (typeof parsed.lastSubmittedAt !== "number") {
35
+ parsed.lastSubmittedAt = null;
36
+ }
27
37
  return parsed;
28
38
  }
29
39
  catch {
@@ -34,6 +44,6 @@ export async function loadChainState(contextGraphRoot) {
34
44
  export async function saveChainState(contextGraphRoot, state) {
35
45
  const filePath = chainStatePath(contextGraphRoot);
36
46
  await mkdir(dirname(filePath), { recursive: true });
37
- await writeFile(filePath, JSON.stringify(state, null, 2), 'utf-8');
47
+ await writeFile(filePath, JSON.stringify(state, null, 2), "utf-8");
38
48
  }
39
49
  //# sourceMappingURL=chain-state.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"chain-state.js","sourceRoot":"","sources":["../src/chain-state.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAe1C,MAAM,aAAa,GAAe;IAChC,eAAe,EAAE,CAAC;IAClB,cAAc,EAAE,IAAI;CACrB,CAAC;AAEF,SAAS,cAAc,CAAC,gBAAwB;IAC9C,OAAO,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;AACpD,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,gBAAwB;IAC3D,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;QAC7C,4BAA4B;QAC5B,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,IAAI,MAAM,CAAC,eAAe,GAAG,CAAC,EAAE,CAAC;YAC7E,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,aAAa,CAAC;IACvB,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,gBAAwB,EACxB,KAAiB;IAEjB,MAAM,QAAQ,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAClD,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC"}
1
+ {"version":3,"file":"chain-state.js","sourceRoot":"","sources":["../src/chain-state.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,kBAAkB,CAAC;AAC9D,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiB1C,MAAM,aAAa,GAAe;IAChC,eAAe,EAAE,CAAC;IAClB,cAAc,EAAE,IAAI;IACpB,eAAe,EAAE,IAAI;CACtB,CAAC;AAEF,SAAS,cAAc,CAAC,gBAAwB;IAC9C,OAAO,IAAI,CAAC,gBAAgB,EAAE,kBAAkB,CAAC,CAAC;AACpD,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,gBAAwB;IAExB,IAAI,CAAC;QACH,MAAM,GAAG,GAAG,MAAM,QAAQ,CAAC,cAAc,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC,CAAC;QACtE,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAe,CAAC;QAC7C,4BAA4B;QAC5B,IACE,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ;YAC1C,MAAM,CAAC,eAAe,GAAG,CAAC,EAC1B,CAAC;YACD,OAAO,aAAa,CAAC;QACvB,CAAC;QACD,0DAA0D;QAC1D,IAAI,OAAO,MAAM,CAAC,eAAe,KAAK,QAAQ,EAAE,CAAC;YAC/C,MAAM,CAAC,eAAe,GAAG,IAAI,CAAC;QAChC,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,aAAa,CAAC;IACvB,CAAC;AACH,CAAC;AAED,6DAA6D;AAC7D,MAAM,CAAC,KAAK,UAAU,cAAc,CAClC,gBAAwB,EACxB,KAAiB;IAEjB,MAAM,QAAQ,GAAG,cAAc,CAAC,gBAAgB,CAAC,CAAC;IAClD,MAAM,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACpD,MAAM,SAAS,CAAC,QAAQ,EAAE,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC;AACrE,CAAC"}
@@ -1,5 +1,5 @@
1
1
  /** Hook event names as defined in OpenClaw's PluginHookName type */
2
- type HookName = 'message_received' | 'tool_result_persist' | 'after_tool_call' | 'session_start' | 'session_end' | 'before_reset' | 'agent_end' | 'gateway_stop' | 'llm_output' | 'llm_input';
2
+ type HookName = "message_received" | "tool_result_persist" | "after_tool_call" | "session_start" | "session_end" | "before_reset" | "agent_end" | "gateway_stop" | "llm_output" | "llm_input";
3
3
  interface PluginApi {
4
4
  config?: {
5
5
  plugins?: {
@@ -1 +1 @@
1
- {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAgBA,oEAAoE;AACpE,KAAK,QAAQ,GACT,kBAAkB,GAClB,qBAAqB,GACrB,iBAAiB,GACjB,eAAe,GACf,aAAa,GACb,cAAc,GACd,WAAW,GACX,cAAc,GACd,YAAY,GACZ,WAAW,CAAC;AAEhB,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,EAAE,MAAM,CACd,MAAM,EACN;gBAAE,OAAO,CAAC,EAAE,OAAO,CAAC;gBAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;aAAE,CACxD,CAAC;SACH,CAAC;KACH,CAAC;IACF,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;KACjC,CAAC;IACF,wEAAwE;IACxE,YAAY,CAAC,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACjE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7C,IAAI,CAAC;IACR,iEAAiE;IACjE,EAAE,CAAC,CACD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACrD,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3B,IAAI,CAAC;IACR,YAAY,CAAC,CAAC,IAAI,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,EAAE,CACP,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACzB,OAAO,CAAC,OAAO,CAAC,CAAC;KACvB,GAAG,IAAI,CAAC;CACV;AAsND,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAuUrD"}
1
+ {"version":3,"file":"register.d.ts","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"AAqBA,oEAAoE;AACpE,KAAK,QAAQ,GACT,kBAAkB,GAClB,qBAAqB,GACrB,iBAAiB,GACjB,eAAe,GACf,aAAa,GACb,cAAc,GACd,WAAW,GACX,cAAc,GACd,YAAY,GACZ,WAAW,CAAC;AAEhB,UAAU,SAAS;IACjB,MAAM,CAAC,EAAE;QACP,OAAO,CAAC,EAAE;YACR,OAAO,CAAC,EAAE,MAAM,CACd,MAAM,EACN;gBAAE,OAAO,CAAC,EAAE,OAAO,CAAC;gBAAC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;aAAE,CACxD,CAAC;SACH,CAAC;KACH,CAAC;IACF,MAAM,CAAC,EAAE;QACP,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/B,IAAI,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;QAC/B,KAAK,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,GAAG,IAAI,CAAC;KACjC,CAAC;IACF,wEAAwE;IACxE,YAAY,CAAC,CACX,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACjE,IAAI,CAAC,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAC7C,IAAI,CAAC;IACR,iEAAiE;IACjE,EAAE,CAAC,CACD,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,EAAE,KAAK,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,EACrD,IAAI,CAAC,EAAE;QAAE,QAAQ,CAAC,EAAE,MAAM,CAAA;KAAE,GAC3B,IAAI,CAAC;IACR,YAAY,CAAC,CAAC,IAAI,EAAE;QAClB,IAAI,EAAE,MAAM,CAAC;QACb,WAAW,EAAE,MAAM,CAAC;QACpB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACpC,OAAO,EAAE,CACP,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC/B,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KACzB,OAAO,CAAC,OAAO,CAAC,CAAC;KACvB,GAAG,IAAI,CAAC;CACV;AAycD,MAAM,CAAC,OAAO,UAAU,QAAQ,CAAC,GAAG,EAAE,SAAS,GAAG,IAAI,CAwWrD"}
package/dist/register.js CHANGED
@@ -4,16 +4,29 @@
4
4
  * Wires the context-graph adapter into OpenClaw's hook-based plugin system.
5
5
  * Registers hooks for session lifecycle approximation and tool call capture,
6
6
  * and optionally auto-submits signed provenance to the ClawTrail API.
7
+ *
8
+ * Session types:
9
+ * - active: Agent made real decisions/tool calls during this window
10
+ * - idle: Agent was online but did nothing (0 events) — proves uptime
11
+ * - offline: Retroactive catch-up block — agent was down during this window
7
12
  */
8
- import { createHash } from 'node:crypto';
9
- import { resolve } from 'node:path';
10
- import { OpenClawAdapter } from './OpenClawAdapter.js';
11
- import { loadChainState, saveChainState } from './chain-state.js';
13
+ import { createHash } from "node:crypto";
14
+ import { resolve } from "node:path";
15
+ import { OpenClawAdapter } from "./OpenClawAdapter.js";
16
+ import { loadChainState, saveChainState } from "./chain-state.js";
12
17
  // ── Helpers ──────────────────────────────────────────────────────────
13
- const TAG = '[context-graph]';
18
+ const TAG = "[context-graph]";
14
19
  function log(api, level, ...args) {
15
20
  // Concatenate into a single string — OpenClaw's logger only captures the first arg
16
- const msg = TAG + ' ' + args.map(a => a instanceof Error ? a.message : typeof a === 'string' ? a : JSON.stringify(a)).join(' ');
21
+ const msg = TAG +
22
+ " " +
23
+ args
24
+ .map((a) => a instanceof Error
25
+ ? a.message
26
+ : typeof a === "string"
27
+ ? a
28
+ : JSON.stringify(a))
29
+ .join(" ");
17
30
  if (api.logger?.[level]) {
18
31
  api.logger[level](msg);
19
32
  }
@@ -37,22 +50,25 @@ function deriveBaseUrl(submitUrl) {
37
50
  // submitUrl is like https://sapi.clawtrail.ai/ct/api/context-graph/submit
38
51
  // We need https://sapi.clawtrail.ai/ct
39
52
  const url = new URL(submitUrl);
40
- const pathParts = url.pathname.split('/api/');
41
- url.pathname = pathParts[0] || '';
42
- return url.toString().replace(/\/$/, '');
53
+ const pathParts = url.pathname.split("/api/");
54
+ url.pathname = pathParts[0] || "";
55
+ return url.toString().replace(/\/$/, "");
43
56
  }
44
57
  /** SHA-256 hash for privacy — never store raw reasoning text */
45
58
  function sha256(input) {
46
- return createHash('sha256').update(input).digest('hex');
59
+ return createHash("sha256").update(input).digest("hex");
47
60
  }
48
61
  /**
49
- * Fetch agent decisions from ClawTrail API since a given timestamp.
62
+ * Fetch agent decisions from ClawTrail API for a time window.
50
63
  * These are the agent's real platform actions (votes, comments, etc.)
51
64
  * logged via POST /api/agents/me/decisions during heartbeat cycles.
52
65
  */
53
- async function fetchDecisions(baseUrl, apiKey, agentId, sinceMs) {
66
+ async function fetchDecisions(baseUrl, apiKey, agentId, sinceMs, untilMs) {
54
67
  try {
55
- const url = `${baseUrl}/api/agents/${encodeURIComponent(agentId)}/decisions?since=${sinceMs}&limit=100`;
68
+ let url = `${baseUrl}/api/agents/${encodeURIComponent(agentId)}/decisions?since=${sinceMs}&limit=100`;
69
+ if (untilMs != null) {
70
+ url += `&until=${untilMs}`;
71
+ }
56
72
  const response = await fetch(url, {
57
73
  headers: { Authorization: `Bearer ${apiKey}` },
58
74
  signal: AbortSignal.timeout(10_000),
@@ -61,11 +77,11 @@ async function fetchDecisions(baseUrl, apiKey, agentId, sinceMs) {
61
77
  return [];
62
78
  const data = (await response.json());
63
79
  return (data.decisions ?? []).map((d) => ({
64
- action: d.action || 'unknown',
80
+ action: d.action || "unknown",
65
81
  target_type: d.target_type,
66
82
  target_id: d.target_id,
67
83
  target_title: d.target_title,
68
- decision: d.decision || '',
84
+ decision: d.decision || "",
69
85
  reasoning: d.reasoning,
70
86
  created_at: d.created_at || Date.now(),
71
87
  }));
@@ -74,7 +90,46 @@ async function fetchDecisions(baseUrl, apiKey, agentId, sinceMs) {
74
90
  return [];
75
91
  }
76
92
  }
77
- async function submitToClawTrail(adapter, sessionId, submitUrl, apiKey, api, cgRoot) {
93
+ /**
94
+ * Fetch ALL decisions for a time range, paginating through the API.
95
+ * Used by the catch-up system to get decisions for potentially long gaps.
96
+ */
97
+ async function fetchAllDecisions(baseUrl, apiKey, agentId, sinceMs, untilMs) {
98
+ const all = [];
99
+ let page = 1;
100
+ const MAX_PAGES = 50; // safety limit: 50 * 100 = 5000 decisions max
101
+ while (page <= MAX_PAGES) {
102
+ try {
103
+ const url = `${baseUrl}/api/agents/${encodeURIComponent(agentId)}/decisions?since=${sinceMs}&until=${untilMs}&limit=100&page=${page}`;
104
+ const response = await fetch(url, {
105
+ headers: { Authorization: `Bearer ${apiKey}` },
106
+ signal: AbortSignal.timeout(15_000),
107
+ });
108
+ if (!response.ok)
109
+ break;
110
+ const data = (await response.json());
111
+ const decisions = (data.decisions ?? []).map((d) => ({
112
+ action: d.action || "unknown",
113
+ target_type: d.target_type,
114
+ target_id: d.target_id,
115
+ target_title: d.target_title,
116
+ decision: d.decision || "",
117
+ reasoning: d.reasoning,
118
+ created_at: d.created_at || Date.now(),
119
+ }));
120
+ all.push(...decisions);
121
+ // If fewer than limit returned, we've exhausted this range
122
+ if (decisions.length < 100)
123
+ break;
124
+ page++;
125
+ }
126
+ catch {
127
+ break;
128
+ }
129
+ }
130
+ return all;
131
+ }
132
+ async function submitToClawTrail(adapter, sessionId, submitUrl, apiKey, api, cgRoot, sessionType = "active") {
78
133
  const MAX_RETRIES = 1;
79
134
  const RETRY_DELAY = 2000;
80
135
  // Decisions are now fetched and logged in endSessionAndSubmit() BEFORE the
@@ -83,6 +138,7 @@ async function submitToClawTrail(adapter, sessionId, submitUrl, apiKey, api, cgR
83
138
  const chainState = await loadChainState(cgRoot);
84
139
  const chainOpts = {
85
140
  blockNumber: chainState.nextBlockNumber,
141
+ sessionType,
86
142
  };
87
143
  if (chainState.lastSubmission) {
88
144
  chainOpts.previousBlock = {
@@ -90,26 +146,29 @@ async function submitToClawTrail(adapter, sessionId, submitUrl, apiKey, api, cgR
90
146
  submissionId: chainState.lastSubmission.submissionId,
91
147
  merkleRoot: chainState.lastSubmission.merkleRoot,
92
148
  payloadHash: chainState.lastSubmission.payloadHash,
93
- ...(chainState.lastSubmission.dkgUal ? { dkgUal: chainState.lastSubmission.dkgUal } : {}),
149
+ ...(chainState.lastSubmission.dkgUal
150
+ ? { dkgUal: chainState.lastSubmission.dkgUal }
151
+ : {}),
94
152
  };
95
153
  }
96
154
  for (let attempt = 0; attempt <= MAX_RETRIES; attempt++) {
97
155
  try {
98
156
  const { signed } = await adapter.summarizeAndSign(sessionId, chainOpts);
99
157
  if (!signed) {
100
- log(api, 'warn', 'No signed submission produced — skipping auto-submit');
158
+ log(api, "warn", "No signed submission produced — skipping auto-submit");
101
159
  return;
102
160
  }
103
- // Include chain metadata in the submission body
161
+ // Include chain metadata and session type in the submission body
104
162
  const submissionBody = {
105
163
  ...signed,
106
164
  chainBlockNumber: chainOpts.blockNumber,
107
165
  previousSubmissionId: chainState.lastSubmission?.submissionId ?? null,
166
+ sessionType,
108
167
  };
109
168
  const response = await fetch(submitUrl, {
110
- method: 'POST',
169
+ method: "POST",
111
170
  headers: {
112
- 'Content-Type': 'application/json',
171
+ "Content-Type": "application/json",
113
172
  Authorization: `Bearer ${apiKey}`,
114
173
  },
115
174
  body: JSON.stringify(submissionBody),
@@ -117,7 +176,7 @@ async function submitToClawTrail(adapter, sessionId, submitUrl, apiKey, api, cgR
117
176
  });
118
177
  if (response.ok) {
119
178
  const result = (await response.json());
120
- log(api, 'info', `Submitted session ${sessionId}:`, `submissionId=${result.submissionId},`, `block=#${result.chainBlockNumber ?? chainOpts.blockNumber},`, `claims=${result.claimsExtracted}`);
179
+ log(api, "info", `Submitted session ${sessionId}:`, `type=${sessionType},`, `submissionId=${result.submissionId},`, `block=#${result.chainBlockNumber ?? chainOpts.blockNumber},`, `claims=${result.claimsExtracted}`);
121
180
  // Save chain state for next submission
122
181
  if (result.submissionId) {
123
182
  await saveChainState(cgRoot, {
@@ -128,34 +187,125 @@ async function submitToClawTrail(adapter, sessionId, submitUrl, apiKey, api, cgR
128
187
  payloadHash: signed.payloadHash,
129
188
  blockNumber: result.chainBlockNumber ?? chainOpts.blockNumber ?? 1,
130
189
  },
190
+ lastSubmittedAt: Date.now(),
131
191
  });
132
192
  }
133
193
  return;
134
194
  }
135
- const errorBody = await response.text().catch(() => '');
136
- log(api, 'warn', `Submit failed (HTTP ${response.status}):`, errorBody.slice(0, 200));
195
+ const errorBody = await response.text().catch(() => "");
196
+ log(api, "warn", `Submit failed (HTTP ${response.status}):`, errorBody.slice(0, 200));
137
197
  // Don't retry client errors (bad request, auth failure, etc.)
138
198
  if (response.status >= 400 && response.status < 500)
139
199
  return;
140
200
  }
141
201
  catch (err) {
142
- log(api, 'warn', `Submit error (attempt ${attempt + 1}):`, err instanceof Error ? err.message : String(err));
202
+ log(api, "warn", `Submit error (attempt ${attempt + 1}):`, err instanceof Error ? err.message : String(err));
143
203
  }
144
204
  if (attempt < MAX_RETRIES) {
145
205
  await new Promise((r) => setTimeout(r, RETRY_DELAY));
146
206
  }
147
207
  }
148
208
  }
209
+ // ── Catch-Up System ─────────────────────────────────────────────────
210
+ /**
211
+ * Detect gaps in the submission chain and submit retroactive blocks.
212
+ *
213
+ * When the agent was offline (process not running) or the context graph
214
+ * plugin failed to submit, there will be a gap between `lastSubmittedAt`
215
+ * and the current time. This function:
216
+ *
217
+ * 1. Detects the gap duration
218
+ * 2. Fetches all decisions from the API for the missed period
219
+ * 3. Groups decisions into 5-minute windows
220
+ * 4. For each window: creates a session, logs events (or none), submits
221
+ * - Windows WITH decisions → 'active' blocks
222
+ * - Windows WITHOUT decisions → 'offline' blocks (proves downtime)
223
+ *
224
+ * Returns true if catch-up was performed, false if no gap detected.
225
+ */
226
+ async function runCatchUp(adapter, api, cfg, cgRoot, windowMs) {
227
+ const submitUrl = cfg.submitUrl;
228
+ const apiKey = cfg.apiKey;
229
+ if (!submitUrl || !apiKey)
230
+ return false;
231
+ const chainState = await loadChainState(cgRoot);
232
+ // No history — can't determine gap. Let normal flow handle first block.
233
+ if (!chainState.lastSubmittedAt)
234
+ return false;
235
+ const now = Date.now();
236
+ const gapMs = now - chainState.lastSubmittedAt;
237
+ // Only catch up if gap is at least 2 windows (10+ minutes).
238
+ // Single-window gaps are handled by normal session recycling.
239
+ if (gapMs < windowMs * 2)
240
+ return false;
241
+ const missedWindows = Math.floor(gapMs / windowMs);
242
+ log(api, "info", `Catch-up: detected gap of ${Math.round(gapMs / 60_000)}min (${missedWindows} windows) since last submission`);
243
+ // Fetch all decisions for the missed period
244
+ const baseUrl = deriveBaseUrl(submitUrl);
245
+ const agentIdStr = cfg.agentId || "unknown";
246
+ const allDecisions = await fetchAllDecisions(baseUrl, apiKey, agentIdStr, chainState.lastSubmittedAt, now);
247
+ log(api, "info", `Catch-up: found ${allDecisions.length} decisions in missed period`);
248
+ // Cap catch-up at 100 blocks per run to avoid blocking the process too long.
249
+ // If gap is bigger, remaining blocks will be caught up on next cycle.
250
+ const MAX_CATCHUP_BLOCKS = 100;
251
+ const blocksToSubmit = Math.min(missedWindows, MAX_CATCHUP_BLOCKS);
252
+ let submitted = 0;
253
+ for (let i = 0; i < blocksToSubmit; i++) {
254
+ const windowStart = chainState.lastSubmittedAt + i * windowMs;
255
+ const windowEnd = windowStart + windowMs;
256
+ // Find decisions that fall within this window
257
+ const windowDecisions = allDecisions.filter((d) => d.created_at >= windowStart && d.created_at < windowEnd);
258
+ const sessionType = windowDecisions.length > 0 ? "active" : "offline";
259
+ try {
260
+ // Create ephemeral session for this catch-up block
261
+ const sessionKey = `catchup:${windowStart}`;
262
+ const agentId = cfg.agentId || undefined;
263
+ const ctx = createSessionContext(sessionKey, `catch-up:${sessionType}`, agentId);
264
+ const session = await adapter.onSessionStart(ctx);
265
+ // Log decisions as AGENT_ACTION events (if any)
266
+ for (const d of windowDecisions) {
267
+ await adapter.logExternalEvent(session.meta.session_id, {
268
+ type: "AGENT_ACTION",
269
+ status: "SUCCEEDED",
270
+ data: {
271
+ action: d.action,
272
+ target_type: d.target_type ?? null,
273
+ target_id: d.target_id ?? null,
274
+ decision: d.decision,
275
+ reasoning_hash: d.reasoning ? sha256(d.reasoning) : null,
276
+ },
277
+ });
278
+ }
279
+ // End session
280
+ await adapter.onSessionEnd(ctx);
281
+ // Submit
282
+ await submitToClawTrail(adapter, session.meta.session_id, submitUrl, apiKey, api, cgRoot, sessionType);
283
+ submitted++;
284
+ // Brief delay to avoid hammering the API
285
+ if (i < blocksToSubmit - 1) {
286
+ await new Promise((r) => setTimeout(r, 300));
287
+ }
288
+ }
289
+ catch (err) {
290
+ log(api, "warn", `Catch-up block ${i + 1} failed:`, err);
291
+ // Stop catch-up on first failure — chain state is already saved for
292
+ // the last successful block, so next run picks up from there
293
+ break;
294
+ }
295
+ }
296
+ log(api, "info", `Catch-up: submitted ${submitted}/${blocksToSubmit} blocks (${allDecisions.length} decisions total)`);
297
+ return submitted > 0;
298
+ }
149
299
  // ── Plugin Register Function ────────────────────────────────────────
150
300
  export default function register(api) {
151
301
  // 1. Read config
152
- const pluginEntry = api.config?.plugins?.entries?.['context-graph'];
302
+ const pluginEntry = api.config?.plugins?.entries?.["context-graph"];
153
303
  const cfg = (pluginEntry?.config ?? {});
154
304
  if (cfg.enabled === false)
155
305
  return;
156
306
  // 2. Create adapter — resolve contextGraphRoot to absolute path so it
157
307
  // survives any cwd changes during tool call execution.
158
- const cgRoot = resolve(cfg.contextGraphRoot ?? '.context-graph');
308
+ const cgRoot = resolve(cfg.contextGraphRoot ?? ".context-graph");
159
309
  const adapter = new OpenClawAdapter({
160
310
  enabled: true,
161
311
  contextGraphRoot: cgRoot,
@@ -168,6 +318,8 @@ export default function register(api) {
168
318
  });
169
319
  // 3. Session map — keyed by OpenClaw sessionKey
170
320
  const sessions = new Map();
321
+ // Track whether catch-up has run this process lifecycle
322
+ let catchUpDone = false;
171
323
  // Helper: lazily create a session if one doesn't exist yet.
172
324
  // The embedded heartbeat agent doesn't fire session_start, so we
173
325
  // create a session on the first after_tool_call or llm_output event.
@@ -178,7 +330,7 @@ export default function register(api) {
178
330
  try {
179
331
  const sessionKey = `auto:${Date.now()}`;
180
332
  const agentId = cfg.agentId || undefined;
181
- const ctx = createSessionContext(sessionKey, 'auto-session', agentId);
333
+ const ctx = createSessionContext(sessionKey, "auto-session", agentId);
182
334
  const session = await adapter.onSessionStart(ctx);
183
335
  const state = {
184
336
  ctx,
@@ -187,15 +339,15 @@ export default function register(api) {
187
339
  eventCount: 0,
188
340
  };
189
341
  sessions.set(sessionKey, state);
190
- log(api, 'info', `Session auto-started: ${session.meta.session_id}`);
342
+ log(api, "info", `Session auto-started: ${session.meta.session_id}`);
191
343
  return state;
192
344
  }
193
345
  catch (err) {
194
- log(api, 'warn', 'Failed to auto-start session:', err);
346
+ log(api, "warn", "Failed to auto-start session:", err);
195
347
  return undefined;
196
348
  }
197
349
  }
198
- // Helper: end session and optionally submit
350
+ // Helper: end session and submit (always — idle blocks are valuable)
199
351
  async function endSessionAndSubmit(sessionKey) {
200
352
  const state = sessions.get(sessionKey);
201
353
  if (!state)
@@ -211,15 +363,15 @@ export default function register(api) {
211
363
  if (autoSubmit && submitUrl && apiKey) {
212
364
  try {
213
365
  const baseUrl = deriveBaseUrl(submitUrl);
214
- const agentIdStr = cfg.agentId || 'unknown';
366
+ const agentIdStr = cfg.agentId || "unknown";
215
367
  const decisions = await fetchDecisions(baseUrl, apiKey, agentIdStr, state.startedAt);
216
368
  if (decisions.length > 0) {
217
- log(api, 'info', `Fetched ${decisions.length} decisions for session ${state.sessionId}`);
369
+ log(api, "info", `Fetched ${decisions.length} decisions for session ${state.sessionId}`);
218
370
  }
219
371
  for (const d of decisions) {
220
372
  await adapter.logExternalEvent(state.sessionId, {
221
- type: 'AGENT_ACTION',
222
- status: 'SUCCEEDED',
373
+ type: "AGENT_ACTION",
374
+ status: "SUCCEEDED",
223
375
  data: {
224
376
  action: d.action,
225
377
  target_type: d.target_type ?? null,
@@ -232,34 +384,28 @@ export default function register(api) {
232
384
  }
233
385
  }
234
386
  catch (err) {
235
- log(api, 'warn', 'Failed to fetch decisions:', err);
387
+ log(api, "warn", "Failed to fetch decisions:", err);
236
388
  }
237
389
  }
238
- // Skip submission for empty sessions no tool events AND no decisions
239
- // means the agent did nothing (e.g. LLM quota exhausted, API errors).
240
- // Avoids cluttering the chain with 0-action blocks.
390
+ // Determine session type: active (has events/decisions) or idle (online but nothing happened)
241
391
  const totalEvents = state.eventCount + decisionsLogged;
242
- if (totalEvents === 0) {
243
- log(api, 'info', `Skipping empty session ${state.sessionId} (0 events, 0 decisions)`);
244
- await adapter.onSessionEnd(state.ctx);
245
- return;
246
- }
392
+ const sessionType = totalEvents > 0 ? "active" : "idle";
247
393
  // Now end the session — marks it COMPLETED
248
394
  await adapter.onSessionEnd(state.ctx);
249
395
  if (autoSubmit && submitUrl && apiKey) {
250
- await submitToClawTrail(adapter, state.sessionId, submitUrl, apiKey, api, cgRoot);
396
+ await submitToClawTrail(adapter, state.sessionId, submitUrl, apiKey, api, cgRoot, sessionType);
251
397
  }
252
398
  }
253
399
  catch (err) {
254
- log(api, 'error', 'Error ending session:', err);
400
+ log(api, "error", "Error ending session:", err);
255
401
  }
256
402
  finally {
257
403
  sessions.delete(sessionKey);
258
404
  }
259
405
  }
260
406
  // ── Require api.on() — the typed hook API (OpenClaw 2026.2+) ───────
261
- if (typeof api.on !== 'function') {
262
- log(api, 'warn', 'api.on() not available — hooks will not fire. Upgrade OpenClaw to 2026.2+');
407
+ if (typeof api.on !== "function") {
408
+ log(api, "warn", "api.on() not available — hooks will not fire. Upgrade OpenClaw to 2026.2+");
263
409
  return;
264
410
  }
265
411
  const on = api.on; // bind for TS narrowing
@@ -267,15 +413,17 @@ export default function register(api) {
267
413
  // OpenClaw fires session_start(event, ctx) where:
268
414
  // event = { sessionId, resumedFrom? }
269
415
  // ctx = { sessionId, agentId }
270
- on('session_start', async (...args) => {
416
+ on("session_start", async (...args) => {
271
417
  try {
272
418
  const event = (args[0] ?? {});
273
419
  const hookCtx = (args[1] ?? {});
274
- const sessionId = hookCtx.sessionId || event.sessionId || 'default';
420
+ const sessionId = hookCtx.sessionId ||
421
+ event.sessionId ||
422
+ "default";
275
423
  const agentId = hookCtx.agentId || cfg.agentId || undefined;
276
424
  if (sessions.has(sessionId))
277
425
  return;
278
- const ctx = createSessionContext(sessionId, 'session', agentId);
426
+ const ctx = createSessionContext(sessionId, "session", agentId);
279
427
  const session = await adapter.onSessionStart(ctx);
280
428
  sessions.set(sessionId, {
281
429
  ctx,
@@ -283,28 +431,28 @@ export default function register(api) {
283
431
  startedAt: Date.now(),
284
432
  eventCount: 0,
285
433
  });
286
- log(api, 'info', `Session started: ${session.meta.session_id}`);
434
+ log(api, "info", `Session started: ${session.meta.session_id}`);
287
435
  }
288
436
  catch (err) {
289
- log(api, 'warn', 'Failed to start session:', err);
437
+ log(api, "warn", "Failed to start session:", err);
290
438
  }
291
439
  });
292
440
  // ── Hook: after_tool_call → capture tool call (async) ─────────────
293
441
  // OpenClaw fires after_tool_call(event, ctx) where:
294
442
  // event = { toolName, params, result } or { toolName, params, error }
295
443
  // ctx = { toolName }
296
- on('after_tool_call', async (...args) => {
444
+ on("after_tool_call", async (...args) => {
297
445
  try {
298
446
  const event = (args[0] ?? {});
299
447
  // Find or lazily create a session
300
448
  const state = await ensureSession();
301
449
  if (!state)
302
450
  return;
303
- const toolName = event.toolName || 'unknown';
451
+ const toolName = event.toolName || "unknown";
304
452
  const params = (event.params ?? {});
305
453
  const result = (event.result ?? {});
306
454
  const error = event.error
307
- ? typeof event.error === 'string'
455
+ ? typeof event.error === "string"
308
456
  ? new Error(event.error)
309
457
  : event.error instanceof Error
310
458
  ? event.error
@@ -320,17 +468,17 @@ export default function register(api) {
320
468
  state.eventCount++;
321
469
  }
322
470
  catch (err) {
323
- log(api, 'warn', 'Failed to capture tool result:', err);
471
+ log(api, "warn", "Failed to capture tool result:", err);
324
472
  }
325
473
  });
326
474
  // ── Hook: llm_output → capture HTTP references from LLM text ──────
327
475
  // OpenClaw fires llm_output(event, ctx) where:
328
476
  // event = { content, model?, usage?, toolCalls? }
329
477
  // ctx = { sessionId?, agentId? }
330
- on('llm_output', async (...args) => {
478
+ on("llm_output", async (...args) => {
331
479
  try {
332
480
  const event = (args[0] ?? {});
333
- const content = event.content || '';
481
+ const content = event.content || "";
334
482
  if (!content)
335
483
  return;
336
484
  // Find or lazily create a session
@@ -341,11 +489,15 @@ export default function register(api) {
341
489
  state.eventCount++;
342
490
  }
343
491
  catch (err) {
344
- log(api, 'warn', 'Failed to process LLM output:', err);
492
+ log(api, "warn", "Failed to process LLM output:", err);
345
493
  }
346
494
  });
347
495
  // ── Hooks: session_end, before_reset, gateway_stop → end session ───
348
- for (const hookName of ['session_end', 'before_reset', 'gateway_stop']) {
496
+ for (const hookName of [
497
+ "session_end",
498
+ "before_reset",
499
+ "gateway_stop",
500
+ ]) {
349
501
  on(hookName, async (...args) => {
350
502
  const event = (args[0] ?? {});
351
503
  const hookCtx = (args[1] ?? {});
@@ -361,16 +513,26 @@ export default function register(api) {
361
513
  }
362
514
  });
363
515
  }
364
- // ── Hook: agent_end → session recycling (keeps context graph always on) ──
365
- // agent_end fires after every heartbeat run (~30s). We use it to:
366
- // 1. Ensure a session always exists (create one if none)
367
- // 2. Recycle sessions that are older than SESSION_MAX_AGE_MS
516
+ // ── Hook: agent_end → session recycling + catch-up ────────────────
517
+ // agent_end fires after every heartbeat run (~5min). We use it to:
518
+ // 1. Run catch-up on first invocation (if agent was offline)
519
+ // 2. Ensure a session always exists (create one if none)
520
+ // 3. Recycle sessions that are older than SESSION_MAX_AGE_MS
368
521
  // (submit the old one, start a fresh one)
369
- // Real events are fetched from the ClawTrail decisions API at submit time —
370
- // no synthetic heartbeat events are injected.
522
+ // ALL sessions get submitted idle blocks prove the agent was online.
371
523
  const SESSION_MAX_AGE_MS = 5 * 60_000; // 5 minutes
372
- on('agent_end', async () => {
524
+ on("agent_end", async () => {
373
525
  try {
526
+ // Run catch-up once on first agent_end after process start
527
+ if (!catchUpDone) {
528
+ catchUpDone = true;
529
+ try {
530
+ await runCatchUp(adapter, api, cfg, cgRoot, SESSION_MAX_AGE_MS);
531
+ }
532
+ catch (err) {
533
+ log(api, "warn", "Catch-up failed:", err);
534
+ }
535
+ }
374
536
  const current = sessions.values().next().value;
375
537
  if (!current) {
376
538
  // No session exists — create one so the next cycle captures events
@@ -381,7 +543,7 @@ export default function register(api) {
381
543
  if (age < SESSION_MAX_AGE_MS)
382
544
  return; // session still fresh
383
545
  // Session is old enough to recycle — fetch real decisions and submit
384
- log(api, 'info', `Recycling session (age=${Math.round(age / 1000)}s, events=${current.eventCount})`);
546
+ log(api, "info", `Recycling session (age=${Math.round(age / 1000)}s, events=${current.eventCount})`);
385
547
  for (const [key, state] of sessions) {
386
548
  if (state === current) {
387
549
  await endSessionAndSubmit(key);
@@ -392,30 +554,30 @@ export default function register(api) {
392
554
  await ensureSession();
393
555
  }
394
556
  catch (err) {
395
- log(api, 'warn', 'Session recycle error:', err);
557
+ log(api, "warn", "Session recycle error:", err);
396
558
  }
397
559
  });
398
560
  // ── Agent tools (optional — depends on api.registerTool) ──────────
399
- if (typeof api.registerTool === 'function') {
561
+ if (typeof api.registerTool === "function") {
400
562
  api.registerTool({
401
- name: 'context_graph_status',
402
- description: 'Check current context graph session status, event count, and capture health.',
403
- parameters: { type: 'object', properties: {} },
563
+ name: "context_graph_status",
564
+ description: "Check current context graph session status, event count, and capture health.",
565
+ parameters: { type: "object", properties: {} },
404
566
  handler: async (_params, ctx) => {
405
- const key = ctx.sessionKey || 'default';
567
+ const key = ctx.sessionKey || "default";
406
568
  const state = sessions.get(key);
407
569
  return adapter.getStatus(state?.sessionId);
408
570
  },
409
571
  });
410
572
  api.registerTool({
411
- name: 'context_graph_summarize',
412
- description: 'Generate metrics and derived claims for the current session.',
413
- parameters: { type: 'object', properties: {} },
573
+ name: "context_graph_summarize",
574
+ description: "Generate metrics and derived claims for the current session.",
575
+ parameters: { type: "object", properties: {} },
414
576
  handler: async (_params, ctx) => {
415
- const key = ctx.sessionKey || 'default';
577
+ const key = ctx.sessionKey || "default";
416
578
  const state = sessions.get(key);
417
579
  if (!state)
418
- return { status: 'no_active_session' };
580
+ return { status: "no_active_session" };
419
581
  const { summary, signed } = await adapter.summarizeAndSign(state.sessionId);
420
582
  return {
421
583
  ...summary,
@@ -429,6 +591,6 @@ export default function register(api) {
429
591
  },
430
592
  });
431
593
  }
432
- log(api, 'info', 'Plugin registered — provenance capture active');
594
+ log(api, "info", "Plugin registered — provenance capture active (catch-up enabled)");
433
595
  }
434
596
  //# sourceMappingURL=register.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"register.js","sourceRoot":"","sources":["../src/register.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@clawtrail/context-graph-openclaw",
3
- "version": "0.5.2",
3
+ "version": "0.7.0",
4
4
  "description": "OpenClaw adapter for @clawtrail/context-graph — captures agent execution traces as PROV-O events",
5
5
  "type": "module",
6
6
  "main": "dist/index.js",
@@ -43,10 +43,10 @@
43
43
  "node": ">=20"
44
44
  },
45
45
  "peerDependencies": {
46
- "@clawtrail/context-graph": "^0.2.0"
46
+ "@clawtrail/context-graph": "^0.3.0"
47
47
  },
48
48
  "dependencies": {
49
- "@clawtrail/context-graph": "^0.2.0"
49
+ "@clawtrail/context-graph": "^0.3.0"
50
50
  },
51
51
  "devDependencies": {
52
52
  "@types/node": "^22.0.0",