flashdata-cli 1.1.0__py3-none-win_amd64.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. flashdata_cli/__init__.py +32 -0
  2. flashdata_cli/__main__.py +4 -0
  3. flashdata_cli/bin/flashdata.exe +0 -0
  4. flashdata_cli/provenance.json +9 -0
  5. flashdata_cli/share/CHANGELOG.md +34 -0
  6. flashdata_cli/share/CONTRIBUTING.md +35 -0
  7. flashdata_cli/share/LICENSE +21 -0
  8. flashdata_cli/share/README.md +251 -0
  9. flashdata_cli/share/README.zh-CN.md +250 -0
  10. flashdata_cli/share/SECURITY.md +7 -0
  11. flashdata_cli/share/THIRD_PARTY_NOTICES.md +18 -0
  12. flashdata_cli/share/docs/bulk.md +29 -0
  13. flashdata_cli/share/docs/commands.md +548 -0
  14. flashdata_cli/share/docs/installation.md +304 -0
  15. flashdata_cli/share/docs/installation.zh-CN.md +304 -0
  16. flashdata_cli/share/docs/migration.md +13 -0
  17. flashdata_cli/share/docs/onboarding.md +21 -0
  18. flashdata_cli/share/docs/release-notes-1.0.0.md +47 -0
  19. flashdata_cli/share/docs/release-notes-1.0.1.md +43 -0
  20. flashdata_cli/share/docs/release-notes-1.1.0.md +44 -0
  21. flashdata_cli/share/docs/release-readiness.md +28 -0
  22. flashdata_cli/share/docs/releases.md +42 -0
  23. flashdata_cli/share/docs/response-formats.md +87 -0
  24. flashdata_cli/share/docs/review.md +41 -0
  25. flashdata_cli/share/docs/runs.md +47 -0
  26. flashdata_cli/share/docs/sdk-parity.md +126 -0
  27. flashdata_cli/share/docs/security.md +29 -0
  28. flashdata_cli/share/docs/validation.md +69 -0
  29. flashdata_cli/share/examples/README.md +11 -0
  30. flashdata_cli/share/examples/batch.json +1 -0
  31. flashdata_cli/share/examples/bulk-create.json +1 -0
  32. flashdata_cli/share/examples/bulk-options.json +1 -0
  33. flashdata_cli/share/examples/bulk-update.json +1 -0
  34. flashdata_cli/share/examples/download-options.json +1 -0
  35. flashdata_cli/share/examples/ids.txt +2 -0
  36. flashdata_cli/share/examples/query-flat.json +1 -0
  37. flashdata_cli/share/examples/query.json +1 -0
  38. flashdata_cli/share/examples/storage.example.json +8 -0
  39. flashdata_cli/share/examples/youtube-metadata.json +1 -0
  40. flashdata_cli/share/licenses/Go_standard_library_1.27.3_LICENSE.txt +27 -0
  41. flashdata_cli/share/licenses/github.com_ebitengine_purego_v0.9.0_LICENSE.txt +201 -0
  42. flashdata_cli/share/licenses/github.com_flashdatadev_flashdata-go_v1.1.0_LICENSE.txt +21 -0
  43. flashdata_cli/share/licenses/github.com_godbus_dbus_v5_v5.1.0_LICENSE.txt +25 -0
  44. flashdata_cli/share/licenses/github.com_inconshreveable_mousetrap_v1.1.0_LICENSE.txt +201 -0
  45. flashdata_cli/share/licenses/github.com_santhosh-tekuri_jsonschema_v5_v5.3.1_LICENSE.txt +175 -0
  46. flashdata_cli/share/licenses/github.com_spf13_cobra_v1.10.2_LICENSE.txt +174 -0
  47. flashdata_cli/share/licenses/github.com_spf13_pflag_v1.0.9_LICENSE.txt +28 -0
  48. flashdata_cli/share/licenses/golang.org_x_sys_v0.36.0_LICENSE.txt +27 -0
  49. flashdata_cli/share/licenses/golang.org_x_term_v0.35.0_LICENSE.txt +27 -0
  50. flashdata_cli/share/release-files.json +48 -0
  51. flashdata_cli-1.1.0.dist-info/METADATA +71 -0
  52. flashdata_cli-1.1.0.dist-info/RECORD +55 -0
  53. flashdata_cli-1.1.0.dist-info/WHEEL +4 -0
  54. flashdata_cli-1.1.0.dist-info/entry_points.txt +2 -0
  55. flashdata_cli-1.1.0.dist-info/licenses/LICENSE +21 -0
