add-onedrive ยท diff

git:20260729.d44759b to git:20261105.2eb182a

26 added, 22 removed. Audit A to A.

---
name: add-onedrive
description: Adds OneDrive for Business connector to a Power Apps code app. Use when uploading, downloading, listing, or managing files in OneDrive.
user-invocable: true
allowed-tools: Read, Edit, Write, Grep, Glob, Bash, LSP, TaskCreate, TaskUpdate, TaskList, TaskGet, AskUserQuestion, Skill
model: sonnet
---
**๐Ÿ“‹ Shared Instructions: [shared-instructions.md](${PLUGIN_ROOT}/shared/shared-instructions.md)** - Cross-cutting concerns.
# Add OneDrive for Business
## Workflow
1. Check Memory Bank โ†’ 2. Add Connector โ†’ 3. Configure โ†’ 4. Build โ†’ 5. Update Memory Bank
---
### Step 1: Check Memory Bank
Check for `memory-bank.md` per [shared-instructions.md](${PLUGIN_ROOT}/shared/shared-instructions.md).
### Step 2: Add Connector
- **First, find the connection ID** (see [connector-reference.md](${PLUGIN_ROOT}/shared/connector-reference.md)):
+ Get the connection as described in [connector-reference.md](${PLUGIN_ROOT}/shared/connector-reference.md#connections).
- Run the `/list-connections` skill. Find the OneDrive for Business connection in the output. If none exists, direct the user to create one using the environment-specific Connections URL โ€” construct it from the active environment ID in context (from `power.config.json` or a prior step): `https://make.powerapps.com/environments/<environment-id>/connections` โ†’ **+ New connection** โ†’ search for the connector โ†’ Create.
+ **CLI 1.3.0+ (`PA_INLINE_CONNECTIONS=yes`):** tell the user that adding OneDrive for Business may create a connection with their account, then run the add without `-c` and handle the result with the outcome table in connector-reference.md:
```bash
+ pa app add data-source --connector onedriveforbusiness --non-interactive
+ ```
+
+ **Older CLIs:** run `/list-connections` to find the OneDrive for Business connection ID (if none exists, create one with `pa connection create` as described in connector-reference.md), then:
+
+ ```bash
pa app add data-source --connector onedriveforbusiness -c <connection-id>
```
### Step 3: Configure
Ask the user what file operations they need (list files, upload, download, create folder, etc.).
+ The generated service is `OneDriveforBusinessService` (lowercase "for"), and its methods take positional parameters. Confirm names and signatures in `src/generated/services/` before using them.
+
**Common operations:**
```typescript
- // List files in a folder
- const files = await OneDriveForBusinessService.ListFolder({
- id: "root" // or folder ID
- });
+ import { OneDriveforBusinessService } from "../generated/services/OneDriveforBusinessService";
- // Get file metadata
- const metadata = await OneDriveForBusinessService.GetFileMetadata({
- id: "file-id"
- });
+ // List the files and folders in the root folder
+ const root = await OneDriveforBusinessService.ListRootFolder();
+ const rootItems = root.data ?? [];
- // Get file content
- const content = await OneDriveForBusinessService.GetFileContent({
- id: "file-id"
- });
+ // List a subfolder by its Id (from an earlier listing); returns a page of items
+ const folder = await OneDriveforBusinessService.ListFolderV2("<folder-id>");
+ const folderItems = folder.data?.value ?? [];
- // Create file
- await OneDriveForBusinessService.CreateFile({
- folderPath: "/Documents",
- name: "report.txt",
- body: "File content here"
- });
+ // Get file metadata and content
+ const metadata = await OneDriveforBusinessService.GetFileMetadata("<file-id>");
+ const content = await OneDriveforBusinessService.GetFileContent("<file-id>");
+
+ // Create a file
+ await OneDriveforBusinessService.CreateFile("/Documents", "report.txt", "File content here");
```
**Key points:**
- - File and folder IDs can be obtained from `ListFolder` or `ListRootFolder`
+ - List the root folder with `ListRootFolder()` instead of passing `"root"` as a folder ID. `ListFolderV2` takes the `Id` of a folder returned by an earlier listing.
+ - Use `ListFolderV2`, not `ListFolder`, which the connector has deprecated. `ListFolderV2` returns a page: the items are in `value`, and `nextLink` is set when there are more.
- Use `folderPath` for creating files by path, `id` for accessing existing files
- Binary file content may need base64 encoding/decoding depending on the operation
- Use `Grep` to find specific methods in `src/generated/services/OneDriveForBusinessService.ts` (generated files can be very large -- see [connector-reference.md](${PLUGIN_ROOT}/shared/connector-reference.md#inspecting-large-generated-files)).
+ Use `Grep` to find specific methods in `src/generated/services/OneDriveforBusinessService.ts` (generated files can be very large -- see [connector-reference.md](${PLUGIN_ROOT}/shared/connector-reference.md#inspecting-large-generated-files)).
### Step 4: Build
```bash
npm run build
```
Fix TypeScript errors before proceeding. Do NOT deploy yet.
### Step 5: Update Memory Bank
Update `memory-bank.md` with: connector added, configured operations, build status.