Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
80 commits
Select commit Hold shift + click to select a range
f9229bb
Evals
shagun-singh-inkeep Nov 20, 2025
f1c16cb
changes
shagun-singh-inkeep Nov 20, 2025
86a308f
ignore
shagun-singh-inkeep Nov 20, 2025
992d151
basic inngest
shagun-singh-inkeep Nov 21, 2025
43a92fe
continue
shagun-singh-inkeep Nov 21, 2025
3cf4c52
ignore esm
shagun-singh-inkeep Nov 24, 2025
9cfb227
changes
shagun-singh-inkeep Nov 24, 2025
f3891d2
improvements
shagun-singh-inkeep Nov 25, 2025
2037aa5
sample rate
shagun-singh-inkeep Nov 25, 2025
6a9c8ab
changes to schema
shagun-singh-inkeep Dec 2, 2025
1823987
remove esm
shagun-singh-inkeep Dec 8, 2025
4f82c5a
changes
shagun-singh-inkeep Dec 8, 2025
318fc50
delete eval mcp
shagun-singh-inkeep Dec 10, 2025
408d00e
fixes
shagun-singh-inkeep Dec 11, 2025
0960811
fixes
shagun-singh-inkeep Dec 11, 2025
6840d26
vercel workflow
shagun-singh-inkeep Dec 16, 2025
df25c7e
rebase
shagun-singh-inkeep Dec 16, 2025
69bf1a3
bypass secret
shagun-singh-inkeep Dec 16, 2025
cbd4f31
workflow
shagun-singh-inkeep Dec 17, 2025
1bf6731
fix
shagun-singh-inkeep Dec 17, 2025
4730953
cofnig
shagun-singh-inkeep Dec 17, 2025
7a6ee8b
vercel world
shagun-singh-inkeep Dec 17, 2025
23cdcea
fix: bundle workflow packages instead of externalizing for Vercel
shagun-singh-inkeep Dec 17, 2025
c67f07c
fix: ensure workflow packages are traced by Vercel NFT with explicit …
shagun-singh-inkeep Dec 17, 2025
770df0d
fix: bundle workflow packages to fix Vercel NFT tracing
shagun-singh-inkeep Dec 17, 2025
0e7b894
fix: bundle workflow packages by adding to ssr.noExternal
shagun-singh-inkeep Dec 17, 2025
ec90ff6
fix: simplify vercel.json to use framework auto-detection
shagun-singh-inkeep Dec 17, 2025
d1ffff5
fix: bundle workflow packages and properly initialize both postgres a…
shagun-singh-inkeep Dec 17, 2025
9b46025
fix: bundle workflow packages in agents-run-api to fix Vercel deployment
shagun-singh-inkeep Dec 17, 2025
061ad1a
fix: properly configure tsup to bundle workflow packages with noExternal
shagun-singh-inkeep Dec 17, 2025
b443c05
fix: externalize debug package to avoid dynamic require errors in bun…
shagun-singh-inkeep Dec 17, 2025
fbe7a58
run depend
shagun-singh-inkeep Dec 17, 2025
d1db21c
Add auth debug logging to eval-api
shagun-singh-inkeep Dec 17, 2025
27531e3
Fix: Skip workflow worker start when imported as library
shagun-singh-inkeep Dec 17, 2025
6801b78
Accept 'vercel' as valid WORKFLOW_TARGET_WORLD value
shagun-singh-inkeep Dec 18, 2025
9410750
Replace direct eval-api import with HTTP calls to avoid workflow bund…
shagun-singh-inkeep Dec 18, 2025
1ac2c4c
Fix TypeScript errors in trigger endpoint
shagun-singh-inkeep Dec 18, 2025
478359b
Fix TypeScript errors in trigger endpoint
shagun-singh-inkeep Dec 18, 2025
a019201
Add vercel world debug logging and fix empty token handling
shagun-singh-inkeep Dec 18, 2025
ed05d8d
Add detailed workflow payload logging for queue debugging
shagun-singh-inkeep Dec 18, 2025
bff3392
Fix TypeScript error in inputLength calculation
shagun-singh-inkeep Dec 18, 2025
592a26a
Fix: Use sequential workflow processing (start() doesn't support idem…
shagun-singh-inkeep Dec 18, 2025
1d030cd
Fix: Copy workflow handlers to dist for Vercel deployment
shagun-singh-inkeep Dec 18, 2025
222fc0c
Add detailed logging to workflow routes for debugging
shagun-singh-inkeep Dec 18, 2025
f611eb4
Add debug endpoint for workflow environment
shagun-singh-inkeep Dec 18, 2025
e87dfdd
Add extensive workflow debugging
shagun-singh-inkeep Dec 18, 2025
30cb4e3
Add fetch interceptor to debug workflow API calls
shagun-singh-inkeep Dec 18, 2025
313b50f
Fix TypeScript errors - remove debugStart wrapper
shagun-singh-inkeep Dec 18, 2025
f52c086
Add extensive workflow debugging
shagun-singh-inkeep Dec 18, 2025
bbd9b80
Add Vercel Queue function configuration (type: queue/v1beta) for work…
shagun-singh-inkeep Dec 18, 2025
f86923c
Trigger redeploy with Vercel CLI tarball for queue/v1beta support
shagun-singh-inkeep Dec 18, 2025
b4d0b3d
Add Vercel Queue experimentalTriggers config with CLI tarball for wor…
shagun-singh-inkeep Dec 18, 2025
027dff9
Upgrade workflow packages to beta.21+ for queue trigger fixes
shagun-singh-inkeep Dec 18, 2025
fe42cf4
Add separate Vercel API functions for workflow callbacks with experim…
shagun-singh-inkeep Dec 18, 2025
9fcd0b4
Fix: use index.js as function key for experimentalTriggers, remove un…
shagun-singh-inkeep Dec 18, 2025
5d47945
Remove invalid runtime field
shagun-singh-inkeep Dec 18, 2025
6587bf7
Use wildcard function key for experimentalTriggers
shagun-singh-inkeep Dec 18, 2025
474f5ad
Add rewrite from /index to workflow handler
shagun-singh-inkeep Dec 18, 2025
fa0cba1
Handle /index POST for Vercel Queue callbacks
shagun-singh-inkeep Dec 18, 2025
44219ef
Remove unused rewrite rule
shagun-singh-inkeep Dec 18, 2025
18e3448
Use global fetch for /index forward to preserve full path
shagun-singh-inkeep Dec 18, 2025
b78a682
Fix URL path preservation for workflow handlers
shagun-singh-inkeep Dec 18, 2025
2aa0791
Fix handler selection and headers in workflow routes
shagun-singh-inkeep Dec 18, 2025
ab918c1
remove *
shagun-singh-inkeep Dec 18, 2025
18b969a
fix routing
shagun-singh-inkeep Dec 18, 2025
a8984dc
fix index
shagun-singh-inkeep Dec 18, 2025
4637d44
route better
shagun-singh-inkeep Dec 19, 2025
04c5c54
local and vercel working
shagun-singh-inkeep Dec 19, 2025
b656320
fix continous tests
shagun-singh-inkeep Dec 19, 2025
0c333fe
signoz
shagun-singh-inkeep Dec 19, 2025
979daf7
calling signoz directly
shagun-singh-inkeep Dec 19, 2025
c4554f9
local working
shagun-singh-inkeep Dec 22, 2025
69d76d0
pnpm
shagun-singh-inkeep Dec 22, 2025
93e43f0
testing if env not needed
shagun-singh-inkeep Dec 22, 2025
ccdb678
clean up
shagun-singh-inkeep Dec 22, 2025
71e3d46
fix postgres
shagun-singh-inkeep Dec 22, 2025
134a4c5
changes
shagun-singh-inkeep Dec 22, 2025
afcd031
ui improvements
shagun-singh-inkeep Dec 23, 2025
b1992d9
migrations
shagun-singh-inkeep Dec 23, 2025
7208d46
dead code
shagun-singh-inkeep Dec 23, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -69,3 +69,9 @@ vite.config.d.ts

# Turborepo
.turbo

# Generated workflow bundles
agents-eval-api/.well-known/

# Workflow runtime data
agents-eval-api/.workflow-data/
2 changes: 2 additions & 0 deletions agents-eval-api/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
.vercel
.env*.local
56 changes: 56 additions & 0 deletions agents-eval-api/LICENSE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,56 @@
<!--
AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
Source: ./LICENSE.md
This file is automatically copied from the root LICENSE.md during build.
Any changes should be made to the root LICENSE.md file.
-->

# Inkeep SDK – Elastic License 2.0 with Supplemental Terms

NOTE: The Inkeep SDK is licensed under the Elastic License 2.0 (ELv2), subject to Supplemental Terms included in [SUPPLEMENTAL_TERMS.md](SUPPLEMENTAL_TERMS.md). In the event of conflict, the Supplemental Terms control.

# Elastic License 2.0

## Acceptance
By using the software, you agree to all of the terms and conditions below.

## Copyright License
The licensor grants you a non-exclusive, royalty-free, worldwide, non-sublicensable, non-transferable license to use, copy, distribute, make available, and prepare derivative works of the software, in each case subject to the limitations and conditions below.

## Limitations
You may not provide the software to third parties as a hosted or managed service, where the service provides users with access to any substantial set of the features or functionality of the software.

You may not move, change, disable, or circumvent the license key functionality in the software, and you may not remove or obscure any functionality in the software that is protected by the license key.

You may not alter, remove, or obscure any licensing, copyright, or other notices of the licensor in the software. Any use of the licensor’s trademarks is subject to applicable law.

## Patents
The licensor grants you a license, under any patent claims the licensor can license, or becomes able to license, to make, have made, use, sell, offer for sale, import and have imported the software, in each case subject to the limitations and conditions in this license. This license does not cover any patent claims that you cause to be infringed by modifications or additions to the software. If you or your company make any written claim that the software infringes or contributes to infringement of any patent, your patent license for the software granted under these terms ends immediately. If your company makes such a claim, your patent license ends immediately for work on behalf of your company.

## Notices
You must ensure that anyone who gets a copy of any part of the software from you also gets a copy of these terms.

If you modify the software, you must include in any modified copies of the software prominent notices stating that you have modified the software.

## No Other Rights
These terms do not imply any licenses other than those expressly granted in these terms.

## Termination
If you use the software in violation of these terms, such use is not licensed, and your licenses will automatically terminate. If the licensor provides you with a notice of your violation, and you cease all violation of this license no later than 30 days after you receive that notice, your licenses will be reinstated retroactively. However, if you violate these terms after such reinstatement, any additional violation of these terms will cause your licenses to terminate automatically and permanently.

## No Liability
***As far as the law allows, the software comes as is, without any warranty or condition, and the licensor will not be liable to you for any damages arising out of these terms or the use or nature of the software, under any kind of legal claim.***

## Definitions
The **licensor** is the entity offering these terms, and the **software** is the software the licensor makes available under these terms, including any portion of it.

**you** refers to the individual or entity agreeing to these terms.

**your company** is any legal entity, sole proprietorship, or other kind of organization that you work for, plus all organizations that have control over, are under the control of, or are under common control with that organization. **control** means ownership of substantially all the assets of an entity, or the power to direct its management and policies by vote, contract, or otherwise. Control can be direct or indirect.

**your licenses** are all the licenses granted to you for the software under these terms.

**use** means anything you do with the software requiring one of your licenses.

**trademark** means trademarks, service marks, and similar rights.

44 changes: 44 additions & 0 deletions agents-eval-api/README.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# Agents Evaluation API

The Agents Evaluation API handles evaluations, datasets, and evaluation runs for the Inkeep Agent Framework.

## Features

- Dataset management (CRUD operations)
- Dataset item management
- Dataset run configurations
- Evaluation configurations (evaluators, suites, runs, jobs)
- Evaluation result tracking
- Integration with Agents Run API for running evaluations

## Development

```bash
# Install dependencies
pnpm install

# Run development server
pnpm dev

# Build for production
pnpm build

# Run tests
pnpm test

# Type check
pnpm typecheck
```

## Environment Variables

- `AGENTS_EVAL_API_URL` - Base URL for the evaluation API (default: `http://localhost:3005`)
- `AGENTS_RUN_API_URL` - URL for the agents run API (default: `http://localhost:3003`)
- `DATABASE_URL` - Database connection string
- `LOG_LEVEL` - Logging level (default: `debug`)
- `INKEEP_AGENTS_EVAL_API_BYPASS_SECRET` - Optional bypass secret for authentication

## API Documentation

Once the server is running, visit `/docs` for interactive API documentation.

40 changes: 40 additions & 0 deletions agents-eval-api/SUPPLEMENTAL_TERMS.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
<!--
AUTO-GENERATED FILE - DO NOT EDIT DIRECTLY
Source: ./SUPPLEMENTAL_TERMS.md
This file is automatically copied from the root SUPPLEMENTAL_TERMS.md during build.
Any changes should be made to the root SUPPLEMENTAL_TERMS.md file.
-->

# Inkeep SDK – Elastic License 2.0 with Supplemental Terms

The Inkeep [SDK] (the "Software") is licensed under the Elastic License 2.0 ("ELv2"), available at [https://www.elastic.co/licensing/elastic-license](https://www.elastic.co/licensing/elastic-license), subject to the supplemental terms below. By using the Software, you, your company, and your licensees agree to both ELv2 and these Supplemental Terms – for purposes of these Supplemental Terms, references to "you" have the same meaning as in ELv2 and include your company and contractors acting on your behalf. In the event of conflict, these Supplemental Terms control.

Any copy or redistribution of the Software must include both the ELv2 license reference and these Supplemental Terms.

## 1. Restrictions

### 1.1
You may not use the Software, directly or indirectly, to offer, enable, operate, or provide any Agent Builder.

### 1.2
You may not repackage, rebrand, or otherwise expose the Software's agent-creation or orchestration functionality for third-party use, including in specialized or verticalized offerings that present substantially similar functionality to the Software.

### 1.3
For clarity, the foregoing restrictions do not prohibit your use of the Software as Embedded Assistants or Professional Services, provided neither allow third parties to create, configure, train, orchestrate, deploy, or manage their own agents or agent workflows.

## 2. Definitions

### 2.1 Inkeep
**"Inkeep"** means Inkeep, Inc., a Delaware corporation with principal offices at 169 Madison Ave, Ste 2544, New York, NY, 10016, the licensor (as defined in ELv2) of the Software.

### 2.2 Agent Builder
**"Agent Builder"** means any hosted or on-premise product, platform, UI or API that allows third parties (e.g., customers, developers, or community users other than your personnel) to create, configure, compose, train, orchestrate, deploy, or manage their own Agents using the Software, or that otherwise exposes a substantial set of the Agent-creation and orchestration functionality of the Software.

### 2.3 Agents
**"Agents"** means autonomous, semi-autonomous, or automated systems — including assistants, copilots, workflows, orchestrations, or other systems powered by or incorporating artificial intelligence, machine learning, large language models, or related technologies.

### 2.4 Embedded Assistant
**"Embedded Assistant"** means embedding the Software in your own products or services to power a specific assistant/copilot/agent experience for you or your end users (e.g., a support bot in your app or an internal helpdesk agent), where end users do not receive access to any substantial set of the Software's agent-creation or orchestration features.

### 2.5 Professional Services
**"Professional Services"** means using the Software to deliver a bespoke solution to a single client where only your personnel operate the Software, the client receives access solely to the resulting assistant within the client's environment and not to the agent-creation/orchestration features of the Software, and no multi-tenant or self-service builder is provided.
13 changes: 13 additions & 0 deletions agents-eval-api/api/.well-known/workflow/v1/flow.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { createRequire } from "node:module";

console.log("[WF CONSUMER] flow.ts loaded", new Date().toISOString());

const require = createRequire(import.meta.url);

// Load the built handler that Vite build produces
const flowModule = require("../../../../dist/.well-known/workflow/v1/flow.cjs");

export default async function handler(req: Request): Promise<Response> {
console.log("[WF CONSUMER HIT] flow.ts", new Date().toISOString(), req.method, req.url);
return flowModule.default(req);
}
13 changes: 13 additions & 0 deletions agents-eval-api/api/.well-known/workflow/v1/step.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
import { createRequire } from "node:module";

console.log("[WF CONSUMER] step.ts loaded", new Date().toISOString());

const require = createRequire(import.meta.url);

// Load the built handler that Vite build produces
const stepModule = require("../../../../dist/.well-known/workflow/v1/step.cjs");

export default async function handler(req: Request): Promise<Response> {
console.log("[WF CONSUMER HIT] step.ts", new Date().toISOString(), req.method, req.url);
return stepModule.default(req);
}
3 changes: 3 additions & 0 deletions agents-eval-api/index.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
import app from './src/index';

export default app;
87 changes: 87 additions & 0 deletions agents-eval-api/package.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,87 @@
{
"name": "@inkeep/agents-eval-api",
"version": "0.32.0",
"description": "Agents Evaluation API for Inkeep Agent Framework - handles evaluations, datasets, and evaluation runs",
"main": "dist/index.js",
"types": "dist/index.d.ts",
"license": "SEE LICENSE IN LICENSE.md",
"exports": {
".": "./dist/index.js"
},
"type": "module",
"scripts": {
"workflow:build": "tsx scripts/build-workflow.ts",
"dev": "pnpm workflow:build && vite",
"build": "pnpm workflow:build && vite build && tsc --declaration --emitDeclarationOnly --outDir dist",
"build:tsup": "tsup",
"start": "node dist/index.js",
"test": "vitest --run",
"test:watch": "vitest",
"test:coverage": "vitest --run --coverage",
"typecheck": "tsc --noEmit",
"typecheck:watch": "tsc --noEmit --watch"
},
"dependencies": {
"@ai-sdk/anthropic": "3.0.0-beta.66",
"@ai-sdk/gateway": "2.0.0-beta.68",
"@ai-sdk/google": "3.0.0-beta.62",
"@ai-sdk/openai": "3.0.0-beta.74",
"@hono/mcp": "^0.1.5",
"@hono/node-server": "^1.14.3",
"@hono/swagger-ui": "^0.5.1",
"@hono/zod-openapi": "^1.0.2",
"@inkeep/agents-core": "workspace:^",
"@openrouter/ai-sdk-provider": "^1.2.0",
"@vercel/functions": "^3.3.4",
"@workflow/world-local": "4.0.1-beta.19",
"@workflow/world-postgres": "4.1.0-beta.21",
"@workflow/world-vercel": "4.0.1-beta.21",
"ai": "6.0.0-beta.124",
"dotenv": "^17.2.1",
"drizzle-orm": "^0.44.4",
"hono": "^4.10.4",
"hono-pino": "^0.10.1",
"nanoid": "^5.1.5",
"nitro": "3.0.1-alpha.1",
"pino": "^9.7.0",
"rollup": "^4.53.5",
"workflow": "4.0.1-beta.33",
"zod": "^4.1.11"
},
"optionalDependencies": {
"keytar": "^7.9.0"
},
"devDependencies": {
"@electric-sql/pglite": "^0.3.13",
"@hono/vite-dev-server": "^0.20.1",
"@types/node": "^20.11.24",
"@vitest/coverage-v8": "^3.2.4",
"@workflow/builders": "4.0.1-beta.27",
"nodemon": "^3.1.0",
"pino-pretty": "^13.0.0",
"tsx": "^4.7.1",
"typescript": "^5.3.3",
"vite": "^7.1.11",
"vite-tsconfig-paths": "^5.1.4",
"vitest": "^3.2.4"
},
"packageManager": "pnpm@10.11.0",
"engines": {
"node": ">=22.0.0"
},
"publishConfig": {
"access": "public",
"registry": "https://registry.npmjs.org/"
},
"files": [
"dist",
"README.md",
"LICENSE.md",
"SUPPLEMENTAL_TERMS.md"
],
"repository": {
"type": "git",
"url": "git+https://github.com/inkeep/agents.git",
"directory": "agents-eval-api"
}
}
36 changes: 36 additions & 0 deletions agents-eval-api/scripts/build-workflow.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,36 @@
/**
* Custom workflow build script that supports externalizing native modules.
*
* The default `workflow build` CLI doesn't expose the externalPackages option,
* so we use the builder directly to exclude native modules like keytar.
*/
import { StandaloneBuilder } from '@workflow/builders';

const config = {
dirs: ['./src/workflow'],
workingDir: process.cwd(),
buildTarget: 'standalone' as const,
stepsBundlePath: './.well-known/workflow/v1/step.cjs',
workflowsBundlePath: './.well-known/workflow/v1/flow.cjs',
webhookBundlePath: './.well-known/workflow/v1/webhook.mjs',
// Externalize native modules that can't be bundled
externalPackages: [
'keytar',
],
};

async function build() {
console.log('Building workflow bundles...');
console.log('External packages:', config.externalPackages);

const builder = new StandaloneBuilder(config);
await builder.build();

console.log('Workflow build completed!');
}

build().catch((err) => {
console.error('Build failed:', err);
process.exit(1);
});

Loading
Loading