Coder Social home page Coder Social logo

justinthelaw / opera Goto Github PK

View Code? Open in Web Editor NEW
6.0 1.0 1.0 13.45 MB

Opera: Optimized Performance and Evaluation Rhetoric AI, for USAF and USSF performance statements, in TypeScript and Python

License: MIT License

JavaScript 2.53% HTML 0.42% TypeScript 35.03% Shell 2.08% Jupyter Notebook 18.32% Python 41.62%

opera's Introduction

Opera: Optimized Performance and Evaluation Rhetoric AI

test-pipeline codeql-quality deployment-pipeline

Opera: Latin word (plural of opus) meaning "work," "effort," or "service." Usually referring to an individual or group's skillful or creative endeavors. Relative to this project, OPERA also stands for the "Optimized Performance and Evaluation Rhetoric AI."

Opera is a project focused on developing a set of tools to automate the pointless aspects of performance report and award writing so that officer and enlisted members can focus more on the individual and their achievements, rather than worrying about irrelevant formatting. The ultimate objective is to allow the end-user to input stream of consciousness about a member's accomplishments and let Opera handle the rest.

The Forge is Opera's narrative generation tool that harnesses the power of Natural Language Processing (NLP) through the use of open-source Large Language Models (LLM). The Forge is an API that is connected to several fine-tuned models that have been trained using 33,000+ unique EPR, OPR, and Award packages, across all of the Air and Space Force's positions and ranks. Each model and part of the application specializes in a part of the overall process, to include pre-written bullet interpreting, accomplishment attention and comprehension, and bullet formation and creation.

Table of Contents

  1. Background
  2. The Forge
  3. Application Usage
  4. Contributing
  5. Local Development
  6. Licensing

Background

What are "Bullets" and "Narratives"

One of the most pointless and time-consuming things that Air and Space Force officer and enlisted personnel do all the time is Bullet and Narrative writing.

Air and Space Force personnel are required to write Bullets for performance reports, and these Bullets could mean the difference between the stagnation or advancement of an Airman or Guardian's career. Bullets are action-impact-outcome statements that follow specific formatting and acronym usage rules which, more often than not, hinder effective communication and/or embellish the accomplishments of competing officers and enlisted personnel. Bullets also must stay within one line on a standardized PDF form's input.

In more recent times, the Air and Space Force have begun transitioning over to Narratives for award packages, and eventually for performance reports. Narratives still follow the action and impact/outcome format, and are still hard to write on the fly. They still enforce the same-but-different formatting and acronym-usage limitations. Narratives are meant to be written as multiple sentences across 1-5 lines on a standardized PDF form's input.

How are "Bullets" Formatted

Bullets follow a few formatting rules:

  • Each Bullet must be exactly one line, with the width of the line depending on the form (performance reports, award packages, etc).
  • Bullets generally adhere to the following formula, with some situational exceptions: - [ACTION];[IMPACT]--[OUTCOME]
  • Acronyms and abbreviations can be force-wide, organization, and/or commander-specific, with major inconsistencies in their abbreviation/acronym policies.
  • In Awards Packages, Enlisted Performance Reports (EPRs), and most other evaluation documents, the length of a Bullet must be ~202.321mm
  • In Officer Performance Reports (OPRs), the length of a Bullet must be ~201.041mm
  • In the failed rollout of the Air Force's myEval tool, Bullets were based on a maximum length of 115 characters

Those Bullet formatting rules lead to the following:

  • Information compression is prioritized over legibility
  • Time is wasted on acronym and/or abbreviation revisions
  • Bullet "appearance" becomes highly valued; some examples of arbitrary Bullet appearance rules:
    • Any sort of repetition = bad
    • Bullets near flush with page boundaries = good
  • Closing Bullets (push statements) are always generic but need to catch attention

Example Bullets

Below are examples of unclassified Air and Space Force Bullets:

  • Delivered enterprise network s/w cert; adv'd 3 docs thru 5 orgs--guaranteed vital rqmts s/w accessibility DAF-wide
  • Streamlined 3-ktr proposal rvw; resolved 277 elements in <5 wks--trailblazed $900M resilient POTUS/CCMD comms
  • Justin embraces challenges with vigor; #1 choice to tackle big problems--perfect fit for NRO--send to PDE 1st look!

One non-obvious similarity amongst all 3 of these bullets is that they fit into the form perfectly - right up against the edge of the field. This is because the input area within the PDF form renders characters differently depending on the encoding, such as the space character in UTF-8 versus UTF-16.

How are "Narratives" Formatted

Narratives follow very vague guidance that is still evolving as this README was written. At the moment, stricter guidance on how they are to be written was delegated to lower level commands and units. The following are the only rules that are required of a narrative, where statements are synonymous with sentences:

  • Each statement must be standalone and can be used as a evaluation point regardless of the rest of the sentences
  • Each statement must be readable, using minimal acronyms and plain english
  • If acronyms are used, they must be on a Headquarters Air Force (HAF) approved list
  • The narrative and per-statement length will be announced by the awarding authority, but must fit in the AF1206
  • Whitespace at the end of statements in encouraged - there is no need to fill an entire line

Example Narratives

