@vellumai/assistant 0.5.11 → 0.5.13
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/Dockerfile +42 -9
- package/docs/architecture/integrations.md +34 -32
- package/node_modules/@vellumai/ces-contracts/src/__tests__/grants.test.ts +7 -7
- package/node_modules/@vellumai/ces-contracts/src/handles.ts +5 -4
- package/node_modules/@vellumai/ces-contracts/src/index.ts +7 -0
- package/node_modules/@vellumai/ces-contracts/src/rpc.ts +5 -0
- package/node_modules/@vellumai/credential-storage/src/index.ts +1 -1
- package/openapi.yaml +87 -9
- package/package.json +1 -1
- package/src/__tests__/catalog-cache.test.ts +164 -0
- package/src/__tests__/catalog-search.test.ts +61 -0
- package/src/__tests__/cli-command-risk-guard.test.ts +181 -6
- package/src/__tests__/conversation-delete-schedule-cleanup.test.ts +396 -0
- package/src/__tests__/conversation-error.test.ts +3 -2
- package/src/__tests__/credential-security-invariants.test.ts +9 -15
- package/src/__tests__/credential-vault-unit.test.ts +32 -34
- package/src/__tests__/credential-vault.test.ts +25 -33
- package/src/__tests__/credentials-cli.test.ts +3 -3
- package/src/__tests__/daemon-credential-client.test.ts +2 -2
- package/src/__tests__/first-greeting.test.ts +7 -0
- package/src/__tests__/host-bash-proxy.test.ts +79 -0
- package/src/__tests__/host-cu-proxy.test.ts +90 -0
- package/src/__tests__/host-file-proxy.test.ts +89 -0
- package/src/__tests__/integration-status.test.ts +5 -5
- package/src/__tests__/list-messages-attachments.test.ts +171 -0
- package/src/__tests__/mcp-abort-signal.test.ts +205 -0
- package/src/__tests__/messaging-send-tool.test.ts +5 -5
- package/src/__tests__/navigate-settings-tab.test.ts +6 -2
- package/src/__tests__/notification-telegram-adapter.test.ts +125 -0
- package/src/__tests__/oauth-cli.test.ts +126 -119
- package/src/__tests__/oauth-provider-profiles.test.ts +55 -20
- package/src/__tests__/oauth-scope-policy.test.ts +4 -6
- package/src/__tests__/onboarding-template-contract.test.ts +2 -2
- package/src/__tests__/platform.test.ts +3 -168
- package/src/__tests__/secret-routes-managed-proxy.test.ts +78 -0
- package/src/__tests__/secure-keys-managed-failover.test.ts +73 -0
- package/src/__tests__/skill-feature-flags.test.ts +8 -0
- package/src/__tests__/skill-secret-handling-guard.test.ts +212 -0
- package/src/__tests__/skills-uninstall.test.ts +2 -2
- package/src/__tests__/slack-messaging-token-resolution.test.ts +22 -24
- package/src/__tests__/slack-share-routes.test.ts +5 -5
- package/src/__tests__/system-prompt.test.ts +39 -0
- package/src/__tests__/token-estimator-accuracy.benchmark.test.ts +1 -1
- package/src/__tests__/workspace-migration-backfill-installation-id.test.ts +5 -4
- package/src/cli/AGENTS.md +47 -7
- package/src/cli/commands/browser-relay.ts +2 -17
- package/src/cli/commands/contacts.ts +6 -4
- package/src/cli/commands/conversations.ts +13 -1
- package/src/cli/commands/credential-execution.ts +16 -1
- package/src/cli/commands/credentials.ts +2 -8
- package/src/cli/commands/oauth/__tests__/connect.test.ts +29 -108
- package/src/cli/commands/oauth/__tests__/disconnect.test.ts +13 -87
- package/src/cli/commands/oauth/__tests__/mode.test.ts +22 -69
- package/src/cli/commands/oauth/__tests__/ping.test.ts +20 -79
- package/src/cli/commands/oauth/__tests__/providers-delete.test.ts +574 -0
- package/src/cli/commands/oauth/__tests__/providers-update.test.ts +416 -0
- package/src/cli/commands/oauth/__tests__/status.test.ts +12 -40
- package/src/cli/commands/oauth/__tests__/token.test.ts +3 -50
- package/src/cli/commands/oauth/apps.ts +63 -44
- package/src/cli/commands/oauth/connect.ts +187 -155
- package/src/cli/commands/oauth/disconnect.ts +27 -75
- package/src/cli/commands/oauth/index.ts +36 -46
- package/src/cli/commands/oauth/mode.ts +22 -34
- package/src/cli/commands/oauth/ping.ts +19 -45
- package/src/cli/commands/oauth/providers.ts +569 -62
- package/src/cli/commands/oauth/request.ts +36 -48
- package/src/cli/commands/oauth/shared.ts +1 -19
- package/src/cli/commands/oauth/status.ts +14 -25
- package/src/cli/commands/oauth/token.ts +25 -34
- package/src/cli/commands/platform/__tests__/connect.test.ts +224 -0
- package/src/cli/commands/platform/__tests__/disconnect.test.ts +237 -0
- package/src/cli/commands/platform/__tests__/status.test.ts +246 -0
- package/src/cli/commands/platform/connect.ts +104 -0
- package/src/cli/commands/platform/disconnect.ts +118 -0
- package/src/cli/commands/{platform.ts → platform/index.ts} +108 -38
- package/src/cli/commands/sequence.ts +5 -4
- package/src/cli/commands/shotgun.ts +16 -0
- package/src/cli/commands/skills.ts +173 -41
- package/src/cli/commands/usage.ts +5 -11
- package/src/cli/lib/daemon-credential-client.ts +22 -38
- package/src/cli/program.ts +1 -1
- package/src/config/assistant-feature-flags.ts +3 -7
- package/src/config/bundled-skills/contacts/tools/google-contacts.ts +1 -1
- package/src/config/bundled-skills/conversations/SKILL.md +20 -0
- package/src/config/bundled-skills/conversations/TOOLS.json +23 -0
- package/src/config/bundled-skills/conversations/tools/rename-conversation.ts +66 -0
- package/src/config/bundled-skills/gmail/SKILL.md +13 -13
- package/src/config/bundled-skills/gmail/tools/gmail-archive.ts +3 -3
- package/src/config/bundled-skills/gmail/tools/gmail-attachments.ts +2 -2
- package/src/config/bundled-skills/gmail/tools/gmail-draft.ts +1 -1
- package/src/config/bundled-skills/gmail/tools/gmail-filters.ts +1 -1
- package/src/config/bundled-skills/gmail/tools/gmail-follow-up.ts +1 -1
- package/src/config/bundled-skills/gmail/tools/gmail-forward.ts +1 -1
- package/src/config/bundled-skills/gmail/tools/gmail-label.ts +2 -2
- package/src/config/bundled-skills/gmail/tools/gmail-outreach-scan.ts +1 -1
- package/src/config/bundled-skills/gmail/tools/gmail-send-draft.ts +1 -1
- package/src/config/bundled-skills/gmail/tools/gmail-sender-digest.ts +1 -1
- package/src/config/bundled-skills/gmail/tools/gmail-trash.ts +1 -1
- package/src/config/bundled-skills/gmail/tools/gmail-unsubscribe.ts +1 -1
- package/src/config/bundled-skills/gmail/tools/gmail-vacation.ts +1 -1
- package/src/config/bundled-skills/google-calendar/SKILL.md +10 -4
- package/src/config/bundled-skills/google-calendar/tools/shared.ts +1 -1
- package/src/config/bundled-skills/messaging/SKILL.md +7 -7
- package/src/config/bundled-skills/messaging/tools/messaging-send.ts +5 -2
- package/src/config/bundled-skills/messaging/tools/shared.ts +5 -6
- package/src/config/bundled-skills/settings/TOOLS.json +5 -3
- package/src/config/bundled-skills/settings/tools/navigate-settings-tab.ts +4 -2
- package/src/config/bundled-tool-registry.ts +5 -0
- package/src/config/feature-flag-registry.json +2 -2
- package/src/credential-execution/client.ts +15 -3
- package/src/daemon/conversation-agent-loop.ts +2 -0
- package/src/daemon/conversation-error.ts +36 -6
- package/src/daemon/conversation-messaging.ts +9 -0
- package/src/daemon/conversation-runtime-assembly.ts +33 -0
- package/src/daemon/conversation-surfaces.ts +120 -14
- package/src/daemon/conversation.ts +5 -0
- package/src/daemon/first-greeting.ts +6 -1
- package/src/daemon/handlers/skills.ts +148 -3
- package/src/daemon/host-bash-proxy.ts +16 -0
- package/src/daemon/host-cu-proxy.ts +16 -0
- package/src/daemon/host-file-proxy.ts +16 -0
- package/src/daemon/lifecycle.ts +56 -5
- package/src/daemon/message-types/conversations.ts +1 -0
- package/src/daemon/message-types/guardian-actions.ts +2 -0
- package/src/daemon/message-types/host-bash.ts +6 -1
- package/src/daemon/message-types/host-cu.ts +6 -1
- package/src/daemon/message-types/host-file.ts +6 -1
- package/src/daemon/message-types/integrations.ts +0 -1
- package/src/daemon/server.ts +29 -2
- package/src/hooks/cli.ts +74 -0
- package/src/inbound/platform-callback-registration.ts +7 -12
- package/src/index.ts +0 -12
- package/src/mcp/client.ts +6 -1
- package/src/mcp/manager.ts +2 -1
- package/src/memory/conversation-crud.ts +92 -3
- package/src/memory/conversation-key-store.ts +26 -0
- package/src/memory/conversation-queries.ts +6 -6
- package/src/memory/db-init.ts +16 -0
- package/src/memory/journal-memory.ts +8 -2
- package/src/memory/migrations/196-messages-conversation-created-at-index.ts +9 -0
- package/src/memory/migrations/196-strip-integration-prefix-from-provider-keys.ts +186 -0
- package/src/memory/migrations/197-oauth-providers-behavior-columns.ts +29 -0
- package/src/memory/migrations/198-drop-setup-skill-id-column.ts +11 -0
- package/src/memory/migrations/index.ts +4 -0
- package/src/memory/migrations/registry.ts +8 -0
- package/src/memory/schema/oauth.ts +11 -0
- package/src/messaging/provider.ts +13 -12
- package/src/messaging/providers/gmail/adapter.ts +44 -35
- package/src/messaging/providers/slack/adapter.ts +63 -33
- package/src/messaging/providers/telegram-bot/adapter.ts +6 -8
- package/src/messaging/providers/whatsapp/adapter.ts +6 -8
- package/src/notifications/adapters/telegram.ts +78 -2
- package/src/oauth/__tests__/identity-verifier.test.ts +464 -0
- package/src/oauth/byo-connection.test.ts +22 -24
- package/src/oauth/connect-orchestrator.ts +37 -76
- package/src/oauth/connect-types.ts +7 -65
- package/src/oauth/connection-resolver.test.ts +13 -13
- package/src/oauth/connection-resolver.ts +3 -4
- package/src/oauth/identity-verifier.ts +177 -0
- package/src/oauth/oauth-store.ts +228 -3
- package/src/oauth/platform-connection.test.ts +56 -6
- package/src/oauth/platform-connection.ts +8 -1
- package/src/oauth/seed-providers.ts +247 -34
- package/src/permissions/checker.ts +127 -1
- package/src/prompts/journal-context.ts +4 -1
- package/src/prompts/system-prompt.ts +54 -9
- package/src/prompts/templates/BOOTSTRAP.md +16 -5
- package/src/providers/anthropic/client.ts +2 -33
- package/src/runtime/guardian-action-service.ts +7 -2
- package/src/runtime/http-server.ts +12 -18
- package/src/runtime/http-types.ts +8 -1
- package/src/runtime/migrations/rebind-secrets-screen.ts +2 -2
- package/src/runtime/routes/conversation-management-routes.ts +31 -0
- package/src/runtime/routes/conversation-routes.ts +79 -4
- package/src/runtime/routes/guardian-action-routes.ts +15 -2
- package/src/runtime/routes/inbound-stages/acl-enforcement.ts +21 -8
- package/src/runtime/routes/integrations/slack/share.ts +1 -1
- package/src/runtime/routes/oauth-apps.ts +2 -1
- package/src/runtime/routes/secret-routes.ts +45 -15
- package/src/runtime/routes/settings-routes.ts +12 -19
- package/src/runtime/routes/skills-routes.ts +45 -4
- package/src/schedule/integration-status.ts +2 -2
- package/src/security/ces-rpc-credential-backend.ts +19 -16
- package/src/security/oauth-completion-page.ts +153 -0
- package/src/security/oauth2.ts +3 -17
- package/src/security/secure-keys.ts +207 -7
- package/src/security/token-manager.ts +3 -6
- package/src/signals/bash.ts +6 -1
- package/src/skills/catalog-cache.ts +44 -0
- package/src/skills/catalog-search.ts +18 -0
- package/src/tools/browser/browser-manager.ts +2 -2
- package/src/tools/credentials/post-connect-hooks.ts +1 -1
- package/src/tools/credentials/vault.ts +34 -45
- package/src/tools/host-terminal/host-shell.ts +16 -3
- package/src/tools/mcp/mcp-tool-factory.ts +2 -1
- package/src/tools/skills/sandbox-runner.ts +16 -3
- package/src/tools/terminal/shell.ts +16 -3
- package/src/util/logger.ts +11 -1
- package/src/util/platform.ts +1 -91
- package/src/util/sentry-log-stream.ts +51 -0
- package/src/watcher/providers/github.ts +2 -2
- package/src/watcher/providers/gmail.ts +1 -1
- package/src/watcher/providers/google-calendar.ts +1 -1
- package/src/watcher/providers/linear.ts +2 -2
- package/src/workspace/migrations/011-backfill-installation-id.ts +5 -3
- package/src/workspace/migrations/020-rename-oauth-skill-dirs.ts +119 -0
- package/src/workspace/migrations/registry.ts +2 -0
- package/src/cli/commands/oauth/connections.ts +0 -255
- package/src/oauth/provider-behaviors.ts +0 -634
|
@@ -7,7 +7,6 @@ import {
|
|
|
7
7
|
import { getProvider } from "../../../oauth/oauth-store.js";
|
|
8
8
|
import { getCliLogger } from "../../logger.js";
|
|
9
9
|
import { shouldOutputJson, writeOutput } from "../../output.js";
|
|
10
|
-
import { resolveService } from "./shared.js";
|
|
11
10
|
|
|
12
11
|
const log = getCliLogger("cli");
|
|
13
12
|
|
|
@@ -19,7 +18,7 @@ export function registerPingCommand(oauth: Command): void {
|
|
|
19
18
|
oauth
|
|
20
19
|
.command("ping <provider>")
|
|
21
20
|
.description(
|
|
22
|
-
"Verify an OAuth token is valid by hitting the provider's health-check endpoint",
|
|
21
|
+
"Verify an OAuth token is valid by hitting the provider's configured health-check endpoint",
|
|
23
22
|
)
|
|
24
23
|
.option("--account <account>", "Account identifier for multi-account")
|
|
25
24
|
.option("--client-id <id>", "BYO app client ID disambiguation")
|
|
@@ -27,25 +26,16 @@ export function registerPingCommand(oauth: Command): void {
|
|
|
27
26
|
"after",
|
|
28
27
|
`
|
|
29
28
|
Arguments:
|
|
30
|
-
provider Provider
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
multiple accounts are connected for the same provider.
|
|
37
|
-
--client-id <id> BYO-only: select a specific OAuth app when multiple
|
|
38
|
-
apps exist for the same provider. Ignored for
|
|
39
|
-
platform-managed providers.
|
|
40
|
-
|
|
41
|
-
Mode detection:
|
|
42
|
-
The command auto-detects whether the provider runs in platform-managed or
|
|
43
|
-
BYO (bring-your-own credentials) mode via resolveOAuthConnection. Managed
|
|
44
|
-
mode routes through the platform proxy; BYO mode uses locally stored tokens.
|
|
29
|
+
provider Provider name (e.g. google, slack).
|
|
30
|
+
Run 'assistant oauth providers list' to see available providers.
|
|
31
|
+
|
|
32
|
+
Hits the provider's configured ping URL with the stored OAuth token and
|
|
33
|
+
reports whether the token is valid. Use 'assistant oauth status <provider>'
|
|
34
|
+
to find account identifiers for --account.
|
|
45
35
|
|
|
46
36
|
Examples:
|
|
47
37
|
$ assistant oauth ping google
|
|
48
|
-
$ assistant oauth ping
|
|
38
|
+
$ assistant oauth ping google --json
|
|
49
39
|
$ assistant oauth ping google --account user@example.com`,
|
|
50
40
|
)
|
|
51
41
|
.action(
|
|
@@ -61,19 +51,14 @@ Examples:
|
|
|
61
51
|
|
|
62
52
|
try {
|
|
63
53
|
// -----------------------------------------------------------------
|
|
64
|
-
// 1.
|
|
65
|
-
// -----------------------------------------------------------------
|
|
66
|
-
const providerKey = resolveService(provider);
|
|
67
|
-
|
|
68
|
-
// -----------------------------------------------------------------
|
|
69
|
-
// 2. Validate provider exists
|
|
54
|
+
// 1. Validate provider exists
|
|
70
55
|
// -----------------------------------------------------------------
|
|
71
|
-
const providerRow = getProvider(
|
|
56
|
+
const providerRow = getProvider(provider);
|
|
72
57
|
if (!providerRow) {
|
|
73
58
|
writeOutput(cmd, {
|
|
74
59
|
ok: false,
|
|
75
60
|
error:
|
|
76
|
-
`Unknown provider "${
|
|
61
|
+
`Unknown provider "${provider}". ` +
|
|
77
62
|
`Run 'assistant oauth providers list' to see available providers.`,
|
|
78
63
|
});
|
|
79
64
|
process.exitCode = 1;
|
|
@@ -87,7 +72,7 @@ Examples:
|
|
|
87
72
|
writeOutput(cmd, {
|
|
88
73
|
ok: false,
|
|
89
74
|
error:
|
|
90
|
-
`No ping URL configured for "${
|
|
75
|
+
`No ping URL configured for "${provider}". ` +
|
|
91
76
|
`Register one with 'assistant oauth providers register --ping-url <url>'.`,
|
|
92
77
|
});
|
|
93
78
|
process.exitCode = 1;
|
|
@@ -118,10 +103,7 @@ Examples:
|
|
|
118
103
|
|
|
119
104
|
let connection;
|
|
120
105
|
try {
|
|
121
|
-
connection = await resolveOAuthConnection(
|
|
122
|
-
providerKey,
|
|
123
|
-
resolveOptions,
|
|
124
|
-
);
|
|
106
|
+
connection = await resolveOAuthConnection(provider, resolveOptions);
|
|
125
107
|
} catch (resolveErr) {
|
|
126
108
|
const resolveMessage =
|
|
127
109
|
resolveErr instanceof Error
|
|
@@ -132,7 +114,7 @@ Examples:
|
|
|
132
114
|
ok: false,
|
|
133
115
|
error: resolveMessage,
|
|
134
116
|
hint:
|
|
135
|
-
`Run 'assistant oauth status ${
|
|
117
|
+
`Run 'assistant oauth status ${provider}' to check connection health. ` +
|
|
136
118
|
`To reconnect, run 'assistant oauth connect --help'.`,
|
|
137
119
|
});
|
|
138
120
|
process.exitCode = 1;
|
|
@@ -171,25 +153,25 @@ Examples:
|
|
|
171
153
|
if (response.status >= 200 && response.status < 300) {
|
|
172
154
|
// Success
|
|
173
155
|
if (!jsonMode) {
|
|
174
|
-
log.info(`${
|
|
156
|
+
log.info(`${provider}: OK (HTTP ${response.status})`);
|
|
175
157
|
}
|
|
176
158
|
writeOutput(cmd, {
|
|
177
159
|
ok: true,
|
|
178
|
-
provider:
|
|
160
|
+
provider: provider,
|
|
179
161
|
status: response.status,
|
|
180
162
|
});
|
|
181
163
|
} else {
|
|
182
164
|
// Non-2xx failure
|
|
183
165
|
const payload: Record<string, unknown> = {
|
|
184
166
|
ok: false,
|
|
185
|
-
provider:
|
|
167
|
+
provider: provider,
|
|
186
168
|
status: response.status,
|
|
187
169
|
error: `Ping failed with HTTP ${response.status}`,
|
|
188
170
|
};
|
|
189
171
|
|
|
190
172
|
if (response.status === 401 || response.status === 403) {
|
|
191
173
|
payload.hint =
|
|
192
|
-
`Run 'assistant oauth status ${
|
|
174
|
+
`Run 'assistant oauth status ${provider}' to check connection health. ` +
|
|
193
175
|
`To reconnect, run 'assistant oauth connect --help'.`;
|
|
194
176
|
}
|
|
195
177
|
|
|
@@ -200,19 +182,11 @@ Examples:
|
|
|
200
182
|
// Network failure or other unexpected error
|
|
201
183
|
const message = err instanceof Error ? err.message : String(err);
|
|
202
184
|
|
|
203
|
-
// Try to extract providerKey for recovery hints
|
|
204
|
-
let providerKey: string;
|
|
205
|
-
try {
|
|
206
|
-
providerKey = resolveService(provider);
|
|
207
|
-
} catch {
|
|
208
|
-
providerKey = provider;
|
|
209
|
-
}
|
|
210
|
-
|
|
211
185
|
writeOutput(cmd, {
|
|
212
186
|
ok: false,
|
|
213
187
|
error: message,
|
|
214
188
|
hint:
|
|
215
|
-
`Run 'assistant oauth status ${
|
|
189
|
+
`Run 'assistant oauth status ${provider}' to check connection health. ` +
|
|
216
190
|
`To reconnect, run 'assistant oauth connect --help'.`,
|
|
217
191
|
});
|
|
218
192
|
process.exitCode = 1;
|