@agent-native/core 0.7.4 → 0.7.7
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +6 -5
- package/dist/agent/engine/anthropic-engine.d.ts.map +1 -1
- package/dist/agent/engine/anthropic-engine.js +8 -4
- package/dist/agent/engine/anthropic-engine.js.map +1 -1
- package/dist/agent/engine/types.d.ts +1 -1
- package/dist/agent/engine/types.d.ts.map +1 -1
- package/dist/agent/production-agent.d.ts +7 -0
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +153 -118
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/agent/run-manager.d.ts +4 -0
- package/dist/agent/run-manager.d.ts.map +1 -1
- package/dist/agent/run-manager.js +46 -25
- package/dist/agent/run-manager.js.map +1 -1
- package/dist/agent/run-store.d.ts +12 -3
- package/dist/agent/run-store.d.ts.map +1 -1
- package/dist/agent/run-store.js +25 -4
- package/dist/agent/run-store.js.map +1 -1
- package/dist/chat-threads/store.d.ts +13 -0
- package/dist/chat-threads/store.d.ts.map +1 -1
- package/dist/chat-threads/store.js +66 -10
- package/dist/chat-threads/store.js.map +1 -1
- package/dist/cli/create.d.ts.map +1 -1
- package/dist/cli/create.js +8 -1
- package/dist/cli/create.js.map +1 -1
- package/dist/cli/index.js +8 -0
- package/dist/cli/index.js.map +1 -1
- package/dist/cli/info.d.ts +2 -0
- package/dist/cli/info.d.ts.map +1 -0
- package/dist/cli/info.js +103 -0
- package/dist/cli/info.js.map +1 -0
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +249 -85
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/agent-chat-adapter.d.ts.map +1 -1
- package/dist/client/agent-chat-adapter.js +12 -1
- package/dist/client/agent-chat-adapter.js.map +1 -1
- package/dist/client/composer/TiptapComposer.d.ts +3 -1
- package/dist/client/composer/TiptapComposer.d.ts.map +1 -1
- package/dist/client/composer/TiptapComposer.js +46 -2
- package/dist/client/composer/TiptapComposer.js.map +1 -1
- package/dist/client/composer/VoiceButton.d.ts +21 -0
- package/dist/client/composer/VoiceButton.d.ts.map +1 -0
- package/dist/client/composer/VoiceButton.js +51 -0
- package/dist/client/composer/VoiceButton.js.map +1 -0
- package/dist/client/composer/useVoiceDictation.d.ts +38 -0
- package/dist/client/composer/useVoiceDictation.d.ts.map +1 -0
- package/dist/client/composer/useVoiceDictation.js +398 -0
- package/dist/client/composer/useVoiceDictation.js.map +1 -0
- package/dist/client/onboarding/OnboardingPanel.js +2 -2
- package/dist/client/onboarding/OnboardingPanel.js.map +1 -1
- package/dist/client/org/OrgSwitcher.d.ts +5 -4
- package/dist/client/org/OrgSwitcher.d.ts.map +1 -1
- package/dist/client/org/OrgSwitcher.js +90 -24
- package/dist/client/org/OrgSwitcher.js.map +1 -1
- package/dist/client/resources/McpServerDetail.d.ts +15 -0
- package/dist/client/resources/McpServerDetail.d.ts.map +1 -0
- package/dist/client/resources/McpServerDetail.js +65 -0
- package/dist/client/resources/McpServerDetail.js.map +1 -0
- package/dist/client/resources/ResourceEditor.js +1 -1
- package/dist/client/resources/ResourceEditor.js.map +1 -1
- package/dist/client/resources/ResourceTree.d.ts +6 -1
- package/dist/client/resources/ResourceTree.d.ts.map +1 -1
- package/dist/client/resources/ResourceTree.js +18 -7
- package/dist/client/resources/ResourceTree.js.map +1 -1
- package/dist/client/resources/ResourcesPanel.d.ts.map +1 -1
- package/dist/client/resources/ResourcesPanel.js +191 -20
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/resources/use-mcp-servers.d.ts +68 -0
- package/dist/client/resources/use-mcp-servers.d.ts.map +1 -0
- package/dist/client/resources/use-mcp-servers.js +83 -0
- package/dist/client/resources/use-mcp-servers.js.map +1 -0
- package/dist/client/resources/use-resources.d.ts +39 -1
- package/dist/client/resources/use-resources.d.ts.map +1 -1
- package/dist/client/resources/use-resources.js +102 -0
- package/dist/client/resources/use-resources.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +3 -2
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/VoiceTranscriptionSection.d.ts +14 -0
- package/dist/client/settings/VoiceTranscriptionSection.d.ts.map +1 -0
- package/dist/client/settings/VoiceTranscriptionSection.js +111 -0
- package/dist/client/settings/VoiceTranscriptionSection.js.map +1 -0
- package/dist/client/sharing/ShareButton.d.ts +6 -4
- package/dist/client/sharing/ShareButton.d.ts.map +1 -1
- package/dist/client/sharing/ShareButton.js +299 -34
- package/dist/client/sharing/ShareButton.js.map +1 -1
- package/dist/client/sharing/ShareDialog.d.ts +22 -4
- package/dist/client/sharing/ShareDialog.d.ts.map +1 -1
- package/dist/client/sharing/ShareDialog.js +170 -148
- package/dist/client/sharing/ShareDialog.js.map +1 -1
- package/dist/client/sharing/VisibilityBadge.d.ts.map +1 -1
- package/dist/client/sharing/VisibilityBadge.js +1 -2
- package/dist/client/sharing/VisibilityBadge.js.map +1 -1
- package/dist/client/use-action.d.ts.map +1 -1
- package/dist/client/use-action.js +20 -1
- package/dist/client/use-action.js.map +1 -1
- package/dist/db/migrations.d.ts +18 -3
- package/dist/db/migrations.d.ts.map +1 -1
- package/dist/db/migrations.js +25 -3
- package/dist/db/migrations.js.map +1 -1
- package/dist/deploy/workspace-core.js +2 -2
- package/dist/mcp-client/config.d.ts +20 -1
- package/dist/mcp-client/config.d.ts.map +1 -1
- package/dist/mcp-client/config.js +28 -11
- package/dist/mcp-client/config.js.map +1 -1
- package/dist/mcp-client/hub-client.d.ts +38 -0
- package/dist/mcp-client/hub-client.d.ts.map +1 -0
- package/dist/mcp-client/hub-client.js +147 -0
- package/dist/mcp-client/hub-client.js.map +1 -0
- package/dist/mcp-client/hub-routes.d.ts +42 -0
- package/dist/mcp-client/hub-routes.d.ts.map +1 -0
- package/dist/mcp-client/hub-routes.js +114 -0
- package/dist/mcp-client/hub-routes.js.map +1 -0
- package/dist/mcp-client/index.d.ts +15 -0
- package/dist/mcp-client/index.d.ts.map +1 -1
- package/dist/mcp-client/index.js +35 -0
- package/dist/mcp-client/index.js.map +1 -1
- package/dist/mcp-client/manager.d.ts +54 -8
- package/dist/mcp-client/manager.d.ts.map +1 -1
- package/dist/mcp-client/manager.js +276 -59
- package/dist/mcp-client/manager.js.map +1 -1
- package/dist/mcp-client/remote-store.d.ts +102 -0
- package/dist/mcp-client/remote-store.d.ts.map +1 -0
- package/dist/mcp-client/remote-store.js +200 -0
- package/dist/mcp-client/remote-store.js.map +1 -0
- package/dist/mcp-client/routes.d.ts +55 -0
- package/dist/mcp-client/routes.d.ts.map +1 -0
- package/dist/mcp-client/routes.js +384 -0
- package/dist/mcp-client/routes.js.map +1 -0
- package/dist/mcp-client/visibility.d.ts +16 -0
- package/dist/mcp-client/visibility.d.ts.map +1 -0
- package/dist/mcp-client/visibility.js +45 -0
- package/dist/mcp-client/visibility.js.map +1 -0
- package/dist/org/context.js +2 -2
- package/dist/org/context.js.map +1 -1
- package/dist/org/handlers.js +2 -2
- package/dist/org/handlers.js.map +1 -1
- package/dist/resources/handlers.d.ts.map +1 -1
- package/dist/resources/handlers.js +30 -0
- package/dist/resources/handlers.js.map +1 -1
- package/dist/secrets/register-framework-secrets.d.ts +13 -0
- package/dist/secrets/register-framework-secrets.d.ts.map +1 -0
- package/dist/secrets/register-framework-secrets.js +59 -0
- package/dist/secrets/register-framework-secrets.js.map +1 -0
- package/dist/secrets/register.d.ts.map +1 -1
- package/dist/secrets/register.js +8 -1
- package/dist/secrets/register.js.map +1 -1
- package/dist/server/action-routes.d.ts.map +1 -1
- package/dist/server/action-routes.js +22 -2
- package/dist/server/action-routes.js.map +1 -1
- package/dist/server/agent-chat-plugin.d.ts +16 -0
- package/dist/server/agent-chat-plugin.d.ts.map +1 -1
- package/dist/server/agent-chat-plugin.js +237 -70
- package/dist/server/agent-chat-plugin.js.map +1 -1
- package/dist/server/app-url.d.ts.map +1 -1
- package/dist/server/app-url.js +11 -3
- package/dist/server/app-url.js.map +1 -1
- package/dist/server/auth.d.ts.map +1 -1
- package/dist/server/auth.js +50 -0
- package/dist/server/auth.js.map +1 -1
- package/dist/server/better-auth-instance.d.ts.map +1 -1
- package/dist/server/better-auth-instance.js +99 -4
- package/dist/server/better-auth-instance.js.map +1 -1
- package/dist/server/core-routes-plugin.d.ts.map +1 -1
- package/dist/server/core-routes-plugin.js +44 -0
- package/dist/server/core-routes-plugin.js.map +1 -1
- package/dist/server/create-server.d.ts.map +1 -1
- package/dist/server/create-server.js +6 -0
- package/dist/server/create-server.js.map +1 -1
- package/dist/server/date-utils.d.ts +15 -0
- package/dist/server/date-utils.d.ts.map +1 -0
- package/dist/server/date-utils.js +41 -0
- package/dist/server/date-utils.js.map +1 -0
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.d.ts.map +1 -1
- package/dist/server/index.js +2 -1
- package/dist/server/index.js.map +1 -1
- package/dist/server/onboarding-html.d.ts +3 -0
- package/dist/server/onboarding-html.d.ts.map +1 -1
- package/dist/server/onboarding-html.js +13 -3
- package/dist/server/onboarding-html.js.map +1 -1
- package/dist/server/request-context.d.ts +9 -0
- package/dist/server/request-context.d.ts.map +1 -1
- package/dist/server/request-context.js +10 -0
- package/dist/server/request-context.js.map +1 -1
- package/dist/server/transcribe-voice.d.ts +26 -0
- package/dist/server/transcribe-voice.d.ts.map +1 -0
- package/dist/server/transcribe-voice.js +143 -0
- package/dist/server/transcribe-voice.js.map +1 -0
- package/dist/styles/agent-native.css +111 -0
- package/dist/tailwind.preset.d.ts +2 -2
- package/dist/tailwind.preset.d.ts.map +1 -1
- package/dist/tailwind.preset.js +27 -7
- package/dist/tailwind.preset.js.map +1 -1
- package/dist/templates/default/app/global.css +65 -68
- package/dist/templates/default/components.json +1 -1
- package/dist/templates/default/package.json +2 -4
- package/dist/templates/default/vite.config.ts +3 -0
- package/dist/templates/workspace-core/package.json +1 -4
- package/dist/templates/workspace-core/src/index.ts +1 -1
- package/dist/templates/workspace-core/styles/tokens.css +22 -0
- package/dist/templates/workspace-core/tsconfig.json +1 -1
- package/dist/vite/client.d.ts +6 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +18 -1
- package/dist/vite/client.js.map +1 -1
- package/docs/content/actions.md +169 -74
- package/docs/content/agent-teams.md +139 -0
- package/docs/content/cloneable-saas.md +98 -0
- package/docs/content/creating-templates.md +9 -11
- package/docs/content/deployment.md +2 -9
- package/docs/content/drop-in-agent.md +200 -0
- package/docs/content/enterprise-workspace.md +22 -10
- package/docs/content/getting-started.md +34 -19
- package/docs/content/integrations.md +3 -3
- package/docs/content/key-concepts.md +50 -23
- package/docs/content/mcp-clients.md +71 -0
- package/docs/content/pure-agent-apps.md +69 -0
- package/docs/content/recurring-jobs.md +123 -0
- package/docs/content/skills-guide.md +8 -0
- package/docs/content/template-analytics.md +190 -0
- package/docs/content/template-calendar.md +151 -0
- package/docs/content/template-clips.md +55 -0
- package/docs/content/template-content.md +141 -0
- package/docs/content/template-dispatch.md +58 -0
- package/docs/content/template-forms.md +51 -0
- package/docs/content/template-mail.md +169 -0
- package/docs/content/template-slides.md +218 -0
- package/docs/content/template-starter.md +68 -0
- package/docs/content/template-video.md +162 -0
- package/docs/content/voice-input.md +59 -0
- package/docs/content/what-is-agent-native.md +142 -45
- package/docs/content/workspace-management.md +1 -0
- package/docs/content/{resources.md → workspace.md} +94 -42
- package/package.json +9 -16
- package/src/templates/default/app/global.css +65 -68
- package/src/templates/default/components.json +1 -1
- package/src/templates/default/package.json +2 -4
- package/src/templates/default/vite.config.ts +3 -0
- package/src/templates/workspace-core/package.json +1 -4
- package/src/templates/workspace-core/src/index.ts +1 -1
- package/src/templates/workspace-core/styles/tokens.css +22 -0
- package/src/templates/workspace-core/tsconfig.json +1 -1
- package/dist/templates/default/postcss.config.js +0 -6
- package/dist/templates/default/tailwind.config.ts +0 -7
- package/dist/templates/workspace-core/tailwind.preset.ts +0 -34
- package/src/templates/default/postcss.config.js +0 -6
- package/src/templates/default/tailwind.config.ts +0 -7
- package/src/templates/workspace-core/tailwind.preset.ts +0 -34
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Format a `Date` as `YYYY-MM-DD` in the given IANA timezone.
|
|
3
|
+
*
|
|
4
|
+
* Uses `Intl.DateTimeFormat` with the `en-CA` locale because it natively
|
|
5
|
+
* emits `YYYY-MM-DD` order, which avoids reassembling parts by hand. Falls
|
|
6
|
+
* back to the host timezone if `tz` is omitted.
|
|
7
|
+
*/
|
|
8
|
+
export declare function formatDateInTimezone(date: Date, tz?: string): string;
|
|
9
|
+
/**
|
|
10
|
+
* Return today's date as `YYYY-MM-DD` in the given IANA timezone.
|
|
11
|
+
* If `tz` is omitted, falls back to `getRequestTimezone()` (set from the
|
|
12
|
+
* `x-user-timezone` header on action requests), then to the host timezone.
|
|
13
|
+
*/
|
|
14
|
+
export declare function todayInTimezone(tz?: string): string;
|
|
15
|
+
//# sourceMappingURL=date-utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-utils.d.ts","sourceRoot":"","sources":["../../src/server/date-utils.ts"],"names":[],"mappings":"AAcA;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAWpE;AAED;;;;GAIG;AACH,wBAAgB,eAAe,CAAC,EAAE,CAAC,EAAE,MAAM,GAAG,MAAM,CAEnD"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Timezone-aware date helpers for actions.
|
|
3
|
+
*
|
|
4
|
+
* The motivating case: a user at 6pm PT logs a meal. If the server computes
|
|
5
|
+
* "today" with `new Date()`, it sees UTC (already past midnight) and stores
|
|
6
|
+
* the entry as tomorrow. `todayInTimezone()` formats today in the caller's
|
|
7
|
+
* timezone instead.
|
|
8
|
+
*
|
|
9
|
+
* Prefer `todayInTimezone()` over inline `new Date().toISOString().slice(0,10)`
|
|
10
|
+
* or `new Date().getFullYear()` constructions when storing a `YYYY-MM-DD` date
|
|
11
|
+
* column that represents the user's local day.
|
|
12
|
+
*/
|
|
13
|
+
import { getRequestTimezone } from "./request-context.js";
|
|
14
|
+
/**
|
|
15
|
+
* Format a `Date` as `YYYY-MM-DD` in the given IANA timezone.
|
|
16
|
+
*
|
|
17
|
+
* Uses `Intl.DateTimeFormat` with the `en-CA` locale because it natively
|
|
18
|
+
* emits `YYYY-MM-DD` order, which avoids reassembling parts by hand. Falls
|
|
19
|
+
* back to the host timezone if `tz` is omitted.
|
|
20
|
+
*/
|
|
21
|
+
export function formatDateInTimezone(date, tz) {
|
|
22
|
+
const parts = new Intl.DateTimeFormat("en-CA", {
|
|
23
|
+
timeZone: tz,
|
|
24
|
+
year: "numeric",
|
|
25
|
+
month: "2-digit",
|
|
26
|
+
day: "2-digit",
|
|
27
|
+
}).formatToParts(date);
|
|
28
|
+
const y = parts.find((p) => p.type === "year")?.value ?? "1970";
|
|
29
|
+
const m = parts.find((p) => p.type === "month")?.value ?? "01";
|
|
30
|
+
const d = parts.find((p) => p.type === "day")?.value ?? "01";
|
|
31
|
+
return `${y}-${m}-${d}`;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Return today's date as `YYYY-MM-DD` in the given IANA timezone.
|
|
35
|
+
* If `tz` is omitted, falls back to `getRequestTimezone()` (set from the
|
|
36
|
+
* `x-user-timezone` header on action requests), then to the host timezone.
|
|
37
|
+
*/
|
|
38
|
+
export function todayInTimezone(tz) {
|
|
39
|
+
return formatDateInTimezone(new Date(), tz ?? getRequestTimezone());
|
|
40
|
+
}
|
|
41
|
+
//# sourceMappingURL=date-utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"date-utils.js","sourceRoot":"","sources":["../../src/server/date-utils.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AACH,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D;;;;;;GAMG;AACH,MAAM,UAAU,oBAAoB,CAAC,IAAU,EAAE,EAAW;IAC1D,MAAM,KAAK,GAAG,IAAI,IAAI,CAAC,cAAc,CAAC,OAAO,EAAE;QAC7C,QAAQ,EAAE,EAAE;QACZ,IAAI,EAAE,SAAS;QACf,KAAK,EAAE,SAAS;QAChB,GAAG,EAAE,SAAS;KACf,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC;IACvB,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,MAAM,CAAC,EAAE,KAAK,IAAI,MAAM,CAAC;IAChE,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IAC/D,MAAM,CAAC,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,EAAE,KAAK,IAAI,IAAI,CAAC;IAC7D,OAAO,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC;AAC1B,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,eAAe,CAAC,EAAW;IACzC,OAAO,oBAAoB,CAAC,IAAI,IAAI,EAAE,EAAE,EAAE,IAAI,kBAAkB,EAAE,CAAC,CAAC;AACtE,CAAC"}
|
package/dist/server/index.d.ts
CHANGED
|
@@ -22,7 +22,8 @@ export { wrapWithAnalytics } from "./analytics.js";
|
|
|
22
22
|
export { getH3App, awaitBootstrap, type H3AppShim, } from "./framework-request-handler.js";
|
|
23
23
|
export { autoDiscoverActions, autoDiscoverScripts, loadActionsFromStaticRegistry, mergeCoreSharingActions, } from "./action-discovery.js";
|
|
24
24
|
export { mountActionRoutes, type MountActionRoutesOptions, } from "./action-routes.js";
|
|
25
|
-
export { runWithRequestContext, getRequestUserEmail, getRequestOrgId, type RequestContext, } from "./request-context.js";
|
|
25
|
+
export { runWithRequestContext, getRequestUserEmail, getRequestOrgId, getRequestTimezone, type RequestContext, } from "./request-context.js";
|
|
26
|
+
export { formatDateInTimezone, todayInTimezone } from "./date-utils.js";
|
|
26
27
|
export { createOnboardingPlugin, defaultOnboardingPlugin, } from "../onboarding/plugin.js";
|
|
27
28
|
export { registerFileUploadProvider, unregisterFileUploadProvider, listFileUploadProviders, getActiveFileUploadProvider, uploadFile, builderFileUploadProvider, type FileUploadInput, type FileUploadProvider, type FileUploadResult, } from "../file-upload/index.js";
|
|
28
29
|
export { createIntegrationsPlugin, defaultIntegrationsPlugin, slackAdapter, telegramAdapter, whatsappAdapter, type PlatformAdapter, type IncomingMessage, type OutgoingMessage, type IntegrationStatus, type IntegrationsPluginOptions, } from "../integrations/index.js";
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,EACb,KAAK,mBAAmB,EACxB,KAAK,YAAY,GAClB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,KAAK,iBAAiB,EAAE,MAAM,UAAU,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,EACb,eAAe,EACf,YAAY,EACZ,KAAK,WAAW,EAChB,KAAK,WAAW,GACjB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAAE,KAAK,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAAE,KAAK,mBAAmB,EAAE,MAAM,cAAc,CAAC;AACvE,OAAO,EACL,4BAA4B,EAC5B,KAAK,WAAW,EAChB,KAAK,WAAW,EAChB,KAAK,sBAAsB,EAC3B,KAAK,UAAU,EACf,KAAK,UAAU,EACf,KAAK,YAAY,EACjB,KAAK,gBAAgB,EACrB,KAAK,cAAc,EACnB,KAAK,kBAAkB,EACvB,KAAK,eAAe,EACpB,KAAK,mBAAmB,GACzB,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAIvE,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,EACtB,KAAK,sBAAsB,GAC5B,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,YAAY,EACZ,KAAK,UAAU,EACf,KAAK,iBAAiB,GACvB,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,EACtB,KAAK,uBAAuB,GAC7B,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,EACrB,KAAK,qBAAqB,GAC3B,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,EAClB,KAAK,mBAAmB,GACzB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,SAAS,EACT,OAAO,EACP,eAAe,EACf,SAAS,EACT,UAAU,EACV,eAAe,EACf,KAAK,SAAS,EACd,KAAK,gBAAgB,GACtB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,QAAQ,EACR,cAAc,EACd,KAAK,SAAS,GACf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,EACjB,KAAK,wBAAwB,GAC9B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,EACf,KAAK,cAAc,GACpB,MAAM,sBAAsB,CAAC;
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
package/dist/server/index.js
CHANGED
|
@@ -25,7 +25,8 @@ export { wrapWithAnalytics } from "./analytics.js";
|
|
|
25
25
|
export { getH3App, awaitBootstrap, } from "./framework-request-handler.js";
|
|
26
26
|
export { autoDiscoverActions, autoDiscoverScripts, loadActionsFromStaticRegistry, mergeCoreSharingActions, } from "./action-discovery.js";
|
|
27
27
|
export { mountActionRoutes, } from "./action-routes.js";
|
|
28
|
-
export { runWithRequestContext, getRequestUserEmail, getRequestOrgId, } from "./request-context.js";
|
|
28
|
+
export { runWithRequestContext, getRequestUserEmail, getRequestOrgId, getRequestTimezone, } from "./request-context.js";
|
|
29
|
+
export { formatDateInTimezone, todayInTimezone } from "./date-utils.js";
|
|
29
30
|
export { createOnboardingPlugin, defaultOnboardingPlugin, } from "../onboarding/plugin.js";
|
|
30
31
|
export { registerFileUploadProvider, unregisterFileUploadProvider, listFileUploadProviders, getActiveFileUploadProvider, uploadFile, builderFileUploadProvider, } from "../file-upload/index.js";
|
|
31
32
|
export { createIntegrationsPlugin, defaultIntegrationsPlugin, slackAdapter, telegramAdapter, whatsappAdapter, } from "../integrations/index.js";
|
package/dist/server/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,YAAY,EACZ,aAAa,GAGd,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,iBAAiB,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAA0B,MAAM,UAAU,CAAC;AACpE,OAAO,EACL,mBAAmB,EACnB,aAAa,EACb,UAAU,EACV,UAAU,EACV,aAAa,EACb,eAAe,EACf,YAAY,GAGb,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,aAAa,EAA2B,MAAM,kBAAkB,CAAC;AAC1E,OAAO,EAAE,aAAa,EAA4B,MAAM,cAAc,CAAC;AACvE,OAAO,EACL,4BAA4B,GAY7B,MAAM,mBAAmB,CAAC;AAC3B,OAAO,EAAE,uBAAuB,EAAE,MAAM,yBAAyB,CAAC;AAElE,OAAO,EACL,iBAAiB,EACjB,YAAY,EACZ,UAAU,EACV,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AACvE,2EAA2E;AAC3E,2EAA2E;AAC3E,8DAA8D;AAC9D,OAAO,EAAE,eAAe,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EACL,sBAAsB,GAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GAEvB,MAAM,wBAAwB,CAAC;AAChC,OAAO,EACL,YAAY,EACZ,SAAS,EACT,WAAW,EACX,gBAAgB,EAChB,YAAY,GAGb,MAAM,0BAA0B,CAAC;AAClC,OAAO,EACL,qBAAqB,EACrB,sBAAsB,GACvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,sBAAsB,EACtB,uBAAuB,EACvB,sBAAsB,GAEvB,MAAM,yBAAyB,CAAC;AACjC,OAAO,EACL,oBAAoB,EACpB,qBAAqB,GAEtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,kBAAkB,GAEnB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,SAAS,EACT,OAAO,EACP,eAAe,EACf,SAAS,EACT,UAAU,EACV,eAAe,GAGhB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AACnD,OAAO,EACL,QAAQ,EACR,cAAc,GAEf,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACL,mBAAmB,EACnB,mBAAmB,EACnB,6BAA6B,EAC7B,uBAAuB,GACxB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EACL,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/server/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -9,6 +9,9 @@
|
|
|
9
9
|
* After first account exists, this page acts as a normal login page.
|
|
10
10
|
* The "Use locally" escape hatch is hidden in production to ensure
|
|
11
11
|
* real accounts are used (needed for per-user usage tracking/limits).
|
|
12
|
+
* It's also hidden when DATABASE_URL points at a non-local DB (Postgres,
|
|
13
|
+
* Turso, D1) — local@localhost has no per-user scoping, so enabling it
|
|
14
|
+
* against a shared DB would silently fail server-side.
|
|
12
15
|
*/
|
|
13
16
|
export interface OnboardingHtmlOptions {
|
|
14
17
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-html.d.ts","sourceRoot":"","sources":["../../src/server/onboarding-html.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"onboarding-html.d.ts","sourceRoot":"","sources":["../../src/server/onboarding-html.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AA0BH,MAAM,WAAW,qBAAqB;IACpC;;;;OAIG;IACH,UAAU,CAAC,EAAE,OAAO,CAAC;CACtB;AAID,wBAAgB,iBAAiB,CAAC,IAAI,GAAE,qBAA0B,GAAG,MAAM,CA8f1E;AAED,kDAAkD;AAClD,eAAO,MAAM,eAAe,QAAsB,CAAC;AAEnD;;;;GAIG;AACH,wBAAgB,oBAAoB,IAAI,MAAM,CAwG7C"}
|
|
@@ -9,7 +9,11 @@
|
|
|
9
9
|
* After first account exists, this page acts as a normal login page.
|
|
10
10
|
* The "Use locally" escape hatch is hidden in production to ensure
|
|
11
11
|
* real accounts are used (needed for per-user usage tracking/limits).
|
|
12
|
+
* It's also hidden when DATABASE_URL points at a non-local DB (Postgres,
|
|
13
|
+
* Turso, D1) — local@localhost has no per-user scoping, so enabling it
|
|
14
|
+
* against a shared DB would silently fail server-side.
|
|
12
15
|
*/
|
|
16
|
+
import { isLocalDatabase } from "../db/client.js";
|
|
13
17
|
function isProductionEnv() {
|
|
14
18
|
const env = process.env.NODE_ENV;
|
|
15
19
|
return env !== "development" && env !== "test";
|
|
@@ -36,7 +40,7 @@ function getConnectionLabel() {
|
|
|
36
40
|
}
|
|
37
41
|
const MIGRATE_FLAG_KEY = "an_migrate_from_local";
|
|
38
42
|
export function getOnboardingHtml(opts = {}) {
|
|
39
|
-
const showLocalMode = !isProductionEnv() && !opts.googleOnly;
|
|
43
|
+
const showLocalMode = !isProductionEnv() && !opts.googleOnly && isLocalDatabase();
|
|
40
44
|
const showGoogle = hasGoogleOAuth();
|
|
41
45
|
const googleOnly = !!opts.googleOnly;
|
|
42
46
|
const localModeBlock = showLocalMode
|
|
@@ -62,8 +66,14 @@ export function getOnboardingHtml(opts = {}) {
|
|
|
62
66
|
if (res.ok) {
|
|
63
67
|
window.location.reload();
|
|
64
68
|
} else {
|
|
65
|
-
|
|
66
|
-
|
|
69
|
+
var data = await res.json().catch(function() { return {}; });
|
|
70
|
+
var info = document.getElementById('local-info');
|
|
71
|
+
if (info && data && data.error) {
|
|
72
|
+
info.textContent = data.error;
|
|
73
|
+
info.style.color = '#f87171';
|
|
74
|
+
}
|
|
75
|
+
btn.textContent = 'Not available';
|
|
76
|
+
btn.disabled = true;
|
|
67
77
|
}
|
|
68
78
|
} catch(e) {
|
|
69
79
|
btn.textContent = 'Failed — try again';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"onboarding-html.js","sourceRoot":"","sources":["../../src/server/onboarding-html.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"onboarding-html.js","sourceRoot":"","sources":["../../src/server/onboarding-html.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
export interface RequestContext {
|
|
2
2
|
userEmail?: string;
|
|
3
3
|
orgId?: string;
|
|
4
|
+
timezone?: string;
|
|
4
5
|
}
|
|
5
6
|
/**
|
|
6
7
|
* Run a callback within a per-request context. The context is available to all
|
|
@@ -17,4 +18,12 @@ export declare function getRequestUserEmail(): string | undefined;
|
|
|
17
18
|
* Falls back to `process.env.AGENT_ORG_ID` for CLI scripts.
|
|
18
19
|
*/
|
|
19
20
|
export declare function getRequestOrgId(): string | undefined;
|
|
21
|
+
/**
|
|
22
|
+
* Get the current request's IANA timezone (e.g. "America/Los_Angeles").
|
|
23
|
+
* The UI sends this via the `x-user-timezone` header on every action call, and
|
|
24
|
+
* the agent chat plugin propagates it into the request context so that
|
|
25
|
+
* agent-initiated tool calls also see the user's timezone. Falls back to
|
|
26
|
+
* `process.env.AGENT_USER_TIMEZONE` for CLI scripts, and undefined if unset.
|
|
27
|
+
*/
|
|
28
|
+
export declare function getRequestTimezone(): string | undefined;
|
|
20
29
|
//# sourceMappingURL=request-context.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"request-context.d.ts","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"AAmBA,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAID;;;GAGG;AACH,wBAAgB,qBAAqB,CAAC,CAAC,EACrC,GAAG,EAAE,cAAc,EACnB,EAAE,EAAE,MAAM,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,GACvB,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEhB;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,SAAS,CAExD;AAED;;;GAGG;AACH,wBAAgB,eAAe,IAAI,MAAM,GAAG,SAAS,CAEpD;AAED;;;;;;GAMG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,GAAG,SAAS,CAEvD"}
|
|
@@ -38,4 +38,14 @@ export function getRequestUserEmail() {
|
|
|
38
38
|
export function getRequestOrgId() {
|
|
39
39
|
return als.getStore()?.orgId ?? process.env.AGENT_ORG_ID;
|
|
40
40
|
}
|
|
41
|
+
/**
|
|
42
|
+
* Get the current request's IANA timezone (e.g. "America/Los_Angeles").
|
|
43
|
+
* The UI sends this via the `x-user-timezone` header on every action call, and
|
|
44
|
+
* the agent chat plugin propagates it into the request context so that
|
|
45
|
+
* agent-initiated tool calls also see the user's timezone. Falls back to
|
|
46
|
+
* `process.env.AGENT_USER_TIMEZONE` for CLI scripts, and undefined if unset.
|
|
47
|
+
*/
|
|
48
|
+
export function getRequestTimezone() {
|
|
49
|
+
return als.getStore()?.timezone ?? process.env.AGENT_USER_TIMEZONE;
|
|
50
|
+
}
|
|
41
51
|
//# sourceMappingURL=request-context.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"request-context.js","sourceRoot":"","sources":["../../src/server/request-context.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AACH,OAAO,EAAE,iBAAiB,EAAE,MAAM,kBAAkB,CAAC;AAQrD,MAAM,GAAG,GAAG,IAAI,iBAAiB,EAAkB,CAAC;AAEpD;;;GAGG;AACH,MAAM,UAAU,qBAAqB,CACnC,GAAmB,EACnB,EAAwB;IAExB,OAAO,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;AAC1B,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,mBAAmB;IACjC,OAAO,GAAG,CAAC,QAAQ,EAAE,EAAE,SAAS,IAAI,OAAO,CAAC,GAAG,CAAC,gBAAgB,CAAC;AACnE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,eAAe;IAC7B,OAAO,GAAG,CAAC,QAAQ,EAAE,EAAE,KAAK,IAAI,OAAO,CAAC,GAAG,CAAC,YAAY,CAAC;AAC3D,CAAC;AAED;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB;IAChC,OAAO,GAAG,CAAC,QAAQ,EAAE,EAAE,QAAQ,IAAI,OAAO,CAAC,GAAG,CAAC,mBAAmB,CAAC;AACrE,CAAC"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* POST /_agent-native/transcribe-voice
|
|
3
|
+
*
|
|
4
|
+
* Receives an audio blob from the agent sidebar composer and forwards it to
|
|
5
|
+
* OpenAI Whisper. Returns `{ text }` on success, `{ error }` on failure.
|
|
6
|
+
*
|
|
7
|
+
* Key resolution order (mirrors `templates/clips/actions/request-transcript.ts`):
|
|
8
|
+
* 1. User-scoped encrypted secret (`readAppSecret` — set via the sidebar
|
|
9
|
+
* settings UI).
|
|
10
|
+
* 2. `resolveCredential("OPENAI_API_KEY")` — env var + SQL settings store.
|
|
11
|
+
*
|
|
12
|
+
* If no key is configured, returns 400 with an error the composer UI can
|
|
13
|
+
* surface (the client falls back to the browser Web Speech API).
|
|
14
|
+
*
|
|
15
|
+
* This is a framework route rather than a `defineAction` because multipart
|
|
16
|
+
* audio bodies aren't a clean fit for the action contract (actions are
|
|
17
|
+
* typed JSON-in / JSON-out).
|
|
18
|
+
*/
|
|
19
|
+
export declare function createTranscribeVoiceHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
20
|
+
error: string;
|
|
21
|
+
text?: undefined;
|
|
22
|
+
} | {
|
|
23
|
+
text: string;
|
|
24
|
+
error?: undefined;
|
|
25
|
+
}>>;
|
|
26
|
+
//# sourceMappingURL=transcribe-voice.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcribe-voice.d.ts","sourceRoot":"","sources":["../../src/server/transcribe-voice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAyCH,wBAAgB,4BAA4B;;;;;;IAyF3C"}
|
|
@@ -0,0 +1,143 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* POST /_agent-native/transcribe-voice
|
|
3
|
+
*
|
|
4
|
+
* Receives an audio blob from the agent sidebar composer and forwards it to
|
|
5
|
+
* OpenAI Whisper. Returns `{ text }` on success, `{ error }` on failure.
|
|
6
|
+
*
|
|
7
|
+
* Key resolution order (mirrors `templates/clips/actions/request-transcript.ts`):
|
|
8
|
+
* 1. User-scoped encrypted secret (`readAppSecret` — set via the sidebar
|
|
9
|
+
* settings UI).
|
|
10
|
+
* 2. `resolveCredential("OPENAI_API_KEY")` — env var + SQL settings store.
|
|
11
|
+
*
|
|
12
|
+
* If no key is configured, returns 400 with an error the composer UI can
|
|
13
|
+
* surface (the client falls back to the browser Web Speech API).
|
|
14
|
+
*
|
|
15
|
+
* This is a framework route rather than a `defineAction` because multipart
|
|
16
|
+
* audio bodies aren't a clean fit for the action contract (actions are
|
|
17
|
+
* typed JSON-in / JSON-out).
|
|
18
|
+
*/
|
|
19
|
+
import { defineEventHandler, getMethod, getRequestHeader, readMultipartFormData, setResponseStatus, } from "h3";
|
|
20
|
+
import { readAppSecret } from "../secrets/storage.js";
|
|
21
|
+
import { resolveCredential } from "../credentials/index.js";
|
|
22
|
+
import { getSession } from "./auth.js";
|
|
23
|
+
const WHISPER_URL = "https://api.openai.com/v1/audio/transcriptions";
|
|
24
|
+
const MAX_AUDIO_BYTES = 25 * 1024 * 1024; // Whisper hard limit.
|
|
25
|
+
/**
|
|
26
|
+
* Reject cross-site POSTs. Cookies are `SameSite=None; Secure` over HTTPS so
|
|
27
|
+
* the browser would otherwise attach the session to a forged form submission
|
|
28
|
+
* from evil.com, causing us to spend OpenAI credits on the user's behalf.
|
|
29
|
+
* Same-origin browsers always send `Origin` on POST; if it's missing we fall
|
|
30
|
+
* back to `Sec-Fetch-Site` so Safari's fetch-spec behavior still works.
|
|
31
|
+
*/
|
|
32
|
+
function isSameOriginRequest(event) {
|
|
33
|
+
const host = getRequestHeader(event, "host");
|
|
34
|
+
const origin = getRequestHeader(event, "origin");
|
|
35
|
+
if (origin && host) {
|
|
36
|
+
try {
|
|
37
|
+
return new URL(origin).host === host;
|
|
38
|
+
}
|
|
39
|
+
catch {
|
|
40
|
+
return false;
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
const fetchSite = getRequestHeader(event, "sec-fetch-site");
|
|
44
|
+
if (fetchSite)
|
|
45
|
+
return fetchSite === "same-origin" || fetchSite === "none";
|
|
46
|
+
// No Origin and no Sec-Fetch-Site: likely a non-browser client (curl,
|
|
47
|
+
// server-side) — safe to allow, CSRF requires a browser with ambient cookies.
|
|
48
|
+
return true;
|
|
49
|
+
}
|
|
50
|
+
export function createTranscribeVoiceHandler() {
|
|
51
|
+
return defineEventHandler(async (event) => {
|
|
52
|
+
if (getMethod(event) !== "POST") {
|
|
53
|
+
setResponseStatus(event, 405);
|
|
54
|
+
return { error: "Method not allowed" };
|
|
55
|
+
}
|
|
56
|
+
if (!isSameOriginRequest(event)) {
|
|
57
|
+
setResponseStatus(event, 403);
|
|
58
|
+
return { error: "Cross-origin request rejected" };
|
|
59
|
+
}
|
|
60
|
+
const parts = await readMultipartFormData(event).catch(() => null);
|
|
61
|
+
const audio = parts?.find((p) => p.name === "audio");
|
|
62
|
+
if (!audio?.data?.length) {
|
|
63
|
+
setResponseStatus(event, 400);
|
|
64
|
+
return { error: "Missing audio payload" };
|
|
65
|
+
}
|
|
66
|
+
if (audio.data.length > MAX_AUDIO_BYTES) {
|
|
67
|
+
setResponseStatus(event, 413);
|
|
68
|
+
return { error: "Audio too large (max 25 MB)" };
|
|
69
|
+
}
|
|
70
|
+
const languagePart = parts?.find((p) => p.name === "language");
|
|
71
|
+
const language = languagePart?.data
|
|
72
|
+
? languagePart.data.toString("utf8").trim().slice(0, 8)
|
|
73
|
+
: undefined;
|
|
74
|
+
// Resolve the key.
|
|
75
|
+
let apiKey;
|
|
76
|
+
const session = await getSession(event).catch(() => null);
|
|
77
|
+
if (session?.email) {
|
|
78
|
+
const userSecret = await readAppSecret({
|
|
79
|
+
key: "OPENAI_API_KEY",
|
|
80
|
+
scope: "user",
|
|
81
|
+
scopeId: session.email,
|
|
82
|
+
}).catch(() => null);
|
|
83
|
+
if (userSecret?.value)
|
|
84
|
+
apiKey = userSecret.value;
|
|
85
|
+
}
|
|
86
|
+
if (!apiKey) {
|
|
87
|
+
apiKey = await resolveCredential("OPENAI_API_KEY");
|
|
88
|
+
}
|
|
89
|
+
if (!apiKey) {
|
|
90
|
+
setResponseStatus(event, 400);
|
|
91
|
+
return {
|
|
92
|
+
error: "OPENAI_API_KEY not configured. Add it in Settings → API Keys to enable Whisper transcription.",
|
|
93
|
+
};
|
|
94
|
+
}
|
|
95
|
+
const mime = audio.type || "audio/webm";
|
|
96
|
+
const ext = pickExtension(mime);
|
|
97
|
+
const filename = `composer-voice.${ext}`;
|
|
98
|
+
const form = new FormData();
|
|
99
|
+
const bytes = new Uint8Array(audio.data.buffer, audio.data.byteOffset, audio.data.byteLength);
|
|
100
|
+
form.append("file", new Blob([bytes], { type: mime }), filename);
|
|
101
|
+
form.append("model", "whisper-1");
|
|
102
|
+
form.append("response_format", "json");
|
|
103
|
+
if (language)
|
|
104
|
+
form.append("language", language);
|
|
105
|
+
try {
|
|
106
|
+
const res = await fetch(WHISPER_URL, {
|
|
107
|
+
method: "POST",
|
|
108
|
+
headers: { Authorization: `Bearer ${apiKey}` },
|
|
109
|
+
body: form,
|
|
110
|
+
});
|
|
111
|
+
if (!res.ok) {
|
|
112
|
+
const text = await res.text().catch(() => "");
|
|
113
|
+
setResponseStatus(event, res.status === 401 ? 401 : 502);
|
|
114
|
+
return {
|
|
115
|
+
error: res.status === 401
|
|
116
|
+
? "OpenAI rejected the API key. Update it in Settings → API Keys."
|
|
117
|
+
: `Whisper API error ${res.status}: ${text.slice(0, 300)}`,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
const data = (await res.json());
|
|
121
|
+
return { text: (data.text ?? "").trim() };
|
|
122
|
+
}
|
|
123
|
+
catch (err) {
|
|
124
|
+
setResponseStatus(event, 502);
|
|
125
|
+
return {
|
|
126
|
+
error: `Could not reach OpenAI: ${err?.message ?? err}`,
|
|
127
|
+
};
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
}
|
|
131
|
+
function pickExtension(mime) {
|
|
132
|
+
const lower = mime.toLowerCase();
|
|
133
|
+
if (lower.includes("mp4") || lower.includes("m4a"))
|
|
134
|
+
return "mp4";
|
|
135
|
+
if (lower.includes("mpeg") || lower.includes("mp3"))
|
|
136
|
+
return "mp3";
|
|
137
|
+
if (lower.includes("ogg"))
|
|
138
|
+
return "ogg";
|
|
139
|
+
if (lower.includes("wav"))
|
|
140
|
+
return "wav";
|
|
141
|
+
return "webm";
|
|
142
|
+
}
|
|
143
|
+
//# sourceMappingURL=transcribe-voice.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"transcribe-voice.js","sourceRoot":"","sources":["../../src/server/transcribe-voice.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,111 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent-native shared Tailwind v4 stylesheet.
|
|
3
|
+
*
|
|
4
|
+
* Templates should import this in their `app/global.css` AFTER `@import "tailwindcss";`:
|
|
5
|
+
*
|
|
6
|
+
* @import "tailwindcss";
|
|
7
|
+
* @import "@agent-native/core/styles/agent-native.css";
|
|
8
|
+
*
|
|
9
|
+
* It provides:
|
|
10
|
+
* - `@source` directives so Tailwind scans @agent-native/core's compiled
|
|
11
|
+
* client files for class names (AgentPanel, AssistantChat, onboarding, etc.)
|
|
12
|
+
* - `@custom-variant dark` for the `.dark` class-based dark-mode strategy
|
|
13
|
+
* - shadcn/ui-compatible `@theme` color tokens that resolve from raw HSL
|
|
14
|
+
* CSS variables (--background, --foreground, --muted, …) defined per
|
|
15
|
+
* template in `:root`/`.dark` (or `.light`).
|
|
16
|
+
* - Accordion keyframes/animations (replaces the v3 tailwindcss-animate
|
|
17
|
+
* plugin for the small subset of animations the framework uses).
|
|
18
|
+
* - The official typography plugin.
|
|
19
|
+
*
|
|
20
|
+
* Templates remain in control of their own colour palette: they only need
|
|
21
|
+
* to define the raw `--background`, `--foreground`, etc. variables — this
|
|
22
|
+
* file maps those to Tailwind utilities like `bg-background`, `text-foreground`.
|
|
23
|
+
*/
|
|
24
|
+
|
|
25
|
+
/* Scan @agent-native/core's compiled client output for Tailwind classes.
|
|
26
|
+
Path is resolved relative to THIS file. After build, this CSS lives at
|
|
27
|
+
dist/styles/agent-native.css, so `../client/**` resolves to dist/client/**. */
|
|
28
|
+
@source "../client/**/*.{js,mjs,ts,tsx}";
|
|
29
|
+
@source "../client/**/onboarding/**/*.{js,mjs,ts,tsx}";
|
|
30
|
+
|
|
31
|
+
/* Class-based dark mode (matches v3 darkMode: ["class"]). */
|
|
32
|
+
@custom-variant dark (&:is(.dark *));
|
|
33
|
+
|
|
34
|
+
@plugin "@tailwindcss/typography";
|
|
35
|
+
|
|
36
|
+
@theme {
|
|
37
|
+
--color-border: hsl(var(--border));
|
|
38
|
+
--color-input: hsl(var(--input));
|
|
39
|
+
--color-ring: hsl(var(--ring));
|
|
40
|
+
--color-background: hsl(var(--background));
|
|
41
|
+
--color-foreground: hsl(var(--foreground));
|
|
42
|
+
|
|
43
|
+
--color-primary: hsl(var(--primary));
|
|
44
|
+
--color-primary-foreground: hsl(var(--primary-foreground));
|
|
45
|
+
|
|
46
|
+
--color-secondary: hsl(var(--secondary));
|
|
47
|
+
--color-secondary-foreground: hsl(var(--secondary-foreground));
|
|
48
|
+
|
|
49
|
+
--color-destructive: hsl(var(--destructive));
|
|
50
|
+
--color-destructive-foreground: hsl(var(--destructive-foreground));
|
|
51
|
+
|
|
52
|
+
--color-muted: hsl(var(--muted));
|
|
53
|
+
--color-muted-foreground: hsl(var(--muted-foreground));
|
|
54
|
+
|
|
55
|
+
--color-accent: hsl(var(--accent));
|
|
56
|
+
--color-accent-foreground: hsl(var(--accent-foreground));
|
|
57
|
+
|
|
58
|
+
--color-popover: hsl(var(--popover));
|
|
59
|
+
--color-popover-foreground: hsl(var(--popover-foreground));
|
|
60
|
+
|
|
61
|
+
--color-card: hsl(var(--card));
|
|
62
|
+
--color-card-foreground: hsl(var(--card-foreground));
|
|
63
|
+
|
|
64
|
+
--color-sidebar: hsl(var(--sidebar-background));
|
|
65
|
+
--color-sidebar-foreground: hsl(var(--sidebar-foreground));
|
|
66
|
+
--color-sidebar-primary: hsl(var(--sidebar-primary));
|
|
67
|
+
--color-sidebar-primary-foreground: hsl(var(--sidebar-primary-foreground));
|
|
68
|
+
--color-sidebar-accent: hsl(var(--sidebar-accent));
|
|
69
|
+
--color-sidebar-accent-foreground: hsl(var(--sidebar-accent-foreground));
|
|
70
|
+
--color-sidebar-border: hsl(var(--sidebar-border));
|
|
71
|
+
--color-sidebar-ring: hsl(var(--sidebar-ring));
|
|
72
|
+
|
|
73
|
+
--radius-lg: var(--radius);
|
|
74
|
+
--radius-md: calc(var(--radius) - 2px);
|
|
75
|
+
--radius-sm: calc(var(--radius) - 4px);
|
|
76
|
+
|
|
77
|
+
--animate-accordion-down: accordion-down 0.2s ease-out;
|
|
78
|
+
--animate-accordion-up: accordion-up 0.2s ease-out;
|
|
79
|
+
|
|
80
|
+
@keyframes accordion-down {
|
|
81
|
+
from {
|
|
82
|
+
height: 0;
|
|
83
|
+
}
|
|
84
|
+
to {
|
|
85
|
+
height: var(--radix-accordion-content-height);
|
|
86
|
+
}
|
|
87
|
+
}
|
|
88
|
+
@keyframes accordion-up {
|
|
89
|
+
from {
|
|
90
|
+
height: var(--radix-accordion-content-height);
|
|
91
|
+
}
|
|
92
|
+
to {
|
|
93
|
+
height: 0;
|
|
94
|
+
}
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
|
|
98
|
+
/* Border-color compatibility shim:
|
|
99
|
+
In Tailwind v3, the preflight set the default border colour to
|
|
100
|
+
`hsl(var(--border))`. v4 drops that — borders default to currentColor.
|
|
101
|
+
Many of our components/templates use `border` or `border-t/b/l/r` without
|
|
102
|
+
an explicit colour and rely on the v3 behaviour. Keep that working. */
|
|
103
|
+
@layer base {
|
|
104
|
+
*,
|
|
105
|
+
::after,
|
|
106
|
+
::before,
|
|
107
|
+
::backdrop,
|
|
108
|
+
::file-selector-button {
|
|
109
|
+
border-color: hsl(var(--border));
|
|
110
|
+
}
|
|
111
|
+
}
|
|
@@ -9,6 +9,6 @@ import type { Config } from "tailwindcss";
|
|
|
9
9
|
* export default { presets: [preset], content: ["./app/**\/*.{ts,tsx}", coreContentGlob] };
|
|
10
10
|
*/
|
|
11
11
|
export declare const coreContentGlob: string;
|
|
12
|
-
declare const
|
|
13
|
-
export default
|
|
12
|
+
declare const _default: Config;
|
|
13
|
+
export default _default;
|
|
14
14
|
//# sourceMappingURL=tailwind.preset.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind.preset.d.ts","sourceRoot":"","sources":["../src/tailwind.preset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"tailwind.preset.d.ts","sourceRoot":"","sources":["../src/tailwind.preset.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,aAAa,CAAC;AA2B1C;;;;;;;;GAQG;AACH,eAAO,MAAM,eAAe,QAA2C,CAAC;wBAiGpC,MAAM;AAA1C,wBAA2C"}
|
package/dist/tailwind.preset.js
CHANGED
|
@@ -1,11 +1,17 @@
|
|
|
1
1
|
/**
|
|
2
|
-
*
|
|
3
|
-
* Provides the standard HSL variable-based color system, shadcn/ui compatible
|
|
4
|
-
* theme tokens, sidebar colors, border radius, and accordion animations.
|
|
2
|
+
* @deprecated Legacy Tailwind v3 preset.
|
|
5
3
|
*
|
|
6
|
-
*
|
|
7
|
-
*
|
|
8
|
-
*
|
|
4
|
+
* The framework has moved to Tailwind v4. Templates should now use the shared
|
|
5
|
+
* stylesheet from CSS instead of a `tailwind.config.ts`:
|
|
6
|
+
*
|
|
7
|
+
* // app/global.css
|
|
8
|
+
* @import "tailwindcss";
|
|
9
|
+
* @import "@agent-native/core/styles/agent-native.css";
|
|
10
|
+
*
|
|
11
|
+
* No `tailwind.config.ts` or `postcss.config.js` is needed. The
|
|
12
|
+
* `@tailwindcss/vite` plugin is auto-injected by `defineConfig()`.
|
|
13
|
+
*
|
|
14
|
+
* This export is kept only for third-party templates still on the v3 PostCSS pipeline.
|
|
9
15
|
*/
|
|
10
16
|
import { join, dirname } from "path";
|
|
11
17
|
import { fileURLToPath } from "url";
|
|
@@ -24,6 +30,9 @@ const thisDir = typeof __dirname !== "undefined"
|
|
|
24
30
|
* export default { presets: [preset], content: ["./app/**\/*.{ts,tsx}", coreContentGlob] };
|
|
25
31
|
*/
|
|
26
32
|
export const coreContentGlob = join(thisDir, "client", "**/*.{js,mjs}");
|
|
33
|
+
// Cast to `any` for the inner config — Tailwind v4 ships stricter Config types
|
|
34
|
+
// than v3 (e.g. `darkMode: ["class"]` is v3-only). This file exists only to
|
|
35
|
+
// keep third-party v3 setups working until they migrate.
|
|
27
36
|
const preset = {
|
|
28
37
|
darkMode: ["class"],
|
|
29
38
|
content: [coreContentGlob],
|
|
@@ -103,7 +112,18 @@ const preset = {
|
|
|
103
112
|
},
|
|
104
113
|
},
|
|
105
114
|
},
|
|
106
|
-
plugins: [
|
|
115
|
+
plugins: [
|
|
116
|
+
// tailwindcss-animate is v3-only and is no longer a peer dep — guard the require.
|
|
117
|
+
(() => {
|
|
118
|
+
try {
|
|
119
|
+
return require("tailwindcss-animate");
|
|
120
|
+
}
|
|
121
|
+
catch {
|
|
122
|
+
return null;
|
|
123
|
+
}
|
|
124
|
+
})(),
|
|
125
|
+
require("@tailwindcss/typography"),
|
|
126
|
+
].filter(Boolean),
|
|
107
127
|
};
|
|
108
128
|
export default preset;
|
|
109
129
|
//# sourceMappingURL=tailwind.preset.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tailwind.preset.js","sourceRoot":"","sources":["../src/tailwind.preset.ts"],"names":[],"mappings":"AAEA
|
|
1
|
+
{"version":3,"file":"tailwind.preset.js","sourceRoot":"","sources":["../src/tailwind.preset.ts"],"names":[],"mappings":"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"}
|