Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
57 commits
Select commit Hold shift + click to select a range
bc9822d
feat(api): Implement Cell API type unification (Task 2)
seefeldb Oct 24, 2025
c4d5955
fix(api): Ensure OpaqueRef.key() returns OpaqueRef type
seefeldb Oct 27, 2025
91feeb0
type check workarounds (temporary!)
seefeldb Oct 27, 2025
9326bce
pass Derivable through
seefeldb Oct 27, 2025
a6e502b
correctly tag types for the case that should throw
seefeldb Oct 27, 2025
2770390
refactor(api): Unify CellLike to replace OpaqueLike
seefeldb Oct 27, 2025
cfb849b
refactor(api): simplify CellLike and Opaque semantics
seefeldb Oct 27, 2025
7bb49cc
refactor(api): move Cellify utility type to API package
seefeldb Oct 27, 2025
73cc33c
refactor(api): update Cellify to use AnyCell with improved key() hand…
seefeldb Oct 27, 2025
44463be
refactor(runner): restructure module augmentation for capability inte…
seefeldb Oct 27, 2025
9d226d1
temporary loosened type
seefeldb Oct 27, 2025
a3e37ae
refactor(api): simplify Keyable.key() type unwrapping
seefeldb Oct 27, 2025
8fbce01
attempting a more direct way to create the cell types
seefeldb Oct 28, 2025
435fec6
separate keyable into separate types
seefeldb Oct 28, 2025
e40d9ea
.key() is now working correctly for nested types
seefeldb Oct 28, 2025
c726593
re-arrange interfaces and fix cell.ts augmentation to fit
seefeldb Oct 28, 2025
40f10f1
refactor(api,runner): improve type consistency and OpaqueRef handling
seefeldb Oct 28, 2025
68eba6b
refactor(api,runner): unify IKeyable interface using HKT pattern
seefeldb Oct 29, 2025
5a0fce3
refactor(api,runner,ui): improve type safety with stricter type const…
seefeldb Oct 29, 2025
76ce947
remove tmp files
seefeldb Oct 29, 2025
3e7aba3
fix test to it returns an actual cell
seefeldb Oct 29, 2025
bbb37e5
fix tests
seefeldb Oct 29, 2025
bbd30c0
post rebase fixes
seefeldb Oct 29, 2025
62fdc63
fix linter errors
seefeldb Oct 29, 2025
7409c2b
Add TypeScript profiling harness for API types
seefeldb Oct 30, 2025
411174c
deno fmt
seefeldb Oct 30, 2025
79d6b61
Refactor Schema type core for reuse
seefeldb Oct 30, 2025
a4edb60
simplified IKeyable
seefeldb Oct 30, 2025
dd224a7
constrain key, map, push, etc to types that support them
seefeldb Oct 30, 2025
89f0d1a
add new benchmark and script to run them
seefeldb Oct 30, 2025
21ce735
fix wrong comment
seefeldb Oct 30, 2025
361c09e
deno lint
seefeldb Oct 30, 2025
4607a90
compile new api types
seefeldb Oct 30, 2025
259a3a2
fix OpaqueCell.key to for now return OpaqueRef
seefeldb Oct 30, 2025
b911ef3
fix(transformers): update cell type detection for unified brand system
seefeldb Oct 30, 2025
72a921c
refactor(schema-generator): simplify OpaqueRef detection
seefeldb Oct 30, 2025
51113e9
refactor(schema-generator): use CELL_BRAND for OpaqueRef detection
seefeldb Oct 30, 2025
764527b
delete playwright output
seefeldb Oct 30, 2025
f8942a6
refactor(ts-transformers): organize cell type detection code
seefeldb Oct 30, 2025
d9be1d9
refactor(ts-transformers): simplify fallback to minimal necessary check
seefeldb Oct 30, 2025
bf50bec
docs(ts-transformers): document why CELL_BRAND check rarely succeeds
seefeldb Oct 30, 2025
7a62fdc
fmt + lint
seefeldb Oct 30, 2025
4e9d663
more deno fmt
seefeldb Oct 30, 2025
29b313c
refactor: detect opaque refs via cell brand metadata
seefeldb Oct 30, 2025
6e24b42
fix references to labs-secondary and node modules, it now just assume…
seefeldb Oct 30, 2025
4e04ba6
address PR feedback
seefeldb Oct 30, 2025
304c6a1
fmt, sigh
seefeldb Oct 30, 2025
163099c
and compile api types
seefeldb Oct 30, 2025
e7f553f
clarify what AnyCell is for
seefeldb Oct 30, 2025
a1b37a7
Add Deno benchmark runner and update perf docs
seefeldb Oct 30, 2025
a0418f5
delete obsolete bash script
seefeldb Oct 30, 2025
5ab8f2b
don't output ID and ID_Field in the inferred schema
seefeldb Oct 31, 2025
45ec8b7
- move CellLike to API
seefeldb Nov 3, 2025
d19289b
compile types
seefeldb Nov 3, 2025
91fd8b9
minor rename
seefeldb Nov 3, 2025
e2c7b6d
mark tasks as done
seefeldb Nov 3, 2025
16e2226
compile api types
seefeldb Nov 3, 2025
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
28 changes: 13 additions & 15 deletions docs/specs/recipe-construction/rollout-plan.md
Original file line number Diff line number Diff line change
@@ -1,27 +1,25 @@
# Implementation plan

