Skip to content
Draft
Show file tree
Hide file tree
Changes from 7 commits
Commits
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
2 changes: 2 additions & 0 deletions .agents/skills/klicker-data-model/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,8 @@ pnpm run build # 4. regenerate Prisma client + dependent packages

Then, if the change is API-visible: update Pothos types/resolvers (`klicker-graphql-api`) — the Pothos Prisma plugin picks up new fields, but object types expose them explicitly.

Run Prisma client generation only through `pnpm --filter @klicker-uzh/prisma generate` (or a build that calls it). The package script owns the TypeScript 6 generated-namespace patch; direct `prisma generate` bypasses it. The package's canonical `check` includes the patch invariant tests. If generation fails at the patch, run `pnpm --filter @klicker-uzh/prisma test:patch-namespace` and inspect the new generated declarations instead of weakening the exact-cardinality guard.

Provenance: steps 2 requires a database; on a machine without one running, write the schema change and STOP — hand the migration step to the user rather than faking a migration file.

## Rules that prevent real incidents
Expand Down
2 changes: 2 additions & 0 deletions .agents/skills/klicker-testing-verification/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -39,6 +39,8 @@ Every item, in order; paste evidence (command + tail of output, screenshots) int
5. **i18n pair check** if UI text changed: the key exists in BOTH `packages/i18n/messages/de.ts` and `en.ts`.
6. **Browser evidence for UI changes** — open the changed pages with `npx agent-browser` (never bare `agent-browser`), log in with delegated/test credentials (AGENTS.md), capture before/after screenshots. "The logic looks correct" does not count.

For TypeScript or other compiler/toolchain upgrades, root `check:all` includes the Cypress and Playwright compilers through their package `check` scripts. Also run `pnpm run build:test` and the Docs production build; those surfaces remain outside the root check. Use direct package `tsc --noEmit -p tsconfig.json` commands only to isolate a Cypress or Playwright failure.

## Reporting

