Skip to content

Commit 44bc4cf

Browse files
Merge pull request #27 from workcontrolgit/develop
Fix series 6 blog accuracy: OllamaSharp narrative and AiService hrInsight wrapper
2 parents 3e73942 + febbf0b commit 44bc4cf

7 files changed

Lines changed: 948 additions & 42 deletions

File tree

.wolf/anatomy.md

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
# anatomy.md
22

3-
> Auto-maintained by OpenWolf. Last scanned: 2026-04-22T11:15:29.432Z
3+
> Auto-maintained by OpenWolf. Last scanned: 2026-04-22T11:51:47.391Z
44
> Files: 10 tracked | Anatomy hits: 0 | Misses: 0
55
66
## ../../Users/Fuji Nguyen/.claude/plans/
@@ -421,9 +421,9 @@
421421

422422
## blogs/series-6-ai-app-features/
423423

424-
- `6.1-dotnet-ai-foundation.md` — Run a Local LLM in Your .NET 10 API with Ollama (~5310 tok)
424+
- `6.1-dotnet-ai-foundation.md` — Run a Local LLM in Your .NET 10 API with Ollama (~5574 tok)
425425
- `6.2-dotnet-ai-hr-assistant.md` — Build an HR AI Assistant That Knows Your Data (~4773 tok)
426-
- `6.3-angular-ai-chat-widget.md` — Build a Dedicated AI Section in Angular with Submenu Navigation (~5147 tok)
426+
- `6.3-angular-ai-chat-widget.md` — Build a Dedicated AI Section in Angular with Submenu Navigation (~5312 tok)
427427
- `6.4-angular-ai-nl-search.md` — Natural Language Employee Search in Angular Material (~4924 tok)
428428
- `6.4.1-dotnet-natural-language-search.md` — Natural Language Employee Search with LLM Query Parsing (~7418 tok)
429429
- `6.5-angular-ai-vector-search.md` — Semantic Position Search with Vector Embeddings in Angular Material (~4193 tok)

.wolf/buglog.json

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -160,6 +160,22 @@
160160
"related_bugs": [],
161161
"occurrences": 1,
162162
"last_seen": "2026-04-22T11:15:29.442Z"
163+
},
164+
{
165+
"id": "bug-011",
166+
"timestamp": "2026-04-22T11:47:54.676Z",
167+
"error_message": "Significant refactor of ",
168+
"file": "blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md",
169+
"root_cause": "2 lines replaced/restructured",
170+
"fix": "Rewrote 14→16 lines (2 removed) | Also: The `IChatClient` abstraction from Microsoft is th; * **Provider-agnostic AI abstractions** — The `ICh",
171+
"tags": [
172+
"auto-detected",
173+
"refactor",
174+
"md"
175+
],
176+
"related_bugs": [],
177+
"occurrences": 2,
178+
"last_seen": "2026-04-22T11:48:18.706Z"
163179
}
164180
]
165181
}

.wolf/hooks/_session.json