Below are HAF generated examples of unclassified Air and Space Force Narratives:

  • Capt Snuffy led a survey team of 33 MCA to establish an XAB in support of a PACAF ACE exercise across 4 countries and including 7 allies, culminating in 153 sorties and 334 training events completed. She also championed a critical organizational merger of the squadron’s maintenance and operations; results saved 360 maintenance workhours per week and increased sortie generation by 10%.

  • TSgt Snuffy led 4 instructors through Mission Ready Airmen course validation, generating 153 changes, eliminating 32 classroom hours, and enhancing course experience for 6 instructors and 70 students per year. Additionally, he facilitated a $15M facility renovation project, ensuring the CY22 schedule started on-time for 8 different courses spanning 11 AFSCs.

The Forge

For more more details, to include contributing, on the The Forge machine learning strategy, please read the The Forge README.

You can also visit this Hugging Face Repository page, for different Forge model details and instructions for pulling, inferencing, and further training.

Application Usage

Bullet and Narrative Writing

The application provides instructions within the application for usage. The User Interface (UI) should be relatively easy to navigate. If the UI is not intuitive to you, then feedback can be submitted using the in-app feedback form or an Issue can be posted to this repository.

Acronym List Imports

Note: When importing rules from a Excel (.xlsx) file containing acronym definition, the columns are:

COLUMN NUMBER COLUMN DESCRIPTION EXAMPLE VALUES
1 Enabled: Boolean value, indicates whether to activate an acronym-word pair TRUE, FALSE
2 Word: String value that contains the full-form, un-abbreviated word "United States Space Force", "Command and Control"
3 Acronym: String value that contains the short-form, abbreviated word "USSF", "C2"

CORRECT USAGE NOTE: Sort the Excel sheet in DESCENDING ORDER. Due to the greedy nature of the replacement, the reverse sorted order is required to ensure proper compression of abbreviations.

EXAMPLE OF INCORRECT USAGE:

Ordering the following acronyms:

  • United States Air Force: USAF
  • United States Air Force Academy: USAFA

Will cause "United States Air Force Academy" to be abbreviated as "USAF Academy"

Contributing

Do you have a burning question, or maybe you spotted an issue or new area of improvement that you'd like to discuss? If your answer is yes to any of these, then please join us in our Discord Server!

Pull Requests

When describing a pull request, please provide the following:

  1. Merge request title or summary as outlined in the Committing and Merging section
  2. High-level description of what was changed or been added/deleted
  3. Attachment and/or linking to an existing issue or project task

Issues

For bugs, follow the bug report template as closely as possible so that developers can reproduce and debug the issue.

For feature requests, follow the feature request template as closely as possible, providing detail (imagery, notes, etc.) as necessary to describe the desired end-state.

For everything else in-between, just go with the "no template" option.

Branching

When creating a branch, we like to follow the naming template:

<STATEMENT OF BRANCH PURPOSE>

Use a dash, -, as the delimiter, e.g., this-is-a-feature-branch

Coding Conventions and Standards

Committing and Merging

When merging, we should squash all commits and follow the following commit message template:

<TYPE>(<OPTIONAL SCOPE>): <DESCRIPTION OF STORY>

Spaces are allowed within the description, e.g., Feature(DSR): This revolves around the scope of DSRs

Type Description
Feature Commits, that adds a new feature
Fix Commits, that fixes a bug
Refactor Commits, that rewrite/restructure your code, however does not change any behavior
Performance Commits are special refactor commits, that improve performance
Style Commits, that do not affect the meaning (white-space, formatting, missing semi-colons, etc)
Test Commits, that add missing tests or correcting existing tests
Docs Commits, that affect documentation only
Build Commits, that affect build components like build tool, ci pipeline, dependencies, project version, ...
Ops Commits, that affect operational components like infrastructure, deployment, backup, recovery, ...
Chore Miscellaneous commits e.g. modifying .gitignore

Local Development

For best results, pleases read and follow the instructions under this header in order.

General

Do the following prior to moving on to any further instructions below this section:

  1. At a minimum, have an integrated development environment (e.g., VSCode), a browser (e.g., Google Chrome), git, node, npm, and python3 installed
  2. Fork or clone this repository to your local development environment

Installing

Execute the following at the root of the repository to install, test, and build everything required to run any part of the stack:

# copies .env.example into a local version
npm run config:copy
# installs all dependencies in all stacks
npm run install:all
# runs through all linting, testing, and building
npm run check:all

When adding new packages using pip3 or npm, be sure to commit an updated package.json or requirements.txt in the correct directory. For pip3 in particular, please execute the following:

npm run freeze:all

Running

To run each sub-stack in one terminal, with integrated logs, execute the following:

# starts all sub-stacks
npm run start:all

Building

For building the client in development mode, use the automated process through the execution of the following commands at the root of this project:

npm run build:client

Testing

When testing in development execute the following at the root of the repository:

# this runs all the unit and acceptance tests
npm run test:all

To run acceptance tests interactively in cypress, execute the following at the root of the repository:

# this opens cypress with the UI
npm run acceptance:open

Pushing

Prior to attempting a push to a branch, run the check all command again to ensure that all tests pass locally:

