Add OpenWeather-backed weather reports

This commit is contained in:
Jacob Dubin
2026-05-06 08:13:26 -05:00
parent 699e0d5282
commit b74ef3bfa2
15 changed files with 2072 additions and 55 deletions

View File

@@ -610,9 +610,38 @@ Current release theme:
- preference set/recall works (`my favorite X is Y` / `what is my favorite X`)
- account/loop/device scoped lookup prevents cross-tenant leakage
- Follow-up:
- extend phrase parsing beyond first rule-based patterns
- add durable persistence path for personal facts
- broaden fact categories (names, important dates, household preferences)
- broaden fact categories further (multi-person household memory, relationship cues, and corrective updates)
### 24. Memory-Triggered Proactivity Baseline
- Status: `implemented`
- Tags: `content`, `storage`, `protocol`
- Result:
- `surprise me` now uses weighted candidate selection instead of only generic fallback text
- candidate weighting uses tenant-scoped memory signals and date triggers
- February 9 (`National Pizza Day`) can proactively launch the legacy pizza animation path
- proactive pizza fact offer flow stores pending offer state in session metadata and resolves direct short `yes/no` turns
- memory parsing now includes names, anniversary-style important dates, likes/dislikes variants, and reverse favorite phrasing (`pizza is my favorite food`)
- Follow-up:
- expand proactivity beyond pizza to additional Pegasus-backed categories
- add cooldown/throttle policy and observability around proactive offer frequency
- connect memory store to durable multi-tenant persistence
### 25. Weather Report-Skill Launch Compatibility
- Status: `implemented`
- Tags: `protocol`, `content`
- Result:
- weather requests now launch `report-skill` using Pegasus-aligned intent `requestWeatherPR`
- weather phrase coverage includes baseline forecast and condition-style questions (`will it rain`, `is it snowing`, tomorrow variants)
- weather launches emit `SKILL_REDIRECT` + completion and now also include cloud weather speech so weather turns remain useful even when local report providers are incomplete
- weather entity hints are carried in outbound NLU (`date = tomorrow`, `Weather = rain/snow/...`) for report-skill consumption
- OpenWeather provider integration is in place with configurable API key, default location, unit preference, and environment-variable fallback (`OPENWEATHER_API_KEY`)
- cloud weather speech now uses live provider summaries for current conditions and tomorrow high/low forecast when available
- Follow-up:
- connect weather units and location directly to user/report-skill settings parity instead of config defaults
- add richer condition-change commentary and view parity with original report-skill weather behaviors
## Suggested Order
@@ -628,17 +657,19 @@ Use [regression-test-plan.md](regression-test-plan.md) as the detailed checklist
For `1.0.19`:
1. Command-vs-question personality split (`dance` command vs `do you like to dance` question style; expand this pattern)
2. Expand memory-backed personal facts with tenant-scoped storage (beyond the first birthday/preferences foundation)
3. Proactivity selector baseline with source-backed first offers
4. Dialog parsing expansion and ambiguity guardrails
5. Holidays and seasonal personality behavior built on the new memory/proactivity foundation
6. Update, backup, and restore proof
7. STT upgrade and noise screening
8. Hosted capture/storage plan / indexing for group testing
9. Binary-safe media storage / sync to cloud drive: OneDrive, Google Drive, Box, etc.
10. Provider-backed news and weather
11. Lasso, identity, and onboarding as larger discovery-driven tracks
1. Command-vs-question personality split (`dance` command vs `do you like to dance` question style; expand this pattern) - implemented
2. Expand memory-backed personal facts with tenant-scoped storage (beyond the first birthday/preferences foundation) - implemented
3. Proactivity selector baseline with source-backed first offers - implemented
4. Weather report-skill launch compatibility - implemented
5. Dialog parsing expansion and ambiguity guardrails
6. Holidays and seasonal personality behavior built on the new memory/proactivity foundation
7. Durable memory persistence path (multi-tenant backing store)
8. Update, backup, and restore proof
9. STT upgrade and noise screening
10. Hosted capture/storage plan / indexing for group testing
11. Binary-safe media storage / sync to cloud drive: OneDrive, Google Drive, Box, etc.
12. Provider-backed news and weather parity polish
13. Lasso, identity, and onboarding as larger discovery-driven tracks
For `1.0.20` and beyond:

