@kynver-app/mcp-agent-os 0.3.60 → 0.3.62
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/server.js +6 -2
- package/dist/tools/context-preview.d.ts +14 -0
- package/dist/tools/context-preview.js +51 -0
- package/dist/tools/taskflow.js +37 -2
- package/package.json +2 -2
package/dist/server.js
CHANGED
|
@@ -22,20 +22,21 @@ import { registerOperatingRulesTools } from "./tools/operating-rules.js";
|
|
|
22
22
|
import { registerProviderEvidenceTools } from "./tools/provider-evidence.js";
|
|
23
23
|
import { registerPrBacklogTools } from "./tools/pr-backlog.js";
|
|
24
24
|
import { registerTaskBoardWatchdogTools } from "./tools/task-board-watchdog.js";
|
|
25
|
-
import { registerTaskflowTools } from "./tools/taskflow.js";
|
|
26
25
|
import { registerPlanAuditRollupTools } from "./tools/plan-audit-rollup.js";
|
|
27
26
|
import { registerMeshLivenessTools } from "./tools/mesh-liveness.js";
|
|
28
27
|
import { registerDiagnosticsTools } from "./tools/diagnostics.js";
|
|
29
28
|
import { registerSkillsTools } from "./tools/skills.js";
|
|
30
29
|
import { registerMemoryLedgerTools } from "./tools/memory-ledger.js";
|
|
31
30
|
import { registerMemoryVaultTools } from "./tools/memory-vault.js";
|
|
32
|
-
import { registerContextExpandTools } from "./tools/context-expand.js";
|
|
33
31
|
import { registerMonitorTools } from "./tools/monitor.js";
|
|
34
32
|
import { registerMacroControlsTools } from "./tools/macro-controls.js";
|
|
35
33
|
import { registerKariAdMarketingLoopTools } from "./tools/kariad-marketing-loop.js";
|
|
36
34
|
import { registerKariAdOutcomeImportTools } from "./tools/kariad-outcome-import.js";
|
|
37
35
|
import { registerCmoControlTools } from "./tools/cmo-control.js";
|
|
38
36
|
import { registerCurrentFocusTools } from "./tools/current-focus.js";
|
|
37
|
+
import { registerContextExpandTools } from "./tools/context-expand.js";
|
|
38
|
+
import { registerContextPreviewTools } from "./tools/context-preview.js";
|
|
39
|
+
import { registerTaskflowTools } from "./tools/taskflow.js";
|
|
39
40
|
import { readOwnPackageVersion } from "./lib/package-version.js";
|
|
40
41
|
const PACKAGE_VERSION = readOwnPackageVersion(import.meta.url);
|
|
41
42
|
function jsonResult(data) {
|
|
@@ -723,6 +724,7 @@ export function createAgentOsServer() {
|
|
|
723
724
|
registerPrBacklogTools({ register, resolveToolSlug, jsonResult });
|
|
724
725
|
// Kynver-native task board watchdog (read + tick for verify_live).
|
|
725
726
|
registerTaskBoardWatchdogTools({ register, resolveToolSlug, jsonResult });
|
|
727
|
+
// Taskflow list/get/mutate (factory task board).
|
|
726
728
|
registerTaskflowTools({ register, resolveToolSlug, jsonResult });
|
|
727
729
|
// Compact active-plan audit rollup (broad completion audits).
|
|
728
730
|
registerPlanAuditRollupTools({ register, resolveToolSlug, jsonResult });
|
|
@@ -730,6 +732,8 @@ export function createAgentOsServer() {
|
|
|
730
732
|
registerMeshLivenessTools({ register, resolveToolSlug, jsonResult });
|
|
731
733
|
// Visible Diagnostics report (dispatch-funnel, closed-loop, verify-live health …).
|
|
732
734
|
registerDiagnosticsTools({ register, resolveToolSlug, jsonResult });
|
|
735
|
+
// PR6 dark preview shadow comparison (operator verification).
|
|
736
|
+
registerContextPreviewTools({ register, jsonResult });
|
|
733
737
|
// Skill library: query-first discovery + on-demand recipe fetch (bounded, metadata-first).
|
|
734
738
|
registerSkillsTools({ register, resolveToolSlug, jsonResult });
|
|
735
739
|
registerMemoryLedgerTools({ register, resolveToolSlug, jsonResult });
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
type ToolResult = {
|
|
2
|
+
content: {
|
|
3
|
+
type: "text";
|
|
4
|
+
text: string;
|
|
5
|
+
}[];
|
|
6
|
+
structuredContent?: unknown;
|
|
7
|
+
};
|
|
8
|
+
export interface ContextPreviewToolDeps {
|
|
9
|
+
register: (name: string, description: string, inputSchema: Record<string, unknown>, cb: (args: Record<string, unknown>) => unknown) => void;
|
|
10
|
+
jsonResult: (data: unknown) => ToolResult;
|
|
11
|
+
}
|
|
12
|
+
/** Admin-safe MCP tool — reports legacy vs shadow preview deltas (PR6 dark integration). */
|
|
13
|
+
export declare function registerContextPreviewTools({ register, jsonResult }: ContextPreviewToolDeps): void;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { z } from "zod";
|
|
2
|
+
import { buildChatMemoryShadowPreview, buildLegacyChatMemorySection, } from "@kynver-app/runtime";
|
|
3
|
+
function envTruthy(value) {
|
|
4
|
+
if (!value)
|
|
5
|
+
return false;
|
|
6
|
+
const normalized = value.trim().toLowerCase();
|
|
7
|
+
return normalized === "1" || normalized === "true" || normalized === "yes" || normalized === "on";
|
|
8
|
+
}
|
|
9
|
+
const DEFAULT_EXPANSION_ROUTE = "agent_os_search_memory";
|
|
10
|
+
/** Admin-safe MCP tool — reports legacy vs shadow preview deltas (PR6 dark integration). */
|
|
11
|
+
export function registerContextPreviewTools({ register, jsonResult }) {
|
|
12
|
+
register("agent_os_context_preview_shadow", "Compare legacy vs unified preview renderer output for a sample memory list. Dark rollout only — does not mutate prompts. Safe for operator verification.", {
|
|
13
|
+
memories: z
|
|
14
|
+
.array(z.object({
|
|
15
|
+
content: z.string(),
|
|
16
|
+
similarity: z.number().optional(),
|
|
17
|
+
}))
|
|
18
|
+
.optional()
|
|
19
|
+
.describe("Sample recalled memories to shadow-compare (default: one fixture row)."),
|
|
20
|
+
}, async (args) => {
|
|
21
|
+
const memories = args.memories ?? [
|
|
22
|
+
{
|
|
23
|
+
content: "Context maps should use route-map previews before raw payloads.",
|
|
24
|
+
similarity: 0.92,
|
|
25
|
+
},
|
|
26
|
+
];
|
|
27
|
+
const legacy = buildLegacyChatMemorySection(memories);
|
|
28
|
+
const shadow = buildChatMemoryShadowPreview(memories);
|
|
29
|
+
const flagEnabled = envTruthy(process.env.KYNVER_MEMORY_PREVIEW_ALL_SURFACES);
|
|
30
|
+
const legacyChars = legacy.length;
|
|
31
|
+
const shadowChars = shadow.length;
|
|
32
|
+
return jsonResult({
|
|
33
|
+
flag: {
|
|
34
|
+
enabled: flagEnabled,
|
|
35
|
+
envVar: "KYNVER_MEMORY_PREVIEW_ALL_SURFACES",
|
|
36
|
+
effectiveSource: flagEnabled ? "env_explicit_on" : "default_off",
|
|
37
|
+
},
|
|
38
|
+
comparison: {
|
|
39
|
+
surface: "chat_default",
|
|
40
|
+
legacyChars,
|
|
41
|
+
shadowChars,
|
|
42
|
+
charDelta: shadowChars - legacyChars,
|
|
43
|
+
shadowWithinBaseline: shadowChars <= legacyChars,
|
|
44
|
+
expansionRoutesRetained: shadow.includes(DEFAULT_EXPANSION_ROUTE),
|
|
45
|
+
usingShadow: flagEnabled,
|
|
46
|
+
},
|
|
47
|
+
legacyPreview: legacy.slice(0, 500),
|
|
48
|
+
shadowPreview: shadow.slice(0, 500),
|
|
49
|
+
});
|
|
50
|
+
});
|
|
51
|
+
}
|
package/dist/tools/taskflow.js
CHANGED
|
@@ -22,11 +22,46 @@ const idSchema = {
|
|
|
22
22
|
export function registerTaskflowTools({ register, resolveToolSlug, jsonResult, }) {
|
|
23
23
|
register("agent_os_taskflow_list", [
|
|
24
24
|
"List Kynver-native managed TaskFlows projected to the openclaw adapter wire shape.",
|
|
25
|
+
"Defaults: scope=active, detail=compact (use scope=all|recent and detail=full for audits).",
|
|
26
|
+
"Supports limit/offset flow pagination; taskWindow.truncated signals the shared 1000-row board window was saturated.",
|
|
25
27
|
"Safe for verify_live — read-only.",
|
|
26
|
-
].join(" "),
|
|
28
|
+
].join(" "), {
|
|
29
|
+
...idSchema,
|
|
30
|
+
scope: z
|
|
31
|
+
.enum(["active", "recent", "all"])
|
|
32
|
+
.optional()
|
|
33
|
+
.describe("Flow inventory scope (default active — non-terminal only)"),
|
|
34
|
+
detail: z
|
|
35
|
+
.enum(["compact", "full"])
|
|
36
|
+
.optional()
|
|
37
|
+
.describe("Projection detail (default compact — pruned terminal state)"),
|
|
38
|
+
limit: z
|
|
39
|
+
.number()
|
|
40
|
+
.int()
|
|
41
|
+
.positive()
|
|
42
|
+
.max(200)
|
|
43
|
+
.optional()
|
|
44
|
+
.describe("Max flows per page (default 50, max 200)"),
|
|
45
|
+
offset: z
|
|
46
|
+
.number()
|
|
47
|
+
.int()
|
|
48
|
+
.nonnegative()
|
|
49
|
+
.optional()
|
|
50
|
+
.describe("Flow page offset (default 0)"),
|
|
51
|
+
}, async (args) => {
|
|
27
52
|
const agentOsId = args.agentOsId?.trim() ||
|
|
28
53
|
(await resolveAgentOsId(args.slug ?? (await resolveToolSlug())));
|
|
29
|
-
const
|
|
54
|
+
const params = new URLSearchParams();
|
|
55
|
+
if (args.scope)
|
|
56
|
+
params.set("scope", args.scope);
|
|
57
|
+
if (args.detail)
|
|
58
|
+
params.set("detail", args.detail);
|
|
59
|
+
if (args.limit !== undefined)
|
|
60
|
+
params.set("limit", String(args.limit));
|
|
61
|
+
if (args.offset !== undefined)
|
|
62
|
+
params.set("offset", String(args.offset));
|
|
63
|
+
const qs = params.toString();
|
|
64
|
+
const data = await get(`/agent-os/by-id/${encodeURIComponent(agentOsId)}/taskflow${qs ? `?${qs}` : ""}`);
|
|
30
65
|
return jsonResult(data);
|
|
31
66
|
});
|
|
32
67
|
register("agent_os_taskflow_get", [
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@kynver-app/mcp-agent-os",
|
|
3
|
-
"version": "0.3.
|
|
3
|
+
"version": "0.3.62",
|
|
4
4
|
"description": "Kynver Agentic OS MCP server \u2014 slug-keyed agent identity, goals, projects, sessions, and long-term memory",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"bin": {
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"node": ">=24.11.0"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@kynver-app/runtime": "^0.2.
|
|
28
|
+
"@kynver-app/runtime": "^0.2.3",
|
|
29
29
|
"@modelcontextprotocol/sdk": "^1.29.0",
|
|
30
30
|
"zod": "^3.23.0"
|
|
31
31
|
},
|