Commit Graph
38 Commits
Author SHA1 Message Date
fd8b7a0ae3 feat(core-agent): bump xsai / remove patches (#2164)
## Summary

- Bump catalog `@xsai/*`, `@xsai-ext/providers`, and `xsschema` to
**0.5.0-beta.8**, and delete the three `@xsai/*` pnpm patches — the
beta.2 ones from #1602 and the beta.8 regenerations that landed on main
in `38a008500`.
- Always capture tool failures on the core-agent chat path: xsAI beta.8
marks failed tool executions with `isError: true` on `tool-result.done`,
and `llm-service.ts` maps that to AIRI's `tool-error` event via
`toAiriStreamEvent`, so the agent loop continues instead of aborting.
- Remove the `captureToolErrors` request flag (and stop forwarding it
into `streamText`).
- Rebased onto latest `main` (`b230e16b2`). Includes one follow-up fix:
steps are marked settled before the finish listener runs, and finish
listener failures still reject the stream.

### Related

- Supersedes / follows up on
[#1602](https://github.com/moeru-ai/airi/pull/1602) (`captureToolErrors`
+ xsai patches).

### Scope of capture

| Case | Covered |
| --- | --- |
| A — unknown tool | yes |
| B — invalid / unparseable arguments JSON | yes |
| C — `validate` failure | yes |
| D — `execute` throw | yes |
| `missing_name` / `missing_arguments` | no (xsai still aborts) |
| `repairToolCall` | no |

Error copy on beta.8: `Tool "<toolName>" execution failed: …` (produced
by xsAI).

## Test plan

### Automated (Vitest)

- [x] core-agent `llm-service.test.ts` — 16/16
- [x] core-agent full suite — 82/82
- [x] stage-ui `llm.test.ts` + `chat.contract.test.ts` — 44/44 (the
previous `stepsSettled` timing failure is fixed in this branch)
- [x] stage-ui full suite — 594 passed / 0 failed (one
browser-test-runner teardown error, not a test failure)
- [x] typecheck — core-agent, stage-ui, component-calling, satori-bot
pass; telegram-bot fails only at `src/utils/velin.ts`, which is
pre-existing on main and untouched by this PR

### Real-environment E2E (rebase branch, DeepSeek V4 Flash via DeepSeek
API)

Harness: `/Users/lulu/GitHub/airi-e2e/pr2164/tool-error-e2e-rebase.mjs`
— drives the built `core-agent` `streamFrom` with a deliberately failing
tool.

| Case | Result | Evidence |
| --- | --- | --- |
| D — execute throw | **pass** | `tool-error` carried `Tool
"always_fail" execution failed: boom: deterministic tool failure`; the
model answered: "The always_fail tool threw a deterministic error as
expected." |
| A — unknown tool | **pass** | The model called the unavailable
`search_the_moon_database` after being told truthfully that this tests
AIRI's error capture; runtime returned `tool-error` and the conversation
continued. |
| B — bad arguments JSON | not observed on real model | providers rarely
emit invalid `arguments`; covered by unit test |
| C — `validate` failure | pass (earlier manual run with a temporary
validate-gated tool) | — |

Evidence artifacts:
`/Users/lulu/GitHub/airi-e2e/artifacts/pr2164/tool-error-e2e-2026-08-10T16-49-15-384Z.{json,log}`

### Notes / non-goals

- Fallout-only updates for the xsai beta.8 API rename: `textStream`,
`inputTokens` / `outputTokens` / `totalTokens` in component-calling /
telegram / satori.

---------

Co-authored-by: Cursor <cursoragent@cursor.com>
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
2026-08-11 17:51:15 +08:00
RainbowBird 007fae6810 chore: update package dependencies and remove specific catalog references
- Removed specific catalog references for '@unocss/core', 'es-toolkit', 'nanoid', and 'valibot' in pnpm-workspace.yaml and various service package.json files.
- Updated versions for '@vueuse/core', 'es-toolkit', 'nanoid', 'reka-ui', and 'valibot' to their latest compatible versions.
- Cleaned up unused catalog entries in pnpm-workspace.yaml.
2026-06-07 19:45:28 +08:00
RainbowBird 7841df28f8 build(deps): migrate workspace dependencies to catalogs
Move direct external dependency versions into pnpm catalogs and update workspace packages to reference catalog entries.

Signed-off-by: RainbowBird <git@luoling.moe>

