@orkestrel/scaffold 0.0.104 → 0.0.106
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/bin/main.js +8 -8
- package/dist/bin/main.js.map +1 -1
- package/dist/host/agents/orchestration.md +3 -3
- package/dist/host/agents/skills/orkestrel-parallel/SKILL.md +72 -0
- package/dist/host/agents/skills/orkestrel-parallel/agents/openai.yaml +4 -0
- package/dist/host/agents/skills/orkestrel-parallel/references/harnesses.md +12 -0
- package/dist/host/claude/agents/orkestrel.md +7 -7
- package/dist/host/claude/agents/verifier.md +1 -1
- package/dist/host/claude/skills/orkestrel-parallel/SKILL.md +11 -0
- package/dist/host/codex/agents/verifier.toml +3 -1
- package/dist/host/guides/agent.md +102 -57
- package/dist/host/guides/form.md +8 -8
- package/dist/host/guides/ollama.md +275 -18
- package/dist/host/guides/scaffold.md +38 -38
- package/dist/host/guides/study.md +589 -39
- package/dist/host/guides/table.md +14 -14
- package/dist/host/guides/test.md +94 -67
- package/dist/host/manifest.json +42 -14
- package/dist/host/tests/policy.test.ts +2 -2
- package/dist/host/tests/setupPolicy.ts +1 -1
- package/dist/src/core/index.cjs +13 -12
- package/dist/src/core/index.cjs.map +1 -1
- package/dist/src/core/index.d.cts +6 -6
- package/dist/src/core/index.d.ts +6 -6
- package/dist/src/core/index.js +13 -12
- package/dist/src/core/index.js.map +1 -1
- package/dist/src/server/index.cjs +7 -7
- package/dist/src/server/index.cjs.map +1 -1
- package/dist/src/server/index.d.cts +10 -10
- package/dist/src/server/index.d.ts +10 -10
- package/dist/src/server/index.js +7 -7
- package/dist/src/server/index.js.map +1 -1
- package/package.json +8 -8
|
@@ -12,7 +12,7 @@ drawing belongs to each host. The browser face binds native table elements to th
|
|
|
12
12
|
The row store is the source of truth, and it is the whole of it. Sort terms, filters, the picked
|
|
13
13
|
keys, the opened keys, and the page are held; `view` and every tally are worked out on read, so no
|
|
14
14
|
second copy of an answer can go stale. A write validates all of itself before any of it lands, and
|
|
15
|
-
announces itself
|
|
15
|
+
announces itself after it has.
|
|
16
16
|
|
|
17
17
|
The core refuses rather than throws. Every guard returns `false` off-shape rather than throwing,
|
|
18
18
|
every parser returns `undefined` on refusal, and every row the table hands back is a frozen owned
|
|
@@ -362,7 +362,7 @@ A `Shape` cell holds the constant's declared type.
|
|
|
362
362
|
### Guards
|
|
363
363
|
|
|
364
364
|
Total `is*` guards over unknown input. None throws, none coerces, and each returns `false` for
|
|
365
|
-
anything off-shape — including
|
|
365
|
+
anything off-shape — including an unexpected prototype, a symbol key, or a cyclic value.
|
|
366
366
|
|
|
367
367
|
In a guard table a `Shape` cell holds the type the guard narrows to.
|
|
368
368
|
|
|
@@ -404,7 +404,7 @@ lens-list operations, the cell gate, the comparison, the filter tests, the row p
|
|
|
404
404
|
audit, and the wire projections. `computeKeys`, `matchesTerms`, `filterRows`, and `sortRows`
|
|
405
405
|
propagate exceptions from supplied callbacks; `serializeTable` raises `SCHEMA` for a `meta` no clone
|
|
406
406
|
can own. The other helpers are total over ordinary declared inputs, subject to the core's
|
|
407
|
-
|
|
407
|
+
reflection-failure boundary described later.
|
|
408
408
|
|
|
409
409
|
| API | Kind | Summary |
|
|
410
410
|
| ---------------- | -------- | --------------------------------------------------------------------------------------------------------------------------- |
|
|
@@ -435,7 +435,7 @@ row the table hands back is a live internal reference.
|
|
|
435
435
|
| `cloneRow` | function | Clones one row into an owned frozen snapshot. |
|
|
436
436
|
| `cloneSchema` | function | Clones a whole schema into an owned frozen snapshot, freezing every nested column, choice list, choice, and `meta`; raises `SCHEMA` for a `meta` it cannot own. |
|
|
437
437
|
|
|
438
|
-
`cloneRow` cannot fail for an ordinary row record, subject to the core's
|
|
438
|
+
`cloneRow` cannot fail for an ordinary row record, subject to the core's reflection-failure boundary
|
|
439
439
|
described later. `cloneSchema` can also fail when a column's `meta` holds something no clone can own, such as a
|
|
440
440
|
record that refers back to itself. `meta` is typed as JSON and a cycle satisfies that type, so the
|
|
441
441
|
refusal is a `TableError` coded `SCHEMA` rather than a silent partial copy. `createTable` never reaches
|
|
@@ -455,9 +455,9 @@ owned value rather than the caller's.
|
|
|
455
455
|
| `parseTable` | function | Parses unknown wire data into an owned, structurally valid, semantically sound table schema. |
|
|
456
456
|
| `parseRows` | function | Parses unknown wire data into owned rows against one table schema, coercing a numeric string and `'true'` / `'false'`. |
|
|
457
457
|
|
|
458
|
-
**
|
|
458
|
+
**Reflection failures.** A TypeScript shape does not guarantee that reflection succeeds. An ordinary
|
|
459
459
|
helper or cloner may propagate a throw from a proxy trap or accessor. Guards and parsers contain that
|
|
460
|
-
throw and refuse instead. This is the
|
|
460
|
+
throw and refuse instead. This is the reflection-failure boundary for the whole core.
|
|
461
461
|
|
|
462
462
|
## Cells
|
|
463
463
|
|
|
@@ -982,7 +982,7 @@ the filter admits, so nothing here can drift out of step with what the table hol
|
|
|
982
982
|
"page 1 of 1" over an empty list needs no separate case for it.
|
|
983
983
|
- A page beyond the last one clamps to the last one. Narrowing the filter therefore moves the page
|
|
984
984
|
on its own, and moving to page 9 of 3 shows page 3 rather than nothing.
|
|
985
|
-
- `resize` keeps the first row the view was showing, so the page moves to wherever that row
|
|
985
|
+
- `resize` keeps the first row the view was showing, so the page moves to wherever that row
|
|
986
986
|
falls. Resizing is a change of magnification, not a jump to the top.
|
|
987
987
|
|
|
988
988
|
```ts
|
|
@@ -1144,11 +1144,11 @@ An event fires only when something actually moved: a write that changes nothing
|
|
|
1144
1144
|
| ---------- | --------------------------- | -------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
|
|
1145
1145
|
| `write` | the row's `key` | Once per row admitted, written over, or moved to a different place, in the order the table wrote them. A listener that wants the row reads it back. |
|
|
1146
1146
|
| `remove` | the row's `key` | Once per row taken out, in the order the table removed them. A `clear` is the exception; see its row. |
|
|
1147
|
-
| `sort` | every current `TableOrder` | Whenever the term list's content changes, carrying the whole list as it
|
|
1148
|
-
| `filter` | every current `TableFilter` | Whenever the filter list's content changes, carrying the whole list as it
|
|
1147
|
+
| `sort` | every current `TableOrder` | Whenever the term list's content changes, carrying the whole list as it stands. |
|
|
1148
|
+
| `filter` | every current `TableFilter` | Whenever the filter list's content changes, carrying the whole list as it stands. |
|
|
1149
1149
|
| `select` | the picked `TableKey` set | Whenever the picked set changes, carrying the whole set — including when removing rows pruned it. |
|
|
1150
1150
|
| `expand` | the opened `TableKey` set | Whenever the opened set changes, carrying the whole set — including when removing rows pruned it. |
|
|
1151
|
-
| `paginate` | the `page`
|
|
1151
|
+
| `paginate` | the `page` shown | Whenever the paged window moves: a `move`, a `resize`, and a clamp caused by a narrower filter or by rows leaving. |
|
|
1152
1152
|
| `clear` | nothing | On a completed `clear`. It is the whole announcement of that reset: no `remove`, no `sort`, no `filter`, no `select`, no `expand`, and no `paginate` is emitted beside it. |
|
|
1153
1153
|
|
|
1154
1154
|
A payload is owned by the listener. `sort` and `filter` carry the whole axis because a single term is
|
|
@@ -1365,7 +1365,7 @@ a host can check against the same number the package checks against.
|
|
|
1365
1365
|
They bind at the schema door and the value door, and which door a limit sits at is the whole story.
|
|
1366
1366
|
|
|
1367
1367
|
**The schema door reports.** `auditTable` counts columns, choices, names, strings, total text, and
|
|
1368
|
-
total nodes — `meta` included,
|
|
1368
|
+
total nodes — `meta` included, because it is retained like everything else — and returns one human
|
|
1369
1369
|
diagnostic per breach. `createTable` raises `SCHEMA` carrying them and `parseTable` refuses the
|
|
1370
1370
|
schema, so no over-budget schema is ever held.
|
|
1371
1371
|
|
|
@@ -1642,7 +1642,7 @@ These invariants hold across [`src/core`](../src/core) and this guide.
|
|
|
1642
1642
|
whatever it reset, so a reset of ten thousand rows is one event. `destroy` called twice does what
|
|
1643
1643
|
calling it once did; afterwards every write raises `DESTROYED` while every getter still answers
|
|
1644
1644
|
what the table last held, and `destroyed` reports the fact so a host need not catch to learn it.
|
|
1645
|
-
16. **Guards are total and parsers refuse.** No `is*` throws for any input —
|
|
1645
|
+
16. **Guards are total and parsers refuse.** No `is*` throws for any input — unexpected prototype,
|
|
1646
1646
|
symbol key, cycle, or depth. No `parse*` throws; each returns `undefined` on refusal. A
|
|
1647
1647
|
guard-valid value is never refused by its parser, and every parsed result satisfies its guard.
|
|
1648
1648
|
`isTableSchema` is therefore semantic and not merely structural: it is the exact shape plus an
|
|
@@ -1701,7 +1701,7 @@ this package answers today through a mechanism it already exposes.
|
|
|
1701
1701
|
| Grouping and aggregation | out | Group headers, subtotals, and rollups add a second row kind that is not a row, and a fold that is not a filter. `view` stays a flat list of the rows the table holds. |
|
|
1702
1702
|
| Tree and hierarchical rows | out | A parent key would make `view` a traversal rather than a projection, and expansion would mean "show children" instead of "this row is open". Expansion here says only which rows are open. |
|
|
1703
1703
|
| Editing transactions | out | A staged edit set with commit and rollback is a second store beside the row store, and two writers that can disagree. A host that needs one holds the pending values and calls `update` once. |
|
|
1704
|
-
| Undo and history | out | The table holds the rows
|
|
1704
|
+
| Undo and history | out | The table holds the rows. A stack of everything before is a host concern with a host's retention policy, built over the same `update` and `remove` calls. |
|
|
1705
1705
|
| Async data sources | host | Every read here is synchronous, so `view` is right the instant anything moves. Fetching, paging a server, and reconciling a response are the host's; it reads the lens and calls `add` or `clear`. |
|
|
1706
1706
|
| Server-side paging | seam | `sort.orders()`, `filter.filters()`, `pagination.offset`, and `pagination.limit` are already the shape a query asks for, in the vocabulary `@orkestrel/database` uses. |
|
|
1707
1707
|
| Row count budget | out | A table legitimately holds a million rows. The budgets bound one schema's declarations, which arrive from a wire; how many rows a host holds is the host's memory to spend. |
|
|
@@ -1746,7 +1746,7 @@ this package answers today through a mechanism it already exposes.
|
|
|
1746
1746
|
`compareCells`, `admitsFilter`, `matchesFilter`, `filterRows`, `sortRows`, `auditTable`,
|
|
1747
1747
|
`serializeTable`, `serializeRows`, and the budgets.
|
|
1748
1748
|
- [`tests/src/core/validators.test.ts`](../tests/src/core/validators.test.ts) — every guard against
|
|
1749
|
-
valid, off-shape, and
|
|
1749
|
+
valid, off-shape, and untrusted input, plus guard/parser soundness in both directions.
|
|
1750
1750
|
- [`tests/src/core/parsers.test.ts`](../tests/src/core/parsers.test.ts) — `parseTable`, `parseRows`,
|
|
1751
1751
|
the coercions, identity at the parse door, and the canonical byte-stable round trip.
|
|
1752
1752
|
- [`tests/src/core/cloners.test.ts`](../tests/src/core/cloners.test.ts) — every clone is owned,
|