npm run check:all

Pipelines

To get context on the GitHub actions that run during a push or pull to a branch, please read the GitHub Workflows README.

Licensing

Opera and all its components are licensed under the MIT license.

Why the Hard Fork

This is a hard-fork of the original pdf-bullets project, a web-application affectionately named the AIR FORCE BULLet SHaping & Iteration Tool, created and maintained by Christopher Kodama and the members of the Air Force Volunteer Cyber Depository (AF-VCD) group.

The purpose of hard-forking this original pdf-bullets tool is as follows:

  1. Refactor the frontend codebase to modern TypeScript, and eliminate React bootstrap (e.g., CRA) overhead
  2. Provide more GitOps and open-source developer workflows and instructions
  3. Add fine-tuned T5x pre-trained model(s) to create a new The Forge feature
  4. Revamp the UI/UX using modern components and design standards
  5. Re-architect to a client-server application to provide persistence, security, and improvement insights

Our Valued Contributors

Below are the profiles, people and bot, of our contributors! Whether it be time, code, data, or support, these contributors were critical to the advancement of Opera's development.

opera's People

Contributors

justinthelaw avatar dependabot[bot] avatar sweep-ai[bot] avatar ananaso avatar ckhordiasma avatar

Stargazers

 avatar Gregory Horvath avatar  avatar Sandalots avatar Kevin Lu avatar Kyle Hackett avatar

Watchers

 avatar

Forkers

wooodhead

opera's Issues

Test(Server): Improved PyTest Coverage for Server

In the server directory of this project, the test directory contains tests related to the server code in the src directory.

Read the tests within the test directory of server and read the source code within the src folder, and do the following:

  1. Improve upon the existing test in existing test files
  2. Add new tests to existing test files to improve coverage
  3. Add new test files to provide coverage for existing source files, as needed

Ensure that the GitHub Actions workflow test-pipeline.yanl (Test Pipeline) passes.

Sweep: Explanatory markdown blocks for fine_tuning.ipynb

In prepare_data_model.ipynb there are blocks of markdown that explain the outcomes of the proceeding code block and it's required user inputs. Please follow the examples seen in prepare_data_model.ipynb to generate and/or modify the markdown blocks in fine_tuning.ipynb so that the markdown blocks explains the outcomes of the proceeding code block and it's required user inputs.

Sweep: Sweep AI YAML

Add the Sweep AI YAML.file to the GitHub workflows folder where all of the other actions and bots are setup. Add all the possible configurations that the Sweep AI YAML is allowed to have, commenting exactly what they each do. Let me know if the YAML is actually supposed to be placed in a different repo directory.

Test(Server): Server test coverage

Within the server directory, go through all Python files and write tests for each of them. Put the tests in new files under a new server/test directory. Name these test files with the following format: [ORIGINAL PYTHON FILE].test.py. Where ORIGINAL PYTHON FILE is the name of the ptthon file being tested.

Sweep: Generate falcon-7b Fine Tune Script

Generate a Python script to fine tune the Hugging Face tiiuae/falcon-7b checkpoint, and place it within the forge/scripts directory. Use as much of the existing code within the Jupyter Notebooks and forge/scripts directory to create this fine tuning script.

The tiiuae/falcon-7b checkpoint will be trained using the JSONL file formats and structure seen in the forge/data/training/ directory. The file action utilities are in the forge/scripts/files.py. The logger to be used to record epochs and loss is in the forge/scripts/rich_logger.py.

The ultimate goal of the fine tuned model is described in the root README.md as well as the forge/README.md.

Style(Linting/Formatting): Add ESLint and Prettier to Acceptance Tests

Is your feature request related to a problem? Please describe.
Following the conclusion of Issue #100, all linting and formatting has been isolated to client and thus leaves acceptance without linting and formatting. This leaves acceptance open to competing linting and formatting styles as different contributors work on them.

Describe the solution you'd like
Configure acceptance subproject to have ESLint and Prettier, restore the linting commands from the client package.json to the root package.json, and extend these commands to operate in client and acceptance.

Additional context
Configuration files for ESLint and Prettier should match what's already in client. If possible, possibly point acceptance configuration to those files so that all linting and formatting configuration can be done in one spot?

Sweep: Replace Fastify Server with Python Django

Replace all of the TypeScript and Fastify contents within the directory "server", with the equivalent Python and Django code and dependencies required to operate the server. This includes all of the utils, constants, and health routes within the "server" directory.

Refactor(Fine-Tuning): Improve fine-tuning script modularity, options

The fine_tuning.ipynb scripts need to be refactored for more modularity and fine-grained control:

  • All blocks in the Jupyter Notebook that have named methods and classes need to be split-out into separate Python files

