@wandelbots/nova-js 3.8.0 → 3.9.0-pr.280.0f09579
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{AutoReconnectingWebsocket-9Of5_BJe.d.cts → AutoReconnectingWebsocket-DEs8wlLZ.d.cts} +2 -2
- package/dist/AutoReconnectingWebsocket-DEs8wlLZ.d.cts.map +1 -0
- package/dist/{AutoReconnectingWebsocket-9Of5_BJe.d.mts → AutoReconnectingWebsocket-DEs8wlLZ.d.mts} +2 -2
- package/dist/AutoReconnectingWebsocket-DEs8wlLZ.d.mts.map +1 -0
- package/dist/LoginWithAuth0-DeirP_w9.mjs.map +1 -1
- package/dist/LoginWithAuth0-oZFpwe7m.cjs.map +1 -1
- package/dist/index.cjs +3 -3
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/dist/index.mjs +1 -1
- package/dist/lib/{v1 → deprecated/v1}/index.cjs +10 -10
- package/dist/lib/deprecated/v1/index.cjs.map +1 -0
- package/dist/lib/{v1 → deprecated/v1}/index.d.cts +4 -4
- package/dist/lib/deprecated/v1/index.d.cts.map +1 -0
- package/dist/lib/{v1 → deprecated/v1}/index.d.mts +4 -4
- package/dist/lib/deprecated/v1/index.d.mts.map +1 -0
- package/dist/lib/{v1 → deprecated/v1}/index.mjs +4 -4
- package/dist/lib/deprecated/v1/index.mjs.map +1 -0
- package/dist/lib/v2/index.cjs +134 -3
- package/dist/lib/v2/index.cjs.map +1 -1
- package/dist/lib/v2/index.d.cts +86 -11
- package/dist/lib/v2/index.d.cts.map +1 -1
- package/dist/lib/v2/index.d.mts +86 -11
- package/dist/lib/v2/index.d.mts.map +1 -1
- package/dist/lib/v2/index.mjs +133 -4
- package/dist/lib/v2/index.mjs.map +1 -1
- package/dist/{NovaClient-B-QdK0HR.cjs → wandelscriptUtils-BvZ8hcul.cjs} +29 -29
- package/dist/wandelscriptUtils-BvZ8hcul.cjs.map +1 -0
- package/dist/{NovaClient-DLElEQzc.mjs → wandelscriptUtils-CsQAUu_9.mjs} +30 -30
- package/dist/wandelscriptUtils-CsQAUu_9.mjs.map +1 -0
- package/dist/{NovaClient-4PG1cMau.d.cts → wandelscriptUtils-Cz-yQ2eJ.d.mts} +16 -16
- package/dist/wandelscriptUtils-Cz-yQ2eJ.d.mts.map +1 -0
- package/dist/{NovaClient-TJ7Bua4l.d.mts → wandelscriptUtils-_Si3ueEd.d.cts} +16 -16
- package/dist/wandelscriptUtils-_Si3ueEd.d.cts.map +1 -0
- package/package.json +7 -5
- package/src/index.ts +2 -2
- package/src/lib/AutoReconnectingWebsocket.ts +1 -1
- package/src/lib/{v1 → deprecated/v1}/ConnectedMotionGroup.ts +2 -2
- package/src/lib/{v1 → deprecated/v1}/JoggerConnection.ts +2 -2
- package/src/lib/{v1 → deprecated/v1}/MotionStreamConnection.ts +2 -2
- package/src/lib/{v1 → deprecated/v1}/NovaClient.ts +4 -4
- package/src/lib/{v1 → deprecated/v1}/ProgramStateConnection.ts +2 -2
- package/src/lib/{v1 → deprecated/v1}/mock/MockNovaInstance.ts +1 -1
- package/src/lib/{v2 → deprecated/v2}/NovaClient.ts +5 -5
- package/src/lib/v2/Nova.ts +190 -0
- package/src/lib/v2/NovaAPIClient.ts +157 -0
- package/src/lib/v2/index.ts +6 -3
- package/dist/AutoReconnectingWebsocket-9Of5_BJe.d.cts.map +0 -1
- package/dist/AutoReconnectingWebsocket-9Of5_BJe.d.mts.map +0 -1
- package/dist/NovaClient-4PG1cMau.d.cts.map +0 -1
- package/dist/NovaClient-B-QdK0HR.cjs.map +0 -1
- package/dist/NovaClient-DLElEQzc.mjs.map +0 -1
- package/dist/NovaClient-TJ7Bua4l.d.mts.map +0 -1
- package/dist/lib/v1/index.cjs.map +0 -1
- package/dist/lib/v1/index.d.cts.map +0 -1
- package/dist/lib/v1/index.d.mts.map +0 -1
- package/dist/lib/v1/index.mjs.map +0 -1
- /package/src/lib/{v1 → deprecated/v1}/NovaCellAPIClient.ts +0 -0
- /package/src/lib/{v1 → deprecated/v1}/getLatestTrajectories.ts +0 -0
- /package/src/lib/{v1 → deprecated/v1}/index.ts +0 -0
- /package/src/lib/{v1 → deprecated/v1}/motionStateUpdate.ts +0 -0
- /package/src/lib/{v1 → deprecated/v1}/wandelscriptUtils.ts +0 -0
- /package/src/lib/{v2 → deprecated/v2}/NovaCellAPIClient.ts +0 -0
- /package/src/lib/{v2 → deprecated/v2}/wandelscriptUtils.ts +0 -0
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"NovaClient-TJ7Bua4l.d.mts","names":[],"sources":["../src/lib/v1/wandelscriptUtils.ts","../src/lib/v1/ConnectedMotionGroup.ts","../src/lib/v1/MotionStreamConnection.ts","../src/lib/v1/JoggerConnection.ts","../src/lib/v1/NovaCellAPIClient.ts","../src/lib/v1/NovaClient.ts"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.cjs","names":["tryParseJson","AxiosError"],"sources":["../../../src/lib/v1/getLatestTrajectories.ts","../../../src/lib/v1/ProgramStateConnection.ts"],"sourcesContent":["import type { GetTrajectoryResponse } from \"@wandelbots/nova-api/v1\"\nimport type { NovaCellAPIClient } from \"./NovaCellAPIClient\"\n\nlet lastMotionIds: Set<string> = new Set()\n\nexport async function getLatestTrajectories(\n apiClient: NovaCellAPIClient,\n sampleTime: number = 50,\n responsesCoordinateSystem?: string,\n): Promise<GetTrajectoryResponse[]> {\n const newTrajectories: GetTrajectoryResponse[] = []\n\n try {\n const motions = await apiClient.motion.listMotions()\n const currentMotionIds = new Set(motions.motions)\n\n const newMotionIds = Array.from(currentMotionIds).filter(\n (id) => !lastMotionIds.has(id),\n )\n\n for (const motionId of newMotionIds) {\n const trajectory = await apiClient.motion.getMotionTrajectory(\n motionId,\n sampleTime,\n responsesCoordinateSystem,\n )\n newTrajectories.push(trajectory)\n }\n\n lastMotionIds = currentMotionIds\n } catch (error) {\n console.error(\"Failed to get latest trajectories:\", error)\n }\n\n return newTrajectories\n}\n","/** biome-ignore-all lint/style/noNonNullAssertion: legacy code */\nimport type { CollectionValue } from \"@wandelbots/nova-api/v1\"\nimport { AxiosError } from \"axios\"\nimport { makeAutoObservable, runInAction } from \"mobx\"\nimport type { AutoReconnectingWebsocket } from \"../AutoReconnectingWebsocket\"\nimport { tryParseJson } from \"../converters\"\nimport type { MotionStreamConnection } from \"./MotionStreamConnection\"\nimport type { NovaClient } from \"./NovaClient\"\n\nexport type ProgramRunnerLogEntry = {\n timestamp: number\n message: string\n level?: \"warn\" | \"error\"\n}\n\nexport enum ProgramState {\n NotStarted = \"not started\",\n Running = \"running\",\n Stopped = \"stopped\",\n Failed = \"failed\",\n Completed = \"completed\",\n}\n\nexport type CurrentProgram = {\n id?: string\n wandelscript?: string\n state?: ProgramState\n}\n\ntype ProgramStateMessage = {\n type: string\n runner: {\n id: string\n state: ProgramState\n start_time?: number | null\n execution_time?: number | null\n }\n}\n\n/**\n * Interface for running Wandelscript programs on the Nova instance and\n * tracking their progress and output\n */\nexport class ProgramStateConnection {\n currentProgram: CurrentProgram = {}\n logs: ProgramRunnerLogEntry[] = []\n\n executionState = \"idle\" as \"idle\" | \"starting\" | \"executing\" | \"stopping\"\n currentlyExecutingProgramRunnerId = null as string | null\n\n programStateSocket: AutoReconnectingWebsocket\n\n constructor(readonly nova: NovaClient) {\n makeAutoObservable(this, {}, { autoBind: true })\n\n this.programStateSocket = nova.openReconnectingWebsocket(`/programs/state`)\n\n this.programStateSocket.addEventListener(\"message\", (ev) => {\n const msg = tryParseJson(ev.data)\n\n if (!msg) {\n console.error(\"Failed to parse program state message\", ev.data)\n return\n }\n if (msg.type === \"update\") {\n this.handleProgramStateMessage(msg)\n }\n })\n }\n\n /** Handle a program state update from the backend */\n async handleProgramStateMessage(msg: ProgramStateMessage) {\n const { runner } = msg\n\n // Ignoring other programs for now\n // TODO - show if execution state is busy from another source\n if (runner.id !== this.currentlyExecutingProgramRunnerId) return\n\n if (runner.state === ProgramState.Failed) {\n try {\n const runnerState = await this.nova.api.program.getProgramRunner(\n runner.id,\n )\n\n // TODO - wandelengine should send print statements in real time over\n // websocket as well, rather than at the end\n const stdout = runnerState.stdout\n if (stdout) {\n this.log(stdout)\n }\n this.logError(\n `Program runner ${runner.id} failed with error: ${runnerState.error}\\n${runnerState.traceback}`,\n )\n } catch (err) {\n this.logError(\n `Failed to retrieve results for program ${runner.id}: ${err}`,\n )\n }\n\n this.currentProgram.state = ProgramState.Failed\n\n this.gotoIdleState()\n } else if (runner.state === ProgramState.Stopped) {\n try {\n const runnerState = await this.nova.api.program.getProgramRunner(\n runner.id,\n )\n\n const stdout = runnerState.stdout\n if (stdout) {\n this.log(stdout)\n }\n\n this.currentProgram.state = ProgramState.Stopped\n this.log(`Program runner ${runner.id} stopped`)\n } catch (err) {\n this.logError(\n `Failed to retrieve results for program ${runner.id}: ${err}`,\n )\n }\n\n this.gotoIdleState()\n } else if (runner.state === ProgramState.Completed) {\n try {\n const runnerState = await this.nova.api.program.getProgramRunner(\n runner.id,\n )\n\n const stdout = runnerState.stdout\n if (stdout) {\n this.log(stdout)\n }\n this.log(\n `Program runner ${runner.id} finished successfully in ${runner.execution_time?.toFixed(2)} seconds`,\n )\n\n this.currentProgram.state = ProgramState.Completed\n } catch (err) {\n this.logError(\n `Failed to retrieve results for program ${runner.id}: ${err}`,\n )\n }\n\n this.gotoIdleState()\n } else if (runner.state === ProgramState.Running) {\n this.currentProgram.state = ProgramState.Running\n this.log(`Program runner ${runner.id} now running`)\n } else if (runner.state !== ProgramState.NotStarted) {\n console.error(runner)\n this.logError(\n `Program runner ${runner.id} entered unexpected state: ${runner.state}`,\n )\n this.currentProgram.state = ProgramState.NotStarted\n this.gotoIdleState()\n }\n }\n\n /** Call when a program is no longer executing */\n gotoIdleState() {\n runInAction(() => {\n this.executionState = \"idle\"\n })\n this.currentlyExecutingProgramRunnerId = null\n }\n\n async executeProgram(\n wandelscript: string,\n initial_state?: { [key: string]: CollectionValue },\n activeRobot?: MotionStreamConnection,\n ) {\n this.currentProgram = {\n wandelscript: wandelscript,\n state: ProgramState.NotStarted,\n }\n\n const { currentProgram: openProgram } = this\n if (!openProgram) return\n runInAction(() => {\n this.executionState = \"starting\"\n })\n\n // Jogging can cause program execution to fail for some time after\n // So we need to explicitly stop jogging before running a program\n if (activeRobot) {\n try {\n await this.nova.api.motionGroupJogging.stopJogging(\n activeRobot.motionGroupId,\n )\n } catch (err) {\n console.error(err)\n }\n }\n\n // WOS-1539: Wandelengine parser currently breaks if there are empty lines with indentation\n const trimmedCode = openProgram.wandelscript!.replaceAll(/^\\s*$/gm, \"\")\n\n try {\n const programRunnerRef = await this.nova.api.program.createProgramRunner(\n {\n code: trimmedCode,\n initial_state: initial_state,\n // @ts-expect-error legacy code - check if param still used\n default_robot: activeRobot?.wandelscriptIdentifier,\n },\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n )\n\n this.log(`Created program runner ${programRunnerRef.id}\"`)\n runInAction(() => {\n this.executionState = \"executing\"\n })\n this.currentlyExecutingProgramRunnerId = programRunnerRef.id\n } catch (error) {\n if (error instanceof AxiosError && error.response && error.request) {\n this.logError(\n `${error.response.status} ${error.response.statusText} from ${error.response.config.url} ${JSON.stringify(error.response.data)}`,\n )\n } else {\n this.logError(JSON.stringify(error))\n }\n runInAction(() => {\n this.executionState = \"idle\"\n })\n }\n }\n\n async stopProgram() {\n if (!this.currentlyExecutingProgramRunnerId) return\n runInAction(() => {\n this.executionState = \"stopping\"\n })\n\n try {\n await this.nova.api.program.stopProgramRunner(\n this.currentlyExecutingProgramRunnerId,\n )\n } catch (err) {\n // Reactivate the stop button so user can try again\n runInAction(() => {\n this.executionState = \"executing\"\n })\n throw err\n }\n }\n\n reset() {\n this.currentProgram = {}\n }\n\n log(message: string) {\n console.log(message)\n this.logs.push({\n timestamp: Date.now(),\n message,\n })\n }\n\n logError(message: string) {\n console.log(message)\n this.logs.push({\n timestamp: Date.now(),\n message,\n level: \"error\",\n })\n }\n}\n"],"mappings":"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"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.cts","names":[],"sources":["../../../src/lib/v1/getLatestTrajectories.ts","../../../src/lib/v1/ProgramStateConnection.ts"],"mappings":";;;;;;iBAKsB,qBAAA,CACpB,SAAA,EAAW,iBAAA,EACX,UAAA,WACA,yBAAA,YACC,OAAA,CAAQ,qBAAA;;;KCAC,qBAAA;EACV,SAAA;EACA,OAAA;EACA,KAAA;AAAA;AAAA,aAGU,YAAA;EACV,UAAA;EACA,OAAA;EACA,OAAA;EACA,MAAA;EACA,SAAA;AAAA;AAAA,KAGU,cAAA;EACV,EAAA;EACA,YAAA;EACA,KAAA,GAAQ,YAAY;AAAA;AAAA,KAGjB,mBAAA;EACH,IAAA;EACA,MAAA;IACE,EAAA;IACA,KAAA,EAAO,YAAY;IACnB,UAAA;IACA,cAAA;EAAA;AAAA;;;;AAvBG;cA+BM,sBAAA;EAAA,SASU,IAAA,EAAM,UAAA;EAR3B,cAAA,EAAgB,cAAA;EAChB,IAAA,EAAM,qBAAA;EAEN,cAAA;EACA,iCAAA;EAEA,kBAAA,EAAoB,yBAAA;cAEC,IAAA,EAAM,UAAA;EAhC3B;EAmDM,yBAAA,CAA0B,GAAA,EAAK,mBAAA,GAAmB,OAAA;EAnD/C;EA0IT,aAAA,CAAA;EAOM,cAAA,CACJ,YAAA,UACA,aAAA;IAAA,CAAmB,GAAA,WAAc,eAAA;EAAA,GACjC,WAAA,GAAc,sBAAA,GAAsB,OAAA;EA8DhC,WAAA,CAAA,GAAW,OAAA;EAmBjB,KAAA,CAAA;EAIA,GAAA,CAAI,OAAA;EAQJ,QAAA,CAAS,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.mts","names":[],"sources":["../../../src/lib/v1/getLatestTrajectories.ts","../../../src/lib/v1/ProgramStateConnection.ts"],"mappings":";;;;;;iBAKsB,qBAAA,CACpB,SAAA,EAAW,iBAAA,EACX,UAAA,WACA,yBAAA,YACC,OAAA,CAAQ,qBAAA;;;KCAC,qBAAA;EACV,SAAA;EACA,OAAA;EACA,KAAA;AAAA;AAAA,aAGU,YAAA;EACV,UAAA;EACA,OAAA;EACA,OAAA;EACA,MAAA;EACA,SAAA;AAAA;AAAA,KAGU,cAAA;EACV,EAAA;EACA,YAAA;EACA,KAAA,GAAQ,YAAY;AAAA;AAAA,KAGjB,mBAAA;EACH,IAAA;EACA,MAAA;IACE,EAAA;IACA,KAAA,EAAO,YAAY;IACnB,UAAA;IACA,cAAA;EAAA;AAAA;;;;AAvBG;cA+BM,sBAAA;EAAA,SASU,IAAA,EAAM,UAAA;EAR3B,cAAA,EAAgB,cAAA;EAChB,IAAA,EAAM,qBAAA;EAEN,cAAA;EACA,iCAAA;EAEA,kBAAA,EAAoB,yBAAA;cAEC,IAAA,EAAM,UAAA;EAhC3B;EAmDM,yBAAA,CAA0B,GAAA,EAAK,mBAAA,GAAmB,OAAA;EAnD/C;EA0IT,aAAA,CAAA;EAOM,cAAA,CACJ,YAAA,UACA,aAAA;IAAA,CAAmB,GAAA,WAAc,eAAA;EAAA,GACjC,WAAA,GAAc,sBAAA,GAAsB,OAAA;EA8DhC,WAAA,CAAA,GAAW,OAAA;EAmBjB,KAAA,CAAA;EAIA,GAAA,CAAI,OAAA;EAQJ,QAAA,CAAS,OAAA;AAAA"}
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.mjs","names":[],"sources":["../../../src/lib/v1/getLatestTrajectories.ts","../../../src/lib/v1/ProgramStateConnection.ts"],"sourcesContent":["import type { GetTrajectoryResponse } from \"@wandelbots/nova-api/v1\"\nimport type { NovaCellAPIClient } from \"./NovaCellAPIClient\"\n\nlet lastMotionIds: Set<string> = new Set()\n\nexport async function getLatestTrajectories(\n apiClient: NovaCellAPIClient,\n sampleTime: number = 50,\n responsesCoordinateSystem?: string,\n): Promise<GetTrajectoryResponse[]> {\n const newTrajectories: GetTrajectoryResponse[] = []\n\n try {\n const motions = await apiClient.motion.listMotions()\n const currentMotionIds = new Set(motions.motions)\n\n const newMotionIds = Array.from(currentMotionIds).filter(\n (id) => !lastMotionIds.has(id),\n )\n\n for (const motionId of newMotionIds) {\n const trajectory = await apiClient.motion.getMotionTrajectory(\n motionId,\n sampleTime,\n responsesCoordinateSystem,\n )\n newTrajectories.push(trajectory)\n }\n\n lastMotionIds = currentMotionIds\n } catch (error) {\n console.error(\"Failed to get latest trajectories:\", error)\n }\n\n return newTrajectories\n}\n","/** biome-ignore-all lint/style/noNonNullAssertion: legacy code */\nimport type { CollectionValue } from \"@wandelbots/nova-api/v1\"\nimport { AxiosError } from \"axios\"\nimport { makeAutoObservable, runInAction } from \"mobx\"\nimport type { AutoReconnectingWebsocket } from \"../AutoReconnectingWebsocket\"\nimport { tryParseJson } from \"../converters\"\nimport type { MotionStreamConnection } from \"./MotionStreamConnection\"\nimport type { NovaClient } from \"./NovaClient\"\n\nexport type ProgramRunnerLogEntry = {\n timestamp: number\n message: string\n level?: \"warn\" | \"error\"\n}\n\nexport enum ProgramState {\n NotStarted = \"not started\",\n Running = \"running\",\n Stopped = \"stopped\",\n Failed = \"failed\",\n Completed = \"completed\",\n}\n\nexport type CurrentProgram = {\n id?: string\n wandelscript?: string\n state?: ProgramState\n}\n\ntype ProgramStateMessage = {\n type: string\n runner: {\n id: string\n state: ProgramState\n start_time?: number | null\n execution_time?: number | null\n }\n}\n\n/**\n * Interface for running Wandelscript programs on the Nova instance and\n * tracking their progress and output\n */\nexport class ProgramStateConnection {\n currentProgram: CurrentProgram = {}\n logs: ProgramRunnerLogEntry[] = []\n\n executionState = \"idle\" as \"idle\" | \"starting\" | \"executing\" | \"stopping\"\n currentlyExecutingProgramRunnerId = null as string | null\n\n programStateSocket: AutoReconnectingWebsocket\n\n constructor(readonly nova: NovaClient) {\n makeAutoObservable(this, {}, { autoBind: true })\n\n this.programStateSocket = nova.openReconnectingWebsocket(`/programs/state`)\n\n this.programStateSocket.addEventListener(\"message\", (ev) => {\n const msg = tryParseJson(ev.data)\n\n if (!msg) {\n console.error(\"Failed to parse program state message\", ev.data)\n return\n }\n if (msg.type === \"update\") {\n this.handleProgramStateMessage(msg)\n }\n })\n }\n\n /** Handle a program state update from the backend */\n async handleProgramStateMessage(msg: ProgramStateMessage) {\n const { runner } = msg\n\n // Ignoring other programs for now\n // TODO - show if execution state is busy from another source\n if (runner.id !== this.currentlyExecutingProgramRunnerId) return\n\n if (runner.state === ProgramState.Failed) {\n try {\n const runnerState = await this.nova.api.program.getProgramRunner(\n runner.id,\n )\n\n // TODO - wandelengine should send print statements in real time over\n // websocket as well, rather than at the end\n const stdout = runnerState.stdout\n if (stdout) {\n this.log(stdout)\n }\n this.logError(\n `Program runner ${runner.id} failed with error: ${runnerState.error}\\n${runnerState.traceback}`,\n )\n } catch (err) {\n this.logError(\n `Failed to retrieve results for program ${runner.id}: ${err}`,\n )\n }\n\n this.currentProgram.state = ProgramState.Failed\n\n this.gotoIdleState()\n } else if (runner.state === ProgramState.Stopped) {\n try {\n const runnerState = await this.nova.api.program.getProgramRunner(\n runner.id,\n )\n\n const stdout = runnerState.stdout\n if (stdout) {\n this.log(stdout)\n }\n\n this.currentProgram.state = ProgramState.Stopped\n this.log(`Program runner ${runner.id} stopped`)\n } catch (err) {\n this.logError(\n `Failed to retrieve results for program ${runner.id}: ${err}`,\n )\n }\n\n this.gotoIdleState()\n } else if (runner.state === ProgramState.Completed) {\n try {\n const runnerState = await this.nova.api.program.getProgramRunner(\n runner.id,\n )\n\n const stdout = runnerState.stdout\n if (stdout) {\n this.log(stdout)\n }\n this.log(\n `Program runner ${runner.id} finished successfully in ${runner.execution_time?.toFixed(2)} seconds`,\n )\n\n this.currentProgram.state = ProgramState.Completed\n } catch (err) {\n this.logError(\n `Failed to retrieve results for program ${runner.id}: ${err}`,\n )\n }\n\n this.gotoIdleState()\n } else if (runner.state === ProgramState.Running) {\n this.currentProgram.state = ProgramState.Running\n this.log(`Program runner ${runner.id} now running`)\n } else if (runner.state !== ProgramState.NotStarted) {\n console.error(runner)\n this.logError(\n `Program runner ${runner.id} entered unexpected state: ${runner.state}`,\n )\n this.currentProgram.state = ProgramState.NotStarted\n this.gotoIdleState()\n }\n }\n\n /** Call when a program is no longer executing */\n gotoIdleState() {\n runInAction(() => {\n this.executionState = \"idle\"\n })\n this.currentlyExecutingProgramRunnerId = null\n }\n\n async executeProgram(\n wandelscript: string,\n initial_state?: { [key: string]: CollectionValue },\n activeRobot?: MotionStreamConnection,\n ) {\n this.currentProgram = {\n wandelscript: wandelscript,\n state: ProgramState.NotStarted,\n }\n\n const { currentProgram: openProgram } = this\n if (!openProgram) return\n runInAction(() => {\n this.executionState = \"starting\"\n })\n\n // Jogging can cause program execution to fail for some time after\n // So we need to explicitly stop jogging before running a program\n if (activeRobot) {\n try {\n await this.nova.api.motionGroupJogging.stopJogging(\n activeRobot.motionGroupId,\n )\n } catch (err) {\n console.error(err)\n }\n }\n\n // WOS-1539: Wandelengine parser currently breaks if there are empty lines with indentation\n const trimmedCode = openProgram.wandelscript!.replaceAll(/^\\s*$/gm, \"\")\n\n try {\n const programRunnerRef = await this.nova.api.program.createProgramRunner(\n {\n code: trimmedCode,\n initial_state: initial_state,\n // @ts-expect-error legacy code - check if param still used\n default_robot: activeRobot?.wandelscriptIdentifier,\n },\n {\n headers: {\n \"Content-Type\": \"application/json\",\n },\n },\n )\n\n this.log(`Created program runner ${programRunnerRef.id}\"`)\n runInAction(() => {\n this.executionState = \"executing\"\n })\n this.currentlyExecutingProgramRunnerId = programRunnerRef.id\n } catch (error) {\n if (error instanceof AxiosError && error.response && error.request) {\n this.logError(\n `${error.response.status} ${error.response.statusText} from ${error.response.config.url} ${JSON.stringify(error.response.data)}`,\n )\n } else {\n this.logError(JSON.stringify(error))\n }\n runInAction(() => {\n this.executionState = \"idle\"\n })\n }\n }\n\n async stopProgram() {\n if (!this.currentlyExecutingProgramRunnerId) return\n runInAction(() => {\n this.executionState = \"stopping\"\n })\n\n try {\n await this.nova.api.program.stopProgramRunner(\n this.currentlyExecutingProgramRunnerId,\n )\n } catch (err) {\n // Reactivate the stop button so user can try again\n runInAction(() => {\n this.executionState = \"executing\"\n })\n throw err\n }\n }\n\n reset() {\n this.currentProgram = {}\n }\n\n log(message: string) {\n console.log(message)\n this.logs.push({\n timestamp: Date.now(),\n message,\n })\n }\n\n logError(message: string) {\n console.log(message)\n this.logs.push({\n timestamp: Date.now(),\n message,\n level: \"error\",\n })\n }\n}\n"],"mappings":"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"}
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|