@agent-native/core 0.157.8 → 0.157.10
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 +1 -1
- package/corpus/templates/analytics/actions/purge-first-party-analytics-postgres.ts +26 -8
- package/corpus/templates/analytics/scripts/first-party-analytics-postgres-retention-dry-run.sql +261 -0
- package/corpus/templates/analytics/server/lib/first-party-analytics-backend.ts +3 -1
- package/corpus/templates/analytics/server/lib/first-party-analytics-purge.ts +75 -31
- package/corpus/templates/analytics/server/lib/workspace-feature-flags.ts +4 -1
- package/corpus/templates/analytics/server/plugins/db.ts +139 -0
- package/corpus/templates/slides/AGENTS.md +14 -10
- package/corpus/templates/slides/actions/export-pptx.ts +1311 -121
- package/corpus/templates/slides/actions/import-file.ts +28 -1
- package/corpus/templates/slides/actions/import-pptx.ts +69 -42
- package/corpus/templates/slides/app/components/deck/SlideRenderer.tsx +222 -29
- package/corpus/templates/slides/app/components/editor/ExportMenu.tsx +71 -0
- package/corpus/templates/slides/app/global.css +19 -1
- package/corpus/templates/slides/app/lib/export-google-slides-client.ts +44 -5
- package/corpus/templates/slides/app/lib/export-pdf-client.ts +13 -6
- package/corpus/templates/slides/app/lib/export-pptx-client.ts +601 -30
- package/corpus/templates/slides/app/pages/DeckEditor.tsx +18 -1
- package/corpus/templates/slides/server/handlers/import/html-converter.ts +1240 -22
- package/corpus/templates/slides/server/handlers/import/pdf-fidelity-parser.ts +329 -64
- package/corpus/templates/slides/server/handlers/import/pptx-assets.ts +24 -0
- package/corpus/templates/slides/server/lib/source-import.ts +10 -1
- package/corpus/templates/slides/shared/aspect-ratios.ts +13 -1
- package/dist/agent/harness/migrations.d.ts +4 -0
- package/dist/agent/harness/migrations.js +60 -0
- package/dist/agent/production-agent.d.ts +2 -0
- package/dist/agent/production-agent.js +15 -0
- package/dist/agent/run-loop-with-resume.d.ts +1 -0
- package/dist/agent/run-loop-with-resume.js +44 -12
- package/dist/agent/run-migrations.d.ts +8 -0
- package/dist/agent/run-migrations.js +61 -0
- package/dist/automations/service.d.ts +6 -0
- package/dist/automations/service.js +35 -0
- package/dist/chat-threads/migrations.d.ts +1 -0
- package/dist/chat-threads/migrations.js +1 -0
- package/dist/chat-threads/schema-migrations.d.ts +8 -0
- package/dist/chat-threads/schema-migrations.js +60 -0
- package/dist/cli/code-agent-connector.d.ts +4 -1
- package/dist/cli/code-agent-connector.js +154 -23
- package/dist/cli/code-agent-executor.js +255 -13
- package/dist/cli/code-agent-runs.d.ts +1 -0
- package/dist/cli/code-agent-runs.js +2 -1
- package/dist/cli/portal-workspace.d.ts +49 -0
- package/dist/cli/portal-workspace.js +320 -0
- package/dist/client/AssistantChat.d.ts +1 -1
- package/dist/client/AssistantChat.js +43 -61
- package/dist/client/ConnectBuilderCard.js +33 -5
- package/dist/client/agent-chat-adapter.js +4 -0
- package/dist/client/analytics-platform.d.ts +2 -0
- package/dist/client/analytics-platform.js +12 -0
- package/dist/client/analytics.d.ts +3 -0
- package/dist/client/analytics.js +10 -1
- package/dist/client/chat/index.d.ts +1 -0
- package/dist/client/chat/index.js +1 -0
- package/dist/client/chat/message-components.d.ts +2 -0
- package/dist/client/chat/message-components.js +11 -1
- package/dist/client/chat/run-recovery.d.ts +2 -1
- package/dist/client/chat/run-recovery.js +2 -2
- package/dist/client/chat-first/apps-rail.d.ts +1 -1
- package/dist/client/chat-first/apps-rail.js +11 -11
- package/dist/client/chat-first/surface-tabs.d.ts +1 -1
- package/dist/client/chat-first/surface-tabs.js +38 -36
- package/dist/client/chat-first/types.d.ts +5 -0
- package/dist/client/chat-first.d.ts +1 -1
- package/dist/client/chat-first.js +4 -4
- package/dist/client/desktop-local-code-change.d.ts +10 -0
- package/dist/client/desktop-local-code-change.js +16 -0
- package/dist/client/index.d.ts +1 -0
- package/dist/client/index.js +1 -0
- package/dist/client/observability/ThumbsFeedback.js +53 -26
- package/dist/client/observability/useObservability.d.ts +1 -1
- package/dist/client/observability/useObservability.js +6 -3
- package/dist/client/terminal/AgentTerminal.d.ts +9 -1
- package/dist/client/terminal/AgentTerminal.js +38 -3
- package/dist/client/terminal/index.d.ts +1 -1
- package/dist/client/terminal/index.js +1 -1
- package/dist/client/track.js +9 -1
- package/dist/client/use-action.js +3 -0
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/deploy/build.js +1 -1
- package/dist/feature-flags/a2a-action-route.js +4 -2
- package/dist/feature-flags/permissions.d.ts +2 -0
- package/dist/feature-flags/permissions.js +6 -1
- package/dist/ingestion/pptx.d.ts +92 -1
- package/dist/ingestion/pptx.js +1180 -115
- package/dist/integrations/index.d.ts +3 -3
- package/dist/integrations/index.js +2 -2
- package/dist/integrations/plugin.js +95 -6
- package/dist/integrations/remote-commands-store.d.ts +5 -0
- package/dist/integrations/remote-commands-store.js +63 -22
- package/dist/integrations/remote-devices-store.d.ts +2 -1
- package/dist/integrations/remote-devices-store.js +46 -0
- package/dist/integrations/remote-types.d.ts +20 -0
- package/dist/jobs/actions/list-recurring-jobs.d.ts +3 -0
- package/dist/jobs/actions/list-recurring-jobs.js +5 -1
- package/dist/jobs/frontmatter.d.ts +16 -0
- package/dist/jobs/frontmatter.js +53 -0
- package/dist/jobs/remote-execution.d.ts +42 -0
- package/dist/jobs/remote-execution.js +287 -0
- package/dist/jobs/scheduler.js +102 -3
- package/dist/jobs/tools.js +50 -3
- package/dist/localization/core-messages/ar-SA.js +4 -0
- package/dist/localization/core-messages/de-DE.js +4 -0
- package/dist/localization/core-messages/en-US.d.ts +4 -0
- package/dist/localization/core-messages/en-US.js +4 -0
- package/dist/localization/core-messages/es-ES.js +4 -0
- package/dist/localization/core-messages/fr-FR.js +4 -0
- package/dist/localization/core-messages/hi-IN.js +4 -0
- package/dist/localization/core-messages/ja-JP.js +4 -0
- package/dist/localization/core-messages/ko-KR.js +4 -0
- package/dist/localization/core-messages/pt-BR.js +4 -0
- package/dist/localization/core-messages/zh-CN.js +4 -0
- package/dist/localization/core-messages/zh-TW.js +4 -0
- package/dist/localization/core-messages.d.ts +4 -0
- package/dist/notifications/routes.d.ts +3 -3
- package/dist/observability/feedback.js +40 -16
- package/dist/observability/routes.d.ts +6 -6
- package/dist/observability/routes.js +15 -3
- package/dist/observability/store.js +2 -0
- package/dist/observability/traces.js +5 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +16 -16
- package/dist/provider-api/actions/provider-api.d.ts +13 -13
- 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/action-routes.d.ts +7 -5
- package/dist/server/action-routes.js +13 -6
- package/dist/server/agent-chat-plugin.js +6 -0
- package/dist/server/agent-engine-api-key-route.d.ts +1 -1
- package/dist/server/agent-run-context.d.ts +1 -0
- package/dist/server/agent-run-context.js +9 -0
- package/dist/server/better-auth-instance.js +4 -0
- package/dist/server/core-routes-plugin.js +8 -1
- package/dist/server/realtime-voice.js +2 -1
- package/dist/server/release-migrations.js +16 -0
- package/dist/server/request-context.d.ts +2 -0
- package/dist/server/transcribe-voice.d.ts +1 -1
- package/dist/shared/analytics-platform.d.ts +6 -0
- package/dist/shared/analytics-platform.js +14 -0
- package/dist/shared/mcp-embed-headers.d.ts +1 -1
- package/dist/shared/mcp-embed-headers.js +1 -1
- package/dist/styles/agent-native.css +83 -103
- package/dist/terminal/cli-registry.js +5 -0
- package/dist/tracking/registry.js +9 -1
- package/dist/triggers/actions/list-automations.d.ts +3 -0
- package/dist/triggers/actions/list-automations.js +3 -0
- package/dist/triggers/actions/manage-automation.d.ts +9 -0
- package/dist/triggers/actions/manage-automation.js +14 -2
- package/dist/triggers/actions.js +82 -7
- package/dist/usage/migrations.d.ts +4 -0
- package/dist/usage/migrations.js +45 -0
- package/docs/content/template-content-developers.mdx +48 -0
- package/docs/content/toolkit-ui.mdx +57 -0
- package/package.json +3 -3
|
@@ -537,9 +537,21 @@ button[title="Open agent sidebar"] {
|
|
|
537
537
|
}
|
|
538
538
|
|
|
539
539
|
.fmd-autofit-scale {
|
|
540
|
+
transform-origin: top left;
|
|
541
|
+
}
|
|
542
|
+
|
|
543
|
+
/* Only apply the fit transform once autofit is actually shrinking content
|
|
544
|
+
(see SlideRenderer's `data-fmd-autofit-active`). Any non-"none" `transform`
|
|
545
|
+
value — even the identity transform this rule used to apply unconditionally
|
|
546
|
+
— creates a new containing block for `position: absolute` descendants
|
|
547
|
+
(CSS Transforms spec). Freeform slide objects are authored against the
|
|
548
|
+
full `.fmd-slide` box; an always-on transform here silently re-anchored
|
|
549
|
+
them to this layer's smaller, padding-inset box instead, shifting them
|
|
550
|
+
off-canvas. Scoping the transform to the active-fit state keeps the
|
|
551
|
+
common (no scaling needed) case free of a containing block at all. */
|
|
552
|
+
.fmd-autofit-scale[data-fmd-autofit-active] {
|
|
540
553
|
transform: translate(var(--fmd-fit-x, 0px), var(--fmd-fit-y, 0px))
|
|
541
554
|
scale(var(--fmd-fit-scale, 1));
|
|
542
|
-
transform-origin: top left;
|
|
543
555
|
}
|
|
544
556
|
|
|
545
557
|
.fmd-slide > [data-fmd-autofit-content] {
|
|
@@ -1084,8 +1096,14 @@ button[title="Open agent sidebar"] {
|
|
|
1084
1096
|
font-style: normal;
|
|
1085
1097
|
}
|
|
1086
1098
|
|
|
1099
|
+
/* An imported PPTX `a:srcRect` crop is rendered by oversizing the `<img>` past
|
|
1100
|
+
its `overflow: hidden` box (e.g. `width: 255%; left: -77%`), so both caps
|
|
1101
|
+
have to be lifted, not just the vertical one — `max-width: 100%` alone
|
|
1102
|
+
silently shrank the image back to its box while the negative `left` kept
|
|
1103
|
+
scrolling, leaving the visible crop window off the picture entirely. */
|
|
1087
1104
|
.slide-content .fmd-slide img {
|
|
1088
1105
|
border-radius: 0;
|
|
1106
|
+
max-width: none;
|
|
1089
1107
|
max-height: none;
|
|
1090
1108
|
margin: 0;
|
|
1091
1109
|
}
|
|
@@ -15,6 +15,40 @@ export type GoogleSlidesExportResult =
|
|
|
15
15
|
/** The export action should send the user through Google OAuth first. */
|
|
16
16
|
| { url: null; requiresConnection: true; reason: string };
|
|
17
17
|
|
|
18
|
+
export interface DeckPptxFile {
|
|
19
|
+
blob: Blob;
|
|
20
|
+
filename: string;
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
/**
|
|
24
|
+
* Renders the deck through the vector-capable server exporter — the only path
|
|
25
|
+
* that emits the source file's shapes as real `custGeom` geometry. Its
|
|
26
|
+
* positioned-object guard is rethrown verbatim so the caller can show it
|
|
27
|
+
* instead of quietly handing Google the rasterized browser export.
|
|
28
|
+
*/
|
|
29
|
+
export async function fetchDeckPptxFromServer(
|
|
30
|
+
deckId: string,
|
|
31
|
+
fallbackError: string,
|
|
32
|
+
): Promise<DeckPptxFile> {
|
|
33
|
+
const res = await fetch(`${appBasePath()}/api/exports/pptx`, {
|
|
34
|
+
method: "POST",
|
|
35
|
+
headers: { "Content-Type": "application/json" },
|
|
36
|
+
body: JSON.stringify({ deckId }),
|
|
37
|
+
});
|
|
38
|
+
if (!res.ok) {
|
|
39
|
+
const payload = (await res.json().catch(() => null)) as {
|
|
40
|
+
error?: string;
|
|
41
|
+
message?: string;
|
|
42
|
+
} | null;
|
|
43
|
+
throw new Error(payload?.error || payload?.message || fallbackError);
|
|
44
|
+
}
|
|
45
|
+
const disposition = res.headers.get("content-disposition");
|
|
46
|
+
return {
|
|
47
|
+
blob: await res.blob(),
|
|
48
|
+
filename: disposition?.match(/filename="?([^"]+)"?/i)?.[1] ?? "deck.pptx",
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
|
|
18
52
|
function triggerBlobDownload(blob: Blob, filename: string) {
|
|
19
53
|
const url = URL.createObjectURL(blob);
|
|
20
54
|
const a = document.createElement("a");
|
|
@@ -37,12 +71,17 @@ export async function exportDeckToGoogleSlides(
|
|
|
37
71
|
deckTitle: string,
|
|
38
72
|
slides: GoogleSlidesExportSlide[],
|
|
39
73
|
aspectRatio?: AspectRatio,
|
|
74
|
+
/**
|
|
75
|
+
* Overrides the browser exporter. Source-imported decks pass
|
|
76
|
+
* `fetchDeckPptxFromServer`: dom-to-pptx ships no custGeom support, so the
|
|
77
|
+
* browser build would upload PNG rasterizations of the very shapes Google
|
|
78
|
+
* Slides can otherwise keep editable.
|
|
79
|
+
*/
|
|
80
|
+
buildPptx?: () => Promise<DeckPptxFile>,
|
|
40
81
|
): Promise<GoogleSlidesExportResult> {
|
|
41
|
-
const { blob, filename } = await
|
|
42
|
-
|
|
43
|
-
slides,
|
|
44
|
-
aspectRatio,
|
|
45
|
-
);
|
|
82
|
+
const { blob, filename } = await (buildPptx
|
|
83
|
+
? buildPptx()
|
|
84
|
+
: buildDeckPptxBlob(deckTitle, slides, aspectRatio));
|
|
46
85
|
|
|
47
86
|
const form = new FormData();
|
|
48
87
|
form.append("file", blob, filename);
|
|
@@ -123,12 +123,19 @@ export function findSlideExportSource(
|
|
|
123
123
|
}
|
|
124
124
|
|
|
125
125
|
// A given slide can appear multiple times (sidebar thumbnail + active
|
|
126
|
-
// editor canvas)
|
|
127
|
-
//
|
|
128
|
-
//
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
)
|
|
126
|
+
// editor canvas). Rank on the *rendered* width, not `offsetWidth`:
|
|
127
|
+
// `offsetWidth` ignores CSS transforms, so a sidebar thumbnail shrunk by
|
|
128
|
+
// `scale()` reports the same 960 as the canvas it mirrors. That tie left
|
|
129
|
+
// the strict `>` below returning `candidates[0]` — document order, i.e.
|
|
130
|
+
// the thumbnail — so exports captured the low-fidelity copy.
|
|
131
|
+
// `getBoundingClientRect().width` sees through the transform and picks the
|
|
132
|
+
// real canvas; `offsetWidth` only breaks a genuine rendered-width tie.
|
|
133
|
+
return candidates.reduce((best, el) => {
|
|
134
|
+
const elWidth = el.getBoundingClientRect().width;
|
|
135
|
+
const bestWidth = best.getBoundingClientRect().width;
|
|
136
|
+
if (elWidth !== bestWidth) return elWidth > bestWidth ? el : best;
|
|
137
|
+
return el.offsetWidth > best.offsetWidth ? el : best;
|
|
138
|
+
});
|
|
132
139
|
}
|
|
133
140
|
|
|
134
141
|
export async function exportDeckAsPdf(
|