In addition to this, extra modules and options should be added. These modules and options should have the capability to be hot-swapped and/or turned on/off depending on the preferences of the user. After some research, the following are possible ways to improve the fine_tuning.ipynb through the introduction of more parameters and methods:

  • Fine-Tuning:

    • Data Augmentation: Augment your training data by adding noise, paraphrasing, or using techniques like back-translation. This can help the model generalize better to unseen examples.
    • Curriculum Learning: Start training with easier examples and gradually increase the difficulty. This can make the optimization landscape smoother and help with convergence.
  • Regularization:

    • Dropout: If it's not already being used, introducing dropout layers can help prevent overfitting.
    • Weight Decay (L2 Regularization): Add L2 regularization to the model's weights. This can often be done directly through the optimizer (e.g., the weight_decay parameter in Adam).
    • LayerNorm: Ensure that normalization layers like LayerNorm are used, especially if they are part of the original T5 model.
  • Optimization:

    • Alternative Optimizers: Consider trying optimizers like AdamW, RAdam, or LAMB.
    • Learning Rate Schedule: Adjust the learning rate schedule. Experiment with other schedules like cosine annealing or cyclic learning rates.
    • Gradient Clipping: The provided code uses a gradient clipping value of 1.0. You can experiment with different values to see if they yield better results.
  • Loss Functions:

    • Label Smoothing: Instead of using a hard one-hot encoded target, you can soften the targets which can prevent the model from becoming overly confident in its predictions.
    • Focal Loss: This can be used to handle extreme class imbalance or when you want the model to focus more on harder examples.
  • Custom Penalty:

    • Refine Format Penalty: The custom format penalty can be refined based on what works best empirically. Consider using different regular expressions or adjusting the penalty strength.
    • Additional Penalties: Introduce penalties based on other criteria specific to your use-case.
  • Batching:

    • Dynamic Padding: Instead of padding all sequences to a fixed length, pad sequences in each batch to the maximum length in that batch. This can save computation and sometimes improve results.
    • Gradient Accumulation: If memory constraints are not allowing you to increase batch size, consider accumulating gradients over several forward/backward passes before performing an optimization step.
  • External Knowledge:

    • Knowledge Distillation: If you have a larger, more accurate model, you can use its predictions to guide the training of the smaller T5 model. The smaller model learns to imitate the larger model's behavior.
  • Evaluation & Feedback:

    • Early Stopping: Monitor the model's performance on a validation set and stop training once the performance plateaus or starts degrading to avoid overfitting.
    • Model Checkpointing: Regularly save model checkpoints. This allows you to revert to the best version if later versions start to overfit.

Build(MongoDB): Remove Database, Mongo

Remove all mentions of Mongo and the database. Ensure all scripts, markdown files, and directories are scrubbed.

This is in preparation for a switch over to a vector database further in the future. There is no need for a database at this moment, nor for the MVP of Smarter Bullets.

Sweep: T5 Model Fine-Tuning Jupyter Notebook

Directory: "models/"

Context: training data exists within "models/data/training", following a "summary" - "evaluation" model usually used by T5.

Task: create a python3 Jupyter Notebook in the mentioned Directory with all the write dependencies, transformers, and methods, to train a T5 model using the training data mentioned in Context. Also ensure the Jupyter Notebook follows the formatting, naming conventions, and method abstraction (separated *.py files), as the ones that already exist in the mentioned Directory.

Feature(Forge): Complete Bullet Dataset for Training

Generate a data set that will be used to train a model for generation of Bullet Forge training data. Generally speaking, this model acts as a bullet interpreter that will take-in a set of the bullets that have been scraped form the internet, and spit back out generalized and context-rich sentences. This "bullet interpreter" will act as a standalone model capable of translating any bullet into easily comprehendible achievements that look as if they have been written by an Airman or Guardian.

There are two tasks involved with this issue:

  • Generate a first run of this bullet interpreter model, v0.1.0, using a corpus of 500 select bullets that have been run through ChatGPT
  • Generate a further 1000 select bullets and interpreted completions, totaling 1500 now, with human-cleaning involved to produce a v1.0.0 of the bullet interpreter
  • Use v1.0.0 of the bullet interpreter to generate all 33,600+ bullets and bullet interpretations to form the final training set for the bullet generation models

Sweep: Create Completed T5 Training Dataset

TARGET FILE: forge/data/training/bullet_summaries_evaluations.jsonl

DIRECTORY FOR CONTEXT: forge/

TASK: Using the existing entries within the TARGET FILE and the context in DIRECTORY FOR CONTEXT, take all of the Summary-Evaluation pairs within forge/data/training/bullet_evaluations.jsonl and modify all of the "" matching the pattern of generation already seen in forge/data/training/bullet_summaries_evaluations.jsonl. Add all of those Summary-Evaluation pairs into the forge/data/training/bullet_summaries_evaluations.jsonl file as new JSON lines. There should be approximately 33,000+ entries in the file once you are done appending all of the Summar-Evaluation pairs. Do this in delayed chunks so that you do overload your context and/or your rate limiter.

Sweep: Refactor Server to Django

Refactor the entire contents of "server/" to Django and Python. Ensure the .github workflows, scripts, and README are also modified to properly handle and explain the Python-based Server.

The server is currently TypeScript and Fastify.

Feature(Forge): Fully Trained Bullet Forge Model

Fine-tune an anchor model to be capable of producing bullets based on a series of sentences that are already grouped under the same context. These sentences will already include action, impact, and outcome details required to form a good bullet:

  • Use the training and validation data created in this issue and the scripts from this other issue to fine tune the "bullet creation" model

