mattermost-mobile/babel.config.js
Christopher Speller 0c675ec2db
Agents posts on mobile (#9317)
* Agents streaming

* Fix bug and lint

* Add reasoning summaries to mobile agents

* Add tool call approval UI for mobile agents

* Add citations and annotations support for mobile agents

Implements Phase 4 from the agents mobile plan:
- WebSocket event handling for annotations control signal
- CitationsList component displaying sources below agent responses
- Collapsible sources section with source count
- Each citation shows title, domain, and opens URL on tap
- Citations persisted in post.props.annotations
- Touch-optimized UI with 44pt minimum tap targets

* Add stop and regenerate controls for mobile agents

* Add tests

* Fix tool approval buttons not updating after accept/reject

- Remove optimistic WebSocket event approach that didn't work
- Clear component streaming state on ENDED event to force switch to persisted data
- Remove delays in streaming store cleanup (500ms and 100ms)
- POST_EDITED event now properly updates UI for both accept and reject
- Remove debug console.log statements
- Fix ESLint issues (unused vars, nested callbacks, nested ternary)

* Refactor agents code: remove unused client mixin, fix bugs, and simplify logic

* Fixes

* Add CLAUDE.md

* Review feedback.

* Review feedback inline functions

* Learnings

* Address review feedback: StyleSheet.create, parent mount checks, utils

* Move to observables

* Last style fix

* Style tweaks
2025-12-09 03:56:12 -08:00

54 lines
2 KiB
JavaScript

// Copyright (c) 2015-present Mattermost, Inc. All Rights Reserved.
// See LICENSE.txt for license information.
module.exports = {
presets: [
['@babel/preset-env', {targets: {node: 'current'}}],
'module:@react-native/babel-preset',
'@babel/preset-typescript',
],
plugins: [
'@babel/plugin-transform-runtime',
['@babel/plugin-proposal-decorators', {legacy: true}],
['@babel/plugin-transform-flow-strip-types'],
['@babel/plugin-proposal-class-properties', {loose: true}],
['module-resolver', {
root: ['.'],
alias: {
'@actions': './app/actions',
'@agents': './app/products/agents',
'@assets': './dist/assets/',
'@calls': './app/products/calls',
'@client': './app/client',
'@components': './app/components',
'@constants': './app/constants',
'@context': './app/context',
'@database': './app/database',
'@helpers': './app/helpers',
'@hooks': './app/hooks',
'@i18n': './app/i18n',
'@init': './app/init',
'@managers': './app/managers',
'@playbooks': './app/products/playbooks',
'@queries': './app/queries',
'@screens': './app/screens',
'@share': './share_extension',
'@store': './app/store',
'@telemetry': './app/telemetry',
'@test': './test',
'@typings': './types',
'@utils': './app/utils',
'@websocket': './app/client/websocket',
},
}],
['module:react-native-dotenv', {
moduleName: '@env',
path: '.env',
blacklist: null,
whitelist: null,
safe: false,
allowUndefined: true,
}],
'react-native-reanimated/plugin',
],
exclude: ['**/*.png', '**/*.jpg', '**/*.gif'],
};