5bbac3e4f7
Audit public API surfaces using reachability analysis from application entry points (Worker, CLI, Dashboard). Symbols not reachable from any application's customization tree are removed from package index.ts files. Source files and internal usage are untouched — only the public export surface is narrowed. Changes by package: - workflow-util: -7 exports (base32 internals, logger config types) - workflow-cas: -12 exports (merkle internals, serialization details) - workflow-execute: -24 exports (engine internals, LLM extract details) - workflow-reactor: -4 exports (reactor config/invocation internals) - workflow-register: -8 exports (redundant protocol re-exports, internal YAML fns) - workflow-runtime: curated re-export subset (stop full protocol re-export) - workflow-util-agent: -5 exports (internal agent helpers) - workflow-agent-cursor: -1 export (validateCursorAgentConfig) - workflow-agent-hermes: -1 export (validateHermesAgentConfig) Note: workflow-protocol index.ts unchanged — downstream packages still import removed symbols via internal paths. Protocol cleanup requires updating workflow-runtime/src/types.ts first (separate PR). Refs #273, #274, #275, #276, #277, #278, #279, #280, #281, #282
@uncaged/workflow-cas
Content-addressable storage implementation, bundle hashing, and Merkle helpers.
What This Package Does
It implements CasStore from @uncaged/workflow-protocol, hashes workflow bundle bytes and strings with XXH64, and builds serializable Merkle nodes for thread/step/content payloads used when persisting execution artifacts.
Key Exports
From src/index.ts:
- CAS:
createCasStore - Hash:
hashString,hashWorkflowBundleBytes - Merkle:
createContentMerkleNode,getContentMerklePayload,parseMerkleNode,putContentMerkleNode,putStepMerkleNode,putThreadMerkleNode,serializeMerkleNode - Types:
CasStore,MerkleNode,MerkleNodeType,StepMerklePayload,ThreadMerklePayload
Dependencies
- Workspace:
@uncaged/workflow-protocol(CasStorecontract),@uncaged/workflow-util - npm:
xxhashjs,yaml
Usage
import { createCasStore, hashWorkflowBundleBytes } from "@uncaged/workflow-cas";
import { getGlobalCasDir } from "@uncaged/workflow-util";
const store = createCasStore(getGlobalCasDir());
const hash = await hashWorkflowBundleBytes(esmJsBytes);