@ngocsangairvds/vsaf 5.4.6 → 5.5.0

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.
Files changed (95) hide show
  1. package/package.json +1 -1
  2. package/packages/cli/dist/commands/run.d.ts +2 -0
  3. package/packages/cli/dist/commands/run.d.ts.map +1 -1
  4. package/packages/cli/dist/commands/run.js +23 -5
  5. package/packages/cli/dist/commands/run.js.map +1 -1
  6. package/packages/cli/dist/commands/validate.d.ts.map +1 -1
  7. package/packages/cli/dist/commands/validate.js +7 -1
  8. package/packages/cli/dist/commands/validate.js.map +1 -1
  9. package/packages/cli/dist/server/app.d.ts.map +1 -1
  10. package/packages/cli/dist/server/app.js +2 -0
  11. package/packages/cli/dist/server/app.js.map +1 -1
  12. package/packages/cli/dist/server/routes/config.d.ts +6 -0
  13. package/packages/cli/dist/server/routes/config.d.ts.map +1 -0
  14. package/packages/cli/dist/server/routes/config.js +64 -0
  15. package/packages/cli/dist/server/routes/config.js.map +1 -0
  16. package/packages/cli/dist/server/services/execution-manager.d.ts.map +1 -1
  17. package/packages/cli/dist/server/services/execution-manager.js +10 -6
  18. package/packages/cli/dist/server/services/execution-manager.js.map +1 -1
  19. package/packages/core/dist/config/config-loader.d.ts +4 -0
  20. package/packages/core/dist/config/config-loader.d.ts.map +1 -1
  21. package/packages/core/dist/config/config-loader.js +5 -0
  22. package/packages/core/dist/config/config-loader.js.map +1 -1
  23. package/packages/core/dist/engine/dag-executor.d.ts +4 -0
  24. package/packages/core/dist/engine/dag-executor.d.ts.map +1 -1
  25. package/packages/core/dist/engine/dag-executor.js +7 -2
  26. package/packages/core/dist/engine/dag-executor.js.map +1 -1
  27. package/packages/core/dist/engine/dag-parser.d.ts.map +1 -1
  28. package/packages/core/dist/engine/dag-parser.js +8 -0
  29. package/packages/core/dist/engine/dag-parser.js.map +1 -1
  30. package/packages/core/dist/engine/expand-workflow.d.ts +8 -0
  31. package/packages/core/dist/engine/expand-workflow.d.ts.map +1 -0
  32. package/packages/core/dist/engine/expand-workflow.js +104 -0
  33. package/packages/core/dist/engine/expand-workflow.js.map +1 -0
  34. package/packages/core/dist/index.d.ts +1 -0
  35. package/packages/core/dist/index.d.ts.map +1 -1
  36. package/packages/core/dist/index.js +4 -2
  37. package/packages/core/dist/index.js.map +1 -1
  38. package/packages/core/dist/providers/default-adapters.d.ts +2 -1
  39. package/packages/core/dist/providers/default-adapters.d.ts.map +1 -1
  40. package/packages/core/dist/providers/default-adapters.js +83 -26
  41. package/packages/core/dist/providers/default-adapters.js.map +1 -1
  42. package/packages/core/dist/schema/workflow-schema.d.ts +8 -0
  43. package/packages/core/dist/schema/workflow-schema.d.ts.map +1 -1
  44. package/packages/core/dist/schema/workflow-schema.js +9 -6
  45. package/packages/core/dist/schema/workflow-schema.js.map +1 -1
  46. package/packages/core/dist/types/dag.d.ts +2 -0
  47. package/packages/core/dist/types/dag.d.ts.map +1 -1
  48. package/packages/core/dist/types/provider.d.ts +2 -0
  49. package/packages/core/dist/types/provider.d.ts.map +1 -1
  50. package/packages/core/dist/types/workflow.d.ts +4 -0
  51. package/packages/core/dist/types/workflow.d.ts.map +1 -1
  52. package/packages/web/dist/web/3rdpartylicenses.txt +52 -52
  53. package/packages/web/dist/web/browser/chunk-3LPWUDNW.js +1 -0
  54. package/packages/web/dist/web/browser/chunk-4LHJGOIU.js +1 -0
  55. package/packages/web/dist/web/browser/chunk-FQUOTTEA.js +4 -0
  56. package/packages/web/dist/web/browser/chunk-FWLQWWZ3.js +1 -0
  57. package/packages/web/dist/web/browser/chunk-K4VRVZWF.js +1 -0
  58. package/packages/web/dist/web/browser/chunk-OBMUVQWL.js +1 -0
  59. package/packages/web/dist/web/browser/chunk-UJHVWNPU.js +1 -0
  60. package/packages/web/dist/web/browser/chunk-UXRT7NQK.js +1 -0
  61. package/packages/web/dist/web/browser/chunk-VJ3UNUDS.js +1 -0
  62. package/packages/web/dist/web/browser/chunk-W7ZKECPT.js +5 -0
  63. package/packages/web/dist/web/browser/index.html +1 -1
  64. package/packages/web/dist/web/browser/main-7FONYLE6.js +1 -0
  65. package/skills/sdlc/_shared/sonar-viettel/quality-gate.md +7 -0
  66. package/skills/sdlc/discovery/grill/step.md +6 -1
  67. package/skills/sdlc/implement/build-run/step.md +1 -1
  68. package/skills/sdlc/implement/tdd/step.md +9 -0
  69. package/skills/sdlc/pack.yaml +2 -4
  70. package/skills/sdlc/review/fix/SKILL.md +10 -0
  71. package/skills/sdlc/review/fix/step.md +33 -0
  72. package/skills/sdlc/srs/SKILL.md +129 -0
  73. package/skills/sdlc/test-design/cases/step.md +7 -0
  74. package/workflows/sdlc/master-sdlc-headless.yaml +18 -62
  75. package/workflows/sdlc/sdlc-build-headless.yaml +41 -12
  76. package/workflows/sdlc/sdlc-design.yaml +4 -21
  77. package/workflows/sdlc/sdlc-review.yaml +9 -1
  78. package/workflows/sdlc/sdlc-srs.yaml +4 -25
  79. package/packages/web/dist/web/browser/chunk-2JHYGCCN.js +0 -1
  80. package/packages/web/dist/web/browser/chunk-BMQT4ZPK.js +0 -1
  81. package/packages/web/dist/web/browser/chunk-GWHJRWJM.js +0 -1
  82. package/packages/web/dist/web/browser/chunk-OZ6BRCXC.js +0 -1
  83. package/packages/web/dist/web/browser/chunk-Q7N6DAKT.js +0 -1
  84. package/packages/web/dist/web/browser/chunk-SEBU2SK7.js +0 -1
  85. package/packages/web/dist/web/browser/chunk-SOS4TH5D.js +0 -4
  86. package/packages/web/dist/web/browser/chunk-WSAVMPNK.js +0 -5
  87. package/packages/web/dist/web/browser/main-UPZIVGM6.js +0 -1
  88. package/skills/sdlc/srs/interface/SKILL.md +0 -10
  89. package/skills/sdlc/srs/interface/step.md +0 -44
  90. package/skills/sdlc/srs/prereq/SKILL.md +0 -10
  91. package/skills/sdlc/srs/prereq/step.md +0 -19
  92. package/skills/sdlc/srs/validate/SKILL.md +0 -10
  93. package/skills/sdlc/srs/validate/step.md +0 -23
  94. package/skills/sdlc/srs/write/SKILL.md +0 -10
  95. package/skills/sdlc/srs/write/step.md +0 -19
