@mmerterden/multi-agent-pipeline 20.2.0 → 20.2.1
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
CHANGED
|
@@ -14,6 +14,17 @@ Internal file-layout changes that don't affect the slash-command surface are sti
|
|
|
14
14
|
|
|
15
15
|
---
|
|
16
16
|
|
|
17
|
+
## [20.2.1] - 2026-09-22
|
|
18
|
+
|
|
19
|
+
### Fixed
|
|
20
|
+
|
|
21
|
+
- **Usage reporting could attribute a run to a work identity.** On a machine with
|
|
22
|
+
more than one identity, the reporting login came from `identities[0]` (or the
|
|
23
|
+
active `gh` account inside a work repo), so a run could land on the panel under
|
|
24
|
+
a corporate account rather than the personal login that owns the ingest token.
|
|
25
|
+
A new `usageLog.reportAs` pins the reporting login and is resolved before
|
|
26
|
+
`identities[0]`, `gh api user` and the OS user.
|
|
27
|
+
|
|
17
28
|
## [20.2.0] - 2026-09-21
|
|
18
29
|
|
|
19
30
|
### Added
|
package/docs/facts.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"$comment": "Generated by pipeline/scripts/gen-facts.mjs. Do not hand-edit: the site reads this, and a number edited here instead of at its source is the drift this file removes.",
|
|
3
|
-
"generatedAt": "2026-09-
|
|
4
|
-
"version": "20.2.
|
|
3
|
+
"generatedAt": "2026-09-22",
|
|
4
|
+
"version": "20.2.1",
|
|
5
5
|
"phaseSchema": 2,
|
|
6
6
|
"phases": [
|
|
7
7
|
{
|
package/manifest.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "20.2.
|
|
4
|
-
"commit": "
|
|
5
|
-
"generatedAt": "2026-09-22T07:
|
|
3
|
+
"version": "20.2.1",
|
|
4
|
+
"commit": "41268b41863556f67bd2b0203089ff440448c25d",
|
|
5
|
+
"generatedAt": "2026-09-22T07:53:14.582Z",
|
|
6
6
|
"algorithm": "sha256",
|
|
7
7
|
"fileCount": 1082,
|
|
8
8
|
"files": {
|
|
9
|
-
"CHANGELOG.md": "
|
|
9
|
+
"CHANGELOG.md": "e4981c5d8826bd81bf6146890253c0eddfcd6620b82d52dfaeb99033c3dc8207",
|
|
10
10
|
"LICENSE": "8d8c51aaf1e1538b180c69965fa038db71be86798cc3e26a143bebfefe16a43e",
|
|
11
11
|
"README.md": "ec8d6035f973ea42bafdc0661794e0f19d1881bd8b8f3e434b922f75767a2152",
|
|
12
12
|
"README.tr.md": "8dc75f9402a4c0f81542ff5c7ce9fcc677bbf4ff2785d363753ad17b04843c0c",
|
|
@@ -33,7 +33,7 @@
|
|
|
33
33
|
"docs/best-practices.md": "aeaaa12d518233cb09577c1dbaee00d62cd26f9f7e0400c681fe38742d6a7ba2",
|
|
34
34
|
"docs/ecosystem.md": "5cda3cb488cc41a1f9cda01c0d86ae313f7ad034655732184db81739a9698a82",
|
|
35
35
|
"docs/engineering.md": "550528cd47c7d2c921729c68d0782a00ac8e77a4bdfec479f6749f9c3235d188",
|
|
36
|
-
"docs/facts.json": "
|
|
36
|
+
"docs/facts.json": "7ffb2eaffa2feb7e33ea6367fa9a753273ea4ca8c2b0ff992ccb5add27e94038",
|
|
37
37
|
"docs/features.md": "0143ca5a5415a30d18799f809833b704529ad1417e1b0d4a2753fdbf260e6d94",
|
|
38
38
|
"docs/performance.md": "bbf2f3922c25dcba0c1a9e69ef420e3871a729af5b35009a49b48a5d3c5cd151",
|
|
39
39
|
"docs/recovery-guide.md": "1cc014295f8c8ffba1f1c44397b657e925f1bc0e4757217d6e69e8cfb271f3cb",
|
|
@@ -60,7 +60,7 @@
|
|
|
60
60
|
"install/templates/codex-instructions.md": "dd78eb9553e725c039380457245793a5fc748ae37ebf5ccfe11be5ed5b9a4025",
|
|
61
61
|
"install/templates/copilot-instructions.md": "d300b3bcb8d81ec1f3937eb388f993c256fda78de83aaad9efe6fe1a0865c065",
|
|
62
62
|
"install/templates/multi-agent-autopilot.plist.template": "d79de637b17330e720be43b96bfcdd51797bd9ce219eafaa3dd5a8ece96e4814",
|
|
63
|
-
"package.json": "
|
|
63
|
+
"package.json": "89a7b44461e2ccdfad13b48a415eae6cea91aaf643fae5b4587873f6dcbb209e",
|
|
64
64
|
"pipeline/agents/android-architect.md": "baa5787b3a4c800dd065e27e05f44462927c9938c8bb676c80f18cb10e2b12c4",
|
|
65
65
|
"pipeline/agents/backend-architect.md": "a83bd7f8b0a5289a1ef9a9b59d60fc759b8db260606ff2df427cf5ade5db8530",
|
|
66
66
|
"pipeline/agents/bulk-reader.md": "0b9d415fab2c449d43329d759049af9401255d06b32d57a38c95e684837b19bf",
|
|
@@ -235,7 +235,7 @@
|
|
|
235
235
|
"pipeline/multi-agent-refs/features/skill-conformance.md": "8e74c2458ad8a5d8356b4093d63cd57f7d2428aa12e9f26a7690fc467a07f382",
|
|
236
236
|
"pipeline/multi-agent-refs/features/stack-skill-routing.md": "8d45fb7331509411617d2bf5c42e752eaaa7ada24dcf38140f2710b28ab4fc0f",
|
|
237
237
|
"pipeline/multi-agent-refs/features/url-enrichment.md": "64af9f058ac5e7fbc662acb8839adf0d4cd67ee20db91e8f9a3b7a514bdb3eed",
|
|
238
|
-
"pipeline/multi-agent-refs/features/usage-reporting.md": "
|
|
238
|
+
"pipeline/multi-agent-refs/features/usage-reporting.md": "833912d61b403e00a8169f6aac58765696744e81445f55215fa95092236d8850",
|
|
239
239
|
"pipeline/multi-agent-refs/features/verify-by-test.md": "6be89c7020ebdce6903e1f72cb74adeb5c4eb93a5f0e18c0b1b7c0cae619a42a",
|
|
240
240
|
"pipeline/multi-agent-refs/features/verify.md": "1a6db5e7239eac01e51100353013abd16bf785a7fce88b40139fca27f4166be4",
|
|
241
241
|
"pipeline/multi-agent-refs/features/visual-evidence.md": "3966efb684af64741b9c5bfe4d74d75c0173fbd6bf87a883beeaf5889c4ae808",
|
|
@@ -319,7 +319,7 @@
|
|
|
319
319
|
"pipeline/schemas/phases.json": "e063daf30685671cef7eaf2d07f35f49d7671b82e572e78463600db2a0aeea8c",
|
|
320
320
|
"pipeline/schemas/plan-todos.schema.json": "98fe2b9ba902425f13f067a494113d0c5fe03a2676e2c54fefbb319730214278",
|
|
321
321
|
"pipeline/schemas/planning-output.schema.json": "af1d8189a82398702f4db3460b3b0c78038d40f6aab210c191e9d491ad5d96e6",
|
|
322
|
-
"pipeline/schemas/prefs.schema.json": "
|
|
322
|
+
"pipeline/schemas/prefs.schema.json": "dbb2fb88ffb2cd3ca4bb3c317f51d5ee52d8ddd8c5c145cf1e1207fbfd3702cd",
|
|
323
323
|
"pipeline/schemas/review-file-exclusions.json": "2e8c44b45d21d2c82fc95aa2bf76ad3fbf2d5c68180c7b2ebf89c4a926688d77",
|
|
324
324
|
"pipeline/schemas/reviewer-output.schema.json": "5e3421e72a2e26ff65943bfdb7dc9afcfc10edad79a72407ecef6b1fafa40f8c",
|
|
325
325
|
"pipeline/schemas/route-config.schema.json": "6f606926c257b7ad3d2972e53d0b772714774140c473b9cb8c7cd9e52731020f",
|
|
@@ -465,7 +465,7 @@
|
|
|
465
465
|
"pipeline/scripts/uninstall.mjs": "adbce77c1136470a767c54517d7aae9c76aeca2dc04f2294e5689a019e91f5e0",
|
|
466
466
|
"pipeline/scripts/update-check.sh": "327a02306884093d2b93f395d2c297d5dc6b0c59757a740004bfafb13616fef0",
|
|
467
467
|
"pipeline/scripts/update-issue-progress.sh": "7a77d9e5bd60ffad06f3cc41088e1b1d49b4dc2842f287b7f6ba6023d7bd1a52",
|
|
468
|
-
"pipeline/scripts/usage-register.mjs": "
|
|
468
|
+
"pipeline/scripts/usage-register.mjs": "ca5b4341341a897915781635785e9dc543195735046411818b673c367ae75f98",
|
|
469
469
|
"pipeline/scripts/usage-report.mjs": "8b2c34e7e4881fb12489035593c79ff4372ee1eecfae483a38e2307a7e9d843d",
|
|
470
470
|
"pipeline/scripts/validate-analysis-doc.mjs": "ae56b7578ef51e008a99f84eba9def3e0f1dd2bd87a3880f2083aa98b365f7a1",
|
|
471
471
|
"pipeline/scripts/validate-analysis.mjs": "d2dc9ccf45f6ca2702908761939edd830d18b3b273016a4b449f26fe285d5ea1",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "20.2.
|
|
3
|
+
"version": "20.2.1",
|
|
4
4
|
"description": "6-phase AI development pipeline with full orchestration on Claude Code, Copilot CLI and Codex CLI. Analysis, planning, TDD, CLI-aware parallel review with consensus surfacing + Fable triage, default-FAIL evidence gates, secret + intent guards, per-phase cost ledger, persistent learnings memory, wiki generation, commit automation. Token-preserving uninstall.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -19,9 +19,13 @@ token counts, the credential-health summary. Never prompts, never code, never
|
|
|
19
19
|
diffs, never absolute paths. The registration call sends two fields: the
|
|
20
20
|
reporting user and the short hostname.
|
|
21
21
|
|
|
22
|
-
The reporting user is the **GitHub login** - `
|
|
23
|
-
`gh api user`, then the OS user. Never
|
|
24
|
-
real name and sometimes a corporate
|
|
22
|
+
The reporting user is the **GitHub login** - `usageLog.reportAs` when set, then
|
|
23
|
+
`identities[0].username`, then `gh api user`, then the OS user. Never
|
|
24
|
+
`identity.name`, which carries a person's real name and sometimes a corporate
|
|
25
|
+
title. `reportAs` exists for a machine with more than one identity: `identities[0]`
|
|
26
|
+
and the active `gh` account can both be a work account inside a work repo, and the
|
|
27
|
+
panel should attribute the run to the login that owns the ingest token, not to
|
|
28
|
+
whichever account happened to lead the list.
|
|
25
29
|
|
|
26
30
|
## 2. The token
|
|
27
31
|
|
|
@@ -1255,6 +1255,10 @@
|
|
|
1255
1255
|
"token": {
|
|
1256
1256
|
"type": "string",
|
|
1257
1257
|
"description": "Shared ingest token the receiving endpoint validates. May be left empty here and supplied via env MULTI_AGENT_USAGE_TOKEN instead. Local prefs only, never synced."
|
|
1258
|
+
},
|
|
1259
|
+
"reportAs": {
|
|
1260
|
+
"type": "string",
|
|
1261
|
+
"description": "Pins the reporting user (a SCM login) for a machine with more than one identity, where identities[0] or the active gh account may be a work account the usage panel should not attribute the run to. Reporting resolves this first, then identities[0].username, then gh api user, then the OS user. Local prefs only, never synced."
|
|
1258
1262
|
}
|
|
1259
1263
|
}
|
|
1260
1264
|
},
|
|
@@ -55,6 +55,8 @@ function readJson(file) {
|
|
|
55
55
|
|
|
56
56
|
/** The name this machine reports under: the GitHub login, never the git identity. */
|
|
57
57
|
export function reportingUser(prefs, { env = process.env } = {}) {
|
|
58
|
+
const pinned = prefs?.global?.usageLog?.reportAs;
|
|
59
|
+
if (typeof pinned === "string" && pinned.trim()) return pinned.trim();
|
|
58
60
|
const declared = prefs?.global?.identities?.[0]?.username;
|
|
59
61
|
if (typeof declared === "string" && declared.trim()) return declared.trim();
|
|
60
62
|
try {
|