@agents24/client 0.2.0 → 0.2.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1,5 +1,5 @@
1
1
  export { Agents24ProtocolError, CONTRACT_HASH, RUNTIME_PROTOCOL_VERSION, THREAD_SUMMARY_PROTOCOL_VERSION, createSseParser, parseProtocolJson, parseRuntimeEvent, parseRuntimeSsePayload, parseSseBytes, parseThreadSummarySsePayload, validateResponseBlock, validateRuntimeEvent, validateThreadSummaryEvent, } from "./generated/protocol.js";
2
- export type { AbortSignalLike as ProtocolAbortSignalLike, JsonScalar, JsonValue, ProtocolErrorCategory, PublicResponseBlock, ExtendedRuntimeEvent, RuntimeEvent, RuntimeEventValidationOptions, SseParser, ThreadSummaryEvent, Utf8Decoder, } from "./generated/protocol.js";
2
+ export type { AbortSignalLike as ProtocolAbortSignalLike, JsonScalar, JsonValue, ModelTurnEventName, ModelTurnKind, ModelTurnOutcome, ModelTurnPayload, ModelTurnRuntimeEvent, ModelTurnStatus, ProtocolErrorCategory, PublicResponseBlock, ExtendedRuntimeEvent, RuntimeEvent, RuntimeEventValidationOptions, SseParser, ThreadSummaryEvent, Utf8Decoder, } from "./generated/protocol.js";
3
3
  export { compressionFromContextWindow, createContextWindowTracker, mergeContextWindow, mergeContextWindowUpdate, normalizeContextCompression, normalizeContextWindow, } from "./context-window.js";
4
- export type { ActiveThreadRun, Attachment, AttachmentUploadResult, RunCancelResult, RunContext, RunResumeResult, ThreadDeleteResult, ThreadDetail, ThreadSummary, ThreadTurn, ThreadsResponse, ToolInputOverrides, Turn, } from "./runtime-types.js";
4
+ export type { ActiveThreadRun, Attachment, AttachmentContentAccess, AttachmentUploadResult, FeedbackRating, FeedbackReason, ResponseFeedback, ResponseFeedbackResult, RunCancelResult, RunContext, RunResumeResult, ThreadDeleteResult, ThreadDetail, ThreadSummary, ThreadTurn, ThreadsResponse, ToolInputOverrides, Turn, } from "./runtime-types.js";
5
5
  export type { ContextCompression, ContextWindow, ContextWindowConfidence, ContextWindowSource, ContextWindowStage, ContextWindowTracker, } from "./context-window.js";
package/dist/protocol.js CHANGED
@@ -1,4 +1,4 @@
1
- export { Agents24ProtocolError, CONTRACT_HASH, RUNTIME_PROTOCOL_VERSION, THREAD_SUMMARY_PROTOCOL_VERSION, createSseParser, parseProtocolJson, parseRuntimeEvent, parseRuntimeSsePayload, parseSseBytes, parseThreadSummarySsePayload, validateResponseBlock, validateRuntimeEvent, validateThreadSummaryEvent } from './chunk-NGZUJ3YT.js';
1
+ export { Agents24ProtocolError, CONTRACT_HASH, RUNTIME_PROTOCOL_VERSION, THREAD_SUMMARY_PROTOCOL_VERSION, createSseParser, parseProtocolJson, parseRuntimeEvent, parseRuntimeSsePayload, parseSseBytes, parseThreadSummarySsePayload, validateResponseBlock, validateRuntimeEvent, validateThreadSummaryEvent } from './chunk-FLTCOJZR.js';
2
2
 
3
3
  // src/context-window.ts
