veryfront 0.1.1127 → 0.1.1132
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/esm/cli/commands/eval/command.d.ts +2 -70
- package/esm/cli/commands/eval/command.d.ts.map +1 -1
- package/esm/cli/commands/eval/command.js +207 -550
- package/esm/cli/templates/manifest.d.ts +1 -0
- package/esm/cli/templates/manifest.js +3 -2
- package/esm/deno.js +1 -1
- package/esm/src/agent/hosted/chat-execution-runtime.d.ts.map +1 -1
- package/esm/src/agent/hosted/chat-execution-runtime.js +16 -33
- package/esm/src/agent/hosted/child-fork-tool-sources.d.ts.map +1 -1
- package/esm/src/agent/hosted/child-fork-tool-sources.js +6 -38
- package/esm/src/agent/hosted/hosted-chat-finalization.d.ts +30 -0
- package/esm/src/agent/hosted/hosted-chat-finalization.d.ts.map +1 -0
- package/esm/src/agent/hosted/hosted-chat-finalization.js +249 -0
- package/esm/src/agent/hosted/project-remote-tool-source.d.ts.map +1 -1
- package/esm/src/agent/hosted/project-remote-tool-source.js +4 -23
- package/esm/src/agent/mcp-tool-policy.d.ts +19 -0
- package/esm/src/agent/mcp-tool-policy.d.ts.map +1 -0
- package/esm/src/agent/mcp-tool-policy.js +66 -0
- package/esm/src/agent/runtime/mcp-server-tool-sources.d.ts.map +1 -1
- package/esm/src/agent/runtime/mcp-server-tool-sources.js +8 -44
- package/esm/src/discovery/import-rewriter.d.ts.map +1 -1
- package/esm/src/discovery/import-rewriter.js +7 -90
- package/esm/src/eval/run-report.d.ts +189 -0
- package/esm/src/eval/run-report.d.ts.map +1 -0
- package/esm/src/eval/run-report.js +603 -0
- package/esm/src/html/hydration-script-builder/dev-client-renderer.js +1 -1
- package/esm/src/html/hydration-script-builder/prod-scripts.js +1 -1
- package/esm/src/html/hydration-script-builder/templates/router.d.ts.map +1 -1
- package/esm/src/html/hydration-script-builder/templates/router.js +35 -11
- package/esm/src/html/utils.d.ts.map +1 -1
- package/esm/src/html/utils.js +19 -45
- package/esm/src/index.client.d.ts +6 -21
- package/esm/src/index.client.d.ts.map +1 -1
- package/esm/src/index.client.js +6 -21
- package/esm/src/modules/server/ssr-import-rewriter.d.ts +2 -26
- package/esm/src/modules/server/ssr-import-rewriter.d.ts.map +1 -1
- package/esm/src/modules/server/ssr-import-rewriter.js +1 -206
- package/esm/src/react/runtime/core.d.ts +22 -0
- package/esm/src/react/runtime/core.d.ts.map +1 -1
- package/esm/src/react/runtime/core.js +1 -1
- package/esm/src/rendering/orchestrator/module-collection.d.ts +8 -0
- package/esm/src/rendering/orchestrator/module-collection.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/module-collection.js +10 -0
- package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
- package/esm/src/rendering/orchestrator/pipeline.js +2 -2
- package/esm/src/routing/api/context-builder.d.ts +7 -0
- package/esm/src/routing/api/context-builder.d.ts.map +1 -1
- package/esm/src/routing/api/context-builder.js +20 -2
- package/esm/src/routing/api/module-loader/external-import-rewriter.d.ts +2 -7
- package/esm/src/routing/api/module-loader/external-import-rewriter.d.ts.map +1 -1
- package/esm/src/routing/api/module-loader/external-import-rewriter.js +10 -209
- package/esm/src/server/dev-server/file-watch-setup.d.ts.map +1 -1
- package/esm/src/server/dev-server/file-watch-setup.js +11 -1
- package/esm/src/server/dev-server/middleware.d.ts.map +1 -1
- package/esm/src/server/dev-server/middleware.js +45 -11
- package/esm/src/server/handlers/dev/files/esbuild-plugins.d.ts.map +1 -1
- package/esm/src/server/handlers/dev/files/esbuild-plugins.js +22 -0
- package/esm/src/server/handlers/request/module/page-data-endpoint-handler.js +24 -1
- package/esm/src/server/handlers/response/not-found.d.ts +0 -1
- package/esm/src/server/handlers/response/not-found.d.ts.map +1 -1
- package/esm/src/server/handlers/response/not-found.js +9 -110
- package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
- package/esm/src/server/runtime-handler/index.js +66 -145
- package/esm/src/server/runtime-handler/project-runtime-context.d.ts +118 -0
- package/esm/src/server/runtime-handler/project-runtime-context.d.ts.map +1 -0
- package/esm/src/server/runtime-handler/project-runtime-context.js +181 -0
- package/esm/src/server/services/rsc/orchestrators/handler.d.ts +3 -1
- package/esm/src/server/services/rsc/orchestrators/handler.d.ts.map +1 -1
- package/esm/src/server/services/rsc/orchestrators/handler.js +13 -8
- package/esm/src/server/services/rsc/orchestrators/render-handler.d.ts +1 -1
- package/esm/src/server/services/rsc/orchestrators/render-handler.d.ts.map +1 -1
- package/esm/src/server/services/rsc/orchestrators/render-handler.js +2 -2
- package/esm/src/transforms/esm/http-cache.d.ts.map +1 -1
- package/esm/src/transforms/esm/http-cache.js +132 -46
- package/esm/src/transforms/esm/import-attributes.d.ts.map +1 -1
- package/esm/src/transforms/esm/import-attributes.js +2 -9
- package/esm/src/transforms/esm/in-flight-manager.d.ts +3 -2
- package/esm/src/transforms/esm/in-flight-manager.d.ts.map +1 -1
- package/esm/src/transforms/esm/in-flight-manager.js +6 -5
- package/esm/src/transforms/import-rewriter/core.d.ts +8 -0
- package/esm/src/transforms/import-rewriter/core.d.ts.map +1 -0
- package/esm/src/transforms/import-rewriter/core.js +27 -0
- package/esm/src/transforms/import-rewriter/import-edit.d.ts +57 -0
- package/esm/src/transforms/import-rewriter/import-edit.d.ts.map +1 -0
- package/esm/src/transforms/import-rewriter/import-edit.js +151 -0
- package/esm/src/transforms/import-rewriter/package-resolution.d.ts +12 -0
- package/esm/src/transforms/import-rewriter/package-resolution.d.ts.map +1 -0
- package/esm/src/transforms/import-rewriter/package-resolution.js +79 -0
- package/esm/src/transforms/import-rewriter/parse-cache.d.ts +4 -42
- package/esm/src/transforms/import-rewriter/parse-cache.d.ts.map +1 -1
- package/esm/src/transforms/import-rewriter/parse-cache.js +3 -134
- package/esm/src/transforms/import-rewriter/route-adapter.d.ts +24 -0
- package/esm/src/transforms/import-rewriter/route-adapter.d.ts.map +1 -0
- package/esm/src/transforms/import-rewriter/route-adapter.js +235 -0
- package/esm/src/transforms/import-rewriter/ssr-adapter.d.ts +27 -0
- package/esm/src/transforms/import-rewriter/ssr-adapter.d.ts.map +1 -0
- package/esm/src/transforms/import-rewriter/ssr-adapter.js +206 -0
- package/esm/src/transforms/import-rewriter/strategies/bare-strategy.d.ts.map +1 -1
- package/esm/src/transforms/import-rewriter/strategies/bare-strategy.js +16 -2
- package/esm/src/transforms/import-rewriter/unified-rewriter.d.ts +0 -4
- package/esm/src/transforms/import-rewriter/unified-rewriter.d.ts.map +1 -1
- package/esm/src/transforms/import-rewriter/unified-rewriter.js +2 -39
- package/esm/src/utils/version-constant.d.ts +1 -1
- package/esm/src/utils/version-constant.js +1 -1
- package/esm/src/workflow/executor/workflow-executor.d.ts +0 -20
- package/esm/src/workflow/executor/workflow-executor.d.ts.map +1 -1
- package/esm/src/workflow/executor/workflow-executor.js +41 -320
- package/esm/src/workflow/runtime/approval-manager.d.ts.map +1 -1
- package/esm/src/workflow/runtime/approval-manager.js +20 -61
- package/esm/src/workflow/runtime/workflow-run-control.d.ts +95 -0
- package/esm/src/workflow/runtime/workflow-run-control.d.ts.map +1 -0
- package/esm/src/workflow/runtime/workflow-run-control.js +529 -0
- package/esm/src/workflow/worker/run-manager.d.ts.map +1 -1
- package/esm/src/workflow/worker/run-manager.js +18 -92
- package/esm/src/workflow/worker/shared.d.ts +1 -1
- package/esm/src/workflow/worker/shared.d.ts.map +1 -1
- package/esm/src/workflow/worker/shared.js +17 -15
- package/package.json +5 -5
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { PERMISSION_DENIED } from "../errors/index.js";
|
|
2
|
+
function isPolicyEmpty(policy) {
|
|
3
|
+
return policy?.allow === undefined && policy?.deny === undefined;
|
|
4
|
+
}
|
|
5
|
+
function defaultDeniedDetail(toolName) {
|
|
6
|
+
return `Tool "${toolName}" is not allowed for this run`;
|
|
7
|
+
}
|
|
8
|
+
export function createMcpToolPolicyGate(policy, options) {
|
|
9
|
+
const deniedDetail = options?.deniedDetail ?? defaultDeniedDetail;
|
|
10
|
+
const allows = (toolName) => {
|
|
11
|
+
const deny = policy?.deny;
|
|
12
|
+
if (deny?.includes(toolName))
|
|
13
|
+
return false;
|
|
14
|
+
const allow = policy?.allow;
|
|
15
|
+
if (allow !== undefined)
|
|
16
|
+
return allow.includes(toolName);
|
|
17
|
+
return true;
|
|
18
|
+
};
|
|
19
|
+
const filterDefinitions = (definitions) => definitions.filter((definition) => allows(definition.name));
|
|
20
|
+
const assertAllowed = (toolName) => {
|
|
21
|
+
if (allows(toolName))
|
|
22
|
+
return;
|
|
23
|
+
throw PERMISSION_DENIED.create({ detail: deniedDetail(toolName) });
|
|
24
|
+
};
|
|
25
|
+
return { allows, filterDefinitions, assertAllowed };
|
|
26
|
+
}
|
|
27
|
+
export function wrapRemoteToolSourceWithMcpPolicy(source, policy, options) {
|
|
28
|
+
if (isPolicyEmpty(policy))
|
|
29
|
+
return source;
|
|
30
|
+
const gate = createMcpToolPolicyGate(policy, {
|
|
31
|
+
deniedDetail: (toolName) => options?.deniedDetail?.(toolName, source.id) ??
|
|
32
|
+
defaultDeniedDetail(toolName),
|
|
33
|
+
});
|
|
34
|
+
return {
|
|
35
|
+
...source,
|
|
36
|
+
id: source.id,
|
|
37
|
+
listTools: async (context) => gate.filterDefinitions(await source.listTools(context)),
|
|
38
|
+
executeTool: (toolName, args, context) => {
|
|
39
|
+
gate.assertAllowed(toolName);
|
|
40
|
+
return source.executeTool(toolName, args, context);
|
|
41
|
+
},
|
|
42
|
+
};
|
|
43
|
+
}
|
|
44
|
+
export function wrapHostToolSetWithMcpPolicy(tools, policy, options) {
|
|
45
|
+
if (isPolicyEmpty(policy))
|
|
46
|
+
return tools;
|
|
47
|
+
const gate = createMcpToolPolicyGate(policy, options);
|
|
48
|
+
const wrapped = {};
|
|
49
|
+
for (const [toolName, definition] of Object.entries(tools)) {
|
|
50
|
+
if (!gate.allows(toolName))
|
|
51
|
+
continue;
|
|
52
|
+
if (definition.execute === undefined) {
|
|
53
|
+
wrapped[toolName] = { ...definition };
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
const execute = definition.execute;
|
|
57
|
+
wrapped[toolName] = {
|
|
58
|
+
...definition,
|
|
59
|
+
execute: (toolInput, execOptions) => {
|
|
60
|
+
gate.assertAllowed(toolName);
|
|
61
|
+
return execute(toolInput, execOptions);
|
|
62
|
+
},
|
|
63
|
+
};
|
|
64
|
+
}
|
|
65
|
+
return wrapped;
|
|
66
|
+
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"mcp-server-tool-sources.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/mcp-server-tool-sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EAEtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"mcp-server-tool-sources.d.ts","sourceRoot":"","sources":["../../../../src/src/agent/runtime/mcp-server-tool-sources.ts"],"names":[],"mappings":"AAAA,OAAO,EAIL,KAAK,yBAAyB,EAC9B,KAAK,gBAAgB,EAEtB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,KAAK,EACV,WAAW,EAKZ,MAAM,aAAa,CAAC;AACrB,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChE,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,kCAAkC,CAAC;AAK1C,MAAM,MAAM,uBAAuB,GAAG;IACpC,qBAAqB,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAC3C,sBAAsB,CAAC,EAAE,MAAM,EAAE,CAAC;IAClC,2BAA2B,CAAC,EAAE,+BAA+B,CAAC;CAC/D,CAAC;AAEF,4DAA4D;AAC5D,eAAO,MAAM,2BAA2B,2BAA2B,CAAC;AACpE,+DAA+D;AAC/D,eAAO,MAAM,8BAA8B,eAAe,CAAC;AAgB3D,kFAAkF;AAClF,wBAAgB,sCAAsC,CAAC,KAAK,EAAE;IAC5D,KAAK,EAAE,WAAW,CAAC,OAAO,CAAC,CAAC;IAC5B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,kBAAkB,CAAC,EAAE,SAAS,MAAM,EAAE,CAAC;CACxC,GAAG,MAAM,EAAE,CAeX;AAqDD,mEAAmE;AACnE,wBAAgB,iCAAiC,CAC/C,OAAO,EAAE,gBAAgB,EAAE,GAAG,SAAS,EACvC,gBAAgB,EAAE,MAAM,EAAE,GAAG,SAAS,GACrC,gBAAgB,EAAE,GAAG,SAAS,CAQhC;AAkBD;;;;;;;;GAQG;AACH,wBAAgB,6CAA6C,CAC3D,OAAO,EAAE,gBAAgB,EAAE,GAAG,SAAS,EACvC,OAAO,EAAE,oBAAoB,GAC5B,gBAAgB,EAAE,GAAG,SAAS,CAoBhC;AAED,MAAM,MAAM,sCAAsC,GAAG;IACnD,sBAAsB,CAAC,EAAE,CAAC,MAAM,EAAE,yBAAyB,KAAK,gBAAgB,CAAC;IACjF,qBAAqB,CAAC,EAAE,MAAM,uBAAuB,CAAC;CACvD,CAAC;AAoBF,yEAAyE;AACzE,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,gBAAgB,EACxB,SAAS,EAAE,MAAM,GAChB,gBAAgB,CAsBlB;AAmED,kEAAkE;AAClE,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,WAAW,EACnB,YAAY,GAAE,sCAA2C,EACzD,OAAO,qBAAY,GAClB,gBAAgB,EAAE,GAAG,SAAS,CAiEhC"}
|
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { createProjectScopedRemoteToolCatalog, createRemoteMCPToolSource, isToolVisibleTo, toolRegistry, } from "../../tool/index.js";
|
|
2
|
-
import { CONFIG_INVALID
|
|
2
|
+
import { CONFIG_INVALID } from "../../errors/index.js";
|
|
3
3
|
import { getVeryfrontCloudHostBootstrap, } from "../../platform/cloud/resolver.js";
|
|
4
4
|
import { createAgentServiceRemoteMcpConfig } from "../service/mcp-server-config.js";
|
|
5
|
+
import { wrapRemoteToolSourceWithMcpPolicy } from "../mcp-tool-policy.js";
|
|
5
6
|
import { getActiveRuntimeRemoteToolSources } from "./remote-tool-source-context.js";
|
|
6
7
|
/** Canonical source id for the Veryfront API MCP server. */
|
|
7
8
|
export const VERYFRONT_API_MCP_SOURCE_ID = "veryfront-platform-mcp";
|
|
@@ -47,18 +48,6 @@ async function resolveHeaders(auth, context) {
|
|
|
47
48
|
}
|
|
48
49
|
return await resolveValue(auth.headers, context);
|
|
49
50
|
}
|
|
50
|
-
function isToolAllowed(toolName, policy) {
|
|
51
|
-
if (policy?.allow && !policy.allow.includes(toolName)) {
|
|
52
|
-
return false;
|
|
53
|
-
}
|
|
54
|
-
if (policy?.deny?.includes(toolName)) {
|
|
55
|
-
return false;
|
|
56
|
-
}
|
|
57
|
-
return true;
|
|
58
|
-
}
|
|
59
|
-
function filterToolDefinitions(definitions, policy) {
|
|
60
|
-
return definitions.filter((definition) => isToolAllowed(definition.name, policy));
|
|
61
|
-
}
|
|
62
51
|
function isHttpMcpServerConfig(server) {
|
|
63
52
|
return "transport" in server;
|
|
64
53
|
}
|
|
@@ -69,39 +58,14 @@ function createMcpServerToolSource(server) {
|
|
|
69
58
|
headers: (context) => resolveHeaders(server.auth, context),
|
|
70
59
|
...(server.fetch ? { fetch: server.fetch } : {}),
|
|
71
60
|
});
|
|
72
|
-
return {
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
return filterToolDefinitions(await source.listTools(context), server.toolPolicy);
|
|
76
|
-
},
|
|
77
|
-
executeTool(toolName, args, context) {
|
|
78
|
-
if (!isToolAllowed(toolName, server.toolPolicy)) {
|
|
79
|
-
throw PERMISSION_DENIED.create({
|
|
80
|
-
detail: `Tool "${toolName}" is not allowed for MCP server "${server.id}"`,
|
|
81
|
-
});
|
|
82
|
-
}
|
|
83
|
-
return source.executeTool(toolName, args, context);
|
|
84
|
-
},
|
|
85
|
-
};
|
|
61
|
+
return wrapRemoteToolSourceWithMcpPolicy(source, server.toolPolicy, {
|
|
62
|
+
deniedDetail: (toolName) => `Tool "${toolName}" is not allowed for MCP server "${server.id}"`,
|
|
63
|
+
});
|
|
86
64
|
}
|
|
87
65
|
function createMcpToolPolicySource(source, policy) {
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
}
|
|
91
|
-
return {
|
|
92
|
-
id: source.id,
|
|
93
|
-
async listTools(context) {
|
|
94
|
-
return filterToolDefinitions(await source.listTools(context), policy);
|
|
95
|
-
},
|
|
96
|
-
executeTool(toolName, args, context) {
|
|
97
|
-
if (!isToolAllowed(toolName, policy)) {
|
|
98
|
-
throw PERMISSION_DENIED.create({
|
|
99
|
-
detail: `Tool "${toolName}" is not allowed for MCP server "${source.id}"`,
|
|
100
|
-
});
|
|
101
|
-
}
|
|
102
|
-
return source.executeTool(toolName, args, context);
|
|
103
|
-
},
|
|
104
|
-
};
|
|
66
|
+
return wrapRemoteToolSourceWithMcpPolicy(source, policy, {
|
|
67
|
+
deniedDetail: (toolName, sourceId) => `Tool "${toolName}" is not allowed for MCP server "${sourceId}"`,
|
|
68
|
+
});
|
|
105
69
|
}
|
|
106
70
|
/** Carry an explicit remote-tool ceiling into nested execution. */
|
|
107
71
|
export function constrainRuntimeRemoteToolSources(sources, allowedToolNames) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"import-rewriter.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/import-rewriter.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;
|
|
1
|
+
{"version":3,"file":"import-rewriter.d.ts","sourceRoot":"","sources":["../../../src/src/discovery/import-rewriter.ts"],"names":[],"mappings":"AAUA,OAAO,EAAE,gBAAgB,EAAE,MAAM,0BAA0B,CAAC;AAS5D,eAAO,MAAM,kCAAkC,oSAerC,CAAC;AAEX,UAAU,kBAAkB;IAC1B,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,KAAK,MAAM,CAAC;CAClD;AAwHD;;;;;GAKG;AACH,wBAAgB,cAAc,CAC5B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,MAAM,EACf,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CA2BR;AAeD;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,EACZ,UAAU,EAAE,MAAM,EAClB,EAAE,EAAE,UAAU,CAAC,OAAO,gBAAgB,CAAC,EACvC,OAAO,EAAE,MAAM,GACd,OAAO,CAAC,MAAM,CAAC,CAyQjB"}
|
|
@@ -8,6 +8,7 @@ import * as dntShim from "../../_dnt.shims.js";
|
|
|
8
8
|
import { isDenoCompiled } from "../platform/compat/runtime.js";
|
|
9
9
|
import * as pathHelper from "../platform/compat/path/index.js";
|
|
10
10
|
import { LRUCache } from "../utils/lru-wrapper.js";
|
|
11
|
+
import { resolveContainedPackagePath, resolvePackageExportPath, splitPackageSubpath, } from "../transforms/import-rewriter/package-resolution.js";
|
|
11
12
|
export const DISCOVERY_GLOBAL_VERYFRONT_MODULES = [
|
|
12
13
|
"veryfront/agent",
|
|
13
14
|
"veryfront/tool",
|
|
@@ -156,76 +157,6 @@ const RESOLVED_SPECIFIER_CACHE_MAX_ENTRIES = 1000;
|
|
|
156
157
|
const resolvedSpecifierCache = new LRUCache({
|
|
157
158
|
maxEntries: RESOLVED_SPECIFIER_CACHE_MAX_ENTRIES,
|
|
158
159
|
});
|
|
159
|
-
// Split `react/jsx-runtime` → { name: "react", subpath: "./jsx-runtime" } and
|
|
160
|
-
// `@scope/pkg/sub/path` → { name: "@scope/pkg", subpath: "./sub/path" }.
|
|
161
|
-
function splitPackageSubpath(specifier) {
|
|
162
|
-
const parts = specifier.split("/");
|
|
163
|
-
const segments = specifier.startsWith("@") ? parts.slice(0, 2) : parts.slice(0, 1);
|
|
164
|
-
const name = segments.join("/");
|
|
165
|
-
const rest = parts.slice(segments.length).join("/");
|
|
166
|
-
return { name, subpath: rest ? `./${rest}` : "." };
|
|
167
|
-
}
|
|
168
|
-
// Pick the relative file path from a `package.json#exports` entry, which can
|
|
169
|
-
// be a string, a conditional object (`{ import, default, ... }`), or an
|
|
170
|
-
// array of those.
|
|
171
|
-
function pickExportEntry(entry) {
|
|
172
|
-
if (typeof entry === "string")
|
|
173
|
-
return entry;
|
|
174
|
-
if (Array.isArray(entry)) {
|
|
175
|
-
for (const e of entry) {
|
|
176
|
-
const v = pickExportEntry(e);
|
|
177
|
-
if (v)
|
|
178
|
-
return v;
|
|
179
|
-
}
|
|
180
|
-
return null;
|
|
181
|
-
}
|
|
182
|
-
if (entry && typeof entry === "object") {
|
|
183
|
-
const obj = entry;
|
|
184
|
-
const candidate = obj.import ?? obj.node ?? obj.default;
|
|
185
|
-
return candidate ? pickExportEntry(candidate) : null;
|
|
186
|
-
}
|
|
187
|
-
return null;
|
|
188
|
-
}
|
|
189
|
-
// Resolve a subpath (`.` or `./foo/bar`) against a `package.json#exports`
|
|
190
|
-
// map. Honors literal keys first, then matches `./*`-style glob patterns
|
|
191
|
-
// where the trailing `*` is substituted with the captured remainder.
|
|
192
|
-
// Returns the resolved relative path (e.g. `./debounce.js`) or null when
|
|
193
|
-
// no entry matches.
|
|
194
|
-
function resolveExportPath(exports, subpath) {
|
|
195
|
-
if (!exports || typeof exports !== "object")
|
|
196
|
-
return null;
|
|
197
|
-
const map = exports;
|
|
198
|
-
// Literal key (covers "." and exact subpaths like "./jsx-runtime").
|
|
199
|
-
if (subpath in map)
|
|
200
|
-
return pickExportEntry(map[subpath]);
|
|
201
|
-
// Glob keys like "./*", "./feature/*", "./lib/*.js". Pick the longest
|
|
202
|
-
// matching prefix so more specific patterns win over `./*`.
|
|
203
|
-
let bestKey = null;
|
|
204
|
-
let bestPrefixLen = -1;
|
|
205
|
-
for (const key of Object.keys(map)) {
|
|
206
|
-
const star = key.indexOf("*");
|
|
207
|
-
if (star === -1)
|
|
208
|
-
continue;
|
|
209
|
-
const prefix = key.slice(0, star);
|
|
210
|
-
const suffix = key.slice(star + 1);
|
|
211
|
-
if (!subpath.startsWith(prefix) || !subpath.endsWith(suffix))
|
|
212
|
-
continue;
|
|
213
|
-
if (subpath.length < prefix.length + suffix.length)
|
|
214
|
-
continue;
|
|
215
|
-
if (prefix.length > bestPrefixLen) {
|
|
216
|
-
bestKey = key;
|
|
217
|
-
bestPrefixLen = prefix.length;
|
|
218
|
-
}
|
|
219
|
-
}
|
|
220
|
-
if (!bestKey)
|
|
221
|
-
return null;
|
|
222
|
-
const star = bestKey.indexOf("*");
|
|
223
|
-
const captured = subpath.slice(bestKey.slice(0, star).length, subpath.length - bestKey.slice(star + 1).length);
|
|
224
|
-
const template = pickExportEntry(map[bestKey]);
|
|
225
|
-
if (!template)
|
|
226
|
-
return null;
|
|
227
|
-
return template.replaceAll("*", captured);
|
|
228
|
-
}
|
|
229
160
|
/**
|
|
230
161
|
* Rewrite imports for Node.js runtime
|
|
231
162
|
* - Resolves relative imports to file:// URLs
|
|
@@ -257,26 +188,16 @@ export async function rewriteDiscoveryImports(code, projectDir, fs, fileDir) {
|
|
|
257
188
|
const packageJsonPath = pathHelper.join(packagePath, "package.json");
|
|
258
189
|
try {
|
|
259
190
|
const pkgJson = JSON.parse(await fs.readTextFile(packageJsonPath));
|
|
260
|
-
const exportPath =
|
|
191
|
+
const exportPath = resolvePackageExportPath(pkgJson.exports, subpath);
|
|
261
192
|
const entryPoint = exportPath ??
|
|
262
193
|
(subpath === "."
|
|
263
194
|
? (pkgJson.module ?? pkgJson.main ?? "index.js")
|
|
264
195
|
// No exports entry matched: fall back to joining the subpath
|
|
265
196
|
// onto the package dir (e.g. `dotenv/config.js`).
|
|
266
197
|
: subpath.replace(/^\.\//, ""));
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
// would otherwise yield a `file://` URL outside `node_modules/<pkg>`
|
|
270
|
-
// that the discovery loader would still `import()`. `path.resolve`
|
|
271
|
-
// (unlike `path.join`) normalizes `..` segments, so the prefix
|
|
272
|
-
// check correctly catches escape attempts.
|
|
273
|
-
const normalized = pathHelper.resolve(packagePath, entryPoint);
|
|
274
|
-
const packagePathPrefix = packagePath.endsWith(pathHelper.SEPARATOR)
|
|
275
|
-
? packagePath
|
|
276
|
-
: packagePath + pathHelper.SEPARATOR;
|
|
277
|
-
if (normalized !== packagePath && !normalized.startsWith(packagePathPrefix)) {
|
|
198
|
+
const normalized = resolveContainedPackagePath(packagePath, entryPoint);
|
|
199
|
+
if (!normalized)
|
|
278
200
|
return null;
|
|
279
|
-
}
|
|
280
201
|
const resolved = pathToFileURL(normalized).href;
|
|
281
202
|
resolvedSpecifierCache.set(cacheKey, resolved);
|
|
282
203
|
return resolved;
|
|
@@ -429,17 +350,13 @@ export async function rewriteDiscoveryImports(code, projectDir, fs, fileDir) {
|
|
|
429
350
|
if (veryfrontExportSource.kind === "absent")
|
|
430
351
|
return { kind: "rejected" };
|
|
431
352
|
const subpath = specifier === "veryfront" ? "." : "./" + specifier.replace("veryfront/", "");
|
|
432
|
-
const exportPath =
|
|
353
|
+
const exportPath = resolvePackageExportPath(veryfrontExportSource.exportsMap, subpath);
|
|
433
354
|
if (!exportPath)
|
|
434
355
|
return { kind: "rejected" };
|
|
435
356
|
const packagePath = veryfrontExportSource.packagePath;
|
|
436
|
-
const resolvedPath =
|
|
437
|
-
|
|
438
|
-
? packagePath
|
|
439
|
-
: packagePath + pathHelper.SEPARATOR;
|
|
440
|
-
if (resolvedPath !== packagePath && !resolvedPath.startsWith(packagePathPrefix)) {
|
|
357
|
+
const resolvedPath = resolveContainedPackagePath(packagePath, exportPath);
|
|
358
|
+
if (!resolvedPath)
|
|
441
359
|
return { kind: "rejected" };
|
|
442
|
-
}
|
|
443
360
|
return { kind: "resolved", url: pathToFileURL(resolvedPath).href };
|
|
444
361
|
};
|
|
445
362
|
for (const specifier of veryfrontSpecifiers) {
|
|
@@ -0,0 +1,189 @@
|
|
|
1
|
+
import type { DiscoveredEval } from "./discovery.js";
|
|
2
|
+
import type { EvalModelComparison, EvalModelComparisonOptions, EvalReport, EvalReportComparison, EvalReportComparisonPolicy, EvalReportExportConfig, EvalRunProvenance } from "./types.js";
|
|
3
|
+
type CliEvalSummary = {
|
|
4
|
+
runId: string;
|
|
5
|
+
evalId: string;
|
|
6
|
+
target: string;
|
|
7
|
+
records: number;
|
|
8
|
+
passed: number;
|
|
9
|
+
failed: number;
|
|
10
|
+
passRate: number;
|
|
11
|
+
metrics: EvalReport["summary"]["metrics"];
|
|
12
|
+
};
|
|
13
|
+
type EvalArtifactPaths = {
|
|
14
|
+
directory: string;
|
|
15
|
+
summary: string;
|
|
16
|
+
results: string;
|
|
17
|
+
reportMarkdown: string;
|
|
18
|
+
};
|
|
19
|
+
type EvalModelArtifactPaths = EvalArtifactPaths & {
|
|
20
|
+
junit: string;
|
|
21
|
+
};
|
|
22
|
+
type EvalModelComparisonArtifactPaths = {
|
|
23
|
+
directory: string;
|
|
24
|
+
comparisonJson: string;
|
|
25
|
+
comparisonMarkdown: string;
|
|
26
|
+
models: Record<string, EvalModelArtifactPaths>;
|
|
27
|
+
};
|
|
28
|
+
type EvalRunReportOutputHints = {
|
|
29
|
+
reportDirectory: string;
|
|
30
|
+
reportMarkdown: string;
|
|
31
|
+
report?: string;
|
|
32
|
+
junit?: string;
|
|
33
|
+
baselineWritten?: string;
|
|
34
|
+
children?: EvalRunReportChildOutputHint[];
|
|
35
|
+
models?: EvalRunReportModelOutputHint[];
|
|
36
|
+
comparisonJson?: string;
|
|
37
|
+
comparisonMarkdown?: string;
|
|
38
|
+
recommendation?: EvalModelComparison["recommendation"];
|
|
39
|
+
};
|
|
40
|
+
type EvalRunReportChildOutputHint = {
|
|
41
|
+
kind: "report";
|
|
42
|
+
evalId: string;
|
|
43
|
+
reportDirectory: string;
|
|
44
|
+
report: EvalReport;
|
|
45
|
+
} | {
|
|
46
|
+
kind: "error";
|
|
47
|
+
evalId: string;
|
|
48
|
+
error: string;
|
|
49
|
+
};
|
|
50
|
+
type EvalRunReportModelOutputHint = {
|
|
51
|
+
model: string;
|
|
52
|
+
report: EvalReport;
|
|
53
|
+
};
|
|
54
|
+
type EvalRunReportSingleInput = {
|
|
55
|
+
kind: "single";
|
|
56
|
+
projectDir: string;
|
|
57
|
+
frameworkVersion: string;
|
|
58
|
+
datasetBase?: string;
|
|
59
|
+
reportDir?: string;
|
|
60
|
+
report?: string;
|
|
61
|
+
junit?: string;
|
|
62
|
+
baseline?: string;
|
|
63
|
+
writeBaseline?: string;
|
|
64
|
+
baselinePolicy?: EvalReportComparisonPolicy;
|
|
65
|
+
exportConfig?: EvalReportExportConfig;
|
|
66
|
+
provenance?: EvalRunProvenance;
|
|
67
|
+
evalItem: DiscoveredEval;
|
|
68
|
+
targetKind: EvalReport["targetKind"];
|
|
69
|
+
target: string;
|
|
70
|
+
targetAdapter: unknown;
|
|
71
|
+
selectedModel?: string;
|
|
72
|
+
maxOutputTokens?: number;
|
|
73
|
+
};
|
|
74
|
+
type EvalRunReportSuiteInput = {
|
|
75
|
+
kind: "suite";
|
|
76
|
+
projectDir: string;
|
|
77
|
+
frameworkVersion: string;
|
|
78
|
+
datasetBase?: string;
|
|
79
|
+
reportDir?: string;
|
|
80
|
+
junit?: string;
|
|
81
|
+
exportConfig?: EvalReportExportConfig;
|
|
82
|
+
provenance?: EvalRunProvenance;
|
|
83
|
+
evalItems: DiscoveredEval[];
|
|
84
|
+
};
|
|
85
|
+
type EvalRunReportModelComparisonPolicy = Omit<EvalModelComparisonOptions, "baselineModel">;
|
|
86
|
+
type EvalRunReportModelComparisonInput = {
|
|
87
|
+
kind: "model-comparison";
|
|
88
|
+
projectDir: string;
|
|
89
|
+
frameworkVersion: string;
|
|
90
|
+
datasetBase?: string;
|
|
91
|
+
reportDir?: string;
|
|
92
|
+
report?: string;
|
|
93
|
+
exportConfig?: EvalReportExportConfig;
|
|
94
|
+
provenance?: EvalRunProvenance;
|
|
95
|
+
evalItem: DiscoveredEval;
|
|
96
|
+
target: string;
|
|
97
|
+
baselineModel: string;
|
|
98
|
+
candidateModels: string[];
|
|
99
|
+
comparisonPolicy?: EvalRunReportModelComparisonPolicy;
|
|
100
|
+
maxOutputTokens?: number;
|
|
101
|
+
};
|
|
102
|
+
type EvalRunReportInput = EvalRunReportSingleInput | EvalRunReportSuiteInput | EvalRunReportModelComparisonInput;
|
|
103
|
+
type EvalRunTargetOptions = {
|
|
104
|
+
baseDir: string;
|
|
105
|
+
runId: string;
|
|
106
|
+
frameworkVersion: string;
|
|
107
|
+
targetKind: EvalReport["targetKind"];
|
|
108
|
+
target: string;
|
|
109
|
+
targetAdapter: unknown;
|
|
110
|
+
selectedModel?: string;
|
|
111
|
+
maxOutputTokens?: number;
|
|
112
|
+
metadata: EvalReport["metadata"];
|
|
113
|
+
};
|
|
114
|
+
type EvalRunReportTargetAdapters = {
|
|
115
|
+
runEval(evalItem: DiscoveredEval, options: EvalRunTargetOptions): Promise<EvalReport>;
|
|
116
|
+
createModelTargetAdapter?(model: string): unknown | Promise<unknown>;
|
|
117
|
+
resolveTarget?(evalItem: DiscoveredEval): Promise<Pick<EvalRunTargetOptions, "targetKind" | "target" | "targetAdapter">> | Pick<EvalRunTargetOptions, "targetKind" | "target" | "targetAdapter">;
|
|
118
|
+
};
|
|
119
|
+
type EvalRunReportArtifactAdapters = {
|
|
120
|
+
readTextFile(path: string): Promise<string>;
|
|
121
|
+
writeTextFileEnsuringDir(path: string, content: string): Promise<void>;
|
|
122
|
+
};
|
|
123
|
+
type EvalRunReportBillingAdapters = {
|
|
124
|
+
runWithGatewayBillingGroup(billingGroupId: string, operation: () => Promise<EvalReport>): Promise<EvalReport>;
|
|
125
|
+
};
|
|
126
|
+
type EvalRunReportExporterAdapters = {
|
|
127
|
+
exportReport(report: EvalReport, config?: EvalReportExportConfig): Promise<EvalReport>;
|
|
128
|
+
};
|
|
129
|
+
type EvalRunReportClock = {
|
|
130
|
+
now?: () => Date;
|
|
131
|
+
createSuffix?: () => string;
|
|
132
|
+
};
|
|
133
|
+
type EvalRunReportAdapters = {
|
|
134
|
+
targets: EvalRunReportTargetAdapters;
|
|
135
|
+
artifacts: EvalRunReportArtifactAdapters;
|
|
136
|
+
billing: EvalRunReportBillingAdapters;
|
|
137
|
+
exporters: EvalRunReportExporterAdapters;
|
|
138
|
+
clock?: EvalRunReportClock;
|
|
139
|
+
};
|
|
140
|
+
type EvalRunReportOutcome = {
|
|
141
|
+
kind: "single";
|
|
142
|
+
report: EvalReport;
|
|
143
|
+
summary: CliEvalSummary;
|
|
144
|
+
baseline?: EvalReportComparison;
|
|
145
|
+
artifacts: EvalArtifactPaths;
|
|
146
|
+
exitCode: 0 | 1;
|
|
147
|
+
outputHints: EvalRunReportOutputHints;
|
|
148
|
+
} | {
|
|
149
|
+
kind: "suite";
|
|
150
|
+
suite: EvalSuiteSummary;
|
|
151
|
+
artifacts: EvalSuiteArtifactPaths;
|
|
152
|
+
exitCode: 0 | 1;
|
|
153
|
+
outputHints: EvalRunReportOutputHints;
|
|
154
|
+
} | {
|
|
155
|
+
kind: "model-comparison";
|
|
156
|
+
reports: EvalReport[];
|
|
157
|
+
comparison: EvalModelComparison;
|
|
158
|
+
artifacts: EvalModelComparisonArtifactPaths;
|
|
159
|
+
exitCode: 0 | 1;
|
|
160
|
+
outputHints: EvalRunReportOutputHints;
|
|
161
|
+
};
|
|
162
|
+
type EvalSuiteArtifactPaths = {
|
|
163
|
+
directory: string;
|
|
164
|
+
summary: string;
|
|
165
|
+
results: string;
|
|
166
|
+
reportMarkdown: string;
|
|
167
|
+
};
|
|
168
|
+
type EvalSuiteResult = {
|
|
169
|
+
id: string;
|
|
170
|
+
name: string;
|
|
171
|
+
target: string;
|
|
172
|
+
status: "passed" | "failed" | "error";
|
|
173
|
+
artifacts?: EvalArtifactPaths;
|
|
174
|
+
summary?: CliEvalSummary;
|
|
175
|
+
error?: string;
|
|
176
|
+
};
|
|
177
|
+
type EvalSuiteSummary = {
|
|
178
|
+
kind: "eval-suite-summary";
|
|
179
|
+
runId: string;
|
|
180
|
+
startedAt: string;
|
|
181
|
+
endedAt: string;
|
|
182
|
+
total: number;
|
|
183
|
+
passed: number;
|
|
184
|
+
failed: number;
|
|
185
|
+
results: EvalSuiteResult[];
|
|
186
|
+
};
|
|
187
|
+
export declare function runEvalReport(input: EvalRunReportInput, adapters: EvalRunReportAdapters): Promise<EvalRunReportOutcome>;
|
|
188
|
+
export {};
|
|
189
|
+
//# sourceMappingURL=run-report.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"run-report.d.ts","sourceRoot":"","sources":["../../../src/src/eval/run-report.ts"],"names":[],"mappings":"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"}
|