@hecer/yoke 1.13.0 → 1.15.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.
Files changed (45) hide show
  1. package/CHANGELOG.md +39 -0
  2. package/README.md +16 -12
  3. package/canon/manifest.yaml +1 -1
  4. package/dist/cli.js +16 -2
  5. package/dist/code-intelligence/adapters/graft.js +11 -0
  6. package/dist/code-intelligence/adapters/graphify.js +8 -0
  7. package/dist/code-intelligence/adapters/index.js +5 -0
  8. package/dist/code-intelligence/adapters/mcp.js +37 -0
  9. package/dist/code-intelligence/adapters/serena.js +11 -0
  10. package/dist/code-intelligence/adapters/types.js +1 -0
  11. package/dist/code-intelligence/contracts.js +137 -0
  12. package/dist/code-intelligence/coordinator.js +370 -0
  13. package/dist/code-intelligence/edit-plans.js +53 -0
  14. package/dist/code-intelligence/evidence.js +77 -0
  15. package/dist/code-intelligence/index.js +5 -0
  16. package/dist/code-intelligence/internal-types.js +1 -0
  17. package/dist/code-intelligence/mcp-client.js +139 -0
  18. package/dist/code-intelligence/mcp-server.js +93 -0
  19. package/dist/code-intelligence/snapshots.js +117 -0
  20. package/dist/code-intelligence/transactions.js +60 -0
  21. package/dist/dashboard/analytics.js +193 -29
  22. package/dist/dashboard/contracts.js +23 -0
  23. package/dist/dashboard/page.js +39 -94
  24. package/dist/dashboard/panels.js +85 -31
  25. package/dist/dashboard/server.js +190 -15
  26. package/dist/observability/events.js +1 -1
  27. package/dist/observability/history.js +1 -1
  28. package/dist/retrofit/command.js +3 -1
  29. package/dist/retrofit/config.js +10 -0
  30. package/dist/retrofit/gitignore.js +1 -0
  31. package/dist/retrofit/plan.js +3 -3
  32. package/dist/retrofit/planners/claude.js +3 -3
  33. package/dist/retrofit/planners/codex.js +5 -5
  34. package/dist/retrofit/planners/gemini.js +2 -2
  35. package/dist/retrofit/planners/kilo.js +2 -2
  36. package/dist/retrofit/planners/opencode.js +2 -2
  37. package/dist/retrofit/planners/pi.js +1 -1
  38. package/dist/retrofit/planners/qwen.js +2 -2
  39. package/dist/retrofit/tools.js +9 -7
  40. package/dist/setup/command.js +3 -1
  41. package/docs/CODE-INTELLIGENCE.md +36 -0
  42. package/docs/DASHBOARD-EVOLUTION.md +16 -2
  43. package/docs/DASHBOARD-OVERHAUL.md +146 -0
  44. package/gemini-extension.json +1 -1
  45. package/package.json +1 -1
@@ -1,6 +1,6 @@
1
1
  # Dashboard evolution
2
2
 
3
- The local dashboard is an actionable workspace for registered Yoke projects. It reads the same saved project, loop, goal, acceptance, and measurement data as the CLI. Project-controlled text is rendered through `textContent`, and the server remains bound to the loopback interface with same-origin authorization for pause requests.
3
+ The local dashboard is an actionable control room for registered Yoke projects. It reads the same saved project, loop, goal, acceptance, and measurement data as the CLI. Project-controlled text is rendered through `textContent`, and the server remains bound to the loopback interface with same-origin session authorization for typed controls. The full feature contract is in [DASHBOARD-OVERHAUL.md](DASHBOARD-OVERHAUL.md).
4
4
 
5
5
  ## Overview
6
6
 
@@ -10,14 +10,28 @@ Cards also show the reported current task and saved blocker reason when availabl
10
10
 
11
11
  An active loop report more than 20 minutes old is labeled **unconfirmed**. This means Yoke has an old active report, not evidence that the process is still live. The overview can be searched by project name, canonical path, or goal objective and filtered to All, Active, or Needs attention. A no-match state explains the result and provides a clear action that resets both search and filter.
12
12
 
13
+ ## Workspace control room
14
+
15
+ The overview ranks projects by attention, last activity, recorded tokens, reported cost, accepted work, or name. Search and status filters compose with the ranking, and the validated URL hash preserves the selected screen and time scope. A project row opens the live view without losing the operator’s navigation context.
16
+
17
+ The project live view shows goal and loop state independently, freshness, current worker metadata, objective progress, last successful sync, pause/resume actions at the existing safe boundary, an operator-note form, a queued-change form, and a bounded expandable event timeline. Notes are append-only events. Changes become pending inbox requests and are consumed by the existing planning boundary; the browser cannot run arbitrary commands.
18
+
19
+ ## Measurement coverage
20
+
21
+ The dashboard labels recorded, partial, unknown, stale, corrupt, unavailable, and empty data separately. **Measurement coverage** is always shown alongside analytics: missing provider usage or price is not reconstructed, and a missing bucket means no recorded activity rather than a measured zero. A stale active report is shown as unconfirmed, not healthy.
22
+
13
23
  ## Durable navigation
14
24
 
15
- The URL hash stores the current screen, project, project tab, period, UTC grouping, and complete custom date range. Supported screens are the overview, workspace comparison, and project detail. Supported project tabs are Now, Usage & time, and Results; periods are 1, 7, 30, 90, or 365 days; groupings are day, week, or month. Custom dates must be real ISO calendar dates in chronological order and cover at most 366 inclusive days.
25
+ The URL hash stores the current screen, project, project tab, period, UTC grouping, ranking/filter state, and complete custom date range. Supported screens are the overview, workspace analytics, and project detail. Supported project tabs are Now, Usage & time, Results, and History; periods are 1, 7, 30, 90, or 365 days; groupings are day, week, or month. Custom dates must be real ISO calendar dates in chronological order and cover at most 366 inclusive days.
16
26
 
17
27
  Invalid hash state returns to the overview with the 30-day/day defaults. Browser back and forward, a page reload, and Refresh restore the validated state. Refresh reloads data without resetting the selected view or controls. Starting any navigation aborts earlier fetches and changes a request generation, so an older response cannot replace the current screen.
18
28
 
19
29
  The workspace comparison schedules at most three project analytics requests at once. If navigation changes, in-flight fetches are aborted and no additional obsolete project requests are scheduled. All projects and individual project links remain available in the navigation while viewing the comparison.
20
30
 
31
+ ## Analytics and history
32
+
33
+ Workspace and project analytics expose time-bucketed recorded tokens, calls, duration, outcomes, cost state, and rankings by agent, provider, model, variant, role, phase, project, and run. The history explorer exposes at most 100 events in chronological order and identifies run, story, phase, agent/provider/model metadata, local time, and UTC time when recorded. Unknown values remain unknown; no chart or comparison converts missing measurements to zero.
34
+
21
35
  ## Usage comparisons
22
36
 
23
37
  Usage & time compares the selected period with the immediately preceding period of exactly the same duration. A single time boundary is captured before either analytics request is made. The comparison covers recorded input plus output tokens, recorded acceptance events, and reported cost.
