@rolino/contracts 0.6.0 → 0.7.1

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.
package/CHANGELOG.md CHANGED
@@ -1,9 +1,19 @@
1
1
  # @rolino/contracts
2
2
 
3
+ ## 0.7.1
4
+
5
+ ## 0.7.0
6
+
7
+ ### Minor Changes
8
+
9
+ - 358f37a: Expose additive safe Blog preparation, next-action, and quality summaries through the shared read contracts and existing clients.
10
+
3
11
  ## 0.6.0
4
12
 
5
13
  ### Minor Changes
6
14
 
15
+ - Add strict backlink prospecting contracts and three independent opt-in capabilities without widening existing credentials.
16
+
7
17
  - d162f85: Add safe Blog editorial cadence preview and apply operations across contracts, SDK, CLI, and MCP.
8
18
  - 50cb9fc: Add Google Business Profile as a disabled-by-default standard text and single-image publishing destination across shared public clients.
9
19
  - 1ac7ed5: Add signed custom Blog webhook setup, connection testing, one-time secret rotation, and safe idempotent replay parity.
@@ -60,6 +70,10 @@
60
70
 
61
71
  ### Minor Changes
62
72
 
73
+ - Add optional safe Blog preparation, next-action, and versioned quality summaries to existing read contracts.
74
+
75
+ ### Minor Changes
76
+
63
77
  - Add exact Blog image, approval-bundle, scheduling, cancellation, provenance,
64
78
  idempotency, and safe public-state contracts while keeping `blog:write`,
65
79
  `blog:approve`, and `blog:publish` independent.
package/LICENSE CHANGED
@@ -18,4 +18,4 @@ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
18
  AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
19
  LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
20
  OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
21
+ SOFTWARE.
package/README.md CHANGED
@@ -1,5 +1,7 @@
1
1
  # `@rolino/contracts`
2
2
 
3
+ The package includes strict shared backlink prospecting schemas for bounded targets, discoveries, prospects, score evidence, stages, public contacts, outreach drafts, and exact-link verification. The independent `backlinks:read`, `backlinks:write`, and `backlinks:contacts` capabilities do not widen existing credentials.
4
+
3
5
  Zod schemas and TypeScript types for Rolino's versioned public API. This package
4
6
  contains transport-safe DTOs only; it must not depend on Prisma, Next.js, auth
5
7
  providers, or server implementation details.
package/dist/index.cjs CHANGED
@@ -20,6 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
20
20
  // src/index.ts
21
21
  var index_exports = {};
