@grafana/sigil-sdk-js-core 0.0.0 → 0.7.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 (61) hide show
  1. package/LICENSE +2 -200
  2. package/README.md +34 -1
  3. package/dist/cache-diagnostics.d.ts +15 -0
  4. package/dist/cache-diagnostics.d.ts.map +1 -0
  5. package/dist/cache-diagnostics.js +15 -0
  6. package/dist/cache-diagnostics.js.map +1 -0
  7. package/dist/client.d.ts +138 -0
  8. package/dist/client.d.ts.map +1 -0
  9. package/dist/client.js +1855 -0
  10. package/dist/client.js.map +1 -0
  11. package/dist/config.d.ts +17 -0
  12. package/dist/config.d.ts.map +1 -0
  13. package/dist/config.js +375 -0
  14. package/dist/config.js.map +1 -0
  15. package/dist/content_capture.d.ts +34 -0
  16. package/dist/content_capture.d.ts.map +1 -0
  17. package/dist/content_capture.js +121 -0
  18. package/dist/content_capture.js.map +1 -0
  19. package/dist/context.d.ts +11 -0
  20. package/dist/context.d.ts.map +1 -0
  21. package/dist/context.js +80 -0
  22. package/dist/context.js.map +1 -0
  23. package/dist/core.d.ts +14 -0
  24. package/dist/core.d.ts.map +1 -0
  25. package/dist/core.js +13 -0
  26. package/dist/core.js.map +1 -0
  27. package/dist/exporters/default.d.ts +3 -0
  28. package/dist/exporters/default.d.ts.map +1 -0
  29. package/dist/exporters/default.js +77 -0
  30. package/dist/exporters/default.js.map +1 -0
  31. package/dist/exporters/grpc.d.ts +15 -0
  32. package/dist/exporters/grpc.d.ts.map +1 -0
  33. package/dist/exporters/grpc.js +401 -0
  34. package/dist/exporters/grpc.js.map +1 -0
  35. package/dist/exporters/http.d.ts +10 -0
  36. package/dist/exporters/http.d.ts.map +1 -0
  37. package/dist/exporters/http.js +295 -0
  38. package/dist/exporters/http.js.map +1 -0
  39. package/dist/hooks.d.ts +33 -0
  40. package/dist/hooks.d.ts.map +1 -0
  41. package/dist/hooks.js +464 -0
  42. package/dist/hooks.js.map +1 -0
  43. package/dist/redaction.d.ts +16 -0
  44. package/dist/redaction.d.ts.map +1 -0
  45. package/dist/redaction.js +155 -0
  46. package/dist/redaction.js.map +1 -0
  47. package/dist/types.d.ts +597 -0
  48. package/dist/types.d.ts.map +1 -0
  49. package/dist/types.js +2 -0
  50. package/dist/types.js.map +1 -0
  51. package/dist/utils.d.ts +26 -0
  52. package/dist/utils.d.ts.map +1 -0
  53. package/dist/utils.js +355 -0
  54. package/dist/utils.js.map +1 -0
  55. package/dist/version.d.ts +8 -0
  56. package/dist/version.d.ts.map +1 -0
  57. package/dist/version.js +14 -0
  58. package/dist/version.js.map +1 -0
  59. package/package.json +46 -8
  60. package/proto/sigil/v1/generation_ingest.proto +187 -0
  61. package/index.js +0 -1