Build(Linting): Isolate ESLint & Prettier to Client

Is your feature request related to a problem? Please describe.
Getting ESLint and Prettier working across the entire application is a headache. Given that the server will be moving away from using TypeScript and thus only the client will need ESLint and Prettier, it is pointless to spend time getting these tools working anywhere outside the client folder. However, the pipeline is configured to lint the entire repo.

Describe the solution you'd like
Reconfigure the repository and the pipeline to only run ESLint and Prettier in the client folder.

Describe alternatives you've considered
Alternative: get ESLint and Prettier working across the entire repo. As described above, however, this is a waste of time.

Additional context
N/A

Refactor(Client): pdf-bullets to TypeScript MVP

Is your feature request related to a problem? Please describe.
This is a refactor of pdf-bullets to TypeScript with the existing styling and components. The purpose of this is to provide a springboard to further improvements upon the UI/UX, and the introduction of more organized, maintainable TypeScript code.

Describe the solution you'd like

Feel free to break down the below into multiple sub-steps based on the building blocks of the pdf-bullets functional areas.

  • Refactor pdf-bullets into TypeScript, with minimal functional changes and full-coverage unit tests. Directory structure and file organization are up to the developer(s).

Describe alternatives you've considered
Re-creating everything pdf-bullets did from scratch is not prudent. The MVP of pdf-bullet functionality is the first step towards the Bullet Forge feature, which is where the real magic starts happening!

Additional context
In the README.md, the introductory sections talk about where you can find a copy of the live pdf-bullets web application, as well as the minimum, non-AI/ML features pdf-bullets offered to its users.

Additionally, you can find the original legacy code within the archive/ directory of the repository. As the developer(s) go, delete the archive folder contents.

Spike(Deployment): GitHub Pages Deployment Action

Create a new GitHub action (workflow and jobs) that are manually triggered to run. This workflow will be used to build the React-Typescript client, and then deploy it to GitHub pages.

Checklist
  • .github/workflows/deploy.yml

• Define the GitHub action workflow for deployment.
• Include the necessary steps to build the React-Typescript client and deploy it to GitHub pages.

  • client/package.json

• Add a script for building the client.

  • package.json

• Add a script for deploying the client to GitHub pages.

  • README.md

• Include instructions for manually triggering the deployment workflow.

Sweep: Refactor GitHub Actions Workflows

Refactor the smarter-bullets-pipline workflow name to Smarter Bullets Tests. Refactor the snyk-security-scans workflow name to Snyk Security Scans. Add improvements to the overall YAML (coverage based on repo code composition, comments, naming conventions, etc.)and make sure the two workflows pass.

Feature(BulletForge): Training Data Pipelines Infrastructure

Is your feature request related to a problem? Please describe.
We need a structured way to prepare raw data and send it to OpenAI's API for fine-tuning.

Describe the solution you'd like
Generate 1 or more Jupyter Notebooks that can be run to take-in raw training data and produce a fine-tuned version of a GPT3 base model.

Describe alternatives you've considered
N/A

Additional context
In the models/ directory, there are resources to get started. The OpenAI API documentation is also an important area to do more research in if the developer is unsure of the syntax or request-response API schemas.

Sweep: Remove Database, Mongo

At the root of the repository, the package.json and server directory have scripts and data regarding Mongo and Database. Remove all scripts, markdown explanations, and packages related to using a database and Mongo. This entire project and repository will not be using a database.

Feature(Forge): Hugging Face-based fine tuning script

Working directory:
forge/bullets/notebooks/

Create and modify ONLY 1 file:
auto_fine_tune.py

Context:
fine_tuning_v1.ipynb, fine_tuning_v2.ipynb, and all Python scripts in the "scripts/" sub-directory

Objective:

  • Generate a script, auto_fine_tune.py, that uses Auto* methods from the Hugging Face library
  • This script should allow any Natural Language Processing model to be fine-tuned (e.g., T5x, Falcon, Bart, etc.)
  • This script should use existing patterns for pytorch, loguru, rich logger, etc. as seen in the Python scripts in the "scripts/" sub-directory
  • This script should contain in-line comments to outline each line of code's function, purpose, and parameters
Checklist
  • forge/bullets/notebooks/auto_fine_tune.py
  • Create a new file auto_fine_tune.py in the forge/bullets/notebooks/ directory.
    • Add code to auto_fine_tune.py that utilizes the Auto* methods from the Hugging Face library for fine-tuning NLP models.
    • Include in-line comments to outline the function, purpose, and parameters of each line of code in auto_fine_tune.py.
  • forge/bullets/notebooks/scripts/file_utils.py
  • Add a new import statement for auto_fine_tune.py in the file_utils.py script.

Spike(Hosting): Deploy Opera on GitHub Pages

This spike is related to the following ticket: Feature(Client): Client-side LLM generation

This spike will deploy the Opera frontend to GitHub Pages. This will inform a future CI/CD workflow that will directly push main branch changes to the deployment. This will also enable the serving of a free/prototype version of the Opera performance statement generation capabilities provided by Forge.

Docs(Contributing): Pure Linux and ARM Development Environment

