guardian-framework 0.1.85 → 0.1.86
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/dist/cli.js
CHANGED
|
@@ -3197,7 +3197,7 @@ __export(exports_package, {
|
|
|
3197
3197
|
bin: () => bin,
|
|
3198
3198
|
author: () => author
|
|
3199
3199
|
});
|
|
3200
|
-
var name = "guardian-framework", version = "0.1.
|
|
3200
|
+
var name = "guardian-framework", version = "0.1.86", description = "Token-optimized agentic framework scaffolder with pi-first architecture", type = "module", main = "dist/exports.js", exports, types = "dist/exports.d.ts", bin, files, engines, scripts, publishConfig, pi, repository, homepage = "https://github.com/arman-jalili/guardian-framework#readme", bugs, dependencies, devDependencies, keywords, author = "Arman Wolkensteiner-Jalili", license = "MIT", package_default;
|
|
3201
3201
|
var init_package = __esm(() => {
|
|
3202
3202
|
exports = {
|
|
3203
3203
|
".": {
|
package/dist/exports.js
CHANGED
|
@@ -1982,7 +1982,7 @@ __export(exports_package, {
|
|
|
1982
1982
|
bin: () => bin,
|
|
1983
1983
|
author: () => author
|
|
1984
1984
|
});
|
|
1985
|
-
var name = "guardian-framework", version = "0.1.
|
|
1985
|
+
var name = "guardian-framework", version = "0.1.86", description = "Token-optimized agentic framework scaffolder with pi-first architecture", type = "module", main = "dist/exports.js", exports, types = "dist/exports.d.ts", bin, files, engines, scripts, publishConfig, pi, repository, homepage = "https://github.com/arman-jalili/guardian-framework#readme", bugs, dependencies, devDependencies, keywords, author = "Arman Wolkensteiner-Jalili", license = "MIT", package_default;
|
|
1986
1986
|
var init_package = __esm(() => {
|
|
1987
1987
|
exports = {
|
|
1988
1988
|
".": {
|
package/package.json
CHANGED
|
@@ -133,6 +133,30 @@ function isJavaProject(cwd?: string): boolean {
|
|
|
133
133
|
}
|
|
134
134
|
}
|
|
135
135
|
|
|
136
|
+
/** Get the test runner command for a project language. */
|
|
137
|
+
function testRunnerFromCwd(cwd?: string): string | null {
|
|
138
|
+
if (!cwd) return null;
|
|
139
|
+
try {
|
|
140
|
+
if (existsSync(join(cwd, "Cargo.toml"))) return "cargo test";
|
|
141
|
+
if (existsSync(join(cwd, "go.mod"))) return "go test";
|
|
142
|
+
if (existsSync(join(cwd, "pyproject.toml")) || existsSync(join(cwd, "requirements.txt"))) return "pytest";
|
|
143
|
+
if (existsSync(join(cwd, "package.json"))) return "bun test";
|
|
144
|
+
} catch {}
|
|
145
|
+
return null;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
/** Get the implementation file suffix for a project language. */
|
|
149
|
+
function implSuffix(cwd?: string): string {
|
|
150
|
+
if (!cwd) return "ts";
|
|
151
|
+
try {
|
|
152
|
+
if (existsSync(join(cwd, "pom.xml")) || existsSync(join(cwd, "build.gradle")) || existsSync(join(cwd, "build.gradle.kts"))) return "java";
|
|
153
|
+
if (existsSync(join(cwd, "Cargo.toml"))) return "rs";
|
|
154
|
+
if (existsSync(join(cwd, "go.mod"))) return "go";
|
|
155
|
+
if (existsSync(join(cwd, "pyproject.toml")) || existsSync(join(cwd, "requirements.txt"))) return "py";
|
|
156
|
+
} catch {}
|
|
157
|
+
return "ts";
|
|
158
|
+
}
|
|
159
|
+
|
|
136
160
|
// ── Issue Generation ──
|
|
137
161
|
|
|
138
162
|
export function generateIssueMarkdown(
|
|
@@ -158,7 +182,7 @@ export function generateIssueMarkdown(
|
|
|
158
182
|
// Language-aware test paths
|
|
159
183
|
const isJava = isJavaProject(cwd);
|
|
160
184
|
const testBaseDir = isJava ? "src/test/java" : "tests/unit";
|
|
161
|
-
const testRunnerHint = isJava ? "mvn test" : "bun test";
|
|
185
|
+
const testRunnerHint = isJava ? "mvn test" : testRunnerFromCwd(cwd) || "bun test";
|
|
162
186
|
|
|
163
187
|
const testLine = tdd
|
|
164
188
|
? ` - "update: ${testBaseDir}/ (failing tests already generated — make them pass)"`
|
|
@@ -252,7 +276,7 @@ ${yamlAcs}
|
|
|
252
276
|
All Acceptance Criteria in that file must be satisfied before this issue is closed.
|
|
253
277
|
Component focus: ${comp.name}.
|
|
254
278
|
CONCRETE IMPLEMENTATIONS MUST BE CREATED — interface stubs from the contract freeze
|
|
255
|
-
are not sufficient. Each domain service/aggregate needs a concrete .impl.${
|
|
279
|
+
are not sufficient. Each domain service/aggregate needs a concrete .impl.${implSuffix(cwd)} file.
|
|
256
280
|
|
|
257
281
|
file_changes:
|
|
258
282
|
- "create: src/${moduleId}/domain/"
|
|
@@ -307,7 +331,7 @@ ${stepsMarkdown}
|
|
|
307
331
|
> **Agent instructions:**
|
|
308
332
|
> 1. Open \`.pi/architecture/modules/${slice.module}.md\` — read the full Acceptance Criteria table
|
|
309
333
|
> 2. Identify which rows are your responsibility for **${comp.name}**
|
|
310
|
-
> 3. Create concrete implementation files (\`.impl.${
|
|
334
|
+
> 3. Create concrete implementation files (\`.impl.${implSuffix(cwd)}\`) in \`src/${moduleId}/\` — the interface stubs from the contract freeze are NOT enough
|
|
311
335
|
> 4. Each domain aggregate/service must have a working implementation with business logic
|
|
312
336
|
> 5. Verify each AC row is satisfied in \`src/\` before marking done
|
|
313
337
|
> 6. Run validators and create MR
|