guardian-framework 0.1.139 → 0.1.141
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
|
@@ -3206,7 +3206,7 @@ __export(exports_package, {
|
|
|
3206
3206
|
bin: () => bin,
|
|
3207
3207
|
author: () => author
|
|
3208
3208
|
});
|
|
3209
|
-
var name = "guardian-framework", version = "0.1.
|
|
3209
|
+
var name = "guardian-framework", version = "0.1.141", 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;
|
|
3210
3210
|
var init_package = __esm(() => {
|
|
3211
3211
|
exports = {
|
|
3212
3212
|
".": {
|
|
@@ -11102,7 +11102,7 @@ function analyzeChanges(targetDir, manifest, templateFiles, context, options) {
|
|
|
11102
11102
|
if (!filePath.startsWith(".pi/"))
|
|
11103
11103
|
continue;
|
|
11104
11104
|
const fullPath = path9.join(targetDir, filePath);
|
|
11105
|
-
if (isUserOwnedPiPath(filePath)) {
|
|
11105
|
+
if (fs10.existsSync(fullPath) && isUserOwnedPiPath(filePath)) {
|
|
11106
11106
|
changes.push({
|
|
11107
11107
|
path: filePath,
|
|
11108
11108
|
action: "preserve",
|
|
@@ -11122,7 +11122,7 @@ function analyzeChanges(targetDir, manifest, templateFiles, context, options) {
|
|
|
11122
11122
|
changes.push({ path: filePath, action: "regenerate", reason: "Export file" });
|
|
11123
11123
|
continue;
|
|
11124
11124
|
}
|
|
11125
|
-
if (record.category === "user") {
|
|
11125
|
+
if (record.category === "user" && fs10.existsSync(fullPath)) {
|
|
11126
11126
|
changes.push({
|
|
11127
11127
|
path: filePath,
|
|
11128
11128
|
action: "preserve",
|
package/dist/exports.js
CHANGED
|
@@ -1991,7 +1991,7 @@ __export(exports_package, {
|
|
|
1991
1991
|
bin: () => bin,
|
|
1992
1992
|
author: () => author
|
|
1993
1993
|
});
|
|
1994
|
-
var name = "guardian-framework", version = "0.1.
|
|
1994
|
+
var name = "guardian-framework", version = "0.1.141", 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;
|
|
1995
1995
|
var init_package = __esm(() => {
|
|
1996
1996
|
exports = {
|
|
1997
1997
|
".": {
|
|
@@ -10226,7 +10226,7 @@ function analyzeChanges(targetDir, manifest, templateFiles, context, options) {
|
|
|
10226
10226
|
if (!filePath.startsWith(".pi/"))
|
|
10227
10227
|
continue;
|
|
10228
10228
|
const fullPath = path5.join(targetDir, filePath);
|
|
10229
|
-
if (isUserOwnedPiPath(filePath)) {
|
|
10229
|
+
if (fs6.existsSync(fullPath) && isUserOwnedPiPath(filePath)) {
|
|
10230
10230
|
changes.push({
|
|
10231
10231
|
path: filePath,
|
|
10232
10232
|
action: "preserve",
|
|
@@ -10246,7 +10246,7 @@ function analyzeChanges(targetDir, manifest, templateFiles, context, options) {
|
|
|
10246
10246
|
changes.push({ path: filePath, action: "regenerate", reason: "Export file" });
|
|
10247
10247
|
continue;
|
|
10248
10248
|
}
|
|
10249
|
-
if (record.category === "user") {
|
|
10249
|
+
if (record.category === "user" && fs6.existsSync(fullPath)) {
|
|
10250
10250
|
changes.push({
|
|
10251
10251
|
path: filePath,
|
|
10252
10252
|
action: "preserve",
|
package/package.json
CHANGED
|
@@ -1823,21 +1823,35 @@ export default function (pi: ExtensionAPI) {
|
|
|
1823
1823
|
}
|
|
1824
1824
|
const docText = fs.readFileSync(path.join(modulesDir, docFile), "utf-8");
|
|
1825
1825
|
const catNames = svcByCtx.get(ctx)!;
|
|
1826
|
+
// Scope to the Application/Service Layer section — module docs
|
|
1827
|
+
// legitimately title it "### Application Layer (`application/`)"
|
|
1828
|
+
// or "### Service Layer (application)".
|
|
1829
|
+
const secMatch = docText.match(/###\s+(?:Application|Service)\s+Layer[^\n]*\n([\s\S]*?)(?=\n##\s|$)/i);
|
|
1830
|
+
const section = secMatch ? secMatch[1] : docText;
|
|
1831
|
+
// Catalog rows: markdown table rows whose FIRST cell is the service
|
|
1832
|
+
// name. This is the real invariant (the service is presented as a
|
|
1833
|
+
// row in the catalog table) — not a specific header wording.
|
|
1834
|
+
const rowServices = new Set<string>();
|
|
1835
|
+
for (const line of section.split("\n")) {
|
|
1836
|
+
if (!line.trim().startsWith("|")) continue;
|
|
1837
|
+
const first = (line.split("|")[1] ?? "").trim().replace(/^`|`$/g, "");
|
|
1838
|
+
if (first && !/^-+$/.test(first)) rowServices.add(first);
|
|
1839
|
+
}
|
|
1826
1840
|
let miss = 0;
|
|
1827
|
-
for (const nm of catNames)
|
|
1828
|
-
|
|
1829
|
-
|
|
1830
|
-
|
|
1831
|
-
|
|
1841
|
+
for (const nm of catNames) {
|
|
1842
|
+
if (!rowServices.has(nm)) {
|
|
1843
|
+
checks.push(" FAIL " + docFile + ": catalog service " + nm + " is not presented as a row in the Application Layer catalog section" +
|
|
1844
|
+
(docText.includes(nm) ? " (the name appears in the doc, but not as a catalog row)" : ""));
|
|
1845
|
+
miss++;
|
|
1846
|
+
}
|
|
1832
1847
|
}
|
|
1833
|
-
|
|
1834
|
-
|
|
1835
|
-
|
|
1848
|
+
issues += miss;
|
|
1849
|
+
// Implemented-seam / planned-pointer checks apply only to WIDE
|
|
1850
|
+
// catalog rows (5-column: Service | use case | FR | Status |
|
|
1851
|
+
// Delivered by). A 3-column catalog is accepted as-is.
|
|
1852
|
+
for (const line of section.split("\n")) {
|
|
1836
1853
|
if (!line.trim().startsWith("|")) continue;
|
|
1837
1854
|
const cells = line.split("|").map((c) => c.trim());
|
|
1838
|
-
// Locate the mapsToFr column (FR-00x[, FR-00y]*) — use-case
|
|
1839
|
-
// text may contain escaped pipes (\|) which naive split
|
|
1840
|
-
// fragments, so fixed indexes are unreliable.
|
|
1841
1855
|
const frIdx = cells.findIndex((c, i) => i >= 2 && /^((FR|NFR)-\d[\d, ]*)(,\s*(FR|NFR)-\d[\d, ]*)*$/.test(c));
|
|
1842
1856
|
if (cells.length < 6 || frIdx < 0) continue;
|
|
1843
1857
|
const svcName = cells[1].replace(/^`|`$/g, "");
|
|
@@ -1865,7 +1879,8 @@ export default function (pi: ExtensionAPI) {
|
|
|
1865
1879
|
}
|
|
1866
1880
|
}
|
|
1867
1881
|
}
|
|
1868
|
-
|
|
1882
|
+
|
|
1883
|
+
checks.push(issues === 0
|
|
1869
1884
|
? " PASS Catalog blocks + seams verified for all " + svcV.length + " application services"
|
|
1870
1885
|
: " FAIL " + issues + " catalog/seam issue(s)");
|
|
1871
1886
|
if (issues > 0) allPassed = false;
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
{
|
|
2
|
-
"timestamp": "2026-09-
|
|
2
|
+
"timestamp": "2026-09-25T19:29:02Z",
|
|
3
3
|
"mode": "all",
|
|
4
4
|
"stages_run": [],
|
|
5
5
|
"summary": {
|
|
@@ -8,7 +8,7 @@
|
|
|
8
8
|
"failed": 1,
|
|
9
9
|
"skipped": 12
|
|
10
10
|
},
|
|
11
|
-
"duration_seconds":
|
|
11
|
+
"duration_seconds": 1,
|
|
12
12
|
"results": [
|
|
13
13
|
{
|
|
14
14
|
"name": "check_mr_traceability.sh",
|