@nyxa/nyx-agent 0.9.0 → 0.9.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/README.md
CHANGED
|
@@ -21,9 +21,10 @@ For every run NyxAgent:
|
|
|
21
21
|
The agent only implements, reviews, and revises. Every git/gh side effect —
|
|
22
22
|
commit, push, pull request — is performed by the engine, so closing the loop
|
|
23
23
|
never depends on the model. Issues are closed by GitHub when the PR merges
|
|
24
|
-
(`Closes #n` in the PR body); parent PRD/plan issues
|
|
25
|
-
|
|
26
|
-
|
|
24
|
+
(`Closes #n` in the PR body); parent PRD/plan issues referenced explicitly from
|
|
25
|
+
child descriptions are grouped for selection, while parent close lines are added
|
|
26
|
+
only when NyxAgent can prove the PR completes their remaining open executable
|
|
27
|
+
children. The human merges the PR.
|
|
27
28
|
|
|
28
29
|
The workflow shape is fixed (not configurable). Only `.nyxagent/prompts/execution.md`
|
|
29
30
|
is editable.
|
|
@@ -105,9 +105,14 @@ function formatParentGroup(parent) {
|
|
|
105
105
|
if (!parent) {
|
|
106
106
|
return "Parent";
|
|
107
107
|
}
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
108
|
+
if (!parent.title) {
|
|
109
|
+
return `Parent #${parent.number}`;
|
|
110
|
+
}
|
|
111
|
+
const titledGroup = parseLeadingTitleGroup(parent.title);
|
|
112
|
+
if (titledGroup) {
|
|
113
|
+
return `${titledGroup.kind} #${parent.number}: ${titledGroup.name}`;
|
|
114
|
+
}
|
|
115
|
+
return `Parent #${parent.number}: ${parent.title}`;
|
|
111
116
|
}
|
|
112
117
|
function parseGroupLabel(label) {
|
|
113
118
|
const match = /^(plan|prd)\s*[:/=-]\s*(.+)$/i.exec(label.trim());
|
|
@@ -123,6 +128,20 @@ function parseBracketedTitleGroup(title) {
|
|
|
123
128
|
}
|
|
124
129
|
return formatGroupLabel(match[1], match[2]);
|
|
125
130
|
}
|
|
131
|
+
function parseLeadingTitleGroup(title) {
|
|
132
|
+
const match = /^(plan|prd)\s*[:/=-]\s*(.+)$/i.exec(title.trim());
|
|
133
|
+
if (!match) {
|
|
134
|
+
return undefined;
|
|
135
|
+
}
|
|
136
|
+
const name = match[2].trim();
|
|
137
|
+
if (!name) {
|
|
138
|
+
return undefined;
|
|
139
|
+
}
|
|
140
|
+
return {
|
|
141
|
+
kind: match[1].toLowerCase() === "prd" ? "PRD" : "Plan",
|
|
142
|
+
name,
|
|
143
|
+
};
|
|
144
|
+
}
|
|
126
145
|
function formatGroupLabel(kind, rawName) {
|
|
127
146
|
const name = rawName.trim();
|
|
128
147
|
if (!name) {
|
|
@@ -376,7 +376,7 @@ function parseExplicitParentReferenceLine(line) {
|
|
|
376
376
|
.replace(/^[-*]\s+/, "")
|
|
377
377
|
.replace(/^>\s+/, "");
|
|
378
378
|
const issueRef = "(?:#|[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+#|https://github\\.com/[A-Za-z0-9_.-]+/[A-Za-z0-9_.-]+/issues/)(\\d+)";
|
|
379
|
-
const match = new RegExp(`^(?:parent(?:\\s+issue)?|prd|plan)\\s*(?::|=|-)?\\s*${issueRef}\\s*$`, "i").exec(trimmed);
|
|
379
|
+
const match = new RegExp(`^(?:parent(?:\\s+(?:issue|prd|plan))?|prd|plan)\\s*(?::|=|-)?\\s*${issueRef}\\s*$`, "i").exec(trimmed);
|
|
380
380
|
if (!match) {
|
|
381
381
|
return undefined;
|
|
382
382
|
}
|