- [ ] Disable ShadowRef/unsafe_ and see what breaks, ideally remove it
- [x] Disable ShadowRef/unsafe_ and see what breaks, ideally remove it (will
merge later as it'll break a few patterns)
- [ ] Update Cell API types to already unify them
- [ ] Create an `AnyCell<>` type with a symbol based brand, with the value be
`Record<string, boolean>`
- [ ] Factor out parts of the cell interfaces along reading, writing, .send
- [x] Create an `BrandedCell<>` type with a symbol based brand, with the value
be `string`
- [x] Factor out parts of the cell interfaces along reading, writing, .send
(for stream-like) and derives (which is currently just .map)
- [ ] Define `OpaqueCell<>`, `Cell<>` and `Stream<>` by using these factored
out parts, combined with the brand set to `{ opaque: true, read: false,
write: false, stream: false }` for `OpaqueRef`, `{ opaque: false, read:
true, write: true, stream: true }` for `Cell`, and `{ opaque: false, read:
false, write: false, stream: true }` for `Stream`.
- [ ] Add `ComparableCell<>` that is all `false` above.
- [ ] Add `ReadonlyCell` and `WriteonlyCell`.
- [ ] Make `OpaqueRef` a variant of `OpaqueCell` with the current proxy
- [x] Define `OpaqueCell<>`, `Cell<>` and `Stream<>` by using these factored
out parts.
- [x] Add `ComparableCell<>`.
- [x] Add `ReadonlyCell` and `WriteonlyCell`.
- [x] Make `OpaqueRef` a variant of `OpaqueCell` with the current proxy
behavior, i.e. each key is an `OpaqueRef` again. That's just for now, until
the AST does a .key transformation under the hood.
- [ ] Update `CellLike` to be based on `AnyCell` but allow nesting.
- [x] Update `CellLike` to be based on `BrandedCell` but allow nesting.
- [ ] `Opaque<T>` accepts `T` or any `CellLike<T>` at any nesting level
- [ ] Simplify most wrap/unwrap types to use `CellLike`. We need
- [ ] "Accept any T where any sub part of T can be wrapped in one or more
`AnyCell`" (for inputs to node factories)
- [ ] "Strip any `AnyCell` from T and then wrap it in OpaqueRef<>" (for
`BrandedCell`" (for inputs to node factories)
- [ ] "Strip any `BrandedCell` from T and then wrap it in OpaqueRef<>" (for
outputs of node factories, where T is the output of the inner function)
- [ ] Make passing the output of the second into the first work. Tricky
because we're doing almost opposite expansions on the type.
Expand Down
Loading