@sentry/warden-service-api 0.46.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.
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.d.ts","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
package/dist/api.js ADDED
@@ -0,0 +1,188 @@
1
+ import { z } from 'zod';
2
+ import { DataProfileSchema, FindingCountsSchema, RepositoryIdentitySchema, SERVICE_PROTOCOL_VERSION, UsageLineItemSchema, } from './protocol.js';
3
+ const IdSchema = z.string().trim().min(1).max(128);
4
+ const TimestampSchema = z.string().datetime();
5
+ export const ApiErrorSchema = z.object({
6
+ error: z.object({
7
+ code: z.string().trim().min(1).max(128),
8
+ message: z.string().trim().min(1).max(512),
9
+ }).strict(),
10
+ }).strict();
11
+ export const IngestRunResponseSchema = z.object({
12
+ protocolVersion: z.literal(SERVICE_PROTOCOL_VERSION),
13
+ runId: IdSchema,
14
+ checksum: z.string().regex(/^[a-f0-9]{64}$/),
15
+ created: z.boolean(),
16
+ }).strict();
17
+ export const RunSummarySchema = z.object({
18
+ id: IdSchema,
19
+ clientRunId: IdSchema,
20
+ source: z.enum(['cli', 'action', 'sdk', 'replay']),
21
+ dataProfile: DataProfileSchema,
22
+ repository: RepositoryIdentitySchema,
23
+ startedAt: TimestampSchema,
24
+ completedAt: TimestampSchema,
25
+ outcome: z.enum(['success', 'failure', 'cancelled', 'skipped']),
26
+ durationMs: z.number().finite().nonnegative(),
27
+ findingCounts: FindingCountsSchema,
28
+ costUsd: z.number().finite().nonnegative().nullable(),
29
+ traceId: z.string().max(128).optional(),
30
+ }).strict();
31
+ export const RunListResponseSchema = z.object({
32
+ items: z.array(RunSummarySchema),
33
+ nextCursor: z.string().trim().min(1).max(512).optional(),
34
+ }).strict();
35
+ export const FindingOutcomeSchema = z.enum([
36
+ 'posted',
37
+ 'deduped',
38
+ 'skipped',
39
+ 'resolved',
40
+ 'failed',
41
+ 'rejected',
42
+ 'revised',
43
+ ]);
44
+ export const FindingFeedItemSchema = z.object({
45
+ id: IdSchema,
46
+ runId: IdSchema,
47
+ clientRunId: IdSchema,
48
+ repository: RepositoryIdentitySchema,
49
+ skill: z.string().trim().min(1).max(512),
50
+ severity: z.enum(['high', 'medium', 'low']),
51
+ confidence: z.enum(['high', 'medium', 'low']).optional(),
52
+ title: z.string().trim().min(1).max(512),
53
+ description: z.string().trim().min(1).max(8_000),
54
+ location: z.object({
55
+ path: z.string().trim().min(1).max(1_024),
56
+ startLine: z.number().int().positive(),
57
+ endLine: z.number().int().positive().optional(),
58
+ }).strict().optional(),
59
+ outcome: FindingOutcomeSchema.nullable(),
60
+ observedAt: TimestampSchema.nullable(),
61
+ completedAt: TimestampSchema,
62
+ }).strict();
63
+ export const FindingListResponseSchema = z.object({
64
+ items: z.array(FindingFeedItemSchema),
65
+ nextCursor: z.string().trim().min(1).max(512).optional(),
66
+ }).strict();
67
+ export const RunDetailResponseSchema = z.object({
68
+ run: RunSummarySchema,
69
+ skills: z.array(z.object({
70
+ id: IdSchema,
71
+ executionId: IdSchema,
72
+ skill: z.string().min(1).max(512),
73
+ status: z.enum(['success', 'failure', 'cancelled', 'skipped']),
74
+ model: z.string().max(255).optional(),
75
+ runtime: z.string().max(128).optional(),
76
+ durationMs: z.number().finite().nonnegative().optional(),
77
+ findingCounts: FindingCountsSchema,
78
+ usage: z.array(UsageLineItemSchema),
79
+ }).strict()),
80
+ }).strict();
81
+ export const CostAggregateResponseSchema = z.object({
82
+ groups: z.array(z.object({
83
+ dimensions: z.record(z.string(), z.string()),
84
+ runs: z.number().int().nonnegative(),
85
+ inputTokens: z.number().int().nonnegative(),
86
+ outputTokens: z.number().int().nonnegative(),
87
+ costUsd: z.number().finite().nonnegative().nullable(),
88
+ }).strict()),
89
+ totals: z.object({
90
+ runs: z.number().int().nonnegative(),
91
+ inputTokens: z.number().int().nonnegative(),
92
+ outputTokens: z.number().int().nonnegative(),
93
+ costUsd: z.number().finite().nonnegative().nullable(),
94
+ }).strict(),
95
+ }).strict();
96
+ export const RepositorySummarySchema = z.object({
97
+ id: IdSchema,
98
+ repository: RepositoryIdentitySchema,
99
+ runs: z.number().int().nonnegative(),
100
+ findings: z.number().int().nonnegative(),
101
+ costUsd: z.number().finite().nonnegative().nullable(),
102
+ lastRunAt: TimestampSchema.nullable(),
103
+ }).strict();
104
+ export const RepositoryListResponseSchema = z.object({
105
+ items: z.array(RepositorySummarySchema),
106
+ }).strict();
107
+ export const SkillSummarySchema = z.object({
108
+ skill: z.string().trim().min(1).max(512),
109
+ executions: z.number().int().nonnegative(),
110
+ successful: z.number().int().nonnegative(),
111
+ failed: z.number().int().nonnegative(),
112
+ findings: z.number().int().nonnegative(),
113
+ costUsd: z.number().finite().nonnegative().nullable(),
114
+ }).strict();
115
+ export const SkillListResponseSchema = z.object({
116
+ items: z.array(SkillSummarySchema),
117
+ }).strict();
118
+ export const OutcomeSummaryResponseSchema = z.object({
119
+ totals: z.object({
120
+ runs: z.number().int().nonnegative(),
121
+ successful: z.number().int().nonnegative(),
122
+ failed: z.number().int().nonnegative(),
123
+ cancelled: z.number().int().nonnegative(),
124
+ skipped: z.number().int().nonnegative(),
125
+ findings: z.number().int().nonnegative(),
126
+ costUsd: z.number().finite().nonnegative().nullable(),
127
+ }).strict(),
128
+ }).strict();
129
+ export const MemoryKindSchema = z.enum(['convention', 'confirmed_pattern', 'false_positive', 'review_guidance']);
130
+ export const MemoryLifecycleSchema = z.enum(['candidate', 'active', 'superseded', 'archived', 'expired']);
131
+ export const MemoryRecordSchema = z.object({
132
+ id: IdSchema,
133
+ version: z.number().int().positive(),
134
+ repository: RepositoryIdentitySchema,
135
+ kind: MemoryKindSchema,
136
+ lifecycle: MemoryLifecycleSchema,
137
+ content: z.string().trim().min(1).max(4_000),
138
+ skill: z.string().trim().min(1).max(512).optional(),
139
+ language: z.string().trim().min(1).max(64).optional(),
140
+ pathFamily: z.string().trim().min(1).max(512).optional(),
141
+ createdAt: TimestampSchema,
142
+ observedAt: TimestampSchema,
143
+ expiresAt: TimestampSchema.optional(),
144
+ }).strict();
145
+ export const MemoryRecallRequestSchema = z.object({
146
+ protocolVersion: z.literal(SERVICE_PROTOCOL_VERSION),
147
+ clientRecallId: IdSchema,
148
+ repository: RepositoryIdentitySchema,
149
+ skills: z.array(z.string().trim().min(1).max(512)).max(100),
150
+ languages: z.array(z.string().trim().min(1).max(64)).max(32),
151
+ paths: z.array(z.string().trim().min(1).max(1_024)).max(500),
152
+ }).strict();
153
+ export const MemoryRecallResponseSchema = z.object({
154
+ protocolVersion: z.literal(SERVICE_PROTOCOL_VERSION),
155
+ clientRecallId: IdSchema,
156
+ memories: z.array(MemoryRecordSchema.pick({
157
+ id: true,
158
+ version: true,
159
+ kind: true,
160
+ content: true,
161
+ skill: true,
162
+ language: true,
163
+ pathFamily: true,
164
+ })).max(5),
165
+ }).strict();
166
+ export const MemoryListResponseSchema = z.object({
167
+ items: z.array(MemoryRecordSchema),
168
+ nextCursor: z.string().trim().min(1).max(512).optional(),
169
+ }).strict();
170
+ export const MemoryMutationResponseSchema = z.object({
171
+ memory: MemoryRecordSchema,
172
+ }).strict();
173
+ export const MemoryDetailResponseSchema = z.object({
174
+ memory: MemoryRecordSchema,
175
+ evidence: z.array(z.object({
176
+ kind: z.string().trim().min(1).max(128),
177
+ findingId: IdSchema.optional(),
178
+ observationId: IdSchema.optional(),
179
+ createdAt: TimestampSchema,
180
+ }).strict()),
181
+ lifecycle: z.array(z.object({
182
+ from: MemoryLifecycleSchema.optional(),
183
+ to: MemoryLifecycleSchema,
184
+ reason: z.string().trim().min(1).max(1_000).optional(),
185
+ createdAt: TimestampSchema,
186
+ }).strict()),
187
+ }).strict();
188
+ //# sourceMappingURL=api.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"api.js","sourceRoot":"","sources":["../src/api.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /** Serialize JSON-compatible data with stable object-key ordering. */
2
+ export declare function canonicalJson(value: unknown): string;
3
+ /** Return a lowercase SHA-256 checksum for JSON-compatible data. */
4
+ export declare function sha256Checksum(value: unknown): Promise<string>;
5
+ //# sourceMappingURL=checksum.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checksum.d.ts","sourceRoot":"","sources":["../src/checksum.ts"],"names":[],"mappings":"AAuBA,sEAAsE;AACtE,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAEpD;AAED,oEAAoE;AACpE,wBAAsB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,OAAO,CAAC,MAAM,CAAC,CAMpE"}
@@ -0,0 +1,37 @@
1
+ function canonicalize(value) {
2
+ if (value === null || typeof value === 'string' || typeof value === 'boolean') {
3
+ return value;
4
+ }
5
+ if (typeof value === 'number') {
6
+ if (!Number.isFinite(value))
7
+ throw new TypeError('Cannot checksum a non-finite number');
8
+ return value;
9
+ }
10
+ if (Array.isArray(value)) {
11
+ return value.map(canonicalize);
12
+ }
13
+ if (typeof value === 'object') {
14
+ const record = value;
15
+ const result = {};
16
+ for (const key of Object.keys(record).sort()) {
17
+ const entry = record[key];
18
+ if (entry !== undefined)
19
+ result[key] = canonicalize(entry);
20
+ }
21
+ return result;
22
+ }
23
+ throw new TypeError(`Cannot checksum value of type ${typeof value}`);
24
+ }
25
+ /** Serialize JSON-compatible data with stable object-key ordering. */
26
+ export function canonicalJson(value) {
27
+ return JSON.stringify(canonicalize(value));
28
+ }
29
+ /** Return a lowercase SHA-256 checksum for JSON-compatible data. */
30
+ export async function sha256Checksum(value) {
31
+ const bytes = new TextEncoder().encode(canonicalJson(value));
32
+ const digest = await globalThis.crypto.subtle.digest('SHA-256', bytes);
33
+ return [...new Uint8Array(digest)]
34
+ .map((byte) => byte.toString(16).padStart(2, '0'))
35
+ .join('');
36
+ }
37
+ //# sourceMappingURL=checksum.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"checksum.js","sourceRoot":"","sources":["../src/checksum.ts"],"names":[],"mappings":"AAAA,SAAS,YAAY,CAAC,KAAc;IAClC,IAAI,KAAK,KAAK,IAAI,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,OAAO,KAAK,KAAK,SAAS,EAAE,CAAC;QAC9E,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,KAAK,CAAC;YAAE,MAAM,IAAI,SAAS,CAAC,qCAAqC,CAAC,CAAC;QACxF,OAAO,KAAK,CAAC;IACf,CAAC;IACD,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,YAAY,CAAC,CAAC;IACjC,CAAC;IACD,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QAC9B,MAAM,MAAM,GAAG,KAAgC,CAAC;QAChD,MAAM,MAAM,GAA4B,EAAE,CAAC;QAC3C,KAAK,MAAM,GAAG,IAAI,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC;YAC7C,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,CAAC;YAC1B,IAAI,KAAK,KAAK,SAAS;gBAAE,MAAM,CAAC,GAAG,CAAC,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAC7D,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;IACD,MAAM,IAAI,SAAS,CAAC,iCAAiC,OAAO,KAAK,EAAE,CAAC,CAAC;AACvE,CAAC;AAED,sEAAsE;AACtE,MAAM,UAAU,aAAa,CAAC,KAAc;IAC1C,OAAO,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;AAC7C,CAAC;AAED,oEAAoE;AACpE,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,KAAc;IACjD,MAAM,KAAK,GAAG,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7D,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,SAAS,EAAE,KAAK,CAAC,CAAC;IACvE,OAAO,CAAC,GAAG,IAAI,UAAU,CAAC,MAAM,CAAC,CAAC;SAC/B,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;SACjD,IAAI,CAAC,EAAE,CAAC,CAAC;AACd,CAAC"}
@@ -0,0 +1,30 @@
1
+ import type { IngestRunResponse, MemoryRecallRequest, MemoryRecallResponse } from './api.js';
2
+ import type { RunEnvelopeV1 } from './protocol.js';
3
+ export type ServiceClientOperation = 'publish_run' | 'recall_memory';
4
+ export type ServiceClientErrorKind = 'network' | 'timeout' | 'http' | 'invalid_response';
5
+ export declare class ServiceClientError extends Error {
6
+ readonly operation: ServiceClientOperation;
7
+ readonly kind: ServiceClientErrorKind;
8
+ readonly status?: number;
9
+ readonly protocolVersion: 1;
10
+ readonly runId?: string;
11
+ constructor(args: {
12
+ operation: ServiceClientOperation;
13
+ kind: ServiceClientErrorKind;
14
+ status?: number;
15
+ runId?: string;
16
+ });
17
+ }
18
+ export interface WardenServiceClientOptions {
19
+ baseUrl: string;
20
+ token: string;
21
+ timeoutMs?: number;
22
+ fetch?: typeof globalThis.fetch;
23
+ }
24
+ /** Create the lightweight HTTP client used by Warden and replay tools. */
25
+ export declare function createWardenServiceClient(options: WardenServiceClientOptions): {
26
+ publishRun(envelopeInput: RunEnvelopeV1): Promise<IngestRunResponse>;
27
+ recallMemory(input: MemoryRecallRequest): Promise<MemoryRecallResponse>;
28
+ };
29
+ export type WardenServiceClient = ReturnType<typeof createWardenServiceClient>;
30
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAKA,OAAO,KAAK,EACV,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACrB,MAAM,UAAU,CAAC;AAQlB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,eAAe,CAAC;AAGnD,MAAM,MAAM,sBAAsB,GAAG,aAAa,GAAG,eAAe,CAAC;AACrE,MAAM,MAAM,sBAAsB,GAAG,SAAS,GAAG,SAAS,GAAG,MAAM,GAAG,kBAAkB,CAAC;AAEzF,qBAAa,kBAAmB,SAAQ,KAAK;IAC3C,QAAQ,CAAC,SAAS,EAAE,sBAAsB,CAAC;IAC3C,QAAQ,CAAC,IAAI,EAAE,sBAAsB,CAAC;IACtC,QAAQ,CAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IACzB,QAAQ,CAAC,eAAe,IAA4B;IACpD,QAAQ,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC;gBAEZ,IAAI,EAAE;QAChB,SAAS,EAAE,sBAAsB,CAAC;QAClC,IAAI,EAAE,sBAAsB,CAAC;QAC7B,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;KAChB;CASF;AAED,MAAM,WAAW,0BAA0B;IACzC,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,OAAO,UAAU,CAAC,KAAK,CAAC;CACjC;AAYD,0EAA0E;AAC1E,wBAAgB,yBAAyB,CAAC,OAAO,EAAE,0BAA0B;8BAgGzC,aAAa,GAAG,OAAO,CAAC,iBAAiB,CAAC;wBAahD,mBAAmB,GAAG,OAAO,CAAC,oBAAoB,CAAC;EAchF;AAED,MAAM,MAAM,mBAAmB,GAAG,UAAU,CAAC,OAAO,yBAAyB,CAAC,CAAC"}
package/dist/client.js ADDED
@@ -0,0 +1,145 @@
1
+ import { IngestRunResponseSchema, MemoryRecallResponseSchema, } from './api.js';
2
+ import { MemoryRecallRequestSchema, } from './api.js';
3
+ import { RunEnvelopeV1Schema, SERVICE_PROTOCOL_VERSION, } from './protocol.js';
4
+ import { sha256Checksum } from './checksum.js';
5
+ export class ServiceClientError extends Error {
6
+ operation;
7
+ kind;
8
+ status;
9
+ protocolVersion = SERVICE_PROTOCOL_VERSION;
10
+ runId;
11
+ constructor(args) {
12
+ const statusSuffix = args.status === undefined ? '' : ` (${args.status})`;
13
+ super(`Warden service ${args.operation} failed: ${args.kind}${statusSuffix}`);
14
+ this.name = 'ServiceClientError';
15
+ this.operation = args.operation;
16
+ this.kind = args.kind;
17
+ this.status = args.status;
18
+ this.runId = args.runId;
19
+ }
20
+ }
21
+ const RETRYABLE_STATUSES = new Set([429, 500, 502, 503, 504]);
22
+ function serviceUrl(baseUrl, path) {
23
+ return new URL(path, baseUrl.endsWith('/') ? baseUrl : `${baseUrl}/`).toString();
24
+ }
25
+ function isAbortError(error) {
26
+ return error instanceof Error && error.name === 'AbortError';
27
+ }
28
+ /** Create the lightweight HTTP client used by Warden and replay tools. */
29
+ export function createWardenServiceClient(options) {
30
+ const baseUrl = new URL(options.baseUrl).toString();
31
+ const token = options.token.trim();
32
+ if (!token)
33
+ throw new TypeError('Warden service token is required');
34
+ const timeoutMs = options.timeoutMs ?? 2_000;
35
+ if (!Number.isSafeInteger(timeoutMs) || timeoutMs <= 0) {
36
+ throw new TypeError('Warden service timeout must be a positive integer');
37
+ }
38
+ const fetchImpl = options.fetch ?? globalThis.fetch;
39
+ async function request(args) {
40
+ const deadline = Date.now() + timeoutMs;
41
+ for (let attempt = 0; attempt < 2; attempt += 1) {
42
+ const remainingMs = deadline - Date.now();
43
+ if (remainingMs <= 0) {
44
+ throw new ServiceClientError({
45
+ operation: args.operation,
46
+ kind: 'timeout',
47
+ runId: args.runId,
48
+ });
49
+ }
50
+ const controller = new AbortController();
51
+ const timeout = setTimeout(() => controller.abort(), remainingMs);
52
+ try {
53
+ const response = await fetchImpl(serviceUrl(baseUrl, args.path), {
54
+ method: 'POST',
55
+ headers: {
56
+ accept: 'application/json',
57
+ authorization: `Bearer ${token}`,
58
+ 'cache-control': 'no-store',
59
+ 'content-type': 'application/json',
60
+ 'warden-protocol-version': String(SERVICE_PROTOCOL_VERSION),
61
+ ...(args.runId ? { 'idempotency-key': args.runId } : {}),
62
+ ...(args.checksum ? { 'warden-envelope-checksum': args.checksum } : {}),
63
+ },
64
+ body: JSON.stringify(args.body),
65
+ signal: controller.signal,
66
+ });
67
+ if (!response.ok) {
68
+ if (attempt === 0 && RETRYABLE_STATUSES.has(response.status))
69
+ continue;
70
+ throw new ServiceClientError({
71
+ operation: args.operation,
72
+ kind: 'http',
73
+ status: response.status,
74
+ runId: args.runId,
75
+ });
76
+ }
77
+ try {
78
+ return args.responseSchema.parse(await response.json());
79
+ }
80
+ catch {
81
+ throw new ServiceClientError({
82
+ operation: args.operation,
83
+ kind: 'invalid_response',
84
+ status: response.status,
85
+ runId: args.runId,
86
+ });
87
+ }
88
+ }
89
+ catch (error) {
90
+ if (error instanceof ServiceClientError)
91
+ throw error;
92
+ if (isAbortError(error)) {
93
+ throw new ServiceClientError({
94
+ operation: args.operation,
95
+ kind: 'timeout',
96
+ runId: args.runId,
97
+ });
98
+ }
99
+ if (attempt === 0)
100
+ continue;
101
+ throw new ServiceClientError({
102
+ operation: args.operation,
103
+ kind: 'network',
104
+ runId: args.runId,
105
+ });
106
+ }
107
+ finally {
108
+ clearTimeout(timeout);
109
+ }
110
+ }
111
+ throw new ServiceClientError({
112
+ operation: args.operation,
113
+ kind: 'network',
114
+ runId: args.runId,
115
+ });
116
+ }
117
+ return {
118
+ async publishRun(envelopeInput) {
119
+ const envelope = RunEnvelopeV1Schema.parse(envelopeInput);
120
+ const checksum = await sha256Checksum(envelope);
121
+ return request({
122
+ operation: 'publish_run',
123
+ path: 'api/v1/runs',
124
+ body: envelope,
125
+ responseSchema: IngestRunResponseSchema,
126
+ runId: envelope.clientRunId,
127
+ checksum,
128
+ });
129
+ },
130
+ async recallMemory(input) {
131
+ const requestBody = MemoryRecallRequestSchema.parse(input);
132
+ const response = await request({
133
+ operation: 'recall_memory',
134
+ path: 'api/v1/memory/recall',
135
+ body: requestBody,
136
+ responseSchema: MemoryRecallResponseSchema,
137
+ });
138
+ if (response.clientRecallId !== requestBody.clientRecallId) {
139
+ throw new ServiceClientError({ operation: 'recall_memory', kind: 'invalid_response' });
140
+ }
141
+ return response;
142
+ },
143
+ };
144
+ }
145
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ export { SERVICE_PROTOCOL_VERSION, CodeFindingRecordSchema, CodeRunEnvelopeSchema, DataProfileSchema, FindingCountsSchema, FindingLocationSchema, FindingObservationSchema, FindingProvenanceSchema, FindingRecordSchema, FindingsRunEnvelopeSchema, MetricsRunEnvelopeSchema, RecalledMemoryReferenceSchema, RepositoryIdentitySchema, RunEnvelopeV1Schema, RunProjectionSchema, SkillExecutionSchema, SourceEvidenceSchema, UsageLineItemSchema, } from './protocol.js';
2
+ export type { CodeFindingRecord, CodeRunEnvelope, DataProfile, FindingCounts, FindingLocation, FindingObservation, FindingProvenance, FindingRecord, FindingsRunEnvelope, MetricsRunEnvelope, RecalledMemoryReference, RepositoryIdentity, RunEnvelopeV1, RunProjection, SkillExecution, SourceEvidence, UsageLineItem, } from './protocol.js';
3
+ export { ApiErrorSchema, CostAggregateResponseSchema, FindingFeedItemSchema, FindingListResponseSchema, FindingOutcomeSchema, IngestRunResponseSchema, MemoryKindSchema, MemoryDetailResponseSchema, MemoryLifecycleSchema, MemoryListResponseSchema, MemoryMutationResponseSchema, MemoryRecallRequestSchema, MemoryRecallResponseSchema, MemoryRecordSchema, OutcomeSummaryResponseSchema, RepositoryListResponseSchema, RepositorySummarySchema, SkillListResponseSchema, SkillSummarySchema, RunDetailResponseSchema, RunListResponseSchema, RunSummarySchema, } from './api.js';
4
+ export type { ApiError, CostAggregateResponse, FindingFeedItem, FindingListResponse, IngestRunResponse, MemoryRecallRequest, MemoryRecallResponse, MemoryRecord, MemoryDetailResponse, OutcomeSummaryResponse, RepositoryListResponse, RepositorySummary, SkillListResponse, SkillSummary, RunDetailResponse, RunListResponse, RunSummary, } from './api.js';
5
+ export { redactRunProjection } from './redaction.js';
6
+ export { canonicalJson, sha256Checksum } from './checksum.js';
7
+ export { ServiceClientError, createWardenServiceClient, } from './client.js';
8
+ export type { ServiceClientErrorKind, ServiceClientOperation, WardenServiceClient, WardenServiceClientOptions, } from './client.js';
9
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AACvB,YAAY,EACV,iBAAiB,EACjB,eAAe,EACf,WAAW,EACX,aAAa,EACb,eAAe,EACf,kBAAkB,EAClB,iBAAiB,EACjB,aAAa,EACb,mBAAmB,EACnB,kBAAkB,EAClB,uBAAuB,EACvB,kBAAkB,EAClB,aAAa,EACb,aAAa,EACb,cAAc,EACd,cAAc,EACd,aAAa,GACd,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,cAAc,EACd,2BAA2B,EAC3B,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAClB,YAAY,EACV,QAAQ,EACR,qBAAqB,EACrB,eAAe,EACf,mBAAmB,EACnB,iBAAiB,EACjB,mBAAmB,EACnB,oBAAoB,EACpB,YAAY,EACZ,oBAAoB,EACpB,sBAAsB,EACtB,sBAAsB,EACtB,iBAAiB,EACjB,iBAAiB,EACjB,YAAY,EACZ,iBAAiB,EACjB,eAAe,EACf,UAAU,GACX,MAAM,UAAU,CAAC;AAClB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,aAAa,CAAC;AACrB,YAAY,EACV,sBAAsB,EACtB,sBAAsB,EACtB,mBAAmB,EACnB,0BAA0B,GAC3B,MAAM,aAAa,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,6 @@
1
+ export { SERVICE_PROTOCOL_VERSION, CodeFindingRecordSchema, CodeRunEnvelopeSchema, DataProfileSchema, FindingCountsSchema, FindingLocationSchema, FindingObservationSchema, FindingProvenanceSchema, FindingRecordSchema, FindingsRunEnvelopeSchema, MetricsRunEnvelopeSchema, RecalledMemoryReferenceSchema, RepositoryIdentitySchema, RunEnvelopeV1Schema, RunProjectionSchema, SkillExecutionSchema, SourceEvidenceSchema, UsageLineItemSchema, } from './protocol.js';
2
+ export { ApiErrorSchema, CostAggregateResponseSchema, FindingFeedItemSchema, FindingListResponseSchema, FindingOutcomeSchema, IngestRunResponseSchema, MemoryKindSchema, MemoryDetailResponseSchema, MemoryLifecycleSchema, MemoryListResponseSchema, MemoryMutationResponseSchema, MemoryRecallRequestSchema, MemoryRecallResponseSchema, MemoryRecordSchema, OutcomeSummaryResponseSchema, RepositoryListResponseSchema, RepositorySummarySchema, SkillListResponseSchema, SkillSummarySchema, RunDetailResponseSchema, RunListResponseSchema, RunSummarySchema, } from './api.js';
3
+ export { redactRunProjection } from './redaction.js';
4
+ export { canonicalJson, sha256Checksum } from './checksum.js';
5
+ export { ServiceClientError, createWardenServiceClient, } from './client.js';
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EACxB,uBAAuB,EACvB,qBAAqB,EACrB,iBAAiB,EACjB,mBAAmB,EACnB,qBAAqB,EACrB,wBAAwB,EACxB,uBAAuB,EACvB,mBAAmB,EACnB,yBAAyB,EACzB,wBAAwB,EACxB,6BAA6B,EAC7B,wBAAwB,EACxB,mBAAmB,EACnB,mBAAmB,EACnB,oBAAoB,EACpB,oBAAoB,EACpB,mBAAmB,GACpB,MAAM,eAAe,CAAC;AAoBvB,OAAO,EACL,cAAc,EACd,2BAA2B,EAC3B,qBAAqB,EACrB,yBAAyB,EACzB,oBAAoB,EACpB,uBAAuB,EACvB,gBAAgB,EAChB,0BAA0B,EAC1B,qBAAqB,EACrB,wBAAwB,EACxB,4BAA4B,EAC5B,yBAAyB,EACzB,0BAA0B,EAC1B,kBAAkB,EAClB,4BAA4B,EAC5B,4BAA4B,EAC5B,uBAAuB,EACvB,uBAAuB,EACvB,kBAAkB,EAClB,uBAAuB,EACvB,qBAAqB,EACrB,gBAAgB,GACjB,MAAM,UAAU,CAAC;AAoBlB,OAAO,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,eAAe,CAAC;AAC9D,OAAO,EACL,kBAAkB,EAClB,yBAAyB,GAC1B,MAAM,aAAa,CAAC"}