Skip to content

Conversation

@jason-ha
Copy link
Owner

webpack can't handle ephemeral-independent declaring type module (not sure what the disconnect is). For now, omit that.

@jason-ha jason-ha force-pushed the lcedds-proto-example-use branch from b8cb07c to b5f0aa7 Compare January 16, 2024 20:53
@jason-ha jason-ha force-pushed the lcedds-proto-example-use branch from b5f0aa7 to 4d42b1b Compare January 16, 2024 22:40
@jason-ha jason-ha force-pushed the lcedds-proto-example-use branch 4 times, most recently from 084a5f2 to 0784b3b Compare January 26, 2024 08:24
@jason-ha jason-ha force-pushed the lcedds-proto-example-use branch 2 times, most recently from 4d5772c to a93ae1a Compare February 5, 2024 22:25
@jason-ha jason-ha changed the title client(example): presence-tracker using EphemeralDirectory client(example): presence-tracker using independent-state Feb 6, 2024
@jason-ha jason-ha force-pushed the lcedds-proto-example-use branch from a93ae1a to 3a3856b Compare February 6, 2024 17:03
@jason-ha
Copy link
Owner Author

jason-ha commented Feb 8, 2024

(Test comment for checking a CodeFlow bug.)
This PR relates to (https://dev.azure.com/fluidframework/internal/_workitems/edit/6398.)

@jason-ha jason-ha force-pushed the lcedds-proto-example-use branch from 3a3856b to dddd2eb Compare May 15, 2024 23:39
jason-ha pushed a commit that referenced this pull request May 20, 2025
…pes into a consumable version for UI visualizations (microsoft#24482)

## Description
Currently, the only way to get a set of objects for visualizing each
change an LLM makes to your tree using the aiCollab library is for users
to use the `sharedTreeDiff` utility that was created for the implicit
strategy separately. This utility is not perfect, likely does not cover
many edge cases and is fickle. However, when using the explicit strategy
we maintain an edit log internally that is the source truth. Currently,
we don't return the editLog because the `TreeEdit` type of the edit log
is not simple for users the consume and visualize changes on their UI.

The purpose of this ticket is to update the explicit strategy's entry
point function `generateTreeEdits` by taking the editLog, which is an
array of `TreeEdit`, and transforming it into a new set of objects
"diffs" that can be easily used for UI visualizations and return it
along with the success/fail response.

## Test
Mapping the edit log diff to the front-end task card diff objects:
~~~
Front-end Diff: Insert
[
    {
        "type": "INSERT",
        "path": [
            "tasks",
            3
        ],
        "value": {
            "title": "Task #4",
            "id": "2756a2e9-237d-487e-b75a-4ab7dd5e4a0d",
            "description": "This is the fourth task.",
            "priority": "Medium",
            "complexity": 2,
            "status": "To Do",
            "assignee": "Bob"
        }
    }
]
~~~
~~~
Edit Log: Insert
[
    {
        "edit": {
            "type": "insert",
"explanation": "Insert a new task titled 'Task #4' with description
'This is the fourth task.', priority 'Medium', complexity 2, and status
'To Do'. Assign the task to Bob and add it to the end of the tasks
array.",
            "content": {
                "__fluid_objectId": "Task4",
                "title": "Task #4",
                "id": "2756a2e9-237d-487e-b75a-4ab7dd5e4a0d",
                "description": "This is the fourth task.",
                "priority": "Medium",
                "complexity": 2,
                "status": "To Do",
                "assignee": "Bob"
            },
            "destination": {
                "type": "arrayPlace",
                "parentId": "TaskGroup1",
                "field": "tasks",
                "location": "end"
            }
        }
    }
]
~~~

~~~
Front-end Diff: Change
[
    {
        "path": [
            "tasks",
            0,
            "status"
        ],
        "type": "CHANGE",
        "value": "Done",
        "oldValue": "To Do",
        "objectId": "09138b2d-a75e-4376-be83-2be153c18ba6"
    }
]
~~~
~~~
Edit log: Change
[
    {
        "edit": {
            "type": "modify",
"explanation": "Change the status of Task #1 from 'To Do' to 'Done'",
            "target": {
                "target": "Task1"
            },
            "field": "status",
            "modification": "Done"
        }
    }
]
~~~

~~~
Front-end Diff: Remove
[
    {
        "type": "REMOVE",
        "path": [
            "tasks",
            0
        ],
        "oldValue": {
            "title": "Task #1",
            "id": "09138b2d-a75e-4376-be83-2be153c18ba6",
"description": "This is the first task. Blah Blah blah Blah Blah
blahBlah Blah blahBlah Blah blahBlah Blah blah",
            "priority": "Low",
            "complexity": 1,
            "status": "To Do",
            "assignee": "Alice"
        },
        "objectId": "09138b2d-a75e-4376-be83-2be153c18ba6"
    },
    {
        "type": "MOVE",
        "path": [
            "tasks",
            1
        ],
        "newIndex": 0,
        "value": {
            "title": "Task #2",
            "id": "09138b2d-a75e-4376-be83-2be153c18ba7",
"description": "This is the second task. Blah Blah blah Blah Blah
blahBlah Blah blahBlah Blah blahBlah Blah blah",
            "priority": "Medium",
            "complexity": 2,
            "status": "In Progress",
            "assignee": "Bob"
        },
        "objectId": "09138b2d-a75e-4376-be83-2be153c18ba7"
    },
    {
        "type": "MOVE",
        "path": [
            "tasks",
            2
        ],
        "newIndex": 1,
        "value": {
            "title": "Task #3",
            "id": "09138b2d-a75e-4376-be83-2be153c18ba8",
"description": "This is the third task! Blah Blah blah Blah Blah
blahBlah Blah blahBlah Blah blahBlah Blah blah",
            "priority": "High",
            "complexity": 3,
            "status": "Done",
            "assignee": "Charlie"
        },
        "objectId": "09138b2d-a75e-4376-be83-2be153c18ba8"
    },
    {
        "type": "MOVE",
        "path": [
            "tasks",
            3
        ],
        "newIndex": 2,
        "value": {
            "title": "Task #4",
            "id": "2756a2e9-237d-487e-b75a-4ab7dd5e4a0d",
            "description": "This is the fourth task.",
            "priority": "Medium",
            "complexity": 2,
            "status": "To Do",
            "assignee": "Bob"
        },
        "objectId": "2756a2e9-237d-487e-b75a-4ab7dd5e4a0d"
    }
]
~~~
~~~
Edit log: Remove
{
    "type": "remove",
    "explanation": "Remove Task#1 from the tasks array.",
    "source": {
        "target": "Task1"
    }
}
~~~

~~~
Front-end Diff: Move
[
    {
        "type": "MOVE",
        "path": [
            "tasks",
            0
        ],
        "newIndex": 3,
        "value": {
            "title": "Task #1",
            "id": "09138b2d-a75e-4376-be83-2be153c18ba6",
"description": "This is the first task. Blah Blah blah Blah Blah
blahBlah Blah blahBlah Blah blahBlah Blah blah",
            "priority": "Low",
            "complexity": 1,
            "status": "To Do",
            "assignee": "Alice"
        },
        "objectId": "09138b2d-a75e-4376-be83-2be153c18ba6"
    },
    {
        "type": "MOVE",
        "path": [
            "tasks",
            1
        ],
        "newIndex": 0,
        "value": {
            "title": "Task #2",
            "id": "09138b2d-a75e-4376-be83-2be153c18ba7",
"description": "This is the second task. Blah Blah blah Blah Blah
blahBlah Blah blahBlah Blah blahBlah Blah blah",
            "priority": "Medium",
            "complexity": 2,
            "status": "In Progress",
            "assignee": "Bob"
        },
        "objectId": "09138b2d-a75e-4376-be83-2be153c18ba7"
    },
    {
        "type": "MOVE",
        "path": [
            "tasks",
            2
        ],
        "newIndex": 1,
        "value": {
            "title": "Task #3",
            "id": "09138b2d-a75e-4376-be83-2be153c18ba8",
"description": "This is the third task! Blah Blah blah Blah Blah
blahBlah Blah blahBlah Blah blahBlah Blah blah",
            "priority": "High",
            "complexity": 3,
            "status": "Done",
            "assignee": "Charlie"
        },
        "objectId": "09138b2d-a75e-4376-be83-2be153c18ba8"
    },
    {
        "type": "MOVE",
        "path": [
            "tasks",
            3
        ],
        "newIndex": 2,
        "value": {
            "title": "Task #4",
            "id": "2756a2e9-237d-487e-b75a-4ab7dd5e4a0d",
            "description": "This is the fourth task.",
            "priority": "Medium",
            "complexity": 2,
            "status": "To Do",
            "assignee": "Bob"
        },
        "objectId": "2756a2e9-237d-487e-b75a-4ab7dd5e4a0d"
    }
]
~~~
~~~
Edit log: Move
[
    {
        "edit": {
            "type": "move",
"explanation": "Move Task #1 to the end of the tasks array.",
            "source": {
                "target": "Task1"
            },
            "destination": {
                "type": "arrayPlace",
                "parentId": "TaskGroup1",
                "field": "tasks",
                "location": "end"
            }
        }
    }
]
~~~


AB#[21569](https://dev.azure.com/fluidframework/internal/_workitems/edit/21569)

---------

Co-authored-by: Joshua Smithrud <[email protected]>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants