@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.
- package/CHANGELOG.md +39 -0
- package/README.md +16 -12
- package/canon/manifest.yaml +1 -1
- package/dist/cli.js +16 -2
- package/dist/code-intelligence/adapters/graft.js +11 -0
- package/dist/code-intelligence/adapters/graphify.js +8 -0
- package/dist/code-intelligence/adapters/index.js +5 -0
- package/dist/code-intelligence/adapters/mcp.js +37 -0
- package/dist/code-intelligence/adapters/serena.js +11 -0
- package/dist/code-intelligence/adapters/types.js +1 -0
- package/dist/code-intelligence/contracts.js +137 -0
- package/dist/code-intelligence/coordinator.js +370 -0
- package/dist/code-intelligence/edit-plans.js +53 -0
- package/dist/code-intelligence/evidence.js +77 -0
- package/dist/code-intelligence/index.js +5 -0
- package/dist/code-intelligence/internal-types.js +1 -0
- package/dist/code-intelligence/mcp-client.js +139 -0
- package/dist/code-intelligence/mcp-server.js +93 -0
- package/dist/code-intelligence/snapshots.js +117 -0
- package/dist/code-intelligence/transactions.js +60 -0
- package/dist/dashboard/analytics.js +193 -29
- package/dist/dashboard/contracts.js +23 -0
- package/dist/dashboard/page.js +39 -94
- package/dist/dashboard/panels.js +85 -31
- package/dist/dashboard/server.js +190 -15
- package/dist/observability/events.js +1 -1
- package/dist/observability/history.js +1 -1
- package/dist/retrofit/command.js +3 -1
- package/dist/retrofit/config.js +10 -0
- package/dist/retrofit/gitignore.js +1 -0
- package/dist/retrofit/plan.js +3 -3
- package/dist/retrofit/planners/claude.js +3 -3
- package/dist/retrofit/planners/codex.js +5 -5
- package/dist/retrofit/planners/gemini.js +2 -2
- package/dist/retrofit/planners/kilo.js +2 -2
- package/dist/retrofit/planners/opencode.js +2 -2
- package/dist/retrofit/planners/pi.js +1 -1
- package/dist/retrofit/planners/qwen.js +2 -2
- package/dist/retrofit/tools.js +9 -7
- package/dist/setup/command.js +3 -1
- package/docs/CODE-INTELLIGENCE.md +36 -0
- package/docs/DASHBOARD-EVOLUTION.md +16 -2
- package/docs/DASHBOARD-OVERHAUL.md +146 -0
- package/gemini-extension.json +1 -1
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# Dashboard evolution
|
|
2
2
|
|
|
3
|
-
The local dashboard is an actionable
|
|
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
|
|
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.
|
package/gemini-extension.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "yoke",
|
|
3
|
-
"version": "1.
|
|
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.
|
|
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": {
|