參考 · Public API
套件進入點
Heddle 把 Customization Depth 與 Hosting Assumption 分開。先從 Curated SDK 開始,只有當產品真的擁有該層時,才加入 Hosted、Transport、Remote Client 或 Advanced Surface。
客製化深度
所有深度 — 從 Curated SDK 到 Deep Core Building Block
託管深度
Node.js 20+ Runtime,加上可獨立安裝且 Browser-safe 的 Client Package
文件狀態
權威參考
前置假設
- 你的 Node Host 使用 ESM 與 Node.js 20 或更新版本。
- Browser Application 安裝 @roackb2/heddle-remote,而不是 Bundle Node Runtime。
- 你希望用明確的 Import Boundary,讓 Hosting 與 Transport Assumption 在 Code Review 中保持可見。
- 穩定的 Public Entrypoint 邊界、Exported Contract、Runtime Implementation,以及下方記載的選用假設層。
- Root SDK 的 Curated Progressive Disclosure,以及 Remote Package 的 Browser-safe Protocol Correctness。
- 只選擇並安裝需要的 Entrypoint、在 Application Root 組合它們,並固定相容的 Package Version。
- Framework、Identity、Authorization、Public Schema、Persistence Adapter、Deployment Topology、Transport Policy 與 UI Architecture。
分別安裝 Runtime 與 Remote Client
Node Runtime Package 需要 Node.js 20 或更新版本:
npm install @roackb2/heddle只有在 Application 要消費 Hosted Run、但不嵌入 Node Agent Runtime 時,才獨立安裝 Remote Package:
npm install @roackb2/heddle-remote兩個 Package 都使用 ESM。請從文件記載的 Package 與 Subpath Entrypoint Import,不要深入 dist 或 Internal src Path。
Entrypoint 對照表
| Entrypoint | 環境 | 負責內容 | 不會替產品選擇 |
|---|---|---|---|
@roackb2/heddle | Node.js 20+ | Curated Product-host SDK:Quickstart、Conversation Engine、Tool/Extension、Output、Lifecycle、Approval、Session 與 Artifact Port | Server Framework、Transport、Auth、UI |
@roackb2/heddle/hosted | 長駐 Node Host | Process-local Run Identity、有序 Event、Replay、Cancellation、Approval、Terminal Settlement | HTTP、Route、Durable Broker、Multi-process Routing |
@roackb2/heddle/hosted/http-sse | Node HTTP Server | Replay Cursor Parsing、正確 SSE Framing、Backpressure 與 Disconnect Cleanup | Route Registration、Auth、CORS、Rate Limit、Public Error |
@roackb2/heddle/advanced | Node.js 20+ | Curated SDK 加上較低階 Adapter、Tool、Trace、Memory、Agent Loop、Heartbeat、Awareness、Integration 與 Utility | Remote Hosting 或 Transport Assumption |
@roackb2/heddle-remote | Browser 或 Transport Client | Runtime-validated Run Envelope、JSON Safety、Cursor、Duplicate/Gap/Terminal Handling 與 Retry Calculation | Transport、Timer、Auth、Product Schema、UI |
@roackb2/heddle-remote/http-sse | Browser-safe Fetch/SSE Client | Conventional REST Run Resource、Response Validation、Incremental SSE Parsing 與 Identity Check | React、Auth Policy、Retry Timing、Cursor Persistence |
@roackb2/heddle:Curated Product-host SDK
預設 Entrypoint 依照五層 Progressive-disclosure Ladder 組織。
1. 啟動 Conversation
主要 Export:
runQuickstartConversationCli;resolveQuickstartConversationCliDefaults;QuickstartConversationCliRunnerService;createConversationEngine;- Built-in Default Model Constant。
當 Heddle 可以擁有簡單的 Terminal Prompt Loop 時,使用 Quickstart Runner。產品要擁有 Presentation、Session Browser、Approval 或 Lifecycle 時,使用 Conversation Engine。
核心契約
Root 會 Export RunInput、RunResult、RunFailure、ModelRunFailureCode、ToolDefinition、ToolCall、ToolResult、TraceEvent 與 StopReason 等常用 Type。
這些是 Host-facing Contract。請從 Package Root Import,不要重複定義 Shape。
2. 加入能力
主要 Export 包含:
defineHostExtension與ConversationEngineHostExtensionService;prepareMcpHostExtension、prepareMcpHostExtensionCatalog與 MCP Option/Result Type;ToolRegistry、ToolExecutionService、ToolBundleComposer與RuntimeToolService;- Artifact 與 Agent Skills Toolkit/Service。
較舊的 Top-level Engine tools Option 已 Deprecated;新的 Product Host 應透過 hostExtensions.tools 組合 Product Tool。
3. 調整 Input 與 Output
主要 Export 包含:
createConversationTextHost與ConversationTextHostService;ConversationActivity以及 Handler/Correlation Type;HeddleEventType與HeddleEventTypeValue;ConversationTurnResultSummary與ConversationTurnToolResult;ToolActivitySummarizer。
使用這些 Contract 建立自訂 Terminal、API、Telemetry 或 UI Adapter,不必 Import Internal Runtime Module。
4. 擁有 Lifecycle 與 Approval
Root 會 Export Conversation Engine Type、Session 與 Turn Service Contract、Turn Input/Result、為相容性保留的 Run-service Contract、Approval Service 與 Policy、Remembered Project Rule、Runtime Tool-selection Profile,以及給已擁有低階 Session Path 的 Host 使用的 EngineConversationTurnService。
新的 Host 應優先使用 createConversationEngine。Hosted Process Code 則應從明確的 /hosted Entrypoint Import ConversationRunService,即使 Root 仍保留 Compatibility Export。
5. 提供 Storage
主要 Export 包含:
ArtifactRepository、ArtifactService、FileArtifactRepository與 Artifact Record Type;ChatSessionRepository、FileChatSessionRepository、Revision/Conflict Error、Catalog Input/Result 與ChatSession;RuntimeCredentialService與 Credential-source Type。
Session 與 Artifact Repository 可以獨立替換。Trace 與 Memory 目前仍透過 stateRoot 使用 Path-oriented Storage。
@roackb2/heddle/hosted:Process-local Active Run
當 Request 與 Subscription 的生命週期不同時,從這裡 Import ConversationRunService,以及 Run Address、Handle、Replay、Stream Item、Approval、Projection 與 Error Contract。
import {
ConversationRunService,
ConversationRunConflictError,
ConversationRunReplayUnavailableError,
} from '@roackb2/heddle/hosted'這個 Subpath 不會增加 Transport,也不是 Durable Broker;它只是把「長駐 Process」的假設明確放在 Import 中。
@roackb2/heddle/hosted/http-sse:Node SSE 正確性
Export:
parseConversationRunSseReplayCursor;streamConversationRunSse;ConversationRunSseReplayCursorError;- SSE Event、Protocol、Cursor Input 與 Streaming Option Type。
這些 Helper 針對 Node Request/Response Primitive,因此 Express 與其他 Node Framework 都能使用,不會讓 Express 進入 Heddle Core。
@roackb2/heddle-remote:Browser-safe Run Protocol
主要 Export:
ConversationRunProtocolCodec與ConversationRunProtocolValidationError;ConversationRunConsumerService;ConversationRunSequenceGapError與ConversationRunTerminalViolationError;- Reference、Envelope、Event、Subscription、Acceptance、Retry 與 Codec Type;
ConversationRunReferenceSchema與ConversationRunReplayCursorSchema。
Codec 接受同步 Standard Schema Validator。Zod、Valibot、ArkType 與其他相容 Validator 都能定義 Host 的 Public Activity 與 Result Projection。這個 Package 刻意排除 Heddle 的 Node Runtime、Model Provider、Server、CLI 與 Web Control Plane。
@roackb2/heddle-remote/http-sse:Conventional REST/SSE Client
Export ConversationRunHttpSseClient、ConversationRunHttpSseClientError,以及相關 Option/Input/Error-payload Type。
當 Host API 遵循 Conventional Start、Event Subscription 與 Cancellation Resource Shape 時使用。Client 負責 URL/Header Composition、Response Schema Validation、Incremental Event Parsing、Reader Cleanup,以及 Envelope/SSE Identity Agreement。產品提供 Auth Header、Public Schema、Abort Lifecycle、Retry Timing 與 UI Behavior。
@roackb2/heddle/advanced:Deep Core Customization
Advanced Entrypoint 會重新 Export Curated Root,並加入較低階 Building Block:
- LLM Adapter、Provider Registry、OpenAI-compatible Discovery 與 Model Catalog;
- 個別 Coding、Shell、Browser-research 與 External-context Tool;
- Trace Recording、Review Parsing、Observability 與 System-prompt Construction;
- Memory Catalog、Maintenance、Note、Visibility 與 Knowledge Tool;
- Awareness Provider 與 Coding-workspace Snapshot;
- 較低階的 Agent Loop 與 Checkpoint;
- Heartbeat Runner、Storage、Scheduler 與 Presenter;
- Semantic-drift Observer 等選用 Integration;
- Budget、Logger 與 Runtime Error。
只有當產品必須替換或組合較低階 Runtime Mechanic 時,才使用這個 Surface。Import /advanced 不會自動加入 /hosted、HTTP/SSE 或 Remote Package。
選擇規則
- Node Product Host 從
@roackb2/heddle開始。 - Work 會超過單一 Caller 壽命,或需要可定址 Replay、Cancellation、Approval Resolution 時,才加入
/hosted。 - Node HTTP/SSE Adapter 才加入
/hosted/http-sse。 - Remote Consumer 才安裝
@roackb2/heddle-remote。 - API 真正使用 Conventional REST/SSE Contract 時,才加入 Remote Package 的
/http-sseSubpath。 - Curated SDK Export 無法表達所需 Runtime Customization 時,才使用
/advanced。 - 絕不 Import Internal Build Path;需要的 Contract 若尚未公開,應提出 SDK API Request,而不是讓產品耦合 Implementation File。
版本與驗證
當 Node Runtime 與 Remote Package 交換 Canonical Run Envelope 時,兩者應維持相容的 Release Line,並在 Public Protocol Boundary 驗證雙向資料。
更新版本後,請驗證:
- 可以重新開啟並延續持久 Session;
- Public Activity 與 Result Schema 仍接受預期 Field,並移除其餘 Field;
- 從已知 Sequence 重新連線不會重複或跳過 Event;
- Cancel 與 Error Settlement 維持 Terminal;
- Browser Bundle 不會包含 Node Runtime Package;
- 選定的 Subpath 存在於 Installed Package 的
exportsMap。