Lines changed: 138 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -13,49 +13,119 @@
1313
"first_read": "2026-04-22T11:05:15.190Z"
1414
},
1515
"c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md": {
16-
"count": 1,
17-
"tokens": 0,
16+
"count": 3,
17+
"tokens": 5574,
1818
"first_read": "2026-04-22T11:05:15.870Z"
1919
},
2020
"c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.2-dotnet-ai-hr-assistant.md": {
21-
"count": 1,
22-
"tokens": 0,
21+
"count": 2,
22+
"tokens": 4773,
2323
"first_read": "2026-04-22T11:05:28.964Z"
2424
},
2525
"c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.3-angular-ai-chat-widget.md": {
26-
"count": 1,
27-
"tokens": 4911,
26+
"count": 2,
27+
"tokens": 5147,
2828
"first_read": "2026-04-22T11:05:29.454Z"
2929
},
3030
"c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.4-angular-ai-nl-search.md": {
31-
"count": 1,
32-
"tokens": 4923,
31+
"count": 2,
32+
"tokens": 4924,
3333
"first_read": "2026-04-22T11:05:32.724Z"
3434
},
3535
"c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.5-angular-ai-vector-search.md": {
36-
"count": 1,
37-
"tokens": 0,
36+
"count": 2,
37+
"tokens": 4193,
3838
"first_read": "2026-04-22T11:05:33.117Z"
3939
},
4040
"c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.6-dotnet-ai-response-caching.md": {
41-
"count": 2,
42-
"tokens": 0,
41+
"count": 3,
42+
"tokens": 4256,
4343
"first_read": "2026-04-22T11:06:45.278Z"
4444
},
4545
"c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.7-dotnet-mssql-vector-search.md": {
46-
"count": 2,
47-
"tokens": 0,
46+
"count": 3,
47+
"tokens": 6690,
4848
"first_read": "2026-04-22T11:06:45.288Z"
4949
},
5050
"c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.4.1-dotnet-natural-language-search.md": {
51-
"count": 1,
51+
"count": 2,
5252
"tokens": 7407,
5353
"first_read": "2026-04-22T11:08:45.744Z"
5454
},
5555
"C:/Users/Fuji Nguyen/.claude/projects/c--apps-AngularNetTutotial/memory/MEMORY.md": {
5656
"count": 1,
5757
"tokens": 0,
5858
"first_read": "2026-04-22T11:14:01.752Z"
59+
},
60+
"c:/apps/AngularNetTutotial/ApiResources/TalentManagement-API/TalentManagementAPI.Application/Interfaces/IAiChatService.cs": {
61+
"count": 1,
62+
"tokens": 0,
63+
"first_read": "2026-04-22T11:50:25.486Z"
64+
},
65+
"c:/apps/AngularNetTutotial/ApiResources/TalentManagement-API/TalentManagementAPI.Infrastructure.Shared/Services/OllamaAiService.cs": {
66+
"count": 1,
67+
"tokens": 0,
68+
"first_read": "2026-04-22T11:50:25.879Z"
69+
},
70+
"c:/apps/AngularNetTutotial/ApiResources/TalentManagement-API/TalentManagementAPI.WebApi/Controllers/v1/AiController.cs": {
71+
"count": 1,
72+
"tokens": 0,
73+
"first_read": "2026-04-22T11:50:26.571Z"
74+
},
75+
"c:/apps/AngularNetTutotial/ApiResources/TalentManagement-API/TalentManagementAPI.WebApi/appsettings.json": {
76+
"count": 1,
77+
"tokens": 0,
78+
"first_read": "2026-04-22T11:50:26.578Z"
79+
},
80+
"c:/apps/AngularNetTutotial/ApiResources/TalentManagement-API/TalentManagementAPI.Application/Features/AI/Queries/GetHrInsight/HrInsightDto.cs": {
81+
"count": 1,
82+
"tokens": 0,
83+
"first_read": "2026-04-22T11:50:34.027Z"
84+
},
85+
"c:/apps/AngularNetTutotial/ApiResources/TalentManagement-API/TalentManagementAPI.Infrastructure.Shared/Services/CachingAiChatService.cs": {
86+
"count": 1,
87+
"tokens": 0,
88+
"first_read": "2026-04-22T11:50:34.422Z"
89+
},
90+
"c:/apps/AngularNetTutotial/ApiResources/TalentManagement-API/TalentManagementAPI.Application/Interfaces/IAiResponseMetadata.cs": {
91+
"count": 1,
92+
"tokens": 0,
93+
"first_read": "2026-04-22T11:50:34.498Z"
94+
},
95+
"c:/apps/AngularNetTutotial/Clients/TalentManagement-Angular-Material/talent-management/src/app/services/api/ai.service.ts": {
96+
"count": 2,
97+
"tokens": 0,
98+
"first_read": "2026-04-22T11:50:39.419Z"
99+
},
100+
"c:/apps/AngularNetTutotial/Clients/TalentManagement-Angular-Material/talent-management/src/environments/environment.ts": {
101+
"count": 1,
102+
"tokens": 0,
103+
"first_read": "2026-04-22T11:50:39.632Z"
104+
},
105+
"c:/apps/AngularNetTutotial/Clients/TalentManagement-Angular-Material/talent-management/src/app/routes/ai/ai-assistant/ai-assistant.component.ts": {
106+
"count": 1,
107+
"tokens": 0,
108+
"first_read": "2026-04-22T11:50:39.943Z"
109+
},
110+
"c:/apps/AngularNetTutotial/Clients/TalentManagement-Angular-Material/talent-management/public/data/menu.json": {
111+
"count": 1,
112+
"tokens": 0,
113+
"first_read": "2026-04-22T11:50:45.507Z"
114+
},
115+
"c:/apps/AngularNetTutotial/Clients/TalentManagement-Angular-Material/talent-management/src/app/app.routes.ts": {
116+
"count": 1,
117+
"tokens": 0,
118+
"first_read": "2026-04-22T11:50:45.939Z"
119+
},
120+
"c:/apps/AngularNetTutotial/Clients/TalentManagement-Angular-Material/talent-management/public/i18n/en-US.json": {
121+
"count": 1,
122+
"tokens": 0,
123+
"first_read": "2026-04-22T11:50:46.150Z"
124+
},
125+
"c:/apps/AngularNetTutotial/ApiResources/TalentManagement-API/TalentManagementAPI.Infrastructure.Shared/ServiceRegistration.cs": {
126+
"count": 1,
127+
"tokens": 0,
128+
"first_read": "2026-04-22T11:50:49.346Z"
59129
}
60130
},
61131
"files_written": [
@@ -136,12 +206,60 @@
136206
"action": "edit",
137207
"tokens": 92,
138208
"at": "2026-04-22T11:15:29.440Z"
209+
},
210+
{
211+
"file": "c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md",
212+
"action": "edit",
213+
"tokens": 157,
214+
"at": "2026-04-22T11:47:28.615Z"
215+
},
216+
{
217+
"file": "c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md",
218+
"action": "edit",
219+
"tokens": 192,
220+
"at": "2026-04-22T11:47:38.378Z"
221+
},
222+
{
223+
"file": "c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md",
224+
"action": "edit",
225+
"tokens": 450,
226+
"at": "2026-04-22T11:47:54.674Z"
227+
},
228+
{
229+
"file": "c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md",
230+
"action": "edit",
231+
"tokens": 80,
232+
"at": "2026-04-22T11:48:02.319Z"
233+
},
234+
{
235+
"file": "c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md",
236+
"action": "edit",
237+
"tokens": 464,
238+
"at": "2026-04-22T11:48:18.704Z"
239+
},
240+
{
241+
"file": "c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md",
242+
"action": "edit",
243+
"tokens": 50,
244+
"at": "2026-04-22T11:48:29.159Z"
245+
},
246+
{
247+
"file": "c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.3-angular-ai-chat-widget.md",
248+
"action": "edit",
249+
"tokens": 534,
250+
"at": "2026-04-22T11:51:36.633Z"
251+
},
252+
{
253+
"file": "c:/apps/AngularNetTutotial/blogs/series-6-ai-app-features/6.3-angular-ai-chat-widget.md",
254+
"action": "edit",
255+
"tokens": 272,
256+
"at": "2026-04-22T11:51:47.399Z"
139257
}
140258
],
141259
"edit_counts": {
142-
"blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md": 1,
260+
"blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md": 7,
143261
"blogs/series-6-ai-app-features/6.2-dotnet-ai-hr-assistant.md": 1,
144-
"blogs/series-6-ai-app-features/6.3-angular-ai-chat-widget.md": 2,
262+
"blogs/series-6-ai-app-features/6.3-angular-ai-chat-widget.md": 4,
145263
"blogs/series-6-ai-app-features/6.4-angular-ai-nl-search.md": 1,
146264
"blogs/series-6-ai-app-features/6.4.1-dotnet-natural-language-search.md": 1,
147265
"blogs/series-6-ai-app-features/6.5-angular-ai-vector-search.md": 1,
@@ -151,8 +269,8 @@
151269
"../../Users/Fuji Nguyen/.claude/projects/c--apps-AngularNetTutotial/memory/MEMORY.md": 2
152270
},
153271
"anatomy_hits": 3,
154-
"anatomy_misses": 8,
155-
"repeated_reads_warned": 2,
272+
"anatomy_misses": 22,
273+
"repeated_reads_warned": 12,
156274
"cerebrum_warnings": 0,
157-
"stop_count": 4
275+
"stop_count": 8
158276
}