@@ -0,0 +1,47 @@
1
+ # FlashData CLI v1.0.0
2
+
3
+ [FlashData](https://flashdata.dev) · [API documentation](https://flashdata.dev/docs) · [English README](https://github.com/flashdatadev/flashdata-cli/blob/main/README.md) · [简体中文](https://github.com/flashdatadev/flashdata-cli/blob/main/README.zh-CN.md)
4
+
5
+ Initial standalone FlashData CLI, built on the pinned and checksum-verified **FlashData Go SDK v1.0.0**. Ready-to-run binaries are available from the [official v1.0.0 release](https://github.com/flashdatadev/flashdata-cli/releases/tag/v1.0.0).
6
+
7
+ ## Included
8
+
9
+ - Secure named profiles with Windows DPAPI, macOS Keychain/Linux Secret Service integration, or an explicitly selected protected file store. Keys are entered through hidden terminal input or stdin, never command arguments.
10
+ - Recoverable machine onboarding, browser claiming and fresh-process credential verification before installation acknowledgement.
11
+ - Google search, YouTube data and media delivery; general query, background and mixed-source batch commands.
12
+ - Complete bulk create/upload/start/control/export workflows, streaming output, durable run IDs and recovery without automatic paid replay.
13
+ - Account/source discovery, diagnostics, legacy state migration, English and Chinese READMEs, runnable inputs and offline tests.
14
+
15
+ ## Packages
16
+
17
+ | Platform | Archive |
18
+ | --- | --- |
19
+ | Linux amd64 | `flashdata_1.0.0_linux_amd64.tar.gz` |
20
+ | Linux arm64 | `flashdata_1.0.0_linux_arm64.tar.gz` |
21
+ | macOS Intel | `flashdata_1.0.0_darwin_amd64.tar.gz` |
22
+ | macOS Apple Silicon | `flashdata_1.0.0_darwin_arm64.tar.gz` |
23
+ | Windows amd64 | `flashdata_1.0.0_windows_amd64.zip` |
24
+
25
+ Archives contain the executable, English/Chinese READMEs, docs, example inputs and dependency license notices. The executable requires no separate Go, Node.js, Python or Docker installation. `build-report.json` records the exact CLI source commit, SDK version/checksum, toolchain, runtime source fingerprints and package hashes. The executable's `--version` reports 1.0.0 and that same source commit. The verified executables are unchanged from the tagged build; `documentationCommit` records the finalized package documentation separately, and executable hashes are included in the report.
26
+
27
+ Download the matching public archive and SHA256SUMS; no GitHub sign-in is required. Follow the [English installation guide](https://github.com/flashdatadev/flashdata-cli/blob/main/docs/installation.md) or [简体中文安装指南](https://github.com/flashdatadev/flashdata-cli/blob/main/docs/installation.zh-CN.md). Put the extracted executable in a user-controlled PATH directory (`flashdata.exe` on Windows), then run `flashdata --version` and `flashdata --help` offline. The READMEs also explain building directly from the v1.0.0 source tag with Go 1.25+.
28
+
29
+ ## Checksums and verification
30
+
31
+ `SHA256SUMS` covers all five archives, `build-report.json`, the separately attached English/Chinese READMEs and these release notes. From a directory containing all those files:
32
+
33
+ ```bash
34
+ sha256sum -c SHA256SUMS
35
+ ```
36
+
37
+ PowerShell: use `Get-FileHash -Algorithm SHA256 <file>` and compare its hash with the corresponding `SHA256SUMS` entry. Packages are not signed or notarized; SHA-256 checksums verify bytes and are not publisher signatures.
38
+
39
+ ## Validation and operational limits
40
+
41
+ CI runs full tests/vet on Linux, Windows and Intel macOS with Go 1.25/1.27, Linux race checks, Apple Silicon cross-builds on both Go versions and all five archive builds. Native Apple Silicon execution and live macOS Keychain/Linux Secret Service integration remain separate acceptance checks; no native ARM runtime result is claimed.
42
+
43
+ Onboarding is gated by server configuration. Imported-key recurring use requires the reviewed backend identity endpoint; unsupported identity responses fail closed. Publishing this CLI does not deploy backend changes, submit production paid work or verify customer storage. Lost or malformed submission responses remain uncertain: preserve the run ID and use read-only reconciliation/recovery before intentional new work. Cancellation stops local waiting while accepted remote work can continue.
44
+
45
+ ## 简体中文摘要
46
+
47
+ 独立 `flashdata` 命令行工具,锁定 Go SDK v1.0.0,覆盖安全凭据配置、可恢复接入、Google/YouTube 查询、后台批量任务、完整 Bulk 流程与持久化执行记录。提供 Linux amd64/arm64、macOS Intel/Apple Silicon、Windows amd64 安装包、构建记录和 SHA-256 校验和。GitHub Release 正式安装包现已提供公开下载;源码标签保持不变。原生 macOS 自动测试使用 Intel,Apple Silicon 已交叉编译,原生 ARM 运行及真实 Keychain/Secret Service 仍需单独验收。本次不部署后端或执行真实付费任务。
@@ -0,0 +1,43 @@
1
+ # FlashData CLI v1.0.1
2
+
3
+ [FlashData](https://flashdata.dev) · [API documentation](https://flashdata.dev/docs) · [English README](https://github.com/flashdatadev/flashdata-cli#readme) · [简体中文](https://github.com/flashdatadev/flashdata-cli/blob/main/README.zh-CN.md)
4
+
5
+ ## What's new
6
+
7
+ - Public `flashdata discover plans` and `flashdata discover status` commands are now included in the standalone binaries. They read public API endpoints without an API key or account credentials.
8
+ - English and Chinese workflow selectors and examples cover research, AI context, news, YouTube search, metadata, existing automatic transcripts, uploaded captions and complete MP3/MP4 bulk downloads to customer storage.
9
+ - Clear API coverage and SDK comparisons explain accepted task recovery, partial item failures, export expiry and how to avoid duplicate submissions.
10
+ - Homebrew, signed APT and signed RPM installation and upgrade instructions point to v1.0.1. Existing profiles, credentials and run journals are preserved during package upgrades.
11
+
12
+ ## Install or upgrade
13
+
14
+ No Go compiler, Python, Node.js or source build is required. See the [English installation guide](https://github.com/flashdatadev/flashdata-cli/blob/v1.0.1/docs/installation.md) or [简体中文安装指南](https://github.com/flashdatadev/flashdata-cli/blob/v1.0.1/docs/installation.zh-CN.md) for first-time repository setup.
15
+
16
+ | Method | Install | Upgrade an existing installation |
17
+ | --- | --- | --- |
18
+ | Homebrew (Linux/macOS) | `brew install flashdatadev/tap/flashdata` | `brew update && brew upgrade flashdatadev/tap/flashdata` |
19
+ | APT (Ubuntu/Debian) | `sudo apt-get install flashdata` | `sudo apt-get update && sudo apt-get install --only-upgrade flashdata` |
20
+ | RPM (Fedora/RHEL) | `sudo dnf --refresh install flashdata` | `sudo dnf --refresh upgrade flashdata` |
21
+ | Manual archive | Download, verify and extract the matching archive | Replace only the executable; retain the CLI state directory |
22
+
23
+ APT/RPM commands require the official signed repository to be configured first. Their package version is `1.0.1-1`. Check `flashdata --version` after upgrading; it reports `1.0.1` and the exact tagged source commit. An older copy earlier in PATH can hide a package-manager installation.
24
+
25
+ ## Downloads and verification
26
+
27
+ | Platform | Archive |
28
+ | --- | --- |
29
+ | Linux amd64 | `flashdata_1.0.1_linux_amd64.tar.gz` |
30
+ | Linux arm64 | `flashdata_1.0.1_linux_arm64.tar.gz` |
31
+ | macOS Intel | `flashdata_1.0.1_darwin_amd64.tar.gz` |
32
+ | macOS Apple Silicon | `flashdata_1.0.1_darwin_arm64.tar.gz` |
33
+ | Windows x64 | `flashdata_1.0.1_windows_amd64.zip` |
34
+
35
+ Download from the [official release](https://github.com/flashdatadev/flashdata-cli/releases/tag/v1.0.1) and verify the selected archive against `SHA256SUMS` before extraction. Archives include the executable, both READMEs, docs, example inputs and dependency licenses from the same source tag. `build-report.json` records the CLI commit, Go toolchain, pinned Go SDK v1.0.0 checksum and archive hashes. Previous v1.0.0 assets and tags remain unchanged.
36
+
37
+ Source tests and native archive acceptance cover all five platforms using mock APIs, including onboarding, credentials, query/bulk execution and recovery. Homebrew checks install and upgrades on Linux/macOS Intel and ARM64; signed repository checks cover Ubuntu 22.04/24.04, Debian 12/13, Fedora 43/44 and Red Hat UBI 8/9/10 userspace on both CPUs. Full RHEL hosts, FIPS mode, live OS credential services and production API/cloud delivery are separate environment-specific checks. Standalone archives use checksums; macOS binaries are not notarized. APT metadata and RPM packages/metadata use the existing signing certificates.
38
+
39
+ No PyPI, TestPyPI or npm publication is part of this release. The separately prepared Python wheel candidate remains pinned to v1.0.0 and does not contain the new discovery commands.
40
+
41
+ ## 简体中文
42
+
43
+ v1.0.1 将无需 API 密钥的 `discover plans`、`discover status` 纳入五个平台的独立安装包,无需源码构建。中英文文档补充工作流选择、手动上传字幕、MP3/MP4 完整批量下载及恢复示例。Homebrew、签名 APT 和 RPM 源提供升级;升级保留用户配置、凭据和执行历史。首次安装请先按安装指南配置软件源,升级后用 `flashdata --version` 确认版本为 1.0.1。独立归档附带准确源码提交、构建记录和 SHA-256 校验和;旧 v1.0.0 文件保持不变。本次不发布 PyPI、TestPyPI 或 npm,独立 Python wheel 候选包仍固定为 v1.0.0。
@@ -0,0 +1,44 @@
1
+ # FlashData CLI v1.1.0
2
+
3
+ [FlashData](https://flashdata.dev) · [API documentation](https://flashdata.dev/docs)
4
+
5
+ Choose JSON, plain text or Markdown with independent `--accept` and
6
+ `--respond-with` flags. JSON remains the default.
7
+
8
+ - Search, YouTube and generic query commands support all four content formats.
9
+ - Async/batch receipts and job status support `--accept text/plain`.
10
+ - Use `jobs result` or async/batch `--wait` for Markdown completed results.
11
+ - Plain text goes directly to stdout; add `--json` for the CLI envelope or
12
+ `--output FILE` to save the selected body.
13
+ - Saved runs remember format choices. Reformat completed background results
14
+ without submitting another query. A failed save preserves the previous cache.
15
+ - Redact credentials escaped by Markdown, including older cached responses and
16
+ file exports, while retaining source links.
17
+ - Pin Go SDK v1.1.0 and preserve accepted IDs, uncertain receipts, access checks
18
+ and durable recovery.
19
+
20
+ ## Install or upgrade
21
+
22
+ Download the archive for your platform from the
23
+ [official release](https://github.com/flashdatadev/flashdata-cli/releases/tag/v1.1.0).
24
+ Standalone binaries need no Go, Python or Node.js. Keep your existing profiles
25
+ and state directory when replacing the executable.
26
+
27
+ The [installation guide](installation.md) covers Homebrew, signed APT/RPM,
28
+ manual archives and Windows. Go 1.25+ users can install the source tag:
29
+
30
+ ```bash
31
+ go install github.com/flashdatadev/flashdata-cli/cmd/flashdata@v1.1.0
32
+ ```
33
+
34
+ The release includes Linux amd64/arm64, macOS Intel/Apple Silicon and Windows x64
35
+ archives, matching English/Chinese documentation, a build report and `SHA256SUMS`.
36
+ `flashdata --version` identifies the exact tagged source commit. Existing release
37
+ assets remain unchanged. Bulk exports and media keep their existing formats.
38
+
39
+ ## 简体中文
40
+
41
+ 1.1.0 新增独立的 `--accept` 和 `--respond-with` 参数,默认仍为 JSON。
42
+ 实时内容和已完成结果支持 Markdown;后台提交、批量提交及任务状态支持纯文本。
43
+ 执行历史保留格式设置,切换已完成后台结果的格式不会重复提交;保存失败时保留旧缓存。
44
+ 修复 Markdown 转义后的凭据脱敏,涵盖旧缓存读取和导出。五个平台均提供独立可执行文件。
@@ -0,0 +1,28 @@
1
+ # Initial joint release-readiness review (historical)
2
+
3
+ [FlashData](https://flashdata.dev) · [API documentation](https://flashdata.dev/docs)
4
+
5
+ This records the local review before initial GitHub source publication, not the current distribution state. See [v1.0.1 release notes](release-notes-1.0.1.md) and [current release process](releases.md) for standalone packages, signed repositories and native archive acceptance. Current workflow results are available in [GitHub Actions](https://github.com/flashdatadev/flashdata-cli/actions).
6
+
7
+ Reviewed together on 2026-10-22 as local 1.0.0 candidates. This check does not publish, tag, push, deploy, register real accounts or submit live paid work. Exact executed counts and platform evidence are in [validation](validation.md).
8
+
9
+ ## Integration fixes
10
+
11
+ The SDK retains valid recovery IDs even when another response field has the wrong JSON type. The CLI preserves them as `candidateRemoteIds` in both errors and durable uncertain records, with `acceptanceConfirmed:false`. Candidate IDs are evidence for manual `jobs get` or `bulk get` reconciliation; they cannot turn a partial batch into a successful complete submission. Reusing the run ID never replays the submission.
12
+
13
+ Partial bulk transfers remain partial when exported from saved history. Available receipt files are retained, the command exits nonzero and the error goes to stderr. Per-item failures also return a structured error with export metadata instead of emitting a success envelope. Safe `runs recover` reads can finish an interrupted export. A safe state read during recovery discards spent signed-upload capabilities after an observed start, including when the original start response was lost.
14
+
15
+ Compiled-process acceptance covers a server-side installation ACK whose response is lost: the candidate and proof survive, a new process verifies them, and the same installation converges without another registration. It also covers a lost bulk start response followed by a new process recovering the original task without another create, upload or start. SDK confirmation responses must have consistent generation metadata.
16
+
17
+ ## Packages and documentation
18
+
19
+ Each repository has an explicit `release-files.json` allowlist. Package selection rejects traversal, duplicate paths and symlink components, and ignores stray local files. ZIP metadata is deterministic; Unix archive metadata is normalized. Dependency license/notice copies are shipped and linked from the READMEs. CLI build reports retain both runtime source fingerprints and the Go toolchain. The SDK package verifier cross-builds the packaged consumer for all five targets through an isolated local module proxy.
20
+
21
+ English is the default README with a top-level 简体中文 link. Chinese commands and executable SDK Go programs stay synchronized with English. Documentation distinguishes ID-only SDK examples from the CLI's private upload-capability journal, explains uncertain submissions, and keeps official FlashData links. Source and command reference generation are checked for drift.
22
+
23
+ ## Before a public release
24
+
25
+ - Deploy the reviewed identity backend patch and verify the production onboarding feature configuration. Complete authorized live claim/handoff, callback and customer-storage checks.
26
+ - Run native Linux/macOS credential-store acceptance and the Linux race check. Windows native protection and subprocess workflows are covered locally; cross-compilation does not establish other native OS behavior.
27
+ - The initial source candidate pinned an SDK pseudo-version. Released CLI versions pin the public SDK v1.0.0 tag and go.sum checksums, with no local replacement or sibling checkout.
28
+ - Review the final source, archives and SHA-256 checksums; sign/notarize platform executables as appropriate to the distribution plan. No signing, remote CI execution or publication is claimed by this check.
@@ -0,0 +1,42 @@
1
+ # Releases, installation and source builds
2
+
3
+ [FlashData](https://flashdata.dev) · [API documentation](https://flashdata.dev/docs)
4
+
5
+ The current release is [v1.1.0](https://github.com/flashdatadev/flashdata-cli/releases/tag/v1.1.0).
6
+ It includes JSON, plain-text and Markdown response options, safe cached-result
7
+ reformatting, and credential redaction for Markdown and cached exports. See the
8
+ [release notes](release-notes-1.1.0.md) and [response formats](response-formats.md).
9
+
10
+ ## Install
11
+
12
+ Standalone archives support Linux amd64/arm64, macOS Intel/Apple Silicon and
13
+ Windows x64, without a separate runtime. The [installation guide](installation.md)
14
+ and [简体中文](installation.zh-CN.md) cover direct downloads, Homebrew, signed APT
15
+ and signed RPM installation and upgrades. Preserve profiles and execution history
16
+ when updating. Existing release files and signed package versions remain immutable.
17
+
18
+ The CLI pins Go SDK **v1.1.0**, with its recorded Go checksums and no local module
19
+ replacement. Go 1.25+ users can also install
20
+ `github.com/flashdatadev/flashdata-cli/cmd/flashdata@v1.1.0` with `go install`.
21
+
22
+ ## Build and verify
23
+
24
+ From a clean checkout of the intended tag, run
25
+ `python scripts/build_release.py --go /path/to/go --commit FULL_SOURCE_COMMIT`.
26
+ The script builds five CGo-disabled executables and archives with reviewed docs,
27
+ examples, licenses and a build report. It creates no tag and uploads no files.
28
+
29
+ The formal release contains the archives, both READMEs, `RELEASE_NOTES.md`,
30
+ `build-report.json` and `SHA256SUMS`. Executable `--version` output and the build
31
+ report record the exact tagged source commit. The report also records the pinned
32
+ SDK, source fingerprints and toolchain. Verify the canonical tag and every asset
33
+ checksum before publishing; keep existing tags and released bytes unchanged.
34
+
35
+ [GitHub Actions](https://github.com/flashdatadev/flashdata-cli/actions) runs Linux,
36
+ Windows and Intel macOS source checks on Go 1.25/1.27, Linux race checks, source
37
+ and command generation checks, archive-policy tests and all five native archive
38
+ acceptance jobs. Release checks use mock APIs and submit no paid queries.
39
+
40
+ The separate unpublished Python installer candidate remains pinned to historical
41
+ v1.0.0 binaries. It is not the Python SDK and does not provide v1.1.0 CLI flags.
42
+ Use the standalone distribution for this release. See [wheel preparation](python-packaging.md).
@@ -0,0 +1,87 @@
1
+ # JSON, plain text and Markdown
2
+
3
+ [FlashData](https://flashdata.dev) · [API documentation](https://flashdata.dev/docs)
4
+
5
+ Response-format flags are included in v1.1.0 standalone binaries. See the
6
+ [installation guide](installation.md). With Go 1.25+, you can also use
7
+ `go install github.com/flashdatadev/flashdata-cli/cmd/flashdata@v1.1.0`.
8
+
9
+ `--accept` chooses the API response type. `--respond-with markdown` selects
10
+ Markdown content. They are independent HTTP headers, outside query JSON and params.
11
+
12
+ | Flags | API response |
13
+ | --- | --- |
14
+ | Neither flag | Original JSON fields |
15
+ | `--accept text/plain` | Original fields as indented text |
16
+ | `--respond-with markdown` | JSON with Markdown in `content`, replacing `results` |
17
+ | `--accept text/plain --respond-with markdown` | Metadata followed by Markdown |
18
+
19
+ Markdown preserves source links, transcript timestamps and response metadata. The
20
+ API formats retrieved content without generating a summary.
21
+
22
+ ## Search and transcripts
23
+
24
+ ```bash
25
+ flashdata search "vector databases" --accept text/plain
26
+ flashdata search "vector databases" --respond-with markdown
27
+ flashdata youtube transcript dQw4w9WgXcQ --accept text/plain --respond-with markdown
28
+ ```
29
+
30
+ Each realtime command submits a query. For all other sources, use `query --input`
31
+ with the same flags. `--output FILE` saves the selected response body to a new file.
32
+
33
+ Plain text goes directly to stdout. Add `--json` to keep the CLI's versioned JSON
34
+ envelope, with the text in `data`. For submission receipts, the text is in
35
+ `data.submission`, alongside saved remote IDs and recovery instructions. JSON API
36
+ responses keep the existing CLI envelope. `--output` writes the response body;
37
+ stdout then reports the output path. Credentials and signed URLs are redacted.
38
+
39
+ ## Background jobs and batches
40
+
41
+ ```bash
42
+ flashdata search "vector databases" --mode async --accept text/plain --run-id research
43
+ flashdata batch submit --input examples/batch.json --accept text/plain --run-id research-batch
44
+ flashdata jobs get JOB_ID --accept text/plain
45
+ flashdata jobs wait JOB_ID --accept text/plain
46
+ flashdata jobs result JOB_ID --accept text/plain --respond-with markdown
47
+ ```
48
+
49
+ Submissions return receipts; status reads return status. They support `--accept`.
50
+ Choose Markdown when reading completed results. `--wait` on an async query or
51
+ batch also accepts `--respond-with markdown` for completed results; the submission
52
+ request receives no Markdown header. Batch waiting returns one result per job,
53
+ with job labels separating plain-text results.
54
+
55
+ The CLI saves accepted job IDs before waiting or writing output. A malformed
56
+ receipt leaves an uncertain run with any candidate IDs available for inspection.
57
+ Neither rerunning that ID nor recovery submits replacement work. Access checks
58
+ and polling use JSON regardless of the selected final response format.
59
+
60
+ YouTube Download supports text receipts and Markdown result manifests. Media bytes
61
+ keep their original format. Bulk exports remain JSONL; account, discovery and
62
+ onboarding commands keep their existing formats.
63
+
64
+ ## Saved runs and recovery
65
+
66
+ ```bash
67
+ flashdata runs recover research --accept text/plain --respond-with markdown
68
+ flashdata runs show research --result
69
+ ```
70
+
71
+ The run journal remembers the saved response's format. Reusing a run ID without
72
+ format flags returns that saved format after access verification. A different
73
+ explicit format for a completed background job performs safe result reads, without
74
+ another query or query-credit charge. The same applies to `jobs result`.
75
+ If saving a different format fails, the previous saved response remains available.
76
+ Retry recovery after correcting the local storage problem.
77
+
78
+ A saved realtime response cannot be fetched again in another format. An explicit
79
+ format change returns `run_response_format_conflict` without repeating the query.
80
+ Use `runs show RUN_ID --result` to read the existing response. To clear a saved
81
+ Markdown choice for a background result, pass `--respond-with ""`.
82
+
83
+ The CLI accepts `application/json` and `text/plain` for `--accept`, and `markdown`
84
+ or an empty `--respond-with`. Invalid choices fail before API calls. Errors go to
85
+ stderr with a nonzero exit status; `--json` keeps structured CLI errors.
86
+ See the [API response-format guide](https://flashdata.dev/docs/guides/response-formats)
87
+ for HTTP requests and response bodies.
@@ -0,0 +1,41 @@
1
+ # Local CLI review
2
+
3
+ [FlashData](https://flashdata.dev) · [API documentation](https://flashdata.dev/docs)
4
+
5
+ This records the local review before initial GitHub source publication. Current workflow results are available in [GitHub Actions](https://github.com/flashdatadev/flashdata-cli/actions). Source publication does not create version tags, GitHub Releases or backend deployments.
6
+
7
+ Reviewed against the supplied CLI spec, the checked-out backend implementation and the sibling Go SDK. No live credentials or production mutations were used. The final joint review also updates the sibling Go SDK; the existing backend identity patch remains undeployed.
8
+
9
+ ## Response-format review
10
+
11
+ Current source adds independent response headers while retaining JSON defaults,
12
+ saved job IDs and the CLI output envelope. API-generated fixtures cover all 14
13
+ realtime sources and 15 stored-result sources, text receipts, status, waiting and
14
+ recovery. Review fixes redact signed URLs inside both Markdown response types,
15
+ sanitize usage metadata and retain every candidate ID from malformed receipts.
16
+ Format changes never repeat a paid query. See [response formats](response-formats.md).
17
+
18
+ ## Initial publication review
19
+
20
+ | Area | Gap fixed |
21
+ | --- | --- |
22
+ | Environment overrides | Bulk recovery writes preserve the original saved credentials, proofs and phase instead of replacing them with an environment-only profile. |
23
+ | Key import | Importing the same saved key verifies and reuses it without deleting onboarding/upload recovery data; explicit replacement remains available. |
24
+ | Onboarding | Pending registration status gives a recovery command without creating access; whitespace in a repeated scope flag does not change the saved request. Verified connection fallback retains connection/expiry metadata. |
25
+ | Source discovery | Secret redaction no longer corrupts public credential-property schemas. Restricted keys can inspect public schemas while pricing/permission status remains scoped. |
26
+ | Batch access | One current access/identity check covers every distinct source, avoiding per-item reads against the management API rate limit. Dry-runs return available estimates by source and request count. |
27
+ | Submission recovery | Failed commits after accepted batches return remote IDs in structured errors. No replacement submission is made. |
28
+ | Recurring policy | Newly created recurring records retain their owner/installation requirement through flag omission, result reads and recovery. |
29
+ | Journal integrity | Large batch records can be read back; history lists omit full payloads. Orphaned results block replay when a journal record is missing. |
30
+ | Bulk recovery | Controls refresh local stages and remove spent upload capabilities. Uploads use a private snapshot matching the validated hash and byte count even if the original file changes. |
31
+ | Private input/output | Generic query/batch files containing credentials or callbacks require private permissions. Windows output files receive a private ACL at creation. Callback metadata and accidental argument errors do not echo secret values. |
32
+ | Bulk JSON/flags | Create/update field names are case sensitive; update accepts stdin. Realtime --wait, ignored job-output flags and runs --output without --result are rejected. |
33
+ | Migration | A single source snapshot is hashed and decoded. Interrupted imports are source-bound and cannot replace unrelated history. Completed import retries preserve the current profile, including a later logout. |
34
+ | Linux credential store | Explicit existing local Unix D-Bus endpoints only; no session-bus autolaunch or remote plaintext Secret Service transport. |
35
+ | Documentation | Matching English/Chinese commands, runnable manual bulk JSON inputs, PowerShell stdin examples and accurate state-specific control guidance. |
36
+
37
+ The optional check_backend_contracts.cjs development check compares all 15 SDK source definitions against the actual backend catalog, verifies the backend's filters:null compatibility, and exercises registration plus all five bulk-source option validators. It starts no server, database or cloud client. Default Go tests additionally submit every source-discovery example through the shared command path against a loopback API and exercise recovery/security failures.
38
+
39
+ See the [joint release-readiness check](release-readiness.md) for retained candidate IDs, partial-export errors, lost-response acceptance and deterministic allowlisted packages.
40
+
41
+ See [validation evidence](validation.md) for exact executed results. Native Linux/macOS credential-store checks, the race detector, production feature availability and backend deployment are not established by this Windows review. That local review preceded source publication; the CLI now uses an immutable public SDK dependency without a sibling replacement. No version tag or GitHub Release is created by the source push.
@@ -0,0 +1,47 @@
1
+ # Durable runs and duplicate protection
2
+
3
+ [FlashData](https://flashdata.dev) · [API documentation](https://flashdata.dev/docs)
4
+
5
+ A run belongs to one profile, account/credential identity and pair of service origins. Files use SHA-256-derived names rather than caller-provided paths. Run IDs allow 1–160 letters/digits plus dot, underscore, colon, at, plus and hyphen; the first character must be a letter/digit. Normalize the query before hashing: flat and nested parameters have the same wire form, object key order does not matter, and conflicting/duplicate fields are rejected. Source and mode are part of execution intent. Output path, waiting and recurring flags do not create a second execution identity.
6
+
7
+ Before any paid mutation, a private, synced and atomically replaced intent record exists. Its request metadata is sanitized; cloud credentials stay in private configuration/vaults. Same ID/different input or account/origin conflicts. Same successful run returns its saved result after live access/source checks. A missing/corrupt result is an error, not permission to submit again. Credentials revoked since the first execution stop cached reads.
8
+
9
+ New recurring records also retain their owner/installation requirement. Omitting --recurring on a later invocation or using runs show/recover cannot weaken that saved policy. An orphaned result whose journal record is missing blocks another submission with the same ID. Journal records have a 64 MiB serialized limit, checked before writing; this accommodates the CLI's 8 MiB batch input limit and JSON escaping. runs list returns metadata without full query inputs or acceptance receipts; runs show inspects an individual complete record.
10
+
11
+ | Local status | Meaning and recovery |
12
+ | --- | --- |
13
+ | intent | Process may have crashed before or after dispatch. No automatic replay. |
14
+ | uncertain | Response was lost; inspect account/server records before an intentional new execution. |
15
+ | failed | A known rejection/local failure occurred; the ID is retained and is not automatically retried. |
16
+ | accepted | Known job/bulk ID is durable. `runs recover` reads existing remote work. |
17
+ | partial | A bulk result stream stopped; partial JSONL is kept and safe reads may be repeated. |
18
+ | succeeded | Result hash and file were committed; verify current access before cache/export. |
19
+
20
+ Realtime uncertain requests have no server receipt lookup in the current API. There is deliberately no force-retry switch that silently converts uncertain history into new paid work. One-off commands generate an ID; repeating without it is a new execution.
21
+
22
+ Async/batch acceptance receipts retain remote IDs and usage. Recovery waits/fetches using those IDs only. Batch aggregation is bounded to 128 MiB; use individual `jobs result --output` for larger results. Bulk rows stream to a separate private file with a running checksum; partially completed exports are retained before an error is reported. Cache/export verifies the stored checksum. Failed/invalid item receipts cause nonzero exit after they have been saved.
23
+
24
+ Batch access metadata is verified once per command and checked against every distinct source, avoiding per-item identity reads. Batch dry-runs include available source-specific estimates. If an accepted batch cannot be committed locally, its remote IDs are returned in error.details.remoteIds for explicit recovery. Bulk get/start/control refreshes local stages and removes spent upload capabilities after the job leaves awaiting_upload.
25
+
26
+ The profile's kernel lock covers command mutation, including network submission and final state commit. Concurrent writers wait only within the command deadline. The lock file is not removed; Windows LockFileEx and POSIX flock release when the process exits/crashes. This avoids unsafe stale-lock unlink/reclaim races. A fresh installation child only reads the atomically committed candidate, without acquiring the writer lock.
27
+
28
+ Run history has no automatic expiry or eviction. Profiles retain history on logout. Large results are separate from the credential vault. The host owns cron, Task Scheduler, Codex or other recurring invocation; the CLI writes no scheduler configuration and stores no key in scheduler text. This is local duplicate protection, not cross-machine exactly-once execution.
29
+
30
+ Changing a saved response format retains earlier response versions. If saving fails
31
+ or is interrupted, the last committed response remains available for reading and
32
+ recovery.
33
+
34
+ ## Response formats
35
+
36
+ The journal retains the selected response format. Cached results reuse that format
37
+ when no flags are supplied. A different explicit format never causes another paid
38
+ query: realtime cache changes fail with `run_response_format_conflict`; completed
39
+ background results can be read again using `runs recover --accept ... --respond-with ...`.
40
+ Plain-text receipts still retain confirmed job IDs, and malformed receipts retain
41
+ candidate IDs on an uncertain run. See [response formats](response-formats.md).
42
+
43
+ ## Candidate IDs and partial exports
44
+
45
+ Malformed responses can leave `candidateRemoteIds` on an uncertain record. These IDs do not populate the confirmed `remoteId`/`remoteIds` fields. Inspect each candidate with the original account and reconcile the entire request; repeating the run or `runs recover` does not promote candidate evidence or resubmit work.
46
+
47
+ A saved partial NDJSON export always returns a `partial_result` error, even if every row received so far completed. Available rows can still be written to a new output file. Per-item failure exports return `bulk_item_failures`; failure metadata goes to stderr with no success envelope on stdout.
@@ -0,0 +1,126 @@
1
+ # FlashData SDK and CLI comparison
2
+
3
+ [FlashData](https://flashdata.dev) · [API documentation](https://flashdata.dev/docs)
4
+
5
+ Python, TypeScript, JavaScript and Go are the language entry points. TypeScript and
6
+ JavaScript share one npm package and implementation. The standalone CLI uses the Go SDK.
7
+ This comparison describes the current source on `main`; it is not a claim that every
8
+ source change is included in previously published v1.0.0 archives.
9
+
10
+ ## Choose an integration
11
+
12
+ | Concern | Python | TypeScript | JavaScript | Go | CLI |
13
+ | --- | --- | --- | --- | --- | --- |
14
+ | Best fit | Python applications, notebooks, data pipelines | Typed Node.js services and agents | Node.js scripts and integrations | Go services and workers | Terminal research, scripts and agents |
15
+ | Runtime | Python 3.10+ | Node.js 22+; compiler for your application | Node.js 22+ | Go 1.25+ | Standalone Linux/macOS amd64/arm64 or Windows amd64 binary |
16
+ | Client/key | `FlashData(api_key=...)` or `AsyncFlashData(api_key=...)` | `new FlashData({apiKey: ...})` | Same constructor | `flashdata.New(Options{APIKey: ...})` | `flashdata auth login`; hidden prompt or stdin |
17
+ | Async model | Sync and asyncio clients | Promises and async iterators | Same | `context.Context`, goroutines and iterators | Background jobs, batch and bulk commands |
18
+ | Time units | Seconds | Milliseconds | Milliseconds | `time.Duration` | Duration flags such as `--timeout 1h` |
19
+ | Local credentials/history | Application-owned | Application-owned | Application-owned | Application-owned | Protected profiles, vault and persistent run journal |
20
+
21
+ SDK examples pass the API key explicitly. Applications can read a key from the environment
22
+ or a secret manager. The CLI can also use an explicit `FLASHDATA_API_KEY` override. No
23
+ project automatically loads `.env` files. Run the Node.js SDK on your server.
24
+
25
+ ## Core API coverage
26
+
27
+ | Capability | Python | TypeScript | JavaScript | Go | CLI |
28
+ | --- | --- | --- | --- | --- | --- |
29
+ | Core developer REST operations | 24 | 24 | Same package | Same 24 | Same 24 in CLI v1.0.1; v1.0.0 binaries omit public plans/status reads |
30
+ | Source schemas | 15 | Identical 15 | Same | Identical 15 | Same schemas through Go SDK v1.0.0 |
31
+ | Realtime / background / batch sources | 14 / 15 / 15 | Same | Same | Same | Same via `query`, `--mode async`, `batch submit` |
32
+ | Google sources | Search, images, news, shopping, videos, places | Same six | Same | Same six | `search` shortcut; all six via `query` |
33
+ | YouTube sources | Search, extended search, metadata, transcript, captions, license labels, channel, suggestions, download | Same nine | Same | Same nine | Dedicated shortcuts plus `query` for all nine |
34
+ | Standard jobs | Get, wait, result | Same | Same | Same | `jobs get`, `jobs wait`, `jobs result` |
35
+ | JSON, plain text and Markdown responses | Per-call `accept` / `respond_with` | Per-call `accept` / `respondWith` | Same | `WithFormat` methods | `--accept` / `--respond-with`; `--json` selects the CLI envelope |
36
+ | Bulk sources | Metadata, transcript, captions, license labels, download | Same five | Same | Same | Same five via `bulk run` or manual commands |
37
+ | Bulk operations | Create, upload file, start, get/list, update, pause/resume/cancel, wait, manifest/parts/rows | Same | Same | Same plus reader-based upload | Manual lifecycle commands and streamed `bulk results` |
38
+ | Account reads | Access, balance, pricing, limits, usage | Same five | Same | Same plus verified identity | Auth/access checks, account reads and verified identity |
39
+ | Public discovery | Sources, plans, health, status | Same four | Same | Same four | `sources list`, `discover`, `discover plans`, `discover status` |
40
+
41
+ `discover plans` and `discover status` were added after the CLI v1.0.0 binary release.
42
+ Install or upgrade to CLI v1.0.1 to use those commands without building from source. This
43
+ distinction does not affect the existing search, YouTube, batch or bulk commands.
44
+
45
+ The 15 sources are six `google_*` sources and nine `youtube_*` sources. Media downloads
46
+ are background-only and require customer cloud storage. Other sources can run in realtime.
47
+ No SDK or CLI invents a list/cancel endpoint for standard background jobs; those controls
48
+ are available for bulk jobs only.
49
+
50
+ Go and the CLI additionally implement agent onboarding and verified ownership reads.
51
+ Python and the Node.js package do not expose that optional protocol. These are separate
52
+ from the shared developer APIs; availability depends on the service deployment. The
53
+ additional Go contract also documents browser-owned operations that are not SDK methods.
54
+
55
+ ## README and example coverage
56
+
57
+ All four repositories keep English as the default README, with a Simplified Chinese link
58
+ at the top. Both languages include the same eight workflow choices: web context, news,
59
+ video discovery, metadata, transcripts, bulk datasets, media delivery and bulk recovery.
60
+
61
+ All have copyable first-search examples, explicit key setup, manual-caption examples,
62
+ background/batch guidance, bulk metadata exports and complete customer-storage download
63
+ workflows. Each source has a runnable program in the SDK repositories; the CLI uses
64
+ dedicated shortcuts or the source JSON returned by `sources show SOURCE`.
65
+
66
+ The Python/Node.js media scripts default to MP4 and offer `--audio` for MP3. The Go bulk
67
+ example defaults to MP3 and accepts `-options video-options.json` for MP4. The CLI has
68
+ complete MP3 and MP4 bulk commands; its single-video `youtube download` shortcut is
69
+ audio-oriented, while `query --mode async` exposes the complete download source input.
70
+ Different defaults are examples, not differences in the media formats supported by APIs.
71
+
72
+ README transcript snippets explicitly request an existing automatic English track;
73
+ caption snippets request an existing uploaded track. Runnable track scripts document
74
+ their manual/automatic selection flags and defaults. Availability depends on the video. The
75
+ service does not generate missing transcripts, translate captions, summarize text or
76
+ create embeddings. Those application steps use the data returned by FlashData.
77
+
78
+ ## Bulk lifecycle and recovery
79
+
80
+ | Step | SDK runnable examples | CLI |
81
+ | --- | --- | --- |
82
+ | Prepare | A UTF-8 file with one 11-character video ID per line | Same; private storage/options files for credentials |
83
+ | Create | Reserve fresh export/recovery paths before creating work | Commit a run ID and intent in the journal |
84
+ | Save acceptance | Sync the accepted ID/job before upload; never save signed upload URLs in ordinary records | Save job ID and signed upload capability in the protected vault/journal |
85
+ | Execute | Create → upload → start → wait → stream JSONL | `bulk run` performs the same lifecycle |
86
+ | Export | Stream results and preserve partial rows; check row statuses and final counts | Stream results, preserve failed rows and exit nonzero for failures |
87
+ | Repeat | Existing export or recovery record blocks creation | Same run ID prevents duplicate creation; changed input conflicts |
88
+ | Recover | Explicit accepted ID and a fresh output path; no create/upload/resume | `runs recover RUN_ID` reads accepted work; no implicit replay |
89
+ | Pre-upload interruption | ID-only records cannot restore a lost signed upload; application needs a secure store | Original capability is kept privately; explicit upload/start recovery is available while valid |
90
+
91
+ The README's inline API examples explain the lifecycle. Use the repository's runnable
92
+ bulk program as the starting point for file preflight, saved IDs, failure exits and recovery.
93
+ An empty reserved recovery file after an uncertain create is not permission to create again:
94
+ reconcile the account/server outcome first. None of the SDKs automatically retries paid
95
+ queries or mutations. Local cancellation or a polling timeout does not cancel accepted work.
96
+
97
+ `.jsonl` and `.ndjson` both mean one JSON object per line. Media bytes go to the configured
98
+ customer bucket; local files contain per-item data or delivery receipts. A completed task
99
+ can contain failed/invalid items. Export before internal results expire (24 hours after
100
+ completion); signed input uploads expire after 15 minutes. Input files support 1 byte to
101
+ 2 GiB. Cloud credential validation and delivery permissions remain server responsibilities.
102
+
103
+ Go and the CLI additionally validate/snapshot IDs before upload. The CLI owns OS credential
104
+ storage and durable execution history; SDK applications own their persistence. These are
105
+ intentional implementation differences, not cross-machine exactly-once guarantees.
106
+
107
+ ## Validation
108
+
109
+ The comparison checks parsed source schemas and source contracts across all SDKs, the
110
+ 24 core OpenAPI operations, sync/async resource parity, and the local backend catalog and
111
+ bulk option validators. The Go snapshot adds 14 identity/onboarding contract operations;
112
+ five are browser-owned. Core source/API coverage does not depend on those additions.
113
+
114
+ Tests execute README code and runnable examples using local mock transports, verify
115
+ no accidental resubmission after an interrupted bulk start, preserve orphaned recovery
116
+ records and inspect exported item statuses. Documentation checks cover translations,
117
+ explicit key examples, official website links, relative links and workflow anchors.
118
+ Package checks exercise clean consumers; GitHub Actions checks the supported runtimes.
119
+ These checks do not perform paid API queries or customer-cloud writes.
120
+
121
+ | Repository | README | Examples | API / commands | Bulk recovery |
122
+ | --- | --- | --- | --- | --- |
123
+ | Python | [README](https://github.com/flashdatadev/flashdata-python#readme) | [Examples](https://github.com/flashdatadev/flashdata-python/tree/main/examples) | [API](https://github.com/flashdatadev/flashdata-python/blob/main/docs/api-reference.md) | [Bulk](https://github.com/flashdatadev/flashdata-python/blob/main/docs/bulk.md) |
124
+ | TypeScript / JavaScript | [README](https://github.com/flashdatadev/flashdata-typescript#readme) | [Examples](https://github.com/flashdatadev/flashdata-typescript/tree/main/examples) | [API](https://github.com/flashdatadev/flashdata-typescript/blob/main/docs/api-reference.md) | [Bulk](https://github.com/flashdatadev/flashdata-typescript/blob/main/docs/bulk.md) |
125
+ | Go | [README](https://github.com/flashdatadev/flashdata-go#readme) | [Examples](https://github.com/flashdatadev/flashdata-go/tree/main/examples) | [API](https://github.com/flashdatadev/flashdata-go/blob/main/docs/api-reference.md) | [Bulk](https://github.com/flashdatadev/flashdata-go/blob/main/docs/bulk.md) |
126
+ | CLI | [README](https://github.com/flashdatadev/flashdata-cli#readme) | [Inputs](https://github.com/flashdatadev/flashdata-cli/tree/main/examples) | [Commands](https://github.com/flashdatadev/flashdata-cli/blob/main/docs/commands.md) | [Bulk](https://github.com/flashdatadev/flashdata-cli/blob/main/docs/bulk.md) |
@@ -0,0 +1,29 @@
1
+ # Credential and storage model
2
+
3
+ [FlashData](https://flashdata.dev) · [API documentation](https://flashdata.dev/docs)
4
+
5
+ | Platform | Automatic OS protection | Headless fallback |
6
+ | --- | --- | --- |
7
+ | Windows amd64 | Native current-user DPAPI, private owner/SYSTEM DACLs | DPAPI requires the same user profile; explicit file mode is available |
8
+ | macOS amd64/arm64 | Native Security.framework Keychain key with UI disabled, AES-256-GCM vault | Use an unlocked accessible keychain or explicitly choose private file mode |
9
+ | Linux amd64/arm64 | Unlocked Secret Service over session D-Bus, AES-256-GCM vault; never calls Unlock/Prompt | New profiles automatically use private files when no session bus is configured; explicit file mode is available |
10
+
11
+ OS failures never silently downgrade an existing store. macOS uses pure-Go native bindings without CGo or a `security` subprocess; Windows uses native DPAPI calls without PowerShell. Secrets do not enter subprocess arguments or shell commands. Linux keyring calls do not ask for GUI unlock. The master key is distinct from the API key and bound to the canonical state-root/profile identity; copying an OS-protected vault to another user/location may require explicit migration/key import.
12
+
13
+ `--credential-store file` is a documented protected plaintext mode: JSON is base64-encoded inside a versioned envelope, not encrypted. Use persistent storage owned by the scheduled account. Unix requires private directories (0700), private regular files (0600) and current-user ownership; symlink state paths are refused. Windows checks ACLs/ownership and writes private output ACLs. State writes use a synced temporary file, atomic replacement and directory synchronization where supported. Existing unsafe/corrupt state is never reset.
14
+
15
+ Defaults live outside repositories: Windows/macOS use the OS user configuration directory under FlashData; Linux uses an absolute XDG_STATE_HOME/flashdata or ~/.local/state/flashdata. Each lowercase profile has an independent vault, lock, run journal and results directory. `--state-dir` is an explicit persistent-location override; keep it out of project repositories. Do not delete state to repair authentication or uncertainty.
16
+
17
+ The same OS user, administrators/root, a compromised process or a malicious custom SDK transport are outside this local secrecy boundary. OS encryption protects copied credential blobs; it is not an isolation boundary against the logged-in user. Successful provider data may itself be sensitive. Store exported results appropriately.
18
+
19
+ API keys, registration/setup/handoff proofs, cloud access/secret/private keys and signed capabilities are redacted from CLI diagnostics and sanitized metadata. Provider URLs and large numbers are otherwise retained. Successful data is never evaluated as shell commands, prompts or code. SDK requests pin service origins and authenticated signed-storage origins, isolate keys/cookies from storage, and never retry paid submissions automatically.
20
+
21
+ Customer-storage config and option files must be private and outside source control. Unix: `chmod 600 /private/flashdata/storage.json`. On Windows use a directory accessible only to the scheduled user/SYSTEM, or set the file DACL explicitly using your organization's approved ACL tooling. The example storage file contains only placeholders and must not be used unchanged.
22
+
23
+ Generic query/batch JSON files containing credential fields or callback URLs require the same private permissions; stdin is supported when a secret manager supplies the payload. Callback destinations are omitted from sanitized metadata because webhook URLs can contain secrets. Public credential-property schema definitions remain intact; they contain no secret values. Discovery also describes strict top-level fields and the optional background callback field enforced by SDK runtime validation. Windows exported files receive their private security descriptor at creation time, before any result bytes are written.
24
+
25
+ An environment override changes only the current command's access. Saving upload/recovery updates preserves the profile's original key, proofs and phase; a new environment-only profile saves recovery metadata without persisting that environment key. Re-importing the same saved key is a verified reuse operation. Linux accepts an already configured local Unix D-Bus endpoint, never auto-launches a session bus, and refuses remote/autolaunch transports for Secret Service.
26
+
27
+ An explicit auth login into an environment-only profile persists the chosen verified key while retaining accepted-job recovery capabilities; it does not require a destructive replacement. Existing run/account bindings still control which records that key can use.
28
+
29
+ `auth logout` clears API keys, proofs and saved upload capabilities while retaining history. It reports that remote access is not revoked and whether an environment key remains set. Remove environment variables separately and revoke remote keys in your FlashData account when desired. `auth login --replace` explicitly replaces prior onboarding/upload capabilities; prefer a new profile if old work still needs those capabilities.