Skip to content

feat: Storage Files commands (#134)#144

Merged
padak merged 6 commits intomainfrom
feat/134-storage-file-commands
Apr 12, 2026
Merged

feat: Storage Files commands (#134)#144
padak merged 6 commits intomainfrom
feat/134-storage-file-commands

Conversation

@padak
Copy link
Copy Markdown
Owner

@padak padak commented Apr 12, 2026

Summary

  • Add 8 new CLI commands for direct Storage Files API access
  • file-list: list files with tag filtering (AND logic), pagination, full-text search
  • file-upload: upload any file with tags and --permanent flag
  • file-download: download by file ID or by tags (latest matching file)
  • file-info: show file metadata without downloading
  • file-delete: batch delete with dry-run support
  • file-tag: add/remove tags in a single operation
  • load-file: import an already-uploaded Storage File into a table
  • unload-table: export a table to a Storage File with optional tags and download

Implementation

  • Client layer: list_files, upload_file, delete_file, tag_file, untag_file + extended prepare_file_upload with tags/permanent params
  • Service layer: 8 new methods in StorageService with standard project resolution and error handling
  • Command layer: 8 Typer commands with dual output (JSON + Rich), branch support, permission registration
  • Tests: 50 new tests covering client, service, and CLI layers
  • Updated CLAUDE.md command list and plugin SKILL.md decision table

Test plan

  • Run make check (lint + format + tests) - all 1517 tests pass
  • Integration test: file-upload + file-list + file-download + file-tag + load-file + unload-table + file-delete against all 3 providers (AWS, GCP, Azure)

Closes #134

padak added 6 commits April 12, 2026 21:45
…ad, file-info, file-delete, file-tag, load-file, unload-table)

Add 8 new CLI commands for direct Storage Files API access:
- file-list: list files with tag filtering (AND logic)
- file-upload: upload with tags and --permanent flag
- file-download: download by file ID or by tags (latest matching)
- file-info: show file metadata without downloading
- file-delete: batch delete with dry-run support
- file-tag: add/remove tags in a single operation
- load-file: import an already-uploaded file into a table
- unload-table: export table to Storage File with optional download

Closes #134
Azure manifest entries use azure://host/container/blob URLs. The previous
code didn't handle Azure provider in _CloudDownloader, causing
UnsupportedProtocol errors on sliced file downloads.

Fix: replace azure:// with https:// and append SAS token from absCredentials.
- Add rich_help_panel to group storage commands into Buckets/Tables/Files
  sections in `kbagent storage --help` output
- Add Storage Files section to AGENT_CONTEXT (kbagent context) with all
  8 new file commands documented
- Regenerate SKILL.md via make skill-gen (74 commands)
- Rename file-list -> files (matches buckets, tables)
- Rename file-info -> file-detail (matches bucket-detail, table-detail)
- Group commands with rich_help_panel: Buckets, Tables, Files
- Sort commands consistently: list, detail, create, upload/download, tag, delete
- Update permissions, context, CLAUDE.md, tests, SKILL.md
Add references/storage-files-workflow.md with step-by-step workflows:
upload with tags, list/filter by tags, download by ID or tag,
tag management, load-file into table, unload-table to file.
Includes typical patterns for CI/CD artifacts and data exchange.
@padak padak merged commit 49a23e6 into main Apr 12, 2026
1 check passed
@padak padak deleted the feat/134-storage-file-commands branch April 12, 2026 20:43
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

feat: storage file upload/download commands

1 participant