@fairmint/captable-ai 0.1.28 → 0.1.30
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/dist/index.js +46 -1
- package/package.json +1 -1
package/dist/index.js
CHANGED
|
@@ -15355,6 +15355,11 @@ function planImportStatus({ documents, sessionState, scopeUnknown = false }) {
|
|
|
15355
15355
|
}
|
|
15356
15356
|
}
|
|
15357
15357
|
}
|
|
15358
|
+
function applyDraftCount(plan, draftCount) {
|
|
15359
|
+
if (plan.phase !== "complete" || draftCount !== 0)
|
|
15360
|
+
return plan;
|
|
15361
|
+
return { ...plan, state: "complete", actions: [] };
|
|
15362
|
+
}
|
|
15358
15363
|
var EXTRACTION_NOT_READY_REASONS = [
|
|
15359
15364
|
"pending_upload",
|
|
15360
15365
|
"classification_in_progress"
|
|
@@ -15527,6 +15532,7 @@ var DOCUMENT_HEALTH_VALUES = [
|
|
|
15527
15532
|
];
|
|
15528
15533
|
var documentProcessingStatusItemSchema = external_exports.object({
|
|
15529
15534
|
s3AssetId: external_exports.string().describe("S3 asset / document ID."),
|
|
15535
|
+
name: external_exports.string().nullable().optional().describe("Original file name; absent on older servers."),
|
|
15530
15536
|
status: external_exports.string().describe("Document processing status."),
|
|
15531
15537
|
createdAt: external_exports.string().nullable().optional().describe("Immutable document creation timestamp; absent on older servers."),
|
|
15532
15538
|
lastActivityAt: external_exports.string().nullable().describe("Last backend activity timestamp (updated_at / heartbeat); null if unknown."),
|
|
@@ -16658,6 +16664,8 @@ var ONBOARDING_STATES = {
|
|
|
16658
16664
|
READY_TO_IMPORT: "ready_to_import",
|
|
16659
16665
|
PROCESSING: "processing",
|
|
16660
16666
|
NEEDS_REVIEW: "needs_review",
|
|
16667
|
+
/** Processing finished and nothing is left to review or commit (no drafts). */
|
|
16668
|
+
COMPLETE: "complete",
|
|
16661
16669
|
BLOCKED: "blocked",
|
|
16662
16670
|
READY_TO_COMMIT: "ready_to_commit"
|
|
16663
16671
|
};
|
|
@@ -16695,6 +16703,11 @@ var onboardingStateSchema = external_exports.discriminatedUnion("state", [
|
|
|
16695
16703
|
importSessionId: external_exports.string().uuid(),
|
|
16696
16704
|
blockerCount: external_exports.number().int().nonnegative()
|
|
16697
16705
|
}),
|
|
16706
|
+
onboardingStateBaseSchema.extend({
|
|
16707
|
+
state: external_exports.literal(ONBOARDING_STATES.COMPLETE),
|
|
16708
|
+
portalId: external_exports.string().uuid(),
|
|
16709
|
+
importSessionId: external_exports.string().uuid()
|
|
16710
|
+
}),
|
|
16698
16711
|
onboardingStateBaseSchema.extend({
|
|
16699
16712
|
state: external_exports.literal(ONBOARDING_STATES.BLOCKED),
|
|
16700
16713
|
portalId: external_exports.string().uuid().optional(),
|
|
@@ -23026,6 +23039,37 @@ function importStatusCommand(action, sessionId) {
|
|
|
23026
23039
|
...action.id === "review_failures" && action.s3AssetIds && { s3AssetIds: action.s3AssetIds }
|
|
23027
23040
|
};
|
|
23028
23041
|
}
|
|
23042
|
+
var DRAFT_COUNT_MAX_PAGES = 100;
|
|
23043
|
+
async function readDraftCount(portalId) {
|
|
23044
|
+
if (!portalId) return null;
|
|
23045
|
+
try {
|
|
23046
|
+
let count = 0;
|
|
23047
|
+
let cursor;
|
|
23048
|
+
for (let page = 0; page < DRAFT_COUNT_MAX_PAGES; page += 1) {
|
|
23049
|
+
const res = await apiRequest(
|
|
23050
|
+
`/${encodeURIComponent(portalId)}/objects`,
|
|
23051
|
+
{
|
|
23052
|
+
query: { status: "draft", ...cursor ? { cursor } : {} },
|
|
23053
|
+
// Optional read: throw (caught below) instead of exiting the process on a failure.
|
|
23054
|
+
softFail: true
|
|
23055
|
+
}
|
|
23056
|
+
);
|
|
23057
|
+
const objects = res.data?.objects;
|
|
23058
|
+
if (!Array.isArray(objects)) return null;
|
|
23059
|
+
count += objects.filter(
|
|
23060
|
+
(obj) => obj.type !== "DOCUMENT" && obj.subtype !== "DOCUMENT"
|
|
23061
|
+
).length;
|
|
23062
|
+
if (count > 0) return count;
|
|
23063
|
+
const next = res.meta?.cursor;
|
|
23064
|
+
if (!res.meta?.hasMore) return count;
|
|
23065
|
+
if (!next || next === cursor) return null;
|
|
23066
|
+
cursor = next;
|
|
23067
|
+
}
|
|
23068
|
+
return null;
|
|
23069
|
+
} catch {
|
|
23070
|
+
return null;
|
|
23071
|
+
}
|
|
23072
|
+
}
|
|
23029
23073
|
async function runImportStatus(args) {
|
|
23030
23074
|
validateFlags(args, { flags: [], booleans: [] });
|
|
23031
23075
|
const sessionId = args.positional[0];
|
|
@@ -23040,11 +23084,12 @@ async function runImportStatus(args) {
|
|
|
23040
23084
|
);
|
|
23041
23085
|
const portalDocuments = response.data?.processing?.documents ?? [];
|
|
23042
23086
|
const documents = documentsForImportSession(portalDocuments, response.data?.session?.createdAt);
|
|
23043
|
-
const
|
|
23087
|
+
const documentPlan = planImportStatus({
|
|
23044
23088
|
documents,
|
|
23045
23089
|
sessionState: response.data?.session?.state,
|
|
23046
23090
|
scopeUnknown: importSessionScopeUnknown(portalDocuments)
|
|
23047
23091
|
});
|
|
23092
|
+
const plan = documentPlan.phase === "complete" ? applyDraftCount(documentPlan, await readDraftCount(response.data?.session?.portalId)) : documentPlan;
|
|
23048
23093
|
const { summary } = plan;
|
|
23049
23094
|
if (plan.shouldComplete) {
|
|
23050
23095
|
const completed = await apiRequest(
|
package/package.json
CHANGED