You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
|`@lightmill/convert-touchstone`| Convert TouchStone XML to Lightmill static design format. |[packages/convert-touchstone/README.md](packages/convert-touchstone/README.md)|
19
+
|`@lightmill/static-design`| Model static experiment designs and start run iterators. |[packages/static-design/README.md](packages/static-design/README.md)|
20
+
|`@lightmill/runner`| Execute timeline iterators with lifecycle callbacks. |[packages/runner/README.md](packages/runner/README.md)|
21
+
|`@lightmill/react-experiment`| React `Run` component and hooks for task execution/logging. |[packages/react-experiment/README.md](packages/react-experiment/README.md)|
22
+
|`@lightmill/log-api`| Shared API contract and OpenAPI artifacts for logging. |[packages/log-api/README.md](packages/log-api/README.md)|
23
+
|`@lightmill/log-client`| Browser/client SDK for sessions, resumable runs, and logs. |[packages/log-client/README.md](packages/log-client/README.md)|
24
+
|`@lightmill/log-server`| Express middleware and SQLite datastore for logs. |[packages/log-server/README.md](packages/log-server/README.md)|
25
+
26
+
## Quick Start
27
+
28
+
### Requirements
29
+
30
+
- Node.js 22.x
31
+
- pnpm 10+
32
+
33
+
### Install dependencies
34
+
35
+
```sh
36
+
pnpm install
37
+
```
38
+
39
+
### Build all packages
40
+
41
+
```sh
42
+
pnpm -r run build
43
+
```
44
+
45
+
### Run tests
46
+
47
+
```sh
48
+
pnpm -r run test
49
+
```
50
+
51
+
## Typical Stack
52
+
53
+
Common integration flow:
54
+
55
+
1. Convert or define a design with `@lightmill/convert-touchstone` or `@lightmill/static-design`.
56
+
2. Execute tasks with `@lightmill/runner` or `@lightmill/react-experiment`.
57
+
3. Persist logs through `@lightmill/log-client` + `@lightmill/log-server`.
58
+
4. Use `@lightmill/log-api` as source of truth for API schemas and types.
59
+
60
+
## Repository Layout
61
+
62
+
```txt
63
+
packages/
64
+
convert-touchstone/
65
+
static-design/
66
+
runner/
67
+
react-experiment/
68
+
log-api/
69
+
log-client/
70
+
log-server/
71
+
```
72
+
73
+
## Development Notes
74
+
75
+
- Each package has its own `tsconfig`, test setup, and changelog.
76
+
- Public package entrypoints are defined through each package `exports` field.
77
+
- API-related packages (`log-api`, `log-client`, `log-server`) follow JSON:API media type conventions.
Convert a touchstone XML design file as produced by [touchstone](https://www.lri.fr/%7Eappert/website/touchstone/touchstone.html)'s [design platform](https://github.com/jdfekete/touchstone-platforms/tree/master/design-platform) to a format that can be directly provided to [@lightmill/static-design](../static-design).
3
+
Convert a TouchStone XML design file into a Lightmill staticdesign object.
4
4
5
-
## Install
5
+
This package is useful when your experiment design is authored in TouchStone and
6
+
you want to execute it with Lightmill packages such as
7
+
[@lightmill/static-design](../static-design) and [@lightmill/runner](../runner).
6
8
7
-
### NPM
9
+
##Install
8
10
9
11
```sh
10
12
npm install @lightmill/convert-touchstone
11
13
```
12
14
13
-
Note: You might not need to install @lightmill/convert-touchstone, [`npx`](https://www.npmjs.com/package/npx) can be used to download and immediately run the program.
15
+
You can also run it without installing through `npx`.
14
16
15
17
### Direct download
16
18
17
-
Download the latest version then, then in your html file:
19
+
Download the latest version, then in your HTML file:
| touchStoneXML | <code>String</code> \| <code>stream.Readable</code> || The XML to parse. |
42
-
|[options]| <code>object</code> || Options |
43
-
|[options.preBlock]| <code>string</code> \| <code>object</code> \| <code>array</code> \| <code>function</code> || The type of the task to insert before each block or a function to map the block values to task(s). |
44
-
|[options.postBlock]| <code>string</code> \| <code>object</code> \| <code>array</code> \| <code>function</code> || The type of the task to insert after each block or a function to map the block values to task(s). |
45
-
|[options.preRun]| <code>string</code> \| <code>object</code> \| <code>array</code> \| <code>function</code> || The type of the task to insert before each run or a function to map the run values to task(s). |
46
-
|[options.postRun]| <code>string</code> \| <code>object</code> \| <code>array</code> \| <code>function</code> || The type of the task to insert after each run or a function to map the run values to task(s). |
47
-
|[options.trial]| <code>string</code> \| <code>object</code> \| <code>array</code> \| <code>function</code> | <code>"trial"</code> | The type of the task to insert for each trial or a function to map the trial values to task(s). |
91
+
When a task does not provide `id`, the converter generates one.
48
92
49
93
## Example
50
94
51
95
```js
52
-
// Map each run to a task to insert before the trials of the run.
0 commit comments