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 if they didn't already give one. Generate a slug (lowercase, hyphens, no spaces).
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. Store one at a time:
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
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "atris",
3
- "version": "2.5.0",
3
+ "version": "2.5.2",
4
4
  "description": "atrisDev (atris dev) - CLI for AI coding agents. Works with Claude Code, Cursor, Windsurf. Make any codebase AI-navigable.",
5
5
  "main": "bin/atris.js",
6
6
  "bin": {