@usepipr/sdk 0.3.3 → 0.3.6

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.
@@ -1,5 +1,4 @@
1
1
  import { z, z as z$1 } from "zod";
2
-
3
2
  //#region src/types/schema.d.ts
4
3
  /** Primitive JSON value supported by JSON Schema based configuration. */
5
4
  type JsonPrimitive = string | number | boolean | null;
@@ -366,13 +365,23 @@ type ReviewerOptions = {
366
365
  type Reviewer = Agent<DefaultReviewInput, ReviewResult>;
367
366
  /** Entrypoints created by `pipr.review`. */
368
367
  type ReviewEntrypoints = {
369
- changeRequest?: ChangeRequestAction[] | false;
368
+ changeRequest?: readonly ChangeRequestAction[] | false;
370
369
  command?: string | false | {
371
370
  pattern?: string;
372
371
  permission?: RepositoryPermission;
373
372
  description?: string;
374
373
  };
375
374
  };
375
+ /** Default change-request actions used by `pipr.review`. */
376
+ declare const defaultReviewActions: readonly ["opened", "updated", "reopened", "ready"];
377
+ /** Default change-request and command entrypoints used by `pipr.review`. */
378
+ declare const defaultReviewEntrypoints: {
379
+ readonly changeRequest: readonly ["opened", "updated", "reopened", "ready"];
380
+ readonly command: {
381
+ readonly pattern: "@pipr review";
382
+ readonly permission: "write";
383
+ };
384
+ };
376
385
  type ReviewRecipeEntrypointOptions = {
377
386
  id: string;
378
387
  entrypoints?: ReviewEntrypoints;
@@ -422,7 +431,7 @@ type ToolRunOptions<Input> = {
422
431
  };
423
432
  /** Definition used to register a task for pull request actions. */
424
433
  type ChangeRequestRegistrationOptions<Input> = {
425
- actions: ChangeRequestAction[];
434
+ actions: readonly ChangeRequestAction[];
426
435
  task: Task<Input>;
427
436
  };
428
437
  /** Handle for reporting task check status from inside a task. */
@@ -514,7 +523,8 @@ type CommandContext = {
514
523
  };
515
524
  /** Context object passed to task handlers. */
516
525
  type TaskContext = {
517
- /** Stable id for the selected Review Run, not the process attempt. */readonly run: {
526
+ /** Stable id for the selected Review Run, not the process attempt. */
527
+ readonly run: {
518
528
  id: string;
519
529
  };
520
530
  readonly repository: RepositoryInfo;
@@ -555,5 +565,5 @@ declare function jsonSchema<T>(definition: JsonSchemaDefinition): Schema<T>;
555
565
  /** Built-in schemas available as reusable agent output contracts. */
556
566
  declare const schemas: BuiltinSchemaCatalog;
557
567
  //#endregion
558
- export { ChecksOptions as $, Task as A, JsonPrimitive as At, AgentTool as B, PriorReview as C, parseReviewResult as Ct, ReviewRecipeOptions as D, reviewSchemaExample as Dt, ReviewEntrypoints as E, reviewResultSchema as Et, ToolRunOptions as F, SchemaDefinition as Ft, PromptSource as G, BuiltinToolCatalog as H, Agent as I, SchemaParseResult as It, AggregateCheckOptions as J, PromptText as K, AgentDefinition as L, ZodSchema as Lt, TaskContext as M, JsonSchemaDefinition as Mt, TaskDefinition as N, JsonValue as Nt, Reviewer as O, reviewSummarySchema as Ot, TaskHandler as P, Schema as Pt, ChangeRequestAction as Q, AgentExtension as R, PriorInlineFinding as S, parseReviewFinding as St, ReviewCommentContext as T, reviewFindingSchema as Tt, JsonPromptOptions as U, BuiltinSchemaCatalog as V, Markdown as W, AutoResolveOptions as X, AutoResolveAllowedActors as Y, AutoResolveUserRepliesOptions as Z, PiRunner as _, ReviewSide as _t, md as a, RepositoryPermission as at, PlatformInfo as b, ReviewResult as bt, ChangeRequestContext as c, CommentableRange as ct, CheckHandle as d, DiffManifestFile as dt, DurationInput as et, CommandContext as f, DiffManifestLimits as ft, DefaultReviewInput as g, RangeKind as gt, CommentValue as h, PathFilter as ht, schemas as i, PublicationOptions as it, TaskCheckOptions as j, JsonSchema as jt, ReviewerOptions as k, JsonObject as kt, ChangeRequestInfo as l, DiffHunk as lt, CommandRegistrationOptions as m, FileStatus as mt, jsonSchema as n, ModelProfile as nt, definePipr as o, SecretOptions as ot, CommandOptions as p, DiffManifestOptions as pt, PromptValue as q, schema as r, PiprConfigOptions as rt, definePlugin as s, SecretRef as st, z$1 as t, ModelOptions as tt, ChangeRequestRegistrationOptions as u, DiffManifest as ut, PiprBuilder as v, RuntimeLimits as vt, RepositoryInfo as w, parseReviewSummary as wt, PluginToolDefinition as x, ReviewSummary as xt, PiprPlugin as y, ReviewFinding as yt, AgentPromptContext as z };
559
- //# sourceMappingURL=index-pT_8sPWD.d.mts.map
568
+ export { AutoResolveUserRepliesOptions as $, Task as A, reviewSummarySchema as At, AgentExtension as B, PriorReview as C, ReviewSummary as Ct, ReviewRecipeOptions as D, reviewFindingSchema as Dt, ReviewEntrypoints as E, parseReviewSummary as Et, ToolRunOptions as F, JsonValue as Ft, JsonPromptOptions as G, AgentTool as H, defaultReviewActions as I, Schema as It, PromptText as J, Markdown as K, defaultReviewEntrypoints as L, SchemaDefinition as Lt, TaskContext as M, JsonPrimitive as Mt, TaskDefinition as N, JsonSchema as Nt, Reviewer as O, reviewResultSchema as Ot, TaskHandler as P, JsonSchemaDefinition as Pt, AutoResolveOptions as Q, Agent as R, SchemaParseResult as Rt, PriorInlineFinding as S, ReviewResult as St, ReviewCommentContext as T, parseReviewResult as Tt, BuiltinSchemaCatalog as U, AgentPromptContext as V, BuiltinToolCatalog as W, AggregateCheckOptions as X, PromptValue as Y, AutoResolveAllowedActors as Z, PiRunner as _, PathFilter as _t, md as a, PiprConfigOptions as at, PlatformInfo as b, RuntimeLimits as bt, ChangeRequestContext as c, SecretOptions as ct, CheckHandle as d, DiffHunk as dt, ChangeRequestAction as et, CommandContext as f, DiffManifest as ft, DefaultReviewInput as g, FileStatus as gt, CommentValue as h, DiffManifestOptions as ht, schemas as i, ModelProfile as it, TaskCheckOptions as j, JsonObject as jt, ReviewerOptions as k, reviewSchemaExample as kt, ChangeRequestInfo as l, SecretRef as lt, CommandRegistrationOptions as m, DiffManifestLimits as mt, jsonSchema as n, DurationInput as nt, definePipr as o, PublicationOptions as ot, CommandOptions as p, DiffManifestFile as pt, PromptSource as q, schema as r, ModelOptions as rt, definePlugin as s, RepositoryPermission as st, z$1 as t, ChecksOptions as tt, ChangeRequestRegistrationOptions as u, CommentableRange as ut, PiprBuilder as v, RangeKind as vt, RepositoryInfo as w, parseReviewFinding as wt, PluginToolDefinition as x, ReviewFinding as xt, PiprPlugin as y, ReviewSide as yt, AgentDefinition as z, ZodSchema as zt };
569
+ //# sourceMappingURL=index-DRF9W1TW.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DRF9W1TW.d.mts","names":[],"sources":["../src/types/schema.ts","../src/review-contract.ts","../src/types/manifest.ts","../src/types/config.ts","../src/types/prompt.ts","../src/types/agent.ts","../src/types/task.ts","../src/builder.ts","../src/prompt.ts","../src/schema.ts"],"mappings":"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"}
package/dist/index.d.mts CHANGED
@@ -1,2 +1,2 @@
1
- import { $ as ChecksOptions, A as Task, At as JsonPrimitive, B as AgentTool, C as PriorReview, Ct as parseReviewResult, D as ReviewRecipeOptions, Dt as reviewSchemaExample, E as ReviewEntrypoints, Et as reviewResultSchema, F as ToolRunOptions, Ft as SchemaDefinition, G as PromptSource, H as BuiltinToolCatalog, I as Agent, It as SchemaParseResult, J as AggregateCheckOptions, K as PromptText, L as AgentDefinition, Lt as ZodSchema, M as TaskContext, Mt as JsonSchemaDefinition, N as TaskDefinition, Nt as JsonValue, O as Reviewer, Ot as reviewSummarySchema, P as TaskHandler, Pt as Schema, Q as ChangeRequestAction, R as AgentExtension, S as PriorInlineFinding, St as parseReviewFinding, T as ReviewCommentContext, Tt as reviewFindingSchema, U as JsonPromptOptions, V as BuiltinSchemaCatalog, W as Markdown, X as AutoResolveOptions, Y as AutoResolveAllowedActors, Z as AutoResolveUserRepliesOptions, _ as PiRunner, _t as ReviewSide, a as md, at as RepositoryPermission, b as PlatformInfo, bt as ReviewResult, c as ChangeRequestContext, ct as CommentableRange, d as CheckHandle, dt as DiffManifestFile, et as DurationInput, f as CommandContext, ft as DiffManifestLimits, g as DefaultReviewInput, gt as RangeKind, h as CommentValue, ht as PathFilter, i as schemas, it as PublicationOptions, j as TaskCheckOptions, jt as JsonSchema, k as ReviewerOptions, kt as JsonObject, l as ChangeRequestInfo, lt as DiffHunk, m as CommandRegistrationOptions, mt as FileStatus, n as jsonSchema, nt as ModelProfile, o as definePipr, ot as SecretOptions, p as CommandOptions, pt as DiffManifestOptions, q as PromptValue, r as schema, rt as PiprConfigOptions, s as definePlugin, st as SecretRef, t as z, tt as ModelOptions, u as ChangeRequestRegistrationOptions, ut as DiffManifest, v as PiprBuilder, vt as RuntimeLimits, w as RepositoryInfo, wt as parseReviewSummary, x as PluginToolDefinition, xt as ReviewSummary, y as PiprPlugin, yt as ReviewFinding, z as AgentPromptContext } from "./index-pT_8sPWD.mjs";
2
- export { type Agent, type AgentDefinition, type AgentExtension, type AgentPromptContext, type AgentTool, type AggregateCheckOptions, type AutoResolveAllowedActors, type AutoResolveOptions, type AutoResolveUserRepliesOptions, type BuiltinSchemaCatalog, type BuiltinToolCatalog, type ChangeRequestAction, type ChangeRequestContext, type ChangeRequestInfo, type ChangeRequestRegistrationOptions, type CheckHandle, type ChecksOptions, type CommandContext, type CommandOptions, type CommandRegistrationOptions, type CommentValue, type CommentableRange, type DefaultReviewInput, type DiffHunk, type DiffManifest, type DiffManifestFile, type DiffManifestLimits, type DiffManifestOptions, type DurationInput, type FileStatus, type JsonObject, type JsonPrimitive, type JsonPromptOptions, type JsonSchema, type JsonSchemaDefinition, type JsonValue, type Markdown, type ModelOptions, type ModelProfile, type PathFilter, type PiRunner, type PiprBuilder, type PiprConfigOptions, type PiprPlugin, type PlatformInfo, type PluginToolDefinition, type PriorInlineFinding, type PriorReview, type PromptSource, type PromptText, type PromptValue, type PublicationOptions, type RangeKind, type RepositoryInfo, type RepositoryPermission, type ReviewCommentContext, type ReviewEntrypoints, type ReviewFinding, type ReviewRecipeOptions, type ReviewResult, type ReviewSide, type ReviewSummary, type Reviewer, type ReviewerOptions, type RuntimeLimits, type Schema, type SchemaDefinition, type SchemaParseResult, type SecretOptions, type SecretRef, type Task, type TaskCheckOptions, type TaskContext, type TaskDefinition, type TaskHandler, type ToolRunOptions, type ZodSchema, definePipr, definePlugin, jsonSchema, md, parseReviewFinding, parseReviewResult, parseReviewSummary, reviewFindingSchema, reviewResultSchema, reviewSchemaExample, reviewSummarySchema, schema, schemas, z };
1
+ import { $ as AutoResolveUserRepliesOptions, A as Task, At as reviewSummarySchema, B as AgentExtension, C as PriorReview, Ct as ReviewSummary, D as ReviewRecipeOptions, Dt as reviewFindingSchema, E as ReviewEntrypoints, Et as parseReviewSummary, F as ToolRunOptions, Ft as JsonValue, G as JsonPromptOptions, H as AgentTool, I as defaultReviewActions, It as Schema, J as PromptText, K as Markdown, L as defaultReviewEntrypoints, Lt as SchemaDefinition, M as TaskContext, Mt as JsonPrimitive, N as TaskDefinition, Nt as JsonSchema, O as Reviewer, Ot as reviewResultSchema, P as TaskHandler, Pt as JsonSchemaDefinition, Q as AutoResolveOptions, R as Agent, Rt as SchemaParseResult, S as PriorInlineFinding, St as ReviewResult, T as ReviewCommentContext, Tt as parseReviewResult, U as BuiltinSchemaCatalog, V as AgentPromptContext, W as BuiltinToolCatalog, X as AggregateCheckOptions, Y as PromptValue, Z as AutoResolveAllowedActors, _ as PiRunner, _t as PathFilter, a as md, at as PiprConfigOptions, b as PlatformInfo, bt as RuntimeLimits, c as ChangeRequestContext, ct as SecretOptions, d as CheckHandle, dt as DiffHunk, et as ChangeRequestAction, f as CommandContext, ft as DiffManifest, g as DefaultReviewInput, gt as FileStatus, h as CommentValue, ht as DiffManifestOptions, i as schemas, it as ModelProfile, j as TaskCheckOptions, jt as JsonObject, k as ReviewerOptions, kt as reviewSchemaExample, l as ChangeRequestInfo, lt as SecretRef, m as CommandRegistrationOptions, mt as DiffManifestLimits, n as jsonSchema, nt as DurationInput, o as definePipr, ot as PublicationOptions, p as CommandOptions, pt as DiffManifestFile, q as PromptSource, r as schema, rt as ModelOptions, s as definePlugin, st as RepositoryPermission, t as z, tt as ChecksOptions, u as ChangeRequestRegistrationOptions, ut as CommentableRange, v as PiprBuilder, vt as RangeKind, w as RepositoryInfo, wt as parseReviewFinding, x as PluginToolDefinition, xt as ReviewFinding, y as PiprPlugin, yt as ReviewSide, z as AgentDefinition, zt as ZodSchema } from "./index-DRF9W1TW.mjs";
2
+ export { type Agent, type AgentDefinition, type AgentExtension, type AgentPromptContext, type AgentTool, type AggregateCheckOptions, type AutoResolveAllowedActors, type AutoResolveOptions, type AutoResolveUserRepliesOptions, type BuiltinSchemaCatalog, type BuiltinToolCatalog, type ChangeRequestAction, type ChangeRequestContext, type ChangeRequestInfo, type ChangeRequestRegistrationOptions, type CheckHandle, type ChecksOptions, type CommandContext, type CommandOptions, type CommandRegistrationOptions, type CommentValue, type CommentableRange, type DefaultReviewInput, type DiffHunk, type DiffManifest, type DiffManifestFile, type DiffManifestLimits, type DiffManifestOptions, type DurationInput, type FileStatus, type JsonObject, type JsonPrimitive, type JsonPromptOptions, type JsonSchema, type JsonSchemaDefinition, type JsonValue, type Markdown, type ModelOptions, type ModelProfile, type PathFilter, type PiRunner, type PiprBuilder, type PiprConfigOptions, type PiprPlugin, type PlatformInfo, type PluginToolDefinition, type PriorInlineFinding, type PriorReview, type PromptSource, type PromptText, type PromptValue, type PublicationOptions, type RangeKind, type RepositoryInfo, type RepositoryPermission, type ReviewCommentContext, type ReviewEntrypoints, type ReviewFinding, type ReviewRecipeOptions, type ReviewResult, type ReviewSide, type ReviewSummary, type Reviewer, type ReviewerOptions, type RuntimeLimits, type Schema, type SchemaDefinition, type SchemaParseResult, type SecretOptions, type SecretRef, type Task, type TaskCheckOptions, type TaskContext, type TaskDefinition, type TaskHandler, type ToolRunOptions, type ZodSchema, defaultReviewActions, defaultReviewEntrypoints, definePipr, definePlugin, jsonSchema, md, parseReviewFinding, parseReviewResult, parseReviewSummary, reviewFindingSchema, reviewResultSchema, reviewSchemaExample, reviewSummarySchema, schema, schemas, z };
package/dist/index.mjs CHANGED
@@ -130,6 +130,23 @@ function jsonSchemaFromZod(id, schemaDefinition) {
130
130
  }
131
131
  }
132
132
  //#endregion
133
+ //#region src/types/task.ts
134
+ /** Default change-request actions used by `pipr.review`. */
135
+ const defaultReviewActions = [
136
+ "opened",
137
+ "updated",
138
+ "reopened",
139
+ "ready"
140
+ ];
141
+ /** Default change-request and command entrypoints used by `pipr.review`. */
142
+ const defaultReviewEntrypoints = {
143
+ changeRequest: defaultReviewActions,
144
+ command: {
145
+ pattern: "@pipr review",
146
+ permission: "write"
147
+ }
148
+ };
149
+ //#endregion
133
150
  //#region src/builder.ts
134
151
  /** Defines a synchronous pipr configuration factory. */
135
152
  function definePipr(configure) {
@@ -168,7 +185,7 @@ function createBuilder() {
168
185
  on: { changeRequest(options) {
169
186
  if (!Array.isArray(options.actions) || !options.task) throw new Error("pipr.on.changeRequest requires { actions, task }");
170
187
  changeRequestTriggers.push({
171
- actions: options.actions,
188
+ actions: [...options.actions],
172
189
  task: options.task
173
190
  });
174
191
  } },
@@ -306,7 +323,7 @@ function registerReviewRecipe(api, options) {
306
323
  const id = options.id;
307
324
  registerReviewRecipeEntrypoints(api, createReviewRecipeTask(api, id, options.reviewer ?? createReviewer(api, reviewRecipeReviewerOptions(options, id)), options), options);
308
325
  }
309
- const reviewRecipeOptionKeys = new Set([
326
+ const reviewRecipeOptionKeys = /* @__PURE__ */ new Set([
310
327
  "id",
311
328
  "entrypoints",
312
329
  "comment",
@@ -321,7 +338,7 @@ const reviewRecipeOptionKeys = new Set([
321
338
  "prompt",
322
339
  "tools"
323
340
  ]);
324
- const reviewRecipeEntrypointKeys = new Set(["changeRequest", "command"]);
341
+ const reviewRecipeEntrypointKeys = /* @__PURE__ */ new Set(["changeRequest", "command"]);
325
342
  const modelProfileConfigSchema = z$1.custom((value) => typeof value === "object" && value !== null && value.kind === "pipr.model" && typeof value.id === "string" && typeof value.provider === "string" && typeof value.model === "string");
326
343
  const autoResolveUserRepliesOptionsSchema = z$1.strictObject({
327
344
  enabled: z$1.boolean().optional(),
@@ -481,26 +498,21 @@ function registerReviewRecipeEntrypoints(api, task, options) {
481
498
  }
482
499
  function reviewChangeRequestEntrypoint(options) {
483
500
  const entrypoint = options.entrypoints?.changeRequest;
484
- return entrypoint === false ? void 0 : entrypoint ?? [
485
- "opened",
486
- "updated",
487
- "reopened",
488
- "ready"
489
- ];
501
+ return entrypoint === false ? void 0 : entrypoint ?? defaultReviewActions;
490
502
  }
491
503
  function reviewCommandEntrypoint(options) {
492
504
  const entrypoint = options.entrypoints?.command;
493
505
  if (entrypoint === false) return;
494
506
  if (typeof entrypoint === "object") return {
495
- pattern: entrypoint.pattern ?? "@pipr review",
507
+ pattern: entrypoint.pattern ?? defaultReviewEntrypoints.command.pattern,
496
508
  options: {
497
- permission: entrypoint.permission ?? "write",
509
+ permission: entrypoint.permission ?? defaultReviewEntrypoints.command.permission,
498
510
  description: entrypoint.description
499
511
  }
500
512
  };
501
513
  return {
502
- pattern: entrypoint ?? "@pipr review",
503
- options: { permission: "write" }
514
+ pattern: entrypoint ?? defaultReviewEntrypoints.command.pattern,
515
+ options: { permission: defaultReviewEntrypoints.command.permission }
504
516
  };
505
517
  }
506
518
  function mergePublicationConfig(target, next) {
@@ -615,6 +627,6 @@ function stableJsonValue(value) {
615
627
  return value;
616
628
  }
617
629
  //#endregion
618
- export { definePipr, definePlugin, jsonSchema, md, parseReviewFinding, parseReviewResult, parseReviewSummary, reviewFindingSchema, reviewResultSchema, reviewSchemaExample, reviewSummarySchema, schema, schemas, z };
630
+ export { defaultReviewActions, defaultReviewEntrypoints, definePipr, definePlugin, jsonSchema, md, parseReviewFinding, parseReviewResult, parseReviewSummary, reviewFindingSchema, reviewResultSchema, reviewSchemaExample, reviewSummarySchema, schema, schemas, z };
619
631
 
620
632
  //# sourceMappingURL=index.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","names":["z","z","coreReviewResultSchema","coreReviewSummarySchema","z"],"sources":["../src/prompt.ts","../src/review-contract.ts","../src/schema.ts","../src/builder.ts"],"sourcesContent":["import type { Markdown } from \"./types/prompt.js\";\n\n/** Creates trimmed Markdown from a template literal with common indentation removed. */\nexport function md(strings: TemplateStringsArray, ...values: unknown[]): Markdown {\n let text = \"\";\n for (let index = 0; index < strings.length; index += 1) {\n text += strings[index] ?? \"\";\n if (index < values.length) {\n text += String(values[index] ?? \"\");\n }\n }\n return stripCommonIndent(text).trim();\n}\n\n/** Removes common leading indentation from multiline text. */\nexport function stripCommonIndent(value: string): string {\n const lines = value.replaceAll(\"\\t\", \" \").split(/\\r?\\n/);\n const nonEmpty = lines.filter((line) => line.trim().length > 0);\n const indent = Math.min(...nonEmpty.map((line) => line.match(/^ */)?.[0].length ?? 0));\n return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\n","import { z } from \"zod\";\nimport type { ZodSchema } from \"./types/schema.js\";\n\n/** Markdown summary produced by a reviewer for the main review comment. */\nexport type ReviewSummary = {\n title?: string;\n body: string;\n};\n\n/** One inline review finding targeting a Diff Manifest commentable range. */\nexport type ReviewFinding = {\n body: string;\n path: string;\n rangeId: string;\n side: \"RIGHT\" | \"LEFT\";\n startLine: number;\n endLine: number;\n suggestedFix?: string;\n};\n\n/** Core structured review result accepted by pipr review publication. */\nexport type ReviewResult = {\n summary: ReviewSummary;\n inlineFindings: ReviewFinding[];\n};\n\nconst nonEmptyStringSchema = z.string().min(1);\nconst positiveIntegerSchema = z.number().int().positive();\n\n/** Zod schema for a review summary. */\nexport const reviewSummarySchema: ZodSchema<ReviewSummary> = z.strictObject({\n title: nonEmptyStringSchema.optional(),\n body: nonEmptyStringSchema,\n});\n\n/** Zod schema for one inline review finding. */\nexport const reviewFindingSchema: ZodSchema<ReviewFinding> = z.strictObject({\n body: nonEmptyStringSchema,\n path: nonEmptyStringSchema,\n rangeId: nonEmptyStringSchema,\n side: z.enum([\"RIGHT\", \"LEFT\"]),\n startLine: positiveIntegerSchema,\n endLine: positiveIntegerSchema,\n suggestedFix: nonEmptyStringSchema.optional(),\n});\n\n/** Zod schema for pipr's core pull request review result. */\nexport const reviewResultSchema: ZodSchema<ReviewResult> = z.strictObject({\n summary: reviewSummarySchema,\n inlineFindings: z.array(reviewFindingSchema),\n});\n\n/** Parses model output for pipr's main pull request review schema. */\nexport function parseReviewResult(value: unknown): ReviewResult {\n return reviewResultSchema.parse(value) as ReviewResult;\n}\n\n/** Parses a review summary value. */\nexport function parseReviewSummary(value: unknown): ReviewSummary {\n return reviewSummarySchema.parse(value);\n}\n\n/** Parses one inline review finding. */\nexport function parseReviewFinding(value: unknown): ReviewFinding {\n return reviewFindingSchema.parse(value) as ReviewFinding;\n}\n\n/** Returns a small valid example for the main pull request review schema. */\nexport function reviewSchemaExample(): ReviewResult {\n return {\n summary: {\n title: \"Optional concise review title.\",\n body: \"Concise pull request review summary.\",\n },\n inlineFindings: [\n {\n body: \"Specific issue and why it matters.\",\n path: \"src/example.ts\",\n rangeId: \"rng_example\",\n side: \"RIGHT\",\n startLine: 1,\n endLine: 1,\n suggestedFix: \"return safeValue;\",\n },\n ],\n };\n}\n","import { z } from \"zod\";\nimport type { ReviewResult, ReviewSummary } from \"./review-contract.js\";\nimport {\n reviewResultSchema as coreReviewResultSchema,\n reviewSummarySchema as coreReviewSummarySchema,\n} from \"./review-contract.js\";\nimport type { BuiltinSchemaCatalog } from \"./types/agent.js\";\nimport type {\n JsonSchema,\n JsonSchemaDefinition,\n Schema,\n SchemaDefinition,\n ZodSchema,\n} from \"./types/schema.js\";\n\nconst coreReviewOutputSchemaId = \"core/pr-review\";\n\n/** Defines a typed schema from a Zod schema. */\nexport function schema<T>(definition: SchemaDefinition<T>): Schema<T> {\n if (!definition || typeof definition.id !== \"string\") {\n throw new Error(\"pipr.schema requires { id, schema }\");\n }\n assertUserSchemaId(definition.id);\n return createZodSchema(definition.id, definition.schema);\n}\n\n/** Defines a typed schema from JSON Schema. The generic type is caller supplied. */\nexport function jsonSchema<T>(definition: JsonSchemaDefinition): Schema<T> {\n if (!definition || typeof definition.id !== \"string\") {\n throw new Error(\"pipr.jsonSchema requires { id, schema }\");\n }\n assertUserSchemaId(definition.id);\n const zodSchema = z.fromJSONSchema(definition.schema);\n return createSchema(definition.id, (value) => zodSchema.parse(value) as T, definition.schema);\n}\n\n/** Built-in schemas available as reusable agent output contracts. */\nexport const schemas: BuiltinSchemaCatalog = {\n review: createZodSchema<ReviewResult>(coreReviewOutputSchemaId, coreReviewResultSchema),\n summary: createZodSchema<ReviewSummary>(\"core/summary\", coreReviewSummarySchema),\n};\n\nfunction createSchema<T>(\n id: string,\n parseValue: (value: unknown) => T,\n schemaJson?: JsonSchema,\n): Schema<T> {\n return {\n kind: \"pipr.schema\",\n id,\n jsonSchema: schemaJson,\n parse(value) {\n return parseValue(value);\n },\n safeParse(value) {\n try {\n return { success: true, data: parseValue(value) };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n },\n };\n}\n\nfunction createZodSchema<T>(id: string, zodSchema: ZodSchema<T>): Schema<T> {\n return createSchema(id, (value) => zodSchema.parse(value), jsonSchemaFromZod(id, zodSchema));\n}\n\nfunction assertUserSchemaId(id: string): void {\n if (id.startsWith(\"core/\")) {\n throw new Error(`Schema id '${id}' uses the reserved core/ namespace`);\n }\n}\n\nfunction jsonSchemaFromZod<T>(id: string, schemaDefinition: ZodSchema<T>): JsonSchema {\n try {\n return z.toJSONSchema(schemaDefinition) as JsonSchema;\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n throw new Error(\n `Schema '${id}' could not be converted to JSON Schema. Use JSON-Schema-representable Zod or pipr.jsonSchema<T>(). ${detail}`,\n );\n }\n}\n","import { z } from \"zod\";\nimport { assertSupportedCommandRestCapture } from \"./command-grammar.js\";\nimport {\n builtinReadOnlyToolBrand,\n configFactoryBrand,\n type InternalPiprConfigFactory,\n} from \"./internal-contract.js\";\nimport { stripCommonIndent } from \"./prompt.js\";\nimport { renderPromptValue } from \"./prompt-render.js\";\nimport type { ReviewResult } from \"./review-contract.js\";\nimport type { RuntimePlan } from \"./runtime-contract.js\";\nimport { jsonSchema, schema, schemas } from \"./schema.js\";\nimport type { Agent, AgentDefinition, AgentTool, BuiltinToolCatalog } from \"./types/agent.js\";\nimport type {\n AggregateCheckOptions,\n AutoResolveOptions,\n AutoResolveUserRepliesOptions,\n ChangeRequestAction,\n ChecksOptions,\n ModelProfile,\n PiprConfigOptions,\n PublicationOptions,\n} from \"./types/config.js\";\nimport type { DiffManifestLimits, RuntimeLimits } from \"./types/manifest.js\";\nimport type { Markdown } from \"./types/prompt.js\";\nimport type {\n CommandOptions,\n CommentValue,\n DefaultReviewInput,\n PiprBuilder,\n PiprPlugin,\n Reviewer,\n ReviewerOptions,\n ReviewRecipeOptions,\n Task,\n} from \"./types/task.js\";\n\n/** Defines a synchronous pipr configuration factory. */\nexport function definePipr(configure: (pipr: PiprBuilder) => void): {\n readonly kind: \"pipr.config-factory\";\n} {\n const factory = {\n kind: \"pipr.config-factory\",\n [configFactoryBrand]: true,\n build() {\n const builder = createBuilder();\n const result = configure(builder.api);\n if (\n typeof result === \"object\" &&\n result !== null &&\n typeof Reflect.get(result, \"then\") === \"function\"\n ) {\n throw new Error(\"definePipr configuration callback must be synchronous\");\n }\n return builder.plan();\n },\n } satisfies InternalPiprConfigFactory;\n return factory;\n}\n\n/** Defines a typed pipr plugin installer. */\nexport function definePlugin<Handle>(setup: (builder: PiprBuilder) => Handle): PiprPlugin<Handle> {\n return { setup };\n}\n\nfunction createBuilder(): { api: PiprBuilder; plan(): RuntimePlan } {\n const models: ModelProfile[] = [];\n const agents: Agent[] = [];\n const tasks: Task<unknown>[] = [];\n const changeRequestTriggers: RuntimePlan[\"changeRequestTriggers\"] = [];\n const commands: RuntimePlan[\"commands\"] = [];\n const tools: AgentTool[] = [];\n const publication: RuntimePlan[\"publication\"] = {};\n let checks: ChecksOptions | undefined;\n let limits: RuntimeLimits | undefined;\n\n const api: PiprBuilder = {\n tools: {\n readOnly: [\n {\n kind: \"pipr.tool\",\n name: \"readOnly\",\n [builtinReadOnlyToolBrand]: true,\n } as AgentTool,\n ],\n } satisfies BuiltinToolCatalog,\n schemas,\n on: {\n changeRequest(options) {\n if (!Array.isArray(options.actions) || !options.task) {\n throw new Error(\"pipr.on.changeRequest requires { actions, task }\");\n }\n changeRequestTriggers.push({\n actions: options.actions,\n task: options.task as Task<unknown>,\n });\n },\n },\n secret(options) {\n if (!options || typeof options.name !== \"string\") {\n throw new Error(\"pipr.secret requires { name }\");\n }\n if (!/^[A-Z_][A-Z0-9_]*$/.test(options.name)) {\n throw new Error(`Secret '${options.name}' must be an environment variable name`);\n }\n return { kind: \"pipr.secret\", name: options.name };\n },\n model(options) {\n if (!options || typeof options.provider !== \"string\" || typeof options.model !== \"string\") {\n throw new Error(\"pipr.model requires { provider, model }\");\n }\n if (!options.provider || !options.model) {\n throw new Error(\"pipr.model requires provider and model\");\n }\n const id = options.id ?? `${options.provider}/${options.model}`;\n const profile: ModelProfile = {\n kind: \"pipr.model\",\n id,\n provider: options.provider,\n model: options.model,\n apiKey: options.apiKey,\n options: options.options,\n };\n models.push(profile);\n return profile;\n },\n agent(definition) {\n const agent = createAgent(definition);\n agents.push(agent);\n return agent;\n },\n task(definition) {\n if (!definition.name || typeof definition.run !== \"function\") {\n throw new Error(\"pipr.task requires { name, run }\");\n }\n const task = {\n kind: \"pipr.task\" as const,\n name: definition.name,\n check: definition.check,\n ...(definition.local === false ? { local: false as const } : {}),\n handler: definition.run,\n };\n tasks.push(task as Task<unknown>);\n return task;\n },\n reviewer(options) {\n return createReviewer(api, options);\n },\n review(options) {\n assertKnownReviewRecipeOptions(options);\n registerReviewRecipe(api, options);\n },\n config(options) {\n assertKnownPiprConfigOptions(options);\n mergePublicationConfig(publication, options.publication);\n checks = mergeConfigField(\"checks\", checks, options.checks);\n limits = mergeLimits(limits, options.limits);\n },\n command(options) {\n if (typeof options.pattern !== \"string\" || !options.task) {\n throw new Error(\"pipr.command requires { pattern, task }\");\n }\n const pattern = options.pattern;\n const tokens = pattern.trim().split(/\\s+/).filter(Boolean);\n if (tokens.length === 0) {\n throw new Error(\"Command pattern must not be empty\");\n }\n if (tokens[0] !== \"@pipr\") {\n throw new Error(`Command pattern '${pattern}' must start with @pipr`);\n }\n assertSupportedCommandRestCapture(pattern);\n commands.push({\n pattern,\n permission: options.permission ?? \"write\",\n description: options.description,\n parse: options.parse as ((arguments_: Record<string, string>) => unknown) | undefined,\n task: options.task as Task<unknown>,\n });\n },\n use(plugin) {\n return plugin.setup(api);\n },\n tool(definition) {\n if (definition.name === \"readOnly\") {\n throw new Error(\"Tool name 'readOnly' is reserved for pipr built-in tools\");\n }\n const run = definition.run;\n if (!run) {\n throw new Error(`Tool '${definition.name}' must define run`);\n }\n const tool = {\n kind: \"pipr.tool\" as const,\n ...definition,\n run,\n };\n tools.push(tool);\n return tool;\n },\n schema,\n jsonSchema,\n prompt(strings, ...values) {\n let text = \"\";\n for (let index = 0; index < strings.length; index += 1) {\n text += strings[index] ?? \"\";\n if (index < values.length) {\n text += renderPromptValue(values[index]);\n }\n }\n return {\n kind: \"pipr.prompt\",\n value: stripCommonIndent(text).trim(),\n };\n },\n section(title, value) {\n const rendered = renderPromptValue(value);\n return {\n kind: \"pipr.prompt\",\n value: `## ${title}\\n\\n${rendered}`,\n };\n },\n json(value, options) {\n const text = JSON.stringify(value, null, options?.pretty === false ? 0 : 2);\n if (options?.maxCharacters !== undefined && text.length > options.maxCharacters) {\n throw new Error(`JSON prompt value exceeded ${options.maxCharacters} characters`);\n }\n return { kind: \"pipr.prompt\", value: text };\n },\n };\n\n return {\n api,\n plan() {\n assertUnique(\n tasks.map((task) => task.name),\n \"task\",\n );\n assertUnique(\n commands.map((command) => command.pattern),\n \"command\",\n );\n assertModelIdentity(models);\n return {\n models,\n agents,\n tasks,\n changeRequestTriggers,\n commands,\n tools,\n publication,\n checks,\n limits,\n };\n },\n };\n}\n\nfunction registerReviewRecipe(api: PiprBuilder, options: ReviewRecipeOptions): void {\n const id = options.id;\n const agent = options.reviewer ?? createReviewer(api, reviewRecipeReviewerOptions(options, id));\n\n const task = createReviewRecipeTask(api, id, agent, options);\n registerReviewRecipeEntrypoints(api, task, options);\n}\n\nconst reviewRecipeOptionKeys = new Set([\n \"id\",\n \"entrypoints\",\n \"comment\",\n \"check\",\n \"timeout\",\n \"paths\",\n \"reviewer\",\n \"name\",\n \"model\",\n \"fallbacks\",\n \"instructions\",\n \"prompt\",\n \"tools\",\n]);\n\nconst reviewRecipeEntrypointKeys = new Set([\"changeRequest\", \"command\"]);\n\nconst modelProfileConfigSchema: z.ZodType<ModelProfile> = z.custom<ModelProfile>(\n (value) =>\n typeof value === \"object\" &&\n value !== null &&\n (value as { kind?: unknown }).kind === \"pipr.model\" &&\n typeof (value as { id?: unknown }).id === \"string\" &&\n typeof (value as { provider?: unknown }).provider === \"string\" &&\n typeof (value as { model?: unknown }).model === \"string\",\n);\n\nconst autoResolveUserRepliesOptionsSchema: z.ZodType<AutoResolveUserRepliesOptions> =\n z.strictObject({\n enabled: z.boolean().optional(),\n respondWhenStillValid: z.boolean().optional(),\n allowedActors: z.enum([\"author-or-write\", \"write\", \"any\"]).optional(),\n });\n\nconst autoResolveOptionsSchema: z.ZodType<AutoResolveOptions> = z.union([\n z.literal(false),\n z.strictObject({\n enabled: z.boolean().optional(),\n model: modelProfileConfigSchema.optional(),\n instructions: z.string().min(1).max(4000).optional(),\n synchronize: z.boolean().optional(),\n userReplies: z.union([z.boolean(), autoResolveUserRepliesOptionsSchema]).optional(),\n }),\n]);\n\nconst publicationOptionsSchema: z.ZodType<PublicationOptions> = z.strictObject({\n maxInlineComments: z.number().int().min(0).max(50).optional(),\n autoResolve: autoResolveOptionsSchema.optional(),\n});\n\nconst aggregateCheckOptionsSchema: z.ZodType<AggregateCheckOptions> = z.union([\n z.literal(false),\n z.strictObject({\n enabled: z.boolean().optional(),\n name: z.string().min(1).optional(),\n }),\n]);\n\nconst checksOptionsSchema: z.ZodType<ChecksOptions> = z.strictObject({\n aggregate: aggregateCheckOptionsSchema.optional(),\n});\n\nconst diffManifestLimitsSchema: z.ZodType<DiffManifestLimits> = z.strictObject({\n fullMaxBytes: z.number().int().positive().optional(),\n fullMaxEstimatedTokens: z.number().int().positive().optional(),\n condensedMaxBytes: z.number().int().positive().optional(),\n condensedMaxEstimatedTokens: z.number().int().positive().optional(),\n toolResponseMaxBytes: z.number().int().positive().optional(),\n});\n\nconst runtimeLimitsSchema: z.ZodType<RuntimeLimits> = z.strictObject({\n timeoutSeconds: z.number().int().positive().max(3600).optional(),\n diffManifest: diffManifestLimitsSchema.optional(),\n});\n\nconst piprConfigOptionsSchema: z.ZodType<PiprConfigOptions> = z.strictObject({\n publication: publicationOptionsSchema.optional(),\n checks: checksOptionsSchema.optional(),\n limits: runtimeLimitsSchema.optional(),\n});\n\nfunction assertKnownReviewRecipeOptions(options: ReviewRecipeOptions): void {\n const unknownKeys = Object.keys(options).filter((key) => !reviewRecipeOptionKeys.has(key));\n if (unknownKeys.length > 0) {\n throw new Error(`pipr.review received unsupported option fields: ${unknownKeys.join(\", \")}.`);\n }\n\n const entrypoints = options.entrypoints;\n if (entrypoints && typeof entrypoints === \"object\") {\n const unknownEntrypointKeys = Object.keys(entrypoints).filter(\n (key) => !reviewRecipeEntrypointKeys.has(key),\n );\n if (unknownEntrypointKeys.length > 0) {\n throw new Error(\n `pipr.review entrypoints received unsupported fields: ${unknownEntrypointKeys.join(\", \")}.`,\n );\n }\n }\n}\n\nfunction assertKnownPiprConfigOptions(options: unknown): asserts options is PiprConfigOptions {\n const parsed = piprConfigOptionsSchema.safeParse(options);\n if (!parsed.success) {\n throw new Error(formatPiprConfigOptionsError(parsed.error));\n }\n}\n\nfunction formatPiprConfigOptionsError(error: z.ZodError): string {\n const unsupportedFields = firstUnsupportedConfigFields(error.issues, []);\n if (unsupportedFields) {\n return `${piprConfigLabel(unsupportedFields.path)} received unsupported option fields: ${unsupportedFields.keys.join(\n \", \",\n )}`;\n }\n return `pipr.config received invalid option value: ${z.prettifyError(error)}`;\n}\n\nfunction firstUnsupportedConfigFields(\n issues: readonly z.ZodIssue[],\n parentPath: readonly PropertyKey[],\n): { path: PropertyKey[]; keys: string[] } | undefined {\n for (const issue of issues) {\n const path = [...parentPath, ...issue.path];\n if (issue.code === \"unrecognized_keys\") {\n return { path, keys: issue.keys };\n }\n if (issue.code === \"invalid_union\") {\n for (const branchIssues of issue.errors) {\n const unsupportedFields = firstUnsupportedConfigFields(branchIssues, path);\n if (unsupportedFields) {\n return unsupportedFields;\n }\n }\n }\n }\n return undefined;\n}\n\nfunction piprConfigLabel(pathSegments: PropertyKey[]): string {\n const path = pathSegments.join(\".\");\n return path ? `pipr.config ${path}` : \"pipr.config\";\n}\n\nfunction reviewRecipeReviewerOptions(options: ReviewerOptions, name: string): ReviewerOptions {\n if (!options.model || !options.instructions) {\n throw new Error(\"pipr.review requires model and instructions when reviewer is not provided\");\n }\n return {\n name,\n model: options.model,\n fallbacks: options.fallbacks,\n instructions: options.instructions,\n prompt: options.prompt,\n tools: options.tools,\n timeout: options.timeout,\n };\n}\n\nfunction createReviewer(api: PiprBuilder, options: ReviewerOptions): Reviewer {\n return api.agent<DefaultReviewInput, ReviewResult>({\n name: options.name ?? \"reviewer\",\n model: options.model,\n fallbacks: options.fallbacks,\n instructions: options.instructions,\n tools: options.tools ?? api.tools.readOnly,\n output: api.schemas.review,\n timeout: options.timeout,\n prompt:\n options.prompt ??\n (() =>\n api.prompt`\n Review this change.\n `),\n });\n}\n\nfunction createReviewRecipeTask(\n api: PiprBuilder,\n id: string,\n agent: Agent<DefaultReviewInput, ReviewResult>,\n options: ReviewRecipeOptions,\n): Task {\n return api.task({\n name: id,\n check: options.check,\n async run(context) {\n const manifest = await context.change.diffManifest({\n compressed: true,\n paths: options.paths,\n });\n if (options.paths && manifest.files.length === 0) {\n context.check.neutral(\"No changed files matched this review's path scope.\");\n await context.comment({ main: \"No changed files matched this review's path scope.\" });\n return;\n }\n const result = await context.pi.run(\n agent,\n { manifest, change: context.change },\n {\n timeout: options.timeout,\n paths: options.paths,\n },\n );\n const source =\n typeof options.comment === \"function\"\n ? await options.comment(result, {\n review: { id },\n repository: context.repository,\n change: context.change,\n platform: context.platform,\n })\n : (options.comment ?? defaultReviewComment(result));\n await context.comment(source);\n },\n });\n}\n\nfunction defaultReviewComment(result: ReviewResult): CommentValue {\n return {\n main: defaultReviewMarkdown(result),\n inlineFindings: result.inlineFindings,\n };\n}\n\nfunction defaultReviewMarkdown(result: ReviewResult): Markdown {\n const findings =\n result.inlineFindings.length === 0\n ? \"No inline findings.\"\n : result.inlineFindings.map((finding) => `- ${finding.body}`).join(\"\\n\");\n return `## Summary\\n\\n${result.summary.body}\\n\\n## Findings\\n\\n${findings}`;\n}\n\nfunction registerReviewRecipeEntrypoints(\n api: PiprBuilder,\n task: Task,\n options: ReviewRecipeOptions,\n): void {\n const changeRequest = reviewChangeRequestEntrypoint(options);\n if (changeRequest) {\n api.on.changeRequest({ actions: changeRequest, task });\n }\n const command = reviewCommandEntrypoint(options);\n if (command) {\n api.command({ pattern: command.pattern, ...command.options, task });\n }\n}\n\nfunction reviewChangeRequestEntrypoint(\n options: ReviewRecipeOptions,\n): ChangeRequestAction[] | undefined {\n const entrypoint = options.entrypoints?.changeRequest;\n return entrypoint === false\n ? undefined\n : (entrypoint ?? [\"opened\", \"updated\", \"reopened\", \"ready\"]);\n}\n\nfunction reviewCommandEntrypoint(options: ReviewRecipeOptions):\n | {\n pattern: string;\n options: CommandOptions<unknown>;\n }\n | undefined {\n const entrypoint = options.entrypoints?.command;\n if (entrypoint === false) {\n return undefined;\n }\n if (typeof entrypoint === \"object\") {\n return {\n pattern: entrypoint.pattern ?? \"@pipr review\",\n options: {\n permission: entrypoint.permission ?? \"write\",\n description: entrypoint.description,\n },\n };\n }\n return {\n pattern: entrypoint ?? \"@pipr review\",\n options: { permission: \"write\" as const },\n };\n}\n\nfunction mergePublicationConfig(\n target: RuntimePlan[\"publication\"],\n next: PublicationOptions | undefined,\n): void {\n if (!next) {\n return;\n }\n if (next.maxInlineComments !== undefined) {\n if (\n target.maxInlineComments !== undefined &&\n target.maxInlineComments !== next.maxInlineComments\n ) {\n throw new Error(\"pipr.config publication.maxInlineComments conflicts with existing value\");\n }\n target.maxInlineComments = next.maxInlineComments;\n }\n if (next.autoResolve !== undefined) {\n if (\n target.autoResolve !== undefined &&\n stableJson(target.autoResolve) !== stableJson(next.autoResolve)\n ) {\n throw new Error(\"pipr.config publication.autoResolve conflicts with existing value\");\n }\n target.autoResolve = next.autoResolve;\n }\n}\n\nfunction mergeConfigField<T>(\n name: string,\n current: T | undefined,\n next: T | undefined,\n): T | undefined {\n if (next === undefined) {\n return current;\n }\n if (current !== undefined && stableJson(current) !== stableJson(next)) {\n throw new Error(`pipr.config ${name} conflicts with existing value`);\n }\n return next;\n}\n\nfunction mergeLimits(current: RuntimeLimits | undefined, next: RuntimeLimits | undefined) {\n if (!next) {\n return current;\n }\n assertRuntimeLimitConflicts(current, next);\n return {\n ...current,\n ...next,\n diffManifest:\n (next.diffManifest ?? current?.diffManifest)\n ? { ...current?.diffManifest, ...next.diffManifest }\n : undefined,\n };\n}\n\nfunction assertRuntimeLimitConflicts(\n current: RuntimeLimits | undefined,\n next: RuntimeLimits,\n): void {\n const currentRecord = current as Record<string, unknown> | undefined;\n for (const [key, value] of Object.entries(next)) {\n if (key === \"diffManifest\") {\n continue;\n }\n if (\n value !== undefined &&\n currentRecord?.[key] !== undefined &&\n stableJson(currentRecord[key]) !== stableJson(value)\n ) {\n throw new Error(`pipr.config limits.${key} conflicts with existing value`);\n }\n }\n assertDiffManifestLimitConflicts(current, next);\n}\n\nfunction assertDiffManifestLimitConflicts(\n current: RuntimeLimits | undefined,\n next: RuntimeLimits,\n): void {\n if (current?.diffManifest && next.diffManifest) {\n for (const [key, value] of Object.entries(next.diffManifest)) {\n if (\n value !== undefined &&\n (current.diffManifest as Record<string, unknown>)[key] !== undefined &&\n (current.diffManifest as Record<string, unknown>)[key] !== value\n ) {\n throw new Error(`pipr.config limits.diffManifest.${key} conflicts with existing value`);\n }\n }\n }\n}\n\nfunction createAgent<Input, Output>(\n definition: AgentDefinition<Input, Output>,\n): Agent<Input, Output> {\n return {\n kind: \"pipr.agent\",\n name: definition.name,\n definition,\n extend(patch) {\n return createAgent({\n ...definition,\n ...patch,\n instructions:\n patch.instructions === undefined\n ? definition.instructions\n : {\n kind: \"pipr.prompt\",\n value:\n `${renderPromptValue(definition.instructions)}\\n\\n${renderPromptValue(patch.instructions)}`.trim(),\n },\n });\n },\n };\n}\n\nfunction assertUnique(values: string[], label: string): void {\n const seen = new Set<string>();\n for (const value of values) {\n if (seen.has(value)) {\n throw new Error(`Duplicate ${label} '${value}'`);\n }\n seen.add(value);\n }\n}\n\nfunction assertModelIdentity(models: ModelProfile[]): void {\n assertNoDuplicateModelConfigs(models);\n assertUniqueModelIds(models);\n assertProviderModelAliasesDisambiguated(models);\n}\n\nfunction assertNoDuplicateModelConfigs(models: ModelProfile[]): void {\n const effectiveConfigs = new Map<string, string>();\n for (const model of models) {\n const effectiveConfig = stableJson({\n provider: model.provider,\n model: model.model,\n apiKeyEnv: model.apiKey?.name,\n options: model.options,\n });\n const existingConfigId = effectiveConfigs.get(effectiveConfig);\n if (existingConfigId) {\n throw new Error(\n `Duplicate model config for '${model.id}'. Reuse model '${existingConfigId}' instead.`,\n );\n }\n effectiveConfigs.set(effectiveConfig, model.id);\n }\n}\n\nfunction assertUniqueModelIds(models: ModelProfile[]): void {\n const ids = new Set<string>();\n for (const model of models) {\n if (ids.has(model.id)) {\n const providerModel = `${model.provider}/${model.model}`;\n throw new Error(\n model.id === providerModel\n ? `Model '${providerModel}' is configured more than once with different options. Add an explicit id.`\n : `Duplicate model id '${model.id}'`,\n );\n }\n ids.add(model.id);\n }\n}\n\nfunction assertProviderModelAliasesDisambiguated(models: ModelProfile[]): void {\n const providerModels = new Map<string, string>();\n for (const model of models) {\n const providerModel = `${model.provider}/${model.model}`;\n const existingProviderModelId = providerModels.get(providerModel);\n if (\n existingProviderModelId &&\n (model.id === providerModel || existingProviderModelId === providerModel)\n ) {\n throw new Error(\n `Model '${providerModel}' is configured more than once with different options. Add an explicit id.`,\n );\n }\n providerModels.set(providerModel, model.id);\n }\n}\n\nfunction stableJson(value: unknown): string {\n return JSON.stringify(stableJsonValue(value));\n}\n\nfunction stableJsonValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(stableJsonValue);\n }\n if (typeof value === \"object\" && value !== null) {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .filter(([, item]) => item !== undefined)\n .toSorted(([left], [right]) => left.localeCompare(right))\n .map(([key, item]) => [key, stableJsonValue(item)]),\n );\n }\n return value;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","names":["z","z","coreReviewResultSchema","coreReviewSummarySchema","z"],"sources":["../src/prompt.ts","../src/review-contract.ts","../src/schema.ts","../src/types/task.ts","../src/builder.ts"],"sourcesContent":["import type { Markdown } from \"./types/prompt.js\";\n\n/** Creates trimmed Markdown from a template literal with common indentation removed. */\nexport function md(strings: TemplateStringsArray, ...values: unknown[]): Markdown {\n let text = \"\";\n for (let index = 0; index < strings.length; index += 1) {\n text += strings[index] ?? \"\";\n if (index < values.length) {\n text += String(values[index] ?? \"\");\n }\n }\n return stripCommonIndent(text).trim();\n}\n\n/** Removes common leading indentation from multiline text. */\nexport function stripCommonIndent(value: string): string {\n const lines = value.replaceAll(\"\\t\", \" \").split(/\\r?\\n/);\n const nonEmpty = lines.filter((line) => line.trim().length > 0);\n const indent = Math.min(...nonEmpty.map((line) => line.match(/^ */)?.[0].length ?? 0));\n return lines.map((line) => line.slice(indent)).join(\"\\n\");\n}\n","import { z } from \"zod\";\nimport type { ZodSchema } from \"./types/schema.js\";\n\n/** Markdown summary produced by a reviewer for the main review comment. */\nexport type ReviewSummary = {\n title?: string;\n body: string;\n};\n\n/** One inline review finding targeting a Diff Manifest commentable range. */\nexport type ReviewFinding = {\n body: string;\n path: string;\n rangeId: string;\n side: \"RIGHT\" | \"LEFT\";\n startLine: number;\n endLine: number;\n suggestedFix?: string;\n};\n\n/** Core structured review result accepted by pipr review publication. */\nexport type ReviewResult = {\n summary: ReviewSummary;\n inlineFindings: ReviewFinding[];\n};\n\nconst nonEmptyStringSchema = z.string().min(1);\nconst positiveIntegerSchema = z.number().int().positive();\n\n/** Zod schema for a review summary. */\nexport const reviewSummarySchema: ZodSchema<ReviewSummary> = z.strictObject({\n title: nonEmptyStringSchema.optional(),\n body: nonEmptyStringSchema,\n});\n\n/** Zod schema for one inline review finding. */\nexport const reviewFindingSchema: ZodSchema<ReviewFinding> = z.strictObject({\n body: nonEmptyStringSchema,\n path: nonEmptyStringSchema,\n rangeId: nonEmptyStringSchema,\n side: z.enum([\"RIGHT\", \"LEFT\"]),\n startLine: positiveIntegerSchema,\n endLine: positiveIntegerSchema,\n suggestedFix: nonEmptyStringSchema.optional(),\n});\n\n/** Zod schema for pipr's core pull request review result. */\nexport const reviewResultSchema: ZodSchema<ReviewResult> = z.strictObject({\n summary: reviewSummarySchema,\n inlineFindings: z.array(reviewFindingSchema),\n});\n\n/** Parses model output for pipr's main pull request review schema. */\nexport function parseReviewResult(value: unknown): ReviewResult {\n return reviewResultSchema.parse(value) as ReviewResult;\n}\n\n/** Parses a review summary value. */\nexport function parseReviewSummary(value: unknown): ReviewSummary {\n return reviewSummarySchema.parse(value);\n}\n\n/** Parses one inline review finding. */\nexport function parseReviewFinding(value: unknown): ReviewFinding {\n return reviewFindingSchema.parse(value) as ReviewFinding;\n}\n\n/** Returns a small valid example for the main pull request review schema. */\nexport function reviewSchemaExample(): ReviewResult {\n return {\n summary: {\n title: \"Optional concise review title.\",\n body: \"Concise pull request review summary.\",\n },\n inlineFindings: [\n {\n body: \"Specific issue and why it matters.\",\n path: \"src/example.ts\",\n rangeId: \"rng_example\",\n side: \"RIGHT\",\n startLine: 1,\n endLine: 1,\n suggestedFix: \"return safeValue;\",\n },\n ],\n };\n}\n","import { z } from \"zod\";\nimport type { ReviewResult, ReviewSummary } from \"./review-contract.js\";\nimport {\n reviewResultSchema as coreReviewResultSchema,\n reviewSummarySchema as coreReviewSummarySchema,\n} from \"./review-contract.js\";\nimport type { BuiltinSchemaCatalog } from \"./types/agent.js\";\nimport type {\n JsonSchema,\n JsonSchemaDefinition,\n Schema,\n SchemaDefinition,\n ZodSchema,\n} from \"./types/schema.js\";\n\nconst coreReviewOutputSchemaId = \"core/pr-review\";\n\n/** Defines a typed schema from a Zod schema. */\nexport function schema<T>(definition: SchemaDefinition<T>): Schema<T> {\n if (!definition || typeof definition.id !== \"string\") {\n throw new Error(\"pipr.schema requires { id, schema }\");\n }\n assertUserSchemaId(definition.id);\n return createZodSchema(definition.id, definition.schema);\n}\n\n/** Defines a typed schema from JSON Schema. The generic type is caller supplied. */\nexport function jsonSchema<T>(definition: JsonSchemaDefinition): Schema<T> {\n if (!definition || typeof definition.id !== \"string\") {\n throw new Error(\"pipr.jsonSchema requires { id, schema }\");\n }\n assertUserSchemaId(definition.id);\n const zodSchema = z.fromJSONSchema(definition.schema);\n return createSchema(definition.id, (value) => zodSchema.parse(value) as T, definition.schema);\n}\n\n/** Built-in schemas available as reusable agent output contracts. */\nexport const schemas: BuiltinSchemaCatalog = {\n review: createZodSchema<ReviewResult>(coreReviewOutputSchemaId, coreReviewResultSchema),\n summary: createZodSchema<ReviewSummary>(\"core/summary\", coreReviewSummarySchema),\n};\n\nfunction createSchema<T>(\n id: string,\n parseValue: (value: unknown) => T,\n schemaJson?: JsonSchema,\n): Schema<T> {\n return {\n kind: \"pipr.schema\",\n id,\n jsonSchema: schemaJson,\n parse(value) {\n return parseValue(value);\n },\n safeParse(value) {\n try {\n return { success: true, data: parseValue(value) };\n } catch (error) {\n return {\n success: false,\n error: error instanceof Error ? error : new Error(String(error)),\n };\n }\n },\n };\n}\n\nfunction createZodSchema<T>(id: string, zodSchema: ZodSchema<T>): Schema<T> {\n return createSchema(id, (value) => zodSchema.parse(value), jsonSchemaFromZod(id, zodSchema));\n}\n\nfunction assertUserSchemaId(id: string): void {\n if (id.startsWith(\"core/\")) {\n throw new Error(`Schema id '${id}' uses the reserved core/ namespace`);\n }\n}\n\nfunction jsonSchemaFromZod<T>(id: string, schemaDefinition: ZodSchema<T>): JsonSchema {\n try {\n return z.toJSONSchema(schemaDefinition) as JsonSchema;\n } catch (error) {\n const detail = error instanceof Error ? error.message : String(error);\n throw new Error(\n `Schema '${id}' could not be converted to JSON Schema. Use JSON-Schema-representable Zod or pipr.jsonSchema<T>(). ${detail}`,\n );\n }\n}\n","import type { ReviewFinding, ReviewResult } from \"../review-contract.js\";\nimport type {\n Agent,\n AgentDefinition,\n AgentPromptContext,\n AgentTool,\n BuiltinSchemaCatalog,\n BuiltinToolCatalog,\n} from \"./agent.js\";\nimport type {\n ChangeRequestAction,\n DurationInput,\n ModelOptions,\n ModelProfile,\n PiprConfigOptions,\n RepositoryPermission,\n SecretOptions,\n SecretRef,\n} from \"./config.js\";\nimport type { DiffManifest, DiffManifestOptions, PathFilter } from \"./manifest.js\";\nimport type {\n JsonPromptOptions,\n Markdown,\n PromptSource,\n PromptText,\n PromptValue,\n} from \"./prompt.js\";\nimport type { JsonSchemaDefinition, Schema, SchemaDefinition } from \"./schema.js\";\n\n/** Final review comment value produced by a task or review recipe. */\nexport type CommentValue =\n | Markdown\n | {\n main?: Markdown;\n inlineFindings?: readonly ReviewFinding[];\n };\n\n/** Prior inline finding persisted by earlier pipr review state. */\nexport type PriorInlineFinding = {\n id: string;\n status: \"open\" | \"resolved\";\n path: string;\n rangeId: string;\n side: \"RIGHT\" | \"LEFT\";\n startLine: number;\n endLine: number;\n};\n\n/** Prior pipr review state available to tasks through `ctx.review.prior()`. */\nexport type PriorReview = {\n main?: Markdown;\n reviewedHeadSha?: string;\n inlineFindings: readonly PriorInlineFinding[];\n};\n\n/** Function run by a task entrypoint. */\nexport type TaskHandler<Input> = (context: TaskContext, input: Input) => void | Promise<void>;\n\n/** Check-run publication options for one task. */\nexport type TaskCheckOptions =\n | false\n | {\n enabled?: boolean;\n name?: string;\n required?: boolean;\n };\n\n/** Definition used to register a task. */\nexport type TaskDefinition<Input> = {\n name: string;\n check?: TaskCheckOptions;\n local?: false;\n run: TaskHandler<Input>;\n};\n\n/** Registered task that can be selected by change-request and command entrypoints. */\nexport type Task<Input = void> = {\n readonly kind: \"pipr.task\";\n readonly name: string;\n readonly check?: TaskCheckOptions;\n readonly local?: false;\n readonly handler: TaskHandler<Input>;\n};\n\n/** Options shared by command registrations. */\nexport type CommandOptions<Input> = {\n permission?: RepositoryPermission;\n description?: string;\n parse?: (arguments_: Record<string, string>) => Input;\n};\n\n/** Definition used to register an `@pipr` command. */\nexport type CommandRegistrationOptions<Input> = CommandOptions<Input> & {\n pattern: string;\n task: Task<Input>;\n};\n\n/** Options for creating a reusable reviewer agent. */\nexport type ReviewerOptions = {\n name?: string;\n model: ModelProfile;\n fallbacks?: ModelProfile[];\n instructions: PromptSource;\n prompt?: (\n input: DefaultReviewInput,\n context: AgentPromptContext,\n ) => PromptSource | Promise<PromptSource>;\n tools?: readonly AgentTool[];\n timeout?: DurationInput;\n};\n\n/** Reviewer agent that emits pipr's core review result. */\nexport type Reviewer = Agent<DefaultReviewInput, ReviewResult>;\n\n/** Entrypoints created by `pipr.review`. */\nexport type ReviewEntrypoints = {\n changeRequest?: readonly ChangeRequestAction[] | false;\n command?:\n | string\n | false\n | {\n pattern?: string;\n permission?: RepositoryPermission;\n description?: string;\n };\n};\n\n/** Default change-request actions used by `pipr.review`. */\nexport const defaultReviewActions = [\n \"opened\",\n \"updated\",\n \"reopened\",\n \"ready\",\n] as const satisfies readonly ChangeRequestAction[];\n\n/** Default change-request and command entrypoints used by `pipr.review`. */\nexport const defaultReviewEntrypoints = {\n changeRequest: defaultReviewActions,\n command: { pattern: \"@pipr review\", permission: \"write\" },\n} as const satisfies ReviewEntrypoints;\n\ntype ReviewRecipeEntrypointOptions = {\n id: string;\n entrypoints?: ReviewEntrypoints;\n comment?:\n | CommentValue\n | ((\n result: ReviewResult,\n context: ReviewCommentContext,\n ) => CommentValue | Promise<CommentValue>);\n check?: TaskCheckOptions;\n timeout?: DurationInput;\n paths?: PathFilter;\n};\n\n/** Options for `pipr.review`, pipr's default review recipe. */\nexport type ReviewRecipeOptions =\n | (ReviewRecipeEntrypointOptions & { reviewer: Reviewer })\n | (ReviewRecipeEntrypointOptions & ReviewerOptions & { reviewer?: undefined });\n\n/** Default input passed to a reviewer created by `pipr.review`. */\nexport type DefaultReviewInput = {\n manifest: DiffManifest;\n change: ChangeRequestInfo;\n};\n\n/** Context passed to a custom review comment renderer. */\nexport type ReviewCommentContext = {\n review: { id: string };\n repository: RepositoryInfo;\n change: ChangeRequestContext;\n platform: PlatformInfo;\n};\n\n/** Plugin installer returned by `definePlugin`. */\nexport type PiprPlugin<Handle> = {\n setup(builder: PiprBuilder): Handle;\n};\n\n/** Definition for a custom tool registered by config or plugins. */\nexport type PluginToolDefinition<Input, Output> = {\n name: string;\n description: string;\n input: Schema<Input>;\n output: Schema<Output>;\n run(options: ToolRunOptions<Input>): Output | Promise<Output>;\n toModelOutput?(output: Output): PromptValue;\n};\n\n/** Runtime input passed to a tool implementation. */\nexport type ToolRunOptions<Input> = {\n input: Input;\n ctx: TaskContext;\n signal?: AbortSignal;\n};\n\n/** Definition used to register a task for pull request actions. */\nexport type ChangeRequestRegistrationOptions<Input> = {\n actions: readonly ChangeRequestAction[];\n task: Task<Input>;\n};\n\n/** Handle for reporting task check status from inside a task. */\nexport type CheckHandle = {\n pass(summary?: string): void;\n fail(summary?: string): void;\n neutral(summary?: string): void;\n};\n\n/** Builder API available inside `definePipr`. */\nexport type PiprBuilder = {\n readonly tools: BuiltinToolCatalog;\n readonly schemas: BuiltinSchemaCatalog;\n readonly on: {\n changeRequest<Input = void>(options: ChangeRequestRegistrationOptions<Input>): void;\n };\n secret(options: SecretOptions): SecretRef;\n model(options: ModelOptions): ModelProfile;\n agent<Input, Output>(definition: AgentDefinition<Input, Output>): Agent<Input, Output>;\n task<Input = void>(definition: TaskDefinition<Input>): Task<Input>;\n reviewer(options: ReviewerOptions): Reviewer;\n review(options: ReviewRecipeOptions): void;\n config(options: PiprConfigOptions): void;\n command<Input = void>(options: CommandRegistrationOptions<Input>): void;\n use<Handle>(plugin: PiprPlugin<Handle>): Handle;\n tool<Input, Output>(definition: PluginToolDefinition<Input, Output>): AgentTool<Input, Output>;\n schema<T>(definition: SchemaDefinition<T>): Schema<T>;\n jsonSchema<T>(definition: JsonSchemaDefinition): Schema<T>;\n prompt(strings: TemplateStringsArray, ...values: PromptValue[]): PromptText;\n section(title: string, value: PromptValue): PromptText;\n json(value: unknown, options?: JsonPromptOptions): PromptText;\n};\n\n/** Repository metadata available to tasks and agents. */\nexport type RepositoryInfo = {\n root: string;\n owner?: string;\n name: string;\n defaultBranch?: string;\n remoteUrl?: string;\n};\n\n/** Pull request or change-request metadata available to tasks and agents. */\nexport type ChangeRequestInfo = {\n number?: number;\n title: string;\n description: string;\n url?: string;\n author?: { login: string };\n base: { ref?: string; sha: string };\n head: { ref?: string; sha: string };\n isFork?: boolean;\n};\n\n/** Code hosting platform metadata. */\nexport type PlatformInfo = {\n id: string;\n};\n\n/** Change-request context available inside tasks. */\nexport type ChangeRequestContext = ChangeRequestInfo & {\n diffManifest(options?: DiffManifestOptions): Promise<DiffManifest>;\n changedFiles(): Promise<Array<{ path: string; previousPath?: string; status: string }>>;\n currentHeadSha(): Promise<string>;\n};\n\n/** Runner for invoking Pi agents from tasks. */\nexport type PiRunner = {\n run<Input, Output>(\n agent: Agent<Input, Output>,\n input: Input,\n options?: {\n model?: ModelProfile;\n fallbacks?: ModelProfile[];\n instructions?: PromptSource;\n timeout?: DurationInput;\n paths?: PathFilter;\n },\n ): Promise<Output>;\n};\n\n/** Command context available inside command-triggered tasks. */\nexport type CommandContext = {\n readonly name: string;\n readonly line: string;\n readonly arguments: Record<string, string>;\n reply(markdown: Markdown): Promise<void>;\n};\n\n/** Context object passed to task handlers. */\nexport type TaskContext = {\n /** Stable id for the selected Review Run, not the process attempt. */\n readonly run: { id: string };\n readonly repository: RepositoryInfo;\n readonly change: ChangeRequestContext;\n readonly platform: PlatformInfo;\n readonly pi: PiRunner;\n readonly command?: CommandContext;\n secret(secret: SecretRef): string;\n readonly review: {\n prior(): Promise<PriorReview>;\n };\n readonly check: CheckHandle;\n comment(value: CommentValue): Promise<void>;\n readonly log: {\n info(message: string): void;\n warn(message: string): void;\n error(message: string): void;\n };\n};\n","import { z } from \"zod\";\nimport { assertSupportedCommandRestCapture } from \"./command-grammar.js\";\nimport {\n builtinReadOnlyToolBrand,\n configFactoryBrand,\n type InternalPiprConfigFactory,\n} from \"./internal-contract.js\";\nimport { stripCommonIndent } from \"./prompt.js\";\nimport { renderPromptValue } from \"./prompt-render.js\";\nimport type { ReviewResult } from \"./review-contract.js\";\nimport type { RuntimePlan } from \"./runtime-contract.js\";\nimport { jsonSchema, schema, schemas } from \"./schema.js\";\nimport type { Agent, AgentDefinition, AgentTool, BuiltinToolCatalog } from \"./types/agent.js\";\nimport type {\n AggregateCheckOptions,\n AutoResolveOptions,\n AutoResolveUserRepliesOptions,\n ChangeRequestAction,\n ChecksOptions,\n ModelProfile,\n PiprConfigOptions,\n PublicationOptions,\n} from \"./types/config.js\";\nimport type { DiffManifestLimits, RuntimeLimits } from \"./types/manifest.js\";\nimport type { Markdown } from \"./types/prompt.js\";\nimport type {\n CommandOptions,\n CommentValue,\n DefaultReviewInput,\n PiprBuilder,\n PiprPlugin,\n Reviewer,\n ReviewerOptions,\n ReviewRecipeOptions,\n Task,\n} from \"./types/task.js\";\nimport { defaultReviewActions, defaultReviewEntrypoints } from \"./types/task.js\";\n\n/** Defines a synchronous pipr configuration factory. */\nexport function definePipr(configure: (pipr: PiprBuilder) => void): {\n readonly kind: \"pipr.config-factory\";\n} {\n const factory = {\n kind: \"pipr.config-factory\",\n [configFactoryBrand]: true,\n build() {\n const builder = createBuilder();\n const result = configure(builder.api);\n if (\n typeof result === \"object\" &&\n result !== null &&\n typeof Reflect.get(result, \"then\") === \"function\"\n ) {\n throw new Error(\"definePipr configuration callback must be synchronous\");\n }\n return builder.plan();\n },\n } satisfies InternalPiprConfigFactory;\n return factory;\n}\n\n/** Defines a typed pipr plugin installer. */\nexport function definePlugin<Handle>(setup: (builder: PiprBuilder) => Handle): PiprPlugin<Handle> {\n return { setup };\n}\n\nfunction createBuilder(): { api: PiprBuilder; plan(): RuntimePlan } {\n const models: ModelProfile[] = [];\n const agents: Agent[] = [];\n const tasks: Task<unknown>[] = [];\n const changeRequestTriggers: RuntimePlan[\"changeRequestTriggers\"] = [];\n const commands: RuntimePlan[\"commands\"] = [];\n const tools: AgentTool[] = [];\n const publication: RuntimePlan[\"publication\"] = {};\n let checks: ChecksOptions | undefined;\n let limits: RuntimeLimits | undefined;\n\n const api: PiprBuilder = {\n tools: {\n readOnly: [\n {\n kind: \"pipr.tool\",\n name: \"readOnly\",\n [builtinReadOnlyToolBrand]: true,\n } as AgentTool,\n ],\n } satisfies BuiltinToolCatalog,\n schemas,\n on: {\n changeRequest(options) {\n if (!Array.isArray(options.actions) || !options.task) {\n throw new Error(\"pipr.on.changeRequest requires { actions, task }\");\n }\n changeRequestTriggers.push({\n actions: [...options.actions],\n task: options.task as Task<unknown>,\n });\n },\n },\n secret(options) {\n if (!options || typeof options.name !== \"string\") {\n throw new Error(\"pipr.secret requires { name }\");\n }\n if (!/^[A-Z_][A-Z0-9_]*$/.test(options.name)) {\n throw new Error(`Secret '${options.name}' must be an environment variable name`);\n }\n return { kind: \"pipr.secret\", name: options.name };\n },\n model(options) {\n if (!options || typeof options.provider !== \"string\" || typeof options.model !== \"string\") {\n throw new Error(\"pipr.model requires { provider, model }\");\n }\n if (!options.provider || !options.model) {\n throw new Error(\"pipr.model requires provider and model\");\n }\n const id = options.id ?? `${options.provider}/${options.model}`;\n const profile: ModelProfile = {\n kind: \"pipr.model\",\n id,\n provider: options.provider,\n model: options.model,\n apiKey: options.apiKey,\n options: options.options,\n };\n models.push(profile);\n return profile;\n },\n agent(definition) {\n const agent = createAgent(definition);\n agents.push(agent);\n return agent;\n },\n task(definition) {\n if (!definition.name || typeof definition.run !== \"function\") {\n throw new Error(\"pipr.task requires { name, run }\");\n }\n const task = {\n kind: \"pipr.task\" as const,\n name: definition.name,\n check: definition.check,\n ...(definition.local === false ? { local: false as const } : {}),\n handler: definition.run,\n };\n tasks.push(task as Task<unknown>);\n return task;\n },\n reviewer(options) {\n return createReviewer(api, options);\n },\n review(options) {\n assertKnownReviewRecipeOptions(options);\n registerReviewRecipe(api, options);\n },\n config(options) {\n assertKnownPiprConfigOptions(options);\n mergePublicationConfig(publication, options.publication);\n checks = mergeConfigField(\"checks\", checks, options.checks);\n limits = mergeLimits(limits, options.limits);\n },\n command(options) {\n if (typeof options.pattern !== \"string\" || !options.task) {\n throw new Error(\"pipr.command requires { pattern, task }\");\n }\n const pattern = options.pattern;\n const tokens = pattern.trim().split(/\\s+/).filter(Boolean);\n if (tokens.length === 0) {\n throw new Error(\"Command pattern must not be empty\");\n }\n if (tokens[0] !== \"@pipr\") {\n throw new Error(`Command pattern '${pattern}' must start with @pipr`);\n }\n assertSupportedCommandRestCapture(pattern);\n commands.push({\n pattern,\n permission: options.permission ?? \"write\",\n description: options.description,\n parse: options.parse as ((arguments_: Record<string, string>) => unknown) | undefined,\n task: options.task as Task<unknown>,\n });\n },\n use(plugin) {\n return plugin.setup(api);\n },\n tool(definition) {\n if (definition.name === \"readOnly\") {\n throw new Error(\"Tool name 'readOnly' is reserved for pipr built-in tools\");\n }\n const run = definition.run;\n if (!run) {\n throw new Error(`Tool '${definition.name}' must define run`);\n }\n const tool = {\n kind: \"pipr.tool\" as const,\n ...definition,\n run,\n };\n tools.push(tool);\n return tool;\n },\n schema,\n jsonSchema,\n prompt(strings, ...values) {\n let text = \"\";\n for (let index = 0; index < strings.length; index += 1) {\n text += strings[index] ?? \"\";\n if (index < values.length) {\n text += renderPromptValue(values[index]);\n }\n }\n return {\n kind: \"pipr.prompt\",\n value: stripCommonIndent(text).trim(),\n };\n },\n section(title, value) {\n const rendered = renderPromptValue(value);\n return {\n kind: \"pipr.prompt\",\n value: `## ${title}\\n\\n${rendered}`,\n };\n },\n json(value, options) {\n const text = JSON.stringify(value, null, options?.pretty === false ? 0 : 2);\n if (options?.maxCharacters !== undefined && text.length > options.maxCharacters) {\n throw new Error(`JSON prompt value exceeded ${options.maxCharacters} characters`);\n }\n return { kind: \"pipr.prompt\", value: text };\n },\n };\n\n return {\n api,\n plan() {\n assertUnique(\n tasks.map((task) => task.name),\n \"task\",\n );\n assertUnique(\n commands.map((command) => command.pattern),\n \"command\",\n );\n assertModelIdentity(models);\n return {\n models,\n agents,\n tasks,\n changeRequestTriggers,\n commands,\n tools,\n publication,\n checks,\n limits,\n };\n },\n };\n}\n\nfunction registerReviewRecipe(api: PiprBuilder, options: ReviewRecipeOptions): void {\n const id = options.id;\n const agent = options.reviewer ?? createReviewer(api, reviewRecipeReviewerOptions(options, id));\n\n const task = createReviewRecipeTask(api, id, agent, options);\n registerReviewRecipeEntrypoints(api, task, options);\n}\n\nconst reviewRecipeOptionKeys = new Set([\n \"id\",\n \"entrypoints\",\n \"comment\",\n \"check\",\n \"timeout\",\n \"paths\",\n \"reviewer\",\n \"name\",\n \"model\",\n \"fallbacks\",\n \"instructions\",\n \"prompt\",\n \"tools\",\n]);\n\nconst reviewRecipeEntrypointKeys = new Set([\"changeRequest\", \"command\"]);\n\nconst modelProfileConfigSchema: z.ZodType<ModelProfile> = z.custom<ModelProfile>(\n (value) =>\n typeof value === \"object\" &&\n value !== null &&\n (value as { kind?: unknown }).kind === \"pipr.model\" &&\n typeof (value as { id?: unknown }).id === \"string\" &&\n typeof (value as { provider?: unknown }).provider === \"string\" &&\n typeof (value as { model?: unknown }).model === \"string\",\n);\n\nconst autoResolveUserRepliesOptionsSchema: z.ZodType<AutoResolveUserRepliesOptions> =\n z.strictObject({\n enabled: z.boolean().optional(),\n respondWhenStillValid: z.boolean().optional(),\n allowedActors: z.enum([\"author-or-write\", \"write\", \"any\"]).optional(),\n });\n\nconst autoResolveOptionsSchema: z.ZodType<AutoResolveOptions> = z.union([\n z.literal(false),\n z.strictObject({\n enabled: z.boolean().optional(),\n model: modelProfileConfigSchema.optional(),\n instructions: z.string().min(1).max(4000).optional(),\n synchronize: z.boolean().optional(),\n userReplies: z.union([z.boolean(), autoResolveUserRepliesOptionsSchema]).optional(),\n }),\n]);\n\nconst publicationOptionsSchema: z.ZodType<PublicationOptions> = z.strictObject({\n maxInlineComments: z.number().int().min(0).max(50).optional(),\n autoResolve: autoResolveOptionsSchema.optional(),\n});\n\nconst aggregateCheckOptionsSchema: z.ZodType<AggregateCheckOptions> = z.union([\n z.literal(false),\n z.strictObject({\n enabled: z.boolean().optional(),\n name: z.string().min(1).optional(),\n }),\n]);\n\nconst checksOptionsSchema: z.ZodType<ChecksOptions> = z.strictObject({\n aggregate: aggregateCheckOptionsSchema.optional(),\n});\n\nconst diffManifestLimitsSchema: z.ZodType<DiffManifestLimits> = z.strictObject({\n fullMaxBytes: z.number().int().positive().optional(),\n fullMaxEstimatedTokens: z.number().int().positive().optional(),\n condensedMaxBytes: z.number().int().positive().optional(),\n condensedMaxEstimatedTokens: z.number().int().positive().optional(),\n toolResponseMaxBytes: z.number().int().positive().optional(),\n});\n\nconst runtimeLimitsSchema: z.ZodType<RuntimeLimits> = z.strictObject({\n timeoutSeconds: z.number().int().positive().max(3600).optional(),\n diffManifest: diffManifestLimitsSchema.optional(),\n});\n\nconst piprConfigOptionsSchema: z.ZodType<PiprConfigOptions> = z.strictObject({\n publication: publicationOptionsSchema.optional(),\n checks: checksOptionsSchema.optional(),\n limits: runtimeLimitsSchema.optional(),\n});\n\nfunction assertKnownReviewRecipeOptions(options: ReviewRecipeOptions): void {\n const unknownKeys = Object.keys(options).filter((key) => !reviewRecipeOptionKeys.has(key));\n if (unknownKeys.length > 0) {\n throw new Error(`pipr.review received unsupported option fields: ${unknownKeys.join(\", \")}.`);\n }\n\n const entrypoints = options.entrypoints;\n if (entrypoints && typeof entrypoints === \"object\") {\n const unknownEntrypointKeys = Object.keys(entrypoints).filter(\n (key) => !reviewRecipeEntrypointKeys.has(key),\n );\n if (unknownEntrypointKeys.length > 0) {\n throw new Error(\n `pipr.review entrypoints received unsupported fields: ${unknownEntrypointKeys.join(\", \")}.`,\n );\n }\n }\n}\n\nfunction assertKnownPiprConfigOptions(options: unknown): asserts options is PiprConfigOptions {\n const parsed = piprConfigOptionsSchema.safeParse(options);\n if (!parsed.success) {\n throw new Error(formatPiprConfigOptionsError(parsed.error));\n }\n}\n\nfunction formatPiprConfigOptionsError(error: z.ZodError): string {\n const unsupportedFields = firstUnsupportedConfigFields(error.issues, []);\n if (unsupportedFields) {\n return `${piprConfigLabel(unsupportedFields.path)} received unsupported option fields: ${unsupportedFields.keys.join(\n \", \",\n )}`;\n }\n return `pipr.config received invalid option value: ${z.prettifyError(error)}`;\n}\n\nfunction firstUnsupportedConfigFields(\n issues: readonly z.ZodIssue[],\n parentPath: readonly PropertyKey[],\n): { path: PropertyKey[]; keys: string[] } | undefined {\n for (const issue of issues) {\n const path = [...parentPath, ...issue.path];\n if (issue.code === \"unrecognized_keys\") {\n return { path, keys: issue.keys };\n }\n if (issue.code === \"invalid_union\") {\n for (const branchIssues of issue.errors) {\n const unsupportedFields = firstUnsupportedConfigFields(branchIssues, path);\n if (unsupportedFields) {\n return unsupportedFields;\n }\n }\n }\n }\n return undefined;\n}\n\nfunction piprConfigLabel(pathSegments: PropertyKey[]): string {\n const path = pathSegments.join(\".\");\n return path ? `pipr.config ${path}` : \"pipr.config\";\n}\n\nfunction reviewRecipeReviewerOptions(options: ReviewerOptions, name: string): ReviewerOptions {\n if (!options.model || !options.instructions) {\n throw new Error(\"pipr.review requires model and instructions when reviewer is not provided\");\n }\n return {\n name,\n model: options.model,\n fallbacks: options.fallbacks,\n instructions: options.instructions,\n prompt: options.prompt,\n tools: options.tools,\n timeout: options.timeout,\n };\n}\n\nfunction createReviewer(api: PiprBuilder, options: ReviewerOptions): Reviewer {\n return api.agent<DefaultReviewInput, ReviewResult>({\n name: options.name ?? \"reviewer\",\n model: options.model,\n fallbacks: options.fallbacks,\n instructions: options.instructions,\n tools: options.tools ?? api.tools.readOnly,\n output: api.schemas.review,\n timeout: options.timeout,\n prompt:\n options.prompt ??\n (() =>\n api.prompt`\n Review this change.\n `),\n });\n}\n\nfunction createReviewRecipeTask(\n api: PiprBuilder,\n id: string,\n agent: Agent<DefaultReviewInput, ReviewResult>,\n options: ReviewRecipeOptions,\n): Task {\n return api.task({\n name: id,\n check: options.check,\n async run(context) {\n const manifest = await context.change.diffManifest({\n compressed: true,\n paths: options.paths,\n });\n if (options.paths && manifest.files.length === 0) {\n context.check.neutral(\"No changed files matched this review's path scope.\");\n await context.comment({ main: \"No changed files matched this review's path scope.\" });\n return;\n }\n const result = await context.pi.run(\n agent,\n { manifest, change: context.change },\n {\n timeout: options.timeout,\n paths: options.paths,\n },\n );\n const source =\n typeof options.comment === \"function\"\n ? await options.comment(result, {\n review: { id },\n repository: context.repository,\n change: context.change,\n platform: context.platform,\n })\n : (options.comment ?? defaultReviewComment(result));\n await context.comment(source);\n },\n });\n}\n\nfunction defaultReviewComment(result: ReviewResult): CommentValue {\n return {\n main: defaultReviewMarkdown(result),\n inlineFindings: result.inlineFindings,\n };\n}\n\nfunction defaultReviewMarkdown(result: ReviewResult): Markdown {\n const findings =\n result.inlineFindings.length === 0\n ? \"No inline findings.\"\n : result.inlineFindings.map((finding) => `- ${finding.body}`).join(\"\\n\");\n return `## Summary\\n\\n${result.summary.body}\\n\\n## Findings\\n\\n${findings}`;\n}\n\nfunction registerReviewRecipeEntrypoints(\n api: PiprBuilder,\n task: Task,\n options: ReviewRecipeOptions,\n): void {\n const changeRequest = reviewChangeRequestEntrypoint(options);\n if (changeRequest) {\n api.on.changeRequest({ actions: changeRequest, task });\n }\n const command = reviewCommandEntrypoint(options);\n if (command) {\n api.command({ pattern: command.pattern, ...command.options, task });\n }\n}\n\nfunction reviewChangeRequestEntrypoint(\n options: ReviewRecipeOptions,\n): readonly ChangeRequestAction[] | undefined {\n const entrypoint = options.entrypoints?.changeRequest;\n return entrypoint === false ? undefined : (entrypoint ?? defaultReviewActions);\n}\n\nfunction reviewCommandEntrypoint(options: ReviewRecipeOptions):\n | {\n pattern: string;\n options: CommandOptions<unknown>;\n }\n | undefined {\n const entrypoint = options.entrypoints?.command;\n if (entrypoint === false) {\n return undefined;\n }\n if (typeof entrypoint === \"object\") {\n return {\n pattern: entrypoint.pattern ?? defaultReviewEntrypoints.command.pattern,\n options: {\n permission: entrypoint.permission ?? defaultReviewEntrypoints.command.permission,\n description: entrypoint.description,\n },\n };\n }\n return {\n pattern: entrypoint ?? defaultReviewEntrypoints.command.pattern,\n options: { permission: defaultReviewEntrypoints.command.permission },\n };\n}\n\nfunction mergePublicationConfig(\n target: RuntimePlan[\"publication\"],\n next: PublicationOptions | undefined,\n): void {\n if (!next) {\n return;\n }\n if (next.maxInlineComments !== undefined) {\n if (\n target.maxInlineComments !== undefined &&\n target.maxInlineComments !== next.maxInlineComments\n ) {\n throw new Error(\"pipr.config publication.maxInlineComments conflicts with existing value\");\n }\n target.maxInlineComments = next.maxInlineComments;\n }\n if (next.autoResolve !== undefined) {\n if (\n target.autoResolve !== undefined &&\n stableJson(target.autoResolve) !== stableJson(next.autoResolve)\n ) {\n throw new Error(\"pipr.config publication.autoResolve conflicts with existing value\");\n }\n target.autoResolve = next.autoResolve;\n }\n}\n\nfunction mergeConfigField<T>(\n name: string,\n current: T | undefined,\n next: T | undefined,\n): T | undefined {\n if (next === undefined) {\n return current;\n }\n if (current !== undefined && stableJson(current) !== stableJson(next)) {\n throw new Error(`pipr.config ${name} conflicts with existing value`);\n }\n return next;\n}\n\nfunction mergeLimits(current: RuntimeLimits | undefined, next: RuntimeLimits | undefined) {\n if (!next) {\n return current;\n }\n assertRuntimeLimitConflicts(current, next);\n return {\n ...current,\n ...next,\n diffManifest:\n (next.diffManifest ?? current?.diffManifest)\n ? { ...current?.diffManifest, ...next.diffManifest }\n : undefined,\n };\n}\n\nfunction assertRuntimeLimitConflicts(\n current: RuntimeLimits | undefined,\n next: RuntimeLimits,\n): void {\n const currentRecord = current as Record<string, unknown> | undefined;\n for (const [key, value] of Object.entries(next)) {\n if (key === \"diffManifest\") {\n continue;\n }\n if (\n value !== undefined &&\n currentRecord?.[key] !== undefined &&\n stableJson(currentRecord[key]) !== stableJson(value)\n ) {\n throw new Error(`pipr.config limits.${key} conflicts with existing value`);\n }\n }\n assertDiffManifestLimitConflicts(current, next);\n}\n\nfunction assertDiffManifestLimitConflicts(\n current: RuntimeLimits | undefined,\n next: RuntimeLimits,\n): void {\n if (current?.diffManifest && next.diffManifest) {\n for (const [key, value] of Object.entries(next.diffManifest)) {\n if (\n value !== undefined &&\n (current.diffManifest as Record<string, unknown>)[key] !== undefined &&\n (current.diffManifest as Record<string, unknown>)[key] !== value\n ) {\n throw new Error(`pipr.config limits.diffManifest.${key} conflicts with existing value`);\n }\n }\n }\n}\n\nfunction createAgent<Input, Output>(\n definition: AgentDefinition<Input, Output>,\n): Agent<Input, Output> {\n return {\n kind: \"pipr.agent\",\n name: definition.name,\n definition,\n extend(patch) {\n return createAgent({\n ...definition,\n ...patch,\n instructions:\n patch.instructions === undefined\n ? definition.instructions\n : {\n kind: \"pipr.prompt\",\n value:\n `${renderPromptValue(definition.instructions)}\\n\\n${renderPromptValue(patch.instructions)}`.trim(),\n },\n });\n },\n };\n}\n\nfunction assertUnique(values: string[], label: string): void {\n const seen = new Set<string>();\n for (const value of values) {\n if (seen.has(value)) {\n throw new Error(`Duplicate ${label} '${value}'`);\n }\n seen.add(value);\n }\n}\n\nfunction assertModelIdentity(models: ModelProfile[]): void {\n assertNoDuplicateModelConfigs(models);\n assertUniqueModelIds(models);\n assertProviderModelAliasesDisambiguated(models);\n}\n\nfunction assertNoDuplicateModelConfigs(models: ModelProfile[]): void {\n const effectiveConfigs = new Map<string, string>();\n for (const model of models) {\n const effectiveConfig = stableJson({\n provider: model.provider,\n model: model.model,\n apiKeyEnv: model.apiKey?.name,\n options: model.options,\n });\n const existingConfigId = effectiveConfigs.get(effectiveConfig);\n if (existingConfigId) {\n throw new Error(\n `Duplicate model config for '${model.id}'. Reuse model '${existingConfigId}' instead.`,\n );\n }\n effectiveConfigs.set(effectiveConfig, model.id);\n }\n}\n\nfunction assertUniqueModelIds(models: ModelProfile[]): void {\n const ids = new Set<string>();\n for (const model of models) {\n if (ids.has(model.id)) {\n const providerModel = `${model.provider}/${model.model}`;\n throw new Error(\n model.id === providerModel\n ? `Model '${providerModel}' is configured more than once with different options. Add an explicit id.`\n : `Duplicate model id '${model.id}'`,\n );\n }\n ids.add(model.id);\n }\n}\n\nfunction assertProviderModelAliasesDisambiguated(models: ModelProfile[]): void {\n const providerModels = new Map<string, string>();\n for (const model of models) {\n const providerModel = `${model.provider}/${model.model}`;\n const existingProviderModelId = providerModels.get(providerModel);\n if (\n existingProviderModelId &&\n (model.id === providerModel || existingProviderModelId === providerModel)\n ) {\n throw new Error(\n `Model '${providerModel}' is configured more than once with different options. Add an explicit id.`,\n );\n }\n providerModels.set(providerModel, model.id);\n }\n}\n\nfunction stableJson(value: unknown): string {\n return JSON.stringify(stableJsonValue(value));\n}\n\nfunction stableJsonValue(value: unknown): unknown {\n if (Array.isArray(value)) {\n return value.map(stableJsonValue);\n }\n if (typeof value === \"object\" && value !== null) {\n return Object.fromEntries(\n Object.entries(value as Record<string, unknown>)\n .filter(([, item]) => item !== undefined)\n .toSorted(([left], [right]) => left.localeCompare(right))\n .map(([key, item]) => [key, stableJsonValue(item)]),\n );\n }\n return value;\n}\n"],"mappings":"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"}
@@ -1,5 +1,4 @@
1
- import { $ as ChecksOptions, A as Task, B as AgentTool, I as Agent, Q as ChangeRequestAction, at as RepositoryPermission, it as PublicationOptions, nt as ModelProfile, q as PromptValue, vt as RuntimeLimits } from "./index-pT_8sPWD.mjs";
2
-
1
+ import { A as Task, H as AgentTool, R as Agent, Y as PromptValue, bt as RuntimeLimits, et as ChangeRequestAction, it as ModelProfile, ot as PublicationOptions, st as RepositoryPermission, tt as ChecksOptions } from "./index-DRF9W1TW.mjs";
3
2
  //#region src/runtime-contract.d.ts
4
3
  /** Runtime plan produced from user configuration. */
5
4
  type RuntimePlan = {
@@ -1 +1 @@
1
- {"version":3,"file":"internal.d.mts","names":[],"sources":["../src/runtime-contract.ts","../src/internal-contract.ts","../src/command-grammar.ts","../src/prompt-render.ts","../src/standalone-declaration.ts","../src/internal.ts"],"mappings":";;;;KAYY,WAAA;EACV,MAAA,EAAQ,YAAA;EACR,MAAA,EAAQ,KAAA;EACR,KAAA,EAAO,IAAA;EACP,qBAAA,EAAuB,KAAA;IAAQ,OAAA,EAAS,mBAAA;IAAuB,IAAA,EAAM,IAAA;EAAA;EACrE,QAAA,EAAU,KAAA;IACR,OAAA;IACA,UAAA,EAAY,oBAAA;IACZ,WAAA;IACA,KAAA,IAAS,UAAA,EAAY,MAAA;IACrB,IAAA,EAAM,IAAA;EAAA;EAER,KAAA,EAAO,SAAA;EACP,WAAA,EAAa,kBAAA;EACb,MAAA,GAAS,aAAA;EACT,MAAA,GAAS,aAAA;AAAA;;;KCtBC,kBAAA;EAAA,SACD,IAAI;AAAA;;;iBCNC,mBAAA,CAAoB,OAAe;AAAA,iBAInC,sBAAA,CAAuB,KAAa;AAAA,iBAIpC,kCAAA,CAAmC,OAAe;AAAA,iBAmBlD,iCAAA,CAAkC,OAAe;AAAA,iBAOjD,4BAAA,CAA6B,KAAa;AAAA,iBAI1C,qBAAA,CAAsB,KAAa;AAAA,iBAInC,yBAAA,CAA0B,KAAa;;;;iBCvCvC,iBAAA,CAAkB,KAAkB,EAAX,WAAW;;;KCDxC,oBAAA;EACV,UAAA;EACA,MAAM;AAAA;AAAA,iBAGc,iCAAA,CACpB,MAAA;EAAU,UAAA;AAAA,GACV,eAAA,WACC,OAAO;AAAA,iBAgBM,sBAAA,CAAuB,OAA+B,EAAtB,oBAAoB;;;;cCGvD,oBAAA;;iBAGG,qBAAA,CAAsB,IAAe,EAAT,SAAS;;iBAKrC,mBAAA,CAAoB,KAAA,YAAiB,KAAA,IAAS,kBAAkB;;iBAUhE,aAAA,CAAc,OAAA,YAAmB,WAAW"}
1
+ {"version":3,"file":"internal.d.mts","names":[],"sources":["../src/runtime-contract.ts","../src/internal-contract.ts","../src/command-grammar.ts","../src/prompt-render.ts","../src/standalone-declaration.ts","../src/internal.ts"],"mappings":";;;KAYY;EACV,QAAQ;EACR,QAAQ;EACR,OAAO;EACP,uBAAuB;IAAQ,SAAS;IAAuB,MAAM;;EACrE,UAAU;IACR;IACA,YAAY;IACZ;IACA,SAAS,YAAY;IACrB,MAAM;;EAER,OAAO;EACP,aAAa;EACb,SAAS;EACT,SAAS;;;;KCtBC;WACD;;;;iBCNK,oBAAoB;iBAIpB,uBAAuB;iBAIvB,mCAAmC;iBAmBnC,kCAAkC;iBAOlC,6BAA6B;iBAI7B,sBAAsB;iBAItB,0BAA0B;;;;iBCvC1B,kBAAkB,OAAO;;;KCD7B;EACV;EACA;;iBAGoB,kCACpB;EAAU;GACV,0BACC;iBAgBa,uBAAuB,SAAS;;;;cCGnC;;iBAGG,sBAAsB,MAAM;;iBAK5B,oBAAoB,iBAAiB,SAAS;;iBAU9C,cAAc,mBAAmB"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@usepipr/sdk",
3
- "version": "0.3.3",
3
+ "version": "0.3.6",
4
4
  "description": "TypeScript configuration SDK for pipr pull request review automation",
5
5
  "type": "module",
6
6
  "license": "MIT",
@@ -1 +0,0 @@
1
- {"version":3,"file":"index-pT_8sPWD.d.mts","names":[],"sources":["../src/types/schema.ts","../src/review-contract.ts","../src/types/manifest.ts","../src/types/config.ts","../src/types/prompt.ts","../src/types/agent.ts","../src/types/task.ts","../src/builder.ts","../src/prompt.ts","../src/schema.ts"],"mappings":"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"}