@vectros-ai/blueprints 0.6.2 → 0.6.4
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/CHANGELOG.md +47 -0
- package/README.md +10 -0
- package/dist/index.js +88 -21
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +88 -21
- package/dist/index.mjs.map +1 -1
- package/guides/agentic-sdlc.md +117 -3
- package/package.json +1 -1
- package/prompts/agentic-sdlc-agent.md +85 -10
package/dist/index.mjs
CHANGED
|
@@ -1025,9 +1025,22 @@ var codingAgentMemory = {
|
|
|
1025
1025
|
var coding_agent_memory_default = codingAgentMemory;
|
|
1026
1026
|
|
|
1027
1027
|
// src/blueprints/agentic-sdlc.ts
|
|
1028
|
+
var DATA_PLANE_ACTIONS = [
|
|
1029
|
+
"records:r",
|
|
1030
|
+
"records:c",
|
|
1031
|
+
"records:u",
|
|
1032
|
+
"search:r",
|
|
1033
|
+
"schemas:r",
|
|
1034
|
+
"inference:r",
|
|
1035
|
+
"documents:r",
|
|
1036
|
+
"documents:c",
|
|
1037
|
+
"folders:r",
|
|
1038
|
+
"folders:c"
|
|
1039
|
+
];
|
|
1040
|
+
var EDITOR_ACTIONS = [...DATA_PLANE_ACTIONS, "records:d", "documents:d", "folders:d"];
|
|
1028
1041
|
var agenticSdlc = {
|
|
1029
1042
|
name: "agentic-sdlc",
|
|
1030
|
-
version: "1.
|
|
1043
|
+
version: "1.2.0",
|
|
1031
1044
|
description: "A whole-SDLC system of record for an AI development team \u2014 decisions, designs, references, runbooks, post-mortems (as documents) plus controls, conventions, gotchas, and a glossary (as records), cross-linked and recalled by meaning.",
|
|
1032
1045
|
contextId: "agentic-sdlc",
|
|
1033
1046
|
contextName: "Agentic SDLC Knowledge Base",
|
|
@@ -1462,6 +1475,19 @@ var agenticSdlc = {
|
|
|
1462
1475
|
fieldType: "date",
|
|
1463
1476
|
description: "ISO-8601 last-reviewed date. Range-queryable.",
|
|
1464
1477
|
renderHints: { label: "Reviewed on", widget: "date", order: 12 }
|
|
1478
|
+
},
|
|
1479
|
+
{
|
|
1480
|
+
// Provenance for sync: the source file this record was distilled from. A
|
|
1481
|
+
// record can't carry an in-file marker the way a document can (many records
|
|
1482
|
+
// come from one file), so it names its source instead — a change to that file
|
|
1483
|
+
// finds (equality lookup) and re-extracts exactly its records. Equality, not
|
|
1484
|
+
// range: file-level is the sync unit (re-extraction reprocesses the whole file),
|
|
1485
|
+
// and the schema keeps its single range lookup for the date row.
|
|
1486
|
+
fieldId: "sourceRef",
|
|
1487
|
+
fieldType: "string",
|
|
1488
|
+
filterable: true,
|
|
1489
|
+
description: "The source file (repo path) this record was extracted from \u2014 its provenance; a change to that file re-extracts its records. The specific section is encoded in the record externalId.",
|
|
1490
|
+
renderHints: { label: "Source ref", widget: "text", order: 13 }
|
|
1465
1491
|
}
|
|
1466
1492
|
],
|
|
1467
1493
|
lookupFields: [
|
|
@@ -1471,7 +1497,8 @@ var agenticSdlc = {
|
|
|
1471
1497
|
"area",
|
|
1472
1498
|
"verifiedBy",
|
|
1473
1499
|
"relatedDecision",
|
|
1474
|
-
{ fieldName: "reviewedOn", rangeEnabled: true }
|
|
1500
|
+
{ fieldName: "reviewedOn", rangeEnabled: true },
|
|
1501
|
+
"sourceRef"
|
|
1475
1502
|
]
|
|
1476
1503
|
},
|
|
1477
1504
|
{
|
|
@@ -1548,9 +1575,23 @@ var agenticSdlc = {
|
|
|
1548
1575
|
fieldType: "date",
|
|
1549
1576
|
description: "ISO-8601 \u2014 when last revised. Range-queryable.",
|
|
1550
1577
|
renderHints: { label: "Updated on", widget: "date", order: 9 }
|
|
1578
|
+
},
|
|
1579
|
+
{
|
|
1580
|
+
// Provenance for sync — see the note on `control.sourceRef`.
|
|
1581
|
+
fieldId: "sourceRef",
|
|
1582
|
+
fieldType: "string",
|
|
1583
|
+
filterable: true,
|
|
1584
|
+
description: "The source file (repo path) this record was extracted from \u2014 its provenance; a change to that file re-extracts its records. The specific section is encoded in the record externalId.",
|
|
1585
|
+
renderHints: { label: "Source ref", widget: "text", order: 10 }
|
|
1551
1586
|
}
|
|
1552
1587
|
],
|
|
1553
|
-
lookupFields: [
|
|
1588
|
+
lookupFields: [
|
|
1589
|
+
"area",
|
|
1590
|
+
"status",
|
|
1591
|
+
"establishedBy",
|
|
1592
|
+
{ fieldName: "updatedOn", rangeEnabled: true },
|
|
1593
|
+
"sourceRef"
|
|
1594
|
+
]
|
|
1554
1595
|
},
|
|
1555
1596
|
{
|
|
1556
1597
|
// A GOTCHA / sharp edge: a symptom, its cause, and the fix. A tight typed
|
|
@@ -1604,9 +1645,22 @@ var agenticSdlc = {
|
|
|
1604
1645
|
fieldType: "date",
|
|
1605
1646
|
description: "ISO-8601 \u2014 when first hit. Range-queryable.",
|
|
1606
1647
|
renderHints: { label: "Discovered on", widget: "date", order: 7 }
|
|
1648
|
+
},
|
|
1649
|
+
{
|
|
1650
|
+
// Provenance for sync — see the note on `control.sourceRef`.
|
|
1651
|
+
fieldId: "sourceRef",
|
|
1652
|
+
fieldType: "string",
|
|
1653
|
+
filterable: true,
|
|
1654
|
+
description: "The source file (repo path) this record was extracted from \u2014 its provenance; a change to that file re-extracts its records. The specific section is encoded in the record externalId.",
|
|
1655
|
+
renderHints: { label: "Source ref", widget: "text", order: 8 }
|
|
1607
1656
|
}
|
|
1608
1657
|
],
|
|
1609
|
-
lookupFields: [
|
|
1658
|
+
lookupFields: [
|
|
1659
|
+
"area",
|
|
1660
|
+
"status",
|
|
1661
|
+
{ fieldName: "discoveredOn", rangeEnabled: true },
|
|
1662
|
+
"sourceRef"
|
|
1663
|
+
]
|
|
1610
1664
|
},
|
|
1611
1665
|
{
|
|
1612
1666
|
// A glossary TERM — a definition keyed by the term itself. Structure-dominant:
|
|
@@ -1666,6 +1720,14 @@ var agenticSdlc = {
|
|
|
1666
1720
|
fieldType: "date",
|
|
1667
1721
|
description: "ISO-8601 \u2014 when last revised. Range-queryable.",
|
|
1668
1722
|
renderHints: { label: "Updated on", widget: "date", order: 7 }
|
|
1723
|
+
},
|
|
1724
|
+
{
|
|
1725
|
+
// Provenance for sync — see the note on `control.sourceRef`.
|
|
1726
|
+
fieldId: "sourceRef",
|
|
1727
|
+
fieldType: "string",
|
|
1728
|
+
filterable: true,
|
|
1729
|
+
description: "The source file (repo path) this record was extracted from \u2014 its provenance; a change to that file re-extracts its records. The specific section is encoded in the record externalId.",
|
|
1730
|
+
renderHints: { label: "Source ref", widget: "text", order: 8 }
|
|
1669
1731
|
}
|
|
1670
1732
|
],
|
|
1671
1733
|
// `term` is a UNIQUE equality lookup — exact "define X" + a one-per-term
|
|
@@ -1674,27 +1736,32 @@ var agenticSdlc = {
|
|
|
1674
1736
|
{ fieldName: "term", unique: true },
|
|
1675
1737
|
"area",
|
|
1676
1738
|
"relatedDecision",
|
|
1677
|
-
{ fieldName: "updatedOn", rangeEnabled: true }
|
|
1739
|
+
{ fieldName: "updatedOn", rangeEnabled: true },
|
|
1740
|
+
"sourceRef"
|
|
1678
1741
|
]
|
|
1679
1742
|
}
|
|
1680
1743
|
],
|
|
1681
|
-
// Least-privilege, data-plane only.
|
|
1682
|
-
//
|
|
1683
|
-
//
|
|
1684
|
-
// via a status flip, so the trail of how the team's thinking evolved stays intact.
|
|
1744
|
+
// Least-privilege, data-plane only. The scope of the `ssk_*` key the bootstrap
|
|
1745
|
+
// mints for THIS blueprint's service principal (the MCP/API runtime). See
|
|
1746
|
+
// DATA_PLANE_ACTIONS above for the action set + rationale.
|
|
1685
1747
|
accessProfile: {
|
|
1686
|
-
allowedActions:
|
|
1687
|
-
|
|
1688
|
-
|
|
1689
|
-
|
|
1690
|
-
|
|
1691
|
-
|
|
1692
|
-
|
|
1693
|
-
|
|
1694
|
-
|
|
1695
|
-
|
|
1696
|
-
|
|
1697
|
-
|
|
1748
|
+
allowedActions: DATA_PLANE_ACTIONS
|
|
1749
|
+
},
|
|
1750
|
+
// A reusable `editor` role for the HUMAN owner — DISTINCT from `accessProfile`
|
|
1751
|
+
// (which scopes only the service-principal key). `bootstrap` provisions this
|
|
1752
|
+
// role in the context but binds it to no one; the owner joins themselves so the
|
|
1753
|
+
// data-plane app (app.vectros.ai) shows their KB — its switcher lists only
|
|
1754
|
+
// contexts the signed-in user holds an active access profile in, and bootstrap
|
|
1755
|
+
// grants the human none by default. Bind it after bootstrap with:
|
|
1756
|
+
// vectros access grant --principal usr_<your-user-id> --context agentic-sdlc --role editor
|
|
1757
|
+
// (or the admin app's Access > Contexts > agentic-sdlc > Profiles > Create).
|
|
1758
|
+
// The editor gets the full data plane so a human curator can browse, write/correct,
|
|
1759
|
+
// AND hard-delete the KB (EDITOR_ACTIONS = the service key's set + delete). The
|
|
1760
|
+
// service key deliberately lacks delete and archives instead; the trusted human
|
|
1761
|
+
// owner may permanently remove genuine strays. Still no control-plane action, so
|
|
1762
|
+
// the scope gate accepts it as a data-plane-only role.
|
|
1763
|
+
roles: {
|
|
1764
|
+
editor: [{ allowedActions: EDITOR_ACTIONS }]
|
|
1698
1765
|
},
|
|
1699
1766
|
servicePrincipal: {
|
|
1700
1767
|
externalId: "agentic-sdlc",
|