@@ -0,0 +1,146 @@
1
+ # Dashboard Overhaul: Feature Contract
2
+
3
+ Status: approved implementation scope
4
+ Date: 2026-09-08
5
+
6
+ This document turns the dashboard request into executable product definitions.
7
+ Each feature below has a bounded behavior, source of truth, safety rule, and
8
+ acceptance proof. It is an implementation contract, not a list of future ideas.
9
+
10
+ ## North star
11
+
12
+ Yoke Dashboard is a local-first operations console for autonomous work. A user
13
+ can move from workspace-level ranking to one run, understand what happened,
14
+ intervene safely at a loop boundary, and leave a durable note or change request
15
+ without interrupting the worker or inventing a second execution path.
16
+
17
+ ## Feature definitions
18
+
19
+ ### F1 — Unified workspace control room
20
+
21
+ The overview loads all registered projects into one ranked workspace. Each row
22
+ shows project identity, current state, freshness, objective, last activity,
23
+ latest run, token totals, cost coverage, accepted/failed outcome, and the next
24
+ available safe action. A project can be sorted by attention, active state, last
25
+ activity, token usage, cost, acceptance, or name. Search and status filters are
26
+ composable and persist in navigation state.
27
+
28
+ Source: registry, goal/loop snapshots, events, history measurements, and checks.
29
+
30
+ Rule: missing projects and partial telemetry remain visible; an unknown metric
31
+ never becomes zero.
32
+
33
+ ### F2 — Historical telemetry and rankings
34
+
35
+ The dashboard exposes a selectable date range and bucket (day, week, month) for
36
+ workspace and project views. It aggregates input, output, cached, cache-write,
37
+ reasoning, total tokens, measured/unknown calls, attempts, accepted runs,
38
+ repairs, escalations, elapsed time, and reported cost. It ranks projects,
39
+ agents, providers, models, roles, phases, and runs, with measurement coverage
40
+ shown alongside every aggregate.
41
+
42
+ Source: durable history archives plus bounded live events.
43
+
44
+ Rule: aggregation is deterministic and bounded; corrupt archives are reported
45
+ as coverage gaps, not silently discarded or counted as zero.
46
+
47
+ ### F3 — Run explorer and event timeline
48
+
49
+ A project detail view provides a run list and a chronological timeline. Users can
50
+ expand an event to inspect run/attempt/story/phase identifiers, agent metadata,
51
+ token fields, outcome, and source timestamp. The view supports the same date
52
+ range and an explicit “live” scope.
53
+
54
+ Source: event stream and history records, joined by run ID where available.
55
+
56
+ Rule: show UTC and local time clearly; bound event and archive reads; stale live
57
+ data is labeled unconfirmed.
58
+
59
+ ### F4 — Safe live controls
60
+
61
+ The selected project has pause and resume controls. Pause uses Yoke’s existing
62
+ `.yoke/loop.pause` and `.yoke/goal.pause` safe-boundary mechanisms. Resume calls
63
+ the existing loop/goal runner with one guarded invocation and respects the loop
64
+ lock; it never starts a duplicate worker. The UI reports requested, running,
65
+ paused, blocked, and failed-to-start states separately.
66
+
67
+ Rule: all writes require loopback same-origin plus the dashboard session token.
68
+ No action accepts a filesystem path or shell string from the browser.
69
+
70
+ ### F5 — Operator notes and queued changes
71
+
72
+ While work runs, a user can append a short operator note or queue a typed change
73
+ request. Notes are append-only and displayed in the timeline. Change requests
74
+ reuse Yoke’s existing append-only change inbox and are processed at its normal
75
+ safe planning boundary. The UI shows pending/applied state and the request ID.
76
+
77
+ Rule: notes and changes are never executed as shell commands. Input is bounded,
78
+ validated, escaped on render, and retained as project-local operational history.
79
+
80
+ ### F6 — Theme, density, and responsive access
81
+
82
+ Dark and light themes use the design tokens in `DESIGN.md`; first load respects
83
+ system preference, then remembers the user’s choice. The shell works at desktop,
84
+ tablet, and narrow widths. Tables remain scannable through column priorities,
85
+ horizontal overflow where necessary, and accessible labels.
86
+
87
+ Rule: contrast, focus, reduced motion, keyboard navigation, and non-color status
88
+ signals are tested; visual polish cannot hide loading, empty, error, or stale
89
+ states.
90
+
91
+ ### F7 — Honest operational states
92
+
93
+ Every live panel shows last successful sync, source scope, and data coverage.
94
+ Active-but-stale work becomes “unconfirmed”; unavailable costs/tokens are
95
+ explicit. Corrupt project files produce an actionable per-project error without
96
+ breaking the workspace view.
97
+
98
+ Rule: the dashboard never claims process health merely because a status file says
99
+ running; freshness and source errors are part of the displayed state.
100
+
101
+ ### F8 — Stable local API contract
102
+
103
+ The server provides bounded, same-origin JSON for workspace overview, project
104
+ snapshot, project history/events, and typed controls. Responses are safe to
105
+ render as untrusted project text. Query ranges, limits, sort keys, and action
106
+ payloads are schema-validated.
107
+
108
+ Rule: preserve existing routes where possible, keep the server loopback-only,
109
+ and add tests for authorization, path safety, malformed input, concurrency, and
110
+ partial history.
111
+
112
+ ## Delivery slices
113
+
114
+ The Yoke loop executes these slices in dependency order:
115
+
116
+ 1. Contract, design tokens, shared telemetry/control types, and API helpers.
117
+ 2. Historical aggregation, run/event projections, and workspace endpoints.
118
+ 3. Typed operator controls, append-only notes, and guarded resume.
119
+ 4. New shell, theme system, workspace ranking, and responsive state components.
120
+ 5. Project live view, controls, timeline, notes, and queued changes.
121
+ 6. Analytics/history explorer with all rankings and coverage explanations.
122
+ 7. Accessibility, loading/error/empty/stale states, performance bounds, and
123
+ focused regression tests.
124
+ 8. README/docs synchronization and final integrated verification.
125
+
126
+ ## Non-goals for this release
127
+
128
+ - Remote multi-user access, accounts, or cloud storage.
129
+ - Arbitrary shell execution from the browser.
130
+ - Replacing the loop, goal runner, provider routing, or lock protocol.
131
+ - Fabricating historical metrics that were not recorded.
132
+ - A second real-time transport dependency; polling with freshness indicators is
133
+ sufficient for the local-first release.
134
+
135
+ ## Acceptance checklist
136
+
137
+ - A workspace user can rank projects by attention, activity, tokens, cost, and
138
+ name and open a project without losing filters.
139
+ - A project user can inspect a bounded historical run/event view and identify
140
+ agent/provider/model/role/phase/time when recorded.
141
+ - A project user can pause at the existing safe boundary, resume without a
142
+ duplicate loop, add a note, and queue a change request from the UI.
143
+ - Dark/light themes, keyboard focus, responsive layout, and reduced motion work.
144
+ - Partial, unknown, stale, corrupt, and missing data are explicit and isolated.
145
+ - Existing dashboard security and tests remain green; new behavior has focused
146
+ tests plus build/lint coverage.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "yoke",
3
- "version": "1.13.0",
3
+ "version": "1.14.0",
4
4
  "description": "Cross-agent coding harness for seven supported CLIs: curated skill canon, mechanical safety gates, autonomous loop with proof artifacts. CLI: npm i -g @hecer/yoke",
5
5
  "contextFileName": "GEMINI-EXTENSION.md"
6
6
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@hecer/yoke",
3
- "version": "1.13.0",
3
+ "version": "1.15.0",
4
4
  "description": "One harness, seven agents, zero trust in \"done\" — cross-agent coding harness for Claude Code, Codex CLI, Gemini CLI, Qwen Code, OpenCode, Kilo and Pi: one skill canon, mechanical safety gates, an autonomous loop with screenshot/video proofs.",
5
5
  "type": "module",
6
6
  "bin": {