@mcp-graph-workflow/mcp-graph 4.1.0 → 4.3.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/dist/api/router.d.ts.map +1 -1
- package/dist/api/router.js +24 -0
- package/dist/api/router.js.map +1 -1
- package/dist/api/routes/logs.d.ts +3 -0
- package/dist/api/routes/logs.d.ts.map +1 -0
- package/dist/api/routes/logs.js +38 -0
- package/dist/api/routes/logs.js.map +1 -0
- package/dist/core/events/event-types.d.ts +10 -1
- package/dist/core/events/event-types.d.ts.map +1 -1
- package/dist/core/planner/lifecycle-phase.d.ts +27 -8
- package/dist/core/planner/lifecycle-phase.d.ts.map +1 -1
- package/dist/core/planner/lifecycle-phase.js +89 -14
- package/dist/core/planner/lifecycle-phase.js.map +1 -1
- package/dist/core/store/migrations.d.ts.map +1 -1
- package/dist/core/store/migrations.js +13 -0
- package/dist/core/store/migrations.js.map +1 -1
- package/dist/core/store/sqlite-store.d.ts +2 -0
- package/dist/core/store/sqlite-store.d.ts.map +1 -1
- package/dist/core/store/sqlite-store.js +17 -0
- package/dist/core/store/sqlite-store.js.map +1 -1
- package/dist/core/utils/logger.d.ts +4 -0
- package/dist/core/utils/logger.d.ts.map +1 -1
- package/dist/core/utils/logger.js +34 -0
- package/dist/core/utils/logger.js.map +1 -1
- package/dist/mcp/lifecycle-wrapper.d.ts +8 -2
- package/dist/mcp/lifecycle-wrapper.d.ts.map +1 -1
- package/dist/mcp/lifecycle-wrapper.js +17 -4
- package/dist/mcp/lifecycle-wrapper.js.map +1 -1
- package/dist/mcp/tools/index.d.ts.map +1 -1
- package/dist/mcp/tools/index.js +2 -0
- package/dist/mcp/tools/index.js.map +1 -1
- package/dist/mcp/tools/set-phase.d.ts +4 -0
- package/dist/mcp/tools/set-phase.d.ts.map +1 -0
- package/dist/mcp/tools/set-phase.js +48 -0
- package/dist/mcp/tools/set-phase.js.map +1 -0
- package/dist/schemas/log.schema.d.ts +24 -0
- package/dist/schemas/log.schema.d.ts.map +1 -0
- package/dist/schemas/log.schema.js +10 -0
- package/dist/schemas/log.schema.js.map +1 -0
- package/dist/web/dashboard/dist/assets/{benchmark-tab-CESZcCtO.js → benchmark-tab-5xQOEgKI.js} +1 -1
- package/dist/web/dashboard/dist/assets/{gitnexus-tab-ClNGphK5.js → gitnexus-tab-DiextoFD.js} +1 -1
- package/dist/web/dashboard/dist/assets/{graph-tab-BUAkTto0.js → graph-tab-BWyH2uGm.js} +1 -1
- package/dist/web/dashboard/dist/assets/{graph-utils-M7iOhRI-.js → graph-utils-CwfVyQ0x.js} +1 -1
- package/dist/web/dashboard/dist/assets/index-BYepgmDE.css +1 -0
- package/dist/web/dashboard/dist/assets/{index-D9i2aVjo.js → index-DSExqypu.js} +15 -15
- package/dist/web/dashboard/dist/assets/{insights-tab-CWUU6eDi.js → insights-tab-CncahgJb.js} +1 -1
- package/dist/web/dashboard/dist/assets/logs-tab-sUqUxW7O.js +2 -0
- package/dist/web/dashboard/dist/assets/{prd-backlog-tab-DAHBiRO-.js → prd-backlog-tab-wbCrJ8KJ.js} +1 -1
- package/dist/web/dashboard/dist/assets/{serena-tab-DwiZ6Jm3.js → serena-tab-C5Gk0M6t.js} +1 -1
- package/dist/web/dashboard/dist/index.html +2 -2
- package/package.json +1 -1
- package/dist/web/dashboard/dist/assets/index-BnLPCC8R.css +0 -1
|
@@ -1,3 +1,32 @@
|
|
|
1
|
+
const MAX_BUFFER_SIZE = 1000;
|
|
2
|
+
const logBuffer = [];
|
|
3
|
+
let nextId = 1;
|
|
4
|
+
let logListener = null;
|
|
5
|
+
function appendToBuffer(level, message, context) {
|
|
6
|
+
const entry = {
|
|
7
|
+
id: nextId++,
|
|
8
|
+
level,
|
|
9
|
+
message,
|
|
10
|
+
timestamp: new Date().toISOString(),
|
|
11
|
+
...(context && Object.keys(context).length > 0 ? { context } : {}),
|
|
12
|
+
};
|
|
13
|
+
logBuffer.push(entry);
|
|
14
|
+
if (logBuffer.length > MAX_BUFFER_SIZE) {
|
|
15
|
+
logBuffer.splice(0, logBuffer.length - MAX_BUFFER_SIZE);
|
|
16
|
+
}
|
|
17
|
+
if (logListener) {
|
|
18
|
+
logListener(entry);
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
export function getLogBuffer() {
|
|
22
|
+
return [...logBuffer];
|
|
23
|
+
}
|
|
24
|
+
export function clearLogBuffer() {
|
|
25
|
+
logBuffer.length = 0;
|
|
26
|
+
}
|
|
27
|
+
export function setLogListener(listener) {
|
|
28
|
+
logListener = listener;
|
|
29
|
+
}
|
|
1
30
|
function formatCtx(ctx) {
|
|
2
31
|
if (!ctx || Object.keys(ctx).length === 0)
|
|
3
32
|
return "";
|
|
@@ -8,19 +37,24 @@ function formatCtx(ctx) {
|
|
|
8
37
|
}
|
|
9
38
|
export const logger = {
|
|
10
39
|
info(msg, ctx) {
|
|
40
|
+
appendToBuffer("info", msg, ctx);
|
|
11
41
|
console.error(`[INFO] ${msg}${formatCtx(ctx)}`);
|
|
12
42
|
},
|
|
13
43
|
warn(msg, ctx) {
|
|
44
|
+
appendToBuffer("warn", msg, ctx);
|
|
14
45
|
console.error(`[WARN] ${msg}${formatCtx(ctx)}`);
|
|
15
46
|
},
|
|
16
47
|
error(msg, ctx) {
|
|
48
|
+
appendToBuffer("error", msg, ctx);
|
|
17
49
|
console.error(`[ERROR] ${msg}${formatCtx(ctx)}`);
|
|
18
50
|
},
|
|
19
51
|
success(msg, ctx) {
|
|
52
|
+
appendToBuffer("success", msg, ctx);
|
|
20
53
|
console.error(`[OK] ${msg}${formatCtx(ctx)}`);
|
|
21
54
|
},
|
|
22
55
|
debug(msg, ctx) {
|
|
23
56
|
if (process.env.MCP_GRAPH_DEBUG) {
|
|
57
|
+
appendToBuffer("debug", msg, ctx);
|
|
24
58
|
console.error(`[DEBUG] ${msg}${formatCtx(ctx)}`);
|
|
25
59
|
}
|
|
26
60
|
},
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/utils/logger.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"logger.js","sourceRoot":"","sources":["../../../src/core/utils/logger.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
2
|
import type { SqliteStore } from "../core/store/sqlite-store.js";
|
|
3
3
|
import type { GraphDocument } from "../core/graph/graph-types.js";
|
|
4
|
-
import { type LifecyclePhase } from "../core/planner/lifecycle-phase.js";
|
|
4
|
+
import { type LifecyclePhase, type LifecycleWarning } from "../core/planner/lifecycle-phase.js";
|
|
5
5
|
export interface LifecycleBlock {
|
|
6
6
|
phase: LifecyclePhase;
|
|
7
7
|
reminder: string;
|
|
8
8
|
suggestedNext: string[];
|
|
9
9
|
principles: string[];
|
|
10
|
+
warnings: LifecycleWarning[];
|
|
11
|
+
}
|
|
12
|
+
export interface LifecycleBlockOptions {
|
|
13
|
+
toolName?: string;
|
|
14
|
+
hasSnapshots?: boolean;
|
|
15
|
+
phaseOverride?: LifecyclePhase | null;
|
|
10
16
|
}
|
|
11
17
|
/**
|
|
12
18
|
* Build the _lifecycle block to append to MCP tool responses.
|
|
13
19
|
*/
|
|
14
|
-
export declare function buildLifecycleBlock(doc: GraphDocument): LifecycleBlock;
|
|
20
|
+
export declare function buildLifecycleBlock(doc: GraphDocument, options?: LifecycleBlockOptions): LifecycleBlock;
|
|
15
21
|
/**
|
|
16
22
|
* Append _lifecycle block to an existing JSON response string.
|
|
17
23
|
* Returns the augmented JSON string.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-wrapper.d.ts","sourceRoot":"","sources":["../../src/mcp/lifecycle-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,
|
|
1
|
+
{"version":3,"file":"lifecycle-wrapper.d.ts","sourceRoot":"","sources":["../../src/mcp/lifecycle-wrapper.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,8BAA8B,CAAC;AAClE,OAAO,EAAwD,KAAK,cAAc,EAAE,KAAK,gBAAgB,EAAE,MAAM,oCAAoC,CAAC;AAGtJ,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,cAAc,CAAC;IACtB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,EAAE,CAAC;IACxB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,QAAQ,EAAE,gBAAgB,EAAE,CAAC;CAC9B;AAED,MAAM,WAAW,qBAAqB;IACpC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,aAAa,CAAC,EAAE,cAAc,GAAG,IAAI,CAAC;CACvC;AAED;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,CAAC,EAAE,qBAAqB,GAAG,cAAc,CAiBvG;AAED;;;GAGG;AACH,wBAAgB,yBAAyB,CAAC,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,aAAa,GAAG,MAAM,CAU1F;AAaD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CA0ClF"}
|
|
@@ -1,16 +1,23 @@
|
|
|
1
|
-
import { detectCurrentPhase, getPhaseGuidance } from "../core/planner/lifecycle-phase.js";
|
|
1
|
+
import { detectCurrentPhase, getPhaseGuidance, detectWarnings } from "../core/planner/lifecycle-phase.js";
|
|
2
2
|
import { logger } from "../core/utils/logger.js";
|
|
3
3
|
/**
|
|
4
4
|
* Build the _lifecycle block to append to MCP tool responses.
|
|
5
5
|
*/
|
|
6
|
-
export function buildLifecycleBlock(doc) {
|
|
7
|
-
const phase = detectCurrentPhase(doc
|
|
6
|
+
export function buildLifecycleBlock(doc, options) {
|
|
7
|
+
const phase = detectCurrentPhase(doc, {
|
|
8
|
+
hasSnapshots: options?.hasSnapshots,
|
|
9
|
+
phaseOverride: options?.phaseOverride,
|
|
10
|
+
});
|
|
8
11
|
const guidance = getPhaseGuidance(phase);
|
|
12
|
+
const warnings = options?.toolName
|
|
13
|
+
? detectWarnings(doc, phase, options.toolName)
|
|
14
|
+
: [];
|
|
9
15
|
return {
|
|
10
16
|
phase,
|
|
11
17
|
reminder: guidance.reminder,
|
|
12
18
|
suggestedNext: guidance.suggestedTools,
|
|
13
19
|
principles: guidance.principles,
|
|
20
|
+
warnings,
|
|
14
21
|
};
|
|
15
22
|
}
|
|
16
23
|
/**
|
|
@@ -46,7 +53,13 @@ export function wrapToolsWithLifecycle(server, store) {
|
|
|
46
53
|
const result = await originalHandler(...args);
|
|
47
54
|
try {
|
|
48
55
|
const doc = store.toGraphDocument();
|
|
49
|
-
const
|
|
56
|
+
const phaseOverrideValue = store.getProjectSetting("lifecycle_phase_override");
|
|
57
|
+
const snapshots = store.listSnapshots();
|
|
58
|
+
const lifecycleBlock = buildLifecycleBlock(doc, {
|
|
59
|
+
toolName: name,
|
|
60
|
+
hasSnapshots: snapshots.length > 0,
|
|
61
|
+
phaseOverride: phaseOverrideValue ? phaseOverrideValue : null,
|
|
62
|
+
});
|
|
50
63
|
// Append lifecycle as an additional text content item
|
|
51
64
|
if (result && Array.isArray(result.content)) {
|
|
52
65
|
result.content.push({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"lifecycle-wrapper.js","sourceRoot":"","sources":["../../src/mcp/lifecycle-wrapper.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,
|
|
1
|
+
{"version":3,"file":"lifecycle-wrapper.js","sourceRoot":"","sources":["../../src/mcp/lifecycle-wrapper.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AA8BpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CA+B5E"}
|
package/dist/mcp/tools/index.js
CHANGED
|
@@ -24,6 +24,7 @@ import { registerReindexKnowledge } from "./reindex-knowledge.js";
|
|
|
24
24
|
import { registerSyncStackDocs } from "./sync-stack-docs.js";
|
|
25
25
|
import { registerValidateTask } from "./validate-task.js";
|
|
26
26
|
import { registerPlanSprint } from "./plan-sprint.js";
|
|
27
|
+
import { registerSetPhase } from "./set-phase.js";
|
|
27
28
|
import { wrapToolsWithLifecycle } from "../lifecycle-wrapper.js";
|
|
28
29
|
export function registerAllTools(server, store) {
|
|
29
30
|
registerInit(server, store);
|
|
@@ -52,6 +53,7 @@ export function registerAllTools(server, store) {
|
|
|
52
53
|
registerSyncStackDocs(server, store);
|
|
53
54
|
registerValidateTask(server, store);
|
|
54
55
|
registerPlanSprint(server, store);
|
|
56
|
+
registerSetPhase(server, store);
|
|
55
57
|
// Wrap all registered tool responses with lifecycle context
|
|
56
58
|
wrapToolsWithLifecycle(server, store);
|
|
57
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/mcp/tools/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import type { McpServer } from "@modelcontextprotocol/sdk/server/mcp.js";
|
|
2
|
+
import type { SqliteStore } from "../../core/store/sqlite-store.js";
|
|
3
|
+
export declare function registerSetPhase(server: McpServer, store: SqliteStore): void;
|
|
4
|
+
//# sourceMappingURL=set-phase.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-phase.d.ts","sourceRoot":"","sources":["../../../src/mcp/tools/set-phase.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yCAAyC,CAAC;AACzE,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,kCAAkC,CAAC;AAMpE,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,WAAW,GAAG,IAAI,CAqD5E"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
import { detectCurrentPhase, getPhaseGuidance } from "../../core/planner/lifecycle-phase.js";
|
|
3
|
+
import { logger } from "../../core/utils/logger.js";
|
|
4
|
+
const VALID_PHASES = ["ANALYZE", "DESIGN", "PLAN", "IMPLEMENT", "VALIDATE", "REVIEW", "HANDOFF", "LISTENING", "auto"];
|
|
5
|
+
export function registerSetPhase(server, store) {
|
|
6
|
+
server.tool("set_phase", "Override lifecycle phase detection or reset to auto-detection", {
|
|
7
|
+
phase: z.enum(VALID_PHASES).describe("Lifecycle phase to force, or 'auto' to reset to automatic detection"),
|
|
8
|
+
}, async ({ phase }) => {
|
|
9
|
+
logger.debug("tool:set_phase", { phase });
|
|
10
|
+
if (phase === "auto") {
|
|
11
|
+
store.setProjectSetting("lifecycle_phase_override", "");
|
|
12
|
+
const doc = store.toGraphDocument();
|
|
13
|
+
const detectedPhase = detectCurrentPhase(doc);
|
|
14
|
+
const guidance = getPhaseGuidance(detectedPhase);
|
|
15
|
+
logger.info("tool:set_phase:ok", { action: "auto", detectedPhase });
|
|
16
|
+
return {
|
|
17
|
+
content: [
|
|
18
|
+
{
|
|
19
|
+
type: "text",
|
|
20
|
+
text: JSON.stringify({
|
|
21
|
+
ok: true,
|
|
22
|
+
action: "reset_to_auto",
|
|
23
|
+
detectedPhase,
|
|
24
|
+
reminder: guidance.reminder,
|
|
25
|
+
}, null, 2),
|
|
26
|
+
},
|
|
27
|
+
],
|
|
28
|
+
};
|
|
29
|
+
}
|
|
30
|
+
store.setProjectSetting("lifecycle_phase_override", phase);
|
|
31
|
+
const guidance = getPhaseGuidance(phase);
|
|
32
|
+
logger.info("tool:set_phase:ok", { action: "override", phase });
|
|
33
|
+
return {
|
|
34
|
+
content: [
|
|
35
|
+
{
|
|
36
|
+
type: "text",
|
|
37
|
+
text: JSON.stringify({
|
|
38
|
+
ok: true,
|
|
39
|
+
action: "override",
|
|
40
|
+
phase,
|
|
41
|
+
reminder: guidance.reminder,
|
|
42
|
+
}, null, 2),
|
|
43
|
+
},
|
|
44
|
+
],
|
|
45
|
+
};
|
|
46
|
+
});
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=set-phase.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"set-phase.js","sourceRoot":"","sources":["../../../src/mcp/tools/set-phase.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAG3B,OAAO,EAAE,kBAAkB,EAAE,gBAAgB,EAAE,MAAM,uCAAuC,CAAC;AAC7F,OAAO,EAAE,MAAM,EAAE,MAAM,4BAA4B,CAAC;AAEpD,MAAM,YAAY,GAAG,CAAC,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,WAAW,EAAE,UAAU,EAAE,QAAQ,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,CAAU,CAAC;AAE/H,MAAM,UAAU,gBAAgB,CAAC,MAAiB,EAAE,KAAkB;IACpE,MAAM,CAAC,IAAI,CACT,WAAW,EACX,+DAA+D,EAC/D;QACE,KAAK,EAAE,CAAC,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC,QAAQ,CAClC,qEAAqE,CACtE;KACF,EACD,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAClB,MAAM,CAAC,KAAK,CAAC,gBAAgB,EAAE,EAAE,KAAK,EAAE,CAAC,CAAC;QAE1C,IAAI,KAAK,KAAK,MAAM,EAAE,CAAC;YACrB,KAAK,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,EAAE,CAAC,CAAC;YACxD,MAAM,GAAG,GAAG,KAAK,CAAC,eAAe,EAAE,CAAC;YACpC,MAAM,aAAa,GAAG,kBAAkB,CAAC,GAAG,CAAC,CAAC;YAC9C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,aAAa,CAAC,CAAC;YAEjD,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,EAAE,CAAC,CAAC;YACpE,OAAO;gBACL,OAAO,EAAE;oBACP;wBACE,IAAI,EAAE,MAAe;wBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;4BACnB,EAAE,EAAE,IAAI;4BACR,MAAM,EAAE,eAAe;4BACvB,aAAa;4BACb,QAAQ,EAAE,QAAQ,CAAC,QAAQ;yBAC5B,EAAE,IAAI,EAAE,CAAC,CAAC;qBACZ;iBACF;aACF,CAAC;QACJ,CAAC;QAED,KAAK,CAAC,iBAAiB,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QAC3D,MAAM,QAAQ,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAEzC,MAAM,CAAC,IAAI,CAAC,mBAAmB,EAAE,EAAE,MAAM,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAChE,OAAO;YACL,OAAO,EAAE;gBACP;oBACE,IAAI,EAAE,MAAe;oBACrB,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;wBACnB,EAAE,EAAE,IAAI;wBACR,MAAM,EAAE,UAAU;wBAClB,KAAK;wBACL,QAAQ,EAAE,QAAQ,CAAC,QAAQ;qBAC5B,EAAE,IAAI,EAAE,CAAC,CAAC;iBACZ;aACF;SACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,24 @@
|
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
export declare const LogLevelSchema: z.ZodEnum<{
|
|
3
|
+
info: "info";
|
|
4
|
+
warn: "warn";
|
|
5
|
+
error: "error";
|
|
6
|
+
success: "success";
|
|
7
|
+
debug: "debug";
|
|
8
|
+
}>;
|
|
9
|
+
export declare const LogEntrySchema: z.ZodObject<{
|
|
10
|
+
id: z.ZodNumber;
|
|
11
|
+
level: z.ZodEnum<{
|
|
12
|
+
info: "info";
|
|
13
|
+
warn: "warn";
|
|
14
|
+
error: "error";
|
|
15
|
+
success: "success";
|
|
16
|
+
debug: "debug";
|
|
17
|
+
}>;
|
|
18
|
+
message: z.ZodString;
|
|
19
|
+
context: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
|
|
20
|
+
timestamp: z.ZodString;
|
|
21
|
+
}, z.core.$strip>;
|
|
22
|
+
export type LogLevel = z.infer<typeof LogLevelSchema>;
|
|
23
|
+
export type LogEntry = z.infer<typeof LogEntrySchema>;
|
|
24
|
+
//# sourceMappingURL=log.schema.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/log.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,eAAO,MAAM,cAAc;;;;;;EAAwD,CAAC;AAEpF,eAAO,MAAM,cAAc;;;;;;;;;;;;iBAMzB,CAAC;AAEH,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC;AACtD,MAAM,MAAM,QAAQ,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,cAAc,CAAC,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { z } from "zod/v4";
|
|
2
|
+
export const LogLevelSchema = z.enum(["info", "warn", "error", "success", "debug"]);
|
|
3
|
+
export const LogEntrySchema = z.object({
|
|
4
|
+
id: z.number().int(),
|
|
5
|
+
level: LogLevelSchema,
|
|
6
|
+
message: z.string(),
|
|
7
|
+
context: z.record(z.string(), z.unknown()).optional(),
|
|
8
|
+
timestamp: z.string(),
|
|
9
|
+
});
|
|
10
|
+
//# sourceMappingURL=log.schema.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"log.schema.js","sourceRoot":"","sources":["../../src/schemas/log.schema.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,QAAQ,CAAC;AAE3B,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC;AAEpF,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE;IACpB,KAAK,EAAE,cAAc;IACrB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE;IACnB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE;IACrD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CAAC"}
|
package/dist/web/dashboard/dist/assets/{benchmark-tab-CESZcCtO.js → benchmark-tab-5xQOEgKI.js}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
import{r as i,a as x,j as e}from"./index-
|
|
1
|
+
import{r as i,a as x,j as e}from"./index-DSExqypu.js";function m(){const[r,n]=i.useState(null),[c,s]=i.useState(!0),[o,d]=i.useState(null);return i.useEffect(()=>{async function t(){try{const l=await x.request("/benchmark");n(l)}catch(l){d(l instanceof Error?l.message:"Failed to load benchmark data")}finally{s(!1)}}t()},[]),{data:r,loading:c,error:o}}function h(){const{data:r,loading:n,error:c}=m();if(n)return e.jsx("div",{className:"flex items-center justify-center h-full text-[var(--color-text-muted)]",children:"Loading benchmark data..."});if(c)return e.jsxs("div",{className:"flex items-center justify-center h-full text-[var(--color-danger)]",children:["Failed to load: ",c]});if(!r)return e.jsx("div",{});const{tokenEconomy:s,dependencyIntelligence:o,formulas:d}=r;return e.jsxs("div",{className:"p-6 max-w-5xl mx-auto space-y-6 overflow-y-auto h-full",children:[e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Token Economy"}),e.jsxs("div",{className:"grid grid-cols-4 gap-3 mb-4",children:[e.jsx(a,{value:`${s.avgCompressionPercent}%`,label:"Avg Compress"}),e.jsx(a,{value:s.avgTokensPerTask.toLocaleString(),label:"Tokens Saved/Task"}),e.jsx(a,{value:s.totalNodes,label:"Nodes"}),e.jsx(a,{value:s.totalEdges,label:"Edges"})]}),s.perTaskMetrics.length>0&&e.jsxs("div",{children:[e.jsx("h4",{className:"text-xs font-medium text-[var(--color-text-muted)] mb-2",children:"Context Compression per Task"}),e.jsx("div",{className:"space-y-1.5","data-testid":"compression-bars",children:s.perTaskMetrics.slice(0,15).map(t=>e.jsxs("div",{className:"flex items-center gap-2 text-xs",children:[e.jsx("span",{className:"w-32 truncate",title:t.title,children:t.title}),e.jsx("div",{className:"flex-1 h-3 bg-[var(--color-bg-tertiary)] rounded-full overflow-hidden",children:e.jsx("div",{className:"h-full rounded-full bg-[var(--color-accent)]",style:{width:`${Math.min(t.compressionPercent,100)}%`}})}),e.jsxs("span",{className:"text-[var(--color-text-muted)] w-24 text-right",children:[t.compressionPercent,"% (",t.estimatedTokens," tok)"]})]},t.id))})]})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Dependency Intelligence"}),e.jsxs("div",{className:"grid grid-cols-3 gap-3",children:[e.jsx(a,{value:o.inferredDeps,label:"Auto Inferred"}),e.jsx(a,{value:`${o.blockedTasks}/${s.totalNodes}`,label:"Blocked Detected"}),e.jsx(a,{value:o.cycles,label:"Cycles Detected"})]})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Formulas & Justification"}),e.jsx("div",{className:"px-3 py-2 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-xs space-y-1","data-testid":"formulas-section",children:Object.entries(d).map(([t,l])=>e.jsxs("div",{className:"flex gap-2",children:[e.jsxs("span",{className:"text-[var(--color-text-muted)] font-mono w-40 shrink-0",children:[t,":"]}),e.jsx("span",{children:l})]},t))})]}),e.jsxs("section",{children:[e.jsx("h3",{className:"text-sm font-semibold mb-3",children:"Cost Savings per Task"}),e.jsxs("div",{className:"grid grid-cols-2 gap-3",children:[e.jsx(a,{value:`$${s.costSavings.opusPerTask.toFixed(3)}`,label:"Opus Input"}),e.jsx(a,{value:`$${s.costSavings.sonnetPerTask.toFixed(3)}`,label:"Sonnet Input"})]})]})]})}function a({value:r,label:n}){return e.jsxs("div",{className:"p-3 rounded-lg bg-[var(--color-bg-secondary)] border border-[var(--color-border)] text-center","data-testid":"metric-card",children:[e.jsx("div",{className:"text-xl font-bold",children:r}),e.jsx("div",{className:"text-[10px] text-[var(--color-text-muted)] uppercase",children:n})]})}export{h as BenchmarkTab};
|