zubo 0.1.0
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/.github/workflows/ci.yml +35 -0
- package/README.md +149 -0
- package/bun.lock +216 -0
- package/desktop/README.md +57 -0
- package/desktop/package.json +12 -0
- package/desktop/src-tauri/Cargo.toml +25 -0
- package/desktop/src-tauri/build.rs +3 -0
- package/desktop/src-tauri/icons/README.md +17 -0
- package/desktop/src-tauri/icons/icon.png +0 -0
- package/desktop/src-tauri/src/main.rs +189 -0
- package/desktop/src-tauri/tauri.conf.json +68 -0
- package/docs/ROADMAP.md +490 -0
- package/migrations/001_init.sql +9 -0
- package/migrations/002_memory.sql +33 -0
- package/migrations/003_cron.sql +24 -0
- package/migrations/004_usage.sql +12 -0
- package/migrations/005_secrets.sql +8 -0
- package/migrations/006_agents.sql +1 -0
- package/migrations/007_workflows.sql +22 -0
- package/migrations/008_proactive.sql +24 -0
- package/migrations/009_uploads.sql +9 -0
- package/migrations/010_observability.sql +22 -0
- package/migrations/011_api_keys.sql +7 -0
- package/migrations/012_indexes.sql +5 -0
- package/migrations/013_budget.sql +11 -0
- package/migrations/014_usage_session_idx.sql +2 -0
- package/package.json +39 -0
- package/site/404.html +156 -0
- package/site/CNAME +1 -0
- package/site/docs/agents.html +294 -0
- package/site/docs/api.html +446 -0
- package/site/docs/channels.html +345 -0
- package/site/docs/cli.html +238 -0
- package/site/docs/config.html +1034 -0
- package/site/docs/index.html +433 -0
- package/site/docs/integrations.html +381 -0
- package/site/docs/memory.html +254 -0
- package/site/docs/security.html +375 -0
- package/site/docs/skills.html +322 -0
- package/site/docs.css +412 -0
- package/site/index.html +638 -0
- package/site/install.sh +98 -0
- package/site/logo.svg +1 -0
- package/site/og-image.png +0 -0
- package/site/robots.txt +4 -0
- package/site/script.js +361 -0
- package/site/sitemap.xml +63 -0
- package/site/skills.html +532 -0
- package/site/style.css +1686 -0
- package/src/agent/agents.ts +159 -0
- package/src/agent/compaction.ts +53 -0
- package/src/agent/context.ts +18 -0
- package/src/agent/delegate.ts +118 -0
- package/src/agent/loop.ts +318 -0
- package/src/agent/prompts.ts +111 -0
- package/src/agent/session.ts +87 -0
- package/src/agent/teams.ts +116 -0
- package/src/agent/workflow-executor.ts +192 -0
- package/src/agent/workflow.ts +175 -0
- package/src/channels/adapter.ts +21 -0
- package/src/channels/dashboard.html.ts +2969 -0
- package/src/channels/discord.ts +137 -0
- package/src/channels/optional-deps.d.ts +17 -0
- package/src/channels/router.ts +199 -0
- package/src/channels/signal.ts +133 -0
- package/src/channels/slack.ts +101 -0
- package/src/channels/telegram.ts +102 -0
- package/src/channels/utils.ts +18 -0
- package/src/channels/webchat.ts +1797 -0
- package/src/channels/whatsapp.ts +119 -0
- package/src/config/loader.ts +22 -0
- package/src/config/paths.ts +43 -0
- package/src/config/schema.ts +121 -0
- package/src/db/connection.ts +20 -0
- package/src/db/export.ts +148 -0
- package/src/db/migrations.ts +42 -0
- package/src/index.ts +261 -0
- package/src/llm/claude.ts +193 -0
- package/src/llm/factory.ts +115 -0
- package/src/llm/failover.ts +101 -0
- package/src/llm/openai-compat.ts +409 -0
- package/src/llm/provider.ts +83 -0
- package/src/llm/smart-router.ts +241 -0
- package/src/logs.ts +53 -0
- package/src/memory/chunker.ts +58 -0
- package/src/memory/document-parser.ts +115 -0
- package/src/memory/embedder.ts +235 -0
- package/src/memory/engine.ts +170 -0
- package/src/memory/fts-index.ts +55 -0
- package/src/memory/hybrid-search.ts +72 -0
- package/src/memory/store.ts +56 -0
- package/src/memory/vector-index.ts +72 -0
- package/src/model.ts +118 -0
- package/src/registry/cli.ts +43 -0
- package/src/registry/client.ts +54 -0
- package/src/registry/installer.ts +67 -0
- package/src/scheduler/briefing.ts +71 -0
- package/src/scheduler/cron.ts +258 -0
- package/src/scheduler/heartbeat.ts +58 -0
- package/src/scheduler/memory-triggers.ts +100 -0
- package/src/scheduler/natural-cron.ts +163 -0
- package/src/scheduler/proactive.ts +25 -0
- package/src/scheduler/recipes.ts +110 -0
- package/src/secrets/store.ts +64 -0
- package/src/setup.ts +413 -0
- package/src/skills.ts +293 -0
- package/src/start.ts +373 -0
- package/src/status.ts +165 -0
- package/src/tools/builtin/connect-service.ts +205 -0
- package/src/tools/builtin/cron.ts +126 -0
- package/src/tools/builtin/datetime.ts +36 -0
- package/src/tools/builtin/delegate-task.ts +81 -0
- package/src/tools/builtin/delegate.ts +42 -0
- package/src/tools/builtin/diagnose.ts +41 -0
- package/src/tools/builtin/google-oauth.ts +379 -0
- package/src/tools/builtin/manage-agents.ts +149 -0
- package/src/tools/builtin/manage-skills.ts +294 -0
- package/src/tools/builtin/manage-teams.ts +89 -0
- package/src/tools/builtin/manage-triggers.ts +94 -0
- package/src/tools/builtin/manage-workflows.ts +119 -0
- package/src/tools/builtin/memory-search.ts +38 -0
- package/src/tools/builtin/memory-write.ts +30 -0
- package/src/tools/builtin/run-workflow.ts +36 -0
- package/src/tools/builtin/secrets.ts +122 -0
- package/src/tools/builtin/skill-registry.ts +75 -0
- package/src/tools/builtin-integrations/api-helpers.ts +26 -0
- package/src/tools/builtin-integrations/github/github_issues/SKILL.md +56 -0
- package/src/tools/builtin-integrations/github/github_issues/handler.ts +108 -0
- package/src/tools/builtin-integrations/github/github_prs/SKILL.md +57 -0
- package/src/tools/builtin-integrations/github/github_prs/handler.ts +113 -0
- package/src/tools/builtin-integrations/github/github_repos/SKILL.md +37 -0
- package/src/tools/builtin-integrations/github/github_repos/handler.ts +88 -0
- package/src/tools/builtin-integrations/google/gmail/SKILL.md +51 -0
- package/src/tools/builtin-integrations/google/gmail/handler.ts +125 -0
- package/src/tools/builtin-integrations/google/google_calendar/SKILL.md +35 -0
- package/src/tools/builtin-integrations/google/google_calendar/handler.ts +105 -0
- package/src/tools/builtin-integrations/google/google_docs/SKILL.md +35 -0
- package/src/tools/builtin-integrations/google/google_docs/handler.ts +108 -0
- package/src/tools/builtin-integrations/google/google_drive/SKILL.md +39 -0
- package/src/tools/builtin-integrations/google/google_drive/handler.ts +106 -0
- package/src/tools/builtin-integrations/google/google_sheets/SKILL.md +36 -0
- package/src/tools/builtin-integrations/google/google_sheets/handler.ts +116 -0
- package/src/tools/builtin-integrations/jira/jira_boards/SKILL.md +21 -0
- package/src/tools/builtin-integrations/jira/jira_boards/handler.ts +74 -0
- package/src/tools/builtin-integrations/jira/jira_issues/SKILL.md +28 -0
- package/src/tools/builtin-integrations/jira/jira_issues/handler.ts +140 -0
- package/src/tools/builtin-integrations/linear/linear_issues/SKILL.md +30 -0
- package/src/tools/builtin-integrations/linear/linear_issues/handler.ts +75 -0
- package/src/tools/builtin-integrations/linear/linear_projects/SKILL.md +21 -0
- package/src/tools/builtin-integrations/linear/linear_projects/handler.ts +43 -0
- package/src/tools/builtin-integrations/notion/notion_databases/SKILL.md +39 -0
- package/src/tools/builtin-integrations/notion/notion_databases/handler.ts +83 -0
- package/src/tools/builtin-integrations/notion/notion_pages/SKILL.md +43 -0
- package/src/tools/builtin-integrations/notion/notion_pages/handler.ts +130 -0
- package/src/tools/builtin-integrations/notion/notion_search/SKILL.md +27 -0
- package/src/tools/builtin-integrations/notion/notion_search/handler.ts +69 -0
- package/src/tools/builtin-integrations/slack/slack_messages/SKILL.md +42 -0
- package/src/tools/builtin-integrations/slack/slack_messages/handler.ts +72 -0
- package/src/tools/builtin-integrations/twitter/twitter_posts/SKILL.md +24 -0
- package/src/tools/builtin-integrations/twitter/twitter_posts/handler.ts +133 -0
- package/src/tools/builtin-skills/file-read/SKILL.md +26 -0
- package/src/tools/builtin-skills/file-read/handler.ts +66 -0
- package/src/tools/builtin-skills/file-write/SKILL.md +30 -0
- package/src/tools/builtin-skills/file-write/handler.ts +64 -0
- package/src/tools/builtin-skills/http-request/SKILL.md +34 -0
- package/src/tools/builtin-skills/http-request/handler.ts +87 -0
- package/src/tools/builtin-skills/shell/SKILL.md +26 -0
- package/src/tools/builtin-skills/shell/handler.ts +96 -0
- package/src/tools/builtin-skills/url-fetch/SKILL.md +26 -0
- package/src/tools/builtin-skills/url-fetch/handler.ts +37 -0
- package/src/tools/builtin-skills/web-search/SKILL.md +26 -0
- package/src/tools/builtin-skills/web-search/handler.ts +50 -0
- package/src/tools/executor.ts +205 -0
- package/src/tools/integration-installer.ts +106 -0
- package/src/tools/permissions.ts +45 -0
- package/src/tools/registry.ts +39 -0
- package/src/tools/sandbox-runner.ts +56 -0
- package/src/tools/sandbox.ts +82 -0
- package/src/tools/skill-installer.ts +52 -0
- package/src/tools/skill-loader.ts +259 -0
- package/src/types/optional-deps.d.ts +23 -0
- package/src/util/auth.ts +121 -0
- package/src/util/costs.ts +59 -0
- package/src/util/error-buffer.ts +32 -0
- package/src/util/google-tokens.ts +180 -0
- package/src/util/logger.ts +73 -0
- package/src/util/perf-collector.ts +35 -0
- package/src/util/rate-limiter.ts +70 -0
- package/src/util/tokens.ts +17 -0
- package/src/voice/stt.ts +57 -0
- package/src/voice/tts.ts +103 -0
- package/tests/agent/session.test.ts +109 -0
- package/tests/agent-loop.test.ts +54 -0
- package/tests/auth.test.ts +89 -0
- package/tests/channels.test.ts +67 -0
- package/tests/compaction.test.ts +44 -0
- package/tests/config.test.ts +51 -0
- package/tests/costs.test.ts +19 -0
- package/tests/cron.test.ts +55 -0
- package/tests/db/export.test.ts +219 -0
- package/tests/executor.test.ts +144 -0
- package/tests/export.test.ts +137 -0
- package/tests/helpers/mock-llm.ts +34 -0
- package/tests/helpers/test-db.ts +74 -0
- package/tests/integration/chat-flow.test.ts +48 -0
- package/tests/integrations.test.ts +97 -0
- package/tests/memory/engine.test.ts +114 -0
- package/tests/memory-engine.test.ts +57 -0
- package/tests/permissions.test.ts +21 -0
- package/tests/rate-limiter.test.ts +70 -0
- package/tests/registry.test.ts +67 -0
- package/tests/router.test.ts +36 -0
- package/tests/session.test.ts +58 -0
- package/tests/skill-loader.test.ts +44 -0
- package/tests/tokens.test.ts +30 -0
- package/tests/tools/executor.test.ts +130 -0
- package/tests/util/auth.test.ts +75 -0
- package/tests/util/rate-limiter.test.ts +73 -0
- package/tests/voice.test.ts +60 -0
- package/tests/webchat.test.ts +88 -0
- package/tests/workflow.test.ts +38 -0
- package/tsconfig.json +16 -0
|
@@ -0,0 +1,381 @@
|
|
|
1
|
+
<!DOCTYPE html>
|
|
2
|
+
<html lang="en">
|
|
3
|
+
<head>
|
|
4
|
+
<meta charset="UTF-8">
|
|
5
|
+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
6
|
+
<title>Integrations — Zubo Docs</title>
|
|
7
|
+
<meta name="description" content="Connect Zubo to GitHub, Google, Notion, Linear, Jira, Slack, and Twitter with pre-built skill packs and API keys.">
|
|
8
|
+
<meta name="theme-color" content="#060608">
|
|
9
|
+
<link rel="canonical" href="https://zubo.bot/docs/integrations.html">
|
|
10
|
+
<meta property="og:title" content="Integrations — Zubo Docs">
|
|
11
|
+
<meta property="og:description" content="Connect Zubo to GitHub, Google, Notion, Linear, Jira, Slack, and Twitter with pre-built integrations.">
|
|
12
|
+
<meta property="og:type" content="article">
|
|
13
|
+
<meta property="og:url" content="https://zubo.bot/docs/integrations.html">
|
|
14
|
+
<meta property="og:image" content="https://zubo.bot/og-image.png">
|
|
15
|
+
<meta property="og:site_name" content="Zubo">
|
|
16
|
+
<meta name="twitter:card" content="summary_large_image">
|
|
17
|
+
<meta name="twitter:title" content="Integrations — Zubo Docs">
|
|
18
|
+
<meta name="twitter:description" content="Connect Zubo to GitHub, Google, Notion, Linear, Jira, Slack, and Twitter.">
|
|
19
|
+
<meta name="twitter:image" content="https://zubo.bot/og-image.png">
|
|
20
|
+
<meta name="twitter:creator" content="@thomaskanze">
|
|
21
|
+
<link rel="preconnect" href="https://fonts.googleapis.com">
|
|
22
|
+
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
|
23
|
+
<link href="https://fonts.googleapis.com/css2?family=Bricolage+Grotesque:opsz,wght@12..96,600;12..96,700;12..96,800&family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
|
24
|
+
<link rel="stylesheet" href="../style.css">
|
|
25
|
+
<link rel="stylesheet" href="../docs.css">
|
|
26
|
+
<link rel="icon" href="data:image/svg+xml,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'><rect width='100' height='100' rx='20' fill='%237c3aed'/><path d='M50 15C52 37 63 48 85 50C63 52 52 63 50 85C48 63 37 52 15 50C37 48 48 37 50 15Z' fill='white'/></svg>">
|
|
27
|
+
</head>
|
|
28
|
+
<body>
|
|
29
|
+
|
|
30
|
+
<header class="nav scrolled" id="nav">
|
|
31
|
+
<div class="nav-inner">
|
|
32
|
+
<a href="../index.html" class="nav-logo">
|
|
33
|
+
<span class="logo-wordmark">zubo</span>
|
|
34
|
+
</a>
|
|
35
|
+
<nav class="nav-links" id="nav-links">
|
|
36
|
+
<a href="../index.html#features">Features</a>
|
|
37
|
+
<a href="index.html" style="color:#fff;">Docs</a>
|
|
38
|
+
<a href="../skills.html">Skills</a>
|
|
39
|
+
<a href="../index.html#get-started">Get Started</a>
|
|
40
|
+
</nav>
|
|
41
|
+
<div class="nav-right">
|
|
42
|
+
<a href="https://github.com/apwn/zubo" class="nav-github" aria-label="GitHub">
|
|
43
|
+
<svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor"><path d="M12 0c-6.626 0-12 5.373-12 12 0 5.302 3.438 9.8 8.207 11.387.599.111.793-.261.793-.577v-2.234c-3.338.726-4.033-1.416-4.033-1.416-.546-1.387-1.333-1.756-1.333-1.756-1.089-.745.083-.729.083-.729 1.205.084 1.839 1.237 1.839 1.237 1.07 1.834 2.807 1.304 3.492.997.107-.775.418-1.305.762-1.604-2.665-.305-5.467-1.334-5.467-5.931 0-1.311.469-2.381 1.236-3.221-.124-.303-.535-1.524.117-3.176 0 0 1.008-.322 3.301 1.23.957-.266 1.983-.399 3.003-.404 1.02.005 2.047.138 3.006.404 2.291-1.552 3.297-1.23 3.297-1.23.653 1.653.242 2.874.118 3.176.77.84 1.235 1.911 1.235 3.221 0 4.609-2.807 5.624-5.479 5.921.43.372.823 1.102.823 2.222v3.293c0 .319.192.694.801.576 4.765-1.589 8.199-6.086 8.199-11.386 0-6.627-5.373-12-12-12z"/></svg>
|
|
44
|
+
</a>
|
|
45
|
+
<a href="../index.html#get-started" class="btn btn-primary btn-nav">Get Started</a>
|
|
46
|
+
<button class="nav-toggle" id="nav-toggle" aria-label="Toggle menu">
|
|
47
|
+
<span></span><span></span><span></span>
|
|
48
|
+
</button>
|
|
49
|
+
</div>
|
|
50
|
+
</div>
|
|
51
|
+
</header>
|
|
52
|
+
|
|
53
|
+
<div class="docs-layout">
|
|
54
|
+
<aside class="docs-sidebar" id="docs-sidebar">
|
|
55
|
+
<div class="docs-sidebar-section">
|
|
56
|
+
<div class="docs-sidebar-heading">Getting Started</div>
|
|
57
|
+
<div class="docs-sidebar-links">
|
|
58
|
+
<a href="index.html">Overview</a>
|
|
59
|
+
<a href="config.html">Configuration</a>
|
|
60
|
+
</div>
|
|
61
|
+
</div>
|
|
62
|
+
<div class="docs-sidebar-section">
|
|
63
|
+
<div class="docs-sidebar-heading">Core Concepts</div>
|
|
64
|
+
<div class="docs-sidebar-links">
|
|
65
|
+
<a href="agents.html">Agents & Workflows</a>
|
|
66
|
+
<a href="memory.html">Memory System</a>
|
|
67
|
+
<a href="skills.html">Skills</a>
|
|
68
|
+
</div>
|
|
69
|
+
</div>
|
|
70
|
+
<div class="docs-sidebar-section">
|
|
71
|
+
<div class="docs-sidebar-heading">Guides</div>
|
|
72
|
+
<div class="docs-sidebar-links">
|
|
73
|
+
<a href="channels.html">Channel Setup</a>
|
|
74
|
+
<a href="integrations.html" class="active">Integrations</a>
|
|
75
|
+
<a href="security.html">Security & Auth</a>
|
|
76
|
+
</div>
|
|
77
|
+
</div>
|
|
78
|
+
<div class="docs-sidebar-section">
|
|
79
|
+
<div class="docs-sidebar-heading">Reference</div>
|
|
80
|
+
<div class="docs-sidebar-links">
|
|
81
|
+
<a href="api.html">API Reference</a>
|
|
82
|
+
<a href="cli.html">CLI Commands</a>
|
|
83
|
+
</div>
|
|
84
|
+
</div>
|
|
85
|
+
</aside>
|
|
86
|
+
|
|
87
|
+
<main class="docs-content">
|
|
88
|
+
<div class="docs-breadcrumb">
|
|
89
|
+
<a href="../index.html">Home</a>
|
|
90
|
+
<span>/</span>
|
|
91
|
+
<a href="index.html">Docs</a>
|
|
92
|
+
<span>/</span>
|
|
93
|
+
Integrations
|
|
94
|
+
</div>
|
|
95
|
+
|
|
96
|
+
<h1>Integrations</h1>
|
|
97
|
+
<p>Zubo integrates with popular services via pre-built skill packs. Each integration installs one or more skills and requires an API key stored as a secret. You can connect integrations via chat, the dashboard, or the <code>connect_service</code> tool.</p>
|
|
98
|
+
|
|
99
|
+
<h2 id="connecting-an-integration">Connecting an Integration</h2>
|
|
100
|
+
<p>There are three ways to connect a service:</p>
|
|
101
|
+
<ol>
|
|
102
|
+
<li><strong>Chat:</strong> Tell Zubo directly — for example, <code>"Connect GitHub with token ghp_abc123"</code>. Zubo will store the secret and install the skill pack automatically.</li>
|
|
103
|
+
<li><strong>Dashboard:</strong> Navigate to Settings → Secrets → Add Secret. Enter the secret name and value, then Zubo detects the associated integration and installs the skills.</li>
|
|
104
|
+
<li><strong>CLI:</strong> Run <code>zubo start</code>, then use the <code>connect_service</code> tool programmatically to provide the credentials.</li>
|
|
105
|
+
</ol>
|
|
106
|
+
<p>When you connect a service, Zubo performs the following steps:</p>
|
|
107
|
+
<ol>
|
|
108
|
+
<li>Stores the API key as a secret in the local database</li>
|
|
109
|
+
<li>Installs the relevant skill pack for that service</li>
|
|
110
|
+
<li>Makes all integration tools available immediately (hot-loaded — no restart required)</li>
|
|
111
|
+
</ol>
|
|
112
|
+
|
|
113
|
+
<h2 id="github">GitHub</h2>
|
|
114
|
+
<table>
|
|
115
|
+
<thead><tr><th>Field</th><th>Details</th></tr></thead>
|
|
116
|
+
<tbody>
|
|
117
|
+
<tr><td>Secret Name</td><td><code>github_token</code></td></tr>
|
|
118
|
+
<tr><td>Token Type</td><td>Personal Access Token (classic)</td></tr>
|
|
119
|
+
<tr><td>Required Scopes</td><td><code>repo</code>, <code>read:user</code></td></tr>
|
|
120
|
+
</tbody>
|
|
121
|
+
</table>
|
|
122
|
+
<h3>Getting a Token</h3>
|
|
123
|
+
<ol>
|
|
124
|
+
<li>Go to <a href="https://github.com/settings/tokens">github.com/settings/tokens</a></li>
|
|
125
|
+
<li>Click “Generate new token (classic)”</li>
|
|
126
|
+
<li>Select the <code>repo</code> and <code>read:user</code> scopes</li>
|
|
127
|
+
<li>Copy the generated token</li>
|
|
128
|
+
</ol>
|
|
129
|
+
<h3>Skills Installed</h3>
|
|
130
|
+
<ul>
|
|
131
|
+
<li><code>github_repos</code> — List and search repositories, view repository details</li>
|
|
132
|
+
<li><code>github_issues</code> — List, search, and create issues on any accessible repository</li>
|
|
133
|
+
<li><code>github_prs</code> — List and search pull requests, view PR details and diffs</li>
|
|
134
|
+
</ul>
|
|
135
|
+
<h3>Example</h3>
|
|
136
|
+
<pre><code>"Connect GitHub with token ghp_abc123xyz"</code></pre>
|
|
137
|
+
<p>After connecting, try: <code>"List my GitHub repos"</code> or <code>"Show open issues on myorg/myrepo"</code></p>
|
|
138
|
+
|
|
139
|
+
<h2 id="google">Google</h2>
|
|
140
|
+
<table>
|
|
141
|
+
<thead><tr><th>Field</th><th>Details</th></tr></thead>
|
|
142
|
+
<tbody>
|
|
143
|
+
<tr><td>Secret Name</td><td><code>google_api_key</code></td></tr>
|
|
144
|
+
<tr><td>Token Type</td><td>API Key or OAuth credentials</td></tr>
|
|
145
|
+
<tr><td>Required APIs</td><td>Gmail API, Calendar API, Sheets API, Docs API, Drive API</td></tr>
|
|
146
|
+
</tbody>
|
|
147
|
+
</table>
|
|
148
|
+
<h3>Getting a Key</h3>
|
|
149
|
+
<ol>
|
|
150
|
+
<li>Go to <a href="https://console.cloud.google.com">console.cloud.google.com</a></li>
|
|
151
|
+
<li>Create a new project (or select an existing one)</li>
|
|
152
|
+
<li>Navigate to APIs & Services → Library and enable the Gmail, Calendar, Sheets, Docs, and Drive APIs</li>
|
|
153
|
+
<li>Go to APIs & Services → Credentials</li>
|
|
154
|
+
<li>Create an API key or OAuth 2.0 client credentials</li>
|
|
155
|
+
</ol>
|
|
156
|
+
<h3>Skills Installed</h3>
|
|
157
|
+
<ul>
|
|
158
|
+
<li><code>gmail</code> — Read and list emails, search by query</li>
|
|
159
|
+
<li><code>google_calendar</code> — List upcoming events, get event details</li>
|
|
160
|
+
<li><code>google_sheets</code> — Read from and write to spreadsheets</li>
|
|
161
|
+
<li><code>google_docs</code> — Read document content</li>
|
|
162
|
+
<li><code>google_drive</code> — List and search files across your Drive</li>
|
|
163
|
+
</ul>
|
|
164
|
+
|
|
165
|
+
<h2 id="notion">Notion</h2>
|
|
166
|
+
<table>
|
|
167
|
+
<thead><tr><th>Field</th><th>Details</th></tr></thead>
|
|
168
|
+
<tbody>
|
|
169
|
+
<tr><td>Secret Name</td><td><code>notion_token</code></td></tr>
|
|
170
|
+
<tr><td>Token Type</td><td>Internal Integration Token</td></tr>
|
|
171
|
+
</tbody>
|
|
172
|
+
</table>
|
|
173
|
+
<h3>Getting a Token</h3>
|
|
174
|
+
<ol>
|
|
175
|
+
<li>Go to <a href="https://www.notion.so/my-integrations">notion.so/my-integrations</a></li>
|
|
176
|
+
<li>Click “New integration”</li>
|
|
177
|
+
<li>Give it a name and select the workspace</li>
|
|
178
|
+
<li>Copy the Internal Integration Token</li>
|
|
179
|
+
<li><strong>Important:</strong> Share the databases and pages you want Zubo to access with the integration inside Notion (click “Share” on the page and add the integration)</li>
|
|
180
|
+
</ol>
|
|
181
|
+
<h3>Skills Installed</h3>
|
|
182
|
+
<ul>
|
|
183
|
+
<li><code>notion_databases</code> — List and search databases in your workspace</li>
|
|
184
|
+
<li><code>notion_pages</code> — Read and search pages by title or content</li>
|
|
185
|
+
<li><code>notion_search</code> — Full-text search across the entire connected workspace</li>
|
|
186
|
+
</ul>
|
|
187
|
+
|
|
188
|
+
<h2 id="linear">Linear</h2>
|
|
189
|
+
<table>
|
|
190
|
+
<thead><tr><th>Field</th><th>Details</th></tr></thead>
|
|
191
|
+
<tbody>
|
|
192
|
+
<tr><td>Secret Name</td><td><code>linear_api_key</code></td></tr>
|
|
193
|
+
<tr><td>Token Type</td><td>Personal API Key</td></tr>
|
|
194
|
+
</tbody>
|
|
195
|
+
</table>
|
|
196
|
+
<h3>Getting a Key</h3>
|
|
197
|
+
<ol>
|
|
198
|
+
<li>Open Linear and go to Settings → API → Personal API Keys</li>
|
|
199
|
+
<li>Click “Create key”</li>
|
|
200
|
+
<li>Copy the generated key</li>
|
|
201
|
+
</ol>
|
|
202
|
+
<h3>Skills Installed</h3>
|
|
203
|
+
<ul>
|
|
204
|
+
<li><code>linear_issues</code> — List, search, and create issues across your teams</li>
|
|
205
|
+
<li><code>linear_projects</code> — List projects and their statuses</li>
|
|
206
|
+
</ul>
|
|
207
|
+
|
|
208
|
+
<h2 id="jira">Jira</h2>
|
|
209
|
+
<table>
|
|
210
|
+
<thead><tr><th>Field</th><th>Details</th></tr></thead>
|
|
211
|
+
<tbody>
|
|
212
|
+
<tr><td>Secret Names</td><td><code>jira_token</code>, <code>jira_email</code>, <code>jira_domain</code></td></tr>
|
|
213
|
+
<tr><td>Token Type</td><td>Atlassian API Token</td></tr>
|
|
214
|
+
</tbody>
|
|
215
|
+
</table>
|
|
216
|
+
<p>Jira requires three secrets: your API token, the email address associated with your Atlassian account, and your Jira domain (e.g., <code>yourcompany.atlassian.net</code>).</p>
|
|
217
|
+
<h3>Getting a Token</h3>
|
|
218
|
+
<ol>
|
|
219
|
+
<li>Go to <a href="https://id.atlassian.com/manage-profile/security/api-tokens">id.atlassian.com/manage-profile/security/api-tokens</a></li>
|
|
220
|
+
<li>Click “Create API token”</li>
|
|
221
|
+
<li>Copy the token</li>
|
|
222
|
+
<li>Store all three secrets:
|
|
223
|
+
<pre><code>"Store my jira_token: atl_abc123..."
|
|
224
|
+
"Store my jira_email: you@company.com"
|
|
225
|
+
"Store my jira_domain: yourcompany.atlassian.net"</code></pre>
|
|
226
|
+
</li>
|
|
227
|
+
</ol>
|
|
228
|
+
<h3>Skills Installed</h3>
|
|
229
|
+
<ul>
|
|
230
|
+
<li><code>jira_issues</code> — List and search issues using JQL, view issue details</li>
|
|
231
|
+
<li><code>jira_boards</code> — List boards and their configurations</li>
|
|
232
|
+
</ul>
|
|
233
|
+
|
|
234
|
+
<h2 id="slack-integration">Slack (Integration)</h2>
|
|
235
|
+
<table>
|
|
236
|
+
<thead><tr><th>Field</th><th>Details</th></tr></thead>
|
|
237
|
+
<tbody>
|
|
238
|
+
<tr><td>Secret Name</td><td><code>slack_bot_token</code></td></tr>
|
|
239
|
+
<tr><td>Token Type</td><td>Bot User OAuth Token</td></tr>
|
|
240
|
+
</tbody>
|
|
241
|
+
</table>
|
|
242
|
+
<p>The Slack integration allows Zubo to proactively send messages to Slack channels and read channel history. This is used for the agent to interact with Slack on your behalf.</p>
|
|
243
|
+
<blockquote><p><strong>Note:</strong> This is different from the Slack <em>channel</em> (configured in <a href="channels.html">Channel Setup</a>), which lets users send messages <em>to</em> Zubo via Slack. The integration allows the agent to proactively interact with Slack channels — sending messages, reading history, and responding to events.</p></blockquote>
|
|
244
|
+
<h3>Skills Installed</h3>
|
|
245
|
+
<ul>
|
|
246
|
+
<li><code>slack_messages</code> — Send messages to channels and users, read channel message history</li>
|
|
247
|
+
</ul>
|
|
248
|
+
|
|
249
|
+
<h2 id="twitter">Twitter / X</h2>
|
|
250
|
+
<table>
|
|
251
|
+
<thead><tr><th>Field</th><th>Details</th></tr></thead>
|
|
252
|
+
<tbody>
|
|
253
|
+
<tr><td>Secret Name</td><td><code>twitter_bearer_token</code></td></tr>
|
|
254
|
+
<tr><td>Token Type</td><td>API v2 Bearer Token</td></tr>
|
|
255
|
+
</tbody>
|
|
256
|
+
</table>
|
|
257
|
+
<h3>Getting a Token</h3>
|
|
258
|
+
<ol>
|
|
259
|
+
<li>Go to <a href="https://developer.twitter.com">developer.twitter.com</a></li>
|
|
260
|
+
<li>Create a project and app</li>
|
|
261
|
+
<li>Navigate to Keys and Tokens</li>
|
|
262
|
+
<li>Generate a Bearer Token</li>
|
|
263
|
+
</ol>
|
|
264
|
+
<h3>Skills Installed</h3>
|
|
265
|
+
<ul>
|
|
266
|
+
<li><code>twitter_posts</code> — Compose and post tweets</li>
|
|
267
|
+
</ul>
|
|
268
|
+
<blockquote><p><strong>Note:</strong> The <code>twitter_posts</code> tool has <code>confirm</code> permission level — the agent will always describe the tweet and ask for your explicit approval before posting. This cannot be bypassed.</p></blockquote>
|
|
269
|
+
|
|
270
|
+
<h2 id="integration-summary">Integration Summary</h2>
|
|
271
|
+
<table>
|
|
272
|
+
<thead>
|
|
273
|
+
<tr>
|
|
274
|
+
<th>Service</th>
|
|
275
|
+
<th>Secret Name</th>
|
|
276
|
+
<th>Skills</th>
|
|
277
|
+
<th>Notes</th>
|
|
278
|
+
</tr>
|
|
279
|
+
</thead>
|
|
280
|
+
<tbody>
|
|
281
|
+
<tr>
|
|
282
|
+
<td>GitHub</td>
|
|
283
|
+
<td><code>github_token</code></td>
|
|
284
|
+
<td>repos, issues, prs</td>
|
|
285
|
+
<td>PAT with <code>repo</code> scope</td>
|
|
286
|
+
</tr>
|
|
287
|
+
<tr>
|
|
288
|
+
<td>Google</td>
|
|
289
|
+
<td><code>google_api_key</code></td>
|
|
290
|
+
<td>gmail, calendar, sheets, docs, drive</td>
|
|
291
|
+
<td>Enable APIs in Cloud Console</td>
|
|
292
|
+
</tr>
|
|
293
|
+
<tr>
|
|
294
|
+
<td>Notion</td>
|
|
295
|
+
<td><code>notion_token</code></td>
|
|
296
|
+
<td>databases, pages, search</td>
|
|
297
|
+
<td>Share pages with integration</td>
|
|
298
|
+
</tr>
|
|
299
|
+
<tr>
|
|
300
|
+
<td>Linear</td>
|
|
301
|
+
<td><code>linear_api_key</code></td>
|
|
302
|
+
<td>issues, projects</td>
|
|
303
|
+
<td>Personal API key</td>
|
|
304
|
+
</tr>
|
|
305
|
+
<tr>
|
|
306
|
+
<td>Jira</td>
|
|
307
|
+
<td><code>jira_token</code> + <code>jira_email</code> + <code>jira_domain</code></td>
|
|
308
|
+
<td>issues, boards</td>
|
|
309
|
+
<td>Atlassian API token</td>
|
|
310
|
+
</tr>
|
|
311
|
+
<tr>
|
|
312
|
+
<td>Slack</td>
|
|
313
|
+
<td><code>slack_bot_token</code></td>
|
|
314
|
+
<td>messages</td>
|
|
315
|
+
<td>For proactive messages</td>
|
|
316
|
+
</tr>
|
|
317
|
+
<tr>
|
|
318
|
+
<td>Twitter</td>
|
|
319
|
+
<td><code>twitter_bearer_token</code></td>
|
|
320
|
+
<td>posts</td>
|
|
321
|
+
<td>Requires confirmation</td>
|
|
322
|
+
</tr>
|
|
323
|
+
</tbody>
|
|
324
|
+
</table>
|
|
325
|
+
|
|
326
|
+
<h2 id="managing-secrets">Managing Secrets</h2>
|
|
327
|
+
<p>All integration secrets are managed through the same unified secret system.</p>
|
|
328
|
+
<h3>Dashboard</h3>
|
|
329
|
+
<ul>
|
|
330
|
+
<li>Navigate to Settings → Secrets & API Keys</li>
|
|
331
|
+
<li>Values are displayed as <code>••••••••</code> by default</li>
|
|
332
|
+
<li>Click <strong>“Reveal”</strong> to show the actual secret value</li>
|
|
333
|
+
<li>Click <strong>“Edit”</strong> to update a secret with a new value</li>
|
|
334
|
+
<li>Click <strong>“Delete”</strong> to remove a secret entirely (this disables the associated integration)</li>
|
|
335
|
+
</ul>
|
|
336
|
+
<h3>Chat</h3>
|
|
337
|
+
<p>You can also manage secrets conversationally:</p>
|
|
338
|
+
<pre><code>"List my secrets"
|
|
339
|
+
"Delete the github_token secret"
|
|
340
|
+
"Update my notion_token to ntn_newvalue123"</code></pre>
|
|
341
|
+
|
|
342
|
+
<h2 id="best-practices">Best Practices</h2>
|
|
343
|
+
<ul>
|
|
344
|
+
<li><strong>Use minimum required scopes:</strong> When creating API tokens, only grant the permissions each service needs. For GitHub, <code>repo</code> and <code>read:user</code> are sufficient — avoid granting <code>admin</code> or <code>delete</code> scopes.</li>
|
|
345
|
+
<li><strong>Rotate API keys periodically:</strong> Update your tokens every few months by editing the secret in the dashboard or telling Zubo to update it.</li>
|
|
346
|
+
<li><strong>Check requirements first:</strong> Before connecting an integration, review which secrets it needs (see the summary table above) so you can prepare all required credentials.</li>
|
|
347
|
+
<li><strong>Test after connecting:</strong> After storing a secret, verify the integration works by asking Zubo to perform a simple action — for example, <code>"List my GitHub repos"</code> or <code>"Show my upcoming calendar events"</code>.</li>
|
|
348
|
+
<li><strong>Secrets are excluded from exports:</strong> When you run <code>zubo export</code>, secrets and API keys are automatically excluded to prevent accidental credential leakage.</li>
|
|
349
|
+
<li><strong>Store secrets via Zubo:</strong> Always use the agent, dashboard, or <code>secret_set</code> tool to store credentials. Never put them in environment variables, configuration files, or skill source code.</li>
|
|
350
|
+
<li><strong>Share Notion pages explicitly:</strong> The Notion integration can only access pages and databases that have been explicitly shared with the integration — it does not have access to your entire workspace by default.</li>
|
|
351
|
+
</ul>
|
|
352
|
+
|
|
353
|
+
<div class="docs-page-nav">
|
|
354
|
+
<a href="channels.html">
|
|
355
|
+
<span class="nav-dir">Previous</span>
|
|
356
|
+
<span class="nav-label">← Channel Setup</span>
|
|
357
|
+
</a>
|
|
358
|
+
<a href="security.html">
|
|
359
|
+
<span class="nav-dir">Next</span>
|
|
360
|
+
<span class="nav-label">Security & Auth →</span>
|
|
361
|
+
</a>
|
|
362
|
+
</div>
|
|
363
|
+
</main>
|
|
364
|
+
</div>
|
|
365
|
+
|
|
366
|
+
<button class="docs-sidebar-toggle" id="docs-sidebar-toggle" aria-label="Toggle sidebar">☰</button>
|
|
367
|
+
|
|
368
|
+
<script src="../script.js"></script>
|
|
369
|
+
<script type="application/ld+json">
|
|
370
|
+
{
|
|
371
|
+
"@context": "https://schema.org",
|
|
372
|
+
"@type": "BreadcrumbList",
|
|
373
|
+
"itemListElement": [
|
|
374
|
+
{ "@type": "ListItem", "position": 1, "name": "Home", "item": "https://zubo.bot/" },
|
|
375
|
+
{ "@type": "ListItem", "position": 2, "name": "Docs", "item": "https://zubo.bot/docs/" },
|
|
376
|
+
{ "@type": "ListItem", "position": 3, "name": "Integrations", "item": "https://zubo.bot/docs/integrations.html" }
|
|
377
|
+
]
|
|
378
|
+
}
|
|
379
|
+
</script>
|
|
380
|
+
</body>
|
|
381
|
+
</html>
|