@signetai/signet-memory-openclaw 0.102.3 → 0.102.5
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/index.d.ts +9 -10
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +236 -28
- package/package.json +2 -2
package/dist/index.d.ts
CHANGED
|
@@ -8,6 +8,7 @@
|
|
|
8
8
|
* All operations route through daemon APIs with the "plugin" runtime
|
|
9
9
|
* path for dedup safety.
|
|
10
10
|
*/
|
|
11
|
+
import type { RecallPayload, RecallRow } from "@signet/core";
|
|
11
12
|
import type { OpenClawPluginApi } from "./openclaw-types.js";
|
|
12
13
|
export interface SignetConfig {
|
|
13
14
|
enabled?: boolean;
|
|
@@ -52,14 +53,6 @@ interface MemoryRecord {
|
|
|
52
53
|
created_at: string;
|
|
53
54
|
updated_at: string;
|
|
54
55
|
}
|
|
55
|
-
interface RecallResult {
|
|
56
|
-
id: string;
|
|
57
|
-
content: string;
|
|
58
|
-
type: string;
|
|
59
|
-
importance: number;
|
|
60
|
-
score: number;
|
|
61
|
-
created_at: string;
|
|
62
|
-
}
|
|
63
56
|
interface MarketplaceToolEntry {
|
|
64
57
|
id: string;
|
|
65
58
|
serverId: string;
|
|
@@ -123,12 +116,18 @@ export declare function onSessionEnd(harness: string, options?: {
|
|
|
123
116
|
cwd?: string;
|
|
124
117
|
reason?: string;
|
|
125
118
|
}): Promise<SessionEndResult | null>;
|
|
119
|
+
export declare function memoryRecall(query: string, options?: {
|
|
120
|
+
daemonUrl?: string;
|
|
121
|
+
limit?: number;
|
|
122
|
+
type?: string;
|
|
123
|
+
minScore?: number;
|
|
124
|
+
}): Promise<RecallPayload | null>;
|
|
126
125
|
export declare function memorySearch(query: string, options?: {
|
|
127
126
|
daemonUrl?: string;
|
|
128
127
|
limit?: number;
|
|
129
128
|
type?: string;
|
|
130
129
|
minScore?: number;
|
|
131
|
-
}): Promise<
|
|
130
|
+
}): Promise<RecallRow[]>;
|
|
132
131
|
export declare function memoryStore(content: string, options?: {
|
|
133
132
|
daemonUrl?: string;
|
|
134
133
|
type?: string;
|
|
@@ -183,7 +182,7 @@ export declare function recall(query: string, options?: {
|
|
|
183
182
|
limit?: number;
|
|
184
183
|
type?: string;
|
|
185
184
|
minScore?: number;
|
|
186
|
-
}): Promise<
|
|
185
|
+
}): Promise<RecallRow[]>;
|
|
187
186
|
export declare function cleanupTimedMap(map: Map<string, number>, now: number, ttlMs?: number): void;
|
|
188
187
|
/**
|
|
189
188
|
* Inject the routing metadata block as system[0] if not already present.
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -9079,6 +9079,27 @@ function up58(db) {
|
|
|
9079
9079
|
ON entities(entity_type, mentions)
|
|
9080
9080
|
WHERE entity_type = 'extracted'`);
|
|
9081
9081
|
}
|
|
9082
|
+
function up59(db) {
|
|
9083
|
+
const cols = db.prepare("PRAGMA table_info(entity_attributes)").all();
|
|
9084
|
+
if (!cols.some((col) => col.name === "claim_key")) {
|
|
9085
|
+
db.exec("ALTER TABLE entity_attributes ADD COLUMN claim_key TEXT");
|
|
9086
|
+
}
|
|
9087
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_entity_attributes_claim_key
|
|
9088
|
+
ON entity_attributes(agent_id, aspect_id, claim_key, status)
|
|
9089
|
+
WHERE claim_key IS NOT NULL`);
|
|
9090
|
+
}
|
|
9091
|
+
function up60(db) {
|
|
9092
|
+
const cols = db.prepare("PRAGMA table_info(entity_attributes)").all();
|
|
9093
|
+
if (!cols.some((col) => col.name === "group_key")) {
|
|
9094
|
+
db.exec("ALTER TABLE entity_attributes ADD COLUMN group_key TEXT");
|
|
9095
|
+
}
|
|
9096
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_entity_attributes_group_key
|
|
9097
|
+
ON entity_attributes(agent_id, aspect_id, group_key, status)
|
|
9098
|
+
WHERE group_key IS NOT NULL`);
|
|
9099
|
+
db.exec(`CREATE INDEX IF NOT EXISTS idx_entity_attributes_group_claim
|
|
9100
|
+
ON entity_attributes(agent_id, aspect_id, group_key, claim_key, status)
|
|
9101
|
+
WHERE claim_key IS NOT NULL`);
|
|
9102
|
+
}
|
|
9082
9103
|
var MIGRATIONS = [
|
|
9083
9104
|
{
|
|
9084
9105
|
version: 1,
|
|
@@ -9533,6 +9554,22 @@ var MIGRATIONS = [
|
|
|
9533
9554
|
version: 58,
|
|
9534
9555
|
name: "knowledge-graph-indices",
|
|
9535
9556
|
up: up58
|
|
9557
|
+
},
|
|
9558
|
+
{
|
|
9559
|
+
version: 59,
|
|
9560
|
+
name: "entity-attribute-claim-key",
|
|
9561
|
+
up: up59,
|
|
9562
|
+
artifacts: {
|
|
9563
|
+
columns: [{ table: "entity_attributes", column: "claim_key" }]
|
|
9564
|
+
}
|
|
9565
|
+
},
|
|
9566
|
+
{
|
|
9567
|
+
version: 60,
|
|
9568
|
+
name: "entity-attribute-group-key",
|
|
9569
|
+
up: up60,
|
|
9570
|
+
artifacts: {
|
|
9571
|
+
columns: [{ table: "entity_attributes", column: "group_key" }]
|
|
9572
|
+
}
|
|
9536
9573
|
}
|
|
9537
9574
|
];
|
|
9538
9575
|
var LATEST_SCHEMA_VERSION = MIGRATIONS[MIGRATIONS.length - 1]?.version ?? 0;
|
|
@@ -9557,6 +9594,179 @@ try {
|
|
|
9557
9594
|
const esmRequire = createRequire22(import.meta.url);
|
|
9558
9595
|
native = esmRequire("@signet/native");
|
|
9559
9596
|
} catch {}
|
|
9597
|
+
function isRecord2(value) {
|
|
9598
|
+
return typeof value === "object" && value !== null && !Array.isArray(value);
|
|
9599
|
+
}
|
|
9600
|
+
function withDefined(value) {
|
|
9601
|
+
return Object.fromEntries(Object.entries(value).filter(([, entry]) => entry !== undefined));
|
|
9602
|
+
}
|
|
9603
|
+
function normalizeRememberTags(tags) {
|
|
9604
|
+
if (typeof tags === "string") {
|
|
9605
|
+
const value = tags.split(",").map((tag) => tag.trim()).filter((tag) => tag.length > 0).join(",");
|
|
9606
|
+
return value.length > 0 ? value : undefined;
|
|
9607
|
+
}
|
|
9608
|
+
if (Array.isArray(tags)) {
|
|
9609
|
+
const value = tags.map((tag) => tag.trim()).filter((tag) => tag.length > 0).join(",");
|
|
9610
|
+
return value.length > 0 ? value : undefined;
|
|
9611
|
+
}
|
|
9612
|
+
return;
|
|
9613
|
+
}
|
|
9614
|
+
function partitionRecallRows(rows) {
|
|
9615
|
+
return {
|
|
9616
|
+
primary: rows.filter((row) => row.supplementary !== true),
|
|
9617
|
+
supporting: rows.filter((row) => row.supplementary === true)
|
|
9618
|
+
};
|
|
9619
|
+
}
|
|
9620
|
+
function parseRecallMeta(raw, fallbackCount) {
|
|
9621
|
+
if (!isRecord2(raw)) {
|
|
9622
|
+
return {
|
|
9623
|
+
totalReturned: fallbackCount,
|
|
9624
|
+
hasSupplementary: false,
|
|
9625
|
+
noHits: fallbackCount === 0
|
|
9626
|
+
};
|
|
9627
|
+
}
|
|
9628
|
+
const totalReturned = typeof raw.totalReturned === "number" ? raw.totalReturned : fallbackCount;
|
|
9629
|
+
const hasSupplementary = raw.hasSupplementary === true;
|
|
9630
|
+
const noHits = "noHits" in raw ? raw.noHits === true : totalReturned === 0;
|
|
9631
|
+
return { totalReturned, hasSupplementary, noHits };
|
|
9632
|
+
}
|
|
9633
|
+
function parseRecallPayload(raw) {
|
|
9634
|
+
const payload = isRecord2(raw) ? raw : {};
|
|
9635
|
+
const results = Array.isArray(payload.results) ? payload.results : Array.isArray(payload.memories) ? payload.memories : [];
|
|
9636
|
+
const rows = results.filter(isRecord2);
|
|
9637
|
+
return {
|
|
9638
|
+
query: typeof payload.query === "string" ? payload.query : undefined,
|
|
9639
|
+
method: typeof payload.method === "string" ? payload.method : undefined,
|
|
9640
|
+
rows,
|
|
9641
|
+
meta: parseRecallMeta(payload.meta, rows.length),
|
|
9642
|
+
message: typeof payload.message === "string" ? payload.message : undefined
|
|
9643
|
+
};
|
|
9644
|
+
}
|
|
9645
|
+
function applyRecallScoreThreshold(raw, minScore) {
|
|
9646
|
+
if (typeof minScore !== "number" || !Number.isFinite(minScore) || typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
9647
|
+
return raw;
|
|
9648
|
+
}
|
|
9649
|
+
const payload = raw;
|
|
9650
|
+
const rows = Array.isArray(payload.results) ? payload.results : [];
|
|
9651
|
+
const filtered = rows.filter((row) => typeof row.score !== "number" || row.score >= minScore);
|
|
9652
|
+
return {
|
|
9653
|
+
...payload,
|
|
9654
|
+
results: filtered,
|
|
9655
|
+
meta: {
|
|
9656
|
+
totalReturned: filtered.length,
|
|
9657
|
+
hasSupplementary: filtered.some((row) => row.supplementary === true),
|
|
9658
|
+
noHits: filtered.length === 0
|
|
9659
|
+
}
|
|
9660
|
+
};
|
|
9661
|
+
}
|
|
9662
|
+
function formatDate(value) {
|
|
9663
|
+
return typeof value === "string" && value.length > 0 ? value.slice(0, 10) : "unknown";
|
|
9664
|
+
}
|
|
9665
|
+
function formatRecallRow(row, options) {
|
|
9666
|
+
const score = typeof row.score === "number" ? `[${(row.score * 100).toFixed(0)}%] ` : "";
|
|
9667
|
+
const source = typeof row.source === "string" ? row.source : "unknown";
|
|
9668
|
+
const type = typeof row.type === "string" ? row.type : "memory";
|
|
9669
|
+
const who = typeof row.who === "string" && row.who.length > 0 ? `, by ${row.who}` : "";
|
|
9670
|
+
const createdAt = formatDate(row.created_at);
|
|
9671
|
+
const id = typeof row.id === "string" && row.id.length > 0 ? `id: ${row.id}; ` : "";
|
|
9672
|
+
const prefix = options?.includeIndex ? `${options.includeIndex}. ` : "- ";
|
|
9673
|
+
return `${prefix}${score}${id}${row.content ?? ""} (${type}, ${source}, ${createdAt}${who})`;
|
|
9674
|
+
}
|
|
9675
|
+
function formatRecallText(raw) {
|
|
9676
|
+
if (typeof raw !== "object" || raw === null || Array.isArray(raw)) {
|
|
9677
|
+
return typeof raw === "string" ? raw : JSON.stringify(raw, null, 2);
|
|
9678
|
+
}
|
|
9679
|
+
const payload = raw;
|
|
9680
|
+
const parsed = parseRecallPayload(payload);
|
|
9681
|
+
if (parsed.message && parsed.rows.length === 0)
|
|
9682
|
+
return parsed.message;
|
|
9683
|
+
if (parsed.meta.noHits || parsed.rows.length === 0)
|
|
9684
|
+
return "No matching memories found.";
|
|
9685
|
+
const { primary, supporting } = partitionRecallRows(parsed.rows);
|
|
9686
|
+
const noun = parsed.meta.totalReturned === 1 ? "memory" : "memories";
|
|
9687
|
+
const parts = [`Found ${parsed.meta.totalReturned} ${noun}${parsed.method ? ` (${parsed.method})` : ""}.`];
|
|
9688
|
+
if (primary.length > 0) {
|
|
9689
|
+
parts.push("", "Primary matches:", ...primary.map((row) => formatRecallRow(row)));
|
|
9690
|
+
}
|
|
9691
|
+
if (supporting.length > 0) {
|
|
9692
|
+
parts.push("", "Supporting context:", ...supporting.map((row) => formatRecallRow(row)));
|
|
9693
|
+
}
|
|
9694
|
+
return parts.join(`
|
|
9695
|
+
`);
|
|
9696
|
+
}
|
|
9697
|
+
function buildRecallRequestBody(query, options = {}) {
|
|
9698
|
+
return withDefined({
|
|
9699
|
+
query,
|
|
9700
|
+
keywordQuery: options.keywordQuery ?? options.keyword_query,
|
|
9701
|
+
limit: options.limit,
|
|
9702
|
+
project: options.project,
|
|
9703
|
+
type: options.type,
|
|
9704
|
+
tags: options.tags,
|
|
9705
|
+
who: options.who,
|
|
9706
|
+
pinned: options.pinned === true ? true : undefined,
|
|
9707
|
+
importance_min: options.importance_min,
|
|
9708
|
+
since: options.since,
|
|
9709
|
+
until: options.until,
|
|
9710
|
+
expand: options.expand === true ? true : undefined,
|
|
9711
|
+
agentId: options.agentId,
|
|
9712
|
+
scope: options.scope
|
|
9713
|
+
});
|
|
9714
|
+
}
|
|
9715
|
+
function normalizeStructuredMemoryPayload(value) {
|
|
9716
|
+
if (!isRecord2(value))
|
|
9717
|
+
return value;
|
|
9718
|
+
const aspects = value.aspects;
|
|
9719
|
+
if (!Array.isArray(aspects))
|
|
9720
|
+
return value;
|
|
9721
|
+
return {
|
|
9722
|
+
...value,
|
|
9723
|
+
aspects: aspects.map((aspect) => {
|
|
9724
|
+
if (!isRecord2(aspect))
|
|
9725
|
+
return aspect;
|
|
9726
|
+
if (typeof aspect.entityName === "string" && Array.isArray(aspect.attributes))
|
|
9727
|
+
return aspect;
|
|
9728
|
+
if (typeof aspect.entity === "string" && typeof aspect.aspect === "string" && typeof aspect.value === "string") {
|
|
9729
|
+
return {
|
|
9730
|
+
entityName: aspect.entity,
|
|
9731
|
+
aspect: aspect.aspect,
|
|
9732
|
+
attributes: [
|
|
9733
|
+
withDefined({
|
|
9734
|
+
content: aspect.value,
|
|
9735
|
+
groupKey: typeof aspect.groupKey === "string" ? aspect.groupKey : undefined,
|
|
9736
|
+
claimKey: typeof aspect.claimKey === "string" ? aspect.claimKey : undefined,
|
|
9737
|
+
confidence: typeof aspect.confidence === "number" ? aspect.confidence : undefined,
|
|
9738
|
+
importance: typeof aspect.importance === "number" ? aspect.importance : undefined
|
|
9739
|
+
})
|
|
9740
|
+
]
|
|
9741
|
+
};
|
|
9742
|
+
}
|
|
9743
|
+
return aspect;
|
|
9744
|
+
})
|
|
9745
|
+
};
|
|
9746
|
+
}
|
|
9747
|
+
function buildRememberRequestBody(content, options = {}) {
|
|
9748
|
+
return withDefined({
|
|
9749
|
+
content,
|
|
9750
|
+
type: options.type,
|
|
9751
|
+
importance: options.importance,
|
|
9752
|
+
tags: normalizeRememberTags(options.tags),
|
|
9753
|
+
who: options.who,
|
|
9754
|
+
pinned: options.pinned === true ? true : undefined,
|
|
9755
|
+
sourceType: options.sourceType,
|
|
9756
|
+
sourceId: options.sourceId,
|
|
9757
|
+
createdAt: options.createdAt,
|
|
9758
|
+
hints: options.hints,
|
|
9759
|
+
transcript: options.transcript,
|
|
9760
|
+
structured: normalizeStructuredMemoryPayload(options.structured),
|
|
9761
|
+
agentId: options.agentId,
|
|
9762
|
+
visibility: options.visibility,
|
|
9763
|
+
mode: options.mode,
|
|
9764
|
+
idempotencyKey: options.idempotencyKey,
|
|
9765
|
+
runtimePath: options.runtimePath,
|
|
9766
|
+
harness: options.harness,
|
|
9767
|
+
source: options.source
|
|
9768
|
+
});
|
|
9769
|
+
}
|
|
9560
9770
|
var SIGNET_SOURCE_CHECKOUT_DIRNAME = "signetai";
|
|
9561
9771
|
var SIGNET_GIT_PROTECTED_PATHS = [
|
|
9562
9772
|
"memory/memories.db",
|
|
@@ -12667,31 +12877,32 @@ async function onSessionEnd(harness, options = {}) {
|
|
|
12667
12877
|
timeout: WRITE_TIMEOUT
|
|
12668
12878
|
});
|
|
12669
12879
|
}
|
|
12670
|
-
async function
|
|
12880
|
+
async function memoryRecall(query, options = {}) {
|
|
12671
12881
|
const daemonUrl = options.daemonUrl || DEFAULT_DAEMON_URL;
|
|
12672
12882
|
const result = await daemonFetch(daemonUrl, "/api/memory/recall", {
|
|
12673
12883
|
method: "POST",
|
|
12674
|
-
body: {
|
|
12675
|
-
|
|
12676
|
-
|
|
12677
|
-
|
|
12678
|
-
min_score: options.minScore
|
|
12679
|
-
},
|
|
12884
|
+
body: buildRecallRequestBody(query, {
|
|
12885
|
+
limit: options.limit ?? 10,
|
|
12886
|
+
type: options.type
|
|
12887
|
+
}),
|
|
12680
12888
|
timeout: READ_TIMEOUT
|
|
12681
12889
|
});
|
|
12682
|
-
return result
|
|
12890
|
+
return result ? applyRecallScoreThreshold(result, options.minScore) : null;
|
|
12891
|
+
}
|
|
12892
|
+
async function memorySearch(query, options = {}) {
|
|
12893
|
+
const result = await memoryRecall(query, options);
|
|
12894
|
+
return result ? parseRecallPayload(result).rows : [];
|
|
12683
12895
|
}
|
|
12684
12896
|
async function memoryStore(content, options = {}) {
|
|
12685
12897
|
const daemonUrl = options.daemonUrl || DEFAULT_DAEMON_URL;
|
|
12686
12898
|
const result = await daemonFetch(daemonUrl, "/api/memory/remember", {
|
|
12687
12899
|
method: "POST",
|
|
12688
|
-
body: {
|
|
12689
|
-
content,
|
|
12900
|
+
body: buildRememberRequestBody(content, {
|
|
12690
12901
|
type: options.type,
|
|
12691
12902
|
importance: options.importance,
|
|
12692
|
-
tags:
|
|
12903
|
+
tags: options.tags,
|
|
12693
12904
|
who: options.who || "openclaw"
|
|
12694
|
-
},
|
|
12905
|
+
}),
|
|
12695
12906
|
timeout: WRITE_TIMEOUT
|
|
12696
12907
|
});
|
|
12697
12908
|
return result?.id || result?.memoryId || null;
|
|
@@ -12852,10 +13063,7 @@ function injectBillingBlock(body) {
|
|
|
12852
13063
|
return true;
|
|
12853
13064
|
}
|
|
12854
13065
|
if (typeof system === "string") {
|
|
12855
|
-
body.system = [
|
|
12856
|
-
{ ...BILLING_BLOCK },
|
|
12857
|
-
{ type: "text", text: system }
|
|
12858
|
-
];
|
|
13066
|
+
body.system = [{ ...BILLING_BLOCK }, { type: "text", text: system }];
|
|
12859
13067
|
return true;
|
|
12860
13068
|
}
|
|
12861
13069
|
body.system = [{ ...BILLING_BLOCK }];
|
|
@@ -12945,7 +13153,7 @@ function swapAuthHeaders(headers, oauthToken) {
|
|
|
12945
13153
|
delete headers[key];
|
|
12946
13154
|
}
|
|
12947
13155
|
}
|
|
12948
|
-
headers
|
|
13156
|
+
headers.authorization = `Bearer ${oauthToken}`;
|
|
12949
13157
|
}
|
|
12950
13158
|
function installFetchSanitizer() {
|
|
12951
13159
|
const original = globalThis.fetch;
|
|
@@ -13032,10 +13240,11 @@ function installSdkSanitizer() {
|
|
|
13032
13240
|
if (!found)
|
|
13033
13241
|
return false;
|
|
13034
13242
|
Base = found;
|
|
13035
|
-
|
|
13243
|
+
const previous = Base.prototype.prepareRequest;
|
|
13244
|
+
original = previous;
|
|
13036
13245
|
Base.prototype.prepareRequest = async function(request, context) {
|
|
13037
13246
|
sanitizeRequest(request);
|
|
13038
|
-
return
|
|
13247
|
+
return previous.call(this, request, context);
|
|
13039
13248
|
};
|
|
13040
13249
|
return true;
|
|
13041
13250
|
}
|
|
@@ -13298,24 +13507,22 @@ var signetPlugin = {
|
|
|
13298
13507
|
async execute(_toolCallId, params) {
|
|
13299
13508
|
const { query, limit, type, min_score } = params;
|
|
13300
13509
|
try {
|
|
13301
|
-
const
|
|
13510
|
+
const recall2 = await memoryRecall(query, {
|
|
13302
13511
|
...opts,
|
|
13303
13512
|
limit,
|
|
13304
13513
|
type,
|
|
13305
13514
|
minScore: min_score
|
|
13306
13515
|
});
|
|
13307
|
-
|
|
13516
|
+
const parsed = parseRecallPayload(recall2);
|
|
13517
|
+
if (parsed.rows.length === 0) {
|
|
13308
13518
|
return textResult("No relevant memories found.", {
|
|
13309
13519
|
count: 0
|
|
13310
13520
|
});
|
|
13311
13521
|
}
|
|
13312
|
-
|
|
13313
|
-
|
|
13314
|
-
|
|
13315
|
-
|
|
13316
|
-
${text}`, {
|
|
13317
|
-
count: results.length,
|
|
13318
|
-
memories: results
|
|
13522
|
+
return textResult(formatRecallText(recall2), {
|
|
13523
|
+
count: parsed.rows.length,
|
|
13524
|
+
memories: parsed.rows,
|
|
13525
|
+
meta: parsed.meta
|
|
13319
13526
|
});
|
|
13320
13527
|
} catch (err) {
|
|
13321
13528
|
return textResult(`Memory search failed: ${String(err)}`, { error: String(err) });
|
|
@@ -13912,6 +14119,7 @@ export {
|
|
|
13912
14119
|
onCompactionComplete,
|
|
13913
14120
|
memoryStore,
|
|
13914
14121
|
memorySearch,
|
|
14122
|
+
memoryRecall,
|
|
13915
14123
|
memoryModify,
|
|
13916
14124
|
memoryList,
|
|
13917
14125
|
memoryGet,
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@signetai/signet-memory-openclaw",
|
|
3
|
-
"version": "0.102.
|
|
3
|
+
"version": "0.102.5",
|
|
4
4
|
"description": "Signet adapter for OpenClaw — runtime plugin for AI agent memory",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -36,7 +36,7 @@
|
|
|
36
36
|
"@sinclair/typebox": "0.34.47"
|
|
37
37
|
},
|
|
38
38
|
"devDependencies": {
|
|
39
|
-
"@signet/core": "0.102.
|
|
39
|
+
"@signet/core": "0.102.5",
|
|
40
40
|
"@types/node": "^22.0.0"
|
|
41
41
|
},
|
|
42
42
|
"peerDependencies": {
|