[vscode extension]
get the schemas for everything into cursor somehow

[merging]
we should make the property diffs have arrows next to eachother so you can like "undo" certain things
need proper merging support in this UI.
make sure for fully deleted/added files we can use the merge UI as expected.

[syncback]
maybe make syncback automatically create a branch and merge it in, rather than overwriting your project files?
in order to do this, we must make dedup work flawlessly.

[Move tests to dedicated location]
Right now we have a severe amount of tests in the actual implementation files. I'd like to move those to a dedicated location because it's bloating the implementation files.

[Make instance creation/syncing more consistent and levelled up with how rbxsync does it]
* Terrain syncback / sync
* Order of operations (e.g. applying the Tag after full-sync routine complete so that things listening for tag updates get updated after it has been fully constructed, including it's children)
* CSG parts - requires very special handling to reproduce
* MeshPart creation must be done via CreateMeshPartAsync https://create.roblox.com/docs/reference/engine/classes/AssetService#CreateMeshPartAsync
* Special handling props (e.g. Skybox, ColorMap/ColorMapContent stuff)
* MeshId swaps for updates, need to re-create via CreateMeshPartAsync
* Queueing up material updates to properly support MaterialService changes so they appear correctly in studio without having to reboot
* Refer to rbxsync D:\UserGenerated\rbxsync\plugin\src\Serializer.luau and D:\UserGenerated\rbxsync\plugin\src\Sync.luau for reference, this system works correctly for the above use cases.
* You can search that whole rbxsync project for details/information.

[reify]
I noticed that in the reify/encodeInstance/decodeInstance/diff etc system we are not applying tags? Should the tag application / update behavior not be in here?
Tags should be applied once ALL updates have been performed on the instance
Tags should not be applied until EVERYTHING, including refs/attributes/properties are set.
Also, I noticed that attributes were not being doing in that system either, that should be done there I think?
Also, I noticed that it can fail to create an Instance - do we properly handle creating MeshPart's using InsertService?
Do we handle rebuilding CSG parts appropriately?
Do we handle swapping MeshId properly?
Are we performing operations in the correct order?
I feel like we added a lot of sync-logic that was supposed to be in these systems, but was placed elsewhere..
Refer to rbxsync D:\UserGenerated\rbxsync\plugin\src\Serializer.luau and D:\UserGenerated\rbxsync\plugin\src\Sync.luau for reference, this system works correctly for the above use cases.
You can search that whole rbxsync project for details/information.

[--!strict the plugin and make it --!native in hotpaths]
Need to get stuff inlined...
the entire syncing system needs to have it's types corrected and use strict,native,optimize.
we need to optimize the matching system heavily, it's so slow...

[Always mode]
MEDIUM - Issue 5: Ongoing "Always" mode patches don't support per-item selections yet
The existing code at ServeSession.lua line 311-314 explicitly says:
> "Table-type responses from the selection-based UI are not yet handled here. Ongoing WebSocket patches with per-item selections would need the same logic."
So in "Always" mode, ongoing patches currently only support "Accept"/"Abort"/"Skip" -- not per-item push/pull/ignore. The git defaults would be set in the PatchTree but the user can't act on them for ongoing patches. This is a pre-existing limitation, not introduced by us, but worth noting.

[two-way sync-back non scripts with a checkbox?]
we should just two-way sync everything backwards property wise, its really about not forward-syncing properties when that scripts only mode is on..

[testing which actually runs studio, syncs, etc]
we could make an automated testing system which truly simulates opening a place file and syncing to a running server automatically
this would close the gap on testing HEAVILY
use run-in-roblox utility like we use everywhere else.
so this expands beyond just that TestEZ system, where it tests spec files. this is separate from that, but same idea, just expanded upon.

[two way sync]
Make the two-way sync system respect the syncback configuration fully
ensure that live-syncback respects the syncback configuration fully

[refs]
-- Ref properties cannot be encoded during instance addition because the
-- target instance has no server ID yet. They are handled separately by
-- encodePatchUpdate.lua via the InstanceMap.
if descriptor.dataType == "Ref" then return end
I thought we were supposed to generate a uid and then send that table to the server so it can resolve those based on like a client uid?

[cli inspection]
we should make commands for inspecting .rbxl and .rbxm files for ai agents
even inspecting ones from the website directly
could we find an endpoint for downloading the "client side" of any game on the platform for context?

[Crates]
publish as a crate https://crates.io/crates/rojo

[tree reconciling spooky!]
[INFO  librojo::cli::serve] Listening: http://localhost:34873
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (14.0s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (12.1s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.3s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.5s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (14.0s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.8s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.0s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.6s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\HUD.luau -> src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\HUD.luau affects IDs [Ref(Some(294452550321273018071988539960330649902))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau for instance Ref(Some(294452550321273018071988539960330649902))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\HUD.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.8s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (12.5s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (12.0s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (13.6s)
[INFO  librojo::web::api] Syncback: Updating properties for instance Ref(Some(235969869441813210778056584779662649683)): Source
[INFO  librojo::web::api] Syncback: Updating properties for instance Ref(Some(291040600291607857644497431099122037291)): Source
[INFO  librojo::change_processor] Two-way sync: Writing Source to d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Galaxy.luau
[INFO  librojo::change_processor] Two-way sync: Writing Source to d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Magma.luau
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Galaxy.luau
[INFO  librojo::change_processor] VFS event SUPPRESSED (API syncback echo): d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Galaxy.luau
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Shared\Traits\Galaxy.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Shared\Traits\Galaxy.luau -> src\ReplicatedStorage\Shared\Traits\Galaxy.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Shared\Traits\Galaxy.luau affects IDs [Ref(Some(235969869441813210778056584779662649683))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Galaxy.luau for instance Ref(Some(235969869441813210778056584779662649683))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Galaxy.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Magma.luau
[INFO  librojo::change_processor] VFS event SUPPRESSED (API syncback echo): d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Magma.luau
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Shared\Traits\Magma.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Shared\Traits\Magma.luau -> src\ReplicatedStorage\Shared\Traits\Magma.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Shared\Traits\Magma.luau affects IDs [Ref(Some(291040600291607857644497431099122037291))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Magma.luau for instance Ref(Some(291040600291607857644497431099122037291))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Shared\Traits\Magma.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (12.5s)
[INFO  librojo::change_processor] VFS event: WRITE d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: 0 added, 0 removed, 1 updated
[INFO  librojo::change_processor] VFS event: WRITE src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS: canonicalize OK for src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau -> src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] apply_patches: path src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau affects IDs [Ref(Some(162268450181648175032536457080084761373))]
[INFO  librojo::change_processor] compute_and_apply_changes: checking path d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau for instance Ref(Some(162268450181648175032536457080084761373))
[INFO  librojo::change_processor] compute_and_apply_changes: path EXISTS via VFS, re-snapshotting d:\UserGenerated\escape-tsunami\src\ReplicatedStorage\Client\Controllers\UI\CurrenciesUI.luau
[INFO  librojo::change_processor] VFS event applied: no changes
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (12.3s)

CONSTANTLY happening everytime i modify a file:
[INFO  librojo::change_processor] Tree reconciliation: corrected 4 added, 4 removed (22.1s)

I'm really confused why this was slamming over and over saying 4 added, 4 removed - seems like a bug.
We need to investigate Tree reconciliation, make sure it's parallel, etc.
I'd really like to just reconcile specific paths that were modified - but i'm not sure if that just defeats the purpose.. need to explore this topic later.
Worst case - we reconcile only on connect, but do so in mega-parallel

Also, we need to explore how VSCode deals with this. They seem to have ZERO issues.
Maybe we can have a mode to tie into the vscode file watcher ourselves? luau-lsp does this.

[fix dedup]
dedup is broken due to relying on sort order
recreate broken state by forcing random order in all matching dedup systems of the incoming children list
if it cannot match correctly with randomization, then it is inherently broken
in all 3 matchers, simply randomize the order of the children - this will break the tests.

[syncback via extension]
can we allow the terminal to stay so i can like run some git commands myself without having to make a whole new terminal?

[mcp]
* DONE: sync
 - add modes:
  - standard (default): what we currently have where if there are changes it waits for the user to act
  - manual: user must always interact
  - fastfail: if there are non auto selected changes, immediately fail without waiting for the user to reject
  - dryrun: just checks what would be done and then returns out immediately
 - provide the agent hashes of the current scripts on studio involved in the merge
 - allow the agent to specify patches it wants to accept automatically
  - for sciprts, need to include a hash of the file ON roblox studio currently to signify there wasn't MORE new changes in the mid-term
  - for properties, just include what we are accepting
* DONE: get_script PATH [from draft?]
 - allows the agent to read a script currently on studio
 - the core purpose of this endpoint is to utilize with sync when failures occur due to other people changing things, and then allow us to grab their changes, compare against the previous git version we have and then integrate their changes and then sending another sync with the expected hash of the file on roblox to allow it to auto-accept (via an mcp override we specify in the json of the request to sync)
 - by default directly reads the Source property on the script
  - optional to allow the agent to read the draft
 - this is needed when an agent tries to sync and it fails due to a conflict since we don't send back sources in the failure
  - agen't can complete merges by itself with properties, so we don't need a way for the agent to read properties for things
 - the PATH will be: ReplicatedStorage/Some/Path/Abc - like a direct instance path, not a atlas aware path.
  - we should steal this system fully: D:\UserGenerated\studio-rust-mcp-server\plugin\Utils\Paths.luau
  - in the sync feedback it gives, we should include Paths.GetRelativePath so the agent is able to find it via the read_script ALONGSIDE the current info we can give so it can also find it on the Atlas filesystem
  - investigate this further, because i just want to give the agent the best possible way to query roblox instances, and also atlas instances on the filesystem. if using this Paths module is an overstep and we can accomplish it with a fully atlas-based approach, that's fine - aslong as it works CONSISTENTLY and is simple.
* DONE: port all of the basic MCP endpoints offered via https://github.com/Roblox/studio-rust-mcp-server
 - integrate them into how we've done our mcp in atlas
 - make sure to handle the placeid filtering like we already do when establishing the connection
 - we've done some actual fixes over at D:\UserGenerated\studio-rust-mcp-server on these, we should probably pull those fixed versions! we don't need that whole studio selection system from over there, though.
  - we don't need to restructure ours to be like this, but i like the .md doc setup.
* DONE: add logging for all agent connect/disconnects in the terminal
 - also add logging for commands (including the json) it runs and the resulting json. try to keep this on one line please, json compact.
* DONE: ensure all mcp route documentation is well formed and gives the agent knowledge on how to use this system to the fullest.
 - I did .md based docs over with my D:\UserGenerated\studio-rust-mcp-server codebase, we should probably switch to this as it's cleaner
 - Instruct on good sync flow, with get_script merging.
  - If user requests get_script and we havn't sync'd yet, just do a dryrun sync to get the instance id map going.
* syncback
 - invokes plugin based syncback
 - ensure this doesn't interrupt the connection of the mcp, since i think we shutdown the api? we should just not shutdown the api or something

[logging]
* I want to add verbose logging .atlas in the directory being synced from
 - Need to add to project template .gitignore for .atlas/
* We should do rolling logs, and it should compress them automatically
* Will the existing logging infra take care of this?
* I want to have it include trace logging
* I also want to forward the roblox logs continously via the mcp connection and log them to the serve output, such they will end up in the rolling logs
 - Make sure to retain the log-level (print, warn, error, etc)
 - I'm open to having these actually divert and not send in the rust logging system and go to it's own file, and maybe a separate rust logger so we don't need to create our own infrastructure
 - We could also just save logging output WHILST we are synced to the serve (would even work for one-shot) so as to not have a bunch of useless log info, though I think the mcp one is stronger.
* See: https://create.roblox.com/docs/reference/engine/classes/LogService
 - We should adapt the rojo logger to route through this, as it offers better level info
 - Listen to MessageOut to get the log info we are wanting.
 - Is this actually the one we want? I might be confused, check the docs, this looks new.
* The goal with these trace logging is so that when others are using this tool, we can actually debug real issues by having them send me their logs.

[sync]
right now sync is running REALLY slow
we need to create an agent loop so it can benchmark the plugin + rust side automatically over and over to determine the root cause of this slowness

[automated review of all changes done, similar to cursor agent review for the game]
it's a discord bot
we send discord channels
some way for users to check off the item in the channel as "fixed"
have the cursor style issue context copyable
this would work by requesting the rbxl from roblox like syncback already does
tag who last modified the file, too if we can - we need to somehow request the version history for a given script file - this is kinda hard, but we should investigate how hard it would be to do via OpenCloud
ideally for the .rbxl downloading, we use OpenCloud so we can use an API key rather than having my personal cookie
inspo: Cursor's "Agent Review" feature
additional inspo: https://cursor.com/dashboard?tab=bugbot
- create an atlast clone of the project
- every ~5 minutes, download and syncback.
 - if there are changes, perform an audit on the diff
 - copy the Agent Review prompt that cursor uses, somehow
 - if there are any issues, send the exact same format that Cursor's Agent Review uses into the discord in a code block
 - agent should also determine a severity (Low/Medium/High/Critical), and if it's Critical - it will @here
- should be really easy to spin these up for other games
 - possibly configurable automatically throgh discord commands?
 - could allow for nice administration like resetting the project from scratch (rm -rf ing it and starting over)
 - reports errors
 - add games via the discord by PlaceId
 - automatically remembers which discord channels to which placeid
 - support multiple discords using the same placeid (runs under like DiscordServerId/PlaceId) or something
 - only allow specific user ids to administer these commands: 176643682689089545 (me), 1010301288946339920 (Tony)
  - alternatively, and this would be better: allow the user to specify their own OpenCloud api key (or cookie if we have to revert to that) to use (make sure providing this is very secure) and then we can let them have at it.
  - need to ensure that only certain perm users can use the bot
  - we need to make sure not just any public server with a bot link can just run this, because it will be using my system resources and could be insecure. this is a proprietary tool.
