@vellumai/assistant 0.8.3 → 0.8.4
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/docker-entrypoint.sh +0 -1
- package/node_modules/@vellumai/gateway-client/src/types.ts +2 -0
- package/openapi.yaml +610 -16
- package/package.json +1 -1
- package/src/__tests__/agent-loop-exit-reason.test.ts +4 -5
- package/src/__tests__/agent-loop-override-profile.test.ts +1 -1
- package/src/__tests__/agent-loop.test.ts +88 -3
- package/src/__tests__/anthropic-provider.test.ts +272 -0
- package/src/__tests__/approval-cascade.test.ts +1 -1
- package/src/__tests__/background-workers-disk-pressure.test.ts +2 -1
- package/src/__tests__/channel-delivery-store.test.ts +193 -0
- package/src/__tests__/channel-reply-delivery.test.ts +284 -5
- package/src/__tests__/channel-retry-sweep.test.ts +274 -1
- package/src/__tests__/compaction-events.test.ts +1 -1
- package/src/__tests__/compactor-preserved-tail-count.test.ts +110 -0
- package/src/__tests__/config-watcher.test.ts +1 -1
- package/src/__tests__/context-token-estimator.test.ts +91 -1
- package/src/__tests__/conversation-abort-tool-results.test.ts +1 -1
- package/src/__tests__/conversation-agent-loop-inference-profile.test.ts +54 -3
- package/src/__tests__/conversation-agent-loop-overflow.test.ts +31 -6
- package/src/__tests__/conversation-agent-loop.test.ts +25 -7
- package/src/__tests__/conversation-app-control-lifecycle.test.ts +1 -1
- package/src/__tests__/conversation-clean-command.test.ts +137 -0
- package/src/__tests__/conversation-confirmation-signals.test.ts +1 -1
- package/src/__tests__/conversation-fork-crud.test.ts +161 -0
- package/src/__tests__/conversation-lifecycle.test.ts +1 -1
- package/src/__tests__/conversation-load-cleaned-at.test.ts +279 -0
- package/src/__tests__/conversation-load-history-repair.test.ts +1 -1
- package/src/__tests__/conversation-pairing.test.ts +2 -2
- package/src/__tests__/conversation-process-callsite.test.ts +1 -1
- package/src/__tests__/conversation-provider-retry-repair.test.ts +1 -1
- package/src/__tests__/conversation-queue.test.ts +1 -1
- package/src/__tests__/conversation-runtime-assembly.test.ts +264 -81
- package/src/__tests__/conversation-seed-composer.test.ts +66 -4
- package/src/__tests__/conversation-slash-commands.test.ts +36 -8
- package/src/__tests__/conversation-slash-queue.test.ts +1 -1
- package/src/__tests__/conversation-slash-unknown.test.ts +1 -1
- package/src/__tests__/conversation-speed-override.test.ts +1 -1
- package/src/__tests__/conversation-surfaces-task-progress.test.ts +220 -0
- package/src/__tests__/conversation-workspace-cache-state.test.ts +1 -1
- package/src/__tests__/conversation-workspace-injection.test.ts +5 -1
- package/src/__tests__/conversation-workspace-tool-tracking.test.ts +5 -1
- package/src/__tests__/credential-security-invariants.test.ts +6 -0
- package/src/__tests__/cu-unified-flow.test.ts +10 -1
- package/src/__tests__/dm-backfill.test.ts +64 -0
- package/src/__tests__/dm-persistence.test.ts +33 -0
- package/src/__tests__/document-find-replace.test.ts +501 -0
- package/src/__tests__/first-greeting.test.ts +23 -2
- package/src/__tests__/headless-browser-navigate.test.ts +172 -0
- package/src/__tests__/host-bash-proxy.test.ts +6 -0
- package/src/__tests__/host-browser-proxy.test.ts +10 -0
- package/src/__tests__/host-cu-proxy.test.ts +8 -1
- package/src/__tests__/host-file-proxy.test.ts +8 -1
- package/src/__tests__/host-transfer-proxy.test.ts +8 -1
- package/src/__tests__/identity-routes.test.ts +57 -0
- package/src/__tests__/inbound-slack-persistence.test.ts +3 -0
- package/src/__tests__/injector-chain.test.ts +2 -0
- package/src/__tests__/injector-document-comments.test.ts +378 -0
- package/src/__tests__/injector-pkb-v2-silenced.test.ts +4 -25
- package/src/__tests__/list-messages-attachments.test.ts +21 -17
- package/src/__tests__/list-messages-hidden-metadata.test.ts +217 -0
- package/src/__tests__/list-messages-page-latest.test.ts +130 -14
- package/src/__tests__/list-messages-tool-merge.test.ts +17 -16
- package/src/__tests__/llm-context-normalization.test.ts +0 -2
- package/src/__tests__/llm-resolver.test.ts +85 -1
- package/src/__tests__/log-export-routes.test.ts +99 -2
- package/src/__tests__/message-queue-steer.test.ts +114 -0
- package/src/__tests__/openai-provider.test.ts +105 -0
- package/src/__tests__/openai-responses-provider.test.ts +4 -4
- package/src/__tests__/outbound-slack-persistence.test.ts +187 -20
- package/src/__tests__/pending-interactions-resolved-event.test.ts +190 -0
- package/src/__tests__/platform.test.ts +0 -3
- package/src/__tests__/plugin-source-watcher.test.ts +302 -0
- package/src/__tests__/process-message-background-slack.test.ts +1 -51
- package/src/__tests__/process-message-display-content.test.ts +21 -16
- package/src/__tests__/server-history-render.test.ts +83 -4
- package/src/__tests__/steer-tool-repair.test.ts +249 -0
- package/src/__tests__/system-prompt.test.ts +51 -28
- package/src/__tests__/terminal-tools.test.ts +11 -1
- package/src/__tests__/thinking-block-replay.test.ts +113 -0
- package/src/__tests__/thread-backfill.test.ts +370 -22
- package/src/__tests__/tool-executor.test.ts +90 -1
- package/src/__tests__/tool-result-metadata-plumbing.test.ts +167 -0
- package/src/__tests__/twilio-routes.test.ts +1 -1
- package/src/__tests__/web-fetch.test.ts +2 -2
- package/src/__tests__/workspace-git-service.test.ts +88 -5
- package/src/__tests__/workspace-migration-088-deprecate-background-conversation-override.test.ts +158 -0
- package/src/agent/attachments.ts +1 -0
- package/src/agent/loop.ts +57 -20
- package/src/background-wake/next-wake.test.ts +289 -0
- package/src/background-wake/next-wake.ts +172 -0
- package/src/browser/operations.ts +15 -0
- package/src/cli/commands/__tests__/conversations-slack.test.ts +572 -0
- package/src/cli/commands/__tests__/memory-v2.test.ts +9 -12
- package/src/cli/commands/conversations.ts +128 -1
- package/src/cli/commands/inference-providers.ts +147 -1
- package/src/cli/commands/memory-v2.ts +308 -0
- package/src/cli/commands/notifications.ts +24 -2
- package/src/cli/utils/conversation-id.ts +17 -5
- package/src/config/bundled-skills/app-builder/SKILL.md +2 -2
- package/src/config/bundled-skills/document-editor/SKILL.md +115 -0
- package/src/config/bundled-skills/document-editor/TOOLS.json +240 -0
- package/src/config/bundled-skills/document-editor/tools/comment-list.ts +12 -0
- package/src/config/bundled-skills/document-editor/tools/comment-reply.ts +12 -0
- package/src/config/bundled-skills/document-editor/tools/comment-resolve.ts +12 -0
- package/src/config/bundled-skills/document-editor/tools/document-find.ts +12 -0
- package/src/config/bundled-skills/document-editor/tools/document-replace-text.ts +12 -0
- package/src/config/bundled-skills/media-processing/SKILL.md +8 -0
- package/src/config/bundled-skills/schedule/SKILL.md +8 -0
- package/src/config/bundled-tool-registry.ts +22 -12
- package/src/config/call-site-defaults.ts +19 -0
- package/src/config/feature-flag-registry.json +99 -3
- package/src/config/llm-resolver.ts +16 -2
- package/src/config/schemas/__tests__/memory-v2.test.ts +4 -0
- package/src/config/schemas/call-site-catalog.ts +21 -0
- package/src/config/schemas/llm.ts +3 -0
- package/src/config/schemas/memory-v2.ts +48 -1
- package/src/context/compactor.ts +8 -1
- package/src/context/token-estimator.ts +47 -4
- package/src/context/window-manager.ts +25 -0
- package/src/credential-health/credential-health-service.ts +34 -19
- package/src/daemon/__tests__/conversation-tool-setup.test.ts +66 -6
- package/src/daemon/__tests__/native-web-search-metadata.test.ts +357 -0
- package/src/daemon/__tests__/web-search-status-text.test.ts +287 -0
- package/src/daemon/conversation-agent-loop-handlers.ts +153 -23
- package/src/daemon/conversation-agent-loop.ts +223 -54
- package/src/daemon/conversation-lifecycle.ts +142 -116
- package/src/daemon/conversation-messaging.ts +3 -0
- package/src/daemon/conversation-process.ts +273 -0
- package/src/daemon/conversation-queue-manager.ts +14 -0
- package/src/daemon/conversation-runtime-assembly.ts +135 -75
- package/src/daemon/conversation-slash.ts +37 -5
- package/src/daemon/conversation-surfaces.ts +45 -2
- package/src/daemon/conversation-tool-setup.ts +7 -0
- package/src/daemon/conversation.ts +42 -5
- package/src/daemon/first-greeting.ts +10 -0
- package/src/daemon/handlers/__tests__/config-a2a-accept.test.ts +498 -0
- package/src/daemon/handlers/config-a2a.ts +160 -0
- package/src/daemon/handlers/config-model.test.ts +1 -0
- package/src/daemon/handlers/conversations.ts +79 -0
- package/src/daemon/handlers/shared.ts +92 -29
- package/src/daemon/host-bash-proxy.ts +1 -1
- package/src/daemon/host-cu-proxy.ts +1 -1
- package/src/daemon/host-file-proxy.ts +1 -1
- package/src/daemon/host-transfer-proxy.ts +1 -1
- package/src/daemon/lifecycle.ts +18 -4
- package/src/daemon/message-protocol.ts +4 -0
- package/src/daemon/message-types/conversations.ts +8 -0
- package/src/daemon/message-types/document-comments.ts +50 -0
- package/src/daemon/message-types/messages.ts +68 -1
- package/src/daemon/message-types/surfaces.ts +3 -1
- package/src/daemon/message-types/web-activity.ts +57 -0
- package/src/daemon/plugin-source-watcher.ts +135 -3
- package/src/daemon/process-message.ts +69 -12
- package/src/daemon/query-complexity-router.ts +75 -0
- package/src/daemon/trust-context.ts +6 -0
- package/src/documents/document-comments-store.test.ts +338 -0
- package/src/documents/document-comments-store.ts +237 -0
- package/src/documents/document-store.ts +202 -0
- package/src/heartbeat/__tests__/heartbeat-service.test.ts +0 -1
- package/src/heartbeat/heartbeat-service.ts +1 -0
- package/src/home/__tests__/suggested-prompts.test.ts +33 -2
- package/src/home/feed-types.ts +6 -1
- package/src/home/home-content-refresh.ts +52 -0
- package/src/home/home-greeting-cache.ts +69 -0
- package/src/home/home-greeting.ts +94 -0
- package/src/home/suggested-prompts.ts +177 -9
- package/src/memory/__tests__/jobs-worker-v2-schedule.test.ts +135 -2
- package/src/memory/__tests__/memory-retrospective-job.test.ts +320 -6
- package/src/memory/conversation-crud.ts +133 -43
- package/src/memory/db-init.ts +16 -0
- package/src/memory/delivery-crud.ts +41 -0
- package/src/memory/delivery-status.ts +141 -15
- package/src/memory/external-conversation-store.ts +32 -1
- package/src/memory/jobs-worker.ts +21 -1
- package/src/memory/memory-retrospective-constants.ts +28 -0
- package/src/memory/memory-retrospective-enqueue.ts +3 -2
- package/src/memory/memory-retrospective-job.ts +408 -18
- package/src/memory/memory-retrospective-startup-cleanup.ts +3 -3
- package/src/memory/memory-v2-activation-log-store.ts +26 -8
- package/src/memory/migrations/100-core-tables.ts +1 -0
- package/src/memory/migrations/109-external-conversation-bindings.ts +1 -0
- package/src/memory/migrations/253-conversation-last-notified-profile.ts +15 -0
- package/src/memory/migrations/253-document-comments.ts +47 -0
- package/src/memory/migrations/254-external-conversation-binding-chat-name.ts +43 -0
- package/src/memory/migrations/255-channel-inbound-delivery-attempts.ts +24 -0
- package/src/memory/migrations/256-memory-v2-injection-events.ts +113 -0
- package/src/memory/migrations/257-strip-base-url-non-openai-compatible.ts +22 -0
- package/src/memory/migrations/258-onboarding-events-prior-assistants.ts +13 -0
- package/src/memory/migrations/259-conversation-cleaned-at.ts +33 -0
- package/src/memory/migrations/index.ts +17 -0
- package/src/memory/migrations/registry.ts +25 -0
- package/src/memory/onboarding-events-store.ts +7 -0
- package/src/memory/schema/calls.ts +1 -0
- package/src/memory/schema/conversations.ts +3 -0
- package/src/memory/schema/infrastructure.ts +1 -0
- package/src/memory/v2/__tests__/injection-events.test.ts +318 -0
- package/src/memory/v2/__tests__/injection.test.ts +31 -14
- package/src/memory/v2/__tests__/page-index.test.ts +365 -1
- package/src/memory/v2/__tests__/router.test.ts +489 -1
- package/src/memory/v2/consolidation-job.ts +14 -0
- package/src/memory/v2/injection-events.ts +101 -0
- package/src/memory/v2/injection.ts +21 -10
- package/src/memory/v2/page-index.ts +209 -7
- package/src/memory/v2/page-store.ts +18 -0
- package/src/memory/v2/router.ts +209 -55
- package/src/messaging/providers/index.ts +7 -1
- package/src/messaging/providers/slack/__tests__/adapter-mention-rendering.test.ts +329 -3
- package/src/messaging/providers/slack/__tests__/adapter-token-routing.test.ts +34 -1
- package/src/messaging/providers/slack/adapter.ts +178 -25
- package/src/messaging/providers/slack/api.test.ts +54 -0
- package/src/messaging/providers/slack/api.ts +119 -3
- package/src/messaging/providers/slack/client.ts +12 -0
- package/src/messaging/providers/slack/deep-link.ts +20 -1
- package/src/messaging/providers/slack/message-metadata.test.ts +48 -0
- package/src/messaging/providers/slack/message-metadata.ts +156 -0
- package/src/messaging/providers/slack/render-transcript.test.ts +107 -75
- package/src/messaging/providers/slack/render-transcript.ts +176 -49
- package/src/messaging/providers/slack/send.test.ts +77 -0
- package/src/messaging/providers/slack/send.ts +8 -2
- package/src/messaging/providers/slack/types.ts +14 -0
- package/src/notifications/__tests__/emit-signal-home-feed.test.ts +4 -1
- package/src/notifications/__tests__/home-feed-side-effect.test.ts +116 -54
- package/src/notifications/conversation-seed-composer.ts +14 -2
- package/src/notifications/deferred-emit.ts +135 -0
- package/src/notifications/emit-signal.ts +9 -1
- package/src/notifications/home-feed-side-effect.ts +60 -30
- package/src/oauth/connect-orchestrator.ts +3 -0
- package/src/oauth/credential-token-resolver.ts +2 -0
- package/src/oauth/manual-token-connection.ts +19 -0
- package/src/oauth/oauth-store.ts +12 -0
- package/src/oauth/seed-providers.ts +22 -0
- package/src/permissions/prompter.ts +5 -2
- package/src/permissions/secret-prompter.ts +4 -1
- package/src/plugins/defaults/injectors.ts +82 -9
- package/src/prompts/__tests__/system-prompt.test.ts +46 -2
- package/src/prompts/normalize-onboarding.ts +40 -0
- package/src/prompts/sections.ts +32 -14
- package/src/prompts/system-prompt.ts +105 -68
- package/src/prompts/template-detection.ts +37 -0
- package/src/prompts/templates/BOOTSTRAP-CONTENT-AUTOMATION.md +141 -0
- package/src/prompts/templates/BOOTSTRAP.md +8 -0
- package/src/prompts/templates/VOICE.md +3 -0
- package/src/prompts/templates/system-sections.ts +53 -3
- package/src/providers/anthropic/client.ts +132 -5
- package/src/providers/fireworks/client.ts +20 -2
- package/src/providers/inference/__tests__/base-url-route-validation.test.ts +342 -0
- package/src/providers/inference/__tests__/base-url-security.test.ts +189 -0
- package/src/providers/inference/__tests__/codex-token-refresh.test.ts +254 -0
- package/src/providers/inference/adapter-factory.ts +15 -1
- package/src/providers/inference/auth.ts +3 -3
- package/src/providers/inference/codex-token-refresh.ts +128 -0
- package/src/providers/inference/resolve-auth.ts +49 -6
- package/src/providers/model-catalog.ts +48 -1
- package/src/providers/openai/chat-completions-provider.ts +57 -20
- package/src/providers/openai/responses-provider.ts +9 -3
- package/src/providers/openrouter/client.ts +5 -1
- package/src/providers/types.ts +25 -0
- package/src/runtime/__tests__/agent-wake.test.ts +214 -0
- package/src/runtime/__tests__/background-job-runner.test.ts +128 -0
- package/src/runtime/agent-wake.ts +151 -56
- package/src/runtime/auth/route-policy.ts +7 -3
- package/src/runtime/background-job-runner.ts +26 -0
- package/src/runtime/channel-reply-delivery.ts +182 -47
- package/src/runtime/channel-retry-sweep.ts +141 -16
- package/src/runtime/http-types.ts +7 -4
- package/src/runtime/pending-interactions.ts +51 -8
- package/src/runtime/routes/__tests__/content-source-routes.test.ts +162 -0
- package/src/runtime/routes/__tests__/conversation-query-routes.test.ts +55 -1
- package/src/runtime/routes/__tests__/memory-v2-routes.test.ts +14 -0
- package/src/runtime/routes/__tests__/memory-v2-simulate-route.test.ts +271 -0
- package/src/runtime/routes/__tests__/sanity-routes.test.ts +280 -0
- package/src/runtime/routes/__tests__/slack-channel-routes.test.ts +266 -0
- package/src/runtime/routes/approval-routes.ts +4 -1
- package/src/runtime/routes/chatgpt-subscription-auth-routes.ts +246 -0
- package/src/runtime/routes/content-source-routes.ts +78 -0
- package/src/runtime/routes/conversation-cli-routes.ts +146 -1
- package/src/runtime/routes/conversation-query-routes.ts +60 -1
- package/src/runtime/routes/conversation-routes.ts +281 -76
- package/src/runtime/routes/document-comments-routes.ts +287 -0
- package/src/runtime/routes/documents-routes.ts +33 -0
- package/src/runtime/routes/home-feed-routes.ts +6 -3
- package/src/runtime/routes/host-app-control-routes.ts +1 -1
- package/src/runtime/routes/host-browser-routes.ts +8 -1
- package/src/runtime/routes/identity-routes.ts +21 -0
- package/src/runtime/routes/inbound-message-handler.ts +288 -58
- package/src/runtime/routes/inbound-stages/background-dispatch.test.ts +365 -6
- package/src/runtime/routes/inbound-stages/background-dispatch.ts +283 -82
- package/src/runtime/routes/index.ts +12 -4
- package/src/runtime/routes/inference-provider-connection-routes.ts +63 -7
- package/src/runtime/routes/integrations/a2a.ts +60 -1
- package/src/runtime/routes/log-export-routes.ts +39 -0
- package/src/runtime/routes/memory-v2-routes.ts +217 -0
- package/src/runtime/routes/notification-routes.ts +19 -2
- package/src/runtime/routes/question-routes.ts +4 -1
- package/src/runtime/routes/sanity-routes.ts +159 -0
- package/src/runtime/routes/slack-channel-routes.ts +187 -0
- package/src/runtime/services/conversation-serializer.ts +30 -4
- package/src/schedule/integration-status.ts +3 -1
- package/src/security/__tests__/oauth2-device-code.test.ts +479 -0
- package/src/security/oauth2-device-code.ts +307 -0
- package/src/security/oauth2.ts +26 -9
- package/src/security/secure-keys.ts +5 -0
- package/src/skills/catalog-install.ts +6 -2
- package/src/tools/browser/__tests__/pinned-tabs.test.ts +80 -0
- package/src/tools/browser/browser-execution.ts +93 -0
- package/src/tools/browser/cdp-client/__tests__/factory.test.ts +28 -0
- package/src/tools/browser/cdp-client/__tests__/types.test.ts +1 -0
- package/src/tools/browser/cdp-client/cdp-inspect-client.ts +10 -0
- package/src/tools/browser/cdp-client/extension-cdp-client.ts +15 -1
- package/src/tools/browser/cdp-client/factory.ts +87 -3
- package/src/tools/browser/cdp-client/local-cdp-client.ts +9 -0
- package/src/tools/browser/cdp-client/types.ts +36 -0
- package/src/tools/browser/pinned-tabs.ts +90 -0
- package/src/tools/document/document-comment-tool.test.ts +379 -0
- package/src/tools/document/document-comment-tool.ts +156 -0
- package/src/tools/document/document-tool.ts +128 -2
- package/src/tools/network/__tests__/web-fetch-metadata.test.ts +229 -0
- package/src/tools/network/__tests__/web-search-metadata.test.ts +346 -0
- package/src/tools/network/domain-normalize.ts +17 -0
- package/src/tools/network/web-fetch.ts +213 -64
- package/src/tools/network/web-search.ts +191 -66
- package/src/tools/terminal/safe-env.ts +3 -2
- package/src/tools/tool-approval-handler.ts +19 -12
- package/src/tools/types.ts +4 -0
- package/src/tools/ui-surface/definitions.ts +3 -1
- package/src/types/onboarding-context.ts +4 -0
- package/src/util/__tests__/favicon.test.ts +84 -0
- package/src/util/favicon.ts +40 -0
- package/src/util/platform.ts +0 -5
- package/src/workspace/git-service.ts +75 -4
- package/src/workspace/migrations/088-deprecate-background-conversation-override.ts +103 -0
- package/src/workspace/migrations/registry.ts +2 -0
- package/src/config/bundled-skills/document/SKILL.md +0 -54
- package/src/config/bundled-skills/document/TOOLS.json +0 -106
- package/src/daemon/seed-files.ts +0 -18
- package/src/runtime/routes/interface-routes.ts +0 -43
- /package/src/config/bundled-skills/{document → document-editor}/tools/document-create.ts +0 -0
- /package/src/config/bundled-skills/{document → document-editor}/tools/document-delete.ts +0 -0
- /package/src/config/bundled-skills/{document → document-editor}/tools/document-list.ts +0 -0
- /package/src/config/bundled-skills/{document → document-editor}/tools/document-read.ts +0 -0
- /package/src/config/bundled-skills/{document → document-editor}/tools/document-update.ts +0 -0
|
@@ -3,12 +3,11 @@
|
|
|
3
3
|
* 1. Explicit value provided in `opts.explicit`
|
|
4
4
|
* 2. `__SKILL_CONTEXT_JSON` env var (set by skill sandbox runner)
|
|
5
5
|
* 3. `__CONVERSATION_ID` env var (set by bash tool subprocess)
|
|
6
|
-
* 4.
|
|
6
|
+
* 4. `undefined`
|
|
7
7
|
*/
|
|
8
|
-
export function
|
|
9
|
-
explicit?: string
|
|
10
|
-
|
|
11
|
-
}): string {
|
|
8
|
+
export function tryResolveConversationId(
|
|
9
|
+
opts: { explicit?: string } = {},
|
|
10
|
+
): string | undefined {
|
|
12
11
|
if (opts.explicit) return opts.explicit;
|
|
13
12
|
|
|
14
13
|
const contextJson = process.env.__SKILL_CONTEXT_JSON;
|
|
@@ -26,5 +25,18 @@ export function resolveConversationId(opts: {
|
|
|
26
25
|
const envConvId = process.env.__CONVERSATION_ID;
|
|
27
26
|
if (envConvId && typeof envConvId === "string") return envConvId;
|
|
28
27
|
|
|
28
|
+
return undefined;
|
|
29
|
+
}
|
|
30
|
+
|
|
31
|
+
/**
|
|
32
|
+
* Same precedence as `tryResolveConversationId` but throws with the
|
|
33
|
+
* provided `failureHelp` when no source produces a value.
|
|
34
|
+
*/
|
|
35
|
+
export function resolveConversationId(opts: {
|
|
36
|
+
explicit?: string;
|
|
37
|
+
failureHelp: string;
|
|
38
|
+
}): string {
|
|
39
|
+
const resolved = tryResolveConversationId({ explicit: opts.explicit });
|
|
40
|
+
if (resolved) return resolved;
|
|
29
41
|
throw new Error(opts.failureHelp);
|
|
30
42
|
}
|
|
@@ -127,10 +127,10 @@ App building is design-heavy judgment work — color palettes, layout decisions,
|
|
|
127
127
|
assistant inference session list
|
|
128
128
|
```
|
|
129
129
|
|
|
130
|
-
If no session is active, check the current
|
|
130
|
+
If no session is active, check the current active profile:
|
|
131
131
|
|
|
132
132
|
```
|
|
133
|
-
assistant config get llm.
|
|
133
|
+
assistant config get llm.activeProfile
|
|
134
134
|
```
|
|
135
135
|
|
|
136
136
|
If the profile is already `quality-optimized`, skip the rest of this step and proceed to Step 1.
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
---
|
|
2
|
+
name: document-editor
|
|
3
|
+
description: Rich text document editor with collaborative editing tools — create, read, update, and annotate documents
|
|
4
|
+
compatibility: "Designed for Vellum personal assistants"
|
|
5
|
+
metadata:
|
|
6
|
+
emoji: "📄"
|
|
7
|
+
vellum:
|
|
8
|
+
display-name: "Document Editor"
|
|
9
|
+
activation-hints:
|
|
10
|
+
- "User asks to write, draft, or collaborate on long-form content — use the document editor for a better editing experience"
|
|
11
|
+
- "When content will be iterated on, reviewed, or exported, prefer the document editor over inline markdown"
|
|
12
|
+
- "When a file attachment contains a draft or document the user wants to iterate on, open it in the editor"
|
|
13
|
+
---
|
|
14
|
+
|
|
15
|
+
Create and edit long-form documents using the built-in rich text editor. Documents open in workspace mode with chat docked to the side.
|
|
16
|
+
|
|
17
|
+
## Tools
|
|
18
|
+
|
|
19
|
+
- **document_create** - Opens a new document editor with an optional title and initial Markdown content. Returns a `surface_id` for subsequent updates.
|
|
20
|
+
- **document_update** - Updates content in an open document editor by `surface_id`. Supports `replace` (overwrite) and `append` (add to end) modes.
|
|
21
|
+
- **document_read** - Reads the current content of a document by `surface_id` when it belongs to the current conversation, or when the current actor is the guardian/local user. Use to verify content before editing.
|
|
22
|
+
- **document_list** - Lists documents. Without `query`, lists the current conversation's documents. With `query`, searches by title; guardian/local users can search across conversations, while other actors are scoped to the current conversation.
|
|
23
|
+
- **document_find** - Searches a document for text or regex patterns. Returns matching lines with line numbers, match positions, and matched text.
|
|
24
|
+
- **document_replace_text** - Targeted find-and-replace within a document. Supports literal and regex patterns (with backreferences). Optionally limit the number of replacements.
|
|
25
|
+
- **document_delete** - Deletes a document by `surface_id`. Use to clean up unwanted documents.
|
|
26
|
+
|
|
27
|
+
## Retrieving existing documents
|
|
28
|
+
|
|
29
|
+
When the user asks to see, open, or pull up a document:
|
|
30
|
+
|
|
31
|
+
1. Check the `<active_documents>` block in your context — it lists all documents in this conversation with their `surface_id` and title. If the document is there, call `document_read` with its `surface_id`. Done in one call.
|
|
32
|
+
2. If the document is NOT in `<active_documents>`, call `document_list` with a `query` matching the document title. For guardian/local users, this searches across previous conversations and sessions.
|
|
33
|
+
3. Once you have the `surface_id`, call `document_read` to retrieve the content.
|
|
34
|
+
|
|
35
|
+
**Never** search the filesystem, conversation history, or archives to find a document. Always use `document_list` with a `query`.
|
|
36
|
+
|
|
37
|
+
## Creating a new document
|
|
38
|
+
|
|
39
|
+
1. **Create the document**: Call `document_create` with a title (inferred from the request). Call the tool immediately, not after conversational preamble.
|
|
40
|
+
2. **Write content in Markdown**: Use proper structure (`#` for titles, `##` for sections), **bold**, _italic_, code blocks, tables, lists, blockquotes as appropriate.
|
|
41
|
+
3. **CRITICAL - Stream content in chunks**: Call `document_update` MULTIPLE times, not just once. Break content into logical chunks (paragraphs, sections, or every 200-300 words). Call `document_update` with `mode: "append"` for EACH chunk separately. The user experiences real-time content appearing as you write.
|
|
42
|
+
|
|
43
|
+
## Editing an existing document
|
|
44
|
+
|
|
45
|
+
When the user requests changes to a document:
|
|
46
|
+
|
|
47
|
+
1. Find the `surface_id` from the `<active_documents>` context block.
|
|
48
|
+
2. Use `document_update` with the existing `surface_id` — do NOT call `document_create` again.
|
|
49
|
+
3. **Choose the right editing tool:**
|
|
50
|
+
- `document_update` with `mode: "append"` — adding new content to the end.
|
|
51
|
+
- `document_update` with `mode: "replace"` — ONLY for full rewrites where the majority of the document is changing.
|
|
52
|
+
- `document_find` + `document_replace_text` — **for everything else**. Fixing typos, renaming terms, swapping sections, reordering content, adjusting formatting, or any edit that touches only part of the document. This is the default choice for edits. It avoids rewriting the entire document and eliminates the risk of accidentally dropping content.
|
|
53
|
+
4. **Do NOT use `document_update` with `mode: "replace"` for targeted edits.** Rewriting the entire document to change a few words or rearrange sections is wasteful and error-prone.
|
|
54
|
+
|
|
55
|
+
## Find & Replace
|
|
56
|
+
|
|
57
|
+
Use `document_find` and `document_replace_text` for surgical edits that target specific text patterns without rewriting the entire document.
|
|
58
|
+
|
|
59
|
+
### document_find
|
|
60
|
+
|
|
61
|
+
Search a document for literal text or regex patterns. Parameters:
|
|
62
|
+
|
|
63
|
+
- `surface_id` (required) — the document to search
|
|
64
|
+
- `query` (required) — the search string or regex pattern
|
|
65
|
+
- `regex` (optional, default `false`) — treat `query` as a regular expression
|
|
66
|
+
- `case_sensitive` (optional, default `false`) — match case exactly
|
|
67
|
+
|
|
68
|
+
Returns a list of matches with line numbers, line content, match positions, and matched text. Use this to preview what will be affected before making replacements.
|
|
69
|
+
|
|
70
|
+
### document_replace_text
|
|
71
|
+
|
|
72
|
+
Targeted find-and-replace within a document. Parameters:
|
|
73
|
+
|
|
74
|
+
- `surface_id` (required) — the document to modify
|
|
75
|
+
- `find` (required) — the search string or regex pattern
|
|
76
|
+
- `replace` (required) — the replacement string (supports `$1`, `$2` backreferences when `regex` is `true`)
|
|
77
|
+
- `regex` (optional, default `false`) — treat `find` as a regular expression
|
|
78
|
+
- `case_sensitive` (optional, default `false`) — match case exactly
|
|
79
|
+
- `max_replacements` (optional) — limit the number of replacements made
|
|
80
|
+
|
|
81
|
+
Returns the number of replacements made and whether the content changed.
|
|
82
|
+
|
|
83
|
+
### Workflow
|
|
84
|
+
|
|
85
|
+
1. Call `document_find` to preview matches and confirm the pattern is correct.
|
|
86
|
+
2. Call `document_replace_text` to apply the changes.
|
|
87
|
+
|
|
88
|
+
**Examples:**
|
|
89
|
+
|
|
90
|
+
- **Fix a recurring typo**: Find `"recieve"`, replace with `"receive"`.
|
|
91
|
+
- **Rename a term throughout**: Find `"widget"` (case-insensitive), replace with `"component"`.
|
|
92
|
+
- **Reformat dates with regex**: Find `(\d{2})/(\d{2})/(\d{4})` with `regex: true`, replace with `$3-$1-$2` to convert `MM/DD/YYYY` to `YYYY-MM-DD`.
|
|
93
|
+
- **Swap or reorder sections**: Use `document_read` to get the content, identify the sections to swap, then call `document_replace_text` to replace the first section with the second and vice versa. For complex rearrangements, use multiple `document_replace_text` calls with `max_replacements: 1`.
|
|
94
|
+
|
|
95
|
+
## Comments
|
|
96
|
+
|
|
97
|
+
Users can leave inline comments on documents. Open comments are surfaced in a `<document_comments>` context block so you can see pending feedback.
|
|
98
|
+
|
|
99
|
+
- **comment_list** — Lists open comments on a document by `surface_id`. Use this to check for feedback before or after editing, especially when the user asks you to address comments.
|
|
100
|
+
- **comment_resolve** — Marks a comment as resolved by `comment_id`. Use this after you have addressed the feedback in the document content. Always edit the document first, then resolve the comment.
|
|
101
|
+
- **comment_reply** — Posts a reply to an existing comment by `comment_id`. Use this to ask clarifying questions or explain why you made (or declined) a change before resolving.
|
|
102
|
+
|
|
103
|
+
### Addressing comments workflow
|
|
104
|
+
|
|
105
|
+
1. Read the `<document_comments>` block or call `comment_list` to see open comments.
|
|
106
|
+
2. For each comment, edit the document to address the feedback.
|
|
107
|
+
3. Call `comment_resolve` on comments you have addressed.
|
|
108
|
+
4. If a comment is ambiguous, call `comment_reply` to ask for clarification instead of guessing.
|
|
109
|
+
|
|
110
|
+
## Usage Notes
|
|
111
|
+
|
|
112
|
+
- The `mode` parameter on `document_update` defaults to `append`.
|
|
113
|
+
- Documents are automatically saved and accessible via the Generated panel.
|
|
114
|
+
- Users can manually edit documents at any time.
|
|
115
|
+
- Write in clear, engaging prose. Use active voice, vary sentence structure, and break content into logical sections with descriptive headings.
|
|
@@ -0,0 +1,240 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 1,
|
|
3
|
+
"tools": [
|
|
4
|
+
{
|
|
5
|
+
"name": "document_create",
|
|
6
|
+
"description": "Create a new long-form document with a rich text editor. Use this when the user asks to write a blog post, article, or any long-form content. The editor opens in workspace mode with chat docked to the side.",
|
|
7
|
+
"category": "document-editor",
|
|
8
|
+
"risk": "low",
|
|
9
|
+
"input_schema": {
|
|
10
|
+
"type": "object",
|
|
11
|
+
"properties": {
|
|
12
|
+
"title": {
|
|
13
|
+
"type": "string",
|
|
14
|
+
"description": "Initial title for the document (optional, can be updated later)"
|
|
15
|
+
},
|
|
16
|
+
"initial_content": {
|
|
17
|
+
"type": "string",
|
|
18
|
+
"description": "Initial Markdown content to populate the editor (optional)"
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
},
|
|
22
|
+
"executor": "tools/document-create.ts",
|
|
23
|
+
"execution_target": "host"
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
"name": "document_update",
|
|
27
|
+
"description": "Update content in an open document editor. Use this to stream generated content or apply edits.",
|
|
28
|
+
"category": "document-editor",
|
|
29
|
+
"risk": "low",
|
|
30
|
+
"input_schema": {
|
|
31
|
+
"type": "object",
|
|
32
|
+
"properties": {
|
|
33
|
+
"surface_id": {
|
|
34
|
+
"type": "string",
|
|
35
|
+
"description": "The ID of the document surface to update"
|
|
36
|
+
},
|
|
37
|
+
"content": {
|
|
38
|
+
"type": "string",
|
|
39
|
+
"description": "Markdown content to set or append"
|
|
40
|
+
},
|
|
41
|
+
"mode": {
|
|
42
|
+
"type": "string",
|
|
43
|
+
"enum": ["replace", "append"],
|
|
44
|
+
"description": "Whether to replace all content or append to the end. Defaults to append."
|
|
45
|
+
}
|
|
46
|
+
},
|
|
47
|
+
"required": ["surface_id", "content"]
|
|
48
|
+
},
|
|
49
|
+
"executor": "tools/document-update.ts",
|
|
50
|
+
"execution_target": "host"
|
|
51
|
+
},
|
|
52
|
+
{
|
|
53
|
+
"name": "document_read",
|
|
54
|
+
"description": "Read the current content of a document by its surface_id when it belongs to the current conversation, or when the current actor is the guardian/local user. Use this to verify document state before making edits.",
|
|
55
|
+
"category": "document-editor",
|
|
56
|
+
"risk": "low",
|
|
57
|
+
"input_schema": {
|
|
58
|
+
"type": "object",
|
|
59
|
+
"properties": {
|
|
60
|
+
"surface_id": {
|
|
61
|
+
"type": "string",
|
|
62
|
+
"description": "The ID of the document to read"
|
|
63
|
+
}
|
|
64
|
+
},
|
|
65
|
+
"required": ["surface_id"]
|
|
66
|
+
},
|
|
67
|
+
"executor": "tools/document-read.ts",
|
|
68
|
+
"execution_target": "host"
|
|
69
|
+
},
|
|
70
|
+
{
|
|
71
|
+
"name": "document_list",
|
|
72
|
+
"description": "List documents. Without a query, lists documents in the current conversation. With a query, searches documents by title; guardian/local users can search across conversations, while other actors are scoped to the current conversation.",
|
|
73
|
+
"category": "document-editor",
|
|
74
|
+
"risk": "low",
|
|
75
|
+
"input_schema": {
|
|
76
|
+
"type": "object",
|
|
77
|
+
"properties": {
|
|
78
|
+
"query": {
|
|
79
|
+
"type": "string",
|
|
80
|
+
"description": "Search documents by title. Omit to list only the current conversation's documents."
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
},
|
|
84
|
+
"executor": "tools/document-list.ts",
|
|
85
|
+
"execution_target": "host"
|
|
86
|
+
},
|
|
87
|
+
{
|
|
88
|
+
"name": "document_delete",
|
|
89
|
+
"description": "Delete a document by its surface_id.",
|
|
90
|
+
"category": "document-editor",
|
|
91
|
+
"risk": "low",
|
|
92
|
+
"input_schema": {
|
|
93
|
+
"type": "object",
|
|
94
|
+
"properties": {
|
|
95
|
+
"surface_id": {
|
|
96
|
+
"type": "string",
|
|
97
|
+
"description": "The ID of the document to delete"
|
|
98
|
+
}
|
|
99
|
+
},
|
|
100
|
+
"required": ["surface_id"]
|
|
101
|
+
},
|
|
102
|
+
"executor": "tools/document-delete.ts",
|
|
103
|
+
"execution_target": "host"
|
|
104
|
+
},
|
|
105
|
+
{
|
|
106
|
+
"name": "document_find",
|
|
107
|
+
"description": "Search for text or a regex pattern within a document. Returns matching lines with line numbers and context — like grep. Use this to locate specific content before making targeted edits with document_replace_text.",
|
|
108
|
+
"category": "document-editor",
|
|
109
|
+
"risk": "low",
|
|
110
|
+
"input_schema": {
|
|
111
|
+
"type": "object",
|
|
112
|
+
"properties": {
|
|
113
|
+
"surface_id": {
|
|
114
|
+
"type": "string",
|
|
115
|
+
"description": "The document surface ID"
|
|
116
|
+
},
|
|
117
|
+
"query": {
|
|
118
|
+
"type": "string",
|
|
119
|
+
"description": "Text or regex pattern to search for"
|
|
120
|
+
},
|
|
121
|
+
"regex": {
|
|
122
|
+
"type": "boolean",
|
|
123
|
+
"description": "Treat query as a regex pattern. Defaults to false (literal match)."
|
|
124
|
+
},
|
|
125
|
+
"case_sensitive": {
|
|
126
|
+
"type": "boolean",
|
|
127
|
+
"description": "Match case-sensitively. Defaults to false."
|
|
128
|
+
}
|
|
129
|
+
},
|
|
130
|
+
"required": ["surface_id", "query"]
|
|
131
|
+
},
|
|
132
|
+
"executor": "tools/document-find.ts",
|
|
133
|
+
"execution_target": "host"
|
|
134
|
+
},
|
|
135
|
+
{
|
|
136
|
+
"name": "document_replace_text",
|
|
137
|
+
"description": "Find and replace text within a document — like sed. Performs targeted replacements without rewriting the entire document. Supports literal text and regex patterns. Use document_find first to preview what will be matched.",
|
|
138
|
+
"category": "document-editor",
|
|
139
|
+
"risk": "low",
|
|
140
|
+
"input_schema": {
|
|
141
|
+
"type": "object",
|
|
142
|
+
"properties": {
|
|
143
|
+
"surface_id": {
|
|
144
|
+
"type": "string",
|
|
145
|
+
"description": "The document surface ID"
|
|
146
|
+
},
|
|
147
|
+
"find": {
|
|
148
|
+
"type": "string",
|
|
149
|
+
"description": "Text or regex pattern to find"
|
|
150
|
+
},
|
|
151
|
+
"replace": {
|
|
152
|
+
"type": "string",
|
|
153
|
+
"description": "Replacement text. When using regex, supports backreferences ($1, $2, etc.)."
|
|
154
|
+
},
|
|
155
|
+
"regex": {
|
|
156
|
+
"type": "boolean",
|
|
157
|
+
"description": "Treat find as a regex pattern. Defaults to false (literal match)."
|
|
158
|
+
},
|
|
159
|
+
"case_sensitive": {
|
|
160
|
+
"type": "boolean",
|
|
161
|
+
"description": "Match case-sensitively. Defaults to false."
|
|
162
|
+
},
|
|
163
|
+
"max_replacements": {
|
|
164
|
+
"type": "number",
|
|
165
|
+
"description": "Maximum number of replacements to make. Omit to replace all occurrences."
|
|
166
|
+
}
|
|
167
|
+
},
|
|
168
|
+
"required": ["surface_id", "find", "replace"]
|
|
169
|
+
},
|
|
170
|
+
"executor": "tools/document-replace-text.ts",
|
|
171
|
+
"execution_target": "host"
|
|
172
|
+
},
|
|
173
|
+
{
|
|
174
|
+
"name": "comment_list",
|
|
175
|
+
"description": "List open comments on a document. Returns all unresolved comments with their content, anchor text, and thread context so you can address user feedback.",
|
|
176
|
+
"category": "document-editor",
|
|
177
|
+
"risk": "low",
|
|
178
|
+
"input_schema": {
|
|
179
|
+
"type": "object",
|
|
180
|
+
"properties": {
|
|
181
|
+
"surface_id": {
|
|
182
|
+
"type": "string",
|
|
183
|
+
"description": "The document surface ID"
|
|
184
|
+
}
|
|
185
|
+
},
|
|
186
|
+
"required": ["surface_id"]
|
|
187
|
+
},
|
|
188
|
+
"executor": "tools/comment-list.ts",
|
|
189
|
+
"execution_target": "host"
|
|
190
|
+
},
|
|
191
|
+
{
|
|
192
|
+
"name": "comment_resolve",
|
|
193
|
+
"description": "Mark a comment as resolved after you have addressed the feedback. Use this after editing the document to satisfy the comment.",
|
|
194
|
+
"category": "document-editor",
|
|
195
|
+
"risk": "low",
|
|
196
|
+
"input_schema": {
|
|
197
|
+
"type": "object",
|
|
198
|
+
"properties": {
|
|
199
|
+
"surface_id": {
|
|
200
|
+
"type": "string",
|
|
201
|
+
"description": "The document surface ID"
|
|
202
|
+
},
|
|
203
|
+
"comment_id": {
|
|
204
|
+
"type": "string",
|
|
205
|
+
"description": "The comment ID to resolve"
|
|
206
|
+
}
|
|
207
|
+
},
|
|
208
|
+
"required": ["surface_id", "comment_id"]
|
|
209
|
+
},
|
|
210
|
+
"executor": "tools/comment-resolve.ts",
|
|
211
|
+
"execution_target": "host"
|
|
212
|
+
},
|
|
213
|
+
{
|
|
214
|
+
"name": "comment_reply",
|
|
215
|
+
"description": "Reply to a comment thread. Use this to ask clarifying questions or explain your approach before or after making changes.",
|
|
216
|
+
"category": "document-editor",
|
|
217
|
+
"risk": "low",
|
|
218
|
+
"input_schema": {
|
|
219
|
+
"type": "object",
|
|
220
|
+
"properties": {
|
|
221
|
+
"surface_id": {
|
|
222
|
+
"type": "string",
|
|
223
|
+
"description": "The document surface ID"
|
|
224
|
+
},
|
|
225
|
+
"comment_id": {
|
|
226
|
+
"type": "string",
|
|
227
|
+
"description": "The parent comment ID to reply to"
|
|
228
|
+
},
|
|
229
|
+
"content": {
|
|
230
|
+
"type": "string",
|
|
231
|
+
"description": "Reply text"
|
|
232
|
+
}
|
|
233
|
+
},
|
|
234
|
+
"required": ["surface_id", "comment_id", "content"]
|
|
235
|
+
},
|
|
236
|
+
"executor": "tools/comment-reply.ts",
|
|
237
|
+
"execution_target": "host"
|
|
238
|
+
}
|
|
239
|
+
]
|
|
240
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { executeCommentList } from "../../../../tools/document/document-comment-tool.js";
|
|
2
|
+
import type {
|
|
3
|
+
ToolContext,
|
|
4
|
+
ToolExecutionResult,
|
|
5
|
+
} from "../../../../tools/types.js";
|
|
6
|
+
|
|
7
|
+
export async function run(
|
|
8
|
+
input: Record<string, unknown>,
|
|
9
|
+
context: ToolContext,
|
|
10
|
+
): Promise<ToolExecutionResult> {
|
|
11
|
+
return executeCommentList(input, context);
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { executeCommentReply } from "../../../../tools/document/document-comment-tool.js";
|
|
2
|
+
import type {
|
|
3
|
+
ToolContext,
|
|
4
|
+
ToolExecutionResult,
|
|
5
|
+
} from "../../../../tools/types.js";
|
|
6
|
+
|
|
7
|
+
export async function run(
|
|
8
|
+
input: Record<string, unknown>,
|
|
9
|
+
context: ToolContext,
|
|
10
|
+
): Promise<ToolExecutionResult> {
|
|
11
|
+
return executeCommentReply(input, context);
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { executeCommentResolve } from "../../../../tools/document/document-comment-tool.js";
|
|
2
|
+
import type {
|
|
3
|
+
ToolContext,
|
|
4
|
+
ToolExecutionResult,
|
|
5
|
+
} from "../../../../tools/types.js";
|
|
6
|
+
|
|
7
|
+
export async function run(
|
|
8
|
+
input: Record<string, unknown>,
|
|
9
|
+
context: ToolContext,
|
|
10
|
+
): Promise<ToolExecutionResult> {
|
|
11
|
+
return executeCommentResolve(input, context);
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { executeDocumentFind } from "../../../../tools/document/document-tool.js";
|
|
2
|
+
import type {
|
|
3
|
+
ToolContext,
|
|
4
|
+
ToolExecutionResult,
|
|
5
|
+
} from "../../../../tools/types.js";
|
|
6
|
+
|
|
7
|
+
export async function run(
|
|
8
|
+
input: Record<string, unknown>,
|
|
9
|
+
context: ToolContext,
|
|
10
|
+
): Promise<ToolExecutionResult> {
|
|
11
|
+
return executeDocumentFind(input, context);
|
|
12
|
+
}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { executeDocumentReplaceText } from "../../../../tools/document/document-tool.js";
|
|
2
|
+
import type {
|
|
3
|
+
ToolContext,
|
|
4
|
+
ToolExecutionResult,
|
|
5
|
+
} from "../../../../tools/types.js";
|
|
6
|
+
|
|
7
|
+
export async function run(
|
|
8
|
+
input: Record<string, unknown>,
|
|
9
|
+
context: ToolContext,
|
|
10
|
+
): Promise<ToolExecutionResult> {
|
|
11
|
+
return executeDocumentReplaceText(input, context);
|
|
12
|
+
}
|
|
@@ -6,6 +6,14 @@ metadata:
|
|
|
6
6
|
emoji: "🎬"
|
|
7
7
|
vellum:
|
|
8
8
|
display-name: "Media Processing"
|
|
9
|
+
activation-hints:
|
|
10
|
+
- "User wants to ingest, process, or analyze a local video, audio, or image file"
|
|
11
|
+
- "User wants to ask natural-language questions about a video's content (e.g. 'what happens at 3:14', 'find all the goals', 'who appears in this footage')"
|
|
12
|
+
- "User wants to extract a clip or short segment from a video"
|
|
13
|
+
- "User wants to run keyframe extraction, segmentation, or frame-by-frame analysis on a video"
|
|
14
|
+
avoid-when:
|
|
15
|
+
- "User only wants a plain audio transcript — use the transcribe skill instead"
|
|
16
|
+
- "User just wants to play or open a media file in their default system player — that does not need this pipeline"
|
|
9
17
|
---
|
|
10
18
|
|
|
11
19
|
Ingest and track processing of media files (video, audio, images) through a configurable 3-phase pipeline.
|
|
@@ -6,6 +6,14 @@ metadata:
|
|
|
6
6
|
emoji: "📅"
|
|
7
7
|
vellum:
|
|
8
8
|
display-name: "Schedule"
|
|
9
|
+
activation-hints:
|
|
10
|
+
- "User wants to set a reminder for a future time (e.g. 'remind me at 9am tomorrow', 'remind me to take meds at 8pm')"
|
|
11
|
+
- "User wants to schedule a recurring task or automation (e.g. 'every weekday at 9am', 'every Monday at noon')"
|
|
12
|
+
- "User wants to schedule a one-time future action the assistant should run autonomously (e.g. 'at 5pm check my email and summarize it')"
|
|
13
|
+
- "User wants to list, update, cancel, or inspect existing scheduled tasks or reminders"
|
|
14
|
+
avoid-when:
|
|
15
|
+
- "User wants to add something to their task list or queue — use task-list tools instead"
|
|
16
|
+
- "User wants to act immediately or run a quick command that completes within the conversation — schedule is only for deferred or recurring execution"
|
|
9
17
|
---
|
|
10
18
|
|
|
11
19
|
Manage scheduled automations. Schedules can be **recurring** (cron or RRULE expression) or **one-shot** (a single `fire_at` timestamp). Schedules support three modes: **execute** (run a message through the assistant), **notify** (send a notification to the user), and **script** (run a shell command directly without LLM involvement).
|
|
@@ -50,12 +50,17 @@ import * as computerUseWait from "./bundled-skills/computer-use/tools/computer-u
|
|
|
50
50
|
import * as contactMerge from "./bundled-skills/contacts/tools/contact-merge.js";
|
|
51
51
|
import * as contactSearch from "./bundled-skills/contacts/tools/contact-search.js";
|
|
52
52
|
import * as googleContacts from "./bundled-skills/contacts/tools/google-contacts.js";
|
|
53
|
-
// ── document
|
|
54
|
-
import * as
|
|
55
|
-
import * as
|
|
56
|
-
import * as
|
|
57
|
-
import * as
|
|
58
|
-
import * as
|
|
53
|
+
// ── document-editor ────────────────────────────────────────────────────────────
|
|
54
|
+
import * as commentList from "./bundled-skills/document-editor/tools/comment-list.js";
|
|
55
|
+
import * as commentReply from "./bundled-skills/document-editor/tools/comment-reply.js";
|
|
56
|
+
import * as commentResolve from "./bundled-skills/document-editor/tools/comment-resolve.js";
|
|
57
|
+
import * as documentCreate from "./bundled-skills/document-editor/tools/document-create.js";
|
|
58
|
+
import * as documentDelete from "./bundled-skills/document-editor/tools/document-delete.js";
|
|
59
|
+
import * as documentFind from "./bundled-skills/document-editor/tools/document-find.js";
|
|
60
|
+
import * as documentList from "./bundled-skills/document-editor/tools/document-list.js";
|
|
61
|
+
import * as documentRead from "./bundled-skills/document-editor/tools/document-read.js";
|
|
62
|
+
import * as documentReplaceText from "./bundled-skills/document-editor/tools/document-replace-text.js";
|
|
63
|
+
import * as documentUpdate from "./bundled-skills/document-editor/tools/document-update.js";
|
|
59
64
|
// ── followups ──────────────────────────────────────────────────────────────────
|
|
60
65
|
import * as followupCreate from "./bundled-skills/followups/tools/followup-create.js";
|
|
61
66
|
import * as followupList from "./bundled-skills/followups/tools/followup-list.js";
|
|
@@ -169,12 +174,17 @@ export const bundledToolRegistry = new Map<string, SkillToolScript>([
|
|
|
169
174
|
["contacts:tools/contact-merge.ts", contactMerge],
|
|
170
175
|
["contacts:tools/google-contacts.ts", googleContacts],
|
|
171
176
|
|
|
172
|
-
// document
|
|
173
|
-
["document:tools/document-create.ts", documentCreate],
|
|
174
|
-
["document:tools/document-
|
|
175
|
-
["document:tools/document-
|
|
176
|
-
["document:tools/document-
|
|
177
|
-
["document:tools/document-
|
|
177
|
+
// document-editor
|
|
178
|
+
["document-editor:tools/document-create.ts", documentCreate],
|
|
179
|
+
["document-editor:tools/document-update.ts", documentUpdate],
|
|
180
|
+
["document-editor:tools/document-read.ts", documentRead],
|
|
181
|
+
["document-editor:tools/document-list.ts", documentList],
|
|
182
|
+
["document-editor:tools/document-delete.ts", documentDelete],
|
|
183
|
+
["document-editor:tools/document-find.ts", documentFind],
|
|
184
|
+
["document-editor:tools/document-replace-text.ts", documentReplaceText],
|
|
185
|
+
["document-editor:tools/comment-list.ts", commentList],
|
|
186
|
+
["document-editor:tools/comment-resolve.ts", commentResolve],
|
|
187
|
+
["document-editor:tools/comment-reply.ts", commentReply],
|
|
178
188
|
|
|
179
189
|
// followups
|
|
180
190
|
["followups:tools/followup-create.ts", followupCreate],
|
|
@@ -102,4 +102,23 @@ export const CALL_SITE_DEFAULTS: Record<LLMCallSite, CallSiteDefaultConfig> = {
|
|
|
102
102
|
effort: "low",
|
|
103
103
|
thinking: { enabled: false },
|
|
104
104
|
},
|
|
105
|
+
homeGreeting: {
|
|
106
|
+
profile: "cost-optimized",
|
|
107
|
+
maxTokens: 60,
|
|
108
|
+
effort: "low",
|
|
109
|
+
thinking: { enabled: false },
|
|
110
|
+
temperature: 0.7,
|
|
111
|
+
},
|
|
112
|
+
homeSuggestedPrompts: {
|
|
113
|
+
profile: "cost-optimized",
|
|
114
|
+
maxTokens: 512,
|
|
115
|
+
effort: "low",
|
|
116
|
+
thinking: { enabled: false },
|
|
117
|
+
},
|
|
118
|
+
queryComplexityRouter: {
|
|
119
|
+
profile: "cost-optimized",
|
|
120
|
+
maxTokens: 16,
|
|
121
|
+
effort: "low",
|
|
122
|
+
thinking: { enabled: false },
|
|
123
|
+
},
|
|
105
124
|
};
|