@@ -1 +0,0 @@
1
- import{$ as k,C as a,Ea as j,G as x,Ga as P,Ia as S,Ka as M,La as O,Ma as A,Na as E,O as g,P as u,R as C,S as v,T as s,U as n,V as o,W as h,_ as b,aa as c,fa as r,ga as _,na as y,p as d,q as m,r as f,ua as w}from"./chunk-WSAVMPNK.js";var L=[{path:"",loadComponent:()=>import("./chunk-GWHJRWJM.js").then(e=>e.DashboardComponent)},{path:"workflows",loadComponent:()=>import("./chunk-BMQT4ZPK.js").then(e=>e.WorkflowsComponent)},{path:"workflows/builder",loadComponent:()=>import("./chunk-SOS4TH5D.js").then(e=>e.WorkflowBuilderComponent)},{path:"workflows/detail",loadComponent:()=>import("./chunk-2JHYGCCN.js").then(e=>e.WorkflowDetailComponent)},{path:"conversations",loadComponent:()=>import("./chunk-SEBU2SK7.js").then(e=>e.ConversationsComponent)},{path:"conversations/:conversationId",loadComponent:()=>import("./chunk-SEBU2SK7.js").then(e=>e.ConversationsComponent)},{path:"runs/:runId",loadComponent:()=>import("./chunk-Q7N6DAKT.js").then(e=>e.RunExecutionComponent)}];var I={providers:[w({eventCoalescing:!0}),A(L),P()]};var R=()=>({exact:!0}),T=(e,i)=>i.id;function V(e,i){if(e&1&&(n(0,"option",13),r(1),o()),e&2){let t=i.$implicit,p=c(2);s("value",t.id)("selected",t.id===p.selectedId()),a(),_(t.name)}}function F(e,i){if(e&1){let t=b();n(0,"select",12),k("change",function(z){m(t);let D=c();return f(D.onProjectChange(z))}),C(1,V,2,3,"option",13,T),o()}if(e&2){let t=c();a(),v(t.projects())}}var l=class e{projectService=d(E);projects=this.projectService.projects;selectedId=this.projectService.selectedId;constructor(){this.projectService.load()}onProjectChange(i){let t=i.target.value;!t||t===this.selectedId()||(this.projectService.select(t),document.location.reload())}static \u0275fac=function(t){return new(t||e)};static \u0275cmp=x({type:e,selectors:[["app-root"]],decls:19,vars:3,consts:[[1,"app-shell"],[1,"app-nav"],["routerLink","/",1,"brand-link"],[1,"brand-icon"],[1,"brand-name"],["routerLink","/","routerLinkActive","border-primary text-primary",1,"nav-link",3,"routerLinkActiveOptions"],["routerLink","/workflows","routerLinkActive","border-primary text-primary",1,"nav-link"],["routerLink","/conversations","routerLinkActive","border-primary text-primary",1,"nav-link"],[1,"nav-spacer"],["aria-label","Project","title","Switch project",1,"project-select"],[1,"version-pill"],[1,"app-main"],["aria-label","Project","title","Switch project",1,"project-select",3,"change"],[3,"value","selected"]],template:function(t,p){t&1&&(n(0,"div",0)(1,"nav",1)(2,"a",2)(3,"span",3),r(4,"V"),o(),n(5,"span",4),r(6,"VSAF"),o()(),n(7,"a",5),r(8," Dashboard "),o(),n(9,"a",6),r(10," Workflows "),o(),n(11,"a",7),r(12," Conversations "),o(),n(13,"div",8),g(14,F,3,0,"select",9),n(15,"span",10),r(16,"v0.2.0"),o()()(),n(17,"main",11),h(18,"router-outlet"),o()()),t&2&&(a(7),s("routerLinkActiveOptions",y(2,R)),a(7),u(p.projects().length>1?14:-1))},dependencies:[S,M,O],styles:["[_nghost-%COMP%]{display:block;min-height:100vh;background:#101114;color:#e7e7ea}.app-shell[_ngcontent-%COMP%]{min-height:100vh;background:#101114;color:#e7e7ea}.app-nav[_ngcontent-%COMP%]{display:flex;align-items:center;gap:4px;height:56px;border-bottom:1px solid #2b2d33;background:#17181d;padding:0 16px;box-sizing:border-box}.brand-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;gap:9px;margin-right:18px;color:#f4f4f5;text-decoration:none}.brand-link[_ngcontent-%COMP%]:hover{opacity:.82}.brand-icon[_ngcontent-%COMP%]{display:grid;place-items:center;width:30px;height:30px;border-radius:7px;background:#6366f1;color:#fff;font-size:14px;font-weight:800}.brand-name[_ngcontent-%COMP%]{font-size:14px;font-weight:800}.nav-link[_ngcontent-%COMP%]{display:inline-flex;align-items:center;height:56px;border-bottom:2px solid transparent;padding:0 13px;color:#a1a1aa;font-size:14px;font-weight:650;text-decoration:none;box-sizing:border-box}.nav-link[_ngcontent-%COMP%]:hover{color:#f4f4f5}.nav-link.border-primary[_ngcontent-%COMP%], .nav-link.text-primary[_ngcontent-%COMP%]{border-bottom-color:#6366f1;color:#a5b4fc}.nav-spacer[_ngcontent-%COMP%]{margin-left:auto;display:flex;align-items:center;gap:12px}.project-select[_ngcontent-%COMP%]{border:1px solid #2b2d33;border-radius:7px;background:#20222a;color:#e7e7ea;padding:5px 8px;font:inherit;font-size:12px;max-width:220px;cursor:pointer}.project-select[_ngcontent-%COMP%]:focus{outline:none;border-color:#6366f1}.version-pill[_ngcontent-%COMP%]{border:1px solid #2b2d33;border-radius:7px;background:#20222a;color:#a1a1aa;padding:5px 8px;font-size:12px}.app-main[_ngcontent-%COMP%]{min-height:calc(100vh - 56px);overflow:auto;background:#101114}"]})};j(l,I).catch(e=>console.error(e));
@@ -1,10 +0,0 @@
1
- ---
2
- name: sdlc-srs-interface
3
- description: "SRS 4/4 — interface verification + output"
4
- version: 1.0.0
5
- author: "@ngocsangairvds/vsaf"
6
- ---
7
-
8
- # SRS 4/4 — interface verification + output
9
-
10
- @include(step.md)
@@ -1,44 +0,0 @@
1
- ### Step 4: Interface Verification
2
-
3
- ```
4
- [SRS] [4/4] Interface verification via GitNexus... ⏳
5
- ```
6
-
7
- Use GitNexus `shape_check` — verify code structure matches SRS assumptions.
8
- Append results to `05-srs.md` §Interface Contracts.
9
-
10
- ```
11
- [SRS] [4/4] Interface verification via GitNexus... ✅
12
- ```
13
-
14
- ## Gate
15
-
16
- Human must approve SRS. Write `## Gate: APPROVED` at the end of the file.
17
-
18
- **Automated mode (opt-in):** when the environment has `VSAF_CI=1` or `VSAF_AUTO_APPROVE=1`, write the Gate yourself as `## Gate: APPROVED (auto · VSAF_CI · rationale: <one line>)` and proceed — the one-line rationale is REQUIRED for audit. Without the env flag, a human must approve (default).
19
-
20
- ## Output
21
-
22
- - `.vsaf/docs/features/{feature-name}/05-srs.md` — SRS document (v4 template format)
23
- - `.vsaf/docs/features/{feature-name}/05-srs-validation-report.md` — Validation report with scores
24
-
25
- ## Phase Exit Protocol
26
-
27
- In PHASE REPORT:
28
- - Output files: `05-srs.md`, `05-srs-validation-report.md`
29
- - Validation score: {overall_score}% ({GO/CONDITIONAL GO/NO-GO})
30
- - Suggestions: [1] Phase 5 Test Design (`/sdlc-test-design`) [2] Save artifacts
31
-
32
- Update `.vsaf/docs/STATUS.md`.
33
-
34
- **Notify the user:**
35
- > Artifacts have been saved. If the session is interrupted, open a new session and run the next phase — data is safe.
36
-
37
- ## Rules
38
-
39
- - Every FR/NFR MUST have a unique traceability ID
40
- - DO NOT use vague language: "should", "might", "optionally" → replace with "MUST", "MUST NOT"
41
- - All terms MUST exist in CONTEXT.md
42
- - Every FR MUST be testable (have clear pass/fail criteria)
43
- - SRS MUST follow the v4 template structure (12 sections)
44
- - ⛔ DO NOT modify `graphify-out/` or `.gitnexus/`
@@ -1,10 +0,0 @@
1
- ---
2
- name: sdlc-srs-prereq
3
- description: "SRS 1/4 — input artifacts"
4
- version: 1.0.0
5
- author: "@ngocsangairvds/vsaf"
6
- ---
7
-
8
- # SRS 1/4 — input artifacts
9
-
10
- @include(step.md)
@@ -1,19 +0,0 @@
1
- ## Phase Entry Protocol
2
-
3
- ```
4
- [SRS] [1/4] Checking input artifacts... ⏳
5
- ```
6
-
7
- 1. Input:
8
- - `.vsaf/docs/features/{feature-name}/02-prd.md`
9
- - `.vsaf/docs/features/{feature-name}/03-adr.md`
10
- - `.vsaf/docs/features/{feature-name}/04-epics.md`
11
- 2. Verify 02-prd.md AND 03-adr.md exist (04-epics.md optional):
12
- - Any required file missing → Ask: "File not found. Have you run Phase 2 (PRD) and Phase 3 (Architecture)?"
13
- 3. Read `.vsaf/docs/STATUS.md`
14
- 4. Read `CONTEXT.md`
15
- 5. Query `graph.json` for code structure + business mapping (if exists)
16
-
17
- ```
18
- [SRS] [1/4] Checking input artifacts... ✅
19
- ```
@@ -1,10 +0,0 @@
1
- ---
2
- name: sdlc-srs-validate
3
- description: "SRS 3/4 — validate SRS"
4
- version: 1.0.0
5
- author: "@ngocsangairvds/vsaf"
6
- ---
7
-
8
- # SRS 3/4 — validate SRS
9
-
10
- @include(step.md)
@@ -1,23 +0,0 @@
1
- ### Step 3: Validate SRS
2
-
3
- ```
4
- [SRS] [3/4] Validating SRS (8 dimensions)... ⏳
5
- ```
6
-
7
- Use `/sdlc-validate-srs` — validate SRS across 8 dimensions with weighted scoring.
8
-
9
- - Scope: single file (`05-srs.md`)
10
- - Cross-validate against: `02-prd.md`, `03-adr.md`
11
- - Output: `.vsaf/docs/features/{feature-name}/05-srs-validation-report.md`
12
-
13
- **Decision handling:**
14
-
15
- | Validation Result | Action |
16
- |---|---|
17
- | **GO** (≥80%, no CRITICAL) | Print score summary, proceed to Step 4 |
18
- | **CONDITIONAL GO** (60-79% or HIGH findings) | Print warnings + finding summary. Ask user: "Proceed despite warnings? (Y/N)" |
19
- | **NO-GO** (<60% or CRITICAL findings) | **STOP.** Print CRITICAL findings. Ask user to fix 05-srs.md and re-run `/sdlc-srs` |
20
-
21
- ```
22
- [SRS] [3/4] Validating SRS (8 dimensions)... ✅
23
- ```
@@ -1,10 +0,0 @@
1
- ---
2
- name: sdlc-srs-write
3
- description: "SRS 2/4 — write SRS"
4
- version: 1.0.0
5
- author: "@ngocsangairvds/vsaf"
6
- ---
7
-
8
- # SRS 2/4 — write SRS
9
-
10
- @include(step.md)
@@ -1,19 +0,0 @@
1
- ### Step 2: Write SRS
2
-
3
- ```
4
- [SRS] [2/4] Writing SRS from PRD + ADR + Epics... ⏳
5
- ```
6
-
7
- Use `/sdlc-write-srs` — write SRS following the v4 template (12 sections) from PRD + Architecture + Epics.
8
-
9
- Input:
10
- - `02-prd.md` as PRD source
11
- - `03-adr.md` as architecture context
12
- - `04-epics.md` as epic breakdown (optional)
13
- - Figma link from `CONTEXT.md` (optional)
14
-
15
- Output: `.vsaf/docs/features/{feature-name}/05-srs.md`
16
-
17
- ```
18
- [SRS] [2/4] Writing SRS from PRD + ADR + Epics... ✅
19
- ```