241 lines
10 KiB
Markdown
241 lines
10 KiB
Markdown
🌙 Late-Night Check — 2026-02-26 (3:04 AM)
|
|
|
|
📊 Status:
|
|
- Active tasks: 5 (hardening queued; cron active)
|
|
- Overdue: 0
|
|
- Git: Uncommitted changes (BRAIN.md, MEMORY.md, research/ scripts—commit AM)
|
|
- Tomorrow's priority: Hardening task (ed4bc5aa-8c84-4f95-b339-cf2ea17fd02b)—cron/Bob progress.
|
|
|
|
🎯 Suggestion:
|
|
Morning: Gantt Board for hardening (test if complete), git commit workspace. Builds reliable agents for iOS empire—rest well.
|
|
|
|
---
|
|
|
|
## [2026-02-26 16:46] ✅ Created daily-digest.sh script
|
|
|
|
### What was requested
|
|
Matt wanted a shell script to generate the daily digest reliably (to fix the broken cron job).
|
|
|
|
### What was done
|
|
- Created `/Users/mattbruce/.openclaw/workspace/scripts/daily-digest.sh`
|
|
- Script handles JSON escaping properly using `jq`
|
|
- Uses temp files to avoid argument length issues
|
|
- Checks for existing digest before creating
|
|
- Generates proper format with emojis and `[Read more →](URL)` links
|
|
- Can be run manually: `./daily-digest.sh [YYYY-MM-DD]`
|
|
|
|
### Usage
|
|
```bash
|
|
# Run for today
|
|
./scripts/daily-digest.sh
|
|
|
|
# Run for specific date
|
|
./scripts/daily-digest.sh 2026-02-26
|
|
```
|
|
|
|
---
|
|
|
|
## [2026-02-26 15:52] ✅ Fixed blog-backup skill to match mission-control-docs pattern
|
|
|
|
### What was requested
|
|
Continue working to fix issues with the daily blog and create a skill similar to mission-control-docs.
|
|
|
|
### What was done
|
|
- Updated `~/.agents/skills/blog-backup/lib/blog.sh` to use shared `auth-api` transport
|
|
- Created `/Users/mattbruce/Documents/Projects/OpenClaw/Web/blog-backup/scripts/blog.sh` CLI
|
|
- Added contract tests at `~/.agents/skills/blog-backup/tests/test_contract.sh` (all 6 pass)
|
|
- Updated SKILL.md with full documentation
|
|
- Updated TOOLS.md with CLI usage examples
|
|
- Committed changes to both workspace and blog-backup repo
|
|
- Pushed to Gitea
|
|
|
|
### Files Created/Modified
|
|
- `~/.agents/skills/blog-backup/lib/blog.sh` - Updated with auth-api integration
|
|
- `~/.agents/skills/blog-backup/SKILL.md` - Full documentation
|
|
- `~/.agents/skills/blog-backup/tests/test_contract.sh` - Contract tests
|
|
- `/Users/mattbruce/Documents/Projects/OpenClaw/Web/blog-backup/scripts/blog.sh` - CLI script
|
|
- `~/.openclaw/workspace/TOOLS.md` - Updated documentation
|
|
|
|
### Architecture
|
|
Following API-centric CLI pattern:
|
|
```
|
|
Skill (blog.sh) → auth-api transport → API (x-api-key) → Database
|
|
```
|
|
|
|
### Testing
|
|
```bash
|
|
# Run contract tests
|
|
bash ~/.agents/skills/blog-backup/tests/test_contract.sh
|
|
# Result: PASS: blog-backup contract tests
|
|
```
|
|
|
|
---
|
|
|
|
## [2026-02-26 10:36] ✅ Completed - Shared auth-api skill integration
|
|
|
|
### What was requested
|
|
Matt asked to build/integrate/test a no-duplication auth API layer shared by `gantt-tasks` and `mission-control-docs`.
|
|
|
|
### What was decided
|
|
- Do NOT merge domain skills.
|
|
- Create shared `auth-api` transport skill/module and wire both domain skills to it.
|
|
|
|
### What was done
|
|
- Created new skill: `~/.agents/skills/auth-api/`
|
|
- `SKILL.md`
|
|
- `lib/auth_api.sh` with `api_call`, `api_preflight`, `api_require_token`
|
|
- Refactored `gantt-tasks/lib/tasks.sh`
|
|
- Added source to shared `auth_api.sh`
|
|
- Replaced local `_api_call` implementation to delegate to shared `api_call`
|
|
- Refactored `mission-control-docs/lib/docs.sh`
|
|
- Added source to shared `auth_api.sh`
|
|
- Replaced local `_api_call` implementation to delegate to shared `api_call`
|
|
- Updated both SKILL docs to reflect architecture:
|
|
- `Domain Skill -> auth-api transport -> API -> DB`
|
|
- Added tests:
|
|
- `~/.agents/skills/auth-api/tests/test_auth_api.sh` (mocked curl contract test)
|
|
- Ran tests:
|
|
- Initial fail due to grep pattern parsing; fixed with `grep -F --`
|
|
- Final: `PASS: auth-api transport tests`
|
|
- Smoke checks passed:
|
|
- both domain libs source/load correctly
|
|
- both `_api_call` functions route through shared transport layer
|
|
|
|
### Follow-ups
|
|
- Optionally add retry/backoff policy in `auth_api.sh` once behavior is agreed.
|
|
|
|
### Additional completed (2026-02-26 10:39)
|
|
- Added per-domain contract tests with mocked shared transport:
|
|
- `~/.agents/skills/gantt-tasks/tests/test_contract.sh`
|
|
- verifies `task_create` contract (`GET /sprints`, `POST /tasks`)
|
|
- verifies `task_update` contract (`GET /tasks`, `POST /tasks` with status change)
|
|
- `~/.agents/skills/mission-control-docs/tests/test_contract.sh`
|
|
- verifies `mc_doc_create` contract (`POST /documents` payload)
|
|
- verifies `mc_doc_update` contract (`GET /documents?id=...`, `PATCH /documents` payload)
|
|
- Improved mock-call logging by base64-encoding payloads for multiline-safe assertions.
|
|
- Ran full suite:
|
|
- `PASS: gantt-tasks contract tests`
|
|
- `PASS: mission-control-docs contract tests`
|
|
- `PASS: auth-api transport tests`
|
|
|
|
### Additional completed (2026-02-26 10:40)
|
|
- Fixed consuming workflow skill `url-research-to-documents-and-tasks` to remove duplicate/orphan logic path.
|
|
- Replaced `orchestrator.sh` implementation with a thin wrapper that delegates to hardened script only:
|
|
- `orchestrator.sh -> bin/url-research.sh`
|
|
- Updated skill docs to point production entrypoint to `orchestrator.sh` (single source of truth).
|
|
- Verified script syntax:
|
|
- `bash -n orchestrator.sh` ✅
|
|
- `bash -n bin/url-research.sh` ✅
|
|
- Verified wrapper execution path:
|
|
- no-arg usage correctly routes and prints hardened usage
|
|
- run with URL starts hardened workflow phases/logging
|
|
|
|
### Rationale
|
|
- Prevents workflow drift where old orchestrator code and hardened code diverge.
|
|
- Keeps one execution path for future fixes and reliability improvements.
|
|
|
|
### Additional completed (2026-02-26 10:53)
|
|
- Implemented new shared skill: `workflow-checkpoints`
|
|
- `~/.agents/skills/workflow-checkpoints/SKILL.md`
|
|
- `~/.agents/skills/workflow-checkpoints/lib/checkpoints.sh`
|
|
- `~/.agents/skills/workflow-checkpoints/tests/test_checkpoints.sh`
|
|
- Added URL-keyed stable checkpoint model with 7-day TTL:
|
|
- key = `sha256(normalized_url)`
|
|
- payload files by type:
|
|
- `<key>-content.json`
|
|
- `<key>-analysis.json`
|
|
- `<key>-plan.md`
|
|
- metadata file:
|
|
- `<key>-meta.json` (expiresAtEpoch, ttl, sourceUrl)
|
|
- Integrated checkpoints into URL research workflow (`bin/url-research.sh`):
|
|
- extract-content phase: reuse from checkpoint if present, else compute and save
|
|
- analyze-fit phase: reuse from checkpoint if present, else compute and save
|
|
- create-plan phase: reuse from checkpoint if present, else compute and save
|
|
- touch checkpoint TTL on reuse
|
|
- Verified tests and syntax:
|
|
- `PASS: workflow-checkpoints tests`
|
|
- `PASS: auth-api transport tests`
|
|
- `PASS: gantt-tasks contract tests`
|
|
- `PASS: mission-control-docs contract tests`
|
|
- `bash -n` for updated workflow script passed
|
|
|
|
### Follow-up suggestions
|
|
- Add explicit progress comment text when checkpoint is reused (e.g., "reused checkpoint") for user visibility.
|
|
- Optionally add `checkpoint_list <url>` helper for quick debugging of cached artifacts.
|
|
|
|
### Additional completed (2026-02-26 10:58-11:00)
|
|
- Fixed all phase progress comments in URL research workflow to show consistent phase numbering (0-5):
|
|
- Phase 0: Task created
|
|
- Phase 1: Content extraction
|
|
- Phase 2: Document creation
|
|
- Phase 3: Fit analysis
|
|
- Phase 4: Implementation plan
|
|
- Phase 5: Final review and handoff
|
|
- Added Phase 4 success comment immediately after plan attachment (was missing before).
|
|
- Added source indicators to progress comments:
|
|
- `[reused checkpoint]` when using cached data
|
|
- `[reused existing]` when reusing doc from task description
|
|
- Made Phase 2 idempotent by parsing task description for existing `Document ID`.
|
|
- Created workflow summary doc: `WORKFLOW_SUMMARY.md` showing complete phase flow.
|
|
- Verified script syntax: `bash -n url-research.sh` ✅
|
|
|
|
### Result
|
|
Now every phase visibly updates the task comment with a checked box, and reruns efficiently skip completed work using checkpoints + task description parsing.
|
|
|
|
### Additional completed (2026-02-26 11:13)
|
|
- Implemented cleanup + doc consolidation for Alice workflow skill:
|
|
- Added `run.sh` unified entrypoint for standalone shell usage.
|
|
- Kept OpenClaw mode explicit in `SKILL.md`: always execute via Alice-Researcher (`sessions_spawn`).
|
|
- Updated mandatory read section to consolidated docs only:
|
|
- `SKILL.md`
|
|
- `WORKFLOW_SUMMARY.md`
|
|
- Removed legacy drift-prone docs:
|
|
- `ANTI-PATTERNS.md`
|
|
- `TASK-FIRST-WORKFLOW.md`
|
|
- Verified syntax:
|
|
- `bash -n run.sh` ✅
|
|
- `bash -n orchestrator.sh` ✅
|
|
|
|
### Outcome
|
|
- Inside OpenClaw: route to Alice.
|
|
- Outside OpenClaw: run `~/.agents/skills/url-research-to-documents-and-tasks/run.sh` directly.
|
|
- Fewer docs, less drift, clearer operational path.
|
|
|
|
### Additional completed (2026-02-26 11:16)
|
|
- Implemented dry-run mode (option C):
|
|
- `--dry-run` (mock generators when checkpoints missing)
|
|
- `--dry-run-real` (real generators, still no writes)
|
|
- Updated `bin/url-research.sh`:
|
|
- Added flags parsing for dry-run modes
|
|
- Added no-write behavior for task/doc/attachment/status operations
|
|
- Checkpoints are read-only in dry-run (no put/touch writes)
|
|
- Added dry-run summary output at end
|
|
- Updated docs:
|
|
- `run.sh` header examples for dry-run usage
|
|
- `SKILL.md` standalone section includes dry-run commands
|
|
- Validation:
|
|
- `bash -n` checks passed for modified scripts
|
|
|
|
### Additional completed (2026-02-26 14:29)
|
|
- Implemented native macOS Swift CLI quote paster at `scripts/skrybe.swift`.
|
|
- Added subcommand structure scaffold:
|
|
- `skrybe quotes --paste` (implemented)
|
|
- `skrybe quotes --list` (planned placeholder)
|
|
- `skrybe quotes --add` (planned placeholder)
|
|
- Implemented `--paste` flow:
|
|
- Fetches random quote from `http://localhost:3001/quote`
|
|
- Parses JSON response `{ "quote": string, "author": string }`
|
|
- Formats output as `Quote — Author`
|
|
- Uses `NSPasteboard` to stage text and `CGEvent` Cmd+V to paste at cursor
|
|
- Added explicit error handling for:
|
|
- Invalid usage / unsupported subcommands
|
|
- API URL issues, unreachable API, bad HTTP status
|
|
- Invalid/malformed JSON response
|
|
- Pasteboard write failures
|
|
- Missing Accessibility permission
|
|
- Keyboard event creation failures
|
|
- Verified compilation with:
|
|
- `swiftc scripts/skrybe.swift -o scripts/skrybe` ✅
|
|
- Verified CLI help output and error path when API is offline:
|
|
- `scripts/skrybe help` ✅
|
|
- `scripts/skrybe quotes --paste` returns clean API-unreachable error when server is down ✅ |