Commit Graph

30 Commits

Author SHA1 Message Date
googleworkspace-bot 643fb7a951 chore: release versions (#313) 2026-03-08 18:26:33 -06:00
googleworkspace-bot 95bb24e9c2 chore: release versions (#277) 2026-03-06 18:31:47 -07:00
googleworkspace-bot 59ad87327b chore: release versions (#243) 2026-03-05 19:54:41 -08:00
googleworkspace-bot f07dd2b2c9 chore: release versions (#228) 2026-03-05 16:49:35 -08:00
googleworkspace-bot bc84ba71a4 chore: release versions (#218) 2026-03-05 15:02:27 -08:00
googleworkspace-bot aaa5c44c6a chore: release versions (#207) 2026-03-05 14:30:21 -08:00
googleworkspace-bot 0ba49d1584 chore: release versions (#199) 2026-03-05 13:03:38 -08:00
googleworkspace-bot c6095ddb27 chore: release versions (#180) 2026-03-05 09:56:15 -08:00
googleworkspace-bot f6d74b0074 chore: release versions (#147) 2026-03-05 01:14:25 -08:00
googleworkspace-bot b9c3698595 chore: release versions (#142) 2026-03-05 00:52:26 -08:00
googleworkspace-bot 29a029aef4 chore: release versions (#140) 2026-03-05 00:44:04 -08:00
googleworkspace-bot 6ed836c81c chore: release versions (#132) 2026-03-05 00:10:19 -07:00
googleworkspace-bot 7fa8bda23d chore: release versions (#131) 2026-03-04 23:55:30 -07:00
googleworkspace-bot 5ebaf9cd31 chore: release versions (#91) 2026-03-04 23:05:50 -07:00
googleworkspace-bot 0d9558d297 chore: release versions (#80) 2026-03-04 18:54:05 -07:00
googleworkspace-bot 6092bf90a0 chore: release versions (#72) 2026-03-04 15:30:51 -08:00
googleworkspace-bot 680b60cecc chore: release versions (#70) 2026-03-04 15:06:12 -08:00
googleworkspace-bot bcc6c8d24e chore: release versions (#62) 2026-03-04 15:24:51 -07:00
googleworkspace-bot 3346f9d68c chore: release versions (#61)
* chore: release versions

* chore: regenerate skills [skip ci]

---------

Co-authored-by: github-actions[bot] <github-actions[bot]@users.noreply.github.com>
2026-03-04 12:00:30 -07:00
googleworkspace-bot 206fd46f1e chore: release versions (#54) 2026-03-04 01:04:28 -07:00
googleworkspace-bot 7e73fda87a chore: release versions (#46) 2026-03-04 00:43:54 -07:00
googleworkspace-bot 7ba65cf3a9 chore: release versions (#20) 2026-03-03 18:37:15 -07:00
Justin Poehnelt 90adcb4379 fix: harden URL encoding and input validation for AI/LLM callers (#21)
* refactor: replace manual urlencoded() with reqwest .query() builder

Remove duplicate hand-rolled urlencoded() functions from workflows.rs
and calendar.rs. All query parameters are now passed via reqwest's
.query() API, which handles percent-encoding correctly and completely.

* fix: percent-encode path parameters to prevent path traversal

Use percent_encoding::utf8_percent_encode for calendar_id, cal.id,
message_id, and file_id before interpolating into URL path segments.
Addresses code review feedback on security regression.

* fix: add shared URL safety helpers for path params

Add encode_path_segment() for single-segment IDs and
validate_resource_name() for multi-segment resource names.

encode_path_segment: percent-encodes all non-alphanumeric chars,
used for calendar IDs, file IDs, and message IDs.

validate_resource_name: rejects path traversal (..) and control
chars while preserving intentional / structure, used for Chat
space names, task list IDs, and subscription names. Returns clear
error messages for LLM callers.

* test: add AI edge case tests for URL safety helpers

Cover query/fragment injection, double-encoding, unicode, spaces,
path traversal via encoding, control chars (CR/tab), and clear
error message assertions for LLM callers.

* fix: warn on stderr when API calls fail silently

- Daily briefing calendar events fetch
- Daily briefing tasks fetch
- Daily summary calendar events fetch
- Daily summary unread email count fetch

Addresses PR review feedback about confusing silent failures,
especially for LLM callers that cannot see visual cues.

* fix: harden input validation for AI/LLM callers

- Add src/validate.rs with validate_safe_output_dir, validate_msg_format,
  and validate_safe_dir_path helpers
- Validate --output-dir against path traversal in gmail +watch and
  events +subscribe
- Validate --msg-format against allowlist in gmail +watch
- Validate --dir against path traversal in script +push
- Add clap value_parser constraint for --msg-format
- Document input validation patterns in AGENTS.md

Closes #23

* chore: add changesets for PR #21 commits

* test: add comprehensive test coverage for input validation handlers

* docs: document input validation and URL safety patterns in AGENTS.md and CONTRIBUTING.md

* fix: address PR review comments — reject ?/# in resource names, validate subscription arg, remove redundant validate_msg_format

* fix: store validated PathBuf, remove dead code, delete duplicate SubscribeConfig

Addresses review comments:
- Store validated PathBuf from validate_safe_output_dir instead of
  discarding it (output_dir is now Option<PathBuf>)
- Remove duplicate SubscribeConfig from events/mod.rs
- Delete unused validate_msg_format (clap value_parser handles this)
- Remove all #[allow(dead_code)] annotations

* fix: per-segment traversal check in validate_resource_name, fix docs

* fix: harden security validation and deduplicate logic

---------

Co-authored-by: jpoehnelt-bot <jpoehnelt-bot@users.noreply.github.com>
2026-03-03 18:36:41 -07:00
Justin Poehnelt b0d0b95d07 feat: skills expansion (#18)
* wip

* feat: replace admin recipes with 50 consumer-focused recipes

- Remove all admin/security/IT recipes (offboard-user, audit-user-login, etc.)
- Remove enterprise-only recipes (initiate-litigation-hold)
- Replace dangerous recipes (setup-email-forwarding -> create-gmail-filter)
- Remove recipes overlapping with gws-workflow-* helpers
- Remove thin 2-step recipes better served as helpers
- Add 50 curated consumer recipes for Gmail, Drive, Docs, Calendar, Sheets
- Update README: link to docs/skills.md, update skill count to 100+
- Fix clippy needless_borrow warnings in generate_skills.rs
- Fix lefthook.yml: run fmt/clippy sequentially (parallel causes races)

---------

Co-authored-by: jpoehnelt-bot <jpoehnelt-bot@users.noreply.github.com>
2026-03-03 15:02:34 -08:00
googleworkspace-bot 62868840b5 chore: release versions (#15) 2026-03-03 13:58:16 -07:00
googleworkspace-bot d93a621a74 chore: release versions (#12) 2026-03-03 12:15:04 -08:00
googleworkspace-bot 1f9a37871d chore: release versions (#10) 2026-03-03 11:14:56 -07:00
googleworkspace-bot 827b9da8a1 chore: release versions (#8) 2026-03-03 10:48:41 -07:00
Justin Poehnelt 3cd4d522b2 fix: sync Cargo.toml version with changesets (#7) 2026-03-03 09:46:45 -08:00
Justin Poehnelt f75bf6dcf7 feat: implement cli (#1) 2026-03-02 17:26:21 -07:00