package/dist/utils.js ADDED
@@ -0,0 +1,355 @@
1
+ const textEncoder = new TextEncoder();
2
+ // Returns "sha256:<hex>" of the trimmed input, or undefined when the trimmed
3
+ // input is empty (so the proto field stays absent on the wire).
4
+ export function canonicalEffectiveVersion(value) {
5
+ if (value === undefined) {
6
+ return undefined;
7
+ }
8
+ const trimmed = value.trim();
9
+ if (trimmed.length === 0) {
10
+ return undefined;
11
+ }
12
+ return `sha256:${sha256Hex(trimmed)}`;
13
+ }
14
+ export function encodedSizeBytes(value) {
15
+ return textEncoder.encode(JSON.stringify(value)).byteLength;
16
+ }
17
+ export function defaultOperationNameForMode(mode) {
18
+ return mode === 'STREAM' ? 'streamText' : 'generateText';
19
+ }
20
+ export function validateGeneration(generation) {
21
+ if (generation.id.trim().length === 0) {
22
+ return new Error('generation id is required');
23
+ }
24
+ if (generation.mode !== 'SYNC' && generation.mode !== 'STREAM') {
25
+ return new Error('generation.mode must be one of SYNC|STREAM');
26
+ }
27
+ if (generation.model.provider.trim().length === 0) {
28
+ return new Error('generation model provider is required');
29
+ }
30
+ if (generation.model.name.trim().length === 0) {
31
+ return new Error('generation model name is required');
32
+ }
33
+ for (let index = 0; index < (generation.input ?? []).length; index++) {
34
+ const error = validateMessage('generation.input', index, generation.input?.[index]);
35
+ if (error !== undefined) {
36
+ return error;
37
+ }
38
+ }
39
+ for (let index = 0; index < (generation.output ?? []).length; index++) {
40
+ const error = validateMessage('generation.output', index, generation.output?.[index]);
41
+ if (error !== undefined) {
42
+ return error;
43
+ }
44
+ }
45
+ for (let index = 0; index < (generation.tools ?? []).length; index++) {
46
+ const tool = generation.tools?.[index];
47
+ if (tool === undefined || tool.name.trim().length === 0) {
48
+ return new Error(`generation.tools[${index}].name is required`);
49
+ }
50
+ }
51
+ for (let index = 0; index < (generation.artifacts ?? []).length; index++) {
52
+ const error = validateArtifact(index, generation.artifacts?.[index]);
53
+ if (error !== undefined) {
54
+ return error;
55
+ }
56
+ }
57
+ if (generation.completedAt.getTime() < generation.startedAt.getTime()) {
58
+ return new Error('generation completedAt must not be earlier than startedAt');
59
+ }
60
+ return undefined;
61
+ }
62
+ export function validateToolExecution(toolExecution) {
63
+ if (toolExecution.toolName.trim().length === 0) {
64
+ return new Error('tool execution name is required');
65
+ }
66
+ if (toolExecution.completedAt.getTime() < toolExecution.startedAt.getTime()) {
67
+ return new Error('tool execution completedAt must not be earlier than startedAt');
68
+ }
69
+ return undefined;
70
+ }
71
+ export function validateEmbeddingStart(start) {
72
+ if (start.model.provider.trim().length === 0) {
73
+ return new Error('embedding.model.provider is required');
74
+ }
75
+ if (start.model.name.trim().length === 0) {
76
+ return new Error('embedding.model.name is required');
77
+ }
78
+ if (start.dimensions !== undefined && start.dimensions <= 0) {
79
+ return new Error('embedding.dimensions must be > 0');
80
+ }
81
+ if (start.encodingFormat !== undefined && start.encodingFormat.trim().length === 0) {
82
+ return new Error('embedding.encoding_format must not be blank');
83
+ }
84
+ return undefined;
85
+ }
86
+ export function validateEmbeddingResult(result) {
87
+ if (result.inputCount < 0) {
88
+ return new Error('embedding.input_count must be >= 0');
89
+ }
90
+ if (result.inputTokens !== undefined && result.inputTokens < 0) {
91
+ return new Error('embedding.input_tokens must be >= 0');
92
+ }
93
+ if (result.dimensions !== undefined && result.dimensions <= 0) {
94
+ return new Error('embedding.dimensions must be > 0');
95
+ }
96
+ return undefined;
97
+ }
98
+ export function asError(value) {
99
+ if (value instanceof Error) {
100
+ return value;
101
+ }
102
+ return new Error(String(value));
103
+ }
104
+ export function isRecord(value) {
105
+ return typeof value === 'object' && value !== null;
106
+ }
107
+ export function maybeUnref(timer) {
108
+ if (typeof timer === 'object' && timer !== null && 'unref' in timer) {
109
+ const maybeTimer = timer;
110
+ maybeTimer.unref?.();
111
+ }
112
+ }
113
+ export function defaultSleep(durationMs) {
114
+ return new Promise((resolve) => {
115
+ setTimeout(resolve, durationMs);
116
+ });
117
+ }
118
+ function sha256Hex(input) {
119
+ const nodeCrypto = resolveNodeCrypto();
120
+ if (nodeCrypto === undefined) {
121
+ throw new Error('sha256 hashing is unavailable in this JavaScript runtime');
122
+ }
123
+ return nodeCrypto.createHash('sha256').update(input).digest('hex');
124
+ }
125
+ function resolveNodeCrypto() {
126
+ const processWithBuiltins = globalThis.process;
127
+ const module = processWithBuiltins?.getBuiltinModule?.('crypto');
128
+ return typeof module?.createHash === 'function' ? module : undefined;
129
+ }
130
+ export function cloneGeneration(generation) {
131
+ return {
132
+ ...generation,
133
+ model: cloneModelRef(generation.model),
134
+ input: generation.input?.map(cloneMessage),
135
+ output: generation.output?.map(cloneMessage),
136
+ tools: generation.tools?.map(cloneToolDefinition),
137
+ usage: generation.usage ? { ...generation.usage } : undefined,
138
+ startedAt: new Date(generation.startedAt),
139
+ completedAt: new Date(generation.completedAt),
140
+ tags: generation.tags ? { ...generation.tags } : undefined,
141
+ metadata: generation.metadata ? { ...generation.metadata } : undefined,
142
+ artifacts: generation.artifacts === null ? null : generation.artifacts?.map(cloneArtifact),
143
+ };
144
+ }
145
+ export function cloneGenerationResult(result) {
146
+ return {
147
+ ...result,
148
+ input: result.input?.map(cloneMessage),
149
+ output: result.output?.map(cloneMessage),
150
+ tools: result.tools?.map(cloneToolDefinition),
151
+ usage: result.usage ? { ...result.usage } : undefined,
152
+ completedAt: result.completedAt ? new Date(result.completedAt) : undefined,
153
+ tags: result.tags ? { ...result.tags } : undefined,
154
+ metadata: result.metadata ? { ...result.metadata } : undefined,
155
+ artifacts: result.artifacts?.map(cloneArtifact),
156
+ };
157
+ }
158
+ export function cloneGenerationStart(start) {
159
+ return {
160
+ ...start,
161
+ model: cloneModelRef(start.model),
162
+ tools: start.tools?.map(cloneToolDefinition),
163
+ tags: start.tags ? { ...start.tags } : undefined,
164
+ metadata: start.metadata ? { ...start.metadata } : undefined,
165
+ startedAt: start.startedAt ? new Date(start.startedAt) : undefined,
166
+ };
167
+ }
168
+ export function cloneEmbeddingStart(start) {
169
+ return {
170
+ ...start,
171
+ model: cloneModelRef(start.model),
172
+ tags: start.tags ? { ...start.tags } : undefined,
173
+ metadata: start.metadata ? { ...start.metadata } : undefined,
174
+ startedAt: start.startedAt ? new Date(start.startedAt) : undefined,
175
+ };
176
+ }
177
+ export function cloneEmbeddingResult(result) {
178
+ return {
179
+ ...result,
180
+ inputTexts: result.inputTexts ? [...result.inputTexts] : undefined,
181
+ };
182
+ }
183
+ export function cloneToolExecution(toolExecution) {
184
+ return {
185
+ ...toolExecution,
186
+ startedAt: new Date(toolExecution.startedAt),
187
+ completedAt: new Date(toolExecution.completedAt),
188
+ };
189
+ }
190
+ export function cloneToolExecutionStart(start) {
191
+ return {
192
+ ...start,
193
+ startedAt: start.startedAt ? new Date(start.startedAt) : undefined,
194
+ };
195
+ }
196
+ export function cloneToolExecutionResult(result) {
197
+ return {
198
+ ...result,
199
+ completedAt: result.completedAt ? new Date(result.completedAt) : undefined,
200
+ };
201
+ }
202
+ export function cloneModelRef(model) {
203
+ return { ...model };
204
+ }
205
+ export function cloneMessage(message) {
206
+ return {
207
+ ...message,
208
+ parts: message.parts?.map(cloneMessagePart),
209
+ };
210
+ }
211
+ export function cloneToolDefinition(tool) {
212
+ return { ...tool };
213
+ }
214
+ export function cloneArtifact(artifact) {
215
+ return { ...artifact };
216
+ }
217
+ export function newLocalID(prefix) {
218
+ const now = Date.now().toString(36);
219
+ const rand = Math.random().toString(36).slice(2, 10);
220
+ return `${prefix}-${now}-${rand}`;
221
+ }
222
+ function cloneMessagePart(part) {
223
+ switch (part.type) {
224
+ case 'text':
225
+ return {
226
+ type: 'text',
227
+ text: part.text,
228
+ metadata: part.metadata ? { ...part.metadata } : undefined,
229
+ };
230
+ case 'thinking':
231
+ return {
232
+ type: 'thinking',
233
+ thinking: part.thinking,
234
+ metadata: part.metadata ? { ...part.metadata } : undefined,
235
+ };
236
+ case 'tool_call':
237
+ return {
238
+ type: 'tool_call',
239
+ toolCall: { ...part.toolCall },
240
+ metadata: part.metadata ? { ...part.metadata } : undefined,
241
+ };
242
+ case 'tool_result':
243
+ return {
244
+ type: 'tool_result',
245
+ toolResult: { ...part.toolResult },
246
+ metadata: part.metadata ? { ...part.metadata } : undefined,
247
+ };
248
+ }
249
+ }
250
+ function validateMessage(path, index, message) {
251
+ if (message === undefined) {
252
+ return new Error(`${path}[${index}] is required`);
253
+ }
254
+ const role = normalizeRole(message.role);
255
+ if (role !== 'user' && role !== 'assistant' && role !== 'tool') {
256
+ return new Error(`${path}[${index}].role must be one of user|assistant|tool`);
257
+ }
258
+ const hasContent = typeof message.content === 'string' && message.content.trim().length > 0;
259
+ const parts = message.parts ?? [];
260
+ if (parts.length === 0 && !hasContent) {
261
+ return new Error(`${path}[${index}].parts must not be empty`);
262
+ }
263
+ for (let partIndex = 0; partIndex < parts.length; partIndex++) {
264
+ const part = parts[partIndex];
265
+ if (part === undefined) {
266
+ return new Error(`${path}[${index}].parts[${partIndex}] is required`);
267
+ }
268
+ const error = validatePart(path, index, partIndex, role, part);
269
+ if (error !== undefined) {
270
+ return error;
271
+ }
272
+ }
273
+ return undefined;
274
+ }
275
+ function validatePart(path, messageIndex, partIndex, role, part) {
276
+ const payloadFieldCount = payloadFieldsCount(part);
277
+ if (payloadFieldCount !== 1) {
278
+ return new Error(`${path}[${messageIndex}].parts[${partIndex}] must set exactly one payload field`);
279
+ }
280
+ switch (part.type) {
281
+ case 'text':
282
+ if (part.text.trim().length === 0) {
283
+ return new Error(`${path}[${messageIndex}].parts[${partIndex}].text is required`);
284
+ }
285
+ return undefined;
286
+ case 'thinking':
287
+ if (role !== 'assistant') {
288
+ return new Error(`${path}[${messageIndex}].parts[${partIndex}].thinking only allowed for assistant role`);
289
+ }
290
+ if (part.thinking.trim().length === 0) {
291
+ return new Error(`${path}[${messageIndex}].parts[${partIndex}].thinking is required`);
292
+ }
293
+ return undefined;
294
+ case 'tool_call':
295
+ if (role !== 'assistant') {
296
+ return new Error(`${path}[${messageIndex}].parts[${partIndex}].tool_call only allowed for assistant role`);
297
+ }
298
+ if (part.toolCall.name.trim().length === 0) {
299
+ return new Error(`${path}[${messageIndex}].parts[${partIndex}].tool_call.name is required`);
300
+ }
301
+ return undefined;
302
+ case 'tool_result':
303
+ if (role !== 'tool') {
304
+ return new Error(`${path}[${messageIndex}].parts[${partIndex}].tool_result only allowed for tool role`);
305
+ }
306
+ return undefined;
307
+ default:
308
+ return new Error(`${path}[${messageIndex}].parts[${partIndex}].kind is invalid`);
309
+ }
310
+ }
311
+ function payloadFieldsCount(part) {
312
+ let count = 0;
313
+ if ('text' in part && typeof part.text === 'string' && part.text.trim().length > 0) {
314
+ count++;
315
+ }
316
+ if ('thinking' in part && typeof part.thinking === 'string' && part.thinking.trim().length > 0) {
317
+ count++;
318
+ }
319
+ if ('toolCall' in part && isRecord(part.toolCall)) {
320
+ count++;
321
+ }
322
+ if ('toolResult' in part && isRecord(part.toolResult)) {
323
+ count++;
324
+ }
325
+ return count;
326
+ }
327
+ function validateArtifact(index, artifact) {
328
+ if (artifact === undefined) {
329
+ return new Error(`generation.artifacts[${index}] is required`);
330
+ }
331
+ const kind = artifact.type.trim().toLowerCase();
332
+ switch (kind) {
333
+ case 'request':
334
+ case 'response':
335
+ case 'tools':
336
+ case 'provider_event':
337
+ break;
338
+ default:
339
+ return new Error(`generation.artifacts[${index}].kind is invalid`);
340
+ }
341
+ const payload = artifact.payload?.trim() ?? '';
342
+ const recordID = artifact.recordId?.trim() ?? '';
343
+ if (payload.length === 0 && recordID.length === 0) {
344
+ return new Error(`generation.artifacts[${index}] must provide payload or record_id`);
345
+ }
346
+ return undefined;
347
+ }
348
+ function normalizeRole(role) {
349
+ const normalized = role.trim().toLowerCase();
350
+ if (normalized === 'user' || normalized === 'assistant' || normalized === 'tool') {
351
+ return normalized;
352
+ }
353
+ return '';
354
+ }
355
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../js/src/utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,8 @@
1
+ export declare const SDK_VERSION = "0.6.0";
2
+ /**
3
+ * Returns the SDK's default generation-export User-Agent product token,
4
+ * `sigil-sdk-js/<SDK_VERSION>`. Coding-agent plugins prepend their own token
5
+ * (most-specific first).
6
+ */
7
+ export declare function userAgent(): string;
8
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../js/src/version.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,WAAW,UAAU,CAAC;AAInC;;;;GAIG;AACH,wBAAgB,SAAS,IAAI,MAAM,CAElC"}
@@ -0,0 +1,14 @@
1
+ // SDK_VERSION is the released version of the Sigil JS SDK. It is stamped into
2
+ // the default generation-export User-Agent (see userAgent). Keep in sync with
3
+ // package.json on release.
4
+ export const SDK_VERSION = '0.6.0';
5
+ const SDK_USER_AGENT_PRODUCT = 'sigil-sdk-js';
6
+ /**
7
+ * Returns the SDK's default generation-export User-Agent product token,
8
+ * `sigil-sdk-js/<SDK_VERSION>`. Coding-agent plugins prepend their own token
9
+ * (most-specific first).
10
+ */
11
+ export function userAgent() {
12
+ return `${SDK_USER_AGENT_PRODUCT}/${SDK_VERSION}`;
13
+ }
14
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../js/src/version.ts"],"names":[],"mappings":"AAAA,8EAA8E;AAC9E,8EAA8E;AAC9E,2BAA2B;AAC3B,MAAM,CAAC,MAAM,WAAW,GAAG,OAAO,CAAC;AAEnC,MAAM,sBAAsB,GAAG,cAAc,CAAC;AAE9C;;;;GAIG;AACH,MAAM,UAAU,SAAS;IACvB,OAAO,GAAG,sBAAsB,IAAI,WAAW,EAAE,CAAC;AACpD,CAAC"}
package/package.json CHANGED
@@ -1,16 +1,54 @@
1
1
  {
2
2
  "name": "@grafana/sigil-sdk-js-core",
3
- "version": "0.0.0",
3
+ "version": "0.7.0",
4
4
  "license": "Apache-2.0",
5
5
  "repository": {
6
6
  "type": "git",
7
- "url": "git+https://github.com/grafana/sigil-sdk.git"
7
+ "url": "https://github.com/grafana/sigil-sdk.git",
8
+ "directory": "js-core"
8
9
  },
9
10
  "type": "module",
10
- "main": "./index.js",
11
+ "main": "./dist/core.js",
12
+ "types": "./dist/core.d.ts",
13
+ "exports": {
14
+ ".": {
15
+ "types": "./dist/core.d.ts",
16
+ "import": "./dist/core.js"
17
+ }
18
+ },
11
19
  "files": [
12
- "index.js",
13
- "README.md",
14
- "LICENSE"
15
- ]
16
- }
20
+ "dist",
21
+ "proto",
22
+ "LICENSE",
23
+ "README.md"
24
+ ],
25
+ "sideEffects": false,
26
+ "dependencies": {
27
+ "@opentelemetry/api": "^1.9.0"
28
+ },
29
+ "peerDependencies": {
30
+ "@grpc/grpc-js": "^1.14.1",
31
+ "@grpc/proto-loader": "^0.8.0"
32
+ },
33
+ "peerDependenciesMeta": {
34
+ "@grpc/grpc-js": {
35
+ "optional": true
36
+ },
37
+ "@grpc/proto-loader": {
38
+ "optional": true
39
+ }
40
+ },
41
+ "devDependencies": {
42
+ "@grpc/grpc-js": "1.14.3",
43
+ "@grpc/proto-loader": "0.8.0",
44
+ "@types/node": "24.12.0",
45
+ "typescript": "6.0.2"
46
+ },
47
+ "scripts": {
48
+ "clean": "find dist -type f -delete 2>/dev/null || true && find dist -type d -empty -delete 2>/dev/null || true",
49
+ "sync-proto": "node ../js/scripts/sync-proto.mjs proto",
50
+ "build": "pnpm run sync-proto && pnpm run clean && tsc --project tsconfig.build.json",
51
+ "typecheck": "tsc --project tsconfig.json --noEmit",
52
+ "lint": "cd ../js && biome check src/core.ts src/cache-diagnostics.ts src/client.ts src/config.ts src/content_capture.ts src/context.ts src/exporters/default.ts src/exporters/grpc.ts src/exporters/http.ts src/hooks.ts src/redaction.ts src/types.ts src/utils.ts"
53
+ }
54
+ }
@@ -0,0 +1,187 @@
1
+ syntax = "proto3";
2
+
3
+ package sigil.v1;
4
+
5
+ option go_package = "github.com/grafana/sigil-sdk/go/proto/sigil/v1;sigilv1";
6
+
7
+ import "google/protobuf/struct.proto";
8
+ import "google/protobuf/timestamp.proto";
9
+
10
+ service GenerationIngestService {
11
+ rpc ExportGenerations(ExportGenerationsRequest)
12
+ returns (ExportGenerationsResponse);
13
+ }
14
+
15
+ message ExportGenerationsRequest { repeated Generation generations = 1; }
16
+
17
+ message ExportGenerationsResponse {
18
+ repeated ExportGenerationResult results = 1;
19
+ }
20
+
21
+ message ExportGenerationResult {
22
+ string generation_id = 1;
23
+ bool accepted = 2;
24
+ string error = 3;
25
+ }
26
+
27
+ enum GenerationMode {
28
+ GENERATION_MODE_UNSPECIFIED = 0;
29
+ GENERATION_MODE_SYNC = 1;
30
+ GENERATION_MODE_STREAM = 2;
31
+ }
32
+
33
+ message ModelRef {
34
+ string provider = 1;
35
+ string name = 2;
36
+ }
37
+
38
+ enum MessageRole {
39
+ MESSAGE_ROLE_UNSPECIFIED = 0;
40
+ MESSAGE_ROLE_USER = 1;
41
+ MESSAGE_ROLE_ASSISTANT = 2;
42
+ MESSAGE_ROLE_TOOL = 3;
43
+ }
44
+
45
+ message PartMetadata { string provider_type = 1; }
46
+
47
+ message ToolCall {
48
+ string id = 1;
49
+ string name = 2;
50
+ bytes input_json = 3;
51
+ }
52
+
53
+ message ToolResult {
54
+ string tool_call_id = 1;
55
+ string name = 2;
56
+ string content = 3;
57
+ bytes content_json = 4;
58
+ bool is_error = 5;
59
+ }
60
+
61
+ message Part {
62
+ PartMetadata metadata = 1;
63
+
64
+ oneof payload {
65
+ string text = 2;
66
+ string thinking = 3;
67
+ ToolCall tool_call = 4;
68
+ ToolResult tool_result = 5;
69
+ }
70
+ }
71
+
72
+ message Message {
73
+ MessageRole role = 1;
74
+ string name = 2;
75
+ repeated Part parts = 3;
76
+ }
77
+
78
+ message ToolDefinition {
79
+ string name = 1;
80
+ string description = 2;
81
+ string type = 3;
82
+ bytes input_schema_json = 4;
83
+ bool deferred = 5;
84
+ }
85
+
86
+ message TokenUsage {
87
+ int64 input_tokens = 1;
88
+ int64 output_tokens = 2;
89
+ int64 total_tokens = 3;
90
+ int64 cache_read_input_tokens = 4;
91
+ int64 cache_write_input_tokens = 5;
92
+ int64 reasoning_tokens = 6;
93
+ reserved 7;
94
+ reserved "cache_creation_input_tokens";
95
+ }
96
+
97
+ enum ArtifactKind {
98
+ ARTIFACT_KIND_UNSPECIFIED = 0;
99
+ ARTIFACT_KIND_REQUEST = 1;
100
+ ARTIFACT_KIND_RESPONSE = 2;
101
+ ARTIFACT_KIND_TOOLS = 3;
102
+ ARTIFACT_KIND_PROVIDER_EVENT = 4;
103
+ }
104
+
105
+ message Artifact {
106
+ ArtifactKind kind = 1;
107
+ string name = 2;
108
+ string content_type = 3;
109
+ bytes payload = 4;
110
+ string record_id = 5;
111
+ string uri = 6;
112
+ }
113
+
114
+ message Generation {
115
+ string id = 1;
116
+ string conversation_id = 2;
117
+ string operation_name = 3;
118
+ GenerationMode mode = 4;
119
+ string trace_id = 5;
120
+ string span_id = 6;
121
+ ModelRef model = 7;
122
+ string response_id = 8;
123
+ string response_model = 9;
124
+ string system_prompt = 10;
125
+ repeated Message input = 11;
126
+ repeated Message output = 12;
127
+ repeated ToolDefinition tools = 13;
128
+ TokenUsage usage = 14;
129
+ string stop_reason = 15;
130
+ google.protobuf.Timestamp started_at = 16;
131
+ google.protobuf.Timestamp completed_at = 17;
132
+ map<string, string> tags = 18;
133
+ google.protobuf.Struct metadata = 19;
134
+ repeated Artifact raw_artifacts = 20;
135
+ string call_error = 21;
136
+ string agent_name = 22;
137
+ string agent_version = 23;
138
+ optional int64 max_tokens = 24;
139
+ optional double temperature = 25;
140
+ optional double top_p = 26;
141
+ optional string tool_choice = 27;
142
+ optional bool thinking_enabled = 28;
143
+ repeated string parent_generation_ids = 29;
144
+ // Optional SDK-supplied catalog key. Must match `^sha256:[0-9a-f]{64}$`
145
+ // when set; ingest rejects any other shape. Sigil falls back to a
146
+ // server-computed sha256 of (system_prompt + sorted tools) when omitted.
147
+ optional string effective_version = 30;
148
+ }
149
+
150
+ // --- Workflow Step ingest (separate schema from Generation) ---
151
+
152
+ service WorkflowStepIngestService {
153
+ rpc ExportWorkflowSteps(ExportWorkflowStepsRequest)
154
+ returns (ExportWorkflowStepsResponse);
155
+ }
156
+
157
+ message ExportWorkflowStepsRequest { repeated WorkflowStep workflow_steps = 1; }
158
+
159
+ message ExportWorkflowStepsResponse {
160
+ repeated ExportWorkflowStepResult results = 1;
161
+ }
162
+
163
+ message ExportWorkflowStepResult {
164
+ string step_id = 1;
165
+ bool accepted = 2;
166
+ string error = 3;
167
+ }
168
+
169
+ message WorkflowStep {
170
+ string id = 1;
171
+ string conversation_id = 2;
172
+ string step_name = 3;
173
+ string framework = 4;
174
+ google.protobuf.Timestamp started_at = 5;
175
+ google.protobuf.Timestamp completed_at = 6;
176
+ google.protobuf.Struct input_state = 7;
177
+ google.protobuf.Struct output_state = 8;
178
+ string error = 9;
179
+ map<string, string> tags = 10;
180
+ repeated string linked_generation_ids = 11;
181
+ repeated string parent_step_ids = 12;
182
+ string agent_name = 13;
183
+ string agent_version = 14;
184
+ string trace_id = 15;
185
+ string span_id = 16;
186
+ google.protobuf.Struct metadata = 17;
187
+ }
package/index.js DELETED
@@ -1 +0,0 @@
1
- export {};