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.
Files changed (118) hide show
  1. package/esm/cli/commands/eval/command.d.ts +2 -70
  2. package/esm/cli/commands/eval/command.d.ts.map +1 -1
  3. package/esm/cli/commands/eval/command.js +207 -550
  4. package/esm/cli/templates/manifest.d.ts +1 -0
  5. package/esm/cli/templates/manifest.js +3 -2
  6. package/esm/deno.js +1 -1
  7. package/esm/src/agent/hosted/chat-execution-runtime.d.ts.map +1 -1
  8. package/esm/src/agent/hosted/chat-execution-runtime.js +16 -33
  9. package/esm/src/agent/hosted/child-fork-tool-sources.d.ts.map +1 -1
  10. package/esm/src/agent/hosted/child-fork-tool-sources.js +6 -38
  11. package/esm/src/agent/hosted/hosted-chat-finalization.d.ts +30 -0
  12. package/esm/src/agent/hosted/hosted-chat-finalization.d.ts.map +1 -0
  13. package/esm/src/agent/hosted/hosted-chat-finalization.js +249 -0
  14. package/esm/src/agent/hosted/project-remote-tool-source.d.ts.map +1 -1
  15. package/esm/src/agent/hosted/project-remote-tool-source.js +4 -23
  16. package/esm/src/agent/mcp-tool-policy.d.ts +19 -0
  17. package/esm/src/agent/mcp-tool-policy.d.ts.map +1 -0
  18. package/esm/src/agent/mcp-tool-policy.js +66 -0
  19. package/esm/src/agent/runtime/mcp-server-tool-sources.d.ts.map +1 -1
  20. package/esm/src/agent/runtime/mcp-server-tool-sources.js +8 -44
  21. package/esm/src/discovery/import-rewriter.d.ts.map +1 -1
  22. package/esm/src/discovery/import-rewriter.js +7 -90
  23. package/esm/src/eval/run-report.d.ts +189 -0
  24. package/esm/src/eval/run-report.d.ts.map +1 -0
  25. package/esm/src/eval/run-report.js +603 -0
  26. package/esm/src/html/hydration-script-builder/dev-client-renderer.js +1 -1
  27. package/esm/src/html/hydration-script-builder/prod-scripts.js +1 -1
  28. package/esm/src/html/hydration-script-builder/templates/router.d.ts.map +1 -1
  29. package/esm/src/html/hydration-script-builder/templates/router.js +35 -11
  30. package/esm/src/html/utils.d.ts.map +1 -1
  31. package/esm/src/html/utils.js +19 -45
  32. package/esm/src/index.client.d.ts +6 -21
  33. package/esm/src/index.client.d.ts.map +1 -1
  34. package/esm/src/index.client.js +6 -21
  35. package/esm/src/modules/server/ssr-import-rewriter.d.ts +2 -26
  36. package/esm/src/modules/server/ssr-import-rewriter.d.ts.map +1 -1
  37. package/esm/src/modules/server/ssr-import-rewriter.js +1 -206
  38. package/esm/src/react/runtime/core.d.ts +22 -0
  39. package/esm/src/react/runtime/core.d.ts.map +1 -1
  40. package/esm/src/react/runtime/core.js +1 -1
  41. package/esm/src/rendering/orchestrator/module-collection.d.ts +8 -0
  42. package/esm/src/rendering/orchestrator/module-collection.d.ts.map +1 -1
  43. package/esm/src/rendering/orchestrator/module-collection.js +10 -0
  44. package/esm/src/rendering/orchestrator/pipeline.d.ts.map +1 -1
  45. package/esm/src/rendering/orchestrator/pipeline.js +2 -2
  46. package/esm/src/routing/api/context-builder.d.ts +7 -0
  47. package/esm/src/routing/api/context-builder.d.ts.map +1 -1
  48. package/esm/src/routing/api/context-builder.js +20 -2
  49. package/esm/src/routing/api/module-loader/external-import-rewriter.d.ts +2 -7
  50. package/esm/src/routing/api/module-loader/external-import-rewriter.d.ts.map +1 -1
  51. package/esm/src/routing/api/module-loader/external-import-rewriter.js +10 -209
  52. package/esm/src/server/dev-server/file-watch-setup.d.ts.map +1 -1
  53. package/esm/src/server/dev-server/file-watch-setup.js +11 -1
  54. package/esm/src/server/dev-server/middleware.d.ts.map +1 -1
  55. package/esm/src/server/dev-server/middleware.js +45 -11
  56. package/esm/src/server/handlers/dev/files/esbuild-plugins.d.ts.map +1 -1
  57. package/esm/src/server/handlers/dev/files/esbuild-plugins.js +22 -0
  58. package/esm/src/server/handlers/request/module/page-data-endpoint-handler.js +24 -1
  59. package/esm/src/server/handlers/response/not-found.d.ts +0 -1
  60. package/esm/src/server/handlers/response/not-found.d.ts.map +1 -1
  61. package/esm/src/server/handlers/response/not-found.js +9 -110
  62. package/esm/src/server/runtime-handler/index.d.ts.map +1 -1
  63. package/esm/src/server/runtime-handler/index.js +66 -145
  64. package/esm/src/server/runtime-handler/project-runtime-context.d.ts +118 -0
  65. package/esm/src/server/runtime-handler/project-runtime-context.d.ts.map +1 -0
  66. package/esm/src/server/runtime-handler/project-runtime-context.js +181 -0
  67. package/esm/src/server/services/rsc/orchestrators/handler.d.ts +3 -1
  68. package/esm/src/server/services/rsc/orchestrators/handler.d.ts.map +1 -1
  69. package/esm/src/server/services/rsc/orchestrators/handler.js +13 -8
  70. package/esm/src/server/services/rsc/orchestrators/render-handler.d.ts +1 -1
  71. package/esm/src/server/services/rsc/orchestrators/render-handler.d.ts.map +1 -1
  72. package/esm/src/server/services/rsc/orchestrators/render-handler.js +2 -2
  73. package/esm/src/transforms/esm/http-cache.d.ts.map +1 -1
  74. package/esm/src/transforms/esm/http-cache.js +132 -46
  75. package/esm/src/transforms/esm/import-attributes.d.ts.map +1 -1
  76. package/esm/src/transforms/esm/import-attributes.js +2 -9
  77. package/esm/src/transforms/esm/in-flight-manager.d.ts +3 -2
  78. package/esm/src/transforms/esm/in-flight-manager.d.ts.map +1 -1
  79. package/esm/src/transforms/esm/in-flight-manager.js +6 -5
  80. package/esm/src/transforms/import-rewriter/core.d.ts +8 -0
  81. package/esm/src/transforms/import-rewriter/core.d.ts.map +1 -0
  82. package/esm/src/transforms/import-rewriter/core.js +27 -0
  83. package/esm/src/transforms/import-rewriter/import-edit.d.ts +57 -0
  84. package/esm/src/transforms/import-rewriter/import-edit.d.ts.map +1 -0
  85. package/esm/src/transforms/import-rewriter/import-edit.js +151 -0
  86. package/esm/src/transforms/import-rewriter/package-resolution.d.ts +12 -0
  87. package/esm/src/transforms/import-rewriter/package-resolution.d.ts.map +1 -0
  88. package/esm/src/transforms/import-rewriter/package-resolution.js +79 -0
  89. package/esm/src/transforms/import-rewriter/parse-cache.d.ts +4 -42
  90. package/esm/src/transforms/import-rewriter/parse-cache.d.ts.map +1 -1
  91. package/esm/src/transforms/import-rewriter/parse-cache.js +3 -134
  92. package/esm/src/transforms/import-rewriter/route-adapter.d.ts +24 -0
  93. package/esm/src/transforms/import-rewriter/route-adapter.d.ts.map +1 -0
  94. package/esm/src/transforms/import-rewriter/route-adapter.js +235 -0
  95. package/esm/src/transforms/import-rewriter/ssr-adapter.d.ts +27 -0
  96. package/esm/src/transforms/import-rewriter/ssr-adapter.d.ts.map +1 -0
  97. package/esm/src/transforms/import-rewriter/ssr-adapter.js +206 -0
  98. package/esm/src/transforms/import-rewriter/strategies/bare-strategy.d.ts.map +1 -1
  99. package/esm/src/transforms/import-rewriter/strategies/bare-strategy.js +16 -2
  100. package/esm/src/transforms/import-rewriter/unified-rewriter.d.ts +0 -4
  101. package/esm/src/transforms/import-rewriter/unified-rewriter.d.ts.map +1 -1
  102. package/esm/src/transforms/import-rewriter/unified-rewriter.js +2 -39
  103. package/esm/src/utils/version-constant.d.ts +1 -1
  104. package/esm/src/utils/version-constant.js +1 -1
  105. package/esm/src/workflow/executor/workflow-executor.d.ts +0 -20
  106. package/esm/src/workflow/executor/workflow-executor.d.ts.map +1 -1
  107. package/esm/src/workflow/executor/workflow-executor.js +41 -320
  108. package/esm/src/workflow/runtime/approval-manager.d.ts.map +1 -1
  109. package/esm/src/workflow/runtime/approval-manager.js +20 -61
  110. package/esm/src/workflow/runtime/workflow-run-control.d.ts +95 -0
  111. package/esm/src/workflow/runtime/workflow-run-control.d.ts.map +1 -0
  112. package/esm/src/workflow/runtime/workflow-run-control.js +529 -0
  113. package/esm/src/workflow/worker/run-manager.d.ts.map +1 -1
  114. package/esm/src/workflow/worker/run-manager.js +18 -92
  115. package/esm/src/workflow/worker/shared.d.ts +1 -1
  116. package/esm/src/workflow/worker/shared.d.ts.map +1 -1
  117. package/esm/src/workflow/worker/shared.js +17 -15
  118. 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,EAAkB,oBAAoB,EAAE,MAAM,qBAAqB,CAAC;AAChF,OAAO,KAAK,EAAE,+BAA+B,EAAE,MAAM,qCAAqC,CAAC;AAC3F,OAAO,EAEL,KAAK,uBAAuB,EAC7B,MAAM,kCAAkC,CAAC;AAI1C,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;AAkGD,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
+ {"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, PERMISSION_DENIED } from "../../errors/index.js";
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
- id: source.id,
74
- async listTools(context) {
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
- if (!policy?.allow && !policy?.deny) {
89
- return source;
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;AAI5D,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;AAqFD;;;;;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,CAyRjB"}
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 = resolveExportPath(pkgJson.exports, subpath);
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
- // Defense in depth: refuse resolved paths that escape the package
268
- // directory. A malicious package shipping `exports: { ".": "../foo" }`
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 = resolveExportPath(veryfrontExportSource.exportsMap, subpath);
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 = pathHelper.resolve(packagePath, exportPath);
437
- const packagePathPrefix = packagePath.endsWith(pathHelper.SEPARATOR)
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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"}