atris 2.5.0 → 2.5.2
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.
|
@@ -54,20 +54,9 @@ Auth header: `Authorization: Bearer $TOKEN`
|
|
|
54
54
|
|
|
55
55
|
Adapt the flow based on what the user described. Skip steps that don't apply.
|
|
56
56
|
|
|
57
|
-
### Step 0: Clarify Intent
|
|
58
|
-
|
|
59
|
-
Before building anything, ask the user:
|
|
60
|
-
|
|
61
|
-
1. **Personal or business?** — First check if the user has any businesses: `GET https://api.atris.ai/api/business` with their token. If empty, it's personal — don't ask, just proceed. If they have businesses, ask: "Is this just for you, or for [business name]?"
|
|
62
|
-
2. **How does data get in?** — Schedule (daily pull), webhook (data pushed in), manual (you trigger it), email, or chat?
|
|
63
|
-
3. **How should output reach you?** — Email, feed post, API (for a custom UI), or just stored for querying?
|
|
64
|
-
4. **Any API keys needed?** — Does this connect to an external service (Mixpanel, GitHub, Stripe, etc)?
|
|
65
|
-
|
|
66
|
-
Keep it conversational. Don't ask all 4 at once if the answer is obvious from context. A mood tracker is clearly personal, manual input, no API keys. A Mixpanel analytics app clearly needs an API key and a daily schedule.
|
|
67
|
-
|
|
68
57
|
### Step 1: Create the App
|
|
69
58
|
|
|
70
|
-
Ask the user for a name
|
|
59
|
+
Ask the user for a name. Generate a slug (lowercase, hyphens, no spaces).
|
|
71
60
|
|
|
72
61
|
```bash
|
|
73
62
|
curl -s -X POST "https://api.atris.ai/api/apps" \
|
|
@@ -96,7 +85,33 @@ Save the returned `id` as `APP_ID` and `share_token` as `SLUG`.
|
|
|
96
85
|
|
|
97
86
|
Only if the workflow needs external API access (Mixpanel, GitHub, Stripe, etc).
|
|
98
87
|
|
|
99
|
-
Ask the user for each key.
|
|
88
|
+
Ask the user for each key. **Default to local storage** (keys stay on their machine).
|
|
89
|
+
|
|
90
|
+
**Option A: Local storage (default, recommended)**
|
|
91
|
+
|
|
92
|
+
Keys are saved to `~/.atris/secrets/{SLUG}/` on the user's machine. They never leave the machine when using the CLI agent. If using the AI Computer, they're transmitted over TLS but never persisted on Atris infrastructure.
|
|
93
|
+
|
|
94
|
+
```bash
|
|
95
|
+
mkdir -p ~/.atris/secrets/SLUG
|
|
96
|
+
```
|
|
97
|
+
|
|
98
|
+
For each key:
|
|
99
|
+
```bash
|
|
100
|
+
read -s -p "Enter KEY_NAME: " secret_val
|
|
101
|
+
printf '%s' "$secret_val" > ~/.atris/secrets/SLUG/KEY_NAME
|
|
102
|
+
chmod 600 ~/.atris/secrets/SLUG/KEY_NAME
|
|
103
|
+
unset secret_val
|
|
104
|
+
echo "Saved locally."
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
Verify (key names only, never values):
|
|
108
|
+
```bash
|
|
109
|
+
ls ~/.atris/secrets/SLUG/
|
|
110
|
+
```
|
|
111
|
+
|
|
112
|
+
**Option B: Cloud storage (cross-device access)**
|
|
113
|
+
|
|
114
|
+
If the user needs secrets accessible from any device or the web UI, store in the encrypted cloud vault:
|
|
100
115
|
|
|
101
116
|
```bash
|
|
102
117
|
curl -s -X PUT "https://api.atris.ai/api/apps/SLUG/secrets/KEY_NAME" \
|
|
@@ -107,6 +122,8 @@ curl -s -X PUT "https://api.atris.ai/api/apps/SLUG/secrets/KEY_NAME" \
|
|
|
107
122
|
|
|
108
123
|
Never log or display the secret value after storing it.
|
|
109
124
|
|
|
125
|
+
**Always ask the user which storage tier they prefer before storing keys.** Explain: "Local means keys stay on your machine. Cloud means they're encrypted and available from any device."
|
|
126
|
+
|
|
110
127
|
**Skip this step** if the app doesn't need external API keys (chat apps, simple forms).
|
|
111
128
|
|
|
112
129
|
### Step 3: Create the Agent + Skill (if needed)
|
|
@@ -316,6 +316,26 @@ curl -s -X POST "https://api.atris.ai/api/integrations/google-drive/sheets/{spre
|
|
|
316
316
|
2. Search: `GET /google-drive/search?q=QUERY` (automatically searches My Drive + all shared drives)
|
|
317
317
|
3. Display results
|
|
318
318
|
|
|
319
|
+
### "Create a Google Doc"
|
|
320
|
+
1. Run bootstrap
|
|
321
|
+
2. Upload with Google Docs mime type — Drive auto-converts:
|
|
322
|
+
```bash
|
|
323
|
+
curl -s -X POST "https://api.atris.ai/api/integrations/google-drive/files" \
|
|
324
|
+
-H "Authorization: Bearer $TOKEN" \
|
|
325
|
+
-H "Content-Type: application/json" \
|
|
326
|
+
-d '{
|
|
327
|
+
"name": "My Document",
|
|
328
|
+
"content": "Document content here",
|
|
329
|
+
"mime_type": "application/vnd.google-apps.document"
|
|
330
|
+
}'
|
|
331
|
+
```
|
|
332
|
+
3. Returns file ID — the doc is now editable in Google Docs
|
|
333
|
+
|
|
334
|
+
**Native Google mime types for creation:**
|
|
335
|
+
- `application/vnd.google-apps.document` — Google Doc
|
|
336
|
+
- `application/vnd.google-apps.spreadsheet` — Google Sheet (content as CSV)
|
|
337
|
+
- `application/vnd.google-apps.presentation` — Google Slides
|
|
338
|
+
|
|
319
339
|
### "Upload a file to Drive"
|
|
320
340
|
1. Run bootstrap
|
|
321
341
|
2. Read the local file content
|
package/package.json
CHANGED