prefix-safe-json 0.0.1-alpha.4 → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (135) hide show
  1. package/LICENSE +4 -0
  2. package/README.md +2 -2
  3. package/package.json +2 -1
  4. package/dist/coordinator/coordinator.d.ts +0 -53
  5. package/dist/coordinator/coordinator.d.ts.map +0 -1
  6. package/dist/coordinator/coordinator.js +0 -448
  7. package/dist/coordinator/coordinator.js.map +0 -1
  8. package/dist/coordinator/diagnostic-codes.d.ts +0 -11
  9. package/dist/coordinator/diagnostic-codes.d.ts.map +0 -1
  10. package/dist/coordinator/diagnostic-codes.js +0 -22
  11. package/dist/coordinator/diagnostic-codes.js.map +0 -1
  12. package/dist/coordinator/protocol.d.ts +0 -61
  13. package/dist/coordinator/protocol.d.ts.map +0 -1
  14. package/dist/coordinator/protocol.js +0 -2
  15. package/dist/coordinator/protocol.js.map +0 -1
  16. package/dist/coordinator/types.d.ts +0 -104
  17. package/dist/coordinator/types.d.ts.map +0 -1
  18. package/dist/coordinator/types.js +0 -7
  19. package/dist/coordinator/types.js.map +0 -1
  20. package/dist/diagnostics/codes.d.ts +0 -24
  21. package/dist/diagnostics/codes.d.ts.map +0 -1
  22. package/dist/diagnostics/codes.js +0 -28
  23. package/dist/diagnostics/codes.js.map +0 -1
  24. package/dist/diagnostics/factory.d.ts +0 -8
  25. package/dist/diagnostics/factory.d.ts.map +0 -1
  26. package/dist/diagnostics/factory.js +0 -17
  27. package/dist/diagnostics/factory.js.map +0 -1
  28. package/dist/gate/decide.d.ts +0 -27
  29. package/dist/gate/decide.d.ts.map +0 -1
  30. package/dist/gate/decide.js +0 -138
  31. package/dist/gate/decide.js.map +0 -1
  32. package/dist/gate/gate.d.ts +0 -25
  33. package/dist/gate/gate.d.ts.map +0 -1
  34. package/dist/gate/gate.js +0 -96
  35. package/dist/gate/gate.js.map +0 -1
  36. package/dist/gate/types.d.ts +0 -184
  37. package/dist/gate/types.d.ts.map +0 -1
  38. package/dist/gate/types.js +0 -2
  39. package/dist/gate/types.js.map +0 -1
  40. package/dist/grammar/frame.d.ts +0 -58
  41. package/dist/grammar/frame.d.ts.map +0 -1
  42. package/dist/grammar/frame.js +0 -87
  43. package/dist/grammar/frame.js.map +0 -1
  44. package/dist/grammar/pointer.d.ts +0 -10
  45. package/dist/grammar/pointer.d.ts.map +0 -1
  46. package/dist/grammar/pointer.js +0 -20
  47. package/dist/grammar/pointer.js.map +0 -1
  48. package/dist/grammar/stack.d.ts +0 -73
  49. package/dist/grammar/stack.d.ts.map +0 -1
  50. package/dist/grammar/stack.js +0 -168
  51. package/dist/grammar/stack.js.map +0 -1
  52. package/dist/guard/ai-sdk.d.ts +0 -48
  53. package/dist/guard/ai-sdk.d.ts.map +0 -1
  54. package/dist/guard/ai-sdk.js +0 -51
  55. package/dist/guard/ai-sdk.js.map +0 -1
  56. package/dist/guard/provider-guard.d.ts +0 -4
  57. package/dist/guard/provider-guard.d.ts.map +0 -1
  58. package/dist/guard/provider-guard.js +0 -38
  59. package/dist/guard/provider-guard.js.map +0 -1
  60. package/dist/guard/types.d.ts +0 -48
  61. package/dist/guard/types.d.ts.map +0 -1
  62. package/dist/guard/types.js +0 -2
  63. package/dist/guard/types.js.map +0 -1
  64. package/dist/index.d.ts +0 -45
  65. package/dist/index.d.ts.map +0 -1
  66. package/dist/index.js +0 -45
  67. package/dist/index.js.map +0 -1
  68. package/dist/lexer/scanner.d.ts +0 -106
  69. package/dist/lexer/scanner.d.ts.map +0 -1
  70. package/dist/lexer/scanner.js +0 -658
  71. package/dist/lexer/scanner.js.map +0 -1
  72. package/dist/lexer/states.d.ts +0 -31
  73. package/dist/lexer/states.d.ts.map +0 -1
  74. package/dist/lexer/states.js +0 -35
  75. package/dist/lexer/states.js.map +0 -1
  76. package/dist/lexer/tokens.d.ts +0 -22
  77. package/dist/lexer/tokens.d.ts.map +0 -1
  78. package/dist/lexer/tokens.js +0 -22
  79. package/dist/lexer/tokens.js.map +0 -1
  80. package/dist/limits.d.ts +0 -14
  81. package/dist/limits.d.ts.map +0 -1
  82. package/dist/limits.js +0 -23
  83. package/dist/limits.js.map +0 -1
  84. package/dist/parser.d.ts +0 -6
  85. package/dist/parser.d.ts.map +0 -1
  86. package/dist/parser.js +0 -922
  87. package/dist/parser.js.map +0 -1
  88. package/dist/providers/adapter.d.ts +0 -10
  89. package/dist/providers/adapter.d.ts.map +0 -1
  90. package/dist/providers/adapter.js +0 -2
  91. package/dist/providers/adapter.js.map +0 -1
  92. package/dist/providers/ai-sdk.d.ts +0 -58
  93. package/dist/providers/ai-sdk.d.ts.map +0 -1
  94. package/dist/providers/ai-sdk.js +0 -212
  95. package/dist/providers/ai-sdk.js.map +0 -1
  96. package/dist/providers/anthropic.d.ts +0 -45
  97. package/dist/providers/anthropic.d.ts.map +0 -1
  98. package/dist/providers/anthropic.js +0 -112
  99. package/dist/providers/anthropic.js.map +0 -1
  100. package/dist/providers/gemini.d.ts +0 -31
  101. package/dist/providers/gemini.d.ts.map +0 -1
  102. package/dist/providers/gemini.js +0 -94
  103. package/dist/providers/gemini.js.map +0 -1
  104. package/dist/providers/openai-compatible.d.ts +0 -33
  105. package/dist/providers/openai-compatible.d.ts.map +0 -1
  106. package/dist/providers/openai-compatible.js +0 -160
  107. package/dist/providers/openai-compatible.js.map +0 -1
  108. package/dist/providers/openai.d.ts +0 -55
  109. package/dist/providers/openai.d.ts.map +0 -1
  110. package/dist/providers/openai.js +0 -263
  111. package/dist/providers/openai.js.map +0 -1
  112. package/dist/providers/openrouter.d.ts +0 -35
  113. package/dist/providers/openrouter.d.ts.map +0 -1
  114. package/dist/providers/openrouter.js +0 -55
  115. package/dist/providers/openrouter.js.map +0 -1
  116. package/dist/semantic/builder.d.ts +0 -55
  117. package/dist/semantic/builder.d.ts.map +0 -1
  118. package/dist/semantic/builder.js +0 -140
  119. package/dist/semantic/builder.js.map +0 -1
  120. package/dist/semantic/events.d.ts +0 -2
  121. package/dist/semantic/events.d.ts.map +0 -1
  122. package/dist/semantic/events.js +0 -5
  123. package/dist/semantic/events.js.map +0 -1
  124. package/dist/semantic/snapshot.d.ts +0 -56
  125. package/dist/semantic/snapshot.d.ts.map +0 -1
  126. package/dist/semantic/snapshot.js +0 -230
  127. package/dist/semantic/snapshot.js.map +0 -1
  128. package/dist/types.d.ts +0 -156
  129. package/dist/types.d.ts.map +0 -1
  130. package/dist/types.js +0 -5
  131. package/dist/types.js.map +0 -1
  132. package/dist/utf8/decoder.d.ts +0 -53
  133. package/dist/utf8/decoder.d.ts.map +0 -1
  134. package/dist/utf8/decoder.js +0 -323
  135. package/dist/utf8/decoder.js.map +0 -1