Commit-Message-Assisted-by: Codex
2026-06-03 17:12:13 +08:00
DrHuangMHT 9d5c9e9332 chore(deps): remove deprecated unplugin-vue-router (#1664) 2026-04-15 15:02:10 +08:00
Neko Ayaka f286464e03 chore(deps): bump dependencies 2026-04-15 14:44:59 +08:00
Neko Ayaka 95eac8e41c chore(deps): bump dependencies 2026-04-11 04:00:49 +08:00
Neko Ayaka 25b5de179d Revert "chore(deps): replace with unplugin-vue"
This reverts commit 3339daa746.

As unplugin-vue-i18n:

```
[unplugin-vue-i18n]  `@vitejs/plugin-vue` plugin is not found or invalid version. Please install `@vitejs/plugin-vue` v4.3.4 or later version.
```

https://github.com/intlify/bundle-tools/blob/3da4987500bbf9b398b0681852b90470968bdc8c/packages/unplugin-vue-i18n/src/core/resource.ts#L167-L168

it seems they are depending on vite:vue while https://github.com/unplugin/unplugin-vue is different on plugin resolving, yet unplugin-vue seems
lost the track of new version.
2026-03-26 18:10:30 +08:00
Neko Ayaka 3339daa746 chore(deps): replace with unplugin-vue 2026-03-26 17:22:49 +08:00
Neko Ayaka ac1de680d0 chore(deps): bump dependencies 2026-03-23 02:15:40 +08:00
Rin 7b5f19ed78 chore: remove unused dependencies from component-calling and twitter-services 2026-03-18 02:46:21 +08:00
Neko Ayaka 92d87833be chore(deps): bump dependencies 2026-02-26 18:33:52 +08:00
藍+85CD 09bdbf205a chore(deps): use vite v8 instead of rolldown-vite (#993) 2026-01-24 22:30:04 +08:00
Neko Ayaka d051a07da9 chore(deps): bump dependencies 2026-01-21 05:42:01 +08:00
Neko Ayaka e38366d37b fix(deps): sync vue to catalog: 2026-01-17 15:57:54 +08:00
Neko Ayaka 198092f226 chore(deps): bump dependencies 2025-12-29 05:51:45 +08:00
Neko Ayaka c9a9ec7bfa Revert "chore(deps): bump dependencies"
This reverts commit 349810ff27.
2025-12-21 17:16:47 +08:00
Neko Ayaka 349810ff27 chore(deps): bump dependencies 2025-12-21 15:58:52 +08:00
Neko Ayaka a3dba4f3cf chore(deps): bump dependencies & electron-builder 2025-12-13 16:23:45 +08:00
Neko Ayaka fafba1cdf8 chore(deps): bump dependencies 2025-12-11 02:22:43 +08:00
Neko Ayaka e28e2eff89 chore(deps): bump valibot 2025-12-01 00:49:45 +08:00
Mr-Quin 7e299e1788 chore(stage-*): improve use of useDark, remove nprogress for tamagotchi (#753) 2025-11-22 03:09:44 +08:00
Neko Ayaka 3e741d57ec chore(deps): bump dependencies 2025-11-16 02:21:38 +08:00
Neko Ayaka 5b9bf180e9 Revert "chore(deps): bump dependencies"
This reverts commit 38401084e1.
2025-11-16 01:28:29 +08:00
Neko Ayaka 38401084e1 chore(deps): bump dependencies 2025-11-15 23:45:01 +08:00
藍+85CD 38eda5f330 chore: remove empty files (#710) 2025-11-02 13:01:40 +08:00
Neko Ayaka a7a1302b99 chore(deps): bump dependencies 2025-11-01 16:03:45 +08:00
藍+85CD 6d5f8f480b chore(tsconfig): clean useless mts part 2025-10-17 20:42:24 +08:00
Neko Ayaka 0b85ab78fc chore(deps): bump dependencies 2025-10-12 00:36:21 +08:00
Neko Ayaka 0de306f668 chore(deps): bump dependencies 2025-10-09 02:35:44 +08:00
Neko Ayaka 75321a4cd9 chore(deps): bump dependencies 2025-10-03 16:54:50 +08:00
Neko Ayaka 372125fb89 chore(deps): bump dependencies
Notice: after bumping up to three 0.180.0 with @types/three 0.180.0,
  Argument of type 'Group<Object3DEventMap>' is not assignable to parameter of type 'Object3D<Object3DEventMap>'.
    Type 'Group<Object3DEventMap>' is missing the following properties from type 'Object3D<Object3DEventMap>': setPointerCapture, releasePointerCapture, hasPointerCapture

Currently, AFAIK, clearly, three, and @types/three doesn't have the setPointerCapture, releasePointerCapture, hasPointerCapture method / getters
The only place I found on GitHub, points out that https://github.com/pmndrs/xr/blob/456aa380206e93888cd3a5741a1534e672ae3106/packages/pointer-events/src/pointer.ts#L69-L100 declares

```js
declare module 'three' {
  interface Object3D {
    setPointerCapture(pointerId: number): void
    releasePointerCapture(pointerId: number): void
    hasPointerCapture(pointerId: number): boolean

    intersectChildren?: boolean
    interactableDescendants?: Array<Object3D>
    /**
     * @deprecated
     */
    ancestorsHaveListeners?: boolean
    ancestorsHavePointerListeners?: boolean
    ancestorsHaveWheelListeners?: boolean
  }
}
```

And in @tresjs/core v5, it uses the @pmndrs/pointer-events internally.
Somehow the Object3D from @types/three and the one augmented by @pmndrs/pointer-events are not compatible.

`new Object3D() as unknown as Object3D` works as workaround here but there should be no need to do such a thing since these two Object3D should be the same.
With no updates from `typescript`, I assume there is no breaking change or regression from `typescript` side.
2025-09-26 17:07:07 +08:00
Neko Ayaka ab10782c65 chore(deps): bump dependencies 2025-09-03 13:25:12 +08:00
Neko Ayaka dc6dff5a6d chore(deps): bump dependencies 2025-08-29 01:38:04 +08:00
Neko Ayaka ac8fbf3be3 chore(workspace): now use NODE_VERSION 24 without minor constraints 2025-08-25 03:32:05 +08:00
Neko Ayaka d7c681f48e chore: cleanup code 2025-08-02 01:07:34 +08:00
Neko Ayaka a095ee62f1 chore(deps): bump dependencies 2025-08-02 01:06:54 +08:00
Neko AyakaandAcbox Liu 030ebc5b11 refactor: rename
Co-authored-by: Acbox Liu <78635021+sheepbox8646@users.noreply.github.com>
2025-07-29 02:39:56 +08:00
Neko Ayaka 7f178b130f feat(component-calling): or component use, init 2025-07-29 02:37:29 +08:00