@openthink/team 0.0.2 → 0.0.4
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 +35 -0
- package/dist/assign-ticket.md +2 -0
- package/dist/index.js +616 -51
- package/dist/index.js.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -78,6 +78,10 @@ oteam config stamp show # print current stamp config
|
|
|
78
78
|
oteam config models set <phase> <id> # pin a model per role-pipeline phase
|
|
79
79
|
oteam config models clear <phase> # remove a per-phase override
|
|
80
80
|
oteam config models show # print current per-phase overrides
|
|
81
|
+
oteam config telemetry set on|off # toggle per-phase telemetry recording
|
|
82
|
+
oteam config telemetry show # print telemetry on/off state
|
|
83
|
+
oteam telemetry summary [--days N] [--phase X] [--model Y]
|
|
84
|
+
oteam telemetry tail [-n 20] # last N telemetry lines (raw JSONL)
|
|
81
85
|
```
|
|
82
86
|
|
|
83
87
|
Most commands accept `--vault <name-or-path>` to operate on a specific vault.
|
|
@@ -190,6 +194,37 @@ oteam config models clear spike # falls back to the role-pipeline default
|
|
|
190
194
|
|
|
191
195
|
Each field is independent. Unset phases fall back to the role-pipeline default (currently `claude-opus-4-7`); validation is "non-empty string", and the SDK rejects unknown ids at spawn time. Re-running `oteam init` against a config that already has any per-phase model set leaves the entire `models` block alone — your customisation wins. A spike that auto-proceeds to implementation in the same session keeps the spike-phase model (one model per spawn).
|
|
192
196
|
|
|
197
|
+
## Telemetry
|
|
198
|
+
|
|
199
|
+
Every role-pipeline spawn records one JSON line capturing wall-clock + token usage to `~/.open-team/telemetry/runs.jsonl`. The intent is data-driven model tuning — the per-phase defaults above are educated guesses, and the only way to know whether Sonnet QA actually catches what Opus QA does is to measure both.
|
|
200
|
+
|
|
201
|
+
Each line looks like:
|
|
202
|
+
|
|
203
|
+
```json
|
|
204
|
+
{ "ticket": "AGT-108", "phase": "implementation", "model": "claude-sonnet-4-6",
|
|
205
|
+
"started-at": "2026-05-04T10:00:00.000Z", "ended-at": "2026-05-04T10:05:42.000Z",
|
|
206
|
+
"wall-clock-ms": 342000,
|
|
207
|
+
"tokens": { "input": 230, "output": 120, "cache-read": 18100, "cache-write": 50 },
|
|
208
|
+
"outcome": "done" }
|
|
209
|
+
```
|
|
210
|
+
|
|
211
|
+
`outcome` is one of `done` / `paused` / `failed` / `unknown`, classified from the STOP banner the role-pipeline body emits (`✅ DONE` / `⏸️ PAUSED` / `🛑 BLOCKED`). A non-zero `claude` exit pins the outcome to `failed` regardless of marker.
|
|
212
|
+
|
|
213
|
+
Inspect:
|
|
214
|
+
|
|
215
|
+
```sh
|
|
216
|
+
oteam telemetry tail # last 20 lines (raw JSONL)
|
|
217
|
+
oteam telemetry summary # aggregate by phase × model
|
|
218
|
+
oteam telemetry summary --days 7
|
|
219
|
+
oteam telemetry summary --phase implementation --model claude-sonnet-4-6
|
|
220
|
+
```
|
|
221
|
+
|
|
222
|
+
Knobs:
|
|
223
|
+
|
|
224
|
+
- `OTEAM_TELEMETRY_DIR=<path>` overrides the default `~/.open-team/telemetry/` location.
|
|
225
|
+
- `oteam config telemetry set off` opts out — no JSONL writes occur. Re-enable with `oteam config telemetry set on`. Default is on.
|
|
226
|
+
- Telemetry is best-effort: a write failure (read-only dir, missing session file, malformed log) writes one line to stderr and does not fail the role-pipeline phase. Token fields the agent SDK doesn't expose are omitted from the line rather than recorded as zero.
|
|
227
|
+
|
|
193
228
|
## Config & multiple vaults
|
|
194
229
|
|
|
195
230
|
`open-team` supports any number of named vaults via `~/.open-team/config.json`. Register them with:
|
package/dist/assign-ticket.md
CHANGED
|
@@ -61,6 +61,8 @@ Write the comment in this shape:
|
|
|
61
61
|
- <bullet 2>
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
+
If your appended system context flags the **AGT-107 haiku-downshift heuristic** as active (a `# Product agent: haiku-downshift heuristic active` block), use the header `### YYYY-MM-DD — Product agent (haiku-downshift)` instead of the standard form. The runner has already spawned you on Haiku 4.5; the suffix makes the heuristic visible in the ticket's audit trail.
|
|
65
|
+
|
|
64
66
|
## Phase 3 — Engineering agent (state: refined → spike phase)
|
|
65
67
|
|
|
66
68
|
**Step 0 — Workspace is already prepared.** When `oteam assign` spawned you against a repo-bound ticket, it already cloned `/tmp/open-team-issues/<ticket-id-lowercased>/repo` (from the stamp server when `stamp.enforce: true` is set in `~/.open-team/config.json`; from GitHub otherwise, or when `--no-stamp` was passed) and set your cwd to it. Confirm with `pwd` and `git remote -v`; for stamp-governed repos you should see exactly one remote, `origin`, pointing at `ssh://git@<stamp-host>:<port>/srv/git/<basename>.git`.
|