@roackb2/heddle 0.0.8 ā 0.0.9
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/README.md +87 -1
- package/dist/examples/cyberloop-observer.d.ts +3 -0
- package/dist/examples/cyberloop-observer.d.ts.map +1 -0
- package/dist/examples/cyberloop-observer.js +79 -0
- package/dist/examples/cyberloop-observer.js.map +1 -0
- package/dist/examples/host-events.d.ts +15 -0
- package/dist/examples/host-events.d.ts.map +1 -0
- package/dist/examples/host-events.js +233 -0
- package/dist/examples/host-events.js.map +1 -0
- package/dist/examples/programmatic-loop.js +2 -0
- package/dist/examples/programmatic-loop.js.map +1 -1
- package/dist/src/cli/chat/App.d.ts.map +1 -1
- package/dist/src/cli/chat/App.js +48 -0
- package/dist/src/cli/chat/App.js.map +1 -1
- package/dist/src/cli/chat/hooks/useAgentRun.d.ts +9 -0
- package/dist/src/cli/chat/hooks/useAgentRun.d.ts.map +1 -1
- package/dist/src/cli/chat/hooks/useAgentRun.js +34 -2
- package/dist/src/cli/chat/hooks/useAgentRun.js.map +1 -1
- package/dist/src/cli/chat/state/local-commands.d.ts +3 -0
- package/dist/src/cli/chat/state/local-commands.d.ts.map +1 -1
- package/dist/src/cli/chat/state/local-commands.js +21 -0
- package/dist/src/cli/chat/state/local-commands.js.map +1 -1
- package/dist/src/cli/chat/state/storage.d.ts.map +1 -1
- package/dist/src/cli/chat/state/storage.js +2 -0
- package/dist/src/cli/chat/state/storage.js.map +1 -1
- package/dist/src/cli/chat/state/types.d.ts +1 -0
- package/dist/src/cli/chat/state/types.d.ts.map +1 -1
- package/dist/src/cli/chat/submit.d.ts +3 -0
- package/dist/src/cli/chat/submit.d.ts.map +1 -1
- package/dist/src/cli/chat/submit.js +3 -0
- package/dist/src/cli/chat/submit.js.map +1 -1
- package/dist/src/cli/chat/utils/format.d.ts.map +1 -1
- package/dist/src/cli/chat/utils/format.js +6 -0
- package/dist/src/cli/chat/utils/format.js.map +1 -1
- package/dist/src/index.d.ts +4 -0
- package/dist/src/index.d.ts.map +1 -1
- package/dist/src/index.js +3 -0
- package/dist/src/index.js.map +1 -1
- package/dist/src/integrations/cyberloop-kinematics.d.ts +16 -0
- package/dist/src/integrations/cyberloop-kinematics.d.ts.map +1 -0
- package/dist/src/integrations/cyberloop-kinematics.js +77 -0
- package/dist/src/integrations/cyberloop-kinematics.js.map +1 -0
- package/dist/src/integrations/cyberloop.d.ts +88 -0
- package/dist/src/integrations/cyberloop.d.ts.map +1 -0
- package/dist/src/integrations/cyberloop.js +244 -0
- package/dist/src/integrations/cyberloop.js.map +1 -0
- package/dist/src/run-agent.d.ts +3 -1
- package/dist/src/run-agent.d.ts.map +1 -1
- package/dist/src/run-agent.js +10 -0
- package/dist/src/run-agent.js.map +1 -1
- package/dist/src/runtime/agent-loop.d.ts.map +1 -1
- package/dist/src/runtime/agent-loop.js +57 -2
- package/dist/src/runtime/agent-loop.js.map +1 -1
- package/dist/src/runtime/events.d.ts +66 -0
- package/dist/src/runtime/events.d.ts.map +1 -1
- package/dist/src/runtime/events.js +11 -0
- package/dist/src/runtime/events.js.map +1 -1
- package/dist/src/runtime/heartbeat.d.ts.map +1 -1
- package/dist/src/runtime/heartbeat.js +47 -2
- package/dist/src/runtime/heartbeat.js.map +1 -1
- package/dist/src/trace/format.d.ts.map +1 -1
- package/dist/src/trace/format.js +8 -0
- package/dist/src/trace/format.js.map +1 -1
- package/dist/src/types.d.ts +8 -0
- package/dist/src/types.d.ts.map +1 -1
- package/package.json +14 -1
package/README.md
CHANGED
|
@@ -1,11 +1,15 @@
|
|
|
1
1
|
# Heddle
|
|
2
2
|
|
|
3
|
-
Heddle is a terminal coding agent runtime and CLI.
|
|
3
|
+
Heddle is a terminal coding agent runtime and CLI with optional semantic drift detection.
|
|
4
4
|
|
|
5
5
|
It is built to feel like a terminal partner that understands your project, keeps continuity across real work, and becomes more useful over time.
|
|
6
6
|
|
|
7
7
|
It is open source, provider-agnostic, supports OpenAI and Anthropic models, and can build memory across sessions. For agentic-system builders, Heddle also exposes heartbeat primitives for autonomous wake cycles, checkpointing, and long-running background work.
|
|
8
8
|
|
|
9
|
+
Heddle is designed to make live agent runs more observable, not just easier to launch. With optional semantic drift detection, Heddle can show whether an agent appears to be going off track based on its recent trajectory, surface `drift=unknown|low|medium|high` in chat, and write drift annotations into saved traces instead of leaving you to infer that only from token usage and tool calls.
|
|
10
|
+
|
|
11
|
+
If you are interested in the underlying methodology, Heddle's drift telemetry is powered by [CyberLoop on npm](https://www.npmjs.com/package/cyberloop). See the [CyberLoop repository](https://github.com/roackb2/cyberloop) and [paper](https://zenodo.org/records/18138161) for the geometric-control and trajectory-based details.
|
|
12
|
+
|
|
9
13
|
## How Heddle Helps
|
|
10
14
|
|
|
11
15
|
- daily development work in real coding projects
|
|
@@ -17,10 +21,12 @@ It is open source, provider-agnostic, supports OpenAI and Anthropic models, and
|
|
|
17
21
|
|
|
18
22
|
## Advanced Capabilities
|
|
19
23
|
|
|
24
|
+
- optional CyberLoop-powered semantic drift detection in chat and traces with `/drift on`
|
|
20
25
|
- provider-agnostic model support across OpenAI and Anthropic
|
|
21
26
|
- embeddable `runAgentLoop` API for building non-CLI agent hosts
|
|
22
27
|
- `runAgentHeartbeat` for scheduler-driven autonomous wake cycles without chat by default
|
|
23
28
|
- serializable checkpoints for resume, background execution, and hosted workers
|
|
29
|
+
- CyberLoop-compatible observer hooks for host-side runtime instrumentation
|
|
24
30
|
- provider-backed hosted web search through `web_search`
|
|
25
31
|
- local image viewing from referenced file paths through `view_image`
|
|
26
32
|
- inline `@file` mentions that tell the agent which workspace files to inspect first
|
|
@@ -47,6 +53,22 @@ npx @roackb2/heddle
|
|
|
47
53
|
|
|
48
54
|
The installed CLI command remains `heddle`.
|
|
49
55
|
|
|
56
|
+
If you want optional CyberLoop drift telemetry in chat with `/drift on`, or you want to import `cyberloop/advanced` in your own host, install `cyberloop` in the same environment as Heddle:
|
|
57
|
+
|
|
58
|
+
```bash
|
|
59
|
+
npm install -g cyberloop
|
|
60
|
+
# or for project-local usage
|
|
61
|
+
npm install cyberloop
|
|
62
|
+
```
|
|
63
|
+
|
|
64
|
+
The plain `npx @roackb2/heddle` path does not include optional peer dependencies. For one-off drift-enabled usage, install both packages locally or run:
|
|
65
|
+
|
|
66
|
+
```bash
|
|
67
|
+
npx -p @roackb2/heddle -p cyberloop heddle
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
If you are developing inside the Heddle repo itself, `yarn install` also installs `cyberloop` through `devDependencies`, so `yarn chat:dev` can use the published package path without extra setup.
|
|
71
|
+
|
|
50
72
|
## Quick Start
|
|
51
73
|
|
|
52
74
|
1. Set an API key for a supported provider.
|
|
@@ -90,6 +112,8 @@ Heddle currently supports:
|
|
|
90
112
|
- persistent workspace memory notes under `.heddle/memory/`
|
|
91
113
|
- autonomous heartbeat wake cycles through `runAgentHeartbeat`
|
|
92
114
|
- serializable run checkpoints for programmatic hosts and later continuation
|
|
115
|
+
- passive CyberLoop-compatible observation through `createCyberLoopObserver`
|
|
116
|
+
- optional chat-mode CyberLoop semantic drift telemetry with `/drift on`
|
|
93
117
|
- short working-plan support through `update_plan` for substantial multi-step tasks
|
|
94
118
|
- remembered per-project approvals for repeated commands and edits
|
|
95
119
|
- interrupt and resume support for longer-running coding workflows
|
|
@@ -103,6 +127,8 @@ The planning workflow is also intentionally lightweight: Heddle does not force a
|
|
|
103
127
|
|
|
104
128
|
The web-search workflow is provider-backed rather than crawler-backed: OpenAI models use OpenAI-hosted web search, and Anthropic models use Anthropic-hosted web search when available through the selected model/tool path.
|
|
105
129
|
|
|
130
|
+
The CyberLoop workflow is observe-only. When `/drift on` is enabled, Heddle loads real [CyberLoop](https://www.npmjs.com/package/cyberloop) kinematics middleware, embeds runtime frames with OpenAI embeddings, shows `drift=unknown|low|medium|high` in the footer, and writes `cyberloop.annotation` events into saved traces. The toggle is saved on the active chat session, and `/drift` reports the last unavailable reason if the middleware or embeddings fail. Heddle does not calculate semantic drift itself. For the underlying methodology, see the [CyberLoop repository](https://github.com/roackb2/cyberloop) and [paper](https://zenodo.org/records/18138161).
|
|
131
|
+
|
|
106
132
|
## Heartbeat
|
|
107
133
|
|
|
108
134
|
Heddle exposes `runAgentHeartbeat` for autonomous, scheduler-driven agent work.
|
|
@@ -228,6 +254,9 @@ Useful chat commands:
|
|
|
228
254
|
- `/session close <id>`: remove a saved session
|
|
229
255
|
- `/clear`: clear the current transcript
|
|
230
256
|
- `/compact`: compact older session history immediately
|
|
257
|
+
- `/drift`: show CyberLoop semantic drift detection status
|
|
258
|
+
- `/drift on`: enable observe-only CyberLoop kinematics telemetry for chat runs
|
|
259
|
+
- `/drift off`: disable CyberLoop semantic drift detection
|
|
231
260
|
- `!<command>`: run a shell command directly in chat
|
|
232
261
|
|
|
233
262
|
Direct shell in chat:
|
|
@@ -242,6 +271,14 @@ Read-oriented commands stay in inspect mode when possible. Workspace-changing or
|
|
|
242
271
|
|
|
243
272
|
Chat state is stored under `.heddle/`, including saved sessions, traces, approvals, and memory notes. The footer context indicator is an estimate of total request input against the active model's context window, not only the raw chat history length.
|
|
244
273
|
|
|
274
|
+
For local development against the sibling CyberLoop repo, run chat with the middleware module path:
|
|
275
|
+
|
|
276
|
+
```bash
|
|
277
|
+
HEDDLE_CYBERLOOP_ADVANCED_MODULE=/Users/roackb2/Studio/projects/CyberLoop/src/advanced/kinematics-middleware.ts yarn chat:dev:openai
|
|
278
|
+
```
|
|
279
|
+
|
|
280
|
+
Then use `/drift on` before asking Heddle to do real work. For installed usage, install the optional `cyberloop` peer dependency in the same environment as Heddle so it can dynamically import `cyberloop/advanced`.
|
|
281
|
+
|
|
245
282
|
## CLI Usage
|
|
246
283
|
|
|
247
284
|
Supported commands:
|
|
@@ -361,6 +398,43 @@ The loop emits structured events for:
|
|
|
361
398
|
|
|
362
399
|
The returned result also includes a serializable `state` object with the model, provider, workspace root, outcome, transcript, trace, usage, and timestamps. This is the boundary future hosts can persist for background execution, dashboards, middleware, or heartbeat-style continuation.
|
|
363
400
|
|
|
401
|
+
For passive semantic-drift experiments, `createCyberLoopObserver` can consume Heddle's event stream and run CyberLoop-compatible middleware over normalized runtime frames:
|
|
402
|
+
|
|
403
|
+
```ts
|
|
404
|
+
import {
|
|
405
|
+
createCyberLoopObserver,
|
|
406
|
+
createRuntimeFrameEmbedder,
|
|
407
|
+
runAgentLoop,
|
|
408
|
+
} from '@roackb2/heddle'
|
|
409
|
+
import { kinematicsMiddleware } from 'cyberloop/advanced'
|
|
410
|
+
|
|
411
|
+
const frameEmbedder = createRuntimeFrameEmbedder({
|
|
412
|
+
async embedText(text) {
|
|
413
|
+
return embedWithYourProvider(text)
|
|
414
|
+
},
|
|
415
|
+
})
|
|
416
|
+
|
|
417
|
+
const observer = createCyberLoopObserver({
|
|
418
|
+
middleware: [
|
|
419
|
+
kinematicsMiddleware({
|
|
420
|
+
embedder: frameEmbedder,
|
|
421
|
+
goalEmbedding: await embedWithYourProvider('Investigate this repo'),
|
|
422
|
+
}),
|
|
423
|
+
],
|
|
424
|
+
onAnnotation(annotation) {
|
|
425
|
+
console.log(annotation.driftLevel, annotation.frame.kind)
|
|
426
|
+
},
|
|
427
|
+
})
|
|
428
|
+
|
|
429
|
+
await runAgentLoop({
|
|
430
|
+
goal: 'Investigate this repo',
|
|
431
|
+
onEvent: observer.handleEvent,
|
|
432
|
+
})
|
|
433
|
+
await observer.flush()
|
|
434
|
+
```
|
|
435
|
+
|
|
436
|
+
This is intentionally observe-only. Heddle still owns execution, tools, approvals, and checkpoints; CyberLoop-style middleware can annotate the run without steering or halting it. Heddle does not calculate semantic drift itself; actual drift signals should come from CyberLoop metadata such as kinematics, manifold, or Grassmannian channels.
|
|
437
|
+
|
|
364
438
|
For autonomous background work, `runAgentHeartbeat` runs one wake cycle from a durable task and optional checkpoint:
|
|
365
439
|
|
|
366
440
|
```ts
|
|
@@ -391,6 +465,12 @@ Install as a dependency with:
|
|
|
391
465
|
npm install @roackb2/heddle
|
|
392
466
|
```
|
|
393
467
|
|
|
468
|
+
If you want CyberLoop middleware examples or chat drift telemetry, install the optional peer dependency in the same project:
|
|
469
|
+
|
|
470
|
+
```bash
|
|
471
|
+
npm install cyberloop
|
|
472
|
+
```
|
|
473
|
+
|
|
394
474
|
For a small real-LLM example of embedding the loop with a custom host tool:
|
|
395
475
|
|
|
396
476
|
```bash
|
|
@@ -405,6 +485,12 @@ export ANTHROPIC_API_KEY=your_key_here
|
|
|
405
485
|
HEDDLE_EXAMPLE_MODEL=claude-3-5-haiku-latest yarn example:programmatic
|
|
406
486
|
```
|
|
407
487
|
|
|
488
|
+
For a small no-network observer example:
|
|
489
|
+
|
|
490
|
+
```bash
|
|
491
|
+
yarn example:cyberloop-observer
|
|
492
|
+
```
|
|
493
|
+
|
|
408
494
|
The public API lives in [src/index.ts](/Users/roackb2/Studio/projects/ProjectHeddle/heddle/src/index.ts).
|
|
409
495
|
|
|
410
496
|
## Design Direction
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cyberloop-observer.d.ts","sourceRoot":"","sources":["../../examples/cyberloop-observer.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,79 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
import { createCyberLoopObserver, runAgentLoop, } from '../src/index.js';
|
|
3
|
+
const createMockLlm = () => {
|
|
4
|
+
let turn = 0;
|
|
5
|
+
return {
|
|
6
|
+
info: {
|
|
7
|
+
provider: 'openai',
|
|
8
|
+
model: 'gpt-demo',
|
|
9
|
+
capabilities: {
|
|
10
|
+
toolCalls: true,
|
|
11
|
+
systemMessages: true,
|
|
12
|
+
reasoningSummaries: false,
|
|
13
|
+
parallelToolCalls: true,
|
|
14
|
+
},
|
|
15
|
+
},
|
|
16
|
+
async chat() {
|
|
17
|
+
turn++;
|
|
18
|
+
if (turn === 1) {
|
|
19
|
+
return {
|
|
20
|
+
content: 'I will inspect the project before answering.',
|
|
21
|
+
toolCalls: [{ id: 'call-1', tool: 'inspect', input: { target: 'README.md' } }],
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
return { content: 'The project is a terminal coding agent runtime.' };
|
|
25
|
+
},
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
const inspectTool = {
|
|
29
|
+
name: 'inspect',
|
|
30
|
+
description: 'Demo inspection tool.',
|
|
31
|
+
parameters: {
|
|
32
|
+
type: 'object',
|
|
33
|
+
properties: { target: { type: 'string' } },
|
|
34
|
+
required: ['target'],
|
|
35
|
+
},
|
|
36
|
+
async execute(input) {
|
|
37
|
+
return { ok: true, output: `inspected ${JSON.stringify(input)}` };
|
|
38
|
+
},
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* This is intentionally only CyberLoop-compatible. In a real integration,
|
|
42
|
+
* callers can pass actual middleware from `cyberloop` or `cyberloop/advanced`.
|
|
43
|
+
*/
|
|
44
|
+
const demoDriftMiddleware = {
|
|
45
|
+
name: 'demo-drift',
|
|
46
|
+
async beforeStep(ctx) {
|
|
47
|
+
const isToolFailure = ctx.state.kind === 'tool' && ctx.state.ok === false;
|
|
48
|
+
return {
|
|
49
|
+
...ctx,
|
|
50
|
+
metadata: {
|
|
51
|
+
...ctx.metadata,
|
|
52
|
+
kinematics: {
|
|
53
|
+
isStable: !isToolFailure,
|
|
54
|
+
correctionMagnitude: isToolFailure ? 1 : 0,
|
|
55
|
+
},
|
|
56
|
+
},
|
|
57
|
+
};
|
|
58
|
+
},
|
|
59
|
+
};
|
|
60
|
+
async function main() {
|
|
61
|
+
const observer = createCyberLoopObserver({
|
|
62
|
+
middleware: [demoDriftMiddleware],
|
|
63
|
+
onAnnotation(annotation) {
|
|
64
|
+
console.log(`[cyberloop] step=${annotation.step} kind=${annotation.frame.kind} drift=${annotation.driftLevel}`);
|
|
65
|
+
},
|
|
66
|
+
});
|
|
67
|
+
const result = await runAgentLoop({
|
|
68
|
+
goal: 'What does this project do?',
|
|
69
|
+
llm: createMockLlm(),
|
|
70
|
+
tools: [inspectTool],
|
|
71
|
+
includeDefaultTools: false,
|
|
72
|
+
maxSteps: 3,
|
|
73
|
+
onEvent: observer.handleEvent,
|
|
74
|
+
});
|
|
75
|
+
await observer.flush();
|
|
76
|
+
console.log(`\nFinal answer:\n${result.summary}`);
|
|
77
|
+
}
|
|
78
|
+
await main();
|
|
79
|
+
//# sourceMappingURL=cyberloop-observer.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"cyberloop-observer.js","sourceRoot":"","sources":["../../examples/cyberloop-observer.ts"],"names":[],"mappings":";AACA,OAAO,EACL,uBAAuB,EACvB,YAAY,GAMb,MAAM,iBAAiB,CAAC;AAEzB,MAAM,aAAa,GAAG,GAAe,EAAE;IACrC,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,OAAO;QACL,IAAI,EAAE;YACJ,QAAQ,EAAE,QAAQ;YAClB,KAAK,EAAE,UAAU;YACjB,YAAY,EAAE;gBACZ,SAAS,EAAE,IAAI;gBACf,cAAc,EAAE,IAAI;gBACpB,kBAAkB,EAAE,KAAK;gBACzB,iBAAiB,EAAE,IAAI;aACxB;SACF;QACD,KAAK,CAAC,IAAI;YACR,IAAI,EAAE,CAAC;YACP,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,OAAO;oBACL,OAAO,EAAE,8CAA8C;oBACvD,SAAS,EAAE,CAAC,EAAE,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,CAAC;iBAC/E,CAAC;YACJ,CAAC;YACD,OAAO,EAAE,OAAO,EAAE,iDAAiD,EAAE,CAAC;QACxE,CAAC;KACF,CAAC;AACJ,CAAC,CAAC;AAEF,MAAM,WAAW,GAAmB;IAClC,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,uBAAuB;IACpC,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE,EAAE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE;QAC1C,QAAQ,EAAE,CAAC,QAAQ,CAAC;KACrB;IACD,KAAK,CAAC,OAAO,CAAC,KAAK;QACjB,OAAO,EAAE,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,aAAa,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC;IACpE,CAAC;CACF,CAAC;AAEF;;;GAGG;AACH,MAAM,mBAAmB,GAAsD;IAC7E,IAAI,EAAE,YAAY;IAClB,KAAK,CAAC,UAAU,CAAC,GAAG;QAClB,MAAM,aAAa,GAAG,GAAG,CAAC,KAAK,CAAC,IAAI,KAAK,MAAM,IAAI,GAAG,CAAC,KAAK,CAAC,EAAE,KAAK,KAAK,CAAC;QAC1E,OAAO;YACL,GAAG,GAAG;YACN,QAAQ,EAAE;gBACR,GAAG,GAAG,CAAC,QAAQ;gBACf,UAAU,EAAE;oBACV,QAAQ,EAAE,CAAC,aAAa;oBACxB,mBAAmB,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;iBAC3C;aACF;SACF,CAAC;IACJ,CAAC;CACF,CAAC;AAEF,KAAK,UAAU,IAAI;IACjB,MAAM,QAAQ,GAAG,uBAAuB,CAAC;QACvC,UAAU,EAAE,CAAC,mBAAmB,CAAC;QACjC,YAAY,CAAC,UAAU;YACrB,OAAO,CAAC,GAAG,CAAC,oBAAoB,UAAU,CAAC,IAAI,SAAS,UAAU,CAAC,KAAK,CAAC,IAAI,UAAU,UAAU,CAAC,UAAU,EAAE,CAAC,CAAC;QAClH,CAAC;KACF,CAAC,CAAC;IAEH,MAAM,MAAM,GAAG,MAAM,YAAY,CAAC;QAChC,IAAI,EAAE,4BAA4B;QAClC,GAAG,EAAE,aAAa,EAAE;QACpB,KAAK,EAAE,CAAC,WAAW,CAAC;QACpB,mBAAmB,EAAE,KAAK;QAC1B,QAAQ,EAAE,CAAC;QACX,OAAO,EAAE,QAAQ,CAAC,WAAW;KAC9B,CAAC,CAAC;IACH,MAAM,QAAQ,CAAC,KAAK,EAAE,CAAC;IAEvB,OAAO,CAAC,GAAG,CAAC,oBAAoB,MAAM,CAAC,OAAO,EAAE,CAAC,CAAC;AACpD,CAAC;AAED,MAAM,IAAI,EAAE,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Host Events Example
|
|
4
|
+
*
|
|
5
|
+
* Demonstrates how to consume Heddle's structured event stream for:
|
|
6
|
+
* - Real-time progress monitoring
|
|
7
|
+
* - Tool execution tracking
|
|
8
|
+
* - Checkpoint persistence
|
|
9
|
+
* - Escalation routing (for CyberLoop/Lucid integration)
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* HEDDLE_EXAMPLE_MODEL=gpt-5.1-codex-mini npx tsx examples/host-events.ts
|
|
13
|
+
*/
|
|
14
|
+
export {};
|
|
15
|
+
//# sourceMappingURL=host-events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-events.d.ts","sourceRoot":"","sources":["../../examples/host-events.ts"],"names":[],"mappings":";AACA;;;;;;;;;;;GAWG"}
|
|
@@ -0,0 +1,233 @@
|
|
|
1
|
+
#!/usr/bin/env node
|
|
2
|
+
/**
|
|
3
|
+
* Host Events Example
|
|
4
|
+
*
|
|
5
|
+
* Demonstrates how to consume Heddle's structured event stream for:
|
|
6
|
+
* - Real-time progress monitoring
|
|
7
|
+
* - Tool execution tracking
|
|
8
|
+
* - Checkpoint persistence
|
|
9
|
+
* - Escalation routing (for CyberLoop/Lucid integration)
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* HEDDLE_EXAMPLE_MODEL=gpt-5.1-codex-mini npx tsx examples/host-events.ts
|
|
13
|
+
*/
|
|
14
|
+
import { runAgentLoop, runAgentHeartbeat } from '../src/index.js';
|
|
15
|
+
// ---------------------------------------------------------------------------
|
|
16
|
+
// Mock LLM for demo purposes (replace with real LLM in production)
|
|
17
|
+
// ---------------------------------------------------------------------------
|
|
18
|
+
const createMockLlm = (scenario) => {
|
|
19
|
+
let turn = 0;
|
|
20
|
+
return {
|
|
21
|
+
info: {
|
|
22
|
+
provider: 'openai',
|
|
23
|
+
model: 'gpt-demo',
|
|
24
|
+
capabilities: {
|
|
25
|
+
toolCalls: true,
|
|
26
|
+
systemMessages: true,
|
|
27
|
+
reasoningSummaries: false,
|
|
28
|
+
parallelToolCalls: true,
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
async chat(messages) {
|
|
32
|
+
turn++;
|
|
33
|
+
if (scenario === 'success') {
|
|
34
|
+
return { content: `Demo response turn ${turn}` };
|
|
35
|
+
}
|
|
36
|
+
if (scenario === 'tool-use' && turn === 1) {
|
|
37
|
+
return {
|
|
38
|
+
content: 'Using echo tool.',
|
|
39
|
+
toolCalls: [{ id: `call-${turn}`, tool: 'echo', input: { message: 'hello' } }],
|
|
40
|
+
};
|
|
41
|
+
}
|
|
42
|
+
if (scenario === 'escalate') {
|
|
43
|
+
return {
|
|
44
|
+
content: 'Blocked by policy and need human input.\n\nHEARTBEAT_DECISION: escalate',
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
return { content: `Turn ${turn} complete.` };
|
|
48
|
+
},
|
|
49
|
+
};
|
|
50
|
+
};
|
|
51
|
+
// ---------------------------------------------------------------------------
|
|
52
|
+
// Example tools
|
|
53
|
+
// ---------------------------------------------------------------------------
|
|
54
|
+
const echoTool = {
|
|
55
|
+
name: 'echo',
|
|
56
|
+
description: 'Echoes input back',
|
|
57
|
+
parameters: {
|
|
58
|
+
type: 'object',
|
|
59
|
+
properties: { message: { type: 'string' } },
|
|
60
|
+
required: ['message'],
|
|
61
|
+
},
|
|
62
|
+
async execute(input) {
|
|
63
|
+
return { ok: true, output: input };
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
// ---------------------------------------------------------------------------
|
|
67
|
+
// Structured event logger - demonstrates host-facing event consumption
|
|
68
|
+
// ---------------------------------------------------------------------------
|
|
69
|
+
class StructuredEventLogger {
|
|
70
|
+
runId = null;
|
|
71
|
+
events = [];
|
|
72
|
+
onEvent(event) {
|
|
73
|
+
this.events.push(event);
|
|
74
|
+
// Capture runId from first event for correlation
|
|
75
|
+
if (!this.runId && 'runId' in event) {
|
|
76
|
+
this.runId = event.runId;
|
|
77
|
+
console.log(`\nš Run started: ${this.runId}`);
|
|
78
|
+
console.log('='.repeat(60));
|
|
79
|
+
}
|
|
80
|
+
switch (event.type) {
|
|
81
|
+
case 'loop.started':
|
|
82
|
+
console.log(`\nš Loop started`);
|
|
83
|
+
console.log(` Goal: ${event.goal}`);
|
|
84
|
+
console.log(` Model: ${event.model} (${event.provider})`);
|
|
85
|
+
if (event.resumedFromCheckpoint) {
|
|
86
|
+
console.log(` Resumed from: ${event.resumedFromCheckpoint}`);
|
|
87
|
+
}
|
|
88
|
+
break;
|
|
89
|
+
case 'loop.resumed':
|
|
90
|
+
console.log(`\nš Resuming from checkpoint: ${event.fromCheckpoint}`);
|
|
91
|
+
console.log(` Prior trace events: ${event.priorTraceEvents}`);
|
|
92
|
+
break;
|
|
93
|
+
case 'assistant.stream':
|
|
94
|
+
// Debounce stream events for cleaner output
|
|
95
|
+
if (event.done) {
|
|
96
|
+
console.log(`\nš¬ Assistant [step ${event.step}]: "${event.text.slice(0, 60)}..."`);
|
|
97
|
+
}
|
|
98
|
+
break;
|
|
99
|
+
case 'tool.calling':
|
|
100
|
+
console.log(`\nš§ Tool calling [step ${event.step}]: ${event.tool}`);
|
|
101
|
+
console.log(` ToolCall ID: ${event.toolCallId}`);
|
|
102
|
+
console.log(` Requires approval: ${event.requiresApproval}`);
|
|
103
|
+
break;
|
|
104
|
+
case 'tool.completed':
|
|
105
|
+
console.log(`\nā
Tool completed [step ${event.step}]: ${event.tool}`);
|
|
106
|
+
console.log(` Duration: ${event.durationMs}ms`);
|
|
107
|
+
console.log(` Result: ${event.result.ok ? 'success' : 'failed'}`);
|
|
108
|
+
if (!event.result.ok && event.result.error) {
|
|
109
|
+
console.log(` Error: ${event.result.error}`);
|
|
110
|
+
}
|
|
111
|
+
break;
|
|
112
|
+
case 'trace':
|
|
113
|
+
// Trace events are verbose - log only important ones
|
|
114
|
+
if (event.event.type === 'run.finished') {
|
|
115
|
+
console.log(`\nš Trace: run finished (${event.event.outcome})`);
|
|
116
|
+
}
|
|
117
|
+
break;
|
|
118
|
+
case 'checkpoint.saved':
|
|
119
|
+
console.log(`\nš¾ Checkpoint saved [step ${event.step}]`);
|
|
120
|
+
console.log(` Checkpoint run: ${event.checkpoint.runId}`);
|
|
121
|
+
console.log(` Created at: ${event.checkpoint.createdAt}`);
|
|
122
|
+
break;
|
|
123
|
+
case 'heartbeat.decision':
|
|
124
|
+
console.log(`\nš Heartbeat decision: ${event.decision}`);
|
|
125
|
+
console.log(` Outcome: ${event.outcome}`);
|
|
126
|
+
console.log(` Summary: ${event.summary.slice(0, 80)}...`);
|
|
127
|
+
break;
|
|
128
|
+
case 'escalation.required':
|
|
129
|
+
console.log(`\nšØ ESCALATION REQUIRED [step ${event.step}]`);
|
|
130
|
+
console.log(` Task: ${event.task}`);
|
|
131
|
+
console.log(` Outcome: ${event.outcome}`);
|
|
132
|
+
console.log(` Summary: ${event.summary.slice(0, 100)}...`);
|
|
133
|
+
break;
|
|
134
|
+
case 'loop.finished':
|
|
135
|
+
console.log(`\n⨠Loop finished`);
|
|
136
|
+
console.log(` Outcome: ${event.outcome}`);
|
|
137
|
+
console.log(` Summary: ${event.summary.slice(0, 80)}...`);
|
|
138
|
+
console.log(` Total steps: ${event.state.trace.length}`);
|
|
139
|
+
console.log(` Usage: ${JSON.stringify(event.state.usage)}`);
|
|
140
|
+
console.log('\n' + '='.repeat(60));
|
|
141
|
+
break;
|
|
142
|
+
}
|
|
143
|
+
}
|
|
144
|
+
getStats() {
|
|
145
|
+
return {
|
|
146
|
+
totalEvents: this.events.length,
|
|
147
|
+
toolCalls: this.events.filter((e) => e.type === 'tool.calling').length,
|
|
148
|
+
checkpoints: this.events.filter((e) => e.type === 'checkpoint.saved').length,
|
|
149
|
+
escalations: this.events.filter((e) => e.type === 'escalation.required').length,
|
|
150
|
+
};
|
|
151
|
+
}
|
|
152
|
+
}
|
|
153
|
+
// ---------------------------------------------------------------------------
|
|
154
|
+
// Example: Basic run with event logging
|
|
155
|
+
// ---------------------------------------------------------------------------
|
|
156
|
+
async function exampleBasicRun() {
|
|
157
|
+
console.log('\n' + '#'.repeat(60));
|
|
158
|
+
console.log('# Example 1: Basic Run with Event Logging');
|
|
159
|
+
console.log('#'.repeat(60));
|
|
160
|
+
const logger = new StructuredEventLogger();
|
|
161
|
+
await runAgentLoop({
|
|
162
|
+
goal: 'Simple demo task',
|
|
163
|
+
llm: createMockLlm('success'),
|
|
164
|
+
tools: [],
|
|
165
|
+
includeDefaultTools: false,
|
|
166
|
+
maxSteps: 2,
|
|
167
|
+
onEvent: (event) => logger.onEvent(event),
|
|
168
|
+
});
|
|
169
|
+
console.log('\nš Stats:', logger.getStats());
|
|
170
|
+
}
|
|
171
|
+
// ---------------------------------------------------------------------------
|
|
172
|
+
// Example: Tool execution tracking
|
|
173
|
+
// ---------------------------------------------------------------------------
|
|
174
|
+
async function exampleToolTracking() {
|
|
175
|
+
console.log('\n' + '#'.repeat(60));
|
|
176
|
+
console.log('# Example 2: Tool Execution Tracking');
|
|
177
|
+
console.log('#'.repeat(60));
|
|
178
|
+
const logger = new StructuredEventLogger();
|
|
179
|
+
await runAgentLoop({
|
|
180
|
+
goal: 'Use echo tool',
|
|
181
|
+
llm: createMockLlm('tool-use'),
|
|
182
|
+
tools: [echoTool],
|
|
183
|
+
includeDefaultTools: false,
|
|
184
|
+
maxSteps: 2,
|
|
185
|
+
onEvent: (event) => logger.onEvent(event),
|
|
186
|
+
});
|
|
187
|
+
console.log('\nš Stats:', logger.getStats());
|
|
188
|
+
}
|
|
189
|
+
// ---------------------------------------------------------------------------
|
|
190
|
+
// Example: Heartbeat with escalation
|
|
191
|
+
// ---------------------------------------------------------------------------
|
|
192
|
+
async function exampleHeartbeatEscalation() {
|
|
193
|
+
console.log('\n' + '#'.repeat(60));
|
|
194
|
+
console.log('# Example 3: Heartbeat with Escalation Routing');
|
|
195
|
+
console.log('#'.repeat(60));
|
|
196
|
+
const logger = new StructuredEventLogger();
|
|
197
|
+
const result = await runAgentHeartbeat({
|
|
198
|
+
task: 'Background maintenance task',
|
|
199
|
+
llm: createMockLlm('escalate'),
|
|
200
|
+
tools: [],
|
|
201
|
+
includeDefaultTools: false,
|
|
202
|
+
maxSteps: 2,
|
|
203
|
+
onEvent: (event) => logger.onEvent(event),
|
|
204
|
+
});
|
|
205
|
+
console.log('\nš Stats:', logger.getStats());
|
|
206
|
+
console.log('\nš Heartbeat Result:');
|
|
207
|
+
console.log(` Decision: ${result.decision}`);
|
|
208
|
+
console.log(` Checkpoint ID: ${result.checkpoint.runId}`);
|
|
209
|
+
// Demonstrate how Lucid/CyberLoop would route escalation
|
|
210
|
+
if (result.decision === 'escalate') {
|
|
211
|
+
console.log('\nšÆ Integration example:');
|
|
212
|
+
console.log(' - Lucid would route to operator channel');
|
|
213
|
+
console.log(' - CyberLoop would annotate drift in middleware');
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
// ---------------------------------------------------------------------------
|
|
217
|
+
// Main
|
|
218
|
+
// ---------------------------------------------------------------------------
|
|
219
|
+
async function main() {
|
|
220
|
+
console.log('Heddle Host Events Example');
|
|
221
|
+
console.log('Shows structured event consumption for external integration\n');
|
|
222
|
+
await exampleBasicRun();
|
|
223
|
+
await exampleToolTracking();
|
|
224
|
+
await exampleHeartbeatEscalation();
|
|
225
|
+
console.log('\n' + '#'.repeat(60));
|
|
226
|
+
console.log('# All examples completed successfully');
|
|
227
|
+
console.log('#'.repeat(60));
|
|
228
|
+
}
|
|
229
|
+
main().catch((error) => {
|
|
230
|
+
console.error('Error:', error);
|
|
231
|
+
process.exit(1);
|
|
232
|
+
});
|
|
233
|
+
//# sourceMappingURL=host-events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"host-events.js","sourceRoot":"","sources":["../../examples/host-events.ts"],"names":[],"mappings":"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"}
|
|
@@ -102,6 +102,8 @@ function formatTraceEvent(event) {
|
|
|
102
102
|
return `[trace] tool.call step=${event.step} tool=${event.call.tool} input=${JSON.stringify(event.call.input)}`;
|
|
103
103
|
case 'tool.result':
|
|
104
104
|
return `[trace] tool.result step=${event.step} tool=${event.tool} ok=${event.result.ok} output=${JSON.stringify(formatUnknown(event.result.output ?? event.result.error ?? ''))}`;
|
|
105
|
+
case 'cyberloop.annotation':
|
|
106
|
+
return `[trace] cyberloop.annotation step=${event.step} frame=${event.frameKind} drift=${event.driftLevel}`;
|
|
105
107
|
case 'run.finished':
|
|
106
108
|
return `[trace] run.finished step=${event.step} outcome=${event.outcome} summary=${JSON.stringify(shorten(event.summary))}`;
|
|
107
109
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"programmatic-loop.js","sourceRoot":"","sources":["../../examples/programmatic-loop.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"programmatic-loop.js","sourceRoot":"","sources":["../../examples/programmatic-loop.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../../src/cli/chat/App.tsx"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"App.d.ts","sourceRoot":"","sources":["../../../../src/cli/chat/App.tsx"],"names":[],"mappings":"AAuBA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAI5D,wBAAgB,GAAG,CAAC,EAAE,OAAO,EAAE,EAAE;IAAE,OAAO,EAAE,iBAAiB,CAAA;CAAE,2CAygB9D"}
|