@holokai/holo-provider-claude 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 (123) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +588 -0
  3. package/dist/claude.auditor.d.ts +12 -0
  4. package/dist/claude.auditor.d.ts.map +1 -0
  5. package/dist/claude.auditor.js +113 -0
  6. package/dist/claude.auditor.js.map +1 -0
  7. package/dist/claude.provider.d.ts +19 -0
  8. package/dist/claude.provider.d.ts.map +1 -0
  9. package/dist/claude.provider.js +53 -0
  10. package/dist/claude.provider.js.map +1 -0
  11. package/dist/claude.response.factory.d.ts +21 -0
  12. package/dist/claude.response.factory.d.ts.map +1 -0
  13. package/dist/claude.response.factory.js +132 -0
  14. package/dist/claude.response.factory.js.map +1 -0
  15. package/dist/claude.translator.d.ts +21 -0
  16. package/dist/claude.translator.d.ts.map +1 -0
  17. package/dist/claude.translator.js +76 -0
  18. package/dist/claude.translator.js.map +1 -0
  19. package/dist/claude.wire.adapter.d.ts +5 -0
  20. package/dist/claude.wire.adapter.d.ts.map +1 -0
  21. package/dist/claude.wire.adapter.js +9 -0
  22. package/dist/claude.wire.adapter.js.map +1 -0
  23. package/dist/index.d.ts +11 -0
  24. package/dist/index.d.ts.map +1 -0
  25. package/dist/index.js +12 -0
  26. package/dist/index.js.map +1 -0
  27. package/dist/manifest.d.ts +3 -0
  28. package/dist/manifest.d.ts.map +1 -0
  29. package/dist/manifest.js +146 -0
  30. package/dist/manifest.js.map +1 -0
  31. package/dist/plugin.d.ts +20 -0
  32. package/dist/plugin.d.ts.map +1 -0
  33. package/dist/plugin.js +53 -0
  34. package/dist/plugin.js.map +1 -0
  35. package/dist/translators/claude.content.translators.d.ts +12 -0
  36. package/dist/translators/claude.content.translators.d.ts.map +1 -0
  37. package/dist/translators/claude.content.translators.js +65 -0
  38. package/dist/translators/claude.content.translators.js.map +1 -0
  39. package/dist/translators/claude.message.translators.d.ts +14 -0
  40. package/dist/translators/claude.message.translators.d.ts.map +1 -0
  41. package/dist/translators/claude.message.translators.js +129 -0
  42. package/dist/translators/claude.message.translators.js.map +1 -0
  43. package/dist/translators/claude.request.translators.d.ts +18 -0
  44. package/dist/translators/claude.request.translators.d.ts.map +1 -0
  45. package/dist/translators/claude.request.translators.js +110 -0
  46. package/dist/translators/claude.request.translators.js.map +1 -0
  47. package/dist/translators/claude.response.content.translators.d.ts +12 -0
  48. package/dist/translators/claude.response.content.translators.d.ts.map +1 -0
  49. package/dist/translators/claude.response.content.translators.js +53 -0
  50. package/dist/translators/claude.response.content.translators.js.map +1 -0
  51. package/dist/translators/claude.response.message.translators.d.ts +14 -0
  52. package/dist/translators/claude.response.message.translators.d.ts.map +1 -0
  53. package/dist/translators/claude.response.message.translators.js +95 -0
  54. package/dist/translators/claude.response.message.translators.js.map +1 -0
  55. package/dist/translators/claude.response.translators.d.ts +18 -0
  56. package/dist/translators/claude.response.translators.d.ts.map +1 -0
  57. package/dist/translators/claude.response.translators.js +109 -0
  58. package/dist/translators/claude.response.translators.js.map +1 -0
  59. package/dist/translators/claude.tool.translators.d.ts +19 -0
  60. package/dist/translators/claude.tool.translators.d.ts.map +1 -0
  61. package/dist/translators/claude.tool.translators.js +68 -0
  62. package/dist/translators/claude.tool.translators.js.map +1 -0
  63. package/dist/translators/claude.usage.translators.d.ts +12 -0
  64. package/dist/translators/claude.usage.translators.d.ts.map +1 -0
  65. package/dist/translators/claude.usage.translators.js +51 -0
  66. package/dist/translators/claude.usage.translators.js.map +1 -0
  67. package/dist/translators/index.d.ts +10 -0
  68. package/dist/translators/index.d.ts.map +1 -0
  69. package/dist/translators/index.js +10 -0
  70. package/dist/translators/index.js.map +1 -0
  71. package/dist/translators/streaming/claude.content.block.delta.event.translator.d.ts +12 -0
  72. package/dist/translators/streaming/claude.content.block.delta.event.translator.d.ts.map +1 -0
  73. package/dist/translators/streaming/claude.content.block.delta.event.translator.js +91 -0
  74. package/dist/translators/streaming/claude.content.block.delta.event.translator.js.map +1 -0
  75. package/dist/translators/streaming/claude.content.block.start.event.translator.d.ts +12 -0
  76. package/dist/translators/streaming/claude.content.block.start.event.translator.d.ts.map +1 -0
  77. package/dist/translators/streaming/claude.content.block.start.event.translator.js +83 -0
  78. package/dist/translators/streaming/claude.content.block.start.event.translator.js.map +1 -0
  79. package/dist/translators/streaming/claude.content.block.stop.event.translator.d.ts +12 -0
  80. package/dist/translators/streaming/claude.content.block.stop.event.translator.d.ts.map +1 -0
  81. package/dist/translators/streaming/claude.content.block.stop.event.translator.js +48 -0
  82. package/dist/translators/streaming/claude.content.block.stop.event.translator.js.map +1 -0
  83. package/dist/translators/streaming/claude.message.delta.event.translator.d.ts +12 -0
  84. package/dist/translators/streaming/claude.message.delta.event.translator.d.ts.map +1 -0
  85. package/dist/translators/streaming/claude.message.delta.event.translator.js +74 -0
  86. package/dist/translators/streaming/claude.message.delta.event.translator.js.map +1 -0
  87. package/dist/translators/streaming/claude.message.start.event.translator.d.ts +14 -0
  88. package/dist/translators/streaming/claude.message.start.event.translator.d.ts.map +1 -0
  89. package/dist/translators/streaming/claude.message.start.event.translator.js +81 -0
  90. package/dist/translators/streaming/claude.message.start.event.translator.js.map +1 -0
  91. package/dist/translators/streaming/claude.message.stop.event.translator.d.ts +12 -0
  92. package/dist/translators/streaming/claude.message.stop.event.translator.d.ts.map +1 -0
  93. package/dist/translators/streaming/claude.message.stop.event.translator.js +52 -0
  94. package/dist/translators/streaming/claude.message.stop.event.translator.js.map +1 -0
  95. package/dist/translators/streaming/claude.stream.translator.d.ts +24 -0
  96. package/dist/translators/streaming/claude.stream.translator.d.ts.map +1 -0
  97. package/dist/translators/streaming/claude.stream.translator.js +136 -0
  98. package/dist/translators/streaming/claude.stream.translator.js.map +1 -0
  99. package/dist/translators/streaming/index.d.ts +8 -0
  100. package/dist/translators/streaming/index.d.ts.map +1 -0
  101. package/dist/translators/streaming/index.js +8 -0
  102. package/dist/translators/streaming/index.js.map +1 -0
  103. package/dist/types/index.d.ts +3 -0
  104. package/dist/types/index.d.ts.map +1 -0
  105. package/dist/types/index.js +3 -0
  106. package/dist/types/index.js.map +1 -0
  107. package/dist/types/request.types.d.ts +8 -0
  108. package/dist/types/request.types.d.ts.map +1 -0
  109. package/dist/types/request.types.js +2 -0
  110. package/dist/types/request.types.js.map +1 -0
  111. package/dist/types/response.types.d.ts +16 -0
  112. package/dist/types/response.types.d.ts.map +1 -0
  113. package/dist/types/response.types.js +2 -0
  114. package/dist/types/response.types.js.map +1 -0
  115. package/dist/utils/finish.reason.mapper.d.ts +5 -0
  116. package/dist/utils/finish.reason.mapper.d.ts.map +1 -0
  117. package/dist/utils/finish.reason.mapper.js +40 -0
  118. package/dist/utils/finish.reason.mapper.js.map +1 -0
  119. package/dist/utils/stable-id.d.ts +2 -0
  120. package/dist/utils/stable-id.d.ts.map +1 -0
  121. package/dist/utils/stable-id.js +13 -0
  122. package/dist/utils/stable-id.js.map +1 -0
  123. package/package.json +73 -0
