guardian-framework 0.1.117 → 0.1.119
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
|
@@ -3202,7 +3202,7 @@ __export(exports_package, {
|
|
|
3202
3202
|
bin: () => bin,
|
|
3203
3203
|
author: () => author
|
|
3204
3204
|
});
|
|
3205
|
-
var name = "guardian-framework", version = "0.1.
|
|
3205
|
+
var name = "guardian-framework", version = "0.1.119", 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;
|
|
3206
3206
|
var init_package = __esm(() => {
|
|
3207
3207
|
exports = {
|
|
3208
3208
|
".": {
|
package/dist/exports.js
CHANGED
|
@@ -1987,7 +1987,7 @@ __export(exports_package, {
|
|
|
1987
1987
|
bin: () => bin,
|
|
1988
1988
|
author: () => author
|
|
1989
1989
|
});
|
|
1990
|
-
var name = "guardian-framework", version = "0.1.
|
|
1990
|
+
var name = "guardian-framework", version = "0.1.119", 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;
|
|
1991
1991
|
var init_package = __esm(() => {
|
|
1992
1992
|
exports = {
|
|
1993
1993
|
".": {
|
package/package.json
CHANGED
|
@@ -422,6 +422,19 @@ export default function (pi: ExtensionAPI) {
|
|
|
422
422
|
parsedJson = mergeRawJson(existing, parsedJson);
|
|
423
423
|
} catch { /* ignore unreadable prior state */ }
|
|
424
424
|
}
|
|
425
|
+
// Backfill business context from the explore stub if the agent never
|
|
426
|
+
// supplied it (front matter business_context survives across saves).
|
|
427
|
+
if (String(parsedJson.businessContext ?? "").trim() === "") {
|
|
428
|
+
const stubPath = path.join(ctx.cwd, ".pi", "domain", "exploration", sessionId + ".md");
|
|
429
|
+
if (fs.existsSync(stubPath)) {
|
|
430
|
+
try {
|
|
431
|
+
const stub = fs.readFileSync(stubPath, "utf-8");
|
|
432
|
+
const m = stub.match(/^business_context:\s*"((?:[^"\\]|\\.)*)"/m);
|
|
433
|
+
if (m) parsedJson.businessContext = m[1].replace(/\\"/g, '"');
|
|
434
|
+
} catch { /* ignore */ }
|
|
435
|
+
}
|
|
436
|
+
}
|
|
437
|
+
|
|
425
438
|
|
|
426
439
|
const now = new Date().toISOString().split("T")[0];
|
|
427
440
|
const explorationDir = path.join(ctx.cwd, ".pi", "domain", "exploration");
|
|
@@ -606,6 +619,30 @@ export default function (pi: ExtensionAPI) {
|
|
|
606
619
|
addCheck("Modeling depth rules (ADR-008) - skipped", true, "no session raw.json");
|
|
607
620
|
}
|
|
608
621
|
|
|
622
|
+
// 3b. Completeness advisory: flag empty core sections + which protocol
|
|
623
|
+
// pass fills them (empty by construction must not look like success).
|
|
624
|
+
const rawPath = path.join(ctx.cwd, ".pi", "domain", "exploration", sessionId + ".raw.json");
|
|
625
|
+
if (fs.existsSync(rawPath)) {
|
|
626
|
+
try {
|
|
627
|
+
const raw = JSON.parse(fs.readFileSync(rawPath, "utf-8")) as Record<string, unknown>;
|
|
628
|
+
const sections: Array<[string, string, string]> = [
|
|
629
|
+
["boundedContexts", "bounded contexts", "strategic pass (step 1)"],
|
|
630
|
+
["functionalRequirements", "functional requirements", "requirements pass (step 1b)"],
|
|
631
|
+
["nonFunctionalRequirements", "non-functional requirements", "requirements pass (step 1b)"],
|
|
632
|
+
["entities", "entities", "per-context pass (step 2)"],
|
|
633
|
+
["domainEvents", "domain events", "per-context pass (step 2)"],
|
|
634
|
+
["ubiquitousLanguage", "ubiquitous-language terms", "per-context pass (step 2)"],
|
|
635
|
+
];
|
|
636
|
+
const empty = sections.filter(([key]) => !Array.isArray(raw[key]) || (raw[key] as unknown[]).length === 0);
|
|
637
|
+
if (empty.length > 0) {
|
|
638
|
+
const hint = empty
|
|
639
|
+
.map(([, label, pass]) => `${label} (${pass})`)
|
|
640
|
+
.join("; ");
|
|
641
|
+
checks.push(" NOTE empty sections — run the matching pass: " + hint);
|
|
642
|
+
}
|
|
643
|
+
} catch { /* ignore */ }
|
|
644
|
+
}
|
|
645
|
+
|
|
609
646
|
// 4. Source code drift
|
|
610
647
|
const scriptPath = path.join(ctx.cwd, ".pi", "scripts", "validate-ubiquitous-language.sh");
|
|
611
648
|
if (fs.existsSync(scriptPath)) {
|
|
@@ -809,6 +846,7 @@ export default function (pi: ExtensionAPI) {
|
|
|
809
846
|
"1. STRATEGIC PASS (this message): reply with ONLY this JSON, nothing else —",
|
|
810
847
|
'```json',
|
|
811
848
|
'{',
|
|
849
|
+
' "businessContext": "one-line summary of the domain",',
|
|
812
850
|
' "actors": [{ "name": "...", "description": "...", "interactions": "..." }],',
|
|
813
851
|
' "assumptions": [{ "assumption": "...", "impactIfWrong": "...", "mitigation": "..." }],',
|
|
814
852
|
' "boundedContexts": [',
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2026-09-04T19:
|
|
2
|
+
"timestamp": "2026-09-04T19:42:16Z",
|
|
3
3
|
"mode": "all",
|
|
4
4
|
"stages_run": [],
|
|
5
5
|
"summary": {
|
|
@@ -56,7 +56,7 @@
|
|
|
56
56
|
"name": "cargo test --lib",
|
|
57
57
|
"status": "fail",
|
|
58
58
|
"message": "unit test failures",
|
|
59
|
-
"duration":
|
|
59
|
+
"duration": 0
|
|
60
60
|
},
|
|
61
61
|
{
|
|
62
62
|
"name": "integration",
|