4
4
  var SOURCE_PRIORITY = {
@@ -10,6 +10,8 @@ var SOURCE_PRIORITY = {
10
10
  provider_cached_estimate: 1,
11
11
  multimodal_estimate: 2,
12
12
  hf_tokenizer: 3,
13
+ lab_tokenizer: 3,
14
+ tiktoken: 3,
13
15
  runtime_tokenizer: 3,
14
16
  provider_count_api: 4,
15
17
  provider_usage: 5,
@@ -48,16 +50,29 @@ function windowWeight(value) {
48
50
  function normalizeContextCompression(value) {
49
51
  if (!value || typeof value !== "object" || Array.isArray(value)) return null;
50
52
  const payload = value;
53
+ const rawStatus = String(payload.status || "").trim();
54
+ const rawStrategy = String(payload.strategy || "").trim();
51
55
  return {
52
56
  active: Boolean(payload.active),
57
+ status: rawStatus === "started" || rawStatus === "completed" || rawStatus === "failed" ? rawStatus : null,
58
+ strategy: rawStrategy === "artifact_references" || rawStrategy === "semantic_checkpoint" ? rawStrategy : null,
53
59
  reason: typeof payload.reason === "string" ? payload.reason : null,
54
60
  input_tokens: numberOrNull(payload.input_tokens),
55
61
  max_tokens: numberOrNull(payload.max_tokens),
56
62
  usage_ratio: numberOrNull(payload.usage_ratio),
63
+ admission_input_tokens: numberOrNull(payload.admission_input_tokens),
64
+ admission_input_tokens_before: numberOrNull(payload.admission_input_tokens_before),
65
+ admission_input_tokens_after: numberOrNull(payload.admission_input_tokens_after),
66
+ admission_ratio: numberOrNull(payload.admission_ratio),
67
+ admission_confidence: normalizeConfidence(payload.admission_confidence),
68
+ applied_margin: numberOrNull(payload.applied_margin),
57
69
  full_frame_count: numberOrNull(payload.full_frame_count),
58
70
  compact_frame_count: numberOrNull(payload.compact_frame_count),
59
71
  dropped_frame_count: numberOrNull(payload.dropped_frame_count),
60
72
  artifact_ref_count: numberOrNull(payload.artifact_ref_count),
73
+ checkpoint_frame_count: numberOrNull(payload.checkpoint_frame_count),
74
+ input_tokens_before: numberOrNull(payload.input_tokens_before),
75
+ input_tokens_after: numberOrNull(payload.input_tokens_after),
61
76
  compression_trigger_budget: numberOrNull(payload.compression_trigger_budget),
62
77
  compression_target_budget: numberOrNull(payload.compression_target_budget),
63
78
  compression_target_ratio: numberOrNull(payload.compression_target_ratio),
@@ -79,6 +94,10 @@ function normalizeContextWindow(value) {
79
94
  input_tokens: numberOrNull(payload.input_tokens),
80
95
  remaining_tokens: numberOrNull(payload.remaining_tokens),
81
96
  usage_ratio: numberOrNull(payload.usage_ratio),
97
+ admission_input_tokens: numberOrNull(payload.admission_input_tokens),
98
+ admission_ratio: numberOrNull(payload.admission_ratio),
99
+ admission_confidence: normalizeConfidence(payload.admission_confidence),
100
+ applied_margin: numberOrNull(payload.applied_margin),
82
101
  assembly: payload.assembly && typeof payload.assembly === "object" && !Array.isArray(payload.assembly) ? payload.assembly : null,
83
102
  context_compression: normalizeContextCompression(payload.context_compression)
84
103
  };
@@ -110,14 +129,25 @@ function compressionFromContextWindow(value) {
110
129
  const reason = typeof assembly.compaction_reason === "string" ? assembly.compaction_reason : "none";
111
130
  return {
112
131
  active: reason !== "none" || compactFrameCount > 0 || droppedFrameCount > 0,
132
+ status: assembly.status === "started" || assembly.status === "completed" || assembly.status === "failed" ? assembly.status : null,
133
+ strategy: assembly.strategy === "artifact_references" || assembly.strategy === "semantic_checkpoint" ? assembly.strategy : null,
113
134
  reason,
114
135
  input_tokens: value.input_tokens ?? null,
115
136
  max_tokens: value.max_tokens ?? null,
116
137
  usage_ratio: value.usage_ratio ?? null,
138
+ admission_input_tokens: value.admission_input_tokens ?? null,
139
+ admission_input_tokens_before: numberOrNull(assembly.admission_input_tokens_before),
140
+ admission_input_tokens_after: numberOrNull(assembly.admission_input_tokens_after),
141
+ admission_ratio: value.admission_ratio ?? null,
142
+ admission_confidence: value.admission_confidence ?? null,
143
+ applied_margin: value.applied_margin ?? null,
117
144
  full_frame_count: numberOrNull(assembly.full_frame_count),
118
145
  compact_frame_count: compactFrameCount,
119
146
  dropped_frame_count: droppedFrameCount,
120
147
  artifact_ref_count: artifactRefs.length,
148
+ checkpoint_frame_count: numberOrNull(assembly.checkpoint_frame_count),
149
+ input_tokens_before: numberOrNull(assembly.input_tokens_before),
150
+ input_tokens_after: numberOrNull(assembly.input_tokens_after),
121
151
  compression_trigger_budget: numberOrNull(assembly.compression_trigger_budget),
122
152
  compression_target_budget: numberOrNull(assembly.compression_target_budget),
123
153
  compression_target_ratio: numberOrNull(assembly.compression_target_ratio),
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/context-window.ts"],"names":[],"mappings":"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","file":"protocol.js","sourcesContent":["export type ContextWindowSource =\n | \"exact\"\n | \"estimated\"\n | \"provider_count_api\"\n | \"provider_usage\"\n | \"provider_cached_estimate\"\n | \"runtime_tokenizer\"\n | \"hf_tokenizer\"\n | \"multimodal_estimate\"\n | \"text_estimate\"\n | \"tokenizer_estimate\"\n | \"heuristic_estimate\"\n | \"unknown\";\n\nexport type ContextWindowStage = \"preflight\" | \"sent_prompt\" | \"final_usage\";\nexport type ContextWindowConfidence = \"exact\" | \"high\" | \"medium\" | \"low\" | \"unknown\";\n\nexport type ContextCompression = {\n active: boolean;\n reason?: string | null;\n input_tokens?: number | null;\n max_tokens?: number | null;\n usage_ratio?: number | null;\n full_frame_count?: number | null;\n compact_frame_count?: number | null;\n dropped_frame_count?: number | null;\n artifact_ref_count?: number | null;\n compression_trigger_budget?: number | null;\n compression_target_budget?: number | null;\n compression_target_ratio?: number | null;\n threshold_used?: number | null;\n};\n\nexport type ContextWindow = {\n source: ContextWindowSource;\n run_id?: string | null;\n stage?: ContextWindowStage | null;\n confidence?: ContextWindowConfidence | null;\n counter?: string | null;\n model_id?: string | null;\n max_tokens?: number | null;\n max_tokens_source?: string | null;\n input_tokens?: number | null;\n remaining_tokens?: number | null;\n usage_ratio?: number | null;\n assembly?: Record<string, unknown> | null;\n context_compression?: ContextCompression | null;\n};\n\nconst SOURCE_PRIORITY: Record<ContextWindowSource, number> = {\n unknown: 0,\n heuristic_estimate: 1,\n tokenizer_estimate: 1,\n text_estimate: 1,\n estimated: 1,\n provider_cached_estimate: 1,\n multimodal_estimate: 2,\n hf_tokenizer: 3,\n runtime_tokenizer: 3,\n provider_count_api: 4,\n provider_usage: 5,\n exact: 5,\n};\n\nconst STAGE_PRIORITY: Record<ContextWindowStage, number> = {\n preflight: 0,\n sent_prompt: 1,\n final_usage: 2,\n};\n\nfunction numberOrNull(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n}\n\nfunction normalizeSource(value: unknown): ContextWindowSource {\n const raw = typeof value === \"string\" ? value.trim() : \"\";\n return raw in SOURCE_PRIORITY ? raw as ContextWindowSource : raw ? \"estimated\" : \"unknown\";\n}\n\nfunction normalizeStage(value: unknown): ContextWindowStage {\n const raw = typeof value === \"string\" ? value.trim() : \"\";\n return raw === \"preflight\" || raw === \"sent_prompt\" || raw === \"final_usage\" ? raw : \"sent_prompt\";\n}\n\nfunction normalizeConfidence(value: unknown): ContextWindowConfidence | null {\n const raw = typeof value === \"string\" ? value.trim() : \"\";\n return raw === \"exact\" || raw === \"high\" || raw === \"medium\" || raw === \"low\" || raw === \"unknown\" ? raw : null;\n}\n\nfunction stagePriority(value: ContextWindow | null | undefined): number {\n return STAGE_PRIORITY[value?.stage || \"sent_prompt\"] ?? STAGE_PRIORITY.sent_prompt;\n}\n\nfunction hasRenderableWindow(value: ContextWindow | null | undefined): boolean {\n const maxTokens = numberOrNull(value?.max_tokens);\n return maxTokens !== null && maxTokens > 0;\n}\n\nfunction windowWeight(value: ContextWindow | null | undefined): [number, number] {\n return value ? [stagePriority(value), SOURCE_PRIORITY[value.source] || 0] : [0, 0];\n}\n\nexport function normalizeContextCompression(value: unknown): ContextCompression | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const payload = value as Record<string, unknown>;\n return {\n active: Boolean(payload.active),\n reason: typeof payload.reason === \"string\" ? payload.reason : null,\n input_tokens: numberOrNull(payload.input_tokens),\n max_tokens: numberOrNull(payload.max_tokens),\n usage_ratio: numberOrNull(payload.usage_ratio),\n full_frame_count: numberOrNull(payload.full_frame_count),\n compact_frame_count: numberOrNull(payload.compact_frame_count),\n dropped_frame_count: numberOrNull(payload.dropped_frame_count),\n artifact_ref_count: numberOrNull(payload.artifact_ref_count),\n compression_trigger_budget: numberOrNull(payload.compression_trigger_budget),\n compression_target_budget: numberOrNull(payload.compression_target_budget),\n compression_target_ratio: numberOrNull(payload.compression_target_ratio),\n threshold_used: numberOrNull(payload.threshold_used),\n };\n}\n\nexport function normalizeContextWindow(value: unknown): ContextWindow | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const payload = value as Record<string, unknown>;\n return {\n source: normalizeSource(payload.source),\n run_id: typeof payload.run_id === \"string\" ? payload.run_id : null,\n stage: normalizeStage(payload.stage),\n confidence: normalizeConfidence(payload.confidence),\n counter: typeof payload.counter === \"string\" ? payload.counter : null,\n model_id: typeof payload.model_id === \"string\" ? payload.model_id : null,\n max_tokens: numberOrNull(payload.max_tokens),\n max_tokens_source: typeof payload.max_tokens_source === \"string\" ? payload.max_tokens_source : null,\n input_tokens: numberOrNull(payload.input_tokens),\n remaining_tokens: numberOrNull(payload.remaining_tokens),\n usage_ratio: numberOrNull(payload.usage_ratio),\n assembly: payload.assembly && typeof payload.assembly === \"object\" && !Array.isArray(payload.assembly)\n ? payload.assembly as Record<string, unknown>\n : null,\n context_compression: normalizeContextCompression(payload.context_compression),\n };\n}\n\nexport function mergeContextWindow(\n current: ContextWindow | null | undefined,\n incoming: ContextWindow | null | undefined,\n): ContextWindow | null {\n const before = current || null;\n const next = incoming || null;\n if (!next) return before;\n if (!before) return next;\n if (hasRenderableWindow(before) && !hasRenderableWindow(next)) return before;\n if (before.run_id && next.run_id && before.run_id !== next.run_id) {\n return stagePriority(next) >= STAGE_PRIORITY.sent_prompt ? next : before;\n }\n const beforeWeight = windowWeight(before);\n const nextWeight = windowWeight(next);\n return nextWeight[0] > beforeWeight[0] || (nextWeight[0] === beforeWeight[0] && nextWeight[1] >= beforeWeight[1])\n ? next\n : before;\n}\n\nexport function mergeContextWindowUpdate(\n current: ContextWindow | null | undefined,\n incoming: unknown,\n): ContextWindow | null {\n return mergeContextWindow(current, normalizeContextWindow(incoming));\n}\n\nexport function compressionFromContextWindow(value: ContextWindow | null | undefined): ContextCompression | null {\n if (!value) return null;\n if (value.context_compression) return value.context_compression;\n const assembly = value.assembly;\n if (!assembly || typeof assembly !== \"object\" || Array.isArray(assembly)) return null;\n const artifactRefs = Array.isArray(assembly.artifact_refs) ? assembly.artifact_refs : [];\n const compactFrameCount = numberOrNull(assembly.compact_frame_count) ?? 0;\n const droppedFrameCount = numberOrNull(assembly.dropped_frame_count) ?? 0;\n const reason = typeof assembly.compaction_reason === \"string\" ? assembly.compaction_reason : \"none\";\n return {\n active: reason !== \"none\" || compactFrameCount > 0 || droppedFrameCount > 0,\n reason,\n input_tokens: value.input_tokens ?? null,\n max_tokens: value.max_tokens ?? null,\n usage_ratio: value.usage_ratio ?? null,\n full_frame_count: numberOrNull(assembly.full_frame_count),\n compact_frame_count: compactFrameCount,\n dropped_frame_count: droppedFrameCount,\n artifact_ref_count: artifactRefs.length,\n compression_trigger_budget: numberOrNull(assembly.compression_trigger_budget),\n compression_target_budget: numberOrNull(assembly.compression_target_budget),\n compression_target_ratio: numberOrNull(assembly.compression_target_ratio),\n threshold_used: numberOrNull(assembly.threshold_used),\n };\n}\n\nexport type ContextWindowTracker = {\n readonly current: ContextWindow | null;\n update(incoming: unknown): ContextWindow | null;\n reset(next?: unknown): ContextWindow | null;\n};\n\nexport function createContextWindowTracker(initial?: unknown): ContextWindowTracker {\n let current = normalizeContextWindow(initial);\n return {\n get current() { return current; },\n update(incoming) {\n current = mergeContextWindowUpdate(current, incoming);\n return current;\n },\n reset(next) {\n current = normalizeContextWindow(next);\n return current;\n },\n };\n}\n"]}
1
+ {"version":3,"sources":["../src/context-window.ts"],"names":[],"mappings":"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","file":"protocol.js","sourcesContent":["export type ContextWindowSource =\n | \"exact\"\n | \"estimated\"\n | \"provider_count_api\"\n | \"provider_usage\"\n | \"provider_cached_estimate\"\n | \"runtime_tokenizer\"\n | \"hf_tokenizer\"\n | \"lab_tokenizer\"\n | \"tiktoken\"\n | \"multimodal_estimate\"\n | \"text_estimate\"\n | \"tokenizer_estimate\"\n | \"heuristic_estimate\"\n | \"unknown\";\n\nexport type ContextWindowStage = \"preflight\" | \"sent_prompt\" | \"final_usage\";\nexport type ContextWindowConfidence = \"exact\" | \"high\" | \"medium\" | \"low\" | \"unknown\";\n\nexport type ContextCompression = {\n active: boolean;\n status?: \"started\" | \"completed\" | \"failed\" | null;\n strategy?: \"artifact_references\" | \"semantic_checkpoint\" | null;\n reason?: string | null;\n input_tokens?: number | null;\n max_tokens?: number | null;\n usage_ratio?: number | null;\n admission_input_tokens?: number | null;\n admission_input_tokens_before?: number | null;\n admission_input_tokens_after?: number | null;\n admission_ratio?: number | null;\n admission_confidence?: ContextWindowConfidence | null;\n applied_margin?: number | null;\n full_frame_count?: number | null;\n compact_frame_count?: number | null;\n dropped_frame_count?: number | null;\n artifact_ref_count?: number | null;\n checkpoint_frame_count?: number | null;\n input_tokens_before?: number | null;\n input_tokens_after?: number | null;\n compression_trigger_budget?: number | null;\n compression_target_budget?: number | null;\n compression_target_ratio?: number | null;\n threshold_used?: number | null;\n};\n\nexport type ContextWindow = {\n source: ContextWindowSource;\n run_id?: string | null;\n stage?: ContextWindowStage | null;\n confidence?: ContextWindowConfidence | null;\n counter?: string | null;\n model_id?: string | null;\n max_tokens?: number | null;\n max_tokens_source?: string | null;\n input_tokens?: number | null;\n remaining_tokens?: number | null;\n usage_ratio?: number | null;\n admission_input_tokens?: number | null;\n admission_ratio?: number | null;\n admission_confidence?: ContextWindowConfidence | null;\n applied_margin?: number | null;\n assembly?: Record<string, unknown> | null;\n context_compression?: ContextCompression | null;\n};\n\nconst SOURCE_PRIORITY: Record<ContextWindowSource, number> = {\n unknown: 0,\n heuristic_estimate: 1,\n tokenizer_estimate: 1,\n text_estimate: 1,\n estimated: 1,\n provider_cached_estimate: 1,\n multimodal_estimate: 2,\n hf_tokenizer: 3,\n lab_tokenizer: 3,\n tiktoken: 3,\n runtime_tokenizer: 3,\n provider_count_api: 4,\n provider_usage: 5,\n exact: 5,\n};\n\nconst STAGE_PRIORITY: Record<ContextWindowStage, number> = {\n preflight: 0,\n sent_prompt: 1,\n final_usage: 2,\n};\n\nfunction numberOrNull(value: unknown): number | null {\n return typeof value === \"number\" && Number.isFinite(value) ? value : null;\n}\n\nfunction normalizeSource(value: unknown): ContextWindowSource {\n const raw = typeof value === \"string\" ? value.trim() : \"\";\n return raw in SOURCE_PRIORITY ? raw as ContextWindowSource : raw ? \"estimated\" : \"unknown\";\n}\n\nfunction normalizeStage(value: unknown): ContextWindowStage {\n const raw = typeof value === \"string\" ? value.trim() : \"\";\n return raw === \"preflight\" || raw === \"sent_prompt\" || raw === \"final_usage\" ? raw : \"sent_prompt\";\n}\n\nfunction normalizeConfidence(value: unknown): ContextWindowConfidence | null {\n const raw = typeof value === \"string\" ? value.trim() : \"\";\n return raw === \"exact\" || raw === \"high\" || raw === \"medium\" || raw === \"low\" || raw === \"unknown\" ? raw : null;\n}\n\nfunction stagePriority(value: ContextWindow | null | undefined): number {\n return STAGE_PRIORITY[value?.stage || \"sent_prompt\"] ?? STAGE_PRIORITY.sent_prompt;\n}\n\nfunction hasRenderableWindow(value: ContextWindow | null | undefined): boolean {\n const maxTokens = numberOrNull(value?.max_tokens);\n return maxTokens !== null && maxTokens > 0;\n}\n\nfunction windowWeight(value: ContextWindow | null | undefined): [number, number] {\n return value ? [stagePriority(value), SOURCE_PRIORITY[value.source] || 0] : [0, 0];\n}\n\nexport function normalizeContextCompression(value: unknown): ContextCompression | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const payload = value as Record<string, unknown>;\n const rawStatus = String(payload.status || \"\").trim();\n const rawStrategy = String(payload.strategy || \"\").trim();\n return {\n active: Boolean(payload.active),\n status: rawStatus === \"started\" || rawStatus === \"completed\" || rawStatus === \"failed\" ? rawStatus : null,\n strategy:\n rawStrategy === \"artifact_references\" || rawStrategy === \"semantic_checkpoint\"\n ? rawStrategy\n : null,\n reason: typeof payload.reason === \"string\" ? payload.reason : null,\n input_tokens: numberOrNull(payload.input_tokens),\n max_tokens: numberOrNull(payload.max_tokens),\n usage_ratio: numberOrNull(payload.usage_ratio),\n admission_input_tokens: numberOrNull(payload.admission_input_tokens),\n admission_input_tokens_before: numberOrNull(payload.admission_input_tokens_before),\n admission_input_tokens_after: numberOrNull(payload.admission_input_tokens_after),\n admission_ratio: numberOrNull(payload.admission_ratio),\n admission_confidence: normalizeConfidence(payload.admission_confidence),\n applied_margin: numberOrNull(payload.applied_margin),\n full_frame_count: numberOrNull(payload.full_frame_count),\n compact_frame_count: numberOrNull(payload.compact_frame_count),\n dropped_frame_count: numberOrNull(payload.dropped_frame_count),\n artifact_ref_count: numberOrNull(payload.artifact_ref_count),\n checkpoint_frame_count: numberOrNull(payload.checkpoint_frame_count),\n input_tokens_before: numberOrNull(payload.input_tokens_before),\n input_tokens_after: numberOrNull(payload.input_tokens_after),\n compression_trigger_budget: numberOrNull(payload.compression_trigger_budget),\n compression_target_budget: numberOrNull(payload.compression_target_budget),\n compression_target_ratio: numberOrNull(payload.compression_target_ratio),\n threshold_used: numberOrNull(payload.threshold_used),\n };\n}\n\nexport function normalizeContextWindow(value: unknown): ContextWindow | null {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) return null;\n const payload = value as Record<string, unknown>;\n return {\n source: normalizeSource(payload.source),\n run_id: typeof payload.run_id === \"string\" ? payload.run_id : null,\n stage: normalizeStage(payload.stage),\n confidence: normalizeConfidence(payload.confidence),\n counter: typeof payload.counter === \"string\" ? payload.counter : null,\n model_id: typeof payload.model_id === \"string\" ? payload.model_id : null,\n max_tokens: numberOrNull(payload.max_tokens),\n max_tokens_source: typeof payload.max_tokens_source === \"string\" ? payload.max_tokens_source : null,\n input_tokens: numberOrNull(payload.input_tokens),\n remaining_tokens: numberOrNull(payload.remaining_tokens),\n usage_ratio: numberOrNull(payload.usage_ratio),\n admission_input_tokens: numberOrNull(payload.admission_input_tokens),\n admission_ratio: numberOrNull(payload.admission_ratio),\n admission_confidence: normalizeConfidence(payload.admission_confidence),\n applied_margin: numberOrNull(payload.applied_margin),\n assembly: payload.assembly && typeof payload.assembly === \"object\" && !Array.isArray(payload.assembly)\n ? payload.assembly as Record<string, unknown>\n : null,\n context_compression: normalizeContextCompression(payload.context_compression),\n };\n}\n\nexport function mergeContextWindow(\n current: ContextWindow | null | undefined,\n incoming: ContextWindow | null | undefined,\n): ContextWindow | null {\n const before = current || null;\n const next = incoming || null;\n if (!next) return before;\n if (!before) return next;\n if (hasRenderableWindow(before) && !hasRenderableWindow(next)) return before;\n if (before.run_id && next.run_id && before.run_id !== next.run_id) {\n return stagePriority(next) >= STAGE_PRIORITY.sent_prompt ? next : before;\n }\n const beforeWeight = windowWeight(before);\n const nextWeight = windowWeight(next);\n return nextWeight[0] > beforeWeight[0] || (nextWeight[0] === beforeWeight[0] && nextWeight[1] >= beforeWeight[1])\n ? next\n : before;\n}\n\nexport function mergeContextWindowUpdate(\n current: ContextWindow | null | undefined,\n incoming: unknown,\n): ContextWindow | null {\n return mergeContextWindow(current, normalizeContextWindow(incoming));\n}\n\nexport function compressionFromContextWindow(value: ContextWindow | null | undefined): ContextCompression | null {\n if (!value) return null;\n if (value.context_compression) return value.context_compression;\n const assembly = value.assembly;\n if (!assembly || typeof assembly !== \"object\" || Array.isArray(assembly)) return null;\n const artifactRefs = Array.isArray(assembly.artifact_refs) ? assembly.artifact_refs : [];\n const compactFrameCount = numberOrNull(assembly.compact_frame_count) ?? 0;\n const droppedFrameCount = numberOrNull(assembly.dropped_frame_count) ?? 0;\n const reason = typeof assembly.compaction_reason === \"string\" ? assembly.compaction_reason : \"none\";\n return {\n active: reason !== \"none\" || compactFrameCount > 0 || droppedFrameCount > 0,\n status:\n assembly.status === \"started\" || assembly.status === \"completed\" || assembly.status === \"failed\"\n ? assembly.status\n : null,\n strategy:\n assembly.strategy === \"artifact_references\" || assembly.strategy === \"semantic_checkpoint\"\n ? assembly.strategy\n : null,\n reason,\n input_tokens: value.input_tokens ?? null,\n max_tokens: value.max_tokens ?? null,\n usage_ratio: value.usage_ratio ?? null,\n admission_input_tokens: value.admission_input_tokens ?? null,\n admission_input_tokens_before: numberOrNull(assembly.admission_input_tokens_before),\n admission_input_tokens_after: numberOrNull(assembly.admission_input_tokens_after),\n admission_ratio: value.admission_ratio ?? null,\n admission_confidence: value.admission_confidence ?? null,\n applied_margin: value.applied_margin ?? null,\n full_frame_count: numberOrNull(assembly.full_frame_count),\n compact_frame_count: compactFrameCount,\n dropped_frame_count: droppedFrameCount,\n artifact_ref_count: artifactRefs.length,\n checkpoint_frame_count: numberOrNull(assembly.checkpoint_frame_count),\n input_tokens_before: numberOrNull(assembly.input_tokens_before),\n input_tokens_after: numberOrNull(assembly.input_tokens_after),\n compression_trigger_budget: numberOrNull(assembly.compression_trigger_budget),\n compression_target_budget: numberOrNull(assembly.compression_target_budget),\n compression_target_ratio: numberOrNull(assembly.compression_target_ratio),\n threshold_used: numberOrNull(assembly.threshold_used),\n };\n}\n\nexport type ContextWindowTracker = {\n readonly current: ContextWindow | null;\n update(incoming: unknown): ContextWindow | null;\n reset(next?: unknown): ContextWindow | null;\n};\n\nexport function createContextWindowTracker(initial?: unknown): ContextWindowTracker {\n let current = normalizeContextWindow(initial);\n return {\n get current() { return current; },\n update(incoming) {\n current = mergeContextWindowUpdate(current, incoming);\n return current;\n },\n reset(next) {\n current = normalizeContextWindow(next);\n return current;\n },\n };\n}\n"]}
@@ -11,7 +11,16 @@ export type Attachment = {
11
11
  filename: string;
12
12
  mime_type: string;
13
13
  byte_size: number;
14
- status: string;
14
+ processing_status: "uploaded" | "processed" | "failed";
15
+ content_status: "available" | "expired";
16
+ retention: {
17
+ mode: "duration";
18
+ seconds: 3600 | 18000 | 86400;
19
+ } | {
20
+ mode: "thread_lifetime";
21
+ };
22
+ bound_at: string | null;
23
+ expires_at: string | null;
15
24
  processing_error: string | null;
16
25
  metadata: Record<string, unknown>;
17
26
  created_at: string;
@@ -20,12 +29,34 @@ export type Attachment = {
20
29
  export type AttachmentUploadResult = {
21
30
  items: Attachment[];
22
31
  };
32
+ export type AttachmentContentAccess = {
33
+ url: string;
34
+ disposition: "inline" | "attachment";
35
+ valid_until: string;
36
+ filename: string;
37
+ mime_type: string;
38
+ byte_size: number;
39
+ };
23
40
  export type ActiveThreadRun = {
24
41
  run_id: string;
25
42
  status: string;
43
+ is_cancellable: boolean;
26
44
  started_at: string | null;
27
45
  created_at: string;
28
46
  };
47
+ export type FeedbackRating = "like" | "dislike";
48
+ export type FeedbackReason = "incorrect" | "irrelevant" | "incomplete" | "unsafe" | "citation_issue" | "other";
49
+ export type ResponseFeedback = {
50
+ rating: FeedbackRating;
51
+ reason: FeedbackReason | null;
52
+ comment: string | null;
53
+ created_at: string;
54
+ updated_at: string;
55
+ };
56
+ export type ResponseFeedbackResult = {
57
+ run_id: string;
58
+ feedback: ResponseFeedback | null;
59
+ };
29
60
  export type ThreadSummary = {
30
61
  id: string;
31
62
  agent_id: string | null;
@@ -54,6 +85,8 @@ export type ThreadTurn = {
54
85
  attachments: Attachment[];
55
86
  created_at: string;
56
87
  completed_at: string | null;
88
+ feedback: ResponseFeedback | null;
89
+ context_window: ContextWindow | null;
57
90
  run_events?: RuntimeEvent[];
58
91
  };
59
92
  export type Turn = ThreadTurn;
@@ -77,8 +110,10 @@ export type RunContext = {
77
110
  };
78
111
  export type RunCancelResult = {
79
112
  run_id: string;
80
- status: string;
113
+ status: "cancelling" | "cancelled" | "completed" | "failed";
81
114
  thread_id?: string | null;
115
+ cancellation_requested_at?: string;
116
+ cancellation_deadline_at?: string;
82
117
  };
83
118
  export type RunResumeResult = {
84
119
  run_id: string;
package/dist/types.d.ts CHANGED
@@ -1,4 +1,5 @@
1
1
  import type { RuntimeEvent, ThreadSummaryEvent } from "./generated/protocol.js";
2
+ import type { ContextWindow } from "./context-window.js";
2
3
  export type MaybePromise<T> = T | Promise<T>;
3
4
  export interface AbortSignalLike {
4
5
  readonly aborted: boolean;
@@ -185,6 +186,46 @@ export interface Agents24ClientOptions {
185
186
  transport?: TransportSelection;
186
187
  maxReconnectAttempts?: number;
187
188
  }
189
+ export interface ClientModelSelectionFeature {
190
+ selectable: boolean;
191
+ node_id: string | null;
192
+ node_type: "agent" | "classify" | "evaluate" | null;
193
+ label: string | null;
194
+ default_id: string | null;
195
+ options: readonly {
196
+ id: string;
197
+ label: string;
198
+ }[];
199
+ }
200
+ export interface ClientInputModalityFeature {
201
+ enabled: boolean;
202
+ required: boolean;
203
+ }
204
+ export interface ClientAttachmentInputModalityFeature extends ClientInputModalityFeature {
205
+ allowed_mime_types: readonly string[];
206
+ }
207
+ export interface ClientInputFeature {
208
+ version: "agents24.runtime-inputs.v2";
209
+ modalities: {
210
+ text: ClientInputModalityFeature;
211
+ files: ClientAttachmentInputModalityFeature;
212
+ images: ClientAttachmentInputModalityFeature;
213
+ audio: ClientAttachmentInputModalityFeature & {
214
+ recording_enabled: boolean;
215
+ };
216
+ };
217
+ limits: {
218
+ max_attachments_per_turn: number;
219
+ max_file_bytes: number;
220
+ max_total_bytes: number;
221
+ };
222
+ retention: {
223
+ mode: "duration";
224
+ seconds: 3600 | 18000 | 86400;
225
+ } | {
226
+ mode: "thread_lifetime";
227
+ };
228
+ }
188
229
  export interface ClientBootstrap {
189
230
  version: string;
190
231
  deployment: {
@@ -206,7 +247,10 @@ export interface ClientBootstrap {
206
247
  jwks_path: string;
207
248
  };
208
249
  capabilities: readonly string[];
209
- features: Record<string, unknown>;
250
+ features: Record<string, unknown> & {
251
+ models?: ClientModelSelectionFeature;
252
+ inputs: ClientInputFeature;
253
+ };
210
254
  native_profiles: readonly Record<string, unknown>[];
211
255
  }
212
256
  export interface ClientHints {
@@ -242,11 +286,38 @@ export interface RunAttachInput {
242
286
  headers?: Readonly<Record<string, string>>;
243
287
  signal?: AbortSignalLike | undefined;
244
288
  }
289
+ export type FeedbackRating = "like" | "dislike";
290
+ export type FeedbackReason = "incorrect" | "irrelevant" | "incomplete" | "unsafe" | "citation_issue" | "other";
291
+ export interface ResponseFeedback {
292
+ rating: FeedbackRating;
293
+ reason: FeedbackReason | null;
294
+ comment: string | null;
295
+ created_at: string;
296
+ updated_at: string;
297
+ }
298
+ export interface ResponseFeedbackResult {
299
+ run_id: string;
300
+ feedback: ResponseFeedback | null;
301
+ }
302
+ export interface SetFeedbackInput {
303
+ runId: string;
304
+ rating: FeedbackRating | null;
305
+ reason?: FeedbackReason | null;
306
+ comment?: string | null;
307
+ signal?: AbortSignalLike;
308
+ }
245
309
  export interface ThreadListInput {
246
310
  skip?: number;
247
311
  limit?: number;
248
312
  signal?: AbortSignalLike | undefined;
249
313
  }
314
+ export interface ActiveThreadRun {
315
+ run_id: string;
316
+ status: "queued" | "running" | "paused" | "cancelling";
317
+ is_cancellable: boolean;
318
+ started_at: string | null;
319
+ created_at: string;
320
+ }
250
321
  export interface ThreadSummary {
251
322
  id: string;
252
323
  title?: string | null;
@@ -255,6 +326,7 @@ export interface ThreadSummary {
255
326
  last_activity_at?: string | null;
256
327
  last_run_id?: string | null;
257
328
  last_run_status?: string | null;
329
+ active_run?: ActiveThreadRun | null;
258
330
  [key: string]: unknown;
259
331
  }
260
332
  export interface ThreadListResult {
@@ -262,7 +334,9 @@ export interface ThreadListResult {
262
334
  total?: number;
263
335
  }
264
336
  export interface ThreadDetail extends ThreadSummary {
265
- turns?: readonly Record<string, unknown>[];
337
+ turns?: readonly (Record<string, unknown> & {
338
+ context_window?: ContextWindow | null;
339
+ })[];
266
340
  paging?: {
267
341
  has_more?: boolean;
268
342
  next_before_turn_index?: number | null;
@@ -274,10 +348,29 @@ export interface AttachmentResult {
274
348
  filename: string;
275
349
  mime_type: string;
276
350
  byte_size: number;
277
- status: string;
351
+ processing_status: "uploaded" | "processed" | "failed";
352
+ content_status: "available" | "expired";
353
+ retention: {
354
+ mode: "duration";
355
+ seconds: 3600 | 18000 | 86400;
356
+ } | {
357
+ mode: "thread_lifetime";
358
+ };
359
+ bound_at: string | null;
360
+ expires_at: string | null;
278
361
  [key: string]: unknown;
279
362
  }
280
- export type HitlAction = "approve" | "reject" | "connect" | "skip";
363
+ export type HitlAction = "approve" | "reject" | "connect" | "skip" | "respond";
364
+ export interface HitlAnswer {
365
+ question_id: string;
366
+ selected_option_ids: string[];
367
+ custom_text?: string;
368
+ }
369
+ export type HitlResponse = {
370
+ action: HitlAction;
371
+ comment?: string;
372
+ answers?: HitlAnswer[];
373
+ };
281
374
  export interface HitlResumeResult {
282
375
  run_id: string;
283
376
  thread_id?: string | null;
@@ -295,10 +388,42 @@ export interface McpCallbackResult {
295
388
  connection_id: string;
296
389
  server_id?: string;
297
390
  }
391
+ export interface EffectiveResourcePolicy {
392
+ customer_principal_ref: string | null;
393
+ model_selection: {
394
+ selectable: boolean;
395
+ node_id: string | null;
396
+ default_id: string | null;
397
+ options: readonly {
398
+ id: string;
399
+ label: string;
400
+ }[];
401
+ };
402
+ quota_constraints: readonly {
403
+ model: {
404
+ id: string;
405
+ name: string;
406
+ };
407
+ boundary_kind: "agent" | "client_deployment" | "organization_user" | "customer_principal";
408
+ boundary_ref: string;
409
+ used: number;
410
+ reserved: number;
411
+ limit: number;
412
+ remaining: number;
413
+ period_start: string;
414
+ reset_at: string;
415
+ blocked: boolean;
416
+ }[];
417
+ }
298
418
  export interface AgentClient {
299
419
  bootstrap(input?: {
300
420
  signal?: AbortSignalLike;
301
421
  }): Promise<ClientBootstrap>;
422
+ readonly resourcePolicies: {
423
+ getEffective(input?: {
424
+ signal?: AbortSignalLike;
425
+ }): Promise<EffectiveResourcePolicy>;
426
+ };
302
427
  readonly chat: {
303
428
  stream(input: ChatStreamInput, onEvent: RuntimeEventHandler): Promise<StreamResult>;
304
429
  };
@@ -309,6 +434,7 @@ export interface AgentClient {
309
434
  idempotencyKey: string;
310
435
  signal?: AbortSignalLike;
311
436
  }): Promise<Record<string, unknown>>;
437
+ setFeedback(input: SetFeedbackInput): Promise<ResponseFeedbackResult>;
312
438
  };
313
439
  readonly threads: {
314
440
  list(input?: ThreadListInput): Promise<ThreadListResult>;
@@ -316,7 +442,6 @@ export interface AgentClient {
316
442
  threadId: string;
317
443
  limit?: number;
318
444
  beforeTurnIndex?: number;
319
- includeRunEvents?: boolean;
320
445
  signal?: AbortSignalLike;
321
446
  }): Promise<ThreadDetail>;
322
447
  events(input: {
@@ -330,12 +455,17 @@ export interface AgentClient {
330
455
  }): Promise<Record<string, unknown>>;
331
456
  };
332
457
  readonly attachments: {
333
- upload(input: {
334
- upload: PortableUpload;
458
+ uploadBatch(input: {
459
+ uploads: readonly PortableUpload[];
335
460
  threadId?: string;
336
461
  idempotencyKey: string;
337
462
  signal?: AbortSignalLike;
338
- }): Promise<AttachmentResult>;
463
+ }): Promise<readonly AttachmentResult[]>;
464
+ createContentAccess(input: {
465
+ attachmentId: string;
466
+ disposition: "inline" | "attachment";
467
+ signal?: AbortSignalLike;
468
+ }): Promise<import("./runtime-types.js").AttachmentContentAccess>;
339
469
  };
340
470
  readonly hitl: {
341
471
  resume(input: {
@@ -343,6 +473,7 @@ export interface AgentClient {
343
473
  interruptId: string;
344
474
  action: HitlAction;
345
475
  comment?: string;
476
+ answers?: HitlAnswer[];
346
477
  idempotencyKey: string;
347
478
  signal?: AbortSignalLike;
348
479
  }): Promise<HitlResumeResult>;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@agents24/client",
3
- "version": "0.2.0",
3
+ "version": "0.2.2",
4
4
  "description": "Framework-neutral end-user runtime client for deployment-scoped Agents24 sessions.",
5
5
  "keywords": [
6
6
  "agents24",
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/generated/protocol.js"],"names":[],"mappings":"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","file":"chunk-NGZUJ3YT.js","sourcesContent":["// @generated by @agents24/sdk-contract; DO NOT EDIT.\n// contract-sha256: 90a64d2df2facc3c4510edc7a0762cb86a336578667d3bc6cfeb7ae035133e00\nconst RUNTIME_EVENTS = new Set([\"run.accepted\",\"run.snapshot\",\"run.completed\",\"run.cancelled\",\"run.paused\",\"run.failed\",\"run.detached\",\"assistant.delta\",\"reasoning.update\",\"tool.started\",\"tool.completed\",\"tool.failed\",\"tool.cancelled\",\"tool.child_run_started\",\"tool.child_run_finished\",\"tool.child_tool_started\",\"tool.child_tool_completed\",\"tool.child_tool_failed\",\"tool.child_tool_cancelled\",\"context_window.updated\",\"context.compression.updated\",\"run_usage.updated\",\"hitl.requested\",\"hitl.resolved\",\"mcp.authorization.required\",\"mcp.authorization.completed\",\"mcp.authorization.failed\",\"attachment.created\",\"attachment.updated\",\"attachment.ready\",\"attachment.failed\",\"source.added\",\"citation.added\",\"ui_blocks.updated\",\"runtime.error\"]);\nconst RUNTIME_STAGES = new Set([\"run\",\"assistant\",\"reasoning\",\"tool\",\"context\",\"usage\",\"attachment\",\"source\",\"system\"]);\nconst RESPONSE_BLOCK_KINDS = new Set([\"assistant_text\",\"reasoning_note\",\"tool_call\",\"ui_blocks\",\"hitl_request\",\"error\",\"source\",\"citation\",\"attachment\",\"mcp_authorization\",\"user_message\"]);\nconst THREAD_EVENTS = new Set([\"thread.summary.updated\",\"thread.deleted\",\"snapshot_required\"]);\nconst UTC_TIMESTAMP = /^\\d{4}-\\d{2}-\\d{2}T\\d{2}:\\d{2}:\\d{2}(?:\\.\\d+)?Z$/;\n\nexport const CONTRACT_HASH = \"90a64d2df2facc3c4510edc7a0762cb86a336578667d3bc6cfeb7ae035133e00\";\nexport const RUNTIME_PROTOCOL_VERSION = \"run-stream.v2\";\nexport const THREAD_SUMMARY_PROTOCOL_VERSION = \"agents24.thread_summary_event.v1\";\n\nexport class Agents24ProtocolError extends Error {\n constructor(category, message, details) {\n super(message);\n this.name = \"Agents24ProtocolError\";\n this.category = category;\n this.details = details;\n }\n}\n\nfunction record(value) {\n return value !== null && typeof value === \"object\" && !Array.isArray(value);\n}\n\nfunction nonEmptyString(value) {\n return typeof value === \"string\" && value.length > 0;\n}\n\nfunction protocolError(category, message, details) {\n throw new Agents24ProtocolError(category, message, details);\n}\n\nfunction includesProtocolName(values, value) {\n return Array.isArray(values) && values.includes(value);\n}\n\nexport function parseProtocolJson(payload) {\n try {\n return JSON.parse(payload);\n } catch (cause) {\n return protocolError(\"invalid_json\", \"Protocol payload is not valid JSON.\", cause);\n }\n}\n\nexport function validateResponseBlock(value) {\n if (!record(value) || !nonEmptyString(value.id) || !RESPONSE_BLOCK_KINDS.has(value.kind)) {\n return protocolError(\"invalid_response_block\", \"Response block identity or kind is invalid.\", value);\n }\n if (!Number.isInteger(value.seq) || value.seq < 0 || !nonEmptyString(value.status)) {\n return protocolError(\"invalid_response_block\", \"Response block sequence or status is invalid.\", value);\n }\n return value;\n}\n\nfunction validateBlocks(value) {\n if (!record(value)) return;\n const blocks = value.response_blocks;\n if (blocks === undefined) return;\n if (!Array.isArray(blocks)) {\n protocolError(\"invalid_response_block\", \"response_blocks must be an array.\", blocks);\n }\n for (const block of blocks) validateResponseBlock(block);\n}\n\nexport function validateRuntimeEvent(value, options = {}) {\n if (!record(value)) {\n return protocolError(\"invalid_envelope\", \"Runtime event must be an object.\", value);\n }\n if (value.version !== RUNTIME_PROTOCOL_VERSION) {\n return protocolError(\"unsupported_version\", \"Runtime event version is unsupported.\", value.version);\n }\n if (!RUNTIME_EVENTS.has(value.event) && !includesProtocolName(options.additionalEventNames, value.event)) {\n return protocolError(\"unknown_event\", \"Runtime event name is not in the public protocol.\", value.event);\n }\n if (!Number.isInteger(value.seq) || value.seq < 0 || !UTC_TIMESTAMP.test(value.ts || \"\") ||\n !nonEmptyString(value.run_id) ||\n (!RUNTIME_STAGES.has(value.stage) && !includesProtocolName(options.additionalStages, value.stage)) ||\n !record(value.payload)) {\n return protocolError(\"invalid_envelope\", \"Runtime event is missing a required public field.\", value);\n }\n validateBlocks(value.payload);\n return value;\n}\n\nexport function parseRuntimeEvent(payload, options) {\n return validateRuntimeEvent(parseProtocolJson(payload), options);\n}\n\nexport function validateThreadSummaryEvent(value) {\n if (!record(value) || value.schema_version !== THREAD_SUMMARY_PROTOCOL_VERSION ||\n !THREAD_EVENTS.has(value.event) || !Number.isInteger(value.cursor) || value.cursor < 0) {\n return protocolError(\"invalid_thread_summary\", \"Thread-summary event envelope is invalid.\", value);\n }\n if (value.event === \"thread.summary.updated\" && !record(value.thread)) {\n return protocolError(\"invalid_thread_summary\", \"Updated thread-summary event requires thread.\", value);\n }\n if (value.event === \"thread.deleted\" && !nonEmptyString(value.thread_id)) {\n return protocolError(\"invalid_thread_summary\", \"Deleted thread-summary event requires thread_id.\", value);\n }\n return value;\n}\n\nfunction parseSseBlock(block) {\n const data = [];\n for (const line of block.split(/\\r\\n|\\r|\\n/)) {\n if (!line || line.startsWith(\":\")) continue;\n const separator = line.indexOf(\":\");\n const field = separator < 0 ? line : line.slice(0, separator);\n let value = separator < 0 ? \"\" : line.slice(separator + 1);\n if (value.startsWith(\" \")) value = value.slice(1);\n if (field === \"data\") data.push(value);\n }\n return data.length ? data.join(\"\\n\") : null;\n}\n\nfunction nextSseBoundary(buffer) {\n const match = /\\r\\n\\r\\n|\\n\\n|\\r\\r/.exec(buffer);\n return match ? { index: match.index, length: match[0].length } : null;\n}\n\nexport function createSseParser(options) {\n const { decoder, onPayload, signal } = options;\n if (!decoder || typeof decoder.decode !== \"function\" || typeof onPayload !== \"function\") {\n protocolError(\"invalid_envelope\", \"SSE parser requires decoder and onPayload capabilities.\");\n }\n let buffer = \"\";\n let finished = false;\n\n async function drain(allowTrailing) {\n let boundary = nextSseBoundary(buffer);\n while (boundary) {\n const block = buffer.slice(0, boundary.index);\n buffer = buffer.slice(boundary.index + boundary.length);\n const payload = parseSseBlock(block);\n if (payload !== null) await onPayload(payload);\n if (signal?.aborted) return;\n boundary = nextSseBoundary(buffer);\n }\n if (allowTrailing && buffer.trim()) {\n const payload = parseSseBlock(buffer);\n buffer = \"\";\n if (payload !== null) await onPayload(payload);\n }\n }\n\n return {\n async push(chunk) {\n if (finished) protocolError(\"invalid_envelope\", \"Cannot push after SSE parser finish.\");\n if (signal?.aborted) return;\n buffer += decoder.decode(chunk, { stream: true });\n await drain(false);\n },\n async finish() {\n if (finished) return;\n finished = true;\n if (signal?.aborted) return;\n buffer += decoder.decode();\n await drain(true);\n },\n };\n}\n\nexport async function parseSseBytes(chunks, options) {\n const payloads = [];\n const parser = createSseParser({\n ...options,\n onPayload: async (payload) => {\n payloads.push(payload);\n if (options.onPayload) await options.onPayload(payload);\n },\n });\n for await (const chunk of chunks) {\n if (options.signal?.aborted) break;\n await parser.push(chunk);\n }\n await parser.finish();\n return payloads;\n}\n\nexport function parseRuntimeSsePayload(payload, options) {\n return parseRuntimeEvent(payload, options);\n}\n\nexport function parseThreadSummarySsePayload(payload) {\n return validateThreadSummaryEvent(parseProtocolJson(payload));\n}\n"]}
@@ -1 +0,0 @@
1
- {"version":3,"sources":["../src/client.ts"],"names":[],"mappings":"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","file":"chunk-QAIOKNUK.js","sourcesContent":["import { defaultClock, defaultIds, resolveDecoderFactory, resolveEncoder, resolveFetch } from \"./capabilities.js\";\nimport { Agents24ClientError } from \"./errors.js\";\nimport { AuthenticatedHttp, responseError, responseJson } from \"./http.js\";\nimport { createByteMultipartEncoder } from \"./multipart.js\";\nimport { consumeRuntimeStream, consumeThreadSummaryStream, type RuntimeStreamState } from \"./stream.js\";\nimport { appendQuery, encodePath, normalizeBaseUrl } from \"./url.js\";\nimport type {\n AgentClient,\n Agents24ClientOptions,\n AttachmentResult,\n ClientBootstrap,\n HitlResumeResult,\n McpAuthorizationResult,\n McpCallbackResult,\n RuntimeEventHandler,\n StreamResult,\n ThreadDetail,\n ThreadListResult,\n ThreadSummaryEventHandler,\n} from \"./types.js\";\n\nfunction objectResult<T extends object>(value: unknown, operation: string): T {\n if (!value || typeof value !== \"object\" || Array.isArray(value)) {\n throw new Agents24ClientError(`${operation} returned an invalid response.`, {\n kind: \"protocol\",\n code: \"INVALID_JSON_RESPONSE\",\n });\n }\n return value as T;\n}\n\nfunction deploymentPath(deploymentId: string, suffix: string): string {\n return `/public/client-runtime/deployments/${encodePath(deploymentId)}${suffix}`;\n}\n\nfunction shouldReconnect(error: unknown): boolean {\n return error instanceof Agents24ClientError && error.kind === \"network\" && error.retryable;\n}\n\nexport function createAgents24Client(options: Agents24ClientOptions): AgentClient {\n if (!options.deploymentId || /[\\r\\n\\0/]/.test(options.deploymentId)) {\n throw new Agents24ClientError(\"deploymentId is invalid.\", {\n kind: \"configuration\",\n code: \"INVALID_DEPLOYMENT_ID\",\n });\n }\n if (options.transport !== undefined && options.transport !== \"auto\" && options.transport !== \"fetch\") {\n throw new Agents24ClientError(\"The requested transport is unavailable.\", {\n kind: \"missing_capability\",\n code: \"MISSING_TRANSPORT\",\n });\n }\n const baseUrl = normalizeBaseUrl(options.baseUrl);\n const fetch = resolveFetch(options.fetch);\n const decoder = resolveDecoderFactory(options.decoder);\n const clock = options.clock ?? defaultClock();\n const ids = options.ids ?? defaultIds();\n const maxReconnectAttempts = Math.max(0, Math.min(options.maxReconnectAttempts ?? 3, 10));\n const http = new AuthenticatedHttp({\n baseUrl,\n sessionProvider: options.sessionProvider,\n fetch,\n clock,\n ...(options.telemetry ? { telemetry: options.telemetry } : {}),\n });\n const emit = async (event: Parameters<NonNullable<typeof options.telemetry>[\"emit\"]>[0]): Promise<void> => {\n try {\n await options.telemetry?.emit(event);\n } catch {\n // Telemetry is isolated from runtime behavior and credentials.\n }\n };\n\n const attach = async (\n runId: string,\n cursor: number | undefined,\n headers: Readonly<Record<string, string>> | undefined,\n signal: Parameters<AgentClient[\"runs\"][\"attach\"]>[0][\"signal\"],\n onEvent: RuntimeEventHandler,\n onProgress?: (state: RuntimeStreamState) => void,\n ): Promise<RuntimeStreamState> => {\n const response = await http.request(\n \"POST\",\n deploymentPath(options.deploymentId, `/runs/${encodePath(runId)}/attach`),\n {\n operation: \"runs.attach\",\n accept: \"text/event-stream\",\n body: cursor === undefined ? {} : { cursor },\n ...(headers ? { headers } : {}),\n ...(signal ? { signal } : {}),\n },\n );\n return consumeRuntimeStream({\n response,\n decoder: decoder(),\n onEvent,\n ...(signal ? { signal } : {}),\n ...(cursor === undefined ? {} : { afterCursor: cursor }),\n ...(onProgress ? { onProgress } : {}),\n });\n };\n\n const reconnect = async (\n initial: (onProgress: (next: RuntimeStreamState) => void) => Promise<RuntimeStreamState>,\n signal: Parameters<AgentClient[\"runs\"][\"attach\"]>[0][\"signal\"],\n onEvent: RuntimeEventHandler,\n operation: \"chat.stream\" | \"runs.attach\",\n headers?: Readonly<Record<string, string>>,\n ): Promise<StreamResult> => {\n let state: RuntimeStreamState | undefined;\n let attempt = 0;\n const onProgress = (next: RuntimeStreamState) => {\n if (!state) {\n void emit({\n type: \"stream.connected\",\n operation,\n ...(next.runId ? { runId: next.runId } : {}),\n ...(next.cursor === null ? {} : { cursor: next.cursor }),\n attempt,\n });\n }\n state = next;\n };\n while (true) {\n try {\n state = state?.runId\n ? await attach(state.runId, state.cursor ?? undefined, headers, signal, onEvent, onProgress)\n : await initial(onProgress);\n } catch (error) {\n if (signal?.aborted || !shouldReconnect(error) || attempt >= maxReconnectAttempts) throw error;\n attempt += 1;\n await emit({\n type: \"stream.reconnecting\",\n operation,\n ...(state?.runId ? { runId: state.runId } : {}),\n ...(state?.cursor == null ? {} : { cursor: state.cursor }),\n attempt,\n reason: \"network\",\n });\n continue;\n }\n if (!state.detached || signal?.aborted) {\n await emit({\n type: \"stream.completed\",\n operation,\n ...(state.runId ? { runId: state.runId } : {}),\n ...(state.cursor === null ? {} : { cursor: state.cursor }),\n attempt,\n });\n return state;\n }\n await emit({\n type: \"stream.detached\",\n operation,\n ...(state.runId ? { runId: state.runId } : {}),\n ...(state.cursor === null ? {} : { cursor: state.cursor }),\n attempt,\n reason: state.detachReason ?? \"server_detach\",\n });\n if (attempt >= maxReconnectAttempts || state.detachReason === \"revoked\" || state.detachReason === \"policy_changed\") {\n return state;\n }\n if (state.detachReason === \"token_expired\" && options.sessionProvider.refresh) {\n await options.sessionProvider.refresh({ reason: \"stream_detached\", ...(signal ? { signal } : {}) });\n }\n attempt += 1;\n }\n };\n\n return {\n async bootstrap(input) {\n let response: Awaited<ReturnType<typeof fetch>>;\n try {\n response = await fetch(\n `${baseUrl}${deploymentPath(options.deploymentId, \"/bootstrap\")}`,\n {\n method: \"GET\",\n headers: { Accept: \"application/json\", \"Cache-Control\": \"no-store\", Pragma: \"no-cache\" },\n redirect: \"error\",\n cache: \"no-store\",\n credentials: \"omit\",\n ...(input?.signal ? { signal: input.signal } : {}),\n },\n );\n } catch (cause) {\n throw new Agents24ClientError(\"The Agents24 deployment bootstrap could not be reached.\", {\n kind: input?.signal?.aborted ? \"aborted\" : \"network\",\n code: input?.signal?.aborted ? \"ABORTED\" : \"NETWORK_ERROR\",\n retryable: !input?.signal?.aborted,\n cause,\n });\n }\n if (response.redirected || (response.status >= 300 && response.status < 400)) {\n throw new Agents24ClientError(\"Client-runtime redirects are not allowed.\", {\n kind: \"network\",\n code: \"REDIRECT_REJECTED\",\n status: response.status,\n });\n }\n if (!response.ok) throw await responseError(response);\n return objectResult<ClientBootstrap>(await responseJson(response), \"Bootstrap\");\n },\n chat: {\n async stream(input, onEvent) {\n const initial = async (onProgress: (state: RuntimeStreamState) => void) => {\n const response = await http.request(\n \"POST\",\n deploymentPath(options.deploymentId, \"/chat/stream\"),\n {\n operation: \"chat.stream\",\n accept: \"text/event-stream\",\n idempotencyKey: input.idempotencyKey,\n ...(input.headers ? { headers: input.headers } : {}),\n body: {\n input: input.input,\n attachment_ids: [...(input.attachmentIds ?? [])],\n ...(input.threadId ? { thread_id: input.threadId } : {}),\n ...(input.requestedModelId ? { requested_model_id: input.requestedModelId } : {}),\n tool_inputs: input.toolInputs ?? {},\n metadata: input.metadata ?? {},\n client: input.client ?? { sdk_name: \"@agents24/client\", sdk_version: \"0.2.0\" },\n },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return consumeRuntimeStream({\n response,\n decoder: decoder(),\n onEvent,\n ...(input.signal ? { signal: input.signal } : {}),\n onProgress,\n });\n };\n return reconnect(initial, input.signal, onEvent, \"chat.stream\", input.headers);\n },\n },\n runs: {\n async attach(input, onEvent) {\n const initial = (onProgress: (state: RuntimeStreamState) => void) =>\n attach(input.runId, input.cursor, input.headers, input.signal, onEvent, onProgress);\n return reconnect(initial, input.signal, onEvent, \"runs.attach\", input.headers);\n },\n async cancel(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(options.deploymentId, `/runs/${encodePath(input.runId)}/cancel`),\n {\n operation: \"runs.cancel\",\n body: {},\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<Record<string, unknown>>(result, \"Run cancellation\");\n },\n },\n threads: {\n async list(input) {\n const path = appendQuery(deploymentPath(options.deploymentId, \"/threads\"), {\n skip: input?.skip,\n limit: input?.limit,\n });\n const result = await http.json<unknown>(\"GET\", path, {\n operation: \"threads.list\",\n ...(input?.signal ? { signal: input.signal } : {}),\n });\n return objectResult<ThreadListResult>(result, \"Thread listing\");\n },\n async get(input) {\n const path = appendQuery(\n deploymentPath(options.deploymentId, `/threads/${encodePath(input.threadId)}`),\n {\n limit: input.limit,\n before_turn_index: input.beforeTurnIndex,\n include_run_events: input.includeRunEvents,\n },\n );\n const result = await http.json<unknown>(\"GET\", path, {\n operation: \"threads.get\",\n ...(input.signal ? { signal: input.signal } : {}),\n });\n return objectResult<ThreadDetail>(result, \"Thread detail\");\n },\n async events(input, onEvent: ThreadSummaryEventHandler) {\n let cursor = input.cursor;\n let attempts = 0;\n while (!input.signal?.aborted) {\n try {\n const path = appendQuery(deploymentPath(options.deploymentId, \"/threads/events\"), { cursor });\n const response = await http.request(\"GET\", path, {\n operation: \"threads.events\",\n accept: \"text/event-stream\",\n ...(input.signal ? { signal: input.signal } : {}),\n });\n cursor = (await consumeThreadSummaryStream({\n response,\n decoder: decoder(),\n onEvent,\n ...(input.signal ? { signal: input.signal } : {}),\n ...(cursor === undefined ? {} : { afterCursor: cursor }),\n onCursor(next) {\n cursor = next;\n },\n })) ?? undefined;\n return;\n } catch (error) {\n if (input.signal?.aborted || !shouldReconnect(error) || attempts >= maxReconnectAttempts) throw error;\n attempts += 1;\n }\n }\n },\n async delete(input) {\n const result = await http.json<unknown>(\n \"DELETE\",\n deploymentPath(options.deploymentId, `/threads/${encodePath(input.threadId)}`),\n {\n operation: \"threads.delete\",\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<Record<string, unknown>>(result, \"Thread deletion\");\n },\n },\n attachments: {\n async upload(input) {\n const multipart = options.multipart ?? createByteMultipartEncoder(resolveEncoder(options.encoder));\n const encoded = await multipart.encode([\n ...(input.threadId ? [{ field: \"thread_id\", value: input.threadId }] : []),\n { field: \"files\", value: input.upload },\n ]);\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(options.deploymentId, \"/attachments/upload\"),\n {\n operation: \"attachments.upload\",\n rawBody: encoded.body,\n contentType: encoded.contentType,\n idempotencyKey: input.idempotencyKey,\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n const body = objectResult<Record<string, unknown>>(result, \"Attachment upload\");\n const item = Array.isArray(body.items) ? body.items[0] : body;\n return objectResult<AttachmentResult>(item, \"Attachment upload\");\n },\n },\n hitl: {\n async resume(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(\n options.deploymentId,\n `/runs/${encodePath(input.runId)}/hitl/${encodePath(input.interruptId)}/resume`,\n ),\n {\n operation: \"hitl.resume\",\n idempotencyKey: input.idempotencyKey,\n body: {\n schema_version: \"agents24.hitl.resume.v2\",\n interrupt_id: input.interruptId,\n action: input.action,\n ...(input.comment ? { comment: input.comment } : {}),\n },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<HitlResumeResult>(result, \"HITL resume\");\n },\n },\n mcp: {\n async startAuthorization(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(\n options.deploymentId,\n `/runs/${encodePath(input.runId)}/mcp/servers/${encodePath(input.serverId)}/auth/start`,\n ),\n {\n operation: \"mcp.startAuthorization\",\n idempotencyKey: input.idempotencyKey,\n body: {\n interrupt_id: input.interruptId,\n redirect_uri: input.redirectUri,\n popup_nonce: input.popupNonce,\n code_challenge: input.codeChallenge,\n code_challenge_method: \"S256\",\n },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<McpAuthorizationResult>(result, \"MCP authorization start\");\n },\n async redeemCallback(input) {\n const result = await http.json<unknown>(\n \"POST\",\n deploymentPath(options.deploymentId, \"/mcp/callback/redeem\"),\n {\n operation: \"mcp.redeemCallback\",\n idempotencyKey: input.idempotencyKey,\n body: { code: input.code, code_verifier: input.codeVerifier },\n ...(input.signal ? { signal: input.signal } : {}),\n },\n );\n return objectResult<McpCallbackResult>(result, \"MCP callback redemption\");\n },\n },\n sessions: {\n async revoke(input) {\n if (!options.sessionProvider.revoke) {\n throw new Agents24ClientError(\"The configured session provider cannot revoke sessions.\", {\n kind: \"missing_capability\",\n code: \"SESSION_REVOKE_UNAVAILABLE\",\n });\n }\n await options.sessionProvider.revoke({\n idempotencyKey: input?.idempotencyKey ?? ids.createId(),\n ...(input?.signal ? { signal: input.signal } : {}),\n });\n },\n },\n };\n}\n"]}