@agenticmail/enterprise 0.5.40 → 0.5.41

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/dist/cli.js CHANGED
@@ -48,7 +48,7 @@ Skill Development:
48
48
  break;
49
49
  case "setup":
50
50
  default:
51
- import("./setup-3T23L2RA.js").then((m) => m.runSetupWizard()).catch(fatal);
51
+ import("./setup-L3K5HQIR.js").then((m) => m.runSetupWizard()).catch(fatal);
52
52
  break;
53
53
  }
54
54
  function fatal(err) {
@@ -2,6 +2,32 @@ import { h, useState, useEffect, useCallback, Fragment, useApp, engineCall } fro
2
2
  import { I } from '../components/icons.js';
3
3
  import { Modal } from '../components/modal.js';
4
4
 
5
+ // Auth help: where to get API keys/tokens for each skill
6
+ var AUTH_HELP = {
7
+ 'intercom-support': { provider: 'Intercom', url: 'https://developers.intercom.com/docs/build-an-integration/getting-started/', steps: 'Create an Intercom app at developers.intercom.com, then copy the Access Token from Authentication.' },
8
+ 'zendesk-tickets': { provider: 'Zendesk', url: 'https://support.zendesk.com/hc/en-us/articles/4408889192858', steps: 'Go to Zendesk Admin > Apps & Integrations > APIs > Zendesk API, then generate an API token.' },
9
+ 'github-issues': { provider: 'GitHub', url: 'https://github.com/settings/tokens', steps: 'Go to GitHub Settings > Developer Settings > Personal Access Tokens > Generate new token. Select repo and issues scopes.' },
10
+ 'github-actions': { provider: 'GitHub', url: 'https://github.com/settings/tokens', steps: 'Generate a Personal Access Token with workflow and actions:read scopes.' },
11
+ 'slack-notifications': { provider: 'Slack', url: 'https://api.slack.com/apps', steps: 'Create a Slack app at api.slack.com/apps, install to workspace, copy the Bot User OAuth Token (xoxb-...).' },
12
+ 'jira-integration': { provider: 'Atlassian', url: 'https://id.atlassian.com/manage-profile/security/api-tokens', steps: 'Go to Atlassian account > Security > API tokens > Create API token. Use with your email as username.' },
13
+ 'stripe-billing': { provider: 'Stripe', url: 'https://dashboard.stripe.com/apikeys', steps: 'Go to Stripe Dashboard > Developers > API keys. Copy the Secret key (sk_live_... or sk_test_...).' },
14
+ 'notion-sync': { provider: 'Notion', url: 'https://www.notion.so/my-integrations', steps: 'Create an integration at notion.so/my-integrations. Copy the Internal Integration Secret. Share pages with the integration.' },
15
+ 'salesforce-crm': { provider: 'Salesforce', url: 'https://help.salesforce.com/s/articleView?id=sf.connected_app_create_api_integration.htm', steps: 'Create a Connected App in Salesforce Setup. Use OAuth 2.0 client credentials flow. Copy Consumer Key and Secret.' },
16
+ 'hubspot-crm': { provider: 'HubSpot', url: 'https://developers.hubspot.com/docs/api/private-apps', steps: 'Go to HubSpot Settings > Integrations > Private Apps > Create. Select required scopes and copy the access token.' },
17
+ 'twilio-sms': { provider: 'Twilio', url: 'https://console.twilio.com/', steps: 'Sign up at twilio.com. Copy Account SID and Auth Token from the Console dashboard. Get a phone number for SMS.' },
18
+ 'sendgrid-email': { provider: 'SendGrid', url: 'https://app.sendgrid.com/settings/api_keys', steps: 'Go to SendGrid Settings > API Keys > Create API Key. Select Full Access or restricted permissions.' },
19
+ 'google-workspace': { provider: 'Google', url: 'https://console.cloud.google.com/apis/credentials', steps: 'Create a project in Google Cloud Console. Enable required APIs. Create OAuth 2.0 credentials or a Service Account key.' },
20
+ 'shopify-store': { provider: 'Shopify', url: 'https://partners.shopify.com/', steps: 'Create a custom app in your Shopify admin > Settings > Apps. Copy the Admin API access token.' },
21
+ 'openai-models': { provider: 'OpenAI', url: 'https://platform.openai.com/api-keys', steps: 'Go to platform.openai.com > API Keys > Create new secret key. Copy it immediately — it won\'t be shown again.' },
22
+ 'anthropic-models': { provider: 'Anthropic', url: 'https://console.anthropic.com/settings/keys', steps: 'Go to console.anthropic.com > Settings > API Keys > Create Key.' },
23
+ };
24
+
25
+ function getAuthHelp(skillId) {
26
+ if (AUTH_HELP[skillId]) return AUTH_HELP[skillId];
27
+ // Fallback: check if skill manifest has authHelp
28
+ return null;
29
+ }
30
+
5
31
  export function SkillConnectionsPage() {
6
32
  const { toast } = useApp();
7
33
  const [installed, setInstalled] = useState([]);
@@ -374,6 +400,19 @@ export function SkillConnectionsPage() {
374
400
  )
375
401
  ),
376
402
 
403
+ // Auth help info (show when not connected)
404
+ !status.connected && (function() {
405
+ var help = getAuthHelp(skill.skillId) || (meta.authHelp ? meta.authHelp : null);
406
+ if (!help) return null;
407
+ return h('div', {
408
+ style: { fontSize: 12, color: 'var(--text-secondary)', marginBottom: 12, padding: '10px 12px', background: 'var(--bg-tertiary)', borderRadius: 6, borderLeft: '3px solid var(--primary)' }
409
+ },
410
+ h('div', { style: { fontWeight: 600, marginBottom: 4, fontSize: 11, textTransform: 'uppercase', color: 'var(--primary)' } }, 'How to connect'),
411
+ h('div', { style: { lineHeight: 1.5, marginBottom: 6 } }, help.steps || help.description),
412
+ help.url && h('a', { href: help.url, target: '_blank', rel: 'noopener', style: { color: 'var(--primary)', fontSize: 12, textDecoration: 'none' } }, 'Get credentials at ' + (help.provider || 'provider') + ' \u2192')
413
+ );
414
+ })(),
415
+
377
416
  // Action buttons
378
417
  h('div', { style: { display: 'flex', gap: 8, flexWrap: 'wrap', marginTop: 'auto' } },
379
418
  // Connect / Disconnect
@@ -415,6 +454,18 @@ export function SkillConnectionsPage() {
415
454
  ? h('div', { style: { textAlign: 'center', padding: 24, color: 'var(--text-muted)' } }, 'Loading configuration schema...')
416
455
  : configSchema && Object.keys(configSchema).length > 0
417
456
  ? h('div', null,
457
+ // Show auth help in modal too
458
+ (function() {
459
+ var help = getAuthHelp(configSkill.skillId) || (configSkill.skill?.authHelp || configSkill.manifest?.authHelp);
460
+ if (!help) return null;
461
+ return h('div', {
462
+ style: { marginBottom: 16, padding: '12px 14px', background: 'var(--bg-tertiary)', borderRadius: 8, borderLeft: '3px solid var(--primary)' }
463
+ },
464
+ h('div', { style: { fontWeight: 600, marginBottom: 4, fontSize: 12, color: 'var(--primary)' } }, 'Where to get credentials'),
465
+ h('div', { style: { fontSize: 13, lineHeight: 1.5, color: 'var(--text-secondary)', marginBottom: 6 } }, help.steps || help.description),
466
+ help.url && h('a', { href: help.url, target: '_blank', rel: 'noopener', style: { color: 'var(--primary)', fontSize: 13 } }, 'Open ' + (help.provider || 'provider') + ' developer portal \u2192')
467
+ );
468
+ })(),
418
469
  h('p', { style: { fontSize: 13, color: 'var(--text-secondary)', marginBottom: 16 } },
419
470
  'Configure the settings for this skill. Fields marked with * are required.'
420
471
  ),
package/dist/index.js CHANGED
@@ -20,7 +20,7 @@ import {
20
20
  TenantManager,
21
21
  WorkforceManager,
22
22
  init_guardrails
23
- } from "./chunk-Z5XYKDHQ.js";
23
+ } from "./chunk-MZ3C426R.js";
24
24
  import {
25
25
  AgentRuntime,
26
26
  EmailChannel,
@@ -35,7 +35,7 @@ import {
35
35
  executeTool,
36
36
  runAgentLoop,
37
37
  toolsToDefinitions
38
- } from "./chunk-S33UPVJ5.js";
38
+ } from "./chunk-TW2L3Z62.js";
39
39
  import "./chunk-TYW5XTOW.js";
40
40
  import {
41
41
  ValidationError,
@@ -50,11 +50,11 @@ import {
50
50
  requireRole,
51
51
  securityHeaders,
52
52
  validate
53
- } from "./chunk-IDNJYE2A.js";
53
+ } from "./chunk-NIGMF5EE.js";
54
54
  import {
55
55
  provision,
56
56
  runSetupWizard
57
- } from "./chunk-7XKYS3OB.js";
57
+ } from "./chunk-Z2Q72O3P.js";
58
58
  import {
59
59
  ENGINE_TABLES,
60
60
  ENGINE_TABLES_POSTGRES,