Repository navigation
feat(contrib): add web Pro Drive toolkit - #2
Merged
Merged
Conversation
…mirror Redaction now catches unquoted dotenv/YAML values, quoted values with spaces and short values for sensitive keys, and only exempts whole-value placeholders and strictly parsed variable references. A file is kept back, and listed in MIRROR.json excluded_files and the terminal summary, when it has an unclosed private key, a non-UTF-8 encoding with a private term or credential pattern, or a path that contains a private term. UTF-16 text is redacted like UTF-8. --name must be one portable folder name. Archives and MIRROR.json are swapped in after a read-back check, reuse compares SHA-256, and --force rewrites binary volumes. drive_mirror.py is split into redaction, mirror_build, mirror_manifest and safe_files so each file stays under the size limit. Co-Authored-By: Claude <noreply@anthropic.com>
drive_request reads REQUEST.md and --file with utf-8-sig, so a BOM no longer resets Version to 1, and writes through a .request- temp file that is retried while Drive or an editor holds REQUEST.md, removed afterwards, and reported as not published when the replace keeps failing. kit_config also accepts a JSON config saved with a BOM. Co-Authored-By: Claude <noreply@anthropic.com>
drive_wait exits 0 only after DONE.txt has non-empty content and keeps polling while it is empty or not yet readable. The quiet-output fallback ignores .DS_Store, AppleDouble ._ files, desktop.ini, Thumbs.db, Office lock files, the request writer's temp file and Drive/sync temp files. Co-Authored-By: Claude <noreply@anthropic.com>
The runbook says which files the mirror keeps back and where they are reported, the short-identity and symlink limits, python3 versus py -3.12, a POSIX submit snippet, the rclone write cache Linux needs, and that the result ZIP may hold case-only twins that collide on Windows and macOS. Co-Authored-By: Claude <noreply@anthropic.com>
mkstemp creates 0600 files, so archives and MIRROR.json swapped in from a temp file lost the umask-based mode that shutil.copyfile gave them. Co-Authored-By: Claude <noreply@anthropic.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Why
A Python toolkit for agents that hand ChatGPT web Pro several tasks over the same repository through Google Drive: a persistent repository mirror on Drive, a request file for changing a running task without sending another message, and a delivery marker the local agent can wait on. Offered as a self-contained
contrib/directory, not wired into the CLI.How it relates to the CLI
--timebox,--approve-appsand--driverather than reimplementing them; the suggested task header is submitted withvoyager ask --timebox 70.--driveuploads specified files per question with rclone; the mirror keeps one committed snapshot of a repository at a stable Drive location across questions (text layer with file/symbol index and redaction, optional binary volumes,MIRROR.jsonwith commit and hashes).contrib/, outside the npm package. If something moves into the CLI later, the mirror and the versioned request file are the candidates; the sandbox reminder hooks and prompt examples fit better as optional recipes.contrib/web-pro-kit/README.mdsays the same for an agent reading it cold.Outline
Verification
voyager ask --model extra-high --timebox 25with a paired extension: the mirror was fetched and its commit and hashes verified; the task wrotetest.txtfirst;channel.pypassed its selftest and installed in the ChatGPT sandbox; a second request appended mid-task was picked up within three minutes and applied; the ZIP,NOTES.mdandDONE.txtlanded on Drive in that order anddrive_wait.pyreturned on the marker. The approval card was answered by hand.BEGIN … PRIVATE KEYline made the redactor drop the rest of the file. A selftest now mirrors the kit itself, extracts it and runs every script's selftest from the copy.oxfmt --checkpasses on the new directory; Python is checked by the selftests.🤖 Generated with Claude Code