@agent-native/core 0.119.1 → 0.119.2
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/corpus/README.md +2 -2
- package/corpus/core/CHANGELOG.md +15 -0
- package/corpus/core/package.json +1 -1
- package/corpus/core/src/a2a/client.ts +4 -0
- package/corpus/core/src/agent/production-agent.ts +1 -0
- package/corpus/core/src/client/AssistantChat.tsx +11 -50
- package/corpus/core/src/client/ErrorBoundary.tsx +25 -19
- package/corpus/core/src/client/agent-page/AgentTabFrame.tsx +1 -1
- package/corpus/core/src/client/agent-page/AgentTabsPage.tsx +23 -0
- package/corpus/core/src/client/components/ui/message-scroller.tsx +1 -9
- package/corpus/core/src/client/resources/ResourceTree.tsx +3 -3
- package/corpus/core/src/client/resources/ResourcesPanel.tsx +64 -60
- package/corpus/core/src/client/settings/AccountSettingsCard.tsx +228 -0
- package/corpus/core/src/client/settings/SecretsSection.tsx +7 -5
- package/corpus/core/src/client/settings/SettingsPanel.tsx +67 -244
- package/corpus/core/src/client/settings/SettingsTabsPage.tsx +88 -21
- package/corpus/core/src/client/settings/agent-settings-search.ts +0 -2
- package/corpus/core/src/client/settings/index.ts +7 -0
- package/corpus/core/src/client/vite-dev-recovery-script.ts +18 -1
- package/corpus/core/src/db/client.ts +65 -15
- package/corpus/core/src/db/index.ts +2 -0
- package/corpus/core/src/localization/default-messages.ts +1 -0
- package/corpus/core/src/server/email.ts +33 -1
- package/corpus/core/src/styles/agent-native.css +23 -0
- package/corpus/core/src/templates/default/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/core/src/templates/default/app/routes/settings.tsx +2 -0
- package/corpus/core/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/core/src/vite/client.ts +76 -8
- package/corpus/templates/analytics/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/analytics/app/components/dashboard/SqlChart.tsx +3 -1
- package/corpus/templates/analytics/app/components/layout/Layout.tsx +9 -13
- package/corpus/templates/analytics/app/components/layout/layout-route-policy.ts +2 -2
- package/corpus/templates/analytics/app/global.css +0 -5
- package/corpus/templates/analytics/app/hooks/use-navigation-state.ts +0 -13
- package/corpus/templates/analytics/app/lib/sql-query.ts +15 -2
- package/corpus/templates/analytics/app/pages/Settings.tsx +2 -24
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/SqlChartCard.tsx +6 -0
- package/corpus/templates/analytics/app/pages/adhoc/sql-dashboard/index.tsx +4 -0
- package/corpus/templates/analytics/app/pages/settings/settings-search.ts +1 -1
- package/corpus/templates/analytics/changelog/2026-07-23-ask-analytics-is-better-centered-with-a-quieter-chat-rail-an.md +6 -0
- package/corpus/templates/analytics/changelog/2026-07-23-daily-dashboard-emails-load-read-heavy-panels-reliably.md +6 -0
- package/corpus/templates/analytics/seeds/dashboards/agent-native-templates-first-party.json +2 -2
- package/corpus/templates/analytics/server/jobs/dashboard-report.ts +39 -5
- package/corpus/templates/analytics/server/lib/dashboard-report.ts +186 -62
- package/corpus/templates/analytics/server/lib/first-party-analytics.ts +3 -0
- package/corpus/templates/analytics/server/lib/first-party-metric-catalog.ts +18 -2
- package/corpus/templates/analytics/shared/dashboard-report-timeouts.ts +3 -0
- package/corpus/templates/assets/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/assets/app/components/layout/Layout.tsx +3 -4
- package/corpus/templates/assets/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/assets/app/global.css +0 -5
- package/corpus/templates/assets/app/hooks/use-navigation-state.ts +0 -22
- package/corpus/templates/assets/app/routes/settings.tsx +2 -0
- package/corpus/templates/assets/changelog/2026-07-23-create-and-chat-surfaces-are-better-centered-with-quieter-ch.md +6 -0
- package/corpus/templates/brain/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/brain/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/brain/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/brain/app/global.css +0 -9
- package/corpus/templates/brain/app/hooks/use-navigation-state.ts +0 -12
- package/corpus/templates/brain/app/i18n-data.ts +1 -0
- package/corpus/templates/brain/app/lib/settings-navigation.ts +1 -1
- package/corpus/templates/brain/app/routes/settings.tsx +21 -22
- package/corpus/templates/brain/changelog/2026-07-23-ask-brain-is-better-centered-with-quieter-chat-history-and-a.md +6 -0
- package/corpus/templates/calendar/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/calendar/app/pages/Settings.tsx +2 -0
- package/corpus/templates/chat/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/chat/app/components/layout/Layout.tsx +1 -1
- package/corpus/templates/chat/app/components/layout/Sidebar.tsx +1 -1
- package/corpus/templates/chat/app/hooks/use-navigation-state.ts +0 -15
- package/corpus/templates/chat/app/routes/settings.tsx +2 -0
- package/corpus/templates/chat/changelog/2026-07-23-full-page-chat-is-better-centered-with-quieter-chat-history-.md +6 -0
- package/corpus/templates/clips/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/clips/app/routes/_app.settings._index.tsx +2 -0
- package/corpus/templates/content/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/content/app/routes/_app.settings.tsx +2 -0
- package/corpus/templates/design/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/design/app/routes/settings.tsx +2 -0
- package/corpus/templates/dispatch/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/dispatch/app/routes/settings.tsx +2 -0
- package/corpus/templates/dispatch/changelog/2026-07-23-quieter-progressive-disclosure.md +6 -0
- package/corpus/templates/forms/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/forms/app/global.css +0 -5
- package/corpus/templates/forms/app/hooks/use-navigation-state.ts +0 -7
- package/corpus/templates/forms/app/root.tsx +1 -7
- package/corpus/templates/forms/app/routes/_app.settings.tsx +2 -0
- package/corpus/templates/forms/changelog/2026-07-23-ask-forms-is-better-centered-with-quieter-chat-history-and-a.md +6 -0
- package/corpus/templates/macros/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/macros/app/routes/settings.tsx +2 -0
- package/corpus/templates/mail/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/mail/app/pages/SettingsPage.tsx +3 -1
- package/corpus/templates/plan/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/plan/app/components/layout/Layout.tsx +2 -2
- package/corpus/templates/plan/app/components/layout/Sidebar.tsx +1 -13
- package/corpus/templates/plan/app/hooks/use-navigation-state.ts +0 -4
- package/corpus/templates/plan/app/routes/settings.tsx +2 -0
- package/corpus/templates/plan/changelog/2026-07-23-ask-plan-is-now-a-clean-full-page-chat-surface-with-better-c.md +6 -0
- package/corpus/templates/slides/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/templates/slides/app/routes/settings.tsx +2 -0
- package/corpus/templates/tasks/.agents/skills/frontend-design/SKILL.md +28 -0
- package/corpus/toolkit/CHANGELOG.md +6 -0
- package/corpus/toolkit/package.json +1 -1
- package/corpus/toolkit/src/chat-history.css +2 -2
- package/corpus/toolkit/src/composer/PromptComposer.tsx +0 -31
- package/corpus/toolkit/src/composer/RealtimeVoiceMode.tsx +7 -2
- package/corpus/toolkit/src/styles.css +183 -36
- package/dist/a2a/client.d.ts +2 -0
- package/dist/a2a/client.d.ts.map +1 -1
- package/dist/a2a/client.js +2 -0
- package/dist/a2a/client.js.map +1 -1
- package/dist/agent/production-agent.d.ts.map +1 -1
- package/dist/agent/production-agent.js +1 -0
- package/dist/agent/production-agent.js.map +1 -1
- package/dist/client/AssistantChat.d.ts.map +1 -1
- package/dist/client/AssistantChat.js +11 -42
- package/dist/client/AssistantChat.js.map +1 -1
- package/dist/client/ErrorBoundary.d.ts.map +1 -1
- package/dist/client/ErrorBoundary.js +3 -2
- package/dist/client/ErrorBoundary.js.map +1 -1
- package/dist/client/agent-page/AgentTabFrame.js +1 -1
- package/dist/client/agent-page/AgentTabFrame.js.map +1 -1
- package/dist/client/agent-page/AgentTabsPage.d.ts.map +1 -1
- package/dist/client/agent-page/AgentTabsPage.js +13 -1
- package/dist/client/agent-page/AgentTabsPage.js.map +1 -1
- package/dist/client/components/ui/message-scroller.d.ts.map +1 -1
- package/dist/client/components/ui/message-scroller.js +2 -2
- package/dist/client/components/ui/message-scroller.js.map +1 -1
- package/dist/client/resources/ResourceTree.js +2 -2
- 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 +11 -11
- package/dist/client/resources/ResourcesPanel.js.map +1 -1
- package/dist/client/settings/AccountSettingsCard.d.ts +9 -0
- package/dist/client/settings/AccountSettingsCard.d.ts.map +1 -0
- package/dist/client/settings/AccountSettingsCard.js +78 -0
- package/dist/client/settings/AccountSettingsCard.js.map +1 -0
- package/dist/client/settings/SecretsSection.d.ts.map +1 -1
- package/dist/client/settings/SecretsSection.js +2 -2
- package/dist/client/settings/SecretsSection.js.map +1 -1
- package/dist/client/settings/SettingsPanel.d.ts +3 -0
- package/dist/client/settings/SettingsPanel.d.ts.map +1 -1
- package/dist/client/settings/SettingsPanel.js +25 -77
- package/dist/client/settings/SettingsPanel.js.map +1 -1
- package/dist/client/settings/SettingsTabsPage.d.ts +5 -1
- package/dist/client/settings/SettingsTabsPage.d.ts.map +1 -1
- package/dist/client/settings/SettingsTabsPage.js +35 -9
- package/dist/client/settings/SettingsTabsPage.js.map +1 -1
- package/dist/client/settings/agent-settings-search.d.ts.map +1 -1
- package/dist/client/settings/agent-settings-search.js +0 -2
- package/dist/client/settings/agent-settings-search.js.map +1 -1
- package/dist/client/settings/index.d.ts +2 -1
- package/dist/client/settings/index.d.ts.map +1 -1
- package/dist/client/settings/index.js +2 -1
- package/dist/client/settings/index.js.map +1 -1
- package/dist/client/vite-dev-recovery-script.d.ts.map +1 -1
- package/dist/client/vite-dev-recovery-script.js +18 -1
- package/dist/client/vite-dev-recovery-script.js.map +1 -1
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/collab/awareness.d.ts.map +1 -1
- package/dist/collab/routes.d.ts +1 -1
- package/dist/collab/struct-routes.d.ts +1 -1
- package/dist/db/client.d.ts +18 -8
- package/dist/db/client.d.ts.map +1 -1
- package/dist/db/client.js +34 -11
- package/dist/db/client.js.map +1 -1
- package/dist/db/index.d.ts +1 -1
- package/dist/db/index.d.ts.map +1 -1
- package/dist/db/index.js.map +1 -1
- package/dist/localization/default-messages.d.ts +1 -0
- package/dist/localization/default-messages.d.ts.map +1 -1
- package/dist/localization/default-messages.js +1 -0
- package/dist/localization/default-messages.js.map +1 -1
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/routes.d.ts +3 -3
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +7 -7
- package/dist/provider-api/actions/provider-api.d.ts +7 -7
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/secrets/routes.d.ts +9 -9
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/email.d.ts +1 -0
- package/dist/server/email.d.ts.map +1 -1
- package/dist/server/email.js +29 -1
- package/dist/server/email.js.map +1 -1
- package/dist/server/realtime-token.d.ts +1 -1
- package/dist/styles/agent-native.css +23 -0
- package/dist/templates/chat/.agents/skills/frontend-design/SKILL.md +28 -0
- package/dist/templates/chat/app/components/layout/Layout.tsx +1 -1
- package/dist/templates/chat/app/components/layout/Sidebar.tsx +1 -1
- package/dist/templates/chat/app/hooks/use-navigation-state.ts +0 -15
- package/dist/templates/chat/app/routes/settings.tsx +2 -0
- package/dist/templates/chat/changelog/2026-07-23-full-page-chat-is-better-centered-with-quieter-chat-history-.md +6 -0
- package/dist/templates/default/.agents/skills/frontend-design/SKILL.md +28 -0
- package/dist/templates/default/app/routes/settings.tsx +2 -0
- package/dist/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +28 -0
- package/dist/vite/client.d.ts.map +1 -1
- package/dist/vite/client.js +68 -6
- package/dist/vite/client.js.map +1 -1
- package/package.json +2 -2
- package/src/a2a/client.ts +4 -0
- package/src/agent/production-agent.ts +1 -0
- package/src/client/AssistantChat.tsx +11 -50
- package/src/client/ErrorBoundary.tsx +25 -19
- package/src/client/agent-page/AgentTabFrame.tsx +1 -1
- package/src/client/agent-page/AgentTabsPage.tsx +23 -0
- package/src/client/components/ui/message-scroller.tsx +1 -9
- package/src/client/resources/ResourceTree.tsx +3 -3
- package/src/client/resources/ResourcesPanel.tsx +64 -60
- package/src/client/settings/AccountSettingsCard.tsx +228 -0
- package/src/client/settings/SecretsSection.tsx +7 -5
- package/src/client/settings/SettingsPanel.tsx +67 -244
- package/src/client/settings/SettingsTabsPage.tsx +88 -21
- package/src/client/settings/agent-settings-search.ts +0 -2
- package/src/client/settings/index.ts +7 -0
- package/src/client/vite-dev-recovery-script.ts +18 -1
- package/src/db/client.ts +65 -15
- package/src/db/index.ts +2 -0
- package/src/localization/default-messages.ts +1 -0
- package/src/server/email.ts +33 -1
- package/src/styles/agent-native.css +23 -0
- package/src/templates/chat/.agents/skills/frontend-design/SKILL.md +28 -0
- package/src/templates/chat/app/components/layout/Layout.tsx +1 -1
- package/src/templates/chat/app/components/layout/Sidebar.tsx +1 -1
- package/src/templates/chat/app/hooks/use-navigation-state.ts +0 -15
- package/src/templates/chat/app/routes/settings.tsx +2 -0
- package/src/templates/chat/changelog/2026-07-23-full-page-chat-is-better-centered-with-quieter-chat-history-.md +6 -0
- package/src/templates/default/.agents/skills/frontend-design/SKILL.md +28 -0
- package/src/templates/default/app/routes/settings.tsx +2 -0
- package/src/templates/workspace-core/.agents/skills/frontend-design/SKILL.md +28 -0
- package/src/vite/client.ts +76 -8
|
@@ -13,8 +13,8 @@
|
|
|
13
13
|
* Body: { json: any, fieldName?: string, type?: "map"|"array", requestSource?: string }
|
|
14
14
|
*/
|
|
15
15
|
export declare const postCollabJson: import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<{
|
|
16
|
-
ok?: undefined;
|
|
17
16
|
error: string;
|
|
17
|
+
ok?: undefined;
|
|
18
18
|
} | {
|
|
19
19
|
error?: undefined;
|
|
20
20
|
ok: boolean;
|
package/dist/db/client.d.ts
CHANGED
|
@@ -1,17 +1,23 @@
|
|
|
1
1
|
export type Dialect = "sqlite" | "postgres" | "d1";
|
|
2
|
+
export interface DbExecQuery {
|
|
3
|
+
sql: string;
|
|
4
|
+
args?: unknown[];
|
|
5
|
+
/**
|
|
6
|
+
* Client-side wall-clock budget for this statement. Use only for idempotent
|
|
7
|
+
* reads unless the caller can safely tolerate a late write completing.
|
|
8
|
+
*/
|
|
9
|
+
timeoutMs?: number;
|
|
10
|
+
/** Maximum connection-level attempts for this statement, including the first. */
|
|
11
|
+
maxAttempts?: number;
|
|
12
|
+
}
|
|
13
|
+
export type DbExecStatement = string | DbExecQuery;
|
|
2
14
|
export interface DbExec {
|
|
3
|
-
execute(sql:
|
|
4
|
-
sql: string;
|
|
5
|
-
args?: unknown[];
|
|
6
|
-
}): Promise<{
|
|
15
|
+
execute(sql: DbExecStatement): Promise<{
|
|
7
16
|
rows: any[];
|
|
8
17
|
rowsAffected: number;
|
|
9
18
|
}>;
|
|
10
19
|
transaction?<T>(fn: (tx: DbExec) => Promise<T>): Promise<T>;
|
|
11
|
-
atomicBatch?(statements: readonly
|
|
12
|
-
sql: string;
|
|
13
|
-
args?: unknown[];
|
|
14
|
-
})[]): Promise<Array<{
|
|
20
|
+
atomicBatch?(statements: readonly DbExecStatement[]): Promise<Array<{
|
|
15
21
|
rows: any[];
|
|
16
22
|
rowsAffected: number;
|
|
17
23
|
}>>;
|
|
@@ -124,6 +130,10 @@ export declare function isLocalDatabase(): boolean;
|
|
|
124
130
|
/** Returns BIGINT for Postgres (64-bit), INTEGER for SQLite (already 64-bit). */
|
|
125
131
|
export declare function intType(): string;
|
|
126
132
|
export declare function sqliteToPostgresParams(sql: string): string;
|
|
133
|
+
export declare function dbExecQueryBudget(statement: DbExecStatement): {
|
|
134
|
+
timeoutMs: number;
|
|
135
|
+
maxAttempts: number;
|
|
136
|
+
};
|
|
127
137
|
export declare function isConnectionError(err: any): boolean;
|
|
128
138
|
/**
|
|
129
139
|
* Classify database failures that should temporarily shed request load.
|
package/dist/db/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;AAEnD,MAAM,WAAW,MAAM;
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/db/client.ts"],"names":[],"mappings":"AAwBA,MAAM,MAAM,OAAO,GAAG,QAAQ,GAAG,UAAU,GAAG,IAAI,CAAC;AAEnD,MAAM,WAAW,WAAW;IAC1B,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,EAAE,CAAC;IACjB;;;OAGG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,iFAAiF;IACjF,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,WAAW,CAAC;AAEnD,MAAM,WAAW,MAAM;IACrB,OAAO,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC;QACrC,IAAI,EAAE,GAAG,EAAE,CAAC;QACZ,YAAY,EAAE,MAAM,CAAC;KACtB,CAAC,CAAC;IACH,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAAC;IAC5D,WAAW,CAAC,CACV,UAAU,EAAE,SAAS,eAAe,EAAE,GACrC,OAAO,CAAC,KAAK,CAAC;QAAE,IAAI,EAAE,GAAG,EAAE,CAAC;QAAC,YAAY,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC,CAAC;IACzD;;;;;OAKG;IACH,KAAK,CAAC,IAAI,OAAO,CAAC,IAAI,CAAC,CAAC;CACzB;AAED,MAAM,WAAW,YAAY;IAC3B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,GAAG,CAAC;CACjB;AAED;kFACkF;AAClF,wBAAgB,sBAAsB,IAAI,OAAO,CAMhD;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,cAAc,CAAC,QAAQ,SAAK,GAAG,MAAM,CASpD;AAED,8EAA8E;AAC9E,wBAAgB,oBAAoB,IAAI,MAAM,GAAG,SAAS,CASzD;AAMD;;;;;;;;;GASG;AACH,wBAAgB,uBAAuB,IAAI,MAAM,CAiBhD;AAED,wBAAgB,gBAAgB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAErD;AAED,wBAAgB,WAAW,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAEhD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAcxD;AAED,wBAAgB,oBAAoB,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,CAY5D;AA8BD,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IAAE,MAAM,EAAE,GAAG,CAAA;CAAE,CAAC,CAclE;AAED,wBAAsB,iBAAiB,IAAI,OAAO,CAAC;IACjD,MAAM,EAAE,GAAG,CAAC;IACZ,OAAO,EAAE,GAAG,CAAC;CACd,CAAC,CAQD;AAID,wBAAsB,eAAe,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,CAQ/D;AAED,wBAAsB,kBAAkB,IAAI,OAAO,CAAC,IAAI,CAAC,CAQxD;AAED,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,IAAI,CAAC,CAalE;AAED,wBAAsB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,CAAC,CAmBxE;AAED,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAQzD;AAMD;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,CAAC,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,EAAE,CAAC,GAAG,CAAC,CAO/D;AAMD;;;;GAIG;AACH,wBAAsB,eAAe,CAAC,CAAC,EACrC,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,IAAI,GAAE;IAAE,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,WAAW,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,OAAO,CAAA;CAAO,GAC3E,OAAO,CAAC,CAAC,CAAC,CAkBZ;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,cAAc,CAAC,CAAC,EAAE,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAOxE;AAqBD;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,GAAG,GAAG,OAAO,CAejD;AAQD,wBAAgB,UAAU,IAAI,OAAO,CA6BpC;AAED,wBAAgB,UAAU,IAAI,OAAO,CAEpC;AAoBD;;;;;;;;GAQG;AACH,wBAAgB,eAAe,IAAI,OAAO,CAKzC;AAED,iFAAiF;AACjF,wBAAgB,OAAO,IAAI,MAAM,CAEhC;AAUD,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAsH1D;AAWD,wBAAgB,iBAAiB,CAAC,SAAS,EAAE,eAAe,GAAG;IAC7D,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAgBA;AAqCD,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,GAAG,GAAG,OAAO,CAoBnD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,OAAO,GAAG,OAAO,CAgD9D;AAED,wBAAsB,sBAAsB,CAAC,CAAC,EAC5C,EAAE,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACpB,WAAW,SAAI,GACd,OAAO,CAAC,CAAC,CAAC,CAaZ;AAMD;;;;;;;;;;;GAWG;AACH,wBAAgB,aAAa,IAAI,MAAM,CAItC;AAgBD;;;;GAIG;AACH,wBAAsB,aAAa,CAAC,CAAC,EACnC,EAAE,EAAE,MAAM,EACV,GAAG,EAAE,MAAM,OAAO,CAAC,CAAC,CAAC,EACrB,EAAE,SAAkB,EACpB,SAAS,CAAC,EAAE,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,GACrC,OAAO,CAAC,CAAC,CAAC,CAyDZ;AAMD;;;;;;;;GAQG;AACH,wBAAgB,mBAAmB,IAAI,OAAO,CAQ7C;AAED;;;;;;;;GAQG;AACH,wBAAgB,aAAa,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAYlE;AAED;;;;;GAKG;AACH,wBAAgB,WAAW,IAAI,MAAM,CAepC;AAED;;;;GAIG;AACH,wBAAgB,+BAA+B,IAAI,OAAO,CAgCzD;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,GAAG,EAAE,OAAO,GAAG,MAAM,CAepD;AAED,wBAAgB,yBAAyB,CACvC,IAAI,EAAE,OAAO,EACb,KAAK,SAAY,GAChB,IAAI,CA2CN;AAmfD,wBAAsB,YAAY,CAAC,MAAM,GAAE,YAAiB,GAAG,OAAO,CAAC,MAAM,CAAC,CAE7E;AAiBD;;;GAGG;AACH,wBAAgB,SAAS,IAAI,MAAM,CA2GlC;AAED,qEAAqE;AACrE,wBAAsB,WAAW,IAAI,OAAO,CAAC,IAAI,CAAC,CAgBjD"}
|
package/dist/db/client.js
CHANGED
|
@@ -515,6 +515,21 @@ function sqlAndArgs(sql) {
|
|
|
515
515
|
? { rawSql: sql, args: [] }
|
|
516
516
|
: { rawSql: sql.sql, args: sql.args || [] };
|
|
517
517
|
}
|
|
518
|
+
export function dbExecQueryBudget(statement) {
|
|
519
|
+
if (typeof statement === "string") {
|
|
520
|
+
return { timeoutMs: dbOpTimeoutMs(), maxAttempts: 3 };
|
|
521
|
+
}
|
|
522
|
+
const timeoutMs = Number(statement.timeoutMs);
|
|
523
|
+
const maxAttempts = Number(statement.maxAttempts);
|
|
524
|
+
return {
|
|
525
|
+
timeoutMs: Number.isFinite(timeoutMs) && timeoutMs > 0
|
|
526
|
+
? Math.floor(timeoutMs)
|
|
527
|
+
: dbOpTimeoutMs(),
|
|
528
|
+
maxAttempts: Number.isFinite(maxAttempts) && maxAttempts > 0
|
|
529
|
+
? Math.floor(maxAttempts)
|
|
530
|
+
: 3,
|
|
531
|
+
};
|
|
532
|
+
}
|
|
518
533
|
function explicitTransaction(execute, begin = "BEGIN") {
|
|
519
534
|
return async (fn) => {
|
|
520
535
|
await execute(begin);
|
|
@@ -971,10 +986,11 @@ async function createDbExecInternal(config = {}, trackSingletonResources = false
|
|
|
971
986
|
attachNeonPoolErrorLogger(pool);
|
|
972
987
|
if (trackSingletonResources)
|
|
973
988
|
_neonPool = pool;
|
|
974
|
-
async function queryNeonClient(client, sql) {
|
|
989
|
+
async function queryNeonClient(client, sql, timeoutOverrideMs) {
|
|
975
990
|
const { rawSql, args } = sqlAndArgs(sql);
|
|
991
|
+
const { timeoutMs } = dbExecQueryBudget(sql);
|
|
976
992
|
const pgSql = sqliteToPostgresParams(rawSql);
|
|
977
|
-
const result = await withDbTimeout("query", () => client.query(pgSql, args),
|
|
993
|
+
const result = await withDbTimeout("query", () => client.query(pgSql, args), timeoutOverrideMs ?? timeoutMs);
|
|
978
994
|
return {
|
|
979
995
|
rows: result.rows,
|
|
980
996
|
rowsAffected: result.rowCount ?? 0,
|
|
@@ -982,13 +998,16 @@ async function createDbExecInternal(config = {}, trackSingletonResources = false
|
|
|
982
998
|
}
|
|
983
999
|
return {
|
|
984
1000
|
async execute(sql) {
|
|
1001
|
+
const { timeoutMs, maxAttempts } = dbExecQueryBudget(sql);
|
|
985
1002
|
if (bgHttp) {
|
|
986
1003
|
// HTTP-per-query path (poolQueryViaFetch=true): no pool.connect(), no
|
|
987
1004
|
// persistent socket to stall. queryNeonClient calls pool.query(),
|
|
988
1005
|
// which the driver routes over HTTP when poolQueryViaFetch is set.
|
|
989
|
-
return retryOnConnectionError(() => queryNeonClient(pool, sql));
|
|
1006
|
+
return retryOnConnectionError(() => queryNeonClient(pool, sql), maxAttempts);
|
|
990
1007
|
}
|
|
991
1008
|
const result = await retryOnConnectionError(async () => {
|
|
1009
|
+
const attemptStartedAt = Date.now();
|
|
1010
|
+
const remainingAttemptMs = () => Math.max(1, timeoutMs - (Date.now() - attemptStartedAt));
|
|
992
1011
|
// Bound the pooled-connection ACQUIRE, not just the query below.
|
|
993
1012
|
// Neon's pooler can stall on `connect()` when cold or exhausted,
|
|
994
1013
|
// and that happens BEFORE `client.query`, so the query-level
|
|
@@ -1003,7 +1022,7 @@ async function createDbExecInternal(config = {}, trackSingletonResources = false
|
|
|
1003
1022
|
if (acquireTimedOut)
|
|
1004
1023
|
c.release();
|
|
1005
1024
|
return c;
|
|
1006
|
-
}),
|
|
1025
|
+
}), remainingAttemptMs(), () => {
|
|
1007
1026
|
acquireTimedOut = true;
|
|
1008
1027
|
});
|
|
1009
1028
|
let released = false;
|
|
@@ -1014,7 +1033,7 @@ async function createDbExecInternal(config = {}, trackSingletonResources = false
|
|
|
1014
1033
|
client.release(err);
|
|
1015
1034
|
};
|
|
1016
1035
|
try {
|
|
1017
|
-
const result = await queryNeonClient(client, sql);
|
|
1036
|
+
const result = await queryNeonClient(client, sql, remainingAttemptMs());
|
|
1018
1037
|
releaseClient();
|
|
1019
1038
|
return result;
|
|
1020
1039
|
}
|
|
@@ -1022,7 +1041,7 @@ async function createDbExecInternal(config = {}, trackSingletonResources = false
|
|
|
1022
1041
|
releaseClient(isConnectionError(err) ? true : undefined);
|
|
1023
1042
|
throw err;
|
|
1024
1043
|
}
|
|
1025
|
-
});
|
|
1044
|
+
}, maxAttempts);
|
|
1026
1045
|
return {
|
|
1027
1046
|
rows: result.rows,
|
|
1028
1047
|
rowsAffected: result.rowsAffected,
|
|
@@ -1084,8 +1103,9 @@ async function createDbExecInternal(config = {}, trackSingletonResources = false
|
|
|
1084
1103
|
try {
|
|
1085
1104
|
const rawSql = typeof sql === "string" ? sql : sql.sql;
|
|
1086
1105
|
const args = typeof sql === "string" ? [] : sql.args || [];
|
|
1106
|
+
const { timeoutMs } = dbExecQueryBudget(sql);
|
|
1087
1107
|
const pgSql = sqliteToPostgresParams(rawSql);
|
|
1088
|
-
const result = await withDbTimeout("query", () => conn.unsafe(pgSql, args),
|
|
1108
|
+
const result = await withDbTimeout("query", () => conn.unsafe(pgSql, args), timeoutMs, () => {
|
|
1089
1109
|
timedOut = true;
|
|
1090
1110
|
disposePostgresPoolEventually(conn, "timed-out worker query");
|
|
1091
1111
|
});
|
|
@@ -1113,8 +1133,9 @@ async function createDbExecInternal(config = {}, trackSingletonResources = false
|
|
|
1113
1133
|
const tx = {
|
|
1114
1134
|
async execute(sql) {
|
|
1115
1135
|
const { rawSql, args } = sqlAndArgs(sql);
|
|
1136
|
+
const { timeoutMs } = dbExecQueryBudget(sql);
|
|
1116
1137
|
const pgSql = sqliteToPostgresParams(rawSql);
|
|
1117
|
-
const result = await withDbTimeout("query", () => txSql.unsafe(pgSql, args),
|
|
1138
|
+
const result = await withDbTimeout("query", () => txSql.unsafe(pgSql, args), timeoutMs);
|
|
1118
1139
|
return {
|
|
1119
1140
|
rows: Array.from(result),
|
|
1120
1141
|
rowsAffected: result.count ?? 0,
|
|
@@ -1154,12 +1175,13 @@ async function createDbExecInternal(config = {}, trackSingletonResources = false
|
|
|
1154
1175
|
return {
|
|
1155
1176
|
async execute(sql) {
|
|
1156
1177
|
const { rawSql, args } = sqlAndArgs(sql);
|
|
1178
|
+
const { timeoutMs, maxAttempts } = dbExecQueryBudget(sql);
|
|
1157
1179
|
const pgSql = sqliteToPostgresParams(rawSql);
|
|
1158
1180
|
const result = await retryOnConnectionError(() => {
|
|
1159
1181
|
const queryPool = pool;
|
|
1160
1182
|
const query = queryPool.unsafe(pgSql, args);
|
|
1161
|
-
return withDbTimeout("query", () => query,
|
|
1162
|
-
});
|
|
1183
|
+
return withDbTimeout("query", () => query, timeoutMs, () => recyclePool(queryPool));
|
|
1184
|
+
}, maxAttempts);
|
|
1163
1185
|
return {
|
|
1164
1186
|
rows: Array.from(result),
|
|
1165
1187
|
rowsAffected: result.count ?? 0,
|
|
@@ -1170,8 +1192,9 @@ async function createDbExecInternal(config = {}, trackSingletonResources = false
|
|
|
1170
1192
|
const tx = {
|
|
1171
1193
|
async execute(sql) {
|
|
1172
1194
|
const { rawSql, args } = sqlAndArgs(sql);
|
|
1195
|
+
const { timeoutMs } = dbExecQueryBudget(sql);
|
|
1173
1196
|
const pgSql = sqliteToPostgresParams(rawSql);
|
|
1174
|
-
const result = await withDbTimeout("query", () => txSql.unsafe(pgSql, args),
|
|
1197
|
+
const result = await withDbTimeout("query", () => txSql.unsafe(pgSql, args), timeoutMs);
|
|
1175
1198
|
return {
|
|
1176
1199
|
rows: Array.from(result),
|
|
1177
1200
|
rowsAffected: result.count ?? 0,
|