@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,136 @@
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 { ClaudeMessageStartEventTranslator } from './claude.message.start.event.translator';
13
+ import { ClaudeMessageDeltaEventTranslator } from './claude.message.delta.event.translator';
14
+ import { ClaudeMessageStopEventTranslator } from './claude.message.stop.event.translator';
15
+ import { ClaudeContentBlockStartEventTranslator } from './claude.content.block.start.event.translator';
16
+ import { ClaudeContentBlockDeltaEventTranslator } from './claude.content.block.delta.event.translator';
17
+ import { ClaudeContentBlockStopEventTranslator } from './claude.content.block.stop.event.translator';
18
+ import { mapHoloFinishReasonToClaude } from '../../utils/finish.reason.mapper.js';
19
+ import { StreamTranslator } from "@holokai/sdk/provider";
20
+ let ClaudeStreamTranslator = class ClaudeStreamTranslator extends StreamTranslator {
21
+ messageStartTranslator;
22
+ messageDeltaTranslator;
23
+ messageStopTranslator;
24
+ contentBlockStartTranslator;
25
+ contentBlockDeltaTranslator;
26
+ contentBlockStopTranslator;
27
+ holoDefaults = {};
28
+ providerDefaults = {};
29
+ constructor(messageStartTranslator, messageDeltaTranslator, messageStopTranslator, contentBlockStartTranslator, contentBlockDeltaTranslator, contentBlockStopTranslator) {
30
+ super();
31
+ this.messageStartTranslator = messageStartTranslator;
32
+ this.messageDeltaTranslator = messageDeltaTranslator;
33
+ this.messageStopTranslator = messageStopTranslator;
34
+ this.contentBlockStartTranslator = contentBlockStartTranslator;
35
+ this.contentBlockDeltaTranslator = contentBlockDeltaTranslator;
36
+ this.contentBlockStopTranslator = contentBlockStopTranslator;
37
+ }
38
+ async toHoloManyImpl(source) {
39
+ switch (source.type) {
40
+ case 'message_start':
41
+ return this.messageStartTranslator.toHoloMany(source);
42
+ case 'message_delta':
43
+ return this.messageDeltaTranslator.toHoloMany(source);
44
+ case 'message_stop':
45
+ return this.messageStopTranslator.toHoloMany(source);
46
+ case 'content_block_start':
47
+ return this.contentBlockStartTranslator.toHoloMany(source);
48
+ case 'content_block_delta':
49
+ return this.contentBlockDeltaTranslator.toHoloMany(source);
50
+ case 'content_block_stop':
51
+ return this.contentBlockStopTranslator.toHoloMany(source);
52
+ default:
53
+ return [];
54
+ }
55
+ }
56
+ async fromHoloManyImpl(source) {
57
+ const d = source.delta;
58
+ if (!d)
59
+ return [];
60
+ // Fast pass-through for Claude→Claude streaming
61
+ // If we already have a validated Claude event, just return it
62
+ const hasClaudeProviderDelta = d.provider === 'claude' && d.provider_delta;
63
+ if (hasClaudeProviderDelta) {
64
+ // It's already a valid Claude event, pass it through
65
+ return [d.provider_delta];
66
+ }
67
+ // Detect cross-provider translation (OpenAI/Ollama → Claude)
68
+ // Native Claude streams have provider_delta populated with raw Claude events
69
+ // Cross-provider translations don't have provider_delta (only normalized Holo data)
70
+ // Note: d.provider is always CLAUDE when translating TO Claude (set by factory)
71
+ const isCrossProviderTranslation = !d.provider_delta;
72
+ // Route based on delta type for efficiency
73
+ switch (d.type) {
74
+ case 'message_start':
75
+ // For non-Claude sources, synthesize content_block_start after message_start
76
+ const messageStartResults = await this.messageStartTranslator.fromHoloMany(source);
77
+ if (isCrossProviderTranslation) {
78
+ // Synthesize content_block_start[0] for text content
79
+ messageStartResults.push({
80
+ type: 'content_block_start',
81
+ index: 0,
82
+ content_block: {
83
+ type: 'text',
84
+ text: ''
85
+ }
86
+ });
87
+ }
88
+ return messageStartResults;
89
+ case 'message_delta':
90
+ // Message delta can produce multiple event types:
91
+ // - message_delta (for finish_reason/usage)
92
+ // - content_block_start (for tool call shells)
93
+ // - content_block_delta (for tool argument fragments)
94
+ // - message_stop (if finish_reason indicates completion)
95
+ const results = [];
96
+ // Order matters: start → delta → stop
97
+ results.push(...await this.messageDeltaTranslator.fromHoloMany(source));
98
+ results.push(...await this.contentBlockStartTranslator.fromHoloMany(source));
99
+ results.push(...await this.contentBlockDeltaTranslator.fromHoloMany(source));
100
+ // Only emit message_stop if finish_reason maps to a valid Claude stop reason
101
+ const claudeStopReason = mapHoloFinishReasonToClaude(source.finish_reason);
102
+ if (claudeStopReason !== undefined && claudeStopReason !== null) {
103
+ results.push(...await this.messageStopTranslator.fromHoloMany(source));
104
+ }
105
+ return results;
106
+ case 'content_delta':
107
+ // Content delta only produces content_block_delta events
108
+ return this.contentBlockDeltaTranslator.fromHoloMany(source);
109
+ case 'message_stop':
110
+ // For non-Claude sources, synthesize content_block_stop before message_stop
111
+ const stopResults = [];
112
+ if (isCrossProviderTranslation) {
113
+ // Synthesize content_block_stop[0] to close the text content block
114
+ stopResults.push({
115
+ type: 'content_block_stop',
116
+ index: 0
117
+ });
118
+ }
119
+ stopResults.push(...await this.messageStopTranslator.fromHoloMany(source));
120
+ return stopResults;
121
+ default:
122
+ return [];
123
+ }
124
+ }
125
+ };
126
+ ClaudeStreamTranslator = __decorate([
127
+ injectable(),
128
+ __metadata("design:paramtypes", [ClaudeMessageStartEventTranslator,
129
+ ClaudeMessageDeltaEventTranslator,
130
+ ClaudeMessageStopEventTranslator,
131
+ ClaudeContentBlockStartEventTranslator,
132
+ ClaudeContentBlockDeltaEventTranslator,
133
+ ClaudeContentBlockStopEventTranslator])
134
+ ], ClaudeStreamTranslator);
135
+ export { ClaudeStreamTranslator };
136
+ //# sourceMappingURL=claude.stream.translator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"claude.stream.translator.js","sourceRoot":"","sources":["../../../src/translators/streaming/claude.stream.translator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export * from './claude.message.start.event.translator';
2
+ export * from './claude.message.delta.event.translator';
3
+ export * from './claude.message.stop.event.translator';
4
+ export * from './claude.content.block.start.event.translator';
5
+ export * from './claude.content.block.delta.event.translator';
6
+ export * from './claude.content.block.stop.event.translator';
7
+ export * from './claude.stream.translator';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/translators/streaming/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,8 @@
1
+ export * from './claude.message.start.event.translator';
2
+ export * from './claude.message.delta.event.translator';
3
+ export * from './claude.message.stop.event.translator';
4
+ export * from './claude.content.block.start.event.translator';
5
+ export * from './claude.content.block.delta.event.translator';
6
+ export * from './claude.content.block.stop.event.translator';
7
+ export * from './claude.stream.translator';
8
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/translators/streaming/index.ts"],"names":[],"mappings":"AAAA,cAAc,yCAAyC,CAAC;AACxD,cAAc,yCAAyC,CAAC;AACxD,cAAc,wCAAwC,CAAC;AACvD,cAAc,+CAA+C,CAAC;AAC9D,cAAc,+CAA+C,CAAC;AAC9D,cAAc,8CAA8C,CAAC;AAC7D,cAAc,4BAA4B,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './request.types';
2
+ export * from './response.types';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,3 @@
1
+ export * from './request.types';
2
+ export * from './response.types';
3
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":"AAAA,cAAc,iBAAiB,CAAC;AAChC,cAAc,kBAAkB,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { BetaContentBlockParam, BetaMessageParam, BetaMessageStreamParams, BetaTool, BetaToolChoice, BetaToolUnion } from '@anthropic-ai/sdk/resources/beta/messages/messages';
2
+ export type ClaudeContentBlockParam = BetaContentBlockParam;
3
+ export type ClaudeTool = BetaTool;
4
+ export type ClaudeToolChoice = BetaToolChoice;
5
+ export type ClaudeToolUnion = BetaToolUnion;
6
+ export type ClaudeRequestMessage = BetaMessageParam;
7
+ export type ClaudeChatRequest = BetaMessageStreamParams;
8
+ //# sourceMappingURL=request.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.types.d.ts","sourceRoot":"","sources":["../../src/types/request.types.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EACvB,QAAQ,EACR,cAAc,EACd,aAAa,EAChB,MAAM,oDAAoD,CAAC;AAG5D,MAAM,MAAM,uBAAuB,GAAG,qBAAqB,CAAC;AAC5D,MAAM,MAAM,UAAU,GAAG,QAAQ,CAAC;AAClC,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAC9C,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC;AAC5C,MAAM,MAAM,oBAAoB,GAAG,gBAAgB,CAAC;AACpD,MAAM,MAAM,iBAAiB,GAAG,uBAAuB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=request.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"request.types.js","sourceRoot":"","sources":["../../src/types/request.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ import type { BetaContentBlock, BetaMessage, BetaRawContentBlockDeltaEvent, BetaRawContentBlockStartEvent, BetaRawContentBlockStopEvent, BetaRawMessageDeltaEvent, BetaRawMessageStartEvent, BetaRawMessageStopEvent, BetaRawMessageStreamEvent, BetaStopReason, BetaTextBlock, BetaTextDelta, BetaUsage } from "@anthropic-ai/sdk/resources/beta/messages/messages";
2
+ export type ClaudeStopReason = BetaStopReason;
3
+ export type ClaudeUsage = BetaUsage;
4
+ export type ClaudeTextBlock = BetaTextBlock;
5
+ export type ClaudeContentBlock = BetaContentBlock;
6
+ export type ClaudeResponseMessage = BetaMessage;
7
+ export type ClaudeTextDelta = BetaTextDelta;
8
+ export type ClaudeRawMessageStartEvent = BetaRawMessageStartEvent;
9
+ export type ClaudeRawMessageDeltaEvent = BetaRawMessageDeltaEvent;
10
+ export type ClaudeRawMessageStopEvent = BetaRawMessageStopEvent;
11
+ export type ClaudeRawContentBlockStartEvent = BetaRawContentBlockStartEvent;
12
+ export type ClaudeRawContentBlockDeltaEvent = BetaRawContentBlockDeltaEvent;
13
+ export type ClaudeRawContentBlockStopEvent = BetaRawContentBlockStopEvent;
14
+ export type ClaudeRawMessageStreamEvent = BetaRawMessageStreamEvent;
15
+ export type ClaudeResponse = ClaudeRawMessageStreamEvent | ClaudeResponseMessage;
16
+ //# sourceMappingURL=response.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.types.d.ts","sourceRoot":"","sources":["../../src/types/response.types.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACR,gBAAgB,EAChB,WAAW,EACX,6BAA6B,EAC7B,6BAA6B,EAC7B,4BAA4B,EAC5B,wBAAwB,EACxB,wBAAwB,EACxB,uBAAuB,EACvB,yBAAyB,EACzB,cAAc,EACd,aAAa,EACb,aAAa,EACb,SAAS,EACZ,MAAM,oDAAoD,CAAC;AAE5D,MAAM,MAAM,gBAAgB,GAAG,cAAc,CAAC;AAC9C,MAAM,MAAM,WAAW,GAAG,SAAS,CAAC;AACpC,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC;AAC5C,MAAM,MAAM,kBAAkB,GAAG,gBAAgB,CAAC;AAClD,MAAM,MAAM,qBAAqB,GAAG,WAAW,CAAC;AAChD,MAAM,MAAM,eAAe,GAAG,aAAa,CAAC;AAC5C,MAAM,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAClE,MAAM,MAAM,0BAA0B,GAAG,wBAAwB,CAAC;AAClE,MAAM,MAAM,yBAAyB,GAAG,uBAAuB,CAAC;AAChE,MAAM,MAAM,+BAA+B,GAAG,6BAA6B,CAAC;AAC5E,MAAM,MAAM,+BAA+B,GAAG,6BAA6B,CAAC;AAC5E,MAAM,MAAM,8BAA8B,GAAG,4BAA4B,CAAC;AAC1E,MAAM,MAAM,2BAA2B,GAAG,yBAAyB,CAAC;AACpE,MAAM,MAAM,cAAc,GAAG,2BAA2B,GAAG,qBAAqB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=response.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"response.types.js","sourceRoot":"","sources":["../../src/types/response.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,5 @@
1
+ import { HoloFinishReason } from "@holokai/sdk";
2
+ import { ClaudeStopReason } from "../types";
3
+ export declare function mapClaudeFinishReason(reason?: string | null): HoloFinishReason | undefined;
4
+ export declare function mapHoloFinishReasonToClaude(reason?: HoloFinishReason): ClaudeStopReason | null | undefined;
5
+ //# sourceMappingURL=finish.reason.mapper.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finish.reason.mapper.d.ts","sourceRoot":"","sources":["../../src/utils/finish.reason.mapper.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,gBAAgB,EAAC,MAAM,cAAc,CAAC;AAC9C,OAAO,EAAC,gBAAgB,EAAC,MAAM,UAAU,CAAC;AAE1C,wBAAgB,qBAAqB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,GAAG,gBAAgB,GAAG,SAAS,CAiB1F;AAED,wBAAgB,2BAA2B,CAAC,MAAM,CAAC,EAAE,gBAAgB,GAAG,gBAAgB,GAAG,IAAI,GAAG,SAAS,CAmB1G"}
@@ -0,0 +1,40 @@
1
+ export function mapClaudeFinishReason(reason) {
2
+ if (!reason)
3
+ return undefined;
4
+ switch (reason) {
5
+ case 'end_turn':
6
+ return 'stop';
7
+ case 'max_tokens':
8
+ return 'length';
9
+ case 'tool_use':
10
+ return 'tool_calls';
11
+ case 'stop_sequence':
12
+ return 'stop';
13
+ case 'refusal':
14
+ return 'content_filter';
15
+ default:
16
+ return null;
17
+ }
18
+ }
19
+ export function mapHoloFinishReasonToClaude(reason) {
20
+ if (reason === undefined)
21
+ return undefined;
22
+ if (reason === null)
23
+ return null;
24
+ switch (reason) {
25
+ case 'stop':
26
+ return 'end_turn';
27
+ case 'length':
28
+ return 'max_tokens';
29
+ case 'tool_calls':
30
+ return 'tool_use';
31
+ case 'content_filter':
32
+ return 'refusal';
33
+ case 'function_call':
34
+ // Claude doesn't have a separate function_call reason, use tool_use
35
+ return 'tool_use';
36
+ default:
37
+ return null;
38
+ }
39
+ }
40
+ //# sourceMappingURL=finish.reason.mapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"finish.reason.mapper.js","sourceRoot":"","sources":["../../src/utils/finish.reason.mapper.ts"],"names":[],"mappings":"AAGA,MAAM,UAAU,qBAAqB,CAAC,MAAsB;IACxD,IAAI,CAAC,MAAM;QAAE,OAAO,SAAS,CAAC;IAE9B,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,UAAU;YACX,OAAO,MAAM,CAAC;QAClB,KAAK,YAAY;YACb,OAAO,QAAQ,CAAC;QACpB,KAAK,UAAU;YACX,OAAO,YAAY,CAAC;QACxB,KAAK,eAAe;YAChB,OAAO,MAAM,CAAC;QAClB,KAAK,SAAS;YACV,OAAO,gBAAgB,CAAC;QAC5B;YACI,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC;AAED,MAAM,UAAU,2BAA2B,CAAC,MAAyB;IACjE,IAAI,MAAM,KAAK,SAAS;QAAE,OAAO,SAAS,CAAC;IAC3C,IAAI,MAAM,KAAK,IAAI;QAAE,OAAO,IAAI,CAAC;IAEjC,QAAQ,MAAM,EAAE,CAAC;QACb,KAAK,MAAM;YACP,OAAO,UAAU,CAAC;QACtB,KAAK,QAAQ;YACT,OAAO,YAAY,CAAC;QACxB,KAAK,YAAY;YACb,OAAO,UAAU,CAAC;QACtB,KAAK,gBAAgB;YACjB,OAAO,SAAS,CAAC;QACrB,KAAK,eAAe;YAChB,oEAAoE;YACpE,OAAO,UAAU,CAAC;QACtB;YACI,OAAO,IAAI,CAAC;IACpB,CAAC;AACL,CAAC"}
@@ -0,0 +1,2 @@
1
+ export declare const createStableId: (name: string, args: Record<string, unknown>) => string;
2
+ //# sourceMappingURL=stable-id.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable-id.d.ts","sourceRoot":"","sources":["../../src/utils/stable-id.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,cAAc,GAAI,MAAM,MAAM,EAAE,MAAM,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAG,MAU5E,CAAC"}
@@ -0,0 +1,13 @@
1
+ // Simple deterministic ID generator for tool calls
2
+ export const createStableId = (name, args) => {
3
+ // Create a stable hash from function name and arguments
4
+ const input = name + JSON.stringify(args, Object.keys(args).sort());
5
+ let hash = 0;
6
+ for (let i = 0; i < input.length; i++) {
7
+ const char = input.charCodeAt(i);
8
+ hash = ((hash << 5) - hash) + char;
9
+ hash = hash & hash; // Convert to 32bit integer
10
+ }
11
+ return `call_${Math.abs(hash).toString(16)}`;
12
+ };
13
+ //# sourceMappingURL=stable-id.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stable-id.js","sourceRoot":"","sources":["../../src/utils/stable-id.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,CAAC,MAAM,cAAc,GAAG,CAAC,IAAY,EAAE,IAA6B,EAAU,EAAE;IAClF,wDAAwD;IACxD,MAAM,KAAK,GAAG,IAAI,GAAG,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACpE,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,IAAI,GAAG,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;QACjC,IAAI,GAAG,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,IAAI,CAAC;QACnC,IAAI,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,2BAA2B;IACnD,CAAC;IACD,OAAO,QAAQ,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;AACjD,CAAC,CAAC"}
package/package.json ADDED
@@ -0,0 +1,73 @@
1
+ {
2
+ "name": "@holokai/holo-provider-claude",
3
+ "version": "0.1.0",
4
+ "type": "module",
5
+ "description": "Claude provider plugin for Holo LLM Gateway",
6
+ "author": "Holokai",
7
+ "license": "MIT",
8
+ "main": "./dist/index.js",
9
+ "types": "./dist/index.d.ts",
10
+ "engines": {
11
+ "node": ">=18.0.0"
12
+ },
13
+ "publishConfig": {
14
+ "access": "public"
15
+ },
16
+ "repository": {
17
+ "type": "git",
18
+ "url": "git+https://github.com/holokai/holo-provider-claude.git"
19
+ },
20
+ "bugs": {
21
+ "url": "https://github.com/holokai/holo-provider-claude/issues"
22
+ },
23
+ "homepage": "https://github.com/holokai/holo-provider-claude#readme",
24
+ "keywords": [
25
+ "holokai",
26
+ "holo",
27
+ "plugin",
28
+ "provider",
29
+ "claude",
30
+ "anthropic",
31
+ "ai",
32
+ "llm"
33
+ ],
34
+ "exports": {
35
+ ".": {
36
+ "types": "./dist/index.d.ts",
37
+ "import": "./dist/index.js",
38
+ "require": "./dist/index.js"
39
+ },
40
+ "./package.json": "./package.json"
41
+ },
42
+ "files": [
43
+ "dist",
44
+ "!dist/**/*.test.*",
45
+ "!dist/**/*.spec.*",
46
+ "README.md",
47
+ "LICENSE"
48
+ ],
49
+ "sideEffects": false,
50
+ "scripts": {
51
+ "build": "tsc --build",
52
+ "build:watch": "tsc --build --watch",
53
+ "clean": "rm -rf dist tsconfig.tsbuildinfo",
54
+ "type-check": "tsc --noEmit",
55
+ "lint": "eslint src",
56
+ "test": "jest",
57
+ "test:watch": "jest --watch",
58
+ "test:integration": "jest tests/integration",
59
+ "prepublishOnly": "npm run clean && npm run build"
60
+ },
61
+ "peerDependencies": {
62
+ "@holokai/sdk": "^0.1.0"
63
+ },
64
+ "dependencies": {
65
+ "@anthropic-ai/sdk": "^0.72.1"
66
+ },
67
+ "devDependencies": {
68
+ "@types/jest": "^30.0.0",
69
+ "@types/node": "^24.0.11",
70
+ "jest": "^29.7.0",
71
+ "typescript": "^5.8.3"
72
+ }
73
+ }