Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
187 commits
Select commit Hold shift + click to select a range
75bd090
Setup eslint
cursoragent Aug 20, 2026
6722991
Setup strict TypeScript eslint presets
cursoragent Aug 20, 2026
b212973
Fix lint violation in src/index.ts (1)
cursoragent Aug 20, 2026
ed55272
Fix lint violation in src/index.ts (2)
cursoragent Aug 20, 2026
832d0d0
Fix lint violation in src/index.ts (3)
cursoragent Aug 20, 2026
9b87b62
Fix lint violation in src/index.ts (4)
cursoragent Aug 20, 2026
9168179
Fix lint violation in src/index.ts (5)
cursoragent Aug 20, 2026
96ca395
Fix lint violation in src/index.ts (6)
cursoragent Aug 20, 2026
0655d82
Fix lint violation in src/index.ts (7)
cursoragent Aug 20, 2026
604c720
Fix lint violation in src/index.ts (8)
cursoragent Aug 20, 2026
0bf5aa1
Fix lint violation in src/langfuse.ts (1)
cursoragent Aug 20, 2026
ac6a99d
Fix lint violation in src/langfuse.ts (2)
cursoragent Aug 20, 2026
10a83c5
Fix lint violation in src/langfuse.ts (3)
cursoragent Aug 20, 2026
2e69922
Fix lint violation in src/langfuse.ts (4)
cursoragent Aug 20, 2026
818b520
Fix lint violation in src/langfuse.ts (5)
cursoragent Aug 20, 2026
baab056
Fix lint violation in src/langfuse.ts (6)
cursoragent Aug 20, 2026
5c05ca9
Fix lint violation in src/langfuse.ts (7)
cursoragent Aug 20, 2026
d9d2a92
Fix lint violation in src/langfuse.ts (8)
cursoragent Aug 20, 2026
83087f5
Fix lint violation in src/langfuse.ts (9)
cursoragent Aug 20, 2026
4b3d1b7
Fix lint violation in src/langfuse.ts (10)
cursoragent Aug 20, 2026
917558d
Fix lint violation in src/utils.ts (1)
cursoragent Aug 20, 2026
a0d381a
Fix lint violation in test/integration/plugin.test.ts (1)
cursoragent Aug 20, 2026
92efd06
Fix lint violation in test/integration/plugin.test.ts (2)
cursoragent Aug 20, 2026
1054c07
Fix lint violation in test/integration/plugin.test.ts (3)
cursoragent Aug 20, 2026
f81397b
Fix lint violation in test/integration/plugin.test.ts (4)
cursoragent Aug 20, 2026
d4b3a10
Fix lint violation in test/integration/plugin.test.ts (5)
cursoragent Aug 20, 2026
19bee36
Fix lint violation in test/integration/plugin.test.ts (6)
cursoragent Aug 20, 2026
7c2cf8b
Fix lint violation in test/integration/plugin.test.ts (7)
cursoragent Aug 20, 2026
0e948e5
Fix lint violation in test/integration/plugin.test.ts (8)
cursoragent Aug 20, 2026
8e661c6
Fix lint violation in test/integration/plugin.test.ts (9)
cursoragent Aug 20, 2026
e3bbecc
Fix lint violation in test/integration/plugin.test.ts (10)
cursoragent Aug 20, 2026
f07e316
Fix lint violation in test/integration/plugin.test.ts (11)
cursoragent Aug 20, 2026
8b2670a
Fix lint violation in test/integration/plugin.test.ts (12)
cursoragent Aug 20, 2026
7897e6d
Fix lint violation in test/integration/plugin.test.ts (13)
cursoragent Aug 20, 2026
e6dfb29
Fix lint violation in test/integration/plugin.test.ts (14)
cursoragent Aug 20, 2026
3a8e23e
Fix lint violation in test/integration/plugin.test.ts (15)
cursoragent Aug 20, 2026
03d399e
Fix lint violation in test/integration/plugin.test.ts (16)
cursoragent Aug 20, 2026
9c30a00
Fix generated plugin import linting
cursoragent Aug 20, 2026
8656f83
Enable recommended and opt-in ESLint rules
cursoragent Aug 20, 2026
f9889c8
Make session filtering condition explicit
cursoragent Aug 20, 2026
16d2d6c
Make public key credential check explicit
cursoragent Aug 20, 2026
71c4c22
Fix @typescript-eslint/strict-boolean-expressions at 117
cursoragent Aug 20, 2026
f59ae3e
Fix @typescript-eslint/strict-boolean-expressions at 161
cursoragent Aug 20, 2026
575ed86
Compare the public credential key explicitly
cursoragent Aug 20, 2026
7d63b34
Compare the secret credential key explicitly
cursoragent Aug 20, 2026
2ebb5a2
Compare the finalized session ID explicitly
cursoragent Aug 20, 2026
4492b72
Fix @typescript-eslint/strict-boolean-expressions at 199
cursoragent Aug 20, 2026
e2ab02b
Fix @typescript-eslint/strict-boolean-expressions at 274
cursoragent Aug 20, 2026
2625d30
Fix @typescript-eslint/strict-boolean-expressions at 339
cursoragent Aug 20, 2026
4320365
Fix @typescript-eslint/strict-boolean-expressions at 591
cursoragent Aug 20, 2026
ccb227b
Fix @typescript-eslint/strict-boolean-expressions at 141
cursoragent Aug 20, 2026
34e191b
Fix @typescript-eslint/strict-boolean-expressions at 160
cursoragent Aug 20, 2026
174b4b1
Fix @typescript-eslint/strict-boolean-expressions at 168
cursoragent Aug 20, 2026
03758f8
Fix @typescript-eslint/strict-boolean-expressions at 181
cursoragent Aug 20, 2026
762fba6
Fix @typescript-eslint/strict-boolean-expressions at 190
cursoragent Aug 20, 2026
4c09dfc
Fix @typescript-eslint/strict-boolean-expressions at 197
cursoragent Aug 20, 2026
e038548
Fix @typescript-eslint/strict-boolean-expressions at 207
cursoragent Aug 20, 2026
5430032
Fix @typescript-eslint/strict-boolean-expressions at 282
cursoragent Aug 20, 2026
04f9bc9
Fix @typescript-eslint/strict-boolean-expressions at 335
cursoragent Aug 20, 2026
00fb8c8
Fix @typescript-eslint/strict-boolean-expressions at 344
cursoragent Aug 20, 2026
6071129
Fix @typescript-eslint/strict-boolean-expressions at 351
cursoragent Aug 20, 2026
1274d6e
Make existing generation message check explicit
cursoragent Aug 20, 2026
c9e446f
Fix @typescript-eslint/strict-boolean-expressions at 389
cursoragent Aug 20, 2026
f7819ee
Fix @typescript-eslint/strict-boolean-expressions at 428
cursoragent Aug 20, 2026
609794a
Fix @typescript-eslint/strict-boolean-expressions at 467
cursoragent Aug 20, 2026
9fe5d31
Fix @typescript-eslint/strict-boolean-expressions at 487
cursoragent Aug 20, 2026
c0e8be1
Fix @typescript-eslint/strict-boolean-expressions at 537
cursoragent Aug 20, 2026
b24aae7
Fix @typescript-eslint/strict-boolean-expressions at 546
cursoragent Aug 20, 2026
cbb62ce
Fix @typescript-eslint/strict-boolean-expressions at 592
cursoragent Aug 20, 2026
4b1a3b5
Fix @typescript-eslint/strict-boolean-expressions at 718
cursoragent Aug 20, 2026
c279e16
Fix @typescript-eslint/strict-boolean-expressions at 839
cursoragent Aug 20, 2026
72c6581
Fix @typescript-eslint/strict-boolean-expressions at 845
cursoragent Aug 20, 2026
34ef0cf
Fix @typescript-eslint/strict-boolean-expressions at 871
cursoragent Aug 20, 2026
7360fa2
Fix @typescript-eslint/strict-boolean-expressions at 946
cursoragent Aug 20, 2026
9969671
Fix @typescript-eslint/strict-boolean-expressions at 1075
cursoragent Aug 20, 2026
7c951cf
Fix @typescript-eslint/strict-boolean-expressions at 1076
cursoragent Aug 20, 2026
4e7cc59
Fix @typescript-eslint/strict-boolean-expressions at 1170
cursoragent Aug 20, 2026
d67c507
Fix @typescript-eslint/strict-boolean-expressions at 1180
cursoragent Aug 20, 2026
edf1876
Fix @typescript-eslint/strict-boolean-expressions at 1197
cursoragent Aug 20, 2026
d403e35
Fix @typescript-eslint/strict-boolean-expressions at 1260
cursoragent Aug 20, 2026
9616cee
Fix @typescript-eslint/strict-boolean-expressions at 1290
cursoragent Aug 20, 2026
075b835
Fix @typescript-eslint/strict-boolean-expressions at 1521
cursoragent Aug 20, 2026
826607d
Fix @typescript-eslint/strict-boolean-expressions at 1527
cursoragent Aug 20, 2026
6fc7747
Fix @typescript-eslint/strict-boolean-expressions at 341
cursoragent Aug 20, 2026
6511a14
Discard request error listener return value
cursoragent Aug 20, 2026
7bbbc8f
Discard request data listener return value
cursoragent Aug 20, 2026
5bee1a4
Check the collector address for null explicitly
cursoragent Aug 20, 2026
7008cad
Discard collector close executor return value
cursoragent Aug 20, 2026
cf6edf8
Fix @typescript-eslint/strict-boolean-expressions at 1640
cursoragent Aug 20, 2026
81fae10
Discard unavailable socket listener return value
cursoragent Aug 20, 2026
acbfaba
Check the unavailable server address explicitly
cursoragent Aug 20, 2026
8946580
Discard unavailable server close return value
cursoragent Aug 20, 2026
4bec9c9
Remove redundant tool observation guard
cursoragent Aug 20, 2026
e0a6b0d
Remove redundant session error data guard
cursoragent Aug 20, 2026
0ea43a6
Narrow nullable condition in src/index.ts (1)
cursoragent Aug 20, 2026
6870f81
Narrow nullable condition in src/index.ts (2)
cursoragent Aug 20, 2026
db067f6
Narrow nullable condition in src/index.ts (3)
cursoragent Aug 20, 2026
f529150
Narrow nullable condition in src/index.ts (4)
cursoragent Aug 20, 2026
bac0379
Narrow nullable condition in src/index.ts (5)
cursoragent Aug 20, 2026
7440074
Narrow nullable condition in src/index.ts (6)
cursoragent Aug 20, 2026
385dacb
Narrow nullable condition in src/langfuse.ts (1)
cursoragent Aug 20, 2026
ed92da8
Narrow nullable condition in src/langfuse.ts (2)
cursoragent Aug 20, 2026
a581d96
Narrow nullable condition in src/langfuse.ts (3)
cursoragent Aug 20, 2026
8e2be9e
Narrow nullable condition in src/langfuse.ts (4)
cursoragent Aug 20, 2026
f268fb2
Narrow nullable condition in src/langfuse.ts (5)
cursoragent Aug 20, 2026
ea0edb1
Narrow nullable condition in src/langfuse.ts (6)
cursoragent Aug 20, 2026
e2d7a20
Narrow nullable condition in src/langfuse.ts (7)
cursoragent Aug 20, 2026
ea869cd
Narrow nullable condition in src/langfuse.ts (8)
cursoragent Aug 20, 2026
8d72de2
Narrow nullable condition in src/langfuse.ts (9)
cursoragent Aug 20, 2026
59c8596
Narrow nullable condition in src/langfuse.ts (10)
cursoragent Aug 20, 2026
9976ac5
Narrow nullable condition in src/langfuse.ts (11)
cursoragent Aug 20, 2026
f227913
Narrow nullable condition in src/langfuse.ts (12)
cursoragent Aug 20, 2026
6830fc5
Narrow nullable condition in src/langfuse.ts (13)
cursoragent Aug 20, 2026
c9ef122
Narrow nullable condition in src/langfuse.ts (14)
cursoragent Aug 20, 2026
57a6098
Narrow nullable condition in src/langfuse.ts (15)
cursoragent Aug 20, 2026
ef240a3
Narrow nullable condition in src/langfuse.ts (16)
cursoragent Aug 20, 2026
326469b
Narrow nullable condition in src/langfuse.ts (17)
cursoragent Aug 20, 2026
771bd99
Narrow nullable condition in src/langfuse.ts (18)
cursoragent Aug 20, 2026
bb1a552
Narrow nullable condition in src/langfuse.ts (19)
cursoragent Aug 20, 2026
8663f0f
Narrow nullable condition in src/langfuse.ts (20)
cursoragent Aug 20, 2026
b925c52
Narrow nullable condition in src/langfuse.ts (21)
cursoragent Aug 20, 2026
36104c2
Narrow nullable condition in src/langfuse.ts (22)
cursoragent Aug 20, 2026
aff8a20
Narrow nullable condition in src/langfuse.ts (23)
cursoragent Aug 20, 2026
125582a
Narrow nullable condition in src/langfuse.ts (24)
cursoragent Aug 20, 2026
c48ce96
Narrow nullable condition in src/langfuse.ts (25)
cursoragent Aug 20, 2026
8b65a9b
Narrow nullable condition in src/langfuse.ts (26)
cursoragent Aug 20, 2026
2bdcb6a
Narrow nullable condition in src/langfuse.ts (27)
cursoragent Aug 20, 2026
b46339f
Narrow optional completion text explicitly
cursoragent Aug 20, 2026
f6c6910
Narrow optional parent span ID explicitly
cursoragent Aug 20, 2026
6a51334
Disallow TypeScript type assertions
cursoragent Aug 20, 2026
838c9fd
Decode package metadata with Effect Schema
cursoragent Aug 20, 2026
a9aa870
Decode span JSON attributes with Effect Schema
cursoragent Aug 20, 2026
5f83ba5
Validate plugin events with Effect Schema
cursoragent Aug 20, 2026
e616a92
Validate the mock OpenCode client with Effect Schema
cursoragent Aug 20, 2026
b75eb8e
Validate plugin input with Effect Schema
cursoragent Aug 20, 2026
f58439a
Decode captured OTLP payloads with Effect Schema
cursoragent Aug 20, 2026
66e674a
Validate the generated plugin module with Effect Schema
cursoragent Aug 20, 2026
fff01a0
Validate successful MCP output with Effect Schema
cursoragent Aug 20, 2026
d78d783
Validate failed MCP output with Effect Schema
cursoragent Aug 20, 2026
9f8978f
Decode credential files with Effect Schema
cursoragent Aug 20, 2026
1dc7027
Add braces to skipped MCP content
cursoragent Aug 20, 2026
15c4f8f
Initialize shutdown promise with nullish assignment
cursoragent Aug 20, 2026
e0d1c6f
Read the guaranteed generation provider directly
cursoragent Aug 20, 2026
fab24e9
Read the guaranteed generation variant directly
cursoragent Aug 20, 2026
4b228ee
Read guaranteed text message content directly
cursoragent Aug 20, 2026
4d906b7
Use explicit turn parent control flow
cursoragent Aug 20, 2026
9975ffe
Omit unused user span parent context
cursoragent Aug 20, 2026
92fad78
Omit unused version span parent context
cursoragent Aug 20, 2026
d0d07c8
Omit unused app-root span parent context
cursoragent Aug 20, 2026
3e51b90
Implement user span completion as a no-op
cursoragent Aug 20, 2026
9f94f0a
Implement version span completion as a no-op
cursoragent Aug 20, 2026
6d67e81
Implement app-root span completion as a no-op
cursoragent Aug 20, 2026
fccc4a6
Await OpenCode log requests
cursoragent Aug 20, 2026
6680f6b
Format the collector port explicitly
cursoragent Aug 20, 2026
29a0dc4
Handle collector close results explicitly
cursoragent Aug 20, 2026
aae891e
Restore missing environment variables reflectively
cursoragent Aug 20, 2026
311218f
Use the current Vitest sequential suite API
cursoragent Aug 20, 2026
f140213
Validate user span inputs with Effect Schema
cursoragent Aug 20, 2026
ad2039d
Format generated assistant message IDs explicitly
cursoragent Aug 20, 2026
c0a63a2
Format generated step IDs explicitly
cursoragent Aug 20, 2026
6d93351
Format generated tool names explicitly
cursoragent Aug 20, 2026
5487bd3
Format generated tool call IDs explicitly
cursoragent Aug 20, 2026
b135285
Fail explicitly for missing generation spans
cursoragent Aug 20, 2026
c5a3655
Fail explicitly for a missing first generation
cursoragent Aug 20, 2026
e31f3b7
Fail explicitly for a missing second generation
cursoragent Aug 20, 2026
f9e6ff1
Validate retried generation output with Effect Schema
cursoragent Aug 20, 2026
72a1eda
Validate discovered tools with Effect Schema
cursoragent Aug 20, 2026
17b2fde
Format the unavailable collector port explicitly
cursoragent Aug 20, 2026
fc32c63
Handle unavailable collector close results explicitly
cursoragent Aug 20, 2026
209cb66
Restore resource environment variables reflectively
cursoragent Aug 20, 2026
2913624
Restrict implicit-looking coercion syntax
cursoragent Aug 20, 2026
ec85fea
Check active tool session presence explicitly
cursoragent Aug 20, 2026
361522a
Check active generation session absence directly
cursoragent Aug 20, 2026
31fc85f
Check message generation session absence directly
cursoragent Aug 20, 2026
a15950b
Check turn observation session absence directly
cursoragent Aug 20, 2026
baec1ff
Check latest turn session absence directly
cursoragent Aug 20, 2026
52934c2
Check reasoning message absence directly
cursoragent Aug 20, 2026
5165a0e
Check existing generation message absence directly
cursoragent Aug 20, 2026
4095758
Check new generation message absence directly
cursoragent Aug 20, 2026
eac6fdb
Check active generation message absence directly
cursoragent Aug 20, 2026
94c5689
Check failed generation message absence directly
cursoragent Aug 20, 2026
ec2234c
Check parent session absence directly
cursoragent Aug 20, 2026
42fe288
Check assistant text content explicitly
cursoragent Aug 20, 2026
5da855e
Check assistant reasoning content explicitly
cursoragent Aug 20, 2026
849a28f
Check source message absence directly
cursoragent Aug 20, 2026
2a2fba7
Setup knip
cursoragent Aug 20, 2026
47fd32c
Run linting checks once per change
cursoragent Aug 20, 2026
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 .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -3,6 +3,8 @@ name: CI
on:
pull_request:
push:
branches:
- main