Currently, the local development environment setup by this repository has only been tested on Mac (Intel), Windows, and WSL environments. Mac (ARM) and pure Linux machines have not been tested with the scripts and instructions within the README.md.

The expected end-state is a set of scripts and instructions that work for all developers across all possible local development environments.

Feature(Client): Client-side LLM generation

Is your feature request related to a problem? Please describe.
Hosting an API via a separate server requires extra resources and configuration.

Describe the solution you'd like

  • Add Tensorflow.js to the client, and serve the model through the frontend browser, and host it via GitHub Pages as a solution.

Describe alternatives you've considered
Free hosting via different services has significant restrictions and adds some inflexible configuration.

Additional context
Hosting a purely frontend application allows us to build it and serve it on GitHub Pages. The GitHub Pages site can be used as a free-trial to users who want to use it without contributing to the project.

A new scheme of allowing users to access a dedicated API for bullet generation can be provided in a future release of the application. The scheme may include the fulfillment of some conditions like: 1) create an account linked to your GitHub or Gmail, 2) contribute code to the open source repo under your account, 3) contribute clean data to the open source repo under your account, 4) Buy us coffee under your account, etc.

Sweep: Django server skeleton

Step 1: Create a server/ directory at the root of the repository.

Step 2: Install Django and all necessary dependencies.

Step 3: Generate all skeleton code require to serve a health check route that checks the client at http://localhost:3000, and the Django server itself.

Step 4: Write a test against the health check route code.

Test(Client): Fix and re-enable skipped tests

Context:
There are two skipped tests within the client/ directory that are related to 1) AbbreviationTables component and 2) utils functions. There are "TODO" comments above them and an it.skip for skipping the test during Jest runs locally and within the Test-Pipeline GitHub Action.

Required Action:
Fix the two tests and ensure that the tests pass in the Test-Pipeline GitHub Action.

Test files with the skipped tests that need to be fixed:

  1. client/tests/components/bullets/utils.test.ts
  2. client/tests/components/abbreviations/AbbreviationTable.test.tsx

Source component files that are the target of the tests:

  1. client/src/components/bullets/utils.ts
  2. client/src/components/abbreviations/AbbreviationTable.tsx
Checklist
  • client/tests/components/abbreviations/AbbreviationTable.test.tsx ✅ Commit 5e689ae
• Modify the test case 'changes table data correctly' to ensure that the `setData` function is being called correctly. This might involve changing the way the `AbbreviationTable` component is being re-rendered in the test. • Remove the `.skip` method from the test case to enable the test.
Sandbox Execution Logs
trunk init 1/16 ✓
⡿ Downloading Trunk 1.16.0...
⡿ Downloading Trunk 1.16.0...
⢿ Downloading Trunk 1.16.0...
⣻ Downloading Trunk 1.16.0...
⣽ Downloading Trunk 1.16.0...
⣾ Downloading Trunk 1.16.0...
⣷ Downloading Trunk 1.16.0...
✔ Downloading Trunk 1.16.0... done
⡿ Verifying Trunk sha256...
✔ Verifying Trunk sha256... done
⡿ Unpacking Trunk...
✔ Unpacking Trunk... done

























✔ 15 linters were enabled (.trunk/trunk.yaml)
  actionlint 1.6.25 (5 github-workflow files)
  bandit 1.7.5 (28 python files)
  black 23.9.1 (2 jupyter, 16 python files)
  checkov 2.4.9 (12 json, 9 yaml files)
  git-diff-check (103 files)
  isort 5.12.0 (28 python files) (created .isort.cfg)
  markdownlint 0.36.0 (5 markdown files) (created .markdownlint.yaml)
  osv-scanner 1.4.0 (5 lockfile files)
  prettier 3.0.3 (1 html, 5 javascript, 9 json, 5 markdown, 17 typescript, 9 yaml files)
  ruff 0.0.290 (28 python files) (created ruff.toml)
  shellcheck 0.9.0 (8 shell files) (created .shellcheckrc)
  shfmt 3.6.0 (8 shell files)
  trivy 0.45.1 (5 lockfile, 9 yaml files)
  trufflehog 3.56.1 (106 files)
  yamllint 1.32.0 (9 yaml files) (created .yamllint.yaml)
Next Steps
 1. Read documentation
    Our documentation can be found at https://docs.trunk.io
 2. Get help and give feedback
    Join the Trunk community at https://slack.trunk.io
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 2/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/jD8VG.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 3/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/TyzxK.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 4/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/Yjtuo.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 5/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/1k9lW.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 6/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/m2fc7.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
Run trunk upgrade to upgrade 1 linter
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 7/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/Y5yKa.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 8/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/bMqdX.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 9/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/d763a.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 10/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/AIzHa.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 11/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/gWwAa.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 12/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/suvlG.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 13/16 ❌ (`1`)

  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/p1QlY.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 14/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/nhE78.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 15/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/Alzuf.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/abbreviations/AbbreviationTable.test.tsx 16/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/abbreviations/AbbreviationTable.test.tsx  .trunk/out/GgFYx.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
  • client/tests/components/bullets/utils.test.ts ✅ Commit a2a0eb2
