Skip to content
← Public packages

@kody/dropbox

Reusable Dropbox OAuth helpers for account, metadata, search, file transfer, sharing, and generic API requests.

AGENTS.md

111 lines · 3.1 KB · Markdown

@kody/dropbox — agent notes

Human setup and intent live in README.md. This file is for agents: imports, smoke/dryRun execute snippets, and edge cases. Auth is the saved OAuth integration named dropbox — never paste tokens. Do not disable live webhooks or jobs.

Auth / integration

ItemValue
Integration namedropbox
Reconnecthttps://kody.codes/connect/oauth?provider=dropbox

Import paths

ExportImport
overviewkody:@kody/dropbox
smoke-testkody:@kody/dropbox/smoke-test
get-current-accountkody:@kody/dropbox/get-current-account
get-space-usagekody:@kody/dropbox/get-space-usage
list-folderkody:@kody/dropbox/list-folder
get-metadatakody:@kody/dropbox/get-metadata
searchkody:@kody/dropbox/search
downloadkody:@kody/dropbox/download
uploadkody:@kody/dropbox/upload
deletekody:@kody/dropbox/delete
create-shared-linkkody:@kody/dropbox/create-shared-link
requestkody:@kody/dropbox/request

Prefer static kody:@kody/dropbox/... imports from execute. Do not lead with packages.invoke.

Smoke test (read-only)

import smokeTest from 'kody:@kody/dropbox/smoke-test'

export default async function main() {
	return await smokeTest()
	// => { ok: true, hasAccountId, hasDisplayName, accountType } — no PII fields
}

Optional read-only follow-ups: listFolder({ path: '', limit: 100 }), getSpaceUsage(), or getMetadata({ path: '/notes/todo.txt' }).

dryRun / confirm (writes)

upload, delete, create-shared-link, and unknown/mutating ./request endpoints require confirm: true after explicit user approval. Use dryRun: true to preview without calling Dropbox. Documented read-only ./request endpoints do not need confirmation.

import upload from 'kody:@kody/dropbox/upload'

export default async function main() {
	return await upload({
		path: '/notes/hello.txt',
		text: 'Hello from Kody',
		mode: 'overwrite',
		dryRun: true,
	})
}
import deleteDropboxPath from 'kody:@kody/dropbox/delete'

export default async function main() {
	return await deleteDropboxPath({
		path: '/notes/old.txt',
		dryRun: true,
	})
}

List root (read-only):

import listFolder from 'kody:@kody/dropbox/list-folder'

export default async function main() {
	return await listFolder({ path: '', limit: 100 })
}

Generic request (known read-only endpoint — no confirm):

import request from 'kody:@kody/dropbox/request'

export default async function main() {
	return await request({
		endpoint: 'files/get_metadata',
		body: { path: '/notes/todo.txt' },
	})
}

Edge cases

  • Paths start with /; use '' for the account root on list/search.
  • download returns { metadata, bytesBase64, byteLength, contentType }.
  • upload: pass exactly one of text or bytesBase64; mode is add (default) or overwrite.
  • list-folder / search: continue with returned cursor while has_more.
  • Prefer dedicated helpers over assembling ./request when one exists.
  • Never paste Dropbox OAuth tokens into chat or logs.