22
22
  __export(index_exports, {
23
+ AGENT_CAPABILITIES: () => AGENT_CAPABILITIES,
23
24
  API_VERSION: () => API_VERSION,
24
25
  ActorSchema: () => ActorSchema,
25
26
  AgentBlogApprovalExecuteRequestSchema: () => AgentBlogApprovalExecuteRequestSchema,
@@ -33,6 +34,7 @@ __export(index_exports, {
33
34
  AgentBlogArticleCreateRequestSchema: () => AgentBlogArticleCreateRequestSchema,
34
35
  AgentBlogArticleDetailSchema: () => AgentBlogArticleDetailSchema,
35
36
  AgentBlogArticleListResponseSchema: () => AgentBlogArticleListResponseSchema,
37
+ AgentBlogArticleQualitySummarySchema: () => AgentBlogArticleQualitySummarySchema,
36
38
  AgentBlogArticleQueuedResponseSchema: () => AgentBlogArticleQueuedResponseSchema,
37
39
  AgentBlogArticleResponseSchema: () => AgentBlogArticleResponseSchema,
38
40
  AgentBlogArticleSchema: () => AgentBlogArticleSchema,
@@ -62,6 +64,8 @@ __export(index_exports, {
62
64
  AgentBlogImageUploadPrepareRequestSchema: () => AgentBlogImageUploadPrepareRequestSchema,
63
65
  AgentBlogJobResponseSchema: () => AgentBlogJobResponseSchema,
64
66
  AgentBlogJobSchema: () => AgentBlogJobSchema,
67
+ AgentBlogMetricSourceSchema: () => AgentBlogMetricSourceSchema,
68
+ AgentBlogPerformanceObservationSchema: () => AgentBlogPerformanceObservationSchema,
65
69
  AgentBlogPlanCadenceExecuteRequestSchema: () => AgentBlogPlanCadenceExecuteRequestSchema,
66
70
  AgentBlogPlanCadenceExecuteResponseSchema: () => AgentBlogPlanCadenceExecuteResponseSchema,
67
71
  AgentBlogPlanCadenceExecuteSchema: () => AgentBlogPlanCadenceExecuteSchema,
@@ -127,6 +131,36 @@ __export(index_exports, {
127
131
  ApiMetaSchema: () => ApiMetaSchema,
128
132
  ApiProblemSchema: () => ApiProblemSchema,
129
133
  AuthenticationKindSchema: () => AuthenticationKindSchema,
134
+ BacklinkContactListDataSchema: () => BacklinkContactListDataSchema,
135
+ BacklinkContactListQuerySchema: () => BacklinkContactListQuerySchema,
136
+ BacklinkContactListResponseSchema: () => BacklinkContactListResponseSchema,
137
+ BacklinkContactSchema: () => BacklinkContactSchema,
138
+ BacklinkContactStateSchema: () => BacklinkContactStateSchema,
139
+ BacklinkDiscoveryInputSchema: () => BacklinkDiscoveryInputSchema,
140
+ BacklinkDiscoveryRunResponseSchema: () => BacklinkDiscoveryRunResponseSchema,
141
+ BacklinkDiscoveryRunSchema: () => BacklinkDiscoveryRunSchema,
142
+ BacklinkNextActionSchema: () => BacklinkNextActionSchema,
143
+ BacklinkOpportunityTypeSchema: () => BacklinkOpportunityTypeSchema,
144
+ BacklinkOutreachDraftResponseSchema: () => BacklinkOutreachDraftResponseSchema,
145
+ BacklinkOutreachDraftSchema: () => BacklinkOutreachDraftSchema,
146
+ BacklinkOutreachUpdateInputSchema: () => BacklinkOutreachUpdateInputSchema,
147
+ BacklinkProspectListDataSchema: () => BacklinkProspectListDataSchema,
148
+ BacklinkProspectListQuerySchema: () => BacklinkProspectListQuerySchema,
149
+ BacklinkProspectListResponseSchema: () => BacklinkProspectListResponseSchema,
150
+ BacklinkProspectResponseSchema: () => BacklinkProspectResponseSchema,
151
+ BacklinkProspectSchema: () => BacklinkProspectSchema,
152
+ BacklinkProspectStageSchema: () => BacklinkProspectStageSchema,
153
+ BacklinkQueueResponseSchema: () => BacklinkQueueResponseSchema,
154
+ BacklinkScoreComponentsSchema: () => BacklinkScoreComponentsSchema,
155
+ BacklinkStageUpdateInputSchema: () => BacklinkStageUpdateInputSchema,
156
+ BacklinkTargetInputSchema: () => BacklinkTargetInputSchema,
157
+ BacklinkTargetListResponseSchema: () => BacklinkTargetListResponseSchema,
158
+ BacklinkTargetResponseSchema: () => BacklinkTargetResponseSchema,
159
+ BacklinkTargetSchema: () => BacklinkTargetSchema,
160
+ BacklinkVerificationInputSchema: () => BacklinkVerificationInputSchema,
161
+ BacklinkVerificationResponseSchema: () => BacklinkVerificationResponseSchema,
162
+ BacklinkVerificationSchema: () => BacklinkVerificationSchema,
163
+ BacklinkVerificationStateSchema: () => BacklinkVerificationStateSchema,
130
164
  BlogArticleListSchema: () => BlogArticleListSchema,
131
165
  BlogImageSchema: () => BlogImageSchema,
132
166
  BlogMetadataSchema: () => BlogMetadataSchema,
@@ -239,7 +273,7 @@ __export(index_exports, {
239
273
  module.exports = __toCommonJS(index_exports);
240
274
  var import_zod = require("zod");
241
275
  var API_VERSION = "v1";
242
- var CONTRACT_VERSION = "0.17.0";
276
+ var CONTRACT_VERSION = "0.18.0";
243
277
  var RequestMetadataSchema = import_zod.z.object({
244
278
  requestId: import_zod.z.string().min(1)
245
279
  });
@@ -333,12 +367,16 @@ var CapabilityIdSchema = import_zod.z.enum([
333
367
  "integrations:read",
334
368
  "calendar:read",
335
369
  "seo:read",
370
+ "backlinks:read",
371
+ "backlinks:write",
372
+ "backlinks:contacts",
336
373
  "blog:read",
337
374
  "blog:write",
338
375
  "blog:manage",
339
376
  "blog:approve",
340
377
  "blog:publish"
341
378
  ]);
379
+ var AGENT_CAPABILITIES = CapabilityIdSchema.options;
342
380
  var AgentBlogPlanSchema = import_zod.z.object({
343
381
  id: import_zod.z.string().min(1),
344
382
  version: import_zod.z.number().int().positive(),
@@ -347,7 +385,8 @@ var AgentBlogPlanSchema = import_zod.z.object({
347
385
  windowEnd: import_zod.z.string().datetime(),
348
386
  cadence: import_zod.z.object({ weekdays: import_zod.z.array(import_zod.z.number().int().min(0).max(6)) }),
349
387
  activeRevisionId: import_zod.z.string().nullable(),
350
- itemCount: import_zod.z.number().int().nonnegative()
388
+ itemCount: import_zod.z.number().int().nonnegative(),
389
+ successorState: import_zod.z.enum(["NOT_STARTED", "GENERATING", "READY", "NEEDS_ATTENTION"]).optional()
351
390
  });
352
391
  var AgentBlogArticleSchema = import_zod.z.object({
353
392
  id: import_zod.z.string().min(1),
@@ -358,8 +397,34 @@ var AgentBlogArticleSchema = import_zod.z.object({
358
397
  approvedRevisionId: import_zod.z.string().nullable(),
359
398
  publishedRevisionId: import_zod.z.string().nullable(),
360
399
  scheduledPublishAt: import_zod.z.string().datetime().nullable(),
361
- updatedAt: import_zod.z.string().datetime()
400
+ updatedAt: import_zod.z.string().datetime(),
401
+ preparationState: import_zod.z.enum(["PREPARING", "READY_FOR_REVIEW", "SCHEDULED", "MEASURING", "NEEDS_ATTENTION"]).optional(),
402
+ nextAction: import_zod.z.enum(["WAIT", "REVIEW_ARTICLE", "OPEN_SCHEDULE", "VIEW_OBSERVATION", "RESOLVE_ISSUE"]).optional()
362
403
  });
404
+ var AgentBlogArticleQualitySummarySchema = import_zod.z.object({
405
+ version: import_zod.z.literal(2),
406
+ decision: import_zod.z.enum(["READY_FOR_REVIEW", "NEEDS_ATTENTION"]),
407
+ checks: import_zod.z.array(import_zod.z.object({ code: import_zod.z.enum(["SAFE_MARKDOWN", "REQUIRED_METADATA", "CANONICAL_PATH", "CATALOG_LINKS", "LIVE_LINK_TARGETS", "QUERY_OWNERSHIP", "CONTENT_OVERLAP", "BRAND_TERMS", "EVIDENCE_OWNERSHIP"]), status: import_zod.z.enum(["PASSED", "FAILED", "WARNING"]), message: import_zod.z.string().max(240) }).strict()).max(9)
408
+ }).strict();
409
+ var AgentBlogMetricSourceSchema = import_zod.z.object({
410
+ provider: import_zod.z.enum(["GOOGLE_SEARCH_CONSOLE", "GOOGLE_ANALYTICS"]),
411
+ observedAt: import_zod.z.string().datetime(),
412
+ periodStart: import_zod.z.string().datetime().nullable(),
413
+ periodEnd: import_zod.z.string().datetime().nullable(),
414
+ metrics: import_zod.z.record(import_zod.z.string().max(40), import_zod.z.number().finite()).refine((metrics) => Object.keys(metrics).length <= 20, { message: "Blog metric sources can contain at most 20 metrics." })
415
+ }).strict();
416
+ var AgentBlogPerformanceObservationSchema = import_zod.z.object({
417
+ state: import_zod.z.enum(["WAITING", "MATCHED", "MISSING_MATCH", "MEASURING", "OBSERVED", "PARTIAL", "UNAVAILABLE", "STALE"]),
418
+ latestCheckpoint: import_zod.z.enum(["BASELINE", "DAY_28", "DAY_56"]).nullable(),
419
+ nextCheckpoint: import_zod.z.enum(["BASELINE", "DAY_28", "DAY_56"]).nullable(),
420
+ checkpoints: import_zod.z.array(import_zod.z.object({
421
+ checkpoint: import_zod.z.enum(["BASELINE", "DAY_28", "DAY_56"]),
422
+ state: import_zod.z.enum(["WAITING", "MATCHED", "MISSING_MATCH", "MEASURING", "OBSERVED", "PARTIAL", "UNAVAILABLE", "STALE"]),
423
+ targetDataThrough: import_zod.z.string().date().nullable(),
424
+ sources: import_zod.z.array(AgentBlogMetricSourceSchema).max(2),
425
+ siteContext: import_zod.z.array(AgentBlogMetricSourceSchema).max(2)
426
+ }).strict()).max(3)
427
+ }).strict();
363
428
  var AgentBlogImageSchema = import_zod.z.object({
364
429
  id: import_zod.z.string().min(1),
365
430
  revisionId: import_zod.z.string().nullable(),
@@ -391,8 +456,9 @@ var AgentBlogArticleDetailSchema = AgentBlogArticleSchema.extend({
391
456
  callToAction: import_zod.z.unknown().nullable(),
392
457
  internalLinks: import_zod.z.unknown()
393
458
  }).nullable(),
394
- revisions: import_zod.z.array(import_zod.z.object({ id: import_zod.z.string().min(1), revisionNumber: import_zod.z.number().int().positive(), contentHash: import_zod.z.string().min(1), approvedAt: import_zod.z.string().datetime().nullable(), createdAt: import_zod.z.string().datetime() })),
395
- images: import_zod.z.array(AgentBlogImageSchema)
459
+ revisions: import_zod.z.array(import_zod.z.object({ id: import_zod.z.string().min(1), revisionNumber: import_zod.z.number().int().positive(), contentHash: import_zod.z.string().min(1), approvedAt: import_zod.z.string().datetime().nullable(), createdAt: import_zod.z.string().datetime(), quality: AgentBlogArticleQualitySummarySchema.nullable().optional() })),
460
+ images: import_zod.z.array(AgentBlogImageSchema),
461
+ measurement: AgentBlogPerformanceObservationSchema.nullable().optional()
396
462
  });
397
463
  var AgentBlogJobSchema = import_zod.z.object({
398
464
  id: import_zod.z.string().min(1),
@@ -682,7 +748,9 @@ var AgentBlogPlanItemSchema = import_zod.z.object({
682
748
  existingArticleComparison: import_zod.z.string().nullable(),
683
749
  recommendedLinks: import_zod.z.unknown(),
684
750
  targetConversionPage: import_zod.z.string().nullable(),
685
- articleId: import_zod.z.string().min(1).nullable()
751
+ articleId: import_zod.z.string().min(1).nullable(),
752
+ preparationState: import_zod.z.enum(["PREPARING", "READY_FOR_REVIEW", "SCHEDULED", "MEASURING", "NEEDS_ATTENTION"]).optional(),
753
+ nextAction: import_zod.z.enum(["WAIT", "REVIEW_ARTICLE", "OPEN_SCHEDULE", "VIEW_OBSERVATION", "RESOLVE_ISSUE"]).optional()
686
754
  }).strict();
687
755
  var AgentBlogPlanItemStateRequestSchema = import_zod.z.object({
688
756
  state: import_zod.z.enum(["ACCEPTED", "DISMISSED"]),
@@ -1916,8 +1984,98 @@ var SeoReportListResponseSchema = successEnvelopeSchema(
1916
1984
  SeoReportListDataSchema
1917
1985
  );
1918
1986
  var SeoReportResponseSchema = successEnvelopeSchema(SeoReportSchema);
1987
+ var BacklinkOpportunityTypeSchema = import_zod.z.enum(["TOOL_ROUNDUP", "COMPARISON", "RESOURCE_PAGE", "RELEVANT_ARTICLE"]);
1988
+ var BacklinkProspectStageSchema = import_zod.z.enum(["NEW", "APPROVED", "CONTACT_RESEARCHING", "REVIEW_OUTREACH", "READY_TO_CONTACT", "CONTACTED", "REPLIED", "LINK_WON", "REJECTED", "NO_CONTACT", "DECLINED"]);
1989
+ var BacklinkNextActionSchema = import_zod.z.enum(["REVIEW", "FIND_CONTACT", "VIEW_PROGRESS", "REVIEW_OUTREACH", "COPY_OUTREACH", "RETRY_CONTACT", "OPEN"]);
1990
+ var BacklinkContactStateSchema = import_zod.z.enum(["PUBLIC_CONFIRMED", "GENERIC_PUBLIC", "NOT_FOUND", "STALE"]);
1991
+ var BacklinkVerificationStateSchema = import_zod.z.enum(["QUEUED", "CHECKING", "VERIFIED", "MISSING", "BLOCKED", "FAILED"]);
1992
+ var BacklinkScoreReasonSchema = import_zod.z.object({ score: import_zod.z.number().int().min(0).max(100), reason: import_zod.z.string().min(1).max(500) }).strict();
1993
+ var BacklinkScoreComponentsSchema = import_zod.z.object({
1994
+ topicalRelevance: BacklinkScoreReasonSchema,
1995
+ editorialFit: BacklinkScoreReasonSchema,
1996
+ pageFreshness: BacklinkScoreReasonSchema,
1997
+ siteLegitimacy: BacklinkScoreReasonSchema,
1998
+ outreachFeasibility: BacklinkScoreReasonSchema.optional(),
1999
+ publisherType: import_zod.z.enum([
2000
+ "INDEPENDENT_PUBLISHER",
2001
+ "PROFESSIONAL_ORGANIZATION",
2002
+ "EDUCATIONAL_ORGANIZATION",
2003
+ "AGENCY_OR_ECOSYSTEM",
2004
+ "REVIEW_OR_DIRECTORY",
2005
+ "PRODUCT_VENDOR",
2006
+ "MARKETPLACE",
2007
+ "COMMUNITY",
2008
+ "OWNED",
2009
+ "UNKNOWN"
2010
+ ]).optional(),
2011
+ difficulty: import_zod.z.enum(["EASY", "MEDIUM", "HARD"]).optional(),
2012
+ productClaimsToVerify: import_zod.z.array(import_zod.z.string().min(1).max(300)).max(10).optional()
2013
+ }).strict();
2014
+ var BacklinkProspectSchema = import_zod.z.object({
2015
+ id: SeoEntityIdSchema,
2016
+ projectId: SeoEntityIdSchema,
2017
+ url: import_zod.z.string().url().max(2048),
2018
+ domain: import_zod.z.string().min(1).max(253),
2019
+ title: import_zod.z.string().min(1).max(300),
2020
+ opportunityType: BacklinkOpportunityTypeSchema,
2021
+ stage: BacklinkProspectStageSchema,
2022
+ version: import_zod.z.number().int().positive(),
2023
+ nextAction: BacklinkNextActionSchema,
2024
+ score: import_zod.z.number().int().min(0).max(100),
2025
+ scoreComponents: BacklinkScoreComponentsSchema,
2026
+ evidenceExcerpt: import_zod.z.string().min(1).max(2e3),
2027
+ evidenceSourceUrl: import_zod.z.string().url().max(2048),
2028
+ suggestedTargetUrl: import_zod.z.string().url().max(2048),
2029
+ placementAngle: import_zod.z.string().min(1).max(1e3),
2030
+ contactState: BacklinkContactStateSchema,
2031
+ lastCheckedAt: import_zod.z.string().datetime(),
2032
+ createdAt: import_zod.z.string().datetime(),
2033
+ updatedAt: import_zod.z.string().datetime()
2034
+ }).strict();
2035
+ var BacklinkProspectListQuerySchema = import_zod.z.object({
2036
+ limit: import_zod.z.coerce.number().int().min(1).max(50).default(20),
2037
+ cursor: SeoCursorSchema.optional(),
2038
+ stage: BacklinkProspectStageSchema.optional(),
2039
+ opportunityType: BacklinkOpportunityTypeSchema.optional()
2040
+ }).strict();
2041
+ var BacklinkProspectListDataSchema = import_zod.z.object({
2042
+ items: import_zod.z.array(BacklinkProspectSchema).max(50),
2043
+ page: import_zod.z.object({ limit: import_zod.z.number().int().min(1).max(50), nextCursor: SeoCursorSchema.nullable() }).strict()
2044
+ }).strict();
2045
+ var BacklinkProspectListResponseSchema = successEnvelopeSchema(BacklinkProspectListDataSchema);
2046
+ var BacklinkProspectResponseSchema = successEnvelopeSchema(BacklinkProspectSchema);
2047
+ var BacklinkTargetInputSchema = import_zod.z.object({ url: import_zod.z.string().url().max(2048), label: import_zod.z.string().trim().min(1).max(120), topicSummary: import_zod.z.string().trim().min(1).max(500).optional() }).strict();
2048
+ var BacklinkDiscoveryInputSchema = import_zod.z.object({ limit: import_zod.z.number().int().min(1).max(20).default(20) }).strict();
2049
+ var BacklinkStageUpdateInputSchema = import_zod.z.object({ stage: BacklinkProspectStageSchema, expectedVersion: import_zod.z.number().int().positive() }).strict();
2050
+ var BacklinkVerificationInputSchema = import_zod.z.object({ url: import_zod.z.string().url().max(2048), expectedVersion: import_zod.z.number().int().positive() }).strict();
2051
+ var BacklinkOutreachUpdateInputSchema = import_zod.z.object({ expectedVersion: import_zod.z.number().int().positive(), subject: import_zod.z.string().trim().min(1).max(200), body: import_zod.z.string().trim().min(1).max(3e3) }).strict();
2052
+ var BacklinkTargetSchema = import_zod.z.object({ id: SeoEntityIdSchema, projectId: SeoEntityIdSchema, normalizedUrl: import_zod.z.string().url().max(2048), label: import_zod.z.string().min(1).max(120), topicSummary: import_zod.z.string().max(500).nullable(), enabled: import_zod.z.boolean(), createdAt: import_zod.z.string().datetime(), updatedAt: import_zod.z.string().datetime() }).strict();
2053
+ var BacklinkTargetListResponseSchema = successEnvelopeSchema(import_zod.z.array(BacklinkTargetSchema).max(10));
2054
+ var BacklinkTargetResponseSchema = successEnvelopeSchema(BacklinkTargetSchema);
2055
+ var BacklinkDiscoveryRunSchema = import_zod.z.object({ id: SeoEntityIdSchema, projectId: SeoEntityIdSchema, status: import_zod.z.enum(["QUEUED", "RUNNING", "SUCCEEDED", "PARTIAL", "FAILED", "CANCELLED"]), promptVersion: import_zod.z.number().int().positive(), configurationVersion: import_zod.z.number().int().positive(), searchedCount: import_zod.z.number().int().nonnegative(), fetchedCount: import_zod.z.number().int().nonnegative(), savedCount: import_zod.z.number().int().nonnegative(), failedCount: import_zod.z.number().int().nonnegative(), safeErrorCode: import_zod.z.string().max(100).nullable(), createdAt: import_zod.z.string().datetime(), updatedAt: import_zod.z.string().datetime() }).strict();
2056
+ var BacklinkDiscoveryRunResponseSchema = successEnvelopeSchema(BacklinkDiscoveryRunSchema);
2057
+ var BacklinkQueueResponseSchema = successEnvelopeSchema(import_zod.z.object({ prospectId: SeoEntityIdSchema, status: import_zod.z.literal("QUEUED") }).strict());
2058
+ var BacklinkVerificationSchema = import_zod.z.object({ id: SeoEntityIdSchema, prospectId: SeoEntityIdSchema, state: BacklinkVerificationStateSchema, submittedUrl: import_zod.z.string().url(), expectedTargetUrl: import_zod.z.string().url() }).strict();
2059
+ var BacklinkVerificationResponseSchema = successEnvelopeSchema(BacklinkVerificationSchema);
2060
+ var BacklinkOutreachDraftSchema = import_zod.z.object({ id: SeoEntityIdSchema, prospectId: SeoEntityIdSchema, version: import_zod.z.number().int().positive(), subject: import_zod.z.string().max(200), body: import_zod.z.string().max(3e3) }).strict();
2061
+ var BacklinkOutreachDraftResponseSchema = successEnvelopeSchema(BacklinkOutreachDraftSchema);
2062
+ var BacklinkContactSchema = import_zod.z.object({
2063
+ prospectId: SeoEntityIdSchema,
2064
+ name: import_zod.z.string().max(160).nullable(),
2065
+ role: import_zod.z.string().max(120).nullable(),
2066
+ email: import_zod.z.string().email().max(320),
2067
+ evidenceState: BacklinkContactStateSchema.exclude(["NOT_FOUND"]),
2068
+ sourceUrl: import_zod.z.string().url().max(2048),
2069
+ evidenceExcerpt: import_zod.z.string().min(1).max(1e3),
2070
+ checkedAt: import_zod.z.string().datetime(),
2071
+ draft: import_zod.z.object({ version: import_zod.z.number().int().positive(), subject: import_zod.z.string().max(200), body: import_zod.z.string().max(3e3) }).strict().nullable()
2072
+ }).strict();
2073
+ var BacklinkContactListDataSchema = import_zod.z.object({ items: import_zod.z.array(BacklinkContactSchema).max(50), page: import_zod.z.object({ limit: import_zod.z.number().int().min(1).max(50), nextCursor: SeoCursorSchema.nullable() }).strict() }).strict();
2074
+ var BacklinkContactListQuerySchema = import_zod.z.object({ limit: import_zod.z.coerce.number().int().min(1).max(50).default(20), cursor: SeoCursorSchema.optional() }).strict();
2075
+ var BacklinkContactListResponseSchema = successEnvelopeSchema(BacklinkContactListDataSchema);
1919
2076
  // Annotate the CommonJS export names for ESM import in node:
1920
2077
  0 && (module.exports = {
2078
+ AGENT_CAPABILITIES,
1921
2079
  API_VERSION,
1922
2080
  ActorSchema,
1923
2081
  AgentBlogApprovalExecuteRequestSchema,
@@ -1931,6 +2089,7 @@ var SeoReportResponseSchema = successEnvelopeSchema(SeoReportSchema);
1931
2089
  AgentBlogArticleCreateRequestSchema,
1932
2090
  AgentBlogArticleDetailSchema,
1933
2091
  AgentBlogArticleListResponseSchema,
2092
+ AgentBlogArticleQualitySummarySchema,
1934
2093
  AgentBlogArticleQueuedResponseSchema,
1935
2094
  AgentBlogArticleResponseSchema,
1936
2095
  AgentBlogArticleSchema,
@@ -1960,6 +2119,8 @@ var SeoReportResponseSchema = successEnvelopeSchema(SeoReportSchema);
1960
2119
  AgentBlogImageUploadPrepareRequestSchema,
1961
2120
  AgentBlogJobResponseSchema,
1962
2121
  AgentBlogJobSchema,
2122
+ AgentBlogMetricSourceSchema,
2123
+ AgentBlogPerformanceObservationSchema,
1963
2124
  AgentBlogPlanCadenceExecuteRequestSchema,
1964
2125
  AgentBlogPlanCadenceExecuteResponseSchema,
1965
2126
  AgentBlogPlanCadenceExecuteSchema,
@@ -2025,6 +2186,36 @@ var SeoReportResponseSchema = successEnvelopeSchema(SeoReportSchema);
2025
2186
  ApiMetaSchema,
2026
2187
  ApiProblemSchema,
2027
2188
  AuthenticationKindSchema,
2189
+ BacklinkContactListDataSchema,
2190
+ BacklinkContactListQuerySchema,
2191
+ BacklinkContactListResponseSchema,
2192
+ BacklinkContactSchema,
2193
+ BacklinkContactStateSchema,
2194
+ BacklinkDiscoveryInputSchema,
2195
+ BacklinkDiscoveryRunResponseSchema,
2196
+ BacklinkDiscoveryRunSchema,
2197
+ BacklinkNextActionSchema,
2198
+ BacklinkOpportunityTypeSchema,
2199
+ BacklinkOutreachDraftResponseSchema,
2200
+ BacklinkOutreachDraftSchema,
2201
+ BacklinkOutreachUpdateInputSchema,
2202
+ BacklinkProspectListDataSchema,
2203
+ BacklinkProspectListQuerySchema,
2204
+ BacklinkProspectListResponseSchema,
2205
+ BacklinkProspectResponseSchema,
2206
+ BacklinkProspectSchema,
2207
+ BacklinkProspectStageSchema,
2208
+ BacklinkQueueResponseSchema,
2209
+ BacklinkScoreComponentsSchema,
2210
+ BacklinkStageUpdateInputSchema,
2211
+ BacklinkTargetInputSchema,
2212
+ BacklinkTargetListResponseSchema,
2213
+ BacklinkTargetResponseSchema,
2214
+ BacklinkTargetSchema,
2215
+ BacklinkVerificationInputSchema,
2216
+ BacklinkVerificationResponseSchema,
2217
+ BacklinkVerificationSchema,
2218
+ BacklinkVerificationStateSchema,
2028
2219
  BlogArticleListSchema,
2029
2220
  BlogImageSchema,
2030
2221
  BlogMetadataSchema,