aiox-core 5.0.0 → 5.0.2
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/.aiox-core/data/entity-registry.yaml +5297 -1814
- package/.aiox-core/data/registry-update-log.jsonl +2 -0
- package/.aiox-core/development/templates/service-template/README.md.hbs +158 -158
- package/.aiox-core/development/templates/service-template/__tests__/index.test.ts.hbs +237 -237
- package/.aiox-core/development/templates/service-template/client.ts.hbs +403 -403
- package/.aiox-core/development/templates/service-template/errors.ts.hbs +182 -182
- package/.aiox-core/development/templates/service-template/index.ts.hbs +120 -120
- package/.aiox-core/development/templates/service-template/package.json.hbs +87 -87
- package/.aiox-core/development/templates/service-template/types.ts.hbs +145 -145
- package/.aiox-core/development/templates/squad-template/LICENSE +21 -21
- package/.aiox-core/infrastructure/scripts/tool-resolver.js +4 -4
- package/.aiox-core/infrastructure/templates/aiox-sync.yaml.template +182 -182
- package/.aiox-core/infrastructure/templates/coderabbit.yaml.template +279 -279
- package/.aiox-core/infrastructure/templates/github-workflows/ci.yml.template +169 -169
- package/.aiox-core/infrastructure/templates/github-workflows/pr-automation.yml.template +330 -330
- package/.aiox-core/infrastructure/templates/github-workflows/release.yml.template +196 -196
- package/.aiox-core/infrastructure/templates/gitignore/gitignore-aiox-base.tmpl +63 -63
- package/.aiox-core/infrastructure/templates/gitignore/gitignore-brownfield-merge.tmpl +18 -18
- package/.aiox-core/infrastructure/templates/gitignore/gitignore-node.tmpl +85 -85
- package/.aiox-core/infrastructure/templates/gitignore/gitignore-python.tmpl +145 -145
- package/.aiox-core/install-manifest.yaml +58 -58
- package/.aiox-core/local-config.yaml.template +71 -71
- package/.aiox-core/monitor/hooks/lib/__init__.py +1 -1
- package/.aiox-core/monitor/hooks/lib/enrich.py +58 -58
- package/.aiox-core/monitor/hooks/lib/send_event.py +47 -47
- package/.aiox-core/monitor/hooks/notification.py +29 -29
- package/.aiox-core/monitor/hooks/post_tool_use.py +45 -45
- package/.aiox-core/monitor/hooks/pre_compact.py +29 -29
- package/.aiox-core/monitor/hooks/pre_tool_use.py +40 -40
- package/.aiox-core/monitor/hooks/stop.py +29 -29
- package/.aiox-core/monitor/hooks/subagent_stop.py +29 -29
- package/.aiox-core/monitor/hooks/user_prompt_submit.py +38 -38
- package/.aiox-core/product/templates/adr.hbs +125 -125
- package/.aiox-core/product/templates/dbdr.hbs +241 -241
- package/.aiox-core/product/templates/engine/elicitation.js +2 -3
- package/.aiox-core/product/templates/epic.hbs +212 -212
- package/.aiox-core/product/templates/pmdr.hbs +186 -186
- package/.aiox-core/product/templates/prd-v2.0.hbs +216 -216
- package/.aiox-core/product/templates/prd.hbs +201 -201
- package/.aiox-core/product/templates/story.hbs +263 -263
- package/.aiox-core/product/templates/task.hbs +170 -170
- package/.aiox-core/product/templates/tmpl-comment-on-examples.sql +158 -158
- package/.aiox-core/product/templates/tmpl-migration-script.sql +91 -91
- package/.aiox-core/product/templates/tmpl-rls-granular-policies.sql +104 -104
- package/.aiox-core/product/templates/tmpl-rls-kiss-policy.sql +10 -10
- package/.aiox-core/product/templates/tmpl-rls-roles.sql +135 -135
- package/.aiox-core/product/templates/tmpl-rls-simple.sql +77 -77
- package/.aiox-core/product/templates/tmpl-rls-tenant.sql +152 -152
- package/.aiox-core/product/templates/tmpl-rollback-script.sql +77 -77
- package/.aiox-core/product/templates/tmpl-seed-data.sql +140 -140
- package/.aiox-core/product/templates/tmpl-smoke-test.sql +16 -16
- package/.aiox-core/product/templates/tmpl-staging-copy-merge.sql +139 -139
- package/.aiox-core/product/templates/tmpl-stored-proc.sql +140 -140
- package/.aiox-core/product/templates/tmpl-trigger.sql +152 -152
- package/.aiox-core/product/templates/tmpl-view-materialized.sql +133 -133
- package/.aiox-core/product/templates/tmpl-view.sql +177 -177
- package/.aiox-core/scripts/pm.sh +0 -0
- package/.claude/hooks/code-intel-pretool.cjs +107 -0
- package/.claude/hooks/enforce-architecture-first.py +196 -196
- package/.claude/hooks/mind-clone-governance.py +192 -192
- package/.claude/hooks/read-protection.py +151 -151
- package/.claude/hooks/slug-validation.py +176 -176
- package/.claude/hooks/sql-governance.py +182 -182
- package/.claude/hooks/write-path-validation.py +194 -194
- package/LICENSE +33 -33
- package/bin/aiox-graph.js +0 -0
- package/bin/aiox-minimal.js +0 -0
- package/bin/aiox.js +0 -0
- package/docs/guides/aios-workflows/README.md +247 -0
- package/docs/guides/aios-workflows/bob-orchestrator-workflow.md +1536 -0
- package/package.json +1 -1
- package/packages/aiox-install/bin/aiox-install.js +0 -0
- package/packages/aiox-install/bin/edmcp.js +0 -0
- package/packages/aiox-pro-cli/bin/aiox-pro.js +0 -0
- package/packages/installer/src/wizard/pro-setup.js +210 -123
- package/pro/README.md +66 -0
- package/pro/license/degradation.js +220 -0
- package/pro/license/errors.js +450 -0
- package/pro/license/feature-gate.js +354 -0
- package/pro/license/index.js +181 -0
- package/pro/license/license-api.js +679 -0
- package/pro/license/license-cache.js +523 -0
- package/pro/license/license-crypto.js +303 -0
- package/scripts/check-markdown-links.py +352 -352
- package/scripts/dashboard-parallel-dev.sh +0 -0
- package/scripts/dashboard-parallel-phase3.sh +0 -0
- package/scripts/dashboard-parallel-phase4.sh +0 -0
- package/scripts/glue/README.md +355 -0
- package/scripts/glue/compose-agent-prompt.cjs +362 -0
- package/scripts/install-monitor-hooks.sh +0 -0
- package/.aiox-core/lib/build.json +0 -1
|
@@ -1,212 +1,212 @@
|
|
|
1
|
-
---
|
|
2
|
-
template_id: epic
|
|
3
|
-
template_name: Epic
|
|
4
|
-
version: 1.0
|
|
5
|
-
variables:
|
|
6
|
-
- name: id
|
|
7
|
-
type: string
|
|
8
|
-
required: true
|
|
9
|
-
prompt: "Epic ID (e.g., EPIC-S3):"
|
|
10
|
-
- name: title
|
|
11
|
-
type: string
|
|
12
|
-
required: true
|
|
13
|
-
prompt: "Epic title:"
|
|
14
|
-
- name: status
|
|
15
|
-
type: choice
|
|
16
|
-
required: true
|
|
17
|
-
choices: [Planning, In Progress, Completed, On Hold, Cancelled]
|
|
18
|
-
default: Planning
|
|
19
|
-
- name: owner
|
|
20
|
-
type: string
|
|
21
|
-
required: true
|
|
22
|
-
prompt: "Epic owner:"
|
|
23
|
-
- name: objective
|
|
24
|
-
type: text
|
|
25
|
-
required: true
|
|
26
|
-
prompt: "What is the epic's main objective?"
|
|
27
|
-
---
|
|
28
|
-
|
|
29
|
-
# {{id}}: {{title}}
|
|
30
|
-
|
|
31
|
-
**Status:** {{#ifEqual status "Planning"}}📋{{/ifEqual}}{{#ifEqual status "In Progress"}}🔄{{/ifEqual}}{{#ifEqual status "Completed"}}✅{{/ifEqual}}{{#ifEqual status "On Hold"}}⏸️{{/ifEqual}}{{#ifEqual status "Cancelled"}}❌{{/ifEqual}} {{status}}
|
|
32
|
-
**Owner:** {{owner}}
|
|
33
|
-
**Created:** {{formatDate now "YYYY-MM-DD"}}
|
|
34
|
-
{{#if updated}}**Updated:** {{updated}}{{/if}}
|
|
35
|
-
|
|
36
|
-
---
|
|
37
|
-
|
|
38
|
-
## Objective
|
|
39
|
-
|
|
40
|
-
{{objective}}
|
|
41
|
-
|
|
42
|
-
{{#if businessValue}}
|
|
43
|
-
## Business Value
|
|
44
|
-
|
|
45
|
-
{{businessValue}}
|
|
46
|
-
{{/if}}
|
|
47
|
-
|
|
48
|
-
---
|
|
49
|
-
|
|
50
|
-
{{#if stakeholders}}
|
|
51
|
-
## Stakeholders
|
|
52
|
-
|
|
53
|
-
{{#each stakeholders}}
|
|
54
|
-
- {{this}}
|
|
55
|
-
{{/each}}
|
|
56
|
-
{{/if}}
|
|
57
|
-
|
|
58
|
-
---
|
|
59
|
-
|
|
60
|
-
## Scope
|
|
61
|
-
|
|
62
|
-
{{#if scope}}
|
|
63
|
-
### In Scope
|
|
64
|
-
{{#each scope.inScope}}
|
|
65
|
-
- {{this}}
|
|
66
|
-
{{/each}}
|
|
67
|
-
|
|
68
|
-
{{#if scope.outOfScope}}
|
|
69
|
-
### Out of Scope
|
|
70
|
-
{{#each scope.outOfScope}}
|
|
71
|
-
- {{this}}
|
|
72
|
-
{{/each}}
|
|
73
|
-
{{/if}}
|
|
74
|
-
{{else}}
|
|
75
|
-
_Scope to be defined._
|
|
76
|
-
{{/if}}
|
|
77
|
-
|
|
78
|
-
---
|
|
79
|
-
|
|
80
|
-
## Stories
|
|
81
|
-
|
|
82
|
-
{{#if stories}}
|
|
83
|
-
| ID | Title | Points | Priority | Status |
|
|
84
|
-
|----|-------|--------|----------|--------|
|
|
85
|
-
{{#each stories}}
|
|
86
|
-
| [{{this.id}}](./stories/story-{{this.id}}.md) | {{this.title}} | {{default this.points "-"}} | {{default this.priority "Medium"}} | {{default this.status "Draft"}} |
|
|
87
|
-
{{/each}}
|
|
88
|
-
|
|
89
|
-
**Total Points:** {{#if progress}}{{progress.totalPoints}}{{else}}_TBD_{{/if}}
|
|
90
|
-
{{else}}
|
|
91
|
-
_Stories to be defined._
|
|
92
|
-
{{/if}}
|
|
93
|
-
|
|
94
|
-
---
|
|
95
|
-
|
|
96
|
-
{{#if sprints}}
|
|
97
|
-
## Sprint Planning
|
|
98
|
-
|
|
99
|
-
{{#each sprints}}
|
|
100
|
-
### Sprint {{this.number}}
|
|
101
|
-
{{#if this.goal}}**Goal:** {{this.goal}}{{/if}}
|
|
102
|
-
|
|
103
|
-
{{#if this.stories}}
|
|
104
|
-
**Stories:**
|
|
105
|
-
{{#each this.stories}}
|
|
106
|
-
- {{this}}
|
|
107
|
-
{{/each}}
|
|
108
|
-
{{/if}}
|
|
109
|
-
|
|
110
|
-
{{/each}}
|
|
111
|
-
{{/if}}
|
|
112
|
-
|
|
113
|
-
---
|
|
114
|
-
|
|
115
|
-
## Success Criteria
|
|
116
|
-
|
|
117
|
-
{{#if successCriteria}}
|
|
118
|
-
{{#each successCriteria}}
|
|
119
|
-
- [ ] {{this.criteria}}{{#if this.metric}} ({{this.metric}}: {{this.target}}){{/if}}
|
|
120
|
-
{{/each}}
|
|
121
|
-
{{else}}
|
|
122
|
-
_Success criteria to be defined._
|
|
123
|
-
{{/if}}
|
|
124
|
-
|
|
125
|
-
---
|
|
126
|
-
|
|
127
|
-
## Technical Requirements
|
|
128
|
-
|
|
129
|
-
{{#if technicalRequirements}}
|
|
130
|
-
{{#each technicalRequirements}}
|
|
131
|
-
- {{this}}
|
|
132
|
-
{{/each}}
|
|
133
|
-
{{else}}
|
|
134
|
-
_Technical requirements to be defined._
|
|
135
|
-
{{/if}}
|
|
136
|
-
|
|
137
|
-
---
|
|
138
|
-
|
|
139
|
-
## Risks
|
|
140
|
-
|
|
141
|
-
{{#if risks}}
|
|
142
|
-
| Risk | Impact | Mitigation |
|
|
143
|
-
|------|--------|------------|
|
|
144
|
-
{{#each risks}}
|
|
145
|
-
| {{this.risk}} | {{default this.impact "Medium"}} | {{default this.mitigation "TBD"}} |
|
|
146
|
-
{{/each}}
|
|
147
|
-
{{else}}
|
|
148
|
-
_No risks identified._
|
|
149
|
-
{{/if}}
|
|
150
|
-
|
|
151
|
-
---
|
|
152
|
-
|
|
153
|
-
## Dependencies
|
|
154
|
-
|
|
155
|
-
{{#if dependencies}}
|
|
156
|
-
**Depends on:**
|
|
157
|
-
{{#each dependencies.dependsOn}}
|
|
158
|
-
- {{this}}
|
|
159
|
-
{{/each}}
|
|
160
|
-
|
|
161
|
-
{{#if dependencies.blocks}}
|
|
162
|
-
**Blocks:**
|
|
163
|
-
{{#each dependencies.blocks}}
|
|
164
|
-
- {{this}}
|
|
165
|
-
{{/each}}
|
|
166
|
-
{{/if}}
|
|
167
|
-
{{else}}
|
|
168
|
-
_No dependencies._
|
|
169
|
-
{{/if}}
|
|
170
|
-
|
|
171
|
-
---
|
|
172
|
-
|
|
173
|
-
## Documentation
|
|
174
|
-
|
|
175
|
-
{{#if documentation}}
|
|
176
|
-
| Type | Location | Status |
|
|
177
|
-
|------|----------|--------|
|
|
178
|
-
{{#each documentation}}
|
|
179
|
-
| {{this.type}} | {{this.location}} | {{default this.status "Pending"}} |
|
|
180
|
-
{{/each}}
|
|
181
|
-
{{else}}
|
|
182
|
-
_Documentation requirements to be defined._
|
|
183
|
-
{{/if}}
|
|
184
|
-
|
|
185
|
-
---
|
|
186
|
-
|
|
187
|
-
## Progress
|
|
188
|
-
|
|
189
|
-
{{#if progress}}
|
|
190
|
-
- **Total Points:** {{progress.totalPoints}}
|
|
191
|
-
- **Completed Points:** {{progress.completedPoints}}
|
|
192
|
-
- **Progress:** {{progress.percentComplete}}%
|
|
193
|
-
|
|
194
|
-
```
|
|
195
|
-
[{{#times 10}}{{#if (lt @index (divide ../progress.percentComplete 10))}}█{{else}}░{{/if}}{{/times}}] {{progress.percentComplete}}%
|
|
196
|
-
```
|
|
197
|
-
{{else}}
|
|
198
|
-
_Progress tracking to be updated._
|
|
199
|
-
{{/if}}
|
|
200
|
-
|
|
201
|
-
---
|
|
202
|
-
|
|
203
|
-
## Change Log
|
|
204
|
-
|
|
205
|
-
| Date | Version | Description | Author |
|
|
206
|
-
|------|---------|-------------|--------|
|
|
207
|
-
| {{formatDate now "YYYY-MM-DD"}} | 1.0 | Epic created | AIOX Template Engine |
|
|
208
|
-
|
|
209
|
-
---
|
|
210
|
-
|
|
211
|
-
**Generated by:** AIOX Template Engine v2.0
|
|
212
|
-
**Template Version:** epic-1.0
|
|
1
|
+
---
|
|
2
|
+
template_id: epic
|
|
3
|
+
template_name: Epic
|
|
4
|
+
version: 1.0
|
|
5
|
+
variables:
|
|
6
|
+
- name: id
|
|
7
|
+
type: string
|
|
8
|
+
required: true
|
|
9
|
+
prompt: "Epic ID (e.g., EPIC-S3):"
|
|
10
|
+
- name: title
|
|
11
|
+
type: string
|
|
12
|
+
required: true
|
|
13
|
+
prompt: "Epic title:"
|
|
14
|
+
- name: status
|
|
15
|
+
type: choice
|
|
16
|
+
required: true
|
|
17
|
+
choices: [Planning, In Progress, Completed, On Hold, Cancelled]
|
|
18
|
+
default: Planning
|
|
19
|
+
- name: owner
|
|
20
|
+
type: string
|
|
21
|
+
required: true
|
|
22
|
+
prompt: "Epic owner:"
|
|
23
|
+
- name: objective
|
|
24
|
+
type: text
|
|
25
|
+
required: true
|
|
26
|
+
prompt: "What is the epic's main objective?"
|
|
27
|
+
---
|
|
28
|
+
|
|
29
|
+
# {{id}}: {{title}}
|
|
30
|
+
|
|
31
|
+
**Status:** {{#ifEqual status "Planning"}}📋{{/ifEqual}}{{#ifEqual status "In Progress"}}🔄{{/ifEqual}}{{#ifEqual status "Completed"}}✅{{/ifEqual}}{{#ifEqual status "On Hold"}}⏸️{{/ifEqual}}{{#ifEqual status "Cancelled"}}❌{{/ifEqual}} {{status}}
|
|
32
|
+
**Owner:** {{owner}}
|
|
33
|
+
**Created:** {{formatDate now "YYYY-MM-DD"}}
|
|
34
|
+
{{#if updated}}**Updated:** {{updated}}{{/if}}
|
|
35
|
+
|
|
36
|
+
---
|
|
37
|
+
|
|
38
|
+
## Objective
|
|
39
|
+
|
|
40
|
+
{{objective}}
|
|
41
|
+
|
|
42
|
+
{{#if businessValue}}
|
|
43
|
+
## Business Value
|
|
44
|
+
|
|
45
|
+
{{businessValue}}
|
|
46
|
+
{{/if}}
|
|
47
|
+
|
|
48
|
+
---
|
|
49
|
+
|
|
50
|
+
{{#if stakeholders}}
|
|
51
|
+
## Stakeholders
|
|
52
|
+
|
|
53
|
+
{{#each stakeholders}}
|
|
54
|
+
- {{this}}
|
|
55
|
+
{{/each}}
|
|
56
|
+
{{/if}}
|
|
57
|
+
|
|
58
|
+
---
|
|
59
|
+
|
|
60
|
+
## Scope
|
|
61
|
+
|
|
62
|
+
{{#if scope}}
|
|
63
|
+
### In Scope
|
|
64
|
+
{{#each scope.inScope}}
|
|
65
|
+
- {{this}}
|
|
66
|
+
{{/each}}
|
|
67
|
+
|
|
68
|
+
{{#if scope.outOfScope}}
|
|
69
|
+
### Out of Scope
|
|
70
|
+
{{#each scope.outOfScope}}
|
|
71
|
+
- {{this}}
|
|
72
|
+
{{/each}}
|
|
73
|
+
{{/if}}
|
|
74
|
+
{{else}}
|
|
75
|
+
_Scope to be defined._
|
|
76
|
+
{{/if}}
|
|
77
|
+
|
|
78
|
+
---
|
|
79
|
+
|
|
80
|
+
## Stories
|
|
81
|
+
|
|
82
|
+
{{#if stories}}
|
|
83
|
+
| ID | Title | Points | Priority | Status |
|
|
84
|
+
|----|-------|--------|----------|--------|
|
|
85
|
+
{{#each stories}}
|
|
86
|
+
| [{{this.id}}](./stories/story-{{this.id}}.md) | {{this.title}} | {{default this.points "-"}} | {{default this.priority "Medium"}} | {{default this.status "Draft"}} |
|
|
87
|
+
{{/each}}
|
|
88
|
+
|
|
89
|
+
**Total Points:** {{#if progress}}{{progress.totalPoints}}{{else}}_TBD_{{/if}}
|
|
90
|
+
{{else}}
|
|
91
|
+
_Stories to be defined._
|
|
92
|
+
{{/if}}
|
|
93
|
+
|
|
94
|
+
---
|
|
95
|
+
|
|
96
|
+
{{#if sprints}}
|
|
97
|
+
## Sprint Planning
|
|
98
|
+
|
|
99
|
+
{{#each sprints}}
|
|
100
|
+
### Sprint {{this.number}}
|
|
101
|
+
{{#if this.goal}}**Goal:** {{this.goal}}{{/if}}
|
|
102
|
+
|
|
103
|
+
{{#if this.stories}}
|
|
104
|
+
**Stories:**
|
|
105
|
+
{{#each this.stories}}
|
|
106
|
+
- {{this}}
|
|
107
|
+
{{/each}}
|
|
108
|
+
{{/if}}
|
|
109
|
+
|
|
110
|
+
{{/each}}
|
|
111
|
+
{{/if}}
|
|
112
|
+
|
|
113
|
+
---
|
|
114
|
+
|
|
115
|
+
## Success Criteria
|
|
116
|
+
|
|
117
|
+
{{#if successCriteria}}
|
|
118
|
+
{{#each successCriteria}}
|
|
119
|
+
- [ ] {{this.criteria}}{{#if this.metric}} ({{this.metric}}: {{this.target}}){{/if}}
|
|
120
|
+
{{/each}}
|
|
121
|
+
{{else}}
|
|
122
|
+
_Success criteria to be defined._
|
|
123
|
+
{{/if}}
|
|
124
|
+
|
|
125
|
+
---
|
|
126
|
+
|
|
127
|
+
## Technical Requirements
|
|
128
|
+
|
|
129
|
+
{{#if technicalRequirements}}
|
|
130
|
+
{{#each technicalRequirements}}
|
|
131
|
+
- {{this}}
|
|
132
|
+
{{/each}}
|
|
133
|
+
{{else}}
|
|
134
|
+
_Technical requirements to be defined._
|
|
135
|
+
{{/if}}
|
|
136
|
+
|
|
137
|
+
---
|
|
138
|
+
|
|
139
|
+
## Risks
|
|
140
|
+
|
|
141
|
+
{{#if risks}}
|
|
142
|
+
| Risk | Impact | Mitigation |
|
|
143
|
+
|------|--------|------------|
|
|
144
|
+
{{#each risks}}
|
|
145
|
+
| {{this.risk}} | {{default this.impact "Medium"}} | {{default this.mitigation "TBD"}} |
|
|
146
|
+
{{/each}}
|
|
147
|
+
{{else}}
|
|
148
|
+
_No risks identified._
|
|
149
|
+
{{/if}}
|
|
150
|
+
|
|
151
|
+
---
|
|
152
|
+
|
|
153
|
+
## Dependencies
|
|
154
|
+
|
|
155
|
+
{{#if dependencies}}
|
|
156
|
+
**Depends on:**
|
|
157
|
+
{{#each dependencies.dependsOn}}
|
|
158
|
+
- {{this}}
|
|
159
|
+
{{/each}}
|
|
160
|
+
|
|
161
|
+
{{#if dependencies.blocks}}
|
|
162
|
+
**Blocks:**
|
|
163
|
+
{{#each dependencies.blocks}}
|
|
164
|
+
- {{this}}
|
|
165
|
+
{{/each}}
|
|
166
|
+
{{/if}}
|
|
167
|
+
{{else}}
|
|
168
|
+
_No dependencies._
|
|
169
|
+
{{/if}}
|
|
170
|
+
|
|
171
|
+
---
|
|
172
|
+
|
|
173
|
+
## Documentation
|
|
174
|
+
|
|
175
|
+
{{#if documentation}}
|
|
176
|
+
| Type | Location | Status |
|
|
177
|
+
|------|----------|--------|
|
|
178
|
+
{{#each documentation}}
|
|
179
|
+
| {{this.type}} | {{this.location}} | {{default this.status "Pending"}} |
|
|
180
|
+
{{/each}}
|
|
181
|
+
{{else}}
|
|
182
|
+
_Documentation requirements to be defined._
|
|
183
|
+
{{/if}}
|
|
184
|
+
|
|
185
|
+
---
|
|
186
|
+
|
|
187
|
+
## Progress
|
|
188
|
+
|
|
189
|
+
{{#if progress}}
|
|
190
|
+
- **Total Points:** {{progress.totalPoints}}
|
|
191
|
+
- **Completed Points:** {{progress.completedPoints}}
|
|
192
|
+
- **Progress:** {{progress.percentComplete}}%
|
|
193
|
+
|
|
194
|
+
```
|
|
195
|
+
[{{#times 10}}{{#if (lt @index (divide ../progress.percentComplete 10))}}█{{else}}░{{/if}}{{/times}}] {{progress.percentComplete}}%
|
|
196
|
+
```
|
|
197
|
+
{{else}}
|
|
198
|
+
_Progress tracking to be updated._
|
|
199
|
+
{{/if}}
|
|
200
|
+
|
|
201
|
+
---
|
|
202
|
+
|
|
203
|
+
## Change Log
|
|
204
|
+
|
|
205
|
+
| Date | Version | Description | Author |
|
|
206
|
+
|------|---------|-------------|--------|
|
|
207
|
+
| {{formatDate now "YYYY-MM-DD"}} | 1.0 | Epic created | AIOX Template Engine |
|
|
208
|
+
|
|
209
|
+
---
|
|
210
|
+
|
|
211
|
+
**Generated by:** AIOX Template Engine v2.0
|
|
212
|
+
**Template Version:** epic-1.0
|