# TensorCode TypeScript examples
These are runnable programs for the TypeScript port of
[TensorCode](https://tensorcode.dev) (documentation:
). They import the package through its public
entry points (`tensorcode`, `tensorcode/nn`, `tensorcode/ops/*`,
`tensorcode/tools`, `tensorcode/training`, `tensorcode/integrations`). Those
entry points resolve to the local build, so build first:
```bash
npm install # builds dist/ through the prepare script
node examples/investigatorQuickstart.ts # Node >= 22.18 runs TypeScript directly
```
On older Node versions, run an example with `npx tsx examples/.ts`. To
typecheck all of them, run `npx tsc -p examples/tsconfig.json`.
## Offline tours
These need no network access or model downloads. CI runs them on Node 24.
| Example | Shows |
|---|---|
| [`investigatorQuickstart.ts`](investigatorQuickstart.ts) | The README's 30-second example: an `Investigator` built from configuration, then `Trainer.fromTool` with AdamW, `capture` with explicit provenance, persisted experience files, `fit`, `savePretrained`, `saveCheckpoint`, `fromPretrained` and prediction. |
| [`ownedVectorLifecycle.ts`](ownedVectorLifecycle.ts) | Composed vector operations (`VocabularyEncoder` → `Classify`): tracing and supervision, `latentCodecs()` experience, `Trainer.fromOps`, per-operation `savePretrained` / `fromPretrained` with identical logits, and resuming from the checkpoint. |
| [`supportTriage.ts`](supportTriage.ts) | Structured text operations (`Classify`, `Decide`, `Score`) over an explicit provider, several questions at once with `text.ask`, and a traced message composition. Offline, a deterministic keyword provider stands in for a model. Set `OPENAI_BASE_URL` and `OPENAI_MODEL` to call an OpenAI-compatible endpoint instead. With `--input tickets.jsonl --policy policy.txt --label ...` it is Python's `support_triage.py` CLI. |
| [`traceAndTrain.ts`](traceAndTrain.ts) | A traced `ModuleOperation`, explicit `supervise` targets, `trace.save` / `loadExperience`, `Trainer.fromOps` with an Adam factory, `saveCheckpoint`, and resuming in a **fresh process**. The resumed run restores weights, optimizer, modes, steps, progress and the random generator, then continues exactly. |
| [`pretrainedLifecycle.ts`](pretrainedLifecycle.ts) | Your own owned model (extending `PretrainedModule` from `tensorcode/tools`) with a declared objective: `Trainer.fromTool`, `capture`, `fit`, and `savePretrained` / `fromPretrained` (`tensorcode_config.json` + `model.safetensors` + model card). `--push ` publishes with `pushToHub`, only when explicitly asked (token from `HF_TOKEN` or `hf auth login`). |
Tiny authored cases demonstrate mechanisms. They are not evaluations of model
quality.
## Ports of the Python examples
Each program below is the TypeScript port of the Python example of the same
name in [`python/examples`](../../python/examples), with the same command-line
options (spelled `--kebab-case`), inputs, outputs and artifact files. Seeded
runs reproduce the Python numbers: the port uses PyTorch-compatible random
streams and Python's `random` algorithm (`PythonRandom`) where the Python
example shuffles, and experience files, checkpoints and manifests written by
the two are interchangeable (often byte-identical). Pass `--help`-style flags
as in the Python docstrings; every file's header shows a complete command.
HTTP examples call your own OpenAI-compatible endpoint synchronously, as the
Python examples do; selected file contents are sent to that endpoint.
| Example (Python source) | Input and output |
|---|---|
| [`pretrainedLatentLifecycle.ts`](pretrainedLatentLifecycle.ts) (`pretrained_latent_lifecycle.py`) | Pinned FLAN-T5 vectors + four authored targets → trained linear bridge, durable experience, checkpoint and restored weights. Downloads `google/flan-t5-small` unless cached |
| [`outputEncodingLearning.ts`](outputEncodingLearning.ts) (`output_encoding_learning.py`) | Reviewed `{text, target}` JSONL → trained OUTPUT_ENCODING readout and decoder bridge, reloaded with an exact loss check |
| [`hypothesisLearning.ts`](hypothesisLearning.ts) (`hypothesis_learning.py`) | `collect` / `train` / `predict` stages: reviewed evidence sequences → revisable interpretations and saved weights |
| [`planLearning.ts`](planLearning.ts) (`plan_learning.py`) | `collect` / `train` / `predict` stages: observed plan outcomes → learned candidate rankings (never executes a plan) |
| [`learnActionOutcomes.ts`](learnActionOutcomes.ts) (`learn_action_outcomes.py`) | Executed simulated transitions → sourced outcome feedback, trained Planner, trajectories, session and exact restore checks (offline) |
| [`banking77Restart.ts`](banking77Restart.ts) (`banking77_restart.py`) | Official Banking77 CSVs → persisted traces, training and held-out evaluation, each stage in its own process |
| [`trainChatbot.ts`](trainChatbot.ts) (`train_chatbot.py`) | Reviewed input/target JSONL → trained Chatbot, held-out report, ablations and model card |
| [`pretrainedChatbot.ts`](pretrainedChatbot.ts) (`pretrained_chatbot.py`) | Local or Hub Chatbot → one turn (`--prompt`) or an interactive session, with saved sessions |
| [`trainCognitiveTools.ts`](trainCognitiveTools.ts) (`train_cognitive_tools.py`) | Pinned HotpotQA support annotations → Investigator and Planner document rankers, workspace ablation and lexical baseline |
| [`evaluateCognition.ts`](evaluateCognition.ts) (`evaluate_cognition.py`) | Cognitive Chatbot + evidence cases → answers, abstentions, omission/replacement controls, episodic retrieval; optional component assembly |
| [`evaluateTypedDecisions.ts`](evaluateTypedDecisions.ts) (`evaluate_typed_decisions.py`) | Foundation + Banking77 rows / reviewed candidates → generated-JSON vs likelihood decoding validity, accuracy and calibration |
| [`trainScene.ts`](trainScene.ts) (`train_scene.py`) | Images + candidate descriptions → trained scene ranker with image/workspace ablations |
| [`evaluateSceneLanguage.ts`](evaluateSceneLanguage.ts) (`evaluate_scene_language.py`) | Images + spatial yes/no captions → judgments under real, blank and shuffled images (SmolVLM-256M: several seconds per interpretation on a multi-core CPU) |
| [`documentSearch.ts`](documentSearch.ts) (`document_search.py`) | Text/Markdown directory + question → answer with validated citations of retrieved excerpts |
| [`researchAssistant.ts`](researchAssistant.ts) (`research_assistant.py`) | Local documents + question → bounded `actionLoop` of search/read/finish actions with receipts |
| [`imageInspection.ts`](imageInspection.ts) (`image_inspection.py`) | One image + question → answer from a Transformers.js `LocalModel` or an OpenAI-compatible endpoint |
| [`localMultimodal.ts`](localMultimodal.ts) (`local_multimodal.py`) | One image + a supplied local vision-language model → recorded answers and structured-output failures |
`trainCognitiveTools.ts` reads the pinned HotpotQA rows through the Hugging
Face dataset viewer (it first checks that the viewer serves the pinned
revision) instead of downloading and parsing the Parquet shards, and records
the shards' SHA-256 from the Hub; the rows and results equal the Python run.
Not ported: the examples that require the CUDA training host
(`compare_cognitive_verifiers.py`, `train_hypotheses.py`,
`train_realization.py`, `train_verifier.py`, `prepare_response_quality.py`,
`train_response_quality.py`), and the optional ViT/Stable Diffusion image path
of `pretrained_latent_lifecycle.py` (`--image-input`).
## Interoperability with Python
- Experience files and standalone `tensorcode.checkpoint` files are
byte-compatible with the Python package when the bound operations have the
same configuration, because the fingerprints are identical.
- Directory checkpoints (`training.json` + `tensors-.safetensors`) move
between the languages in both directions. Model, optimizer, module modes,
step count, progress and the PyTorch (`torch_rng`) and CPython
(`python_rng`) random states are restored, so a resumed run draws the same
random numbers as it would in Python.
- Model artifacts saved by either implementation load in the other, as long as
both define the same class identity (`static qualifiedName`) and
architecture. Every built-in tool and owned operation does.