• Modify the test case in the 'optimize' describe block that is currently skipped. This will involve figuring out a way to make the `getRandomInt` function deterministic for the purpose of testing. One possible approach could be to mock the `getRandomInt` function in the test to return a predictable value. • Remove the `.skip` method from the test case to enable the test.
Sandbox Execution Logs
trunk init 1/16 ✓
⡿ Downloading Trunk 1.16.0...
⡿ Downloading Trunk 1.16.0...
⢿ Downloading Trunk 1.16.0...
⣻ Downloading Trunk 1.16.0...
⣽ Downloading Trunk 1.16.0...
⣾ Downloading Trunk 1.16.0...
⣷ Downloading Trunk 1.16.0...
✔ Downloading Trunk 1.16.0... done
⡿ Verifying Trunk sha256...
✔ Verifying Trunk sha256... done
⡿ Unpacking Trunk...
✔ Unpacking Trunk... done


























✔ 15 linters were enabled (.trunk/trunk.yaml)
  actionlint 1.6.25 (5 github-workflow files)
  bandit 1.7.5 (28 python files)
  black 23.9.1 (2 jupyter, 16 python files)
  checkov 2.4.9 (12 json, 9 yaml files)
  git-diff-check (103 files)
  isort 5.12.0 (28 python files) (created .isort.cfg)
  markdownlint 0.36.0 (5 markdown files) (created .markdownlint.yaml)
  osv-scanner 1.4.0 (5 lockfile files)
  prettier 3.0.3 (1 html, 5 javascript, 9 json, 5 markdown, 17 typescript, 9 yaml files)
  ruff 0.0.290 (28 python files) (created ruff.toml)
  shellcheck 0.9.0 (8 shell files) (created .shellcheckrc)
  shfmt 3.6.0 (8 shell files)
  trivy 0.45.1 (5 lockfile, 9 yaml files)
  trufflehog 3.56.1 (106 files)
  yamllint 1.32.0 (9 yaml files) (created .yamllint.yaml)
Next Steps
 1. Read documentation
    Our documentation can be found at https://docs.trunk.io
 2. Get help and give feedback
    Join the Trunk community at https://slack.trunk.io
trunk fmt client/tests/components/bullets/utils.test.ts 2/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/BEV0U.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/bullets/utils.test.ts 3/16 ❌ (`1`)

  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/YK2a8.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/bullets/utils.test.ts 4/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/j6Ia4.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/bullets/utils.test.ts 5/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/dNXgv.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/bullets/utils.test.ts 6/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/5Czvg.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
Run trunk upgrade to upgrade 1 linter
trunk fmt client/tests/components/bullets/utils.test.ts 7/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/MQURN.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/bullets/utils.test.ts 8/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/DNG5P.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/bullets/utils.test.ts 9/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/zh3Gv.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/bullets/utils.test.ts 10/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/eVmdl.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/bullets/utils.test.ts 11/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/RPXs4.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/bullets/utils.test.ts 12/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/0DmSQ.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/bullets/utils.test.ts 13/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/sVD4n.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/bullets/utils.test.ts 14/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/7k01R.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/bullets/utils.test.ts 15/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/9cuS3.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/tests/components/bullets/utils.test.ts 16/16 ❌ (`1`)
  FAILURES  
 prettier  client/tests/components/bullets/utils.test.ts  .trunk/out/QuSfd.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
  • client/src/components/bullets/utils.ts ✅ Commit ebef71d
• If necessary, modify the `getRandomInt` function to allow for deterministic testing. This could involve adding an optional parameter to the function that is used to seed the random number generator, which can be used in the tests to produce predictable results.
Sandbox Execution Logs
trunk init 1/16 ✓
⡿ Downloading Trunk 1.16.0...
⡿ Downloading Trunk 1.16.0...
⢿ Downloading Trunk 1.16.0...
⣻ Downloading Trunk 1.16.0...
⣽ Downloading Trunk 1.16.0...
⣾ Downloading Trunk 1.16.0...
⣷ Downloading Trunk 1.16.0...
✔ Downloading Trunk 1.16.0... done
⡿ Verifying Trunk sha256...
✔ Verifying Trunk sha256... done
⡿ Unpacking Trunk...
✔ Unpacking Trunk... done
























✔ 15 linters were enabled (.trunk/trunk.yaml)
  actionlint 1.6.25 (5 github-workflow files)
  bandit 1.7.5 (28 python files)
  black 23.9.1 (2 jupyter, 16 python files)
  checkov 2.4.9 (12 json, 9 yaml files)
  git-diff-check (103 files)
  isort 5.12.0 (28 python files) (created .isort.cfg)
  markdownlint 0.36.0 (5 markdown files) (created .markdownlint.yaml)
  osv-scanner 1.4.0 (5 lockfile files)
  prettier 3.0.3 (1 html, 5 javascript, 9 json, 5 markdown, 17 typescript, 9 yaml files)
  ruff 0.0.290 (28 python files) (created ruff.toml)
  shellcheck 0.9.0 (8 shell files) (created .shellcheckrc)
  shfmt 3.6.0 (8 shell files)
  trivy 0.45.1 (5 lockfile, 9 yaml files)
  trufflehog 3.56.1 (106 files)
  yamllint 1.32.0 (9 yaml files) (created .yamllint.yaml)