permissions: {}

Expand Down Expand Up @@ -32,5 +34,9 @@ jobs:
run: pnpm run format:check
- name: Build
run: pnpm run build
- name: Lint
run: pnpm run lint
- name: Knip
run: pnpm run knip
- name: Integration test
run: pnpm run test:integration
64 changes: 64 additions & 0 deletions eslint.config.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
import js from "@eslint/js";
import tseslint from "typescript-eslint";

export default [
{
ignores: ["dist/**"],
},
js.configs.recommended,
{
files: ["**/*.{js,mjs,cjs,ts}"],
rules: {
curly: ["error", "all"],
"no-restricted-syntax": [
"error",
{
selector: "CallExpression[callee.name='Boolean']",
message:
"Avoid truthiness coercion. Use an explicit condition or comparison instead.",
},
{
selector:
"UnaryExpression[operator='!'] > BinaryExpression[operator='!=']",
message:
"Avoid negating comparisons. Use the inverse operator directly.",
},
{
selector:
"UnaryExpression[operator='!'] > BinaryExpression[operator='!==']",
message:
"Avoid negating comparisons. Use the inverse operator directly.",
},
],
},
},
...[
...tseslint.configs.strictTypeChecked,
...tseslint.configs.stylisticTypeChecked,
].map((config) => ({
...config,
files: ["**/*.ts"],
})),
{
files: ["**/*.ts"],
languageOptions: {
parserOptions: {
project: "./tsconfig.eslint.json",
tsconfigRootDir: import.meta.dirname,
},
},
rules: {
"@typescript-eslint/consistent-type-assertions": [
"error",
{
assertionStyle: "never",
},
],
"@typescript-eslint/consistent-type-definitions": ["error", "type"],
"@typescript-eslint/prefer-readonly": "error",
"@typescript-eslint/strict-boolean-expressions": "error",
"@typescript-eslint/strict-void-return": "error",
"@typescript-eslint/switch-exhaustiveness-check": "error",
},
},
];
18 changes: 12 additions & 6 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -40,22 +40,28 @@
"build": "tsdown && tsc --emitDeclarationOnly",
"format": "prettier --write .",
"format:check": "prettier --check .",
"knip": "knip --strict --treat-config-hints-as-errors --treat-tag-hints-as-errors",
"lint": "eslint .",
"test:integration": "pnpm run build && tsc --noEmit -p tsconfig.test.json && vitest run test/integration"
},
"dependencies": {
"@langfuse/otel": "^5.10.1",
"@opencode-ai/plugin": "^1.15.13",
"@opentelemetry/api": "^1.9.1"
"@opentelemetry/api": "^1.9.1",
"@opentelemetry/resources": "^2.10.0",
"@opentelemetry/sdk-trace-base": "^2.10.0",
"@opentelemetry/sdk-trace-node": "^2.10.0",
"effect": "^3.22.1"
},
"devDependencies": {
"@langfuse/otel": "^5.4.1",
"@opentelemetry/resources": "^2.7.1",
"@opentelemetry/sdk-trace-base": "^2.7.1",
"@opentelemetry/sdk-trace-node": "^2.7.1",
"@eslint/js": "^10.0.1",
"@types/node": "^26.1.2",
"effect": "^3.21.2",
"eslint": "^10.8.1",
"knip": "^6.32.2",
"prettier": "^3.8.3",
"tsdown": "0.22.14",
"typescript": "^6.0.3",
"typescript-eslint": "^8.67.0",
"vitest": "4.1.6"
}
}
Loading