Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
36 commits
Select commit Hold shift + click to select a range
5928a1a
fix(design): preserve CSS easing in Motion previews
steve8708 Oct 25, 2026
01d1883
fix(design): reset Motion easing selection state
steve8708 Oct 25, 2026
63ea65c
fix(design): complete CSS linear easing previews
steve8708 Oct 25, 2026
9bc2523
fix(design): preserve linear easing in custom picker
steve8708 Oct 25, 2026
6b3f6c8
fix(design): draw step-start easing jump
steve8708 Oct 25, 2026
6b256b6
fix(design): keep step easing previews upright
steve8708 Oct 25, 2026
5e9a324
fix: address design motion review findings
steve8708 Oct 25, 2026
a63b41d
fix(design): preserve motion easing edits
steve8708 Oct 25, 2026
9a4288e
Merge remote-tracking branch 'origin/main' into fix/design-css-easing…
steve8708 Oct 25, 2026
99b75c6
Surface Analytics workspace credential lookup failures (#8212)
steve8708 Oct 25, 2026
54c5a5d
fix: preserve Motion defaults on first source write
steve8708 Oct 25, 2026
fd6587f
fix(design): preserve inherited Motion easing state
steve8708 Oct 25, 2026
72871ca
Merge remote-tracking branch 'origin/fix/design-css-easing-preview-20…
steve8708 Oct 25, 2026
afedaed
Keep Clips recording pages scrollable in short desktop windows (#8214)
steve8708 Oct 25, 2026
b14960a
fix(design): preserve dirty spring bounce edits
steve8708 Oct 25, 2026
320ba2b
Cover attachment fingerprints and execution fences (#8198)
steve8708 Oct 25, 2026
ecdfac8
fix(design): restore motion keyframe insertion
steve8708 Oct 25, 2026
f89f426
fix(design): restore Motion timeline keyframe insertion
steve8708 Oct 25, 2026
d8bcae4
Merge remote-tracking branch 'origin/fix/design-css-easing-preview-20…
steve8708 Oct 25, 2026
2aaf916
fix(design): keep motion easing edits stable
steve8708 Oct 25, 2026
e85935c
Add does not contain, starts with, on or before and relative dates to…
3mdistal Oct 25, 2026
2e8f454
Ratchet framework strictness: typed action contracts, strict compiler…
steve8708 Oct 25, 2026
00b9522
fix(design): recognize existing React tracks in source capability
steve8708 Oct 25, 2026
bb56ba8
Upgrade mobile app to Expo SDK 58 (#8213)
steve8708 Oct 25, 2026
eece492
fix(design): satisfy Motion editor strictness guards
steve8708 Oct 25, 2026
db586c0
fix(design): allow clearing an empty Motion track
steve8708 Oct 25, 2026
241e2df
fix(design): guard Motion editor after final screen deletion
steve8708 Oct 25, 2026
165ca6a
fix(design): satisfy Motion editor strictness guards
steve8708 Oct 25, 2026
82df8de
Merge Motion editor guard fixes
steve8708 Oct 25, 2026
a726401
Add typed Decisions API with Jev and OpenAI providers (#8209)
steve8708 Oct 25, 2026
21ccc16
Merge commit '82df8de626eb1' into fix/design-motion-easing-ready-2026…
steve8708 Oct 25, 2026
73aac87
fix(design): keep Motion view type-safe on empty files
steve8708 Oct 25, 2026
f054f2b
fix(design): clear easing selection for native styles
steve8708 Oct 25, 2026
8463c99
fix(design): preserve Motion easing review values
steve8708 Oct 25, 2026
11714eb
fix(design): clear easing selection on native style changes
steve8708 Oct 25, 2026
0389265
test(design): make native Motion E2E reload reliable
steve8708 Oct 25, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
6 changes: 4 additions & 2 deletions .agents/skills/actions/SKILL.md
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ Before creating any custom route for app data, check `actions/` and the action t

An action may call a provider API, validate data, and persist records without being an AI feature — keep it deterministic, focused, and independently useful to the agent. Don't put LLM calls or a second model runtime in app actions.

The sanctioned model-backed exception is `@agent-native/core/decisions` for capability-aware classification and scoring, and it returns a result without performing or authorizing the selected action.

When a workflow is research, analysis, generation, recommendation, or synthesis — or spans several provider calls and writes — route it to the AgentSidebar via `sendToAgentChat({ openSidebar: true })` and let the agent orchestrate focused actions instead of hiding an AI-shaped workflow behind one opaque `generate-*`/`create-*` action just because its implementation happens to be deterministic.

## How to Create an Action
Expand Down Expand Up @@ -105,7 +107,7 @@ for interrupted-run recovery.

An action that hands control back to the user (question form, intake dialog) sets `endsTurn: true`; that hides it from MCP/WebMCP/A2A unless `mcpTool: true` is explicit — `references/action-fields.md`. For external-agent integrations, use the external-agents documentation slug listed by `agent-native-docs`.

Reach for `outputSchema` (validate the return), `_agentImages` (attach images the agent can see), `authorize` (gate who may call it), or `needsApproval` (require human sign-off per call) only when the action needs that guarantee — examples in `references/action-fields.md`.
Every new action declares `outputSchema`: it types the action's return and is enforced strictly by default (`guard:action-output-schema`). Declare its failure codes with `defineActionErrors` and fail through them. Reach for `_agentImages` (attach images the agent can see), `authorize` (gate who may call it), or `needsApproval` (require human sign-off per call) only when the action needs that guarantee — examples in `references/action-fields.md`.

### Write receipts

Expand Down Expand Up @@ -176,7 +178,7 @@ Everything else — CRUD, settings, search, list/detail reads, auth state, anyth
- **Do** render `actionErrorMessage(error) ?? yourCopy` in UI, never bare `error.message`. The message keeps an `Action <name> failed:` prefix that belongs in a console, so a toast built from it reads "Action update-brand-kit failed: That name is taken." The helper returns only what the action wrote, and `undefined` when nothing did (network drop, proxy HTML page), which is why the fallback is not optional.
- **Do** pass a real `errorCode` when the agent should branch on the failure rather than re-read it. Codes other than the default `action_failed` are appended to the tool result as `(errorCode: not_found)`, on both the in-app agent and MCP. `details` follow as an `Error details: {...}` JSON line, and as `structuredContent.error` over MCP, capped at 2,000 characters, so keep them to what the agent acts on next: ids, limits, field names. The status never reaches either.
- **Don't** re-export actions as REST — `/_agent-native/actions/:name` is already the REST surface; duplicating it under `/api/*` hides the operation from agents.
- **Don't** reach for provider integrations, `outputSchema`, `authorize`, `needsApproval`, or `_agentImages` without checking `references/` first — each has sharp edges covered there, not here.
- **Don't** reach for provider integrations, `authorize`, `needsApproval`, or `_agentImages` without checking `references/` first — each has sharp edges covered there, not here.

## Troubleshooting

Expand Down
27 changes: 22 additions & 5 deletions .agents/skills/actions/references/action-fields.md
Original file line number Diff line number Diff line change
Expand Up @@ -73,17 +73,34 @@ export default defineAction({
description: "Summarize a thread.",
schema: z.object({ threadId: z.string() }),
outputSchema: z.object({ summary: z.string(), messageCount: z.number() }),
outputErrorStrategy: "warn", // default; "strict" | "fallback"
// outputFallback: { summary: "", messageCount: 0 }, // used only by "fallback"
run: async ({ threadId }) => {
/* ... */
},
});
```

- `"warn"` (default) — `console.warn` the issues and return the **original** result unchanged. Non-breaking, with one exception: a connection request or stop signal thrown while the result is checked (from a transform or refinement) still ends the call as that signal, with a framework message in place of its own.
- `"strict"` — throw `ActionOutputContractError` (`errorCode: "output_contract_violation"`) so a buggy action surfaces loudly.
- `"fallback"` — return `outputFallback` in place of the invalid result.
Every new action declares `outputSchema` (`guard:action-output-schema` fails a new `defineAction` without one). The action's return type is inferred from it, and `run` must return what the schema accepts, so a drifting result is a compile error.

- `"strict"` (default) — throw `ActionOutputContractError` (`errorCode: "output_contract_violation"`) so a buggy action surfaces loudly.
- `"warn"` — `console.warn` the issues and return the **original** result unchanged. Only for an existing schema you are still fixing. A connection request or stop signal thrown while the result is checked (from a transform or refinement) still ends the call as that signal, with a framework message in place of its own.
- `"fallback"` — deprecated, and the guard rejects new uses: it returns `outputFallback`, a value callers cannot tell from a real result.

Declare the codes an action fails with as a closed set, and fail through it so a misspelled code does not compile:

```ts
const errors = defineActionErrors("thread_not_found", "thread_locked");
export default defineAction({
/* schema, outputSchema, */
errors, // published as `errorCodes` on the definition
run: async ({ threadId }) => {
if (!thread)
errors.noWrite("Thread not found.", "thread_not_found", {
statusCode: 404,
});
/* ... */
},
});
```

On success the validated value is returned, so coercion/defaults on `outputSchema` apply. Omit `outputSchema` and behavior is byte-for-byte unchanged (no wrapping).

Expand Down
80 changes: 80 additions & 0 deletions .agents/skills/decisions/SKILL.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,80 @@
---
name: decisions
description: >-
How to use `@agent-native/core/decisions` for capability-aware classification
and scoring. Use when implementing or reviewing decision evaluation, provider
ordering, per-provider thresholds, or decision-result caches.
scope: dev
metadata:
internal: true
---

# Decisions

## Rule

Use `decide()` to classify or score supplied inputs. It returns a result and
never performs, authorizes, or replaces the action selected from that result.

## How

Pass an explicit `ownerEmail`, an `input` string or array of parts, and named
`questions` to `decide()` from `@agent-native/core/decisions`:

```ts
import { decide } from "@agent-native/core/decisions";

const result = await decide({
ownerEmail: "owner@example.com",
input: [{ type: "text", text: "Please cancel Friday's lunch reservation." }],
questions: [
{
type: "predicate",
name: "isCancellationRequest",
instructions: "Does the message ask to cancel a reservation?",
},
],
});
```

`input` can be a plain string or contain text, structured JSON, or an image URL.
Questions are named and use one of these shapes:

| Type | Fields | Use |
| --- | --- | --- |
| `predicate` | `name`, `instructions` | Evaluate one stated predicate |
| `choice` | `name`, `instructions`, `choices: { value: string, description: string }[]` | Choose among the supplied string values |
| `score` | `name`, `instructions`, `levels: { label: string, description: string }[]` | Score against 2–10 ordered levels |

Provider and model capabilities can differ. Treat question support as
capability-aware. Only claim a provider/model supports a question type after
that combination has been verified. An `ok` result includes `provider`, `model`, and `answers` keyed by question name;
`cached` and `usage` are optional. A `not_configured` result includes the
`missing_credentials` reason and configured provider list. A `failed` result has
a typed reason and may include `provider` and `questionNames`. Handle these
statuses as distinct outcomes; never turn a failure into an answer.

## Provider routing and caches

Provider order is configurable per workspace. New customer workspaces try
Builder Jev first, then a personal Jev key, then OpenAI. Within Jev, the
Builder gateway is tried before falling back to a direct key. If no provider
is configured, `decide()` returns `not_configured`.

`getDecisionsStatus()` reports credential readiness separately from provider
capabilities. The Builder Jev proxy is verified for `predicate` and `choice`.
Jev `score` remains unverified and disabled by its capability flag, so
`decide()` skips Jev for score questions and continues to the next configured
provider. A Jev-only score request returns `failed` with
`unverified_capability`. The OpenAI Decisions API supports scores with 2–10
ordered levels; its request and response mapping is covered by documented
fixtures.

Key any per-provider threshold or cache by both provider and model. `cacheKey`
enables caching only when supplied. Cache identity includes the owner,
organization, provider, model, cache key, input, and questions. The in-memory
cache has a 60-second TTL and a 256-entry cap.

## Related skills

- **actions** — keep action behavior focused and deterministic.
5 changes: 5 additions & 0 deletions .changeset/core-decisions.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@agent-native/core": minor
---

Add a typed Decisions API with route-aware capability reporting, verified Jev and OpenAI score support, bounded inputs, provider-order validation, credential-aware cancellation and timeout handling, and validated evaluation metrics with target-recall threshold selection.
5 changes: 5 additions & 0 deletions .changeset/fresh-handoff-heartbeat.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@agent-native/core": patch
---

Keep claimed background chat runs alive during setup and abort timed-out setup.
5 changes: 5 additions & 0 deletions .changeset/strict-action-contracts.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
---
"@agent-native/core": minor
---

Make action results a typed, enforced contract. An action that declares `outputSchema` now defaults to `outputErrorStrategy: "strict"`: a result that does not match fails with `ActionOutputContractError` (`errorCode: "output_contract_violation"`) instead of logging a warning and returning the unchecked value. Pass `outputErrorStrategy: "warn"` to keep the old behavior while you fix a schema. `defineAction` now infers the action's return type from `outputSchema`, and its `run` must return a value the schema accepts, so a drifting result is a compile error. `outputErrorStrategy: "fallback"` and `outputFallback` are deprecated, because a fallback hides a broken result behind a plausible one. New `defineActionErrors(...codes)` declares an action's closed set of error codes; its `fail` and `noWrite` accept only those codes, and passing it to `defineAction` as `errors` publishes them as `errorCodes` on the definition. The CLI sources are now type-checked under `strict`, which fixes `agent-native agents list --app` and `--capabilities` throwing a `ReferenceError`. The shared `tsconfig.base.json` and the scaffolded workspace base now turn on `noUncheckedIndexedAccess`, `exactOptionalPropertyTypes`, `noImplicitOverride`, and `noFallthroughCasesInSwitch`. An app that extends `@agent-native/core/tsconfig.base.json` gets them on upgrade; set any of them to `false` in the app's own `tsconfig.json` to keep compiling while you fix the errors they report.
13 changes: 13 additions & 0 deletions .changeset/strict-compiler-flags-packages.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,13 @@
---
"@agent-native/agentkit": patch
"@agent-native/creative-context": patch
"@agent-native/dispatch": patch
"@agent-native/otel": patch
"@agent-native/pinpoint": patch
"@agent-native/recap-cli": patch
"@agent-native/scheduling": patch
"@agent-native/skills": patch
"@agent-native/toolkit": patch
---

Compile with `noImplicitOverride` and `noFallthroughCasesInSwitch`, and, where the code already passes them, `noUncheckedIndexedAccess` and `exactOptionalPropertyTypes`. Optional fields that legitimately hold `undefined` are now typed `T | undefined`. No runtime behavior changes.
3 changes: 3 additions & 0 deletions .github/workflows/ci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2029,6 +2029,9 @@ jobs:
- name: Test legacy MCP hint baseline guard
run: pnpm test:no-new-legacy-mcp-hints

- name: Test strictness ratchet guards
run: pnpm test:strictness-guards

- name: Test Neon transfer alert and offline backtest
run: pnpm test:neon-transfer-alert

Expand Down
12 changes: 8 additions & 4 deletions AGENTS.md
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ this file records only invariants.
A few entry points:

- `adding-a-feature` — four-area feature checklist.
- `decisions` — when using capability-aware classification and scoring.
- `content-product-development` — Content's product contract and shared changes.
- `writing-agent-instructions` — before editing instructions, skills, or tool/action descriptions.
- `verifying-changes` — exercise the broken path before calling a fix done.
Expand Down Expand Up @@ -137,12 +138,15 @@ exist, and both are narrow on purpose.
Code, and a human equally). `pnpm guards --list` prints the current set;
`no-silent-coercion`, `no-raw-colors`, `no-boot-data-work`,
`no-heavy-dashboard-list-reads`, `no-unbounded-table-reads`,
`no-bare-error-in-actions`, `external-result-contract`, and
`no-source-reading-tests` check only lines this branch added, so the
`no-bare-error-in-actions`, `external-result-contract`,
`no-source-reading-tests`, `action-output-schema`, `strict-lint`, and
`compiler-strictness` check only lines this branch added, so the
pre-existing backlog stays a separate cleanup. Each guard has a documented
opt-out pragma, and every opt-out is a decision a reviewer should see.
`no-new-legacy-mcp-hints` has none: the MCP `destructiveHint` baseline only
shrinks.
`no-new-legacy-mcp-hints`, `no-new-escape-hatches`, and `compiler-strictness`
have none: the MCP `destructiveHint` baseline, each file's count of `any`,
`!`, and suppression comments, and the list of tsconfig strictness opt-outs
only shrink.

A guard reports three outcomes, not two: exit 0 passed, exit 1 failed, exit 2
could not run. A diff-scoped guard that cannot resolve a base ref exits 2 via
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { Button } from "@/components/ui/button";
import { designSystem } from "@/design-system";

const components: ToolkitComponents = {
Button: Button as ToolkitComponents["Button"],
Button: Button as NonNullable<ToolkitComponents["Button"]>,
};

export function AppToolkitProvider({ children }: { children: ReactNode }) {
Expand Down
2 changes: 2 additions & 0 deletions community-templates/account-expert/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{
"extends": "@agent-native/core/tsconfig.base.json",
"compilerOptions": {
"noUncheckedIndexedAccess": false,
"exactOptionalPropertyTypes": false,
"ignoreDeprecations": "6.0",
"rootDirs": [".", "./.react-router/types"],
"paths": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { Button } from "@/components/ui/button";
import { designSystem } from "@/design-system";

const components: ToolkitComponents = {
Button: Button as ToolkitComponents["Button"],
Button: Button as NonNullable<ToolkitComponents["Button"]>,
};

export function AppToolkitProvider({ children }: { children: ReactNode }) {
Expand Down
2 changes: 2 additions & 0 deletions community-templates/account-tiering/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{
"extends": "@agent-native/core/tsconfig.base.json",
"compilerOptions": {
"noUncheckedIndexedAccess": false,
"exactOptionalPropertyTypes": false,
"ignoreDeprecations": "6.0",
"rootDirs": [".", "./.react-router/types"],
"paths": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { Button } from "@/components/ui/button";
import { designSystem } from "@/design-system";

const components: ToolkitComponents = {
Button: Button as ToolkitComponents["Button"],
Button: Button as NonNullable<ToolkitComponents["Button"]>,
};

export function AppToolkitProvider({ children }: { children: ReactNode }) {
Expand Down
2 changes: 2 additions & 0 deletions community-templates/call-follow-up-drafter/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{
"extends": "@agent-native/core/tsconfig.base.json",
"compilerOptions": {
"noUncheckedIndexedAccess": false,
"exactOptionalPropertyTypes": false,
"ignoreDeprecations": "6.0",
"rootDirs": [".", "./.react-router/types"],
"paths": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { Button } from "@/components/ui/button";
import { designSystem } from "@/design-system";

const components: ToolkitComponents = {
Button: Button as ToolkitComponents["Button"],
Button: Button as NonNullable<ToolkitComponents["Button"]>,
};

export function AppToolkitProvider({ children }: { children: ReactNode }) {
Expand Down
2 changes: 2 additions & 0 deletions community-templates/churn-early-warning/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{
"extends": "@agent-native/core/tsconfig.base.json",
"compilerOptions": {
"noUncheckedIndexedAccess": false,
"exactOptionalPropertyTypes": false,
"ignoreDeprecations": "6.0",
"rootDirs": [".", "./.react-router/types"],
"paths": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { Button } from "@/components/ui/button";
import { designSystem } from "@/design-system";

const components: ToolkitComponents = {
Button: Button as ToolkitComponents["Button"],
Button: Button as NonNullable<ToolkitComponents["Button"]>,
};

export function AppToolkitProvider({ children }: { children: ReactNode }) {
Expand Down
2 changes: 2 additions & 0 deletions community-templates/demo-clip-library/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{
"extends": "@agent-native/core/tsconfig.base.json",
"compilerOptions": {
"noUncheckedIndexedAccess": false,
"exactOptionalPropertyTypes": false,
"ignoreDeprecations": "6.0",
"rootDirs": [".", "./.react-router/types"],
"paths": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { Button } from "@/components/ui/button";
import { designSystem } from "@/design-system";

const components: ToolkitComponents = {
Button: Button as ToolkitComponents["Button"],
Button: Button as NonNullable<ToolkitComponents["Button"]>,
};

export function AppToolkitProvider({ children }: { children: ReactNode }) {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{
"extends": "@agent-native/core/tsconfig.base.json",
"compilerOptions": {
"noUncheckedIndexedAccess": false,
"exactOptionalPropertyTypes": false,
"ignoreDeprecations": "6.0",
"rootDirs": [".", "./.react-router/types"],
"paths": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { Button } from "@/components/ui/button";
import { designSystem } from "@/design-system";

const components: ToolkitComponents = {
Button: Button as ToolkitComponents["Button"],
Button: Button as NonNullable<ToolkitComponents["Button"]>,
};

export function AppToolkitProvider({ children }: { children: ReactNode }) {
Expand Down
2 changes: 2 additions & 0 deletions community-templates/linkedin-signal-watch/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{
"extends": "@agent-native/core/tsconfig.base.json",
"compilerOptions": {
"noUncheckedIndexedAccess": false,
"exactOptionalPropertyTypes": false,
"ignoreDeprecations": "6.0",
"rootDirs": [".", "./.react-router/types"],
"paths": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { Button } from "@/components/ui/button";
import { designSystem } from "@/design-system";

const components: ToolkitComponents = {
Button: Button as ToolkitComponents["Button"],
Button: Button as NonNullable<ToolkitComponents["Button"]>,
};

export function AppToolkitProvider({ children }: { children: ReactNode }) {
Expand Down
2 changes: 2 additions & 0 deletions community-templates/outbound-in-your-voice/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{
"extends": "@agent-native/core/tsconfig.base.json",
"compilerOptions": {
"noUncheckedIndexedAccess": false,
"exactOptionalPropertyTypes": false,
"ignoreDeprecations": "6.0",
"rootDirs": [".", "./.react-router/types"],
"paths": {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ import { Button } from "@/components/ui/button";
import { designSystem } from "@/design-system";

const components: ToolkitComponents = {
Button: Button as ToolkitComponents["Button"],
Button: Button as NonNullable<ToolkitComponents["Button"]>,
};

export function AppToolkitProvider({ children }: { children: ReactNode }) {
Expand Down
2 changes: 2 additions & 0 deletions community-templates/win-loss-memo/tsconfig.json
Original file line number Diff line number Diff line change
@@ -1,6 +1,8 @@
{
"extends": "@agent-native/core/tsconfig.base.json",
"compilerOptions": {
"noUncheckedIndexedAccess": false,
"exactOptionalPropertyTypes": false,
"ignoreDeprecations": "6.0",
"rootDirs": [".", "./.react-router/types"],
"paths": {
Expand Down
Loading
Loading