@agent-native/core 0.214.0 → 0.217.0
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/dist/action.js +54 -1
- package/dist/agent/actions/disconnect-chatgpt-subscription.js +5 -0
- package/dist/agent/actions/get-agentkit-capabilities.js +3 -3
- package/dist/agent/actions/manage-builder-connection.js +5 -0
- package/dist/agent/actions/manage-provider-key-policy.js +5 -0
- package/dist/agent/actions/manage-provider-models.js +5 -0
- package/dist/agent/actions/manage-service-providers.js +5 -0
- package/dist/agent/actions/select-chatgpt-subscription-account.js +5 -0
- package/dist/agent/context-xray/actions/context-evict.js +5 -0
- package/dist/agent/context-xray/actions/context-pin.js +5 -0
- package/dist/agent/context-xray/actions/context-report.js +5 -0
- package/dist/agent/context-xray/actions/context-restore.js +5 -0
- package/dist/agent/execution-fence.d.ts +1 -0
- package/dist/agent/execution-fence.js +5 -0
- package/dist/agent/production-agent.d.ts +35 -2
- package/dist/agent/production-agent.js +629 -32
- package/dist/agent/run-manager.d.ts +2 -0
- package/dist/agent/run-manager.js +397 -115
- package/dist/agent/run-slot-lock.d.ts +2 -0
- package/dist/agent/run-slot-lock.js +6 -0
- package/dist/agent/run-store.d.ts +5 -0
- package/dist/agent/run-store.js +423 -156
- package/dist/agent/thread-data-builder.js +27 -5
- package/dist/agent/types.d.ts +6 -12
- package/dist/agentkit/capabilities.d.ts +1 -1
- package/dist/app-config/analytics.js +1 -1
- package/dist/application-state/store.d.ts +5 -0
- package/dist/application-state/store.js +26 -0
- package/dist/automation/index.d.ts +1 -1
- package/dist/chat-threads/schema-migrations.js +17 -0
- package/dist/chat-threads/store.d.ts +21 -1
- package/dist/chat-threads/store.js +223 -41
- package/dist/cli/skills-content/turn-into-app-skill.d.ts +1 -1
- package/dist/cli/skills-content/turn-into-app-skill.js +20 -18
- package/dist/cli/templates-meta.js +14 -0
- package/dist/client/analytics-session.d.ts +7 -0
- package/dist/client/analytics-session.js +27 -1
- package/dist/client/analytics.js +276 -31
- package/dist/client/chat/agentkit-agent-native.js +79 -3
- package/dist/client/chat/agentkit-protocol.js +80 -42
- package/dist/client/chat/runtime.d.ts +5 -1
- package/dist/client/chat/runtime.js +46 -3
- package/dist/client/consent.d.ts +48 -0
- package/dist/client/consent.js +413 -0
- package/dist/client/onboarding/index.d.ts +1 -0
- package/dist/client/onboarding/index.js +1 -0
- package/dist/client/onboarding/use-onboarding-checklist.d.ts +23 -0
- package/dist/client/onboarding/use-onboarding-checklist.js +115 -0
- package/dist/client/review/use-review.d.ts +2 -0
- package/dist/client/review/use-review.js +28 -1
- package/dist/client/session-replay.d.ts +1 -1
- package/dist/client/session-replay.js +142 -3
- package/dist/client/sharing/useResourceAccessGate.d.ts +3 -2
- package/dist/client/sharing/useResourceAccessGate.js +9 -1
- package/dist/client/use-chat-thread-list.d.ts +2 -0
- package/dist/client/use-chat-thread-list.js +12 -2
- package/dist/client/use-chat-threads.d.ts +1 -0
- package/dist/client/use-chat-threads.js +2 -0
- package/dist/collab/awareness.d.ts +2 -2
- package/dist/connections/catalog.d.ts +5 -5
- package/dist/connections/catalog.js +22 -3
- package/dist/data-widgets/index.d.ts +36 -2
- package/dist/data-widgets/index.js +94 -6
- package/dist/db/migrations.js +4 -1
- package/dist/db/schema-snapshot.generated.js +8 -1
- package/dist/feature-flags/actions/set-feature-flag.js +5 -0
- package/dist/feature-flags/index.d.ts +1 -1
- package/dist/feature-flags/index.js +1 -1
- package/dist/feature-flags/store.d.ts +12 -0
- package/dist/feature-flags/store.js +79 -7
- package/dist/file-upload/actions/manage-file-storage.js +5 -0
- package/dist/file-upload/actions/upload-image.d.ts +1 -1
- package/dist/file-upload/actions/upload-image.js +5 -0
- package/dist/history/actions/create-resource-version.js +5 -0
- package/dist/history/actions/restore-resource-version.js +5 -0
- package/dist/ingestion/index.d.ts +1 -1
- package/dist/ingestion/index.js +1 -1
- package/dist/ingestion/pptx.d.ts +11 -0
- package/dist/ingestion/pptx.js +81 -1
- package/dist/integrations/actions/manage-messaging-channel.js +5 -0
- package/dist/jobs/actions/manage-recurring-job.d.ts +1 -1
- package/dist/jobs/scheduler.js +17 -1
- package/dist/labs/actions/set-lab.js +5 -0
- package/dist/localization/actions/set-localization-preference.js +5 -0
- package/dist/localization/consent-banner-messages.d.ts +16 -0
- package/dist/localization/consent-banner-messages.js +149 -0
- package/dist/localization/core-messages.js +4 -0
- package/dist/localization/default-messages.d.ts +1 -0
- package/dist/localization/default-messages.js +2 -0
- package/dist/mcp/screen-memory-stdio.d.ts +7 -7
- package/dist/notifications/routes.d.ts +2 -2
- package/dist/observability/actions/save-observability-instruction-update.js +5 -0
- package/dist/observability/actions/save-observability-review-summary.js +5 -0
- package/dist/observability/routes.d.ts +6 -6
- package/dist/onboarding/index.d.ts +2 -1
- package/dist/onboarding/index.js +1 -0
- package/dist/onboarding/plugin.js +55 -46
- package/dist/onboarding/status.d.ts +15 -0
- package/dist/onboarding/status.js +59 -0
- package/dist/onboarding/types.d.ts +12 -0
- package/dist/onboarding/types.js +2 -1
- package/dist/org/workspace-app-access.js +19 -9
- package/dist/progress/routes.d.ts +1 -1
- package/dist/provider-api/actions/custom-provider-registration.d.ts +16 -16
- package/dist/provider-api/actions/provider-api.d.ts +11 -11
- package/dist/provider-api/corpus-jobs.d.ts +2 -2
- package/dist/provider-api/index.js +9 -2
- package/dist/resources/handlers.d.ts +1 -1
- package/dist/review/actions/consume-review-feedback.js +5 -0
- package/dist/review/actions/create-review-comment.js +5 -0
- package/dist/review/actions/delete-review-comment.js +5 -0
- package/dist/review/actions/react-to-review-comment.js +5 -0
- package/dist/review/actions/reply-review-comment.js +5 -0
- package/dist/review/actions/resolve-review-thread.js +5 -0
- package/dist/review/actions/send-review-thread-to-agent.js +5 -0
- package/dist/review/actions/set-review-status.js +5 -0
- package/dist/review/actions/set-review-thread-muted.js +5 -0
- package/dist/review/actions/set-review-thread-unread.js +5 -0
- package/dist/review/actions/set-review-threads-unread.js +5 -0
- package/dist/review/actions/update-review-comment-anchor.js +5 -0
- package/dist/review/actions/update-review-comment.js +5 -0
- package/dist/review/suggestions/actions.js +60 -21
- package/dist/review/suggestions/store.d.ts +2 -0
- package/dist/review/suggestions/store.js +28 -0
- package/dist/secrets/actions/delete-api-key.js +5 -0
- package/dist/secrets/routes.d.ts +6 -6
- package/dist/server/agent-capabilities.js +13 -6
- package/dist/server/agent-chat/context-tools.js +63 -2
- package/dist/server/agent-chat-plugin.d.ts +2 -0
- package/dist/server/agent-chat-plugin.js +242 -54
- package/dist/server/agent-engine-default-model-route.d.ts +1 -1
- package/dist/server/agent-engine-ollama-models-route.d.ts +1 -1
- package/dist/server/analytics.d.ts +0 -1
- package/dist/server/analytics.js +81 -20
- package/dist/server/application-state-maintenance.d.ts +2 -0
- package/dist/server/application-state-maintenance.js +2 -0
- package/dist/server/attribution.d.ts +14 -0
- package/dist/server/attribution.js +62 -2
- package/dist/server/auth.js +7 -0
- package/dist/server/builder-api-auth.d.ts +7 -0
- package/dist/server/builder-api-auth.js +24 -0
- package/dist/server/builder-oauth.d.ts +5 -1
- package/dist/server/builder-oauth.js +5 -0
- package/dist/server/consent-route.d.ts +41 -0
- package/dist/server/consent-route.js +102 -0
- package/dist/server/core-routes-plugin.d.ts +1 -1
- package/dist/server/first-touch-route.d.ts +39 -0
- package/dist/server/first-touch-route.js +115 -0
- package/dist/server/index.d.ts +2 -1
- package/dist/server/index.js +2 -1
- package/dist/server/queued-submission-inbox-drain.d.ts +9 -0
- package/dist/server/queued-submission-inbox-drain.js +12 -0
- package/dist/server/request-origin.d.ts +6 -0
- package/dist/server/request-origin.js +12 -0
- package/dist/settings/org-settings.d.ts +2 -1
- package/dist/settings/org-settings.js +4 -1
- package/dist/settings/store.d.ts +8 -0
- package/dist/settings/store.js +14 -5
- package/dist/shared/consent.d.ts +33 -0
- package/dist/shared/consent.js +149 -0
- package/dist/shared/first-touch-persistence.d.ts +31 -0
- package/dist/shared/first-touch-persistence.js +53 -0
- package/dist/sharing/actions/set-resource-visibility.js +5 -0
- package/dist/sharing/actions/share-resource.js +5 -0
- package/dist/sharing/actions/unshare-resource.js +5 -0
- package/dist/templates/chat/.agents/skills/actions/references/action-fields.md +1 -1
- package/dist/templates/default/.agents/skills/actions/references/action-fields.md +1 -1
- package/dist/templates/factory/.agents/skills/review-latest-feedback/SKILL.md +36 -80
- package/dist/templates/factory/.agents/skills/review-latest-feedback/references/channel-inventory.md +54 -16
- package/dist/templates/factory/.agents/skills/review-latest-feedback/references/slack-reaction-replies.md +50 -73
- package/dist/templates/headless/.agents/skills/actions/references/action-fields.md +1 -1
- package/dist/templates/workspace-core/.agents/skills/actions/references/action-fields.md +1 -1
- package/dist/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +20 -18
- package/dist/triggers/actions/manage-automation.d.ts +4 -4
- package/dist/usage/actions/get-usage-metrics.js +27 -4
- package/dist/usage/actions/manage-usage-alert.js +5 -0
- package/dist/vite/client.js +8 -6
- package/dist/workspace-connections/actions/bulk-update-workspace-user-groups.js +5 -0
- package/dist/workspace-connections/actions/delete-workspace-user-group.js +5 -0
- package/dist/workspace-connections/actions/upsert-workspace-user-group.js +5 -0
- package/docs/content/actions-access-control.mdx +8 -8
- package/docs/content/actions-defining.mdx +9 -8
- package/docs/content/deployment-environment-variables.mdx +1 -1
- package/docs/content/environment-variables.mdx +1 -1
- package/docs/content/template-design-developers.mdx +9 -9
- package/docs/content/template-design-features.mdx +1 -3
- package/docs/content/turn-into-app.mdx +4 -0
- package/package.json +6 -3
- package/src/templates/chat/.agents/skills/actions/references/action-fields.md +1 -1
- package/src/templates/default/.agents/skills/actions/references/action-fields.md +1 -1
- package/src/templates/factory/.agents/skills/review-latest-feedback/SKILL.md +36 -80
- package/src/templates/factory/.agents/skills/review-latest-feedback/references/channel-inventory.md +54 -16
- package/src/templates/factory/.agents/skills/review-latest-feedback/references/slack-reaction-replies.md +50 -73
- package/src/templates/headless/.agents/skills/actions/references/action-fields.md +1 -1
- package/src/templates/workspace-core/.agents/skills/actions/references/action-fields.md +1 -1
- package/src/templates/workspace-core/.agents/skills/turn-into-app/SKILL.md +20 -18
|
@@ -16,6 +16,11 @@ const schema = z
|
|
|
16
16
|
export default defineAction({
|
|
17
17
|
description: "Restore a resource from a reusable version-history snapshot.",
|
|
18
18
|
schema,
|
|
19
|
+
mcpAnnotations: {
|
|
20
|
+
readOnlyHint: false,
|
|
21
|
+
destructiveHint: true,
|
|
22
|
+
openWorldHint: false,
|
|
23
|
+
},
|
|
19
24
|
run: async (args, ctx) => {
|
|
20
25
|
const actionCtx = ctx;
|
|
21
26
|
const scope = {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { acquireIngestionLease, assertInventoryComplete, consumeIngestionBudget, createIngestionBudgetState, createIngestionCheckpoint, ingestionBudgetStopReason, releaseIngestionLease, renewIngestionLease, type AcquireIngestionLeaseInput, type AcquireIngestionLeaseResult, type IngestionBudgetLimits, type IngestionBudgetState, type IngestionBudgetStopReason, type IngestionCheckpoint, type IngestionLease, type IngestionPhase, } from "./orchestration.js";
|
|
2
2
|
export { detectOfficeDocumentType, normalizeDocumentText, parseOfficeDocument, type OfficeDocumentAst, type OfficeDocumentParser, type OfficeDocumentPart, type OfficeDocumentType, type ParsedOfficeDocument, type ParseOfficeDocumentInput, } from "./office.js";
|
|
3
3
|
export { detectSpreadsheetDocumentType, isSpreadsheetDocument, parseSpreadsheetDocument, type ParsedSpreadsheetDocument, type ParsedSpreadsheetSheet, type ParseSpreadsheetDocumentInput, type SpreadsheetDocumentType, } from "./spreadsheet.js";
|
|
4
|
-
export { parsePptxPresentation, type ParsedPptxImage, type ParsedPptxElement, type ParsedPptxGrid, type ParsedPptxParagraph, type ParsedPptxPresentation, type ParsedPptxSlide, type ParsedPptxTextRun, } from "./pptx.js";
|
|
4
|
+
export { DEFAULT_PPTX_IMAGE_BYTE_LIMITS, PptxImageByteLimitError, parsePptxPresentation, type ParsedPptxImage, type ParsedPptxElement, type ParsedPptxGrid, type ParsedPptxParagraph, type ParsedPptxPresentation, type ParsedPptxSlide, type ParsedPptxTextRun, type PptxImageByteLimits, } from "./pptx.js";
|
|
5
5
|
export { extractDocxSections, parseDocxDocument, sanitizeInertDocumentHtml, type ParsedDocxDocument, type ParsedDocxSection, } from "./docx.js";
|
|
6
6
|
export { compositeFigmaColors, extractFigmaTopLevelFrames, figmaColorToHex, figmaContrastRatio, summarizeFigmaFrame, summarizeFigmaNode, type FigmaContextNode, type FigmaFrameSummary, type FigmaRgba, type SummarizeFigmaNodeResult, } from "./figma.js";
|
|
7
7
|
export { cssBlendMode, gradientAngleDegreesFromHandles, gradientGeometryFromTransform, gradientRayAngleDegreesFromHandles, handlePositionsFromArrayTransform, handlePositionsFromObjectTransform, invert2x3, mat2x3FromArray, remapLinearStopPosition, resolveGradientHandles, vectorLength, type BlendModeResult, type BlendVerdict, type GradientGeometry, type GradientHandles, type GradientKind, type Mat2x3Array, type Mat2x3Object, type Vec2, } from "./figma-paint-math.js";
|
package/dist/ingestion/index.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
export { acquireIngestionLease, assertInventoryComplete, consumeIngestionBudget, createIngestionBudgetState, createIngestionCheckpoint, ingestionBudgetStopReason, releaseIngestionLease, renewIngestionLease, } from "./orchestration.js";
|
|
2
2
|
export { detectOfficeDocumentType, normalizeDocumentText, parseOfficeDocument, } from "./office.js";
|
|
3
3
|
export { detectSpreadsheetDocumentType, isSpreadsheetDocument, parseSpreadsheetDocument, } from "./spreadsheet.js";
|
|
4
|
-
export { parsePptxPresentation, } from "./pptx.js";
|
|
4
|
+
export { DEFAULT_PPTX_IMAGE_BYTE_LIMITS, PptxImageByteLimitError, parsePptxPresentation, } from "./pptx.js";
|
|
5
5
|
export { extractDocxSections, parseDocxDocument, sanitizeInertDocumentHtml, } from "./docx.js";
|
|
6
6
|
export { compositeFigmaColors, extractFigmaTopLevelFrames, figmaColorToHex, figmaContrastRatio, summarizeFigmaFrame, summarizeFigmaNode, } from "./figma.js";
|
|
7
7
|
export { cssBlendMode, gradientAngleDegreesFromHandles, gradientGeometryFromTransform, gradientRayAngleDegreesFromHandles, handlePositionsFromArrayTransform, handlePositionsFromObjectTransform, invert2x3, mat2x3FromArray, remapLinearStopPosition, resolveGradientHandles, vectorLength, } from "./figma-paint-math.js";
|
package/dist/ingestion/pptx.d.ts
CHANGED
|
@@ -155,7 +155,18 @@ export interface ParsedPptxPresentation {
|
|
|
155
155
|
};
|
|
156
156
|
hiddenSlideCount?: number;
|
|
157
157
|
}
|
|
158
|
+
export interface PptxImageByteLimits {
|
|
159
|
+
maxImageBytes: number;
|
|
160
|
+
maxTotalImageBytes: number;
|
|
161
|
+
}
|
|
162
|
+
export declare const DEFAULT_PPTX_IMAGE_BYTE_LIMITS: Readonly<PptxImageByteLimits>;
|
|
163
|
+
export declare class PptxImageByteLimitError extends Error {
|
|
164
|
+
readonly limit: "per-image" | "aggregate";
|
|
165
|
+
readonly maxBytes: number;
|
|
166
|
+
constructor(limit: "per-image" | "aggregate", maxBytes: number);
|
|
167
|
+
}
|
|
158
168
|
export declare function parsePptxPresentation(fileBuffer: Uint8Array, options?: {
|
|
159
169
|
includeHiddenSlides?: boolean;
|
|
170
|
+
imageByteLimits?: Readonly<PptxImageByteLimits>;
|
|
160
171
|
}): Promise<ParsedPptxPresentation>;
|
|
161
172
|
export declare function parsePptxSlideMetadata(value: unknown): ParsedPptxSlideMetadata;
|
package/dist/ingestion/pptx.js
CHANGED
|
@@ -1,5 +1,34 @@
|
|
|
1
1
|
import { loadOptionalPeer } from "../shared/optional-peer.js";
|
|
2
|
+
export const DEFAULT_PPTX_IMAGE_BYTE_LIMITS = Object.freeze({
|
|
3
|
+
maxImageBytes: 10 * 1024 * 1024,
|
|
4
|
+
maxTotalImageBytes: 50 * 1024 * 1024,
|
|
5
|
+
});
|
|
6
|
+
export class PptxImageByteLimitError extends Error {
|
|
7
|
+
limit;
|
|
8
|
+
maxBytes;
|
|
9
|
+
constructor(limit, maxBytes) {
|
|
10
|
+
super(`PPTX image data exceeded its ${limit} byte limit.`);
|
|
11
|
+
this.name = "PptxImageByteLimitError";
|
|
12
|
+
this.limit = limit;
|
|
13
|
+
this.maxBytes = maxBytes;
|
|
14
|
+
}
|
|
15
|
+
}
|
|
16
|
+
function resolvePptxImageByteLimits(limits) {
|
|
17
|
+
const configured = limits ?? DEFAULT_PPTX_IMAGE_BYTE_LIMITS;
|
|
18
|
+
if (!Number.isSafeInteger(configured.maxImageBytes) ||
|
|
19
|
+
configured.maxImageBytes < 0 ||
|
|
20
|
+
!Number.isSafeInteger(configured.maxTotalImageBytes) ||
|
|
21
|
+
configured.maxTotalImageBytes < 0) {
|
|
22
|
+
throw new RangeError("PPTX image byte limits must be non-negative integers.");
|
|
23
|
+
}
|
|
24
|
+
return {
|
|
25
|
+
maxImageBytes: configured.maxImageBytes,
|
|
26
|
+
maxTotalImageBytes: configured.maxTotalImageBytes,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
2
29
|
export async function parsePptxPresentation(fileBuffer, options = {}) {
|
|
30
|
+
const imageByteLimits = resolvePptxImageByteLimits(options.imageByteLimits);
|
|
31
|
+
const imageBudget = { totalBytes: 0, limits: imageByteLimits };
|
|
3
32
|
const dependencies = await loadPptxDependencies();
|
|
4
33
|
const loadZip = dependencies.loadZip.bind(dependencies);
|
|
5
34
|
const parseXml = dependencies.parseXml.bind(dependencies);
|
|
@@ -127,6 +156,7 @@ export async function parsePptxPresentation(fileBuffer, options = {}) {
|
|
|
127
156
|
themeCache,
|
|
128
157
|
masterInfoCache,
|
|
129
158
|
templateContextCache,
|
|
159
|
+
imageBudget,
|
|
130
160
|
})) ?? fallbackContext;
|
|
131
161
|
const number = slideNumber(slidePath);
|
|
132
162
|
elements = await parseSlideElements({
|
|
@@ -143,6 +173,7 @@ export async function parsePptxPresentation(fileBuffer, options = {}) {
|
|
|
143
173
|
placeholderDefaults: slideMasterContext.placeholderDefaults,
|
|
144
174
|
slideNumber: slides.length + 1,
|
|
145
175
|
tableStyles,
|
|
176
|
+
imageBudget,
|
|
146
177
|
});
|
|
147
178
|
images.unshift(...slideMasterContext.layerImages);
|
|
148
179
|
elements.unshift(...substituteSlideNumber(slideMasterContext.layerElements, slides.length + 1));
|
|
@@ -372,6 +403,7 @@ async function buildSlideTemplateContext(args) {
|
|
|
372
403
|
slideHeightEmu: args.slideHeightEmu,
|
|
373
404
|
images: layerImages,
|
|
374
405
|
colorContext,
|
|
406
|
+
imageBudget: args.imageBudget,
|
|
375
407
|
})));
|
|
376
408
|
}
|
|
377
409
|
return {
|
|
@@ -410,6 +442,7 @@ async function parseTemplateLayerElements(args) {
|
|
|
410
442
|
images,
|
|
411
443
|
tablesDegraded,
|
|
412
444
|
colorContext: args.colorContext,
|
|
445
|
+
imageBudget: args.imageBudget,
|
|
413
446
|
context: { matrix: IDENTITY_MAT, rotation: 0 },
|
|
414
447
|
})));
|
|
415
448
|
}
|
|
@@ -562,6 +595,7 @@ async function parseSlideElements(args) {
|
|
|
562
595
|
y: 0,
|
|
563
596
|
width: args.slideWidthEmu ?? 0,
|
|
564
597
|
height: args.slideHeightEmu ?? 0,
|
|
598
|
+
imageBudget: args.imageBudget,
|
|
565
599
|
});
|
|
566
600
|
if (image) {
|
|
567
601
|
args.images.unshift(image.image);
|
|
@@ -671,6 +705,7 @@ async function parseShapeFragment(fragment, args) {
|
|
|
671
705
|
width: transform.width,
|
|
672
706
|
height: transform.height,
|
|
673
707
|
crop: parseImageCrop(node),
|
|
708
|
+
imageBudget: args.imageBudget,
|
|
674
709
|
});
|
|
675
710
|
if (!image)
|
|
676
711
|
return [];
|
|
@@ -1652,8 +1687,9 @@ async function loadPptxImage(args) {
|
|
|
1652
1687
|
if (!imageFile)
|
|
1653
1688
|
return null;
|
|
1654
1689
|
const name = imagePath.split("/").at(-1) ?? "image";
|
|
1690
|
+
const imageData = await readPptxImageWithinBudget(imageFile, args.imageBudget);
|
|
1655
1691
|
const image = {
|
|
1656
|
-
data: new Uint8Array(
|
|
1692
|
+
data: new Uint8Array(imageData),
|
|
1657
1693
|
mimeType: imageMimeType(name),
|
|
1658
1694
|
name,
|
|
1659
1695
|
aspectRatio: args.width && args.height ? args.width / args.height : undefined,
|
|
@@ -1679,6 +1715,50 @@ async function loadPptxImage(args) {
|
|
|
1679
1715
|
},
|
|
1680
1716
|
};
|
|
1681
1717
|
}
|
|
1718
|
+
async function readPptxImageWithinBudget(imageFile, budget) {
|
|
1719
|
+
const stream = imageFile.nodeStream("nodebuffer");
|
|
1720
|
+
return await new Promise((resolve, reject) => {
|
|
1721
|
+
const chunks = [];
|
|
1722
|
+
let imageBytes = 0;
|
|
1723
|
+
let settled = false;
|
|
1724
|
+
const fail = (error) => {
|
|
1725
|
+
if (settled)
|
|
1726
|
+
return;
|
|
1727
|
+
settled = true;
|
|
1728
|
+
stream.destroy();
|
|
1729
|
+
reject(error);
|
|
1730
|
+
};
|
|
1731
|
+
stream.on("data", (chunk) => {
|
|
1732
|
+
if (settled)
|
|
1733
|
+
return;
|
|
1734
|
+
const nextImageBytes = imageBytes + chunk.byteLength;
|
|
1735
|
+
if (nextImageBytes > budget.limits.maxImageBytes) {
|
|
1736
|
+
fail(new PptxImageByteLimitError("per-image", budget.limits.maxImageBytes));
|
|
1737
|
+
return;
|
|
1738
|
+
}
|
|
1739
|
+
if (budget.totalBytes + nextImageBytes >
|
|
1740
|
+
budget.limits.maxTotalImageBytes) {
|
|
1741
|
+
fail(new PptxImageByteLimitError("aggregate", budget.limits.maxTotalImageBytes));
|
|
1742
|
+
return;
|
|
1743
|
+
}
|
|
1744
|
+
imageBytes = nextImageBytes;
|
|
1745
|
+
chunks.push(Buffer.isBuffer(chunk) ? chunk : Buffer.from(chunk));
|
|
1746
|
+
});
|
|
1747
|
+
stream.on("error", (error) => {
|
|
1748
|
+
if (settled)
|
|
1749
|
+
return;
|
|
1750
|
+
settled = true;
|
|
1751
|
+
reject(error);
|
|
1752
|
+
});
|
|
1753
|
+
stream.on("end", () => {
|
|
1754
|
+
if (settled)
|
|
1755
|
+
return;
|
|
1756
|
+
settled = true;
|
|
1757
|
+
budget.totalBytes += imageBytes;
|
|
1758
|
+
resolve(Buffer.concat(chunks, imageBytes));
|
|
1759
|
+
});
|
|
1760
|
+
});
|
|
1761
|
+
}
|
|
1682
1762
|
function flattenElementText(elements) {
|
|
1683
1763
|
const output = [];
|
|
1684
1764
|
const textElements = elements.filter((element) => element.kind === "text" && element.paragraphs);
|
|
@@ -44,6 +44,11 @@ export default defineAction({
|
|
|
44
44
|
}
|
|
45
45
|
},
|
|
46
46
|
}),
|
|
47
|
+
mcpAnnotations: {
|
|
48
|
+
readOnlyHint: false,
|
|
49
|
+
destructiveHint: true,
|
|
50
|
+
openWorldHint: true,
|
|
51
|
+
},
|
|
47
52
|
run: async ({ operation, platform, values }, ctx) => {
|
|
48
53
|
switch (operation) {
|
|
49
54
|
case "save-credentials":
|
|
@@ -13,10 +13,10 @@ declare const _default: import("../../action.js").ActionDefinition<{
|
|
|
13
13
|
enabled?: undefined;
|
|
14
14
|
nextRun?: undefined;
|
|
15
15
|
} | {
|
|
16
|
-
deleted?: undefined;
|
|
17
16
|
resourceId: string;
|
|
18
17
|
name: string;
|
|
19
18
|
enabled: boolean;
|
|
20
19
|
nextRun: string;
|
|
20
|
+
deleted?: undefined;
|
|
21
21
|
}>;
|
|
22
22
|
export default _default;
|
package/dist/jobs/scheduler.js
CHANGED
|
@@ -9,6 +9,7 @@ import { backgroundRunCutOffReason, checkBackgroundAutomationCredentials, isBack
|
|
|
9
9
|
import { nextOccurrence, isValidCron, describeCron, effectiveTimezone, } from "./cron.js";
|
|
10
10
|
import { buildJobResourceContent, isRecoveredFactoryJob, jobBelongsToApp, parseJobResource, patchJobFrontmatterFields, recoveredFactoryOwnerOrgId, } from "./frontmatter.js";
|
|
11
11
|
import { dispatchRemoteAutomation, finishRemoteAutomationHistory, getRemoteAutomationStatus, } from "./remote-execution.js";
|
|
12
|
+
import { automationRunOwnership } from "./run-history-ownership.js";
|
|
12
13
|
import { automationRunClaimLeaseMs, claimAutomationRun, finishAutomationRun, getAutomationRun, listAutomationRuns, RUNS_RETAINED_PER_AUTOMATION, } from "./run-history.js";
|
|
13
14
|
import { acquireAutomationSchedulerLease, recordAutomationSchedulerHealth, releaseAutomationSchedulerLease, renewAutomationSchedulerLease, AUTOMATION_SCHEDULER_LEASE_RENEWAL_MS, AutomationSchedulerLeaseLostError, } from "./scheduler-health.js";
|
|
14
15
|
import { reapStaleWork } from "./stale-reaper.js";
|
|
@@ -273,7 +274,7 @@ async function processRecurringJobsWithLease(deps, leaseSignal, assertCanStart)
|
|
|
273
274
|
meta.nextRun = nextOccurrence(meta.schedule, now, meta.timezone).toISOString();
|
|
274
275
|
}
|
|
275
276
|
if (await updateResource(resource, meta, body)) {
|
|
276
|
-
await recoverStaleAutomationHistory(resource
|
|
277
|
+
await recoverStaleAutomationHistory(staleHistoryOwner(resource, meta), resource.path, now);
|
|
277
278
|
}
|
|
278
279
|
continue;
|
|
279
280
|
}
|
|
@@ -462,6 +463,21 @@ async function processRecurringJobsWithLease(deps, leaseSignal, assertCanStart)
|
|
|
462
463
|
});
|
|
463
464
|
}
|
|
464
465
|
}
|
|
466
|
+
/**
|
|
467
|
+
* The owner the runner recorded this automation's history under: a legacy
|
|
468
|
+
* shared resource has no organization in its owner, so the resolved execution
|
|
469
|
+
* identity decides (the organization for an org-bound run, the creator
|
|
470
|
+
* otherwise). Recovery must query that owner, not the resource owner.
|
|
471
|
+
*/
|
|
472
|
+
function staleHistoryOwner(resource, meta) {
|
|
473
|
+
const effectiveRunAs = meta.runAs ?? "creator";
|
|
474
|
+
const executionOwner = effectiveRunAs === "creator"
|
|
475
|
+
? meta.createdBy?.trim() || resource.owner
|
|
476
|
+
: resource.owner;
|
|
477
|
+
return automationRunOwnership(resource.owner, executionOwner, recoveredFactoryOwnerOrgId(meta, resource.path, resource.owner) ??
|
|
478
|
+
meta.orgId ??
|
|
479
|
+
null).owner;
|
|
480
|
+
}
|
|
465
481
|
async function recoverStaleAutomationHistory(owner, path, now) {
|
|
466
482
|
const automation = path.replace(/^jobs\//, "").replace(/\.md$/, "");
|
|
467
483
|
const nowMs = now.getTime();
|
|
@@ -10,6 +10,11 @@ export default defineAction({
|
|
|
10
10
|
description: "Opt the current user into or out of one registered lab. Unset preferences inherit declared legacy flags or use the app-defined default; labs may expose new or unstable features.",
|
|
11
11
|
schema,
|
|
12
12
|
http: { method: "POST" },
|
|
13
|
+
mcpAnnotations: {
|
|
14
|
+
readOnlyHint: false,
|
|
15
|
+
destructiveHint: false,
|
|
16
|
+
openWorldHint: false,
|
|
17
|
+
},
|
|
13
18
|
run: async (args, ctx) => {
|
|
14
19
|
const email = ctx?.userEmail;
|
|
15
20
|
if (!email)
|
|
@@ -20,6 +20,11 @@ export default defineAction({
|
|
|
20
20
|
when: (_args, result) => normalizeActionChangeResult(result) !== null,
|
|
21
21
|
projectResult: (_args, result) => normalizeActionChangeResult(result),
|
|
22
22
|
},
|
|
23
|
+
mcpAnnotations: {
|
|
24
|
+
readOnlyHint: false,
|
|
25
|
+
destructiveHint: false,
|
|
26
|
+
openWorldHint: false,
|
|
27
|
+
},
|
|
23
28
|
run: async (args, ctx) => {
|
|
24
29
|
if (!ctx?.userEmail)
|
|
25
30
|
throw new Error("Not authenticated.");
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { type BuiltinLocaleCode, type LocaleCode } from "./shared.js";
|
|
2
|
+
export interface ConsentBannerMessages {
|
|
3
|
+
label: string;
|
|
4
|
+
message: string;
|
|
5
|
+
privacyPolicy: string;
|
|
6
|
+
necessary: string;
|
|
7
|
+
performance: string;
|
|
8
|
+
targeting: string;
|
|
9
|
+
rejectAll: string;
|
|
10
|
+
acceptAll: string;
|
|
11
|
+
save: string;
|
|
12
|
+
manage: string;
|
|
13
|
+
cookieSettings: string;
|
|
14
|
+
}
|
|
15
|
+
export declare const CONSENT_BANNER_MESSAGES: Record<BuiltinLocaleCode, ConsentBannerMessages>;
|
|
16
|
+
export declare function consentBannerMessagesForLocale(locale: LocaleCode): ConsentBannerMessages;
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
import { DEFAULT_LOCALE, isLocaleCode, } from "./shared.js";
|
|
2
|
+
export const CONSENT_BANNER_MESSAGES = {
|
|
3
|
+
"en-US": {
|
|
4
|
+
label: "Cookie preferences",
|
|
5
|
+
message: "We use cookies to measure how this site is used and which ads bring visitors here.",
|
|
6
|
+
privacyPolicy: "Privacy policy",
|
|
7
|
+
necessary: "Strictly necessary",
|
|
8
|
+
performance: "Analytics",
|
|
9
|
+
targeting: "Advertising and attribution",
|
|
10
|
+
rejectAll: "Reject all",
|
|
11
|
+
acceptAll: "Accept all",
|
|
12
|
+
save: "Save choices",
|
|
13
|
+
manage: "Manage settings",
|
|
14
|
+
cookieSettings: "Cookie settings",
|
|
15
|
+
},
|
|
16
|
+
"es-ES": {
|
|
17
|
+
label: "Preferencias de cookies",
|
|
18
|
+
message: "Usamos cookies para medir cómo se usa este sitio y qué anuncios traen visitantes.",
|
|
19
|
+
privacyPolicy: "Política de privacidad",
|
|
20
|
+
necessary: "Estrictamente necesarias",
|
|
21
|
+
performance: "Analítica",
|
|
22
|
+
targeting: "Publicidad y atribución",
|
|
23
|
+
rejectAll: "Rechazar todas",
|
|
24
|
+
acceptAll: "Aceptar todas",
|
|
25
|
+
save: "Guardar selección",
|
|
26
|
+
manage: "Gestionar ajustes",
|
|
27
|
+
cookieSettings: "Configuración de cookies",
|
|
28
|
+
},
|
|
29
|
+
"fr-FR": {
|
|
30
|
+
label: "Préférences de cookies",
|
|
31
|
+
message: "Nous utilisons des cookies pour mesurer l’utilisation de ce site et savoir quelles publicités amènent des visiteurs.",
|
|
32
|
+
privacyPolicy: "Politique de confidentialité",
|
|
33
|
+
necessary: "Strictement nécessaires",
|
|
34
|
+
performance: "Mesure d’audience",
|
|
35
|
+
targeting: "Publicité et attribution",
|
|
36
|
+
rejectAll: "Tout refuser",
|
|
37
|
+
acceptAll: "Tout accepter",
|
|
38
|
+
save: "Enregistrer mes choix",
|
|
39
|
+
manage: "Gérer les paramètres",
|
|
40
|
+
cookieSettings: "Paramètres des cookies",
|
|
41
|
+
},
|
|
42
|
+
"de-DE": {
|
|
43
|
+
label: "Cookie-Einstellungen",
|
|
44
|
+
message: "Wir verwenden Cookies, um zu messen, wie diese Website genutzt wird und welche Anzeigen Besucher hierher bringen.",
|
|
45
|
+
privacyPolicy: "Datenschutzerklärung",
|
|
46
|
+
necessary: "Unbedingt erforderlich",
|
|
47
|
+
performance: "Analyse",
|
|
48
|
+
targeting: "Werbung und Attribution",
|
|
49
|
+
rejectAll: "Alle ablehnen",
|
|
50
|
+
acceptAll: "Alle akzeptieren",
|
|
51
|
+
save: "Auswahl speichern",
|
|
52
|
+
manage: "Einstellungen verwalten",
|
|
53
|
+
cookieSettings: "Cookie-Einstellungen",
|
|
54
|
+
},
|
|
55
|
+
"pt-BR": {
|
|
56
|
+
label: "Preferências de cookies",
|
|
57
|
+
message: "Usamos cookies para medir como este site é usado e quais anúncios trazem visitantes.",
|
|
58
|
+
privacyPolicy: "Política de privacidade",
|
|
59
|
+
necessary: "Estritamente necessários",
|
|
60
|
+
performance: "Análise",
|
|
61
|
+
targeting: "Publicidade e atribuição",
|
|
62
|
+
rejectAll: "Rejeitar todos",
|
|
63
|
+
acceptAll: "Aceitar todos",
|
|
64
|
+
save: "Salvar escolhas",
|
|
65
|
+
manage: "Gerenciar configurações",
|
|
66
|
+
cookieSettings: "Configurações de cookies",
|
|
67
|
+
},
|
|
68
|
+
"ja-JP": {
|
|
69
|
+
label: "Cookie の設定",
|
|
70
|
+
message: "このサイトの利用状況と、どの広告から訪問者が来ているかを測定するために Cookie を使用しています。",
|
|
71
|
+
privacyPolicy: "プライバシーポリシー",
|
|
72
|
+
necessary: "必須",
|
|
73
|
+
performance: "分析",
|
|
74
|
+
targeting: "広告とアトリビューション",
|
|
75
|
+
rejectAll: "すべて拒否",
|
|
76
|
+
acceptAll: "すべて許可",
|
|
77
|
+
save: "選択を保存",
|
|
78
|
+
manage: "設定を管理",
|
|
79
|
+
cookieSettings: "Cookie の設定",
|
|
80
|
+
},
|
|
81
|
+
"ko-KR": {
|
|
82
|
+
label: "쿠키 환경설정",
|
|
83
|
+
message: "이 사이트의 이용 방식과 방문자를 데려오는 광고를 측정하기 위해 쿠키를 사용합니다.",
|
|
84
|
+
privacyPolicy: "개인정보 처리방침",
|
|
85
|
+
necessary: "필수",
|
|
86
|
+
performance: "분석",
|
|
87
|
+
targeting: "광고 및 어트리뷰션",
|
|
88
|
+
rejectAll: "모두 거부",
|
|
89
|
+
acceptAll: "모두 허용",
|
|
90
|
+
save: "선택 저장",
|
|
91
|
+
manage: "설정 관리",
|
|
92
|
+
cookieSettings: "쿠키 설정",
|
|
93
|
+
},
|
|
94
|
+
"zh-CN": {
|
|
95
|
+
label: "Cookie 偏好设置",
|
|
96
|
+
message: "我们使用 Cookie 来衡量本网站的使用情况,以及哪些广告带来了访客。",
|
|
97
|
+
privacyPolicy: "隐私政策",
|
|
98
|
+
necessary: "绝对必要",
|
|
99
|
+
performance: "分析",
|
|
100
|
+
targeting: "广告与归因",
|
|
101
|
+
rejectAll: "全部拒绝",
|
|
102
|
+
acceptAll: "全部接受",
|
|
103
|
+
save: "保存选择",
|
|
104
|
+
manage: "管理设置",
|
|
105
|
+
cookieSettings: "Cookie 设置",
|
|
106
|
+
},
|
|
107
|
+
"zh-TW": {
|
|
108
|
+
label: "Cookie 偏好設定",
|
|
109
|
+
message: "我們使用 Cookie 來衡量本網站的使用情況,以及哪些廣告帶來了訪客。",
|
|
110
|
+
privacyPolicy: "隱私權政策",
|
|
111
|
+
necessary: "絕對必要",
|
|
112
|
+
performance: "分析",
|
|
113
|
+
targeting: "廣告與歸因",
|
|
114
|
+
rejectAll: "全部拒絕",
|
|
115
|
+
acceptAll: "全部接受",
|
|
116
|
+
save: "儲存選擇",
|
|
117
|
+
manage: "管理設定",
|
|
118
|
+
cookieSettings: "Cookie 設定",
|
|
119
|
+
},
|
|
120
|
+
"hi-IN": {
|
|
121
|
+
label: "कुकी प्राथमिकताएँ",
|
|
122
|
+
message: "हम यह मापने के लिए कुकी का उपयोग करते हैं कि यह साइट कैसे उपयोग होती है और कौन-से विज्ञापन विज़िटर लाते हैं।",
|
|
123
|
+
privacyPolicy: "गोपनीयता नीति",
|
|
124
|
+
necessary: "पूरी तरह आवश्यक",
|
|
125
|
+
performance: "एनालिटिक्स",
|
|
126
|
+
targeting: "विज्ञापन और एट्रिब्यूशन",
|
|
127
|
+
rejectAll: "सभी अस्वीकार करें",
|
|
128
|
+
acceptAll: "सभी स्वीकार करें",
|
|
129
|
+
save: "विकल्प सहेजें",
|
|
130
|
+
manage: "सेटिंग प्रबंधित करें",
|
|
131
|
+
cookieSettings: "कुकी सेटिंग",
|
|
132
|
+
},
|
|
133
|
+
"ar-SA": {
|
|
134
|
+
label: "تفضيلات ملفات تعريف الارتباط",
|
|
135
|
+
message: "نستخدم ملفات تعريف الارتباط لقياس كيفية استخدام هذا الموقع والإعلانات التي تجلب الزوار إليه.",
|
|
136
|
+
privacyPolicy: "سياسة الخصوصية",
|
|
137
|
+
necessary: "ضرورية للغاية",
|
|
138
|
+
performance: "التحليلات",
|
|
139
|
+
targeting: "الإعلانات والإسناد",
|
|
140
|
+
rejectAll: "رفض الكل",
|
|
141
|
+
acceptAll: "قبول الكل",
|
|
142
|
+
save: "حفظ الاختيارات",
|
|
143
|
+
manage: "إدارة الإعدادات",
|
|
144
|
+
cookieSettings: "إعدادات ملفات تعريف الارتباط",
|
|
145
|
+
},
|
|
146
|
+
};
|
|
147
|
+
export function consentBannerMessagesForLocale(locale) {
|
|
148
|
+
return CONSENT_BANNER_MESSAGES[isLocaleCode(locale) ? locale : DEFAULT_LOCALE];
|
|
149
|
+
}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { agentResourcePackMessagesForLocale } from "./agent-resources-messages.js";
|
|
2
|
+
import { consentBannerMessagesForLocale } from "./consent-banner-messages.js";
|
|
2
3
|
import * as englishSupplementalMessages from "./core-messages/supplemental/en-US.js";
|
|
3
4
|
import { environmentBadgeMessagesForLocale } from "./environment-badge-messages.js";
|
|
4
5
|
import { iconPickerMessagesForLocale } from "./icon-picker-messages.js";
|
|
@@ -90,6 +91,7 @@ export async function loadCoreMessagesForLocale(locale) {
|
|
|
90
91
|
const supplementalMessages = await supplementalLoader();
|
|
91
92
|
return {
|
|
92
93
|
agentResources: agentResourcePackMessagesForLocale(locale),
|
|
94
|
+
consentBanner: consentBannerMessagesForLocale(locale),
|
|
93
95
|
environmentBadge: environmentBadgeMessagesForLocale(locale),
|
|
94
96
|
iconPicker: iconPickerMessagesForLocale(locale),
|
|
95
97
|
settings: {
|
|
@@ -100,6 +102,7 @@ export async function loadCoreMessagesForLocale(locale) {
|
|
|
100
102
|
}
|
|
101
103
|
const englishCoreMessages = {
|
|
102
104
|
agentResources: agentResourcePackMessagesForLocale(DEFAULT_LOCALE),
|
|
105
|
+
consentBanner: consentBannerMessagesForLocale(DEFAULT_LOCALE),
|
|
103
106
|
environmentBadge: englishSupplementalMessages.environmentBadgeMessages,
|
|
104
107
|
iconPicker: iconPickerMessagesForLocale(DEFAULT_LOCALE),
|
|
105
108
|
settings: {
|
|
@@ -112,6 +115,7 @@ export function coreMessagesForLocale(locale) {
|
|
|
112
115
|
return englishCoreMessages;
|
|
113
116
|
}
|
|
114
117
|
return {
|
|
118
|
+
consentBanner: consentBannerMessagesForLocale(locale),
|
|
115
119
|
environmentBadge: environmentBadgeMessagesForLocale(locale),
|
|
116
120
|
};
|
|
117
121
|
}
|
|
@@ -110,6 +110,7 @@ declare const messages: {
|
|
|
110
110
|
chatgptPlanUsageUnavailable: string;
|
|
111
111
|
};
|
|
112
112
|
};
|
|
113
|
+
consentBanner: import("./consent-banner-messages.js").ConsentBannerMessages;
|
|
113
114
|
environmentBadge: import("./environment-badge-messages.js").EnvironmentBadgeMessages;
|
|
114
115
|
workspaceFile: {
|
|
115
116
|
download: string;
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { PASSWORD_MIN_LENGTH_MESSAGE } from "../shared/password-policy.js";
|
|
2
|
+
import { CONSENT_BANNER_MESSAGES } from "./consent-banner-messages.js";
|
|
2
3
|
import { environmentBadgeMessages } from "./core-messages/supplemental/en-US.js";
|
|
3
4
|
import { ICON_PICKER_MESSAGES } from "./icon-picker-messages.js";
|
|
4
5
|
const messages = {
|
|
@@ -33,6 +34,7 @@ const messages = {
|
|
|
33
34
|
chatgptPlanUsageUnavailable: "OpenAI couldn’t check this ChatGPT plan’s usage limit. Check ChatGPT usage or try another model.",
|
|
34
35
|
},
|
|
35
36
|
},
|
|
37
|
+
consentBanner: CONSENT_BANNER_MESSAGES["en-US"],
|
|
36
38
|
environmentBadge: environmentBadgeMessages,
|
|
37
39
|
workspaceFile: {
|
|
38
40
|
download: "Download",
|
|
@@ -140,13 +140,13 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
140
140
|
clientHint?: undefined;
|
|
141
141
|
timestamp?: undefined;
|
|
142
142
|
chapterId?: undefined;
|
|
143
|
-
count?: undefined;
|
|
144
143
|
startAt?: undefined;
|
|
145
144
|
endAt?: undefined;
|
|
146
145
|
reason?: undefined;
|
|
147
146
|
includeMicrophone?: undefined;
|
|
148
147
|
includeSystemAudio?: undefined;
|
|
149
148
|
requestId?: undefined;
|
|
149
|
+
count?: undefined;
|
|
150
150
|
};
|
|
151
151
|
required?: undefined;
|
|
152
152
|
};
|
|
@@ -171,13 +171,13 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
171
171
|
clientHint?: undefined;
|
|
172
172
|
timestamp?: undefined;
|
|
173
173
|
chapterId?: undefined;
|
|
174
|
-
count?: undefined;
|
|
175
174
|
startAt?: undefined;
|
|
176
175
|
endAt?: undefined;
|
|
177
176
|
reason?: undefined;
|
|
178
177
|
includeMicrophone?: undefined;
|
|
179
178
|
includeSystemAudio?: undefined;
|
|
180
179
|
requestId?: undefined;
|
|
180
|
+
count?: undefined;
|
|
181
181
|
};
|
|
182
182
|
required?: undefined;
|
|
183
183
|
};
|
|
@@ -196,13 +196,13 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
196
196
|
clientHint?: undefined;
|
|
197
197
|
timestamp?: undefined;
|
|
198
198
|
chapterId?: undefined;
|
|
199
|
-
count?: undefined;
|
|
200
199
|
startAt?: undefined;
|
|
201
200
|
endAt?: undefined;
|
|
202
201
|
reason?: undefined;
|
|
203
202
|
includeMicrophone?: undefined;
|
|
204
203
|
includeSystemAudio?: undefined;
|
|
205
204
|
requestId?: undefined;
|
|
205
|
+
count?: undefined;
|
|
206
206
|
};
|
|
207
207
|
required?: undefined;
|
|
208
208
|
};
|
|
@@ -231,13 +231,13 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
231
231
|
};
|
|
232
232
|
timestamp?: undefined;
|
|
233
233
|
chapterId?: undefined;
|
|
234
|
-
count?: undefined;
|
|
235
234
|
startAt?: undefined;
|
|
236
235
|
endAt?: undefined;
|
|
237
236
|
reason?: undefined;
|
|
238
237
|
includeMicrophone?: undefined;
|
|
239
238
|
includeSystemAudio?: undefined;
|
|
240
239
|
requestId?: undefined;
|
|
240
|
+
count?: undefined;
|
|
241
241
|
};
|
|
242
242
|
};
|
|
243
243
|
} | {
|
|
@@ -260,12 +260,12 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
260
260
|
description: string;
|
|
261
261
|
};
|
|
262
262
|
chapterId?: undefined;
|
|
263
|
-
count?: undefined;
|
|
264
263
|
startAt?: undefined;
|
|
265
264
|
endAt?: undefined;
|
|
266
265
|
includeMicrophone?: undefined;
|
|
267
266
|
includeSystemAudio?: undefined;
|
|
268
267
|
requestId?: undefined;
|
|
268
|
+
count?: undefined;
|
|
269
269
|
};
|
|
270
270
|
};
|
|
271
271
|
} | {
|
|
@@ -317,7 +317,6 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
317
317
|
clientHint?: undefined;
|
|
318
318
|
timestamp?: undefined;
|
|
319
319
|
chapterId?: undefined;
|
|
320
|
-
count?: undefined;
|
|
321
320
|
startAt: {
|
|
322
321
|
type: string;
|
|
323
322
|
description: string;
|
|
@@ -337,6 +336,7 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
337
336
|
type: string;
|
|
338
337
|
};
|
|
339
338
|
requestId?: undefined;
|
|
339
|
+
count?: undefined;
|
|
340
340
|
};
|
|
341
341
|
};
|
|
342
342
|
} | {
|
|
@@ -352,7 +352,6 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
352
352
|
clientHint?: undefined;
|
|
353
353
|
timestamp?: undefined;
|
|
354
354
|
chapterId?: undefined;
|
|
355
|
-
count?: undefined;
|
|
356
355
|
startAt?: undefined;
|
|
357
356
|
endAt?: undefined;
|
|
358
357
|
reason?: undefined;
|
|
@@ -361,6 +360,7 @@ export declare function screenMemoryMcpToolDefinitions(): ({
|
|
|
361
360
|
requestId: {
|
|
362
361
|
type: string;
|
|
363
362
|
};
|
|
363
|
+
count?: undefined;
|
|
364
364
|
};
|
|
365
365
|
};
|
|
366
366
|
})[];
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
export declare function createNotificationsHandler(): import("h3").EventHandlerWithFetch<import("h3").EventHandlerRequest, Promise<"" | import("./types.js").Notification[] | {
|
|
2
2
|
count: number;
|
|
3
3
|
updated?: undefined;
|
|
4
|
-
error?: undefined;
|
|
5
4
|
ok?: undefined;
|
|
5
|
+
error?: undefined;
|
|
6
6
|
} | {
|
|
7
7
|
count?: undefined;
|
|
8
8
|
updated: number;
|
|
9
|
-
error?: undefined;
|
|
10
9
|
ok?: undefined;
|
|
10
|
+
error?: undefined;
|
|
11
11
|
} | {
|
|
12
12
|
count?: undefined;
|
|
13
13
|
updated?: undefined;
|
|
@@ -13,6 +13,11 @@ const schema = z.object({
|
|
|
13
13
|
export default defineAction({
|
|
14
14
|
description: "Save a human-proposed instruction update for an agent output. The draft is explicit and never applied automatically.",
|
|
15
15
|
schema,
|
|
16
|
+
mcpAnnotations: {
|
|
17
|
+
readOnlyHint: false,
|
|
18
|
+
destructiveHint: false,
|
|
19
|
+
openWorldHint: false,
|
|
20
|
+
},
|
|
16
21
|
authorize: authorizeObservabilityOrgAdmin,
|
|
17
22
|
run: async (args, ctx) => {
|
|
18
23
|
const { userId, orgId } = getObservabilityOrgAdminAccess(ctx);
|
|
@@ -95,6 +95,11 @@ function artifactEvidenceMatches(source, appId, artifactId) {
|
|
|
95
95
|
}
|
|
96
96
|
export default defineAction({
|
|
97
97
|
description: "Persist a concise human-review summary for a run. Artifact IDs must exactly match IDs returned by get-observability-review-summary-source; do not create, guess, or infer IDs. Include only real design, slide-deck, or analytics artifacts.",
|
|
98
|
+
mcpAnnotations: {
|
|
99
|
+
readOnlyHint: false,
|
|
100
|
+
destructiveHint: true,
|
|
101
|
+
openWorldHint: false,
|
|
102
|
+
},
|
|
98
103
|
schema: z
|
|
99
104
|
.object({
|
|
100
105
|
runId: z
|