2025-04-24 13:32:49 -05:00
|
|
|
import { DEFAULT_PROJECT_NAME } from '@src/lib/constants'
|
|
|
|
import type { Project } from '@src/lib/project'
|
|
|
|
import type { SystemIOContext } from '@src/machines/systemIO/utils'
|
|
|
|
import {
|
|
|
|
NO_PROJECT_DIRECTORY,
|
|
|
|
SystemIOMachineActions,
|
|
|
|
SystemIOMachineActors,
|
|
|
|
SystemIOMachineEvents,
|
|
|
|
SystemIOMachineStates,
|
|
|
|
} from '@src/machines/systemIO/utils'
|
|
|
|
import toast from 'react-hot-toast'
|
|
|
|
import { assertEvent, assign, fromPromise, setup } from 'xstate'
|
|
|
|
import type { AppMachineContext } from '@src/lib/types'
|
|
|
|
|
|
|
|
/**
|
|
|
|
* Handles any system level I/O for folders and files
|
|
|
|
* This machine will be initializes once within the applications runtime
|
|
|
|
* and exist for the entire life cycle of the application and able to be access
|
|
|
|
* at a global level.
|
|
|
|
*/
|
|
|
|
export const systemIOMachine = setup({
|
|
|
|
types: {
|
|
|
|
context: {} as SystemIOContext,
|
|
|
|
events: {} as
|
|
|
|
| {
|
|
|
|
type: SystemIOMachineEvents.readFoldersFromProjectDirectory
|
|
|
|
}
|
|
|
|
| {
|
|
|
|
type: SystemIOMachineEvents.done_readFoldersFromProjectDirectory
|
|
|
|
output: Project[]
|
|
|
|
}
|
|
|
|
| {
|
|
|
|
type: SystemIOMachineEvents.done_checkReadWrite
|
|
|
|
output: { value: boolean; error: unknown }
|
2025-04-29 01:23:50 -04:00
|
|
|
}
|
2025-04-24 13:32:49 -05:00
|
|
|
| {
|
2025-04-29 01:23:50 -04:00
|
|
|
type: SystemIOMachineEvents.setProjectDirectoryPath
|
|
|
|
data: { requestedProjectDirectoryPath: string }
|
|
|
|
}
|
2025-04-24 13:32:49 -05:00
|
|
|
| {
|
2025-04-29 01:23:50 -04:00
|
|
|
type: SystemIOMachineEvents.navigateToProject
|
|
|
|
data: { requestedProjectName: string }
|
|
|
|
}
|
2025-04-24 13:32:49 -05:00
|
|
|
| {
|
2025-04-29 01:23:50 -04:00
|
|
|
type: SystemIOMachineEvents.navigateToFile
|
|
|
|
data: { requestedProjectName: string; requestedFileName: string }
|
|
|
|
}
|
2025-04-24 13:32:49 -05:00
|
|
|
| {
|
2025-04-29 01:23:50 -04:00
|
|
|
type: SystemIOMachineEvents.createProject
|
|
|
|
data: { requestedProjectName: string }
|
|
|
|
}
|
2025-04-24 13:32:49 -05:00
|
|
|
| {
|
2025-04-29 01:23:50 -04:00
|
|
|
type: SystemIOMachineEvents.renameProject
|
|
|
|
data: { requestedProjectName: string; projectName: string }
|
|
|
|
}
|
2025-04-28 18:15:20 -05:00
|
|
|
| {
|
2025-04-29 01:23:50 -04:00
|
|
|
type: SystemIOMachineEvents.deleteProject
|
|
|
|
data: { requestedProjectName: string }
|
|
|
|
}
|
2025-04-24 13:32:49 -05:00
|
|
|
| {
|
2025-04-28 18:15:20 -05:00
|
|
|
type: SystemIOMachineEvents.done_deleteProject
|
|
|
|
output: { message: string; name: string }
|
2025-04-24 13:32:49 -05:00
|
|
|
}
|
|
|
|
| {
|
|
|
|
type: SystemIOMachineEvents.createKCLFile
|
|
|
|
data: {
|
|
|
|
requestedProjectName: string
|
|
|
|
requestedFileName: string
|
|
|
|
requestedCode: string
|
|
|
|
}
|
|
|
|
}
|
|
|
|
| {
|
|
|
|
type: SystemIOMachineEvents.importFileFromURL
|
|
|
|
data: {
|
|
|
|
requestedProjectName: string
|
|
|
|
requestedFileName: string
|
|
|
|
requestedCode: string
|
|
|
|
}
|
|
|
|
}
|
|
|
|
| {
|
|
|
|
type: SystemIOMachineEvents.setDefaultProjectFolderName
|
|
|
|
data: { requestedDefaultProjectFolderName: string }
|
[Feature]: Enable Text-to-CAD at the application level (#6501)
* chore: saving off skeleton
* fix: saving skeleton
* chore: skeleton for loading projects from project directory path
* chore: cleaning up useless state transition to be an on event direct to action state
* fix: new structure for web vs desktop vs react machine provider code
* chore: saving off skeleton
* fix: skeleton logic for react? going to move it from a string to obj.string
* fix: trying to prevent error element unmount on global react components. This is bricking JS state
* fix: we are so back
* chore: implemented navigating to specfic KCL file
* chore: implementing renaming project
* chore: deleting project
* fix: auto fixes
* fix: old debug/testing file oops
* chore: generic create new file
* chore: skeleton for web create file provide
* chore: basic machine vitest... need to figure out how to get window.electron implemented in vitest?
* chore: save off progress before deleting other project implementation, a few missing features still
* chore: trying a different init skeleton? most likely will migrate
* chore: first attempt of purging projects context provider
* chore: enabling toast for some machine state
* chore: enabling more toast success and error
* chore: writing read write state to the system io based on the project path
* fix: tsc fixes
* fix: use file system watcher, navigate to project after creation via the requestProjectName
* chore: open project command, hooks vs snapshot context helpers
* chore: implemented open and create project for e2e testing. They are hard coded in poor spot for now.
* fix: codespell fixes
* chore: implementing more project commands
* chore: PR improvements for root.tsx
* chore: leaving comment about new Router.tsx layout
* fix: removing debugging code
* fix: rewriting component for readability
* fix: improving web initialization
* chore: implementing import file from url which is not actually that?
* fix: clearing search params on import file from url
* fix: fixed two e2e tests, forgot needsReview when making new command
* fix: fixing some import from url business logic to pass e2e tests
* chore: script for diffing circular deps +/-
* fix: formatting
* fix: massive fix for circular depsga!
* fix: trying to fix some errors and auto fmt
* fix: updating deps
* fix: removing debugging code
* fix: big clean up
* fix: more deletion
* fix: tsc cleanup
* fix: TSC TSC TSC TSC!
* fix: typo fix
* fix: clear query params on web only, desktop not required
* fix: removing unused code
* fmt
* Bring back `trap` removed in merge
* Use explicit types instead of `any`s on arg configs
* Add project commands directly to command palette
* fix: deleting debugging code, from PR review
* fix: this got added back(?)
* fix: using referred type
* fix: more PR clean up
* fix: big block comment for xstate architecture decision
* fix: more pr comment fixes
* fix: saving off logic, need a big cleanup because I hacked it together to get a POC
* fix: extra business?
* fix: merge conflict just added them back why dude
* fix: more PR comments
* fix: big ciruclar deps fix, commandBarActor in appActor
* chore: writing e2e test, still need to fix 3 bugs
* chore: adding more scenarios
* fix: formatting
* fix: fixing tsc errors
* chore: deleting the old text to cad and using the new application level one, almost there
* fix: prompt to edit works
* fix: large push to get 1 text to cad command... the usage is a little buggy with delete and navigate within /file
* fix: settings for highlight edges now works
* chore: adding another e2e test
* fix: cleaning up e2e tests and writing more of them
* fix: tsc type
* chore: more e2e improvements, unique project name in text to cad
* chore: e2e tests should be good to go
* fix: gotcha comment
* fix: enabled web t2c, codespell fixes
* fix: fixing merge conflcits??
* fix: t2c is back
* Remove spaces in command bar test
* fmt
---------
Co-authored-by: Frank Noirot <frankjohnson1993@gmail.com>
Co-authored-by: lee-at-zoo-corp <lee@zoo.dev>
2025-04-25 18:04:47 -05:00
|
|
|
}
|
|
|
|
// TODO: Move this generateTextToCAD to another machine in the future and make a whole machine out of it.
|
|
|
|
| {
|
|
|
|
type: SystemIOMachineEvents.generateTextToCAD
|
|
|
|
data: {
|
|
|
|
requestedPrompt: string
|
|
|
|
requestedProjectName: string
|
|
|
|
isProjectNew: boolean
|
|
|
|
}
|
|
|
|
}
|
|
|
|
| {
|
|
|
|
type: SystemIOMachineEvents.deleteKCLFile
|
|
|
|
data: {
|
|
|
|
requestedProjectName: string
|
|
|
|
requestedFileName: string
|
|
|
|
}
|
2025-04-24 13:32:49 -05:00
|
|
|
},
|
|
|
|
},
|
|
|
|
actions: {
|
|
|
|
[SystemIOMachineActions.setFolders]: assign({
|
|
|
|
folders: ({ event }) => {
|
|
|
|
assertEvent(
|
|
|
|
event,
|
|
|
|
SystemIOMachineEvents.done_readFoldersFromProjectDirectory
|
|
|
|
)
|
|
|
|
return event.output
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
[SystemIOMachineActions.setProjectDirectoryPath]: assign({
|
|
|
|
projectDirectoryPath: ({ event }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.setProjectDirectoryPath)
|
|
|
|
return event.data.requestedProjectDirectoryPath
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
[SystemIOMachineActions.setRequestedProjectName]: assign({
|
|
|
|
requestedProjectName: ({ event }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.navigateToProject)
|
|
|
|
return { name: event.data.requestedProjectName }
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
[SystemIOMachineActions.setRequestedFileName]: assign({
|
|
|
|
requestedFileName: ({ event }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.navigateToFile)
|
|
|
|
return {
|
|
|
|
project: event.data.requestedProjectName,
|
|
|
|
file: event.data.requestedFileName,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
[SystemIOMachineActions.setDefaultProjectFolderName]: assign({
|
|
|
|
defaultProjectFolderName: ({ event }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.setDefaultProjectFolderName)
|
|
|
|
return event.data.requestedDefaultProjectFolderName
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
[SystemIOMachineActions.toastSuccess]: ({ event }) => {
|
|
|
|
toast.success(
|
|
|
|
('data' in event && typeof event.data === 'string' && event.data) ||
|
|
|
|
('output' in event &&
|
|
|
|
'message' in event.output &&
|
|
|
|
typeof event.output.message === 'string' &&
|
|
|
|
event.output.message) ||
|
|
|
|
''
|
|
|
|
)
|
|
|
|
},
|
|
|
|
[SystemIOMachineActions.toastError]: ({ event }) => {
|
|
|
|
toast.error(
|
|
|
|
('data' in event && typeof event.data === 'string' && event.data) ||
|
|
|
|
('output' in event &&
|
|
|
|
typeof event.output === 'string' &&
|
|
|
|
event.output) ||
|
|
|
|
('error' in event &&
|
|
|
|
event.error instanceof Error &&
|
|
|
|
event.error.message) ||
|
|
|
|
''
|
|
|
|
)
|
|
|
|
},
|
|
|
|
[SystemIOMachineActions.setReadWriteProjectDirectory]: assign({
|
|
|
|
canReadWriteProjectDirectory: ({ event }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.done_checkReadWrite)
|
|
|
|
return event.output
|
|
|
|
},
|
|
|
|
}),
|
[Feature]: Enable Text-to-CAD at the application level (#6501)
* chore: saving off skeleton
* fix: saving skeleton
* chore: skeleton for loading projects from project directory path
* chore: cleaning up useless state transition to be an on event direct to action state
* fix: new structure for web vs desktop vs react machine provider code
* chore: saving off skeleton
* fix: skeleton logic for react? going to move it from a string to obj.string
* fix: trying to prevent error element unmount on global react components. This is bricking JS state
* fix: we are so back
* chore: implemented navigating to specfic KCL file
* chore: implementing renaming project
* chore: deleting project
* fix: auto fixes
* fix: old debug/testing file oops
* chore: generic create new file
* chore: skeleton for web create file provide
* chore: basic machine vitest... need to figure out how to get window.electron implemented in vitest?
* chore: save off progress before deleting other project implementation, a few missing features still
* chore: trying a different init skeleton? most likely will migrate
* chore: first attempt of purging projects context provider
* chore: enabling toast for some machine state
* chore: enabling more toast success and error
* chore: writing read write state to the system io based on the project path
* fix: tsc fixes
* fix: use file system watcher, navigate to project after creation via the requestProjectName
* chore: open project command, hooks vs snapshot context helpers
* chore: implemented open and create project for e2e testing. They are hard coded in poor spot for now.
* fix: codespell fixes
* chore: implementing more project commands
* chore: PR improvements for root.tsx
* chore: leaving comment about new Router.tsx layout
* fix: removing debugging code
* fix: rewriting component for readability
* fix: improving web initialization
* chore: implementing import file from url which is not actually that?
* fix: clearing search params on import file from url
* fix: fixed two e2e tests, forgot needsReview when making new command
* fix: fixing some import from url business logic to pass e2e tests
* chore: script for diffing circular deps +/-
* fix: formatting
* fix: massive fix for circular depsga!
* fix: trying to fix some errors and auto fmt
* fix: updating deps
* fix: removing debugging code
* fix: big clean up
* fix: more deletion
* fix: tsc cleanup
* fix: TSC TSC TSC TSC!
* fix: typo fix
* fix: clear query params on web only, desktop not required
* fix: removing unused code
* fmt
* Bring back `trap` removed in merge
* Use explicit types instead of `any`s on arg configs
* Add project commands directly to command palette
* fix: deleting debugging code, from PR review
* fix: this got added back(?)
* fix: using referred type
* fix: more PR clean up
* fix: big block comment for xstate architecture decision
* fix: more pr comment fixes
* fix: saving off logic, need a big cleanup because I hacked it together to get a POC
* fix: extra business?
* fix: merge conflict just added them back why dude
* fix: more PR comments
* fix: big ciruclar deps fix, commandBarActor in appActor
* chore: writing e2e test, still need to fix 3 bugs
* chore: adding more scenarios
* fix: formatting
* fix: fixing tsc errors
* chore: deleting the old text to cad and using the new application level one, almost there
* fix: prompt to edit works
* fix: large push to get 1 text to cad command... the usage is a little buggy with delete and navigate within /file
* fix: settings for highlight edges now works
* chore: adding another e2e test
* fix: cleaning up e2e tests and writing more of them
* fix: tsc type
* chore: more e2e improvements, unique project name in text to cad
* chore: e2e tests should be good to go
* fix: gotcha comment
* fix: enabled web t2c, codespell fixes
* fix: fixing merge conflcits??
* fix: t2c is back
* Remove spaces in command bar test
* fmt
---------
Co-authored-by: Frank Noirot <frankjohnson1993@gmail.com>
Co-authored-by: lee-at-zoo-corp <lee@zoo.dev>
2025-04-25 18:04:47 -05:00
|
|
|
[SystemIOMachineActions.setRequestedTextToCadGeneration]: assign({
|
|
|
|
requestedTextToCadGeneration: ({ event }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.generateTextToCAD)
|
|
|
|
return event.data
|
|
|
|
},
|
|
|
|
}),
|
2025-04-28 18:15:20 -05:00
|
|
|
[SystemIOMachineActions.setLastProjectDeleteRequest]: assign({
|
|
|
|
lastProjectDeleteRequest: ({ event }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.done_deleteProject)
|
2025-04-29 01:23:50 -04:00
|
|
|
return { project: event.output.name }
|
2025-04-28 18:15:20 -05:00
|
|
|
},
|
|
|
|
}),
|
2025-04-24 13:32:49 -05:00
|
|
|
},
|
|
|
|
actors: {
|
|
|
|
[SystemIOMachineActors.readFoldersFromProjectDirectory]: fromPromise(
|
|
|
|
async ({ input: context }: { input: SystemIOContext }) => {
|
|
|
|
const folders: Project[] = []
|
|
|
|
return folders
|
|
|
|
}
|
|
|
|
),
|
|
|
|
[SystemIOMachineActors.createProject]: fromPromise(
|
|
|
|
async ({
|
|
|
|
input: { context, requestedProjectName },
|
|
|
|
}: {
|
|
|
|
input: { context: SystemIOContext; requestedProjectName: string }
|
|
|
|
}) => {
|
|
|
|
return { message: '', name: '' }
|
|
|
|
}
|
|
|
|
),
|
|
|
|
[SystemIOMachineActors.deleteProject]: fromPromise(
|
|
|
|
async ({
|
|
|
|
input: { context, requestedProjectName },
|
|
|
|
}: {
|
|
|
|
input: { context: SystemIOContext; requestedProjectName: string }
|
|
|
|
}) => {
|
|
|
|
return { message: '', name: '' }
|
|
|
|
}
|
|
|
|
),
|
|
|
|
[SystemIOMachineActors.renameProject]: fromPromise(
|
|
|
|
async ({
|
|
|
|
input: { context, requestedProjectName, projectName },
|
|
|
|
}: {
|
|
|
|
input: {
|
|
|
|
context: SystemIOContext
|
|
|
|
requestedProjectName: string
|
|
|
|
projectName: string
|
|
|
|
}
|
|
|
|
}): Promise<{ message: string; newName: string; oldName: string }> => {
|
|
|
|
return { message: '', newName: '', oldName: '' }
|
|
|
|
}
|
|
|
|
),
|
|
|
|
[SystemIOMachineActors.createKCLFile]: fromPromise(
|
|
|
|
async ({
|
|
|
|
input,
|
|
|
|
}: {
|
|
|
|
input: {
|
|
|
|
context: SystemIOContext
|
|
|
|
requestedProjectName: string
|
|
|
|
requestedFileName: string
|
|
|
|
requestedCode: string
|
|
|
|
rootContext: AppMachineContext
|
|
|
|
}
|
|
|
|
}): Promise<{
|
|
|
|
message: string
|
|
|
|
fileName: string
|
|
|
|
projectName: string
|
|
|
|
}> => {
|
|
|
|
return { message: '', fileName: '', projectName: '' }
|
|
|
|
}
|
|
|
|
),
|
|
|
|
[SystemIOMachineActors.checkReadWrite]: fromPromise(
|
|
|
|
async ({
|
|
|
|
input: { context, requestedProjectDirectoryPath },
|
|
|
|
}: {
|
|
|
|
input: {
|
|
|
|
context: SystemIOContext
|
|
|
|
requestedProjectDirectoryPath: string
|
|
|
|
}
|
|
|
|
}): Promise<{ value: boolean; error: unknown }> => {
|
|
|
|
return { value: true, error: undefined }
|
|
|
|
}
|
|
|
|
),
|
[Feature]: Enable Text-to-CAD at the application level (#6501)
* chore: saving off skeleton
* fix: saving skeleton
* chore: skeleton for loading projects from project directory path
* chore: cleaning up useless state transition to be an on event direct to action state
* fix: new structure for web vs desktop vs react machine provider code
* chore: saving off skeleton
* fix: skeleton logic for react? going to move it from a string to obj.string
* fix: trying to prevent error element unmount on global react components. This is bricking JS state
* fix: we are so back
* chore: implemented navigating to specfic KCL file
* chore: implementing renaming project
* chore: deleting project
* fix: auto fixes
* fix: old debug/testing file oops
* chore: generic create new file
* chore: skeleton for web create file provide
* chore: basic machine vitest... need to figure out how to get window.electron implemented in vitest?
* chore: save off progress before deleting other project implementation, a few missing features still
* chore: trying a different init skeleton? most likely will migrate
* chore: first attempt of purging projects context provider
* chore: enabling toast for some machine state
* chore: enabling more toast success and error
* chore: writing read write state to the system io based on the project path
* fix: tsc fixes
* fix: use file system watcher, navigate to project after creation via the requestProjectName
* chore: open project command, hooks vs snapshot context helpers
* chore: implemented open and create project for e2e testing. They are hard coded in poor spot for now.
* fix: codespell fixes
* chore: implementing more project commands
* chore: PR improvements for root.tsx
* chore: leaving comment about new Router.tsx layout
* fix: removing debugging code
* fix: rewriting component for readability
* fix: improving web initialization
* chore: implementing import file from url which is not actually that?
* fix: clearing search params on import file from url
* fix: fixed two e2e tests, forgot needsReview when making new command
* fix: fixing some import from url business logic to pass e2e tests
* chore: script for diffing circular deps +/-
* fix: formatting
* fix: massive fix for circular depsga!
* fix: trying to fix some errors and auto fmt
* fix: updating deps
* fix: removing debugging code
* fix: big clean up
* fix: more deletion
* fix: tsc cleanup
* fix: TSC TSC TSC TSC!
* fix: typo fix
* fix: clear query params on web only, desktop not required
* fix: removing unused code
* fmt
* Bring back `trap` removed in merge
* Use explicit types instead of `any`s on arg configs
* Add project commands directly to command palette
* fix: deleting debugging code, from PR review
* fix: this got added back(?)
* fix: using referred type
* fix: more PR clean up
* fix: big block comment for xstate architecture decision
* fix: more pr comment fixes
* fix: saving off logic, need a big cleanup because I hacked it together to get a POC
* fix: extra business?
* fix: merge conflict just added them back why dude
* fix: more PR comments
* fix: big ciruclar deps fix, commandBarActor in appActor
* chore: writing e2e test, still need to fix 3 bugs
* chore: adding more scenarios
* fix: formatting
* fix: fixing tsc errors
* chore: deleting the old text to cad and using the new application level one, almost there
* fix: prompt to edit works
* fix: large push to get 1 text to cad command... the usage is a little buggy with delete and navigate within /file
* fix: settings for highlight edges now works
* chore: adding another e2e test
* fix: cleaning up e2e tests and writing more of them
* fix: tsc type
* chore: more e2e improvements, unique project name in text to cad
* chore: e2e tests should be good to go
* fix: gotcha comment
* fix: enabled web t2c, codespell fixes
* fix: fixing merge conflcits??
* fix: t2c is back
* Remove spaces in command bar test
* fmt
---------
Co-authored-by: Frank Noirot <frankjohnson1993@gmail.com>
Co-authored-by: lee-at-zoo-corp <lee@zoo.dev>
2025-04-25 18:04:47 -05:00
|
|
|
[SystemIOMachineActors.deleteKCLFile]: fromPromise(
|
|
|
|
async ({
|
|
|
|
input,
|
|
|
|
}: {
|
|
|
|
input: {
|
|
|
|
context: SystemIOContext
|
|
|
|
requestedProjectName: string
|
|
|
|
requestedFileName: string
|
|
|
|
}
|
|
|
|
}): Promise<{
|
|
|
|
message: string
|
|
|
|
fileName: string
|
|
|
|
projectName: string
|
|
|
|
}> => {
|
|
|
|
return { message: '', fileName: '', projectName: '' }
|
|
|
|
}
|
|
|
|
),
|
2025-04-24 13:32:49 -05:00
|
|
|
},
|
|
|
|
}).createMachine({
|
|
|
|
initial: SystemIOMachineStates.idle,
|
|
|
|
// Remember, this machine and change its projectDirectory at any point
|
|
|
|
// '' will be no project directory, aka clear this machine out!
|
|
|
|
// To be the absolute root of someones computer we should take the string of path.resolve() in node.js which is different for each OS
|
|
|
|
context: () => ({
|
|
|
|
folders: [],
|
|
|
|
defaultProjectFolderName: DEFAULT_PROJECT_NAME,
|
|
|
|
projectDirectoryPath: NO_PROJECT_DIRECTORY,
|
|
|
|
hasListedProjects: false,
|
|
|
|
requestedProjectName: { name: NO_PROJECT_DIRECTORY },
|
|
|
|
requestedFileName: {
|
|
|
|
project: NO_PROJECT_DIRECTORY,
|
|
|
|
file: NO_PROJECT_DIRECTORY,
|
|
|
|
},
|
|
|
|
canReadWriteProjectDirectory: { value: true, error: undefined },
|
|
|
|
clearURLParams: { value: false },
|
[Feature]: Enable Text-to-CAD at the application level (#6501)
* chore: saving off skeleton
* fix: saving skeleton
* chore: skeleton for loading projects from project directory path
* chore: cleaning up useless state transition to be an on event direct to action state
* fix: new structure for web vs desktop vs react machine provider code
* chore: saving off skeleton
* fix: skeleton logic for react? going to move it from a string to obj.string
* fix: trying to prevent error element unmount on global react components. This is bricking JS state
* fix: we are so back
* chore: implemented navigating to specfic KCL file
* chore: implementing renaming project
* chore: deleting project
* fix: auto fixes
* fix: old debug/testing file oops
* chore: generic create new file
* chore: skeleton for web create file provide
* chore: basic machine vitest... need to figure out how to get window.electron implemented in vitest?
* chore: save off progress before deleting other project implementation, a few missing features still
* chore: trying a different init skeleton? most likely will migrate
* chore: first attempt of purging projects context provider
* chore: enabling toast for some machine state
* chore: enabling more toast success and error
* chore: writing read write state to the system io based on the project path
* fix: tsc fixes
* fix: use file system watcher, navigate to project after creation via the requestProjectName
* chore: open project command, hooks vs snapshot context helpers
* chore: implemented open and create project for e2e testing. They are hard coded in poor spot for now.
* fix: codespell fixes
* chore: implementing more project commands
* chore: PR improvements for root.tsx
* chore: leaving comment about new Router.tsx layout
* fix: removing debugging code
* fix: rewriting component for readability
* fix: improving web initialization
* chore: implementing import file from url which is not actually that?
* fix: clearing search params on import file from url
* fix: fixed two e2e tests, forgot needsReview when making new command
* fix: fixing some import from url business logic to pass e2e tests
* chore: script for diffing circular deps +/-
* fix: formatting
* fix: massive fix for circular depsga!
* fix: trying to fix some errors and auto fmt
* fix: updating deps
* fix: removing debugging code
* fix: big clean up
* fix: more deletion
* fix: tsc cleanup
* fix: TSC TSC TSC TSC!
* fix: typo fix
* fix: clear query params on web only, desktop not required
* fix: removing unused code
* fmt
* Bring back `trap` removed in merge
* Use explicit types instead of `any`s on arg configs
* Add project commands directly to command palette
* fix: deleting debugging code, from PR review
* fix: this got added back(?)
* fix: using referred type
* fix: more PR clean up
* fix: big block comment for xstate architecture decision
* fix: more pr comment fixes
* fix: saving off logic, need a big cleanup because I hacked it together to get a POC
* fix: extra business?
* fix: merge conflict just added them back why dude
* fix: more PR comments
* fix: big ciruclar deps fix, commandBarActor in appActor
* chore: writing e2e test, still need to fix 3 bugs
* chore: adding more scenarios
* fix: formatting
* fix: fixing tsc errors
* chore: deleting the old text to cad and using the new application level one, almost there
* fix: prompt to edit works
* fix: large push to get 1 text to cad command... the usage is a little buggy with delete and navigate within /file
* fix: settings for highlight edges now works
* chore: adding another e2e test
* fix: cleaning up e2e tests and writing more of them
* fix: tsc type
* chore: more e2e improvements, unique project name in text to cad
* chore: e2e tests should be good to go
* fix: gotcha comment
* fix: enabled web t2c, codespell fixes
* fix: fixing merge conflcits??
* fix: t2c is back
* Remove spaces in command bar test
* fmt
---------
Co-authored-by: Frank Noirot <frankjohnson1993@gmail.com>
Co-authored-by: lee-at-zoo-corp <lee@zoo.dev>
2025-04-25 18:04:47 -05:00
|
|
|
requestedTextToCadGeneration: {
|
|
|
|
requestedPrompt: '',
|
|
|
|
requestedProjectName: NO_PROJECT_DIRECTORY,
|
|
|
|
isProjectNew: true,
|
|
|
|
},
|
2025-04-28 18:15:20 -05:00
|
|
|
lastProjectDeleteRequest: {
|
2025-04-29 01:23:50 -04:00
|
|
|
project: NO_PROJECT_DIRECTORY,
|
|
|
|
},
|
2025-04-24 13:32:49 -05:00
|
|
|
}),
|
|
|
|
states: {
|
|
|
|
[SystemIOMachineStates.idle]: {
|
|
|
|
on: {
|
|
|
|
// on can be an action
|
|
|
|
[SystemIOMachineEvents.readFoldersFromProjectDirectory]: {
|
|
|
|
target: SystemIOMachineStates.readingFolders,
|
|
|
|
},
|
|
|
|
[SystemIOMachineEvents.setProjectDirectoryPath]: {
|
|
|
|
target: SystemIOMachineStates.checkingReadWrite,
|
|
|
|
actions: [SystemIOMachineActions.setProjectDirectoryPath],
|
|
|
|
},
|
|
|
|
[SystemIOMachineEvents.navigateToProject]: {
|
|
|
|
actions: [SystemIOMachineActions.setRequestedProjectName],
|
|
|
|
},
|
|
|
|
[SystemIOMachineEvents.navigateToFile]: {
|
|
|
|
actions: [SystemIOMachineActions.setRequestedFileName],
|
|
|
|
},
|
|
|
|
[SystemIOMachineEvents.createProject]: {
|
|
|
|
target: SystemIOMachineStates.creatingProject,
|
|
|
|
},
|
|
|
|
[SystemIOMachineEvents.renameProject]: {
|
|
|
|
target: SystemIOMachineStates.renamingProject,
|
|
|
|
},
|
|
|
|
[SystemIOMachineEvents.deleteProject]: {
|
|
|
|
target: SystemIOMachineStates.deletingProject,
|
|
|
|
},
|
|
|
|
[SystemIOMachineEvents.createKCLFile]: {
|
|
|
|
target: SystemIOMachineStates.creatingKCLFile,
|
|
|
|
},
|
|
|
|
[SystemIOMachineEvents.setDefaultProjectFolderName]: {
|
|
|
|
actions: [SystemIOMachineActions.setDefaultProjectFolderName],
|
|
|
|
},
|
|
|
|
[SystemIOMachineEvents.importFileFromURL]: {
|
|
|
|
target: SystemIOMachineStates.importFileFromURL,
|
|
|
|
},
|
[Feature]: Enable Text-to-CAD at the application level (#6501)
* chore: saving off skeleton
* fix: saving skeleton
* chore: skeleton for loading projects from project directory path
* chore: cleaning up useless state transition to be an on event direct to action state
* fix: new structure for web vs desktop vs react machine provider code
* chore: saving off skeleton
* fix: skeleton logic for react? going to move it from a string to obj.string
* fix: trying to prevent error element unmount on global react components. This is bricking JS state
* fix: we are so back
* chore: implemented navigating to specfic KCL file
* chore: implementing renaming project
* chore: deleting project
* fix: auto fixes
* fix: old debug/testing file oops
* chore: generic create new file
* chore: skeleton for web create file provide
* chore: basic machine vitest... need to figure out how to get window.electron implemented in vitest?
* chore: save off progress before deleting other project implementation, a few missing features still
* chore: trying a different init skeleton? most likely will migrate
* chore: first attempt of purging projects context provider
* chore: enabling toast for some machine state
* chore: enabling more toast success and error
* chore: writing read write state to the system io based on the project path
* fix: tsc fixes
* fix: use file system watcher, navigate to project after creation via the requestProjectName
* chore: open project command, hooks vs snapshot context helpers
* chore: implemented open and create project for e2e testing. They are hard coded in poor spot for now.
* fix: codespell fixes
* chore: implementing more project commands
* chore: PR improvements for root.tsx
* chore: leaving comment about new Router.tsx layout
* fix: removing debugging code
* fix: rewriting component for readability
* fix: improving web initialization
* chore: implementing import file from url which is not actually that?
* fix: clearing search params on import file from url
* fix: fixed two e2e tests, forgot needsReview when making new command
* fix: fixing some import from url business logic to pass e2e tests
* chore: script for diffing circular deps +/-
* fix: formatting
* fix: massive fix for circular depsga!
* fix: trying to fix some errors and auto fmt
* fix: updating deps
* fix: removing debugging code
* fix: big clean up
* fix: more deletion
* fix: tsc cleanup
* fix: TSC TSC TSC TSC!
* fix: typo fix
* fix: clear query params on web only, desktop not required
* fix: removing unused code
* fmt
* Bring back `trap` removed in merge
* Use explicit types instead of `any`s on arg configs
* Add project commands directly to command palette
* fix: deleting debugging code, from PR review
* fix: this got added back(?)
* fix: using referred type
* fix: more PR clean up
* fix: big block comment for xstate architecture decision
* fix: more pr comment fixes
* fix: saving off logic, need a big cleanup because I hacked it together to get a POC
* fix: extra business?
* fix: merge conflict just added them back why dude
* fix: more PR comments
* fix: big ciruclar deps fix, commandBarActor in appActor
* chore: writing e2e test, still need to fix 3 bugs
* chore: adding more scenarios
* fix: formatting
* fix: fixing tsc errors
* chore: deleting the old text to cad and using the new application level one, almost there
* fix: prompt to edit works
* fix: large push to get 1 text to cad command... the usage is a little buggy with delete and navigate within /file
* fix: settings for highlight edges now works
* chore: adding another e2e test
* fix: cleaning up e2e tests and writing more of them
* fix: tsc type
* chore: more e2e improvements, unique project name in text to cad
* chore: e2e tests should be good to go
* fix: gotcha comment
* fix: enabled web t2c, codespell fixes
* fix: fixing merge conflcits??
* fix: t2c is back
* Remove spaces in command bar test
* fmt
---------
Co-authored-by: Frank Noirot <frankjohnson1993@gmail.com>
Co-authored-by: lee-at-zoo-corp <lee@zoo.dev>
2025-04-25 18:04:47 -05:00
|
|
|
[SystemIOMachineEvents.generateTextToCAD]: {
|
|
|
|
actions: [SystemIOMachineActions.setRequestedTextToCadGeneration],
|
|
|
|
},
|
|
|
|
[SystemIOMachineEvents.deleteKCLFile]: {
|
|
|
|
target: SystemIOMachineStates.deletingKCLFile,
|
|
|
|
},
|
2025-04-24 13:32:49 -05:00
|
|
|
},
|
|
|
|
},
|
|
|
|
[SystemIOMachineStates.readingFolders]: {
|
|
|
|
invoke: {
|
|
|
|
id: SystemIOMachineActors.readFoldersFromProjectDirectory,
|
|
|
|
src: SystemIOMachineActors.readFoldersFromProjectDirectory,
|
|
|
|
input: ({ context }) => {
|
|
|
|
return context
|
|
|
|
},
|
|
|
|
onDone: {
|
|
|
|
target: SystemIOMachineStates.idle,
|
|
|
|
actions: [
|
|
|
|
SystemIOMachineActions.setFolders,
|
|
|
|
assign({ hasListedProjects: true }),
|
|
|
|
],
|
|
|
|
},
|
|
|
|
onError: {
|
|
|
|
target: SystemIOMachineStates.idle,
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
[SystemIOMachineStates.creatingProject]: {
|
|
|
|
invoke: {
|
|
|
|
id: SystemIOMachineActors.createProject,
|
|
|
|
src: SystemIOMachineActors.createProject,
|
|
|
|
input: ({ context, event }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.createProject)
|
|
|
|
return {
|
|
|
|
context,
|
|
|
|
requestedProjectName: event.data.requestedProjectName,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onDone: {
|
|
|
|
target: SystemIOMachineStates.readingFolders,
|
|
|
|
actions: [
|
|
|
|
assign({
|
|
|
|
requestedProjectName: ({ event }) => {
|
|
|
|
return { name: event.output.name }
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
SystemIOMachineActions.toastSuccess,
|
|
|
|
],
|
|
|
|
},
|
|
|
|
onError: {
|
|
|
|
target: SystemIOMachineStates.idle,
|
|
|
|
actions: [SystemIOMachineActions.toastError],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
[SystemIOMachineStates.renamingProject]: {
|
|
|
|
invoke: {
|
|
|
|
id: SystemIOMachineActors.renameProject,
|
|
|
|
src: SystemIOMachineActors.renameProject,
|
|
|
|
input: ({ context, event }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.renameProject)
|
|
|
|
return {
|
|
|
|
context,
|
|
|
|
requestedProjectName: event.data.requestedProjectName,
|
|
|
|
projectName: event.data.projectName,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onDone: {
|
|
|
|
target: SystemIOMachineStates.readingFolders,
|
|
|
|
actions: [SystemIOMachineActions.toastSuccess],
|
|
|
|
},
|
|
|
|
onError: {
|
|
|
|
target: SystemIOMachineStates.idle,
|
|
|
|
actions: [SystemIOMachineActions.toastError],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
[SystemIOMachineStates.deletingProject]: {
|
|
|
|
invoke: {
|
|
|
|
id: SystemIOMachineActors.deleteProject,
|
|
|
|
src: SystemIOMachineActors.deleteProject,
|
|
|
|
input: ({ context, event }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.deleteProject)
|
|
|
|
return {
|
|
|
|
context,
|
|
|
|
requestedProjectName: event.data.requestedProjectName,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onDone: {
|
|
|
|
target: SystemIOMachineStates.readingFolders,
|
2025-04-29 01:23:50 -04:00
|
|
|
actions: [
|
|
|
|
SystemIOMachineActions.toastSuccess,
|
|
|
|
SystemIOMachineActions.setLastProjectDeleteRequest,
|
|
|
|
],
|
2025-04-24 13:32:49 -05:00
|
|
|
},
|
|
|
|
onError: {
|
|
|
|
target: SystemIOMachineStates.idle,
|
|
|
|
actions: [SystemIOMachineActions.toastError],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
[SystemIOMachineStates.creatingKCLFile]: {
|
|
|
|
invoke: {
|
|
|
|
id: SystemIOMachineActors.createKCLFile,
|
|
|
|
src: SystemIOMachineActors.createKCLFile,
|
|
|
|
input: ({ context, event, self }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.createKCLFile)
|
|
|
|
return {
|
|
|
|
context,
|
|
|
|
requestedProjectName: event.data.requestedProjectName,
|
|
|
|
requestedFileName: event.data.requestedFileName,
|
|
|
|
requestedCode: event.data.requestedCode,
|
|
|
|
rootContext: self.system.get('root').getSnapshot().context,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onDone: {
|
[Feature]: Enable Text-to-CAD at the application level (#6501)
* chore: saving off skeleton
* fix: saving skeleton
* chore: skeleton for loading projects from project directory path
* chore: cleaning up useless state transition to be an on event direct to action state
* fix: new structure for web vs desktop vs react machine provider code
* chore: saving off skeleton
* fix: skeleton logic for react? going to move it from a string to obj.string
* fix: trying to prevent error element unmount on global react components. This is bricking JS state
* fix: we are so back
* chore: implemented navigating to specfic KCL file
* chore: implementing renaming project
* chore: deleting project
* fix: auto fixes
* fix: old debug/testing file oops
* chore: generic create new file
* chore: skeleton for web create file provide
* chore: basic machine vitest... need to figure out how to get window.electron implemented in vitest?
* chore: save off progress before deleting other project implementation, a few missing features still
* chore: trying a different init skeleton? most likely will migrate
* chore: first attempt of purging projects context provider
* chore: enabling toast for some machine state
* chore: enabling more toast success and error
* chore: writing read write state to the system io based on the project path
* fix: tsc fixes
* fix: use file system watcher, navigate to project after creation via the requestProjectName
* chore: open project command, hooks vs snapshot context helpers
* chore: implemented open and create project for e2e testing. They are hard coded in poor spot for now.
* fix: codespell fixes
* chore: implementing more project commands
* chore: PR improvements for root.tsx
* chore: leaving comment about new Router.tsx layout
* fix: removing debugging code
* fix: rewriting component for readability
* fix: improving web initialization
* chore: implementing import file from url which is not actually that?
* fix: clearing search params on import file from url
* fix: fixed two e2e tests, forgot needsReview when making new command
* fix: fixing some import from url business logic to pass e2e tests
* chore: script for diffing circular deps +/-
* fix: formatting
* fix: massive fix for circular depsga!
* fix: trying to fix some errors and auto fmt
* fix: updating deps
* fix: removing debugging code
* fix: big clean up
* fix: more deletion
* fix: tsc cleanup
* fix: TSC TSC TSC TSC!
* fix: typo fix
* fix: clear query params on web only, desktop not required
* fix: removing unused code
* fmt
* Bring back `trap` removed in merge
* Use explicit types instead of `any`s on arg configs
* Add project commands directly to command palette
* fix: deleting debugging code, from PR review
* fix: this got added back(?)
* fix: using referred type
* fix: more PR clean up
* fix: big block comment for xstate architecture decision
* fix: more pr comment fixes
* fix: saving off logic, need a big cleanup because I hacked it together to get a POC
* fix: extra business?
* fix: merge conflict just added them back why dude
* fix: more PR comments
* fix: big ciruclar deps fix, commandBarActor in appActor
* chore: writing e2e test, still need to fix 3 bugs
* chore: adding more scenarios
* fix: formatting
* fix: fixing tsc errors
* chore: deleting the old text to cad and using the new application level one, almost there
* fix: prompt to edit works
* fix: large push to get 1 text to cad command... the usage is a little buggy with delete and navigate within /file
* fix: settings for highlight edges now works
* chore: adding another e2e test
* fix: cleaning up e2e tests and writing more of them
* fix: tsc type
* chore: more e2e improvements, unique project name in text to cad
* chore: e2e tests should be good to go
* fix: gotcha comment
* fix: enabled web t2c, codespell fixes
* fix: fixing merge conflcits??
* fix: t2c is back
* Remove spaces in command bar test
* fmt
---------
Co-authored-by: Frank Noirot <frankjohnson1993@gmail.com>
Co-authored-by: lee-at-zoo-corp <lee@zoo.dev>
2025-04-25 18:04:47 -05:00
|
|
|
target: SystemIOMachineStates.readingFolders,
|
2025-04-24 13:32:49 -05:00
|
|
|
},
|
|
|
|
onError: {
|
|
|
|
target: SystemIOMachineStates.idle,
|
|
|
|
actions: [SystemIOMachineActions.toastError],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
[SystemIOMachineStates.importFileFromURL]: {
|
|
|
|
invoke: {
|
|
|
|
id: SystemIOMachineActors.importFileFromURL,
|
|
|
|
src: SystemIOMachineActors.createKCLFile,
|
|
|
|
input: ({ context, event, self }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.importFileFromURL)
|
|
|
|
return {
|
|
|
|
context,
|
|
|
|
requestedProjectName: event.data.requestedProjectName,
|
|
|
|
requestedFileName: event.data.requestedFileName,
|
|
|
|
requestedCode: event.data.requestedCode,
|
|
|
|
rootContext: self.system.get('root').getSnapshot().context,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onDone: {
|
|
|
|
target: SystemIOMachineStates.readingFolders,
|
|
|
|
// Clear on web? not desktop
|
|
|
|
actions: [
|
|
|
|
assign({
|
|
|
|
requestedFileName: ({ context, event }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.done_importFileFromURL)
|
|
|
|
// Not the entire path
|
|
|
|
return {
|
|
|
|
project: event.output.projectName,
|
|
|
|
file: event.output.fileName + '.kcl',
|
|
|
|
}
|
|
|
|
},
|
|
|
|
}),
|
|
|
|
assign({ clearURLParams: { value: true } }),
|
|
|
|
],
|
|
|
|
},
|
|
|
|
onError: {
|
|
|
|
target: SystemIOMachineStates.idle,
|
|
|
|
actions: [SystemIOMachineActions.toastError],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
|
|
|
[SystemIOMachineStates.checkingReadWrite]: {
|
|
|
|
invoke: {
|
|
|
|
id: SystemIOMachineActors.checkReadWrite,
|
|
|
|
src: SystemIOMachineActors.checkReadWrite,
|
|
|
|
input: ({ context, event }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.setProjectDirectoryPath)
|
|
|
|
return {
|
|
|
|
context,
|
|
|
|
requestedProjectDirectoryPath:
|
|
|
|
event.data.requestedProjectDirectoryPath,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onDone: {
|
|
|
|
target: SystemIOMachineStates.readingFolders,
|
|
|
|
},
|
|
|
|
onError: {
|
|
|
|
target: SystemIOMachineStates.readingFolders,
|
|
|
|
actions: [SystemIOMachineActions.toastError],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
[Feature]: Enable Text-to-CAD at the application level (#6501)
* chore: saving off skeleton
* fix: saving skeleton
* chore: skeleton for loading projects from project directory path
* chore: cleaning up useless state transition to be an on event direct to action state
* fix: new structure for web vs desktop vs react machine provider code
* chore: saving off skeleton
* fix: skeleton logic for react? going to move it from a string to obj.string
* fix: trying to prevent error element unmount on global react components. This is bricking JS state
* fix: we are so back
* chore: implemented navigating to specfic KCL file
* chore: implementing renaming project
* chore: deleting project
* fix: auto fixes
* fix: old debug/testing file oops
* chore: generic create new file
* chore: skeleton for web create file provide
* chore: basic machine vitest... need to figure out how to get window.electron implemented in vitest?
* chore: save off progress before deleting other project implementation, a few missing features still
* chore: trying a different init skeleton? most likely will migrate
* chore: first attempt of purging projects context provider
* chore: enabling toast for some machine state
* chore: enabling more toast success and error
* chore: writing read write state to the system io based on the project path
* fix: tsc fixes
* fix: use file system watcher, navigate to project after creation via the requestProjectName
* chore: open project command, hooks vs snapshot context helpers
* chore: implemented open and create project for e2e testing. They are hard coded in poor spot for now.
* fix: codespell fixes
* chore: implementing more project commands
* chore: PR improvements for root.tsx
* chore: leaving comment about new Router.tsx layout
* fix: removing debugging code
* fix: rewriting component for readability
* fix: improving web initialization
* chore: implementing import file from url which is not actually that?
* fix: clearing search params on import file from url
* fix: fixed two e2e tests, forgot needsReview when making new command
* fix: fixing some import from url business logic to pass e2e tests
* chore: script for diffing circular deps +/-
* fix: formatting
* fix: massive fix for circular depsga!
* fix: trying to fix some errors and auto fmt
* fix: updating deps
* fix: removing debugging code
* fix: big clean up
* fix: more deletion
* fix: tsc cleanup
* fix: TSC TSC TSC TSC!
* fix: typo fix
* fix: clear query params on web only, desktop not required
* fix: removing unused code
* fmt
* Bring back `trap` removed in merge
* Use explicit types instead of `any`s on arg configs
* Add project commands directly to command palette
* fix: deleting debugging code, from PR review
* fix: this got added back(?)
* fix: using referred type
* fix: more PR clean up
* fix: big block comment for xstate architecture decision
* fix: more pr comment fixes
* fix: saving off logic, need a big cleanup because I hacked it together to get a POC
* fix: extra business?
* fix: merge conflict just added them back why dude
* fix: more PR comments
* fix: big ciruclar deps fix, commandBarActor in appActor
* chore: writing e2e test, still need to fix 3 bugs
* chore: adding more scenarios
* fix: formatting
* fix: fixing tsc errors
* chore: deleting the old text to cad and using the new application level one, almost there
* fix: prompt to edit works
* fix: large push to get 1 text to cad command... the usage is a little buggy with delete and navigate within /file
* fix: settings for highlight edges now works
* chore: adding another e2e test
* fix: cleaning up e2e tests and writing more of them
* fix: tsc type
* chore: more e2e improvements, unique project name in text to cad
* chore: e2e tests should be good to go
* fix: gotcha comment
* fix: enabled web t2c, codespell fixes
* fix: fixing merge conflcits??
* fix: t2c is back
* Remove spaces in command bar test
* fmt
---------
Co-authored-by: Frank Noirot <frankjohnson1993@gmail.com>
Co-authored-by: lee-at-zoo-corp <lee@zoo.dev>
2025-04-25 18:04:47 -05:00
|
|
|
[SystemIOMachineStates.deletingKCLFile]: {
|
|
|
|
invoke: {
|
|
|
|
id: SystemIOMachineActors.deleteKCLFile,
|
|
|
|
src: SystemIOMachineActors.deleteKCLFile,
|
|
|
|
input: ({ context, event }) => {
|
|
|
|
assertEvent(event, SystemIOMachineEvents.deleteKCLFile)
|
|
|
|
return {
|
|
|
|
context,
|
|
|
|
requestedProjectName: event.data.requestedProjectName,
|
|
|
|
requestedFileName: event.data.requestedFileName,
|
|
|
|
}
|
|
|
|
},
|
|
|
|
onDone: {
|
|
|
|
target: SystemIOMachineStates.readingFolders,
|
|
|
|
},
|
|
|
|
onError: {
|
|
|
|
target: SystemIOMachineStates.readingFolders,
|
|
|
|
actions: [SystemIOMachineActions.toastError],
|
|
|
|
},
|
|
|
|
},
|
|
|
|
},
|
2025-04-24 13:32:49 -05:00
|
|
|
},
|
|
|
|
})
|