@kynetic-ai/spec 0.9.1 → 0.11.0
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 +2 -1
- package/dist/acp/client.d.ts +6 -1
- package/dist/acp/client.d.ts.map +1 -1
- package/dist/acp/client.js +7 -2
- package/dist/acp/client.js.map +1 -1
- package/dist/acp/framing.d.ts +12 -1
- package/dist/acp/framing.d.ts.map +1 -1
- package/dist/acp/framing.js +27 -4
- package/dist/acp/framing.js.map +1 -1
- package/dist/agent-runtime/dispatch.d.ts +292 -0
- package/dist/agent-runtime/dispatch.d.ts.map +1 -0
- package/dist/agent-runtime/dispatch.js +860 -0
- package/dist/agent-runtime/dispatch.js.map +1 -0
- package/dist/agent-runtime/index.d.ts +11 -0
- package/dist/agent-runtime/index.d.ts.map +1 -0
- package/dist/agent-runtime/index.js +11 -0
- package/dist/agent-runtime/index.js.map +1 -0
- package/dist/agent-runtime/invocation.d.ts +86 -0
- package/dist/agent-runtime/invocation.d.ts.map +1 -0
- package/dist/agent-runtime/invocation.js +442 -0
- package/dist/agent-runtime/invocation.js.map +1 -0
- package/dist/agent-runtime/prompts.d.ts +50 -0
- package/dist/agent-runtime/prompts.d.ts.map +1 -0
- package/dist/agent-runtime/prompts.js +108 -0
- package/dist/agent-runtime/prompts.js.map +1 -0
- package/dist/agents/spawner.d.ts.map +1 -1
- package/dist/agents/spawner.js +60 -4
- package/dist/agents/spawner.js.map +1 -1
- package/dist/cli/batch-exec.d.ts.map +1 -1
- package/dist/cli/batch-exec.js +140 -62
- package/dist/cli/batch-exec.js.map +1 -1
- package/dist/cli/batch-write-buffer.d.ts +141 -0
- package/dist/cli/batch-write-buffer.d.ts.map +1 -0
- package/dist/cli/batch-write-buffer.js +400 -0
- package/dist/cli/batch-write-buffer.js.map +1 -0
- package/dist/cli/commands/agent.d.ts +20 -0
- package/dist/cli/commands/agent.d.ts.map +1 -0
- package/dist/cli/commands/agent.js +831 -0
- package/dist/cli/commands/agent.js.map +1 -0
- package/dist/cli/commands/inbox.d.ts.map +1 -1
- package/dist/cli/commands/inbox.js +46 -22
- package/dist/cli/commands/inbox.js.map +1 -1
- package/dist/cli/commands/index.d.ts +1 -0
- package/dist/cli/commands/index.d.ts.map +1 -1
- package/dist/cli/commands/index.js +1 -0
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/item.d.ts.map +1 -1
- package/dist/cli/commands/item.js +22 -16
- package/dist/cli/commands/item.js.map +1 -1
- package/dist/cli/commands/log.js +1 -1
- package/dist/cli/commands/log.js.map +1 -1
- package/dist/cli/commands/meta.d.ts.map +1 -1
- package/dist/cli/commands/meta.js +168 -6
- package/dist/cli/commands/meta.js.map +1 -1
- package/dist/cli/commands/module.d.ts.map +1 -1
- package/dist/cli/commands/module.js +2 -1
- package/dist/cli/commands/module.js.map +1 -1
- package/dist/cli/commands/plan-import.js +19 -3
- package/dist/cli/commands/plan-import.js.map +1 -1
- package/dist/cli/commands/plan.d.ts.map +1 -1
- package/dist/cli/commands/plan.js +87 -43
- package/dist/cli/commands/plan.js.map +1 -1
- package/dist/cli/commands/ralph.d.ts +5 -56
- package/dist/cli/commands/ralph.d.ts.map +1 -1
- package/dist/cli/commands/ralph.js +52 -1502
- package/dist/cli/commands/ralph.js.map +1 -1
- package/dist/cli/commands/search.d.ts.map +1 -1
- package/dist/cli/commands/search.js +22 -13
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/serve.d.ts.map +1 -1
- package/dist/cli/commands/serve.js +70 -11
- package/dist/cli/commands/serve.js.map +1 -1
- package/dist/cli/commands/session/checkpoint.d.ts.map +1 -1
- package/dist/cli/commands/session/checkpoint.js +7 -2
- package/dist/cli/commands/session/checkpoint.js.map +1 -1
- package/dist/cli/commands/session/commands.d.ts.map +1 -1
- package/dist/cli/commands/session/commands.js +15 -0
- package/dist/cli/commands/session/commands.js.map +1 -1
- package/dist/cli/commands/session/context.d.ts.map +1 -1
- package/dist/cli/commands/session/context.js +10 -5
- package/dist/cli/commands/session/context.js.map +1 -1
- package/dist/cli/commands/session/log.d.ts +1 -0
- package/dist/cli/commands/session/log.d.ts.map +1 -1
- package/dist/cli/commands/session/log.js +124 -8
- package/dist/cli/commands/session/log.js.map +1 -1
- package/dist/cli/commands/session/stale-close.d.ts +17 -0
- package/dist/cli/commands/session/stale-close.d.ts.map +1 -0
- package/dist/cli/commands/session/stale-close.js +378 -0
- package/dist/cli/commands/session/stale-close.js.map +1 -0
- package/dist/cli/commands/setup.d.ts.map +1 -1
- package/dist/cli/commands/setup.js +95 -0
- package/dist/cli/commands/setup.js.map +1 -1
- package/dist/cli/commands/skill-crud.d.ts.map +1 -1
- package/dist/cli/commands/skill-crud.js +4 -3
- package/dist/cli/commands/skill-crud.js.map +1 -1
- package/dist/cli/commands/skill-diff.d.ts.map +1 -1
- package/dist/cli/commands/skill-diff.js +15 -0
- package/dist/cli/commands/skill-diff.js.map +1 -1
- package/dist/cli/commands/skill-install.d.ts.map +1 -1
- package/dist/cli/commands/skill-install.js +50 -18
- package/dist/cli/commands/skill-install.js.map +1 -1
- package/dist/cli/commands/task.d.ts.map +1 -1
- package/dist/cli/commands/task.js +536 -310
- package/dist/cli/commands/task.js.map +1 -1
- package/dist/cli/commands/tasks.js +1 -1
- package/dist/cli/commands/tasks.js.map +1 -1
- package/dist/cli/commands/triage.d.ts.map +1 -1
- package/dist/cli/commands/triage.js +37 -13
- package/dist/cli/commands/triage.js.map +1 -1
- package/dist/cli/commands/validate.d.ts.map +1 -1
- package/dist/cli/commands/validate.js +65 -25
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/help/content.d.ts.map +1 -1
- package/dist/cli/help/content.js +5 -0
- package/dist/cli/help/content.js.map +1 -1
- package/dist/cli/index.d.ts.map +1 -1
- package/dist/cli/index.js +2 -1
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/output.d.ts.map +1 -1
- package/dist/cli/output.js +5 -1
- package/dist/cli/output.js.map +1 -1
- package/dist/daemon/project-context.ts +22 -0
- package/dist/daemon/routes/agent-dispatch.ts +279 -0
- package/dist/daemon/routes/items.ts +22 -0
- package/dist/daemon/routes/meta.ts +141 -1
- package/dist/daemon/routes/plans.ts +147 -0
- package/dist/daemon/routes/sessions.ts +180 -0
- package/dist/daemon/routes/tasks.ts +198 -0
- package/dist/daemon/routes/validation.ts +1 -1
- package/dist/daemon/server.ts +77 -21
- package/dist/daemon/websocket/handler.ts +67 -6
- package/dist/daemon/websocket/lifecycle.ts +19 -0
- package/dist/daemon/websocket/pubsub.ts +74 -3
- package/dist/export/html.d.ts.map +1 -1
- package/dist/export/html.js +5 -2
- package/dist/export/html.js.map +1 -1
- package/dist/export/triage.d.ts +1 -1
- package/dist/export/triage.d.ts.map +1 -1
- package/dist/export/triage.js +5 -3
- package/dist/export/triage.js.map +1 -1
- package/dist/parser/alignment.d.ts.map +1 -1
- package/dist/parser/alignment.js +10 -5
- package/dist/parser/alignment.js.map +1 -1
- package/dist/parser/assess.js +1 -1
- package/dist/parser/assess.js.map +1 -1
- package/dist/parser/config.d.ts +6 -6
- package/dist/parser/meta.d.ts.map +1 -1
- package/dist/parser/meta.js +9 -8
- package/dist/parser/meta.js.map +1 -1
- package/dist/parser/plan-document.d.ts +12 -12
- package/dist/parser/plans.d.ts +7 -0
- package/dist/parser/plans.d.ts.map +1 -1
- package/dist/parser/plans.js +100 -15
- package/dist/parser/plans.js.map +1 -1
- package/dist/parser/refs.d.ts +5 -0
- package/dist/parser/refs.d.ts.map +1 -1
- package/dist/parser/refs.js +17 -12
- package/dist/parser/refs.js.map +1 -1
- package/dist/parser/shadow.d.ts +1 -1
- package/dist/parser/shadow.d.ts.map +1 -1
- package/dist/parser/shadow.js +71 -4
- package/dist/parser/shadow.js.map +1 -1
- package/dist/parser/skill-render.d.ts.map +1 -1
- package/dist/parser/skill-render.js +6 -3
- package/dist/parser/skill-render.js.map +1 -1
- package/dist/parser/validate.d.ts.map +1 -1
- package/dist/parser/validate.js +35 -76
- package/dist/parser/validate.js.map +1 -1
- package/dist/parser/yaml.d.ts +24 -5
- package/dist/parser/yaml.d.ts.map +1 -1
- package/dist/parser/yaml.js +224 -64
- package/dist/parser/yaml.js.map +1 -1
- package/dist/schema/meta.d.ts +457 -119
- package/dist/schema/meta.d.ts.map +1 -1
- package/dist/schema/meta.js +56 -0
- package/dist/schema/meta.js.map +1 -1
- package/dist/schema/plan.d.ts +22 -22
- package/dist/schema/spec.d.ts +39 -39
- package/dist/schema/task.d.ts +43 -32
- package/dist/schema/task.d.ts.map +1 -1
- package/dist/schema/task.js +5 -0
- package/dist/schema/task.js.map +1 -1
- package/dist/sessions/store.d.ts +126 -0
- package/dist/sessions/store.d.ts.map +1 -1
- package/dist/sessions/store.js +440 -22
- package/dist/sessions/store.js.map +1 -1
- package/dist/sessions/types.d.ts +75 -17
- package/dist/sessions/types.d.ts.map +1 -1
- package/dist/sessions/types.js +51 -1
- package/dist/sessions/types.js.map +1 -1
- package/dist/triage/actions.d.ts +1 -0
- package/dist/triage/actions.d.ts.map +1 -1
- package/dist/triage/actions.js +34 -7
- package/dist/triage/actions.js.map +1 -1
- package/dist/utils/commit.js +1 -1
- package/dist/utils/commit.js.map +1 -1
- package/dist/web-ui/_app/env.js +1 -0
- package/dist/web-ui/_app/immutable/assets/0.BJaYkGW2.css +1 -0
- package/dist/web-ui/_app/immutable/assets/9.SzGLxi4x.css +1 -0
- package/dist/web-ui/_app/immutable/assets/select-trigger.CV-KWLNP.css +1 -0
- package/dist/web-ui/_app/immutable/chunks/-lc0BifF.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/62JVKtnb.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/8RBjHMN1.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B5LJFxqa.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B5wTVqxm.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B6VSmczZ.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/B8a0xDxR.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BEOQc37C.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BHtYorjv.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BJ0JX3ea.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BMuCqDX8.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BP352uRn.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BUZujXJ2.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BVA9Exy-.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BWET-efb.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BXkNecpt.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BYzrIfX8.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BkOJ8DkV.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BpuwufMc.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BwMO4RrG.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/BysXJlZb.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/C076q4JN.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/C33JaVbg.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CGtqifKp.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CHDZZ7OG.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CPPfDSei.js +5 -0
- package/dist/web-ui/_app/immutable/chunks/CUir3f4J.js +60 -0
- package/dist/web-ui/_app/immutable/chunks/Cncwi6fQ.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CrCIbn0C.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/CwELQvbx.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/D3vxvonu.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/D6TVmR9T.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/D7LTux4W.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/D82RulSH.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/D9QNBZM2.js +2 -0
- package/dist/web-ui/_app/immutable/chunks/DAMmvwn4.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DAh4Wfku.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DAx07bEQ.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DBYE9jOd.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DOno4cA2.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DQA8NZIH.js +2 -0
- package/dist/web-ui/_app/immutable/chunks/DRfPm2bo.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DhQhksaB.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DjG7s6hm.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DjcCz-PU.js +2 -0
- package/dist/web-ui/_app/immutable/chunks/DkltRNvh.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DlaTnPKL.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DvA-KON-.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DxCk-KHc.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/DzO4hlg9.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/Eo4gF7ih.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/ExCq5swK.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/T3zZGv51.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/XZumBYeP.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/_ySfNjkF.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/iEtR5cV6.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/k_Qegko0.js +1 -0
- package/dist/web-ui/_app/immutable/chunks/pE6cYWlS.js +1 -0
- package/dist/web-ui/_app/immutable/entry/app.Cgu6uKeS.js +2 -0
- package/dist/web-ui/_app/immutable/entry/start.9XifnLoB.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/0.DISwcKSK.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/1.Cx2Ufqp1.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/10.C3z8ijXL.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/11.DZdIjZmM.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/12.FsIGfAOa.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/13.DZoFwagf.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/14.DaIzDKbQ.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/15.BYyt4XWF.js +2 -0
- package/dist/web-ui/_app/immutable/nodes/16.CQkSqpOe.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/2.Bkf_j2UJ.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/3.kaMCurJG.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/4.BSsFPTHG.js +2 -0
- package/dist/web-ui/_app/immutable/nodes/5.CpPlcCEZ.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/6.BN4FqQmY.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/7.9kBYIZik.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/8.BuijtZ6B.js +1 -0
- package/dist/web-ui/_app/immutable/nodes/9.C-Weba8R.js +1 -0
- package/dist/web-ui/_app/version.json +1 -0
- package/dist/web-ui/index.html +39 -0
- package/dist/web-ui/robots.txt +3 -0
- package/package.json +4 -2
- package/plugin/.claude-plugin/marketplace.json +1 -1
- package/plugin/.claude-plugin/plugin.json +1 -1
- package/plugin/plugins/kspec/skills/task-work/SKILL.md +25 -2
- package/templates/agents-sections/06-ralph-loop.md +64 -11
- package/templates/skills/task-work/SKILL.md +25 -2
- package/dist/ralph/cli-renderer.d.ts +0 -27
- package/dist/ralph/cli-renderer.d.ts.map +0 -1
- package/dist/ralph/cli-renderer.js +0 -250
- package/dist/ralph/cli-renderer.js.map +0 -1
- package/dist/ralph/events.d.ts +0 -65
- package/dist/ralph/events.d.ts.map +0 -1
- package/dist/ralph/events.js +0 -600
- package/dist/ralph/events.js.map +0 -1
- package/dist/ralph/index.d.ts +0 -11
- package/dist/ralph/index.d.ts.map +0 -1
- package/dist/ralph/index.js +0 -16
- package/dist/ralph/index.js.map +0 -1
- package/dist/ralph/loop-errors.d.ts +0 -83
- package/dist/ralph/loop-errors.d.ts.map +0 -1
- package/dist/ralph/loop-errors.js +0 -150
- package/dist/ralph/loop-errors.js.map +0 -1
- package/dist/ralph/subagent.d.ts +0 -127
- package/dist/ralph/subagent.d.ts.map +0 -1
- package/dist/ralph/subagent.js +0 -268
- package/dist/ralph/subagent.js.map +0 -1
- package/dist/ralph/wrap-up.d.ts +0 -127
- package/dist/ralph/wrap-up.d.ts.map +0 -1
- package/dist/ralph/wrap-up.js +0 -271
- package/dist/ralph/wrap-up.js.map +0 -1
|
@@ -54,6 +54,7 @@ Use CLI commands to find information. **Do NOT search `.kspec/` YAML files manua
|
|
|
54
54
|
| List by type | `kspec item list --type feature` |
|
|
55
55
|
| All traits | `kspec trait list` |
|
|
56
56
|
| Task's linked spec | `kspec task get @ref` → read `spec_ref` field |
|
|
57
|
+
| Task's linked plan | `kspec task get @ref` → if `plan_ref` is non-null, run `kspec plan get @plan-ref` |
|
|
57
58
|
|
|
58
59
|
**Key pattern:** When `kspec item get` output shows "Inherited from @trait-slug", run `kspec item get @trait-slug` to see the trait's ACs. One command — do not grep YAML files.
|
|
59
60
|
|
|
@@ -86,9 +87,30 @@ If already implemented: verify tests pass, AC coverage exists, then `kspec task
|
|
|
86
87
|
### 3. Start Task
|
|
87
88
|
|
|
88
89
|
```bash
|
|
90
|
+
# Check task links first
|
|
91
|
+
kspec task get @ref
|
|
92
|
+
|
|
93
|
+
# If plan_ref is non-null, load implementation context from the plan
|
|
94
|
+
kspec plan get @plan-ref
|
|
95
|
+
|
|
96
|
+
# Then start work
|
|
89
97
|
kspec task start @ref
|
|
90
98
|
```
|
|
91
99
|
|
|
100
|
+
### 3.5 Branch Isolation (Required Before Edits)
|
|
101
|
+
|
|
102
|
+
Immediately after `kspec task start` and before any file edits, create or switch to a dedicated branch for that task. Do not keep implementing on a branch that is tied to another pending-review task.
|
|
103
|
+
|
|
104
|
+
```bash
|
|
105
|
+
# Example naming from task intent/slug
|
|
106
|
+
TASK_BRANCH="fix/<task-slug>"
|
|
107
|
+
|
|
108
|
+
# Create the branch if missing, otherwise switch to it
|
|
109
|
+
git checkout -b "$TASK_BRANCH" 2>/dev/null || git checkout "$TASK_BRANCH"
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
This keeps each task's commits scoped to its own PR and prevents cross-task contamination.
|
|
113
|
+
|
|
92
114
|
### 4. Work and Note
|
|
93
115
|
|
|
94
116
|
Read all ACs (own + trait) before implementing:
|
|
@@ -259,6 +281,7 @@ kspec tasks ready --eligible # Only automation-eligible tasks
|
|
|
259
281
|
### Key Behaviors
|
|
260
282
|
|
|
261
283
|
- Verify work is needed before starting (prevent duplicates)
|
|
284
|
+
- Create/switch to a dedicated task branch before making code edits
|
|
262
285
|
- Decisions auto-resolve without prompts
|
|
263
286
|
- PR review handled externally (not this workflow)
|
|
264
287
|
- All actions are logged and auditable
|
|
@@ -281,12 +304,12 @@ After blocking:
|
|
|
281
304
|
kspec task block @ref --reason "Reason..."
|
|
282
305
|
kspec tasks ready --eligible # Check for other work
|
|
283
306
|
# If tasks exist: work on the next one
|
|
284
|
-
# If empty: stop responding (
|
|
307
|
+
# If empty: stop responding (agent dispatch exits automatically)
|
|
285
308
|
```
|
|
286
309
|
|
|
287
310
|
### Turn Completion
|
|
288
311
|
|
|
289
|
-
After creating a PR, **stop responding**.
|
|
312
|
+
After creating a PR, **stop responding**. The agent dispatch engine continues automatically — it checks for remaining eligible tasks and exits when none remain.
|
|
290
313
|
|
|
291
314
|
**Do NOT call `end-loop`** after creating a PR. That ends ALL remaining iterations. It's a rare escape hatch for when work is stalling across multiple iterations.
|
|
292
315
|
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ralph CLI Renderer
|
|
3
|
-
*
|
|
4
|
-
* Renders RalphEvents to the terminal with chalk colors and formatting.
|
|
5
|
-
* This is the CLI-specific implementation; other renderers (TUI) could
|
|
6
|
-
* consume the same event stream with different display logic.
|
|
7
|
-
*/
|
|
8
|
-
import type { RalphEvent } from "./events.js";
|
|
9
|
-
export interface RalphRenderer {
|
|
10
|
-
/**
|
|
11
|
-
* Render an event to the output.
|
|
12
|
-
*/
|
|
13
|
-
render(event: RalphEvent): void;
|
|
14
|
-
/**
|
|
15
|
-
* Called when a new section starts (e.g., iteration boundary).
|
|
16
|
-
*/
|
|
17
|
-
newSection?(label: string): void;
|
|
18
|
-
}
|
|
19
|
-
export declare function createCliRenderer(): RalphRenderer;
|
|
20
|
-
/**
|
|
21
|
-
* Create a renderer that prefixes all output with a label.
|
|
22
|
-
* Used to distinguish subagent output from main agent output.
|
|
23
|
-
*
|
|
24
|
-
* AC: @ralph-subagent-spawning ac-11
|
|
25
|
-
*/
|
|
26
|
-
export declare function createPrefixedRenderer(prefix: string): RalphRenderer;
|
|
27
|
-
//# sourceMappingURL=cli-renderer.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-renderer.d.ts","sourceRoot":"","sources":["../../src/ralph/cli-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAGH,OAAO,KAAK,EAGV,UAAU,EAKX,MAAM,aAAa,CAAC;AAMrB,MAAM,WAAW,aAAa;IAC5B;;OAEG;IACH,MAAM,CAAC,KAAK,EAAE,UAAU,GAAG,IAAI,CAAC;IAEhC;;OAEG;IACH,UAAU,CAAC,CAAC,KAAK,EAAE,MAAM,GAAG,IAAI,CAAC;CAClC;AAgCD,wBAAgB,iBAAiB,IAAI,aAAa,CAgDjD;AA8JD;;;;;GAKG;AACH,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,MAAM,GAAG,aAAa,CAqEpE"}
|
|
@@ -1,250 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ralph CLI Renderer
|
|
3
|
-
*
|
|
4
|
-
* Renders RalphEvents to the terminal with chalk colors and formatting.
|
|
5
|
-
* This is the CLI-specific implementation; other renderers (TUI) could
|
|
6
|
-
* consume the same event stream with different display logic.
|
|
7
|
-
*/
|
|
8
|
-
import chalk from "chalk";
|
|
9
|
-
// ============================================================================
|
|
10
|
-
// Timestamp Formatting
|
|
11
|
-
// ============================================================================
|
|
12
|
-
/**
|
|
13
|
-
* Format milliseconds as relative timestamp.
|
|
14
|
-
* Examples: +0s, +5s, +1m, +2m30s
|
|
15
|
-
*/
|
|
16
|
-
function formatTimestamp(ms) {
|
|
17
|
-
const seconds = Math.floor(ms / 1000);
|
|
18
|
-
if (seconds < 60) {
|
|
19
|
-
return `+${seconds}s`;
|
|
20
|
-
}
|
|
21
|
-
const minutes = Math.floor(seconds / 60);
|
|
22
|
-
const remainingSeconds = seconds % 60;
|
|
23
|
-
if (remainingSeconds === 0) {
|
|
24
|
-
return `+${minutes}m`;
|
|
25
|
-
}
|
|
26
|
-
return `+${minutes}m${remainingSeconds}s`;
|
|
27
|
-
}
|
|
28
|
-
export function createCliRenderer() {
|
|
29
|
-
const state = {
|
|
30
|
-
lastEventType: null,
|
|
31
|
-
isStreaming: false,
|
|
32
|
-
};
|
|
33
|
-
function render(event) {
|
|
34
|
-
const ts = chalk.gray(`[${formatTimestamp(event.timestamp)}]`);
|
|
35
|
-
const data = event.data;
|
|
36
|
-
switch (data.kind) {
|
|
37
|
-
case "agent_message":
|
|
38
|
-
renderAgentMessage(ts, data, state);
|
|
39
|
-
break;
|
|
40
|
-
case "agent_thought":
|
|
41
|
-
renderAgentThought(ts, data, state);
|
|
42
|
-
break;
|
|
43
|
-
case "tool_start":
|
|
44
|
-
renderToolStart(ts, data, state);
|
|
45
|
-
break;
|
|
46
|
-
case "tool_update":
|
|
47
|
-
renderToolUpdate(ts, data);
|
|
48
|
-
break;
|
|
49
|
-
case "tool_result":
|
|
50
|
-
renderToolResult(ts, data, state);
|
|
51
|
-
break;
|
|
52
|
-
case "status":
|
|
53
|
-
renderStatus(ts, data);
|
|
54
|
-
break;
|
|
55
|
-
}
|
|
56
|
-
}
|
|
57
|
-
function newSection(label) {
|
|
58
|
-
// End any streaming state
|
|
59
|
-
if (state.isStreaming) {
|
|
60
|
-
process.stdout.write("\n");
|
|
61
|
-
state.isStreaming = false;
|
|
62
|
-
}
|
|
63
|
-
state.lastEventType = null;
|
|
64
|
-
console.log("");
|
|
65
|
-
console.log(chalk.cyan(`${"─".repeat(60)}`));
|
|
66
|
-
console.log(chalk.cyan.bold(label));
|
|
67
|
-
console.log(chalk.cyan(`${"─".repeat(60)}`));
|
|
68
|
-
console.log("");
|
|
69
|
-
}
|
|
70
|
-
return { render, newSection };
|
|
71
|
-
}
|
|
72
|
-
// ============================================================================
|
|
73
|
-
// Event Renderers
|
|
74
|
-
// ============================================================================
|
|
75
|
-
function renderAgentMessage(ts, data, state) {
|
|
76
|
-
// New section header if switching from non-message
|
|
77
|
-
if (state.lastEventType !== "agent_message" && !state.isStreaming) {
|
|
78
|
-
if (state.lastEventType !== null) {
|
|
79
|
-
console.log(""); // Spacing
|
|
80
|
-
}
|
|
81
|
-
console.log(`${ts} ${chalk.blue("--- Agent ---")}`);
|
|
82
|
-
}
|
|
83
|
-
// Stream content directly
|
|
84
|
-
if (data.isStreaming) {
|
|
85
|
-
process.stdout.write(data.content);
|
|
86
|
-
state.isStreaming = true;
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
// Final content - ensure newline
|
|
90
|
-
if (state.isStreaming) {
|
|
91
|
-
process.stdout.write("\n");
|
|
92
|
-
}
|
|
93
|
-
state.isStreaming = false;
|
|
94
|
-
}
|
|
95
|
-
state.lastEventType = "agent_message";
|
|
96
|
-
}
|
|
97
|
-
function renderAgentThought(ts, data, state) {
|
|
98
|
-
// New section header if switching from non-thought
|
|
99
|
-
if (state.lastEventType !== "agent_thought" && !state.isStreaming) {
|
|
100
|
-
if (state.lastEventType !== null) {
|
|
101
|
-
console.log("");
|
|
102
|
-
}
|
|
103
|
-
console.log(`${ts} ${chalk.magenta("--- Thinking ---")}`);
|
|
104
|
-
}
|
|
105
|
-
// Stream content in dim/gray
|
|
106
|
-
if (data.isStreaming) {
|
|
107
|
-
process.stdout.write(chalk.dim(data.content));
|
|
108
|
-
state.isStreaming = true;
|
|
109
|
-
}
|
|
110
|
-
else {
|
|
111
|
-
if (state.isStreaming) {
|
|
112
|
-
process.stdout.write("\n");
|
|
113
|
-
}
|
|
114
|
-
state.isStreaming = false;
|
|
115
|
-
}
|
|
116
|
-
state.lastEventType = "agent_thought";
|
|
117
|
-
}
|
|
118
|
-
function renderToolStart(ts, data, state) {
|
|
119
|
-
// End any streaming
|
|
120
|
-
if (state.isStreaming) {
|
|
121
|
-
process.stdout.write("\n");
|
|
122
|
-
state.isStreaming = false;
|
|
123
|
-
}
|
|
124
|
-
if (state.lastEventType !== null) {
|
|
125
|
-
console.log("");
|
|
126
|
-
}
|
|
127
|
-
console.log(`${ts} ${chalk.yellow(`--- Tool: ${data.tool} ---`)}`);
|
|
128
|
-
// Show summary if available
|
|
129
|
-
if (data.summary) {
|
|
130
|
-
console.log(`${ts} ${chalk.gray(data.summary)}`);
|
|
131
|
-
}
|
|
132
|
-
state.lastEventType = "tool_start";
|
|
133
|
-
}
|
|
134
|
-
function renderToolUpdate(ts, data) {
|
|
135
|
-
// If summary is present, this is the phased input arrival - show the summary
|
|
136
|
-
if (data.summary) {
|
|
137
|
-
console.log(`${ts} ${chalk.gray(data.summary)}`);
|
|
138
|
-
return;
|
|
139
|
-
}
|
|
140
|
-
// Otherwise show status update
|
|
141
|
-
const statusIcon = data.status === "running" ? chalk.blue("⟳") : chalk.gray("○");
|
|
142
|
-
console.log(`${ts} ${statusIcon} ${chalk.gray(data.status)}`);
|
|
143
|
-
}
|
|
144
|
-
function renderToolResult(ts, data, state) {
|
|
145
|
-
// Status line
|
|
146
|
-
const statusColor = data.status === "completed"
|
|
147
|
-
? chalk.green
|
|
148
|
-
: data.status === "failed"
|
|
149
|
-
? chalk.red
|
|
150
|
-
: chalk.yellow;
|
|
151
|
-
const statusIcon = data.status === "completed" ? "✓" : data.status === "failed" ? "✗" : "○";
|
|
152
|
-
console.log(`${ts} ${statusColor(`${statusIcon} ${data.status}`)}`);
|
|
153
|
-
// Output (if any)
|
|
154
|
-
if (data.output) {
|
|
155
|
-
const outputLines = data.output.split("\n");
|
|
156
|
-
const indent = " "; // Align with timestamp
|
|
157
|
-
// Show output with indentation
|
|
158
|
-
for (const line of outputLines.slice(0, 20)) {
|
|
159
|
-
console.log(chalk.gray(`${indent}${line}`));
|
|
160
|
-
}
|
|
161
|
-
if (data.truncated) {
|
|
162
|
-
console.log(chalk.gray(`${indent}... (truncated)`));
|
|
163
|
-
}
|
|
164
|
-
}
|
|
165
|
-
state.lastEventType = "tool_result";
|
|
166
|
-
}
|
|
167
|
-
function renderStatus(ts, data) {
|
|
168
|
-
const statusColor = data.status === "completed" || data.status === "end_turn"
|
|
169
|
-
? chalk.green
|
|
170
|
-
: data.status === "error" || data.status === "crashed"
|
|
171
|
-
? chalk.red
|
|
172
|
-
: chalk.gray;
|
|
173
|
-
let statusText = data.status;
|
|
174
|
-
if (data.message) {
|
|
175
|
-
statusText += `: ${data.message}`;
|
|
176
|
-
}
|
|
177
|
-
console.log(`${ts} ${statusColor(`[${statusText}]`)}`);
|
|
178
|
-
}
|
|
179
|
-
/**
|
|
180
|
-
* Create a renderer that prefixes all output with a label.
|
|
181
|
-
* Used to distinguish subagent output from main agent output.
|
|
182
|
-
*
|
|
183
|
-
* AC: @ralph-subagent-spawning ac-11
|
|
184
|
-
*/
|
|
185
|
-
export function createPrefixedRenderer(prefix) {
|
|
186
|
-
const inner = createCliRenderer();
|
|
187
|
-
const prefixStr = chalk.cyan(`${prefix} `);
|
|
188
|
-
const state = {
|
|
189
|
-
atLineStart: true,
|
|
190
|
-
};
|
|
191
|
-
/**
|
|
192
|
-
* Execute a function with prefixed console.log and stdout.write.
|
|
193
|
-
* Ensures all output is prefixed consistently.
|
|
194
|
-
*/
|
|
195
|
-
function withPrefixedOutput(fn) {
|
|
196
|
-
const originalLog = console.log;
|
|
197
|
-
const originalWrite = process.stdout.write;
|
|
198
|
-
// Wrap console.log - prefix is handled by stdout.write wrapper below,
|
|
199
|
-
// so we just delegate to the original and mark line start.
|
|
200
|
-
console.log = (...args) => {
|
|
201
|
-
originalLog(...args);
|
|
202
|
-
state.atLineStart = true;
|
|
203
|
-
};
|
|
204
|
-
// Wrap process.stdout.write for streaming content
|
|
205
|
-
// Track line boundaries to only prefix at start of lines
|
|
206
|
-
// biome-ignore lint/suspicious/noExplicitAny: stdout.write has complex overloads
|
|
207
|
-
process.stdout.write = (chunk, ...args) => {
|
|
208
|
-
if (typeof chunk === "string") {
|
|
209
|
-
// Split by newlines but preserve them
|
|
210
|
-
const parts = chunk.split(/(\n)/);
|
|
211
|
-
let output = "";
|
|
212
|
-
for (const part of parts) {
|
|
213
|
-
if (part === "\n") {
|
|
214
|
-
output += part;
|
|
215
|
-
state.atLineStart = true;
|
|
216
|
-
}
|
|
217
|
-
else if (part.length > 0) {
|
|
218
|
-
if (state.atLineStart) {
|
|
219
|
-
output += prefixStr + part;
|
|
220
|
-
state.atLineStart = false;
|
|
221
|
-
}
|
|
222
|
-
else {
|
|
223
|
-
output += part;
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
return originalWrite.call(process.stdout, output, ...args);
|
|
228
|
-
}
|
|
229
|
-
// For Uint8Array, pass through unchanged
|
|
230
|
-
return originalWrite.call(process.stdout, chunk, ...args);
|
|
231
|
-
};
|
|
232
|
-
try {
|
|
233
|
-
return fn();
|
|
234
|
-
}
|
|
235
|
-
finally {
|
|
236
|
-
console.log = originalLog;
|
|
237
|
-
process.stdout.write = originalWrite;
|
|
238
|
-
}
|
|
239
|
-
}
|
|
240
|
-
return {
|
|
241
|
-
render(event) {
|
|
242
|
-
withPrefixedOutput(() => inner.render(event));
|
|
243
|
-
},
|
|
244
|
-
newSection(label) {
|
|
245
|
-
state.atLineStart = true;
|
|
246
|
-
withPrefixedOutput(() => inner.newSection?.(label));
|
|
247
|
-
},
|
|
248
|
-
};
|
|
249
|
-
}
|
|
250
|
-
//# sourceMappingURL=cli-renderer.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"cli-renderer.js","sourceRoot":"","sources":["../../src/ralph/cli-renderer.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,MAAM,OAAO,CAAC;AA2B1B,+EAA+E;AAC/E,uBAAuB;AACvB,+EAA+E;AAE/E;;;GAGG;AACH,SAAS,eAAe,CAAC,EAAU;IACjC,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,GAAG,IAAI,CAAC,CAAC;IACtC,IAAI,OAAO,GAAG,EAAE,EAAE,CAAC;QACjB,OAAO,IAAI,OAAO,GAAG,CAAC;IACxB,CAAC;IACD,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,EAAE,CAAC,CAAC;IACzC,MAAM,gBAAgB,GAAG,OAAO,GAAG,EAAE,CAAC;IACtC,IAAI,gBAAgB,KAAK,CAAC,EAAE,CAAC;QAC3B,OAAO,IAAI,OAAO,GAAG,CAAC;IACxB,CAAC;IACD,OAAO,IAAI,OAAO,IAAI,gBAAgB,GAAG,CAAC;AAC5C,CAAC;AAWD,MAAM,UAAU,iBAAiB;IAC/B,MAAM,KAAK,GAAqB;QAC9B,aAAa,EAAE,IAAI;QACnB,WAAW,EAAE,KAAK;KACnB,CAAC;IAEF,SAAS,MAAM,CAAC,KAAiB;QAC/B,MAAM,EAAE,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,eAAe,CAAC,KAAK,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;QAC/D,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAC;QAExB,QAAQ,IAAI,CAAC,IAAI,EAAE,CAAC;YAClB,KAAK,eAAe;gBAClB,kBAAkB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,eAAe;gBAClB,kBAAkB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACpC,MAAM;YACR,KAAK,YAAY;gBACf,eAAe,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBACjC,MAAM;YACR,KAAK,aAAa;gBAChB,gBAAgB,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBAC3B,MAAM;YACR,KAAK,aAAa;gBAChB,gBAAgB,CAAC,EAAE,EAAE,IAAI,EAAE,KAAK,CAAC,CAAC;gBAClC,MAAM;YACR,KAAK,QAAQ;gBACX,YAAY,CAAC,EAAE,EAAE,IAAI,CAAC,CAAC;gBACvB,MAAM;QACV,CAAC;IACH,CAAC;IAED,SAAS,UAAU,CAAC,KAAa;QAC/B,0BAA0B;QAC1B,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;YAC3B,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;QAC5B,CAAC;QACD,KAAK,CAAC,aAAa,GAAG,IAAI,CAAC;QAE3B,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC;QACpC,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;QAC7C,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,UAAU,EAAE,CAAC;AAChC,CAAC;AAED,+EAA+E;AAC/E,kBAAkB;AAClB,+EAA+E;AAE/E,SAAS,kBAAkB,CACzB,EAAU,EACV,IAAsB,EACtB,KAAuB;IAEvB,mDAAmD;IACnD,IAAI,KAAK,CAAC,aAAa,KAAK,eAAe,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAClE,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,UAAU;QAC7B,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAED,0BAA0B;IAC1B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QACnC,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,iCAAiC;QACjC,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,aAAa,GAAG,eAAe,CAAC;AACxC,CAAC;AAED,SAAS,kBAAkB,CACzB,EAAU,EACV,IAAsB,EACtB,KAAuB;IAEvB,mDAAmD;IACnD,IAAI,KAAK,CAAC,aAAa,KAAK,eAAe,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,CAAC;QAClE,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;YACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAClB,CAAC;QACD,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,OAAO,CAAC,kBAAkB,CAAC,EAAE,CAAC,CAAC;IAC5D,CAAC;IAED,6BAA6B;IAC7B,IAAI,IAAI,CAAC,WAAW,EAAE,CAAC;QACrB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC;QAC9C,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;IAC3B,CAAC;SAAM,CAAC;QACN,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;YACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC7B,CAAC;QACD,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,aAAa,GAAG,eAAe,CAAC;AACxC,CAAC;AAED,SAAS,eAAe,CACtB,EAAU,EACV,IAAmB,EACnB,KAAuB;IAEvB,oBAAoB;IACpB,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;QACtB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC3B,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;IAC5B,CAAC;IAED,IAAI,KAAK,CAAC,aAAa,KAAK,IAAI,EAAE,CAAC;QACjC,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAClB,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,MAAM,CAAC,aAAa,IAAI,CAAC,IAAI,MAAM,CAAC,EAAE,CAAC,CAAC;IAEnE,4BAA4B;IAC5B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;IACnD,CAAC;IAED,KAAK,CAAC,aAAa,GAAG,YAAY,CAAC;AACrC,CAAC;AAED,SAAS,gBAAgB,CAAC,EAAU,EAAE,IAAoB;IACxD,6EAA6E;IAC7E,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC;QACjD,OAAO;IACT,CAAC;IAED,+BAA+B;IAC/B,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAChE,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,UAAU,IAAI,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AAChE,CAAC;AAED,SAAS,gBAAgB,CACvB,EAAU,EACV,IAAoB,EACpB,KAAuB;IAEvB,cAAc;IACd,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,KAAK,WAAW;QACzB,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ;YACxB,CAAC,CAAC,KAAK,CAAC,GAAG;YACX,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC;IACrB,MAAM,UAAU,GACd,IAAI,CAAC,MAAM,KAAK,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,GAAG,CAAC;IAE3E,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,WAAW,CAAC,GAAG,UAAU,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC,EAAE,CAAC,CAAC;IAEpE,kBAAkB;IAClB,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;QAChB,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC;QAC5C,MAAM,MAAM,GAAG,SAAS,CAAC,CAAC,uBAAuB;QAEjD,+BAA+B;QAC/B,KAAK,MAAM,IAAI,IAAI,WAAW,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC;YAC5C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,IAAI,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;QAED,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,iBAAiB,CAAC,CAAC,CAAC;QACtD,CAAC;IACH,CAAC;IAED,KAAK,CAAC,aAAa,GAAG,aAAa,CAAC;AACtC,CAAC;AAED,SAAS,YAAY,CAAC,EAAU,EAAE,IAAgB;IAChD,MAAM,WAAW,GACf,IAAI,CAAC,MAAM,KAAK,WAAW,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;QACvD,CAAC,CAAC,KAAK,CAAC,KAAK;QACb,CAAC,CAAC,IAAI,CAAC,MAAM,KAAK,OAAO,IAAI,IAAI,CAAC,MAAM,KAAK,SAAS;YACpD,CAAC,CAAC,KAAK,CAAC,GAAG;YACX,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC;IAEnB,IAAI,UAAU,GAAG,IAAI,CAAC,MAAM,CAAC;IAC7B,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;QACjB,UAAU,IAAI,KAAK,IAAI,CAAC,OAAO,EAAE,CAAC;IACpC,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,GAAG,EAAE,IAAI,WAAW,CAAC,IAAI,UAAU,GAAG,CAAC,EAAE,CAAC,CAAC;AACzD,CAAC;AAUD;;;;;GAKG;AACH,MAAM,UAAU,sBAAsB,CAAC,MAAc;IACnD,MAAM,KAAK,GAAG,iBAAiB,EAAE,CAAC;IAClC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,GAAG,CAAC,CAAC;IAC3C,MAAM,KAAK,GAA0B;QACnC,WAAW,EAAE,IAAI;KAClB,CAAC;IAEF;;;OAGG;IACH,SAAS,kBAAkB,CAAI,EAAW;QACxC,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC;QAChC,MAAM,aAAa,GAAG,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC;QAE3C,sEAAsE;QACtE,2DAA2D;QAC3D,OAAO,CAAC,GAAG,GAAG,CAAC,GAAG,IAAe,EAAE,EAAE;YACnC,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;YACrB,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;QAC3B,CAAC,CAAC;QAEF,kDAAkD;QAClD,yDAAyD;QACzD,iFAAiF;QACjF,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,CAAC,KAAU,EAAE,GAAG,IAAW,EAAW,EAAE;YAC7D,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;gBAC9B,sCAAsC;gBACtC,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;gBAClC,IAAI,MAAM,GAAG,EAAE,CAAC;gBAEhB,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;oBACzB,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;wBAClB,MAAM,IAAI,IAAI,CAAC;wBACf,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;oBAC3B,CAAC;yBAAM,IAAI,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;wBAC3B,IAAI,KAAK,CAAC,WAAW,EAAE,CAAC;4BACtB,MAAM,IAAI,SAAS,GAAG,IAAI,CAAC;4BAC3B,KAAK,CAAC,WAAW,GAAG,KAAK,CAAC;wBAC5B,CAAC;6BAAM,CAAC;4BACN,MAAM,IAAI,IAAI,CAAC;wBACjB,CAAC;oBACH,CAAC;gBACH,CAAC;gBAED,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,MAAM,EAAE,GAAG,IAAI,CAAC,CAAC;YAC7D,CAAC;YAED,yCAAyC;YACzC,OAAO,aAAa,CAAC,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,CAAC;QAC5D,CAAC,CAAC;QAEF,IAAI,CAAC;YACH,OAAO,EAAE,EAAE,CAAC;QACd,CAAC;gBAAS,CAAC;YACT,OAAO,CAAC,GAAG,GAAG,WAAW,CAAC;YAC1B,OAAO,CAAC,MAAM,CAAC,KAAK,GAAG,aAAa,CAAC;QACvC,CAAC;IACH,CAAC;IAED,OAAO;QACL,MAAM,CAAC,KAAK;YACV,kBAAkB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;QAChD,CAAC;QACD,UAAU,CAAC,KAAK;YACd,KAAK,CAAC,WAAW,GAAG,IAAI,CAAC;YACzB,kBAAkB,CAAC,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;QACtD,CAAC;KACF,CAAC;AACJ,CAAC"}
|
package/dist/ralph/events.d.ts
DELETED
|
@@ -1,65 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Ralph Event System
|
|
3
|
-
*
|
|
4
|
-
* Translates ACP SessionUpdate events into structured RalphEvents.
|
|
5
|
-
* This layer is pure data - no rendering concerns. Enables future
|
|
6
|
-
* TUI or other renderers to consume the same event stream.
|
|
7
|
-
*/
|
|
8
|
-
import type { SessionUpdate } from "../acp/types.js";
|
|
9
|
-
export type RalphEventType = "agent_message" | "agent_thought" | "tool_start" | "tool_update" | "tool_result" | "status";
|
|
10
|
-
export interface RalphEvent {
|
|
11
|
-
type: RalphEventType;
|
|
12
|
-
timestamp: number;
|
|
13
|
-
data: RalphEventData;
|
|
14
|
-
}
|
|
15
|
-
export type RalphEventData = AgentMessageData | AgentThoughtData | ToolStartData | ToolUpdateData | ToolResultData | StatusData;
|
|
16
|
-
export interface AgentMessageData {
|
|
17
|
-
kind: "agent_message";
|
|
18
|
-
content: string;
|
|
19
|
-
isStreaming: boolean;
|
|
20
|
-
}
|
|
21
|
-
export interface AgentThoughtData {
|
|
22
|
-
kind: "agent_thought";
|
|
23
|
-
content: string;
|
|
24
|
-
isStreaming: boolean;
|
|
25
|
-
}
|
|
26
|
-
export interface ToolStartData {
|
|
27
|
-
kind: "tool_start";
|
|
28
|
-
toolCallId: string;
|
|
29
|
-
tool: string;
|
|
30
|
-
summary: string;
|
|
31
|
-
input: unknown;
|
|
32
|
-
}
|
|
33
|
-
export interface ToolUpdateData {
|
|
34
|
-
kind: "tool_update";
|
|
35
|
-
toolCallId: string;
|
|
36
|
-
tool: string;
|
|
37
|
-
status: "pending" | "running";
|
|
38
|
-
summary?: string;
|
|
39
|
-
}
|
|
40
|
-
export interface ToolResultData {
|
|
41
|
-
kind: "tool_result";
|
|
42
|
-
toolCallId: string;
|
|
43
|
-
tool: string;
|
|
44
|
-
status: "completed" | "failed" | "cancelled";
|
|
45
|
-
output?: string;
|
|
46
|
-
truncated: boolean;
|
|
47
|
-
}
|
|
48
|
-
export interface StatusData {
|
|
49
|
-
kind: "status";
|
|
50
|
-
status: string;
|
|
51
|
-
message?: string;
|
|
52
|
-
}
|
|
53
|
-
export interface RalphTranslator {
|
|
54
|
-
/**
|
|
55
|
-
* Translate an ACP SessionUpdate to a RalphEvent.
|
|
56
|
-
* Returns null if the update should be suppressed.
|
|
57
|
-
*/
|
|
58
|
-
translate(update: SessionUpdate): RalphEvent | null;
|
|
59
|
-
/**
|
|
60
|
-
* Signal end of stream. Returns final event if there's pending state.
|
|
61
|
-
*/
|
|
62
|
-
finalize(): RalphEvent | null;
|
|
63
|
-
}
|
|
64
|
-
export declare function createTranslator(): RalphTranslator;
|
|
65
|
-
//# sourceMappingURL=events.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../../src/ralph/events.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAMrD,MAAM,MAAM,cAAc,GACtB,eAAe,GACf,eAAe,GACf,YAAY,GACZ,aAAa,GACb,aAAa,GACb,QAAQ,CAAC;AAEb,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,cAAc,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,cAAc,CAAC;CACtB;AAED,MAAM,MAAM,cAAc,GACtB,gBAAgB,GAChB,gBAAgB,GAChB,aAAa,GACb,cAAc,GACd,cAAc,GACd,UAAU,CAAC;AAEf,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,eAAe,CAAC;IACtB,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,OAAO,CAAC;CACtB;AAED,MAAM,WAAW,aAAa;IAC5B,IAAI,EAAE,YAAY,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;CAChB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,SAAS,GAAG,SAAS,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,aAAa,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,WAAW,GAAG,QAAQ,GAAG,WAAW,CAAC;IAC7C,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,OAAO,CAAC;CACpB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,QAAQ,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAMD,MAAM,WAAW,eAAe;IAC9B;;;OAGG;IACH,SAAS,CAAC,MAAM,EAAE,aAAa,GAAG,UAAU,GAAG,IAAI,CAAC;IAEpD;;OAEG;IACH,QAAQ,IAAI,UAAU,GAAG,IAAI,CAAC;CAC/B;AA2VD,wBAAgB,gBAAgB,IAAI,eAAe,CAqWlD"}
|