State what you ran, what passed, what you did NOT run and why (e.g. "no Infisical access — e2e left to CI"). An honest gap beats a fabricated green.
7 changes: 7 additions & 0 deletions .syncpackrc.mjs
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,13 @@ export default {
},
],
versionGroups: [
{
// Office Add-in compiler/tooling is owned by a separate upgrade PR.
label: 'Office Add-in TypeScript can differ from the workspace',
dependencies: ['typescript'],
packages: ['@klicker-uzh/office-addin'],
isIgnored: true,
},
{
// FIXME: update when consistent versions are possible (e.g., do other remark updates in apps)
label: 'remark-math can be inconsistent between docs and apps',
Expand Down
2 changes: 1 addition & 1 deletion apps/auth/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@
"tailwindcss": "~4.1.11",
"tailwindcss-animate": "~1.0.7",
"tw-animate-css": "~1.3.4",
"typescript": "~5.6.3"
"typescript": "~6.0.3"
},
"scripts": {
"build": "next build --webpack",
Expand Down
1 change: 0 additions & 1 deletion apps/auth/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@
"jsx": "react-jsx",
"isolatedModules": true,
// Path Mapping
"baseUrl": ".",
"paths": {
"@/*": ["./src/*"]
},
Expand Down
2 changes: 1 addition & 1 deletion apps/backend-docker/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
"rollup": "~4.34.9",
"source-map-support": "~0.5.21",
"tsx": "~4.19.4",
"typescript": "~5.6.3"
"typescript": "~6.0.3"
},
"scripts": {
"build": "cross-env NODE_ENV=production run-s --npm-path pnpm build:ts",
Expand Down
1 change: 0 additions & 1 deletion apps/backend-docker/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"include": ["./src/**/*", "./scripts/**/*", "./instrumented/**/*"],
"compilerOptions": {
"baseUrl": ".",
/* Base Options: */
"esModuleInterop": true,
"skipLibCheck": true,
Expand Down
2 changes: 1 addition & 1 deletion apps/chat/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -66,7 +66,7 @@
"eslint": "~9.30.1",
"eslint-config-next": "~16.2.9",
"tailwindcss": "~4.1.11",
"typescript": "~5.6.3",
"typescript": "~6.0.3",
"vitest": "~3.2.4"
},
"scripts": {
Expand Down
14 changes: 7 additions & 7 deletions apps/chat/src/app/RuntimeProvider.tsx
Original file line number Diff line number Diff line change
@@ -1,19 +1,19 @@
'use client'

import { useChatResponse } from '@/src/hooks/useChatResponse'
import { useThreadManagement } from '@/src/hooks/useThreadManagement'
import {
useChatStore,
type ExtendedThreadMessageLike,
} from '@/src/stores/chatStore'
import { useSettingsStore } from '@/src/stores/settingsStore'
import {
AssistantRuntimeProvider,
useExternalStoreRuntime,
type ThreadMessageLike,
} from '@assistant-ui/react'
import { useParams, useRouter, useSearchParams } from 'next/navigation'
import { useCallback, useEffect, useRef, useState } from 'react'
import { useChatResponse } from 'src/hooks/useChatResponse'
import { useThreadManagement } from 'src/hooks/useThreadManagement'
import {
useChatStore,
type ExtendedThreadMessageLike,
} from 'src/stores/chatStore'
import { useSettingsStore } from 'src/stores/settingsStore'
import { useChatUi } from '../components/chat-ui-context'
import { imageAttachmentAdapter } from '../lib/attachments/imageAttachmentAdapter'

Expand Down
10 changes: 5 additions & 5 deletions apps/chat/src/app/api/chatbots/[chatbotId]/chat/route.ts
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
import { DEFAULT_PROMPT } from '@/src/lib/config/prompts'
import { type ReasoningEffort } from '@/src/lib/config/reasoning'
import { withChatbotAuth } from '@/src/lib/server/apiGuards'
import {
getAllowedReasoningEffortsForModel,
Expand All @@ -7,10 +9,13 @@ import {
} from '@/src/lib/server/chatModelRegistry'
import { ensureImagePreviewBase64 } from '@/src/lib/server/imagePreview'
import { getOpenAIResponsesStore } from '@/src/lib/server/openaiResponsesOptions'
import { CreditsService } from '@/src/services/credits'
import { DisclaimersService } from '@/src/services/disclaimers'
import {
getAggregatedMCPTools,
type MCPServerWithConfig,
} from '@/src/services/mcpClients'
import { ThreadService } from '@/src/services/threads'
import { createOpenAI } from '@ai-sdk/openai'
import { prisma } from '@klicker-uzh/prisma'
import { Chatbot } from '@klicker-uzh/prisma/client'
Expand All @@ -24,11 +29,6 @@ import {
} from 'ai'
import { createHash, randomUUID } from 'crypto'
import { NextRequest, NextResponse } from 'next/server'
import { DEFAULT_PROMPT } from 'src/lib/config/prompts'
import { type ReasoningEffort } from 'src/lib/config/reasoning'
import { CreditsService } from 'src/services/credits'
import { DisclaimersService } from 'src/services/disclaimers'
import { ThreadService } from 'src/services/threads'
import { z } from 'zod'

export const runtime = 'nodejs'
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { withChatbotAuth } from '@/src/lib/server/apiGuards'
import { ThreadService } from '@/src/services/threads'
import { NextRequest, NextResponse } from 'next/server'
import { ThreadService } from 'src/services/threads'

/**
* Deletes a specific thread and all its associated messages permanently for the authenticated participant.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { withChatbotAuth } from '@/src/lib/server/apiGuards'
import { ThreadService } from '@/src/services/threads'
import { NextRequest, NextResponse } from 'next/server'
import { ThreadService } from 'src/services/threads'

/**
* Updates the title of a specific thread for the authenticated participant.
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
import { withChatbotAuth } from '@/src/lib/server/apiGuards'
import { ThreadService } from '@/src/services/threads'
import { NextRequest, NextResponse } from 'next/server'
import { ThreadService } from 'src/services/threads'

/**
* Retrieves all chat threads for the authenticated participant ordered by most recently updated.
Expand Down
3 changes: 1 addition & 2 deletions apps/chat/tsconfig.json
Original file line number Diff line number Diff line change
Expand Up @@ -20,8 +20,7 @@
],
"paths": {
"@/*": ["./*"]
},
"baseUrl": "."
}
},
"include": [
"next-env.d.ts",
Expand Down
2 changes: 1 addition & 1 deletion apps/docs/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -41,7 +41,7 @@
"remark-math": "~6.0.0",
"tailwind-merge": "~3.3.1",
"tailwindcss": "~4.1.11",
"typescript": "~5.6.3"
"typescript": "~6.0.3"
},
"scripts": {
"build:docs": "docusaurus build",
Expand Down
3 changes: 2 additions & 1 deletion apps/docs/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
{
"extends": "@docusaurus/tsconfig",
"compilerOptions": {
"baseUrl": "."
"baseUrl": ".",
"ignoreDeprecations": "6.0"
}
}
2 changes: 1 addition & 1 deletion apps/frontend-control/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@
"swc-loader": "~0.2.7",
"tailwindcss": "~4.1.11",
"tw-animate-css": "~1.3.4",
"typescript": "~5.6.3"
"typescript": "~6.0.3"
},
"scripts": {
"build": "next build --webpack",
Expand Down
13 changes: 6 additions & 7 deletions apps/frontend-control/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"compilerOptions": {
"target": "es5",
"target": "ES2015",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
Expand All @@ -15,13 +15,12 @@
"isolatedModules": true,
"jsx": "react-jsx",
"incremental": true,
"baseUrl": ".",
"paths": {
"~/*": ["src/*"],
"@components/*": ["src/components/*"],
"@lib/*": ["src/lib/*"],
"@pages/*": ["src/pages/*"],
"@type/*": ["src/types/*"]
"~/*": ["./src/*"],
"@components/*": ["./src/components/*"],
"@lib/*": ["./src/lib/*"],
"@pages/*": ["./src/pages/*"],
"@type/*": ["./src/types/*"]
}
},
"include": [
Expand Down
2 changes: 1 addition & 1 deletion apps/frontend-manage/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -86,7 +86,7 @@
"tailwindcss": "~4.1.11",
"tailwindcss-animate": "~1.0.7",
"tw-animate-css": "~1.3.4",
"typescript": "~5.6.3"
"typescript": "~6.0.3"
},
"scripts": {
"build": "next build --webpack",
Expand Down
14 changes: 7 additions & 7 deletions apps/frontend-manage/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"compilerOptions": {
"target": "es5",
"target": "ES2015",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
Expand All @@ -15,13 +15,13 @@
"isolatedModules": true,
"jsx": "react-jsx",
"incremental": true,
"baseUrl": ".",
"paths": {
"~/*": ["src/*"],
"@components/*": ["src/components/*"],
"@lib/*": ["src/lib/*"],
"@pages/*": ["src/pages/*"],
"@type/*": ["src/types/*"]
"~/*": ["./src/*"],
"@components/*": ["./src/components/*"],
"@lib/*": ["./src/lib/*"],
"@pages/*": ["./src/pages/*"],
"@type/*": ["./src/types/*"],
"public/*": ["./public/*"]
}
},
"include": [
Expand Down
2 changes: 1 addition & 1 deletion apps/frontend-pwa/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -73,7 +73,7 @@
"tailwindcss": "~4.1.11",
"tsx": "~4.19.4",
"tw-animate-css": "~1.3.4",
"typescript": "~5.6.3"
"typescript": "~6.0.3"
},
"scripts": {
"build": "next build --webpack",
Expand Down
6 changes: 3 additions & 3 deletions apps/frontend-pwa/src/pages/createAccount.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -7,13 +7,13 @@ import { useRouter } from 'next/router'
import nookies from 'nookies'

import { useMutation } from '@apollo/client'
import Layout from '@components/Layout'
import CreateAccountForm from '@components/forms/CreateAccountForm'
import { CreateParticipantAccountDocument } from '@klicker-uzh/graphql/dist/ops'
import { addApolloState, initializeApollo } from '@lib/apollo'
import getParticipantToken from '@lib/getParticipantToken'
import useParticipantToken from '@lib/useParticipantToken'
import bodyParser from 'body-parser'
import Layout from 'src/components/Layout'
import CreateAccountForm from 'src/components/forms/CreateAccountForm'
import { addApolloState, initializeApollo } from 'src/lib/apollo'

interface Props {
signedLtiData?: string
Expand Down
14 changes: 7 additions & 7 deletions apps/frontend-pwa/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
{
"compilerOptions": {
"target": "es5",
"target": "ES2015",
"lib": ["dom", "dom.iterable", "esnext"],
"allowJs": true,
"skipLibCheck": true,
Expand All @@ -15,13 +15,13 @@
"isolatedModules": true,
"jsx": "react-jsx",
"incremental": true,
"baseUrl": ".",
"paths": {
"~/*": ["src/*"],
"@components/*": ["src/components/*"],
"@lib/*": ["src/lib/*"],
"@pages/*": ["src/pages/*"],
"@type/*": ["src/types/*"]
"~/*": ["./src/*"],
"@components/*": ["./src/components/*"],
"@lib/*": ["./src/lib/*"],
"@pages/*": ["./src/pages/*"],
"@type/*": ["./src/types/*"],
"public/*": ["./public/*"]
}
},
"include": [
Expand Down
2 changes: 1 addition & 1 deletion apps/hatchet-worker-general/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,7 @@
"@types/node": "^24.10.1",
"rollup": "~4.34.9",
"tsx": "~4.19.4",
"typescript": "~5.6.3"
"typescript": "~6.0.3"
},
"scripts": {
"build": "run-s --npm-path pnpm build:ts",
Expand Down
1 change: 0 additions & 1 deletion apps/hatchet-worker-general/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"include": ["./src/**/*", "./scripts/**/*"],
"compilerOptions": {
"baseUrl": ".",
/* Base Options: */
"esModuleInterop": true,
"skipLibCheck": true,
Expand Down
2 changes: 1 addition & 1 deletion apps/hatchet-worker-response-processor/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -22,7 +22,7 @@
"@types/node": "^24.10.1",
"rollup": "~4.34.9",
"tsx": "~4.19.4",
"typescript": "~5.6.3"
"typescript": "~6.0.3"
},
"scripts": {
"build": "run-s --npm-path pnpm build:ts",
Expand Down
1 change: 0 additions & 1 deletion apps/hatchet-worker-response-processor/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"include": ["./src/**/*", "./scripts/**/*"],
"compilerOptions": {
"baseUrl": ".",
/* Base Options: */
"esModuleInterop": true,
"skipLibCheck": true,
Expand Down
2 changes: 1 addition & 1 deletion apps/lti/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@
"npm-run-all": "~4.1.5",
"rollup": "~4.34.9",
"rollup-plugin-copy": "~3.5.0",
"typescript": "~5.6.3"
"typescript": "~6.0.3"
},
"scripts": {
"build": "cross-env NODE_ENV=production pnpm run build:ts",
Expand Down
2 changes: 1 addition & 1 deletion apps/olat-api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@
"rollup": "~4.34.9",
"supertest": "~7.1.1",
"tsx": "~4.19.4",
"typescript": "~5.6.3",
"typescript": "~6.0.3",
"vitest": "~3.2.4"
},
"scripts": {
Expand Down
1 change: 0 additions & 1 deletion apps/olat-api/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"include": ["**/**/*"],
"compilerOptions": {
"baseUrl": ".",
/* Base Options: */
"esModuleInterop": true,
"skipLibCheck": true,
Expand Down
2 changes: 1 addition & 1 deletion apps/response-api/package.json
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
"@types/node": "^24.10.1",
"rollup": "~4.34.9",
"tsx": "~4.19.4",
"typescript": "~5.6.3"
"typescript": "~6.0.3"
},
"scripts": {
"build": "run-s --npm-path pnpm build:ts",
Expand Down
1 change: 0 additions & 1 deletion apps/response-api/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,7 +1,6 @@
{
"include": ["./src/**/*", "./scripts/**/*"],
"compilerOptions": {
"baseUrl": ".",
/* Base Options: */
"esModuleInterop": true,
"skipLibCheck": true,
Expand Down
Loading
Loading