loopctl-mcp-server 2.24.0 → 2.25.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/index.js +19 -0
- package/package.json +1 -1
package/index.js
CHANGED
|
@@ -848,6 +848,7 @@ async function knowledgeCreate({
|
|
|
848
848
|
tags,
|
|
849
849
|
project_id,
|
|
850
850
|
draft,
|
|
851
|
+
force,
|
|
851
852
|
source_type,
|
|
852
853
|
source_id,
|
|
853
854
|
idempotency_key,
|
|
@@ -868,6 +869,10 @@ async function knowledgeCreate({
|
|
|
868
869
|
// knowledge_publish.
|
|
869
870
|
if (draft) payload.draft = true;
|
|
870
871
|
|
|
872
|
+
// The server-side novelty gate dedups the proposal against the corpus (verdict in
|
|
873
|
+
// the response `gate`). force:true bypasses it.
|
|
874
|
+
if (force) payload.force = true;
|
|
875
|
+
|
|
871
876
|
const result = await apiCall(
|
|
872
877
|
"POST",
|
|
873
878
|
"/api/v1/articles",
|
|
@@ -2565,6 +2570,13 @@ const TOOLS = [
|
|
|
2565
2570
|
"to agents (search/index/context) right away — no separate publish step is needed. Pass " +
|
|
2566
2571
|
"draft: true to stage the article for later review instead; the response `note` says which " +
|
|
2567
2572
|
"outcome occurred, and a draft can be published afterwards with knowledge_publish. " +
|
|
2573
|
+
"NOVELTY GATE (default ON): the server semantically dedups your proposal against the published " +
|
|
2574
|
+
"corpus and returns a `gate.verdict` — `duplicate` means a near-identical article already exists, " +
|
|
2575
|
+
"so NOTHING was created (HTTP 200, `deduplicated: true`); read/update the article at `data.id` " +
|
|
2576
|
+
"instead (its `gate.similarity` ~1.0). `gated_to_draft` means high overlap, so the article was " +
|
|
2577
|
+
"created as a DRAFT (not published) with the near-neighbors in metadata.proposal_novelty for you " +
|
|
2578
|
+
"to merge or publish. `created` means it was novel and went through normally. Pass force: true to " +
|
|
2579
|
+
"bypass the gate when you intentionally want an article near an existing one. " +
|
|
2568
2580
|
"Concurrency-safe: if a create races/retries against an " +
|
|
2569
2581
|
"existing article with the same title AND an identical body (ignoring surrounding whitespace), the " +
|
|
2570
2582
|
"server returns that existing article idempotently (HTTP 200) instead of a 422. A same-title create " +
|
|
@@ -2600,6 +2612,13 @@ const TOOLS = [
|
|
|
2600
2612
|
"Optional: stage as a draft instead of publishing on create (default false → " +
|
|
2601
2613
|
"published immediately). Publish later with knowledge_publish.",
|
|
2602
2614
|
},
|
|
2615
|
+
force: {
|
|
2616
|
+
type: "boolean",
|
|
2617
|
+
description:
|
|
2618
|
+
"Optional: bypass the novelty gate (default false). When true, the server skips " +
|
|
2619
|
+
"semantic dedup and creates on the requested path even if a near-duplicate exists. " +
|
|
2620
|
+
"Use only when you've already checked and intend an article close to an existing one.",
|
|
2621
|
+
},
|
|
2603
2622
|
idempotency_key: {
|
|
2604
2623
|
type: "string",
|
|
2605
2624
|
description:
|