multi-agents-cli 1.0.92 → 1.0.94
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/core/workflow/agent.js +37 -1
- package/core/workflow/reset.js +1 -1
- package/package.json +1 -1
package/core/workflow/agent.js
CHANGED
|
@@ -863,6 +863,42 @@ const main = async () => {
|
|
|
863
863
|
}
|
|
864
864
|
}
|
|
865
865
|
|
|
866
|
+
|
|
867
|
+
// Soft gate - shared selected but missing prerequisites
|
|
868
|
+
if (project === 'shared') {
|
|
869
|
+
const clientCompleted = buildEntries.filter(e => e.scope === 'client' && e.status === 'COMPLETED');
|
|
870
|
+
const backendCompleted = buildEntries.filter(e => e.scope === 'backend' && e.status === 'COMPLETED');
|
|
871
|
+
const clientUIДone = clientCompleted.some(e => e.agent === 'UI');
|
|
872
|
+
const backendINITDone = backendCompleted.some(e => e.agent === 'INIT');
|
|
873
|
+
const missing = [];
|
|
874
|
+
|
|
875
|
+
if (!clientUIДone) {
|
|
876
|
+
missing.push({ item: 'Client scaffold', detail: 'no completed client work found — SECURITY needs to know what auth patterns the client uses' });
|
|
877
|
+
}
|
|
878
|
+
if (!backendINITDone) {
|
|
879
|
+
missing.push({ item: 'Backend INIT', detail: 'backend not scaffolded yet — SECURITY needs to know the backend auth strategy and DB schema' });
|
|
880
|
+
}
|
|
881
|
+
if (!contracts.hasContent) {
|
|
882
|
+
missing.push({ item: 'CONTRACTS.md', detail: 'no shared types defined — auth utilities should align with established contracts' });
|
|
883
|
+
}
|
|
884
|
+
|
|
885
|
+
if (missing.length > 0) {
|
|
886
|
+
console.log(`\n${yellow(' ⚠ Shared prerequisites not fully met:')}
|
|
887
|
+
`);
|
|
888
|
+
missing.forEach(m => {
|
|
889
|
+
console.log(` ${dim('→')} ${bold(m.item)}`);
|
|
890
|
+
console.log(` ${m.detail}\n`);
|
|
891
|
+
});
|
|
892
|
+
console.log(` ${dim('The agent will proceed autonomously and make assumptions about auth patterns.')}`);
|
|
893
|
+
console.log(` ${dim('These may need revision once client and backend are fully established.\n')}`);
|
|
894
|
+
const proceedIdx = await arrowSelect('Shared prerequisites not met:', [
|
|
895
|
+
{ label: `${green('→')} Proceed anyway` },
|
|
896
|
+
{ label: `${yellow('←')} Go back — pick a different scope ${dim('← recommended')}` },
|
|
897
|
+
], rl);
|
|
898
|
+
if (proceedIdx === 1) continue flowLoop;
|
|
899
|
+
}
|
|
900
|
+
}
|
|
901
|
+
|
|
866
902
|
// ── Select agent (with re-selection loop + back to scope) ────────────────────
|
|
867
903
|
|
|
868
904
|
const agentOptions = AGENTS[project] || [];
|
|
@@ -1197,7 +1233,7 @@ const main = async () => {
|
|
|
1197
1233
|
if (backendLaunchTiming === 'now') {
|
|
1198
1234
|
const beTimestamp = Date.now();
|
|
1199
1235
|
const beBranchName = `agent/backend/init/${beTimestamp}`;
|
|
1200
|
-
const beWorktreeName =
|
|
1236
|
+
const beWorktreeName = `backend-${config.projectName.toLowerCase().replace(/\s+/g, '-')}-init-${beTimestamp}`;
|
|
1201
1237
|
const beWorktreePath = path.join(ROOT, 'worktrees', beWorktreeName);
|
|
1202
1238
|
|
|
1203
1239
|
console.log(`\n ${dim('Setting up backend/INIT workspace...')}\n`);
|
package/core/workflow/reset.js
CHANGED
|
@@ -79,7 +79,7 @@ const main = async () => {
|
|
|
79
79
|
for (const scope of ['client', 'backend', 'shared']) {
|
|
80
80
|
const agents = tracking[scope] || {};
|
|
81
81
|
for (const [agent, data] of Object.entries(agents)) {
|
|
82
|
-
if (data && data.branch) {
|
|
82
|
+
if (data && data.branch && data.status !== 'COMPLETED') {
|
|
83
83
|
activeAgents.push({ scope, agent, data });
|
|
84
84
|
}
|
|
85
85
|
}
|
package/package.json
CHANGED