Next Steps
 1. Read documentation
    Our documentation can be found at https://docs.trunk.io
 2. Get help and give feedback
    Join the Trunk community at https://slack.trunk.io
trunk fmt client/src/components/bullets/utils.ts 2/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/sWLrb.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/bullets/utils.ts 3/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/YpBft.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/bullets/utils.ts 4/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/hpY7Q.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/bullets/utils.ts 5/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/6Ayyj.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/bullets/utils.ts 6/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/HRBsq.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
Run trunk upgrade to upgrade 1 linter
trunk fmt client/src/components/bullets/utils.ts 7/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/P6KZ6.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/bullets/utils.ts 8/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/0RWpl.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/bullets/utils.ts 9/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/u74Tu.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/bullets/utils.ts 10/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/uWGhB.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/bullets/utils.ts 11/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/knoeZ.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/bullets/utils.ts 12/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/C3ZSQ.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/bullets/utils.ts 13/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/uessb.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/bullets/utils.ts 14/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/Pk1Mh.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/bullets/utils.ts 15/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/C5F4o.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/bullets/utils.ts 16/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/bullets/utils.ts  .trunk/out/7O8ol.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
  • client/src/components/abbreviations/AbbreviationTable.tsx ✅ Commit 212a6e9
• If necessary, modify the `AbbreviationTable` component to ensure that it correctly calls the `setData` function when the table data changes. This could involve examining the `update` function and the `afterChange`, `afterRemoveRow`, and `afterCreateRow` props of the `HotTable` component.
Sandbox Execution Logs
trunk init 1/16 ✓
⡿ Downloading Trunk 1.16.0...
⡿ Downloading Trunk 1.16.0...
⢿ Downloading Trunk 1.16.0...
⣻ Downloading Trunk 1.16.0...
⣽ Downloading Trunk 1.16.0...
⣾ Downloading Trunk 1.16.0...
⣷ Downloading Trunk 1.16.0...
✔ Downloading Trunk 1.16.0... done
⡿ Verifying Trunk sha256...
✔ Verifying Trunk sha256... done
⡿ Unpacking Trunk...
✔ Unpacking Trunk... done



























✔ 15 linters were enabled (.trunk/trunk.yaml)
  actionlint 1.6.25 (5 github-workflow files)
  bandit 1.7.5 (28 python files)
  black 23.9.1 (2 jupyter, 16 python files)
  checkov 2.4.9 (12 json, 9 yaml files)
  git-diff-check (103 files)
  isort 5.12.0 (28 python files) (created .isort.cfg)
  markdownlint 0.36.0 (5 markdown files) (created .markdownlint.yaml)
  osv-scanner 1.4.0 (5 lockfile files)
  prettier 3.0.3 (1 html, 5 javascript, 9 json, 5 markdown, 17 typescript, 9 yaml files)
  ruff 0.0.290 (28 python files) (created ruff.toml)
  shellcheck 0.9.0 (8 shell files) (created .shellcheckrc)
  shfmt 3.6.0 (8 shell files)
  trivy 0.45.1 (5 lockfile, 9 yaml files)
  trufflehog 3.56.1 (106 files)
  yamllint 1.32.0 (9 yaml files) (created .yamllint.yaml)
Next Steps
 1. Read documentation
    Our documentation can be found at https://docs.trunk.io
 2. Get help and give feedback
    Join the Trunk community at https://slack.trunk.io
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 2/16 ❌ (`1`)


  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/eIMOG.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 3/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/pA1Zv.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 4/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/kIFhb.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 5/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/znnmn.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 6/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/lg1tk.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
Run trunk upgrade to upgrade 1 linter
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 7/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/EC9Zl.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 8/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/187Cu.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 9/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/aYS4f.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 10/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/bgiB2.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 11/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/ngKqX.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 12/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/5ZFtN.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 13/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/WVcKy.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 14/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/SWoIz.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 15/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/B4Zd2.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure
trunk fmt client/src/components/abbreviations/AbbreviationTable.tsx 16/16 ❌ (`1`)
  FAILURES  
 prettier  client/src/components/abbreviations/AbbreviationTable.tsx  .trunk/out/8TJfT.yaml
  NOTICES  
 A tool failed to run. You can open the details yaml file for more information.
Checked 0 files
✖ No issues, 1 failure

Fix(Server): Fix local dev and pipeline

On the server directory, the way modules/packages are being imported is relative to the location from which the server application is tested and started. All imports of custom components, like ForgeService or "model = ../forge/bullets/models/flan-t5-base", should be dynamic and allow the user to run or test the server from any directory that they are in. For example, from the root directory, "model = forge/bullets/models/flan-t5-base" instead.

Create a strategy to accomplish the above and then implement it. If no strategy works, adjust all the scripts and READMEs to mandate that the running or testing of server must be done from the root of the project, and adjust the root directory's package.json scripts as such.

Test: Write Tests for Existing Skeleton Code

Tests for full functionality coverage are not complete for the skeleton code within the client and server. Tests must be written to cover the application functionality, to include happy path and error/exception handling unit tests.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.