View File

@@ -68,17 +68,52 @@ The second delivered slice is first tenant-scoped personal memory:
Memory keys are scoped by account/loop/device tenant context so one tenant does not leak into another.
## Third Implemented Slice In `1.0.19`
The third delivered slice starts memory-triggered proactivity and broadens memory parsing:
- `surprise me` now runs a weighted proactivity selector
- selectors use tenant-scoped memory signals (favorites and likes/dislikes) plus date triggers
- February 9 (`National Pizza Day`) can proactively launch the pizza animation path
- proactive pizza fact offer flow now stores pending offer state and resolves direct `yes` / `no` follow-up answers
- memory parsing now covers:
- names (`my name is ...`, `what is my name`)
- important dates (`our anniversary is ...`, `when is our anniversary`)
- likes/dislikes (`i like ...`, `i love ...`, `i dislike ...`, `i don't like ...`)
- favorite phrase variants including reverse form (`pizza is my favorite food`)
## Fourth Implemented Slice In `1.0.19`
The fourth delivered slice starts weather compatibility using Pegasus-style report-skill routing:
- weather phrases now route to `report-skill` instead of generic placeholder chat
- outbound NLU launch uses legacy reactive intent `requestWeatherPR` (source-aligned with Pegasus manifests/tests)
- weather entity hints are added for:
- `date = tomorrow` on tomorrow phrasing
- `Weather = rain|snow|...` on condition questions (for example `will it rain tomorrow`)
- websocket output now emits local skill redirect + silent completion for weather launch, matching existing local-skill launch patterns
## Fifth Implemented Slice In `1.0.19`
The fifth delivered slice adds provider-backed weather content while preserving Pegasus launch compatibility:
- OpenWeather provider abstraction and infrastructure wiring are added to the hosted cloud
- weather requests still launch `report-skill` with `requestWeatherPR` and legacy weather/date entities
- weather replies now include cloud-generated spoken summaries from provider data:
- current conditions (`Right now in ...`)
- tomorrow forecast shape (`Tomorrow in ...`) with high/low temperatures when available
- simple location extraction is supported for phrasing like `what's the weather in Chicago tomorrow`
- provider config supports appsettings and `OPENWEATHER_API_KEY` environment fallback for deployment
## Next Slices
1. Command-vs-question personality split (start with dance/twerk-style prompts, keep commands action-oriented and questions conversational)
2. Expand memory-backed personal facts (tenant-scoped birthday/preferences coverage, persistence depth, and parsing breadth)
3. Proactivity selector baseline (source-backed first proactive offers with safe throttling and stock-compatible payloads)
4. Dialog parsing expansion (more phrase variants, ambiguity handling, and transcript-to-intent guardrails)
5. Holidays and seasonal personality slice (time-scoped content backed by the new memory/proactivity path)
6. Update/backup/restore end-to-end proof (operator-run and documented)
7. STT noise-screening and short-utterance reliability pass
8. Provider-backed news/weather expansion using Pegasus-backed contracts
9. Capture indexing and retention boundary for group testing
1. Dialog parsing expansion (more phrase variants, ambiguity handling, and transcript-to-intent guardrails)
2. Holidays and seasonal personality slice beyond pizza day (time-scoped content backed by memory/proactivity path)
3. Durable memory persistence path (swap in provider-backed multi-tenant storage while preserving behavior contracts)
4. Update/backup/restore end-to-end proof (operator-run and documented)
5. STT noise-screening and short-utterance reliability pass
6. Provider-backed news expansion and deeper weather parity using Pegasus-backed contracts
7. Capture indexing and retention boundary for group testing
For slices 1-5, use Pegasus phrase lists, MIM IDs, and behavior patterns as the source anchor before broadening into OpenJibo-native improvements.