@@ -0,0 +1,91 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import 'reflect-metadata';
11
+ import { injectable } from 'tsyringe';
12
+ import { StreamTranslator } from "@holokai/sdk/provider";
13
+ let ClaudeContentBlockDeltaEventTranslator = class ClaudeContentBlockDeltaEventTranslator extends StreamTranslator {
14
+ holoDefaults = {};
15
+ providerDefaults = {};
16
+ constructor() {
17
+ super();
18
+ }
19
+ async fromHoloManyImpl(source) {
20
+ const out = [];
21
+ const d = source.delta;
22
+ if (!d)
23
+ return out;
24
+ // 1) Text → Claude text_delta
25
+ if (d.type === 'content_delta' && typeof d.delta?.content === 'string') {
26
+ out.push({
27
+ type: 'content_block_delta',
28
+ index: d.index ?? 0, // Preserve index: 0
29
+ delta: {
30
+ type: 'text_delta',
31
+ text: d.delta.content
32
+ }
33
+ });
34
+ }
35
+ // 2) Tool arg fragments → pass-through raw Claude event(s) from provider_delta
36
+ // Only process if provider is Claude to avoid mixing provider events
37
+ if (d.type === 'message_delta' && d.provider === 'claude' && d.provider_delta) {
38
+ const rawList = Array.isArray(d.provider_delta) ? d.provider_delta : [d.provider_delta];
39
+ for (const raw of rawList) {
40
+ const ev = raw;
41
+ // Only forward input_json_delta events (tool arg fragments)
42
+ if (ev.type === 'content_block_delta' && ev.delta?.type === 'input_json_delta') {
43
+ out.push(ev); // Lossless pass-through
44
+ }
45
+ }
46
+ }
47
+ return out;
48
+ }
49
+ async toHoloManyImpl(source) {
50
+ const out = [];
51
+ if (source.delta.type === 'text_delta' && source.delta.text) {
52
+ out.push({
53
+ delta: {
54
+ provider: 'claude',
55
+ type: 'content_delta',
56
+ index: source.index,
57
+ delta: {
58
+ // Omitting role for cleaner deltas - it's implied by context
59
+ content: source.delta.text
60
+ },
61
+ // Carry raw event for lossless round-trip
62
+ provider_delta: source
63
+ }
64
+ });
65
+ }
66
+ if (source.delta.type === 'input_json_delta' && source.delta.partial_json) {
67
+ // Tool argument fragments - downstream accumulation required
68
+ out.push({
69
+ delta: {
70
+ provider: 'claude',
71
+ type: 'message_delta',
72
+ index: source.index,
73
+ delta: {
74
+ // Empty delta - the real content is in provider_delta
75
+ },
76
+ // Carry raw event for proper processing
77
+ provider_delta: source
78
+ }
79
+ });
80
+ }
81
+ // Future: Handle other delta types (citations_delta, thinking_delta, etc.)
82
+ // For now, we only process text and tool argument deltas
83
+ return out;
84
+ }
85
+ };
86
+ ClaudeContentBlockDeltaEventTranslator = __decorate([
87
+ injectable(),
88
+ __metadata("design:paramtypes", [])
89
+ ], ClaudeContentBlockDeltaEventTranslator);
90
+ export { ClaudeContentBlockDeltaEventTranslator };
91
+ //# sourceMappingURL=claude.content.block.delta.event.translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.content.block.delta.event.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/claude.content.block.delta.event.translator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import 'reflect-metadata';
2
+ import { ClaudeRawContentBlockStartEvent } from '../../types';
3
+ import { HoloStreamChunk } from '@holokai/sdk';
4
+ import { StreamTranslator } from "@holokai/sdk/provider";
5
+ export declare class ClaudeContentBlockStartEventTranslator extends StreamTranslator<HoloStreamChunk, ClaudeRawContentBlockStartEvent> {
6
+ protected holoDefaults: Partial<HoloStreamChunk>;
7
+ protected providerDefaults: Partial<ClaudeRawContentBlockStartEvent>;
8
+ constructor();
9
+ protected fromHoloManyImpl(source: HoloStreamChunk): Promise<Partial<ClaudeRawContentBlockStartEvent>[]>;
10
+ protected toHoloManyImpl(source: ClaudeRawContentBlockStartEvent): Promise<Partial<HoloStreamChunk>[]>;
11
+ }
12
+ //# sourceMappingURL=claude.content.block.start.event.translator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.content.block.start.event.translator.d.ts","sourceRoot":"","sources":["../../../src/translators/streaming/claude.content.block.start.event.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAC,+BAA+B,EAAC,MAAM,aAAa,CAAC;AAC5D,OAAO,EAAC,eAAe,EAAc,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAEvD,qBACa,sCAAuC,SAAQ,gBAAgB,CAAC,eAAe,EAAE,+BAA+B,CAAC;IAC1H,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAM;IACtD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,+BAA+B,CAAC,CAAM;;cAM1D,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,+BAA+B,CAAC,EAAE,CAAC;cA8B9F,cAAc,CAAC,MAAM,EAAE,+BAA+B,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;CAgC/G"}
@@ -0,0 +1,83 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import 'reflect-metadata';
11
+ import { injectable } from 'tsyringe';
12
+ import { pickDefined } from '@holokai/sdk';
13
+ import { StreamTranslator } from "@holokai/sdk/provider";
14
+ let ClaudeContentBlockStartEventTranslator = class ClaudeContentBlockStartEventTranslator extends StreamTranslator {
15
+ holoDefaults = {};
16
+ providerDefaults = {};
17
+ constructor() {
18
+ super();
19
+ }
20
+ async fromHoloManyImpl(source) {
21
+ const d = source.delta;
22
+ if (!d || d.type !== 'message_delta')
23
+ return [];
24
+ const tcs = d.delta?.tool_calls ?? [];
25
+ if (!tcs.length)
26
+ return [];
27
+ // Handle multiple tool calls - emit one content_block_start per call
28
+ return tcs
29
+ .filter(tc => tc.function?.name)
30
+ .map((tc, i) => {
31
+ // Prefer provided index; otherwise fall back to i
32
+ const index = (typeof d.index === 'number') ? d.index : i;
33
+ // Build content block without any type casts
34
+ const contentBlock = pickDefined({
35
+ type: 'tool_use',
36
+ name: tc.function.name,
37
+ input: {}, // shell; args fragments arrive later
38
+ id: tc.id
39
+ });
40
+ return pickDefined({
41
+ type: 'content_block_start',
42
+ index,
43
+ content_block: contentBlock
44
+ });
45
+ });
46
+ }
47
+ async toHoloManyImpl(source) {
48
+ const cb = source.content_block;
49
+ // Only emit for tool_use starts; ignore text/image/etc. starts
50
+ if (cb.type !== 'tool_use')
51
+ return [];
52
+ // Content block events don't have id/model at top level
53
+ // These would typically be carried from the message_start event in a streaming context
54
+ const chunk = {
55
+ // id and model are not available on content_block_start events
56
+ // The streaming orchestrator would need to maintain these from message_start
57
+ delta: {
58
+ provider: 'claude',
59
+ type: 'message_delta',
60
+ index: source.index,
61
+ delta: {
62
+ role: 'assistant', // Tool-use shells are authored by the assistant
63
+ tool_calls: [{
64
+ id: cb.id,
65
+ type: 'function',
66
+ function: {
67
+ name: cb.name,
68
+ arguments: {} // Shell; args fragments arrive later
69
+ }
70
+ }]
71
+ },
72
+ provider_delta: source // Carry raw event for lossless round-trip
73
+ }
74
+ };
75
+ return [chunk];
76
+ }
77
+ };
78
+ ClaudeContentBlockStartEventTranslator = __decorate([
79
+ injectable(),
80
+ __metadata("design:paramtypes", [])
81
+ ], ClaudeContentBlockStartEventTranslator);
82
+ export { ClaudeContentBlockStartEventTranslator };
83
+ //# sourceMappingURL=claude.content.block.start.event.translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.content.block.start.event.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/claude.content.block.start.event.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAkB,WAAW,EAAC,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAGhD,IAAM,sCAAsC,GAA5C,MAAM,sCAAuC,SAAQ,gBAAkE;IAChH,YAAY,GAA6B,EAAE,CAAC;IAC5C,gBAAgB,GAA6C,EAAE,CAAC;IAE1E;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,MAAuB;QACpD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe;YAAE,OAAO,EAAE,CAAC;QAEhD,MAAM,GAAG,GAAG,CAAC,CAAC,KAAK,EAAE,UAAU,IAAI,EAAE,CAAC;QACtC,IAAI,CAAC,GAAG,CAAC,MAAM;YAAE,OAAO,EAAE,CAAC;QAE3B,qEAAqE;QACrE,OAAO,GAAG;aACL,MAAM,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,QAAQ,EAAE,IAAI,CAAC;aAC/B,GAAG,CAAC,CAAC,EAAE,EAAE,CAAC,EAAE,EAAE;YACX,kDAAkD;YAClD,MAAM,KAAK,GAAG,CAAC,OAAO,CAAC,CAAC,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;YAE1D,6CAA6C;YAC7C,MAAM,YAAY,GAAG,WAAW,CAAC;gBAC7B,IAAI,EAAE,UAAmB;gBACzB,IAAI,EAAE,EAAE,CAAC,QAAS,CAAC,IAAI;gBACvB,KAAK,EAAE,EAAE,EAAE,qCAAqC;gBAChD,EAAE,EAAE,EAAE,CAAC,EAAE;aACZ,CAA8D,CAAC;YAEhE,OAAO,WAAW,CAAC;gBACf,IAAI,EAAE,qBAA8B;gBACpC,KAAK;gBACL,aAAa,EAAE,YAAY;aAC9B,CAA6C,CAAC;QACnD,CAAC,CAAC,CAAC;IACX,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,MAAuC;QAClE,MAAM,EAAE,GAAG,MAAM,CAAC,aAAa,CAAC;QAEhC,+DAA+D;QAC/D,IAAI,EAAE,CAAC,IAAI,KAAK,UAAU;YAAE,OAAO,EAAE,CAAC;QAEtC,wDAAwD;QACxD,uFAAuF;QACvF,MAAM,KAAK,GAA6B;YACpC,+DAA+D;YAC/D,6EAA6E;YAC7E,KAAK,EAAE;gBACH,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,eAAwB;gBAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;gBACnB,KAAK,EAAE;oBACH,IAAI,EAAE,WAAoB,EAAG,gDAAgD;oBAC7E,UAAU,EAAE,CAAC;4BACT,EAAE,EAAE,EAAE,CAAC,EAAE;4BACT,IAAI,EAAE,UAAmB;4BACzB,QAAQ,EAAE;gCACN,IAAI,EAAE,EAAE,CAAC,IAAI;gCACb,SAAS,EAAE,EAAE,CAAE,qCAAqC;6BACvD;yBACJ,CAAC;iBACL;gBACD,cAAc,EAAE,MAAM,CAAE,0CAA0C;aACrE;SACJ,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;CACJ,CAAA;AAtEY,sCAAsC;IADlD,UAAU,EAAE;;GACA,sCAAsC,CAsElD"}
@@ -0,0 +1,12 @@
1
+ import 'reflect-metadata';
2
+ import { ClaudeRawContentBlockStopEvent } from '../../types';
3
+ import { StreamTranslator } from "@holokai/sdk/provider";
4
+ import { HoloStreamChunk } from "@holokai/sdk";
5
+ export declare class ClaudeContentBlockStopEventTranslator extends StreamTranslator<HoloStreamChunk, ClaudeRawContentBlockStopEvent> {
6
+ protected holoDefaults: Partial<HoloStreamChunk>;
7
+ protected providerDefaults: Partial<ClaudeRawContentBlockStopEvent>;
8
+ constructor();
9
+ protected toHoloManyImpl(source: ClaudeRawContentBlockStopEvent): Promise<Partial<HoloStreamChunk>[]>;
10
+ protected fromHoloManyImpl(source: HoloStreamChunk): Promise<Partial<ClaudeRawContentBlockStopEvent>[]>;
11
+ }
12
+ //# sourceMappingURL=claude.content.block.stop.event.translator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.content.block.stop.event.translator.d.ts","sourceRoot":"","sources":["../../../src/translators/streaming/claude.content.block.stop.event.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAC,8BAA8B,EAAC,MAAM,aAAa,CAAC;AAC3D,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAE7C,qBACa,qCAAsC,SAAQ,gBAAgB,CAAC,eAAe,EAAE,8BAA8B,CAAC;IACxH,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAM;IACtD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,8BAA8B,CAAC,CAAM;;cAMzD,cAAc,CAAC,MAAM,EAAE,8BAA8B,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;cAa3F,gBAAgB,CAC5B,MAAM,EAAE,eAAe,GACxB,OAAO,CAAC,OAAO,CAAC,8BAA8B,CAAC,EAAE,CAAC;CAcxD"}
@@ -0,0 +1,48 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import 'reflect-metadata';
11
+ import { injectable } from 'tsyringe';
12
+ import { StreamTranslator } from "@holokai/sdk/provider";
13
+ let ClaudeContentBlockStopEventTranslator = class ClaudeContentBlockStopEventTranslator extends StreamTranslator {
14
+ holoDefaults = {};
15
+ providerDefaults = {};
16
+ constructor() {
17
+ super();
18
+ }
19
+ async toHoloManyImpl(source) {
20
+ return [{
21
+ // id/model typically carried by orchestrator from message_start
22
+ delta: {
23
+ provider: 'claude',
24
+ type: 'message_delta',
25
+ index: source.index, // which block just stopped
26
+ delta: {}, // no content change
27
+ provider_delta: source
28
+ }
29
+ }];
30
+ }
31
+ async fromHoloManyImpl(source) {
32
+ const { delta } = source;
33
+ const pd = delta?.provider_delta;
34
+ // Only pass through if it's a valid Claude stop event
35
+ if (delta?.provider === 'claude' && pd) {
36
+ if (pd.type === 'content_block_stop') {
37
+ return [pd];
38
+ }
39
+ }
40
+ return [];
41
+ }
42
+ };
43
+ ClaudeContentBlockStopEventTranslator = __decorate([
44
+ injectable(),
45
+ __metadata("design:paramtypes", [])
46
+ ], ClaudeContentBlockStopEventTranslator);
47
+ export { ClaudeContentBlockStopEventTranslator };
48
+ //# sourceMappingURL=claude.content.block.stop.event.translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.content.block.stop.event.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/claude.content.block.stop.event.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAIhD,IAAM,qCAAqC,GAA3C,MAAM,qCAAsC,SAAQ,gBAAiE;IAC9G,YAAY,GAA6B,EAAE,CAAC;IAC5C,gBAAgB,GAA4C,EAAE,CAAC;IAEzE;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,MAAsC;QACjE,OAAO,CAAC;gBACJ,gEAAgE;gBAChE,KAAK,EAAE;oBACH,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,eAAwB;oBAC9B,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,2BAA2B;oBAChD,KAAK,EAAE,EAAE,EAAY,oBAAoB;oBACzC,cAAc,EAAE,MAAM;iBACzB;aACJ,CAAC,CAAC;IACP,CAAC;IAES,KAAK,CAAC,gBAAgB,CAC5B,MAAuB;QAEvB,MAAM,EAAC,KAAK,EAAC,GAAG,MAAM,CAAC;QACvB,MAAM,EAAE,GAAG,KAAK,EAAE,cAAc,CAAC;QAEjC,sDAAsD;QACtD,IAAI,KAAK,EAAE,QAAQ,KAAK,QAAQ,IAAI,EAAE,EAAE,CAAC;YAErC,IAAI,EAAE,CAAC,IAAI,KAAK,oBAAoB,EAAE,CAAC;gBACnC,OAAO,CAAC,EAAE,CAAC,CAAC;YAChB,CAAC;QACL,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;CACJ,CAAA;AArCY,qCAAqC;IADjD,UAAU,EAAE;;GACA,qCAAqC,CAqCjD"}
@@ -0,0 +1,12 @@
1
+ import 'reflect-metadata';
2
+ import { ClaudeRawMessageDeltaEvent } from '../../types';
3
+ import { HoloStreamChunk } from '@holokai/sdk';
4
+ import { StreamTranslator } from "@holokai/sdk/provider";
5
+ export declare class ClaudeMessageDeltaEventTranslator extends StreamTranslator<HoloStreamChunk, ClaudeRawMessageDeltaEvent> {
6
+ protected holoDefaults: Partial<HoloStreamChunk>;
7
+ protected providerDefaults: Partial<ClaudeRawMessageDeltaEvent>;
8
+ constructor();
9
+ protected fromHoloManyImpl(source: HoloStreamChunk): Promise<Partial<ClaudeRawMessageDeltaEvent>[]>;
10
+ protected toHoloManyImpl(source: ClaudeRawMessageDeltaEvent): Promise<Partial<HoloStreamChunk>[]>;
11
+ }
12
+ //# sourceMappingURL=claude.message.delta.event.translator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.message.delta.event.translator.d.ts","sourceRoot":"","sources":["../../../src/translators/streaming/claude.message.delta.event.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAC,0BAA0B,EAAC,MAAM,aAAa,CAAC;AACvD,OAAO,EAAC,eAAe,EAAc,MAAM,cAAc,CAAC;AAE1D,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAEvD,qBACa,iCAAkC,SAAQ,gBAAgB,CAAC,eAAe,EAAE,0BAA0B,CAAC;IAChH,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAM;IACtD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAM;;cAMrD,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC;cA8BzF,cAAc,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;CAuB1G"}
@@ -0,0 +1,74 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import 'reflect-metadata';
11
+ import { injectable } from 'tsyringe';
12
+ import { pickDefined } from '@holokai/sdk';
13
+ import { mapClaudeFinishReason, mapHoloFinishReasonToClaude } from '../../utils/finish.reason.mapper.js';
14
+ import { StreamTranslator } from "@holokai/sdk/provider";
15
+ let ClaudeMessageDeltaEventTranslator = class ClaudeMessageDeltaEventTranslator extends StreamTranslator {
16
+ holoDefaults = {};
17
+ providerDefaults = {};
18
+ constructor() {
19
+ super();
20
+ }
21
+ async fromHoloManyImpl(source) {
22
+ const d = source.delta;
23
+ if (!d || d.type !== 'message_delta')
24
+ return [];
25
+ const stop_reason = mapHoloFinishReasonToClaude(source.finish_reason); // Mapper handles undefined
26
+ // Build usage only if present, don't fabricate values
27
+ const usage = d.usage
28
+ ? pickDefined({
29
+ input_tokens: d.usage.input_tokens,
30
+ output_tokens: d.usage.output_tokens
31
+ })
32
+ : undefined;
33
+ // Emit only if we actually have something to say
34
+ if (!stop_reason && !usage)
35
+ return [];
36
+ const event = {
37
+ type: 'message_delta',
38
+ delta: {
39
+ container: null, // Required by validator, always null for message_delta
40
+ stop_reason: stop_reason ?? null,
41
+ stop_sequence: null
42
+ },
43
+ ...(usage ? { usage: usage } : {}) // Claude usage type is strict but we have partials
44
+ };
45
+ return [event];
46
+ }
47
+ async toHoloManyImpl(source) {
48
+ // Build usage only if we have valid values - keep it minimal
49
+ const usage = source.usage
50
+ ? pickDefined({
51
+ input_tokens: source.usage.input_tokens ?? undefined,
52
+ output_tokens: source.usage.output_tokens
53
+ })
54
+ : undefined;
55
+ const chunk = pickDefined({
56
+ delta: {
57
+ provider: 'claude',
58
+ type: 'message_delta',
59
+ choice: 0,
60
+ delta: {}, // Semantic no-op; finish_reason/usage carry the meaning
61
+ usage: usage ?? undefined, // Use undefined instead of null for consistency
62
+ provider_delta: source // Carry raw event for lossless round-trip
63
+ },
64
+ finish_reason: mapClaudeFinishReason(source.delta.stop_reason) // Mapper handles null/undefined
65
+ });
66
+ return [chunk];
67
+ }
68
+ };
69
+ ClaudeMessageDeltaEventTranslator = __decorate([
70
+ injectable(),
71
+ __metadata("design:paramtypes", [])
72
+ ], ClaudeMessageDeltaEventTranslator);
73
+ export { ClaudeMessageDeltaEventTranslator };
74
+ //# sourceMappingURL=claude.message.delta.event.translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.message.delta.event.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/claude.message.delta.event.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,OAAO,EAAkB,WAAW,EAAC,MAAM,cAAc,CAAC;AAC1D,OAAO,EAAC,qBAAqB,EAAE,2BAA2B,EAAC,MAAM,qCAAqC,CAAC;AACvG,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAGhD,IAAM,iCAAiC,GAAvC,MAAM,iCAAkC,SAAQ,gBAA6D;IACtG,YAAY,GAA6B,EAAE,CAAC;IAC5C,gBAAgB,GAAwC,EAAE,CAAC;IAErE;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,MAAuB;QACpD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe;YAAE,OAAO,EAAE,CAAC;QAEhD,MAAM,WAAW,GAAG,2BAA2B,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC,CAAE,2BAA2B;QAEnG,sDAAsD;QACtD,MAAM,KAAK,GAAG,CAAC,CAAC,KAAK;YACjB,CAAC,CAAC,WAAW,CAAC;gBACV,YAAY,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY;gBAClC,aAAa,EAAE,CAAC,CAAC,KAAK,CAAC,aAAa;aACvC,CAAC;YACF,CAAC,CAAC,SAAS,CAAC;QAEhB,iDAAiD;QACjD,IAAI,CAAC,WAAW,IAAI,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAEtC,MAAM,KAAK,GAAwC;YAC/C,IAAI,EAAE,eAAwB;YAC9B,KAAK,EAAE;gBACH,SAAS,EAAE,IAAI,EAAG,uDAAuD;gBACzE,WAAW,EAAE,WAAW,IAAI,IAAI;gBAChC,aAAa,EAAE,IAAI;aACtB;YACD,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,EAAC,KAAK,EAAE,KAAY,EAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAE,mDAAmD;SAC/F,CAAC;QAEF,OAAO,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,MAAkC;QAC7D,6DAA6D;QAC7D,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK;YACtB,CAAC,CAAC,WAAW,CAAC;gBACV,YAAY,EAAE,MAAM,CAAC,KAAK,CAAC,YAAY,IAAI,SAAS;gBACpD,aAAa,EAAE,MAAM,CAAC,KAAK,CAAC,aAAa;aAC5C,CAAC;YACF,CAAC,CAAC,SAAS,CAAC;QAEhB,MAAM,KAAK,GAA6B,WAAW,CAAC;YAChD,KAAK,EAAE;gBACH,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,eAAwB;gBAC9B,MAAM,EAAE,CAAC;gBACT,KAAK,EAAE,EAAE,EAAG,wDAAwD;gBACpE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAG,gDAAgD;gBAC5E,cAAc,EAAE,MAAM,CAAE,0CAA0C;aACrE;YACD,aAAa,EAAE,qBAAqB,CAAC,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,CAAE,gCAAgC;SACnG,CAA6B,CAAC;QAE/B,OAAO,CAAC,KAAK,CAAC,CAAC;IACnB,CAAC;CACJ,CAAA;AA7DY,iCAAiC;IAD7C,UAAU,EAAE;;GACA,iCAAiC,CA6D7C"}
@@ -0,0 +1,14 @@
1
+ import 'reflect-metadata';
2
+ import { ClaudeRawMessageStartEvent } from '../../types';
3
+ import { ClaudeUsageTranslator } from '../claude.usage.translators';
4
+ import { StreamTranslator } from "@holokai/sdk/provider";
5
+ import { HoloStreamChunk } from "@holokai/sdk";
6
+ export declare class ClaudeMessageStartEventTranslator extends StreamTranslator<HoloStreamChunk, ClaudeRawMessageStartEvent> {
7
+ private readonly usageTranslator;
8
+ protected holoDefaults: Partial<HoloStreamChunk>;
9
+ protected providerDefaults: Partial<ClaudeRawMessageStartEvent>;
10
+ constructor(usageTranslator: ClaudeUsageTranslator);
11
+ protected fromHoloManyImpl(source: HoloStreamChunk): Promise<Partial<ClaudeRawMessageStartEvent>[]>;
12
+ protected toHoloManyImpl(source: ClaudeRawMessageStartEvent): Promise<Partial<HoloStreamChunk>[]>;
13
+ }
14
+ //# sourceMappingURL=claude.message.start.event.translator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.message.start.event.translator.d.ts","sourceRoot":"","sources":["../../../src/translators/streaming/claude.message.start.event.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAC,0BAA0B,EAAwB,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAC,qBAAqB,EAAC,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,eAAe,EAAc,MAAM,cAAc,CAAC;AAE1D,qBACa,iCAAkC,SAAQ,gBAAgB,CAAC,eAAe,EAAE,0BAA0B,CAAC;IAIpG,OAAO,CAAC,QAAQ,CAAC,eAAe;IAH5C,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAM;IACtD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,0BAA0B,CAAC,CAAM;gBAExC,eAAe,EAAE,qBAAqB;cAInD,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,0BAA0B,CAAC,EAAE,CAAC;cA6BzF,cAAc,CAAC,MAAM,EAAE,0BAA0B,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;CAyB1G"}
@@ -0,0 +1,81 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import 'reflect-metadata';
11
+ import { injectable } from 'tsyringe';
12
+ import { v4 as uuidv4 } from 'uuid';
13
+ import { ClaudeUsageTranslator } from '../claude.usage.translators';
14
+ import { StreamTranslator } from "@holokai/sdk/provider";
15
+ import { pickDefined } from "@holokai/sdk";
16
+ let ClaudeMessageStartEventTranslator = class ClaudeMessageStartEventTranslator extends StreamTranslator {
17
+ usageTranslator;
18
+ holoDefaults = {};
19
+ providerDefaults = {};
20
+ constructor(usageTranslator) {
21
+ super();
22
+ this.usageTranslator = usageTranslator;
23
+ }
24
+ async fromHoloManyImpl(source) {
25
+ const d = source.delta;
26
+ if (!d || d.type !== 'message_start')
27
+ return [];
28
+ // Must have model; id is optional (generate stable ID if missing)
29
+ if (!source.model)
30
+ return [];
31
+ // Build message - usage is typically not present at message_start
32
+ // When it is needed, it should have all required fields from the source
33
+ const message = pickDefined({
34
+ // Generate stable ID if not present, don't use empty string
35
+ id: source.id ?? uuidv4(),
36
+ model: source.model,
37
+ type: 'message',
38
+ role: 'assistant',
39
+ content: [], // Claude expects an array
40
+ stop_reason: null,
41
+ stop_sequence: null,
42
+ container: null
43
+ // Omit usage for message_start - it's rarely present and when needed
44
+ // should come through message_delta or message_stop events
45
+ });
46
+ return [{
47
+ type: 'message_start',
48
+ message: message
49
+ }];
50
+ }
51
+ async toHoloManyImpl(source) {
52
+ // Use the usage translator to convert usage (rarely present on message_start)
53
+ const usage = source.message.usage
54
+ ? await this.usageTranslator.toHolo(source.message.usage)
55
+ : null;
56
+ return [{
57
+ id: source.message.id,
58
+ model: source.message.model,
59
+ delta: {
60
+ provider: 'claude',
61
+ type: 'message_start',
62
+ choice: 0, // Claude is always single-choice
63
+ delta: {
64
+ role: 'assistant'
65
+ },
66
+ // Include usage if present (uncommon for message_start)
67
+ usage,
68
+ // Carry raw event for lossless round-trip
69
+ provider_delta: source
70
+ }
71
+ // Alternatively: put usage at chunk level for final events only
72
+ // usage: usage as HoloUsage | undefined
73
+ }];
74
+ }
75
+ };
76
+ ClaudeMessageStartEventTranslator = __decorate([
77
+ injectable(),
78
+ __metadata("design:paramtypes", [ClaudeUsageTranslator])
79
+ ], ClaudeMessageStartEventTranslator);
80
+ export { ClaudeMessageStartEventTranslator };
81
+ //# sourceMappingURL=claude.message.start.event.translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.message.start.event.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/claude.message.start.event.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAC1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AACpC,OAAO,EAAC,EAAE,IAAI,MAAM,EAAC,MAAM,MAAM,CAAC;AAElC,OAAO,EAAC,qBAAqB,EAAC,MAAM,6BAA6B,CAAC;AAClE,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAkB,WAAW,EAAC,MAAM,cAAc,CAAC;AAGnD,IAAM,iCAAiC,GAAvC,MAAM,iCAAkC,SAAQ,gBAA6D;IAInF;IAHnB,YAAY,GAA6B,EAAE,CAAC;IAC5C,gBAAgB,GAAwC,EAAE,CAAC;IAErE,YAA6B,eAAsC;QAC/D,KAAK,EAAE,CAAC;QADiB,oBAAe,GAAf,eAAe,CAAuB;IAEnE,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,MAAuB;QACpD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,IAAI,KAAK,eAAe;YAAE,OAAO,EAAE,CAAC;QAEhD,kEAAkE;QAClE,IAAI,CAAC,MAAM,CAAC,KAAK;YAAE,OAAO,EAAE,CAAC;QAE7B,kEAAkE;QAClE,wEAAwE;QACxE,MAAM,OAAO,GAAmC,WAAW,CAAC;YACxD,4DAA4D;YAC5D,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,MAAM,EAAE;YACzB,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,IAAI,EAAE,SAAkB;YACxB,IAAI,EAAE,WAAoB;YAC1B,OAAO,EAAE,EAAE,EAAG,0BAA0B;YACxC,WAAW,EAAE,IAAI;YACjB,aAAa,EAAE,IAAI;YACnB,SAAS,EAAE,IAAI;YACf,qEAAqE;YACrE,2DAA2D;SAC9D,CAAC,CAAC;QAEH,OAAO,CAAC;gBACJ,IAAI,EAAE,eAAwB;gBAC9B,OAAO,EAAE,OAAgC;aAC5C,CAAC,CAAC;IACP,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,MAAkC;QAC7D,8EAA8E;QAC9E,MAAM,KAAK,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK;YAC9B,CAAC,CAAC,MAAM,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC;YACzD,CAAC,CAAC,IAAI,CAAC;QAEX,OAAO,CAAC;gBACJ,EAAE,EAAE,MAAM,CAAC,OAAO,CAAC,EAAE;gBACrB,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;gBAC3B,KAAK,EAAE;oBACH,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,eAAwB;oBAC9B,MAAM,EAAE,CAAC,EAAG,iCAAiC;oBAC7C,KAAK,EAAE;wBACH,IAAI,EAAE,WAAoB;qBAC7B;oBACD,wDAAwD;oBACxD,KAAK;oBACL,0CAA0C;oBAC1C,cAAc,EAAE,MAAM;iBACzB;gBACD,gEAAgE;gBAChE,wCAAwC;aAC3C,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AA9DY,iCAAiC;IAD7C,UAAU,EAAE;qCAKqC,qBAAqB;GAJ1D,iCAAiC,CA8D7C"}
@@ -0,0 +1,12 @@
1
+ import 'reflect-metadata';
2
+ import { ClaudeRawMessageStopEvent } from '../../types';
3
+ import { HoloStreamChunk } from "@holokai/sdk";
4
+ import { StreamTranslator } from "@holokai/sdk/provider";
5
+ export declare class ClaudeMessageStopEventTranslator extends StreamTranslator<HoloStreamChunk, ClaudeRawMessageStopEvent> {
6
+ protected holoDefaults: Partial<HoloStreamChunk>;
7
+ protected providerDefaults: Partial<ClaudeRawMessageStopEvent>;
8
+ constructor();
9
+ protected fromHoloManyImpl(source: HoloStreamChunk): Promise<Partial<ClaudeRawMessageStopEvent>[]>;
10
+ protected toHoloManyImpl(source: ClaudeRawMessageStopEvent): Promise<Partial<HoloStreamChunk>[]>;
11
+ }
12
+ //# sourceMappingURL=claude.message.stop.event.translator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.message.stop.event.translator.d.ts","sourceRoot":"","sources":["../../../src/translators/streaming/claude.message.stop.event.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAC,yBAAyB,EAAC,MAAM,aAAa,CAAC;AACtD,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAEvD,qBACa,gCAAiC,SAAQ,gBAAgB,CAAC,eAAe,EAAE,yBAAyB,CAAC;IAC9G,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAM;IACtD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,yBAAyB,CAAC,CAAM;;cAMpD,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,yBAAyB,CAAC,EAAE,CAAC;cAmBxF,cAAc,CAAC,MAAM,EAAE,yBAAyB,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;CAWzG"}
@@ -0,0 +1,52 @@
1
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
2
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
3
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
4
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
5
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
6
+ };
7
+ var __metadata = (this && this.__metadata) || function (k, v) {
8
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
9
+ };
10
+ import 'reflect-metadata';
11
+ import { injectable } from 'tsyringe';
12
+ import { StreamTranslator } from "@holokai/sdk/provider";
13
+ let ClaudeMessageStopEventTranslator = class ClaudeMessageStopEventTranslator extends StreamTranslator {
14
+ holoDefaults = {};
15
+ providerDefaults = {};
16
+ constructor() {
17
+ super();
18
+ }
19
+ async fromHoloManyImpl(source) {
20
+ const d = source.delta;
21
+ if (!d)
22
+ return [];
23
+ // Pass-through if we already have a valid Claude stop event as provider_delta
24
+ if (d.provider_delta) {
25
+ if (d.provider_delta.type === 'message_stop') {
26
+ return [d.provider_delta];
27
+ }
28
+ }
29
+ // Otherwise emit only when Holo says message_stop
30
+ if (d.type === 'message_stop') {
31
+ return [{ type: 'message_stop' }];
32
+ }
33
+ return [];
34
+ }
35
+ async toHoloManyImpl(source) {
36
+ return [{
37
+ delta: {
38
+ provider: 'claude',
39
+ type: 'message_stop',
40
+ delta: {},
41
+ provider_delta: source, // carry raw event for lossless round-trip
42
+ },
43
+ done: true
44
+ }];
45
+ }
46
+ };
47
+ ClaudeMessageStopEventTranslator = __decorate([
48
+ injectable(),
49
+ __metadata("design:paramtypes", [])
50
+ ], ClaudeMessageStopEventTranslator);
51
+ export { ClaudeMessageStopEventTranslator };
52
+ //# sourceMappingURL=claude.message.stop.event.translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.message.stop.event.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/claude.message.stop.event.translator.ts"],"names":[],"mappings":";;;;;;;;;AAAA,OAAO,kBAAkB,CAAC;AAE1B,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAGpC,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AAGhD,IAAM,gCAAgC,GAAtC,MAAM,gCAAiC,SAAQ,gBAA4D;IACpG,YAAY,GAA6B,EAAE,CAAC;IAC5C,gBAAgB,GAAuC,EAAE,CAAC;IAEpE;QACI,KAAK,EAAE,CAAC;IACZ,CAAC;IAES,KAAK,CAAC,gBAAgB,CAAC,MAAuB;QACpD,MAAM,CAAC,GAAG,MAAM,CAAC,KAAK,CAAC;QACvB,IAAI,CAAC,CAAC;YAAE,OAAO,EAAE,CAAC;QAElB,8EAA8E;QAC9E,IAAI,CAAC,CAAC,cAAc,EAAE,CAAC;YACnB,IAAI,CAAC,CAAC,cAAc,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;gBAC3C,OAAO,CAAC,CAAC,CAAC,cAAc,CAAC,CAAC;YAC9B,CAAC;QACL,CAAC;QAED,kDAAkD;QAClD,IAAI,CAAC,CAAC,IAAI,KAAK,cAAc,EAAE,CAAC;YAC5B,OAAO,CAAC,EAAC,IAAI,EAAE,cAAuB,EAAC,CAAC,CAAC;QAC7C,CAAC;QAED,OAAO,EAAE,CAAC;IACd,CAAC;IAES,KAAK,CAAC,cAAc,CAAC,MAAiC;QAC5D,OAAO,CAAC;gBACJ,KAAK,EAAE;oBACH,QAAQ,EAAE,QAAQ;oBAClB,IAAI,EAAE,cAAuB;oBAC7B,KAAK,EAAE,EAAE;oBACT,cAAc,EAAE,MAAM,EAAE,0CAA0C;iBACrE;gBACD,IAAI,EAAE,IAAI;aACb,CAAC,CAAC;IACP,CAAC;CACJ,CAAA;AAtCY,gCAAgC;IAD5C,UAAU,EAAE;;GACA,gCAAgC,CAsC5C"}
@@ -0,0 +1,24 @@
1
+ import 'reflect-metadata';
2
+ import { ClaudeRawMessageStreamEvent } from '../../types';
3
+ import { ClaudeMessageStartEventTranslator } from './claude.message.start.event.translator';
4
+ import { ClaudeMessageDeltaEventTranslator } from './claude.message.delta.event.translator';
5
+ import { ClaudeMessageStopEventTranslator } from './claude.message.stop.event.translator';
6
+ import { ClaudeContentBlockStartEventTranslator } from './claude.content.block.start.event.translator';
7
+ import { ClaudeContentBlockDeltaEventTranslator } from './claude.content.block.delta.event.translator';
8
+ import { ClaudeContentBlockStopEventTranslator } from './claude.content.block.stop.event.translator';
9
+ import { StreamTranslator } from "@holokai/sdk/provider";
10
+ import { HoloStreamChunk } from "@holokai/sdk";
11
+ export declare class ClaudeStreamTranslator extends StreamTranslator<HoloStreamChunk, ClaudeRawMessageStreamEvent> {
12
+ private readonly messageStartTranslator;
13
+ private readonly messageDeltaTranslator;
14
+ private readonly messageStopTranslator;
15
+ private readonly contentBlockStartTranslator;
16
+ private readonly contentBlockDeltaTranslator;
17
+ private readonly contentBlockStopTranslator;
18
+ protected holoDefaults: Partial<HoloStreamChunk>;
19
+ protected providerDefaults: Partial<ClaudeRawMessageStreamEvent>;
20
+ constructor(messageStartTranslator: ClaudeMessageStartEventTranslator, messageDeltaTranslator: ClaudeMessageDeltaEventTranslator, messageStopTranslator: ClaudeMessageStopEventTranslator, contentBlockStartTranslator: ClaudeContentBlockStartEventTranslator, contentBlockDeltaTranslator: ClaudeContentBlockDeltaEventTranslator, contentBlockStopTranslator: ClaudeContentBlockStopEventTranslator);
21
+ protected toHoloManyImpl(source: ClaudeRawMessageStreamEvent): Promise<Partial<HoloStreamChunk>[]>;
22
+ protected fromHoloManyImpl(source: HoloStreamChunk): Promise<Partial<ClaudeRawMessageStreamEvent>[]>;
23
+ }
24
+ //# sourceMappingURL=claude.stream.translator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.stream.translator.d.ts","sourceRoot":"","sources":["../../../src/translators/streaming/claude.stream.translator.ts"],"names":[],"mappings":"AAAA,OAAO,kBAAkB,CAAC;AAG1B,OAAO,EAAC,2BAA2B,EAAC,MAAM,aAAa,CAAC;AACxD,OAAO,EAAC,iCAAiC,EAAC,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAC,iCAAiC,EAAC,MAAM,yCAAyC,CAAC;AAC1F,OAAO,EAAC,gCAAgC,EAAC,MAAM,wCAAwC,CAAC;AACxF,OAAO,EAAC,sCAAsC,EAAC,MAAM,+CAA+C,CAAC;AACrG,OAAO,EAAC,sCAAsC,EAAC,MAAM,+CAA+C,CAAC;AACrG,OAAO,EAAC,qCAAqC,EAAC,MAAM,8CAA8C,CAAC;AAEnG,OAAO,EAAC,gBAAgB,EAAC,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAC,eAAe,EAAC,MAAM,cAAc,CAAC;AAE7C,qBACa,sBAAuB,SAAQ,gBAAgB,CAAC,eAAe,EAAE,2BAA2B,CAAC;IAKlG,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,sBAAsB;IACvC,OAAO,CAAC,QAAQ,CAAC,qBAAqB;IACtC,OAAO,CAAC,QAAQ,CAAC,2BAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAC,2BAA2B;IAC5C,OAAO,CAAC,QAAQ,CAAC,0BAA0B;IAT/C,SAAS,CAAC,YAAY,EAAE,OAAO,CAAC,eAAe,CAAC,CAAM;IACtD,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,2BAA2B,CAAC,CAAM;gBAGjD,sBAAsB,EAAE,iCAAiC,EACzD,sBAAsB,EAAE,iCAAiC,EACzD,qBAAqB,EAAE,gCAAgC,EACvD,2BAA2B,EAAE,sCAAsC,EACnE,2BAA2B,EAAE,sCAAsC,EACnE,0BAA0B,EAAE,qCAAqC;cAKtE,cAAc,CAAC,MAAM,EAAE,2BAA2B,GAAG,OAAO,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC;cAmBxF,gBAAgB,CAAC,MAAM,EAAE,eAAe,GAAG,OAAO,CAAC,OAAO,CAAC,2BAA2B,CAAC,EAAE,CAAC;CAoF7G"}