.wolf/memory.md

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -85,3 +85,15 @@
8585
| 07:15 | Edited ../../Users/Fuji Nguyen/.claude/projects/c--apps-AngularNetTutotial/memory/MEMORY.md | inline fix | ~86 |
8686
| 07:15 | Session end: 13 writes across 10 files (6.1-dotnet-ai-foundation.md, 6.2-dotnet-ai-hr-assistant.md, 6.3-angular-ai-chat-widget.md, 6.4-angular-ai-nl-search.md, 6.4.1-dotnet-natural-language-search.md) | 11 reads | ~19926 tok |
8787
| 07:33 | Session end: 13 writes across 10 files (6.1-dotnet-ai-foundation.md, 6.2-dotnet-ai-hr-assistant.md, 6.3-angular-ai-chat-widget.md, 6.4-angular-ai-nl-search.md, 6.4.1-dotnet-natural-language-search.md) | 11 reads | ~19926 tok |
88+
| 07:36 | Session end: 13 writes across 10 files (6.1-dotnet-ai-foundation.md, 6.2-dotnet-ai-hr-assistant.md, 6.3-angular-ai-chat-widget.md, 6.4-angular-ai-nl-search.md, 6.4.1-dotnet-natural-language-search.md) | 11 reads | ~19926 tok |
89+
| 07:37 | Session end: 13 writes across 10 files (6.1-dotnet-ai-foundation.md, 6.2-dotnet-ai-hr-assistant.md, 6.3-angular-ai-chat-widget.md, 6.4-angular-ai-nl-search.md, 6.4.1-dotnet-natural-language-search.md) | 11 reads | ~19926 tok |
90+
| 07:47 | Edited blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md | 5→5 lines | ~146 |
91+
| 07:47 | Edited blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md | 5→5 lines | ~179 |
92+
| 07:47 | Edited blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md | 14→16 lines | ~420 |
93+
| 07:48 | Edited blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md | 3→3 lines | ~75 |
94+
| 07:48 | Edited blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md | 13→15 lines | ~433 |
95+
| 07:48 | Edited blogs/series-6-ai-app-features/6.1-dotnet-ai-foundation.md | inline fix | ~47 |
96+
| 07:48 | Session end: 19 writes across 10 files (6.1-dotnet-ai-foundation.md, 6.2-dotnet-ai-hr-assistant.md, 6.3-angular-ai-chat-widget.md, 6.4-angular-ai-nl-search.md, 6.4.1-dotnet-natural-language-search.md) | 11 reads | ~26629 tok |
97+
| 07:51 | Edited blogs/series-6-ai-app-features/6.3-angular-ai-chat-widget.md | modified chat() | ~498 |
98+
| 07:51 | Edited blogs/series-6-ai-app-features/6.3-angular-ai-chat-widget.md | 5→6 lines | ~254 |
99+
| 08:44 | Session end: 21 writes across 10 files (6.1-dotnet-ai-foundation.md, 6.2-dotnet-ai-hr-assistant.md, 6.3-angular-ai-chat-widget.md, 6.4-angular-ai-nl-search.md, 6.4.1-dotnet-natural-language-search.md) | 25 reads | ~47848 tok |

0 commit comments

Comments
 (0)