@fairmint/captable-ai 0.1.30 → 0.1.32

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (2) hide show
  1. package/dist/index.js +25 -3
  2. package/package.json +1 -1
package/dist/index.js CHANGED
@@ -15480,7 +15480,8 @@ var triggerExtractionNotReadyDocSchema = external_exports.object({
15480
15480
  });
15481
15481
  var triggerExtractionSkippedDocSchema = external_exports.object({
15482
15482
  s3AssetId: external_exports.string().describe("S3 asset ID."),
15483
- status: external_exports.string().describe("Current document status (already extracting, validated, etc.).")
15483
+ status: external_exports.string().describe("Current document status (already extracting, validated, etc.)."),
15484
+ reason: external_exports.string().optional().describe("Why the document was skipped. `owned_by_apiv2` means it is an agreement document routed by apiv2's agreement pipeline and is not part of bulk extraction.")
15484
15485
  });
15485
15486
  var triggerExtractionResultSchema = external_exports.object({
15486
15487
  outcome: external_exports.enum(TRIGGER_EXTRACTION_OUTCOMES).describe("queued | partially_queued | queue_failed | not_ready (nothing queued because in-scope documents are still classifying or uploading) | no_eligible_documents."),
@@ -15728,13 +15729,18 @@ var draftOperationDependencyIssueSchema = external_exports.object({
15728
15729
  expectedType: external_exports.string().describe("Expected OCF object category for the reference.")
15729
15730
  });
15730
15731
  var draftOperationPlanIssueSchema = external_exports.object({
15731
- code: external_exports.enum(["NO_DRAFTS", "REVERT_LIMIT_EXCEEDED"]).describe("Plan-level validation code."),
15732
+ code: external_exports.enum(["NO_DRAFTS", "REVERT_LIMIT_EXCEEDED", "ISSUER_REQUIRED", "ISSUER_INCOMPLETE"]).describe("Plan-level validation code."),
15732
15733
  message: external_exports.string().describe("Human-readable plan validation message.")
15733
15734
  });
15734
15735
  var draftOperationPreviewInputSchema = external_exports.object({
15735
15736
  operation: draftOperationSchema.describe("Draft operation to preview."),
15736
15737
  objectIds: external_exports.array(external_exports.string().trim().min(1, "objectIds must contain only non-empty strings.")).min(1, "objectIds must contain at least one ID when provided.").optional().describe("Optional draft OCF object IDs. Omit to preview all pending drafts.")
15737
15738
  });
15739
+ var draftOperationEmailIssueSchema = external_exports.object({
15740
+ id: external_exports.string().describe("Stakeholder ID."),
15741
+ name: external_exports.string().nullable().describe("Stakeholder legal name, when known."),
15742
+ problem: external_exports.enum(["missing", "invalid"]).describe("No email address, or one that is not *@*.*.")
15743
+ });
15738
15744
  var draftOperationPreviewSchema = external_exports.object({
15739
15745
  operation: draftOperationSchema,
15740
15746
  dependencyValid: external_exports.boolean().describe("True when object IDs are valid and dependency validation passes."),
@@ -15747,7 +15753,9 @@ var draftOperationPreviewSchema = external_exports.object({
15747
15753
  missingDependencies: external_exports.array(draftOperationDependencyIssueSchema).describe("Remaining dependency blockers reported by backend preflight validation."),
15748
15754
  planIssues: external_exports.array(draftOperationPlanIssueSchema).describe("Plan-level blockers."),
15749
15755
  objects: external_exports.array(ocfObjectSchema).describe("Versioned draft objects in finalIds order."),
15750
- draftCount: external_exports.number().int().nonnegative().describe("Total latest draft objects considered by this preview.")
15756
+ draftCount: external_exports.number().int().nonnegative().describe("Total latest draft objects considered by this preview."),
15757
+ emailIssues: external_exports.array(draftOperationEmailIssueSchema).optional().describe("Commit only: stakeholders whose email would make the commit refuse (or warn)."),
15758
+ emailOverride: external_exports.boolean().optional().describe("True when only missing emails remain and the caller is a super-admin.")
15751
15759
  });
15752
15760
  function normalizeDraftOperationObjectIds(objectIds) {
15753
15761
  if (!objectIds)
@@ -19547,6 +19555,20 @@ function printPreviewWarnings(data) {
19547
19555
  `${data.missingDependencies.length} dependency blocker(s) remain. Use --json for details.`
19548
19556
  );
19549
19557
  }
19558
+ const emailIssues = data.emailIssues ?? [];
19559
+ const kinds = [
19560
+ ["missing", "missing an email address"],
19561
+ ["invalid", "with an invalid email address"]
19562
+ ];
19563
+ for (const [problem, text] of kinds) {
19564
+ const names = emailIssues.filter((issue2) => issue2.problem === problem).map((i) => i.name || i.id);
19565
+ if (names.length > 0) {
19566
+ const override = problem === "missing" && data.emailOverride === true;
19567
+ printWarning(
19568
+ `${names.length} stakeholder(s) ${text}: ${names.join(", ")}.${override ? " Super-admin override: a missing email will not block the commit." : ""}`
19569
+ );
19570
+ }
19571
+ }
19550
19572
  }
19551
19573
  function previewRows(data) {
19552
19574
  const objectsById = new Map(data.objects.map((object2) => [object2.id, object2]));
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@fairmint/captable-ai",
3
- "version": "0.1.30",
3
+ "version": "0.1.32",
4
4
  "description": "Agent-native CLI for Captable AI — manage companies, upload documents, run OCF extraction, and commit cap tables from the terminal.",
5
5
  "keywords": [
6
6
  "captable",