@autohq/cli 0.1.302 → 0.1.304

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.
@@ -23399,7 +23399,7 @@ Object.assign(lookup, {
23399
23399
  // package.json
23400
23400
  var package_default = {
23401
23401
  name: "@autohq/cli",
23402
- version: "0.1.302",
23402
+ version: "0.1.304",
23403
23403
  license: "SEE LICENSE IN README.md",
23404
23404
  publishConfig: {
23405
23405
  access: "public"
@@ -26769,407 +26769,6 @@ function isSetupCacheTtl(value2) {
26769
26769
  return /^[1-9][0-9]*(s|m|h|d)$/.test(value2);
26770
26770
  }
26771
26771
 
26772
- // ../../packages/schemas/src/live-events.ts
26773
- var LiveEntityEventEnvelopeSchema = external_exports.object({
26774
- // Replay cursor for this frame; the SSE `id:` mirrors it so reconnects resume
26775
- // from `sequence > cursor`.
26776
- sequence: external_exports.number().int().nonnegative(),
26777
- eventKey: external_exports.string().min(1),
26778
- // The event's `subjectKind`, surfaced as `entity` for client-side dispatch.
26779
- entity: external_exports.string().min(1),
26780
- subjectId: external_exports.string().min(1),
26781
- payload: JsonValueSchema2,
26782
- occurredAt: external_exports.string().min(1)
26783
- });
26784
-
26785
- // ../../packages/schemas/src/mcp.ts
26786
- var McpToolCallMessageSchema = external_exports.object({
26787
- method: external_exports.literal("tools/call"),
26788
- params: external_exports.object({
26789
- name: external_exports.string().trim().min(1)
26790
- })
26791
- });
26792
- var McpJsonRpcMessageSchema = external_exports.object({
26793
- method: external_exports.string().optional()
26794
- }).passthrough();
26795
- var McpPostBodySchema = external_exports.union([McpJsonRpcMessageSchema, external_exports.array(McpJsonRpcMessageSchema)]).transform((body) => Array.isArray(body) ? body : [body]);
26796
-
26797
- // ../../packages/schemas/src/pricing.ts
26798
- var RATE_CARD_2026_06_23 = {
26799
- version: "2026-06-23",
26800
- effectiveAt: "2026-06-23T00:00:00.000Z",
26801
- models: {
26802
- "claude-opus-4-8": opusTier(),
26803
- "claude-opus-4-7": opusTier(),
26804
- "claude-opus-4-6": opusTier(),
26805
- "claude-sonnet-4-6": tier(3, 15),
26806
- "claude-haiku-4-5": tier(1, 5),
26807
- "claude-haiku-4-5-20251001": tier(1, 5),
26808
- "claude-fable-5": tier(10, 50),
26809
- // OpenAI gpt-5.3-codex, standard tier: input $1.75/Mtok, cached input
26810
- // $0.175/Mtok, output $14.00/Mtok. Source (verified 2026-06-23):
26811
- // https://developers.openai.com/api/docs/models/gpt-5.3-codex and
26812
- // https://developers.openai.com/api/docs/pricing (priority tier is 2x; we
26813
- // bill standard).
26814
- "gpt-5.3-codex": openAiTier({
26815
- input: 1.75,
26816
- cachedInput: 0.175,
26817
- output: 14
26818
- })
26819
- }
26820
- };
26821
- var PRICING_RATE_CARDS = {
26822
- [RATE_CARD_2026_06_23.version]: RATE_CARD_2026_06_23
26823
- };
26824
- var CURRENT_PRICING_VERSION = RATE_CARD_2026_06_23.version;
26825
- function tier(inputUsdPerMtok, outputUsdPerMtok) {
26826
- return {
26827
- inputUsdPerMtok,
26828
- outputUsdPerMtok,
26829
- cacheWrite5mUsdPerMtok: inputUsdPerMtok * 1.25,
26830
- cacheReadUsdPerMtok: inputUsdPerMtok * 0.1
26831
- };
26832
- }
26833
- function opusTier() {
26834
- return tier(5, 25);
26835
- }
26836
- function openAiTier(rates) {
26837
- return {
26838
- inputUsdPerMtok: rates.input,
26839
- outputUsdPerMtok: rates.output,
26840
- cacheWrite5mUsdPerMtok: rates.input,
26841
- cacheReadUsdPerMtok: rates.cachedInput
26842
- };
26843
- }
26844
-
26845
- // ../../packages/schemas/src/project-service-accounts.ts
26846
- var ProjectServiceAccountSchema = external_exports.object({
26847
- id: ServiceAccountIdSchema,
26848
- organizationId: OrganizationIdSchema,
26849
- projectId: ProjectIdSchema,
26850
- name: ResourceNameSchema,
26851
- scopes: external_exports.array(AuthScopeSchema),
26852
- createdAt: external_exports.string().datetime()
26853
- });
26854
- var ProjectServiceAccountCreateRequestSchema = external_exports.object({
26855
- name: ResourceNameSchema,
26856
- scopes: external_exports.array(AuthScopeSchema).min(1)
26857
- });
26858
- var ProjectServiceAccountUpdateRequestSchema = external_exports.object({
26859
- scopes: external_exports.array(AuthScopeSchema).min(1)
26860
- });
26861
- var ProjectServiceAccountTokenResponseSchema = external_exports.object({
26862
- serviceAccount: ProjectServiceAccountSchema,
26863
- token: external_exports.string().min(1)
26864
- });
26865
- var ProjectServiceAccountUpdateResponseSchema = external_exports.object({
26866
- serviceAccount: ProjectServiceAccountSchema
26867
- });
26868
- var ProjectServiceAccountRemoveResponseSchema = external_exports.object({
26869
- serviceAccount: ProjectServiceAccountSchema,
26870
- removed: external_exports.literal(true)
26871
- });
26872
- var ProjectServiceAccountListResponseSchema = external_exports.object({
26873
- serviceAccounts: external_exports.array(ProjectServiceAccountSchema)
26874
- });
26875
-
26876
- // ../../packages/schemas/src/project-resources.ts
26877
- var EnvironmentApplyDocumentSchema = resourceApplyDocumentSchema(
26878
- RESOURCE_KIND_ENVIRONMENT,
26879
- EnvironmentApplyRequestSchema.shape.spec
26880
- );
26881
- var IdentityApplyDocumentSchema = resourceApplyDocumentSchema(
26882
- RESOURCE_KIND_IDENTITY,
26883
- IdentityApplyRequestSchema.shape.spec
26884
- );
26885
- var AgentApplyDocumentSchema = resourceApplyDocumentSchema(
26886
- RESOURCE_KIND_AGENT,
26887
- AgentApplyRequestSchema.shape.spec
26888
- );
26889
- var ProjectApplyResourceSchema = external_exports.discriminatedUnion("kind", [
26890
- EnvironmentApplyDocumentSchema,
26891
- IdentityApplyDocumentSchema,
26892
- AgentApplyDocumentSchema
26893
- ]);
26894
- var PROJECT_RESOURCE_APPLY_ORDER = [
26895
- RESOURCE_KIND_CONNECTION,
26896
- RESOURCE_KIND_IDENTITY,
26897
- RESOURCE_KIND_ENVIRONMENT,
26898
- RESOURCE_KIND_AGENT
26899
- ];
26900
- var PROJECT_RESOURCE_KINDS = PROJECT_RESOURCE_APPLY_ORDER;
26901
- var PROJECT_APPLY_RESOURCE_KINDS = [
26902
- RESOURCE_KIND_IDENTITY,
26903
- RESOURCE_KIND_ENVIRONMENT,
26904
- RESOURCE_KIND_AGENT
26905
- ];
26906
- var PROJECT_APPLY_BUNDLE_VERSION = 1;
26907
- var MAX_PROJECT_APPLY_BUNDLE_BYTES = 64 * 1024 * 1024;
26908
- var PROJECT_APPLY_BUNDLE_CONTENT_TYPE = "application/vnd.auto.project-apply-bundle+json";
26909
- function projectApplyBundleStorageKey(sha256) {
26910
- return `project-apply-bundles/${sha256}.json`;
26911
- }
26912
- var ProjectDeleteResourceBaseSchema = external_exports.object({
26913
- name: external_exports.string().trim().min(1)
26914
- });
26915
- var ProjectDeleteResourceSchema = ProjectDeleteResourceBaseSchema.extend({
26916
- kind: external_exports.enum(PROJECT_APPLY_RESOURCE_KINDS)
26917
- });
26918
- var AVATAR_ASSET_CONTENT_TYPES = ["image/png", "image/jpeg"];
26919
- var MAX_AVATAR_ASSET_BASE64_LENGTH = Math.ceil(MAX_AVATAR_ASSET_BYTES / 3) * 4 + 4;
26920
- var ProjectApplyAssetSchema = external_exports.object({
26921
- sha256: external_exports.string().regex(/^[a-f0-9]{64}$/),
26922
- contentType: external_exports.enum(AVATAR_ASSET_CONTENT_TYPES),
26923
- dataBase64: external_exports.string().min(1).max(MAX_AVATAR_ASSET_BASE64_LENGTH).regex(/^[A-Za-z0-9+/]+={0,2}$/)
26924
- });
26925
- var ProjectApplyAssetsSchema = external_exports.record(
26926
- external_exports.string().refine(isAvatarAssetPathShapeValid, {
26927
- message: "asset keys must be relative paths under .auto/assets"
26928
- }),
26929
- ProjectApplyAssetSchema
26930
- );
26931
- var AvatarAssetUploadResponseSchema = external_exports.object({
26932
- sha256: external_exports.string().regex(/^[a-f0-9]{64}$/),
26933
- contentType: external_exports.enum(AVATAR_ASSET_CONTENT_TYPES),
26934
- sizeBytes: external_exports.number().int().positive()
26935
- });
26936
- var ApplyBundlePathSchema = external_exports.string().trim().min(1).max(4096).refine((path2) => !path2.startsWith("/") && !path2.includes("\0"), {
26937
- message: "apply bundle paths must be relative paths"
26938
- });
26939
- var ProjectApplyBundleFileSchema = external_exports.object({
26940
- path: ApplyBundlePathSchema,
26941
- contentBase64: external_exports.string().regex(/^[A-Za-z0-9+/]*={0,2}$/)
26942
- });
26943
- var ProjectApplyBundleSchema = external_exports.object({
26944
- version: external_exports.literal(PROJECT_APPLY_BUNDLE_VERSION),
26945
- files: external_exports.array(ProjectApplyBundleFileSchema).max(2e4)
26946
- });
26947
- var ProjectApplyBundleRefSchema = external_exports.object({
26948
- kind: external_exports.literal("vercel_blob"),
26949
- storageKey: external_exports.string().trim().min(1).max(1024),
26950
- sha256: external_exports.string().regex(SHA256_HEX_PATTERN),
26951
- sizeBytes: external_exports.number().int().positive().max(MAX_PROJECT_APPLY_BUNDLE_BYTES)
26952
- }).superRefine((ref, context) => {
26953
- const expectedStorageKey = projectApplyBundleStorageKey(ref.sha256);
26954
- if (ref.storageKey === expectedStorageKey) {
26955
- return;
26956
- }
26957
- context.addIssue({
26958
- code: "custom",
26959
- path: ["storageKey"],
26960
- message: "apply bundle storage key must match its sha256"
26961
- });
26962
- });
26963
- var ProjectApplyBundleUploadRequestSchema = external_exports.object({
26964
- sha256: external_exports.string().regex(SHA256_HEX_PATTERN),
26965
- sizeBytes: external_exports.number().int().positive().max(MAX_PROJECT_APPLY_BUNDLE_BYTES)
26966
- });
26967
- var ProjectApplyBundleUploadResponseSchema = external_exports.object({
26968
- method: external_exports.literal("PUT"),
26969
- uploadUrl: external_exports.string().url(),
26970
- contentType: external_exports.literal(PROJECT_APPLY_BUNDLE_CONTENT_TYPE),
26971
- source: ProjectApplyBundleRefSchema
26972
- });
26973
- var ProjectApplyBundleDirectoryEntrypointSchema = external_exports.object({
26974
- kind: external_exports.literal("directory"),
26975
- resourceRoot: ApplyBundlePathSchema.default(".auto"),
26976
- displayResourceRoot: external_exports.string().trim().min(1).max(4096).optional()
26977
- });
26978
- var ProjectApplyBundleFileEntrypointSchema = external_exports.object({
26979
- kind: external_exports.literal("file"),
26980
- filePath: ApplyBundlePathSchema
26981
- });
26982
- var ProjectApplyBundleEntrypointSchema = external_exports.discriminatedUnion("kind", [
26983
- ProjectApplyBundleDirectoryEntrypointSchema,
26984
- ProjectApplyBundleFileEntrypointSchema
26985
- ]);
26986
- var ProjectApplySourceSchema = external_exports.object({
26987
- kind: external_exports.literal("bundle"),
26988
- bundle: ProjectApplyBundleRefSchema,
26989
- entrypoint: ProjectApplyBundleEntrypointSchema
26990
- });
26991
- var ProjectApplySourceRequestSchema = external_exports.object({
26992
- source: ProjectApplySourceSchema,
26993
- delete: external_exports.array(ProjectDeleteResourceSchema).default([]),
26994
- dryRun: external_exports.boolean().default(false),
26995
- prune: external_exports.boolean().default(true)
26996
- });
26997
- var ProjectApplyRequestSchema = external_exports.object({
26998
- delete: external_exports.array(ProjectDeleteResourceSchema).default([]),
26999
- dryRun: external_exports.boolean().default(false),
27000
- prune: external_exports.boolean().default(false),
27001
- resources: external_exports.array(ProjectApplyResourceSchema).default([]),
27002
- assets: ProjectApplyAssetsSchema.default({})
27003
- });
27004
- var ProjectApplySystemConfigSchema = external_exports.object({
27005
- kind: external_exports.literal("system"),
27006
- metadata: external_exports.object({
27007
- name: external_exports.string().trim().min(1).optional()
27008
- }).optional(),
27009
- spec: ProjectApplyRequestSchema
27010
- });
27011
- var ProjectAppliedResourceSchema = external_exports.union([
27012
- ProjectConnectionAllocationResourceSchema,
27013
- EnvironmentResourceSchema,
27014
- IdentityResourceSchema,
27015
- AgentResourceSchema
27016
- ]);
27017
- var ProjectApplyDiagnosticSchema = external_exports.object({
27018
- // "info" is a non-blocking advisory (e.g. template-push capability/override
27019
- // notices); "error" remains the validation-failure severity. Coordinated
27020
- // shape with the optional-connection-gating work; whoever lands second rebases.
27021
- severity: external_exports.enum(["error", "info"]),
27022
- blocking: external_exports.boolean(),
27023
- code: external_exports.string().min(1),
27024
- message: external_exports.string().min(1),
27025
- action: external_exports.enum(["create", "update", "unchanged"]),
27026
- kind: external_exports.enum([
27027
- RESOURCE_KIND_CONNECTION,
27028
- RESOURCE_KIND_ENVIRONMENT,
27029
- RESOURCE_KIND_IDENTITY,
27030
- RESOURCE_KIND_AGENT
27031
- ]),
27032
- name: external_exports.string().min(1)
27033
- });
27034
- var ProjectApplyResponsePrunedSchema = external_exports.object({
27035
- kind: external_exports.enum(PROJECT_RESOURCE_KINDS),
27036
- name: external_exports.string().min(1),
27037
- uid: external_exports.string().min(1),
27038
- heartbeatScheduleIds: external_exports.array(external_exports.string().min(1)).optional()
27039
- });
27040
- var ProjectApplyPlanDiffSchema = external_exports.object({
27041
- action: external_exports.enum(["add", "remove", "change"]),
27042
- path: external_exports.string().min(1)
27043
- });
27044
- var ProjectApplyResponseSchema = external_exports.object({
27045
- dryRun: external_exports.boolean().default(false),
27046
- resources: external_exports.array(ProjectAppliedResourceSchema),
27047
- triggers: external_exports.array(ApplyTriggerReceiptSchema).default([]),
27048
- diagnostics: external_exports.array(ProjectApplyDiagnosticSchema).default([]),
27049
- plan: external_exports.array(
27050
- external_exports.object({
27051
- action: external_exports.enum(["create", "update", "unchanged", "archive"]),
27052
- kind: external_exports.enum(PROJECT_RESOURCE_KINDS),
27053
- name: external_exports.string().min(1),
27054
- uid: external_exports.string().min(1).optional(),
27055
- diff: external_exports.array(ProjectApplyPlanDiffSchema).optional(),
27056
- diffOmitted: external_exports.number().int().positive().optional()
27057
- })
27058
- ).default([]),
27059
- pruned: external_exports.array(ProjectApplyResponsePrunedSchema).default([])
27060
- });
27061
- var ProjectResourceApplyResultSchema = ProjectApplyResponseSchema.extend({
27062
- heartbeatSchedules: external_exports.array(
27063
- external_exports.object({
27064
- scheduleId: external_exports.string().trim().min(1),
27065
- cron: external_exports.string().trim().min(1),
27066
- timezone: external_exports.string().trim().min(1),
27067
- input: HeartbeatTickWorkflowInputSchema
27068
- })
27069
- ).default([]),
27070
- deletedHeartbeatScheduleIds: external_exports.array(external_exports.string().trim().min(1)).default([])
27071
- });
27072
- var ProjectResourceApplyAuditActionSchema = external_exports.enum([
27073
- "project_resources.apply",
27074
- "github_sync.apply"
27075
- ]);
27076
- var ProjectResourceApplyOperationIdSchema = external_exports.string().trim().min(1).max(512);
27077
- var ProjectResourceApplyTriggerArtifactSchema = external_exports.object({
27078
- type: external_exports.string().trim().min(1),
27079
- externalId: external_exports.string().trim().min(1),
27080
- payload: JsonValueSchema2.optional()
27081
- }).strict();
27082
- var ProjectResourceApplyWorkflowErrorSchema = external_exports.object({
27083
- name: external_exports.string().trim().min(1),
27084
- message: external_exports.string().trim().min(1)
27085
- });
27086
- var ProjectResourceApplyWorkflowInputSchema = external_exports.object({
27087
- operationId: ProjectResourceApplyOperationIdSchema,
27088
- request: ProjectApplyRequestSchema.optional(),
27089
- sourceRequest: ProjectApplySourceRequestSchema.optional(),
27090
- organizationId: OrganizationIdSchema,
27091
- projectId: ProjectIdSchema.nullable().optional(),
27092
- actor: AuthActorSchema,
27093
- auditAction: ProjectResourceApplyAuditActionSchema,
27094
- triggerArtifact: ProjectResourceApplyTriggerArtifactSchema.optional()
27095
- }).superRefine((input, context) => {
27096
- if ((input.request ? 1 : 0) + (input.sourceRequest ? 1 : 0) !== 1) {
27097
- context.addIssue({
27098
- code: "custom",
27099
- path: ["request"],
27100
- message: "exactly one of request or sourceRequest is required"
27101
- });
27102
- }
27103
- });
27104
- var ProjectResourceApplyWorkflowResultSchema = external_exports.discriminatedUnion(
27105
- "status",
27106
- [
27107
- external_exports.object({
27108
- status: external_exports.literal("applied"),
27109
- result: ProjectResourceApplyResultSchema
27110
- }),
27111
- external_exports.object({
27112
- status: external_exports.literal("failed"),
27113
- error: ProjectResourceApplyWorkflowErrorSchema
27114
- })
27115
- ]
27116
- );
27117
-
27118
- // ../../packages/schemas/src/session-diagnostics.ts
27119
- var SESSION_DIAGNOSTIC_REALTIME_EVENT = "session.diagnostic";
27120
- var SESSION_DIAGNOSTIC_LEVELS = [
27121
- "debug",
27122
- "info",
27123
- "warn",
27124
- "error"
27125
- ];
27126
- var SESSION_DIAGNOSTIC_SOURCES = [
27127
- "web",
27128
- "worker",
27129
- "activity",
27130
- "bridge",
27131
- "runtime"
27132
- ];
27133
- var SESSION_DIAGNOSTIC_PHASES = [
27134
- "dispatch",
27135
- "environment",
27136
- "bridge",
27137
- "delivery",
27138
- "command",
27139
- "runtime"
27140
- ];
27141
- var SESSION_DIAGNOSTIC_STATUSES = [
27142
- "started",
27143
- "succeeded",
27144
- "retrying",
27145
- "failed",
27146
- "skipped"
27147
- ];
27148
- var SessionDiagnosticLevelSchema = external_exports.enum(SESSION_DIAGNOSTIC_LEVELS);
27149
- var SessionDiagnosticSourceSchema = external_exports.enum(SESSION_DIAGNOSTIC_SOURCES);
27150
- var SessionDiagnosticPhaseSchema = external_exports.enum(SESSION_DIAGNOSTIC_PHASES);
27151
- var SessionDiagnosticStatusSchema = external_exports.enum(
27152
- SESSION_DIAGNOSTIC_STATUSES
27153
- );
27154
- var SessionDiagnosticEventSchema = external_exports.object({
27155
- type: external_exports.literal(SESSION_DIAGNOSTIC_REALTIME_EVENT),
27156
- id: external_exports.string().min(1),
27157
- sessionId: SessionIdSchema2,
27158
- level: SessionDiagnosticLevelSchema,
27159
- source: SessionDiagnosticSourceSchema,
27160
- phase: SessionDiagnosticPhaseSchema,
27161
- step: external_exports.string().trim().min(1),
27162
- status: SessionDiagnosticStatusSchema,
27163
- message: external_exports.string().trim().min(1),
27164
- commandId: SessionCommandIdSchema2.optional(),
27165
- runtimeId: RuntimeIdSchema2.optional(),
27166
- bridgeLeaseId: RuntimeBridgeLeaseIdSchema2.optional(),
27167
- attempt: external_exports.number().int().nonnegative().optional(),
27168
- durationMs: external_exports.number().nonnegative().optional(),
27169
- details: external_exports.record(external_exports.string(), JsonValueSchema2).optional(),
27170
- createdAt: external_exports.string().datetime()
27171
- });
27172
-
27173
26772
  // ../../packages/schemas/src/singleton-refresh.ts
27174
26773
  var SINGLETON_RESPAWN_REASONS = ["refresh", "failure"];
27175
26774
  var SingletonRespawnReasonSchema = external_exports.enum(SINGLETON_RESPAWN_REASONS);
@@ -27642,6 +27241,407 @@ var SessionsArchiveResponseSchema = external_exports.object({
27642
27241
  sessions: external_exports.array(SessionRecordSchema)
27643
27242
  });
27644
27243
 
27244
+ // ../../packages/schemas/src/live-events.ts
27245
+ var LiveEntityEventEnvelopeSchema = external_exports.object({
27246
+ // Replay cursor for this frame; the SSE `id:` mirrors it so reconnects resume
27247
+ // from `sequence > cursor`.
27248
+ sequence: external_exports.number().int().nonnegative(),
27249
+ eventKey: external_exports.string().min(1),
27250
+ // The event's `subjectKind`, surfaced as `entity` for client-side dispatch.
27251
+ entity: external_exports.string().min(1),
27252
+ subjectId: external_exports.string().min(1),
27253
+ payload: JsonValueSchema2,
27254
+ occurredAt: external_exports.string().min(1)
27255
+ });
27256
+
27257
+ // ../../packages/schemas/src/mcp.ts
27258
+ var McpToolCallMessageSchema = external_exports.object({
27259
+ method: external_exports.literal("tools/call"),
27260
+ params: external_exports.object({
27261
+ name: external_exports.string().trim().min(1)
27262
+ })
27263
+ });
27264
+ var McpJsonRpcMessageSchema = external_exports.object({
27265
+ method: external_exports.string().optional()
27266
+ }).passthrough();
27267
+ var McpPostBodySchema = external_exports.union([McpJsonRpcMessageSchema, external_exports.array(McpJsonRpcMessageSchema)]).transform((body) => Array.isArray(body) ? body : [body]);
27268
+
27269
+ // ../../packages/schemas/src/pricing.ts
27270
+ var RATE_CARD_2026_06_23 = {
27271
+ version: "2026-06-23",
27272
+ effectiveAt: "2026-06-23T00:00:00.000Z",
27273
+ models: {
27274
+ "claude-opus-4-8": opusTier(),
27275
+ "claude-opus-4-7": opusTier(),
27276
+ "claude-opus-4-6": opusTier(),
27277
+ "claude-sonnet-4-6": tier(3, 15),
27278
+ "claude-haiku-4-5": tier(1, 5),
27279
+ "claude-haiku-4-5-20251001": tier(1, 5),
27280
+ "claude-fable-5": tier(10, 50),
27281
+ // OpenAI gpt-5.3-codex, standard tier: input $1.75/Mtok, cached input
27282
+ // $0.175/Mtok, output $14.00/Mtok. Source (verified 2026-06-23):
27283
+ // https://developers.openai.com/api/docs/models/gpt-5.3-codex and
27284
+ // https://developers.openai.com/api/docs/pricing (priority tier is 2x; we
27285
+ // bill standard).
27286
+ "gpt-5.3-codex": openAiTier({
27287
+ input: 1.75,
27288
+ cachedInput: 0.175,
27289
+ output: 14
27290
+ })
27291
+ }
27292
+ };
27293
+ var PRICING_RATE_CARDS = {
27294
+ [RATE_CARD_2026_06_23.version]: RATE_CARD_2026_06_23
27295
+ };
27296
+ var CURRENT_PRICING_VERSION = RATE_CARD_2026_06_23.version;
27297
+ function tier(inputUsdPerMtok, outputUsdPerMtok) {
27298
+ return {
27299
+ inputUsdPerMtok,
27300
+ outputUsdPerMtok,
27301
+ cacheWrite5mUsdPerMtok: inputUsdPerMtok * 1.25,
27302
+ cacheReadUsdPerMtok: inputUsdPerMtok * 0.1
27303
+ };
27304
+ }
27305
+ function opusTier() {
27306
+ return tier(5, 25);
27307
+ }
27308
+ function openAiTier(rates) {
27309
+ return {
27310
+ inputUsdPerMtok: rates.input,
27311
+ outputUsdPerMtok: rates.output,
27312
+ cacheWrite5mUsdPerMtok: rates.input,
27313
+ cacheReadUsdPerMtok: rates.cachedInput
27314
+ };
27315
+ }
27316
+
27317
+ // ../../packages/schemas/src/project-service-accounts.ts
27318
+ var ProjectServiceAccountSchema = external_exports.object({
27319
+ id: ServiceAccountIdSchema,
27320
+ organizationId: OrganizationIdSchema,
27321
+ projectId: ProjectIdSchema,
27322
+ name: ResourceNameSchema,
27323
+ scopes: external_exports.array(AuthScopeSchema),
27324
+ createdAt: external_exports.string().datetime()
27325
+ });
27326
+ var ProjectServiceAccountCreateRequestSchema = external_exports.object({
27327
+ name: ResourceNameSchema,
27328
+ scopes: external_exports.array(AuthScopeSchema).min(1)
27329
+ });
27330
+ var ProjectServiceAccountUpdateRequestSchema = external_exports.object({
27331
+ scopes: external_exports.array(AuthScopeSchema).min(1)
27332
+ });
27333
+ var ProjectServiceAccountTokenResponseSchema = external_exports.object({
27334
+ serviceAccount: ProjectServiceAccountSchema,
27335
+ token: external_exports.string().min(1)
27336
+ });
27337
+ var ProjectServiceAccountUpdateResponseSchema = external_exports.object({
27338
+ serviceAccount: ProjectServiceAccountSchema
27339
+ });
27340
+ var ProjectServiceAccountRemoveResponseSchema = external_exports.object({
27341
+ serviceAccount: ProjectServiceAccountSchema,
27342
+ removed: external_exports.literal(true)
27343
+ });
27344
+ var ProjectServiceAccountListResponseSchema = external_exports.object({
27345
+ serviceAccounts: external_exports.array(ProjectServiceAccountSchema)
27346
+ });
27347
+
27348
+ // ../../packages/schemas/src/project-resources.ts
27349
+ var EnvironmentApplyDocumentSchema = resourceApplyDocumentSchema(
27350
+ RESOURCE_KIND_ENVIRONMENT,
27351
+ EnvironmentApplyRequestSchema.shape.spec
27352
+ );
27353
+ var IdentityApplyDocumentSchema = resourceApplyDocumentSchema(
27354
+ RESOURCE_KIND_IDENTITY,
27355
+ IdentityApplyRequestSchema.shape.spec
27356
+ );
27357
+ var AgentApplyDocumentSchema = resourceApplyDocumentSchema(
27358
+ RESOURCE_KIND_AGENT,
27359
+ AgentApplyRequestSchema.shape.spec
27360
+ );
27361
+ var ProjectApplyResourceSchema = external_exports.discriminatedUnion("kind", [
27362
+ EnvironmentApplyDocumentSchema,
27363
+ IdentityApplyDocumentSchema,
27364
+ AgentApplyDocumentSchema
27365
+ ]);
27366
+ var PROJECT_RESOURCE_APPLY_ORDER = [
27367
+ RESOURCE_KIND_CONNECTION,
27368
+ RESOURCE_KIND_IDENTITY,
27369
+ RESOURCE_KIND_ENVIRONMENT,
27370
+ RESOURCE_KIND_AGENT
27371
+ ];
27372
+ var PROJECT_RESOURCE_KINDS = PROJECT_RESOURCE_APPLY_ORDER;
27373
+ var PROJECT_APPLY_RESOURCE_KINDS = [
27374
+ RESOURCE_KIND_IDENTITY,
27375
+ RESOURCE_KIND_ENVIRONMENT,
27376
+ RESOURCE_KIND_AGENT
27377
+ ];
27378
+ var PROJECT_APPLY_BUNDLE_VERSION = 1;
27379
+ var MAX_PROJECT_APPLY_BUNDLE_BYTES = 64 * 1024 * 1024;
27380
+ var PROJECT_APPLY_BUNDLE_CONTENT_TYPE = "application/vnd.auto.project-apply-bundle+json";
27381
+ function projectApplyBundleStorageKey(sha256) {
27382
+ return `project-apply-bundles/${sha256}.json`;
27383
+ }
27384
+ var ProjectDeleteResourceBaseSchema = external_exports.object({
27385
+ name: external_exports.string().trim().min(1)
27386
+ });
27387
+ var ProjectDeleteResourceSchema = ProjectDeleteResourceBaseSchema.extend({
27388
+ kind: external_exports.enum(PROJECT_APPLY_RESOURCE_KINDS)
27389
+ });
27390
+ var AVATAR_ASSET_CONTENT_TYPES = ["image/png", "image/jpeg"];
27391
+ var MAX_AVATAR_ASSET_BASE64_LENGTH = Math.ceil(MAX_AVATAR_ASSET_BYTES / 3) * 4 + 4;
27392
+ var ProjectApplyAssetSchema = external_exports.object({
27393
+ sha256: external_exports.string().regex(/^[a-f0-9]{64}$/),
27394
+ contentType: external_exports.enum(AVATAR_ASSET_CONTENT_TYPES),
27395
+ dataBase64: external_exports.string().min(1).max(MAX_AVATAR_ASSET_BASE64_LENGTH).regex(/^[A-Za-z0-9+/]+={0,2}$/)
27396
+ });
27397
+ var ProjectApplyAssetsSchema = external_exports.record(
27398
+ external_exports.string().refine(isAvatarAssetPathShapeValid, {
27399
+ message: "asset keys must be relative paths under .auto/assets"
27400
+ }),
27401
+ ProjectApplyAssetSchema
27402
+ );
27403
+ var AvatarAssetUploadResponseSchema = external_exports.object({
27404
+ sha256: external_exports.string().regex(/^[a-f0-9]{64}$/),
27405
+ contentType: external_exports.enum(AVATAR_ASSET_CONTENT_TYPES),
27406
+ sizeBytes: external_exports.number().int().positive()
27407
+ });
27408
+ var ApplyBundlePathSchema = external_exports.string().trim().min(1).max(4096).refine((path2) => !path2.startsWith("/") && !path2.includes("\0"), {
27409
+ message: "apply bundle paths must be relative paths"
27410
+ });
27411
+ var ProjectApplyBundleFileSchema = external_exports.object({
27412
+ path: ApplyBundlePathSchema,
27413
+ contentBase64: external_exports.string().regex(/^[A-Za-z0-9+/]*={0,2}$/)
27414
+ });
27415
+ var ProjectApplyBundleSchema = external_exports.object({
27416
+ version: external_exports.literal(PROJECT_APPLY_BUNDLE_VERSION),
27417
+ files: external_exports.array(ProjectApplyBundleFileSchema).max(2e4)
27418
+ });
27419
+ var ProjectApplyBundleRefSchema = external_exports.object({
27420
+ kind: external_exports.literal("vercel_blob"),
27421
+ storageKey: external_exports.string().trim().min(1).max(1024),
27422
+ sha256: external_exports.string().regex(SHA256_HEX_PATTERN),
27423
+ sizeBytes: external_exports.number().int().positive().max(MAX_PROJECT_APPLY_BUNDLE_BYTES)
27424
+ }).superRefine((ref, context) => {
27425
+ const expectedStorageKey = projectApplyBundleStorageKey(ref.sha256);
27426
+ if (ref.storageKey === expectedStorageKey) {
27427
+ return;
27428
+ }
27429
+ context.addIssue({
27430
+ code: "custom",
27431
+ path: ["storageKey"],
27432
+ message: "apply bundle storage key must match its sha256"
27433
+ });
27434
+ });
27435
+ var ProjectApplyBundleUploadRequestSchema = external_exports.object({
27436
+ sha256: external_exports.string().regex(SHA256_HEX_PATTERN),
27437
+ sizeBytes: external_exports.number().int().positive().max(MAX_PROJECT_APPLY_BUNDLE_BYTES)
27438
+ });
27439
+ var ProjectApplyBundleUploadResponseSchema = external_exports.object({
27440
+ method: external_exports.literal("PUT"),
27441
+ uploadUrl: external_exports.string().url(),
27442
+ contentType: external_exports.literal(PROJECT_APPLY_BUNDLE_CONTENT_TYPE),
27443
+ source: ProjectApplyBundleRefSchema
27444
+ });
27445
+ var ProjectApplyBundleDirectoryEntrypointSchema = external_exports.object({
27446
+ kind: external_exports.literal("directory"),
27447
+ resourceRoot: ApplyBundlePathSchema.default(".auto"),
27448
+ displayResourceRoot: external_exports.string().trim().min(1).max(4096).optional()
27449
+ });
27450
+ var ProjectApplyBundleFileEntrypointSchema = external_exports.object({
27451
+ kind: external_exports.literal("file"),
27452
+ filePath: ApplyBundlePathSchema
27453
+ });
27454
+ var ProjectApplyBundleEntrypointSchema = external_exports.discriminatedUnion("kind", [
27455
+ ProjectApplyBundleDirectoryEntrypointSchema,
27456
+ ProjectApplyBundleFileEntrypointSchema
27457
+ ]);
27458
+ var ProjectApplySourceSchema = external_exports.object({
27459
+ kind: external_exports.literal("bundle"),
27460
+ bundle: ProjectApplyBundleRefSchema,
27461
+ entrypoint: ProjectApplyBundleEntrypointSchema
27462
+ });
27463
+ var ProjectApplySourceRequestSchema = external_exports.object({
27464
+ source: ProjectApplySourceSchema,
27465
+ delete: external_exports.array(ProjectDeleteResourceSchema).default([]),
27466
+ dryRun: external_exports.boolean().default(false),
27467
+ prune: external_exports.boolean().default(true)
27468
+ });
27469
+ var ProjectApplyRequestSchema = external_exports.object({
27470
+ delete: external_exports.array(ProjectDeleteResourceSchema).default([]),
27471
+ dryRun: external_exports.boolean().default(false),
27472
+ prune: external_exports.boolean().default(false),
27473
+ resources: external_exports.array(ProjectApplyResourceSchema).default([]),
27474
+ assets: ProjectApplyAssetsSchema.default({})
27475
+ });
27476
+ var ProjectApplySystemConfigSchema = external_exports.object({
27477
+ kind: external_exports.literal("system"),
27478
+ metadata: external_exports.object({
27479
+ name: external_exports.string().trim().min(1).optional()
27480
+ }).optional(),
27481
+ spec: ProjectApplyRequestSchema
27482
+ });
27483
+ var ProjectAppliedResourceSchema = external_exports.union([
27484
+ ProjectConnectionAllocationResourceSchema,
27485
+ EnvironmentResourceSchema,
27486
+ IdentityResourceSchema,
27487
+ AgentResourceSchema
27488
+ ]);
27489
+ var ProjectApplyDiagnosticSchema = external_exports.object({
27490
+ // "info" is a non-blocking advisory (e.g. template-push capability/override
27491
+ // notices); "error" remains the validation-failure severity. Coordinated
27492
+ // shape with the optional-connection-gating work; whoever lands second rebases.
27493
+ severity: external_exports.enum(["error", "info"]),
27494
+ blocking: external_exports.boolean(),
27495
+ code: external_exports.string().min(1),
27496
+ message: external_exports.string().min(1),
27497
+ action: external_exports.enum(["create", "update", "unchanged"]),
27498
+ kind: external_exports.enum([
27499
+ RESOURCE_KIND_CONNECTION,
27500
+ RESOURCE_KIND_ENVIRONMENT,
27501
+ RESOURCE_KIND_IDENTITY,
27502
+ RESOURCE_KIND_AGENT
27503
+ ]),
27504
+ name: external_exports.string().min(1)
27505
+ });
27506
+ var ProjectApplyResponsePrunedSchema = external_exports.object({
27507
+ kind: external_exports.enum(PROJECT_RESOURCE_KINDS),
27508
+ name: external_exports.string().min(1),
27509
+ uid: external_exports.string().min(1),
27510
+ heartbeatScheduleIds: external_exports.array(external_exports.string().min(1)).optional()
27511
+ });
27512
+ var ProjectApplyPlanDiffSchema = external_exports.object({
27513
+ action: external_exports.enum(["add", "remove", "change"]),
27514
+ path: external_exports.string().min(1)
27515
+ });
27516
+ var ProjectApplyResponseSchema = external_exports.object({
27517
+ dryRun: external_exports.boolean().default(false),
27518
+ resources: external_exports.array(ProjectAppliedResourceSchema),
27519
+ triggers: external_exports.array(ApplyTriggerReceiptSchema).default([]),
27520
+ diagnostics: external_exports.array(ProjectApplyDiagnosticSchema).default([]),
27521
+ plan: external_exports.array(
27522
+ external_exports.object({
27523
+ action: external_exports.enum(["create", "update", "unchanged", "archive"]),
27524
+ kind: external_exports.enum(PROJECT_RESOURCE_KINDS),
27525
+ name: external_exports.string().min(1),
27526
+ uid: external_exports.string().min(1).optional(),
27527
+ diff: external_exports.array(ProjectApplyPlanDiffSchema).optional(),
27528
+ diffOmitted: external_exports.number().int().positive().optional()
27529
+ })
27530
+ ).default([]),
27531
+ pruned: external_exports.array(ProjectApplyResponsePrunedSchema).default([])
27532
+ });
27533
+ var ProjectResourceApplyResultSchema = ProjectApplyResponseSchema.extend({
27534
+ heartbeatSchedules: external_exports.array(
27535
+ external_exports.object({
27536
+ scheduleId: external_exports.string().trim().min(1),
27537
+ cron: external_exports.string().trim().min(1),
27538
+ timezone: external_exports.string().trim().min(1),
27539
+ input: HeartbeatTickWorkflowInputSchema
27540
+ })
27541
+ ).default([]),
27542
+ deletedHeartbeatScheduleIds: external_exports.array(external_exports.string().trim().min(1)).default([])
27543
+ });
27544
+ var ProjectResourceApplyAuditActionSchema = external_exports.enum([
27545
+ "project_resources.apply",
27546
+ "github_sync.apply"
27547
+ ]);
27548
+ var ProjectResourceApplyOperationIdSchema = external_exports.string().trim().min(1).max(512);
27549
+ var ProjectResourceApplyTriggerArtifactSchema = external_exports.object({
27550
+ type: external_exports.string().trim().min(1),
27551
+ externalId: external_exports.string().trim().min(1),
27552
+ payload: JsonValueSchema2.optional()
27553
+ }).strict();
27554
+ var ProjectResourceApplyWorkflowErrorSchema = external_exports.object({
27555
+ name: external_exports.string().trim().min(1),
27556
+ message: external_exports.string().trim().min(1)
27557
+ });
27558
+ var ProjectResourceApplyWorkflowInputSchema = external_exports.object({
27559
+ operationId: ProjectResourceApplyOperationIdSchema,
27560
+ request: ProjectApplyRequestSchema.optional(),
27561
+ sourceRequest: ProjectApplySourceRequestSchema.optional(),
27562
+ organizationId: OrganizationIdSchema,
27563
+ projectId: ProjectIdSchema.nullable().optional(),
27564
+ actor: AuthActorSchema,
27565
+ auditAction: ProjectResourceApplyAuditActionSchema,
27566
+ triggerArtifact: ProjectResourceApplyTriggerArtifactSchema.optional()
27567
+ }).superRefine((input, context) => {
27568
+ if ((input.request ? 1 : 0) + (input.sourceRequest ? 1 : 0) !== 1) {
27569
+ context.addIssue({
27570
+ code: "custom",
27571
+ path: ["request"],
27572
+ message: "exactly one of request or sourceRequest is required"
27573
+ });
27574
+ }
27575
+ });
27576
+ var ProjectResourceApplyWorkflowResultSchema = external_exports.discriminatedUnion(
27577
+ "status",
27578
+ [
27579
+ external_exports.object({
27580
+ status: external_exports.literal("applied"),
27581
+ result: ProjectResourceApplyResultSchema
27582
+ }),
27583
+ external_exports.object({
27584
+ status: external_exports.literal("failed"),
27585
+ error: ProjectResourceApplyWorkflowErrorSchema
27586
+ })
27587
+ ]
27588
+ );
27589
+
27590
+ // ../../packages/schemas/src/session-diagnostics.ts
27591
+ var SESSION_DIAGNOSTIC_REALTIME_EVENT = "session.diagnostic";
27592
+ var SESSION_DIAGNOSTIC_LEVELS = [
27593
+ "debug",
27594
+ "info",
27595
+ "warn",
27596
+ "error"
27597
+ ];
27598
+ var SESSION_DIAGNOSTIC_SOURCES = [
27599
+ "web",
27600
+ "worker",
27601
+ "activity",
27602
+ "bridge",
27603
+ "runtime"
27604
+ ];
27605
+ var SESSION_DIAGNOSTIC_PHASES = [
27606
+ "dispatch",
27607
+ "environment",
27608
+ "bridge",
27609
+ "delivery",
27610
+ "command",
27611
+ "runtime"
27612
+ ];
27613
+ var SESSION_DIAGNOSTIC_STATUSES = [
27614
+ "started",
27615
+ "succeeded",
27616
+ "retrying",
27617
+ "failed",
27618
+ "skipped"
27619
+ ];
27620
+ var SessionDiagnosticLevelSchema = external_exports.enum(SESSION_DIAGNOSTIC_LEVELS);
27621
+ var SessionDiagnosticSourceSchema = external_exports.enum(SESSION_DIAGNOSTIC_SOURCES);
27622
+ var SessionDiagnosticPhaseSchema = external_exports.enum(SESSION_DIAGNOSTIC_PHASES);
27623
+ var SessionDiagnosticStatusSchema = external_exports.enum(
27624
+ SESSION_DIAGNOSTIC_STATUSES
27625
+ );
27626
+ var SessionDiagnosticEventSchema = external_exports.object({
27627
+ type: external_exports.literal(SESSION_DIAGNOSTIC_REALTIME_EVENT),
27628
+ id: external_exports.string().min(1),
27629
+ sessionId: SessionIdSchema2,
27630
+ level: SessionDiagnosticLevelSchema,
27631
+ source: SessionDiagnosticSourceSchema,
27632
+ phase: SessionDiagnosticPhaseSchema,
27633
+ step: external_exports.string().trim().min(1),
27634
+ status: SessionDiagnosticStatusSchema,
27635
+ message: external_exports.string().trim().min(1),
27636
+ commandId: SessionCommandIdSchema2.optional(),
27637
+ runtimeId: RuntimeIdSchema2.optional(),
27638
+ bridgeLeaseId: RuntimeBridgeLeaseIdSchema2.optional(),
27639
+ attempt: external_exports.number().int().nonnegative().optional(),
27640
+ durationMs: external_exports.number().nonnegative().optional(),
27641
+ details: external_exports.record(external_exports.string(), JsonValueSchema2).optional(),
27642
+ createdAt: external_exports.string().datetime()
27643
+ });
27644
+
27645
27645
  // ../../packages/schemas/src/session-introspection.ts
27646
27646
  var TruncatedValueSchema = external_exports.object({
27647
27647
  truncated: external_exports.literal(true),
@@ -38223,6 +38223,7 @@ var UiMessagePartTracker = class {
38223
38223
  textPartIndexById = /* @__PURE__ */ new Map();
38224
38224
  reasoningPartIndexById = /* @__PURE__ */ new Map();
38225
38225
  toolPartIndexByCallId = /* @__PURE__ */ new Map();
38226
+ approvalByCallId = /* @__PURE__ */ new Map();
38226
38227
  dataPartIndexById = /* @__PURE__ */ new Map();
38227
38228
  append(chunk) {
38228
38229
  switch (chunk.type) {
@@ -38315,14 +38316,16 @@ var UiMessagePartTracker = class {
38315
38316
  return [];
38316
38317
  }
38317
38318
  case "tool-input-available": {
38319
+ const pendingApproval = this.approvalByCallId.get(chunk.toolCallId);
38318
38320
  const index = this.upsertToolPart(chunk.toolCallId, {
38319
38321
  ...toolPartShape({
38320
38322
  toolCallId: chunk.toolCallId,
38321
38323
  toolName: chunk.toolName,
38322
38324
  dynamic: chunk.dynamic,
38323
- state: "input-available"
38325
+ state: pendingApproval ? "approval-requested" : "input-available"
38324
38326
  }),
38325
38327
  input: chunk.input,
38328
+ ...pendingApproval ? { approval: pendingApproval } : {},
38326
38329
  ...chunk.providerExecuted !== void 0 ? { providerExecuted: chunk.providerExecuted } : {},
38327
38330
  ...chunk.providerMetadata !== void 0 ? { callProviderMetadata: chunk.providerMetadata } : {}
38328
38331
  });
@@ -38341,6 +38344,24 @@ var UiMessagePartTracker = class {
38341
38344
  });
38342
38345
  return this.persistable(index);
38343
38346
  }
38347
+ case "tool-approval-request": {
38348
+ const approval = {
38349
+ id: chunk.approvalId,
38350
+ ...chunk.signature != null ? { signature: chunk.signature } : {}
38351
+ };
38352
+ this.approvalByCallId.set(chunk.toolCallId, approval);
38353
+ const part = this.partById(
38354
+ this.toolPartIndexByCallId,
38355
+ chunk.toolCallId
38356
+ );
38357
+ const index = this.toolPartIndexByCallId.get(chunk.toolCallId);
38358
+ if (!part || index === void 0) {
38359
+ return [];
38360
+ }
38361
+ part.state = "approval-requested";
38362
+ part.approval = approval;
38363
+ return this.persistable(index);
38364
+ }
38344
38365
  case "tool-output-available": {
38345
38366
  const part = this.partById(
38346
38367
  this.toolPartIndexByCallId,
@@ -38353,6 +38374,20 @@ var UiMessagePartTracker = class {
38353
38374
  part.state = "output-available";
38354
38375
  part.output = chunk.output;
38355
38376
  part.preliminary = chunk.preliminary;
38377
+ this.settleApproval(part, chunk.toolCallId, { approved: true });
38378
+ return this.persistable(index);
38379
+ }
38380
+ case "tool-output-denied": {
38381
+ const part = this.partById(
38382
+ this.toolPartIndexByCallId,
38383
+ chunk.toolCallId
38384
+ );
38385
+ const index = this.toolPartIndexByCallId.get(chunk.toolCallId);
38386
+ if (!part || index === void 0) {
38387
+ return [];
38388
+ }
38389
+ part.state = "output-denied";
38390
+ this.settleApproval(part, chunk.toolCallId, { approved: false });
38356
38391
  return this.persistable(index);
38357
38392
  }
38358
38393
  case "tool-output-error": {
@@ -38366,6 +38401,7 @@ var UiMessagePartTracker = class {
38366
38401
  }
38367
38402
  part.state = "output-error";
38368
38403
  part.errorText = chunk.errorText;
38404
+ this.settleApproval(part, chunk.toolCallId, { approved: true });
38369
38405
  return this.persistable(index);
38370
38406
  }
38371
38407
  case "start-step": {
@@ -38473,6 +38509,16 @@ var UiMessagePartTracker = class {
38473
38509
  }
38474
38510
  return this.parts[index] ?? null;
38475
38511
  }
38512
+ // The UIToolInvocation contract requires `approval.approved` on settled
38513
+ // states (`output-available`/`output-denied`), but the settling chunks don't
38514
+ // carry it — the outcome is implied by which chunk arrives. Stamp it onto a
38515
+ // previously requested approval; parts that never parked stay approval-free.
38516
+ settleApproval(part, toolCallId, outcome) {
38517
+ const approval = this.approvalByCallId.get(toolCallId);
38518
+ if (approval) {
38519
+ part.approval = { ...approval, approved: outcome.approved };
38520
+ }
38521
+ }
38476
38522
  reset() {
38477
38523
  this.messageId = null;
38478
38524
  this.messageMetadata = void 0;
@@ -38481,6 +38527,7 @@ var UiMessagePartTracker = class {
38481
38527
  this.textPartIndexById = /* @__PURE__ */ new Map();
38482
38528
  this.reasoningPartIndexById = /* @__PURE__ */ new Map();
38483
38529
  this.toolPartIndexByCallId = /* @__PURE__ */ new Map();
38530
+ this.approvalByCallId = /* @__PURE__ */ new Map();
38484
38531
  this.dataPartIndexById = /* @__PURE__ */ new Map();
38485
38532
  }
38486
38533
  };
@@ -38917,6 +38964,21 @@ function legacyToolEntry(chunk) {
38917
38964
  ]
38918
38965
  }
38919
38966
  };
38967
+ case "tool-output-denied":
38968
+ return {
38969
+ role: "tool",
38970
+ kind: "tool_result",
38971
+ content: {
38972
+ parts: [
38973
+ {
38974
+ type: "tool_result",
38975
+ toolUseId: legacyToolCallId(chunk.toolCallId),
38976
+ output: { denied: true },
38977
+ isError: true
38978
+ }
38979
+ ]
38980
+ }
38981
+ };
38920
38982
  default:
38921
38983
  return null;
38922
38984
  }
@@ -60626,15 +60688,19 @@ var CodexProjector = class {
60626
60688
  return [];
60627
60689
  }
60628
60690
  }
60629
- // An approval parks the turn on operator input, so the question chunk also
60630
- // marks the delivered turn as waiting for input.
60691
+ // An approval parks the turn on operator input, so both chunks mark the
60692
+ // delivered turn as waiting for input.
60631
60693
  projectApproval(request) {
60632
60694
  return [
60633
- uiChunk2({
60634
- type: "tool-approval-request",
60635
- approvalId: String(request.requestId),
60636
- toolCallId: request.itemId
60637
- }),
60695
+ {
60696
+ type: "ui_message_chunk",
60697
+ chunk: {
60698
+ type: "tool-approval-request",
60699
+ approvalId: String(request.requestId),
60700
+ toolCallId: request.itemId
60701
+ },
60702
+ turnStatus: "waiting_for_input"
60703
+ },
60638
60704
  {
60639
60705
  type: "ui_message_chunk",
60640
60706
  chunk: {
@@ -60689,6 +60755,7 @@ var CodexProjector = class {
60689
60755
  ...item.cwd ? { cwd: item.cwd } : {}
60690
60756
  },
60691
60757
  output: item.aggregatedOutput ?? "",
60758
+ isDenied: isDeclinedStatus(item.status),
60692
60759
  isError: isFailedStatus(item.status) || (item.exitCode ?? 0) !== 0,
60693
60760
  title: item.command,
60694
60761
  toolMetadata: statusMetadata(item.status, {
@@ -60702,6 +60769,7 @@ var CodexProjector = class {
60702
60769
  name: "apply_patch",
60703
60770
  input: { changes: toJsonValue(item.changes) },
60704
60771
  output: { status: item.status ?? "unknown" },
60772
+ isDenied: isDeclinedStatus(item.status),
60705
60773
  isError: isFailedStatus(item.status),
60706
60774
  title: "apply_patch",
60707
60775
  toolMetadata: statusMetadata(item.status)
@@ -60799,6 +60867,12 @@ function toolInputChunk(input) {
60799
60867
  });
60800
60868
  }
60801
60869
  function toolOutputChunk(input) {
60870
+ if (input.isDenied) {
60871
+ return uiChunk2({
60872
+ type: "tool-output-denied",
60873
+ toolCallId: input.itemId
60874
+ });
60875
+ }
60802
60876
  return uiChunk2(
60803
60877
  input.isError ? {
60804
60878
  type: "tool-output-error",
@@ -60869,6 +60943,9 @@ function reasoningPartId(itemId) {
60869
60943
  function isFailedStatus(status) {
60870
60944
  return status === "failed" || status === "declined";
60871
60945
  }
60946
+ function isDeclinedStatus(status) {
60947
+ return status === "declined";
60948
+ }
60872
60949
  function statusMetadata(status, fields = {}) {
60873
60950
  return {
60874
60951
  status: status ?? "unknown",