@@ -1,94 +0,0 @@
1
- export class GeminiStreamAdapter {
2
- provider = "gemini";
3
- sequence = 0;
4
- finished = false;
5
- push(rawEvent) {
6
- if (this.finished)
7
- return [];
8
- const events = [];
9
- if (!rawEvent || typeof rawEvent !== "object") {
10
- events.push({
11
- type: "provider_diagnostic",
12
- sequence: ++this.sequence,
13
- provider: this.provider,
14
- code: "E_PROVIDER_EVENT_MALFORMED",
15
- severity: "error",
16
- message: "Raw event is not an object",
17
- });
18
- return events;
19
- }
20
- const chunk = rawEvent;
21
- if (Array.isArray(chunk.candidates)) {
22
- for (const [candidateIndex, candidate] of chunk.candidates.entries()) {
23
- if (candidate.content && Array.isArray(candidate.content.parts)) {
24
- for (const [partIndex, part] of candidate.content.parts.entries()) {
25
- if (part.functionCall) {
26
- const fc = part.functionCall;
27
- const sourceKey = `candidate:${candidateIndex}/part:${partIndex}`;
28
- events.push({
29
- type: "tool_call_start",
30
- sequence: ++this.sequence,
31
- provider: this.provider,
32
- callRef: { sourceKey },
33
- name: fc.name,
34
- });
35
- if (fc.args) {
36
- // Gemini currently emits structured objects.
37
- // We serialize it to emulate a text delta, BUT it is documented in docs/providers/gemini.md
38
- // that this is NOT byte-level streaming. It is object-level final delivery.
39
- events.push({
40
- type: "tool_call_arguments_delta",
41
- sequence: ++this.sequence,
42
- provider: this.provider,
43
- callRef: { sourceKey },
44
- delta: JSON.stringify(fc.args),
45
- });
46
- }
47
- events.push({
48
- type: "tool_call_end",
49
- sequence: ++this.sequence,
50
- provider: this.provider,
51
- callRef: { sourceKey },
52
- reason: "complete",
53
- });
54
- }
55
- }
56
- }
57
- if (candidate.finishReason) {
58
- let reason = "unknown";
59
- if (candidate.finishReason === "STOP") {
60
- reason = "complete";
61
- }
62
- else if (candidate.finishReason === "MAX_TOKENS") {
63
- reason = "length";
64
- }
65
- else if (candidate.finishReason === "SAFETY" || candidate.finishReason === "RECITATION" || candidate.finishReason === "OTHER") {
66
- reason = "cancelled";
67
- }
68
- events.push({
69
- type: "provider_stream_end",
70
- sequence: ++this.sequence,
71
- provider: this.provider,
72
- reason,
73
- providerReason: candidate.finishReason,
74
- });
75
- this.finished = true;
76
- }
77
- }
78
- }
79
- return events;
80
- }
81
- finish(meta) {
82
- if (this.finished)
83
- return [];
84
- this.finished = true;
85
- return [{
86
- type: "provider_stream_end",
87
- sequence: ++this.sequence,
88
- provider: this.provider,
89
- reason: meta?.reason ?? "unknown",
90
- providerReason: meta?.providerReason,
91
- }];
92
- }
93
- }
94
- //# sourceMappingURL=gemini.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"gemini.js","sourceRoot":"","sources":["../../src/providers/gemini.ts"],"names":[],"mappings":"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"}
@@ -1,33 +0,0 @@
1
- import { ProviderName, NormalizedToolStreamEvent, StreamEndReason } from "../coordinator/protocol.js";
2
- import { ProviderStreamAdapter } from "./adapter.js";
3
- interface OpenAIChoiceDelta {
4
- tool_calls?: Array<{
5
- index: number;
6
- id?: string;
7
- function?: {
8
- name?: string;
9
- arguments?: string;
10
- };
11
- }>;
12
- }
13
- interface OpenAIChoice {
14
- delta?: OpenAIChoiceDelta;
15
- finish_reason?: string | null;
16
- }
17
- export interface OpenAICompatibleEvent {
18
- choices?: OpenAIChoice[];
19
- }
20
- export declare class OpenAICompatibleStreamAdapter implements ProviderStreamAdapter<unknown> {
21
- readonly provider: ProviderName;
22
- private sequence;
23
- private knownIndices;
24
- private knownSourceKeys;
25
- private finished;
26
- push(rawEvent: unknown): readonly NormalizedToolStreamEvent[];
27
- finish(meta?: {
28
- reason?: StreamEndReason;
29
- providerReason?: string;
30
- }): readonly NormalizedToolStreamEvent[];
31
- }
32
- export {};
33
- //# sourceMappingURL=openai-compatible.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-compatible.d.ts","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACtG,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAErD,UAAU,iBAAiB;IACzB,UAAU,CAAC,EAAE,KAAK,CAAC;QACjB,KAAK,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,QAAQ,CAAC,EAAE;YACT,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,SAAS,CAAC,EAAE,MAAM,CAAC;SACpB,CAAC;KACH,CAAC,CAAC;CACJ;AAED,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE,iBAAiB,CAAC;IAC1B,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,qBAAqB;IACpC,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;CAC1B;AAED,qBAAa,6BAA8B,YAAW,qBAAqB,CAAC,OAAO,CAAC;IAClF,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAuB;IACtD,OAAO,CAAC,QAAQ,CAAK;IAGrB,OAAO,CAAC,YAAY,CAA0B;IAE9C,OAAO,CAAC,eAAe,CAA0B;IAEjD,OAAO,CAAC,QAAQ,CAAS;IAEzB,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,yBAAyB,EAAE;IAwI7D,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,eAAe,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,yBAAyB,EAAE;CAyB3G"}
@@ -1,160 +0,0 @@
1
- export class OpenAICompatibleStreamAdapter {
2
- provider = "openai-compatible";
3
- sequence = 0;
4
- // Track known indices to emit start events correctly
5
- knownIndices = new Set();
6
- // Keep track of sourceKeys to emit tool_call_end
7
- knownSourceKeys = new Set();
8
- finished = false;
9
- push(rawEvent) {
10
- if (this.finished) {
11
- return [{
12
- type: "provider_diagnostic",
13
- sequence: ++this.sequence,
14
- provider: this.provider,
15
- code: "W_EVENT_AFTER_STREAM_END",
16
- severity: "warning",
17
- message: "Received event after stream finished",
18
- }];
19
- }
20
- const events = [];
21
- // Narrow unknown
22
- if (!rawEvent || typeof rawEvent !== "object") {
23
- events.push({
24
- type: "provider_diagnostic",
25
- sequence: ++this.sequence,
26
- provider: this.provider,
27
- code: "E_PROVIDER_EVENT_MALFORMED",
28
- severity: "error",
29
- message: "Raw event is not an object",
30
- });
31
- return events;
32
- }
33
- const chunk = rawEvent;
34
- if (Array.isArray(chunk.choices)) {
35
- for (const choice of chunk.choices) {
36
- if (choice.delta && Array.isArray(choice.delta.tool_calls)) {
37
- for (const tc of choice.delta.tool_calls) {
38
- if (typeof tc.index !== "number") {
39
- events.push({
40
- type: "provider_diagnostic",
41
- sequence: ++this.sequence,
42
- provider: this.provider,
43
- code: "E_PROVIDER_EVENT_MALFORMED",
44
- severity: "error",
45
- message: "tool_call index is missing or invalid",
46
- });
47
- continue;
48
- }
49
- const sourceKey = `choice:0/tool-index:${tc.index}`;
50
- this.knownSourceKeys.add(sourceKey);
51
- if (!this.knownIndices.has(tc.index)) {
52
- this.knownIndices.add(tc.index);
53
- events.push({
54
- type: "tool_call_start",
55
- sequence: ++this.sequence,
56
- provider: this.provider,
57
- callRef: { sourceKey },
58
- toolIndex: tc.index,
59
- toolCallId: tc.id,
60
- name: tc.function?.name,
61
- });
62
- }
63
- else {
64
- // Send identity if ID provided late
65
- if (tc.id !== undefined) {
66
- events.push({
67
- type: "tool_call_identity",
68
- sequence: ++this.sequence,
69
- provider: this.provider,
70
- callRef: { sourceKey },
71
- toolCallId: tc.id,
72
- toolIndex: tc.index,
73
- });
74
- }
75
- // Name delta
76
- if (tc.function?.name) {
77
- events.push({
78
- type: "tool_call_name_delta",
79
- sequence: ++this.sequence,
80
- provider: this.provider,
81
- callRef: { sourceKey },
82
- delta: tc.function.name,
83
- });
84
- }
85
- }
86
- // Arguments delta
87
- if (tc.function?.arguments) {
88
- events.push({
89
- type: "tool_call_arguments_delta",
90
- sequence: ++this.sequence,
91
- provider: this.provider,
92
- callRef: { sourceKey },
93
- delta: tc.function.arguments,
94
- });
95
- }
96
- }
97
- }
98
- if (choice.finish_reason != null) {
99
- // Stream ending, interpret reason
100
- let reason = "unknown";
101
- if (choice.finish_reason === "stop" || choice.finish_reason === "tool_calls") {
102
- reason = "complete";
103
- }
104
- else if (choice.finish_reason === "length") {
105
- reason = "length";
106
- }
107
- else if (choice.finish_reason === "cancelled") {
108
- reason = "cancelled";
109
- }
110
- for (const sourceKey of this.knownSourceKeys.values()) {
111
- events.push({
112
- type: "tool_call_end",
113
- sequence: ++this.sequence,
114
- provider: this.provider,
115
- callRef: { sourceKey },
116
- reason: reason,
117
- providerReason: choice.finish_reason,
118
- });
119
- }
120
- this.knownSourceKeys.clear();
121
- events.push({
122
- type: "provider_stream_end",
123
- sequence: ++this.sequence,
124
- provider: this.provider,
125
- reason,
126
- providerReason: choice.finish_reason,
127
- });
128
- this.finished = true;
129
- }
130
- }
131
- }
132
- return events;
133
- }
134
- finish(meta) {
135
- if (this.finished)
136
- return [];
137
- this.finished = true;
138
- const events = [];
139
- for (const sourceKey of this.knownSourceKeys.values()) {
140
- events.push({
141
- type: "tool_call_end",
142
- sequence: ++this.sequence,
143
- provider: this.provider,
144
- callRef: { sourceKey },
145
- reason: meta?.reason ?? "unknown",
146
- providerReason: meta?.providerReason,
147
- });
148
- }
149
- this.knownSourceKeys.clear();
150
- events.push({
151
- type: "provider_stream_end",
152
- sequence: ++this.sequence,
153
- provider: this.provider,
154
- reason: meta?.reason ?? "unknown",
155
- providerReason: meta?.providerReason,
156
- });
157
- return events;
158
- }
159
- }
160
- //# sourceMappingURL=openai-compatible.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai-compatible.js","sourceRoot":"","sources":["../../src/providers/openai-compatible.ts"],"names":[],"mappings":"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"}
@@ -1,55 +0,0 @@
1
- import { ProviderName, NormalizedToolStreamEvent, StreamEndReason } from "../coordinator/protocol.js";
2
- import { ProviderStreamAdapter } from "./adapter.js";
3
- interface OpenAIFunctionCallDelta {
4
- name?: string;
5
- arguments?: string;
6
- }
7
- interface OpenAIChoice {
8
- delta?: {
9
- function_call?: OpenAIFunctionCallDelta;
10
- tool_calls?: unknown;
11
- };
12
- finish_reason?: string | null;
13
- }
14
- export interface OpenAIEvent {
15
- choices?: OpenAIChoice[];
16
- type?: string;
17
- output_index?: number;
18
- item?: {
19
- type?: string;
20
- id?: string;
21
- call_id?: string;
22
- name?: string;
23
- arguments?: string;
24
- };
25
- item_id?: string;
26
- delta?: string;
27
- arguments?: string;
28
- response?: {
29
- status?: string;
30
- incomplete_details?: {
31
- reason?: string;
32
- };
33
- error?: {
34
- code?: string;
35
- message?: string;
36
- } | null;
37
- };
38
- }
39
- export declare class OpenAIStreamAdapter implements ProviderStreamAdapter<unknown> {
40
- readonly provider: ProviderName;
41
- private sequence;
42
- private compatibleAdapter;
43
- private hasLegacyFunctionCall;
44
- private legacySourceKey;
45
- private accumulatedArguments;
46
- private receivedDeltas;
47
- private finished;
48
- push(rawEvent: unknown): readonly NormalizedToolStreamEvent[];
49
- finish(meta?: {
50
- reason?: StreamEndReason;
51
- providerReason?: string;
52
- }): readonly NormalizedToolStreamEvent[];
53
- }
54
- export {};
55
- //# sourceMappingURL=openai.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,yBAAyB,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AACtG,OAAO,EAAE,qBAAqB,EAAE,MAAM,cAAc,CAAC;AAIrD,UAAU,uBAAuB;IAC/B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,UAAU,YAAY;IACpB,KAAK,CAAC,EAAE;QACN,aAAa,CAAC,EAAE,uBAAuB,CAAC;QACxC,UAAU,CAAC,EAAE,OAAO,CAAC;KACtB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED,MAAM,WAAW,WAAW;IAC1B,OAAO,CAAC,EAAE,YAAY,EAAE,CAAC;IACzB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,IAAI,CAAC,EAAE;QACL,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,SAAS,CAAC,EAAE,MAAM,CAAC;KACpB,CAAC;IACF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,QAAQ,CAAC,EAAE;QACT,MAAM,CAAC,EAAE,MAAM,CAAC;QAKhB,kBAAkB,CAAC,EAAE;YACnB,MAAM,CAAC,EAAE,MAAM,CAAC;SACjB,CAAC;QAEF,KAAK,CAAC,EAAE;YACN,IAAI,CAAC,EAAE,MAAM,CAAC;YACd,OAAO,CAAC,EAAE,MAAM,CAAC;SAClB,GAAG,IAAI,CAAC;KACV,CAAC;CACH;AAED,qBAAa,mBAAoB,YAAW,qBAAqB,CAAC,OAAO,CAAC;IACxE,QAAQ,CAAC,QAAQ,EAAE,YAAY,CAAY;IAC3C,OAAO,CAAC,QAAQ,CAAK;IAGrB,OAAO,CAAC,iBAAiB,CAAuC;IAGhE,OAAO,CAAC,qBAAqB,CAAS;IACtC,OAAO,CAAC,eAAe,CAA0B;IAGjD,OAAO,CAAC,oBAAoB,CAA6B;IACzD,OAAO,CAAC,cAAc,CAAqB;IAE3C,OAAO,CAAC,QAAQ,CAAS;IAEzB,IAAI,CAAC,QAAQ,EAAE,OAAO,GAAG,SAAS,yBAAyB,EAAE;IA0O7D,MAAM,CAAC,IAAI,CAAC,EAAE;QAAE,MAAM,CAAC,EAAE,eAAe,CAAC;QAAC,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,SAAS,yBAAyB,EAAE;CAiB3G"}
@@ -1,263 +0,0 @@
1
- import { OpenAICompatibleStreamAdapter } from "./openai-compatible.js";
2
- import { CONTENT_FILTERED_DIAGNOSTIC_CODE } from "../coordinator/diagnostic-codes.js";
3
- export class OpenAIStreamAdapter {
4
- provider = "openai";
5
- sequence = 0;
6
- // Delegating tool_calls format to compatible adapter
7
- compatibleAdapter = new OpenAICompatibleStreamAdapter();
8
- // For function_call (legacy)
9
- hasLegacyFunctionCall = false;
10
- legacySourceKey = "legacy-function-call";
11
- // For Responses API
12
- accumulatedArguments = new Map();
13
- receivedDeltas = new Set();
14
- finished = false;
15
- push(rawEvent) {
16
- if (this.finished)
17
- return [];
18
- const events = [];
19
- if (!rawEvent || typeof rawEvent !== "object") {
20
- events.push({
21
- type: "provider_diagnostic",
22
- sequence: ++this.sequence,
23
- provider: this.provider,
24
- code: "E_PROVIDER_EVENT_MALFORMED",
25
- severity: "error",
26
- message: "Raw event is not an object",
27
- });
28
- return events;
29
- }
30
- const chunk = rawEvent;
31
- // Handle Responses API
32
- if (chunk.type?.startsWith("response.") || chunk.type === "error") {
33
- if (chunk.type === "error") {
34
- events.push({
35
- type: "provider_stream_end",
36
- sequence: ++this.sequence,
37
- provider: this.provider,
38
- reason: "provider_error",
39
- providerReason: "error",
40
- });
41
- this.finished = true;
42
- return events;
43
- }
44
- if (chunk.type === "response.failed") {
45
- events.push({
46
- type: "provider_stream_end",
47
- sequence: ++this.sequence,
48
- provider: this.provider,
49
- reason: "provider_error",
50
- providerReason: chunk.response?.error?.code ?? "response.failed",
51
- });
52
- this.finished = true;
53
- return events;
54
- }
55
- if (chunk.type === "response.output_item.added" && chunk.item?.type === "function_call" && chunk.item.id) {
56
- events.push({
57
- type: "tool_call_start",
58
- sequence: ++this.sequence,
59
- provider: this.provider,
60
- callRef: { sourceKey: `output-item:${chunk.item.id}` },
61
- toolCallId: chunk.item.call_id,
62
- name: chunk.item.name,
63
- });
64
- }
65
- else if (chunk.type === "response.function_call_arguments.delta" && chunk.item_id && chunk.delta) {
66
- this.receivedDeltas.add(chunk.item_id);
67
- const acc = this.accumulatedArguments.get(chunk.item_id) ?? "";
68
- this.accumulatedArguments.set(chunk.item_id, acc + chunk.delta);
69
- events.push({
70
- type: "tool_call_arguments_delta",
71
- sequence: ++this.sequence,
72
- provider: this.provider,
73
- callRef: { sourceKey: `output-item:${chunk.item_id}` },
74
- delta: chunk.delta,
75
- });
76
- }
77
- else if (chunk.type === "response.function_call_arguments.done" && chunk.item_id && chunk.arguments !== undefined) {
78
- const acc = this.accumulatedArguments.get(chunk.item_id) ?? "";
79
- const hasDeltas = this.receivedDeltas.has(chunk.item_id);
80
- if (!hasDeltas && chunk.arguments.length > 0) {
81
- // No deltas, just final arguments.
82
- events.push({
83
- type: "tool_call_arguments_delta",
84
- sequence: ++this.sequence,
85
- provider: this.provider,
86
- callRef: { sourceKey: `output-item:${chunk.item_id}` },
87
- delta: chunk.arguments,
88
- });
89
- this.accumulatedArguments.set(chunk.item_id, chunk.arguments);
90
- }
91
- else if (hasDeltas && chunk.arguments !== acc) {
92
- events.push({
93
- type: "provider_diagnostic",
94
- sequence: ++this.sequence,
95
- provider: this.provider,
96
- callRef: { sourceKey: `output-item:${chunk.item_id}` },
97
- code: "E_FINAL_ARGUMENTS_CONFLICT",
98
- severity: "error",
99
- message: "Final arguments do not match accumulated deltas",
100
- });
101
- }
102
- }
103
- else if (chunk.type === "response.output_item.done" && chunk.item?.id) {
104
- events.push({
105
- type: "tool_call_end",
106
- sequence: ++this.sequence,
107
- provider: this.provider,
108
- callRef: { sourceKey: `output-item:${chunk.item.id}` },
109
- reason: "complete", // Default complete for item done
110
- });
111
- }
112
- else if (chunk.type === "response.completed") {
113
- events.push({
114
- type: "provider_stream_end",
115
- sequence: ++this.sequence,
116
- provider: this.provider,
117
- reason: "complete",
118
- providerReason: chunk.response?.status,
119
- });
120
- this.finished = true;
121
- }
122
- else if (chunk.type === "response.incomplete") {
123
- const incompleteReason = chunk.response?.incomplete_details?.reason;
124
- if (incompleteReason === "max_output_tokens") {
125
- // An explicit provider-native output-budget signal: a positively
126
- // observed truncation, not a generic cancellation. Any call still
127
- // "collecting" when this arrives must fail closed even if its own
128
- // JSON happens to look syntactically complete (see isExecutable()
129
- // in parser.ts) - a coincidentally-closed value from a stream the
130
- // provider itself says it cut short is not confirmation of intent.
131
- events.push({
132
- type: "provider_stream_end",
133
- sequence: ++this.sequence,
134
- provider: this.provider,
135
- reason: "length",
136
- providerReason: incompleteReason,
137
- });
138
- }
139
- else if (incompleteReason === "content_filter") {
140
- // A policy/safety termination, not a retryable interruption:
141
- // recorded as its own diagnostic so the execution gate rejects
142
- // with "content_filtered" instead of the generic "stream_incomplete"
143
- // a bare "cancelled" end reason would otherwise produce. Mirrors
144
- // the same finish_reason === "content-filter" handling in
145
- // ai-sdk.ts.
146
- events.push({
147
- type: "provider_diagnostic",
148
- sequence: ++this.sequence,
149
- provider: this.provider,
150
- code: CONTENT_FILTERED_DIAGNOSTIC_CODE,
151
- severity: "error",
152
- message: "Generation stopped by the model provider's content filter",
153
- });
154
- events.push({
155
- type: "provider_stream_end",
156
- sequence: ++this.sequence,
157
- provider: this.provider,
158
- reason: "cancelled",
159
- providerReason: incompleteReason,
160
- });
161
- }
162
- else {
163
- // incomplete_details missing, or a reason string this adapter
164
- // doesn't recognize (e.g. a future OpenAI addition): fail closed
165
- // on "unknown" rather than mislabeling it as "cancelled", which
166
- // would wrongly imply a user/API-initiated cancellation instead
167
- // of an unclassified provider-side termination.
168
- events.push({
169
- type: "provider_stream_end",
170
- sequence: ++this.sequence,
171
- provider: this.provider,
172
- reason: "unknown",
173
- providerReason: incompleteReason ?? chunk.response?.status,
174
- });
175
- }
176
- this.finished = true;
177
- }
178
- return events;
179
- }
180
- // Check if it's the standard tool_calls format
181
- if (chunk.choices?.[0]?.delta?.tool_calls !== undefined) {
182
- // Delegate to OpenAICompatibleStreamAdapter
183
- const compatibleEvents = this.compatibleAdapter.push(rawEvent);
184
- // Map provider name to "openai"
185
- return compatibleEvents.map(e => ({ ...e, provider: this.provider, sequence: ++this.sequence }));
186
- }
187
- // Handle legacy function_call format
188
- if (Array.isArray(chunk.choices)) {
189
- for (const choice of chunk.choices) {
190
- if (choice.delta?.function_call) {
191
- const fc = choice.delta.function_call;
192
- if (!this.hasLegacyFunctionCall) {
193
- this.hasLegacyFunctionCall = true;
194
- events.push({
195
- type: "tool_call_start",
196
- sequence: ++this.sequence,
197
- provider: this.provider,
198
- callRef: { sourceKey: this.legacySourceKey },
199
- toolIndex: 0,
200
- name: fc.name,
201
- });
202
- }
203
- else if (fc.name) {
204
- events.push({
205
- type: "tool_call_name_delta",
206
- sequence: ++this.sequence,
207
- provider: this.provider,
208
- callRef: { sourceKey: this.legacySourceKey },
209
- delta: fc.name,
210
- });
211
- }
212
- if (fc.arguments) {
213
- events.push({
214
- type: "tool_call_arguments_delta",
215
- sequence: ++this.sequence,
216
- provider: this.provider,
217
- callRef: { sourceKey: this.legacySourceKey },
218
- delta: fc.arguments,
219
- });
220
- }
221
- }
222
- if (choice.finish_reason != null) {
223
- let reason = "unknown";
224
- if (choice.finish_reason === "stop" || choice.finish_reason === "function_call" || choice.finish_reason === "tool_calls") {
225
- reason = "complete";
226
- }
227
- else if (choice.finish_reason === "length") {
228
- reason = "length";
229
- }
230
- else if (choice.finish_reason === "cancelled") {
231
- reason = "cancelled";
232
- }
233
- events.push({
234
- type: "provider_stream_end",
235
- sequence: ++this.sequence,
236
- provider: this.provider,
237
- reason,
238
- providerReason: choice.finish_reason,
239
- });
240
- this.finished = true;
241
- }
242
- }
243
- }
244
- return events;
245
- }
246
- finish(meta) {
247
- if (this.finished)
248
- return [];
249
- this.finished = true;
250
- const compatibleEvents = this.compatibleAdapter.finish(meta);
251
- if (compatibleEvents.length > 0 && !this.hasLegacyFunctionCall) {
252
- return compatibleEvents.map(e => ({ ...e, provider: this.provider, sequence: ++this.sequence }));
253
- }
254
- return [{
255
- type: "provider_stream_end",
256
- sequence: ++this.sequence,
257
- provider: this.provider,
258
- reason: meta?.reason ?? "unknown",
259
- providerReason: meta?.providerReason,
260
- }];
261
- }
262
- }
263
- //# sourceMappingURL=openai.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"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"}