agentxchain 2.103.0 → 2.105.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 +13 -7
- package/bin/agentxchain.js +16 -8
- package/dashboard/app.js +111 -7
- package/dashboard/components/blocked.js +95 -11
- package/dashboard/components/blockers.js +85 -86
- package/dashboard/components/coordinator-timeouts.js +13 -0
- package/dashboard/components/cross-repo.js +17 -12
- package/dashboard/components/gate.js +31 -11
- package/dashboard/components/initiative.js +173 -78
- package/dashboard/components/ledger.js +28 -0
- package/dashboard/components/live-status.js +39 -0
- package/dashboard/components/run-history.js +76 -1
- package/dashboard/components/timeline.js +5 -1
- package/dashboard/index.html +21 -0
- package/dashboard/live-observer.js +91 -0
- package/package.json +1 -1
- package/scripts/release-bump.sh +26 -3
- package/scripts/release-preflight.sh +82 -38
- package/src/commands/accept-turn.js +3 -3
- package/src/commands/decisions.js +98 -29
- package/src/commands/diff.js +27 -4
- package/src/commands/doctor.js +48 -16
- package/src/commands/generate.js +126 -1
- package/src/commands/history.js +21 -3
- package/src/commands/init.js +15 -97
- package/src/commands/multi.js +223 -54
- package/src/commands/phase.js +11 -13
- package/src/commands/reject-turn.js +1 -1
- package/src/commands/restart.js +28 -11
- package/src/commands/resume.js +6 -6
- package/src/commands/role.js +51 -14
- package/src/commands/run.js +5 -11
- package/src/commands/status.js +145 -13
- package/src/commands/step.js +36 -29
- package/src/lib/admission-control.js +14 -12
- package/src/lib/blocked-state.js +150 -0
- package/src/lib/conflict-actions.js +17 -0
- package/src/lib/context-section-parser.js +2 -0
- package/src/lib/continuity-status.js +1 -1
- package/src/lib/coordinator-blocker-presentation.js +127 -0
- package/src/lib/coordinator-event-narrative.js +43 -0
- package/src/lib/coordinator-gate-approval.js +98 -0
- package/src/lib/coordinator-gate-evaluation-presentation.js +57 -0
- package/src/lib/coordinator-next-actions.js +128 -0
- package/src/lib/coordinator-pending-gate-presentation.js +79 -0
- package/src/lib/coordinator-presentation-detail.js +11 -0
- package/src/lib/coordinator-repo-snapshots.js +53 -0
- package/src/lib/coordinator-repo-status-presentation.js +134 -0
- package/src/lib/dashboard/actions.js +105 -29
- package/src/lib/dashboard/bridge-server.js +7 -0
- package/src/lib/dashboard/coordinator-blockers.js +17 -0
- package/src/lib/dashboard/coordinator-repo-status.js +50 -0
- package/src/lib/dashboard/coordinator-timeout-status.js +34 -11
- package/src/lib/dashboard/state-reader.js +36 -1
- package/src/lib/dispatch-bundle.js +23 -0
- package/src/lib/export-diff.js +70 -38
- package/src/lib/export-verifier.js +3 -0
- package/src/lib/history-diff-summary.js +249 -0
- package/src/lib/manual-qa-fallback.js +18 -0
- package/src/lib/normalized-config.js +27 -22
- package/src/lib/planning-artifacts.js +131 -0
- package/src/lib/recent-event-summary.js +132 -0
- package/src/lib/repo-decisions.js +69 -28
- package/src/lib/report.js +353 -145
- package/src/lib/run-diff.js +4 -0
- package/src/lib/runtime-capabilities.js +222 -0
|
@@ -66,38 +66,15 @@ export function summarizeRepoDecisions(decisions, config) {
|
|
|
66
66
|
if (!Array.isArray(decisions) || decisions.length === 0) return null;
|
|
67
67
|
const active = decisions.filter((d) => d.status === 'active');
|
|
68
68
|
const overridden = decisions.filter((d) => d.status === 'overridden');
|
|
69
|
-
const
|
|
70
|
-
|
|
71
|
-
return {
|
|
72
|
-
id: decision.id,
|
|
73
|
-
category: decision.category,
|
|
74
|
-
statement: decision.statement,
|
|
75
|
-
role: decision.role,
|
|
76
|
-
run_id: decision.run_id,
|
|
77
|
-
overrides: decision.overrides || null,
|
|
78
|
-
durability: decision.durability || 'repo',
|
|
79
|
-
authority_level: authority?.level ?? null,
|
|
80
|
-
authority_source: authority?.source || null,
|
|
81
|
-
};
|
|
82
|
-
};
|
|
69
|
+
const activeEntries = active.map((decision) => addActiveAuthority(decision, config));
|
|
70
|
+
const overriddenEntries = overridden.map((decision) => addOverriddenAuthority(decision, config));
|
|
83
71
|
return {
|
|
84
72
|
total: decisions.length,
|
|
85
73
|
active_count: active.length,
|
|
86
74
|
overridden_count: overridden.length,
|
|
87
|
-
active:
|
|
88
|
-
overridden:
|
|
89
|
-
|
|
90
|
-
return {
|
|
91
|
-
id: d.id,
|
|
92
|
-
overridden_by: d.overridden_by,
|
|
93
|
-
statement: d.statement,
|
|
94
|
-
overrides: d.overrides || null,
|
|
95
|
-
durability: d.durability || 'repo',
|
|
96
|
-
role: d.role || null,
|
|
97
|
-
authority_level: authority?.level ?? null,
|
|
98
|
-
authority_source: authority?.source || null,
|
|
99
|
-
};
|
|
100
|
-
}),
|
|
75
|
+
active: activeEntries,
|
|
76
|
+
overridden: overriddenEntries,
|
|
77
|
+
operator_summary: buildRepoDecisionOperatorSummaryFromEntries(activeEntries, overriddenEntries),
|
|
101
78
|
};
|
|
102
79
|
}
|
|
103
80
|
|
|
@@ -105,6 +82,17 @@ export function buildRepoDecisionsSummary(decisions) {
|
|
|
105
82
|
return summarizeRepoDecisions(decisions, null);
|
|
106
83
|
}
|
|
107
84
|
|
|
85
|
+
export function buildRepoDecisionOperatorSummary(decisions, config) {
|
|
86
|
+
if (!Array.isArray(decisions) || decisions.length === 0) return null;
|
|
87
|
+
const activeEntries = decisions
|
|
88
|
+
.filter((decision) => decision.status === 'active')
|
|
89
|
+
.map((decision) => addActiveAuthority(decision, config));
|
|
90
|
+
const overriddenEntries = decisions
|
|
91
|
+
.filter((decision) => decision.status === 'overridden')
|
|
92
|
+
.map((decision) => addOverriddenAuthority(decision, config));
|
|
93
|
+
return buildRepoDecisionOperatorSummaryFromEntries(activeEntries, overriddenEntries);
|
|
94
|
+
}
|
|
95
|
+
|
|
108
96
|
// ── Write ───────────────────────────────────────────────────────────────────
|
|
109
97
|
|
|
110
98
|
export function appendRepoDecision(root, entry) {
|
|
@@ -255,6 +243,59 @@ export function renderRepoDecisionsMarkdown(activeDecisions, config) {
|
|
|
255
243
|
return lines.join('\n');
|
|
256
244
|
}
|
|
257
245
|
|
|
246
|
+
function addActiveAuthority(decision, config) {
|
|
247
|
+
const authority = getDecisionAuthorityMetadata(decision.role, config);
|
|
248
|
+
return {
|
|
249
|
+
id: decision.id,
|
|
250
|
+
category: decision.category,
|
|
251
|
+
statement: decision.statement,
|
|
252
|
+
role: decision.role,
|
|
253
|
+
run_id: decision.run_id,
|
|
254
|
+
overrides: decision.overrides || null,
|
|
255
|
+
durability: decision.durability || 'repo',
|
|
256
|
+
authority_level: authority?.level ?? null,
|
|
257
|
+
authority_source: authority?.source || null,
|
|
258
|
+
};
|
|
259
|
+
}
|
|
260
|
+
|
|
261
|
+
function addOverriddenAuthority(decision, config) {
|
|
262
|
+
const authority = getDecisionAuthorityMetadata(decision.role, config);
|
|
263
|
+
return {
|
|
264
|
+
id: decision.id,
|
|
265
|
+
overridden_by: decision.overridden_by,
|
|
266
|
+
statement: decision.statement,
|
|
267
|
+
overrides: decision.overrides || null,
|
|
268
|
+
durability: decision.durability || 'repo',
|
|
269
|
+
role: decision.role || null,
|
|
270
|
+
authority_level: authority?.level ?? null,
|
|
271
|
+
authority_source: authority?.source || null,
|
|
272
|
+
};
|
|
273
|
+
}
|
|
274
|
+
|
|
275
|
+
function buildRepoDecisionOperatorSummaryFromEntries(activeEntries, overriddenEntries) {
|
|
276
|
+
const activeCategories = [...new Set(
|
|
277
|
+
activeEntries
|
|
278
|
+
.map((decision) => decision.category)
|
|
279
|
+
.filter(Boolean),
|
|
280
|
+
)].sort();
|
|
281
|
+
|
|
282
|
+
const highestAuthority = activeEntries
|
|
283
|
+
.filter((decision) => typeof decision.authority_level === 'number')
|
|
284
|
+
.reduce((current, decision) => {
|
|
285
|
+
if (!current || decision.authority_level > current.authority_level) return decision;
|
|
286
|
+
return current;
|
|
287
|
+
}, null);
|
|
288
|
+
|
|
289
|
+
return {
|
|
290
|
+
active_categories: activeCategories,
|
|
291
|
+
highest_active_authority_level: highestAuthority?.authority_level ?? null,
|
|
292
|
+
highest_active_authority_role: highestAuthority?.role ?? null,
|
|
293
|
+
highest_active_authority_source: highestAuthority?.authority_source ?? null,
|
|
294
|
+
superseding_active_count: activeEntries.filter((decision) => decision.overrides).length,
|
|
295
|
+
overridden_with_successor_count: overriddenEntries.filter((decision) => decision.overridden_by).length,
|
|
296
|
+
};
|
|
297
|
+
}
|
|
298
|
+
|
|
258
299
|
// ── Constants ───────────────────────────────────────────────────────────────
|
|
259
300
|
|
|
260
301
|
export { REPO_DECISIONS_PATH };
|