signetai 0.159.8 → 0.159.10
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/mcp-stdio.js +565 -500
- package/native-manifest.json +12 -12
- package/package.json +6 -6
package/dist/mcp-stdio.js
CHANGED
|
@@ -41204,6 +41204,172 @@ function date7(params) {
|
|
|
41204
41204
|
|
|
41205
41205
|
// ../../node_modules/.bun/zod@4.4.3/node_modules/zod/v4/classic/external.js
|
|
41206
41206
|
config2(en_default3());
|
|
41207
|
+
// ../../platform/daemon/src/entity-quality.ts
|
|
41208
|
+
var CONCRETE_ENTITY_TYPES = [
|
|
41209
|
+
"person",
|
|
41210
|
+
"organization",
|
|
41211
|
+
"project",
|
|
41212
|
+
"product",
|
|
41213
|
+
"system",
|
|
41214
|
+
"tool",
|
|
41215
|
+
"artifact",
|
|
41216
|
+
"document",
|
|
41217
|
+
"source",
|
|
41218
|
+
"place",
|
|
41219
|
+
"event"
|
|
41220
|
+
];
|
|
41221
|
+
var CONCRETE_ENTITY_TYPE_SET = new Set(CONCRETE_ENTITY_TYPES);
|
|
41222
|
+
var ABSTRACT_OR_OPERATIONAL_TYPES = new Set([
|
|
41223
|
+
"concept",
|
|
41224
|
+
"task",
|
|
41225
|
+
"skill",
|
|
41226
|
+
"agent",
|
|
41227
|
+
"policy",
|
|
41228
|
+
"action",
|
|
41229
|
+
"workflow",
|
|
41230
|
+
"object_type",
|
|
41231
|
+
"interface",
|
|
41232
|
+
"observation",
|
|
41233
|
+
"claim_slot",
|
|
41234
|
+
"claim_value",
|
|
41235
|
+
"chunk_group"
|
|
41236
|
+
]);
|
|
41237
|
+
var GENERIC_CANONICAL_NAMES = new Set([
|
|
41238
|
+
"a",
|
|
41239
|
+
"an",
|
|
41240
|
+
"and",
|
|
41241
|
+
"are",
|
|
41242
|
+
"author",
|
|
41243
|
+
"because",
|
|
41244
|
+
"being",
|
|
41245
|
+
"but",
|
|
41246
|
+
"can",
|
|
41247
|
+
"current",
|
|
41248
|
+
"current work",
|
|
41249
|
+
"did",
|
|
41250
|
+
"do",
|
|
41251
|
+
"does",
|
|
41252
|
+
"for",
|
|
41253
|
+
"from",
|
|
41254
|
+
"had",
|
|
41255
|
+
"has",
|
|
41256
|
+
"have",
|
|
41257
|
+
"he",
|
|
41258
|
+
"her",
|
|
41259
|
+
"him",
|
|
41260
|
+
"his",
|
|
41261
|
+
"i",
|
|
41262
|
+
"in",
|
|
41263
|
+
"intent",
|
|
41264
|
+
"is",
|
|
41265
|
+
"it",
|
|
41266
|
+
"its",
|
|
41267
|
+
"let",
|
|
41268
|
+
"of",
|
|
41269
|
+
"on",
|
|
41270
|
+
"or",
|
|
41271
|
+
"pending tasks",
|
|
41272
|
+
"primary request",
|
|
41273
|
+
"read",
|
|
41274
|
+
"recipient",
|
|
41275
|
+
"result",
|
|
41276
|
+
"sender",
|
|
41277
|
+
"she",
|
|
41278
|
+
"someone",
|
|
41279
|
+
"status",
|
|
41280
|
+
"summary",
|
|
41281
|
+
"that",
|
|
41282
|
+
"the",
|
|
41283
|
+
"their",
|
|
41284
|
+
"them",
|
|
41285
|
+
"they",
|
|
41286
|
+
"this",
|
|
41287
|
+
"to",
|
|
41288
|
+
"understand",
|
|
41289
|
+
"update",
|
|
41290
|
+
"want",
|
|
41291
|
+
"was",
|
|
41292
|
+
"we",
|
|
41293
|
+
"we're",
|
|
41294
|
+
"were",
|
|
41295
|
+
"with",
|
|
41296
|
+
"write",
|
|
41297
|
+
"you",
|
|
41298
|
+
"your"
|
|
41299
|
+
]);
|
|
41300
|
+
var METADATA_LABELS = new Set([
|
|
41301
|
+
"assistant",
|
|
41302
|
+
"author",
|
|
41303
|
+
"current work",
|
|
41304
|
+
"intent",
|
|
41305
|
+
"pending tasks",
|
|
41306
|
+
"primary request",
|
|
41307
|
+
"recipient",
|
|
41308
|
+
"sender",
|
|
41309
|
+
"system",
|
|
41310
|
+
"user"
|
|
41311
|
+
]);
|
|
41312
|
+
var DISCOURSE_WORDS = new Set([
|
|
41313
|
+
"because",
|
|
41314
|
+
"despite",
|
|
41315
|
+
"however",
|
|
41316
|
+
"let",
|
|
41317
|
+
"once",
|
|
41318
|
+
"read",
|
|
41319
|
+
"summary",
|
|
41320
|
+
"understand",
|
|
41321
|
+
"want",
|
|
41322
|
+
"write"
|
|
41323
|
+
]);
|
|
41324
|
+
var EVENT_WORDS = /\b(announce(?:d|ment)?|created|decided|deployed|digest|installed|launched|meeting|merged|published|released|started|stopped|updated)\b/i;
|
|
41325
|
+
var DATE_OR_TIME = /\b(\d{4}-\d{2}-\d{2}|\d{1,2}:\d{2}|jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|jun(?:e)?|jul(?:y)?|aug(?:ust)?|sep(?:t(?:ember)?)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?|today|yesterday|last\s+(?:night|week|month|year|daily))\b/i;
|
|
41326
|
+
function normalizeEntityName(value) {
|
|
41327
|
+
return value.trim().replace(/[“”]/g, '"').replace(/[‘’]/g, "'").replace(/^[\p{P}\p{S}]+|[\p{P}\p{S}]+$/gu, "").trim().toLowerCase().replace(/\s+/g, " ");
|
|
41328
|
+
}
|
|
41329
|
+
function normalizeEntityType(value) {
|
|
41330
|
+
const normalized = value?.trim().toLowerCase().replace(/[\s-]+/g, "_");
|
|
41331
|
+
return normalized || undefined;
|
|
41332
|
+
}
|
|
41333
|
+
function isConcreteEntityType(type) {
|
|
41334
|
+
return typeof type === "string" && CONCRETE_ENTITY_TYPE_SET.has(type);
|
|
41335
|
+
}
|
|
41336
|
+
function isKnownAbstractEntityType(type) {
|
|
41337
|
+
return typeof type === "string" && ABSTRACT_OR_OPERATIONAL_TYPES.has(type);
|
|
41338
|
+
}
|
|
41339
|
+
function classifyEntityQuality(name, type) {
|
|
41340
|
+
const canonical = normalizeEntityName(name);
|
|
41341
|
+
const normalizedType = normalizeEntityType(type);
|
|
41342
|
+
const hasConcreteType = isConcreteEntityType(normalizedType);
|
|
41343
|
+
if (canonical.length === 0) {
|
|
41344
|
+
return { ok: false, reason: name.trim().length === 0 ? "too_short" : "punctuation_only" };
|
|
41345
|
+
}
|
|
41346
|
+
if (/^\d+$/.test(canonical))
|
|
41347
|
+
return { ok: false, reason: "numeric_only" };
|
|
41348
|
+
if (GENERIC_CANONICAL_NAMES.has(canonical))
|
|
41349
|
+
return { ok: false, reason: "generic_or_scaffolding_name" };
|
|
41350
|
+
if (METADATA_LABELS.has(canonical))
|
|
41351
|
+
return { ok: false, reason: "metadata_role" };
|
|
41352
|
+
if (DISCOURSE_WORDS.has(canonical))
|
|
41353
|
+
return { ok: false, reason: "discourse_fragment" };
|
|
41354
|
+
if (/^(user|assistant|system|sender|recipient|author)\b[:\s-]+/i.test(name.trim())) {
|
|
41355
|
+
return { ok: false, reason: "role_prefixed_scaffolding" };
|
|
41356
|
+
}
|
|
41357
|
+
if (canonical.length < 4 && !hasConcreteType)
|
|
41358
|
+
return { ok: false, reason: "too_short" };
|
|
41359
|
+
if (normalizedType && normalizedType !== "extracted" && normalizedType !== "unknown") {
|
|
41360
|
+
if (!isConcreteEntityType(normalizedType)) {
|
|
41361
|
+
return {
|
|
41362
|
+
ok: false,
|
|
41363
|
+
reason: isKnownAbstractEntityType(normalizedType) ? "non_concrete_entity_type" : "unknown_entity_type"
|
|
41364
|
+
};
|
|
41365
|
+
}
|
|
41366
|
+
if (normalizedType === "event" && !DATE_OR_TIME.test(name) && !EVENT_WORDS.test(name)) {
|
|
41367
|
+
return { ok: false, reason: "event_without_time_or_event_signal" };
|
|
41368
|
+
}
|
|
41369
|
+
}
|
|
41370
|
+
return { ok: true };
|
|
41371
|
+
}
|
|
41372
|
+
|
|
41207
41373
|
// ../../platform/daemon/src/episodic-sources.ts
|
|
41208
41374
|
function readNonEmptyTrimmed(value) {
|
|
41209
41375
|
return typeof value === "string" && value.trim().length > 0 ? value.trim() : null;
|
|
@@ -53016,179 +53182,13 @@ var SOURCE_NATIVE_TOPOLOGY_ENTITY_TYPES = [
|
|
|
53016
53182
|
"skill"
|
|
53017
53183
|
];
|
|
53018
53184
|
|
|
53019
|
-
// ../../platform/daemon/src/
|
|
53020
|
-
var
|
|
53021
|
-
"person",
|
|
53022
|
-
"organization",
|
|
53023
|
-
"project",
|
|
53024
|
-
"product",
|
|
53025
|
-
"system",
|
|
53026
|
-
"tool",
|
|
53027
|
-
"artifact",
|
|
53028
|
-
"document",
|
|
53029
|
-
"source",
|
|
53030
|
-
"place",
|
|
53031
|
-
"event"
|
|
53032
|
-
];
|
|
53033
|
-
var CONCRETE_ENTITY_TYPE_SET = new Set(CONCRETE_ENTITY_TYPES);
|
|
53034
|
-
var ABSTRACT_OR_OPERATIONAL_TYPES = new Set([
|
|
53035
|
-
"concept",
|
|
53036
|
-
"task",
|
|
53037
|
-
"skill",
|
|
53038
|
-
"agent",
|
|
53039
|
-
"policy",
|
|
53040
|
-
"action",
|
|
53041
|
-
"workflow",
|
|
53042
|
-
"object_type",
|
|
53043
|
-
"interface",
|
|
53044
|
-
"observation",
|
|
53045
|
-
"claim_slot",
|
|
53046
|
-
"claim_value",
|
|
53047
|
-
"chunk_group"
|
|
53048
|
-
]);
|
|
53049
|
-
var GENERIC_CANONICAL_NAMES = new Set([
|
|
53185
|
+
// ../../platform/daemon/src/knowledge-graph-hygiene.ts
|
|
53186
|
+
var GENERIC_ENTITY_NAMES = new Set([
|
|
53050
53187
|
"a",
|
|
53051
53188
|
"an",
|
|
53052
53189
|
"and",
|
|
53053
53190
|
"are",
|
|
53054
|
-
"
|
|
53055
|
-
"because",
|
|
53056
|
-
"being",
|
|
53057
|
-
"but",
|
|
53058
|
-
"can",
|
|
53059
|
-
"current",
|
|
53060
|
-
"current work",
|
|
53061
|
-
"did",
|
|
53062
|
-
"do",
|
|
53063
|
-
"does",
|
|
53064
|
-
"for",
|
|
53065
|
-
"from",
|
|
53066
|
-
"had",
|
|
53067
|
-
"has",
|
|
53068
|
-
"have",
|
|
53069
|
-
"he",
|
|
53070
|
-
"her",
|
|
53071
|
-
"him",
|
|
53072
|
-
"his",
|
|
53073
|
-
"i",
|
|
53074
|
-
"in",
|
|
53075
|
-
"intent",
|
|
53076
|
-
"is",
|
|
53077
|
-
"it",
|
|
53078
|
-
"its",
|
|
53079
|
-
"let",
|
|
53080
|
-
"of",
|
|
53081
|
-
"on",
|
|
53082
|
-
"or",
|
|
53083
|
-
"pending tasks",
|
|
53084
|
-
"primary request",
|
|
53085
|
-
"read",
|
|
53086
|
-
"recipient",
|
|
53087
|
-
"result",
|
|
53088
|
-
"sender",
|
|
53089
|
-
"she",
|
|
53090
|
-
"someone",
|
|
53091
|
-
"status",
|
|
53092
|
-
"summary",
|
|
53093
|
-
"that",
|
|
53094
|
-
"the",
|
|
53095
|
-
"their",
|
|
53096
|
-
"them",
|
|
53097
|
-
"they",
|
|
53098
|
-
"this",
|
|
53099
|
-
"to",
|
|
53100
|
-
"understand",
|
|
53101
|
-
"update",
|
|
53102
|
-
"want",
|
|
53103
|
-
"was",
|
|
53104
|
-
"we",
|
|
53105
|
-
"we're",
|
|
53106
|
-
"were",
|
|
53107
|
-
"with",
|
|
53108
|
-
"write",
|
|
53109
|
-
"you",
|
|
53110
|
-
"your"
|
|
53111
|
-
]);
|
|
53112
|
-
var METADATA_LABELS = new Set([
|
|
53113
|
-
"assistant",
|
|
53114
|
-
"author",
|
|
53115
|
-
"current work",
|
|
53116
|
-
"intent",
|
|
53117
|
-
"pending tasks",
|
|
53118
|
-
"primary request",
|
|
53119
|
-
"recipient",
|
|
53120
|
-
"sender",
|
|
53121
|
-
"system",
|
|
53122
|
-
"user"
|
|
53123
|
-
]);
|
|
53124
|
-
var DISCOURSE_WORDS = new Set([
|
|
53125
|
-
"because",
|
|
53126
|
-
"despite",
|
|
53127
|
-
"however",
|
|
53128
|
-
"let",
|
|
53129
|
-
"once",
|
|
53130
|
-
"read",
|
|
53131
|
-
"summary",
|
|
53132
|
-
"understand",
|
|
53133
|
-
"want",
|
|
53134
|
-
"write"
|
|
53135
|
-
]);
|
|
53136
|
-
var EVENT_WORDS = /\b(announce(?:d|ment)?|created|decided|deployed|digest|installed|launched|meeting|merged|published|released|started|stopped|updated)\b/i;
|
|
53137
|
-
var DATE_OR_TIME = /\b(\d{4}-\d{2}-\d{2}|\d{1,2}:\d{2}|jan(?:uary)?|feb(?:ruary)?|mar(?:ch)?|apr(?:il)?|may|jun(?:e)?|jul(?:y)?|aug(?:ust)?|sep(?:t(?:ember)?)?|oct(?:ober)?|nov(?:ember)?|dec(?:ember)?|today|yesterday|last\s+(?:night|week|month|year|daily))\b/i;
|
|
53138
|
-
function normalizeEntityName(value) {
|
|
53139
|
-
return value.trim().replace(/[“”]/g, '"').replace(/[‘’]/g, "'").replace(/^[\p{P}\p{S}]+|[\p{P}\p{S}]+$/gu, "").trim().toLowerCase().replace(/\s+/g, " ");
|
|
53140
|
-
}
|
|
53141
|
-
function normalizeEntityType(value) {
|
|
53142
|
-
const normalized = value?.trim().toLowerCase().replace(/[\s-]+/g, "_");
|
|
53143
|
-
return normalized || undefined;
|
|
53144
|
-
}
|
|
53145
|
-
function isConcreteEntityType(type) {
|
|
53146
|
-
return typeof type === "string" && CONCRETE_ENTITY_TYPE_SET.has(type);
|
|
53147
|
-
}
|
|
53148
|
-
function isKnownAbstractEntityType(type) {
|
|
53149
|
-
return typeof type === "string" && ABSTRACT_OR_OPERATIONAL_TYPES.has(type);
|
|
53150
|
-
}
|
|
53151
|
-
function classifyEntityQuality(name, type) {
|
|
53152
|
-
const canonical = normalizeEntityName(name);
|
|
53153
|
-
const normalizedType = normalizeEntityType(type);
|
|
53154
|
-
const hasConcreteType = isConcreteEntityType(normalizedType);
|
|
53155
|
-
if (canonical.length === 0) {
|
|
53156
|
-
return { ok: false, reason: name.trim().length === 0 ? "too_short" : "punctuation_only" };
|
|
53157
|
-
}
|
|
53158
|
-
if (/^\d+$/.test(canonical))
|
|
53159
|
-
return { ok: false, reason: "numeric_only" };
|
|
53160
|
-
if (GENERIC_CANONICAL_NAMES.has(canonical))
|
|
53161
|
-
return { ok: false, reason: "generic_or_scaffolding_name" };
|
|
53162
|
-
if (METADATA_LABELS.has(canonical))
|
|
53163
|
-
return { ok: false, reason: "metadata_role" };
|
|
53164
|
-
if (DISCOURSE_WORDS.has(canonical))
|
|
53165
|
-
return { ok: false, reason: "discourse_fragment" };
|
|
53166
|
-
if (/^(user|assistant|system|sender|recipient|author)\b[:\s-]+/i.test(name.trim())) {
|
|
53167
|
-
return { ok: false, reason: "role_prefixed_scaffolding" };
|
|
53168
|
-
}
|
|
53169
|
-
if (canonical.length < 4 && !hasConcreteType)
|
|
53170
|
-
return { ok: false, reason: "too_short" };
|
|
53171
|
-
if (normalizedType && normalizedType !== "extracted" && normalizedType !== "unknown") {
|
|
53172
|
-
if (!isConcreteEntityType(normalizedType)) {
|
|
53173
|
-
return {
|
|
53174
|
-
ok: false,
|
|
53175
|
-
reason: isKnownAbstractEntityType(normalizedType) ? "non_concrete_entity_type" : "unknown_entity_type"
|
|
53176
|
-
};
|
|
53177
|
-
}
|
|
53178
|
-
if (normalizedType === "event" && !DATE_OR_TIME.test(name) && !EVENT_WORDS.test(name)) {
|
|
53179
|
-
return { ok: false, reason: "event_without_time_or_event_signal" };
|
|
53180
|
-
}
|
|
53181
|
-
}
|
|
53182
|
-
return { ok: true };
|
|
53183
|
-
}
|
|
53184
|
-
|
|
53185
|
-
// ../../platform/daemon/src/knowledge-graph-hygiene.ts
|
|
53186
|
-
var GENERIC_ENTITY_NAMES = new Set([
|
|
53187
|
-
"a",
|
|
53188
|
-
"an",
|
|
53189
|
-
"and",
|
|
53190
|
-
"are",
|
|
53191
|
-
"be",
|
|
53191
|
+
"be",
|
|
53192
53192
|
"being",
|
|
53193
53193
|
"but",
|
|
53194
53194
|
"can",
|
|
@@ -53664,6 +53664,8 @@ var integerKeyPattern = new RegExp("^(?:0|[1-9][0-9]*)$");
|
|
|
53664
53664
|
// ../../node_modules/.bun/typebox@1.1.38/node_modules/typebox/build/type/engine/indexed/from_object.mjs
|
|
53665
53665
|
var NumericKeyPattern = new RegExp(IntegerKey);
|
|
53666
53666
|
// ../../platform/daemon/src/pipeline/dreaming-attention.ts
|
|
53667
|
+
import { randomUUID } from "node:crypto";
|
|
53668
|
+
var DREAMING_ATTENTION_KINDS = ["review_due", "hygiene", "contested_claim", "evidence_requeue"];
|
|
53667
53669
|
function parseDetails(value) {
|
|
53668
53670
|
try {
|
|
53669
53671
|
const parsed = JSON.parse(value);
|
|
@@ -53674,6 +53676,21 @@ function parseDetails(value) {
|
|
|
53674
53676
|
return {};
|
|
53675
53677
|
}
|
|
53676
53678
|
}
|
|
53679
|
+
function boundedPriority(priority) {
|
|
53680
|
+
if (!Number.isFinite(priority))
|
|
53681
|
+
return 0;
|
|
53682
|
+
return Math.max(0, Math.min(100, Math.floor(priority ?? 0)));
|
|
53683
|
+
}
|
|
53684
|
+
function normalizedSubjectRef(subjectRef) {
|
|
53685
|
+
const normalized = subjectRef.trim();
|
|
53686
|
+
if (!normalized || normalized.length > 512) {
|
|
53687
|
+
throw new Error("Dreaming attention subjectRef must be between 1 and 512 characters");
|
|
53688
|
+
}
|
|
53689
|
+
return normalized;
|
|
53690
|
+
}
|
|
53691
|
+
function normalizedDetails(details) {
|
|
53692
|
+
return Object.fromEntries(Object.entries(details ?? {}).flatMap(([key, value]) => typeof value === "string" && key.length <= 64 && value.length <= 1000 ? [[key, value]] : []));
|
|
53693
|
+
}
|
|
53677
53694
|
function getDreamingAttentionById(accessor, input) {
|
|
53678
53695
|
return accessor.withReadDb((db) => {
|
|
53679
53696
|
const row = db.prepare(`SELECT id, kind, subject_ref AS subjectRef, details_json AS detailsJson, priority, created_at AS createdAt
|
|
@@ -53690,6 +53707,94 @@ function getDreamingAttentionById(accessor, input) {
|
|
|
53690
53707
|
};
|
|
53691
53708
|
});
|
|
53692
53709
|
}
|
|
53710
|
+
function enqueueDreamingAttentionInTx(db, input) {
|
|
53711
|
+
if (!DREAMING_ATTENTION_KINDS.includes(input.kind)) {
|
|
53712
|
+
throw new Error(`Unsupported Dreaming attention kind: ${input.kind}`);
|
|
53713
|
+
}
|
|
53714
|
+
const subjectRef = normalizedSubjectRef(input.subjectRef);
|
|
53715
|
+
const details = JSON.stringify(normalizedDetails(input.details));
|
|
53716
|
+
const reopen = input.reopen !== false ? 1 : 0;
|
|
53717
|
+
const attentionId = randomUUID();
|
|
53718
|
+
db.prepare(`INSERT INTO dreaming_attention
|
|
53719
|
+
(id, agent_id, kind, subject_ref, details_json, priority)
|
|
53720
|
+
VALUES (?, ?, ?, ?, ?, ?)
|
|
53721
|
+
ON CONFLICT(agent_id, kind, subject_ref) DO UPDATE SET
|
|
53722
|
+
details_json = excluded.details_json,
|
|
53723
|
+
priority = MAX(dreaming_attention.priority, excluded.priority),
|
|
53724
|
+
generation = CASE WHEN ? = 1 OR dreaming_attention.details_json <> excluded.details_json THEN dreaming_attention.generation + 1 ELSE dreaming_attention.generation END,
|
|
53725
|
+
resolved_at = CASE WHEN ? = 1 OR dreaming_attention.details_json <> excluded.details_json THEN NULL ELSE dreaming_attention.resolved_at END,
|
|
53726
|
+
resolved_by_pass_id = CASE WHEN ? = 1 OR dreaming_attention.details_json <> excluded.details_json THEN NULL ELSE dreaming_attention.resolved_by_pass_id END`).run(attentionId, input.agentId, input.kind, subjectRef, details, boundedPriority(input.priority), reopen, reopen, reopen);
|
|
53727
|
+
const stored = db.prepare("SELECT id FROM dreaming_attention WHERE agent_id = ? AND kind = ? AND subject_ref = ?").get(input.agentId, input.kind, subjectRef);
|
|
53728
|
+
return stored?.id ?? attentionId;
|
|
53729
|
+
}
|
|
53730
|
+
|
|
53731
|
+
// ../../platform/daemon/src/pipeline/dreaming-evidence.ts
|
|
53732
|
+
function completeDreamingEvidenceFragment(source) {
|
|
53733
|
+
const content = renderDreamingEvidence(source);
|
|
53734
|
+
return { source, content, start: 0, end: content.length, sourceLength: content.length };
|
|
53735
|
+
}
|
|
53736
|
+
function renderDreamingEvidenceMeta(evidenceMeta) {
|
|
53737
|
+
if (!evidenceMeta)
|
|
53738
|
+
return "";
|
|
53739
|
+
let parsed;
|
|
53740
|
+
try {
|
|
53741
|
+
parsed = JSON.parse(evidenceMeta);
|
|
53742
|
+
} catch {
|
|
53743
|
+
return "";
|
|
53744
|
+
}
|
|
53745
|
+
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed))
|
|
53746
|
+
return "";
|
|
53747
|
+
const data = parsed;
|
|
53748
|
+
const lines = [];
|
|
53749
|
+
if (Array.isArray(data.entities) && data.entities.length > 0) {
|
|
53750
|
+
lines.push("structured_entities:");
|
|
53751
|
+
for (const entity of data.entities) {
|
|
53752
|
+
if (typeof entity !== "object" || entity === null)
|
|
53753
|
+
continue;
|
|
53754
|
+
const value = entity;
|
|
53755
|
+
const source = typeof value.source === "string" ? value.source : "";
|
|
53756
|
+
const target2 = typeof value.target === "string" ? value.target : "";
|
|
53757
|
+
const relationship = typeof value.relationship === "string" ? value.relationship : "";
|
|
53758
|
+
if (source || target2 || relationship) {
|
|
53759
|
+
lines.push(`- ${source} ${relationship ? `[${relationship}] ` : ""}${target2}`.trim());
|
|
53760
|
+
}
|
|
53761
|
+
}
|
|
53762
|
+
}
|
|
53763
|
+
if (Array.isArray(data.aspects) && data.aspects.length > 0) {
|
|
53764
|
+
lines.push("structured_aspects:");
|
|
53765
|
+
for (const aspect of data.aspects) {
|
|
53766
|
+
if (typeof aspect !== "object" || aspect === null)
|
|
53767
|
+
continue;
|
|
53768
|
+
const value = aspect;
|
|
53769
|
+
const entityName = typeof value.entityName === "string" ? value.entityName : "";
|
|
53770
|
+
const aspectName = typeof value.aspect === "string" ? value.aspect : "";
|
|
53771
|
+
if (entityName || aspectName)
|
|
53772
|
+
lines.push(`- ${entityName}/${aspectName}`.trim());
|
|
53773
|
+
}
|
|
53774
|
+
}
|
|
53775
|
+
return lines.length > 0 ? `structured_evidence:
|
|
53776
|
+
${lines.join(`
|
|
53777
|
+
`)}` : "";
|
|
53778
|
+
}
|
|
53779
|
+
function renderDreamingEvidence(source) {
|
|
53780
|
+
const metadata = renderDreamingEvidenceMeta(source.evidenceMeta);
|
|
53781
|
+
return metadata ? `${source.content}
|
|
53782
|
+
${metadata}` : source.content;
|
|
53783
|
+
}
|
|
53784
|
+
function createDreamingAgentEvidence(evidence) {
|
|
53785
|
+
return evidence.map((item) => {
|
|
53786
|
+
const fragment = "source" in item ? item : completeDreamingEvidenceFragment(item);
|
|
53787
|
+
const { source } = fragment;
|
|
53788
|
+
return {
|
|
53789
|
+
sourceRef: `${source.kind}:${source.id}`,
|
|
53790
|
+
content: fragment.content,
|
|
53791
|
+
sourceKind: source.sourceKind,
|
|
53792
|
+
sourceId: source.sourceId,
|
|
53793
|
+
sourcePath: source.sourcePath,
|
|
53794
|
+
sourceEntryId: source.sourceEntryId
|
|
53795
|
+
};
|
|
53796
|
+
});
|
|
53797
|
+
}
|
|
53693
53798
|
|
|
53694
53799
|
// ../../platform/daemon/src/pipeline/dreaming-runbook.ts
|
|
53695
53800
|
function parseRecord(value) {
|
|
@@ -53812,74 +53917,6 @@ function readDreamingRunbook(accessor, agentId, limit = 5) {
|
|
|
53812
53917
|
});
|
|
53813
53918
|
}
|
|
53814
53919
|
|
|
53815
|
-
// ../../platform/daemon/src/pipeline/dreaming-evidence.ts
|
|
53816
|
-
function completeDreamingEvidenceFragment(source) {
|
|
53817
|
-
const content = renderDreamingEvidence(source);
|
|
53818
|
-
return { source, content, start: 0, end: content.length, sourceLength: content.length };
|
|
53819
|
-
}
|
|
53820
|
-
function renderDreamingEvidenceMeta(evidenceMeta) {
|
|
53821
|
-
if (!evidenceMeta)
|
|
53822
|
-
return "";
|
|
53823
|
-
let parsed;
|
|
53824
|
-
try {
|
|
53825
|
-
parsed = JSON.parse(evidenceMeta);
|
|
53826
|
-
} catch {
|
|
53827
|
-
return "";
|
|
53828
|
-
}
|
|
53829
|
-
if (typeof parsed !== "object" || parsed === null || Array.isArray(parsed))
|
|
53830
|
-
return "";
|
|
53831
|
-
const data = parsed;
|
|
53832
|
-
const lines = [];
|
|
53833
|
-
if (Array.isArray(data.entities) && data.entities.length > 0) {
|
|
53834
|
-
lines.push("structured_entities:");
|
|
53835
|
-
for (const entity of data.entities) {
|
|
53836
|
-
if (typeof entity !== "object" || entity === null)
|
|
53837
|
-
continue;
|
|
53838
|
-
const value = entity;
|
|
53839
|
-
const source = typeof value.source === "string" ? value.source : "";
|
|
53840
|
-
const target2 = typeof value.target === "string" ? value.target : "";
|
|
53841
|
-
const relationship = typeof value.relationship === "string" ? value.relationship : "";
|
|
53842
|
-
if (source || target2 || relationship) {
|
|
53843
|
-
lines.push(`- ${source} ${relationship ? `[${relationship}] ` : ""}${target2}`.trim());
|
|
53844
|
-
}
|
|
53845
|
-
}
|
|
53846
|
-
}
|
|
53847
|
-
if (Array.isArray(data.aspects) && data.aspects.length > 0) {
|
|
53848
|
-
lines.push("structured_aspects:");
|
|
53849
|
-
for (const aspect of data.aspects) {
|
|
53850
|
-
if (typeof aspect !== "object" || aspect === null)
|
|
53851
|
-
continue;
|
|
53852
|
-
const value = aspect;
|
|
53853
|
-
const entityName = typeof value.entityName === "string" ? value.entityName : "";
|
|
53854
|
-
const aspectName = typeof value.aspect === "string" ? value.aspect : "";
|
|
53855
|
-
if (entityName || aspectName)
|
|
53856
|
-
lines.push(`- ${entityName}/${aspectName}`.trim());
|
|
53857
|
-
}
|
|
53858
|
-
}
|
|
53859
|
-
return lines.length > 0 ? `structured_evidence:
|
|
53860
|
-
${lines.join(`
|
|
53861
|
-
`)}` : "";
|
|
53862
|
-
}
|
|
53863
|
-
function renderDreamingEvidence(source) {
|
|
53864
|
-
const metadata = renderDreamingEvidenceMeta(source.evidenceMeta);
|
|
53865
|
-
return metadata ? `${source.content}
|
|
53866
|
-
${metadata}` : source.content;
|
|
53867
|
-
}
|
|
53868
|
-
function createDreamingAgentEvidence(evidence) {
|
|
53869
|
-
return evidence.map((item) => {
|
|
53870
|
-
const fragment = "source" in item ? item : completeDreamingEvidenceFragment(item);
|
|
53871
|
-
const { source } = fragment;
|
|
53872
|
-
return {
|
|
53873
|
-
sourceRef: `${source.kind}:${source.id}`,
|
|
53874
|
-
content: fragment.content,
|
|
53875
|
-
sourceKind: source.sourceKind,
|
|
53876
|
-
sourceId: source.sourceId,
|
|
53877
|
-
sourcePath: source.sourcePath,
|
|
53878
|
-
sourceEntryId: source.sourceEntryId
|
|
53879
|
-
};
|
|
53880
|
-
});
|
|
53881
|
-
}
|
|
53882
|
-
|
|
53883
53920
|
// ../../node_modules/.bun/js-tiktoken@1.0.21/node_modules/js-tiktoken/dist/chunk-VL2OQCWN.js
|
|
53884
53921
|
var import_base64_js = __toESM(require_base64_js(), 1);
|
|
53885
53922
|
var __defProp3 = Object.defineProperty;
|
|
@@ -56905,183 +56942,103 @@ function markAppliedInTx(db, proposal, actor, result) {
|
|
|
56905
56942
|
return readBackInTx(db, proposal.id, proposal.agent_id);
|
|
56906
56943
|
}
|
|
56907
56944
|
|
|
56908
|
-
// ../../platform/daemon/src/pipeline/
|
|
56909
|
-
|
|
56910
|
-
|
|
56911
|
-
|
|
56912
|
-
|
|
56913
|
-
|
|
56914
|
-
|
|
56915
|
-
|
|
56916
|
-
|
|
56917
|
-
|
|
56918
|
-
|
|
56919
|
-
|
|
56920
|
-
|
|
56921
|
-
|
|
56922
|
-
|
|
56923
|
-
|
|
56924
|
-
|
|
56925
|
-
|
|
56926
|
-
|
|
56927
|
-
|
|
56928
|
-
|
|
56929
|
-
|
|
56930
|
-
|
|
56931
|
-
|
|
56932
|
-
|
|
56933
|
-
|
|
56934
|
-
|
|
56935
|
-
|
|
56936
|
-
|
|
56937
|
-
|
|
56938
|
-
|
|
56939
|
-
|
|
56940
|
-
|
|
56941
|
-
|
|
56942
|
-
|
|
56943
|
-
|
|
56944
|
-
|
|
56945
|
-
|
|
56945
|
+
// ../../platform/daemon/src/pipeline/antonyms.ts
|
|
56946
|
+
var NEGATION_TOKENS = new Set([
|
|
56947
|
+
"not",
|
|
56948
|
+
"no",
|
|
56949
|
+
"never",
|
|
56950
|
+
"cannot",
|
|
56951
|
+
"cant",
|
|
56952
|
+
"doesnt",
|
|
56953
|
+
"dont",
|
|
56954
|
+
"isnt",
|
|
56955
|
+
"wasnt",
|
|
56956
|
+
"wont",
|
|
56957
|
+
"without"
|
|
56958
|
+
]);
|
|
56959
|
+
var PROSPECTIVE_ANTONYM_PAIRS = [
|
|
56960
|
+
["enabled", "disabled"],
|
|
56961
|
+
["allow", "deny"],
|
|
56962
|
+
["accept", "reject"],
|
|
56963
|
+
["always", "never"],
|
|
56964
|
+
["on", "off"],
|
|
56965
|
+
["true", "false"]
|
|
56966
|
+
];
|
|
56967
|
+
var ANTONYM_PAIRS = [
|
|
56968
|
+
["enabled", "disabled"],
|
|
56969
|
+
["allow", "deny"],
|
|
56970
|
+
["accept", "reject"],
|
|
56971
|
+
["always", "never"],
|
|
56972
|
+
["on", "off"],
|
|
56973
|
+
["true", "false"],
|
|
56974
|
+
["yes", "no"],
|
|
56975
|
+
["together", "apart"],
|
|
56976
|
+
["dating", "single"],
|
|
56977
|
+
["married", "divorced"],
|
|
56978
|
+
["friends", "strangers"],
|
|
56979
|
+
["close", "distant"],
|
|
56980
|
+
["love", "hate"],
|
|
56981
|
+
["like", "dislike"],
|
|
56982
|
+
["prefer", "avoid"],
|
|
56983
|
+
["enjoy", "dread"],
|
|
56984
|
+
["want", "refuse"],
|
|
56985
|
+
["start", "stop"],
|
|
56986
|
+
["begin", "end"],
|
|
56987
|
+
["open", "close"],
|
|
56988
|
+
["join", "leave"],
|
|
56989
|
+
["arrive", "depart"],
|
|
56990
|
+
["buy", "sell"],
|
|
56991
|
+
["alive", "dead"],
|
|
56992
|
+
["active", "inactive"],
|
|
56993
|
+
["positive", "negative"],
|
|
56994
|
+
["increase", "decrease"],
|
|
56995
|
+
["before", "after"]
|
|
56996
|
+
];
|
|
56997
|
+
var ANTONYM_SET = new Set(ANTONYM_PAIRS.flatMap(([a, b]) => [`${a}:${b}`, `${b}:${a}`]));
|
|
56998
|
+
function tokenize(text) {
|
|
56999
|
+
return text.toLowerCase().replace(/[^a-z0-9\s]/g, " ").split(/\s+/).filter((token) => token.length >= 2);
|
|
56946
57000
|
}
|
|
56947
|
-
function
|
|
56948
|
-
|
|
56949
|
-
if (!reference?.startsWith("attention:"))
|
|
56950
|
-
return null;
|
|
56951
|
-
if (!new Set(["archive_entity", "archive_aspect", "archive_claim_value", "archive_link", "merge_entities"]).has(operation.operation))
|
|
56952
|
-
return null;
|
|
56953
|
-
const attentionId = reference.slice("attention:".length);
|
|
56954
|
-
if (!attentionId)
|
|
56955
|
-
return null;
|
|
56956
|
-
const attention = getDreamingAttentionById(accessor, { agentId, id: attentionId });
|
|
56957
|
-
if (attention?.kind !== "hygiene")
|
|
56958
|
-
return null;
|
|
56959
|
-
const payload = operation.payload;
|
|
56960
|
-
if (forceRequested(payload.force))
|
|
56961
|
-
return null;
|
|
56962
|
-
let expectedTarget = false;
|
|
56963
|
-
if (operation.operation === "archive_entity") {
|
|
56964
|
-
expectedTarget = typeof payload.entity_id === "string" && payload.entity_id === attention.details.entityId && noSelectors(payload, ["selector", "entity", "name"]) && attention.subjectRef === `entity:${payload.entity_id}`;
|
|
56965
|
-
} else if (operation.operation === "archive_aspect") {
|
|
56966
|
-
expectedTarget = typeof payload.entity_id === "string" && typeof payload.aspect_id === "string" && payload.entity_id === attention.details.entityId && payload.aspect_id === attention.details.aspectId && noSelectors(payload, ["entity", "selector", "aspect", "name"]) && attention.subjectRef === `aspect:${payload.aspect_id}`;
|
|
56967
|
-
} else if (operation.operation === "archive_claim_value") {
|
|
56968
|
-
expectedTarget = typeof payload.attribute_id === "string" && payload.attribute_id === attention.details.attributeId && attention.subjectRef === `attribute:${payload.attribute_id}`;
|
|
56969
|
-
} else if (operation.operation === "archive_link") {
|
|
56970
|
-
const linkId = payload.id ?? payload.dependency_id ?? payload.link_id;
|
|
56971
|
-
expectedTarget = typeof linkId === "string" && linkId === attention.details.linkId && attention.subjectRef === `link:${linkId}`;
|
|
56972
|
-
} else if (operation.operation === "merge_entities") {
|
|
56973
|
-
const targetId = payload.target_entity_id;
|
|
56974
|
-
const sourceIds = payload.source_entity_ids;
|
|
56975
|
-
const groupIds = semanticDuplicateIds(accessor, agentId, attention.details.canonicalName ?? "");
|
|
56976
|
-
expectedTarget = attention.subjectRef === `duplicate:${attention.details.canonicalName}` && typeof targetId === "string" && noSelectors(payload, [
|
|
56977
|
-
"target_entity",
|
|
56978
|
-
"target",
|
|
56979
|
-
"target_id",
|
|
56980
|
-
"source_entities",
|
|
56981
|
-
"sources",
|
|
56982
|
-
"source_entity",
|
|
56983
|
-
"source",
|
|
56984
|
-
"source_ids",
|
|
56985
|
-
"source_entity_id",
|
|
56986
|
-
"source_id"
|
|
56987
|
-
]) && groupIds.size > 1 && groupIds.has(targetId) && Array.isArray(sourceIds) && sourceIds.length > 0 && sourceIds.every((id) => typeof id === "string" && groupIds.has(id) && id !== targetId);
|
|
56988
|
-
}
|
|
56989
|
-
if (!expectedTarget)
|
|
56990
|
-
return null;
|
|
56991
|
-
return {
|
|
56992
|
-
evidence: [
|
|
56993
|
-
{
|
|
56994
|
-
source_ref: reference,
|
|
56995
|
-
source_kind: "attention",
|
|
56996
|
-
source_id: attention.id,
|
|
56997
|
-
subject_ref: attention.subjectRef,
|
|
56998
|
-
details: attention.details
|
|
56999
|
-
}
|
|
57000
|
-
],
|
|
57001
|
-
sourceKind: "attention",
|
|
57002
|
-
sourceId: attention.id,
|
|
57003
|
-
sourcePath: attention.subjectRef,
|
|
57004
|
-
sourceRoot: "dreaming_attention"
|
|
57005
|
-
};
|
|
57001
|
+
function hasNegation(tokens) {
|
|
57002
|
+
return tokens.some((token) => NEGATION_TOKENS.has(token));
|
|
57006
57003
|
}
|
|
57007
|
-
function
|
|
57008
|
-
const
|
|
57009
|
-
|
|
57010
|
-
|
|
57011
|
-
|
|
57012
|
-
|
|
57013
|
-
const record6 = citeEvidence(accessor, agentId, citation, allowedEvidence);
|
|
57014
|
-
if (record6 === null)
|
|
57015
|
-
return null;
|
|
57016
|
-
matched.push(record6);
|
|
57004
|
+
function overlapCount(left, right) {
|
|
57005
|
+
const rightSet = new Set(right);
|
|
57006
|
+
let overlap = 0;
|
|
57007
|
+
for (const token of left) {
|
|
57008
|
+
if (rightSet.has(token))
|
|
57009
|
+
overlap++;
|
|
57017
57010
|
}
|
|
57018
|
-
|
|
57019
|
-
if (!provenance)
|
|
57020
|
-
return null;
|
|
57021
|
-
return {
|
|
57022
|
-
evidence: citations,
|
|
57023
|
-
sourceKind: provenance.sourceKind,
|
|
57024
|
-
sourceId: provenance.sourceEntryId ?? provenance.sourceId,
|
|
57025
|
-
sourcePath: provenance.sourcePath,
|
|
57026
|
-
sourceRoot: "dreaming"
|
|
57027
|
-
};
|
|
57011
|
+
return overlap;
|
|
57028
57012
|
}
|
|
57029
|
-
function
|
|
57030
|
-
|
|
57031
|
-
|
|
57032
|
-
|
|
57033
|
-
|
|
57034
|
-
|
|
57035
|
-
|
|
57036
|
-
|
|
57037
|
-
|
|
57038
|
-
if (
|
|
57039
|
-
return
|
|
57040
|
-
}
|
|
57041
|
-
const provenance = provenanceForEvidence(params.accessor, params.agentId, operation, params.allowedEvidence);
|
|
57042
|
-
const resolvedProvenance = provenance ?? attentionProvenance(params.accessor, params.agentId, operation);
|
|
57043
|
-
if (resolvedProvenance === null) {
|
|
57044
|
-
return {
|
|
57045
|
-
ok: false,
|
|
57046
|
-
items: [],
|
|
57047
|
-
error: "Every operation must cite an exact quote from scoped episodic evidence"
|
|
57048
|
-
};
|
|
57013
|
+
function hasAntonymConflict(leftTokens, rightTokens, pairs = ANTONYM_PAIRS) {
|
|
57014
|
+
for (const [a, b] of pairs) {
|
|
57015
|
+
const leftHasA = leftTokens.has(a);
|
|
57016
|
+
const leftHasB = leftTokens.has(b);
|
|
57017
|
+
const rightHasA = rightTokens.has(a);
|
|
57018
|
+
const rightHasB = rightTokens.has(b);
|
|
57019
|
+
const leftExclusive = leftHasA !== leftHasB;
|
|
57020
|
+
const rightExclusive = rightHasA !== rightHasB;
|
|
57021
|
+
const opposite = leftHasA && rightHasB || leftHasB && rightHasA;
|
|
57022
|
+
if (leftExclusive && rightExclusive && opposite) {
|
|
57023
|
+
return true;
|
|
57049
57024
|
}
|
|
57050
|
-
validated.push({
|
|
57051
|
-
operation: operation.operation,
|
|
57052
|
-
payload: operation.payload,
|
|
57053
|
-
reason: operation.reason,
|
|
57054
|
-
evidence: resolvedProvenance.evidence,
|
|
57055
|
-
confidence: operation.confidence,
|
|
57056
|
-
risk: operation.risk ?? null,
|
|
57057
|
-
sourceKind: resolvedProvenance.sourceKind,
|
|
57058
|
-
sourceId: resolvedProvenance.sourceId,
|
|
57059
|
-
sourcePath: resolvedProvenance.sourcePath,
|
|
57060
|
-
sourceRoot: resolvedProvenance.sourceRoot
|
|
57061
|
-
});
|
|
57062
57025
|
}
|
|
57063
|
-
|
|
57064
|
-
|
|
57065
|
-
|
|
57066
|
-
|
|
57067
|
-
|
|
57068
|
-
|
|
57069
|
-
|
|
57070
|
-
|
|
57071
|
-
|
|
57072
|
-
|
|
57073
|
-
|
|
57074
|
-
|
|
57075
|
-
|
|
57076
|
-
|
|
57077
|
-
|
|
57078
|
-
|
|
57079
|
-
items.push({ index, ok: false, error: error52 instanceof Error ? error52.message : String(error52) });
|
|
57080
|
-
}
|
|
57081
|
-
}
|
|
57082
|
-
});
|
|
57083
|
-
const ok = items.some((item) => item.ok);
|
|
57084
|
-
return { ok, items, ...ok ? {} : { error: "No ontology operations applied" } };
|
|
57026
|
+
return false;
|
|
57027
|
+
}
|
|
57028
|
+
function detectProspectiveContradictionRisk(candidate, existing) {
|
|
57029
|
+
const candidateTokens = tokenize(candidate);
|
|
57030
|
+
const existingTokens = tokenize(existing);
|
|
57031
|
+
const lexicalOverlap = overlapCount(candidateTokens, existingTokens);
|
|
57032
|
+
if (candidateTokens.length === 0 || existingTokens.length === 0 || lexicalOverlap < 2) {
|
|
57033
|
+
return { detected: false, lexicalOverlap, reason: null };
|
|
57034
|
+
}
|
|
57035
|
+
if (hasNegation(candidateTokens) !== hasNegation(existingTokens)) {
|
|
57036
|
+
return { detected: true, lexicalOverlap, reason: "negation_mismatch" };
|
|
57037
|
+
}
|
|
57038
|
+
if (hasAntonymConflict(new Set(candidateTokens), new Set(existingTokens), PROSPECTIVE_ANTONYM_PAIRS)) {
|
|
57039
|
+
return { detected: true, lexicalOverlap, reason: "antonym_conflict" };
|
|
57040
|
+
}
|
|
57041
|
+
return { detected: false, lexicalOverlap, reason: null };
|
|
57085
57042
|
}
|
|
57086
57043
|
|
|
57087
57044
|
// ../../platform/daemon/src/pipeline/dreaming-operation-contract.ts
|
|
@@ -57245,103 +57202,183 @@ var DREAMING_ONTOLOGY_OPERATION_SCHEMA = exports_external.discriminatedUnion("op
|
|
|
57245
57202
|
operation("attach_interface")
|
|
57246
57203
|
]);
|
|
57247
57204
|
|
|
57248
|
-
// ../../platform/daemon/src/pipeline/
|
|
57249
|
-
|
|
57250
|
-
"
|
|
57251
|
-
|
|
57252
|
-
|
|
57253
|
-
"
|
|
57254
|
-
"
|
|
57255
|
-
"
|
|
57256
|
-
"
|
|
57257
|
-
"
|
|
57258
|
-
|
|
57259
|
-
"wont",
|
|
57260
|
-
"without"
|
|
57261
|
-
]);
|
|
57262
|
-
var PROSPECTIVE_ANTONYM_PAIRS = [
|
|
57263
|
-
["enabled", "disabled"],
|
|
57264
|
-
["allow", "deny"],
|
|
57265
|
-
["accept", "reject"],
|
|
57266
|
-
["always", "never"],
|
|
57267
|
-
["on", "off"],
|
|
57268
|
-
["true", "false"]
|
|
57269
|
-
];
|
|
57270
|
-
var ANTONYM_PAIRS = [
|
|
57271
|
-
["enabled", "disabled"],
|
|
57272
|
-
["allow", "deny"],
|
|
57273
|
-
["accept", "reject"],
|
|
57274
|
-
["always", "never"],
|
|
57275
|
-
["on", "off"],
|
|
57276
|
-
["true", "false"],
|
|
57277
|
-
["yes", "no"],
|
|
57278
|
-
["together", "apart"],
|
|
57279
|
-
["dating", "single"],
|
|
57280
|
-
["married", "divorced"],
|
|
57281
|
-
["friends", "strangers"],
|
|
57282
|
-
["close", "distant"],
|
|
57283
|
-
["love", "hate"],
|
|
57284
|
-
["like", "dislike"],
|
|
57285
|
-
["prefer", "avoid"],
|
|
57286
|
-
["enjoy", "dread"],
|
|
57287
|
-
["want", "refuse"],
|
|
57288
|
-
["start", "stop"],
|
|
57289
|
-
["begin", "end"],
|
|
57290
|
-
["open", "close"],
|
|
57291
|
-
["join", "leave"],
|
|
57292
|
-
["arrive", "depart"],
|
|
57293
|
-
["buy", "sell"],
|
|
57294
|
-
["alive", "dead"],
|
|
57295
|
-
["active", "inactive"],
|
|
57296
|
-
["positive", "negative"],
|
|
57297
|
-
["increase", "decrease"],
|
|
57298
|
-
["before", "after"]
|
|
57299
|
-
];
|
|
57300
|
-
var ANTONYM_SET = new Set(ANTONYM_PAIRS.flatMap(([a, b]) => [`${a}:${b}`, `${b}:${a}`]));
|
|
57301
|
-
function tokenize(text2) {
|
|
57302
|
-
return text2.toLowerCase().replace(/[^a-z0-9\s]/g, " ").split(/\s+/).filter((token) => token.length >= 2);
|
|
57205
|
+
// ../../platform/daemon/src/pipeline/dreaming-operations.ts
|
|
57206
|
+
function citationRecord(value) {
|
|
57207
|
+
if (typeof value !== "object" || value === null || Array.isArray(value))
|
|
57208
|
+
return null;
|
|
57209
|
+
const citation = value;
|
|
57210
|
+
const sourceRef = typeof citation.source_ref === "string" ? citation.source_ref.trim() : "";
|
|
57211
|
+
const sourceKind = typeof citation.source_kind === "string" ? citation.source_kind.trim() : "";
|
|
57212
|
+
const sourceId = typeof citation.source_id === "string" ? citation.source_id.trim() : "";
|
|
57213
|
+
const sourcePath = typeof citation.source_path === "string" ? citation.source_path.trim() : null;
|
|
57214
|
+
const quote = typeof citation.quote === "string" ? citation.quote.trim() : "";
|
|
57215
|
+
return sourceRef && sourceKind && sourceId && quote ? { sourceRef, sourceKind, sourceId, sourcePath, quote } : null;
|
|
57303
57216
|
}
|
|
57304
|
-
function
|
|
57305
|
-
|
|
57217
|
+
function citeEvidence(accessor, agentId, citation, allowedEvidence) {
|
|
57218
|
+
const requested = citationRecord(citation);
|
|
57219
|
+
if (requested === null)
|
|
57220
|
+
return null;
|
|
57221
|
+
const evidence = allowedEvidence ?? accessor.withReadDb((db) => {
|
|
57222
|
+
const source = readEpisodicSource(db, { agentId, from: requested.sourceRef });
|
|
57223
|
+
return source === null ? [] : createDreamingAgentEvidence([source]);
|
|
57224
|
+
});
|
|
57225
|
+
return evidence.find((record6) => record6.sourceRef === requested.sourceRef && record6.sourceKind === requested.sourceKind && record6.sourceId === requested.sourceId && (requested.sourcePath === null || record6.sourcePath === requested.sourcePath) && record6.content.includes(requested.quote)) ?? null;
|
|
57306
57226
|
}
|
|
57307
|
-
function
|
|
57308
|
-
|
|
57309
|
-
let overlap = 0;
|
|
57310
|
-
for (const token of left) {
|
|
57311
|
-
if (rightSet.has(token))
|
|
57312
|
-
overlap++;
|
|
57313
|
-
}
|
|
57314
|
-
return overlap;
|
|
57227
|
+
function noSelectors(payload2, keys2) {
|
|
57228
|
+
return keys2.every((key) => payload2[key] === undefined || payload2[key] === null);
|
|
57315
57229
|
}
|
|
57316
|
-
function
|
|
57317
|
-
|
|
57318
|
-
const leftHasA = leftTokens.has(a);
|
|
57319
|
-
const leftHasB = leftTokens.has(b);
|
|
57320
|
-
const rightHasA = rightTokens.has(a);
|
|
57321
|
-
const rightHasB = rightTokens.has(b);
|
|
57322
|
-
const leftExclusive = leftHasA !== leftHasB;
|
|
57323
|
-
const rightExclusive = rightHasA !== rightHasB;
|
|
57324
|
-
const opposite = leftHasA && rightHasB || leftHasB && rightHasA;
|
|
57325
|
-
if (leftExclusive && rightExclusive && opposite) {
|
|
57326
|
-
return true;
|
|
57327
|
-
}
|
|
57328
|
-
}
|
|
57329
|
-
return false;
|
|
57230
|
+
function forceRequested(value) {
|
|
57231
|
+
return value === true || value === 1 || value === "1" || value === "true";
|
|
57330
57232
|
}
|
|
57331
|
-
function
|
|
57332
|
-
const
|
|
57333
|
-
|
|
57334
|
-
|
|
57335
|
-
|
|
57336
|
-
|
|
57233
|
+
function semanticDuplicateIds(accessor, agentId, canonicalName) {
|
|
57234
|
+
const placeholders = SOURCE_NATIVE_TOPOLOGY_ENTITY_TYPES.map(() => "?").join(", ");
|
|
57235
|
+
return accessor.withReadDb((db) => {
|
|
57236
|
+
const rows = db.prepare(`SELECT id FROM entities
|
|
57237
|
+
WHERE agent_id = ? AND COALESCE(status, 'active') = 'active'
|
|
57238
|
+
AND canonical_name = ?
|
|
57239
|
+
AND COALESCE(pinned, 0) = 0
|
|
57240
|
+
AND NOT (entity_type IN (${placeholders}) OR (entity_type = 'source' AND source_root IS NOT NULL))`).all(agentId, canonicalName, ...SOURCE_NATIVE_TOPOLOGY_ENTITY_TYPES);
|
|
57241
|
+
return new Set(rows.map((row) => row.id));
|
|
57242
|
+
});
|
|
57243
|
+
}
|
|
57244
|
+
function attentionProvenance(accessor, agentId, operation2) {
|
|
57245
|
+
const reference = operation2.provenance?.trim();
|
|
57246
|
+
if (!reference?.startsWith("attention:"))
|
|
57247
|
+
return null;
|
|
57248
|
+
if (!new Set(["archive_entity", "archive_aspect", "archive_claim_value", "archive_link", "merge_entities"]).has(operation2.operation))
|
|
57249
|
+
return null;
|
|
57250
|
+
const attentionId = reference.slice("attention:".length);
|
|
57251
|
+
if (!attentionId)
|
|
57252
|
+
return null;
|
|
57253
|
+
const attention = getDreamingAttentionById(accessor, { agentId, id: attentionId });
|
|
57254
|
+
if (attention?.kind !== "hygiene")
|
|
57255
|
+
return null;
|
|
57256
|
+
const payload2 = operation2.payload;
|
|
57257
|
+
if (forceRequested(payload2.force))
|
|
57258
|
+
return null;
|
|
57259
|
+
let expectedTarget = false;
|
|
57260
|
+
if (operation2.operation === "archive_entity") {
|
|
57261
|
+
expectedTarget = typeof payload2.entity_id === "string" && payload2.entity_id === attention.details.entityId && noSelectors(payload2, ["selector", "entity", "name"]) && attention.subjectRef === `entity:${payload2.entity_id}`;
|
|
57262
|
+
} else if (operation2.operation === "archive_aspect") {
|
|
57263
|
+
expectedTarget = typeof payload2.entity_id === "string" && typeof payload2.aspect_id === "string" && payload2.entity_id === attention.details.entityId && payload2.aspect_id === attention.details.aspectId && noSelectors(payload2, ["entity", "selector", "aspect", "name"]) && attention.subjectRef === `aspect:${payload2.aspect_id}`;
|
|
57264
|
+
} else if (operation2.operation === "archive_claim_value") {
|
|
57265
|
+
expectedTarget = typeof payload2.attribute_id === "string" && payload2.attribute_id === attention.details.attributeId && attention.subjectRef === `attribute:${payload2.attribute_id}`;
|
|
57266
|
+
} else if (operation2.operation === "archive_link") {
|
|
57267
|
+
const linkId = payload2.id ?? payload2.dependency_id ?? payload2.link_id;
|
|
57268
|
+
expectedTarget = typeof linkId === "string" && linkId === attention.details.linkId && attention.subjectRef === `link:${linkId}`;
|
|
57269
|
+
} else if (operation2.operation === "merge_entities") {
|
|
57270
|
+
const targetId = payload2.target_entity_id;
|
|
57271
|
+
const sourceIds = payload2.source_entity_ids;
|
|
57272
|
+
const groupIds = semanticDuplicateIds(accessor, agentId, attention.details.canonicalName ?? "");
|
|
57273
|
+
expectedTarget = attention.subjectRef === `duplicate:${attention.details.canonicalName}` && typeof targetId === "string" && noSelectors(payload2, [
|
|
57274
|
+
"target_entity",
|
|
57275
|
+
"target",
|
|
57276
|
+
"target_id",
|
|
57277
|
+
"source_entities",
|
|
57278
|
+
"sources",
|
|
57279
|
+
"source_entity",
|
|
57280
|
+
"source",
|
|
57281
|
+
"source_ids",
|
|
57282
|
+
"source_entity_id",
|
|
57283
|
+
"source_id"
|
|
57284
|
+
]) && groupIds.size > 1 && groupIds.has(targetId) && Array.isArray(sourceIds) && sourceIds.length > 0 && sourceIds.every((id) => typeof id === "string" && groupIds.has(id) && id !== targetId);
|
|
57337
57285
|
}
|
|
57338
|
-
if (
|
|
57339
|
-
return
|
|
57286
|
+
if (!expectedTarget)
|
|
57287
|
+
return null;
|
|
57288
|
+
return {
|
|
57289
|
+
evidence: [
|
|
57290
|
+
{
|
|
57291
|
+
source_ref: reference,
|
|
57292
|
+
source_kind: "attention",
|
|
57293
|
+
source_id: attention.id,
|
|
57294
|
+
subject_ref: attention.subjectRef,
|
|
57295
|
+
details: attention.details
|
|
57296
|
+
}
|
|
57297
|
+
],
|
|
57298
|
+
sourceKind: "attention",
|
|
57299
|
+
sourceId: attention.id,
|
|
57300
|
+
sourcePath: attention.subjectRef,
|
|
57301
|
+
sourceRoot: "dreaming_attention"
|
|
57302
|
+
};
|
|
57303
|
+
}
|
|
57304
|
+
function provenanceForEvidence(accessor, agentId, operation2, allowedEvidence) {
|
|
57305
|
+
const citations = operation2.evidence ?? [];
|
|
57306
|
+
if (citations.length === 0)
|
|
57307
|
+
return null;
|
|
57308
|
+
const matched = [];
|
|
57309
|
+
for (const citation of citations) {
|
|
57310
|
+
const record6 = citeEvidence(accessor, agentId, citation, allowedEvidence);
|
|
57311
|
+
if (record6 === null)
|
|
57312
|
+
return null;
|
|
57313
|
+
matched.push(record6);
|
|
57340
57314
|
}
|
|
57341
|
-
|
|
57342
|
-
|
|
57315
|
+
const provenance = matched.find((source) => source.sourceEntryId !== null) ?? matched[0];
|
|
57316
|
+
if (!provenance)
|
|
57317
|
+
return null;
|
|
57318
|
+
return {
|
|
57319
|
+
evidence: citations,
|
|
57320
|
+
sourceKind: provenance.sourceKind,
|
|
57321
|
+
sourceId: provenance.sourceEntryId ?? provenance.sourceId,
|
|
57322
|
+
sourcePath: provenance.sourcePath,
|
|
57323
|
+
sourceRoot: "dreaming"
|
|
57324
|
+
};
|
|
57325
|
+
}
|
|
57326
|
+
function applyDreamingOperations(params) {
|
|
57327
|
+
if (params.operations.length === 0)
|
|
57328
|
+
return { ok: false, items: [], error: "operations are required" };
|
|
57329
|
+
const allowedOperations = new Set(ONTOLOGY_PROPOSAL_OPERATIONS);
|
|
57330
|
+
const validated = [];
|
|
57331
|
+
for (const operation2 of params.operations) {
|
|
57332
|
+
if (!allowedOperations.has(operation2.operation)) {
|
|
57333
|
+
return { ok: false, items: [], error: `Unsupported ontology proposal operation: ${operation2.operation}` };
|
|
57334
|
+
}
|
|
57335
|
+
if (operation2.confidence !== undefined && (!Number.isFinite(operation2.confidence) || operation2.confidence < 0 || operation2.confidence > 1)) {
|
|
57336
|
+
return { ok: false, items: [], error: "confidence must be a finite number between 0 and 1" };
|
|
57337
|
+
}
|
|
57338
|
+
const provenance = provenanceForEvidence(params.accessor, params.agentId, operation2, params.allowedEvidence);
|
|
57339
|
+
const resolvedProvenance = provenance ?? attentionProvenance(params.accessor, params.agentId, operation2);
|
|
57340
|
+
if (resolvedProvenance === null) {
|
|
57341
|
+
return {
|
|
57342
|
+
ok: false,
|
|
57343
|
+
items: [],
|
|
57344
|
+
error: "Every operation must cite an exact quote from scoped episodic evidence"
|
|
57345
|
+
};
|
|
57346
|
+
}
|
|
57347
|
+
validated.push({
|
|
57348
|
+
operation: operation2.operation,
|
|
57349
|
+
payload: operation2.payload,
|
|
57350
|
+
reason: operation2.reason,
|
|
57351
|
+
evidence: resolvedProvenance.evidence,
|
|
57352
|
+
confidence: operation2.confidence,
|
|
57353
|
+
risk: operation2.risk ?? null,
|
|
57354
|
+
sourceKind: resolvedProvenance.sourceKind,
|
|
57355
|
+
sourceId: resolvedProvenance.sourceId,
|
|
57356
|
+
sourcePath: resolvedProvenance.sourcePath,
|
|
57357
|
+
sourceRoot: resolvedProvenance.sourceRoot
|
|
57358
|
+
});
|
|
57343
57359
|
}
|
|
57344
|
-
|
|
57360
|
+
const items = [];
|
|
57361
|
+
params.accessor.withWriteTx((db) => {
|
|
57362
|
+
for (let index = 0;index < validated.length; index += 1) {
|
|
57363
|
+
const savepoint = `signet_dream_op_${index}`;
|
|
57364
|
+
db.exec(`SAVEPOINT ${savepoint}`);
|
|
57365
|
+
try {
|
|
57366
|
+
const batch = applyOntologyOperationBatchInTx(db, {
|
|
57367
|
+
agentId: params.agentId,
|
|
57368
|
+
actor: params.actor,
|
|
57369
|
+
operations: [validated[index]]
|
|
57370
|
+
});
|
|
57371
|
+
db.exec(`RELEASE SAVEPOINT ${savepoint}`);
|
|
57372
|
+
items.push({ index, ok: true, proposal: batch.items[0]?.proposal, result: batch.items[0]?.result });
|
|
57373
|
+
} catch (error52) {
|
|
57374
|
+
db.exec(`ROLLBACK TO SAVEPOINT ${savepoint}`);
|
|
57375
|
+
db.exec(`RELEASE SAVEPOINT ${savepoint}`);
|
|
57376
|
+
items.push({ index, ok: false, error: error52 instanceof Error ? error52.message : String(error52) });
|
|
57377
|
+
}
|
|
57378
|
+
}
|
|
57379
|
+
});
|
|
57380
|
+
const ok = items.some((item) => item.ok);
|
|
57381
|
+
return { ok, items, ...ok ? {} : { error: "No ontology operations applied" } };
|
|
57345
57382
|
}
|
|
57346
57383
|
|
|
57347
57384
|
// ../../platform/daemon/src/pipeline/dreaming-capabilities.ts
|
|
@@ -57350,6 +57387,13 @@ var pagination = {
|
|
|
57350
57387
|
limit: exports_external.number().finite().optional(),
|
|
57351
57388
|
offset: exports_external.number().finite().optional()
|
|
57352
57389
|
};
|
|
57390
|
+
var HYGIENE_SUBJECT_DETAIL_KEYS = {
|
|
57391
|
+
entity: ["entityId"],
|
|
57392
|
+
aspect: ["entityId", "aspectId"],
|
|
57393
|
+
attribute: ["attributeId"],
|
|
57394
|
+
link: ["linkId"],
|
|
57395
|
+
duplicate: ["canonicalName"]
|
|
57396
|
+
};
|
|
57353
57397
|
function capability(id, title, description, readOnly, inputSchema, run) {
|
|
57354
57398
|
return {
|
|
57355
57399
|
id,
|
|
@@ -57432,7 +57476,13 @@ function createDreamingCapabilities(params) {
|
|
|
57432
57476
|
ok: true,
|
|
57433
57477
|
items: getEntityDependenciesDetailed(accessor, { entityId, agentId, direction: direction ?? "both" })
|
|
57434
57478
|
})),
|
|
57435
|
-
capability("get_claim_evidence", "Get claim evidence", "Resolve provenance for a scoped claim path.", true, exports_external.object({
|
|
57479
|
+
capability("get_claim_evidence", "Get claim evidence", "Resolve provenance for a scoped claim path.", true, exports_external.object({
|
|
57480
|
+
entity: exports_external.string().min(1),
|
|
57481
|
+
aspect: exports_external.string().min(1),
|
|
57482
|
+
group: exports_external.string().min(1),
|
|
57483
|
+
claim: exports_external.string().min(1),
|
|
57484
|
+
...pagination
|
|
57485
|
+
}), async ({ entity, aspect, group, claim, limit, offset }) => ({
|
|
57436
57486
|
ok: true,
|
|
57437
57487
|
result: getOntologyClaimEvidence(accessor, { agentId, entity, aspect, group, claim, limit, offset })
|
|
57438
57488
|
})),
|
|
@@ -57472,7 +57522,22 @@ function createDreamingCapabilities(params) {
|
|
|
57472
57522
|
}
|
|
57473
57523
|
return { ok: true, passId: params.passId };
|
|
57474
57524
|
}),
|
|
57475
|
-
capability("
|
|
57525
|
+
capability("record_hygiene_attention", "Record hygiene attention", 'Record that an inspected scoped entity, aspect, claim attribute, link, or duplicate group was flagged for hygiene. The returned id is valid provenance (provenance: "attention:<id>") for archive_entity, archive_aspect, archive_claim_value, archive_link, and merge_entities on the flagged target — no episodic source text required. Content-bearing writes still require exact episodic quotes.', false, exports_external.object({
|
|
57526
|
+
subjectRef: exports_external.string().trim().min(1).max(512),
|
|
57527
|
+
details: exports_external.record(exports_external.string(), exports_external.string()).optional(),
|
|
57528
|
+
priority: exports_external.number().finite().min(0).max(100).optional()
|
|
57529
|
+
}).refine((value) => {
|
|
57530
|
+
const prefix = value.subjectRef.split(":")[0];
|
|
57531
|
+
const required6 = HYGIENE_SUBJECT_DETAIL_KEYS[prefix];
|
|
57532
|
+
if (!required6)
|
|
57533
|
+
return false;
|
|
57534
|
+
const details = value.details ?? {};
|
|
57535
|
+
return required6.every((key) => typeof details[key] === "string" && details[key].trim().length > 0);
|
|
57536
|
+
}, "subjectRef must start with entity:, aspect:, attribute:, link:, or duplicate: and details must include the matching target id (entityId, aspectId, attributeId, linkId, or canonicalName)"), async ({ subjectRef, details, priority }) => {
|
|
57537
|
+
const id = accessor.withWriteTx((db) => enqueueDreamingAttentionInTx(db, { agentId, kind: "hygiene", subjectRef, details, priority }));
|
|
57538
|
+
return { ok: true, id, subjectRef, kind: "hygiene" };
|
|
57539
|
+
}),
|
|
57540
|
+
capability("apply_ontology_ops", "Apply ontology operations", 'Apply every semantic write through the daemon audit seam. Inspect relevant scoped graph state first. Content-bearing writes need an exact quote and source_ref from canonical episodic evidence. Hygiene archives/merges of inspected targets may instead cite provenance: "attention:<id>" using an id from <semantic_attention> or from record_hygiene_attention.', false, exports_external.object({ operations: exports_external.array(DREAMING_ONTOLOGY_OPERATION_SCHEMA).min(1).max(100) }), async ({ operations }) => {
|
|
57476
57541
|
const result = applyDreamingOperations({ accessor, agentId, actor, operations, allowedEvidence: evidence });
|
|
57477
57542
|
params.onOperationsApplied?.(result, operations);
|
|
57478
57543
|
return { ok: result.ok, ...result.error ? { error: result.error } : {}, items: result.items };
|
package/native-manifest.json
CHANGED
|
@@ -1,43 +1,43 @@
|
|
|
1
1
|
{
|
|
2
2
|
"schemaVersion": 1,
|
|
3
|
-
"version": "0.159.
|
|
3
|
+
"version": "0.159.10",
|
|
4
4
|
"assets": [
|
|
5
5
|
{
|
|
6
6
|
"name": "signet-darwin-arm64",
|
|
7
7
|
"platform": "darwin-arm64",
|
|
8
|
-
"sha256": "
|
|
8
|
+
"sha256": "89604ad99f6af6b13de1de4292405391ad62ede7dc7fabad62a85a2af3175caf",
|
|
9
9
|
"size": 125267872
|
|
10
10
|
},
|
|
11
11
|
{
|
|
12
12
|
"name": "signet-darwin-x64",
|
|
13
13
|
"platform": "darwin-x64",
|
|
14
|
-
"sha256": "
|
|
14
|
+
"sha256": "e5410099198ca9609c621a809adb236dd4d59482df19f557ed28d69ebd9bfd84",
|
|
15
15
|
"size": 129829440
|
|
16
16
|
},
|
|
17
17
|
{
|
|
18
18
|
"name": "signet-linux-arm64",
|
|
19
19
|
"platform": "linux-arm64",
|
|
20
|
-
"sha256": "
|
|
21
|
-
"size":
|
|
20
|
+
"sha256": "188510bb893ae5551ebdc2e3746a2358839967180c528092a92f87c2cf45aaeb",
|
|
21
|
+
"size": 162442142
|
|
22
22
|
},
|
|
23
23
|
{
|
|
24
24
|
"name": "signet-linux-x64",
|
|
25
25
|
"platform": "linux-x64",
|
|
26
|
-
"sha256": "
|
|
27
|
-
"size":
|
|
26
|
+
"sha256": "8642dcbe724ab3dff09259f4db16ded02dea65e80d51ba5de07130b580094459",
|
|
27
|
+
"size": 163001135
|
|
28
28
|
},
|
|
29
29
|
{
|
|
30
30
|
"name": "signet-win32-x64.exe",
|
|
31
31
|
"platform": "win32-x64",
|
|
32
|
-
"sha256": "
|
|
33
|
-
"size":
|
|
32
|
+
"sha256": "b43ac7b9765f7ec8c66a819c1261f78b1951cb4b54c74704a0e194eb6c9c399b",
|
|
33
|
+
"size": 179132928
|
|
34
34
|
}
|
|
35
35
|
],
|
|
36
36
|
"components": {
|
|
37
37
|
"connectors": {
|
|
38
|
-
"url": "signet-connectors-0.159.
|
|
39
|
-
"sha256": "
|
|
40
|
-
"size":
|
|
38
|
+
"url": "signet-connectors-0.159.10.tar.gz",
|
|
39
|
+
"sha256": "aa0820476471ca07503c491be396acb049e04d6a41074d9442476cc992326855",
|
|
40
|
+
"size": 15997
|
|
41
41
|
}
|
|
42
42
|
}
|
|
43
43
|
}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "signetai",
|
|
3
|
-
"version": "0.159.
|
|
3
|
+
"version": "0.159.10",
|
|
4
4
|
"description": "Signet native CLI installer wrapper",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -65,10 +65,10 @@
|
|
|
65
65
|
"access": "public"
|
|
66
66
|
},
|
|
67
67
|
"optionalDependencies": {
|
|
68
|
-
"signetai-darwin-arm64": "https://github.com/Signet-AI/signetai/releases/download/v0.159.
|
|
69
|
-
"signetai-darwin-x64": "https://github.com/Signet-AI/signetai/releases/download/v0.159.
|
|
70
|
-
"signetai-linux-arm64": "https://github.com/Signet-AI/signetai/releases/download/v0.159.
|
|
71
|
-
"signetai-linux-x64": "https://github.com/Signet-AI/signetai/releases/download/v0.159.
|
|
72
|
-
"signetai-win32-x64": "https://github.com/Signet-AI/signetai/releases/download/v0.159.
|
|
68
|
+
"signetai-darwin-arm64": "https://github.com/Signet-AI/signetai/releases/download/v0.159.10/signetai-darwin-arm64-0.159.10.tgz",
|
|
69
|
+
"signetai-darwin-x64": "https://github.com/Signet-AI/signetai/releases/download/v0.159.10/signetai-darwin-x64-0.159.10.tgz",
|
|
70
|
+
"signetai-linux-arm64": "https://github.com/Signet-AI/signetai/releases/download/v0.159.10/signetai-linux-arm64-0.159.10.tgz",
|
|
71
|
+
"signetai-linux-x64": "https://github.com/Signet-AI/signetai/releases/download/v0.159.10/signetai-linux-x64-0.159.10.tgz",
|
|
72
|
+
"signetai-win32-x64": "https://github.com/Signet-AI/signetai/releases/download/v0.159.10/signetai-win32-x64-0.159.10.tgz"
|
|
73
73
|
}
|
|
74
74
|
}
|