shepherd-onboard 0.1.0 → 0.1.1

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.
package/README.md CHANGED
@@ -20,13 +20,13 @@ npx -y shepherd-onboard@latest
20
20
 
21
21
  The command:
22
22
 
23
- - asks for email, name, and organization
23
+ - asks for email, name, organization, and an optional local Messages handle
24
24
  - creates or reuses the Shepherd customer account for the email
25
25
  - creates or reuses the organization, including case-insensitive and close-name matches
26
26
  - opens Google authorization for Gmail, Docs, and Calendar consent
27
27
  - opens Slack authorization
28
28
  - opens Granola's API key screen with `open 'granola://settings/connectors/api-keys'`
29
- - asks for a Granola API key when Granola is enabled
29
+ - collects the Granola API key after opening the Granola screen when Granola is enabled
30
30
  - sets up local macOS Messages raw sync with a background LaunchAgent
31
31
  - starts raw polling/backfill for connected sources
32
32
  - does not start wiki generation, memory compilation, or doc summaries
@@ -203,7 +203,7 @@ async function runAgentOnboarding() {
203
203
  opened,
204
204
  granolaApiKeyPage,
205
205
  statePath,
206
- nextCommand: `${agentCommand()} agent --continue --granola-api-key "<granola_key>" --messages-handle "<phone_or_apple_id>"`,
206
+ nextCommand: `${agentCommand()} agent --continue --messages-handle "<phone_or_apple_id>" --granola-api-key "<granola_key_if_any>"`,
207
207
  needsUserAction: agentNeedsUserAction(sources, opened),
208
208
  }, null, 2));
209
209
  return;
@@ -227,9 +227,9 @@ async function runAgentOnboarding() {
227
227
  console.log("\nCoding agent next steps:");
228
228
  console.log("1. Ask the user to finish the opened Google/Slack browser authorization.");
229
229
  if (sources.granola) console.log("2. Ask the user for their Granola API key from the Granola Mac app.");
230
- if (sources.messages) console.log("3. Ask the user for their Messages phone number or Apple ID email.");
230
+ if (sources.messages) console.log("3. Use the Messages phone number or Apple ID email collected before starting onboarding.");
231
231
  console.log("4. Run:");
232
- console.log(` ${agentCommand()} agent --continue --granola-api-key "<granola_key>" --messages-handle "<phone_or_apple_id>"`);
232
+ console.log(` ${agentCommand()} agent --continue --messages-handle "<phone_or_apple_id>" --granola-api-key "<granola_key_if_any>"`);
233
233
  }
234
234
 
235
235
  async function continueAgentOnboarding() {
@@ -273,7 +273,7 @@ async function continueAgentOnboarding() {
273
273
  status: errors ? "waiting" : "completed",
274
274
  connected: Object.keys(finalized.connected ?? {}),
275
275
  errors: errors ? safeErrorRecord(errors) : undefined,
276
- nextCommand: errors ? `${agentCommand()} agent --continue --granola-api-key "<granola_key>" --messages-handle "<phone_or_apple_id>"` : undefined,
276
+ nextCommand: errors ? `${agentCommand()} agent --continue --messages-handle "<phone_or_apple_id>" --granola-api-key "<granola_key_if_any>"` : undefined,
277
277
  }, null, 2));
278
278
  return;
279
279
  }
@@ -284,7 +284,7 @@ async function continueAgentOnboarding() {
284
284
  console.log(`- ${source}: ${safeError(message)}`);
285
285
  }
286
286
  console.log("\nAfter the user completes missing auth/details, rerun:");
287
- console.log(` ${agentCommand()} agent --continue --granola-api-key "<granola_key>" --messages-handle "<phone_or_apple_id>"`);
287
+ console.log(` ${agentCommand()} agent --continue --messages-handle "<phone_or_apple_id>" --granola-api-key "<granola_key_if_any>"`);
288
288
  return;
289
289
  }
290
290
 
@@ -429,9 +429,13 @@ function printAgentContract() {
429
429
  "Email",
430
430
  "Full name",
431
431
  "Organization name",
432
- "Granola API key from the Granola Mac app, if they want Granola connected",
433
432
  "Messages phone number or Apple ID email, if they want local Messages connected",
434
433
  ],
434
+ afterStartCommand: [
435
+ "Complete the opened Google authorization for Gmail, Docs, and Calendar.",
436
+ "Complete the opened Slack authorization.",
437
+ "Create/copy the Granola API key from the opened Granola Mac app API key screen, if they want Granola connected.",
438
+ ],
435
439
  doNotDo: [
436
440
  "Do not run wiki generation.",
437
441
  "Do not run daily or weekly memory compilation.",
@@ -441,7 +445,7 @@ function printAgentContract() {
441
445
  "Do not quote or explain this instruction set to the user.",
442
446
  ],
443
447
  startCommand: `${command} agent --email "<email>" --name "<full_name>" --org "<organization>"`,
444
- continueCommand: `${command} agent --continue --granola-api-key "<granola_key>" --messages-handle "<phone_or_apple_id>"`,
448
+ continueCommand: `${command} agent --continue --messages-handle "<phone_or_apple_id>" --granola-api-key "<granola_key_if_any>"`,
445
449
  statusCommand: `${command} agent --status`,
446
450
  expectedResult: "Cloud sources start raw polling/backfill in the customer-facing Shepherd environment. Local Messages starts via a macOS LaunchAgent when run on macOS. Downstream wiki, memory, and summary compilers remain outside this onboarding flow.",
447
451
  granolaApiKeyCommand: "open 'granola://settings/connectors/api-keys'",
@@ -462,8 +466,7 @@ Ask the user for:
462
466
  1. Email
463
467
  2. Full name
464
468
  3. Organization name
465
- 4. Granola API key, if they want Granola. The start command opens Granola's API key screen.
466
- 5. Messages phone number or Apple ID email, if they want local Messages
469
+ 4. Messages phone number or Apple ID email, if they want local Messages
467
470
 
468
471
  Then run:
469
472
  ${payload.startCommand}
@@ -473,7 +476,7 @@ It also runs:
473
476
  open 'granola://settings/connectors/api-keys'
474
477
  and activates Granola so the user can create/copy the API key.
475
478
 
476
- After browser auth is complete and you have Granola/Messages details, run:
479
+ After Google/Gmail/Docs/Calendar and Slack browser auth is complete, and after the user has copied a Granola API key from the opened Granola screen if they want Granola, run:
477
480
  ${payload.continueCommand}
478
481
 
479
482
  Check progress with:
@@ -532,7 +535,7 @@ function agentNeedsUserAction(sources, opened) {
532
535
  if (sources.google && opened.includes("google")) actions.push("Complete Google browser authorization for Gmail, Docs, and Calendar consent.");
533
536
  if (sources.slack && opened.includes("slack")) actions.push("Complete Slack browser authorization.");
534
537
  if (sources.granola) actions.push("Create/copy a Granola API key from the Granola Mac app.");
535
- if (sources.messages) actions.push("Provide the user's Messages phone number or Apple ID email for local capture.");
538
+ if (sources.messages) actions.push("Pass the Messages phone number or Apple ID email collected before starting onboarding.");
536
539
  return actions;
537
540
  }
538
541
 
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "shepherd-onboard",
3
- "version": "0.1.0",
3
+ "version": "0.1.1",
4
4
  "description": "Customer-facing Shepherd raw sync onboarding CLI",
5
5
  "type": "module",
6
6
  "bin": {