@thecorporation/cli 26.3.20 → 26.3.21
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 +837 -79
- package/dist/index.js.map +1 -1
- package/package.json +3 -3
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/config.ts","../src/api-client.ts","../src/references.ts","../src/output.ts","../src/commands/setup.ts","../src/animation.ts","../src/spinner.ts","../src/commands/status.ts","../src/commands/context.ts","../src/commands/schema.ts","../src/commands/config.ts","../src/commands/resolve.ts","../src/commands/find.ts","../src/commands/obligations.ts","../src/commands/digest.ts","../src/commands/link.ts","../src/commands/claim.ts","../src/llm.ts","../src/tools.ts","../src/chat.ts","../src/commands/entities.ts","../src/commands/contacts.ts","../src/commands/cap-table.ts","../src/commands/finance.ts","../src/commands/governance.ts","../src/commands/documents.ts","../src/commands/tax.ts","../src/commands/agents.ts","../src/commands/work-items.ts","../src/commands/billing.ts","../src/commands/form.ts","../src/commands/api-keys.ts","../src/commands/demo.ts","../src/commands/feedback.ts","../src/commands/serve.ts","../src/index.ts","../src/command-options.ts"],"sourcesContent":["import {\n chmodSync,\n existsSync,\n mkdirSync,\n readFileSync,\n renameSync,\n rmSync,\n statSync,\n writeFileSync,\n} from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport type { CorpConfig } from \"./types.js\";\n\nconst CONFIG_DIR = process.env.CORP_CONFIG_DIR || join(homedir(), \".corp\");\nconst CONFIG_FILE = join(CONFIG_DIR, \"config.json\");\nconst AUTH_FILE = join(CONFIG_DIR, \"auth.json\");\nconst CONFIG_LOCK_DIR = join(CONFIG_DIR, \"config.lock\");\nconst CONFIG_LOCK_TIMEOUT_MS = 5000;\nconst CONFIG_LOCK_RETRY_MS = 25;\nconst CONFIG_STALE_LOCK_MS = 60_000;\nconst MAX_LAST_REFERENCES = 128;\nconst TRUSTED_API_HOST_SUFFIXES = [\"thecorporation.ai\"];\n\nconst CONFIG_WAIT_BUFFER = new SharedArrayBuffer(4);\nconst CONFIG_WAIT_SIGNAL = new Int32Array(CONFIG_WAIT_BUFFER);\n\nconst ALLOWED_CONFIG_KEYS = new Set([\n \"api_url\",\n \"api_key\",\n \"workspace_id\",\n \"hosting_mode\",\n \"llm.provider\",\n \"llm.api_key\",\n \"llm.model\",\n \"llm.base_url\",\n \"user.name\",\n \"user.email\",\n \"active_entity_id\",\n]);\n\nconst SENSITIVE_CONFIG_KEYS = new Set([\"api_url\", \"api_key\", \"workspace_id\"]);\n\ntype CorpAuthConfig = {\n api_url?: string;\n api_key?: string;\n workspace_id?: string;\n llm?: {\n api_key?: string;\n };\n};\n\nconst DEFAULTS: CorpConfig = {\n api_url: process.env.CORP_API_URL || \"https://api.thecorporation.ai\",\n api_key: process.env.CORP_API_KEY || \"\",\n workspace_id: process.env.CORP_WORKSPACE_ID || \"\",\n hosting_mode: \"\",\n llm: {\n provider: \"anthropic\",\n api_key: process.env.CORP_LLM_API_KEY || \"\",\n model: \"claude-sonnet-4-6\",\n base_url: process.env.CORP_LLM_BASE_URL || undefined,\n },\n user: { name: \"\", email: \"\" },\n active_entity_id: \"\",\n};\n\nfunction sleepSync(ms: number): void {\n Atomics.wait(CONFIG_WAIT_SIGNAL, 0, 0, ms);\n}\n\nfunction withConfigLock<T>(fn: () => T): T {\n mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });\n const startedAt = Date.now();\n while (true) {\n try {\n mkdirSync(CONFIG_LOCK_DIR, { mode: 0o700 });\n break;\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== \"EEXIST\") {\n throw err;\n }\n try {\n const ageMs = Date.now() - statSync(CONFIG_LOCK_DIR).mtimeMs;\n if (ageMs >= CONFIG_STALE_LOCK_MS) {\n rmSync(CONFIG_LOCK_DIR, { recursive: true, force: true });\n continue;\n }\n } catch {\n // Ignore lock-stat failures and continue waiting.\n }\n if (Date.now() - startedAt >= CONFIG_LOCK_TIMEOUT_MS) {\n throw new Error(\"timed out waiting for the corp config lock\");\n }\n sleepSync(CONFIG_LOCK_RETRY_MS);\n }\n }\n\n try {\n return fn();\n } finally {\n rmSync(CONFIG_LOCK_DIR, { recursive: true, force: true });\n }\n}\n\nfunction ensureSecurePermissions(): void {\n mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });\n try {\n chmodSync(CONFIG_DIR, 0o700);\n } catch {\n // Ignore chmod failures on filesystems without POSIX permission support.\n }\n if (existsSync(CONFIG_FILE)) {\n try {\n chmodSync(CONFIG_FILE, 0o600);\n } catch {\n // Ignore chmod failures on filesystems without POSIX permission support.\n }\n }\n if (existsSync(AUTH_FILE)) {\n try {\n chmodSync(AUTH_FILE, 0o600);\n } catch {\n // Ignore chmod failures on filesystems without POSIX permission support.\n }\n }\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isLoopbackHost(hostname: string): boolean {\n return hostname === \"localhost\" || hostname === \"127.0.0.1\" || hostname === \"::1\";\n}\n\nfunction isTrustedCorpHost(hostname: string): boolean {\n return TRUSTED_API_HOST_SUFFIXES.some(\n (suffix) => hostname === suffix || hostname.endsWith(`.${suffix}`),\n );\n}\n\nfunction allowUnsafeApiUrl(): boolean {\n return process.env.CORP_UNSAFE_API_URL === \"1\";\n}\n\nexport function validateApiUrl(value: string): string {\n let parsed: URL;\n try {\n parsed = new URL(value.trim());\n } catch {\n throw new Error(\"api_url must be a valid absolute URL\");\n }\n\n if (parsed.username || parsed.password) {\n throw new Error(\"api_url must not include embedded credentials\");\n }\n\n const protocol = parsed.protocol.toLowerCase();\n const hostname = parsed.hostname.toLowerCase();\n if (protocol !== \"https:\" && !(protocol === \"http:\" && isLoopbackHost(hostname))) {\n throw new Error(\"api_url must use https, or http only for localhost/loopback development\");\n }\n if (protocol === \"https:\" && !isLoopbackHost(hostname) && !isTrustedCorpHost(hostname) && !allowUnsafeApiUrl()) {\n throw new Error(\n \"api_url must point to a trusted TheCorporation host or localhost; set CORP_UNSAFE_API_URL=1 to allow a custom self-hosted URL\",\n );\n }\n\n parsed.hash = \"\";\n return parsed.toString().replace(/\\/+$/, \"\");\n}\n\nexport function validateLlmBaseUrl(value: string): string {\n let parsed: URL;\n try {\n parsed = new URL(value.trim());\n } catch {\n throw new Error(\"llm.base_url must be a valid absolute URL\");\n }\n\n if (parsed.username || parsed.password) {\n throw new Error(\"llm.base_url must not include embedded credentials\");\n }\n\n const protocol = parsed.protocol.toLowerCase();\n const hostname = parsed.hostname.toLowerCase();\n if (protocol !== \"https:\" && !(protocol === \"http:\" && isLoopbackHost(hostname))) {\n throw new Error(\"llm.base_url must use https, or http only for localhost/loopback development\");\n }\n\n parsed.hash = \"\";\n return parsed.toString().replace(/\\/+$/, \"\");\n}\n\nfunction normalizeString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction normalizeActiveEntityMap(value: unknown): Record<string, string> | undefined {\n if (!isObject(value)) {\n return undefined;\n }\n const entries = Object.entries(value).filter(\n ([workspaceId, entityId]) =>\n typeof workspaceId === \"string\" && typeof entityId === \"string\" && entityId.length > 0,\n );\n if (entries.length === 0) {\n return undefined;\n }\n return Object.fromEntries(entries);\n}\n\nfunction trimReferenceEntries(\n entries: Array<[string, string]>,\n): Array<[string, string]> {\n if (entries.length <= MAX_LAST_REFERENCES) {\n return entries;\n }\n return entries.slice(entries.length - MAX_LAST_REFERENCES);\n}\n\nfunction normalizeReferenceMap(value: unknown): Record<string, string> | undefined {\n if (!isObject(value)) {\n return undefined;\n }\n const entries = Object.entries(value).filter(\n ([key, ref]) => typeof key === \"string\" && typeof ref === \"string\" && ref.trim().length > 0,\n );\n if (entries.length === 0) {\n return undefined;\n }\n return Object.fromEntries(\n trimReferenceEntries(entries.map(([key, ref]) => [key, ref.trim()])),\n );\n}\n\nfunction mergeConfigAndAuth(\n configRaw: unknown,\n authRaw: unknown,\n): Record<string, unknown> {\n const merged: Record<string, unknown> = isObject(configRaw) ? { ...configRaw } : {};\n if (!isObject(authRaw)) {\n return merged;\n }\n for (const key of [\"api_url\", \"api_key\", \"workspace_id\"]) {\n const value = authRaw[key];\n if (typeof value === \"string\") {\n merged[key] = value;\n }\n }\n if (isObject(authRaw.llm)) {\n const llm = isObject(merged.llm) ? { ...merged.llm } : {};\n if (typeof authRaw.llm.api_key === \"string\") {\n llm.api_key = authRaw.llm.api_key;\n }\n merged.llm = llm;\n }\n return merged;\n}\n\nfunction readJsonFile(path: string): unknown {\n if (!existsSync(path)) {\n return {};\n }\n return JSON.parse(readFileSync(path, \"utf-8\")) as unknown;\n}\n\nfunction hasLegacySensitiveConfig(raw: unknown): boolean {\n if (!isObject(raw)) {\n return false;\n }\n if (typeof raw.api_url === \"string\" || typeof raw.api_key === \"string\" || typeof raw.workspace_id === \"string\") {\n return true;\n }\n return isObject(raw.llm) && typeof raw.llm.api_key === \"string\";\n}\n\nfunction normalizeConfig(raw: unknown): CorpConfig {\n const cfg = structuredClone(DEFAULTS) as CorpConfig;\n if (!isObject(raw)) {\n return cfg;\n }\n\n const savedApiUrl = normalizeString(raw.api_url);\n if (savedApiUrl) {\n try {\n cfg.api_url = validateApiUrl(savedApiUrl);\n } catch {\n cfg.api_url = DEFAULTS.api_url;\n }\n }\n cfg.api_key = normalizeString(raw.api_key) ?? cfg.api_key;\n cfg.workspace_id = normalizeString(raw.workspace_id) ?? cfg.workspace_id;\n cfg.hosting_mode = normalizeString(raw.hosting_mode) ?? cfg.hosting_mode;\n cfg.active_entity_id = normalizeString(raw.active_entity_id) ?? cfg.active_entity_id;\n\n if (isObject(raw.llm)) {\n cfg.llm.provider = normalizeString(raw.llm.provider) ?? cfg.llm.provider;\n cfg.llm.api_key = normalizeString(raw.llm.api_key) ?? cfg.llm.api_key;\n cfg.llm.model = normalizeString(raw.llm.model) ?? cfg.llm.model;\n const baseUrl = normalizeString(raw.llm.base_url);\n if (baseUrl && baseUrl.trim()) {\n try {\n cfg.llm.base_url = validateLlmBaseUrl(baseUrl);\n } catch {\n cfg.llm.base_url = undefined;\n }\n }\n }\n\n if (isObject(raw.user)) {\n cfg.user.name = normalizeString(raw.user.name) ?? cfg.user.name;\n cfg.user.email = normalizeString(raw.user.email) ?? cfg.user.email;\n }\n\n const activeEntityIds = normalizeActiveEntityMap(raw.active_entity_ids);\n if (activeEntityIds) {\n cfg.active_entity_ids = activeEntityIds;\n }\n const lastReferences = normalizeReferenceMap(raw.last_references);\n if (lastReferences) {\n cfg.last_references = lastReferences;\n }\n if (cfg.workspace_id && cfg.active_entity_id) {\n cfg.active_entity_ids = {\n ...(cfg.active_entity_ids ?? {}),\n [cfg.workspace_id]: cfg.active_entity_id,\n };\n }\n\n return cfg;\n}\n\nfunction serializeConfig(cfg: CorpConfig): string {\n const normalized = normalizeConfig(cfg);\n const serialized: Record<string, unknown> = {\n hosting_mode: normalized.hosting_mode,\n llm: {\n provider: normalized.llm.provider,\n model: normalized.llm.model,\n ...(normalized.llm.base_url ? { base_url: normalized.llm.base_url } : {}),\n },\n user: {\n name: normalized.user.name,\n email: normalized.user.email,\n },\n active_entity_id: normalized.active_entity_id,\n };\n if (normalized.active_entity_ids && Object.keys(normalized.active_entity_ids).length > 0) {\n serialized.active_entity_ids = normalized.active_entity_ids;\n }\n if (normalized.last_references && Object.keys(normalized.last_references).length > 0) {\n serialized.last_references = normalized.last_references;\n }\n return JSON.stringify(serialized, null, 2) + \"\\n\";\n}\n\nfunction serializeAuth(cfg: CorpConfig): string {\n const normalized = normalizeConfig(cfg);\n const serialized: CorpAuthConfig = {\n api_url: normalized.api_url,\n api_key: normalized.api_key,\n workspace_id: normalized.workspace_id,\n };\n if (normalized.llm.api_key) {\n serialized.llm = { api_key: normalized.llm.api_key };\n }\n return JSON.stringify(serialized, null, 2) + \"\\n\";\n}\n\nfunction requireSupportedConfigKey(dotPath: string): void {\n if (!ALLOWED_CONFIG_KEYS.has(dotPath)) {\n throw new Error(`unsupported config key: ${dotPath}`);\n }\n}\n\nfunction validateSensitiveConfigUpdate(dotPath: string, forceSensitive = false): void {\n if (SENSITIVE_CONFIG_KEYS.has(dotPath) && !forceSensitive) {\n throw new Error(`refusing to update security-sensitive key '${dotPath}' without --force`);\n }\n}\n\nfunction setKnownConfigValue(cfg: CorpConfig, dotPath: string, value: string): void {\n switch (dotPath) {\n case \"api_url\":\n cfg.api_url = validateApiUrl(value);\n return;\n case \"api_key\":\n cfg.api_key = value.trim();\n return;\n case \"workspace_id\":\n cfg.workspace_id = value.trim();\n return;\n case \"hosting_mode\":\n cfg.hosting_mode = value.trim();\n return;\n case \"llm.provider\":\n cfg.llm.provider = value.trim();\n return;\n case \"llm.api_key\":\n cfg.llm.api_key = value.trim();\n return;\n case \"llm.model\":\n cfg.llm.model = value.trim();\n return;\n case \"llm.base_url\":\n cfg.llm.base_url = value.trim() ? validateLlmBaseUrl(value) : undefined;\n return;\n case \"user.name\":\n cfg.user.name = value.trim();\n return;\n case \"user.email\":\n cfg.user.email = value.trim();\n return;\n case \"active_entity_id\":\n setActiveEntityId(cfg, value.trim());\n return;\n default:\n throw new Error(`unsupported config key: ${dotPath}`);\n }\n}\n\nfunction readConfigUnlocked(): CorpConfig {\n ensureSecurePermissions();\n const configRaw = readJsonFile(CONFIG_FILE);\n const authRaw = readJsonFile(AUTH_FILE);\n return normalizeConfig(mergeConfigAndAuth(configRaw, authRaw));\n}\n\nfunction writeConfigUnlocked(cfg: CorpConfig): void {\n ensureSecurePermissions();\n const configTempFile = `${CONFIG_FILE}.${process.pid}.tmp`;\n const authTempFile = `${AUTH_FILE}.${process.pid}.tmp`;\n writeFileSync(configTempFile, serializeConfig(cfg), { mode: 0o600 });\n writeFileSync(authTempFile, serializeAuth(cfg), { mode: 0o600 });\n renameSync(configTempFile, CONFIG_FILE);\n renameSync(authTempFile, AUTH_FILE);\n ensureSecurePermissions();\n}\n\nfunction migrateLegacySensitiveConfigIfNeeded(): void {\n withConfigLock(() => {\n ensureSecurePermissions();\n const configRaw = readJsonFile(CONFIG_FILE);\n if (!hasLegacySensitiveConfig(configRaw)) {\n return;\n }\n const authRaw = readJsonFile(AUTH_FILE);\n const migrated = normalizeConfig(mergeConfigAndAuth(configRaw, authRaw));\n writeConfigUnlocked(migrated);\n });\n}\n\nexport function loadConfig(): CorpConfig {\n migrateLegacySensitiveConfigIfNeeded();\n return readConfigUnlocked();\n}\n\nexport function saveConfig(cfg: CorpConfig): void {\n withConfigLock(() => {\n writeConfigUnlocked(cfg);\n });\n}\n\nexport function updateConfig(mutator: (cfg: CorpConfig) => void): CorpConfig {\n return withConfigLock(() => {\n const cfg = readConfigUnlocked();\n mutator(cfg);\n writeConfigUnlocked(cfg);\n return cfg;\n });\n}\n\nexport function getValue(cfg: Record<string, unknown>, dotPath: string): unknown {\n const keys = dotPath.split(\".\");\n let current: unknown = cfg;\n for (const key of keys) {\n if (typeof current === \"object\" && current !== null && key in current) {\n current = (current as Record<string, unknown>)[key];\n } else {\n return undefined;\n }\n }\n return current;\n}\n\nexport function setValue(\n cfg: Record<string, unknown>,\n dotPath: string,\n value: string,\n options: { forceSensitive?: boolean } = {},\n): void {\n requireSupportedConfigKey(dotPath);\n validateSensitiveConfigUpdate(dotPath, options.forceSensitive);\n setKnownConfigValue(cfg as CorpConfig, dotPath, value);\n}\n\nexport function requireConfig(...fields: string[]): CorpConfig {\n const cfg = loadConfig();\n const missing = fields.filter((f) => !getValue(cfg as unknown as Record<string, unknown>, f));\n if (missing.length > 0) {\n console.error(`Missing config: ${missing.join(\", \")}`);\n console.error(\"Run 'corp setup' to configure.\");\n process.exit(1);\n }\n return cfg;\n}\n\nexport function maskKey(value: string): string {\n if (!value || value.length < 8) return \"***\";\n return \"***\" + value.slice(-4);\n}\n\nexport function configForDisplay(cfg: CorpConfig): Record<string, unknown> {\n const display = { ...cfg } as Record<string, unknown>;\n if (display.api_key) display.api_key = maskKey(display.api_key as string);\n delete display.last_references;\n if (typeof display.llm === \"object\" && display.llm !== null) {\n const llm = { ...(display.llm as Record<string, unknown>) };\n if (llm.api_key) llm.api_key = maskKey(llm.api_key as string);\n display.llm = llm;\n }\n return display;\n}\n\nexport function getActiveEntityId(cfg: CorpConfig): string {\n if (cfg.workspace_id && cfg.active_entity_ids?.[cfg.workspace_id]) {\n return cfg.active_entity_ids[cfg.workspace_id];\n }\n return cfg.active_entity_id;\n}\n\nexport function setActiveEntityId(cfg: CorpConfig, entityId: string): void {\n cfg.active_entity_id = entityId;\n if (!cfg.workspace_id) {\n return;\n }\n cfg.active_entity_ids = {\n ...(cfg.active_entity_ids ?? {}),\n [cfg.workspace_id]: entityId,\n };\n}\n\nfunction referenceScopeKey(workspaceId: string, entityId?: string): string {\n if (workspaceId && entityId) {\n return `workspace:${workspaceId}:entity:${entityId}`;\n }\n if (workspaceId) {\n return `workspace:${workspaceId}`;\n }\n return \"global\";\n}\n\nexport function getLastReference(\n cfg: CorpConfig,\n kind: string,\n entityId?: string,\n): string | undefined {\n const normalizedKind = kind.trim().toLowerCase();\n const entityScopedKey = `${referenceScopeKey(cfg.workspace_id, entityId)}:${normalizedKind}`;\n if (entityId) {\n return cfg.last_references?.[entityScopedKey];\n }\n const workspaceScopedKey = `${referenceScopeKey(cfg.workspace_id)}:${normalizedKind}`;\n return cfg.last_references?.[workspaceScopedKey];\n}\n\nexport function setLastReference(\n cfg: CorpConfig,\n kind: string,\n referenceId: string,\n entityId?: string,\n): void {\n const normalizedKind = kind.trim().toLowerCase();\n const scopedKey = `${referenceScopeKey(cfg.workspace_id, entityId)}:${normalizedKind}`;\n const nextEntries = Object.entries({\n ...(cfg.last_references ?? {}),\n [scopedKey]: referenceId.trim(),\n });\n cfg.last_references = Object.fromEntries(trimReferenceEntries(nextEntries));\n}\n\nexport function resolveEntityId(cfg: CorpConfig, explicitId?: string): string {\n const eid = explicitId || getActiveEntityId(cfg);\n if (!eid) {\n console.error(\n \"No entity specified. Use --entity-id or set active_entity_id via 'corp config set active_entity_id <id>'.\"\n );\n process.exit(1);\n }\n return eid;\n}\n","export { CorpAPIClient, SessionExpiredError, provisionWorkspace } from \"@thecorporation/corp-tools\";\n","import {\n getActiveEntityId,\n getLastReference,\n setLastReference,\n updateConfig,\n} from \"./config.js\";\nimport { CorpAPIClient } from \"./api-client.js\";\nimport type { ApiRecord, CorpConfig } from \"./types.js\";\n\nexport type ResourceKind =\n | \"entity\"\n | \"contact\"\n | \"share_transfer\"\n | \"invoice\"\n | \"bank_account\"\n | \"payment\"\n | \"payroll_run\"\n | \"distribution\"\n | \"reconciliation\"\n | \"tax_filing\"\n | \"deadline\"\n | \"classification\"\n | \"body\"\n | \"meeting\"\n | \"seat\"\n | \"agenda_item\"\n | \"resolution\"\n | \"document\"\n | \"work_item\"\n | \"agent\"\n | \"valuation\"\n | \"safe_note\"\n | \"instrument\"\n | \"share_class\"\n | \"round\";\n\nexport type MatchRecord = {\n id: string;\n label: string;\n tokens: Set<string>;\n raw: ApiRecord;\n};\n\nexport type ReferenceMatch = {\n kind: ResourceKind;\n id: string;\n short_id: string;\n label: string;\n alias?: string;\n raw: ApiRecord;\n};\n\nconst RESOURCE_KINDS = [\n \"entity\",\n \"contact\",\n \"share_transfer\",\n \"invoice\",\n \"bank_account\",\n \"payment\",\n \"payroll_run\",\n \"distribution\",\n \"reconciliation\",\n \"tax_filing\",\n \"deadline\",\n \"classification\",\n \"body\",\n \"meeting\",\n \"seat\",\n \"agenda_item\",\n \"resolution\",\n \"document\",\n \"work_item\",\n \"agent\",\n \"valuation\",\n \"safe_note\",\n \"instrument\",\n \"share_class\",\n \"round\",\n] as const satisfies readonly ResourceKind[];\n\nconst VALID_RESOURCE_KINDS = new Set<ResourceKind>(RESOURCE_KINDS);\nconst MAX_REFERENCE_INPUT_LEN = 256;\n\nfunction normalize(value: string): string {\n return value.trim().toLowerCase();\n}\n\nfunction validateReferenceInput(\n value: string,\n field: string,\n options: { allowEmpty?: boolean } = {},\n): string {\n const trimmed = value.trim();\n if (!options.allowEmpty && trimmed.length === 0) {\n throw new Error(`${field} cannot be empty.`);\n }\n if (trimmed.length > MAX_REFERENCE_INPUT_LEN) {\n throw new Error(`${field} must be at most ${MAX_REFERENCE_INPUT_LEN} characters.`);\n }\n return trimmed;\n}\n\nexport function shortId(value: string | undefined): string {\n return String(value ?? \"\").slice(0, 8);\n}\n\nexport function slugify(value: string | undefined): string {\n return String(value ?? \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\nfunction isOpaqueUuid(value: string): boolean {\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(\n value.trim(),\n );\n}\n\nfunction isShortIdCandidate(value: string): boolean {\n const trimmed = value.trim();\n return /^[0-9a-f-]{4,}$/i.test(trimmed) || /^[a-z]+_[a-z0-9_-]{3,}$/i.test(trimmed);\n}\n\nfunction parseLastReference(value: string): { isLast: boolean; kind?: ResourceKind } {\n const trimmed = validateReferenceInput(value, \"reference\", { allowEmpty: false }).toLowerCase();\n if (trimmed === \"_\" || trimmed === \"@last\") {\n return { isLast: true };\n }\n if (trimmed.startsWith(\"@last:\")) {\n const kind = trimmed.slice(6);\n if (!VALID_RESOURCE_KINDS.has(kind as ResourceKind)) {\n throw new Error(`Unknown reference kind: ${kind}`);\n }\n return { isLast: true, kind: kind as ResourceKind };\n }\n return { isLast: false };\n}\n\nfunction uniqueStrings(values: Array<string | undefined | null>): Set<string> {\n const out = new Set<string>();\n for (const value of values) {\n if (!value) continue;\n const trimmed = value.trim();\n if (!trimmed) continue;\n out.add(normalize(trimmed));\n const slug = slugify(trimmed);\n if (slug) out.add(slug);\n }\n return out;\n}\n\nfunction kindLabel(kind: ResourceKind): string {\n return kind.replaceAll(\"_\", \" \");\n}\n\nfunction isEntityScopedKind(kind: ResourceKind): boolean {\n return kind !== \"entity\" && kind !== \"agent\";\n}\n\nfunction extractId(record: ApiRecord, fields: string[]): string | undefined {\n for (const field of fields) {\n const value = record[field];\n if (typeof value === \"string\" && value.trim()) {\n return value.trim();\n }\n }\n return undefined;\n}\n\nexport function describeReferenceRecord(kind: ResourceKind, record: ApiRecord): MatchRecord | null {\n const specs: Record<ResourceKind, { idFields: string[]; labelFields: string[] }> = {\n entity: { idFields: [\"entity_id\", \"id\"], labelFields: [\"legal_name\", \"name\"] },\n contact: { idFields: [\"contact_id\", \"id\"], labelFields: [\"name\", \"email\"] },\n share_transfer: {\n idFields: [\"transfer_id\", \"id\"],\n labelFields: [\"from_holder\", \"to_holder\", \"transfer_type\", \"status\"],\n },\n invoice: {\n idFields: [\"invoice_id\", \"id\"],\n labelFields: [\"customer_name\", \"description\", \"due_date\"],\n },\n bank_account: {\n idFields: [\"bank_account_id\", \"account_id\", \"id\"],\n labelFields: [\"bank_name\", \"account_type\"],\n },\n payment: {\n idFields: [\"payment_id\", \"id\"],\n labelFields: [\"recipient\", \"description\", \"payment_method\"],\n },\n payroll_run: {\n idFields: [\"payroll_run_id\", \"id\"],\n labelFields: [\"pay_period_start\", \"pay_period_end\"],\n },\n distribution: {\n idFields: [\"distribution_id\", \"id\"],\n labelFields: [\"description\", \"distribution_type\"],\n },\n reconciliation: {\n idFields: [\"reconciliation_id\", \"id\"],\n labelFields: [\"as_of_date\", \"status\"],\n },\n tax_filing: {\n idFields: [\"filing_id\", \"id\"],\n labelFields: [\"document_type\", \"tax_year\"],\n },\n deadline: {\n idFields: [\"deadline_id\", \"id\"],\n labelFields: [\"deadline_type\", \"description\", \"due_date\"],\n },\n classification: {\n idFields: [\"classification_id\", \"id\"],\n labelFields: [\"contractor_name\", \"state\", \"risk_level\"],\n },\n body: { idFields: [\"body_id\", \"id\"], labelFields: [\"name\"] },\n meeting: { idFields: [\"meeting_id\", \"id\"], labelFields: [\"title\", \"name\"] },\n seat: {\n idFields: [\"seat_id\", \"id\"],\n labelFields: [\"seat_name\", \"title\", \"holder_name\", \"holder\", \"holder_email\"],\n },\n agenda_item: { idFields: [\"agenda_item_id\", \"item_id\", \"id\"], labelFields: [\"title\"] },\n resolution: { idFields: [\"resolution_id\", \"id\"], labelFields: [\"title\"] },\n document: { idFields: [\"document_id\", \"id\"], labelFields: [\"title\", \"name\"] },\n work_item: { idFields: [\"work_item_id\", \"id\"], labelFields: [\"title\"] },\n agent: { idFields: [\"agent_id\", \"id\"], labelFields: [\"name\"] },\n valuation: {\n idFields: [\"valuation_id\", \"id\"],\n labelFields: [\"valuation_type\", \"effective_date\", \"date\"],\n },\n safe_note: {\n idFields: [\"safe_note_id\", \"safe_id\", \"id\"],\n labelFields: [\"investor_name\", \"investor\", \"safe_type\"],\n },\n instrument: { idFields: [\"instrument_id\", \"id\"], labelFields: [\"symbol\", \"kind\", \"name\"] },\n share_class: {\n idFields: [\"share_class_id\", \"id\"],\n labelFields: [\"class_code\", \"name\", \"share_class\"],\n },\n round: { idFields: [\"round_id\", \"equity_round_id\", \"id\"], labelFields: [\"name\"] },\n };\n const spec = specs[kind];\n const id = extractId(record, spec.idFields);\n if (!id) {\n return null;\n }\n const labels = spec.labelFields\n .map((field) => record[field])\n .filter((value): value is string => typeof value === \"string\" && value.trim().length > 0);\n const persistedHandle = typeof record.handle === \"string\" && record.handle.trim().length > 0\n ? record.handle.trim()\n : undefined;\n let label = labels[0] ?? id;\n if (kind === \"share_transfer\") {\n const fromHolder = typeof record.from_holder === \"string\" ? record.from_holder.trim() : \"\";\n const toHolder = typeof record.to_holder === \"string\" ? record.to_holder.trim() : \"\";\n const transferType = typeof record.transfer_type === \"string\" ? record.transfer_type.trim() : \"\";\n const composite = [fromHolder && toHolder ? `${fromHolder}-to-${toHolder}` : \"\", transferType]\n .filter(Boolean)\n .join(\"-\");\n if (composite) {\n label = composite;\n }\n }\n return {\n id,\n label,\n tokens: uniqueStrings([id, persistedHandle, ...labels]),\n raw: record,\n };\n}\n\nexport function getReferenceId(kind: ResourceKind, record: ApiRecord): string | undefined {\n return describeReferenceRecord(kind, record)?.id;\n}\n\nexport function getReferenceLabel(kind: ResourceKind, record: ApiRecord): string | undefined {\n return describeReferenceRecord(kind, record)?.label;\n}\n\nexport function getReferenceAlias(kind: ResourceKind, record: ApiRecord): string | undefined {\n if (typeof record.handle === \"string\" && record.handle.trim().length > 0) {\n return record.handle.trim();\n }\n const described = describeReferenceRecord(kind, record);\n if (!described) return undefined;\n const alias = slugify(described.label);\n return alias || shortId(described.id);\n}\n\ntype Scope = { entityId?: string; bodyId?: string; meetingId?: string };\n\nexport class ReferenceResolver {\n private readonly client: CorpAPIClient;\n private readonly cfg: CorpConfig;\n private entityCache?: ApiRecord[];\n private readonly contactsCache = new Map<string, ApiRecord[]>();\n private readonly shareTransfersCache = new Map<string, ApiRecord[]>();\n private readonly invoicesCache = new Map<string, ApiRecord[]>();\n private readonly bankAccountsCache = new Map<string, ApiRecord[]>();\n private readonly paymentsCache = new Map<string, ApiRecord[]>();\n private readonly payrollRunsCache = new Map<string, ApiRecord[]>();\n private readonly distributionsCache = new Map<string, ApiRecord[]>();\n private readonly reconciliationsCache = new Map<string, ApiRecord[]>();\n private readonly taxFilingsCache = new Map<string, ApiRecord[]>();\n private readonly deadlinesCache = new Map<string, ApiRecord[]>();\n private readonly classificationsCache = new Map<string, ApiRecord[]>();\n private readonly bodiesCache = new Map<string, ApiRecord[]>();\n private readonly meetingsCache = new Map<string, ApiRecord[]>();\n private readonly seatsCache = new Map<string, ApiRecord[]>();\n private readonly agendaCache = new Map<string, ApiRecord[]>();\n private readonly resolutionsCache = new Map<string, ApiRecord[]>();\n private readonly documentsCache = new Map<string, ApiRecord[]>();\n private readonly workItemsCache = new Map<string, ApiRecord[]>();\n private readonly valuationsCache = new Map<string, ApiRecord[]>();\n private readonly safeNotesCache = new Map<string, ApiRecord[]>();\n private readonly roundsCache = new Map<string, ApiRecord[]>();\n private readonly capTableCache = new Map<string, ApiRecord>();\n private agentsCache?: ApiRecord[];\n\n constructor(client: CorpAPIClient, cfg: CorpConfig) {\n this.client = client;\n this.cfg = cfg;\n }\n\n async resolveEntity(ref?: string): Promise<string> {\n if (!ref || !ref.trim()) {\n const activeEntityId = getActiveEntityId(this.cfg);\n if (!activeEntityId) {\n throw new Error(\n \"No entity specified. Use --entity-id or set active_entity_id via 'corp config set active_entity_id <ref>'.\",\n );\n }\n this.remember(\"entity\", activeEntityId);\n return activeEntityId;\n }\n return this.resolve(\"entity\", ref);\n }\n\n async resolveContact(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"contact\", ref, { entityId });\n }\n\n async resolveShareTransfer(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"share_transfer\", ref, { entityId });\n }\n\n async resolveInvoice(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"invoice\", ref, { entityId });\n }\n\n async resolveBankAccount(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"bank_account\", ref, { entityId });\n }\n\n async resolvePayment(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"payment\", ref, { entityId });\n }\n\n async resolvePayrollRun(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"payroll_run\", ref, { entityId });\n }\n\n async resolveDistribution(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"distribution\", ref, { entityId });\n }\n\n async resolveReconciliation(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"reconciliation\", ref, { entityId });\n }\n\n async resolveTaxFiling(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"tax_filing\", ref, { entityId });\n }\n\n async resolveDeadline(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"deadline\", ref, { entityId });\n }\n\n async resolveClassification(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"classification\", ref, { entityId });\n }\n\n async resolveBody(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"body\", ref, { entityId });\n }\n\n async resolveMeeting(entityId: string, ref: string, bodyId?: string): Promise<string> {\n return this.resolve(\"meeting\", ref, { entityId, bodyId });\n }\n\n async resolveSeat(entityId: string, ref: string, bodyId?: string): Promise<string> {\n return this.resolve(\"seat\", ref, { entityId, bodyId });\n }\n\n async resolveAgendaItem(entityId: string, meetingId: string, ref: string): Promise<string> {\n return this.resolve(\"agenda_item\", ref, { entityId, meetingId });\n }\n\n async resolveResolution(\n entityId: string,\n ref: string,\n meetingId?: string,\n ): Promise<string> {\n return this.resolve(\"resolution\", ref, { entityId, meetingId });\n }\n\n async resolveDocument(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"document\", ref, { entityId });\n }\n\n async resolveWorkItem(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"work_item\", ref, { entityId });\n }\n\n async resolveAgent(ref: string): Promise<string> {\n return this.resolve(\"agent\", ref);\n }\n\n async resolveValuation(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"valuation\", ref, { entityId });\n }\n\n async resolveSafeNote(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"safe_note\", ref, { entityId });\n }\n\n async resolveInstrument(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"instrument\", ref, { entityId });\n }\n\n async resolveShareClass(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"share_class\", ref, { entityId });\n }\n\n async resolveRound(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"round\", ref, { entityId });\n }\n\n async find(\n kind: ResourceKind,\n query: string,\n scope: Scope = {},\n ): Promise<ReferenceMatch[]> {\n const trimmedQuery = validateReferenceInput(query, \"query\", { allowEmpty: true });\n const records = await this.listRecords(kind, scope);\n const described = records\n .map((record) => describeReferenceRecord(kind, record))\n .filter((record): record is MatchRecord => record !== null);\n const normalizedQuery = normalize(trimmedQuery);\n\n const matches = described\n .filter((record) => {\n if (!normalizedQuery || normalizedQuery === \"*\") {\n return true;\n }\n if (normalize(record.id).startsWith(normalizedQuery)) {\n return true;\n }\n if (record.tokens.has(normalizedQuery)) {\n return true;\n }\n return Array.from(record.tokens).some((token) => token.includes(normalizedQuery));\n })\n .sort((left, right) => this.matchRank(left, normalizedQuery) - this.matchRank(right, normalizedQuery)\n || left.label.localeCompare(right.label)\n || left.id.localeCompare(right.id));\n\n return matches.map((record) => ({\n kind,\n id: record.id,\n short_id: shortId(record.id),\n label: record.label,\n alias: this.referenceAlias(kind, record.raw),\n raw: record.raw,\n }));\n }\n\n remember(kind: ResourceKind, referenceId: string, entityId?: string): void {\n setLastReference(this.cfg, kind, referenceId, entityId);\n updateConfig((cfg) => {\n setLastReference(cfg, kind, referenceId, entityId);\n });\n }\n\n rememberFromRecord(kind: ResourceKind, record: ApiRecord, entityId?: string): void {\n const described = describeReferenceRecord(kind, record);\n if (described) {\n this.remember(kind, described.id, entityId);\n }\n }\n\n async stabilizeRecord(kind: ResourceKind, record: ApiRecord, entityId?: string): Promise<ApiRecord> {\n const described = describeReferenceRecord(kind, record);\n if (!described) return record;\n if (typeof record.handle === \"string\" && record.handle.trim().length > 0) {\n return record;\n }\n const response = await this.client.syncReferences(\n kind,\n [{ resource_id: described.id, label: described.label }],\n isEntityScopedKind(kind) ? entityId : undefined,\n );\n const handle = response.references[0]?.handle;\n if (typeof handle === \"string\" && handle.trim().length > 0) {\n record.handle = handle.trim();\n }\n return record;\n }\n\n async stabilizeRecords(kind: ResourceKind, records: ApiRecord[], entityId?: string): Promise<ApiRecord[]> {\n return this.attachStableHandles(kind, records, entityId);\n }\n\n referenceAlias(kind: ResourceKind, record: ApiRecord): string | undefined {\n return getReferenceAlias(kind, record);\n }\n\n private async resolve(kind: ResourceKind, ref: string, scope: Scope = {}): Promise<string> {\n const last = parseLastReference(ref);\n if (last.isLast) {\n const lastKind = last.kind ?? kind;\n if (lastKind !== kind) {\n throw new Error(`@last:${lastKind} cannot be used where a ${kindLabel(kind)} reference is required.`);\n }\n const remembered = getLastReference(this.cfg, lastKind, scope.entityId);\n if (!remembered) {\n throw new Error(`No ${kindLabel(lastKind)} is recorded for @last.`);\n }\n this.remember(kind, remembered, scope.entityId);\n return remembered;\n }\n\n const trimmed = validateReferenceInput(ref, `${kindLabel(kind)} reference`);\n if (isOpaqueUuid(trimmed)) {\n this.remember(kind, trimmed, scope.entityId);\n return trimmed;\n }\n\n const records = await this.listRecords(kind, scope);\n const match = this.matchRecords(kind, trimmed, records);\n this.remember(kind, match.id, scope.entityId);\n return match.id;\n }\n\n private matchRecords(kind: ResourceKind, ref: string, records: ApiRecord[]): MatchRecord {\n const described = records\n .map((record) => describeReferenceRecord(kind, record))\n .filter((record): record is MatchRecord => record !== null);\n const normalizedRef = normalize(ref);\n\n const exactIdMatches = described.filter((record) => normalize(record.id) === normalizedRef);\n if (exactIdMatches.length === 1) {\n return exactIdMatches[0];\n }\n\n const exactTokenMatches = described.filter((record) => record.tokens.has(normalizedRef));\n if (exactTokenMatches.length === 1) {\n return exactTokenMatches[0];\n }\n if (exactTokenMatches.length > 1) {\n throw new Error(this.ambiguousMessage(kind, ref, exactTokenMatches));\n }\n\n if (isShortIdCandidate(ref)) {\n const prefixMatches = described.filter((record) => normalize(record.id).startsWith(normalizedRef));\n if (prefixMatches.length === 1) {\n return prefixMatches[0];\n }\n if (prefixMatches.length > 1) {\n throw new Error(this.ambiguousMessage(kind, ref, prefixMatches));\n }\n }\n\n throw new Error(\n `No ${kindLabel(kind)} found for reference \"${ref}\". Try: corp find ${kind} ${JSON.stringify(ref)}`,\n );\n }\n\n private ambiguousMessage(kind: ResourceKind, ref: string, matches: MatchRecord[]): string {\n const previews = matches\n .slice(0, 5)\n .map((match) => `${match.label} [${shortId(match.id)}]`)\n .join(\", \");\n return `Ambiguous ${kindLabel(kind)} reference \"${ref}\". Matches: ${previews}. Try: corp find ${kind} ${JSON.stringify(ref)}`;\n }\n\n private matchRank(record: MatchRecord, normalizedQuery: string): number {\n if (!normalizedQuery || normalizedQuery === \"*\") {\n return 5;\n }\n if (normalize(record.id) === normalizedQuery) {\n return 0;\n }\n if (record.tokens.has(normalizedQuery)) {\n return 1;\n }\n if (normalize(record.id).startsWith(normalizedQuery)) {\n return 2;\n }\n if (Array.from(record.tokens).some((token) => token.startsWith(normalizedQuery))) {\n return 3;\n }\n return 4;\n }\n\n private async listRecords(kind: ResourceKind, scope: Scope): Promise<ApiRecord[]> {\n const records = await (async () => {\n switch (kind) {\n case \"entity\":\n return this.listEntities();\n case \"contact\":\n return this.listContacts(scope.entityId);\n case \"share_transfer\":\n return this.listShareTransfers(scope.entityId);\n case \"invoice\":\n return this.listInvoices(scope.entityId);\n case \"bank_account\":\n return this.listBankAccounts(scope.entityId);\n case \"payment\":\n return this.listPayments(scope.entityId);\n case \"payroll_run\":\n return this.listPayrollRuns(scope.entityId);\n case \"distribution\":\n return this.listDistributions(scope.entityId);\n case \"reconciliation\":\n return this.listReconciliations(scope.entityId);\n case \"tax_filing\":\n return this.listTaxFilings(scope.entityId);\n case \"deadline\":\n return this.listDeadlines(scope.entityId);\n case \"classification\":\n return this.listClassifications(scope.entityId);\n case \"body\":\n return this.listBodies(scope.entityId);\n case \"meeting\":\n return this.listMeetings(scope.entityId, scope.bodyId);\n case \"seat\":\n return this.listSeats(scope.entityId, scope.bodyId);\n case \"agenda_item\":\n return this.listAgendaItems(scope.entityId, scope.meetingId);\n case \"resolution\":\n return this.listResolutions(scope.entityId, scope.meetingId);\n case \"document\":\n return this.listDocuments(scope.entityId);\n case \"work_item\":\n return this.listWorkItems(scope.entityId);\n case \"agent\":\n return this.listAgents();\n case \"valuation\":\n return this.listValuations(scope.entityId);\n case \"safe_note\":\n return this.listSafeNotes(scope.entityId);\n case \"instrument\":\n return this.listInstruments(scope.entityId);\n case \"share_class\":\n return this.listShareClasses(scope.entityId);\n case \"round\":\n return this.listRounds(scope.entityId);\n }\n })();\n return this.attachStableHandles(kind, records, scope.entityId);\n }\n\n private async attachStableHandles(\n kind: ResourceKind,\n records: ApiRecord[],\n entityId?: string,\n ): Promise<ApiRecord[]> {\n const missing = records\n .map((record) => ({ record, described: describeReferenceRecord(kind, record) }))\n .filter(\n (entry): entry is { record: ApiRecord; described: MatchRecord } =>\n entry.described !== null\n && !(typeof entry.record.handle === \"string\" && entry.record.handle.trim().length > 0),\n );\n if (missing.length === 0) {\n return records;\n }\n\n const response = await this.client.syncReferences(\n kind,\n missing.map(({ described }) => ({\n resource_id: described.id,\n label: described.label,\n })),\n isEntityScopedKind(kind) ? entityId : undefined,\n );\n const handleById = new Map<string, string>();\n for (const reference of response.references) {\n if (typeof reference.resource_id === \"string\" && typeof reference.handle === \"string\") {\n handleById.set(reference.resource_id, reference.handle);\n }\n }\n for (const { record, described } of missing) {\n const handle = handleById.get(described.id);\n if (handle) {\n record.handle = handle;\n }\n }\n return records;\n }\n\n private async listEntities(): Promise<ApiRecord[]> {\n if (!this.entityCache) {\n this.entityCache = await this.client.listEntities();\n }\n return this.entityCache;\n }\n\n private async listContacts(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve contacts.\");\n const cached = this.contactsCache.get(entityId);\n if (cached) return cached;\n const contacts = await this.client.listContacts(entityId);\n this.contactsCache.set(entityId, contacts);\n return contacts;\n }\n\n private async listShareTransfers(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve share transfers.\");\n const cached = this.shareTransfersCache.get(entityId);\n if (cached) return cached;\n const transfers = await this.client.listShareTransfers(entityId);\n this.shareTransfersCache.set(entityId, transfers);\n return transfers;\n }\n\n private async listInvoices(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve invoices.\");\n const cached = this.invoicesCache.get(entityId);\n if (cached) return cached;\n const invoices = await this.client.listInvoices(entityId);\n this.invoicesCache.set(entityId, invoices);\n return invoices;\n }\n\n private async listBankAccounts(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve bank accounts.\");\n const cached = this.bankAccountsCache.get(entityId);\n if (cached) return cached;\n const bankAccounts = await this.client.listBankAccounts(entityId);\n this.bankAccountsCache.set(entityId, bankAccounts);\n return bankAccounts;\n }\n\n private async listPayments(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve payments.\");\n const cached = this.paymentsCache.get(entityId);\n if (cached) return cached;\n const payments = await this.client.listPayments(entityId);\n this.paymentsCache.set(entityId, payments);\n return payments;\n }\n\n private async listPayrollRuns(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve payroll runs.\");\n const cached = this.payrollRunsCache.get(entityId);\n if (cached) return cached;\n const payrollRuns = await this.client.listPayrollRuns(entityId);\n this.payrollRunsCache.set(entityId, payrollRuns);\n return payrollRuns;\n }\n\n private async listDistributions(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve distributions.\");\n const cached = this.distributionsCache.get(entityId);\n if (cached) return cached;\n const distributions = await this.client.listDistributions(entityId);\n this.distributionsCache.set(entityId, distributions);\n return distributions;\n }\n\n private async listReconciliations(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve reconciliations.\");\n const cached = this.reconciliationsCache.get(entityId);\n if (cached) return cached;\n const reconciliations = await this.client.listReconciliations(entityId);\n this.reconciliationsCache.set(entityId, reconciliations);\n return reconciliations;\n }\n\n private async listTaxFilings(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve tax filings.\");\n const cached = this.taxFilingsCache.get(entityId);\n if (cached) return cached;\n const filings = await this.client.listTaxFilings(entityId);\n this.taxFilingsCache.set(entityId, filings);\n return filings;\n }\n\n private async listDeadlines(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve deadlines.\");\n const cached = this.deadlinesCache.get(entityId);\n if (cached) return cached;\n const deadlines = await this.client.listDeadlines(entityId);\n this.deadlinesCache.set(entityId, deadlines);\n return deadlines;\n }\n\n private async listClassifications(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve contractor classifications.\");\n const cached = this.classificationsCache.get(entityId);\n if (cached) return cached;\n const classifications = await this.client.listContractorClassifications(entityId);\n this.classificationsCache.set(entityId, classifications);\n return classifications;\n }\n\n private async listBodies(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve governance bodies.\");\n const cached = this.bodiesCache.get(entityId);\n if (cached) return cached;\n const bodies = await this.client.listGovernanceBodies(entityId);\n this.bodiesCache.set(entityId, bodies as ApiRecord[]);\n return bodies as ApiRecord[];\n }\n\n private async listMeetings(entityId?: string, bodyId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve meetings.\");\n const cacheKey = `${entityId}:${bodyId ?? \"*\"}`;\n const cached = this.meetingsCache.get(cacheKey);\n if (cached) return cached;\n\n const meetings: ApiRecord[] = [];\n if (bodyId) {\n meetings.push(...((await this.client.listMeetings(bodyId, entityId)) as ApiRecord[]));\n } else {\n const bodies = await this.listBodies(entityId);\n for (const body of bodies) {\n const resolvedBodyId = extractId(body, [\"body_id\", \"id\"]);\n if (!resolvedBodyId) continue;\n meetings.push(...((await this.client.listMeetings(resolvedBodyId, entityId)) as ApiRecord[]));\n }\n }\n this.meetingsCache.set(cacheKey, meetings);\n return meetings;\n }\n\n private async listSeats(entityId?: string, bodyId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve seats.\");\n const cacheKey = `${entityId}:${bodyId ?? \"*\"}`;\n const cached = this.seatsCache.get(cacheKey);\n if (cached) return cached;\n\n const seats: ApiRecord[] = [];\n if (bodyId) {\n seats.push(...((await this.client.getGovernanceSeats(bodyId, entityId)) as ApiRecord[]));\n } else {\n const bodies = await this.listBodies(entityId);\n for (const body of bodies) {\n const resolvedBodyId = extractId(body, [\"body_id\", \"id\"]);\n if (!resolvedBodyId) continue;\n seats.push(...((await this.client.getGovernanceSeats(resolvedBodyId, entityId)) as ApiRecord[]));\n }\n }\n this.seatsCache.set(cacheKey, seats);\n return seats;\n }\n\n private async listAgendaItems(entityId?: string, meetingId?: string): Promise<ApiRecord[]> {\n if (!entityId || !meetingId) {\n throw new Error(\"Entity and meeting context are required to resolve agenda items.\");\n }\n const cached = this.agendaCache.get(`${entityId}:${meetingId}`);\n if (cached) return cached;\n const items = (await this.client.listAgendaItems(meetingId, entityId)) as ApiRecord[];\n this.agendaCache.set(`${entityId}:${meetingId}`, items);\n return items;\n }\n\n private async listResolutions(entityId?: string, meetingId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve resolutions.\");\n const cacheKey = `${entityId}:${meetingId ?? \"*\"}`;\n const cached = this.resolutionsCache.get(cacheKey);\n if (cached) return cached;\n\n const resolutions: ApiRecord[] = [];\n if (meetingId) {\n resolutions.push(...((await this.client.getMeetingResolutions(meetingId, entityId)) as ApiRecord[]));\n } else {\n const meetings = await this.listMeetings(entityId);\n for (const meeting of meetings) {\n const resolvedMeetingId = extractId(meeting, [\"meeting_id\", \"id\"]);\n if (!resolvedMeetingId) continue;\n resolutions.push(...((await this.client.getMeetingResolutions(resolvedMeetingId, entityId)) as ApiRecord[]));\n }\n }\n this.resolutionsCache.set(cacheKey, resolutions);\n return resolutions;\n }\n\n private async listDocuments(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve documents.\");\n const cached = this.documentsCache.get(entityId);\n if (cached) return cached;\n const docs = (await this.client.getEntityDocuments(entityId)) as ApiRecord[];\n this.documentsCache.set(entityId, docs);\n return docs;\n }\n\n private async listWorkItems(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve work items.\");\n const cached = this.workItemsCache.get(entityId);\n if (cached) return cached;\n const items = (await this.client.listWorkItems(entityId)) as ApiRecord[];\n this.workItemsCache.set(entityId, items);\n return items;\n }\n\n private async listAgents(): Promise<ApiRecord[]> {\n if (!this.agentsCache) {\n this.agentsCache = (await this.client.listAgents()) as ApiRecord[];\n }\n return this.agentsCache;\n }\n\n private async listValuations(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve valuations.\");\n const cached = this.valuationsCache.get(entityId);\n if (cached) return cached;\n const valuations = (await this.client.getValuations(entityId)) as ApiRecord[];\n this.valuationsCache.set(entityId, valuations);\n return valuations;\n }\n\n private async listSafeNotes(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve SAFE notes.\");\n const cached = this.safeNotesCache.get(entityId);\n if (cached) return cached;\n const safeNotes = (await this.client.getSafeNotes(entityId)) as ApiRecord[];\n this.safeNotesCache.set(entityId, safeNotes);\n return safeNotes;\n }\n\n private async listRounds(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve rounds.\");\n const cached = this.roundsCache.get(entityId);\n if (cached) return cached;\n const rounds = (await this.client.listEquityRounds(entityId)) as ApiRecord[];\n this.roundsCache.set(entityId, rounds);\n return rounds;\n }\n\n private async getCapTable(entityId?: string): Promise<ApiRecord> {\n if (!entityId) throw new Error(\"An entity context is required to resolve cap table resources.\");\n const cached = this.capTableCache.get(entityId);\n if (cached) return cached;\n const capTable = (await this.client.getCapTable(entityId)) as ApiRecord;\n this.capTableCache.set(entityId, capTable);\n return capTable;\n }\n\n private async listInstruments(entityId?: string): Promise<ApiRecord[]> {\n const capTable = await this.getCapTable(entityId);\n return Array.isArray(capTable.instruments) ? (capTable.instruments as ApiRecord[]) : [];\n }\n\n private async listShareClasses(entityId?: string): Promise<ApiRecord[]> {\n const capTable = await this.getCapTable(entityId);\n return Array.isArray(capTable.share_classes) ? (capTable.share_classes as ApiRecord[]) : [];\n }\n}\n","import chalk from \"chalk\";\nimport Table from \"cli-table3\";\nimport type { ApiRecord } from \"./types.js\";\nimport {\n getReferenceAlias,\n getReferenceId,\n shortId,\n type ResourceKind,\n} from \"./references.js\";\n\nconst URGENCY_COLORS: Record<string, (s: string) => string> = {\n overdue: chalk.red.bold,\n due_today: chalk.yellow.bold,\n d1: chalk.yellow,\n d7: chalk.cyan,\n d14: chalk.blue,\n d30: chalk.dim,\n upcoming: chalk.dim,\n};\n\nexport function printError(msg: string): void {\n console.error(chalk.red(\"Error:\"), msg);\n}\n\nexport function printSuccess(msg: string): void {\n console.log(chalk.green(msg));\n}\n\nexport function printWarning(msg: string): void {\n console.log(chalk.yellow(msg));\n}\n\nexport function printJson(data: unknown): void {\n console.log(JSON.stringify(data, null, 2));\n}\n\nexport function printDryRun(operation: string, payload: unknown): void {\n printJson({\n dry_run: true,\n operation,\n payload,\n });\n}\n\ntype WriteResultOptions =\n | boolean\n | {\n jsonOnly?: boolean;\n referenceKind?: ResourceKind;\n referenceLabel?: string;\n showReuseHint?: boolean;\n };\n\nfunction normalizeWriteResultOptions(options?: WriteResultOptions): {\n jsonOnly?: boolean;\n referenceKind?: ResourceKind;\n referenceLabel?: string;\n showReuseHint?: boolean;\n} {\n if (typeof options === \"boolean\") {\n return { jsonOnly: options };\n }\n return options ?? {};\n}\n\nfunction formatReferenceCell(kind: ResourceKind, record: ApiRecord): string {\n const id = getReferenceId(kind, record);\n if (!id) return \"\";\n const alias = getReferenceAlias(kind, record);\n return alias ? `${alias} [${shortId(id)}]` : shortId(id);\n}\n\nexport function printReferenceSummary(\n kind: ResourceKind,\n record: ApiRecord,\n opts: { label?: string; showReuseHint?: boolean } = {},\n): void {\n const id = getReferenceId(kind, record);\n if (!id) return;\n const alias = getReferenceAlias(kind, record);\n const token = alias ? `${alias} [${shortId(id)}]` : shortId(id);\n console.log(` ${chalk.bold(opts.label ?? \"Ref:\")} ${token}`);\n console.log(` ${chalk.bold(\"ID:\")} ${id}`);\n if (opts.showReuseHint) {\n console.log(` ${chalk.bold(\"Reuse:\")} @last:${kind}`);\n }\n}\n\nexport function printWriteResult(\n result: unknown,\n successMessage: string,\n options?: WriteResultOptions,\n): void {\n const normalized = normalizeWriteResultOptions(options);\n if (normalized.jsonOnly) {\n printJson(result);\n return;\n }\n printSuccess(successMessage);\n if (\n normalized.referenceKind\n && typeof result === \"object\"\n && result !== null\n && !Array.isArray(result)\n ) {\n printReferenceSummary(normalized.referenceKind, result as ApiRecord, {\n label: normalized.referenceLabel,\n showReuseHint: normalized.showReuseHint,\n });\n }\n printJson(result);\n}\n\n// --- Status Panel ---\n\nexport function printStatusPanel(data: ApiRecord): void {\n console.log(chalk.blue(\"─\".repeat(50)));\n console.log(chalk.blue.bold(\" Corp Status\"));\n console.log(chalk.blue(\"─\".repeat(50)));\n console.log(` ${chalk.bold(\"Workspace:\")} ${data.workspace_id ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Entities:\")} ${data.entity_count ?? 0}`);\n\n const urgency = (data.urgency_counts ?? {}) as Record<string, number>;\n if (Object.keys(urgency).length > 0) {\n console.log(`\\n ${chalk.bold(\"Obligations:\")}`);\n for (const [tier, count] of Object.entries(urgency)) {\n const colorFn = URGENCY_COLORS[tier] ?? ((s: string) => s);\n console.log(` ${colorFn(`${tier}:`)} ${count}`);\n }\n }\n\n if (data.next_deadline) {\n console.log(`\\n ${chalk.bold(\"Next deadline:\")} ${data.next_deadline}`);\n }\n console.log(chalk.blue(\"─\".repeat(50)));\n}\n\n// --- Generic table helper ---\n\nfunction makeTable(title: string, columns: string[]): Table.Table {\n console.log(`\\n${chalk.bold(title)}`);\n return new Table({ head: columns.map((c) => chalk.dim(c)) });\n}\n\nfunction s(val: unknown, maxLen?: number): string {\n const str = val == null ? \"\" : String(val);\n if (maxLen && str.length > maxLen) return str.slice(0, maxLen);\n return str;\n}\n\nfunction money(val: unknown, cents = true): string {\n if (typeof val === \"number\") {\n const dollars = cents ? val / 100 : val;\n return `$${dollars.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;\n }\n return String(val ?? \"\");\n}\n\nfunction date(val: unknown): string {\n const str = s(val);\n if (!str) return \"\";\n const parsed = new Date(str);\n return Number.isNaN(parsed.getTime()) ? str : parsed.toISOString().slice(0, 10);\n}\n\n// --- Domain tables ---\n\nexport function printEntitiesTable(entities: ApiRecord[]): void {\n const table = makeTable(\"Entities\", [\"Ref\", \"Name\", \"Type\", \"Jurisdiction\", \"Status\"]);\n for (const e of entities) {\n table.push([\n formatReferenceCell(\"entity\", e),\n s(e.legal_name ?? e.name),\n s(e.entity_type),\n s(e.jurisdiction),\n s(e.formation_status ?? e.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printObligationsTable(obligations: ApiRecord[]): void {\n const table = makeTable(\"Obligations\", [\"ID\", \"Type\", \"Urgency\", \"Due\", \"Status\"]);\n for (const o of obligations) {\n const urg = s(o.urgency) || \"upcoming\";\n const colorFn = URGENCY_COLORS[urg] ?? ((x: string) => x);\n table.push([s(o.obligation_id, 12), s(o.obligation_type), colorFn(urg), s(o.due_at), s(o.status)]);\n }\n console.log(table.toString());\n}\n\nexport function printContactsTable(contacts: ApiRecord[]): void {\n const table = makeTable(\"Contacts\", [\"Ref\", \"Name\", \"Email\", \"Category\", \"Entity\"]);\n for (const c of contacts) {\n table.push([\n formatReferenceCell(\"contact\", c),\n s(c.name),\n s(c.email),\n s(c.category),\n s(c.entity_name ?? c.entity_id),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printCapTable(data: ApiRecord): void {\n const accessLevel = s(data.access_level) || \"admin\";\n const instruments = (data.instruments ?? []) as ApiRecord[];\n if (instruments.length > 0) {\n const table = makeTable(\"Cap Table — Instruments\", [\"Ref\", \"Symbol\", \"Kind\", \"Authorized\", \"Issued\", \"Diluted\"]);\n for (const instrument of instruments) {\n table.push([\n formatReferenceCell(\"instrument\", instrument),\n s(instrument.symbol),\n s(instrument.kind),\n s(instrument.authorized_units ?? \"unlimited\"),\n s(instrument.issued_units),\n s(instrument.diluted_units),\n ]);\n }\n console.log(table.toString());\n }\n\n const holders = (data.holders ?? []) as ApiRecord[];\n if (holders.length > 0 && accessLevel !== \"summary\") {\n const table = makeTable(\n \"Ownership Breakdown\",\n [\"Holder\", \"Outstanding\", \"As Converted\", \"Fully Diluted\", \"Fully Diluted %\"],\n );\n for (const holder of holders) {\n const dilutedBps = typeof holder.fully_diluted_bps === \"number\"\n ? `${(holder.fully_diluted_bps / 100).toFixed(2)}%`\n : \"\";\n table.push([\n s(holder.name),\n s(holder.outstanding_units),\n s(holder.as_converted_units),\n s(holder.fully_diluted_units),\n dilutedBps,\n ]);\n }\n console.log(table.toString());\n }\n\n const shareClasses = (data.share_classes ?? []) as ApiRecord[];\n if (shareClasses.length > 0) {\n const cols = [\"Ref\", \"Class\", \"Authorized\", \"Outstanding\"];\n if (accessLevel !== \"summary\") cols.push(\"Holders\");\n const table = makeTable(\"Cap Table — Share Classes\", cols);\n for (const sc of shareClasses) {\n const row = [\n formatReferenceCell(\"share_class\", sc),\n s(sc.class_code ?? sc.name),\n s(sc.authorized),\n s(sc.outstanding),\n ];\n if (accessLevel !== \"summary\") {\n const holders = (sc.holders ?? []) as ApiRecord[];\n row.push(holders.map((h) => `${h.name ?? \"?\"}(${h.percentage ?? \"?\"}%)`).join(\", \"));\n }\n table.push(row);\n }\n console.log(table.toString());\n }\n\n const ownership = (data.ownership ?? []) as ApiRecord[];\n if (ownership.length > 0 && accessLevel !== \"summary\") {\n const table = makeTable(\"Ownership Breakdown\", [\"Holder\", \"Shares\", \"Percentage\", \"Class\"]);\n for (const o of ownership) {\n table.push([s(o.holder_name ?? o.name), s(o.shares), `${o.percentage ?? \"\"}%`, s(o.share_class)]);\n }\n console.log(table.toString());\n }\n\n const pools = (data.option_pools ?? []) as ApiRecord[];\n if (pools.length > 0) {\n const table = makeTable(\"Option Pools\", [\"Name\", \"Authorized\", \"Granted\", \"Available\"]);\n for (const p of pools) {\n table.push([s(p.name), s(p.authorized), s(p.granted), s(p.available)]);\n }\n console.log(table.toString());\n }\n\n if (data.fully_diluted_shares != null) {\n const fd = data.fully_diluted_shares;\n console.log(`\\n${chalk.bold(\"Fully Diluted Shares:\")} ${typeof fd === \"number\" ? fd.toLocaleString() : fd}`);\n }\n if (data.total_units != null) {\n console.log(`\\n${chalk.bold(\"Cap Table Basis:\")} ${s(data.basis) || \"outstanding\"}`);\n console.log(`${chalk.bold(\"Total Units:\")} ${typeof data.total_units === \"number\" ? data.total_units.toLocaleString() : data.total_units}`);\n }\n}\n\nexport function printSafesTable(safes: ApiRecord[]): void {\n const table = makeTable(\"SAFE Notes\", [\"Ref\", \"Investor\", \"Amount\", \"Cap\", \"Discount\", \"Date\"]);\n for (const s_ of safes) {\n table.push([\n formatReferenceCell(\"safe_note\", s_),\n s(s_.investor_name ?? s_.investor),\n money(s_.principal_amount_cents ?? s_.investment_amount ?? s_.amount, false),\n money(s_.valuation_cap_cents ?? s_.valuation_cap ?? s_.cap, false),\n s(s_.discount_rate ?? s_.discount),\n s(s_.issued_at ?? s_.date ?? s_.created_at),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printTransfersTable(transfers: ApiRecord[]): void {\n const table = makeTable(\"Share Transfers\", [\"Ref\", \"From\", \"To\", \"Shares\", \"Type\", \"Status\"]);\n for (const t of transfers) {\n table.push([\n formatReferenceCell(\"share_transfer\", t),\n s(t.from_holder ?? t.from),\n s(t.to_holder ?? t.to),\n s(t.shares ?? t.share_count),\n s(t.transfer_type),\n s(t.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printInstrumentsTable(instruments: ApiRecord[]): void {\n const table = makeTable(\"Instruments\", [\"Ref\", \"Symbol\", \"Kind\", \"Authorized\", \"Issued\", \"Status\"]);\n for (const instrument of instruments) {\n table.push([\n formatReferenceCell(\"instrument\", instrument),\n s(instrument.symbol),\n s(instrument.kind),\n s(instrument.authorized_units ?? \"unlimited\"),\n s(instrument.issued_units),\n s(instrument.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printShareClassesTable(shareClasses: ApiRecord[]): void {\n const table = makeTable(\"Share Classes\", [\"Ref\", \"Class\", \"Authorized\", \"Outstanding\"]);\n for (const shareClass of shareClasses) {\n table.push([\n formatReferenceCell(\"share_class\", shareClass),\n s(shareClass.class_code ?? shareClass.name ?? shareClass.share_class),\n s(shareClass.authorized),\n s(shareClass.outstanding),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printRoundsTable(rounds: ApiRecord[]): void {\n const table = makeTable(\"Equity Rounds\", [\"Ref\", \"Name\", \"Status\", \"Issuer\", \"Created\"]);\n for (const round of rounds) {\n table.push([\n formatReferenceCell(\"round\", round),\n s(round.name),\n s(round.status),\n s(round.issuer_legal_entity_id),\n date(round.created_at),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printInvoicesTable(invoices: ApiRecord[]): void {\n const table = makeTable(\"Invoices\", [\"Ref\", \"Customer\", \"Amount\", \"Due\", \"Status\"]);\n for (const invoice of invoices) {\n table.push([\n formatReferenceCell(\"invoice\", invoice),\n s(invoice.customer_name),\n money(invoice.amount_cents),\n date(invoice.due_date),\n s(invoice.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printBankAccountsTable(accounts: ApiRecord[]): void {\n const table = makeTable(\"Bank Accounts\", [\"Ref\", \"Bank\", \"Type\", \"Status\", \"Created\"]);\n for (const account of accounts) {\n table.push([\n formatReferenceCell(\"bank_account\", account),\n s(account.bank_name),\n s(account.account_type),\n s(account.status),\n date(account.created_at),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printPaymentsTable(payments: ApiRecord[]): void {\n const table = makeTable(\"Payments\", [\"Ref\", \"Recipient\", \"Amount\", \"Method\", \"Status\"]);\n for (const payment of payments) {\n table.push([\n formatReferenceCell(\"payment\", payment),\n s(payment.recipient),\n money(payment.amount_cents),\n s(payment.payment_method),\n s(payment.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printPayrollRunsTable(runs: ApiRecord[]): void {\n const table = makeTable(\"Payroll Runs\", [\"Ref\", \"Start\", \"End\", \"Status\", \"Created\"]);\n for (const run of runs) {\n table.push([\n formatReferenceCell(\"payroll_run\", run),\n date(run.pay_period_start),\n date(run.pay_period_end),\n s(run.status),\n date(run.created_at),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printDistributionsTable(distributions: ApiRecord[]): void {\n const table = makeTable(\"Distributions\", [\"Ref\", \"Type\", \"Amount\", \"Status\", \"Description\"]);\n for (const distribution of distributions) {\n table.push([\n formatReferenceCell(\"distribution\", distribution),\n s(distribution.distribution_type),\n money(distribution.total_amount_cents),\n s(distribution.status),\n s(distribution.description),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printReconciliationsTable(reconciliations: ApiRecord[]): void {\n const table = makeTable(\"Reconciliations\", [\"Ref\", \"As Of\", \"Debits\", \"Credits\", \"Status\"]);\n for (const reconciliation of reconciliations) {\n table.push([\n formatReferenceCell(\"reconciliation\", reconciliation),\n date(reconciliation.as_of_date),\n money(reconciliation.total_debits_cents),\n money(reconciliation.total_credits_cents),\n s(reconciliation.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printValuationsTable(valuations: ApiRecord[]): void {\n const table = makeTable(\"Valuations\", [\"Ref\", \"Date\", \"Type\", \"Valuation\", \"PPS\"]);\n for (const v of valuations) {\n table.push([\n formatReferenceCell(\"valuation\", v),\n date(v.effective_date ?? v.valuation_date ?? v.date),\n s(v.valuation_type ?? v.type),\n money(v.enterprise_value_cents ?? v.enterprise_value ?? v.valuation),\n money(v.fmv_per_share_cents ?? v.price_per_share ?? v.pps ?? v.fmv_per_share),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printTaxFilingsTable(filings: ApiRecord[]): void {\n const table = makeTable(\"Tax Filings\", [\"Ref\", \"Type\", \"Year\", \"Status\", \"Document\"]);\n for (const filing of filings) {\n table.push([\n formatReferenceCell(\"tax_filing\", filing),\n s(filing.document_type),\n s(filing.tax_year),\n s(filing.status),\n s(filing.document_id, 12),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printDeadlinesTable(deadlines: ApiRecord[]): void {\n const table = makeTable(\"Deadlines\", [\"Ref\", \"Type\", \"Due\", \"Status\", \"Description\"]);\n for (const deadline of deadlines) {\n table.push([\n formatReferenceCell(\"deadline\", deadline),\n s(deadline.deadline_type),\n date(deadline.due_date),\n s(deadline.status),\n s(deadline.description),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printClassificationsTable(classifications: ApiRecord[]): void {\n const table = makeTable(\"Contractor Classifications\", [\"Ref\", \"Contractor\", \"State\", \"Risk\", \"Result\"]);\n for (const classification of classifications) {\n table.push([\n formatReferenceCell(\"classification\", classification),\n s(classification.contractor_name),\n s(classification.state),\n s(classification.risk_level),\n s(classification.classification),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printGovernanceTable(bodies: ApiRecord[]): void {\n const table = makeTable(\"Governance Bodies\", [\"Ref\", \"Body\", \"Type\", \"Seats\", \"Meetings\"]);\n for (const b of bodies) {\n table.push([\n formatReferenceCell(\"body\", b),\n s(b.name),\n s(b.body_type ?? b.type),\n s(b.seat_count ?? b.seats),\n s(b.meeting_count ?? b.meetings),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printSeatsTable(seats: ApiRecord[]): void {\n const table = makeTable(\"Seats\", [\"Ref\", \"Holder\", \"Role\", \"Status\"]);\n for (const st of seats) {\n table.push([\n formatReferenceCell(\"seat\", st),\n s(st.holder_name ?? st.holder),\n s(st.role),\n s(st.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printMeetingsTable(meetings: ApiRecord[]): void {\n const table = makeTable(\"Meetings\", [\"Ref\", \"Title\", \"Date\", \"Status\", \"Resolutions\"]);\n for (const m of meetings) {\n table.push([\n formatReferenceCell(\"meeting\", m),\n s(m.title ?? m.name),\n s(m.scheduled_date ?? m.meeting_date ?? m.date),\n s(m.status),\n s(m.resolution_count ?? m.resolutions),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printResolutionsTable(resolutions: ApiRecord[]): void {\n const table = makeTable(\"Resolutions\", [\"Ref\", \"Title\", \"Type\", \"Status\", \"For\", \"Against\"]);\n for (const r of resolutions) {\n table.push([\n formatReferenceCell(\"resolution\", r),\n s(r.title),\n s(r.resolution_type ?? r.type),\n s(r.status),\n s(r.votes_for),\n s(r.votes_against),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printAgendaItemsTable(items: ApiRecord[]): void {\n const table = makeTable(\"Agenda Items\", [\"Ref\", \"Title\", \"Status\", \"Type\"]);\n for (const item of items) {\n table.push([\n formatReferenceCell(\"agenda_item\", item),\n s(item.title),\n s(item.status),\n s(item.item_type ?? item.type),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printDocumentsTable(docs: ApiRecord[]): void {\n const table = makeTable(\"Documents\", [\"Ref\", \"Title\", \"Type\", \"Date\", \"Status\", \"Signatures\"]);\n for (const d of docs) {\n const sigs = d.signatures;\n const sigStr = Array.isArray(sigs) ? `${sigs.length} signed` : s(sigs);\n table.push([\n formatReferenceCell(\"document\", d),\n s(d.title ?? d.name),\n s(d.document_type ?? d.type),\n s(d.date ?? d.created_at),\n s(d.status),\n sigStr,\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printWorkItemsTable(items: ApiRecord[]): void {\n const table = makeTable(\"Work Items\", [\"Ref\", \"Title\", \"Category\", \"Status\", \"Deadline\", \"Claimed By\"]);\n for (const w of items) {\n const status = s(w.effective_status ?? w.status);\n const colored =\n status === \"completed\" ? chalk.green(status) :\n status === \"claimed\" ? chalk.yellow(status) :\n status === \"cancelled\" ? chalk.dim(status) :\n status;\n table.push([\n formatReferenceCell(\"work_item\", w),\n s(w.title),\n s(w.category),\n colored,\n w.asap ? chalk.red.bold(\"ASAP\") : s(w.deadline ?? \"\"),\n s(w.claimed_by ?? \"\"),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printAgentsTable(agents: ApiRecord[]): void {\n const table = makeTable(\"Agents\", [\"Ref\", \"Name\", \"Status\", \"Model\"]);\n for (const a of agents) {\n const status = s(a.status);\n const colored =\n status === \"active\" ? chalk.green(status) : status === \"paused\" ? chalk.yellow(status) : status;\n table.push([formatReferenceCell(\"agent\", a), s(a.name), colored, s(a.model)]);\n }\n console.log(table.toString());\n}\n\nexport function printApprovalsTable(approvals: ApiRecord[]): void {\n const table = makeTable(\"Pending Approvals\", [\"ID\", \"Type\", \"Requested By\", \"Description\", \"Created\"]);\n for (const a of approvals) {\n let desc = s(a.description ?? a.summary);\n if (desc.length > 60) desc = desc.slice(0, 57) + \"...\";\n table.push([\n s(a.approval_id ?? a.id, 12),\n s(a.approval_type ?? a.type),\n s(a.requested_by ?? a.requester),\n desc,\n s(a.created_at),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printBillingPanel(status: ApiRecord, plans: ApiRecord[]): void {\n const plan = s(status.plan ?? status.tier) || \"free\";\n const subStatus = s(status.status) || \"active\";\n const periodEnd = s(status.current_period_end);\n const explanation = s(status.status_explanation);\n\n console.log(chalk.green(\"─\".repeat(50)));\n console.log(chalk.green.bold(\" Billing Status\"));\n console.log(chalk.green(\"─\".repeat(50)));\n console.log(` ${chalk.bold(\"Plan:\")} ${plan}`);\n console.log(` ${chalk.bold(\"Status:\")} ${subStatus}`);\n if (periodEnd) console.log(` ${chalk.bold(\"Current Period End:\")} ${periodEnd}`);\n if (explanation) console.log(` ${chalk.bold(\"Explanation:\")} ${explanation}`);\n console.log(chalk.dim(\" Manage: corp billing portal\"));\n console.log(chalk.dim(\" Upgrade: corp billing upgrade --plan <plan>\"));\n console.log(chalk.green(\"─\".repeat(50)));\n\n if (plans.length > 0) {\n const table = makeTable(\"Available Plans\", [\"Plan\", \"Price\", \"Features\"]);\n for (const p of plans) {\n const amount = (p.price_cents ?? p.amount ?? 0) as number;\n const interval = s(p.interval);\n let priceStr = \"Free\";\n if (amount > 0) {\n priceStr = interval ? `$${Math.round(amount / 100)}/${interval}` : `$${Math.round(amount / 100)}`;\n }\n const name = s(p.name ?? p.plan_id ?? p.tier);\n const features = Array.isArray(p.features) ? (p.features as string[]).join(\", \") : s(p.description);\n table.push([name, priceStr, features]);\n }\n console.log(table.toString());\n }\n}\n","import { input, confirm } from \"@inquirer/prompts\";\nimport { loadConfig, saveConfig, validateApiUrl } from \"../config.js\";\nimport { provisionWorkspace } from \"../api-client.js\";\nimport { printSuccess, printError } from \"../output.js\";\n\nconst CLOUD_API_URL = \"https://api.thecorporation.ai\";\n\nasync function requestMagicLink(\n apiUrl: string,\n email: string,\n tosAccepted: boolean\n): Promise<void> {\n const resp = await fetch(`${apiUrl}/v1/auth/magic-link`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ email, tos_accepted: tosAccepted }),\n });\n if (!resp.ok) {\n const data = await resp.json().catch(() => ({}));\n const detail =\n (data as Record<string, unknown>)?.error ??\n (data as Record<string, unknown>)?.message ??\n resp.statusText;\n throw new Error(\n typeof detail === \"string\" ? detail : JSON.stringify(detail)\n );\n }\n}\n\nasync function verifyMagicLinkCode(\n apiUrl: string,\n code: string\n): Promise<{ api_key: string; workspace_id: string }> {\n const resp = await fetch(`${apiUrl}/v1/auth/magic-link/verify`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ code, client: \"cli\" }),\n });\n const data = (await resp.json().catch(() => ({}))) as Record<string, unknown>;\n if (!resp.ok) {\n const detail = data?.error ?? data?.message ?? resp.statusText;\n throw new Error(\n typeof detail === \"string\" ? detail : JSON.stringify(detail)\n );\n }\n if (!data.api_key || !data.workspace_id) {\n throw new Error(\"Unexpected response — missing api_key or workspace_id\");\n }\n return {\n api_key: data.api_key as string,\n workspace_id: data.workspace_id as string,\n };\n}\n\nfunction isCloudApi(url: string): boolean {\n return url.replace(/\\/+$/, \"\").includes(\"thecorporation.ai\");\n}\n\nasync function magicLinkAuth(\n apiUrl: string,\n email: string\n): Promise<{ api_key: string; workspace_id: string }> {\n console.log(\"\\nSending magic link to \" + email + \"...\");\n await requestMagicLink(apiUrl, email, true);\n console.log(\"Check your email for a sign-in link from TheCorporation.\");\n console.log(\n \"Copy the code from the URL (the ?code=... part) and paste it below.\\n\"\n );\n\n const code = await input({ message: \"Paste your magic link code\" });\n const trimmed = code.trim().replace(/^.*[?&]code=/, \"\");\n if (!trimmed) {\n throw new Error(\"No code provided\");\n }\n\n console.log(\"Verifying...\");\n return verifyMagicLinkCode(apiUrl, trimmed);\n}\n\nexport async function setupCommand(): Promise<void> {\n const cfg = loadConfig();\n console.log(\"Welcome to corp — corporate governance from the terminal.\\n\");\n\n // Determine API URL\n const customUrl = process.env.CORP_API_URL;\n if (customUrl) {\n try {\n cfg.api_url = validateApiUrl(customUrl);\n } catch (err) {\n printError(`Invalid CORP_API_URL: ${err}`);\n process.exit(1);\n }\n console.log(`Using API: ${cfg.api_url}\\n`);\n } else {\n cfg.api_url = CLOUD_API_URL;\n }\n\n console.log(\"--- User Info ---\");\n const user = cfg.user ?? { name: \"\", email: \"\" };\n user.name = await input({\n message: \"Your name\",\n default: user.name || undefined,\n });\n user.email = await input({\n message: \"Your email\",\n default: user.email || undefined,\n });\n cfg.user = user;\n\n const needsAuth = !cfg.api_key || !cfg.workspace_id;\n const cloud = isCloudApi(cfg.api_url);\n\n if (needsAuth) {\n if (cloud) {\n // Cloud API — authenticate via magic link\n try {\n const result = await magicLinkAuth(cfg.api_url, user.email);\n cfg.api_key = result.api_key;\n cfg.workspace_id = result.workspace_id;\n printSuccess(`Authenticated. Workspace: ${result.workspace_id}`);\n } catch (err) {\n printError(`Authentication failed: ${err}`);\n console.log(\n \"You can manually set credentials with: corp config set api_key <key>\"\n );\n }\n } else {\n // Self-hosted — provision directly (no auth required)\n console.log(\"\\nProvisioning workspace...\");\n try {\n const result = await provisionWorkspace(\n cfg.api_url,\n `${user.name}'s workspace`\n );\n cfg.api_key = result.api_key as string;\n cfg.workspace_id = result.workspace_id as string;\n console.log(`Workspace provisioned: ${result.workspace_id}`);\n } catch (err) {\n printError(`Auto-provision failed: ${err}`);\n console.log(\n \"You can manually set credentials with: corp config set api_key <key>\"\n );\n }\n }\n } else {\n console.log(\"\\nVerifying existing credentials...\");\n let keyValid = false;\n try {\n const resp = await fetch(\n `${cfg.api_url.replace(/\\/+$/, \"\")}/v1/workspaces/${cfg.workspace_id}/status`,\n { headers: { Authorization: `Bearer ${cfg.api_key}` } }\n );\n keyValid = resp.status !== 401;\n } catch {\n // network error — treat as potentially valid\n }\n\n if (keyValid) {\n console.log(\"Credentials OK.\");\n } else {\n console.log(\"API key is no longer valid.\");\n const reauth = await confirm({\n message: cloud\n ? \"Re-authenticate via magic link?\"\n : \"Provision a new workspace? (This will replace your current credentials)\",\n default: true,\n });\n if (reauth) {\n try {\n if (cloud) {\n const result = await magicLinkAuth(cfg.api_url, user.email);\n cfg.api_key = result.api_key;\n cfg.workspace_id = result.workspace_id;\n printSuccess(`Authenticated. Workspace: ${result.workspace_id}`);\n } else {\n const result = await provisionWorkspace(\n cfg.api_url,\n `${user.name}'s workspace`\n );\n cfg.api_key = result.api_key as string;\n cfg.workspace_id = result.workspace_id as string;\n console.log(`Workspace provisioned: ${result.workspace_id}`);\n }\n } catch (err) {\n printError(`Authentication failed: ${err}`);\n }\n } else {\n console.log(\n \"Keeping existing credentials. You can manually update with: corp config set api_key <key>\"\n );\n }\n }\n }\n\n saveConfig(cfg);\n console.log(\"\\nSettings saved to ~/.corp/config.json\");\n console.log(\"Credentials saved to ~/.corp/auth.json\");\n console.log(\"Run 'corp status' to verify your connection.\");\n}\n","/**\n * Rising cityscape boot animation — ported from packages/cli/corp/tui/widgets/mascot.py\n */\n\n// prettier-ignore\nconst BUILDINGS: string[][] = [\n [\n \" ┌┐ \",\n \" ││ \",\n \" ││ \",\n \" ┌┤├┐ \",\n \" │││││\",\n \" │││││\",\n ],\n [\n \" ╔══╗ \",\n \" ║▪▪║ \",\n \" ║▪▪║ \",\n \" ║▪▪║ \",\n \" ║▪▪║ \",\n \" ║▪▪║ \",\n \" ║▪▪║ \",\n \" ║▪▪║ \",\n ],\n [\n \" /\\\\ \",\n \" / \\\\ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n ],\n [\n \" ┌──┐ \",\n \" │≋≋│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n ],\n [\n \" ╻ \",\n \" ┃ \",\n \" ┌┤┐ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n ],\n [\n \" ┌┐ \",\n \" ├┤ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n ],\n [\n \" ╔═══╗\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n ],\n [\n \" ┬─┬ \",\n \" │~│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n ],\n];\n\nconst MAX_HEIGHT = Math.max(...BUILDINGS.map((b) => b.length));\nconst TOTAL_FRAMES = MAX_HEIGHT + 4; // 15 frames, ~1.5s at 100ms\n\nconst GOLD = \"\\x1b[38;2;212;160;23m\";\nconst RESET = \"\\x1b[0m\";\n\nexport function renderFrame(frame: number): string {\n const cols: string[][] = [];\n for (let i = 0; i < BUILDINGS.length; i++) {\n const building = BUILDINGS[i];\n const h = building.length;\n const visible = Math.max(0, Math.min(h, frame - i));\n const width = building[0]?.length ?? 6;\n const blank = \" \".repeat(width);\n const col: string[] = Array(MAX_HEIGHT - visible).fill(blank);\n col.push(...building.slice(h - visible));\n cols.push(col);\n }\n\n const lines: string[] = [];\n for (let row = 0; row < MAX_HEIGHT; row++) {\n lines.push(cols.map((col) => col[row]).join(\"\"));\n }\n return lines.join(\"\\n\");\n}\n\n/**\n * Run an async function while displaying the rising cityscape animation.\n * No-ops when stdout is not a TTY (piped, CI, etc.).\n */\nexport async function withAnimation<T>(fn: () => Promise<T>): Promise<T> {\n if (!process.stdout.isTTY) {\n return fn();\n }\n\n let frame = 0;\n let animDone = false;\n const spinChars = [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"];\n let spinIdx = 0;\n let lastLineCount = 0;\n\n const clearPrev = () => {\n if (lastLineCount > 0) {\n process.stdout.write(`\\x1b[${lastLineCount}A\\x1b[0J`);\n }\n };\n\n const drawFrame = () => {\n clearPrev();\n if (!animDone) {\n const art = renderFrame(frame);\n const output = `${GOLD}${art}${RESET}\\n`;\n process.stdout.write(output);\n lastLineCount = MAX_HEIGHT + 1;\n frame++;\n if (frame >= TOTAL_FRAMES) {\n animDone = true;\n }\n } else {\n // Dot spinner fallback after animation finishes\n const line = `${GOLD}${spinChars[spinIdx % spinChars.length]} Loading...${RESET}\\n`;\n process.stdout.write(line);\n lastLineCount = 1;\n spinIdx++;\n }\n };\n\n drawFrame();\n const timer = setInterval(drawFrame, 100);\n\n try {\n const result = await fn();\n return result;\n } finally {\n clearInterval(timer);\n clearPrev();\n }\n}\n","import { withAnimation } from \"./animation.js\";\n\n/**\n * Run an async function with a loading animation.\n * Silently skipped when `json` is truthy (pure JSON output) or non-TTY.\n */\nexport async function withSpinner<T>(\n _label: string,\n fn: () => Promise<T>,\n json?: boolean,\n): Promise<T> {\n if (json) {\n return fn();\n }\n return withAnimation(fn);\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson, printStatusPanel } from \"../output.js\";\nimport { withSpinner } from \"../spinner.js\";\n\nexport async function statusCommand(opts: { json?: boolean } = {}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n try {\n const data = await withSpinner(\"Loading\", () => client.getStatus());\n if (opts.json) {\n printJson(data);\n } else {\n printStatusPanel(data);\n }\n } catch (err) {\n printError(`Failed to fetch status: ${err}`);\n process.exit(1);\n }\n}\n","import chalk from \"chalk\";\nimport { getActiveEntityId, loadConfig, requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson, printReferenceSummary } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\n\nexport async function contextCommand(opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const rawCfg = loadConfig();\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n const [status, entities] = await Promise.all([\n client.getStatus(),\n client.listEntities(),\n ]);\n await resolver.stabilizeRecords(\"entity\", entities);\n\n const activeEntityId = getActiveEntityId(rawCfg);\n const activeEntity = activeEntityId\n ? entities.find((entity) => entity.entity_id === activeEntityId) ?? null\n : null;\n\n const [contactsResult, documentsResult, workItemsResult] = activeEntity\n ? await Promise.allSettled([\n client.listContacts(String(activeEntity.entity_id)),\n client.getEntityDocuments(String(activeEntity.entity_id)),\n client.listWorkItems(String(activeEntity.entity_id)),\n ])\n : [null, null, null];\n\n const payload = {\n user: {\n name: rawCfg.user?.name ?? \"\",\n email: rawCfg.user?.email ?? \"\",\n },\n workspace: {\n workspace_id: rawCfg.workspace_id,\n api_url: rawCfg.api_url,\n status,\n },\n active_entity: activeEntity\n ? {\n entity: activeEntity,\n summary: {\n contact_count:\n contactsResult && contactsResult.status === \"fulfilled\"\n ? contactsResult.value.length\n : null,\n document_count:\n documentsResult && documentsResult.status === \"fulfilled\"\n ? documentsResult.value.length\n : null,\n work_item_count:\n workItemsResult && workItemsResult.status === \"fulfilled\"\n ? workItemsResult.value.length\n : null,\n },\n }\n : null,\n entity_count: entities.length,\n };\n\n if (opts.json) {\n printJson(payload);\n return;\n }\n\n console.log(chalk.blue(\"─\".repeat(50)));\n console.log(chalk.blue.bold(\" Corp Context\"));\n console.log(chalk.blue(\"─\".repeat(50)));\n console.log(` ${chalk.bold(\"User:\")} ${payload.user.name || \"N/A\"} <${payload.user.email || \"N/A\"}>`);\n console.log(` ${chalk.bold(\"Workspace:\")} ${rawCfg.workspace_id}`);\n console.log(` ${chalk.bold(\"API URL:\")} ${rawCfg.api_url}`);\n console.log(` ${chalk.bold(\"Entities:\")} ${entities.length}`);\n if (payload.active_entity) {\n console.log(` ${chalk.bold(\"Active Entity:\")} ${payload.active_entity.entity.legal_name ?? payload.active_entity.entity.entity_id}`);\n printReferenceSummary(\"entity\", payload.active_entity.entity, { label: \"Active Entity Ref:\" });\n console.log(` ${chalk.bold(\"Contacts:\")} ${payload.active_entity.summary.contact_count ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Documents:\")} ${payload.active_entity.summary.document_count ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Work Items:\")} ${payload.active_entity.summary.work_item_count ?? \"N/A\"}`);\n } else {\n console.log(` ${chalk.bold(\"Active Entity:\")} none`);\n }\n if (status.next_deadline) {\n console.log(` ${chalk.bold(\"Next Deadline:\")} ${status.next_deadline}`);\n }\n console.log(chalk.blue(\"─\".repeat(50)));\n } catch (err) {\n printError(`Failed to fetch context: ${err}`);\n process.exit(1);\n }\n}\n","import type { Command } from \"commander\";\nimport { printJson } from \"../output.js\";\n\ntype SchemaArgument = {\n name: string;\n required: boolean;\n variadic: boolean;\n defaultValue?: unknown;\n choices?: string[];\n};\n\ntype SchemaOption = {\n flags: string;\n name: string;\n description: string;\n required: boolean;\n mandatory: boolean;\n variadic: boolean;\n defaultValue?: unknown;\n choices?: string[];\n};\n\ntype SchemaCommand = {\n path: string;\n name: string;\n description: string;\n aliases: string[];\n arguments: SchemaArgument[];\n options: SchemaOption[];\n subcommands: SchemaCommand[];\n};\n\nfunction readChoices(value: unknown): string[] | undefined {\n if (Array.isArray(value) && value.every((entry) => typeof entry === \"string\")) {\n return value;\n }\n return undefined;\n}\n\nfunction commandToSchema(command: Command, parentPath = \"\"): SchemaCommand {\n const cmd = command as Command & {\n registeredArguments?: Array<{\n name: () => string;\n required?: boolean;\n variadic?: boolean;\n defaultValue?: unknown;\n argChoices?: unknown;\n }>;\n };\n\n const path = parentPath ? `${parentPath} ${command.name()}` : command.name();\n return {\n path,\n name: command.name(),\n description: command.description(),\n aliases: command.aliases(),\n arguments: (cmd.registeredArguments ?? []).map((arg) => ({\n name: arg.name(),\n required: Boolean(arg.required),\n variadic: Boolean(arg.variadic),\n defaultValue: arg.defaultValue,\n choices: readChoices(arg.argChoices),\n })),\n options: command.options.map((option) => ({\n flags: option.flags,\n name: option.attributeName(),\n description: option.description ?? \"\",\n required: option.required,\n mandatory: option.mandatory,\n variadic: option.variadic,\n defaultValue: option.defaultValue,\n choices: readChoices(option.argChoices),\n })),\n subcommands: command.commands.map((child) => commandToSchema(child, path)),\n };\n}\n\nexport function schemaCommand(program: Command, opts: { compact?: boolean }): void {\n const manifest = {\n name: program.name(),\n version: program.version(),\n description: program.description(),\n generated_at: new Date().toISOString(),\n commands: program.commands.map((command) => commandToSchema(command, program.name())),\n };\n if (opts.compact) {\n console.log(JSON.stringify(manifest));\n return;\n }\n printJson(manifest);\n}\n","import { configForDisplay, getValue, loadConfig, requireConfig, setValue, updateConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\n\nfunction looksLikeCanonicalId(value: string): boolean {\n const trimmed = value.trim();\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(trimmed)\n || /^ent_[a-z0-9-]+$/i.test(trimmed);\n}\n\nexport async function configSetCommand(\n key: string,\n value: string,\n options: { force?: boolean } = {},\n): Promise<void> {\n let resolvedValue = value;\n try {\n if (key === \"active_entity_id\" && !looksLikeCanonicalId(value)) {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n resolvedValue = await resolver.resolveEntity(value);\n }\n updateConfig((cfg) => {\n setValue(cfg as unknown as Record<string, unknown>, key, resolvedValue, {\n forceSensitive: options.force,\n });\n });\n } catch (err) {\n printError(`Failed to update config: ${err}`);\n process.exit(1);\n }\n\n if (key === \"api_key\" || key === \"llm.api_key\") {\n console.log(`${key} updated.`);\n return;\n }\n if (key === \"active_entity_id\") {\n console.log(`${key} updated to ${resolvedValue}.`);\n return;\n }\n console.log(`${key} updated.`);\n}\n\nexport function configGetCommand(key: string): void {\n const cfg = loadConfig();\n const val = getValue(cfg as unknown as Record<string, unknown>, key);\n if (val === undefined) {\n printError(`Key not found: ${key}`);\n process.exit(1);\n }\n if (typeof val === \"object\" && val !== null) {\n printJson(val);\n } else {\n console.log(String(val));\n }\n}\n\nexport function configListCommand(): void {\n const cfg = loadConfig();\n printJson(configForDisplay(cfg));\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson } from \"../output.js\";\nimport { ReferenceResolver, shortId, type ResourceKind } from \"../references.js\";\n\nconst KINDS = new Set<ResourceKind>([\n \"entity\",\n \"contact\",\n \"share_transfer\",\n \"invoice\",\n \"bank_account\",\n \"payment\",\n \"payroll_run\",\n \"distribution\",\n \"reconciliation\",\n \"tax_filing\",\n \"deadline\",\n \"classification\",\n \"body\",\n \"meeting\",\n \"seat\",\n \"agenda_item\",\n \"resolution\",\n \"document\",\n \"work_item\",\n \"agent\",\n \"valuation\",\n \"safe_note\",\n \"instrument\",\n \"share_class\",\n \"round\",\n]);\n\nconst ENTITY_SCOPED_KINDS = new Set<ResourceKind>([\n \"contact\",\n \"share_transfer\",\n \"invoice\",\n \"bank_account\",\n \"payment\",\n \"payroll_run\",\n \"distribution\",\n \"reconciliation\",\n \"tax_filing\",\n \"deadline\",\n \"classification\",\n \"body\",\n \"meeting\",\n \"seat\",\n \"agenda_item\",\n \"resolution\",\n \"document\",\n \"work_item\",\n \"valuation\",\n \"safe_note\",\n \"instrument\",\n \"share_class\",\n \"round\",\n]);\n\nexport async function resolveCommand(\n kind: string,\n ref: string,\n opts: { entityId?: string; bodyId?: string; meetingId?: string },\n): Promise<void> {\n const normalizedKind = kind.trim().toLowerCase() as ResourceKind;\n if (!KINDS.has(normalizedKind)) {\n printError(`Unsupported resolve kind: ${kind}`);\n process.exit(1);\n }\n\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n const entityId = ENTITY_SCOPED_KINDS.has(normalizedKind) || opts.entityId || opts.bodyId || opts.meetingId\n ? await resolver.resolveEntity(opts.entityId)\n : undefined;\n const bodyId = entityId && opts.bodyId ? await resolver.resolveBody(entityId, opts.bodyId) : undefined;\n const meetingId = entityId && opts.meetingId\n ? await resolver.resolveMeeting(entityId, opts.meetingId, bodyId)\n : undefined;\n\n let resolvedId: string;\n switch (normalizedKind) {\n case \"entity\":\n resolvedId = await resolver.resolveEntity(ref);\n break;\n case \"contact\":\n resolvedId = await resolver.resolveContact(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"share_transfer\":\n resolvedId = await resolver.resolveShareTransfer(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"invoice\":\n resolvedId = await resolver.resolveInvoice(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"bank_account\":\n resolvedId = await resolver.resolveBankAccount(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"payment\":\n resolvedId = await resolver.resolvePayment(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"payroll_run\":\n resolvedId = await resolver.resolvePayrollRun(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"distribution\":\n resolvedId = await resolver.resolveDistribution(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"reconciliation\":\n resolvedId = await resolver.resolveReconciliation(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"tax_filing\":\n resolvedId = await resolver.resolveTaxFiling(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"deadline\":\n resolvedId = await resolver.resolveDeadline(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"classification\":\n resolvedId = await resolver.resolveClassification(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"body\":\n resolvedId = await resolver.resolveBody(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"meeting\":\n resolvedId = await resolver.resolveMeeting(requiredEntity(entityId, normalizedKind), ref, bodyId);\n break;\n case \"seat\":\n resolvedId = await resolver.resolveSeat(requiredEntity(entityId, normalizedKind), ref, bodyId);\n break;\n case \"agenda_item\":\n resolvedId = await resolver.resolveAgendaItem(\n requiredEntity(entityId, normalizedKind),\n requiredMeeting(meetingId, normalizedKind),\n ref,\n );\n break;\n case \"resolution\":\n resolvedId = await resolver.resolveResolution(requiredEntity(entityId, normalizedKind), ref, meetingId);\n break;\n case \"document\":\n resolvedId = await resolver.resolveDocument(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"work_item\":\n resolvedId = await resolver.resolveWorkItem(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"agent\":\n resolvedId = await resolver.resolveAgent(ref);\n break;\n case \"valuation\":\n resolvedId = await resolver.resolveValuation(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"safe_note\":\n resolvedId = await resolver.resolveSafeNote(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"instrument\":\n resolvedId = await resolver.resolveInstrument(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"share_class\":\n resolvedId = await resolver.resolveShareClass(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"round\":\n resolvedId = await resolver.resolveRound(requiredEntity(entityId, normalizedKind), ref);\n break;\n }\n\n printJson({\n kind: normalizedKind,\n input: ref,\n resolved_id: resolvedId,\n short_id: shortId(resolvedId),\n ...(entityId ? { entity_id: entityId } : {}),\n ...(bodyId ? { body_id: bodyId } : {}),\n ...(meetingId ? { meeting_id: meetingId } : {}),\n });\n } catch (err) {\n printError(`Failed to resolve reference: ${err}`);\n process.exit(1);\n }\n}\n\nfunction requiredEntity(entityId: string | undefined, kind: ResourceKind): string {\n if (!entityId) {\n throw new Error(`--entity-id is required to resolve ${kind}.`);\n }\n return entityId;\n}\n\nfunction requiredMeeting(meetingId: string | undefined, kind: ResourceKind): string {\n if (!meetingId) {\n throw new Error(`--meeting-id is required to resolve ${kind}.`);\n }\n return meetingId;\n}\n","import chalk from \"chalk\";\nimport Table from \"cli-table3\";\nimport { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson } from \"../output.js\";\nimport { ReferenceResolver, type ResourceKind } from \"../references.js\";\n\nconst KINDS = new Set<ResourceKind>([\n \"entity\",\n \"contact\",\n \"share_transfer\",\n \"invoice\",\n \"bank_account\",\n \"payment\",\n \"payroll_run\",\n \"distribution\",\n \"reconciliation\",\n \"tax_filing\",\n \"deadline\",\n \"classification\",\n \"body\",\n \"meeting\",\n \"seat\",\n \"agenda_item\",\n \"resolution\",\n \"document\",\n \"work_item\",\n \"agent\",\n \"valuation\",\n \"safe_note\",\n \"instrument\",\n \"share_class\",\n \"round\",\n]);\n\nconst ENTITY_SCOPED_KINDS = new Set<ResourceKind>([\n \"contact\",\n \"share_transfer\",\n \"invoice\",\n \"bank_account\",\n \"payment\",\n \"payroll_run\",\n \"distribution\",\n \"reconciliation\",\n \"tax_filing\",\n \"deadline\",\n \"classification\",\n \"body\",\n \"meeting\",\n \"seat\",\n \"agenda_item\",\n \"resolution\",\n \"document\",\n \"work_item\",\n \"valuation\",\n \"safe_note\",\n \"instrument\",\n \"share_class\",\n \"round\",\n]);\n\nexport async function findCommand(\n kind: string,\n query: string,\n opts: { entityId?: string; bodyId?: string; meetingId?: string; json?: boolean },\n): Promise<void> {\n const normalizedKind = kind.trim().toLowerCase() as ResourceKind;\n if (!KINDS.has(normalizedKind)) {\n printError(`Unsupported find kind: ${kind}`);\n process.exit(1);\n }\n\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n const entityId = ENTITY_SCOPED_KINDS.has(normalizedKind) || opts.entityId || opts.bodyId || opts.meetingId\n ? await resolver.resolveEntity(opts.entityId)\n : undefined;\n const bodyId = entityId && opts.bodyId ? await resolver.resolveBody(entityId, opts.bodyId) : undefined;\n const meetingId = entityId && opts.meetingId\n ? await resolver.resolveMeeting(entityId, opts.meetingId, bodyId)\n : undefined;\n\n const matches = await resolver.find(normalizedKind, query, { entityId, bodyId, meetingId });\n if (opts.json) {\n printJson({\n kind: normalizedKind,\n query,\n ...(entityId ? { entity_id: entityId } : {}),\n ...(bodyId ? { body_id: bodyId } : {}),\n ...(meetingId ? { meeting_id: meetingId } : {}),\n matches: matches.map((match) => ({\n kind: match.kind,\n id: match.id,\n short_id: match.short_id,\n alias: match.alias,\n label: match.label,\n })),\n });\n return;\n }\n\n if (matches.length === 0) {\n console.log(`No ${normalizedKind.replaceAll(\"_\", \" \")} matches for \"${query}\".`);\n return;\n }\n\n const table = new Table({\n head: [\n chalk.dim(\"Short\"),\n chalk.dim(\"Alias\"),\n chalk.dim(\"Label\"),\n chalk.dim(\"ID\"),\n ],\n });\n for (const match of matches) {\n table.push([\n match.short_id,\n match.alias ?? \"\",\n match.label,\n match.id,\n ]);\n }\n console.log(table.toString());\n } catch (err) {\n printError(`Failed to find references: ${err}`);\n process.exit(1);\n }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printObligationsTable, printError, printJson } from \"../output.js\";\n\nexport async function obligationsCommand(opts: { tier?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n try {\n const data = await client.getObligations(opts.tier);\n const obligations = (data.obligations ?? []) as Record<string, unknown>[];\n if (opts.json) printJson(obligations);\n else if (obligations.length === 0) console.log(\"No obligations found.\");\n else printObligationsTable(obligations);\n } catch (err) { printError(`Failed to fetch obligations: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printSuccess, printJson, printWarning } from \"../output.js\";\n\nexport async function digestCommand(opts: { trigger?: boolean; key?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n try {\n if (opts.trigger) {\n const result = await client.triggerDigest();\n const message = (() => {\n const value = (result as Record<string, unknown>).message;\n return typeof value === \"string\" && value.trim() ? value : null;\n })();\n if (!opts.json) {\n printSuccess(result.digest_count > 0 ? \"Digest triggered.\" : \"Digest trigger accepted.\");\n }\n if (message && !opts.json) {\n printWarning(message);\n }\n printJson(result);\n } else if (opts.key) {\n const result = await client.getDigest(opts.key);\n printJson(result);\n } else {\n const digests = await client.listDigests();\n if (digests.length === 0) console.log(\"No digest history found.\");\n else printJson(digests);\n }\n } catch (err) { printError(`Failed: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printSuccess } from \"../output.js\";\n\nexport async function linkCommand(opts: { externalId: string; provider: string }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n try {\n const data = await client.createLink(opts.externalId, opts.provider);\n printSuccess(`Workspace linked to ${opts.provider} (external ID: ${opts.externalId})`);\n if (data.workspace_id) console.log(` Workspace: ${data.workspace_id}`);\n } catch (err) {\n printError(`${err}`);\n process.exit(1);\n }\n}\n","import { loadConfig, saveConfig } from \"../config.js\";\nimport { printError } from \"../output.js\";\n\nexport async function claimCommand(code: string): Promise<void> {\n const cfg = loadConfig();\n const apiUrl = (cfg.api_url || \"https://api.thecorporation.ai\").replace(/\\/+$/, \"\");\n try {\n const resp = await fetch(`${apiUrl}/v1/workspaces/claim`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ code }),\n });\n if (!resp.ok) {\n let detail = \"\";\n try { const body = await resp.json() as Record<string, string>; detail = body.detail ?? \"\"; } catch { /* ignore */ }\n printError(detail || `${resp.status} ${resp.statusText}`);\n process.exit(1);\n }\n const data = await resp.json() as Record<string, string>;\n cfg.api_key = data.api_key;\n cfg.workspace_id = data.workspace_id;\n saveConfig(cfg);\n console.log(`Workspace joined: ${data.workspace_id}`);\n console.log(\"Credentials saved to ~/.corp/auth.json\");\n console.log(\"Settings remain in ~/.corp/config.json\");\n } catch (err) {\n printError(`${err}`);\n process.exit(1);\n }\n}\n","import type { ToolCall, LLMResponse } from \"./types.js\";\n\nconst PROVIDER_BASE_URLS: Record<string, string> = {\n openrouter: \"https://openrouter.ai/api/v1\",\n};\n\nexport async function chat(\n messages: Record<string, unknown>[],\n tools?: Record<string, unknown>[],\n provider = \"anthropic\",\n apiKey = \"\",\n model = \"\",\n baseUrl?: string,\n): Promise<LLMResponse> {\n if (provider === \"anthropic\") {\n return chatAnthropic(messages, tools, apiKey, model);\n } else if (provider === \"openai\" || provider === \"openrouter\") {\n const effectiveUrl = baseUrl ?? PROVIDER_BASE_URLS[provider];\n return chatOpenAI(messages, tools, apiKey, model, effectiveUrl);\n }\n throw new Error(`Unknown LLM provider: ${provider}`);\n}\n\nasync function chatAnthropic(\n messages: Record<string, unknown>[],\n tools?: Record<string, unknown>[],\n apiKey = \"\",\n model = \"\",\n): Promise<LLMResponse> {\n const { default: Anthropic } = await import(\"@anthropic-ai/sdk\");\n const client = new Anthropic({ apiKey });\n\n let systemText = \"\";\n const convMessages: Record<string, unknown>[] = [];\n\n for (const msg of messages) {\n if (msg.role === \"system\") {\n systemText = msg.content as string;\n } else if (msg.role === \"tool\") {\n convMessages.push({\n role: \"user\",\n content: [{\n type: \"tool_result\",\n tool_use_id: msg.tool_call_id,\n content: msg.content,\n }],\n });\n } else if (msg.role === \"assistant\" && msg.tool_calls) {\n const contentBlocks: Record<string, unknown>[] = [];\n if (msg.content) contentBlocks.push({ type: \"text\", text: msg.content });\n for (const tc of msg.tool_calls as Record<string, unknown>[]) {\n const fn = tc.function as Record<string, unknown>;\n let args = fn.arguments;\n if (typeof args === \"string\") args = JSON.parse(args);\n contentBlocks.push({ type: \"tool_use\", id: tc.id, name: fn.name, input: args });\n }\n convMessages.push({ role: \"assistant\", content: contentBlocks });\n } else {\n convMessages.push({ role: msg.role, content: msg.content ?? \"\" });\n }\n }\n\n let anthropicTools: Record<string, unknown>[] | undefined;\n if (tools?.length) {\n anthropicTools = tools.map((t) => {\n const fn = (t as Record<string, unknown>).function as Record<string, unknown>;\n return {\n name: fn.name,\n description: fn.description ?? \"\",\n input_schema: fn.parameters ?? { type: \"object\", properties: {} },\n };\n });\n }\n\n const kwargs: Record<string, unknown> = {\n model: model || \"claude-sonnet-4-20250514\",\n max_tokens: 4096,\n messages: convMessages,\n };\n if (systemText) kwargs.system = systemText;\n if (anthropicTools) kwargs.tools = anthropicTools;\n\n const response = await client.messages.create(kwargs as Parameters<typeof client.messages.create>[0]);\n\n let content: string | null = null;\n const toolCallsOut: ToolCall[] = [];\n for (const block of response.content) {\n if (block.type === \"text\") {\n content = block.text;\n } else if (block.type === \"tool_use\") {\n toolCallsOut.push({\n id: block.id,\n name: block.name,\n arguments: typeof block.input === \"object\" ? (block.input as Record<string, unknown>) : {},\n });\n }\n }\n\n return {\n content,\n tool_calls: toolCallsOut,\n usage: {\n prompt_tokens: response.usage.input_tokens,\n completion_tokens: response.usage.output_tokens,\n total_tokens: response.usage.input_tokens + response.usage.output_tokens,\n },\n finish_reason: response.stop_reason ?? null,\n };\n}\n\nasync function chatOpenAI(\n messages: Record<string, unknown>[],\n tools?: Record<string, unknown>[],\n apiKey = \"\",\n model = \"\",\n baseUrl?: string,\n): Promise<LLMResponse> {\n const { default: OpenAI } = await import(\"openai\");\n const clientOpts: Record<string, unknown> = { apiKey };\n if (baseUrl) clientOpts.baseURL = baseUrl;\n const client = new OpenAI(clientOpts as ConstructorParameters<typeof OpenAI>[0]);\n\n const kwargs: Record<string, unknown> = {\n model: model || \"gpt-4o\",\n messages,\n max_tokens: 4096,\n };\n if (tools?.length) {\n kwargs.tools = tools;\n kwargs.tool_choice = \"auto\";\n }\n\n const response = await client.chat.completions.create(kwargs as Parameters<typeof client.chat.completions.create>[0]);\n const choice = response.choices[0];\n const message = choice.message;\n\n const toolCallsOut: ToolCall[] = [];\n if (message.tool_calls) {\n for (const tc of message.tool_calls) {\n let args: Record<string, unknown>;\n try {\n args = JSON.parse(tc.function.arguments);\n } catch {\n args = { _raw: tc.function.arguments };\n }\n toolCallsOut.push({ id: tc.id, name: tc.function.name, arguments: args });\n }\n }\n\n return {\n content: message.content,\n tool_calls: toolCallsOut,\n usage: {\n prompt_tokens: response.usage?.prompt_tokens ?? 0,\n completion_tokens: response.usage?.completion_tokens ?? 0,\n total_tokens: response.usage?.total_tokens ?? 0,\n },\n finish_reason: choice.finish_reason ?? null,\n };\n}\n","import {\n TOOL_DEFINITIONS as _TOOL_DEFINITIONS,\n isWriteTool as _isWriteTool,\n executeTool as _executeTool,\n} from \"@thecorporation/corp-tools\";\nimport type { CorpAPIClient } from \"@thecorporation/corp-tools\";\nimport { setActiveEntityId, updateConfig } from \"./config.js\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\n\nexport const TOOL_DEFINITIONS = _TOOL_DEFINITIONS;\nexport const isWriteTool: (name: string, args?: Record<string, unknown>) => boolean = _isWriteTool;\n\nexport async function executeTool(\n name: string,\n args: Record<string, unknown>,\n client: CorpAPIClient,\n): Promise<string> {\n return _executeTool(name, args, client, {\n dataDir: join(homedir(), \".corp\"),\n onEntityFormed: (entityId) => {\n try {\n updateConfig((cfg) => {\n setActiveEntityId(cfg, entityId);\n });\n } catch { /* ignore */ }\n },\n });\n}\n","import { createInterface } from \"node:readline\";\nimport chalk from \"chalk\";\nimport { requireConfig, configForDisplay, getValue, setValue, saveConfig } from \"./config.js\";\nimport { CorpAPIClient } from \"./api-client.js\";\nimport { chat as llmChat } from \"./llm.js\";\nimport { TOOL_DEFINITIONS, executeTool, isWriteTool } from \"./tools.js\";\nimport { printError, printStatusPanel, printObligationsTable, printJson } from \"./output.js\";\nimport type { CorpConfig, LLMResponse, ToolCall } from \"./types.js\";\n\nconst SYSTEM_PROMPT = `You are **corp**, an AI assistant for corporate governance.\nYou help users manage their companies — entities, cap tables, compliance, governance, finances, and more.\nYou have tools to read and write corporate data. Use them to fulfill user requests.\nFor write operations, confirm with the user before proceeding.\nMonetary values are in cents (e.g. 100000 = $1,000.00).\nDocuments must be signed by the human — you cannot sign on their behalf.\nAfter completing actions, suggest logical next steps.`;\n\nexport async function chatCommand(): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\", \"llm.api_key\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n\n const messages: Record<string, unknown>[] = [{ role: \"system\", content: SYSTEM_PROMPT }];\n let totalTokens = 0;\n\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n const prompt = () => new Promise<string>((resolve) => rl.question(chalk.green.bold(\"> \"), resolve));\n\n console.log(chalk.blue.bold(\"corp chat\") + \" — type /help for commands, /quit to exit\\n\");\n\n const slashHandlers: Record<string, (args: string) => void> = {\n \"/status\": async () => {\n try { printStatusPanel(await client.getStatus()); } catch (e) { printError(`Status error: ${e}`); }\n },\n \"/obligations\": async () => {\n try {\n const data = await client.getObligations();\n const obls = (data.obligations ?? []) as Record<string, unknown>[];\n if (obls.length) printObligationsTable(obls);\n else console.log(chalk.dim(\"No obligations found.\"));\n } catch (e) { printError(`Obligations error: ${e}`); }\n },\n \"/digest\": async () => {\n try {\n const digests = await client.listDigests();\n if (digests.length) printJson(digests);\n else console.log(chalk.dim(\"No digest history.\"));\n } catch (e) { printError(`Digest error: ${e}`); }\n },\n \"/config\": () => printJson(configForDisplay(cfg)),\n \"/model\": (args: string) => {\n const model = args.trim();\n if (!model) { console.log(`Current model: ${getValue(cfg as unknown as Record<string, unknown>, \"llm.model\")}`); return; }\n setValue(cfg as unknown as Record<string, unknown>, \"llm.model\", model);\n saveConfig(cfg);\n console.log(`Model switched to: ${model}`);\n },\n \"/cost\": () => console.log(`Session tokens used: ${totalTokens.toLocaleString()}`),\n \"/clear\": () => {\n messages.length = 0;\n messages.push({ role: \"system\", content: SYSTEM_PROMPT });\n totalTokens = 0;\n console.log(chalk.dim(\"Conversation cleared.\"));\n },\n \"/help\": () => {\n console.log(`\n${chalk.bold(\"Chat Slash Commands\")}\n /status Show workspace status\n /obligations List obligations\n /digest Show digest history\n /config Show current config (masked keys)\n /model <name> Switch LLM model\n /cost Show token usage\n /clear Clear conversation\n /help Show this help\n /quit Exit chat`);\n },\n };\n\n try {\n while (true) {\n let userInput: string;\n try {\n userInput = (await prompt()).trim();\n } catch {\n console.log(\"\\n\" + chalk.dim(\"Goodbye.\"));\n break;\n }\n\n if (!userInput) continue;\n\n if (userInput.startsWith(\"/\")) {\n const [cmd, ...rest] = userInput.split(/\\s+/);\n const args = rest.join(\" \");\n if (cmd === \"/quit\" || cmd === \"/exit\") {\n console.log(chalk.dim(\"Goodbye.\"));\n break;\n }\n const handler = slashHandlers[cmd.toLowerCase()];\n if (handler) { await handler(args); continue; }\n printError(`Unknown command: ${cmd}. Type /help for available commands.`);\n continue;\n }\n\n messages.push({ role: \"user\", content: userInput });\n\n const llmCfg = cfg.llm;\n while (true) {\n let response: LLMResponse;\n try {\n response = await llmChat(\n messages, TOOL_DEFINITIONS, llmCfg.provider, llmCfg.api_key, llmCfg.model, llmCfg.base_url,\n );\n } catch (err) {\n printError(`LLM error: ${err}`);\n break;\n }\n\n totalTokens += response.usage.total_tokens;\n\n const assistantMsg: Record<string, unknown> = { role: \"assistant\", content: response.content };\n if (response.tool_calls.length > 0) {\n assistantMsg.tool_calls = response.tool_calls.map((tc) => ({\n id: tc.id, type: \"function\",\n function: { name: tc.name, arguments: JSON.stringify(tc.arguments) },\n }));\n if (!response.content) assistantMsg.content = null;\n }\n messages.push(assistantMsg);\n\n if (response.tool_calls.length === 0) {\n if (response.content) console.log(\"\\n\" + response.content + \"\\n\");\n break;\n }\n\n for (const tc of response.tool_calls) {\n console.log(chalk.dim(` ${isWriteTool(tc.name, tc.arguments) ? \"\\u2699\" : \"\\u2139\"} ${tc.name}(${JSON.stringify(tc.arguments).slice(0, 80)})`));\n const result = await executeTool(tc.name, tc.arguments, client);\n const short = result.length > 200 ? result.slice(0, 197) + \"...\" : result;\n console.log(chalk.dim(` => ${short}`));\n messages.push({ role: \"tool\", tool_call_id: tc.id, content: result });\n }\n }\n }\n } finally {\n rl.close();\n }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printEntitiesTable, printError, printReferenceSummary, printSuccess, printJson } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport { withSpinner } from \"../spinner.js\";\nimport chalk from \"chalk\";\n\nexport async function entitiesCommand(opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n const jsonOutput = Boolean(opts.json);\n try {\n const entities = await withSpinner(\"Loading\", () => client.listEntities(), jsonOutput);\n await resolver.stabilizeRecords(\"entity\", entities);\n if (jsonOutput) {\n printJson(entities);\n } else if (entities.length === 0) {\n console.log(\"No entities found.\");\n } else {\n printEntitiesTable(entities);\n }\n } catch (err) {\n printError(`Failed to fetch entities: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function entitiesShowCommand(entityId: string, opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n const jsonOutput = Boolean(opts.json);\n try {\n const resolvedEntityId = await resolver.resolveEntity(entityId);\n const entities = await client.listEntities();\n const entity = entities.find((e) => e.entity_id === resolvedEntityId);\n if (!entity) {\n printError(`Entity not found: ${entityId}`);\n process.exit(1);\n }\n await resolver.stabilizeRecord(\"entity\", entity);\n if (jsonOutput) {\n printJson(entity);\n } else {\n console.log(chalk.blue(\"─\".repeat(40)));\n console.log(chalk.blue.bold(\" Entity Detail\"));\n console.log(chalk.blue(\"─\".repeat(40)));\n console.log(` ${chalk.bold(\"Name:\")} ${entity.legal_name ?? entity.name ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Type:\")} ${entity.entity_type ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Jurisdiction:\")} ${entity.jurisdiction ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Status:\")} ${entity.formation_status ?? entity.status ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"State:\")} ${entity.formation_state ?? \"N/A\"}`);\n printReferenceSummary(\"entity\", entity, { showReuseHint: true });\n if (entity.formation_date) console.log(` ${chalk.bold(\"Formation Date:\")} ${entity.formation_date}`);\n if (entity.ein) console.log(` ${chalk.bold(\"EIN:\")} ${entity.ein}`);\n console.log(chalk.blue(\"─\".repeat(40)));\n }\n } catch (err) {\n printError(`Failed to fetch entities: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function entitiesConvertCommand(\n entityId: string,\n opts: { to: string; jurisdiction?: string }\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const resolvedEntityId = await resolver.resolveEntity(entityId);\n const data: Record<string, string> = { target_type: opts.to };\n if (opts.jurisdiction) data.new_jurisdiction = opts.jurisdiction;\n const result = await client.convertEntity(resolvedEntityId, data);\n printSuccess(`Entity conversion initiated: ${result.conversion_id ?? \"OK\"}`);\n printJson(result);\n } catch (err) {\n printError(`Failed to convert entity: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function entitiesDissolveCommand(\n entityId: string,\n opts: { reason: string; effectiveDate?: string }\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const resolvedEntityId = await resolver.resolveEntity(entityId);\n const data: Record<string, string> = { reason: opts.reason };\n if (opts.effectiveDate) data.effective_date = opts.effectiveDate;\n const result = await client.dissolveEntity(resolvedEntityId, data);\n printSuccess(`Dissolution initiated: ${result.dissolution_id ?? \"OK\"}`);\n printJson(result);\n } catch (err) {\n const msg = String(err);\n if (msg.includes(\"InvalidTransition\") || msg.includes(\"422\")) {\n printError(`Cannot dissolve entity: only entities with 'active' status can be dissolved. Check the entity's current status with: corp entities show ${entityId}`);\n } else {\n printError(`Failed to dissolve entity: ${err}`);\n }\n process.exit(1);\n }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printContactsTable, printError, printJson, printReferenceSummary, printWriteResult } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport chalk from \"chalk\";\nimport type { ApiRecord } from \"../types.js\";\n\nexport async function contactsListCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const contacts = await client.listContacts(eid);\n await resolver.stabilizeRecords(\"contact\", contacts, eid);\n if (opts.json) printJson(contacts);\n else if (contacts.length === 0) console.log(\"No contacts found.\");\n else printContactsTable(contacts);\n } catch (err) {\n printError(`Failed to fetch contacts: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function contactsShowCommand(contactId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedContactId = await resolver.resolveContact(eid, contactId);\n const profile = await client.getContactProfile(resolvedContactId, eid);\n const contact = await resolver.stabilizeRecord(\"contact\", (profile.contact ?? profile) as ApiRecord, eid);\n if (opts.json) {\n printJson(profile);\n } else {\n console.log(chalk.cyan(\"─\".repeat(40)));\n console.log(chalk.cyan.bold(\" Contact Profile\"));\n console.log(chalk.cyan(\"─\".repeat(40)));\n console.log(` ${chalk.bold(\"Name:\")} ${contact.name ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Email:\")} ${contact.email ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Category:\")} ${contact.category ?? \"N/A\"}`);\n printReferenceSummary(\"contact\", contact, { showReuseHint: true });\n if (contact.phone) console.log(` ${chalk.bold(\"Phone:\")} ${contact.phone}`);\n if (contact.notes) console.log(` ${chalk.bold(\"Notes:\")} ${contact.notes}`);\n const holdings = profile.equity_holdings as ApiRecord[] | undefined;\n if (holdings?.length) {\n console.log(`\\n ${chalk.bold(\"Equity Holdings:\")}`);\n for (const h of holdings) console.log(` ${h.share_class ?? \"?\"}: ${h.shares ?? \"?\"} shares`);\n }\n const obls = profile.obligations as unknown[];\n if (obls?.length) console.log(`\\n ${chalk.bold(\"Obligations:\")} ${obls.length}`);\n console.log(chalk.cyan(\"─\".repeat(40)));\n }\n } catch (err) {\n printError(`Failed to fetch contact: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function contactsAddCommand(opts: {\n entityId?: string;\n name: string;\n email: string;\n type?: string;\n category?: string;\n capTableAccess?: string;\n phone?: string;\n notes?: string;\n mailingAddress?: string;\n address?: string;\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const data: ApiRecord = {\n entity_id: eid,\n contact_type: opts.type ?? \"individual\",\n name: opts.name,\n email: opts.email,\n category: opts.category ?? \"employee\",\n };\n if (opts.phone) data.phone = opts.phone;\n if (opts.notes) data.notes = opts.notes;\n if (opts.mailingAddress ?? opts.address) data.mailing_address = opts.mailingAddress ?? opts.address;\n if (opts.capTableAccess) data.cap_table_access = opts.capTableAccess;\n const result = await client.createContact(data);\n await resolver.stabilizeRecord(\"contact\", result, eid);\n resolver.rememberFromRecord(\"contact\", result, eid);\n printWriteResult(\n result,\n `Contact created: ${result.contact_id ?? result.id ?? \"OK\"}`,\n { jsonOnly: opts.json, referenceKind: \"contact\", showReuseHint: true },\n );\n } catch (err) {\n printError(`Failed to create contact: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function contactsEditCommand(\n contactId: string,\n opts: {\n entityId?: string;\n name?: string;\n email?: string;\n category?: string;\n capTableAccess?: string;\n phone?: string;\n notes?: string;\n mailingAddress?: string;\n address?: string;\n json?: boolean;\n }\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedContactId = await resolver.resolveContact(eid, contactId);\n const data: ApiRecord = { entity_id: eid };\n let hasUpdates = false;\n if (opts.name != null) {\n data.name = opts.name;\n hasUpdates = true;\n }\n if (opts.email != null) {\n data.email = opts.email;\n hasUpdates = true;\n }\n if (opts.category != null) {\n data.category = opts.category;\n hasUpdates = true;\n }\n if (opts.phone != null) {\n data.phone = opts.phone;\n hasUpdates = true;\n }\n if (opts.notes != null) {\n data.notes = opts.notes;\n hasUpdates = true;\n }\n if (opts.capTableAccess != null) {\n data.cap_table_access = opts.capTableAccess;\n hasUpdates = true;\n }\n if (opts.mailingAddress != null || opts.address != null) {\n data.mailing_address = opts.mailingAddress ?? opts.address;\n hasUpdates = true;\n }\n if (!hasUpdates) {\n console.log(\"No fields to update.\");\n return;\n }\n const result = await client.updateContact(resolvedContactId, data);\n resolver.remember(\"contact\", resolvedContactId, eid);\n printWriteResult(result, \"Contact updated.\", opts.json);\n } catch (err) {\n printError(`Failed to update contact: ${err}`);\n process.exit(1);\n }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport {\n printCapTable,\n printDryRun,\n printError,\n printInstrumentsTable,\n printJson,\n printReferenceSummary,\n printRoundsTable,\n printSafesTable,\n printShareClassesTable,\n printSuccess,\n printTransfersTable,\n printValuationsTable,\n printWriteResult,\n} from \"../output.js\";\nimport { ReferenceResolver, shortId } from \"../references.js\";\nimport type { ApiRecord } from \"../types.js\";\nimport chalk from \"chalk\";\n\ntype CapTableInstrument = {\n instrument_id: string;\n kind: string;\n symbol: string;\n status?: string;\n};\n\nfunction normalizedGrantType(grantType: string): string {\n return grantType.trim().toLowerCase().replaceAll(\"-\", \"_\").replaceAll(\" \", \"_\");\n}\n\nfunction expectedInstrumentKinds(grantType: string): string[] {\n switch (normalizedGrantType(grantType)) {\n case \"common\":\n case \"common_stock\":\n return [\"common_equity\"];\n case \"preferred\":\n case \"preferred_stock\":\n return [\"preferred_equity\"];\n case \"unit\":\n case \"membership_unit\":\n return [\"membership_unit\"];\n case \"option\":\n case \"options\":\n case \"stock_option\":\n case \"iso\":\n case \"nso\":\n return [\"option_grant\"];\n case \"rsa\":\n return [\"common_equity\", \"preferred_equity\"];\n default:\n return [];\n }\n}\n\nfunction grantRequiresCurrent409a(grantType: string, instrumentKind?: string): boolean {\n return instrumentKind?.toLowerCase() === \"option_grant\" || expectedInstrumentKinds(grantType).includes(\"option_grant\");\n}\n\nfunction buildInstrumentCreationHint(grantType: string): string {\n const normalized = normalizedGrantType(grantType);\n switch (normalized) {\n case \"preferred\":\n case \"preferred_stock\":\n return \"Create one with: corp cap-table create-instrument --kind preferred_equity --symbol SERIES-A --authorized-units <shares>\";\n case \"option\":\n case \"options\":\n case \"stock_option\":\n case \"iso\":\n case \"nso\":\n return \"Create one with: corp cap-table create-instrument --kind option_grant --symbol OPTION-PLAN --authorized-units <shares>\";\n case \"membership_unit\":\n case \"unit\":\n return \"Create one with: corp cap-table create-instrument --kind membership_unit --symbol UNIT --authorized-units <units>\";\n case \"common\":\n case \"common_stock\":\n return \"Create one with: corp cap-table create-instrument --kind common_equity --symbol COMMON --authorized-units <shares>\";\n default:\n return \"Create a matching instrument first, then pass --instrument-id explicitly.\";\n }\n}\n\nfunction resolveInstrumentForGrant(\n instruments: CapTableInstrument[],\n grantType: string,\n explicitInstrumentId?: string,\n): CapTableInstrument {\n if (explicitInstrumentId) {\n const explicit = instruments.find((instrument) => instrument.instrument_id === explicitInstrumentId);\n if (!explicit) {\n throw new Error(`Instrument ${explicitInstrumentId} was not found on the cap table.`);\n }\n return explicit;\n }\n\n const expectedKinds = expectedInstrumentKinds(grantType);\n if (expectedKinds.length === 0) {\n throw new Error(\n `No default instrument mapping exists for grant type \"${grantType}\". ${buildInstrumentCreationHint(grantType)}`,\n );\n }\n const match = instruments.find((instrument) => expectedKinds.includes(String(instrument.kind).toLowerCase()));\n if (!match) {\n throw new Error(\n `No instrument found for grant type \"${grantType}\". Expected one of: ${expectedKinds.join(\", \")}. ${buildInstrumentCreationHint(grantType)}`,\n );\n }\n return match;\n}\n\nasync function entityHasActiveBoard(client: CorpAPIClient, entityId: string): Promise<boolean> {\n const bodies = await client.listGovernanceBodies(entityId);\n return bodies.some((body) =>\n String(body.body_type ?? \"\").toLowerCase() === \"board_of_directors\"\n && String(body.status ?? \"active\").toLowerCase() === \"active\"\n );\n}\n\nasync function ensureIssuancePreflight(\n client: CorpAPIClient,\n entityId: string,\n grantType: string,\n instrument?: CapTableInstrument,\n meetingId?: string,\n resolutionId?: string,\n): Promise<void> {\n if (!meetingId || !resolutionId) {\n if (await entityHasActiveBoard(client, entityId)) {\n throw new Error(\n \"Board approval is required before issuing this round. Pass --meeting-id and --resolution-id from a passed board vote.\",\n );\n }\n }\n\n if (!grantRequiresCurrent409a(grantType, instrument?.kind)) {\n return;\n }\n\n try {\n await client.getCurrent409a(entityId);\n } catch (err) {\n const msg = String(err);\n if (msg.includes(\"404\")) {\n throw new Error(\n \"Stock option issuances require a current approved 409A valuation. Create and approve one first with: corp cap-table create-valuation --type four_oh_nine_a --date YYYY-MM-DD --methodology <method>; corp cap-table submit-valuation <valuation-ref>; corp cap-table approve-valuation <valuation-ref> --resolution-id <resolution-ref>\",\n );\n }\n throw err;\n }\n}\n\nexport async function capTableCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const data = await client.getCapTable(eid);\n const instruments = Array.isArray(data.instruments) ? data.instruments as ApiRecord[] : [];\n const shareClasses = Array.isArray(data.share_classes) ? data.share_classes as ApiRecord[] : [];\n await resolver.stabilizeRecords(\"instrument\", instruments, eid);\n await resolver.stabilizeRecords(\"share_class\", shareClasses, eid);\n if (opts.json) { printJson(data); return; }\n if ((data.access_level as string) === \"none\") {\n printError(\"You do not have access to this entity's cap table.\");\n process.exit(1);\n }\n printCapTable(data);\n try {\n const val = await client.getCurrent409a(eid);\n if (val) print409a(val);\n } catch { /* ignore */ }\n } catch (err) {\n printError(`Failed to fetch cap table: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function safesCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const safes = await client.getSafeNotes(eid);\n await resolver.stabilizeRecords(\"safe_note\", safes, eid);\n if (opts.json) printJson(safes);\n else if (safes.length === 0) console.log(\"No SAFE notes found.\");\n else printSafesTable(safes);\n } catch (err) {\n printError(`Failed to fetch SAFE notes: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function transfersCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const transfers = await client.getShareTransfers(eid);\n await resolver.stabilizeRecords(\"share_transfer\", transfers, eid);\n if (opts.json) printJson(transfers);\n else if (transfers.length === 0) console.log(\"No share transfers found.\");\n else printTransfersTable(transfers);\n } catch (err) {\n printError(`Failed to fetch transfers: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function instrumentsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const capTable = await client.getCapTable(eid);\n const instruments = Array.isArray(capTable.instruments) ? capTable.instruments as Record<string, unknown>[] : [];\n await resolver.stabilizeRecords(\"instrument\", instruments as ApiRecord[], eid);\n if (opts.json) printJson(instruments);\n else if (instruments.length === 0) console.log(\"No instruments found.\");\n else printInstrumentsTable(instruments);\n } catch (err) {\n printError(`Failed to fetch instruments: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function shareClassesCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const capTable = await client.getCapTable(eid);\n const shareClasses = Array.isArray(capTable.share_classes)\n ? capTable.share_classes as Record<string, unknown>[]\n : [];\n await resolver.stabilizeRecords(\"share_class\", shareClasses as ApiRecord[], eid);\n if (opts.json) printJson(shareClasses);\n else if (shareClasses.length === 0) console.log(\"No share classes found.\");\n else printShareClassesTable(shareClasses);\n } catch (err) {\n printError(`Failed to fetch share classes: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function roundsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const rounds = await client.listEquityRounds(eid);\n await resolver.stabilizeRecords(\"round\", rounds, eid);\n if (opts.json) printJson(rounds);\n else if (rounds.length === 0) console.log(\"No rounds found.\");\n else printRoundsTable(rounds);\n } catch (err) {\n printError(`Failed to fetch rounds: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function valuationsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const valuations = await client.getValuations(eid);\n await resolver.stabilizeRecords(\"valuation\", valuations, eid);\n if (opts.json) printJson(valuations);\n else if (valuations.length === 0) console.log(\"No valuations found.\");\n else printValuationsTable(valuations);\n } catch (err) {\n printError(`Failed to fetch valuations: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function fourOhNineACommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const data = await client.getCurrent409a(eid);\n await resolver.stabilizeRecord(\"valuation\", data, eid);\n if (opts.json) printJson(data);\n else if (!data || Object.keys(data).length === 0) console.log(\"No 409A valuation found.\");\n else print409a(data);\n } catch (err) {\n const msg = String(err);\n if (msg.includes(\"404\")) {\n console.log(\"No 409A valuation found for this entity. Create one with:\\n corp cap-table create-valuation --type four_oh_nine_a --date YYYY-MM-DD --methodology <method>\");\n } else {\n printError(`Failed to fetch 409A valuation: ${err}`);\n }\n process.exit(1);\n }\n}\n\nexport async function issueEquityCommand(opts: {\n entityId?: string;\n grantType: string;\n shares: number;\n recipient: string;\n email?: string;\n instrumentId?: string;\n meetingId?: string;\n resolutionId?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n if (opts.dryRun) {\n printDryRun(\"cap_table.issue_equity\", {\n entity_id: eid,\n grant_type: opts.grantType,\n shares: opts.shares,\n recipient: opts.recipient,\n email: opts.email,\n instrument_id: opts.instrumentId,\n meeting_id: opts.meetingId,\n resolution_id: opts.resolutionId,\n });\n return;\n }\n\n // Fetch cap table to get issuer and instrument info\n const capTable = await client.getCapTable(eid);\n const issuerLegalEntityId = capTable.issuer_legal_entity_id as string;\n if (!issuerLegalEntityId) {\n printError(\"No issuer legal entity found. Has this entity been formed with a cap table?\");\n process.exit(1);\n }\n\n // Resolve instrument ID — use provided, or match by grant type, or use first common stock\n const instruments = (capTable.instruments ?? []) as CapTableInstrument[];\n if (!instruments.length) {\n printError(\"No instruments found on cap table. Create one with: corp cap-table create-instrument --kind common_equity --symbol COMMON --authorized-units <shares>\");\n process.exit(1);\n }\n const explicitInstrumentId = opts.instrumentId\n ? await resolver.resolveInstrument(eid, opts.instrumentId)\n : undefined;\n const instrument = resolveInstrumentForGrant(instruments, opts.grantType, explicitInstrumentId);\n const instrumentId = instrument.instrument_id;\n if (!opts.instrumentId) {\n console.log(`Using instrument: ${instrument.symbol} (${instrument.kind})`);\n }\n const meetingId = opts.meetingId ? await resolver.resolveMeeting(eid, opts.meetingId) : undefined;\n const resolutionId = opts.resolutionId\n ? await resolver.resolveResolution(eid, opts.resolutionId, meetingId)\n : undefined;\n await ensureIssuancePreflight(\n client,\n eid,\n opts.grantType,\n instrument,\n meetingId,\n resolutionId,\n );\n\n // 1. Start a staged round\n const round = await client.startEquityRound({\n entity_id: eid,\n name: `${opts.grantType} grant — ${opts.recipient}`,\n issuer_legal_entity_id: issuerLegalEntityId,\n });\n await resolver.stabilizeRecord(\"round\", round, eid);\n const roundId = (round.round_id ?? round.equity_round_id) as string;\n\n // 2. Add the security\n const securityData: Record<string, unknown> = {\n entity_id: eid,\n instrument_id: instrumentId,\n quantity: opts.shares,\n recipient_name: opts.recipient,\n grant_type: opts.grantType,\n };\n if (opts.email) securityData.email = opts.email;\n await client.addRoundSecurity(roundId, securityData);\n\n // 3. Issue the round\n const issuePayload: Record<string, unknown> = { entity_id: eid };\n if (meetingId) issuePayload.meeting_id = meetingId;\n if (resolutionId) issuePayload.resolution_id = resolutionId;\n const result = await client.issueRound(roundId, issuePayload);\n resolver.rememberFromRecord(\"round\", round, eid);\n\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Equity issued: ${opts.shares} shares (${opts.grantType}) to ${opts.recipient}`);\n printReferenceSummary(\"round\", round, { label: \"Round Ref:\", showReuseHint: true });\n printJson(result);\n } catch (err) {\n printError(`Failed to issue equity: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function issueSafeCommand(opts: {\n entityId?: string;\n investor: string;\n amount: number;\n safeType: string;\n valuationCap: number;\n email?: string;\n meetingId?: string;\n resolutionId?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n if (opts.dryRun) {\n printDryRun(\"cap_table.issue_safe\", {\n entity_id: eid,\n investor: opts.investor,\n amount: opts.amount,\n safe_type: opts.safeType,\n valuation_cap: opts.valuationCap,\n email: opts.email,\n meeting_id: opts.meetingId,\n resolution_id: opts.resolutionId,\n });\n return;\n }\n\n const meetingId = opts.meetingId ? await resolver.resolveMeeting(eid, opts.meetingId) : undefined;\n const resolutionId = opts.resolutionId\n ? await resolver.resolveResolution(eid, opts.resolutionId, meetingId)\n : undefined;\n await ensureIssuancePreflight(\n client,\n eid,\n opts.safeType,\n undefined,\n meetingId,\n resolutionId,\n );\n\n const body: Record<string, unknown> = {\n entity_id: eid,\n investor_name: opts.investor,\n principal_amount_cents: opts.amount,\n valuation_cap_cents: opts.valuationCap,\n safe_type: opts.safeType,\n };\n if (opts.email) body.email = opts.email;\n if (meetingId) body.meeting_id = meetingId;\n if (resolutionId) body.resolution_id = resolutionId;\n const result = await client.createSafeNote(body);\n await resolver.stabilizeRecord(\"safe_note\", result, eid);\n resolver.rememberFromRecord(\"safe_note\", result, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`SAFE issued: $${(opts.amount / 100).toLocaleString()} to ${opts.investor}`);\n printReferenceSummary(\"safe_note\", result, { showReuseHint: true });\n printJson(result);\n } catch (err) {\n printError(`Failed to issue SAFE: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function transferSharesCommand(opts: {\n entityId?: string;\n from: string;\n to: string;\n shares: number;\n type: string;\n shareClassId: string;\n governingDocType: string;\n transfereeRights: string;\n prepareIntentId?: string;\n pricePerShareCents?: number;\n relationship?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const fromContactId = await resolver.resolveContact(eid, opts.from);\n const toContactId = await resolver.resolveContact(eid, opts.to);\n const shareClassId = await resolver.resolveShareClass(eid, opts.shareClassId);\n if (opts.pricePerShareCents != null && opts.pricePerShareCents < 0) {\n throw new Error(\"price-per-share-cents cannot be negative\");\n }\n if (fromContactId === toContactId) {\n throw new Error(\"--from and --to must be different contacts\");\n }\n if (opts.dryRun) {\n printDryRun(\"cap_table.transfer_shares\", {\n entity_id: eid,\n from_contact_id: fromContactId,\n to_contact_id: toContactId,\n share_count: opts.shares,\n transfer_type: opts.type,\n share_class_id: shareClassId,\n governing_doc_type: opts.governingDocType,\n transferee_rights: opts.transfereeRights,\n prepare_intent_id: opts.prepareIntentId,\n price_per_share_cents: opts.pricePerShareCents,\n relationship_to_holder: opts.relationship,\n });\n return;\n }\n\n let intentId = opts.prepareIntentId;\n if (!intentId) {\n const intent = await client.createExecutionIntent({\n entity_id: eid,\n intent_type: \"equity.transfer.prepare\",\n description: `Transfer ${opts.shares} shares from ${fromContactId} to ${toContactId}`,\n });\n intentId = (intent.intent_id ?? intent.id) as string;\n await client.evaluateIntent(intentId, eid);\n await client.authorizeIntent(intentId, eid);\n }\n const body: Record<string, unknown> = {\n entity_id: eid,\n share_class_id: shareClassId,\n from_contact_id: fromContactId,\n to_contact_id: toContactId,\n transfer_type: opts.type,\n share_count: opts.shares,\n governing_doc_type: opts.governingDocType,\n transferee_rights: opts.transfereeRights,\n prepare_intent_id: intentId,\n };\n if (opts.pricePerShareCents != null) body.price_per_share_cents = opts.pricePerShareCents;\n if (opts.relationship) body.relationship_to_holder = opts.relationship;\n const result = await client.transferShares(body);\n await resolver.stabilizeRecord(\"share_transfer\", result, eid);\n resolver.rememberFromRecord(\"share_transfer\", result, eid);\n printWriteResult(result, `Transfer workflow created: ${result.transfer_workflow_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"share_transfer\",\n referenceLabel: \"Transfer Ref:\",\n showReuseHint: true,\n });\n } catch (err) {\n printError(`Failed to create transfer workflow: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function distributeCommand(opts: {\n entityId?: string;\n amount: number;\n type: string;\n description: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const payload = {\n entity_id: eid, total_amount_cents: opts.amount, distribution_type: opts.type,\n description: opts.description,\n };\n if (opts.dryRun) {\n printDryRun(\"cap_table.distribute\", payload);\n return;\n }\n const result = await client.calculateDistribution(payload);\n await resolver.stabilizeRecord(\"distribution\", result, eid);\n resolver.rememberFromRecord(\"distribution\", result, eid);\n printWriteResult(result, `Distribution calculated: ${result.distribution_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"distribution\",\n showReuseHint: true,\n });\n } catch (err) {\n printError(`Failed to calculate distribution: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function startRoundCommand(opts: {\n entityId?: string;\n name: string;\n issuerLegalEntityId: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const issuerLegalEntityId = await resolver.resolveEntity(opts.issuerLegalEntityId);\n const payload = {\n entity_id: eid,\n name: opts.name,\n issuer_legal_entity_id: issuerLegalEntityId,\n };\n if (opts.dryRun) {\n printDryRun(\"cap_table.start_round\", payload);\n return;\n }\n const result = await client.startEquityRound(payload);\n await resolver.stabilizeRecord(\"round\", result, eid);\n resolver.rememberFromRecord(\"round\", result, eid);\n printWriteResult(result, `Round started: ${result.round_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"round\",\n showReuseHint: true,\n });\n } catch (err) {\n printError(`Failed to start round: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function createInstrumentCommand(opts: {\n entityId?: string;\n issuerLegalEntityId?: string;\n kind: string;\n symbol: string;\n authorizedUnits?: number;\n issuePriceCents?: number;\n termsJson?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n let issuerLegalEntityId = opts.issuerLegalEntityId;\n if (!issuerLegalEntityId) {\n const capTable = await client.getCapTable(eid);\n issuerLegalEntityId = capTable.issuer_legal_entity_id as string | undefined;\n }\n if (!issuerLegalEntityId) {\n throw new Error(\"No issuer legal entity found. Has this entity been formed with a cap table?\");\n }\n issuerLegalEntityId = await resolver.resolveEntity(issuerLegalEntityId);\n\n const terms = opts.termsJson ? JSON.parse(opts.termsJson) as Record<string, unknown> : {};\n const payload: Record<string, unknown> = {\n entity_id: eid,\n issuer_legal_entity_id: issuerLegalEntityId,\n kind: opts.kind,\n symbol: opts.symbol,\n terms,\n };\n if (opts.authorizedUnits != null) payload.authorized_units = opts.authorizedUnits;\n if (opts.issuePriceCents != null) payload.issue_price_cents = opts.issuePriceCents;\n if (opts.dryRun) {\n printDryRun(\"cap_table.create_instrument\", payload);\n return;\n }\n const result = await client.createInstrument(payload);\n await resolver.stabilizeRecord(\"instrument\", result, eid);\n resolver.rememberFromRecord(\"instrument\", result, eid);\n printWriteResult(result, `Instrument created: ${result.instrument_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"instrument\",\n showReuseHint: true,\n });\n } catch (err) {\n printError(`Failed to create instrument: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function addSecurityCommand(opts: {\n entityId?: string;\n roundId: string;\n holderId?: string;\n email?: string;\n instrumentId: string;\n quantity: number;\n recipientName: string;\n principalCents?: number;\n grantType?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const roundId = await resolver.resolveRound(eid, opts.roundId);\n const instrumentId = await resolver.resolveInstrument(eid, opts.instrumentId);\n const body: Record<string, unknown> = {\n entity_id: eid,\n instrument_id: instrumentId,\n quantity: opts.quantity,\n recipient_name: opts.recipientName,\n };\n if (opts.holderId) body.holder_id = await resolver.resolveContact(eid, opts.holderId);\n if (opts.email) body.email = opts.email;\n if (opts.principalCents) body.principal_cents = opts.principalCents;\n if (opts.grantType) body.grant_type = opts.grantType;\n if (opts.dryRun) {\n printDryRun(\"cap_table.add_security\", { round_id: roundId, ...body });\n return;\n }\n const result = await client.addRoundSecurity(roundId, body);\n printWriteResult(result, `Security added for ${opts.recipientName}`, opts.json);\n } catch (err) {\n printError(`Failed to add security: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function issueRoundCommand(opts: {\n entityId?: string;\n roundId: string;\n meetingId?: string;\n resolutionId?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const roundId = await resolver.resolveRound(eid, opts.roundId);\n const meetingId = opts.meetingId ? await resolver.resolveMeeting(eid, opts.meetingId) : undefined;\n const resolutionId = opts.resolutionId\n ? await resolver.resolveResolution(eid, opts.resolutionId, meetingId)\n : undefined;\n if (opts.dryRun) {\n printDryRun(\"cap_table.issue_round\", {\n entity_id: eid,\n round_id: roundId,\n meeting_id: meetingId,\n resolution_id: resolutionId,\n });\n return;\n }\n if ((!meetingId || !resolutionId) && await entityHasActiveBoard(client, eid)) {\n throw new Error(\n \"Board approval is required before issuing this round. Pass --meeting-id and --resolution-id from a passed board vote.\",\n );\n }\n const body: Record<string, unknown> = { entity_id: eid };\n if (meetingId) body.meeting_id = meetingId;\n if (resolutionId) body.resolution_id = resolutionId;\n const result = await client.issueRound(roundId, body);\n resolver.remember(\"round\", roundId, eid);\n const roundMatch = (await resolver.find(\"round\", shortId(roundId), { entityId: eid }))\n .find((match) => match.id === roundId);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(\"Round issued and closed\");\n if (roundMatch) {\n printReferenceSummary(\"round\", roundMatch.raw, { showReuseHint: true });\n }\n printJson(result);\n } catch (err) {\n printError(`Failed to issue round: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function createValuationCommand(opts: {\n entityId?: string;\n type: string;\n date: string;\n methodology: string;\n fmv?: number;\n enterpriseValue?: number;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const body: Record<string, unknown> = {\n entity_id: eid,\n valuation_type: opts.type,\n effective_date: opts.date,\n methodology: opts.methodology,\n };\n if (opts.fmv != null) body.fmv_per_share_cents = opts.fmv;\n if (opts.enterpriseValue != null) body.enterprise_value_cents = opts.enterpriseValue;\n if (opts.dryRun) {\n printDryRun(\"cap_table.create_valuation\", body);\n return;\n }\n const result = await client.createValuation(body);\n await resolver.stabilizeRecord(\"valuation\", result, eid);\n resolver.rememberFromRecord(\"valuation\", result, eid);\n printWriteResult(result, `Valuation created: ${result.valuation_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"valuation\",\n showReuseHint: true,\n });\n } catch (err) {\n printError(`Failed to create valuation: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function submitValuationCommand(opts: {\n entityId?: string;\n valuationId: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const valuationId = await resolver.resolveValuation(eid, opts.valuationId);\n if (opts.dryRun) {\n printDryRun(\"cap_table.submit_valuation\", { entity_id: eid, valuation_id: valuationId });\n return;\n }\n const result = await client.submitValuationForApproval(valuationId, eid);\n await resolver.stabilizeRecord(\"valuation\", result, eid);\n resolver.remember(\"valuation\", valuationId, eid);\n if (result.meeting_id) resolver.remember(\"meeting\", String(result.meeting_id), eid);\n if (result.agenda_item_id) resolver.remember(\"agenda_item\", String(result.agenda_item_id), eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Valuation submitted for approval: ${result.valuation_id ?? valuationId ?? \"OK\"}`);\n printReferenceSummary(\"valuation\", result, { showReuseHint: true });\n if (result.meeting_id) {\n const meetingMatch = (await resolver.find(\"meeting\", shortId(String(result.meeting_id)), { entityId: eid }))\n .find((match) => match.id === String(result.meeting_id));\n if (meetingMatch) {\n printReferenceSummary(\"meeting\", meetingMatch.raw, { label: \"Meeting Ref:\" });\n } else {\n printReferenceSummary(\"meeting\", { meeting_id: result.meeting_id }, { label: \"Meeting Ref:\" });\n }\n }\n if (result.agenda_item_id) {\n const agendaMatch = (await resolver.find(\"agenda_item\", shortId(String(result.agenda_item_id)), {\n entityId: eid,\n meetingId: result.meeting_id ? String(result.meeting_id) : undefined,\n }))\n .find((match) => match.id === String(result.agenda_item_id));\n if (agendaMatch) {\n printReferenceSummary(\"agenda_item\", agendaMatch.raw, { label: \"Agenda Ref:\" });\n } else {\n printReferenceSummary(\"agenda_item\", { agenda_item_id: result.agenda_item_id }, { label: \"Agenda Ref:\" });\n }\n }\n printJson(result);\n } catch (err) {\n const msg = String(err);\n if (msg.includes(\"404\")) {\n printError(`Valuation not found. List valuations with: corp cap-table valuations`);\n } else {\n printError(`Failed to submit valuation: ${err}`);\n }\n process.exit(1);\n }\n}\n\nexport async function approveValuationCommand(opts: {\n entityId?: string;\n valuationId: string;\n resolutionId?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const valuationId = await resolver.resolveValuation(eid, opts.valuationId);\n const resolutionId = opts.resolutionId\n ? await resolver.resolveResolution(eid, opts.resolutionId)\n : undefined;\n if (opts.dryRun) {\n printDryRun(\"cap_table.approve_valuation\", {\n entity_id: eid,\n valuation_id: valuationId,\n resolution_id: resolutionId,\n });\n return;\n }\n const result = await client.approveValuation(valuationId, eid, resolutionId);\n await resolver.stabilizeRecord(\"valuation\", result, eid);\n printWriteResult(result, `Valuation approved: ${result.valuation_id ?? valuationId ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"valuation\",\n });\n } catch (err) {\n const msg = String(err);\n if (msg.includes(\"400\")) {\n printError(`Bad request — a --resolution-id from a board vote may be required. Submit for approval first: corp cap-table submit-valuation <valuation-ref>`);\n } else {\n printError(`Failed to approve valuation: ${err}`);\n }\n process.exit(1);\n }\n}\n\nfunction print409a(data: Record<string, unknown>): void {\n console.log(chalk.green(\"─\".repeat(40)));\n console.log(chalk.green.bold(\" 409A Valuation\"));\n console.log(chalk.green(\"─\".repeat(40)));\n const fmv = typeof data.fmv_per_share_cents === \"number\" ? (data.fmv_per_share_cents as number) / 100 : data.fmv_per_share;\n const enterpriseValue = typeof data.enterprise_value_cents === \"number\"\n ? (data.enterprise_value_cents as number) / 100\n : data.enterprise_value;\n console.log(` ${chalk.bold(\"FMV/Share:\")} $${fmv ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Enterprise Value:\")} $${enterpriseValue ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Valuation Date:\")} ${data.effective_date ?? data.valuation_date ?? \"N/A\"}`);\n if (data.provider) console.log(` ${chalk.bold(\"Provider:\")} ${data.provider}`);\n console.log(chalk.green(\"─\".repeat(40)));\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport {\n printBankAccountsTable,\n printClassificationsTable,\n printDistributionsTable,\n printError,\n printInvoicesTable,\n printJson,\n printPaymentsTable,\n printPayrollRunsTable,\n printReconciliationsTable,\n printWriteResult,\n} from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\n\nexport async function financeInvoicesCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const invoices = await client.listInvoices(eid);\n await resolver.stabilizeRecords(\"invoice\", invoices, eid);\n if (opts.json) printJson(invoices);\n else if (invoices.length === 0) console.log(\"No invoices found.\");\n else printInvoicesTable(invoices);\n } catch (err) { printError(`Failed to fetch invoices: ${err}`); process.exit(1); }\n}\n\nexport async function financeBankAccountsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const accounts = await client.listBankAccounts(eid);\n await resolver.stabilizeRecords(\"bank_account\", accounts, eid);\n if (opts.json) printJson(accounts);\n else if (accounts.length === 0) console.log(\"No bank accounts found.\");\n else printBankAccountsTable(accounts);\n } catch (err) { printError(`Failed to fetch bank accounts: ${err}`); process.exit(1); }\n}\n\nexport async function financePaymentsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const payments = await client.listPayments(eid);\n await resolver.stabilizeRecords(\"payment\", payments, eid);\n if (opts.json) printJson(payments);\n else if (payments.length === 0) console.log(\"No payments found.\");\n else printPaymentsTable(payments);\n } catch (err) { printError(`Failed to fetch payments: ${err}`); process.exit(1); }\n}\n\nexport async function financePayrollRunsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const runs = await client.listPayrollRuns(eid);\n await resolver.stabilizeRecords(\"payroll_run\", runs, eid);\n if (opts.json) printJson(runs);\n else if (runs.length === 0) console.log(\"No payroll runs found.\");\n else printPayrollRunsTable(runs);\n } catch (err) { printError(`Failed to fetch payroll runs: ${err}`); process.exit(1); }\n}\n\nexport async function financeDistributionsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const distributions = await client.listDistributions(eid);\n await resolver.stabilizeRecords(\"distribution\", distributions, eid);\n if (opts.json) printJson(distributions);\n else if (distributions.length === 0) console.log(\"No distributions found.\");\n else printDistributionsTable(distributions);\n } catch (err) { printError(`Failed to fetch distributions: ${err}`); process.exit(1); }\n}\n\nexport async function financeReconciliationsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const reconciliations = await client.listReconciliations(eid);\n await resolver.stabilizeRecords(\"reconciliation\", reconciliations, eid);\n if (opts.json) printJson(reconciliations);\n else if (reconciliations.length === 0) console.log(\"No reconciliations found.\");\n else printReconciliationsTable(reconciliations);\n } catch (err) { printError(`Failed to fetch reconciliations: ${err}`); process.exit(1); }\n}\n\nexport async function financeClassificationsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const classifications = await client.listContractorClassifications(eid);\n await resolver.stabilizeRecords(\"classification\", classifications, eid);\n if (opts.json) printJson(classifications);\n else if (classifications.length === 0) console.log(\"No contractor classifications found.\");\n else printClassificationsTable(classifications);\n } catch (err) { printError(`Failed to fetch contractor classifications: ${err}`); process.exit(1); }\n}\n\nexport async function financeInvoiceCommand(opts: {\n entityId?: string; customer: string; amount: number; dueDate: string; description: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.createInvoice({\n entity_id: eid, customer_name: opts.customer, amount_cents: opts.amount,\n due_date: opts.dueDate, description: opts.description,\n });\n await resolver.stabilizeRecord(\"invoice\", result, eid);\n resolver.rememberFromRecord(\"invoice\", result, eid);\n printWriteResult(result, `Invoice created: ${result.invoice_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"invoice\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to create invoice: ${err}`); process.exit(1); }\n}\n\nexport async function financePayrollCommand(opts: {\n entityId?: string; periodStart: string; periodEnd: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.runPayroll({\n entity_id: eid, pay_period_start: opts.periodStart, pay_period_end: opts.periodEnd,\n });\n await resolver.stabilizeRecord(\"payroll_run\", result, eid);\n resolver.rememberFromRecord(\"payroll_run\", result, eid);\n printWriteResult(result, `Payroll run created: ${result.payroll_run_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"payroll_run\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to run payroll: ${err}`); process.exit(1); }\n}\n\nexport async function financePayCommand(opts: {\n entityId?: string; amount: number; recipient: string; method: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.submitPayment({\n entity_id: eid, amount_cents: opts.amount, recipient: opts.recipient,\n payment_method: opts.method,\n description: `Payment via ${opts.method}`,\n });\n await resolver.stabilizeRecord(\"payment\", result, eid);\n resolver.rememberFromRecord(\"payment\", result, eid);\n printWriteResult(result, `Payment submitted: ${result.payment_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"payment\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to submit payment: ${err}`); process.exit(1); }\n}\n\nexport async function financeOpenAccountCommand(opts: {\n entityId?: string; institution: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.openBankAccount({ entity_id: eid, bank_name: opts.institution });\n await resolver.stabilizeRecord(\"bank_account\", result, eid);\n resolver.rememberFromRecord(\"bank_account\", result, eid);\n printWriteResult(result, `Bank account opened: ${result.bank_account_id ?? result.account_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"bank_account\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to open bank account: ${err}`); process.exit(1); }\n}\n\nexport async function financeClassifyContractorCommand(opts: {\n entityId?: string; name: string; state: string; hours: number;\n exclusive: boolean; duration: number; providesTools: boolean; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.classifyContractor({\n entity_id: eid, contractor_name: opts.name, state: opts.state, hours_per_week: opts.hours,\n exclusive_client: opts.exclusive, duration_months: opts.duration, provides_tools: opts.providesTools,\n });\n await resolver.stabilizeRecord(\"classification\", result, eid);\n resolver.rememberFromRecord(\"classification\", result, eid);\n printWriteResult(result, `Classification: ${result.risk_level ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"classification\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to classify contractor: ${err}`); process.exit(1); }\n}\n\nexport async function financeReconcileCommand(opts: {\n entityId?: string; startDate: string; endDate: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.reconcileLedger({\n entity_id: eid, start_date: opts.startDate, end_date: opts.endDate,\n });\n await resolver.stabilizeRecord(\"reconciliation\", result, eid);\n resolver.rememberFromRecord(\"reconciliation\", result, eid);\n printWriteResult(result, `Ledger reconciled: ${result.reconciliation_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"reconciliation\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to reconcile ledger: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport {\n printAgendaItemsTable,\n printGovernanceTable, printSeatsTable, printMeetingsTable,\n printResolutionsTable, printDryRun, printError, printReferenceSummary, printSuccess, printJson,\n} from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport chalk from \"chalk\";\n\nexport async function governanceCreateBodyCommand(opts: {\n entityId?: string; name: string; bodyType: string; quorum: string; voting: string;\n json?: boolean; dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const payload = {\n entity_id: eid,\n body_type: opts.bodyType,\n name: opts.name,\n quorum_rule: opts.quorum,\n voting_method: opts.voting,\n };\n if (opts.dryRun) {\n printDryRun(\"governance.create_body\", payload);\n return;\n }\n const result = await client.createGovernanceBody(payload);\n await resolver.stabilizeRecord(\"body\", result, eid);\n resolver.rememberFromRecord(\"body\", result, eid);\n const bodyId = result.body_id ?? \"OK\";\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Governance body created: ${bodyId}`);\n printReferenceSummary(\"body\", result, { showReuseHint: true });\n printJson(result);\n console.log(chalk.dim(\"\\n Next steps:\"));\n console.log(chalk.dim(` corp governance add-seat @last:body --holder <contact-ref>`));\n console.log(chalk.dim(` corp governance seats @last:body`));\n } catch (err) { printError(`Failed to create governance body: ${err}`); process.exit(1); }\n}\n\nexport async function governanceAddSeatCommand(bodyId: string, opts: {\n holder: string; role?: string; entityId?: string; json?: boolean; dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedBodyId = await resolver.resolveBody(eid, bodyId);\n const resolvedHolderId = await resolver.resolveContact(eid, opts.holder);\n const data: Record<string, unknown> = { holder_id: resolvedHolderId, role: opts.role ?? \"member\" };\n if (opts.dryRun) {\n printDryRun(\"governance.add_seat\", { entity_id: eid, body_id: resolvedBodyId, ...data });\n return;\n }\n const result = await client.createGovernanceSeat(resolvedBodyId, eid, data);\n await resolver.stabilizeRecord(\"seat\", result, eid);\n resolver.rememberFromRecord(\"seat\", result, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Seat added: ${result.seat_id ?? \"OK\"}`);\n printReferenceSummary(\"seat\", result, { showReuseHint: true });\n printJson(result);\n } catch (err) { printError(`Failed to add seat: ${err}`); process.exit(1); }\n}\n\nexport async function governanceListCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const bodies = await client.listGovernanceBodies(eid);\n await resolver.stabilizeRecords(\"body\", bodies, eid);\n if (opts.json) printJson(bodies);\n else if (bodies.length === 0) console.log(\"No governance bodies found.\");\n else printGovernanceTable(bodies);\n } catch (err) { printError(`Failed to fetch governance bodies: ${err}`); process.exit(1); }\n}\n\nexport async function governanceSeatsCommand(bodyId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedBodyId = await resolver.resolveBody(eid, bodyId);\n const seats = await client.getGovernanceSeats(resolvedBodyId, eid);\n await resolver.stabilizeRecords(\"seat\", seats, eid);\n if (opts.json) printJson(seats);\n else if (seats.length === 0) console.log(\"No seats found.\");\n else printSeatsTable(seats);\n } catch (err) { printError(`Failed to fetch seats: ${err}`); process.exit(1); }\n}\n\nexport async function governanceMeetingsCommand(bodyId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedBodyId = await resolver.resolveBody(eid, bodyId);\n const meetings = await client.listMeetings(resolvedBodyId, eid);\n await resolver.stabilizeRecords(\"meeting\", meetings, eid);\n if (opts.json) printJson(meetings);\n else if (meetings.length === 0) console.log(\"No meetings found.\");\n else printMeetingsTable(meetings);\n } catch (err) { printError(`Failed to fetch meetings: ${err}`); process.exit(1); }\n}\n\nexport async function governanceResolutionsCommand(meetingId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n const resolutions = await client.getMeetingResolutions(resolvedMeetingId, eid);\n await resolver.stabilizeRecords(\"resolution\", resolutions, eid);\n if (opts.json) printJson(resolutions);\n else if (resolutions.length === 0) console.log(\"No resolutions found.\");\n else printResolutionsTable(resolutions);\n } catch (err) { printError(`Failed to fetch resolutions: ${err}`); process.exit(1); }\n}\n\nexport async function governanceConveneCommand(opts: {\n entityId?: string; body: string; meetingType: string; title: string; date?: string; agenda: string[];\n json?: boolean; dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedBodyId = await resolver.resolveBody(eid, opts.body);\n const payload: Record<string, unknown> = {\n entity_id: eid, body_id: resolvedBodyId, meeting_type: opts.meetingType,\n title: opts.title,\n agenda_item_titles: opts.agenda,\n };\n if (opts.date) payload.scheduled_date = opts.date;\n if (opts.dryRun) {\n printDryRun(\"governance.schedule_meeting\", payload);\n return;\n }\n const result = await client.scheduleMeeting(payload);\n await resolver.stabilizeRecord(\"meeting\", result, eid);\n resolver.rememberFromRecord(\"meeting\", result, eid);\n const meetingId = result.meeting_id ?? \"OK\";\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Meeting scheduled: ${meetingId}`);\n printReferenceSummary(\"meeting\", result, { showReuseHint: true });\n printJson(result);\n console.log(chalk.dim(\"\\n Next steps:\"));\n console.log(chalk.dim(` corp governance notice @last:meeting`));\n console.log(chalk.dim(` corp governance open @last:meeting --present-seat <seat-ref>`));\n console.log(chalk.dim(` corp governance agenda-items @last:meeting`));\n } catch (err) { printError(`Failed to schedule meeting: ${err}`); process.exit(1); }\n}\n\nexport async function governanceOpenMeetingCommand(\n meetingId: string,\n opts: { entityId?: string; presentSeat: string[]; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n const resolvedSeats = await Promise.all(\n opts.presentSeat.map((seatRef) => resolver.resolveSeat(eid, seatRef)),\n );\n const payload = { present_seat_ids: resolvedSeats };\n if (opts.dryRun) {\n printDryRun(\"governance.open_meeting\", { entity_id: eid, meeting_id: resolvedMeetingId, ...payload });\n return;\n }\n const result = await client.conveneMeeting(resolvedMeetingId, eid, payload);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Meeting opened: ${resolvedMeetingId}`);\n printJson(result);\n } catch (err) { printError(`Failed to open meeting: ${err}`); process.exit(1); }\n}\n\nexport async function governanceVoteCommand(\n meetingId: string,\n itemId: string,\n opts: { voter: string; vote: string; entityId?: string; json?: boolean; dryRun?: boolean }\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n const resolvedItemId = await resolver.resolveAgendaItem(eid, resolvedMeetingId, itemId);\n const resolvedVoterId = await resolver.resolveContact(eid, opts.voter);\n const payload = {\n voter_id: resolvedVoterId, vote_value: opts.vote,\n };\n if (opts.dryRun) {\n printDryRun(\"governance.cast_vote\", { entity_id: eid, meeting_id: resolvedMeetingId, agenda_item_id: resolvedItemId, ...payload });\n return;\n }\n const result = await client.castVote(eid, resolvedMeetingId, resolvedItemId, payload);\n resolver.rememberFromRecord(\"agenda_item\", { agenda_item_id: resolvedItemId, title: itemId }, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Vote cast: ${result.vote_id ?? \"OK\"}`);\n printJson(result);\n } catch (err) {\n const message = String(err);\n if (message.includes(\"voting session is not open\")) {\n printError(\n `Failed to cast vote: ${err}\\n` +\n ` Open the meeting first: corp governance open ${meetingId} --present-seat <seat-ref>`,\n );\n } else {\n printError(`Failed to cast vote: ${err}`);\n }\n process.exit(1);\n }\n}\n\nexport async function sendNoticeCommand(\n meetingId: string,\n opts: { entityId?: string; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n if (opts.dryRun) {\n printDryRun(\"governance.send_notice\", { entity_id: eid, meeting_id: resolvedMeetingId });\n return;\n }\n const result = await client.sendNotice(resolvedMeetingId, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Notice sent for meeting ${resolvedMeetingId}`);\n printJson(result);\n } catch (err) { printError(`Failed to send notice: ${err}`); process.exit(1); }\n}\n\nexport async function adjournMeetingCommand(\n meetingId: string,\n opts: { entityId?: string; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n if (opts.dryRun) {\n printDryRun(\"governance.adjourn_meeting\", { entity_id: eid, meeting_id: resolvedMeetingId });\n return;\n }\n const result = await client.adjournMeeting(resolvedMeetingId, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Meeting ${resolvedMeetingId} adjourned`);\n printJson(result);\n } catch (err) { printError(`Failed to adjourn meeting: ${err}`); process.exit(1); }\n}\n\nexport async function cancelMeetingCommand(\n meetingId: string,\n opts: { entityId?: string; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n if (opts.dryRun) {\n printDryRun(\"governance.cancel_meeting\", { entity_id: eid, meeting_id: resolvedMeetingId });\n return;\n }\n const result = await client.cancelMeeting(resolvedMeetingId, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Meeting ${resolvedMeetingId} cancelled`);\n printJson(result);\n } catch (err) { printError(`Failed to cancel meeting: ${err}`); process.exit(1); }\n}\n\nexport async function reopenMeetingCommand(\n meetingId: string,\n opts: { entityId?: string; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n if (opts.dryRun) {\n printDryRun(\"governance.reopen_meeting\", { entity_id: eid, meeting_id: resolvedMeetingId });\n return;\n }\n const result = await client.reopenMeeting(resolvedMeetingId, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Meeting ${resolvedMeetingId} re-opened`);\n printJson(result);\n } catch (err) { printError(`Failed to re-open meeting: ${err}`); process.exit(1); }\n}\n\nexport async function finalizeAgendaItemCommand(\n meetingId: string,\n itemId: string,\n opts: { status: string; entityId?: string; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n const resolvedItemId = await resolver.resolveAgendaItem(eid, resolvedMeetingId, itemId);\n const payload = {\n entity_id: eid, status: opts.status,\n };\n if (opts.dryRun) {\n printDryRun(\"governance.finalize_agenda_item\", { meeting_id: resolvedMeetingId, agenda_item_id: resolvedItemId, ...payload });\n return;\n }\n const result = await client.finalizeAgendaItem(resolvedMeetingId, resolvedItemId, payload);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Agenda item ${resolvedItemId} finalized as ${opts.status}`);\n printJson(result);\n } catch (err) { printError(`Failed to finalize agenda item: ${err}`); process.exit(1); }\n}\n\nexport async function computeResolutionCommand(\n meetingId: string,\n itemId: string,\n opts: { text: string; entityId?: string; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n const resolvedItemId = await resolver.resolveAgendaItem(eid, resolvedMeetingId, itemId);\n const payload = {\n resolution_text: opts.text,\n };\n if (opts.dryRun) {\n printDryRun(\"governance.compute_resolution\", {\n entity_id: eid,\n meeting_id: resolvedMeetingId,\n agenda_item_id: resolvedItemId,\n ...payload,\n });\n return;\n }\n const result = await client.computeResolution(resolvedMeetingId, resolvedItemId, eid, payload);\n await resolver.stabilizeRecord(\"resolution\", result, eid);\n resolver.rememberFromRecord(\"resolution\", result, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Resolution computed for agenda item ${itemId}`);\n printReferenceSummary(\"resolution\", result, { showReuseHint: true });\n printJson(result);\n } catch (err) { printError(`Failed to compute resolution: ${err}`); process.exit(1); }\n}\n\nexport async function writtenConsentCommand(opts: {\n body: string; title: string; description: string; entityId?: string; json?: boolean; dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedBodyId = await resolver.resolveBody(eid, opts.body);\n const payload = {\n entity_id: eid, body_id: resolvedBodyId, title: opts.title, description: opts.description,\n };\n if (opts.dryRun) {\n printDryRun(\"governance.written_consent\", payload);\n return;\n }\n const result = await client.writtenConsent(payload);\n await resolver.stabilizeRecord(\"meeting\", result, eid);\n resolver.rememberFromRecord(\"meeting\", result, eid);\n const meetingId = result.meeting_id ?? \"OK\";\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Written consent created: ${meetingId}`);\n printReferenceSummary(\"meeting\", result, { showReuseHint: true });\n printJson(result);\n console.log(chalk.dim(\"\\n Next steps:\"));\n console.log(chalk.dim(` corp governance agenda-items @last:meeting`));\n console.log(chalk.dim(` corp governance vote @last:meeting <item-ref> --voter <contact-ref> --vote for`));\n } catch (err) { printError(`Failed to create written consent: ${err}`); process.exit(1); }\n}\n\nexport async function listAgendaItemsCommand(meetingId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n const items = await client.listAgendaItems(resolvedMeetingId, eid);\n await resolver.stabilizeRecords(\"agenda_item\", items, eid);\n if (opts.json) printJson(items);\n else if (items.length === 0) console.log(\"No agenda items found.\");\n else printAgendaItemsTable(items);\n } catch (err) { printError(`Failed to list agenda items: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printDocumentsTable, printError, printReferenceSummary, printSuccess, printJson, printWriteResult } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\n\nconst HUMANS_APP_ORIGIN = \"https://humans.thecorporation.ai\";\n\nfunction formatSigningLink(docId: string, result: { token?: unknown; signing_url?: unknown }): string {\n if (typeof result.token === \"string\" && result.token.length > 0) {\n return `${HUMANS_APP_ORIGIN}/sign/${docId}?token=${encodeURIComponent(result.token)}`;\n }\n if (typeof result.signing_url === \"string\" && result.signing_url.length > 0) {\n if (/^https?:\\/\\//.test(result.signing_url)) {\n return result.signing_url;\n }\n const normalizedPath = result.signing_url.startsWith(\"/human/sign/\")\n ? result.signing_url.replace(\"/human/sign/\", \"/sign/\")\n : result.signing_url;\n return `${HUMANS_APP_ORIGIN}${normalizedPath.startsWith(\"/\") ? normalizedPath : `/${normalizedPath}`}`;\n }\n return `${HUMANS_APP_ORIGIN}/sign/${docId}`;\n}\n\nexport async function documentsListCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const docs = await client.getEntityDocuments(eid);\n await resolver.stabilizeRecords(\"document\", docs, eid);\n if (opts.json) printJson(docs);\n else if (docs.length === 0) console.log(\"No documents found.\");\n else printDocumentsTable(docs);\n } catch (err) { printError(`Failed to fetch documents: ${err}`); process.exit(1); }\n}\n\nexport async function documentsSigningLinkCommand(docId: string, opts: { entityId?: string }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedDocumentId = await resolver.resolveDocument(eid, docId);\n const result = await client.getSigningLink(resolvedDocumentId, eid);\n const shareUrl = formatSigningLink(resolvedDocumentId, result);\n if (process.stdout.isTTY) {\n printSuccess(\"Signing link generated.\");\n const summaryRecord = await resolver.stabilizeRecord(\"document\", { document_id: resolvedDocumentId, title: docId }, eid);\n printReferenceSummary(\"document\", summaryRecord, { label: \"Document Ref:\" });\n }\n console.log(shareUrl);\n } catch (err) { printError(`Failed to get signing link: ${err}`); process.exit(1); }\n}\n\nexport async function documentsGenerateCommand(opts: {\n entityId?: string;\n template: string;\n counterparty: string;\n effectiveDate?: string;\n baseSalary?: string;\n param?: string[];\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const parameters: Record<string, unknown> = {};\n if (opts.baseSalary) {\n parameters.base_salary = opts.baseSalary;\n }\n for (const raw of opts.param ?? []) {\n const idx = raw.indexOf(\"=\");\n if (idx <= 0) {\n throw new Error(`Invalid --param value: ${raw}. Expected key=value.`);\n }\n const key = raw.slice(0, idx).trim();\n const value = raw.slice(idx + 1).trim();\n if (!key) {\n throw new Error(`Invalid --param value: ${raw}. Expected key=value.`);\n }\n parameters[key] = coerceParamValue(value);\n }\n\n const result = await client.generateContract({\n entity_id: eid,\n template_type: opts.template,\n counterparty_name: opts.counterparty,\n effective_date: opts.effectiveDate ?? new Date().toISOString().slice(0, 10),\n parameters,\n });\n await resolver.stabilizeRecord(\"document\", result, eid);\n resolver.rememberFromRecord(\"document\", result, eid);\n printWriteResult(result, `Contract generated: ${result.contract_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"document\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to generate contract: ${err}`); process.exit(1); }\n}\n\nfunction coerceParamValue(raw: string): unknown {\n if (raw === \"true\") return true;\n if (raw === \"false\") return false;\n if (/^-?\\d+(\\.\\d+)?$/.test(raw)) return Number(raw);\n if ((raw.startsWith(\"{\") && raw.endsWith(\"}\")) || (raw.startsWith(\"[\") && raw.endsWith(\"]\"))) {\n try {\n return JSON.parse(raw);\n } catch {\n return raw;\n }\n }\n return raw;\n}\n\nexport async function documentsPreviewPdfCommand(opts: {\n entityId?: string; documentId: string;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n await client.validatePreviewPdf(eid, opts.documentId);\n const url = client.getPreviewPdfUrl(eid, opts.documentId);\n printSuccess(`Preview PDF URL: ${url}`);\n console.log(\"The document definition was validated successfully. Use your API key to download the PDF.\");\n } catch (err) {\n printError(`Failed to validate preview PDF: ${err}`);\n process.exit(1);\n }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printDeadlinesTable, printError, printJson, printTaxFilingsTable, printWriteResult } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\n\nfunction normalizeRecurrence(recurrence?: string): string | undefined {\n if (!recurrence) return undefined;\n if (recurrence === \"yearly\") return \"annual\";\n return recurrence;\n}\n\nexport async function taxFilingsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const filings = await client.listTaxFilings(eid);\n await resolver.stabilizeRecords(\"tax_filing\", filings, eid);\n if (opts.json) printJson(filings);\n else if (filings.length === 0) console.log(\"No tax filings found.\");\n else printTaxFilingsTable(filings);\n } catch (err) { printError(`Failed to fetch tax filings: ${err}`); process.exit(1); }\n}\n\nexport async function taxDeadlinesCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const deadlines = await client.listDeadlines(eid);\n await resolver.stabilizeRecords(\"deadline\", deadlines, eid);\n if (opts.json) printJson(deadlines);\n else if (deadlines.length === 0) console.log(\"No deadlines found.\");\n else printDeadlinesTable(deadlines);\n } catch (err) { printError(`Failed to fetch deadlines: ${err}`); process.exit(1); }\n}\n\nexport async function taxFileCommand(opts: {\n entityId?: string;\n type: string;\n year: number;\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.fileTaxDocument({ entity_id: eid, document_type: opts.type, tax_year: opts.year });\n await resolver.stabilizeRecord(\"tax_filing\", result, eid);\n resolver.rememberFromRecord(\"tax_filing\", result, eid);\n printWriteResult(result, `Tax document filed: ${result.filing_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"tax_filing\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to file tax document: ${err}`); process.exit(1); }\n}\n\nexport async function taxDeadlineCommand(opts: {\n entityId?: string;\n type: string;\n dueDate: string;\n description: string;\n recurrence?: string;\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const payload: Record<string, unknown> = {\n entity_id: eid, deadline_type: opts.type, due_date: opts.dueDate,\n description: opts.description,\n };\n const recurrence = normalizeRecurrence(opts.recurrence);\n if (recurrence) payload.recurrence = recurrence;\n const result = await client.trackDeadline(payload);\n await resolver.stabilizeRecord(\"deadline\", result, eid);\n resolver.rememberFromRecord(\"deadline\", result, eid);\n printWriteResult(result, `Deadline tracked: ${result.deadline_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"deadline\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to track deadline: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printAgentsTable, printError, printJson, printReferenceSummary, printWriteResult } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport chalk from \"chalk\";\nimport type { ApiRecord } from \"../types.js\";\nimport { readFileSync, realpathSync } from \"node:fs\";\nimport { relative, resolve } from \"node:path\";\n\nexport async function agentsListCommand(opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const agents = await client.listAgents();\n await resolver.stabilizeRecords(\"agent\", agents);\n if (opts.json) printJson(agents);\n else if (agents.length === 0) console.log(\"No agents found.\");\n else printAgentsTable(agents);\n } catch (err) { printError(`Failed to fetch agents: ${err}`); process.exit(1); }\n}\n\nexport async function agentsShowCommand(agentId: string, opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n const agent = await client.getAgent(resolvedAgentId);\n await resolver.stabilizeRecord(\"agent\", agent);\n if (opts.json) { printJson(agent); return; }\n console.log(chalk.magenta(\"─\".repeat(40)));\n console.log(chalk.magenta.bold(\" Agent Detail\"));\n console.log(chalk.magenta(\"─\".repeat(40)));\n console.log(` ${chalk.bold(\"Name:\")} ${agent.name ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Status:\")} ${agent.status ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Model:\")} ${agent.model ?? \"N/A\"}`);\n printReferenceSummary(\"agent\", agent, { showReuseHint: true });\n if (agent.system_prompt) {\n let prompt = String(agent.system_prompt);\n if (prompt.length > 100) prompt = prompt.slice(0, 97) + \"...\";\n console.log(` ${chalk.bold(\"Prompt:\")} ${prompt}`);\n }\n if (agent.skills && Array.isArray(agent.skills) && agent.skills.length > 0) {\n console.log(` ${chalk.bold(\"Skills:\")} ${(agent.skills as Array<{name?: string}>).map((s) => s.name ?? \"?\").join(\", \")}`);\n }\n console.log(chalk.magenta(\"─\".repeat(40)));\n } catch (err) { printError(`Failed to fetch agent: ${err}`); process.exit(1); }\n}\n\nexport async function agentsCreateCommand(opts: {\n name: string;\n prompt: string;\n model?: string;\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const data: ApiRecord = { name: opts.name, system_prompt: opts.prompt };\n if (opts.model) data.model = opts.model;\n const result = await client.createAgent(data);\n await resolver.stabilizeRecord(\"agent\", result);\n resolver.rememberFromRecord(\"agent\", result);\n printWriteResult(result, `Agent created: ${result.agent_id ?? result.id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"agent\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to create agent: ${err}`); process.exit(1); }\n}\n\nexport async function agentsPauseCommand(agentId: string, opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n const result = await client.updateAgent(resolvedAgentId, { status: \"paused\" });\n printWriteResult(result, `Agent ${resolvedAgentId} paused.`, opts.json);\n } catch (err) { printError(`Failed to pause agent: ${err}`); process.exit(1); }\n}\n\nexport async function agentsResumeCommand(agentId: string, opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n const result = await client.updateAgent(resolvedAgentId, { status: \"active\" });\n printWriteResult(result, `Agent ${resolvedAgentId} resumed.`, opts.json);\n } catch (err) { printError(`Failed to resume agent: ${err}`); process.exit(1); }\n}\n\nexport async function agentsDeleteCommand(agentId: string, opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n const result = await client.deleteAgent(resolvedAgentId);\n printWriteResult(result, `Agent ${resolvedAgentId} deleted.`, opts.json);\n } catch (err) { printError(`Failed to delete agent: ${err}`); process.exit(1); }\n}\n\nfunction resolveTextInput(\n inlineText: string | undefined,\n filePath: string | undefined,\n label: string,\n required = false,\n): string | undefined {\n if (inlineText && filePath) {\n throw new Error(`Pass either --${label} or --${label}-file, not both.`);\n }\n if (filePath) {\n if (process.env.CORP_ALLOW_UNSAFE_FILE_INPUT === \"1\") {\n return readFileSync(filePath, \"utf8\");\n }\n const resolvedFile = realpathSync(resolve(filePath));\n const workingTreeRoot = realpathSync(process.cwd());\n const rel = relative(workingTreeRoot, resolvedFile);\n if (rel === \"\" || (!rel.startsWith(\"..\") && !rel.startsWith(\"/\"))) {\n return readFileSync(resolvedFile, \"utf8\");\n }\n throw new Error(\n `--${label}-file must stay inside the current working directory unless CORP_ALLOW_UNSAFE_FILE_INPUT=1 is set.`,\n );\n }\n if (inlineText) {\n return inlineText;\n }\n if (required) {\n throw new Error(`Provide --${label} or --${label}-file.`);\n }\n return undefined;\n}\n\nexport async function agentsMessageCommand(\n agentId: string,\n opts: { body?: string; bodyFile?: string; json?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const body = resolveTextInput(opts.body, opts.bodyFile, \"body\", true);\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n const result = await client.sendAgentMessage(resolvedAgentId, body!);\n printWriteResult(result, `Message sent. Execution: ${result.execution_id ?? \"OK\"}`, opts.json);\n } catch (err) { printError(`Failed to send message: ${err}`); process.exit(1); }\n}\n\nexport async function agentsExecutionsCommand(agentId: string, _opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n // No list-executions endpoint exists yet; individual executions can be\n // queried via GET /v1/agents/{agent_id}/executions/{execution_id}.\n printError(\n `Listing executions is not yet supported.\\n` +\n ` To inspect a specific run, use the execution ID returned by \"agents message\":\\n` +\n ` GET /v1/agents/${resolvedAgentId}/executions/<execution-id>`,\n );\n process.exit(1);\n}\n\n\nexport async function agentsSkillCommand(agentId: string, opts: {\n name: string;\n description: string;\n instructions?: string;\n instructionsFile?: string;\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const instructions = resolveTextInput(\n opts.instructions,\n opts.instructionsFile,\n \"instructions\",\n );\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n const result = await client.addAgentSkill(resolvedAgentId, {\n name: opts.name,\n description: opts.description,\n parameters: instructions ? { instructions } : {},\n });\n printWriteResult(result, `Skill '${opts.name}' added to agent ${resolvedAgentId}.`, opts.json);\n } catch (err) { printError(`Failed to add skill: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printReferenceSummary, printWorkItemsTable, printError, printJson, printWriteResult } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport chalk from \"chalk\";\n\nexport async function workItemsListCommand(opts: { entityId?: string; json?: boolean; status?: string; category?: string }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const params: Record<string, string> = {};\n if (opts.status) params.status = opts.status;\n if (opts.category) params.category = opts.category;\n const items = await client.listWorkItems(eid, Object.keys(params).length > 0 ? params : undefined);\n await resolver.stabilizeRecords(\"work_item\", items, eid);\n if (opts.json) printJson(items);\n else if (items.length === 0) console.log(\"No work items found.\");\n else printWorkItemsTable(items);\n } catch (err) { printError(`Failed to fetch work items: ${err}`); process.exit(1); }\n}\n\nexport async function workItemsShowCommand(workItemId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedWorkItemId = await resolver.resolveWorkItem(eid, workItemId);\n const w = await client.getWorkItem(eid, resolvedWorkItemId);\n await resolver.stabilizeRecord(\"work_item\", w, eid);\n if (opts.json) { printJson(w); return; }\n console.log(chalk.cyan(\"─\".repeat(40)));\n console.log(chalk.cyan.bold(\" Work Item Detail\"));\n console.log(chalk.cyan(\"─\".repeat(40)));\n console.log(` ${chalk.bold(\"Title:\")} ${w.title ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Category:\")} ${w.category ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Status:\")} ${w.effective_status ?? w.status ?? \"N/A\"}`);\n printReferenceSummary(\"work_item\", w, { showReuseHint: true });\n if (w.description) console.log(` ${chalk.bold(\"Description:\")} ${w.description}`);\n if (w.deadline) console.log(` ${chalk.bold(\"Deadline:\")} ${w.deadline}`);\n if (w.asap) console.log(` ${chalk.bold(\"Priority:\")} ${chalk.red.bold(\"ASAP\")}`);\n if (w.claimed_by) console.log(` ${chalk.bold(\"Claimed by:\")} ${w.claimed_by}`);\n if (w.claimed_at) console.log(` ${chalk.bold(\"Claimed at:\")} ${w.claimed_at}`);\n if (w.claim_ttl_seconds) console.log(` ${chalk.bold(\"Claim TTL:\")} ${w.claim_ttl_seconds}s`);\n if (w.completed_by) console.log(` ${chalk.bold(\"Completed by:\")} ${w.completed_by}`);\n if (w.completed_at) console.log(` ${chalk.bold(\"Completed at:\")} ${w.completed_at}`);\n if (w.result) console.log(` ${chalk.bold(\"Result:\")} ${w.result}`);\n if (w.created_by) console.log(` ${chalk.bold(\"Created by:\")} ${w.created_by}`);\n console.log(` ${chalk.bold(\"Created at:\")} ${w.created_at ?? \"N/A\"}`);\n console.log(chalk.cyan(\"─\".repeat(40)));\n } catch (err) { printError(`Failed to fetch work item: ${err}`); process.exit(1); }\n}\n\nexport async function workItemsCreateCommand(opts: {\n entityId?: string; title: string; category?: string;\n description?: string; deadline?: string; asap?: boolean; createdBy?: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n if (!opts.category) {\n printError(\"Missing required option: --category <category>\");\n process.exit(1);\n }\n const data: Record<string, unknown> = { title: opts.title, category: opts.category };\n if (opts.description) data.description = opts.description;\n if (opts.deadline) data.deadline = opts.deadline;\n if (opts.asap) data.asap = true;\n if (opts.createdBy) data.created_by = await resolver.resolveContact(eid, opts.createdBy);\n const result = await client.createWorkItem(eid, data);\n await resolver.stabilizeRecord(\"work_item\", result, eid);\n resolver.rememberFromRecord(\"work_item\", result, eid);\n printWriteResult(\n result,\n `Work item created: ${result.work_item_id ?? result.id ?? \"OK\"}`,\n { jsonOnly: opts.json, referenceKind: \"work_item\", showReuseHint: true },\n );\n } catch (err) { printError(`Failed to create work item: ${err}`); process.exit(1); }\n}\n\nexport async function workItemsClaimCommand(workItemId: string, opts: {\n entityId?: string; claimedBy: string; ttl?: number; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedWorkItemId = await resolver.resolveWorkItem(eid, workItemId);\n const data: Record<string, unknown> = {\n claimed_by: await resolver.resolveContact(eid, opts.claimedBy),\n };\n if (opts.ttl != null) data.ttl_seconds = opts.ttl;\n const result = await client.claimWorkItem(eid, resolvedWorkItemId, data);\n printWriteResult(result, `Work item ${resolvedWorkItemId} claimed by ${opts.claimedBy}.`, opts.json);\n } catch (err) { printError(`Failed to claim work item: ${err}`); process.exit(1); }\n}\n\nexport async function workItemsCompleteCommand(workItemId: string, opts: {\n entityId?: string; completedBy: string; result?: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedWorkItemId = await resolver.resolveWorkItem(eid, workItemId);\n const data: Record<string, unknown> = {\n completed_by: await resolver.resolveContact(eid, opts.completedBy),\n };\n if (opts.result) data.result = opts.result;\n const result = await client.completeWorkItem(eid, resolvedWorkItemId, data);\n printWriteResult(result, `Work item ${resolvedWorkItemId} completed.`, opts.json);\n } catch (err) { printError(`Failed to complete work item: ${err}`); process.exit(1); }\n}\n\nexport async function workItemsReleaseCommand(workItemId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedWorkItemId = await resolver.resolveWorkItem(eid, workItemId);\n const result = await client.releaseWorkItem(eid, resolvedWorkItemId);\n printWriteResult(result, `Work item ${resolvedWorkItemId} claim released.`, opts.json);\n } catch (err) { printError(`Failed to release work item: ${err}`); process.exit(1); }\n}\n\nexport async function workItemsCancelCommand(workItemId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedWorkItemId = await resolver.resolveWorkItem(eid, workItemId);\n const result = await client.cancelWorkItem(eid, resolvedWorkItemId);\n printWriteResult(result, `Work item ${resolvedWorkItemId} cancelled.`, opts.json);\n } catch (err) { printError(`Failed to cancel work item: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printBillingPanel, printError, printSuccess, printJson } from \"../output.js\";\nimport type { ApiRecord } from \"../types.js\";\n\nfunction makeClient() {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n return new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n}\n\nfunction enrichBillingStatus(status: ApiRecord): ApiRecord {\n if (typeof status.status_explanation === \"string\" && status.status_explanation.trim()) {\n return status;\n }\n\n const plan = String(status.plan ?? status.tier ?? \"\").trim();\n const subStatus = String(status.status ?? \"\").trim();\n if (subStatus !== \"pending_checkout\") {\n return status;\n }\n\n const statusExplanation = plan\n ? `Checkout for the ${plan} plan has started, but billing will not become active until Stripe checkout is completed.`\n : \"Checkout has started, but billing will not become active until Stripe checkout is completed.\";\n\n return { ...status, status_explanation: statusExplanation };\n}\n\nexport async function billingCommand(opts: { json?: boolean }): Promise<void> {\n const client = makeClient();\n try {\n const [status, plans] = await Promise.all([client.getBillingStatus(), client.getBillingPlans()]);\n const enrichedStatus = enrichBillingStatus(status);\n if (opts.json) printJson({ status: enrichedStatus, plans });\n else printBillingPanel(enrichedStatus, plans);\n } catch (err) { printError(`Failed to fetch billing info: ${err}`); process.exit(1); }\n}\n\nexport async function billingPortalCommand(): Promise<void> {\n const client = makeClient();\n try {\n const result = await client.createBillingPortal();\n const url = result.portal_url as string;\n if (!url) { printError(\"No portal URL returned. Ensure you have an active subscription.\"); process.exit(1); }\n printSuccess(\"Stripe Customer Portal URL:\");\n console.log(url);\n } catch (err) { printError(`Failed to create portal session: ${err}`); process.exit(1); }\n}\n\nexport async function billingUpgradeCommand(opts: { plan: string }): Promise<void> {\n const client = makeClient();\n try {\n const result = await client.createBillingCheckout(opts.plan);\n const url = result.checkout_url as string;\n if (!url) { printError(\"No checkout URL returned.\"); process.exit(1); }\n printSuccess(`Stripe Checkout URL for ${opts.plan}:`);\n console.log(url);\n } catch (err) { printError(`Failed to create checkout session: ${err}`); process.exit(1); }\n}\n","import { input, select, confirm, number } from \"@inquirer/prompts\";\nimport chalk from \"chalk\";\nimport Table from \"cli-table3\";\nimport { readFileSync, realpathSync } from \"node:fs\";\nimport { relative, resolve } from \"node:path\";\nimport { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printDryRun, printError, printJson, printReferenceSummary, printSuccess } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport type { ApiRecord } from \"../types.js\";\nimport { EntityType, OfficerTitle } from \"@thecorporation/corp-tools\";\n\n// ── Types ──────────────────────────────────────────────────────\n\ninterface FounderInfo {\n name: string;\n email: string;\n role: string;\n address?: { street: string; street2?: string; city: string; state: string; zip: string };\n officer_title?: string;\n is_incorporator?: boolean;\n shares_purchased?: number;\n ownership_pct?: number;\n vesting?: { total_months: number; cliff_months: number; acceleration?: string };\n ip_description?: string;\n}\n\ninterface FormOptions {\n type?: string;\n name?: string;\n jurisdiction?: string;\n member?: string[];\n memberJson?: string[];\n membersFile?: string;\n fiscalYearEnd?: string;\n sCorp?: boolean;\n transferRestrictions?: boolean;\n rofr?: boolean;\n address?: string;\n json?: boolean;\n dryRun?: boolean;\n}\n\n// ── Helpers ────────────────────────────────────────────────────\n\nfunction isCorp(entityType: string): boolean {\n return entityType === \"c_corp\" || entityType === \"s_corp\" || entityType === \"corporation\";\n}\n\nfunction sectionHeader(title: string): void {\n console.log();\n console.log(chalk.blue(\"─\".repeat(50)));\n console.log(chalk.blue.bold(` ${title}`));\n console.log(chalk.blue(\"─\".repeat(50)));\n}\n\nfunction officerTitleLabel(title: string): string {\n switch (title) {\n case \"ceo\":\n return \"CEO\";\n case \"cfo\":\n return \"CFO\";\n case \"cto\":\n return \"CTO\";\n case \"coo\":\n return \"COO\";\n case \"vp\":\n return \"VP\";\n default:\n return title.charAt(0).toUpperCase() + title.slice(1);\n }\n}\n\nfunction parseBoolean(value: unknown): boolean | undefined {\n if (typeof value === \"boolean\") return value;\n if (typeof value !== \"string\") return undefined;\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n return undefined;\n}\n\nfunction parseAddressValue(raw: unknown): FounderInfo[\"address\"] {\n if (!raw) return undefined;\n if (typeof raw === \"string\") {\n const parts = raw.split(\"|\").map((part) => part.trim());\n if (parts.length === 4) {\n return { street: parts[0], city: parts[1], state: parts[2], zip: parts[3] };\n }\n throw new Error(`Invalid founder address: ${raw}. Expected street|city|state|zip.`);\n }\n if (typeof raw === \"object\" && raw !== null) {\n const value = raw as Record<string, unknown>;\n if (\n typeof value.street === \"string\" &&\n typeof value.city === \"string\" &&\n typeof value.state === \"string\" &&\n typeof value.zip === \"string\"\n ) {\n return {\n street: value.street,\n street2: typeof value.street2 === \"string\" ? value.street2 : undefined,\n city: value.city,\n state: value.state,\n zip: value.zip,\n };\n }\n }\n throw new Error(\"Founder address must be an object or street|city|state|zip string.\");\n}\n\nfunction normalizeFounderInfo(input: Record<string, unknown>): FounderInfo {\n const name = typeof input.name === \"string\" ? input.name.trim() : \"\";\n const email = typeof input.email === \"string\" ? input.email.trim() : \"\";\n const role = typeof input.role === \"string\" ? input.role.trim() : \"\";\n if (!name || !email || !role) {\n throw new Error(\"Founder JSON requires non-empty name, email, and role.\");\n }\n\n const founder: FounderInfo = { name, email, role };\n const ownershipPct = input.ownership_pct ?? input.pct;\n if (ownershipPct != null) founder.ownership_pct = Number(ownershipPct);\n const sharesPurchased = input.shares_purchased ?? input.shares;\n if (sharesPurchased != null) founder.shares_purchased = Number(sharesPurchased);\n if (typeof input.officer_title === \"string\") founder.officer_title = input.officer_title;\n const incorporator = parseBoolean(input.is_incorporator ?? input.incorporator);\n if (incorporator !== undefined) founder.is_incorporator = incorporator;\n if (input.address != null) founder.address = parseAddressValue(input.address);\n if (typeof input.ip_description === \"string\") founder.ip_description = input.ip_description;\n if (input.vesting && typeof input.vesting === \"object\") {\n const vesting = input.vesting as Record<string, unknown>;\n if (vesting.total_months != null && vesting.cliff_months != null) {\n founder.vesting = {\n total_months: Number(vesting.total_months),\n cliff_months: Number(vesting.cliff_months),\n acceleration:\n typeof vesting.acceleration === \"string\" ? vesting.acceleration : undefined,\n };\n }\n }\n return founder;\n}\n\nfunction parseLegacyMemberSpec(raw: string): FounderInfo {\n const parts = raw.split(\",\").map((p) => p.trim());\n if (parts.length < 3) {\n throw new Error(\n `Invalid member format: ${raw}. Expected: name,email,role[,pct[,address[,officer_title[,is_incorporator]]]]`,\n );\n }\n const founder: FounderInfo = { name: parts[0], email: parts[1], role: parts[2] };\n if (parts.length >= 4) founder.ownership_pct = parseFloat(parts[3]);\n if (parts.length >= 5 && parts[4]) founder.address = parseAddressValue(parts[4]);\n if (parts.length >= 6 && parts[5]) founder.officer_title = parts[5];\n if (parts.length >= 7) {\n const incorporator = parseBoolean(parts[6]);\n if (incorporator !== undefined) founder.is_incorporator = incorporator;\n }\n return founder;\n}\n\nfunction parseKeyValueMemberSpec(raw: string): FounderInfo {\n const parsed: Record<string, unknown> = {};\n for (const segment of raw.split(\",\")) {\n const [key, ...rest] = segment.split(\"=\");\n if (!key || rest.length === 0) {\n throw new Error(`Invalid member format: ${raw}. Expected key=value pairs.`);\n }\n parsed[key.trim()] = rest.join(\"=\").trim();\n }\n return normalizeFounderInfo(parsed);\n}\n\nfunction readSafeJsonFile(filePath: string, label: string): string {\n if (process.env.CORP_ALLOW_UNSAFE_FILE_INPUT === \"1\") {\n return readFileSync(filePath, \"utf8\");\n }\n const resolvedFile = realpathSync(resolve(filePath));\n const workingTreeRoot = realpathSync(process.cwd());\n const rel = relative(workingTreeRoot, resolvedFile);\n if (rel === \"\" || (!rel.startsWith(\"..\") && !rel.startsWith(\"/\"))) {\n return readFileSync(resolvedFile, \"utf8\");\n }\n throw new Error(\n `--${label} must stay inside the current working directory unless CORP_ALLOW_UNSAFE_FILE_INPUT=1 is set.`,\n );\n}\n\nfunction parseScriptedFounders(opts: FormOptions): FounderInfo[] {\n const founders: FounderInfo[] = [];\n for (const raw of opts.member ?? []) {\n founders.push(raw.includes(\"=\") ? parseKeyValueMemberSpec(raw) : parseLegacyMemberSpec(raw));\n }\n for (const raw of opts.memberJson ?? []) {\n founders.push(normalizeFounderInfo(JSON.parse(raw) as Record<string, unknown>));\n }\n if (opts.membersFile) {\n const parsed = JSON.parse(readSafeJsonFile(opts.membersFile, \"members-file\")) as unknown;\n let entries: unknown[];\n if (Array.isArray(parsed)) {\n entries = parsed;\n } else if (\n typeof parsed === \"object\" &&\n parsed !== null &&\n \"members\" in parsed &&\n Array.isArray((parsed as { members?: unknown }).members)\n ) {\n entries = (parsed as { members: unknown[] }).members;\n } else {\n throw new Error(\"members file must be a JSON array or {\\\"members\\\": [...]}\");\n }\n for (const entry of entries) {\n if (typeof entry !== \"object\" || entry === null || Array.isArray(entry)) {\n throw new Error(\"each founder entry must be a JSON object\");\n }\n founders.push(normalizeFounderInfo(entry as Record<string, unknown>));\n }\n }\n return founders;\n}\n\nasync function promptAddress(): Promise<{ street: string; city: string; state: string; zip: string }> {\n const street = await input({ message: \" Street address\" });\n const city = await input({ message: \" City\" });\n const state = await input({ message: \" State (2-letter)\", default: \"DE\" });\n const zip = await input({ message: \" ZIP code\" });\n return { street, city, state, zip };\n}\n\n// ── Phase 1: Entity Details ────────────────────────────────────\n\nasync function phaseEntityDetails(opts: FormOptions, serverCfg: ApiRecord, scripted: boolean) {\n if (!scripted) sectionHeader(\"Phase 1: Entity Details\");\n\n let entityType = opts.type;\n if (!entityType) {\n if (scripted) { entityType = \"llc\"; }\n else {\n entityType = await select({\n message: \"Entity type\",\n choices: [\n { value: \"llc\", name: \"LLC\" },\n { value: \"c_corp\", name: \"C-Corp\" },\n ],\n });\n }\n }\n\n let name = opts.name;\n if (!name) {\n if (scripted) { printError(\"--name is required in scripted mode\"); process.exit(1); }\n name = await input({ message: \"Legal name\" });\n }\n\n let jurisdiction = opts.jurisdiction;\n if (!jurisdiction) {\n const defaultJ = entityType === \"llc\" ? \"US-WY\" : \"US-DE\";\n if (scripted) { jurisdiction = defaultJ; }\n else { jurisdiction = await input({ message: \"Jurisdiction\", default: defaultJ }); }\n }\n\n let companyAddress: { street: string; city: string; state: string; zip: string } | undefined;\n if (opts.address) {\n const parts = opts.address.split(\",\").map((p) => p.trim());\n if (parts.length === 4) {\n companyAddress = { street: parts[0], city: parts[1], state: parts[2], zip: parts[3] };\n }\n }\n if (!companyAddress && !scripted) {\n const wantAddress = await confirm({ message: \"Add company address?\", default: false });\n if (wantAddress) {\n companyAddress = await promptAddress();\n }\n }\n\n const fiscalYearEnd = opts.fiscalYearEnd ?? \"12-31\";\n\n let sCorpElection = opts.sCorp ?? false;\n if (!scripted && isCorp(entityType) && opts.sCorp === undefined) {\n sCorpElection = await confirm({ message: \"S-Corp election?\", default: false });\n }\n\n return { entityType, name, jurisdiction, companyAddress, fiscalYearEnd, sCorpElection };\n}\n\n// ── Phase 2: People ────────────────────────────────────────────\n\nasync function phasePeople(\n opts: FormOptions,\n entityType: string,\n scripted: boolean,\n): Promise<FounderInfo[]> {\n if (!scripted) sectionHeader(\"Phase 2: Founders & Officers\");\n\n const founders: FounderInfo[] = [];\n\n // CLI-provided members (scripted mode)\n if (scripted) {\n try {\n return parseScriptedFounders(opts);\n } catch (err) {\n printError(String(err));\n process.exit(1);\n }\n }\n\n // Interactive mode\n const founderCount = (await number({ message: \"Number of founders (1-6)\", default: 1 })) ?? 1;\n\n for (let i = 0; i < founderCount; i++) {\n console.log(chalk.dim(`\\n Founder ${i + 1} of ${founderCount}:`));\n const name = await input({ message: ` Name` });\n const email = await input({ message: ` Email` });\n\n let role = \"member\";\n if (isCorp(entityType)) {\n role = await select({\n message: \" Role\",\n choices: [\n { value: \"director\", name: \"Director\" },\n { value: \"officer\", name: \"Officer\" },\n { value: \"member\", name: \"Shareholder only\" },\n ],\n });\n }\n\n const wantAddress = await confirm({ message: \" Add address?\", default: false });\n const address = wantAddress ? await promptAddress() : undefined;\n\n let officerTitle: string | undefined;\n if (isCorp(entityType)) {\n const wantOfficer = role === \"officer\" || await confirm({ message: \" Assign officer title?\", default: i === 0 });\n if (wantOfficer) {\n officerTitle = await select({\n message: \" Officer title\",\n choices: OfficerTitle.map((t) => ({\n value: t,\n name: officerTitleLabel(t),\n })),\n });\n }\n }\n\n let isIncorporator = false;\n if (isCorp(entityType) && i === 0 && founderCount === 1) {\n isIncorporator = true;\n } else if (isCorp(entityType)) {\n isIncorporator = await confirm({ message: \" Designate as sole incorporator?\", default: i === 0 });\n }\n\n founders.push({ name, email, role, address, officer_title: officerTitle, is_incorporator: isIncorporator });\n }\n\n return founders;\n}\n\n// ── Phase 3: Stock & Finalize ──────────────────────────────────\n\nasync function phaseStock(\n opts: FormOptions,\n entityType: string,\n founders: FounderInfo[],\n scripted: boolean,\n): Promise<{ founders: FounderInfo[]; transferRestrictions: boolean; rofr: boolean }> {\n if (!scripted) sectionHeader(\"Phase 3: Equity & Finalize\");\n\n const transferRestrictions = opts.transferRestrictions ?? (\n !scripted && isCorp(entityType)\n ? await confirm({ message: \"Transfer restrictions on shares?\", default: true })\n : isCorp(entityType)\n );\n\n const rofr = opts.rofr ?? (\n !scripted && isCorp(entityType)\n ? await confirm({ message: \"Right of first refusal?\", default: true })\n : isCorp(entityType)\n );\n\n if (!scripted) {\n for (const f of founders) {\n console.log(chalk.dim(`\\n Equity for ${f.name}:`));\n\n if (isCorp(entityType)) {\n const shares = await number({ message: ` Shares to purchase`, default: 0 });\n f.shares_purchased = shares ?? 0;\n if (f.shares_purchased === 0) {\n const pct = await number({ message: ` Ownership % (1-100)`, default: founders.length === 1 ? 100 : 0 });\n f.ownership_pct = pct ?? 0;\n }\n } else {\n const pct = await number({\n message: ` Ownership % (1-100)`,\n default: founders.length === 1 ? 100 : 0,\n });\n f.ownership_pct = pct ?? 0;\n }\n\n if (isCorp(entityType)) {\n const wantVesting = await confirm({ message: \" Add vesting schedule?\", default: false });\n if (wantVesting) {\n const totalMonths = (await number({ message: \" Total vesting months\", default: 48 })) ?? 48;\n const cliffMonths = (await number({ message: \" Cliff months\", default: 12 })) ?? 12;\n const acceleration = await select({\n message: \" Acceleration\",\n choices: [\n { value: \"none\", name: \"None\" },\n { value: \"single_trigger\", name: \"Single trigger\" },\n { value: \"double_trigger\", name: \"Double trigger\" },\n ],\n });\n f.vesting = {\n total_months: totalMonths,\n cliff_months: cliffMonths,\n acceleration: acceleration === \"none\" ? undefined : acceleration,\n };\n }\n }\n\n const wantIp = await confirm({ message: \" Contributing IP?\", default: false });\n if (wantIp) {\n f.ip_description = await input({ message: \" Describe IP being contributed\" });\n }\n }\n }\n\n return { founders, transferRestrictions, rofr };\n}\n\n// ── Summary Table ──────────────────────────────────────────────\n\nfunction printSummary(\n entityType: string,\n name: string,\n jurisdiction: string,\n fiscalYearEnd: string,\n sCorpElection: boolean,\n founders: FounderInfo[],\n transferRestrictions: boolean,\n rofr: boolean,\n): void {\n sectionHeader(\"Formation Summary\");\n\n console.log(` ${chalk.bold(\"Entity:\")} ${name}`);\n console.log(` ${chalk.bold(\"Type:\")} ${entityType}`);\n console.log(` ${chalk.bold(\"Jurisdiction:\")} ${jurisdiction}`);\n console.log(` ${chalk.bold(\"Fiscal Year End:\")} ${fiscalYearEnd}`);\n if (isCorp(entityType)) {\n console.log(` ${chalk.bold(\"S-Corp Election:\")} ${sCorpElection ? \"Yes\" : \"No\"}`);\n console.log(` ${chalk.bold(\"Transfer Restrictions:\")} ${transferRestrictions ? \"Yes\" : \"No\"}`);\n console.log(` ${chalk.bold(\"Right of First Refusal:\")} ${rofr ? \"Yes\" : \"No\"}`);\n }\n\n const table = new Table({\n head: [chalk.dim(\"Name\"), chalk.dim(\"Email\"), chalk.dim(\"Role\"), chalk.dim(\"Equity\"), chalk.dim(\"Officer\")],\n });\n for (const f of founders) {\n const equity = f.shares_purchased\n ? `${f.shares_purchased.toLocaleString()} shares`\n : f.ownership_pct\n ? `${f.ownership_pct}%`\n : \"—\";\n table.push([f.name, f.email, f.role, equity, f.officer_title ?? \"—\"]);\n }\n console.log(table.toString());\n}\n\n// ── Main Command ───────────────────────────────────────────────\n\nexport async function formCommand(opts: FormOptions): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n let serverCfg: ApiRecord = {};\n try { serverCfg = await client.getConfig(); } catch { /* ignore */ }\n\n const scripted = Boolean(\n (opts.member && opts.member.length > 0) ||\n (opts.memberJson && opts.memberJson.length > 0) ||\n opts.membersFile,\n );\n\n // Phase 1: Entity Details\n const { entityType, name, jurisdiction, companyAddress, fiscalYearEnd, sCorpElection } =\n await phaseEntityDetails(opts, serverCfg, scripted);\n\n // Phase 2: People\n const founders = await phasePeople(opts, entityType, scripted);\n\n // Phase 3: Stock & Finalize\n const { transferRestrictions, rofr } = await phaseStock(opts, entityType, founders, scripted);\n\n // Summary & Confirm\n printSummary(entityType, name, jurisdiction, fiscalYearEnd, sCorpElection, founders, transferRestrictions, rofr);\n\n const shouldProceed = scripted\n ? true\n : await confirm({ message: \"Proceed with formation?\", default: true });\n\n if (!shouldProceed) {\n console.log(chalk.yellow(\"Formation cancelled.\"));\n return;\n }\n\n // Build members payload\n const members: ApiRecord[] = founders.map((f) => {\n const m: ApiRecord = {\n name: f.name,\n email: f.email,\n role: f.role,\n investor_type: \"natural_person\",\n };\n if (f.ownership_pct) m.ownership_pct = f.ownership_pct;\n if (f.shares_purchased) m.shares_purchased = f.shares_purchased;\n if (f.address) m.address = f.address;\n if (f.officer_title) m.officer_title = f.officer_title;\n if (f.is_incorporator) m.is_incorporator = true;\n if (f.vesting) m.vesting = f.vesting;\n if (f.ip_description) m.ip_description = f.ip_description;\n return m;\n });\n\n const payload: ApiRecord = {\n entity_type: entityType,\n legal_name: name,\n jurisdiction,\n members,\n workspace_id: cfg.workspace_id,\n fiscal_year_end: fiscalYearEnd,\n s_corp_election: sCorpElection,\n transfer_restrictions: transferRestrictions,\n right_of_first_refusal: rofr,\n };\n if (companyAddress) payload.company_address = companyAddress;\n\n if (opts.dryRun) {\n printDryRun(\"formation.create_with_cap_table\", payload);\n return;\n }\n\n const result = await client.createFormationWithCapTable(payload);\n await resolver.stabilizeRecord(\"entity\", result);\n resolver.rememberFromRecord(\"entity\", result);\n\n if (opts.json) {\n printJson(result);\n return;\n }\n\n // Output results\n printSuccess(`Formation created: ${result.formation_id ?? \"OK\"}`);\n if (result.entity_id) {\n printReferenceSummary(\"entity\", result, { showReuseHint: true });\n }\n if (result.legal_entity_id) console.log(` Legal Entity ID: ${result.legal_entity_id}`);\n if (result.instrument_id) console.log(` Instrument ID: ${result.instrument_id}`);\n\n const docIds = (result.document_ids ?? []) as string[];\n if (docIds.length > 0) {\n console.log(` Documents: ${docIds.length} generated`);\n }\n\n const holders = (result.holders ?? []) as ApiRecord[];\n if (holders.length > 0) {\n console.log();\n const table = new Table({\n head: [chalk.dim(\"Holder\"), chalk.dim(\"Shares\"), chalk.dim(\"Ownership %\")],\n });\n for (const h of holders) {\n const pct = typeof h.ownership_pct === \"number\" ? `${h.ownership_pct.toFixed(1)}%` : \"—\";\n table.push([String(h.name ?? \"?\"), String(h.shares ?? 0), pct]);\n }\n console.log(chalk.bold(\" Cap Table:\"));\n console.log(table.toString());\n }\n\n if (result.next_action) {\n console.log(chalk.yellow(`\\n Next: ${result.next_action}`));\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes(\"exit\")) throw err;\n printError(`Failed to create formation: ${err}`);\n process.exit(1);\n }\n}\n\n// ── Staged Formation Subcommands ─────────────────────────────\n\ninterface FormCreateOptions {\n type: string;\n name: string;\n jurisdiction?: string;\n registeredAgentName?: string;\n registeredAgentAddress?: string;\n formationDate?: string;\n fiscalYearEnd?: string;\n sCorp?: boolean;\n transferRestrictions?: boolean;\n rofr?: boolean;\n companyAddress?: string;\n dryRun?: boolean;\n json?: boolean;\n}\n\nfunction parseCsvAddress(raw?: string): { street: string; city: string; state: string; zip: string } | undefined {\n if (!raw) return undefined;\n const parts = raw.split(\",\").map((p) => p.trim()).filter(Boolean);\n if (parts.length !== 4) {\n throw new Error(`Invalid address format: ${raw}. Expected 'street,city,state,zip'`);\n }\n return { street: parts[0], city: parts[1], state: parts[2], zip: parts[3] };\n}\n\nfunction shouldResolveEntityRefForDryRun(entityRef: string): boolean {\n const trimmed = entityRef.trim().toLowerCase();\n return trimmed === \"_\" || trimmed === \"@last\" || trimmed.startsWith(\"@last:\");\n}\n\nasync function resolveEntityRefForFormCommand(\n resolver: ReferenceResolver,\n entityRef: string,\n dryRun?: boolean,\n): Promise<string> {\n if (!dryRun || shouldResolveEntityRefForDryRun(entityRef)) {\n return resolver.resolveEntity(entityRef);\n }\n try {\n return await resolver.resolveEntity(entityRef);\n } catch (err) {\n if (String(err).includes(\"fetch failed\")) {\n return entityRef;\n }\n throw err;\n }\n}\n\nexport async function formCreateCommand(opts: FormCreateOptions): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n const entityType = opts.type === \"corporation\" ? \"c_corp\" : opts.type;\n const payload: ApiRecord = {\n entity_type: entityType,\n legal_name: opts.name,\n };\n if (opts.jurisdiction) payload.jurisdiction = opts.jurisdiction;\n if (opts.registeredAgentName) payload.registered_agent_name = opts.registeredAgentName;\n if (opts.registeredAgentAddress) payload.registered_agent_address = opts.registeredAgentAddress;\n if (opts.formationDate) payload.formation_date = opts.formationDate;\n if (opts.fiscalYearEnd) payload.fiscal_year_end = opts.fiscalYearEnd;\n if (opts.sCorp !== undefined) payload.s_corp_election = opts.sCorp;\n if (opts.transferRestrictions !== undefined) payload.transfer_restrictions = opts.transferRestrictions;\n if (opts.rofr !== undefined) payload.right_of_first_refusal = opts.rofr;\n const companyAddress = parseCsvAddress(opts.companyAddress);\n if (companyAddress) payload.company_address = companyAddress;\n\n if (opts.dryRun) {\n printDryRun(\"formation.create_pending\", payload);\n return;\n }\n\n const result = await client.createPendingEntity(payload);\n await resolver.stabilizeRecord(\"entity\", result);\n resolver.rememberFromRecord(\"entity\", result);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Pending entity created: ${result.entity_id}`);\n printReferenceSummary(\"entity\", result, { showReuseHint: true });\n console.log(` Name: ${result.legal_name}`);\n console.log(` Type: ${result.entity_type}`);\n console.log(` Jurisdiction: ${result.jurisdiction}`);\n console.log(` Status: ${result.formation_status}`);\n console.log(chalk.yellow(`\\n Next: corp form add-founder @last:entity --name \"...\" --email \"...\" --role member --pct 50`));\n } catch (err) {\n printError(`Failed to create pending entity: ${err}`);\n process.exit(1);\n }\n}\n\ninterface FormAddFounderOptions {\n name: string;\n email: string;\n role: string;\n pct: string;\n officerTitle?: string;\n incorporator?: boolean;\n address?: string;\n dryRun?: boolean;\n json?: boolean;\n}\n\ninterface FormFinalizeOptions {\n authorizedShares?: string;\n parValue?: string;\n boardSize?: string;\n principalName?: string;\n registeredAgentName?: string;\n registeredAgentAddress?: string;\n formationDate?: string;\n fiscalYearEnd?: string;\n sCorp?: boolean;\n transferRestrictions?: boolean;\n rofr?: boolean;\n companyAddress?: string;\n incorporatorName?: string;\n incorporatorAddress?: string;\n dryRun?: boolean;\n json?: boolean;\n}\n\nexport async function formAddFounderCommand(entityId: string, opts: FormAddFounderOptions): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n const resolvedEntityId = await resolveEntityRefForFormCommand(resolver, entityId, opts.dryRun);\n const payload: ApiRecord = {\n name: opts.name,\n email: opts.email,\n role: opts.role,\n ownership_pct: parseFloat(opts.pct),\n };\n if (opts.officerTitle) payload.officer_title = opts.officerTitle.toLowerCase();\n if (opts.incorporator) payload.is_incorporator = true;\n const address = parseCsvAddress(opts.address);\n if (address) payload.address = address;\n\n if (opts.dryRun) {\n printDryRun(\"formation.add_founder\", { entity_id: resolvedEntityId, ...payload });\n return;\n }\n\n const result = await client.addFounder(resolvedEntityId, payload);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Founder added (${result.member_count} total)`);\n const members = (result.members ?? []) as ApiRecord[];\n for (const m of members) {\n const pct = typeof m.ownership_pct === \"number\" ? ` (${m.ownership_pct}%)` : \"\";\n console.log(` - ${m.name} <${m.email ?? \"no email\"}> [${m.role ?? \"member\"}]${pct}`);\n }\n console.log(chalk.yellow(`\\n Next: add more founders or run: corp form finalize @last:entity`));\n } catch (err) {\n printError(`Failed to add founder: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function formFinalizeCommand(entityId: string, opts: FormFinalizeOptions): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n const resolvedEntityId = await resolveEntityRefForFormCommand(resolver, entityId, opts.dryRun);\n const payload: ApiRecord = {};\n if (opts.authorizedShares) {\n const authorizedShares = parseInt(opts.authorizedShares, 10);\n if (!Number.isFinite(authorizedShares)) {\n throw new Error(`Invalid authorized shares: ${opts.authorizedShares}`);\n }\n payload.authorized_shares = authorizedShares;\n }\n if (opts.parValue) payload.par_value = opts.parValue;\n if (opts.boardSize) {\n const boardSize = parseInt(opts.boardSize, 10);\n if (!Number.isFinite(boardSize) || boardSize <= 0) {\n throw new Error(`Invalid board size: ${opts.boardSize}`);\n }\n payload.board_size = boardSize;\n }\n if (opts.principalName) payload.principal_name = opts.principalName;\n if (opts.registeredAgentName) payload.registered_agent_name = opts.registeredAgentName;\n if (opts.registeredAgentAddress) payload.registered_agent_address = opts.registeredAgentAddress;\n if (opts.formationDate) payload.formation_date = opts.formationDate;\n if (opts.fiscalYearEnd) payload.fiscal_year_end = opts.fiscalYearEnd;\n if (opts.sCorp !== undefined) payload.s_corp_election = opts.sCorp;\n if (opts.transferRestrictions !== undefined) payload.transfer_restrictions = opts.transferRestrictions;\n if (opts.rofr !== undefined) payload.right_of_first_refusal = opts.rofr;\n const companyAddress = parseCsvAddress(opts.companyAddress);\n if (companyAddress) payload.company_address = companyAddress;\n if (opts.incorporatorName) payload.incorporator_name = opts.incorporatorName;\n if (opts.incorporatorAddress) payload.incorporator_address = opts.incorporatorAddress;\n\n if (opts.dryRun) {\n printDryRun(\"formation.finalize\", { entity_id: resolvedEntityId, ...payload });\n return;\n }\n\n const result = await client.finalizeFormation(resolvedEntityId, payload);\n await resolver.stabilizeRecord(\"entity\", result);\n resolver.rememberFromRecord(\"entity\", result);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Formation finalized: ${result.entity_id}`);\n printReferenceSummary(\"entity\", result, { showReuseHint: true });\n if (result.legal_entity_id) console.log(` Legal Entity ID: ${result.legal_entity_id}`);\n if (result.instrument_id) console.log(` Instrument ID: ${result.instrument_id}`);\n\n const docIds = (result.document_ids ?? []) as string[];\n if (docIds.length > 0) {\n console.log(` Documents: ${docIds.length} generated`);\n }\n\n const holders = (result.holders ?? []) as ApiRecord[];\n if (holders.length > 0) {\n console.log();\n const table = new Table({\n head: [chalk.dim(\"Holder\"), chalk.dim(\"Shares\"), chalk.dim(\"Ownership %\")],\n });\n for (const h of holders) {\n const pct = typeof h.ownership_pct === \"number\" ? `${h.ownership_pct.toFixed(1)}%` : \"—\";\n table.push([String(h.name ?? \"?\"), String(h.shares ?? 0), pct]);\n }\n console.log(chalk.bold(\" Cap Table:\"));\n console.log(table.toString());\n }\n\n if (result.next_action) {\n console.log(chalk.yellow(`\\n Next: ${result.next_action}`));\n }\n } catch (err) {\n printError(`Failed to finalize formation: ${err}`);\n process.exit(1);\n }\n}\n","import { requireConfig, maskKey } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson } from \"../output.js\";\nimport chalk from \"chalk\";\nimport Table from \"cli-table3\";\n\nexport async function apiKeysCommand(opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n try {\n const keys = await client.listApiKeys();\n if (opts.json) {\n printJson(keys.map((k: any) => ({\n ...k,\n ...(k.key != null ? { key: maskKey(String(k.key)) } : {}),\n ...(k.api_key != null ? { api_key: maskKey(String(k.api_key)) } : {}),\n })));\n return;\n }\n if (keys.length === 0) { console.log(\"No API keys found.\"); return; }\n console.log(`\\n${chalk.bold(\"API Keys\")}`);\n const table = new Table({\n head: [chalk.dim(\"ID\"), chalk.dim(\"Name\"), chalk.dim(\"Key\"), chalk.dim(\"Created\")],\n });\n for (const k of keys) {\n table.push([\n String(k.key_id ?? k.id ?? k.api_key_id ?? \"\").slice(0, 12),\n String(k.name ?? \"\"),\n maskKey(String(k.key ?? k.api_key ?? \"\")),\n String(k.created_at ?? \"\"),\n ]);\n }\n console.log(table.toString());\n } catch (err) { printError(`Failed to fetch API keys: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printSuccess, printJson } from \"../output.js\";\nimport { withSpinner } from \"../spinner.js\";\n\nexport async function demoCommand(opts: { name: string }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n try {\n const result = await withSpinner(\"Loading\", () => client.seedDemo(opts.name));\n printSuccess(`Demo seeded: ${result.entity_id ?? \"OK\"}`);\n printJson(result);\n } catch (err) { printError(`Failed to seed demo: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson } from \"../output.js\";\nimport chalk from \"chalk\";\n\ninterface FeedbackOptions {\n category?: string;\n email?: string;\n json?: boolean;\n}\n\nconst MAX_FEEDBACK_LENGTH = 10_000;\n\nexport async function feedbackCommand(message: string, opts: FeedbackOptions): Promise<void> {\n if (!message || message.trim().length === 0) {\n printError(\"Feedback message cannot be empty\");\n process.exit(1);\n }\n if (message.length > MAX_FEEDBACK_LENGTH) {\n printError(`Feedback message must be at most ${MAX_FEEDBACK_LENGTH} characters (got ${message.length})`);\n process.exit(1);\n }\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n try {\n const result = await client.submitFeedback(message, opts.category, opts.email);\n if (opts.json) {\n printJson(result);\n return;\n }\n console.log(`\\n${chalk.green(\"✓\")} Feedback submitted (${chalk.dim(result.feedback_id)})`);\n } catch (err: any) {\n printError(\"Failed to submit feedback\", err);\n process.exit(1);\n }\n}\n","import { readFileSync, writeFileSync, existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { randomBytes } from \"node:crypto\";\nimport type { ChildProcess } from \"node:child_process\";\n\ninterface ServeOptions {\n port: string;\n dataDir: string;\n}\n\nconst ENV_TEMPLATE = `# Corporation API server configuration\n# Generated by: corp serve\n\n# Required — secret for signing JWTs\nJWT_SECRET={{JWT_SECRET}}\n\n# Required — Fernet key for encrypting secrets at rest (base64url, 32 bytes)\nSECRETS_MASTER_KEY={{SECRETS_MASTER_KEY}}\n\n# Required — bearer token for internal worker-to-server auth\nINTERNAL_WORKER_TOKEN={{INTERNAL_WORKER_TOKEN}}\n\n# Server port (default: 8000)\n# PORT=8000\n\n# Data directory for git repos (default: ./data/repos)\n# DATA_DIR=./data/repos\n\n# Redis URL for agent job queue (optional)\n# REDIS_URL=redis://localhost:6379/0\n\n# LLM proxy upstream (default: https://openrouter.ai/api/v1)\n# LLM_UPSTREAM_URL=https://openrouter.ai/api/v1\n\n# PEM-encoded Ed25519 key for signing git commits (optional)\n# COMMIT_SIGNING_KEY=\n\n# Max agent queue depth (default: 1000)\n# MAX_QUEUE_DEPTH=1000\n`;\n\nfunction generateFernetKey(): string {\n // Fernet key = url-safe base64 of 32 random bytes\n return randomBytes(32).toString(\"base64url\") + \"=\";\n}\n\nfunction generateSecret(length = 32): string {\n return randomBytes(length).toString(\"hex\");\n}\n\nfunction loadEnvFile(path: string): void {\n if (!existsSync(path)) return;\n\n const content = readFileSync(path, \"utf-8\");\n for (const line of content.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(\"#\")) continue;\n\n const eqIdx = trimmed.indexOf(\"=\");\n if (eqIdx === -1) continue;\n\n const key = trimmed.slice(0, eqIdx).trim();\n const value = trimmed.slice(eqIdx + 1).trim().replace(/^[\"']|[\"']$/g, \"\");\n\n // Don't override vars already set in the environment\n if (!process.env[key]) {\n process.env[key] = value;\n }\n }\n}\n\nfunction ensureEnvFile(envPath: string): void {\n if (existsSync(envPath)) return;\n\n console.log(\"No .env file found. Generating one with dev defaults...\\n\");\n\n const content = ENV_TEMPLATE\n .replace(\"{{JWT_SECRET}}\", generateSecret())\n .replace(\"{{SECRETS_MASTER_KEY}}\", generateFernetKey())\n .replace(\"{{INTERNAL_WORKER_TOKEN}}\", generateSecret());\n\n writeFileSync(envPath, content, \"utf-8\");\n console.log(` Created ${envPath}\\n`);\n}\n\nexport async function serveCommand(opts: ServeOptions): Promise<void> {\n let server: { getBinaryPath: () => string | null; isAvailable: () => boolean; startServer: (options: Record<string, unknown>) => ChildProcess };\n try {\n server = await import(\"@thecorporation/server\");\n } catch {\n console.error(\n \"Error: @thecorporation/server is not installed.\\n\\n\" +\n \"Install it with:\\n\" +\n \" npm install @thecorporation/server\\n\\n\" +\n \"Or run the Rust binary directly:\\n\" +\n \" cd services/api-rs && cargo run\"\n );\n process.exit(1);\n }\n\n if (!server.isAvailable()) {\n console.error(\n \"Error: No server binary available for this platform.\\n\\n\" +\n \"Pre-built binaries are available for:\\n\" +\n \" - linux-x64, linux-arm64\\n\" +\n \" - darwin-x64, darwin-arm64\\n\" +\n \" - win32-x64\\n\\n\" +\n \"You can build from source:\\n\" +\n \" cd services/api-rs && cargo build --release\"\n );\n process.exit(1);\n }\n\n const port = parseInt(opts.port, 10);\n if (isNaN(port) || port > 65535) {\n console.error(`Error: Invalid port \"${opts.port}\"`);\n process.exit(1);\n }\n\n // Load .env file, generating one if it doesn't exist\n const envPath = resolve(process.cwd(), \".env\");\n ensureEnvFile(envPath);\n loadEnvFile(envPath);\n\n const localUrl = `http://localhost:${port}`;\n console.log(`Starting server on port ${port}...`);\n console.log(`Data directory: ${opts.dataDir}`);\n console.log(`CLI API URL remains unchanged.`);\n console.log(` Use CORP_API_URL=${localUrl} for commands against this local server.\\n`);\n\n const child = server.startServer({\n port,\n dataDir: opts.dataDir,\n });\n\n const shutdown = () => {\n console.log(\"\\nShutting down server...\");\n child.kill(\"SIGTERM\");\n };\n\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n\n child.on(\"exit\", (code) => {\n process.exit(code ?? 0);\n });\n}\n","import { Command, Option } from \"commander\";\nimport { createRequire } from \"node:module\";\nimport { inheritOption } from \"./command-options.js\";\n\nconst require = createRequire(import.meta.url);\nconst pkg = require(\"../package.json\");\nconst TAX_DOCUMENT_TYPE_CHOICES = [\n \"1120\",\n \"1120s\",\n \"1065\",\n \"franchise_tax\",\n \"annual_report\",\n \"83b\",\n \"form_1120\",\n \"form_1120s\",\n \"form_1065\",\n \"1099_nec\",\n \"form_1099_nec\",\n \"k1\",\n \"form_k1\",\n \"941\",\n \"form_941\",\n \"w2\",\n \"form_w2\",\n] as const;\n\nconst program = new Command();\nprogram\n .name(\"corp\")\n .description(\"corp — Corporate governance from the terminal\")\n .version(pkg.version);\n\n// --- setup ---\nprogram\n .command(\"setup\")\n .description(\"Interactive setup wizard\")\n .action(async () => {\n const { setupCommand } = await import(\"./commands/setup.js\");\n await setupCommand();\n });\n\n// --- status ---\nprogram\n .command(\"status\")\n .description(\"Workspace summary\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { statusCommand } = await import(\"./commands/status.js\");\n await statusCommand(opts);\n });\n\nprogram\n .command(\"context\")\n .alias(\"whoami\")\n .description(\"Show the active workspace, user, and entity context\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { contextCommand } = await import(\"./commands/context.js\");\n await contextCommand(opts);\n });\n\nprogram\n .command(\"schema\")\n .description(\"Dump the CLI command catalog as JSON\")\n .option(\"--compact\", \"Emit compact JSON\")\n .action(async (opts) => {\n const { schemaCommand } = await import(\"./commands/schema.js\");\n schemaCommand(program, opts);\n });\n\n// --- config ---\nconst configCmd = program.command(\"config\").description(\"Manage configuration\");\nconfigCmd\n .command(\"set <key> <value>\")\n .description(\"Set a config value (dot-path)\")\n .option(\"--force\", \"Allow updating a security-sensitive config key\")\n .action(async (key: string, value: string, opts: { force?: boolean }) => {\n const { configSetCommand } = await import(\"./commands/config.js\");\n await configSetCommand(key, value, opts);\n });\nconfigCmd\n .command(\"get <key>\")\n .description(\"Get a config value (dot-path)\")\n .action(async (key: string) => {\n const { configGetCommand } = await import(\"./commands/config.js\");\n configGetCommand(key);\n });\nconfigCmd\n .command(\"list\")\n .description(\"List all config (API keys masked)\")\n .action(async () => {\n const { configListCommand } = await import(\"./commands/config.js\");\n configListCommand();\n });\n\nprogram\n .command(\"resolve <kind> <ref>\")\n .description(\"Resolve a human-friendly reference to a canonical ID\")\n .option(\"--entity-id <ref>\", \"Entity reference for entity-scoped resources\")\n .option(\"--body-id <ref>\", \"Governance body reference for body-scoped resources\")\n .option(\"--meeting-id <ref>\", \"Meeting reference for meeting-scoped resources\")\n .action(async (kind: string, ref: string, opts) => {\n const { resolveCommand } = await import(\"./commands/resolve.js\");\n await resolveCommand(kind, ref, opts);\n });\n\nprogram\n .command(\"find <kind> <query>\")\n .description(\"List matching references for a resource kind\")\n .option(\"--entity-id <ref>\", \"Entity reference for entity-scoped resources\")\n .option(\"--body-id <ref>\", \"Governance body reference for body-scoped resources\")\n .option(\"--meeting-id <ref>\", \"Meeting reference for meeting-scoped resources\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (kind: string, query: string, opts) => {\n const { findCommand } = await import(\"./commands/find.js\");\n await findCommand(kind, query, opts);\n });\n\n// --- obligations ---\nprogram\n .command(\"obligations\")\n .description(\"List obligations with urgency tiers\")\n .option(\"--tier <tier>\", \"Filter by urgency tier\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { obligationsCommand } = await import(\"./commands/obligations.js\");\n await obligationsCommand(opts);\n });\n\n// --- digest ---\nprogram\n .command(\"digest\")\n .description(\"View or trigger daily digests\")\n .option(\"--trigger\", \"Trigger digest now\")\n .option(\"--key <key>\", \"Get specific digest by key\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { digestCommand } = await import(\"./commands/digest.js\");\n await digestCommand(opts);\n });\n\n// --- link ---\nprogram\n .command(\"link\")\n .description(\"Link workspace to an external provider\")\n .requiredOption(\"--external-id <id>\", \"External ID to link\")\n .requiredOption(\"--provider <provider>\", \"Provider name (e.g. stripe, github)\")\n .action(async (opts) => {\n const { linkCommand } = await import(\"./commands/link.js\");\n await linkCommand(opts);\n });\n\n// --- claim ---\nprogram\n .command(\"claim <code>\")\n .description(\"Redeem a claim code to join a workspace\")\n .action(async (code: string) => {\n const { claimCommand } = await import(\"./commands/claim.js\");\n await claimCommand(code);\n });\n\n// --- chat ---\nprogram\n .command(\"chat\")\n .description(\"Interactive LLM chat session\")\n .action(async () => {\n const { chatCommand } = await import(\"./chat.js\");\n await chatCommand();\n });\n\n// --- entities ---\nconst entitiesCmd = program\n .command(\"entities\")\n .description(\"List entities, show detail, convert, or dissolve\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { entitiesCommand } = await import(\"./commands/entities.js\");\n await entitiesCommand(opts);\n });\nentitiesCmd\n .command(\"show <entity-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Show entity detail\")\n .action(async (entityId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { entitiesShowCommand } = await import(\"./commands/entities.js\");\n await entitiesShowCommand(entityId, {\n ...opts,\n json: inheritOption(opts.json, parent.json),\n });\n });\nentitiesCmd\n .command(\"convert <entity-ref>\")\n .requiredOption(\"--to <type>\", \"Target entity type (llc, c_corp)\")\n .option(\"--jurisdiction <jurisdiction>\", \"New jurisdiction\")\n .description(\"Convert entity to a different type\")\n .action(async (entityId: string, opts) => {\n const { entitiesConvertCommand } = await import(\"./commands/entities.js\");\n await entitiesConvertCommand(entityId, opts);\n });\nentitiesCmd\n .command(\"dissolve <entity-ref>\")\n .requiredOption(\"--reason <reason>\", \"Dissolution reason\")\n .option(\"--effective-date <date>\", \"Effective date (ISO 8601)\")\n .description(\"Dissolve an entity\")\n .action(async (entityId: string, opts) => {\n const { entitiesDissolveCommand } = await import(\"./commands/entities.js\");\n await entitiesDissolveCommand(entityId, opts);\n });\n\n// --- contacts ---\nconst contactsCmd = program\n .command(\"contacts\")\n .description(\"Contact management\")\n .option(\"--entity-id <ref>\", \"Entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { contactsListCommand } = await import(\"./commands/contacts.js\");\n await contactsListCommand(opts);\n });\ncontactsCmd\n .command(\"show <contact-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Show contact detail/profile\")\n .action(async (contactId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { contactsShowCommand } = await import(\"./commands/contacts.js\");\n await contactsShowCommand(contactId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncontactsCmd\n .command(\"add\")\n .requiredOption(\"--name <name>\", \"Contact name\")\n .requiredOption(\"--email <email>\", \"Contact email\")\n .option(\"--type <type>\", \"Contact type (individual, organization)\", \"individual\")\n .option(\"--category <category>\", \"Category (employee, contractor, board_member, investor, law_firm, valuation_firm, accounting_firm, officer, founder, member, other)\")\n .option(\"--cap-table-access <level>\", \"Cap table access (none, summary, detailed)\")\n .option(\"--address <address>\", \"Mailing address\")\n .option(\"--mailing-address <address>\", \"Alias for --address\")\n .option(\"--phone <phone>\", \"Phone number\")\n .option(\"--notes <notes>\", \"Notes\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Add a new contact\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { contactsAddCommand } = await import(\"./commands/contacts.js\");\n await contactsAddCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncontactsCmd\n .command(\"edit <contact-ref>\")\n .option(\"--name <name>\", \"Contact name\")\n .option(\"--email <email>\", \"Contact email\")\n .option(\"--category <category>\", \"Contact category\")\n .option(\"--cap-table-access <level>\", \"Cap table access (none, summary, detailed)\")\n .option(\"--address <address>\", \"Mailing address\")\n .option(\"--mailing-address <address>\", \"Alias for --address\")\n .option(\"--phone <phone>\", \"Phone number\")\n .option(\"--notes <notes>\", \"Notes\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Edit an existing contact\")\n .action(async (contactId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { contactsEditCommand } = await import(\"./commands/contacts.js\");\n await contactsEditCommand(contactId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- cap-table ---\nconst capTableCmd = program\n .command(\"cap-table\")\n .description(\"Cap table, equity grants, SAFEs, transfers, and valuations\")\n .option(\"--entity-id <ref>\", \"Entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { capTableCommand } = await import(\"./commands/cap-table.js\");\n await capTableCommand(opts);\n });\ncapTableCmd.command(\"safes\").description(\"SAFE notes\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { safesCommand } = await import(\"./commands/cap-table.js\");\n await safesCommand(parent);\n});\ncapTableCmd.command(\"transfers\").description(\"Share transfers\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { transfersCommand } = await import(\"./commands/cap-table.js\");\n await transfersCommand(parent);\n});\ncapTableCmd.command(\"instruments\").description(\"Cap table instruments\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { instrumentsCommand } = await import(\"./commands/cap-table.js\");\n await instrumentsCommand(parent);\n});\ncapTableCmd.command(\"share-classes\").description(\"Share classes\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { shareClassesCommand } = await import(\"./commands/cap-table.js\");\n await shareClassesCommand(parent);\n});\ncapTableCmd.command(\"rounds\").description(\"Staged equity rounds\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { roundsCommand } = await import(\"./commands/cap-table.js\");\n await roundsCommand(parent);\n});\ncapTableCmd.command(\"valuations\").description(\"Valuations history\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { valuationsCommand } = await import(\"./commands/cap-table.js\");\n await valuationsCommand(parent);\n});\ncapTableCmd.command(\"409a\").description(\"Current 409A valuation\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { fourOhNineACommand } = await import(\"./commands/cap-table.js\");\n await fourOhNineACommand(parent);\n});\ncapTableCmd\n .command(\"create-instrument\")\n .requiredOption(\"--kind <kind>\", \"Instrument kind (common_equity, preferred_equity, membership_unit, option_grant, safe)\")\n .requiredOption(\"--symbol <symbol>\", \"Instrument symbol\")\n .option(\"--issuer-legal-entity-id <ref>\", \"Issuer legal entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--authorized-units <n>\", \"Authorized units\", parseInt)\n .option(\"--issue-price-cents <n>\", \"Issue price in cents\", parseInt)\n .option(\"--terms-json <json>\", \"JSON object of instrument terms\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the instrument\")\n .description(\"Create a cap table instrument\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { createInstrumentCommand } = await import(\"./commands/cap-table.js\");\n await createInstrumentCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"issue-equity\")\n .requiredOption(\"--grant-type <type>\", \"Grant type (common, preferred, membership_unit, stock_option, iso, nso, rsa)\")\n .requiredOption(\"--shares <n>\", \"Number of shares\", parseInt)\n .requiredOption(\"--recipient <name>\", \"Recipient name\")\n .option(\"--email <email>\", \"Recipient email (auto-creates contact if needed)\")\n .option(\"--instrument-id <ref>\", \"Instrument reference (ID, short ID, symbol, or @last)\")\n .option(\"--meeting-id <ref>\", \"Board meeting reference required when a board approval already exists or is being recorded\")\n .option(\"--resolution-id <ref>\", \"Board resolution reference required when issuing under a board-governed entity\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the round\")\n .description(\"Issue an equity grant (creates a round, adds security, and issues it)\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { issueEquityCommand } = await import(\"./commands/cap-table.js\");\n await issueEquityCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"issue-safe\")\n .requiredOption(\"--investor <name>\", \"Investor name\")\n .requiredOption(\"--amount <n>\", \"Principal amount in cents\", parseInt)\n .option(\"--safe-type <type>\", \"SAFE type\", \"post_money\")\n .requiredOption(\"--valuation-cap <n>\", \"Valuation cap in cents\", parseInt)\n .option(\"--meeting-id <ref>\", \"Board meeting reference required when issuing under a board-governed entity\")\n .option(\"--resolution-id <ref>\", \"Board resolution reference required when issuing under a board-governed entity\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the round\")\n .description(\"Issue a SAFE note\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { issueSafeCommand } = await import(\"./commands/cap-table.js\");\n await issueSafeCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"transfer\")\n .requiredOption(\"--from <ref>\", \"Source contact reference (from_contact_id)\")\n .requiredOption(\"--to <ref>\", \"Destination contact reference (to_contact_id)\")\n .requiredOption(\"--shares <n>\", \"Number of shares to transfer\", parseInt)\n .requiredOption(\"--share-class-id <ref>\", \"Share class reference\")\n .requiredOption(\"--governing-doc-type <type>\", \"Governing doc type (bylaws, operating_agreement, shareholder_agreement, other)\")\n .requiredOption(\"--transferee-rights <rights>\", \"Transferee rights (full_member, economic_only, limited)\")\n .option(\"--prepare-intent-id <id>\", \"Prepare intent ID (auto-created if omitted)\")\n .option(\"--type <type>\", \"Transfer type (gift, trust_transfer, secondary_sale, estate, other)\", \"secondary_sale\")\n .option(\"--price-per-share-cents <n>\", \"Price per share in cents\", parseInt)\n .option(\"--relationship <rel>\", \"Relationship to holder\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the workflow\")\n .description(\"Create a share transfer workflow\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { transferSharesCommand } = await import(\"./commands/cap-table.js\");\n await transferSharesCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"distribute\")\n .requiredOption(\"--amount <n>\", \"Total distribution amount in cents\", parseInt)\n .option(\"--type <type>\", \"Distribution type (dividend, return, liquidation)\", \"dividend\")\n .requiredOption(\"--description <desc>\", \"Distribution description\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without calculating the distribution\")\n .description(\"Calculate a distribution\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { distributeCommand } = await import(\"./commands/cap-table.js\");\n await distributeCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\ncapTableCmd\n .command(\"start-round\")\n .requiredOption(\"--name <name>\", \"Round name\")\n .requiredOption(\"--issuer-legal-entity-id <ref>\", \"Issuer legal entity reference\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the round\")\n .description(\"Start a staged equity round\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { startRoundCommand } = await import(\"./commands/cap-table.js\");\n await startRoundCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"add-security\")\n .requiredOption(\"--round-id <ref>\", \"Round reference\")\n .requiredOption(\"--instrument-id <ref>\", \"Instrument reference\")\n .requiredOption(\"--quantity <n>\", \"Number of shares/units\", parseInt)\n .requiredOption(\"--recipient-name <name>\", \"Recipient display name\")\n .option(\"--holder-id <ref>\", \"Existing holder reference\")\n .option(\"--email <email>\", \"Recipient email (to find or create holder)\")\n .option(\"--principal-cents <n>\", \"Principal amount in cents\", parseInt)\n .option(\"--grant-type <type>\", \"Grant type\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without adding the security\")\n .description(\"Add a security to a staged equity round\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { addSecurityCommand } = await import(\"./commands/cap-table.js\");\n await addSecurityCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"issue-round\")\n .option(\"--meeting-id <ref>\", \"Board meeting reference required when issuing under a board-governed entity\")\n .option(\"--resolution-id <ref>\", \"Board resolution reference required when issuing under a board-governed entity\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without issuing the round\")\n .requiredOption(\"--round-id <ref>\", \"Round reference\")\n .description(\"Issue all securities and close a staged round\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { issueRoundCommand } = await import(\"./commands/cap-table.js\");\n await issueRoundCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"create-valuation\")\n .requiredOption(\"--type <type>\", \"Valuation type (four_oh_nine_a, fair_market_value, etc.)\")\n .requiredOption(\"--date <date>\", \"Effective date (ISO 8601)\")\n .requiredOption(\"--methodology <method>\", \"Methodology (income, market, asset, backsolve, hybrid)\")\n .option(\"--fmv <cents>\", \"FMV per share in cents\", parseInt)\n .option(\"--enterprise-value <cents>\", \"Enterprise value in cents\", parseInt)\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the valuation\")\n .description(\"Create a valuation\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { createValuationCommand } = await import(\"./commands/cap-table.js\");\n await createValuationCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"submit-valuation <valuation-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without submitting the valuation\")\n .description(\"Submit a valuation for board approval\")\n .action(async (valuationId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { submitValuationCommand } = await import(\"./commands/cap-table.js\");\n await submitValuationCommand({\n ...opts,\n valuationId,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"approve-valuation <valuation-ref>\")\n .option(\"--resolution-id <ref>\", \"Resolution reference from the board vote\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without approving the valuation\")\n .description(\"Approve a valuation\")\n .action(async (valuationId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { approveValuationCommand } = await import(\"./commands/cap-table.js\");\n await approveValuationCommand({\n ...opts,\n valuationId,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- finance ---\nconst financeCmd = program\n .command(\"finance\")\n .description(\"Invoicing, payroll, payments, banking\")\n .option(\"--entity-id <ref>\", \"Entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--json\", \"Output as JSON\");\nfinanceCmd\n .command(\"invoices\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List invoices\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeInvoicesCommand } = await import(\"./commands/finance.js\");\n await financeInvoicesCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"invoice\")\n .requiredOption(\"--customer <name>\", \"Customer name\")\n .requiredOption(\"--amount <n>\", \"Amount in cents\", parseInt)\n .requiredOption(\"--due-date <date>\", \"Due date (ISO 8601)\")\n .option(\"--description <desc>\", \"Description\", \"Services rendered\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Create an invoice\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeInvoiceCommand } = await import(\"./commands/finance.js\");\n await financeInvoiceCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"payroll-runs\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List payroll runs\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financePayrollRunsCommand } = await import(\"./commands/finance.js\");\n await financePayrollRunsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"payroll\")\n .requiredOption(\"--period-start <date>\", \"Pay period start\")\n .requiredOption(\"--period-end <date>\", \"Pay period end\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Run payroll\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financePayrollCommand } = await import(\"./commands/finance.js\");\n await financePayrollCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"payments\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List payments\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financePaymentsCommand } = await import(\"./commands/finance.js\");\n await financePaymentsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"pay\")\n .requiredOption(\"--amount <n>\", \"Amount in cents\", parseInt)\n .requiredOption(\"--recipient <name>\", \"Recipient name\")\n .option(\"--method <method>\", \"Payment method\", \"ach\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Submit a payment\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financePayCommand } = await import(\"./commands/finance.js\");\n await financePayCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"bank-accounts\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List bank accounts\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeBankAccountsCommand } = await import(\"./commands/finance.js\");\n await financeBankAccountsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"open-account\")\n .option(\"--institution <name>\", \"Banking institution\", \"Mercury\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Open a business bank account\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeOpenAccountCommand } = await import(\"./commands/finance.js\");\n await financeOpenAccountCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"classifications\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List contractor classifications\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeClassificationsCommand } = await import(\"./commands/finance.js\");\n await financeClassificationsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"classify-contractor\")\n .requiredOption(\"--name <name>\", \"Contractor name\")\n .requiredOption(\"--state <code>\", \"US state code\")\n .requiredOption(\"--hours <n>\", \"Hours per week\", parseInt)\n .option(\"--exclusive\", \"Exclusive client\", false)\n .requiredOption(\"--duration <n>\", \"Duration in months\", parseInt)\n .option(\"--provides-tools\", \"Company provides tools\", false)\n .option(\"--json\", \"Output as JSON\")\n .description(\"Analyze contractor classification risk\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeClassifyContractorCommand } = await import(\"./commands/finance.js\");\n await financeClassifyContractorCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"reconciliations\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List reconciliations\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeReconciliationsCommand } = await import(\"./commands/finance.js\");\n await financeReconciliationsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"reconcile\")\n .requiredOption(\"--start-date <date>\", \"Period start\")\n .requiredOption(\"--end-date <date>\", \"Period end\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Reconcile ledger\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeReconcileCommand } = await import(\"./commands/finance.js\");\n await financeReconcileCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"distributions\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List distributions\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeDistributionsCommand } = await import(\"./commands/finance.js\");\n await financeDistributionsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- governance ---\nconst governanceCmd = program\n .command(\"governance\")\n .description(\"Governance bodies, seats, meetings, resolutions\")\n .option(\"--entity-id <ref>\", \"Entity reference (overrides active entity)\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { governanceListCommand } = await import(\"./commands/governance.js\");\n await governanceListCommand(opts);\n });\ngovernanceCmd\n .command(\"create-body\")\n .requiredOption(\"--name <name>\", \"Body name (e.g. 'Board of Directors')\")\n .requiredOption(\"--body-type <type>\", \"Body type (board_of_directors, llc_member_vote)\")\n .option(\"--quorum <rule>\", \"Quorum rule (majority, supermajority, unanimous)\", \"majority\")\n .option(\"--voting <method>\", \"Voting method (per_capita, per_unit)\", \"per_capita\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the governance body\")\n .description(\"Create a governance body\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceCreateBodyCommand } = await import(\"./commands/governance.js\");\n await governanceCreateBodyCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"add-seat <body-ref>\")\n .requiredOption(\"--holder <contact-ref>\", \"Contact reference for the seat holder\")\n .option(\"--role <role>\", \"Seat role (chair, member, officer, observer)\", \"member\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without adding the seat\")\n .description(\"Add a seat to a governance body\")\n .action(async (bodyId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceAddSeatCommand } = await import(\"./commands/governance.js\");\n await governanceAddSeatCommand(bodyId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"seats <body-ref>\")\n .description(\"Seats for a governance body\")\n .action(async (bodyId: string, _opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceSeatsCommand } = await import(\"./commands/governance.js\");\n await governanceSeatsCommand(bodyId, parent);\n });\ngovernanceCmd\n .command(\"meetings <body-ref>\")\n .description(\"Meetings for a governance body\")\n .action(async (bodyId: string, _opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceMeetingsCommand } = await import(\"./commands/governance.js\");\n await governanceMeetingsCommand(bodyId, parent);\n });\ngovernanceCmd\n .command(\"resolutions <meeting-ref>\")\n .description(\"Resolutions for a meeting\")\n .action(async (meetingId: string, _opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceResolutionsCommand } = await import(\"./commands/governance.js\");\n await governanceResolutionsCommand(meetingId, parent);\n });\ngovernanceCmd\n .command(\"convene\")\n .requiredOption(\"--body <ref>\", \"Governance body reference\")\n .requiredOption(\"--type <type>\", \"Meeting type (board_meeting, shareholder_meeting, member_meeting, written_consent)\")\n .requiredOption(\"--title <title>\", \"Meeting title\")\n .option(\"--date <date>\", \"Meeting date (ISO 8601)\")\n .option(\"--agenda <item>\", \"Agenda item (repeatable)\", (v: string, a: string[]) => [...a, v], [] as string[])\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without scheduling the meeting\")\n .description(\"Convene a governance meeting\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceConveneCommand } = await import(\"./commands/governance.js\");\n await governanceConveneCommand({\n ...opts,\n meetingType: opts.type,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"open <meeting-ref>\")\n .requiredOption(\"--present-seat <ref>\", \"Seat reference present at the meeting (repeatable)\", (v: string, a?: string[]) => [...(a ?? []), v])\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without opening the meeting\")\n .description(\"Open a scheduled meeting for voting\")\n .action(async (meetingId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceOpenMeetingCommand } = await import(\"./commands/governance.js\");\n await governanceOpenMeetingCommand(meetingId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"vote <meeting-ref> <item-ref>\")\n .requiredOption(\"--voter <ref>\", \"Voter contact reference\")\n .addOption(new Option(\"--vote <value>\", \"Vote (for, against, abstain, recusal)\").choices([\"for\", \"against\", \"abstain\", \"recusal\"]).makeOptionMandatory())\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without casting the vote\")\n .description(\"Cast a vote on an agenda item\")\n .action(async (meetingId: string, itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceVoteCommand } = await import(\"./commands/governance.js\");\n await governanceVoteCommand(meetingId, itemId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"notice <meeting-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without sending notices\")\n .description(\"Send meeting notice\")\n .action(async (meetingId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { sendNoticeCommand } = await import(\"./commands/governance.js\");\n await sendNoticeCommand(meetingId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"adjourn <meeting-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without adjourning the meeting\")\n .description(\"Adjourn a meeting\")\n .action(async (meetingId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { adjournMeetingCommand } = await import(\"./commands/governance.js\");\n await adjournMeetingCommand(meetingId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"reopen <meeting-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without re-opening the meeting\")\n .description(\"Re-open an adjourned meeting\")\n .action(async (meetingId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { reopenMeetingCommand } = await import(\"./commands/governance.js\");\n await reopenMeetingCommand(meetingId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"cancel <meeting-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without cancelling the meeting\")\n .description(\"Cancel a meeting\")\n .action(async (meetingId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { cancelMeetingCommand } = await import(\"./commands/governance.js\");\n await cancelMeetingCommand(meetingId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"agenda-items <meeting-ref>\")\n .description(\"List agenda items for a meeting\")\n .action(async (meetingId: string, _opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { listAgendaItemsCommand } = await import(\"./commands/governance.js\");\n await listAgendaItemsCommand(meetingId, { entityId: parent.entityId, json: parent.json });\n });\ngovernanceCmd\n .command(\"finalize-item <meeting-ref> <item-ref>\")\n .requiredOption(\"--status <status>\", \"Status: voted, discussed, tabled, withdrawn\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without finalizing the item\")\n .description(\"Finalize an agenda item\")\n .action(async (meetingId: string, itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { finalizeAgendaItemCommand } = await import(\"./commands/governance.js\");\n await finalizeAgendaItemCommand(meetingId, itemId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"resolve <meeting-ref> <item-ref>\")\n .requiredOption(\"--text <resolution_text>\", \"Resolution text\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without computing the resolution\")\n .description(\"Compute a resolution for an agenda item\")\n .action(async (meetingId: string, itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { computeResolutionCommand } = await import(\"./commands/governance.js\");\n await computeResolutionCommand(meetingId, itemId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"written-consent\")\n .requiredOption(\"--body <ref>\", \"Governance body reference\")\n .requiredOption(\"--title <title>\", \"Title\")\n .requiredOption(\"--description <desc>\", \"Description\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the written consent\")\n .description(\"Create a written consent action\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { writtenConsentCommand } = await import(\"./commands/governance.js\");\n await writtenConsentCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- documents ---\nconst documentsCmd = program\n .command(\"documents\")\n .description(\"Documents and signing\")\n .option(\"--entity-id <ref>\", \"Entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { documentsListCommand } = await import(\"./commands/documents.js\");\n await documentsListCommand(opts);\n });\ndocumentsCmd\n .command(\"signing-link <doc-ref>\")\n .option(\"--entity-id <ref>\", \"Entity reference (overrides active entity and parent command)\")\n .description(\"Get a signing link for a document\")\n .action(async (docId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { documentsSigningLinkCommand } = await import(\"./commands/documents.js\");\n await documentsSigningLinkCommand(docId, { entityId: opts.entityId ?? parent.entityId });\n });\ndocumentsCmd\n .command(\"generate\")\n .requiredOption(\"--template <type>\", \"Template type (consulting_agreement, employment_offer, contractor_agreement, nda, custom)\")\n .requiredOption(\"--counterparty <name>\", \"Counterparty name\")\n .option(\"--effective-date <date>\", \"Effective date (ISO 8601, defaults to today)\")\n .option(\"--base-salary <amount>\", \"Employment offer base salary (for employment_offer)\")\n .option(\"--param <key=value>\", \"Additional template parameter (repeatable)\", (value: string, values: string[]) => [...values, value], [] as string[])\n .option(\"--json\", \"Output as JSON\")\n .description(\"Generate a contract from a template\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { documentsGenerateCommand } = await import(\"./commands/documents.js\");\n await documentsGenerateCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ndocumentsCmd\n .command(\"preview-pdf\")\n .requiredOption(\"--definition-id <id>\", \"AST document definition ID (e.g. 'bylaws')\")\n .option(\"--document-id <id>\", \"Deprecated alias for --definition-id\")\n .description(\"Validate and print the authenticated PDF preview URL for a governance document\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { documentsPreviewPdfCommand } = await import(\"./commands/documents.js\");\n await documentsPreviewPdfCommand({\n ...opts,\n documentId: opts.definitionId ?? opts.documentId,\n entityId: parent.entityId,\n });\n });\n\n// --- tax ---\nconst taxCmd = program\n .command(\"tax\")\n .description(\"Tax filings and deadline tracking\")\n .option(\"--entity-id <ref>\", \"Entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--json\", \"Output as JSON\");\ntaxCmd\n .command(\"filings\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List tax filings\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { taxFilingsCommand } = await import(\"./commands/tax.js\");\n await taxFilingsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ntaxCmd\n .command(\"file\")\n .addOption(new Option(\"--type <type>\", `Document type (${TAX_DOCUMENT_TYPE_CHOICES.join(\", \")})`).choices([...TAX_DOCUMENT_TYPE_CHOICES]).makeOptionMandatory())\n .requiredOption(\"--year <year>\", \"Tax year\", parseInt)\n .option(\"--json\", \"Output as JSON\")\n .description(\"File a tax document\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { taxFileCommand } = await import(\"./commands/tax.js\");\n await taxFileCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ntaxCmd\n .command(\"deadlines\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List tracked deadlines\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { taxDeadlinesCommand } = await import(\"./commands/tax.js\");\n await taxDeadlinesCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ntaxCmd\n .command(\"deadline\")\n .requiredOption(\"--type <type>\", \"Deadline type\")\n .requiredOption(\"--due-date <date>\", \"Due date (ISO 8601)\")\n .requiredOption(\"--description <desc>\", \"Description\")\n .option(\"--recurrence <recurrence>\", \"Recurrence (e.g. annual; 'yearly' is normalized)\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Track a compliance deadline\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { taxDeadlineCommand } = await import(\"./commands/tax.js\");\n await taxDeadlineCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- agents ---\nconst agentsCmd = program\n .command(\"agents\")\n .description(\"Agent management\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { agentsListCommand } = await import(\"./commands/agents.js\");\n await agentsListCommand(opts);\n });\nagentsCmd.command(\"show <agent-ref>\").option(\"--json\", \"Output as JSON\").description(\"Show agent detail\")\n .action(async (agentId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsShowCommand } = await import(\"./commands/agents.js\");\n await agentsShowCommand(agentId, {\n ...opts,\n json: inheritOption(opts.json, parent.json),\n });\n });\nagentsCmd.command(\"create\").requiredOption(\"--name <name>\", \"Agent name\")\n .requiredOption(\"--prompt <prompt>\", \"System prompt\").option(\"--model <model>\", \"Model\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Create a new agent\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsCreateCommand } = await import(\"./commands/agents.js\");\n await agentsCreateCommand({\n ...opts,\n json: inheritOption(opts.json, parent.json),\n });\n });\nagentsCmd.command(\"pause <agent-ref>\").option(\"--json\", \"Output as JSON\").description(\"Pause an agent\")\n .action(async (agentId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsPauseCommand } = await import(\"./commands/agents.js\");\n await agentsPauseCommand(agentId, {\n json: inheritOption(opts.json, parent.json),\n });\n });\nagentsCmd.command(\"resume <agent-ref>\").option(\"--json\", \"Output as JSON\").description(\"Resume a paused agent\")\n .action(async (agentId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsResumeCommand } = await import(\"./commands/agents.js\");\n await agentsResumeCommand(agentId, {\n json: inheritOption(opts.json, parent.json),\n });\n });\nagentsCmd.command(\"delete <agent-ref>\").option(\"--json\", \"Output as JSON\").description(\"Delete an agent\")\n .action(async (agentId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsDeleteCommand } = await import(\"./commands/agents.js\");\n await agentsDeleteCommand(agentId, {\n json: inheritOption(opts.json, parent.json),\n });\n });\nagentsCmd.command(\"message <agent-ref>\").option(\"--body <text>\", \"Message text\")\n .option(\"--body-file <path>\", \"Read the message body from a file\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Send a message to an agent\")\n .action(async (agentId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsMessageCommand } = await import(\"./commands/agents.js\");\n await agentsMessageCommand(agentId, {\n ...opts,\n json: inheritOption(opts.json, parent.json),\n });\n });\nagentsCmd.command(\"skill <agent-ref>\").requiredOption(\"--name <name>\", \"Skill name\")\n .requiredOption(\"--description <desc>\", \"Skill description\").option(\"--instructions <text>\", \"Instructions\")\n .option(\"--instructions-file <path>\", \"Read skill instructions from a file\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Add a skill to an agent\")\n .action(async (agentId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsSkillCommand } = await import(\"./commands/agents.js\");\n await agentsSkillCommand(agentId, {\n ...opts,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- work-items ---\nconst workItemsCmd = program\n .command(\"work-items\")\n .description(\"Long-term work item coordination\")\n .option(\"--entity-id <ref>\", \"Entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--status <status>\", \"Filter by status (open, claimed, completed, cancelled)\")\n .option(\"--category <category>\", \"Filter by category\")\n .action(async (opts) => {\n const { workItemsListCommand } = await import(\"./commands/work-items.js\");\n await workItemsListCommand(opts);\n });\nworkItemsCmd\n .command(\"show <item-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Show work item detail\")\n .action(async (itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { workItemsShowCommand } = await import(\"./commands/work-items.js\");\n await workItemsShowCommand(itemId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nworkItemsCmd\n .command(\"create\")\n .requiredOption(\"--title <title>\", \"Work item title\")\n .option(\"--category <category>\", \"Work item category\")\n .option(\"--description <desc>\", \"Description\")\n .option(\"--deadline <date>\", \"Deadline (YYYY-MM-DD)\")\n .option(\"--asap\", \"Mark as ASAP priority\")\n .option(\"--created-by <name>\", \"Creator identifier\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Create a new work item\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { workItemsCreateCommand } = await import(\"./commands/work-items.js\");\n await workItemsCreateCommand({\n ...opts,\n category: inheritOption(opts.category, parent.category),\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nworkItemsCmd\n .command(\"claim <item-ref>\")\n .option(\"--by <name>\", \"Agent or user claiming the item\")\n .option(\"--claimer <name>\", \"Alias for --by\")\n .option(\"--ttl <seconds>\", \"Auto-release TTL in seconds\", parseInt)\n .option(\"--json\", \"Output as JSON\")\n .description(\"Claim a work item\")\n .action(async (itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { workItemsClaimCommand } = await import(\"./commands/work-items.js\");\n const claimedBy = opts.by ?? opts.claimer;\n if (!claimedBy) {\n cmd.error(\"required option '--by <name>' not specified\");\n return;\n }\n await workItemsClaimCommand(itemId, {\n claimedBy,\n ttl: opts.ttl,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nworkItemsCmd\n .command(\"complete <item-ref>\")\n .option(\"--by <name>\", \"Agent or user completing the item\")\n .option(\"--completed-by <name>\", \"Alias for --by\")\n .option(\"--result <text>\", \"Completion result or notes\")\n .option(\"--notes <text>\", \"Alias for --result\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Mark a work item as completed\")\n .action(async (itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { workItemsCompleteCommand } = await import(\"./commands/work-items.js\");\n const completedBy = opts.by ?? opts.completedBy;\n if (!completedBy) {\n cmd.error(\"required option '--by <name>' not specified\");\n return;\n }\n await workItemsCompleteCommand(itemId, {\n completedBy,\n result: opts.result ?? opts.notes,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nworkItemsCmd\n .command(\"release <item-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Release a claimed work item\")\n .action(async (itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { workItemsReleaseCommand } = await import(\"./commands/work-items.js\");\n await workItemsReleaseCommand(itemId, {\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nworkItemsCmd\n .command(\"cancel <item-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Cancel a work item\")\n .action(async (itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { workItemsCancelCommand } = await import(\"./commands/work-items.js\");\n await workItemsCancelCommand(itemId, {\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- billing ---\nconst billingCmd = program\n .command(\"billing\")\n .description(\"Billing status, plans, and subscription management\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { billingCommand } = await import(\"./commands/billing.js\");\n await billingCommand(opts);\n });\nbillingCmd.command(\"portal\").description(\"Open Stripe Customer Portal\")\n .action(async () => {\n const { billingPortalCommand } = await import(\"./commands/billing.js\");\n await billingPortalCommand();\n });\nbillingCmd.command(\"upgrade\").option(\"--plan <plan>\", \"Plan ID to upgrade to (free, pro, enterprise)\", \"pro\")\n .description(\"Open Stripe Checkout to upgrade your plan\")\n .action(async (opts) => {\n const { billingUpgradeCommand } = await import(\"./commands/billing.js\");\n await billingUpgradeCommand(opts);\n });\n\n// --- approvals ---\n// The approval system is integrated into governance meetings (vote on agenda items)\n// and execution intents. There is no standalone /v1/approvals endpoint.\nprogram\n .command(\"approvals\")\n .description(\"Approvals are managed through governance meetings and execution intents\")\n .action(async () => {\n const { printError } = await import(\"./output.js\");\n printError(\n \"Approvals are managed through governance meetings.\\n\" +\n \" Use: corp governance convene ... to schedule a board meeting\\n\" +\n \" Use: corp governance vote <meeting-ref> <item-ref> ... to cast votes\"\n );\n });\n\n// --- form ---\nconst formCmd = program\n .command(\"form\")\n .description(\"Form a new entity with founders and cap table\")\n .option(\"--entity-type <type>\", \"Entity type (llc, c_corp)\")\n .option(\"--legal-name <name>\", \"Legal name\")\n .option(\"--jurisdiction <jurisdiction>\", \"Jurisdiction (e.g. US-DE, US-WY)\")\n .option(\"--member <member>\", \"Founder as 'name,email,role[,pct[,address[,officer_title[,is_incorporator]]]]' with address as street|city|state|zip, or key=value pairs like 'name=...,email=...,role=...,officer_title=cto,is_incorporator=true,address=street|city|state|zip' (repeatable)\", (v: string, a: string[]) => [...a, v], [] as string[])\n .option(\"--member-json <json>\", \"Founder JSON object (repeatable)\", (v: string, a: string[]) => [...a, v], [] as string[])\n .option(\"--members-file <path>\", \"Path to a JSON array of founders or {\\\"members\\\": [...]}\")\n .option(\"--address <address>\", \"Company address as 'street,city,state,zip'\")\n .option(\"--fiscal-year-end <date>\", \"Fiscal year end (MM-DD)\", \"12-31\")\n .option(\"--s-corp\", \"Elect S-Corp status\")\n .option(\"--transfer-restrictions\", \"Enable transfer restrictions\")\n .option(\"--rofr\", \"Enable right of first refusal\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the entity\")\n .action(async (opts) => {\n // Map --entity-type and --legal-name to the internal keys expected by formCommand\n if (opts.entityType && !opts.type) opts.type = opts.entityType;\n if (opts.legalName && !opts.name) opts.name = opts.legalName;\n const { formCommand } = await import(\"./commands/form.js\");\n await formCommand(opts);\n });\nformCmd.command(\"create\")\n .description(\"Create a pending entity (staged flow step 1)\")\n .requiredOption(\"--type <type>\", \"Entity type (llc, c_corp)\")\n .requiredOption(\"--name <name>\", \"Legal name\")\n .option(\"--jurisdiction <jurisdiction>\", \"Jurisdiction (e.g. US-DE, US-WY)\")\n .option(\"--registered-agent-name <name>\", \"Registered agent legal name\")\n .option(\"--registered-agent-address <address>\", \"Registered agent address line\")\n .option(\"--formation-date <date>\", \"Formation date (RFC3339 or YYYY-MM-DD)\")\n .option(\"--fiscal-year-end <date>\", \"Fiscal year end (MM-DD)\")\n .option(\"--s-corp\", \"Elect S-Corp status\")\n .option(\"--transfer-restrictions\", \"Enable transfer restrictions\")\n .option(\"--rofr\", \"Enable right of first refusal\")\n .option(\"--company-address <address>\", \"Company address as 'street,city,state,zip'\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the pending entity\")\n .action(async (opts, cmd) => {\n const { formCreateCommand } = await import(\"./commands/form.js\");\n await formCreateCommand({\n ...opts,\n json: inheritOption(opts.json, cmd.parent!.opts().json),\n dryRun: inheritOption(opts.dryRun, cmd.parent!.opts().dryRun),\n });\n });\nformCmd.command(\"add-founder <entity-ref>\")\n .description(\"Add a founder to a pending entity (staged flow step 2)\")\n .requiredOption(\"--name <name>\", \"Founder name\")\n .requiredOption(\"--email <email>\", \"Founder email\")\n .requiredOption(\"--role <role>\", \"Role: director|officer|manager|member|chair\")\n .requiredOption(\"--pct <pct>\", \"Ownership percentage\")\n .addOption(new Option(\"--officer-title <title>\", \"Officer title (corporations only)\").choices([\"ceo\", \"cfo\", \"cto\", \"coo\", \"secretary\", \"treasurer\", \"president\", \"vp\", \"other\"]))\n .option(\"--incorporator\", \"Mark as sole incorporator (corporations only)\")\n .option(\"--address <address>\", \"Founder address as 'street,city,state,zip'\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without adding the founder\")\n .action(async (entityId: string, opts, cmd) => {\n const { formAddFounderCommand } = await import(\"./commands/form.js\");\n await formAddFounderCommand(entityId, {\n ...opts,\n json: inheritOption(opts.json, cmd.parent!.opts().json),\n dryRun: inheritOption(opts.dryRun, cmd.parent!.opts().dryRun),\n });\n });\nformCmd.command(\"finalize <entity-ref>\")\n .description(\"Finalize formation and generate documents + cap table (staged flow step 3)\")\n .option(\"--authorized-shares <count>\", \"Authorized shares for corporations\")\n .option(\"--par-value <value>\", \"Par value per share, e.g. 0.0001\")\n .option(\"--board-size <count>\", \"Board size for corporations\")\n .option(\"--principal-name <name>\", \"Principal or manager name for LLCs\")\n .option(\"--registered-agent-name <name>\", \"Registered agent legal name\")\n .option(\"--registered-agent-address <address>\", \"Registered agent address line\")\n .option(\"--formation-date <date>\", \"Formation date (RFC3339 or YYYY-MM-DD)\")\n .option(\"--fiscal-year-end <date>\", \"Fiscal year end (MM-DD)\")\n .option(\"--s-corp\", \"Elect S-Corp status\")\n .option(\"--transfer-restrictions\", \"Enable transfer restrictions\")\n .option(\"--rofr\", \"Enable right of first refusal\")\n .option(\"--company-address <address>\", \"Company address as 'street,city,state,zip'\")\n .option(\"--incorporator-name <name>\", \"Incorporator legal name (overrides founder)\")\n .option(\"--incorporator-address <address>\", \"Incorporator mailing address (overrides founder)\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without finalizing formation\")\n .action(async (entityId: string, opts, cmd) => {\n const { formFinalizeCommand } = await import(\"./commands/form.js\");\n await formFinalizeCommand(entityId, {\n ...opts,\n json: inheritOption(opts.json, cmd.parent!.opts().json),\n dryRun: inheritOption(opts.dryRun, cmd.parent!.opts().dryRun),\n });\n });\n\n// --- api-keys ---\nprogram\n .command(\"api-keys\")\n .description(\"List API keys\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { apiKeysCommand } = await import(\"./commands/api-keys.js\");\n await apiKeysCommand(opts);\n });\n\n// --- demo ---\nprogram\n .command(\"demo\")\n .description(\"Seed a fully-populated demo corporation\")\n .requiredOption(\"--name <name>\", \"Corporation name\")\n .action(async (opts) => {\n const { demoCommand } = await import(\"./commands/demo.js\");\n await demoCommand(opts);\n });\n\n// --- feedback ---\nprogram\n .command(\"feedback\")\n .description(\"Submit feedback to TheCorporation\")\n .argument(\"<message>\", \"Feedback message\")\n .option(\"--category <category>\", \"Category (e.g. bug, feature, general)\", \"general\")\n .option(\"--email <email>\", \"Your email address (to receive a copy)\")\n .action(async (message, opts) => {\n const { feedbackCommand } = await import(\"./commands/feedback.js\");\n await feedbackCommand(message, opts);\n });\n\n// --- serve ---\nprogram\n .command(\"serve\")\n .description(\"Start the API server locally\")\n .option(\"--port <port>\", \"Port to listen on\", \"8000\")\n .option(\"--data-dir <path>\", \"Data directory\", \"./data/repos\")\n .action(async (opts) => {\n const { serveCommand } = await import(\"./commands/serve.js\");\n await serveCommand(opts);\n });\n\nawait program.parseAsync(process.argv);\n","export function inheritOption<T>(localValue: T | undefined, parentValue: T | undefined): T | undefined {\n return localValue ?? parentValue;\n}\n"],"mappings":"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","names":["s","holders","chalk","program","init_config","chalk","Table","KINDS","ENTITY_SCOPED_KINDS","join","homedir","chalk","resolve","chalk","chalk","chalk","chalk","chalk","readFileSync","s","chalk","input","confirm","chalk","Table","readFileSync","realpathSync","relative","resolve","chalk","Table","chalk","readFileSync","writeFileSync","existsSync","resolve","require","setupCommand","statusCommand","contextCommand","schemaCommand","configSetCommand","configGetCommand","configListCommand","resolveCommand","findCommand","obligationsCommand","digestCommand","linkCommand","claimCommand","chatCommand","entitiesCommand","entitiesShowCommand","entitiesConvertCommand","entitiesDissolveCommand","contactsListCommand","contactsShowCommand","contactsAddCommand","contactsEditCommand","capTableCommand","safesCommand","transfersCommand","instrumentsCommand","shareClassesCommand","roundsCommand","valuationsCommand","fourOhNineACommand","createInstrumentCommand","issueEquityCommand","issueSafeCommand","transferSharesCommand","distributeCommand","startRoundCommand","addSecurityCommand","issueRoundCommand","createValuationCommand","submitValuationCommand","approveValuationCommand","financeInvoicesCommand","financeInvoiceCommand","financePayrollRunsCommand","financePayrollCommand","financePaymentsCommand","financePayCommand","financeBankAccountsCommand","financeOpenAccountCommand","financeClassificationsCommand","financeClassifyContractorCommand","financeReconciliationsCommand","financeReconcileCommand","financeDistributionsCommand","governanceListCommand","governanceCreateBodyCommand","governanceAddSeatCommand","governanceSeatsCommand","governanceMeetingsCommand","governanceResolutionsCommand","governanceConveneCommand","governanceOpenMeetingCommand","governanceVoteCommand","sendNoticeCommand","adjournMeetingCommand","reopenMeetingCommand","cancelMeetingCommand","listAgendaItemsCommand","finalizeAgendaItemCommand","computeResolutionCommand","writtenConsentCommand","documentsListCommand","documentsSigningLinkCommand","documentsGenerateCommand","documentsPreviewPdfCommand","taxFilingsCommand","taxFileCommand","taxDeadlinesCommand","taxDeadlineCommand","agentsListCommand","agentsShowCommand","agentsCreateCommand","agentsPauseCommand","agentsResumeCommand","agentsDeleteCommand","agentsMessageCommand","agentsSkillCommand","workItemsListCommand","workItemsShowCommand","workItemsCreateCommand","workItemsClaimCommand","workItemsCompleteCommand","workItemsReleaseCommand","workItemsCancelCommand","billingCommand","billingPortalCommand","billingUpgradeCommand","printError","formCommand","formCreateCommand","formAddFounderCommand","formFinalizeCommand","apiKeysCommand","demoCommand","feedbackCommand","serveCommand"]}
|
|
1
|
+
{"version":3,"sources":["../src/config.ts","../src/api-client.ts","../src/references.ts","../src/output.ts","../src/commands/setup.ts","../src/animation.ts","../src/spinner.ts","../src/commands/status.ts","../src/commands/context.ts","../src/commands/schema.ts","../src/commands/config.ts","../src/commands/resolve.ts","../src/commands/find.ts","../src/commands/obligations.ts","../src/commands/digest.ts","../src/commands/link.ts","../src/commands/claim.ts","../src/llm.ts","../src/tools.ts","../src/chat.ts","../src/commands/entities.ts","../src/commands/contacts.ts","../src/commands/cap-table.ts","../src/commands/finance.ts","../src/commands/governance.ts","../src/formation-automation.ts","../src/commands/documents.ts","../src/commands/tax.ts","../src/commands/agents.ts","../src/commands/work-items.ts","../src/commands/billing.ts","../src/commands/approvals.ts","../src/commands/form.ts","../src/commands/api-keys.ts","../src/commands/demo.ts","../src/commands/feedback.ts","../src/commands/serve.ts","../src/index.ts","../src/command-options.ts"],"sourcesContent":["import {\n chmodSync,\n existsSync,\n mkdirSync,\n readFileSync,\n renameSync,\n rmSync,\n statSync,\n writeFileSync,\n} from \"node:fs\";\nimport { homedir } from \"node:os\";\nimport { join } from \"node:path\";\nimport type { CorpConfig } from \"./types.js\";\n\nconst CONFIG_DIR = process.env.CORP_CONFIG_DIR || join(homedir(), \".corp\");\nconst CONFIG_FILE = join(CONFIG_DIR, \"config.json\");\nconst AUTH_FILE = join(CONFIG_DIR, \"auth.json\");\nconst CONFIG_LOCK_DIR = join(CONFIG_DIR, \"config.lock\");\nconst CONFIG_LOCK_TIMEOUT_MS = 5000;\nconst CONFIG_LOCK_RETRY_MS = 25;\nconst CONFIG_STALE_LOCK_MS = 60_000;\nconst MAX_LAST_REFERENCES = 128;\nconst TRUSTED_API_HOST_SUFFIXES = [\"thecorporation.ai\"];\n\nconst CONFIG_WAIT_BUFFER = new SharedArrayBuffer(4);\nconst CONFIG_WAIT_SIGNAL = new Int32Array(CONFIG_WAIT_BUFFER);\n\nconst ALLOWED_CONFIG_KEYS = new Set([\n \"api_url\",\n \"api_key\",\n \"workspace_id\",\n \"hosting_mode\",\n \"llm.provider\",\n \"llm.api_key\",\n \"llm.model\",\n \"llm.base_url\",\n \"user.name\",\n \"user.email\",\n \"active_entity_id\",\n]);\n\nconst SENSITIVE_CONFIG_KEYS = new Set([\"api_url\", \"api_key\", \"workspace_id\"]);\n\ntype CorpAuthConfig = {\n api_url?: string;\n api_key?: string;\n workspace_id?: string;\n llm?: {\n api_key?: string;\n };\n};\n\nconst DEFAULTS: CorpConfig = {\n api_url: process.env.CORP_API_URL || \"https://api.thecorporation.ai\",\n api_key: process.env.CORP_API_KEY || \"\",\n workspace_id: process.env.CORP_WORKSPACE_ID || \"\",\n hosting_mode: \"\",\n llm: {\n provider: \"anthropic\",\n api_key: process.env.CORP_LLM_API_KEY || \"\",\n model: \"claude-sonnet-4-6\",\n base_url: process.env.CORP_LLM_BASE_URL || undefined,\n },\n user: { name: \"\", email: \"\" },\n active_entity_id: \"\",\n};\n\nfunction sleepSync(ms: number): void {\n Atomics.wait(CONFIG_WAIT_SIGNAL, 0, 0, ms);\n}\n\nfunction withConfigLock<T>(fn: () => T): T {\n mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });\n const startedAt = Date.now();\n while (true) {\n try {\n mkdirSync(CONFIG_LOCK_DIR, { mode: 0o700 });\n break;\n } catch (err) {\n if ((err as NodeJS.ErrnoException).code !== \"EEXIST\") {\n throw err;\n }\n try {\n const ageMs = Date.now() - statSync(CONFIG_LOCK_DIR).mtimeMs;\n if (ageMs >= CONFIG_STALE_LOCK_MS) {\n rmSync(CONFIG_LOCK_DIR, { recursive: true, force: true });\n continue;\n }\n } catch {\n // Ignore lock-stat failures and continue waiting.\n }\n if (Date.now() - startedAt >= CONFIG_LOCK_TIMEOUT_MS) {\n throw new Error(\"timed out waiting for the corp config lock\");\n }\n sleepSync(CONFIG_LOCK_RETRY_MS);\n }\n }\n\n try {\n return fn();\n } finally {\n rmSync(CONFIG_LOCK_DIR, { recursive: true, force: true });\n }\n}\n\nfunction ensureSecurePermissions(): void {\n mkdirSync(CONFIG_DIR, { recursive: true, mode: 0o700 });\n try {\n chmodSync(CONFIG_DIR, 0o700);\n } catch {\n // Ignore chmod failures on filesystems without POSIX permission support.\n }\n if (existsSync(CONFIG_FILE)) {\n try {\n chmodSync(CONFIG_FILE, 0o600);\n } catch {\n // Ignore chmod failures on filesystems without POSIX permission support.\n }\n }\n if (existsSync(AUTH_FILE)) {\n try {\n chmodSync(AUTH_FILE, 0o600);\n } catch {\n // Ignore chmod failures on filesystems without POSIX permission support.\n }\n }\n}\n\nfunction isObject(value: unknown): value is Record<string, unknown> {\n return typeof value === \"object\" && value !== null && !Array.isArray(value);\n}\n\nfunction isLoopbackHost(hostname: string): boolean {\n return hostname === \"localhost\" || hostname === \"127.0.0.1\" || hostname === \"::1\";\n}\n\nfunction isTrustedCorpHost(hostname: string): boolean {\n return TRUSTED_API_HOST_SUFFIXES.some(\n (suffix) => hostname === suffix || hostname.endsWith(`.${suffix}`),\n );\n}\n\nfunction allowUnsafeApiUrl(): boolean {\n return process.env.CORP_UNSAFE_API_URL === \"1\";\n}\n\nexport function validateApiUrl(value: string): string {\n let parsed: URL;\n try {\n parsed = new URL(value.trim());\n } catch {\n throw new Error(\"api_url must be a valid absolute URL\");\n }\n\n if (parsed.username || parsed.password) {\n throw new Error(\"api_url must not include embedded credentials\");\n }\n\n const protocol = parsed.protocol.toLowerCase();\n const hostname = parsed.hostname.toLowerCase();\n if (protocol !== \"https:\" && !(protocol === \"http:\" && isLoopbackHost(hostname))) {\n throw new Error(\"api_url must use https, or http only for localhost/loopback development\");\n }\n if (protocol === \"https:\" && !isLoopbackHost(hostname) && !isTrustedCorpHost(hostname) && !allowUnsafeApiUrl()) {\n throw new Error(\n \"api_url must point to a trusted TheCorporation host or localhost; set CORP_UNSAFE_API_URL=1 to allow a custom self-hosted URL\",\n );\n }\n\n parsed.hash = \"\";\n return parsed.toString().replace(/\\/+$/, \"\");\n}\n\nexport function validateLlmBaseUrl(value: string): string {\n let parsed: URL;\n try {\n parsed = new URL(value.trim());\n } catch {\n throw new Error(\"llm.base_url must be a valid absolute URL\");\n }\n\n if (parsed.username || parsed.password) {\n throw new Error(\"llm.base_url must not include embedded credentials\");\n }\n\n const protocol = parsed.protocol.toLowerCase();\n const hostname = parsed.hostname.toLowerCase();\n if (protocol !== \"https:\" && !(protocol === \"http:\" && isLoopbackHost(hostname))) {\n throw new Error(\"llm.base_url must use https, or http only for localhost/loopback development\");\n }\n\n parsed.hash = \"\";\n return parsed.toString().replace(/\\/+$/, \"\");\n}\n\nfunction normalizeString(value: unknown): string | undefined {\n return typeof value === \"string\" ? value : undefined;\n}\n\nfunction normalizeActiveEntityMap(value: unknown): Record<string, string> | undefined {\n if (!isObject(value)) {\n return undefined;\n }\n const entries = Object.entries(value).filter(\n ([workspaceId, entityId]) =>\n typeof workspaceId === \"string\" && typeof entityId === \"string\" && entityId.length > 0,\n );\n if (entries.length === 0) {\n return undefined;\n }\n return Object.fromEntries(entries);\n}\n\nfunction trimReferenceEntries(\n entries: Array<[string, string]>,\n): Array<[string, string]> {\n if (entries.length <= MAX_LAST_REFERENCES) {\n return entries;\n }\n return entries.slice(entries.length - MAX_LAST_REFERENCES);\n}\n\nfunction normalizeReferenceMap(value: unknown): Record<string, string> | undefined {\n if (!isObject(value)) {\n return undefined;\n }\n const entries = Object.entries(value).filter(\n ([key, ref]) => typeof key === \"string\" && typeof ref === \"string\" && ref.trim().length > 0,\n );\n if (entries.length === 0) {\n return undefined;\n }\n return Object.fromEntries(\n trimReferenceEntries(entries.map(([key, ref]) => [key, ref.trim()])),\n );\n}\n\nfunction mergeConfigAndAuth(\n configRaw: unknown,\n authRaw: unknown,\n): Record<string, unknown> {\n const merged: Record<string, unknown> = isObject(configRaw) ? { ...configRaw } : {};\n if (!isObject(authRaw)) {\n return merged;\n }\n for (const key of [\"api_url\", \"api_key\", \"workspace_id\"]) {\n const value = authRaw[key];\n if (typeof value === \"string\") {\n merged[key] = value;\n }\n }\n if (isObject(authRaw.llm)) {\n const llm = isObject(merged.llm) ? { ...merged.llm } : {};\n if (typeof authRaw.llm.api_key === \"string\") {\n llm.api_key = authRaw.llm.api_key;\n }\n merged.llm = llm;\n }\n return merged;\n}\n\nfunction readJsonFile(path: string): unknown {\n if (!existsSync(path)) {\n return {};\n }\n return JSON.parse(readFileSync(path, \"utf-8\")) as unknown;\n}\n\nfunction hasLegacySensitiveConfig(raw: unknown): boolean {\n if (!isObject(raw)) {\n return false;\n }\n if (typeof raw.api_url === \"string\" || typeof raw.api_key === \"string\" || typeof raw.workspace_id === \"string\") {\n return true;\n }\n return isObject(raw.llm) && typeof raw.llm.api_key === \"string\";\n}\n\nfunction normalizeConfig(raw: unknown): CorpConfig {\n const cfg = structuredClone(DEFAULTS) as CorpConfig;\n if (!isObject(raw)) {\n return cfg;\n }\n\n const savedApiUrl = normalizeString(raw.api_url);\n if (savedApiUrl) {\n try {\n cfg.api_url = validateApiUrl(savedApiUrl);\n } catch {\n cfg.api_url = DEFAULTS.api_url;\n }\n }\n cfg.api_key = normalizeString(raw.api_key) ?? cfg.api_key;\n cfg.workspace_id = normalizeString(raw.workspace_id) ?? cfg.workspace_id;\n cfg.hosting_mode = normalizeString(raw.hosting_mode) ?? cfg.hosting_mode;\n cfg.active_entity_id = normalizeString(raw.active_entity_id) ?? cfg.active_entity_id;\n\n if (isObject(raw.llm)) {\n cfg.llm.provider = normalizeString(raw.llm.provider) ?? cfg.llm.provider;\n cfg.llm.api_key = normalizeString(raw.llm.api_key) ?? cfg.llm.api_key;\n cfg.llm.model = normalizeString(raw.llm.model) ?? cfg.llm.model;\n const baseUrl = normalizeString(raw.llm.base_url);\n if (baseUrl && baseUrl.trim()) {\n try {\n cfg.llm.base_url = validateLlmBaseUrl(baseUrl);\n } catch {\n cfg.llm.base_url = undefined;\n }\n }\n }\n\n if (isObject(raw.user)) {\n cfg.user.name = normalizeString(raw.user.name) ?? cfg.user.name;\n cfg.user.email = normalizeString(raw.user.email) ?? cfg.user.email;\n }\n\n const activeEntityIds = normalizeActiveEntityMap(raw.active_entity_ids);\n if (activeEntityIds) {\n cfg.active_entity_ids = activeEntityIds;\n }\n const lastReferences = normalizeReferenceMap(raw.last_references);\n if (lastReferences) {\n cfg.last_references = lastReferences;\n }\n if (cfg.workspace_id && cfg.active_entity_id) {\n cfg.active_entity_ids = {\n ...(cfg.active_entity_ids ?? {}),\n [cfg.workspace_id]: cfg.active_entity_id,\n };\n }\n\n return cfg;\n}\n\nfunction serializeConfig(cfg: CorpConfig): string {\n const normalized = normalizeConfig(cfg);\n const serialized: Record<string, unknown> = {\n hosting_mode: normalized.hosting_mode,\n llm: {\n provider: normalized.llm.provider,\n model: normalized.llm.model,\n ...(normalized.llm.base_url ? { base_url: normalized.llm.base_url } : {}),\n },\n user: {\n name: normalized.user.name,\n email: normalized.user.email,\n },\n active_entity_id: normalized.active_entity_id,\n };\n if (normalized.active_entity_ids && Object.keys(normalized.active_entity_ids).length > 0) {\n serialized.active_entity_ids = normalized.active_entity_ids;\n }\n if (normalized.last_references && Object.keys(normalized.last_references).length > 0) {\n serialized.last_references = normalized.last_references;\n }\n return JSON.stringify(serialized, null, 2) + \"\\n\";\n}\n\nfunction serializeAuth(cfg: CorpConfig): string {\n const normalized = normalizeConfig(cfg);\n const serialized: CorpAuthConfig = {\n api_url: normalized.api_url,\n api_key: normalized.api_key,\n workspace_id: normalized.workspace_id,\n };\n if (normalized.llm.api_key) {\n serialized.llm = { api_key: normalized.llm.api_key };\n }\n return JSON.stringify(serialized, null, 2) + \"\\n\";\n}\n\nfunction requireSupportedConfigKey(dotPath: string): void {\n if (!ALLOWED_CONFIG_KEYS.has(dotPath)) {\n throw new Error(`unsupported config key: ${dotPath}`);\n }\n}\n\nfunction validateSensitiveConfigUpdate(dotPath: string, forceSensitive = false): void {\n if (SENSITIVE_CONFIG_KEYS.has(dotPath) && !forceSensitive) {\n throw new Error(\n `refusing to update security-sensitive key '${dotPath}' without --force; ` +\n \"this key controls authentication or API routing, so explicit confirmation is required\",\n );\n }\n}\n\nfunction setKnownConfigValue(cfg: CorpConfig, dotPath: string, value: string): void {\n switch (dotPath) {\n case \"api_url\":\n cfg.api_url = validateApiUrl(value);\n return;\n case \"api_key\":\n cfg.api_key = value.trim();\n return;\n case \"workspace_id\":\n cfg.workspace_id = value.trim();\n return;\n case \"hosting_mode\":\n cfg.hosting_mode = value.trim();\n return;\n case \"llm.provider\":\n cfg.llm.provider = value.trim();\n return;\n case \"llm.api_key\":\n cfg.llm.api_key = value.trim();\n return;\n case \"llm.model\":\n cfg.llm.model = value.trim();\n return;\n case \"llm.base_url\":\n cfg.llm.base_url = value.trim() ? validateLlmBaseUrl(value) : undefined;\n return;\n case \"user.name\":\n cfg.user.name = value.trim();\n return;\n case \"user.email\":\n cfg.user.email = value.trim();\n return;\n case \"active_entity_id\":\n setActiveEntityId(cfg, value.trim());\n return;\n default:\n throw new Error(`unsupported config key: ${dotPath}`);\n }\n}\n\nfunction readConfigUnlocked(): CorpConfig {\n ensureSecurePermissions();\n const configRaw = readJsonFile(CONFIG_FILE);\n const authRaw = readJsonFile(AUTH_FILE);\n return normalizeConfig(mergeConfigAndAuth(configRaw, authRaw));\n}\n\nfunction writeConfigUnlocked(cfg: CorpConfig): void {\n ensureSecurePermissions();\n const configTempFile = `${CONFIG_FILE}.${process.pid}.tmp`;\n const authTempFile = `${AUTH_FILE}.${process.pid}.tmp`;\n writeFileSync(configTempFile, serializeConfig(cfg), { mode: 0o600 });\n writeFileSync(authTempFile, serializeAuth(cfg), { mode: 0o600 });\n renameSync(configTempFile, CONFIG_FILE);\n renameSync(authTempFile, AUTH_FILE);\n ensureSecurePermissions();\n}\n\nfunction migrateLegacySensitiveConfigIfNeeded(): void {\n withConfigLock(() => {\n ensureSecurePermissions();\n const configRaw = readJsonFile(CONFIG_FILE);\n if (!hasLegacySensitiveConfig(configRaw)) {\n return;\n }\n const authRaw = readJsonFile(AUTH_FILE);\n const migrated = normalizeConfig(mergeConfigAndAuth(configRaw, authRaw));\n writeConfigUnlocked(migrated);\n });\n}\n\nexport function loadConfig(): CorpConfig {\n migrateLegacySensitiveConfigIfNeeded();\n return readConfigUnlocked();\n}\n\nexport function saveConfig(cfg: CorpConfig): void {\n withConfigLock(() => {\n writeConfigUnlocked(cfg);\n });\n}\n\nexport function updateConfig(mutator: (cfg: CorpConfig) => void): CorpConfig {\n return withConfigLock(() => {\n const cfg = readConfigUnlocked();\n mutator(cfg);\n writeConfigUnlocked(cfg);\n return cfg;\n });\n}\n\nexport function getValue(cfg: Record<string, unknown>, dotPath: string): unknown {\n const keys = dotPath.split(\".\");\n let current: unknown = cfg;\n for (const key of keys) {\n if (typeof current === \"object\" && current !== null && key in current) {\n current = (current as Record<string, unknown>)[key];\n } else {\n return undefined;\n }\n }\n return current;\n}\n\nexport function setValue(\n cfg: Record<string, unknown>,\n dotPath: string,\n value: string,\n options: { forceSensitive?: boolean } = {},\n): void {\n requireSupportedConfigKey(dotPath);\n validateSensitiveConfigUpdate(dotPath, options.forceSensitive);\n setKnownConfigValue(cfg as CorpConfig, dotPath, value);\n}\n\nexport function requireConfig(...fields: string[]): CorpConfig {\n const cfg = loadConfig();\n const missing = fields.filter((f) => !getValue(cfg as unknown as Record<string, unknown>, f));\n if (missing.length > 0) {\n console.error(`Missing config: ${missing.join(\", \")}`);\n console.error(\"Run 'corp setup' to configure.\");\n process.exit(1);\n }\n return cfg;\n}\n\nexport function maskKey(value: string): string {\n if (!value || value.length < 8) return \"***\";\n return \"***\" + value.slice(-4);\n}\n\nexport function configForDisplay(cfg: CorpConfig): Record<string, unknown> {\n const display = { ...cfg } as Record<string, unknown>;\n if (display.api_key) display.api_key = maskKey(display.api_key as string);\n delete display.last_references;\n if (typeof display.llm === \"object\" && display.llm !== null) {\n const llm = { ...(display.llm as Record<string, unknown>) };\n if (llm.api_key) llm.api_key = maskKey(llm.api_key as string);\n display.llm = llm;\n }\n return display;\n}\n\nexport function getActiveEntityId(cfg: CorpConfig): string {\n if (cfg.workspace_id && cfg.active_entity_ids?.[cfg.workspace_id]) {\n return cfg.active_entity_ids[cfg.workspace_id];\n }\n return cfg.active_entity_id;\n}\n\nexport function setActiveEntityId(cfg: CorpConfig, entityId: string): void {\n cfg.active_entity_id = entityId;\n if (!cfg.workspace_id) {\n return;\n }\n cfg.active_entity_ids = {\n ...(cfg.active_entity_ids ?? {}),\n [cfg.workspace_id]: entityId,\n };\n}\n\nfunction referenceScopeKey(workspaceId: string, entityId?: string): string {\n if (workspaceId && entityId) {\n return `workspace:${workspaceId}:entity:${entityId}`;\n }\n if (workspaceId) {\n return `workspace:${workspaceId}`;\n }\n return \"global\";\n}\n\nexport function getLastReference(\n cfg: CorpConfig,\n kind: string,\n entityId?: string,\n): string | undefined {\n const normalizedKind = kind.trim().toLowerCase();\n const entityScopedKey = `${referenceScopeKey(cfg.workspace_id, entityId)}:${normalizedKind}`;\n if (entityId) {\n return cfg.last_references?.[entityScopedKey];\n }\n const workspaceScopedKey = `${referenceScopeKey(cfg.workspace_id)}:${normalizedKind}`;\n return cfg.last_references?.[workspaceScopedKey];\n}\n\nexport function setLastReference(\n cfg: CorpConfig,\n kind: string,\n referenceId: string,\n entityId?: string,\n): void {\n const normalizedKind = kind.trim().toLowerCase();\n const scopedKey = `${referenceScopeKey(cfg.workspace_id, entityId)}:${normalizedKind}`;\n const nextEntries = Object.entries({\n ...(cfg.last_references ?? {}),\n [scopedKey]: referenceId.trim(),\n });\n cfg.last_references = Object.fromEntries(trimReferenceEntries(nextEntries));\n}\n\nexport function resolveEntityId(cfg: CorpConfig, explicitId?: string): string {\n const eid = explicitId || getActiveEntityId(cfg);\n if (!eid) {\n console.error(\n \"No entity specified. Use --entity-id or set active_entity_id via 'corp config set active_entity_id <id>'.\"\n );\n process.exit(1);\n }\n return eid;\n}\n","export { CorpAPIClient, SessionExpiredError, provisionWorkspace } from \"@thecorporation/corp-tools\";\n","import {\n getActiveEntityId,\n getLastReference,\n setLastReference,\n updateConfig,\n} from \"./config.js\";\nimport { CorpAPIClient } from \"./api-client.js\";\nimport type { ApiRecord, CorpConfig } from \"./types.js\";\n\nexport type ResourceKind =\n | \"entity\"\n | \"contact\"\n | \"share_transfer\"\n | \"invoice\"\n | \"bank_account\"\n | \"payment\"\n | \"payroll_run\"\n | \"distribution\"\n | \"reconciliation\"\n | \"tax_filing\"\n | \"deadline\"\n | \"classification\"\n | \"body\"\n | \"meeting\"\n | \"seat\"\n | \"agenda_item\"\n | \"resolution\"\n | \"document\"\n | \"work_item\"\n | \"agent\"\n | \"valuation\"\n | \"safe_note\"\n | \"instrument\"\n | \"share_class\"\n | \"round\";\n\nexport type MatchRecord = {\n id: string;\n label: string;\n tokens: Set<string>;\n raw: ApiRecord;\n};\n\nexport type ReferenceMatch = {\n kind: ResourceKind;\n id: string;\n short_id: string;\n label: string;\n alias?: string;\n raw: ApiRecord;\n};\n\nconst RESOURCE_KINDS = [\n \"entity\",\n \"contact\",\n \"share_transfer\",\n \"invoice\",\n \"bank_account\",\n \"payment\",\n \"payroll_run\",\n \"distribution\",\n \"reconciliation\",\n \"tax_filing\",\n \"deadline\",\n \"classification\",\n \"body\",\n \"meeting\",\n \"seat\",\n \"agenda_item\",\n \"resolution\",\n \"document\",\n \"work_item\",\n \"agent\",\n \"valuation\",\n \"safe_note\",\n \"instrument\",\n \"share_class\",\n \"round\",\n] as const satisfies readonly ResourceKind[];\n\nconst VALID_RESOURCE_KINDS = new Set<ResourceKind>(RESOURCE_KINDS);\nconst MAX_REFERENCE_INPUT_LEN = 256;\n\nfunction normalize(value: string): string {\n return value.trim().toLowerCase();\n}\n\nfunction validateReferenceInput(\n value: string,\n field: string,\n options: { allowEmpty?: boolean } = {},\n): string {\n const trimmed = value.trim();\n if (!options.allowEmpty && trimmed.length === 0) {\n throw new Error(`${field} cannot be empty.`);\n }\n if (trimmed.length > MAX_REFERENCE_INPUT_LEN) {\n throw new Error(`${field} must be at most ${MAX_REFERENCE_INPUT_LEN} characters.`);\n }\n return trimmed;\n}\n\nexport function shortId(value: string | undefined): string {\n return String(value ?? \"\").slice(0, 8);\n}\n\nexport function slugify(value: string | undefined): string {\n return String(value ?? \"\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \"-\")\n .replace(/^-+|-+$/g, \"\");\n}\n\nfunction isOpaqueUuid(value: string): boolean {\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(\n value.trim(),\n );\n}\n\nfunction isShortIdCandidate(value: string): boolean {\n const trimmed = value.trim();\n return /^[0-9a-f-]{4,}$/i.test(trimmed) || /^[a-z]+_[a-z0-9_-]{3,}$/i.test(trimmed);\n}\n\nfunction parseLastReference(value: string): { isLast: boolean; kind?: ResourceKind } {\n const trimmed = validateReferenceInput(value, \"reference\", { allowEmpty: false }).toLowerCase();\n if (trimmed === \"_\" || trimmed === \"@last\") {\n return { isLast: true };\n }\n if (trimmed.startsWith(\"@last:\")) {\n const kind = trimmed.slice(6);\n if (!VALID_RESOURCE_KINDS.has(kind as ResourceKind)) {\n throw new Error(`Unknown reference kind: ${kind}`);\n }\n return { isLast: true, kind: kind as ResourceKind };\n }\n return { isLast: false };\n}\n\nfunction uniqueStrings(values: Array<string | undefined | null>): Set<string> {\n const out = new Set<string>();\n for (const value of values) {\n if (!value) continue;\n const trimmed = value.trim();\n if (!trimmed) continue;\n out.add(normalize(trimmed));\n const slug = slugify(trimmed);\n if (slug) out.add(slug);\n }\n return out;\n}\n\nfunction kindLabel(kind: ResourceKind): string {\n return kind.replaceAll(\"_\", \" \");\n}\n\nfunction isEntityScopedKind(kind: ResourceKind): boolean {\n return kind !== \"entity\" && kind !== \"agent\";\n}\n\nfunction extractId(record: ApiRecord, fields: string[]): string | undefined {\n for (const field of fields) {\n const value = record[field];\n if (typeof value === \"string\" && value.trim()) {\n return value.trim();\n }\n }\n return undefined;\n}\n\nexport function describeReferenceRecord(kind: ResourceKind, record: ApiRecord): MatchRecord | null {\n const specs: Record<ResourceKind, { idFields: string[]; labelFields: string[] }> = {\n entity: { idFields: [\"entity_id\", \"id\"], labelFields: [\"legal_name\", \"name\"] },\n contact: { idFields: [\"contact_id\", \"id\"], labelFields: [\"name\", \"email\"] },\n share_transfer: {\n idFields: [\"transfer_id\", \"id\"],\n labelFields: [\"from_holder\", \"to_holder\", \"transfer_type\", \"status\"],\n },\n invoice: {\n idFields: [\"invoice_id\", \"id\"],\n labelFields: [\"customer_name\", \"description\", \"due_date\"],\n },\n bank_account: {\n idFields: [\"bank_account_id\", \"account_id\", \"id\"],\n labelFields: [\"bank_name\", \"account_type\"],\n },\n payment: {\n idFields: [\"payment_id\", \"id\"],\n labelFields: [\"recipient\", \"description\", \"payment_method\"],\n },\n payroll_run: {\n idFields: [\"payroll_run_id\", \"id\"],\n labelFields: [\"pay_period_start\", \"pay_period_end\"],\n },\n distribution: {\n idFields: [\"distribution_id\", \"id\"],\n labelFields: [\"description\", \"distribution_type\"],\n },\n reconciliation: {\n idFields: [\"reconciliation_id\", \"id\"],\n labelFields: [\"as_of_date\", \"status\"],\n },\n tax_filing: {\n idFields: [\"filing_id\", \"id\"],\n labelFields: [\"document_type\", \"tax_year\"],\n },\n deadline: {\n idFields: [\"deadline_id\", \"id\"],\n labelFields: [\"deadline_type\", \"description\", \"due_date\"],\n },\n classification: {\n idFields: [\"classification_id\", \"id\"],\n labelFields: [\"contractor_name\", \"state\", \"risk_level\"],\n },\n body: { idFields: [\"body_id\", \"id\"], labelFields: [\"name\"] },\n meeting: { idFields: [\"meeting_id\", \"id\"], labelFields: [\"title\", \"name\"] },\n seat: {\n idFields: [\"seat_id\", \"id\"],\n labelFields: [\"seat_name\", \"title\", \"holder_name\", \"holder\", \"holder_email\"],\n },\n agenda_item: { idFields: [\"agenda_item_id\", \"item_id\", \"id\"], labelFields: [\"title\"] },\n resolution: { idFields: [\"resolution_id\", \"id\"], labelFields: [\"title\"] },\n document: { idFields: [\"document_id\", \"id\"], labelFields: [\"title\", \"name\"] },\n work_item: { idFields: [\"work_item_id\", \"id\"], labelFields: [\"title\"] },\n agent: { idFields: [\"agent_id\", \"id\"], labelFields: [\"name\"] },\n valuation: {\n idFields: [\"valuation_id\", \"id\"],\n labelFields: [\"valuation_type\", \"effective_date\", \"date\"],\n },\n safe_note: {\n idFields: [\"safe_note_id\", \"safe_id\", \"id\"],\n labelFields: [\"investor_name\", \"investor\", \"safe_type\"],\n },\n instrument: { idFields: [\"instrument_id\", \"id\"], labelFields: [\"symbol\", \"kind\", \"name\"] },\n share_class: {\n idFields: [\"share_class_id\", \"id\"],\n labelFields: [\"class_code\", \"name\", \"share_class\"],\n },\n round: { idFields: [\"round_id\", \"equity_round_id\", \"id\"], labelFields: [\"name\"] },\n };\n const spec = specs[kind];\n const id = extractId(record, spec.idFields);\n if (!id) {\n return null;\n }\n const labels = spec.labelFields\n .map((field) => record[field])\n .filter((value): value is string => typeof value === \"string\" && value.trim().length > 0);\n const persistedHandle = typeof record.handle === \"string\" && record.handle.trim().length > 0\n ? record.handle.trim()\n : undefined;\n let label = labels[0] ?? id;\n if (kind === \"share_transfer\") {\n const fromHolder = typeof record.from_holder === \"string\" ? record.from_holder.trim() : \"\";\n const toHolder = typeof record.to_holder === \"string\" ? record.to_holder.trim() : \"\";\n const transferType = typeof record.transfer_type === \"string\" ? record.transfer_type.trim() : \"\";\n const composite = [fromHolder && toHolder ? `${fromHolder}-to-${toHolder}` : \"\", transferType]\n .filter(Boolean)\n .join(\"-\");\n if (composite) {\n label = composite;\n }\n }\n return {\n id,\n label,\n tokens: uniqueStrings([id, persistedHandle, ...labels]),\n raw: record,\n };\n}\n\nexport function getReferenceId(kind: ResourceKind, record: ApiRecord): string | undefined {\n return describeReferenceRecord(kind, record)?.id;\n}\n\nexport function getReferenceLabel(kind: ResourceKind, record: ApiRecord): string | undefined {\n return describeReferenceRecord(kind, record)?.label;\n}\n\nexport function getReferenceAlias(kind: ResourceKind, record: ApiRecord): string | undefined {\n if (typeof record.handle === \"string\" && record.handle.trim().length > 0) {\n return record.handle.trim();\n }\n const described = describeReferenceRecord(kind, record);\n if (!described) return undefined;\n const alias = slugify(described.label);\n return alias || shortId(described.id);\n}\n\ntype Scope = { entityId?: string; bodyId?: string; meetingId?: string };\n\nexport class ReferenceResolver {\n private readonly client: CorpAPIClient;\n private readonly cfg: CorpConfig;\n private entityCache?: ApiRecord[];\n private readonly contactsCache = new Map<string, ApiRecord[]>();\n private readonly shareTransfersCache = new Map<string, ApiRecord[]>();\n private readonly invoicesCache = new Map<string, ApiRecord[]>();\n private readonly bankAccountsCache = new Map<string, ApiRecord[]>();\n private readonly paymentsCache = new Map<string, ApiRecord[]>();\n private readonly payrollRunsCache = new Map<string, ApiRecord[]>();\n private readonly distributionsCache = new Map<string, ApiRecord[]>();\n private readonly reconciliationsCache = new Map<string, ApiRecord[]>();\n private readonly taxFilingsCache = new Map<string, ApiRecord[]>();\n private readonly deadlinesCache = new Map<string, ApiRecord[]>();\n private readonly classificationsCache = new Map<string, ApiRecord[]>();\n private readonly bodiesCache = new Map<string, ApiRecord[]>();\n private readonly meetingsCache = new Map<string, ApiRecord[]>();\n private readonly seatsCache = new Map<string, ApiRecord[]>();\n private readonly agendaCache = new Map<string, ApiRecord[]>();\n private readonly resolutionsCache = new Map<string, ApiRecord[]>();\n private readonly documentsCache = new Map<string, ApiRecord[]>();\n private readonly workItemsCache = new Map<string, ApiRecord[]>();\n private readonly valuationsCache = new Map<string, ApiRecord[]>();\n private readonly safeNotesCache = new Map<string, ApiRecord[]>();\n private readonly roundsCache = new Map<string, ApiRecord[]>();\n private readonly capTableCache = new Map<string, ApiRecord>();\n private agentsCache?: ApiRecord[];\n\n constructor(client: CorpAPIClient, cfg: CorpConfig) {\n this.client = client;\n this.cfg = cfg;\n }\n\n async resolveEntity(ref?: string): Promise<string> {\n if (!ref || !ref.trim()) {\n const activeEntityId = getActiveEntityId(this.cfg);\n if (!activeEntityId) {\n throw new Error(\n \"No entity specified. Use --entity-id or set active_entity_id via 'corp config set active_entity_id <ref>'.\",\n );\n }\n this.remember(\"entity\", activeEntityId);\n return activeEntityId;\n }\n return this.resolve(\"entity\", ref);\n }\n\n async resolveContact(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"contact\", ref, { entityId });\n }\n\n async resolveWorkItemActor(\n entityId: string,\n ref: string,\n ): Promise<{ actor_type: \"contact\" | \"agent\"; actor_id: string }> {\n const trimmed = validateReferenceInput(ref, \"actor reference\");\n const [contactResult, agentResult] = await Promise.allSettled([\n this.resolveContact(entityId, trimmed),\n this.resolveAgent(trimmed),\n ]);\n\n const contactId =\n contactResult.status === \"fulfilled\" ? contactResult.value : undefined;\n const agentId =\n agentResult.status === \"fulfilled\" ? agentResult.value : undefined;\n\n if (contactId && agentId && contactId !== agentId) {\n throw new Error(\n `Actor reference '${trimmed}' is ambiguous between a contact and an agent. Use a unique ref or explicit @last:contact / @last:agent.`,\n );\n }\n if (contactId) {\n return { actor_type: \"contact\", actor_id: contactId };\n }\n if (agentId) {\n return { actor_type: \"agent\", actor_id: agentId };\n }\n\n throw new Error(\n `No matching contact or agent found for '${trimmed}'. Try 'corp find contact <query>' or 'corp find agent <query>'.`,\n );\n }\n\n async resolveShareTransfer(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"share_transfer\", ref, { entityId });\n }\n\n async resolveInvoice(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"invoice\", ref, { entityId });\n }\n\n async resolveBankAccount(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"bank_account\", ref, { entityId });\n }\n\n async resolvePayment(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"payment\", ref, { entityId });\n }\n\n async resolvePayrollRun(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"payroll_run\", ref, { entityId });\n }\n\n async resolveDistribution(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"distribution\", ref, { entityId });\n }\n\n async resolveReconciliation(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"reconciliation\", ref, { entityId });\n }\n\n async resolveTaxFiling(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"tax_filing\", ref, { entityId });\n }\n\n async resolveDeadline(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"deadline\", ref, { entityId });\n }\n\n async resolveClassification(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"classification\", ref, { entityId });\n }\n\n async resolveBody(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"body\", ref, { entityId });\n }\n\n async resolveMeeting(entityId: string, ref: string, bodyId?: string): Promise<string> {\n return this.resolve(\"meeting\", ref, { entityId, bodyId });\n }\n\n async resolveSeat(entityId: string, ref: string, bodyId?: string): Promise<string> {\n return this.resolve(\"seat\", ref, { entityId, bodyId });\n }\n\n async resolveAgendaItem(entityId: string, meetingId: string, ref: string): Promise<string> {\n return this.resolve(\"agenda_item\", ref, { entityId, meetingId });\n }\n\n async resolveResolution(\n entityId: string,\n ref: string,\n meetingId?: string,\n ): Promise<string> {\n return this.resolve(\"resolution\", ref, { entityId, meetingId });\n }\n\n async resolveDocument(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"document\", ref, { entityId });\n }\n\n async resolveWorkItem(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"work_item\", ref, { entityId });\n }\n\n async resolveAgent(ref: string): Promise<string> {\n return this.resolve(\"agent\", ref);\n }\n\n async resolveValuation(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"valuation\", ref, { entityId });\n }\n\n async resolveSafeNote(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"safe_note\", ref, { entityId });\n }\n\n async resolveInstrument(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"instrument\", ref, { entityId });\n }\n\n async resolveShareClass(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"share_class\", ref, { entityId });\n }\n\n async resolveRound(entityId: string, ref: string): Promise<string> {\n return this.resolve(\"round\", ref, { entityId });\n }\n\n async find(\n kind: ResourceKind,\n query: string,\n scope: Scope = {},\n ): Promise<ReferenceMatch[]> {\n const trimmedQuery = validateReferenceInput(query, \"query\", { allowEmpty: true });\n const records = await this.listRecords(kind, scope);\n const described = records\n .map((record) => describeReferenceRecord(kind, record))\n .filter((record): record is MatchRecord => record !== null);\n const normalizedQuery = normalize(trimmedQuery);\n\n const matches = described\n .filter((record) => {\n if (!normalizedQuery || normalizedQuery === \"*\") {\n return true;\n }\n if (normalize(record.id).startsWith(normalizedQuery)) {\n return true;\n }\n if (record.tokens.has(normalizedQuery)) {\n return true;\n }\n return Array.from(record.tokens).some((token) => token.includes(normalizedQuery));\n })\n .sort((left, right) => this.matchRank(left, normalizedQuery) - this.matchRank(right, normalizedQuery)\n || left.label.localeCompare(right.label)\n || left.id.localeCompare(right.id));\n\n return matches.map((record) => ({\n kind,\n id: record.id,\n short_id: shortId(record.id),\n label: record.label,\n alias: this.referenceAlias(kind, record.raw),\n raw: record.raw,\n }));\n }\n\n remember(kind: ResourceKind, referenceId: string, entityId?: string): void {\n setLastReference(this.cfg, kind, referenceId, entityId);\n updateConfig((cfg) => {\n setLastReference(cfg, kind, referenceId, entityId);\n });\n }\n\n rememberFromRecord(kind: ResourceKind, record: ApiRecord, entityId?: string): void {\n const described = describeReferenceRecord(kind, record);\n if (described) {\n this.remember(kind, described.id, entityId);\n }\n }\n\n async stabilizeRecord(kind: ResourceKind, record: ApiRecord, entityId?: string): Promise<ApiRecord> {\n const described = describeReferenceRecord(kind, record);\n if (!described) return record;\n if (typeof record.handle === \"string\" && record.handle.trim().length > 0) {\n return record;\n }\n const response = await this.client.syncReferences(\n kind,\n [{ resource_id: described.id, label: described.label }],\n isEntityScopedKind(kind) ? entityId : undefined,\n );\n const handle = response.references[0]?.handle;\n if (typeof handle === \"string\" && handle.trim().length > 0) {\n record.handle = handle.trim();\n }\n return record;\n }\n\n async stabilizeRecords(kind: ResourceKind, records: ApiRecord[], entityId?: string): Promise<ApiRecord[]> {\n return this.attachStableHandles(kind, records, entityId);\n }\n\n referenceAlias(kind: ResourceKind, record: ApiRecord): string | undefined {\n return getReferenceAlias(kind, record);\n }\n\n private async resolve(kind: ResourceKind, ref: string, scope: Scope = {}): Promise<string> {\n const last = parseLastReference(ref);\n if (last.isLast) {\n const lastKind = last.kind ?? kind;\n if (lastKind !== kind) {\n throw new Error(`@last:${lastKind} cannot be used where a ${kindLabel(kind)} reference is required.`);\n }\n const remembered = getLastReference(this.cfg, lastKind, scope.entityId);\n if (!remembered) {\n throw new Error(`No ${kindLabel(lastKind)} is recorded for @last.`);\n }\n this.remember(kind, remembered, scope.entityId);\n return remembered;\n }\n\n const trimmed = validateReferenceInput(ref, `${kindLabel(kind)} reference`);\n if (isOpaqueUuid(trimmed)) {\n this.remember(kind, trimmed, scope.entityId);\n return trimmed;\n }\n\n const records = await this.listRecords(kind, scope);\n const match = this.matchRecords(kind, trimmed, records);\n this.remember(kind, match.id, scope.entityId);\n return match.id;\n }\n\n private matchRecords(kind: ResourceKind, ref: string, records: ApiRecord[]): MatchRecord {\n const described = records\n .map((record) => describeReferenceRecord(kind, record))\n .filter((record): record is MatchRecord => record !== null);\n const normalizedRef = normalize(ref);\n\n const exactIdMatches = described.filter((record) => normalize(record.id) === normalizedRef);\n if (exactIdMatches.length === 1) {\n return exactIdMatches[0];\n }\n\n const exactTokenMatches = described.filter((record) => record.tokens.has(normalizedRef));\n if (exactTokenMatches.length === 1) {\n return exactTokenMatches[0];\n }\n if (exactTokenMatches.length > 1) {\n throw new Error(this.ambiguousMessage(kind, ref, exactTokenMatches));\n }\n\n if (isShortIdCandidate(ref)) {\n const prefixMatches = described.filter((record) => normalize(record.id).startsWith(normalizedRef));\n if (prefixMatches.length === 1) {\n return prefixMatches[0];\n }\n if (prefixMatches.length > 1) {\n throw new Error(this.ambiguousMessage(kind, ref, prefixMatches));\n }\n }\n\n throw new Error(\n `No ${kindLabel(kind)} found for reference \"${ref}\". Try: corp find ${kind} ${JSON.stringify(ref)}`,\n );\n }\n\n private ambiguousMessage(kind: ResourceKind, ref: string, matches: MatchRecord[]): string {\n const previews = matches\n .slice(0, 5)\n .map((match) => `${match.label} [${shortId(match.id)}]`)\n .join(\", \");\n return `Ambiguous ${kindLabel(kind)} reference \"${ref}\". Matches: ${previews}. Try: corp find ${kind} ${JSON.stringify(ref)}`;\n }\n\n private matchRank(record: MatchRecord, normalizedQuery: string): number {\n if (!normalizedQuery || normalizedQuery === \"*\") {\n return 5;\n }\n if (normalize(record.id) === normalizedQuery) {\n return 0;\n }\n if (record.tokens.has(normalizedQuery)) {\n return 1;\n }\n if (normalize(record.id).startsWith(normalizedQuery)) {\n return 2;\n }\n if (Array.from(record.tokens).some((token) => token.startsWith(normalizedQuery))) {\n return 3;\n }\n return 4;\n }\n\n private async listRecords(kind: ResourceKind, scope: Scope): Promise<ApiRecord[]> {\n const records = await (async () => {\n switch (kind) {\n case \"entity\":\n return this.listEntities();\n case \"contact\":\n return this.listContacts(scope.entityId);\n case \"share_transfer\":\n return this.listShareTransfers(scope.entityId);\n case \"invoice\":\n return this.listInvoices(scope.entityId);\n case \"bank_account\":\n return this.listBankAccounts(scope.entityId);\n case \"payment\":\n return this.listPayments(scope.entityId);\n case \"payroll_run\":\n return this.listPayrollRuns(scope.entityId);\n case \"distribution\":\n return this.listDistributions(scope.entityId);\n case \"reconciliation\":\n return this.listReconciliations(scope.entityId);\n case \"tax_filing\":\n return this.listTaxFilings(scope.entityId);\n case \"deadline\":\n return this.listDeadlines(scope.entityId);\n case \"classification\":\n return this.listClassifications(scope.entityId);\n case \"body\":\n return this.listBodies(scope.entityId);\n case \"meeting\":\n return this.listMeetings(scope.entityId, scope.bodyId);\n case \"seat\":\n return this.listSeats(scope.entityId, scope.bodyId);\n case \"agenda_item\":\n return this.listAgendaItems(scope.entityId, scope.meetingId);\n case \"resolution\":\n return this.listResolutions(scope.entityId, scope.meetingId);\n case \"document\":\n return this.listDocuments(scope.entityId);\n case \"work_item\":\n return this.listWorkItems(scope.entityId);\n case \"agent\":\n return this.listAgents();\n case \"valuation\":\n return this.listValuations(scope.entityId);\n case \"safe_note\":\n return this.listSafeNotes(scope.entityId);\n case \"instrument\":\n return this.listInstruments(scope.entityId);\n case \"share_class\":\n return this.listShareClasses(scope.entityId);\n case \"round\":\n return this.listRounds(scope.entityId);\n }\n })();\n return this.attachStableHandles(kind, records, scope.entityId);\n }\n\n private async attachStableHandles(\n kind: ResourceKind,\n records: ApiRecord[],\n entityId?: string,\n ): Promise<ApiRecord[]> {\n const missing = records\n .map((record) => ({ record, described: describeReferenceRecord(kind, record) }))\n .filter(\n (entry): entry is { record: ApiRecord; described: MatchRecord } =>\n entry.described !== null\n && !(typeof entry.record.handle === \"string\" && entry.record.handle.trim().length > 0),\n );\n if (missing.length === 0) {\n return records;\n }\n\n const response = await this.client.syncReferences(\n kind,\n missing.map(({ described }) => ({\n resource_id: described.id,\n label: described.label,\n })),\n isEntityScopedKind(kind) ? entityId : undefined,\n );\n const handleById = new Map<string, string>();\n for (const reference of response.references) {\n if (typeof reference.resource_id === \"string\" && typeof reference.handle === \"string\") {\n handleById.set(reference.resource_id, reference.handle);\n }\n }\n for (const { record, described } of missing) {\n const handle = handleById.get(described.id);\n if (handle) {\n record.handle = handle;\n }\n }\n return records;\n }\n\n private async listEntities(): Promise<ApiRecord[]> {\n if (!this.entityCache) {\n this.entityCache = await this.client.listEntities();\n }\n return this.entityCache;\n }\n\n private async listContacts(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve contacts.\");\n const cached = this.contactsCache.get(entityId);\n if (cached) return cached;\n const contacts = await this.client.listContacts(entityId);\n this.contactsCache.set(entityId, contacts);\n return contacts;\n }\n\n private async listShareTransfers(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve share transfers.\");\n const cached = this.shareTransfersCache.get(entityId);\n if (cached) return cached;\n const transfers = await this.client.listShareTransfers(entityId);\n this.shareTransfersCache.set(entityId, transfers);\n return transfers;\n }\n\n private async listInvoices(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve invoices.\");\n const cached = this.invoicesCache.get(entityId);\n if (cached) return cached;\n const invoices = await this.client.listInvoices(entityId);\n this.invoicesCache.set(entityId, invoices);\n return invoices;\n }\n\n private async listBankAccounts(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve bank accounts.\");\n const cached = this.bankAccountsCache.get(entityId);\n if (cached) return cached;\n const bankAccounts = await this.client.listBankAccounts(entityId);\n this.bankAccountsCache.set(entityId, bankAccounts);\n return bankAccounts;\n }\n\n private async listPayments(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve payments.\");\n const cached = this.paymentsCache.get(entityId);\n if (cached) return cached;\n const payments = await this.client.listPayments(entityId);\n this.paymentsCache.set(entityId, payments);\n return payments;\n }\n\n private async listPayrollRuns(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve payroll runs.\");\n const cached = this.payrollRunsCache.get(entityId);\n if (cached) return cached;\n const payrollRuns = await this.client.listPayrollRuns(entityId);\n this.payrollRunsCache.set(entityId, payrollRuns);\n return payrollRuns;\n }\n\n private async listDistributions(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve distributions.\");\n const cached = this.distributionsCache.get(entityId);\n if (cached) return cached;\n const distributions = await this.client.listDistributions(entityId);\n this.distributionsCache.set(entityId, distributions);\n return distributions;\n }\n\n private async listReconciliations(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve reconciliations.\");\n const cached = this.reconciliationsCache.get(entityId);\n if (cached) return cached;\n const reconciliations = await this.client.listReconciliations(entityId);\n this.reconciliationsCache.set(entityId, reconciliations);\n return reconciliations;\n }\n\n private async listTaxFilings(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve tax filings.\");\n const cached = this.taxFilingsCache.get(entityId);\n if (cached) return cached;\n const filings = await this.client.listTaxFilings(entityId);\n this.taxFilingsCache.set(entityId, filings);\n return filings;\n }\n\n private async listDeadlines(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve deadlines.\");\n const cached = this.deadlinesCache.get(entityId);\n if (cached) return cached;\n const deadlines = await this.client.listDeadlines(entityId);\n this.deadlinesCache.set(entityId, deadlines);\n return deadlines;\n }\n\n private async listClassifications(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve contractor classifications.\");\n const cached = this.classificationsCache.get(entityId);\n if (cached) return cached;\n const classifications = await this.client.listContractorClassifications(entityId);\n this.classificationsCache.set(entityId, classifications);\n return classifications;\n }\n\n private async listBodies(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve governance bodies.\");\n const cached = this.bodiesCache.get(entityId);\n if (cached) return cached;\n const bodies = await this.client.listGovernanceBodies(entityId);\n this.bodiesCache.set(entityId, bodies as ApiRecord[]);\n return bodies as ApiRecord[];\n }\n\n private async listMeetings(entityId?: string, bodyId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve meetings.\");\n const cacheKey = `${entityId}:${bodyId ?? \"*\"}`;\n const cached = this.meetingsCache.get(cacheKey);\n if (cached) return cached;\n\n const meetings: ApiRecord[] = [];\n if (bodyId) {\n meetings.push(...((await this.client.listMeetings(bodyId, entityId)) as ApiRecord[]));\n } else {\n const bodies = await this.listBodies(entityId);\n for (const body of bodies) {\n const resolvedBodyId = extractId(body, [\"body_id\", \"id\"]);\n if (!resolvedBodyId) continue;\n meetings.push(...((await this.client.listMeetings(resolvedBodyId, entityId)) as ApiRecord[]));\n }\n }\n this.meetingsCache.set(cacheKey, meetings);\n return meetings;\n }\n\n private async listSeats(entityId?: string, bodyId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve seats.\");\n const cacheKey = `${entityId}:${bodyId ?? \"*\"}`;\n const cached = this.seatsCache.get(cacheKey);\n if (cached) return cached;\n\n const seats: ApiRecord[] = [];\n if (bodyId) {\n seats.push(...((await this.client.getGovernanceSeats(bodyId, entityId)) as ApiRecord[]));\n } else {\n const bodies = await this.listBodies(entityId);\n for (const body of bodies) {\n const resolvedBodyId = extractId(body, [\"body_id\", \"id\"]);\n if (!resolvedBodyId) continue;\n seats.push(...((await this.client.getGovernanceSeats(resolvedBodyId, entityId)) as ApiRecord[]));\n }\n }\n this.seatsCache.set(cacheKey, seats);\n return seats;\n }\n\n private async listAgendaItems(entityId?: string, meetingId?: string): Promise<ApiRecord[]> {\n if (!entityId || !meetingId) {\n throw new Error(\"Entity and meeting context are required to resolve agenda items.\");\n }\n const cached = this.agendaCache.get(`${entityId}:${meetingId}`);\n if (cached) return cached;\n const items = (await this.client.listAgendaItems(meetingId, entityId)) as ApiRecord[];\n this.agendaCache.set(`${entityId}:${meetingId}`, items);\n return items;\n }\n\n private async listResolutions(entityId?: string, meetingId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve resolutions.\");\n const cacheKey = `${entityId}:${meetingId ?? \"*\"}`;\n const cached = this.resolutionsCache.get(cacheKey);\n if (cached) return cached;\n\n const resolutions: ApiRecord[] = [];\n if (meetingId) {\n resolutions.push(...((await this.client.getMeetingResolutions(meetingId, entityId)) as ApiRecord[]));\n } else {\n const meetings = await this.listMeetings(entityId);\n for (const meeting of meetings) {\n const resolvedMeetingId = extractId(meeting, [\"meeting_id\", \"id\"]);\n if (!resolvedMeetingId) continue;\n resolutions.push(...((await this.client.getMeetingResolutions(resolvedMeetingId, entityId)) as ApiRecord[]));\n }\n }\n this.resolutionsCache.set(cacheKey, resolutions);\n return resolutions;\n }\n\n private async listDocuments(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve documents.\");\n const cached = this.documentsCache.get(entityId);\n if (cached) return cached;\n const docs = (await this.client.getEntityDocuments(entityId)) as ApiRecord[];\n this.documentsCache.set(entityId, docs);\n return docs;\n }\n\n private async listWorkItems(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve work items.\");\n const cached = this.workItemsCache.get(entityId);\n if (cached) return cached;\n const items = (await this.client.listWorkItems(entityId)) as ApiRecord[];\n this.workItemsCache.set(entityId, items);\n return items;\n }\n\n private async listAgents(): Promise<ApiRecord[]> {\n if (!this.agentsCache) {\n this.agentsCache = (await this.client.listAgents()) as ApiRecord[];\n }\n return this.agentsCache;\n }\n\n private async listValuations(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve valuations.\");\n const cached = this.valuationsCache.get(entityId);\n if (cached) return cached;\n const valuations = (await this.client.getValuations(entityId)) as ApiRecord[];\n this.valuationsCache.set(entityId, valuations);\n return valuations;\n }\n\n private async listSafeNotes(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve SAFE notes.\");\n const cached = this.safeNotesCache.get(entityId);\n if (cached) return cached;\n const safeNotes = (await this.client.getSafeNotes(entityId)) as ApiRecord[];\n this.safeNotesCache.set(entityId, safeNotes);\n return safeNotes;\n }\n\n private async listRounds(entityId?: string): Promise<ApiRecord[]> {\n if (!entityId) throw new Error(\"An entity context is required to resolve rounds.\");\n const cached = this.roundsCache.get(entityId);\n if (cached) return cached;\n const rounds = (await this.client.listEquityRounds(entityId)) as ApiRecord[];\n this.roundsCache.set(entityId, rounds);\n return rounds;\n }\n\n private async getCapTable(entityId?: string): Promise<ApiRecord> {\n if (!entityId) throw new Error(\"An entity context is required to resolve cap table resources.\");\n const cached = this.capTableCache.get(entityId);\n if (cached) return cached;\n const capTable = (await this.client.getCapTable(entityId)) as ApiRecord;\n this.capTableCache.set(entityId, capTable);\n return capTable;\n }\n\n private async listInstruments(entityId?: string): Promise<ApiRecord[]> {\n const capTable = await this.getCapTable(entityId);\n return Array.isArray(capTable.instruments) ? (capTable.instruments as ApiRecord[]) : [];\n }\n\n private async listShareClasses(entityId?: string): Promise<ApiRecord[]> {\n const capTable = await this.getCapTable(entityId);\n return Array.isArray(capTable.share_classes) ? (capTable.share_classes as ApiRecord[]) : [];\n }\n}\n","import chalk from \"chalk\";\nimport Table from \"cli-table3\";\nimport type { ApiRecord } from \"./types.js\";\nimport {\n getReferenceAlias,\n getReferenceId,\n shortId,\n type ResourceKind,\n} from \"./references.js\";\n\nconst URGENCY_COLORS: Record<string, (s: string) => string> = {\n overdue: chalk.red.bold,\n due_today: chalk.yellow.bold,\n d1: chalk.yellow,\n d7: chalk.cyan,\n d14: chalk.blue,\n d30: chalk.dim,\n upcoming: chalk.dim,\n};\n\nexport function printError(msg: string): void {\n console.error(chalk.red(\"Error:\"), msg);\n}\n\nexport function printSuccess(msg: string): void {\n console.log(chalk.green(msg));\n}\n\nexport function printWarning(msg: string): void {\n console.log(chalk.yellow(msg));\n}\n\nexport function printJson(data: unknown): void {\n console.log(JSON.stringify(data, null, 2));\n}\n\nexport function printDryRun(operation: string, payload: unknown): void {\n printJson({\n dry_run: true,\n operation,\n payload,\n });\n}\n\ntype WriteResultOptions =\n | boolean\n | {\n jsonOnly?: boolean;\n referenceKind?: ResourceKind;\n referenceLabel?: string;\n showReuseHint?: boolean;\n };\n\nfunction normalizeWriteResultOptions(options?: WriteResultOptions): {\n jsonOnly?: boolean;\n referenceKind?: ResourceKind;\n referenceLabel?: string;\n showReuseHint?: boolean;\n} {\n if (typeof options === \"boolean\") {\n return { jsonOnly: options };\n }\n return options ?? {};\n}\n\nfunction formatReferenceCell(kind: ResourceKind, record: ApiRecord): string {\n const id = getReferenceId(kind, record);\n if (!id) return \"\";\n const alias = getReferenceAlias(kind, record);\n return alias ? `${alias} [${shortId(id)}]` : shortId(id);\n}\n\nexport function printReferenceSummary(\n kind: ResourceKind,\n record: ApiRecord,\n opts: { label?: string; showReuseHint?: boolean } = {},\n): void {\n const id = getReferenceId(kind, record);\n if (!id) return;\n const alias = getReferenceAlias(kind, record);\n const token = alias ? `${alias} [${shortId(id)}]` : shortId(id);\n console.log(` ${chalk.bold(opts.label ?? \"Ref:\")} ${token}`);\n console.log(` ${chalk.bold(\"ID:\")} ${id}`);\n if (opts.showReuseHint) {\n console.log(` ${chalk.bold(\"Reuse:\")} @last:${kind}`);\n }\n}\n\nexport function printWriteResult(\n result: unknown,\n successMessage: string,\n options?: WriteResultOptions,\n): void {\n const normalized = normalizeWriteResultOptions(options);\n if (normalized.jsonOnly) {\n printJson(result);\n return;\n }\n printSuccess(successMessage);\n if (\n normalized.referenceKind\n && typeof result === \"object\"\n && result !== null\n && !Array.isArray(result)\n ) {\n printReferenceSummary(normalized.referenceKind, result as ApiRecord, {\n label: normalized.referenceLabel,\n showReuseHint: normalized.showReuseHint,\n });\n }\n printJson(result);\n}\n\n// --- Status Panel ---\n\nexport function printStatusPanel(data: ApiRecord): void {\n console.log(chalk.blue(\"─\".repeat(50)));\n console.log(chalk.blue.bold(\" Corp Status\"));\n console.log(chalk.blue(\"─\".repeat(50)));\n console.log(` ${chalk.bold(\"Workspace:\")} ${data.workspace_id ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Entities:\")} ${data.entity_count ?? 0}`);\n\n const urgency = (data.urgency_counts ?? {}) as Record<string, number>;\n if (Object.keys(urgency).length > 0) {\n console.log(`\\n ${chalk.bold(\"Obligations:\")}`);\n for (const [tier, count] of Object.entries(urgency)) {\n const colorFn = URGENCY_COLORS[tier] ?? ((s: string) => s);\n console.log(` ${colorFn(`${tier}:`)} ${count}`);\n }\n }\n\n if (data.next_deadline) {\n console.log(`\\n ${chalk.bold(\"Next deadline:\")} ${data.next_deadline}`);\n }\n console.log(chalk.blue(\"─\".repeat(50)));\n}\n\nexport function printFinanceSummaryPanel(data: ApiRecord): void {\n const invoices = (data.invoices ?? {}) as ApiRecord;\n const bankAccounts = (data.bank_accounts ?? {}) as ApiRecord;\n const payments = (data.payments ?? {}) as ApiRecord;\n const payrollRuns = (data.payroll_runs ?? {}) as ApiRecord;\n const distributions = (data.distributions ?? {}) as ApiRecord;\n const reconciliations = (data.reconciliations ?? {}) as ApiRecord;\n const classifications = (data.contractor_classifications ?? {}) as ApiRecord;\n\n console.log(chalk.green(\"─\".repeat(54)));\n console.log(chalk.green.bold(\" Finance Summary\"));\n console.log(chalk.green(\"─\".repeat(54)));\n console.log(` ${chalk.bold(\"Entity:\")} ${s(data.entity_id) || \"N/A\"}`);\n console.log(` ${chalk.bold(\"Invoices:\")} ${s(invoices.count)} total, ${s(invoices.open_count)} open, ${money(invoices.total_amount_cents)}`);\n if (invoices.latest_due_date) {\n console.log(` ${chalk.bold(\"Invoice Horizon:\")} next due ${date(invoices.latest_due_date)}`);\n }\n console.log(` ${chalk.bold(\"Bank Accounts:\")} ${s(bankAccounts.active_count)}/${s(bankAccounts.count)} active`);\n console.log(` ${chalk.bold(\"Payments:\")} ${s(payments.count)} total, ${s(payments.pending_count)} pending, ${money(payments.total_amount_cents)}`);\n console.log(` ${chalk.bold(\"Payroll Runs:\")} ${s(payrollRuns.count)} total${payrollRuns.latest_period_end ? `, latest ${date(payrollRuns.latest_period_end)}` : \"\"}`);\n console.log(` ${chalk.bold(\"Distributions:\")} ${s(distributions.count)} total, ${money(distributions.total_amount_cents)}`);\n console.log(` ${chalk.bold(\"Reconciliations:\")} ${s(reconciliations.balanced_count)}/${s(reconciliations.count)} balanced`);\n console.log(` ${chalk.bold(\"Contractors:\")} ${s(classifications.count)} classifications, ${s(classifications.high_risk_count)} high risk`);\n console.log(chalk.green(\"─\".repeat(54)));\n}\n\n// --- Generic table helper ---\n\nfunction makeTable(title: string, columns: string[]): Table.Table {\n console.log(`\\n${chalk.bold(title)}`);\n return new Table({ head: columns.map((c) => chalk.dim(c)) });\n}\n\nfunction s(val: unknown, maxLen?: number): string {\n const str = val == null ? \"\" : String(val);\n if (maxLen && str.length > maxLen) return str.slice(0, maxLen);\n return str;\n}\n\nfunction money(val: unknown, cents = true): string {\n if (typeof val === \"number\") {\n const dollars = cents ? val / 100 : val;\n return `$${dollars.toLocaleString(undefined, { minimumFractionDigits: 2, maximumFractionDigits: 2 })}`;\n }\n return String(val ?? \"\");\n}\n\nfunction date(val: unknown): string {\n const str = s(val);\n if (!str) return \"\";\n const parsed = new Date(str);\n return Number.isNaN(parsed.getTime()) ? str : parsed.toISOString().slice(0, 10);\n}\n\nfunction actorLabel(record: ApiRecord, field: \"claimed_by\" | \"completed_by\" | \"created_by\"): string {\n const actor = record[`${field}_actor`];\n if (actor && typeof actor === \"object\" && !Array.isArray(actor)) {\n const label = s((actor as ApiRecord).label);\n const actorType = s((actor as ApiRecord).actor_type);\n if (label) {\n return actorType ? `${label} (${actorType})` : label;\n }\n }\n return s(record[field]);\n}\n\n// --- Domain tables ---\n\nexport function printEntitiesTable(entities: ApiRecord[]): void {\n const table = makeTable(\"Entities\", [\"Ref\", \"Name\", \"Type\", \"Jurisdiction\", \"Status\"]);\n for (const e of entities) {\n table.push([\n formatReferenceCell(\"entity\", e),\n s(e.legal_name ?? e.name),\n s(e.entity_type),\n s(e.jurisdiction),\n s(e.formation_status ?? e.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printObligationsTable(obligations: ApiRecord[]): void {\n const table = makeTable(\"Obligations\", [\"ID\", \"Type\", \"Urgency\", \"Due\", \"Status\"]);\n for (const o of obligations) {\n const urg = s(o.urgency) || \"upcoming\";\n const colorFn = URGENCY_COLORS[urg] ?? ((x: string) => x);\n table.push([s(o.obligation_id, 12), s(o.obligation_type), colorFn(urg), s(o.due_at), s(o.status)]);\n }\n console.log(table.toString());\n}\n\nexport function printContactsTable(contacts: ApiRecord[]): void {\n const table = makeTable(\"Contacts\", [\"Ref\", \"Name\", \"Email\", \"Category\", \"Entity\"]);\n for (const c of contacts) {\n table.push([\n formatReferenceCell(\"contact\", c),\n s(c.name),\n s(c.email),\n s(c.category),\n s(c.entity_name ?? c.entity_id),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printCapTable(data: ApiRecord): void {\n const accessLevel = s(data.access_level) || \"admin\";\n const instruments = (data.instruments ?? []) as ApiRecord[];\n if (instruments.length > 0) {\n const table = makeTable(\"Cap Table — Instruments\", [\"Ref\", \"Symbol\", \"Kind\", \"Authorized\", \"Issued\", \"Diluted\"]);\n for (const instrument of instruments) {\n table.push([\n formatReferenceCell(\"instrument\", instrument),\n s(instrument.symbol),\n s(instrument.kind),\n s(instrument.authorized_units ?? \"unlimited\"),\n s(instrument.issued_units),\n s(instrument.diluted_units),\n ]);\n }\n console.log(table.toString());\n }\n\n const holders = (data.holders ?? []) as ApiRecord[];\n if (holders.length > 0 && accessLevel !== \"summary\") {\n const table = makeTable(\n \"Ownership Breakdown\",\n [\"Holder\", \"Outstanding\", \"As Converted\", \"Fully Diluted\", \"Fully Diluted %\"],\n );\n for (const holder of holders) {\n const dilutedBps = typeof holder.fully_diluted_bps === \"number\"\n ? `${(holder.fully_diluted_bps / 100).toFixed(2)}%`\n : \"\";\n table.push([\n s(holder.name),\n s(holder.outstanding_units),\n s(holder.as_converted_units),\n s(holder.fully_diluted_units),\n dilutedBps,\n ]);\n }\n console.log(table.toString());\n }\n\n const shareClasses = (data.share_classes ?? []) as ApiRecord[];\n if (shareClasses.length > 0) {\n const cols = [\"Ref\", \"Class\", \"Authorized\", \"Outstanding\"];\n if (accessLevel !== \"summary\") cols.push(\"Holders\");\n const table = makeTable(\"Cap Table — Share Classes\", cols);\n for (const sc of shareClasses) {\n const row = [\n formatReferenceCell(\"share_class\", sc),\n s(sc.class_code ?? sc.name),\n s(sc.authorized),\n s(sc.outstanding),\n ];\n if (accessLevel !== \"summary\") {\n const holders = (sc.holders ?? []) as ApiRecord[];\n row.push(holders.map((h) => `${h.name ?? \"?\"}(${h.percentage ?? \"?\"}%)`).join(\", \"));\n }\n table.push(row);\n }\n console.log(table.toString());\n }\n\n const ownership = (data.ownership ?? []) as ApiRecord[];\n if (ownership.length > 0 && accessLevel !== \"summary\") {\n const table = makeTable(\"Ownership Breakdown\", [\"Holder\", \"Shares\", \"Percentage\", \"Class\"]);\n for (const o of ownership) {\n table.push([s(o.holder_name ?? o.name), s(o.shares), `${o.percentage ?? \"\"}%`, s(o.share_class)]);\n }\n console.log(table.toString());\n }\n\n const pools = (data.option_pools ?? []) as ApiRecord[];\n if (pools.length > 0) {\n const table = makeTable(\"Option Pools\", [\"Name\", \"Authorized\", \"Granted\", \"Available\"]);\n for (const p of pools) {\n table.push([s(p.name), s(p.authorized), s(p.granted), s(p.available)]);\n }\n console.log(table.toString());\n }\n\n if (data.fully_diluted_shares != null) {\n const fd = data.fully_diluted_shares;\n console.log(`\\n${chalk.bold(\"Fully Diluted Shares:\")} ${typeof fd === \"number\" ? fd.toLocaleString() : fd}`);\n }\n if (data.total_units != null) {\n console.log(`\\n${chalk.bold(\"Cap Table Basis:\")} ${s(data.basis) || \"outstanding\"}`);\n console.log(`${chalk.bold(\"Total Units:\")} ${typeof data.total_units === \"number\" ? data.total_units.toLocaleString() : data.total_units}`);\n }\n}\n\nexport function printSafesTable(safes: ApiRecord[]): void {\n const table = makeTable(\"SAFE Notes\", [\"Ref\", \"Investor\", \"Amount\", \"Cap\", \"Discount\", \"Date\"]);\n for (const s_ of safes) {\n table.push([\n formatReferenceCell(\"safe_note\", s_),\n s(s_.investor_name ?? s_.investor),\n money(s_.principal_amount_cents ?? s_.investment_amount ?? s_.amount, false),\n money(s_.valuation_cap_cents ?? s_.valuation_cap ?? s_.cap, false),\n s(s_.discount_rate ?? s_.discount),\n s(s_.issued_at ?? s_.date ?? s_.created_at),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printTransfersTable(transfers: ApiRecord[]): void {\n const table = makeTable(\"Share Transfers\", [\"Ref\", \"From\", \"To\", \"Shares\", \"Type\", \"Status\"]);\n for (const t of transfers) {\n table.push([\n formatReferenceCell(\"share_transfer\", t),\n s(t.from_holder ?? t.from),\n s(t.to_holder ?? t.to),\n s(t.shares ?? t.share_count),\n s(t.transfer_type),\n s(t.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printInstrumentsTable(instruments: ApiRecord[]): void {\n const table = makeTable(\"Instruments\", [\"Ref\", \"Symbol\", \"Kind\", \"Authorized\", \"Issued\", \"Status\"]);\n for (const instrument of instruments) {\n table.push([\n formatReferenceCell(\"instrument\", instrument),\n s(instrument.symbol),\n s(instrument.kind),\n s(instrument.authorized_units ?? \"unlimited\"),\n s(instrument.issued_units),\n s(instrument.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printShareClassesTable(shareClasses: ApiRecord[]): void {\n const table = makeTable(\"Share Classes\", [\"Ref\", \"Class\", \"Authorized\", \"Outstanding\"]);\n for (const shareClass of shareClasses) {\n table.push([\n formatReferenceCell(\"share_class\", shareClass),\n s(shareClass.class_code ?? shareClass.name ?? shareClass.share_class),\n s(shareClass.authorized),\n s(shareClass.outstanding),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printRoundsTable(rounds: ApiRecord[]): void {\n const table = makeTable(\"Equity Rounds\", [\"Ref\", \"Name\", \"Status\", \"Issuer\", \"Created\"]);\n for (const round of rounds) {\n table.push([\n formatReferenceCell(\"round\", round),\n s(round.name),\n s(round.status),\n s(round.issuer_legal_entity_id),\n date(round.created_at),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printInvoicesTable(invoices: ApiRecord[]): void {\n const table = makeTable(\"Invoices\", [\"Ref\", \"Customer\", \"Amount\", \"Due\", \"Status\"]);\n for (const invoice of invoices) {\n table.push([\n formatReferenceCell(\"invoice\", invoice),\n s(invoice.customer_name),\n money(invoice.amount_cents),\n date(invoice.due_date),\n s(invoice.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printBankAccountsTable(accounts: ApiRecord[]): void {\n const table = makeTable(\"Bank Accounts\", [\"Ref\", \"Bank\", \"Type\", \"Status\", \"Created\"]);\n for (const account of accounts) {\n table.push([\n formatReferenceCell(\"bank_account\", account),\n s(account.bank_name),\n s(account.account_type),\n s(account.status),\n date(account.created_at),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printPaymentsTable(payments: ApiRecord[]): void {\n const table = makeTable(\"Payments\", [\"Ref\", \"Recipient\", \"Amount\", \"Method\", \"Status\"]);\n for (const payment of payments) {\n table.push([\n formatReferenceCell(\"payment\", payment),\n s(payment.recipient),\n money(payment.amount_cents),\n s(payment.payment_method),\n s(payment.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printPayrollRunsTable(runs: ApiRecord[]): void {\n const table = makeTable(\"Payroll Runs\", [\"Ref\", \"Start\", \"End\", \"Status\", \"Created\"]);\n for (const run of runs) {\n table.push([\n formatReferenceCell(\"payroll_run\", run),\n date(run.pay_period_start),\n date(run.pay_period_end),\n s(run.status),\n date(run.created_at),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printDistributionsTable(distributions: ApiRecord[]): void {\n const table = makeTable(\"Distributions\", [\"Ref\", \"Type\", \"Amount\", \"Status\", \"Description\"]);\n for (const distribution of distributions) {\n table.push([\n formatReferenceCell(\"distribution\", distribution),\n s(distribution.distribution_type),\n money(distribution.total_amount_cents),\n s(distribution.status),\n s(distribution.description),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printReconciliationsTable(reconciliations: ApiRecord[]): void {\n const table = makeTable(\"Reconciliations\", [\"Ref\", \"As Of\", \"Debits\", \"Credits\", \"Status\"]);\n for (const reconciliation of reconciliations) {\n table.push([\n formatReferenceCell(\"reconciliation\", reconciliation),\n date(reconciliation.as_of_date),\n money(reconciliation.total_debits_cents),\n money(reconciliation.total_credits_cents),\n s(reconciliation.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printValuationsTable(valuations: ApiRecord[]): void {\n const table = makeTable(\"Valuations\", [\"Ref\", \"Date\", \"Type\", \"Valuation\", \"PPS\"]);\n for (const v of valuations) {\n table.push([\n formatReferenceCell(\"valuation\", v),\n date(v.effective_date ?? v.valuation_date ?? v.date),\n s(v.valuation_type ?? v.type),\n money(v.enterprise_value_cents ?? v.enterprise_value ?? v.valuation),\n money(v.fmv_per_share_cents ?? v.price_per_share ?? v.pps ?? v.fmv_per_share),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printTaxFilingsTable(filings: ApiRecord[]): void {\n const table = makeTable(\"Tax Filings\", [\"Ref\", \"Type\", \"Year\", \"Status\", \"Document\"]);\n for (const filing of filings) {\n table.push([\n formatReferenceCell(\"tax_filing\", filing),\n s(filing.document_type),\n s(filing.tax_year),\n s(filing.status),\n s(filing.document_id, 12),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printDeadlinesTable(deadlines: ApiRecord[]): void {\n const table = makeTable(\"Deadlines\", [\"Ref\", \"Type\", \"Due\", \"Status\", \"Description\"]);\n for (const deadline of deadlines) {\n table.push([\n formatReferenceCell(\"deadline\", deadline),\n s(deadline.deadline_type),\n date(deadline.due_date),\n s(deadline.status),\n s(deadline.description),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printClassificationsTable(classifications: ApiRecord[]): void {\n const table = makeTable(\"Contractor Classifications\", [\"Ref\", \"Contractor\", \"State\", \"Risk\", \"Result\"]);\n for (const classification of classifications) {\n table.push([\n formatReferenceCell(\"classification\", classification),\n s(classification.contractor_name),\n s(classification.state),\n s(classification.risk_level),\n s(classification.classification),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printGovernanceTable(bodies: ApiRecord[]): void {\n const table = makeTable(\"Governance Bodies\", [\"Ref\", \"Body\", \"Type\", \"Seats\", \"Meetings\"]);\n for (const b of bodies) {\n table.push([\n formatReferenceCell(\"body\", b),\n s(b.name),\n s(b.body_type ?? b.type),\n s(b.seat_count ?? b.seats),\n s(b.meeting_count ?? b.meetings),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printSeatsTable(seats: ApiRecord[]): void {\n const table = makeTable(\"Seats\", [\"Ref\", \"Holder\", \"Role\", \"Status\"]);\n for (const st of seats) {\n table.push([\n formatReferenceCell(\"seat\", st),\n s(st.holder_name ?? st.holder),\n s(st.role),\n s(st.status),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printMeetingsTable(meetings: ApiRecord[]): void {\n const table = makeTable(\"Meetings\", [\"Ref\", \"Title\", \"Date\", \"Status\", \"Resolutions\"]);\n for (const m of meetings) {\n table.push([\n formatReferenceCell(\"meeting\", m),\n s(m.title ?? m.name),\n s(m.scheduled_date ?? m.meeting_date ?? m.date),\n s(m.status),\n s(m.resolution_count ?? m.resolutions),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printResolutionsTable(resolutions: ApiRecord[]): void {\n const table = makeTable(\"Resolutions\", [\"Ref\", \"Title\", \"Type\", \"Status\", \"For\", \"Against\"]);\n for (const r of resolutions) {\n table.push([\n formatReferenceCell(\"resolution\", r),\n s(r.title),\n s(r.resolution_type ?? r.type),\n s(r.status),\n s(r.votes_for),\n s(r.votes_against),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printAgendaItemsTable(items: ApiRecord[]): void {\n const table = makeTable(\"Agenda Items\", [\"Ref\", \"Title\", \"Status\", \"Type\"]);\n for (const item of items) {\n table.push([\n formatReferenceCell(\"agenda_item\", item),\n s(item.title),\n s(item.status),\n s(item.item_type ?? item.type),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printDocumentsTable(docs: ApiRecord[]): void {\n const table = makeTable(\"Documents\", [\"Ref\", \"Title\", \"Type\", \"Date\", \"Status\", \"Signatures\"]);\n for (const d of docs) {\n const sigs = d.signatures;\n const sigStr = Array.isArray(sigs) ? `${sigs.length} signed` : s(sigs);\n table.push([\n formatReferenceCell(\"document\", d),\n s(d.title ?? d.name),\n s(d.document_type ?? d.type),\n s(d.date ?? d.created_at),\n s(d.status),\n sigStr,\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printWorkItemsTable(items: ApiRecord[]): void {\n const table = makeTable(\"Work Items\", [\"Ref\", \"Title\", \"Category\", \"Status\", \"Deadline\", \"Claimed By\"]);\n for (const w of items) {\n const status = s(w.effective_status ?? w.status);\n const colored =\n status === \"completed\" ? chalk.green(status) :\n status === \"claimed\" ? chalk.yellow(status) :\n status === \"cancelled\" ? chalk.dim(status) :\n status;\n table.push([\n formatReferenceCell(\"work_item\", w),\n s(w.title),\n s(w.category),\n colored,\n w.asap ? chalk.red.bold(\"ASAP\") : s(w.deadline ?? \"\"),\n actorLabel(w, \"claimed_by\"),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printAgentsTable(agents: ApiRecord[]): void {\n const table = makeTable(\"Agents\", [\"Ref\", \"Name\", \"Status\", \"Model\"]);\n for (const a of agents) {\n const status = s(a.status);\n const colored =\n status === \"active\" ? chalk.green(status) : status === \"paused\" ? chalk.yellow(status) : status;\n table.push([formatReferenceCell(\"agent\", a), s(a.name), colored, s(a.model)]);\n }\n console.log(table.toString());\n}\n\nexport function printApprovalsTable(approvals: ApiRecord[]): void {\n const table = makeTable(\"Pending Approvals\", [\"ID\", \"Type\", \"Requested By\", \"Description\", \"Created\"]);\n for (const a of approvals) {\n let desc = s(a.description ?? a.summary);\n if (desc.length > 60) desc = desc.slice(0, 57) + \"...\";\n table.push([\n s(a.approval_id ?? a.id, 12),\n s(a.approval_type ?? a.type),\n s(a.requested_by ?? a.requester),\n desc,\n s(a.created_at),\n ]);\n }\n console.log(table.toString());\n}\n\nexport function printBillingPanel(status: ApiRecord, plans: ApiRecord[]): void {\n const plan = s(status.plan ?? status.tier) || \"free\";\n const subStatus = s(status.status) || \"active\";\n const periodEnd = s(status.current_period_end);\n const explanation = s(status.status_explanation);\n\n console.log(chalk.green(\"─\".repeat(50)));\n console.log(chalk.green.bold(\" Billing Status\"));\n console.log(chalk.green(\"─\".repeat(50)));\n console.log(` ${chalk.bold(\"Plan:\")} ${plan}`);\n console.log(` ${chalk.bold(\"Status:\")} ${subStatus}`);\n if (periodEnd) console.log(` ${chalk.bold(\"Current Period End:\")} ${periodEnd}`);\n if (explanation) console.log(` ${chalk.bold(\"Explanation:\")} ${explanation}`);\n console.log(chalk.dim(\" Manage: corp billing portal\"));\n console.log(chalk.dim(\" Upgrade: corp billing upgrade --plan <plan>\"));\n console.log(chalk.green(\"─\".repeat(50)));\n\n if (plans.length > 0) {\n const table = makeTable(\"Available Plans\", [\"Plan\", \"Price\", \"Features\"]);\n for (const p of plans) {\n const amount = (p.price_cents ?? p.amount ?? 0) as number;\n const interval = s(p.interval);\n let priceStr = \"Free\";\n if (amount > 0) {\n priceStr = interval ? `$${Math.round(amount / 100)}/${interval}` : `$${Math.round(amount / 100)}`;\n }\n const name = s(p.name ?? p.plan_id ?? p.tier);\n const features = Array.isArray(p.features) ? (p.features as string[]).join(\", \") : s(p.description);\n table.push([name, priceStr, features]);\n }\n console.log(table.toString());\n }\n}\n","import { input, confirm } from \"@inquirer/prompts\";\nimport { loadConfig, saveConfig, validateApiUrl } from \"../config.js\";\nimport { provisionWorkspace } from \"../api-client.js\";\nimport { printSuccess, printError } from \"../output.js\";\n\nconst CLOUD_API_URL = \"https://api.thecorporation.ai\";\n\nasync function requestMagicLink(\n apiUrl: string,\n email: string,\n tosAccepted: boolean\n): Promise<void> {\n const resp = await fetch(`${apiUrl}/v1/auth/magic-link`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ email, tos_accepted: tosAccepted }),\n });\n if (!resp.ok) {\n const data = await resp.json().catch(() => ({}));\n const detail =\n (data as Record<string, unknown>)?.error ??\n (data as Record<string, unknown>)?.message ??\n resp.statusText;\n throw new Error(\n typeof detail === \"string\" ? detail : JSON.stringify(detail)\n );\n }\n}\n\nasync function verifyMagicLinkCode(\n apiUrl: string,\n code: string\n): Promise<{ api_key: string; workspace_id: string }> {\n const resp = await fetch(`${apiUrl}/v1/auth/magic-link/verify`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ code, client: \"cli\" }),\n });\n const data = (await resp.json().catch(() => ({}))) as Record<string, unknown>;\n if (!resp.ok) {\n const detail = data?.error ?? data?.message ?? resp.statusText;\n throw new Error(\n typeof detail === \"string\" ? detail : JSON.stringify(detail)\n );\n }\n if (!data.api_key || !data.workspace_id) {\n throw new Error(\"Unexpected response — missing api_key or workspace_id\");\n }\n return {\n api_key: data.api_key as string,\n workspace_id: data.workspace_id as string,\n };\n}\n\nfunction isCloudApi(url: string): boolean {\n return url.replace(/\\/+$/, \"\").includes(\"thecorporation.ai\");\n}\n\nasync function magicLinkAuth(\n apiUrl: string,\n email: string\n): Promise<{ api_key: string; workspace_id: string }> {\n console.log(\"\\nSending magic link to \" + email + \"...\");\n await requestMagicLink(apiUrl, email, true);\n console.log(\"Check your email for a sign-in link from TheCorporation.\");\n console.log(\n \"Copy the code from the URL (the ?code=... part) and paste it below.\\n\"\n );\n\n const code = await input({ message: \"Paste your magic link code\" });\n const trimmed = code.trim().replace(/^.*[?&]code=/, \"\");\n if (!trimmed) {\n throw new Error(\"No code provided\");\n }\n\n console.log(\"Verifying...\");\n return verifyMagicLinkCode(apiUrl, trimmed);\n}\n\nexport async function setupCommand(): Promise<void> {\n const cfg = loadConfig();\n console.log(\"Welcome to corp — corporate governance from the terminal.\\n\");\n\n // Determine API URL\n const customUrl = process.env.CORP_API_URL;\n if (customUrl) {\n try {\n cfg.api_url = validateApiUrl(customUrl);\n } catch (err) {\n printError(`Invalid CORP_API_URL: ${err}`);\n process.exit(1);\n }\n console.log(`Using API: ${cfg.api_url}\\n`);\n } else {\n cfg.api_url = CLOUD_API_URL;\n }\n\n console.log(\"--- User Info ---\");\n const user = cfg.user ?? { name: \"\", email: \"\" };\n user.name = await input({\n message: \"Your name\",\n default: user.name || undefined,\n });\n user.email = await input({\n message: \"Your email\",\n default: user.email || undefined,\n });\n cfg.user = user;\n\n const needsAuth = !cfg.api_key || !cfg.workspace_id;\n const cloud = isCloudApi(cfg.api_url);\n\n if (needsAuth) {\n if (cloud) {\n // Cloud API — authenticate via magic link\n try {\n const result = await magicLinkAuth(cfg.api_url, user.email);\n cfg.api_key = result.api_key;\n cfg.workspace_id = result.workspace_id;\n printSuccess(`Authenticated. Workspace: ${result.workspace_id}`);\n } catch (err) {\n printError(`Authentication failed: ${err}`);\n console.log(\n \"You can manually set credentials with: corp config set api_key <key>\"\n );\n }\n } else {\n // Self-hosted — provision directly (no auth required)\n console.log(\"\\nProvisioning workspace...\");\n try {\n const result = await provisionWorkspace(\n cfg.api_url,\n `${user.name}'s workspace`\n );\n cfg.api_key = result.api_key as string;\n cfg.workspace_id = result.workspace_id as string;\n console.log(`Workspace provisioned: ${result.workspace_id}`);\n } catch (err) {\n printError(`Auto-provision failed: ${err}`);\n console.log(\n \"You can manually set credentials with: corp config set api_key <key>\"\n );\n }\n }\n } else {\n console.log(\"\\nVerifying existing credentials...\");\n let keyValid = false;\n try {\n const resp = await fetch(\n `${cfg.api_url.replace(/\\/+$/, \"\")}/v1/workspaces/${cfg.workspace_id}/status`,\n { headers: { Authorization: `Bearer ${cfg.api_key}` } }\n );\n keyValid = resp.status !== 401;\n } catch {\n // network error — treat as potentially valid\n }\n\n if (keyValid) {\n console.log(\"Credentials OK.\");\n } else {\n console.log(\"API key is no longer valid.\");\n const reauth = await confirm({\n message: cloud\n ? \"Re-authenticate via magic link?\"\n : \"Provision a new workspace? (This will replace your current credentials)\",\n default: true,\n });\n if (reauth) {\n try {\n if (cloud) {\n const result = await magicLinkAuth(cfg.api_url, user.email);\n cfg.api_key = result.api_key;\n cfg.workspace_id = result.workspace_id;\n printSuccess(`Authenticated. Workspace: ${result.workspace_id}`);\n } else {\n const result = await provisionWorkspace(\n cfg.api_url,\n `${user.name}'s workspace`\n );\n cfg.api_key = result.api_key as string;\n cfg.workspace_id = result.workspace_id as string;\n console.log(`Workspace provisioned: ${result.workspace_id}`);\n }\n } catch (err) {\n printError(`Authentication failed: ${err}`);\n }\n } else {\n console.log(\n \"Keeping existing credentials. You can manually update with: corp config set api_key <key>\"\n );\n }\n }\n }\n\n saveConfig(cfg);\n console.log(\"\\nSettings saved to ~/.corp/config.json\");\n console.log(\"Credentials saved to ~/.corp/auth.json\");\n console.log(\"Run 'corp status' to verify your connection.\");\n}\n","/**\n * Rising cityscape boot animation — ported from packages/cli/corp/tui/widgets/mascot.py\n */\n\n// prettier-ignore\nconst BUILDINGS: string[][] = [\n [\n \" ┌┐ \",\n \" ││ \",\n \" ││ \",\n \" ┌┤├┐ \",\n \" │││││\",\n \" │││││\",\n ],\n [\n \" ╔══╗ \",\n \" ║▪▪║ \",\n \" ║▪▪║ \",\n \" ║▪▪║ \",\n \" ║▪▪║ \",\n \" ║▪▪║ \",\n \" ║▪▪║ \",\n \" ║▪▪║ \",\n ],\n [\n \" /\\\\ \",\n \" / \\\\ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n ],\n [\n \" ┌──┐ \",\n \" │≋≋│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n \" │▪▪│ \",\n ],\n [\n \" ╻ \",\n \" ┃ \",\n \" ┌┤┐ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n ],\n [\n \" ┌┐ \",\n \" ├┤ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n ],\n [\n \" ╔═══╗\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n \" ║▪ ▪║\",\n ],\n [\n \" ┬─┬ \",\n \" │~│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n \" │▪│ \",\n ],\n];\n\nconst MAX_HEIGHT = Math.max(...BUILDINGS.map((b) => b.length));\nconst TOTAL_FRAMES = MAX_HEIGHT + 4; // 15 frames, ~1.5s at 100ms\n\nconst GOLD = \"\\x1b[38;2;212;160;23m\";\nconst RESET = \"\\x1b[0m\";\n\nexport function renderFrame(frame: number): string {\n const cols: string[][] = [];\n for (let i = 0; i < BUILDINGS.length; i++) {\n const building = BUILDINGS[i];\n const h = building.length;\n const visible = Math.max(0, Math.min(h, frame - i));\n const width = building[0]?.length ?? 6;\n const blank = \" \".repeat(width);\n const col: string[] = Array(MAX_HEIGHT - visible).fill(blank);\n col.push(...building.slice(h - visible));\n cols.push(col);\n }\n\n const lines: string[] = [];\n for (let row = 0; row < MAX_HEIGHT; row++) {\n lines.push(cols.map((col) => col[row]).join(\"\"));\n }\n return lines.join(\"\\n\");\n}\n\n/**\n * Run an async function while displaying the rising cityscape animation.\n * No-ops when stdout is not a TTY (piped, CI, etc.).\n */\nexport async function withAnimation<T>(fn: () => Promise<T>): Promise<T> {\n if (!process.stdout.isTTY) {\n return fn();\n }\n\n let frame = 0;\n let animDone = false;\n const spinChars = [\"⠋\", \"⠙\", \"⠹\", \"⠸\", \"⠼\", \"⠴\", \"⠦\", \"⠧\", \"⠇\", \"⠏\"];\n let spinIdx = 0;\n let lastLineCount = 0;\n\n const clearPrev = () => {\n if (lastLineCount > 0) {\n process.stdout.write(`\\x1b[${lastLineCount}A\\x1b[0J`);\n }\n };\n\n const drawFrame = () => {\n clearPrev();\n if (!animDone) {\n const art = renderFrame(frame);\n const output = `${GOLD}${art}${RESET}\\n`;\n process.stdout.write(output);\n lastLineCount = MAX_HEIGHT + 1;\n frame++;\n if (frame >= TOTAL_FRAMES) {\n animDone = true;\n }\n } else {\n // Dot spinner fallback after animation finishes\n const line = `${GOLD}${spinChars[spinIdx % spinChars.length]} Loading...${RESET}\\n`;\n process.stdout.write(line);\n lastLineCount = 1;\n spinIdx++;\n }\n };\n\n drawFrame();\n const timer = setInterval(drawFrame, 100);\n\n try {\n const result = await fn();\n return result;\n } finally {\n clearInterval(timer);\n clearPrev();\n }\n}\n","import { withAnimation } from \"./animation.js\";\n\n/**\n * Run an async function with a loading animation.\n * Silently skipped when `json` is truthy (pure JSON output) or non-TTY.\n */\nexport async function withSpinner<T>(\n _label: string,\n fn: () => Promise<T>,\n json?: boolean,\n): Promise<T> {\n if (json) {\n return fn();\n }\n return withAnimation(fn);\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson, printStatusPanel } from \"../output.js\";\nimport { withSpinner } from \"../spinner.js\";\n\nexport async function statusCommand(opts: { json?: boolean } = {}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n try {\n const data = await withSpinner(\"Loading\", () => client.getStatus());\n if (opts.json) {\n printJson(data);\n } else {\n printStatusPanel(data);\n }\n } catch (err) {\n printError(`Failed to fetch status: ${err}`);\n process.exit(1);\n }\n}\n","import chalk from \"chalk\";\nimport { getActiveEntityId, loadConfig, requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson, printReferenceSummary } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\n\nexport async function contextCommand(opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const rawCfg = loadConfig();\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n const [status, entities] = await Promise.all([\n client.getStatus(),\n client.listEntities(),\n ]);\n await resolver.stabilizeRecords(\"entity\", entities);\n\n const activeEntityId = getActiveEntityId(rawCfg);\n const activeEntity = activeEntityId\n ? entities.find((entity) => entity.entity_id === activeEntityId) ?? null\n : null;\n\n const [contactsResult, documentsResult, workItemsResult] = activeEntity\n ? await Promise.allSettled([\n client.listContacts(String(activeEntity.entity_id)),\n client.getEntityDocuments(String(activeEntity.entity_id)),\n client.listWorkItems(String(activeEntity.entity_id)),\n ])\n : [null, null, null];\n\n const payload = {\n user: {\n name: rawCfg.user?.name ?? \"\",\n email: rawCfg.user?.email ?? \"\",\n },\n workspace: {\n workspace_id: rawCfg.workspace_id,\n api_url: rawCfg.api_url,\n status,\n },\n active_entity: activeEntity\n ? {\n entity: activeEntity,\n summary: {\n contact_count:\n contactsResult && contactsResult.status === \"fulfilled\"\n ? contactsResult.value.length\n : null,\n document_count:\n documentsResult && documentsResult.status === \"fulfilled\"\n ? documentsResult.value.length\n : null,\n work_item_count:\n workItemsResult && workItemsResult.status === \"fulfilled\"\n ? workItemsResult.value.length\n : null,\n },\n }\n : null,\n entity_count: entities.length,\n };\n\n if (opts.json) {\n printJson(payload);\n return;\n }\n\n console.log(chalk.blue(\"─\".repeat(50)));\n console.log(chalk.blue.bold(\" Corp Context\"));\n console.log(chalk.blue(\"─\".repeat(50)));\n console.log(` ${chalk.bold(\"User:\")} ${payload.user.name || \"N/A\"} <${payload.user.email || \"N/A\"}>`);\n console.log(` ${chalk.bold(\"Workspace:\")} ${rawCfg.workspace_id}`);\n console.log(` ${chalk.bold(\"API URL:\")} ${rawCfg.api_url}`);\n console.log(` ${chalk.bold(\"Entities:\")} ${entities.length}`);\n if (payload.active_entity) {\n console.log(` ${chalk.bold(\"Active Entity:\")} ${payload.active_entity.entity.legal_name ?? payload.active_entity.entity.entity_id}`);\n printReferenceSummary(\"entity\", payload.active_entity.entity, { label: \"Active Entity Ref:\" });\n console.log(` ${chalk.bold(\"Contacts:\")} ${payload.active_entity.summary.contact_count ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Documents:\")} ${payload.active_entity.summary.document_count ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Work Items:\")} ${payload.active_entity.summary.work_item_count ?? \"N/A\"}`);\n } else {\n console.log(` ${chalk.bold(\"Active Entity:\")} none`);\n }\n if (status.next_deadline) {\n console.log(` ${chalk.bold(\"Next Deadline:\")} ${status.next_deadline}`);\n }\n console.log(chalk.blue(\"─\".repeat(50)));\n } catch (err) {\n printError(`Failed to fetch context: ${err}`);\n process.exit(1);\n }\n}\n","import type { Command } from \"commander\";\nimport { printJson } from \"../output.js\";\n\ntype SchemaArgument = {\n name: string;\n required: boolean;\n variadic: boolean;\n defaultValue?: unknown;\n choices?: string[];\n};\n\ntype SchemaOption = {\n flags: string;\n name: string;\n description: string;\n required: boolean;\n mandatory: boolean;\n variadic: boolean;\n defaultValue?: unknown;\n choices?: string[];\n};\n\ntype SchemaCommand = {\n path: string;\n name: string;\n description: string;\n aliases: string[];\n arguments: SchemaArgument[];\n options: SchemaOption[];\n subcommands: SchemaCommand[];\n};\n\nfunction readChoices(value: unknown): string[] | undefined {\n if (Array.isArray(value) && value.every((entry) => typeof entry === \"string\")) {\n return value;\n }\n return undefined;\n}\n\nfunction commandToSchema(command: Command, parentPath = \"\"): SchemaCommand {\n const cmd = command as Command & {\n registeredArguments?: Array<{\n name: () => string;\n required?: boolean;\n variadic?: boolean;\n defaultValue?: unknown;\n argChoices?: unknown;\n }>;\n };\n\n const path = parentPath ? `${parentPath} ${command.name()}` : command.name();\n return {\n path,\n name: command.name(),\n description: command.description(),\n aliases: command.aliases(),\n arguments: (cmd.registeredArguments ?? []).map((arg) => ({\n name: arg.name(),\n required: Boolean(arg.required),\n variadic: Boolean(arg.variadic),\n defaultValue: arg.defaultValue,\n choices: readChoices(arg.argChoices),\n })),\n options: command.options.map((option) => ({\n flags: option.flags,\n name: option.attributeName(),\n description: option.description ?? \"\",\n required: option.required,\n mandatory: option.mandatory,\n variadic: option.variadic,\n defaultValue: option.defaultValue,\n choices: readChoices(option.argChoices),\n })),\n subcommands: command.commands.map((child) => commandToSchema(child, path)),\n };\n}\n\nexport function schemaCommand(program: Command, opts: { compact?: boolean }): void {\n const manifest = {\n name: program.name(),\n version: program.version(),\n description: program.description(),\n generated_at: new Date().toISOString(),\n commands: program.commands.map((command) => commandToSchema(command, program.name())),\n };\n if (opts.compact) {\n console.log(JSON.stringify(manifest));\n return;\n }\n printJson(manifest);\n}\n","import { configForDisplay, getValue, loadConfig, requireConfig, setValue, updateConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\n\nfunction looksLikeCanonicalId(value: string): boolean {\n const trimmed = value.trim();\n return /^[0-9a-f]{8}-[0-9a-f]{4}-[1-8][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i.test(trimmed)\n || /^ent_[a-z0-9-]+$/i.test(trimmed);\n}\n\nexport async function configSetCommand(\n key: string,\n value: string,\n options: { force?: boolean } = {},\n): Promise<void> {\n let resolvedValue = value;\n try {\n if (key === \"active_entity_id\" && !looksLikeCanonicalId(value)) {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n resolvedValue = await resolver.resolveEntity(value);\n }\n updateConfig((cfg) => {\n setValue(cfg as unknown as Record<string, unknown>, key, resolvedValue, {\n forceSensitive: options.force,\n });\n });\n } catch (err) {\n printError(`Failed to update config: ${err}`);\n process.exit(1);\n }\n\n if (key === \"api_key\" || key === \"llm.api_key\") {\n console.log(`${key} updated.`);\n return;\n }\n if (key === \"active_entity_id\") {\n console.log(`${key} updated to ${resolvedValue}.`);\n return;\n }\n console.log(`${key} updated.`);\n}\n\nexport function configGetCommand(key: string): void {\n const cfg = loadConfig();\n const val = getValue(cfg as unknown as Record<string, unknown>, key);\n if (val === undefined) {\n printError(`Key not found: ${key}`);\n process.exit(1);\n }\n if (typeof val === \"object\" && val !== null) {\n printJson(val);\n } else {\n console.log(String(val));\n }\n}\n\nexport function configListCommand(): void {\n const cfg = loadConfig();\n printJson(configForDisplay(cfg));\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson } from \"../output.js\";\nimport { ReferenceResolver, shortId, type ResourceKind } from \"../references.js\";\n\nconst KINDS = new Set<ResourceKind>([\n \"entity\",\n \"contact\",\n \"share_transfer\",\n \"invoice\",\n \"bank_account\",\n \"payment\",\n \"payroll_run\",\n \"distribution\",\n \"reconciliation\",\n \"tax_filing\",\n \"deadline\",\n \"classification\",\n \"body\",\n \"meeting\",\n \"seat\",\n \"agenda_item\",\n \"resolution\",\n \"document\",\n \"work_item\",\n \"agent\",\n \"valuation\",\n \"safe_note\",\n \"instrument\",\n \"share_class\",\n \"round\",\n]);\n\nconst ENTITY_SCOPED_KINDS = new Set<ResourceKind>([\n \"contact\",\n \"share_transfer\",\n \"invoice\",\n \"bank_account\",\n \"payment\",\n \"payroll_run\",\n \"distribution\",\n \"reconciliation\",\n \"tax_filing\",\n \"deadline\",\n \"classification\",\n \"body\",\n \"meeting\",\n \"seat\",\n \"agenda_item\",\n \"resolution\",\n \"document\",\n \"work_item\",\n \"valuation\",\n \"safe_note\",\n \"instrument\",\n \"share_class\",\n \"round\",\n]);\n\nexport async function resolveCommand(\n kind: string,\n ref: string,\n opts: { entityId?: string; bodyId?: string; meetingId?: string },\n): Promise<void> {\n const normalizedKind = kind.trim().toLowerCase() as ResourceKind;\n if (!KINDS.has(normalizedKind)) {\n printError(`Unsupported resolve kind: ${kind}`);\n process.exit(1);\n }\n\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n const entityId = ENTITY_SCOPED_KINDS.has(normalizedKind) || opts.entityId || opts.bodyId || opts.meetingId\n ? await resolver.resolveEntity(opts.entityId)\n : undefined;\n const bodyId = entityId && opts.bodyId ? await resolver.resolveBody(entityId, opts.bodyId) : undefined;\n const meetingId = entityId && opts.meetingId\n ? await resolver.resolveMeeting(entityId, opts.meetingId, bodyId)\n : undefined;\n\n let resolvedId: string;\n switch (normalizedKind) {\n case \"entity\":\n resolvedId = await resolver.resolveEntity(ref);\n break;\n case \"contact\":\n resolvedId = await resolver.resolveContact(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"share_transfer\":\n resolvedId = await resolver.resolveShareTransfer(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"invoice\":\n resolvedId = await resolver.resolveInvoice(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"bank_account\":\n resolvedId = await resolver.resolveBankAccount(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"payment\":\n resolvedId = await resolver.resolvePayment(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"payroll_run\":\n resolvedId = await resolver.resolvePayrollRun(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"distribution\":\n resolvedId = await resolver.resolveDistribution(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"reconciliation\":\n resolvedId = await resolver.resolveReconciliation(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"tax_filing\":\n resolvedId = await resolver.resolveTaxFiling(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"deadline\":\n resolvedId = await resolver.resolveDeadline(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"classification\":\n resolvedId = await resolver.resolveClassification(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"body\":\n resolvedId = await resolver.resolveBody(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"meeting\":\n resolvedId = await resolver.resolveMeeting(requiredEntity(entityId, normalizedKind), ref, bodyId);\n break;\n case \"seat\":\n resolvedId = await resolver.resolveSeat(requiredEntity(entityId, normalizedKind), ref, bodyId);\n break;\n case \"agenda_item\":\n resolvedId = await resolver.resolveAgendaItem(\n requiredEntity(entityId, normalizedKind),\n requiredMeeting(meetingId, normalizedKind),\n ref,\n );\n break;\n case \"resolution\":\n resolvedId = await resolver.resolveResolution(requiredEntity(entityId, normalizedKind), ref, meetingId);\n break;\n case \"document\":\n resolvedId = await resolver.resolveDocument(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"work_item\":\n resolvedId = await resolver.resolveWorkItem(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"agent\":\n resolvedId = await resolver.resolveAgent(ref);\n break;\n case \"valuation\":\n resolvedId = await resolver.resolveValuation(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"safe_note\":\n resolvedId = await resolver.resolveSafeNote(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"instrument\":\n resolvedId = await resolver.resolveInstrument(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"share_class\":\n resolvedId = await resolver.resolveShareClass(requiredEntity(entityId, normalizedKind), ref);\n break;\n case \"round\":\n resolvedId = await resolver.resolveRound(requiredEntity(entityId, normalizedKind), ref);\n break;\n }\n\n printJson({\n kind: normalizedKind,\n input: ref,\n resolved_id: resolvedId,\n short_id: shortId(resolvedId),\n ...(entityId ? { entity_id: entityId } : {}),\n ...(bodyId ? { body_id: bodyId } : {}),\n ...(meetingId ? { meeting_id: meetingId } : {}),\n });\n } catch (err) {\n printError(`Failed to resolve reference: ${err}`);\n process.exit(1);\n }\n}\n\nfunction requiredEntity(entityId: string | undefined, kind: ResourceKind): string {\n if (!entityId) {\n throw new Error(`--entity-id is required to resolve ${kind}.`);\n }\n return entityId;\n}\n\nfunction requiredMeeting(meetingId: string | undefined, kind: ResourceKind): string {\n if (!meetingId) {\n throw new Error(`--meeting-id is required to resolve ${kind}.`);\n }\n return meetingId;\n}\n","import chalk from \"chalk\";\nimport Table from \"cli-table3\";\nimport { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson } from \"../output.js\";\nimport { ReferenceResolver, type ResourceKind } from \"../references.js\";\n\nconst KINDS = new Set<ResourceKind>([\n \"entity\",\n \"contact\",\n \"share_transfer\",\n \"invoice\",\n \"bank_account\",\n \"payment\",\n \"payroll_run\",\n \"distribution\",\n \"reconciliation\",\n \"tax_filing\",\n \"deadline\",\n \"classification\",\n \"body\",\n \"meeting\",\n \"seat\",\n \"agenda_item\",\n \"resolution\",\n \"document\",\n \"work_item\",\n \"agent\",\n \"valuation\",\n \"safe_note\",\n \"instrument\",\n \"share_class\",\n \"round\",\n]);\n\nconst ENTITY_SCOPED_KINDS = new Set<ResourceKind>([\n \"contact\",\n \"share_transfer\",\n \"invoice\",\n \"bank_account\",\n \"payment\",\n \"payroll_run\",\n \"distribution\",\n \"reconciliation\",\n \"tax_filing\",\n \"deadline\",\n \"classification\",\n \"body\",\n \"meeting\",\n \"seat\",\n \"agenda_item\",\n \"resolution\",\n \"document\",\n \"work_item\",\n \"valuation\",\n \"safe_note\",\n \"instrument\",\n \"share_class\",\n \"round\",\n]);\n\nexport async function findCommand(\n kind: string,\n query: string,\n opts: { entityId?: string; bodyId?: string; meetingId?: string; json?: boolean },\n): Promise<void> {\n const normalizedKind = kind.trim().toLowerCase() as ResourceKind;\n if (!KINDS.has(normalizedKind)) {\n printError(`Unsupported find kind: ${kind}`);\n process.exit(1);\n }\n\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n const entityId = ENTITY_SCOPED_KINDS.has(normalizedKind) || opts.entityId || opts.bodyId || opts.meetingId\n ? await resolver.resolveEntity(opts.entityId)\n : undefined;\n const bodyId = entityId && opts.bodyId ? await resolver.resolveBody(entityId, opts.bodyId) : undefined;\n const meetingId = entityId && opts.meetingId\n ? await resolver.resolveMeeting(entityId, opts.meetingId, bodyId)\n : undefined;\n\n const matches = await resolver.find(normalizedKind, query, { entityId, bodyId, meetingId });\n if (opts.json) {\n printJson({\n kind: normalizedKind,\n query,\n ...(entityId ? { entity_id: entityId } : {}),\n ...(bodyId ? { body_id: bodyId } : {}),\n ...(meetingId ? { meeting_id: meetingId } : {}),\n matches: matches.map((match) => ({\n kind: match.kind,\n id: match.id,\n short_id: match.short_id,\n alias: match.alias,\n label: match.label,\n })),\n });\n return;\n }\n\n if (matches.length === 0) {\n console.log(`No ${normalizedKind.replaceAll(\"_\", \" \")} matches for \"${query}\".`);\n return;\n }\n\n const table = new Table({\n head: [\n chalk.dim(\"Short\"),\n chalk.dim(\"Alias\"),\n chalk.dim(\"Label\"),\n chalk.dim(\"ID\"),\n ],\n });\n for (const match of matches) {\n table.push([\n match.short_id,\n match.alias ?? \"\",\n match.label,\n match.id,\n ]);\n }\n console.log(table.toString());\n } catch (err) {\n printError(`Failed to find references: ${err}`);\n process.exit(1);\n }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printObligationsTable, printError, printJson } from \"../output.js\";\n\nexport async function obligationsCommand(opts: { tier?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n try {\n const data = await client.getObligations(opts.tier);\n const obligations = (data.obligations ?? []) as Record<string, unknown>[];\n if (opts.json) printJson(obligations);\n else if (obligations.length === 0) console.log(\"No obligations found.\");\n else printObligationsTable(obligations);\n } catch (err) { printError(`Failed to fetch obligations: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printSuccess, printJson, printWarning } from \"../output.js\";\n\nexport async function digestCommand(opts: { trigger?: boolean; key?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n try {\n if (opts.trigger) {\n const result = await client.triggerDigest();\n const message = (() => {\n const value = (result as Record<string, unknown>).message;\n return typeof value === \"string\" && value.trim() ? value : null;\n })();\n if (!opts.json) {\n printSuccess(result.digest_count > 0 ? \"Digest triggered.\" : \"Digest trigger accepted.\");\n }\n if (message && !opts.json) {\n printWarning(message);\n }\n printJson(result);\n } else if (opts.key) {\n const result = await client.getDigest(opts.key);\n printJson(result);\n } else {\n const digests = await client.listDigests();\n if (digests.length === 0) console.log(\"No digest history found.\");\n else printJson(digests);\n }\n } catch (err) { printError(`Failed: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printSuccess } from \"../output.js\";\n\nexport async function linkCommand(opts: { externalId: string; provider: string }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n try {\n const data = await client.createLink(opts.externalId, opts.provider);\n printSuccess(`Workspace linked to ${opts.provider} (external ID: ${opts.externalId})`);\n if (data.workspace_id) console.log(` Workspace: ${data.workspace_id}`);\n } catch (err) {\n printError(`${err}`);\n process.exit(1);\n }\n}\n","import { loadConfig, saveConfig } from \"../config.js\";\nimport { printError } from \"../output.js\";\n\nexport async function claimCommand(code: string): Promise<void> {\n const cfg = loadConfig();\n const apiUrl = (cfg.api_url || \"https://api.thecorporation.ai\").replace(/\\/+$/, \"\");\n try {\n const resp = await fetch(`${apiUrl}/v1/workspaces/claim`, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ code }),\n });\n if (!resp.ok) {\n let detail = \"\";\n try { const body = await resp.json() as Record<string, string>; detail = body.detail ?? \"\"; } catch { /* ignore */ }\n printError(detail || `${resp.status} ${resp.statusText}`);\n process.exit(1);\n }\n const data = await resp.json() as Record<string, string>;\n cfg.api_key = data.api_key;\n cfg.workspace_id = data.workspace_id;\n saveConfig(cfg);\n console.log(`Workspace joined: ${data.workspace_id}`);\n console.log(\"Credentials saved to ~/.corp/auth.json\");\n console.log(\"Settings remain in ~/.corp/config.json\");\n } catch (err) {\n printError(`${err}`);\n process.exit(1);\n }\n}\n","import type { ToolCall, LLMResponse } from \"./types.js\";\n\nconst PROVIDER_BASE_URLS: Record<string, string> = {\n openrouter: \"https://openrouter.ai/api/v1\",\n};\n\nexport async function chat(\n messages: Record<string, unknown>[],\n tools?: Record<string, unknown>[],\n provider = \"anthropic\",\n apiKey = \"\",\n model = \"\",\n baseUrl?: string,\n): Promise<LLMResponse> {\n if (provider === \"anthropic\") {\n return chatAnthropic(messages, tools, apiKey, model);\n } else if (provider === \"openai\" || provider === \"openrouter\") {\n const effectiveUrl = baseUrl ?? PROVIDER_BASE_URLS[provider];\n return chatOpenAI(messages, tools, apiKey, model, effectiveUrl);\n }\n throw new Error(`Unknown LLM provider: ${provider}`);\n}\n\nasync function chatAnthropic(\n messages: Record<string, unknown>[],\n tools?: Record<string, unknown>[],\n apiKey = \"\",\n model = \"\",\n): Promise<LLMResponse> {\n const { default: Anthropic } = await import(\"@anthropic-ai/sdk\");\n const client = new Anthropic({ apiKey });\n\n let systemText = \"\";\n const convMessages: Record<string, unknown>[] = [];\n\n for (const msg of messages) {\n if (msg.role === \"system\") {\n systemText = msg.content as string;\n } else if (msg.role === \"tool\") {\n convMessages.push({\n role: \"user\",\n content: [{\n type: \"tool_result\",\n tool_use_id: msg.tool_call_id,\n content: msg.content,\n }],\n });\n } else if (msg.role === \"assistant\" && msg.tool_calls) {\n const contentBlocks: Record<string, unknown>[] = [];\n if (msg.content) contentBlocks.push({ type: \"text\", text: msg.content });\n for (const tc of msg.tool_calls as Record<string, unknown>[]) {\n const fn = tc.function as Record<string, unknown>;\n let args = fn.arguments;\n if (typeof args === \"string\") args = JSON.parse(args);\n contentBlocks.push({ type: \"tool_use\", id: tc.id, name: fn.name, input: args });\n }\n convMessages.push({ role: \"assistant\", content: contentBlocks });\n } else {\n convMessages.push({ role: msg.role, content: msg.content ?? \"\" });\n }\n }\n\n let anthropicTools: Record<string, unknown>[] | undefined;\n if (tools?.length) {\n anthropicTools = tools.map((t) => {\n const fn = (t as Record<string, unknown>).function as Record<string, unknown>;\n return {\n name: fn.name,\n description: fn.description ?? \"\",\n input_schema: fn.parameters ?? { type: \"object\", properties: {} },\n };\n });\n }\n\n const kwargs: Record<string, unknown> = {\n model: model || \"claude-sonnet-4-20250514\",\n max_tokens: 4096,\n messages: convMessages,\n };\n if (systemText) kwargs.system = systemText;\n if (anthropicTools) kwargs.tools = anthropicTools;\n\n const response = await client.messages.create(kwargs as Parameters<typeof client.messages.create>[0]);\n\n let content: string | null = null;\n const toolCallsOut: ToolCall[] = [];\n for (const block of response.content) {\n if (block.type === \"text\") {\n content = block.text;\n } else if (block.type === \"tool_use\") {\n toolCallsOut.push({\n id: block.id,\n name: block.name,\n arguments: typeof block.input === \"object\" ? (block.input as Record<string, unknown>) : {},\n });\n }\n }\n\n return {\n content,\n tool_calls: toolCallsOut,\n usage: {\n prompt_tokens: response.usage.input_tokens,\n completion_tokens: response.usage.output_tokens,\n total_tokens: response.usage.input_tokens + response.usage.output_tokens,\n },\n finish_reason: response.stop_reason ?? null,\n };\n}\n\nasync function chatOpenAI(\n messages: Record<string, unknown>[],\n tools?: Record<string, unknown>[],\n apiKey = \"\",\n model = \"\",\n baseUrl?: string,\n): Promise<LLMResponse> {\n const { default: OpenAI } = await import(\"openai\");\n const clientOpts: Record<string, unknown> = { apiKey };\n if (baseUrl) clientOpts.baseURL = baseUrl;\n const client = new OpenAI(clientOpts as ConstructorParameters<typeof OpenAI>[0]);\n\n const kwargs: Record<string, unknown> = {\n model: model || \"gpt-4o\",\n messages,\n max_tokens: 4096,\n };\n if (tools?.length) {\n kwargs.tools = tools;\n kwargs.tool_choice = \"auto\";\n }\n\n const response = await client.chat.completions.create(kwargs as Parameters<typeof client.chat.completions.create>[0]);\n const choice = response.choices[0];\n const message = choice.message;\n\n const toolCallsOut: ToolCall[] = [];\n if (message.tool_calls) {\n for (const tc of message.tool_calls) {\n let args: Record<string, unknown>;\n try {\n args = JSON.parse(tc.function.arguments);\n } catch {\n args = { _raw: tc.function.arguments };\n }\n toolCallsOut.push({ id: tc.id, name: tc.function.name, arguments: args });\n }\n }\n\n return {\n content: message.content,\n tool_calls: toolCallsOut,\n usage: {\n prompt_tokens: response.usage?.prompt_tokens ?? 0,\n completion_tokens: response.usage?.completion_tokens ?? 0,\n total_tokens: response.usage?.total_tokens ?? 0,\n },\n finish_reason: choice.finish_reason ?? null,\n };\n}\n","import {\n TOOL_DEFINITIONS as _TOOL_DEFINITIONS,\n isWriteTool as _isWriteTool,\n executeTool as _executeTool,\n} from \"@thecorporation/corp-tools\";\nimport type { CorpAPIClient } from \"@thecorporation/corp-tools\";\nimport { setActiveEntityId, updateConfig } from \"./config.js\";\nimport { join } from \"node:path\";\nimport { homedir } from \"node:os\";\n\nexport const TOOL_DEFINITIONS = _TOOL_DEFINITIONS;\nexport const isWriteTool: (name: string, args?: Record<string, unknown>) => boolean = _isWriteTool;\n\nexport async function executeTool(\n name: string,\n args: Record<string, unknown>,\n client: CorpAPIClient,\n): Promise<string> {\n return _executeTool(name, args, client, {\n dataDir: join(homedir(), \".corp\"),\n onEntityFormed: (entityId) => {\n try {\n updateConfig((cfg) => {\n setActiveEntityId(cfg, entityId);\n });\n } catch { /* ignore */ }\n },\n });\n}\n","import { createInterface } from \"node:readline\";\nimport chalk from \"chalk\";\nimport { requireConfig, configForDisplay, getValue, setValue, saveConfig } from \"./config.js\";\nimport { CorpAPIClient } from \"./api-client.js\";\nimport { chat as llmChat } from \"./llm.js\";\nimport { TOOL_DEFINITIONS, executeTool, isWriteTool } from \"./tools.js\";\nimport { printError, printStatusPanel, printObligationsTable, printJson } from \"./output.js\";\nimport type { CorpConfig, LLMResponse, ToolCall } from \"./types.js\";\n\nconst SYSTEM_PROMPT = `You are **corp**, an AI assistant for corporate governance.\nYou help users manage their companies — entities, cap tables, compliance, governance, finances, and more.\nYou have tools to read and write corporate data. Use them to fulfill user requests.\nFor write operations, confirm with the user before proceeding.\nMonetary values are in cents (e.g. 100000 = $1,000.00).\nDocuments must be signed by the human — you cannot sign on their behalf.\nAfter completing actions, suggest logical next steps.`;\n\nexport async function chatCommand(): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\", \"llm.api_key\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n\n const messages: Record<string, unknown>[] = [{ role: \"system\", content: SYSTEM_PROMPT }];\n let totalTokens = 0;\n\n const rl = createInterface({ input: process.stdin, output: process.stdout });\n const prompt = () => new Promise<string>((resolve) => rl.question(chalk.green.bold(\"> \"), resolve));\n\n console.log(chalk.blue.bold(\"corp chat\") + \" — type /help for commands, /quit to exit\\n\");\n\n const slashHandlers: Record<string, (args: string) => void> = {\n \"/status\": async () => {\n try { printStatusPanel(await client.getStatus()); } catch (e) { printError(`Status error: ${e}`); }\n },\n \"/obligations\": async () => {\n try {\n const data = await client.getObligations();\n const obls = (data.obligations ?? []) as Record<string, unknown>[];\n if (obls.length) printObligationsTable(obls);\n else console.log(chalk.dim(\"No obligations found.\"));\n } catch (e) { printError(`Obligations error: ${e}`); }\n },\n \"/digest\": async () => {\n try {\n const digests = await client.listDigests();\n if (digests.length) printJson(digests);\n else console.log(chalk.dim(\"No digest history.\"));\n } catch (e) { printError(`Digest error: ${e}`); }\n },\n \"/config\": () => printJson(configForDisplay(cfg)),\n \"/model\": (args: string) => {\n const model = args.trim();\n if (!model) { console.log(`Current model: ${getValue(cfg as unknown as Record<string, unknown>, \"llm.model\")}`); return; }\n setValue(cfg as unknown as Record<string, unknown>, \"llm.model\", model);\n saveConfig(cfg);\n console.log(`Model switched to: ${model}`);\n },\n \"/cost\": () => console.log(`Session tokens used: ${totalTokens.toLocaleString()}`),\n \"/clear\": () => {\n messages.length = 0;\n messages.push({ role: \"system\", content: SYSTEM_PROMPT });\n totalTokens = 0;\n console.log(chalk.dim(\"Conversation cleared.\"));\n },\n \"/help\": () => {\n console.log(`\n${chalk.bold(\"Chat Slash Commands\")}\n /status Show workspace status\n /obligations List obligations\n /digest Show digest history\n /config Show current config (masked keys)\n /model <name> Switch LLM model\n /cost Show token usage\n /clear Clear conversation\n /help Show this help\n /quit Exit chat`);\n },\n };\n\n try {\n while (true) {\n let userInput: string;\n try {\n userInput = (await prompt()).trim();\n } catch {\n console.log(\"\\n\" + chalk.dim(\"Goodbye.\"));\n break;\n }\n\n if (!userInput) continue;\n\n if (userInput.startsWith(\"/\")) {\n const [cmd, ...rest] = userInput.split(/\\s+/);\n const args = rest.join(\" \");\n if (cmd === \"/quit\" || cmd === \"/exit\") {\n console.log(chalk.dim(\"Goodbye.\"));\n break;\n }\n const handler = slashHandlers[cmd.toLowerCase()];\n if (handler) { await handler(args); continue; }\n printError(`Unknown command: ${cmd}. Type /help for available commands.`);\n continue;\n }\n\n messages.push({ role: \"user\", content: userInput });\n\n const llmCfg = cfg.llm;\n while (true) {\n let response: LLMResponse;\n try {\n response = await llmChat(\n messages, TOOL_DEFINITIONS, llmCfg.provider, llmCfg.api_key, llmCfg.model, llmCfg.base_url,\n );\n } catch (err) {\n printError(`LLM error: ${err}`);\n break;\n }\n\n totalTokens += response.usage.total_tokens;\n\n const assistantMsg: Record<string, unknown> = { role: \"assistant\", content: response.content };\n if (response.tool_calls.length > 0) {\n assistantMsg.tool_calls = response.tool_calls.map((tc) => ({\n id: tc.id, type: \"function\",\n function: { name: tc.name, arguments: JSON.stringify(tc.arguments) },\n }));\n if (!response.content) assistantMsg.content = null;\n }\n messages.push(assistantMsg);\n\n if (response.tool_calls.length === 0) {\n if (response.content) console.log(\"\\n\" + response.content + \"\\n\");\n break;\n }\n\n for (const tc of response.tool_calls) {\n console.log(chalk.dim(` ${isWriteTool(tc.name, tc.arguments) ? \"\\u2699\" : \"\\u2139\"} ${tc.name}(${JSON.stringify(tc.arguments).slice(0, 80)})`));\n const result = await executeTool(tc.name, tc.arguments, client);\n const short = result.length > 200 ? result.slice(0, 197) + \"...\" : result;\n console.log(chalk.dim(` => ${short}`));\n messages.push({ role: \"tool\", tool_call_id: tc.id, content: result });\n }\n }\n }\n } finally {\n rl.close();\n }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printEntitiesTable, printError, printReferenceSummary, printSuccess, printJson } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport { withSpinner } from \"../spinner.js\";\nimport chalk from \"chalk\";\n\nexport async function entitiesCommand(opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n const jsonOutput = Boolean(opts.json);\n try {\n const entities = await withSpinner(\"Loading\", () => client.listEntities(), jsonOutput);\n await resolver.stabilizeRecords(\"entity\", entities);\n if (jsonOutput) {\n printJson(entities);\n } else if (entities.length === 0) {\n console.log(\"No entities found.\");\n } else {\n printEntitiesTable(entities);\n }\n } catch (err) {\n printError(`Failed to fetch entities: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function entitiesShowCommand(entityId: string, opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n const jsonOutput = Boolean(opts.json);\n try {\n const resolvedEntityId = await resolver.resolveEntity(entityId);\n const entities = await client.listEntities();\n const entity = entities.find((e) => e.entity_id === resolvedEntityId);\n if (!entity) {\n printError(`Entity not found: ${entityId}`);\n process.exit(1);\n }\n await resolver.stabilizeRecord(\"entity\", entity);\n if (jsonOutput) {\n printJson(entity);\n } else {\n console.log(chalk.blue(\"─\".repeat(40)));\n console.log(chalk.blue.bold(\" Entity Detail\"));\n console.log(chalk.blue(\"─\".repeat(40)));\n console.log(` ${chalk.bold(\"Name:\")} ${entity.legal_name ?? entity.name ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Type:\")} ${entity.entity_type ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Jurisdiction:\")} ${entity.jurisdiction ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Status:\")} ${entity.formation_status ?? entity.status ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"State:\")} ${entity.formation_state ?? \"N/A\"}`);\n printReferenceSummary(\"entity\", entity, { showReuseHint: true });\n if (entity.formation_date) console.log(` ${chalk.bold(\"Formation Date:\")} ${entity.formation_date}`);\n if (entity.ein) console.log(` ${chalk.bold(\"EIN:\")} ${entity.ein}`);\n console.log(chalk.blue(\"─\".repeat(40)));\n }\n } catch (err) {\n printError(`Failed to fetch entities: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function entitiesConvertCommand(\n entityId: string,\n opts: { to: string; jurisdiction?: string }\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const resolvedEntityId = await resolver.resolveEntity(entityId);\n const data: Record<string, string> = { target_type: opts.to };\n if (opts.jurisdiction) data.new_jurisdiction = opts.jurisdiction;\n const result = await client.convertEntity(resolvedEntityId, data);\n printSuccess(`Entity conversion initiated: ${result.conversion_id ?? \"OK\"}`);\n printJson(result);\n } catch (err) {\n printError(`Failed to convert entity: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function entitiesDissolveCommand(\n entityId: string,\n opts: { reason: string; effectiveDate?: string }\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const resolvedEntityId = await resolver.resolveEntity(entityId);\n const data: Record<string, string> = { reason: opts.reason };\n if (opts.effectiveDate) data.effective_date = opts.effectiveDate;\n const result = await client.dissolveEntity(resolvedEntityId, data);\n printSuccess(`Dissolution initiated: ${result.dissolution_id ?? \"OK\"}`);\n printJson(result);\n } catch (err) {\n const msg = String(err);\n if (msg.includes(\"InvalidTransition\") || msg.includes(\"422\")) {\n printError(`Cannot dissolve entity: only entities with 'active' status can be dissolved. Check the entity's current status with: corp entities show ${entityId}`);\n } else {\n printError(`Failed to dissolve entity: ${err}`);\n }\n process.exit(1);\n }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printContactsTable, printError, printJson, printReferenceSummary, printWriteResult } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport chalk from \"chalk\";\nimport type { ApiRecord } from \"../types.js\";\n\nexport async function contactsListCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const contacts = await client.listContacts(eid);\n await resolver.stabilizeRecords(\"contact\", contacts, eid);\n if (opts.json) printJson(contacts);\n else if (contacts.length === 0) console.log(\"No contacts found.\");\n else printContactsTable(contacts);\n } catch (err) {\n printError(`Failed to fetch contacts: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function contactsShowCommand(contactId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedContactId = await resolver.resolveContact(eid, contactId);\n const profile = await client.getContactProfile(resolvedContactId, eid);\n const contact = await resolver.stabilizeRecord(\"contact\", (profile.contact ?? profile) as ApiRecord, eid);\n if (opts.json) {\n printJson(profile);\n } else {\n console.log(chalk.cyan(\"─\".repeat(40)));\n console.log(chalk.cyan.bold(\" Contact Profile\"));\n console.log(chalk.cyan(\"─\".repeat(40)));\n console.log(` ${chalk.bold(\"Name:\")} ${contact.name ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Email:\")} ${contact.email ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Category:\")} ${contact.category ?? \"N/A\"}`);\n printReferenceSummary(\"contact\", contact, { showReuseHint: true });\n if (contact.phone) console.log(` ${chalk.bold(\"Phone:\")} ${contact.phone}`);\n if (contact.notes) console.log(` ${chalk.bold(\"Notes:\")} ${contact.notes}`);\n const holdings = profile.equity_holdings as ApiRecord[] | undefined;\n if (holdings?.length) {\n console.log(`\\n ${chalk.bold(\"Equity Holdings:\")}`);\n for (const h of holdings) console.log(` ${h.share_class ?? \"?\"}: ${h.shares ?? \"?\"} shares`);\n }\n const obls = profile.obligations as unknown[];\n if (obls?.length) console.log(`\\n ${chalk.bold(\"Obligations:\")} ${obls.length}`);\n console.log(chalk.cyan(\"─\".repeat(40)));\n }\n } catch (err) {\n printError(`Failed to fetch contact: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function contactsAddCommand(opts: {\n entityId?: string;\n name: string;\n email: string;\n type?: string;\n category?: string;\n capTableAccess?: string;\n phone?: string;\n notes?: string;\n mailingAddress?: string;\n address?: string;\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const data: ApiRecord = {\n entity_id: eid,\n contact_type: opts.type ?? \"individual\",\n name: opts.name,\n email: opts.email,\n category: opts.category ?? \"employee\",\n };\n if (opts.phone) data.phone = opts.phone;\n if (opts.notes) data.notes = opts.notes;\n if (opts.mailingAddress ?? opts.address) data.mailing_address = opts.mailingAddress ?? opts.address;\n if (opts.capTableAccess) data.cap_table_access = opts.capTableAccess;\n const result = await client.createContact(data);\n await resolver.stabilizeRecord(\"contact\", result, eid);\n resolver.rememberFromRecord(\"contact\", result, eid);\n printWriteResult(\n result,\n `Contact created: ${result.contact_id ?? result.id ?? \"OK\"}`,\n { jsonOnly: opts.json, referenceKind: \"contact\", showReuseHint: true },\n );\n } catch (err) {\n printError(`Failed to create contact: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function contactsEditCommand(\n contactId: string,\n opts: {\n entityId?: string;\n name?: string;\n email?: string;\n category?: string;\n capTableAccess?: string;\n phone?: string;\n notes?: string;\n mailingAddress?: string;\n address?: string;\n json?: boolean;\n }\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedContactId = await resolver.resolveContact(eid, contactId);\n const data: ApiRecord = { entity_id: eid };\n let hasUpdates = false;\n if (opts.name != null) {\n data.name = opts.name;\n hasUpdates = true;\n }\n if (opts.email != null) {\n data.email = opts.email;\n hasUpdates = true;\n }\n if (opts.category != null) {\n data.category = opts.category;\n hasUpdates = true;\n }\n if (opts.phone != null) {\n data.phone = opts.phone;\n hasUpdates = true;\n }\n if (opts.notes != null) {\n data.notes = opts.notes;\n hasUpdates = true;\n }\n if (opts.capTableAccess != null) {\n data.cap_table_access = opts.capTableAccess;\n hasUpdates = true;\n }\n if (opts.mailingAddress != null || opts.address != null) {\n data.mailing_address = opts.mailingAddress ?? opts.address;\n hasUpdates = true;\n }\n if (!hasUpdates) {\n console.log(\"No fields to update.\");\n return;\n }\n const result = await client.updateContact(resolvedContactId, data);\n resolver.remember(\"contact\", resolvedContactId, eid);\n printWriteResult(result, \"Contact updated.\", opts.json);\n } catch (err) {\n printError(`Failed to update contact: ${err}`);\n process.exit(1);\n }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport {\n printCapTable,\n printDryRun,\n printError,\n printInstrumentsTable,\n printJson,\n printReferenceSummary,\n printRoundsTable,\n printSafesTable,\n printShareClassesTable,\n printSuccess,\n printTransfersTable,\n printValuationsTable,\n printWriteResult,\n} from \"../output.js\";\nimport { ReferenceResolver, shortId } from \"../references.js\";\nimport type { ApiRecord } from \"../types.js\";\nimport chalk from \"chalk\";\n\ntype CapTableInstrument = {\n instrument_id: string;\n kind: string;\n symbol: string;\n status?: string;\n};\n\nfunction normalizedGrantType(grantType: string): string {\n return grantType.trim().toLowerCase().replaceAll(\"-\", \"_\").replaceAll(\" \", \"_\");\n}\n\nfunction expectedInstrumentKinds(grantType: string): string[] {\n switch (normalizedGrantType(grantType)) {\n case \"common\":\n case \"common_stock\":\n return [\"common_equity\"];\n case \"preferred\":\n case \"preferred_stock\":\n return [\"preferred_equity\"];\n case \"unit\":\n case \"membership_unit\":\n return [\"membership_unit\"];\n case \"option\":\n case \"options\":\n case \"stock_option\":\n case \"iso\":\n case \"nso\":\n return [\"option_grant\"];\n case \"rsa\":\n return [\"common_equity\", \"preferred_equity\"];\n default:\n return [];\n }\n}\n\nfunction grantRequiresCurrent409a(grantType: string, instrumentKind?: string): boolean {\n return instrumentKind?.toLowerCase() === \"option_grant\" || expectedInstrumentKinds(grantType).includes(\"option_grant\");\n}\n\nfunction buildInstrumentCreationHint(grantType: string): string {\n const normalized = normalizedGrantType(grantType);\n switch (normalized) {\n case \"preferred\":\n case \"preferred_stock\":\n return \"Create one with: corp cap-table create-instrument --kind preferred_equity --symbol SERIES-A --authorized-units <shares>\";\n case \"option\":\n case \"options\":\n case \"stock_option\":\n case \"iso\":\n case \"nso\":\n return \"Create one with: corp cap-table create-instrument --kind option_grant --symbol OPTION-PLAN --authorized-units <shares>\";\n case \"membership_unit\":\n case \"unit\":\n return \"Create one with: corp cap-table create-instrument --kind membership_unit --symbol UNIT --authorized-units <units>\";\n case \"common\":\n case \"common_stock\":\n return \"Create one with: corp cap-table create-instrument --kind common_equity --symbol COMMON --authorized-units <shares>\";\n default:\n return \"Create a matching instrument first, then pass --instrument-id explicitly.\";\n }\n}\n\nfunction resolveInstrumentForGrant(\n instruments: CapTableInstrument[],\n grantType: string,\n explicitInstrumentId?: string,\n): CapTableInstrument {\n if (explicitInstrumentId) {\n const explicit = instruments.find((instrument) => instrument.instrument_id === explicitInstrumentId);\n if (!explicit) {\n throw new Error(`Instrument ${explicitInstrumentId} was not found on the cap table.`);\n }\n return explicit;\n }\n\n const expectedKinds = expectedInstrumentKinds(grantType);\n if (expectedKinds.length === 0) {\n throw new Error(\n `No default instrument mapping exists for grant type \"${grantType}\". ${buildInstrumentCreationHint(grantType)}`,\n );\n }\n const match = instruments.find((instrument) => expectedKinds.includes(String(instrument.kind).toLowerCase()));\n if (!match) {\n throw new Error(\n `No instrument found for grant type \"${grantType}\". Expected one of: ${expectedKinds.join(\", \")}. ${buildInstrumentCreationHint(grantType)}`,\n );\n }\n return match;\n}\n\nasync function entityHasActiveBoard(client: CorpAPIClient, entityId: string): Promise<boolean> {\n const bodies = await client.listGovernanceBodies(entityId);\n return bodies.some((body) =>\n String(body.body_type ?? \"\").toLowerCase() === \"board_of_directors\"\n && String(body.status ?? \"active\").toLowerCase() === \"active\"\n );\n}\n\nasync function ensureIssuancePreflight(\n client: CorpAPIClient,\n entityId: string,\n grantType: string,\n instrument?: CapTableInstrument,\n meetingId?: string,\n resolutionId?: string,\n): Promise<void> {\n if (!meetingId || !resolutionId) {\n if (await entityHasActiveBoard(client, entityId)) {\n throw new Error(\n \"Board approval is required before issuing this round. Pass --meeting-id and --resolution-id from a passed board vote.\",\n );\n }\n }\n\n if (!grantRequiresCurrent409a(grantType, instrument?.kind)) {\n return;\n }\n\n try {\n await client.getCurrent409a(entityId);\n } catch (err) {\n const msg = String(err);\n if (msg.includes(\"404\")) {\n throw new Error(\n \"Stock option issuances require a current approved 409A valuation. Create and approve one first with: corp cap-table create-valuation --type four_oh_nine_a --date YYYY-MM-DD --methodology <method>; corp cap-table submit-valuation <valuation-ref>; corp cap-table approve-valuation <valuation-ref> --resolution-id <resolution-ref>\",\n );\n }\n throw err;\n }\n}\n\nexport async function capTableCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const data = await client.getCapTable(eid);\n const instruments = Array.isArray(data.instruments) ? data.instruments as ApiRecord[] : [];\n const shareClasses = Array.isArray(data.share_classes) ? data.share_classes as ApiRecord[] : [];\n await resolver.stabilizeRecords(\"instrument\", instruments, eid);\n await resolver.stabilizeRecords(\"share_class\", shareClasses, eid);\n if (opts.json) { printJson(data); return; }\n if ((data.access_level as string) === \"none\") {\n printError(\"You do not have access to this entity's cap table.\");\n process.exit(1);\n }\n printCapTable(data);\n try {\n const val = await client.getCurrent409a(eid);\n if (val) print409a(val);\n } catch { /* ignore */ }\n } catch (err) {\n printError(`Failed to fetch cap table: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function safesCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const safes = await client.getSafeNotes(eid);\n await resolver.stabilizeRecords(\"safe_note\", safes, eid);\n if (opts.json) printJson(safes);\n else if (safes.length === 0) console.log(\"No SAFE notes found.\");\n else printSafesTable(safes);\n } catch (err) {\n printError(`Failed to fetch SAFE notes: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function transfersCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const transfers = await client.getShareTransfers(eid);\n await resolver.stabilizeRecords(\"share_transfer\", transfers, eid);\n if (opts.json) printJson(transfers);\n else if (transfers.length === 0) console.log(\"No share transfers found.\");\n else printTransfersTable(transfers);\n } catch (err) {\n printError(`Failed to fetch transfers: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function instrumentsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const capTable = await client.getCapTable(eid);\n const instruments = Array.isArray(capTable.instruments) ? capTable.instruments as Record<string, unknown>[] : [];\n await resolver.stabilizeRecords(\"instrument\", instruments as ApiRecord[], eid);\n if (opts.json) printJson(instruments);\n else if (instruments.length === 0) console.log(\"No instruments found.\");\n else printInstrumentsTable(instruments);\n } catch (err) {\n printError(`Failed to fetch instruments: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function shareClassesCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const capTable = await client.getCapTable(eid);\n const shareClasses = Array.isArray(capTable.share_classes)\n ? capTable.share_classes as Record<string, unknown>[]\n : [];\n await resolver.stabilizeRecords(\"share_class\", shareClasses as ApiRecord[], eid);\n if (opts.json) printJson(shareClasses);\n else if (shareClasses.length === 0) console.log(\"No share classes found.\");\n else printShareClassesTable(shareClasses);\n } catch (err) {\n printError(`Failed to fetch share classes: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function roundsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const rounds = await client.listEquityRounds(eid);\n await resolver.stabilizeRecords(\"round\", rounds, eid);\n if (opts.json) printJson(rounds);\n else if (rounds.length === 0) console.log(\"No rounds found.\");\n else printRoundsTable(rounds);\n } catch (err) {\n printError(`Failed to fetch rounds: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function valuationsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const valuations = await client.getValuations(eid);\n await resolver.stabilizeRecords(\"valuation\", valuations, eid);\n if (opts.json) printJson(valuations);\n else if (valuations.length === 0) console.log(\"No valuations found.\");\n else printValuationsTable(valuations);\n } catch (err) {\n printError(`Failed to fetch valuations: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function fourOhNineACommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const data = await client.getCurrent409a(eid);\n await resolver.stabilizeRecord(\"valuation\", data, eid);\n if (opts.json) printJson(data);\n else if (!data || Object.keys(data).length === 0) console.log(\"No 409A valuation found.\");\n else print409a(data);\n } catch (err) {\n const msg = String(err);\n if (msg.includes(\"404\")) {\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const valuations = await client.getValuations(eid);\n const pending409a = valuations\n .filter((valuation) => valuation.valuation_type === \"four_oh_nine_a\")\n .find((valuation) => valuation.status === \"pending_approval\");\n if (pending409a) {\n const effectiveDate = pending409a.effective_date ?? \"unknown date\";\n console.log(\n `No current approved 409A valuation found. A 409A valuation is pending approval (${effectiveDate}).\\n` +\n \" Complete board approval, then re-run: corp cap-table 409a\",\n );\n } else {\n console.log(\n \"No 409A valuation found for this entity. Create one with:\\n\" +\n \" corp cap-table create-valuation --type four_oh_nine_a --date YYYY-MM-DD --methodology <method>\",\n );\n }\n } catch {\n console.log(\n \"No 409A valuation found for this entity. Create one with:\\n\" +\n \" corp cap-table create-valuation --type four_oh_nine_a --date YYYY-MM-DD --methodology <method>\",\n );\n }\n } else {\n printError(`Failed to fetch 409A valuation: ${err}`);\n }\n process.exit(1);\n }\n}\n\nexport async function issueEquityCommand(opts: {\n entityId?: string;\n grantType: string;\n shares: number;\n recipient: string;\n email?: string;\n instrumentId?: string;\n meetingId?: string;\n resolutionId?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n if (opts.dryRun) {\n printDryRun(\"cap_table.issue_equity\", {\n entity_id: eid,\n grant_type: opts.grantType,\n shares: opts.shares,\n recipient: opts.recipient,\n email: opts.email,\n instrument_id: opts.instrumentId,\n meeting_id: opts.meetingId,\n resolution_id: opts.resolutionId,\n });\n return;\n }\n\n // Fetch cap table to get issuer and instrument info\n const capTable = await client.getCapTable(eid);\n const issuerLegalEntityId = capTable.issuer_legal_entity_id as string;\n if (!issuerLegalEntityId) {\n printError(\"No issuer legal entity found. Has this entity been formed with a cap table?\");\n process.exit(1);\n }\n\n // Resolve instrument ID — use provided, or match by grant type, or use first common stock\n const instruments = (capTable.instruments ?? []) as CapTableInstrument[];\n if (!instruments.length) {\n printError(\"No instruments found on cap table. Create one with: corp cap-table create-instrument --kind common_equity --symbol COMMON --authorized-units <shares>\");\n process.exit(1);\n }\n const explicitInstrumentId = opts.instrumentId\n ? await resolver.resolveInstrument(eid, opts.instrumentId)\n : undefined;\n const instrument = resolveInstrumentForGrant(instruments, opts.grantType, explicitInstrumentId);\n const instrumentId = instrument.instrument_id;\n if (!opts.instrumentId) {\n console.log(`Using instrument: ${instrument.symbol} (${instrument.kind})`);\n }\n const meetingId = opts.meetingId ? await resolver.resolveMeeting(eid, opts.meetingId) : undefined;\n const resolutionId = opts.resolutionId\n ? await resolver.resolveResolution(eid, opts.resolutionId, meetingId)\n : undefined;\n await ensureIssuancePreflight(\n client,\n eid,\n opts.grantType,\n instrument,\n meetingId,\n resolutionId,\n );\n\n // 1. Start a staged round\n const round = await client.startEquityRound({\n entity_id: eid,\n name: `${opts.grantType} grant — ${opts.recipient}`,\n issuer_legal_entity_id: issuerLegalEntityId,\n });\n await resolver.stabilizeRecord(\"round\", round, eid);\n const roundId = (round.round_id ?? round.equity_round_id) as string;\n\n // 2. Add the security\n const securityData: Record<string, unknown> = {\n entity_id: eid,\n instrument_id: instrumentId,\n quantity: opts.shares,\n recipient_name: opts.recipient,\n grant_type: opts.grantType,\n };\n if (opts.email) securityData.email = opts.email;\n await client.addRoundSecurity(roundId, securityData);\n\n // 3. Issue the round\n const issuePayload: Record<string, unknown> = { entity_id: eid };\n if (meetingId) issuePayload.meeting_id = meetingId;\n if (resolutionId) issuePayload.resolution_id = resolutionId;\n const result = await client.issueRound(roundId, issuePayload);\n resolver.rememberFromRecord(\"round\", round, eid);\n\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Equity issued: ${opts.shares} shares (${opts.grantType}) to ${opts.recipient}`);\n printReferenceSummary(\"round\", round, { label: \"Round Ref:\", showReuseHint: true });\n printJson(result);\n } catch (err) {\n printError(`Failed to issue equity: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function issueSafeCommand(opts: {\n entityId?: string;\n investor: string;\n amount: number;\n safeType: string;\n valuationCap: number;\n email?: string;\n meetingId?: string;\n resolutionId?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n if (opts.dryRun) {\n printDryRun(\"cap_table.issue_safe\", {\n entity_id: eid,\n investor: opts.investor,\n amount: opts.amount,\n safe_type: opts.safeType,\n valuation_cap: opts.valuationCap,\n email: opts.email,\n meeting_id: opts.meetingId,\n resolution_id: opts.resolutionId,\n });\n return;\n }\n\n const meetingId = opts.meetingId ? await resolver.resolveMeeting(eid, opts.meetingId) : undefined;\n const resolutionId = opts.resolutionId\n ? await resolver.resolveResolution(eid, opts.resolutionId, meetingId)\n : undefined;\n await ensureIssuancePreflight(\n client,\n eid,\n opts.safeType,\n undefined,\n meetingId,\n resolutionId,\n );\n\n const body: Record<string, unknown> = {\n entity_id: eid,\n investor_name: opts.investor,\n principal_amount_cents: opts.amount,\n valuation_cap_cents: opts.valuationCap,\n safe_type: opts.safeType,\n };\n if (opts.email) body.email = opts.email;\n if (meetingId) body.meeting_id = meetingId;\n if (resolutionId) body.resolution_id = resolutionId;\n const result = await client.createSafeNote(body);\n await resolver.stabilizeRecord(\"safe_note\", result, eid);\n resolver.rememberFromRecord(\"safe_note\", result, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`SAFE issued: $${(opts.amount / 100).toLocaleString()} to ${opts.investor}`);\n printReferenceSummary(\"safe_note\", result, { showReuseHint: true });\n printJson(result);\n } catch (err) {\n printError(`Failed to issue SAFE: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function transferSharesCommand(opts: {\n entityId?: string;\n from: string;\n to: string;\n shares: number;\n type: string;\n shareClassId: string;\n governingDocType: string;\n transfereeRights: string;\n prepareIntentId?: string;\n pricePerShareCents?: number;\n relationship?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const fromContactId = await resolver.resolveContact(eid, opts.from);\n const toContactId = await resolver.resolveContact(eid, opts.to);\n const shareClassId = await resolver.resolveShareClass(eid, opts.shareClassId);\n if (opts.pricePerShareCents != null && opts.pricePerShareCents < 0) {\n throw new Error(\"price-per-share-cents cannot be negative\");\n }\n if (fromContactId === toContactId) {\n throw new Error(\"--from and --to must be different contacts\");\n }\n if (opts.dryRun) {\n printDryRun(\"cap_table.transfer_shares\", {\n entity_id: eid,\n from_contact_id: fromContactId,\n to_contact_id: toContactId,\n share_count: opts.shares,\n transfer_type: opts.type,\n share_class_id: shareClassId,\n governing_doc_type: opts.governingDocType,\n transferee_rights: opts.transfereeRights,\n prepare_intent_id: opts.prepareIntentId,\n price_per_share_cents: opts.pricePerShareCents,\n relationship_to_holder: opts.relationship,\n });\n return;\n }\n\n let intentId = opts.prepareIntentId;\n if (!intentId) {\n const intent = await client.createExecutionIntent({\n entity_id: eid,\n intent_type: \"equity.transfer.prepare\",\n description: `Transfer ${opts.shares} shares from ${fromContactId} to ${toContactId}`,\n });\n intentId = (intent.intent_id ?? intent.id) as string;\n await client.evaluateIntent(intentId, eid);\n await client.authorizeIntent(intentId, eid);\n }\n const body: Record<string, unknown> = {\n entity_id: eid,\n share_class_id: shareClassId,\n from_contact_id: fromContactId,\n to_contact_id: toContactId,\n transfer_type: opts.type,\n share_count: opts.shares,\n governing_doc_type: opts.governingDocType,\n transferee_rights: opts.transfereeRights,\n prepare_intent_id: intentId,\n };\n if (opts.pricePerShareCents != null) body.price_per_share_cents = opts.pricePerShareCents;\n if (opts.relationship) body.relationship_to_holder = opts.relationship;\n const result = await client.transferShares(body);\n await resolver.stabilizeRecord(\"share_transfer\", result, eid);\n resolver.rememberFromRecord(\"share_transfer\", result, eid);\n printWriteResult(result, `Transfer workflow created: ${result.transfer_workflow_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"share_transfer\",\n referenceLabel: \"Transfer Ref:\",\n showReuseHint: true,\n });\n } catch (err) {\n printError(`Failed to create transfer workflow: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function distributeCommand(opts: {\n entityId?: string;\n amount: number;\n type: string;\n description: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const payload = {\n entity_id: eid, total_amount_cents: opts.amount, distribution_type: opts.type,\n description: opts.description,\n };\n if (opts.dryRun) {\n printDryRun(\"cap_table.distribute\", payload);\n return;\n }\n const result = await client.calculateDistribution(payload);\n await resolver.stabilizeRecord(\"distribution\", result, eid);\n resolver.rememberFromRecord(\"distribution\", result, eid);\n printWriteResult(result, `Distribution calculated: ${result.distribution_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"distribution\",\n showReuseHint: true,\n });\n } catch (err) {\n printError(`Failed to calculate distribution: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function startRoundCommand(opts: {\n entityId?: string;\n name: string;\n issuerLegalEntityId: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const issuerLegalEntityId = await resolver.resolveEntity(opts.issuerLegalEntityId);\n const payload = {\n entity_id: eid,\n name: opts.name,\n issuer_legal_entity_id: issuerLegalEntityId,\n };\n if (opts.dryRun) {\n printDryRun(\"cap_table.start_round\", payload);\n return;\n }\n const result = await client.startEquityRound(payload);\n await resolver.stabilizeRecord(\"round\", result, eid);\n resolver.rememberFromRecord(\"round\", result, eid);\n printWriteResult(result, `Round started: ${result.round_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"round\",\n showReuseHint: true,\n });\n } catch (err) {\n printError(`Failed to start round: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function createInstrumentCommand(opts: {\n entityId?: string;\n issuerLegalEntityId?: string;\n kind: string;\n symbol: string;\n authorizedUnits?: number;\n issuePriceCents?: number;\n termsJson?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n let issuerLegalEntityId = opts.issuerLegalEntityId;\n if (!issuerLegalEntityId) {\n const capTable = await client.getCapTable(eid);\n issuerLegalEntityId = capTable.issuer_legal_entity_id as string | undefined;\n }\n if (!issuerLegalEntityId) {\n throw new Error(\"No issuer legal entity found. Has this entity been formed with a cap table?\");\n }\n issuerLegalEntityId = await resolver.resolveEntity(issuerLegalEntityId);\n\n const terms = opts.termsJson ? JSON.parse(opts.termsJson) as Record<string, unknown> : {};\n const payload: Record<string, unknown> = {\n entity_id: eid,\n issuer_legal_entity_id: issuerLegalEntityId,\n kind: opts.kind,\n symbol: opts.symbol,\n terms,\n };\n if (opts.authorizedUnits != null) payload.authorized_units = opts.authorizedUnits;\n if (opts.issuePriceCents != null) payload.issue_price_cents = opts.issuePriceCents;\n if (opts.dryRun) {\n printDryRun(\"cap_table.create_instrument\", payload);\n return;\n }\n const result = await client.createInstrument(payload);\n await resolver.stabilizeRecord(\"instrument\", result, eid);\n resolver.rememberFromRecord(\"instrument\", result, eid);\n printWriteResult(result, `Instrument created: ${result.instrument_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"instrument\",\n showReuseHint: true,\n });\n } catch (err) {\n printError(`Failed to create instrument: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function addSecurityCommand(opts: {\n entityId?: string;\n roundId: string;\n holderId?: string;\n email?: string;\n instrumentId: string;\n quantity: number;\n recipientName: string;\n principalCents?: number;\n grantType?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const roundId = await resolver.resolveRound(eid, opts.roundId);\n const instrumentId = await resolver.resolveInstrument(eid, opts.instrumentId);\n const body: Record<string, unknown> = {\n entity_id: eid,\n instrument_id: instrumentId,\n quantity: opts.quantity,\n recipient_name: opts.recipientName,\n };\n if (opts.holderId) body.holder_id = await resolver.resolveContact(eid, opts.holderId);\n if (opts.email) body.email = opts.email;\n if (opts.principalCents) body.principal_cents = opts.principalCents;\n if (opts.grantType) body.grant_type = opts.grantType;\n if (opts.dryRun) {\n printDryRun(\"cap_table.add_security\", { round_id: roundId, ...body });\n return;\n }\n const result = await client.addRoundSecurity(roundId, body);\n printWriteResult(result, `Security added for ${opts.recipientName}`, opts.json);\n } catch (err) {\n printError(`Failed to add security: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function issueRoundCommand(opts: {\n entityId?: string;\n roundId: string;\n meetingId?: string;\n resolutionId?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const roundId = await resolver.resolveRound(eid, opts.roundId);\n const meetingId = opts.meetingId ? await resolver.resolveMeeting(eid, opts.meetingId) : undefined;\n const resolutionId = opts.resolutionId\n ? await resolver.resolveResolution(eid, opts.resolutionId, meetingId)\n : undefined;\n if (opts.dryRun) {\n printDryRun(\"cap_table.issue_round\", {\n entity_id: eid,\n round_id: roundId,\n meeting_id: meetingId,\n resolution_id: resolutionId,\n });\n return;\n }\n if ((!meetingId || !resolutionId) && await entityHasActiveBoard(client, eid)) {\n throw new Error(\n \"Board approval is required before issuing this round. Pass --meeting-id and --resolution-id from a passed board vote.\",\n );\n }\n const body: Record<string, unknown> = { entity_id: eid };\n if (meetingId) body.meeting_id = meetingId;\n if (resolutionId) body.resolution_id = resolutionId;\n const result = await client.issueRound(roundId, body);\n resolver.remember(\"round\", roundId, eid);\n const roundMatch = (await resolver.find(\"round\", shortId(roundId), { entityId: eid }))\n .find((match) => match.id === roundId);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(\"Round issued and closed\");\n if (roundMatch) {\n printReferenceSummary(\"round\", roundMatch.raw, { showReuseHint: true });\n }\n printJson(result);\n } catch (err) {\n printError(`Failed to issue round: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function createValuationCommand(opts: {\n entityId?: string;\n type: string;\n date: string;\n methodology: string;\n fmv?: number;\n enterpriseValue?: number;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const body: Record<string, unknown> = {\n entity_id: eid,\n valuation_type: opts.type,\n effective_date: opts.date,\n methodology: opts.methodology,\n };\n if (opts.fmv != null) body.fmv_per_share_cents = opts.fmv;\n if (opts.enterpriseValue != null) body.enterprise_value_cents = opts.enterpriseValue;\n if (opts.dryRun) {\n printDryRun(\"cap_table.create_valuation\", body);\n return;\n }\n const result = await client.createValuation(body);\n await resolver.stabilizeRecord(\"valuation\", result, eid);\n resolver.rememberFromRecord(\"valuation\", result, eid);\n printWriteResult(result, `Valuation created: ${result.valuation_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"valuation\",\n showReuseHint: true,\n });\n } catch (err) {\n printError(`Failed to create valuation: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function submitValuationCommand(opts: {\n entityId?: string;\n valuationId: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const valuationId = await resolver.resolveValuation(eid, opts.valuationId);\n if (opts.dryRun) {\n printDryRun(\"cap_table.submit_valuation\", { entity_id: eid, valuation_id: valuationId });\n return;\n }\n const result = await client.submitValuationForApproval(valuationId, eid);\n await resolver.stabilizeRecord(\"valuation\", result, eid);\n resolver.remember(\"valuation\", valuationId, eid);\n if (result.meeting_id) resolver.remember(\"meeting\", String(result.meeting_id), eid);\n if (result.agenda_item_id) resolver.remember(\"agenda_item\", String(result.agenda_item_id), eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Valuation submitted for approval: ${result.valuation_id ?? valuationId ?? \"OK\"}`);\n printReferenceSummary(\"valuation\", result, { showReuseHint: true });\n if (result.meeting_id) {\n const meetingMatch = (await resolver.find(\"meeting\", shortId(String(result.meeting_id)), { entityId: eid }))\n .find((match) => match.id === String(result.meeting_id));\n if (meetingMatch) {\n printReferenceSummary(\"meeting\", meetingMatch.raw, { label: \"Meeting Ref:\" });\n } else {\n printReferenceSummary(\"meeting\", { meeting_id: result.meeting_id }, { label: \"Meeting Ref:\" });\n }\n }\n if (result.agenda_item_id) {\n const agendaMatch = (await resolver.find(\"agenda_item\", shortId(String(result.agenda_item_id)), {\n entityId: eid,\n meetingId: result.meeting_id ? String(result.meeting_id) : undefined,\n }))\n .find((match) => match.id === String(result.agenda_item_id));\n if (agendaMatch) {\n printReferenceSummary(\"agenda_item\", agendaMatch.raw, { label: \"Agenda Ref:\" });\n } else {\n printReferenceSummary(\"agenda_item\", { agenda_item_id: result.agenda_item_id }, { label: \"Agenda Ref:\" });\n }\n }\n printJson(result);\n } catch (err) {\n const msg = String(err);\n if (msg.includes(\"404\")) {\n printError(`Valuation not found. List valuations with: corp cap-table valuations`);\n } else {\n printError(`Failed to submit valuation: ${err}`);\n }\n process.exit(1);\n }\n}\n\nexport async function approveValuationCommand(opts: {\n entityId?: string;\n valuationId: string;\n resolutionId?: string;\n json?: boolean;\n dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const valuationId = await resolver.resolveValuation(eid, opts.valuationId);\n const resolutionId = opts.resolutionId\n ? await resolver.resolveResolution(eid, opts.resolutionId)\n : undefined;\n if (opts.dryRun) {\n printDryRun(\"cap_table.approve_valuation\", {\n entity_id: eid,\n valuation_id: valuationId,\n resolution_id: resolutionId,\n });\n return;\n }\n const result = await client.approveValuation(valuationId, eid, resolutionId);\n await resolver.stabilizeRecord(\"valuation\", result, eid);\n printWriteResult(result, `Valuation approved: ${result.valuation_id ?? valuationId ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"valuation\",\n });\n } catch (err) {\n const msg = String(err);\n if (msg.includes(\"400\")) {\n printError(`Bad request — a --resolution-id from a board vote may be required. Submit for approval first: corp cap-table submit-valuation <valuation-ref>`);\n } else {\n printError(`Failed to approve valuation: ${err}`);\n }\n process.exit(1);\n }\n}\n\nfunction print409a(data: Record<string, unknown>): void {\n console.log(chalk.green(\"─\".repeat(40)));\n console.log(chalk.green.bold(\" 409A Valuation\"));\n console.log(chalk.green(\"─\".repeat(40)));\n const fmv = typeof data.fmv_per_share_cents === \"number\" ? (data.fmv_per_share_cents as number) / 100 : data.fmv_per_share;\n const enterpriseValue = typeof data.enterprise_value_cents === \"number\"\n ? (data.enterprise_value_cents as number) / 100\n : data.enterprise_value;\n console.log(` ${chalk.bold(\"FMV/Share:\")} $${fmv ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Enterprise Value:\")} $${enterpriseValue ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Valuation Date:\")} ${data.effective_date ?? data.valuation_date ?? \"N/A\"}`);\n if (data.provider) console.log(` ${chalk.bold(\"Provider:\")} ${data.provider}`);\n console.log(chalk.green(\"─\".repeat(40)));\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport {\n printBankAccountsTable,\n printClassificationsTable,\n printDistributionsTable,\n printError,\n printFinanceSummaryPanel,\n printInvoicesTable,\n printJson,\n printPaymentsTable,\n printPayrollRunsTable,\n printReconciliationsTable,\n printWriteResult,\n} from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport type { ApiRecord } from \"../types.js\";\n\nfunction numeric(value: unknown): number {\n return typeof value === \"number\" && Number.isFinite(value) ? value : 0;\n}\n\nfunction sumAmounts(records: ApiRecord[], candidates: string[]): number {\n return records.reduce((sum, record) => {\n for (const key of candidates) {\n if (typeof record[key] === \"number\" && Number.isFinite(record[key])) {\n return sum + Number(record[key]);\n }\n }\n return sum;\n }, 0);\n}\n\nfunction latestDate(records: ApiRecord[], candidates: string[]): string | undefined {\n const values = records\n .flatMap((record) => candidates.map((key) => record[key]))\n .filter((value): value is string => typeof value === \"string\" && value.trim().length > 0)\n .map((value) => ({ raw: value, time: new Date(value).getTime() }))\n .filter((value) => Number.isFinite(value.time))\n .sort((a, b) => b.time - a.time);\n return values[0]?.raw;\n}\n\nfunction countByStatus(records: ApiRecord[], statuses: string[]): number {\n const expected = new Set(statuses.map((status) => status.toLowerCase()));\n return records.filter((record) => expected.has(String(record.status ?? \"\").toLowerCase())).length;\n}\n\nfunction countByField(records: ApiRecord[], field: string, values: string[]): number {\n const expected = new Set(values.map((value) => value.toLowerCase()));\n return records.filter((record) => expected.has(String(record[field] ?? \"\").toLowerCase())).length;\n}\n\nexport async function financeSummaryCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const [\n invoices,\n accounts,\n payments,\n payrollRuns,\n distributions,\n reconciliations,\n classifications,\n ] = await Promise.all([\n client.listInvoices(eid),\n client.listBankAccounts(eid),\n client.listPayments(eid),\n client.listPayrollRuns(eid),\n client.listDistributions(eid),\n client.listReconciliations(eid),\n client.listContractorClassifications(eid),\n ]);\n\n await Promise.all([\n resolver.stabilizeRecords(\"invoice\", invoices, eid),\n resolver.stabilizeRecords(\"bank_account\", accounts, eid),\n resolver.stabilizeRecords(\"payment\", payments, eid),\n resolver.stabilizeRecords(\"payroll_run\", payrollRuns, eid),\n resolver.stabilizeRecords(\"distribution\", distributions, eid),\n resolver.stabilizeRecords(\"reconciliation\", reconciliations, eid),\n resolver.stabilizeRecords(\"classification\", classifications, eid),\n ]);\n\n const summary: ApiRecord = {\n entity_id: eid,\n invoices: {\n count: invoices.length,\n open_count: invoices.length - countByStatus(invoices, [\"paid\", \"cancelled\", \"void\"]),\n overdue_count: countByStatus(invoices, [\"overdue\"]),\n total_amount_cents: sumAmounts(invoices, [\"amount_cents\", \"total_amount_cents\"]),\n latest_due_date: latestDate(invoices, [\"due_date\", \"created_at\"]),\n },\n bank_accounts: {\n count: accounts.length,\n active_count: countByStatus(accounts, [\"active\", \"approved\", \"open\"]),\n },\n payments: {\n count: payments.length,\n pending_count: countByStatus(payments, [\"pending\", \"submitted\", \"queued\"]),\n total_amount_cents: sumAmounts(payments, [\"amount_cents\"]),\n latest_submitted_at: latestDate(payments, [\"submitted_at\", \"created_at\"]),\n },\n payroll_runs: {\n count: payrollRuns.length,\n latest_period_end: latestDate(payrollRuns, [\"pay_period_end\", \"created_at\"]),\n },\n distributions: {\n count: distributions.length,\n total_amount_cents: sumAmounts(distributions, [\"amount_cents\", \"distribution_amount_cents\"]),\n latest_declared_at: latestDate(distributions, [\"declared_at\", \"created_at\"]),\n },\n reconciliations: {\n count: reconciliations.length,\n balanced_count: reconciliations.filter((record) => record.is_balanced === true).length,\n latest_as_of_date: latestDate(reconciliations, [\"as_of_date\", \"created_at\"]),\n },\n contractor_classifications: {\n count: classifications.length,\n high_risk_count: countByField(classifications, \"risk_level\", [\"high\"]),\n medium_risk_count: countByField(classifications, \"risk_level\", [\"medium\"]),\n },\n };\n\n if (opts.json) {\n printJson(summary);\n return;\n }\n printFinanceSummaryPanel(summary);\n } catch (err) {\n printError(`Failed to fetch finance summary: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function financeInvoicesCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const invoices = await client.listInvoices(eid);\n await resolver.stabilizeRecords(\"invoice\", invoices, eid);\n if (opts.json) printJson(invoices);\n else if (invoices.length === 0) console.log(\"No invoices found.\");\n else printInvoicesTable(invoices);\n } catch (err) { printError(`Failed to fetch invoices: ${err}`); process.exit(1); }\n}\n\nexport async function financeBankAccountsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const accounts = await client.listBankAccounts(eid);\n await resolver.stabilizeRecords(\"bank_account\", accounts, eid);\n if (opts.json) printJson(accounts);\n else if (accounts.length === 0) console.log(\"No bank accounts found.\");\n else printBankAccountsTable(accounts);\n } catch (err) { printError(`Failed to fetch bank accounts: ${err}`); process.exit(1); }\n}\n\nexport async function financePaymentsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const payments = await client.listPayments(eid);\n await resolver.stabilizeRecords(\"payment\", payments, eid);\n if (opts.json) printJson(payments);\n else if (payments.length === 0) console.log(\"No payments found.\");\n else printPaymentsTable(payments);\n } catch (err) { printError(`Failed to fetch payments: ${err}`); process.exit(1); }\n}\n\nexport async function financePayrollRunsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const runs = await client.listPayrollRuns(eid);\n await resolver.stabilizeRecords(\"payroll_run\", runs, eid);\n if (opts.json) printJson(runs);\n else if (runs.length === 0) console.log(\"No payroll runs found.\");\n else printPayrollRunsTable(runs);\n } catch (err) { printError(`Failed to fetch payroll runs: ${err}`); process.exit(1); }\n}\n\nexport async function financeDistributionsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const distributions = await client.listDistributions(eid);\n await resolver.stabilizeRecords(\"distribution\", distributions, eid);\n if (opts.json) printJson(distributions);\n else if (distributions.length === 0) console.log(\"No distributions found.\");\n else printDistributionsTable(distributions);\n } catch (err) { printError(`Failed to fetch distributions: ${err}`); process.exit(1); }\n}\n\nexport async function financeReconciliationsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const reconciliations = await client.listReconciliations(eid);\n await resolver.stabilizeRecords(\"reconciliation\", reconciliations, eid);\n if (opts.json) printJson(reconciliations);\n else if (reconciliations.length === 0) console.log(\"No reconciliations found.\");\n else printReconciliationsTable(reconciliations);\n } catch (err) { printError(`Failed to fetch reconciliations: ${err}`); process.exit(1); }\n}\n\nexport async function financeClassificationsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const classifications = await client.listContractorClassifications(eid);\n await resolver.stabilizeRecords(\"classification\", classifications, eid);\n if (opts.json) printJson(classifications);\n else if (classifications.length === 0) console.log(\"No contractor classifications found.\");\n else printClassificationsTable(classifications);\n } catch (err) { printError(`Failed to fetch contractor classifications: ${err}`); process.exit(1); }\n}\n\nexport async function financeInvoiceCommand(opts: {\n entityId?: string; customer: string; amount: number; dueDate: string; description: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.createInvoice({\n entity_id: eid, customer_name: opts.customer, amount_cents: opts.amount,\n due_date: opts.dueDate, description: opts.description,\n });\n await resolver.stabilizeRecord(\"invoice\", result, eid);\n resolver.rememberFromRecord(\"invoice\", result, eid);\n printWriteResult(result, `Invoice created: ${result.invoice_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"invoice\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to create invoice: ${err}`); process.exit(1); }\n}\n\nexport async function financePayrollCommand(opts: {\n entityId?: string; periodStart: string; periodEnd: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.runPayroll({\n entity_id: eid, pay_period_start: opts.periodStart, pay_period_end: opts.periodEnd,\n });\n await resolver.stabilizeRecord(\"payroll_run\", result, eid);\n resolver.rememberFromRecord(\"payroll_run\", result, eid);\n printWriteResult(result, `Payroll run created: ${result.payroll_run_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"payroll_run\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to run payroll: ${err}`); process.exit(1); }\n}\n\nexport async function financePayCommand(opts: {\n entityId?: string; amount: number; recipient: string; method: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.submitPayment({\n entity_id: eid, amount_cents: opts.amount, recipient: opts.recipient,\n payment_method: opts.method,\n description: `Payment via ${opts.method}`,\n });\n await resolver.stabilizeRecord(\"payment\", result, eid);\n resolver.rememberFromRecord(\"payment\", result, eid);\n printWriteResult(result, `Payment submitted: ${result.payment_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"payment\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to submit payment: ${err}`); process.exit(1); }\n}\n\nexport async function financeOpenAccountCommand(opts: {\n entityId?: string; institution: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.openBankAccount({ entity_id: eid, bank_name: opts.institution });\n await resolver.stabilizeRecord(\"bank_account\", result, eid);\n resolver.rememberFromRecord(\"bank_account\", result, eid);\n printWriteResult(result, `Bank account opened: ${result.bank_account_id ?? result.account_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"bank_account\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to open bank account: ${err}`); process.exit(1); }\n}\n\nexport async function financeClassifyContractorCommand(opts: {\n entityId?: string; name: string; state: string; hours: number;\n exclusive: boolean; duration: number; providesTools: boolean; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.classifyContractor({\n entity_id: eid, contractor_name: opts.name, state: opts.state, hours_per_week: opts.hours,\n exclusive_client: opts.exclusive, duration_months: opts.duration, provides_tools: opts.providesTools,\n });\n await resolver.stabilizeRecord(\"classification\", result, eid);\n resolver.rememberFromRecord(\"classification\", result, eid);\n printWriteResult(result, `Classification: ${result.risk_level ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"classification\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to classify contractor: ${err}`); process.exit(1); }\n}\n\nexport async function financeReconcileCommand(opts: {\n entityId?: string; startDate: string; endDate: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.reconcileLedger({\n entity_id: eid, start_date: opts.startDate, end_date: opts.endDate,\n });\n await resolver.stabilizeRecord(\"reconciliation\", result, eid);\n resolver.rememberFromRecord(\"reconciliation\", result, eid);\n printWriteResult(result, `Ledger reconciled: ${result.reconciliation_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"reconciliation\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to reconcile ledger: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport {\n printAgendaItemsTable,\n printGovernanceTable, printSeatsTable, printMeetingsTable,\n printResolutionsTable, printDryRun, printError, printReferenceSummary, printSuccess, printJson,\n} from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport chalk from \"chalk\";\n\nexport async function governanceCreateBodyCommand(opts: {\n entityId?: string; name: string; bodyType: string; quorum: string; voting: string;\n json?: boolean; dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const payload = {\n entity_id: eid,\n body_type: opts.bodyType,\n name: opts.name,\n quorum_rule: opts.quorum,\n voting_method: opts.voting,\n };\n if (opts.dryRun) {\n printDryRun(\"governance.create_body\", payload);\n return;\n }\n const result = await client.createGovernanceBody(payload);\n await resolver.stabilizeRecord(\"body\", result, eid);\n resolver.rememberFromRecord(\"body\", result, eid);\n const bodyId = result.body_id ?? \"OK\";\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Governance body created: ${bodyId}`);\n printReferenceSummary(\"body\", result, { showReuseHint: true });\n printJson(result);\n console.log(chalk.dim(\"\\n Next steps:\"));\n console.log(chalk.dim(` corp governance add-seat @last:body --holder <contact-ref>`));\n console.log(chalk.dim(` corp governance seats @last:body`));\n } catch (err) { printError(`Failed to create governance body: ${err}`); process.exit(1); }\n}\n\nexport async function governanceAddSeatCommand(bodyId: string, opts: {\n holder: string; role?: string; entityId?: string; json?: boolean; dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedBodyId = await resolver.resolveBody(eid, bodyId);\n const resolvedHolderId = await resolver.resolveContact(eid, opts.holder);\n const data: Record<string, unknown> = { holder_id: resolvedHolderId, role: opts.role ?? \"member\" };\n if (opts.dryRun) {\n printDryRun(\"governance.add_seat\", { entity_id: eid, body_id: resolvedBodyId, ...data });\n return;\n }\n const result = await client.createGovernanceSeat(resolvedBodyId, eid, data);\n await resolver.stabilizeRecord(\"seat\", result, eid);\n resolver.rememberFromRecord(\"seat\", result, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Seat added: ${result.seat_id ?? \"OK\"}`);\n printReferenceSummary(\"seat\", result, { showReuseHint: true });\n printJson(result);\n } catch (err) { printError(`Failed to add seat: ${err}`); process.exit(1); }\n}\n\nexport async function governanceListCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const bodies = await client.listGovernanceBodies(eid);\n await resolver.stabilizeRecords(\"body\", bodies, eid);\n if (opts.json) printJson(bodies);\n else if (bodies.length === 0) console.log(\"No governance bodies found.\");\n else printGovernanceTable(bodies);\n } catch (err) { printError(`Failed to fetch governance bodies: ${err}`); process.exit(1); }\n}\n\nexport async function governanceSeatsCommand(bodyId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedBodyId = await resolver.resolveBody(eid, bodyId);\n const seats = await client.getGovernanceSeats(resolvedBodyId, eid);\n await resolver.stabilizeRecords(\"seat\", seats, eid);\n if (opts.json) printJson(seats);\n else if (seats.length === 0) console.log(\"No seats found.\");\n else printSeatsTable(seats);\n } catch (err) { printError(`Failed to fetch seats: ${err}`); process.exit(1); }\n}\n\nexport async function governanceMeetingsCommand(bodyId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedBodyId = await resolver.resolveBody(eid, bodyId);\n const meetings = await client.listMeetings(resolvedBodyId, eid);\n await resolver.stabilizeRecords(\"meeting\", meetings, eid);\n if (opts.json) printJson(meetings);\n else if (meetings.length === 0) console.log(\"No meetings found.\");\n else printMeetingsTable(meetings);\n } catch (err) { printError(`Failed to fetch meetings: ${err}`); process.exit(1); }\n}\n\nexport async function governanceResolutionsCommand(meetingId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n const resolutions = await client.getMeetingResolutions(resolvedMeetingId, eid);\n await resolver.stabilizeRecords(\"resolution\", resolutions, eid);\n if (opts.json) printJson(resolutions);\n else if (resolutions.length === 0) console.log(\"No resolutions found.\");\n else printResolutionsTable(resolutions);\n } catch (err) { printError(`Failed to fetch resolutions: ${err}`); process.exit(1); }\n}\n\nexport async function governanceConveneCommand(opts: {\n entityId?: string; body: string; meetingType: string; title: string; date?: string; agenda: string[];\n json?: boolean; dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedBodyId = await resolver.resolveBody(eid, opts.body);\n const payload: Record<string, unknown> = {\n entity_id: eid, body_id: resolvedBodyId, meeting_type: opts.meetingType,\n title: opts.title,\n agenda_item_titles: opts.agenda,\n };\n if (opts.date) payload.scheduled_date = opts.date;\n if (opts.dryRun) {\n printDryRun(\"governance.schedule_meeting\", payload);\n return;\n }\n const result = await client.scheduleMeeting(payload);\n await resolver.stabilizeRecord(\"meeting\", result, eid);\n resolver.rememberFromRecord(\"meeting\", result, eid);\n const meetingId = result.meeting_id ?? \"OK\";\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Meeting scheduled: ${meetingId}`);\n printReferenceSummary(\"meeting\", result, { showReuseHint: true });\n printJson(result);\n console.log(chalk.dim(\"\\n Next steps:\"));\n console.log(chalk.dim(` corp governance notice @last:meeting`));\n console.log(chalk.dim(` corp governance open @last:meeting --present-seat <seat-ref>`));\n console.log(chalk.dim(` corp governance agenda-items @last:meeting`));\n } catch (err) { printError(`Failed to schedule meeting: ${err}`); process.exit(1); }\n}\n\nexport async function governanceOpenMeetingCommand(\n meetingId: string,\n opts: { entityId?: string; presentSeat: string[]; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n const resolvedSeats = await Promise.all(\n opts.presentSeat.map((seatRef) => resolver.resolveSeat(eid, seatRef)),\n );\n const payload = { present_seat_ids: resolvedSeats };\n if (opts.dryRun) {\n printDryRun(\"governance.open_meeting\", { entity_id: eid, meeting_id: resolvedMeetingId, ...payload });\n return;\n }\n const result = await client.conveneMeeting(resolvedMeetingId, eid, payload);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Meeting opened: ${resolvedMeetingId}`);\n printJson(result);\n } catch (err) { printError(`Failed to open meeting: ${err}`); process.exit(1); }\n}\n\nexport async function governanceVoteCommand(\n meetingId: string,\n itemId: string,\n opts: { voter: string; vote: string; entityId?: string; json?: boolean; dryRun?: boolean }\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n const resolvedItemId = await resolver.resolveAgendaItem(eid, resolvedMeetingId, itemId);\n const resolvedVoterId = await resolver.resolveContact(eid, opts.voter);\n const payload = {\n voter_id: resolvedVoterId, vote_value: opts.vote,\n };\n if (opts.dryRun) {\n printDryRun(\"governance.cast_vote\", { entity_id: eid, meeting_id: resolvedMeetingId, agenda_item_id: resolvedItemId, ...payload });\n return;\n }\n const result = await client.castVote(eid, resolvedMeetingId, resolvedItemId, payload);\n resolver.rememberFromRecord(\"agenda_item\", { agenda_item_id: resolvedItemId, title: itemId }, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Vote cast: ${result.vote_id ?? \"OK\"}`);\n printJson(result);\n } catch (err) {\n const message = String(err);\n if (message.includes(\"voting session is not open\")) {\n printError(\n `Failed to cast vote: ${err}\\n` +\n ` Open the meeting first: corp governance open ${meetingId} --present-seat <seat-ref>`,\n );\n } else {\n printError(`Failed to cast vote: ${err}`);\n }\n process.exit(1);\n }\n}\n\nexport async function sendNoticeCommand(\n meetingId: string,\n opts: { entityId?: string; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n if (opts.dryRun) {\n printDryRun(\"governance.send_notice\", { entity_id: eid, meeting_id: resolvedMeetingId });\n return;\n }\n const result = await client.sendNotice(resolvedMeetingId, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Notice sent for meeting ${resolvedMeetingId}`);\n printJson(result);\n } catch (err) { printError(`Failed to send notice: ${err}`); process.exit(1); }\n}\n\nexport async function adjournMeetingCommand(\n meetingId: string,\n opts: { entityId?: string; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n if (opts.dryRun) {\n printDryRun(\"governance.adjourn_meeting\", { entity_id: eid, meeting_id: resolvedMeetingId });\n return;\n }\n const result = await client.adjournMeeting(resolvedMeetingId, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Meeting ${resolvedMeetingId} adjourned`);\n printJson(result);\n } catch (err) { printError(`Failed to adjourn meeting: ${err}`); process.exit(1); }\n}\n\nexport async function cancelMeetingCommand(\n meetingId: string,\n opts: { entityId?: string; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n if (opts.dryRun) {\n printDryRun(\"governance.cancel_meeting\", { entity_id: eid, meeting_id: resolvedMeetingId });\n return;\n }\n const result = await client.cancelMeeting(resolvedMeetingId, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Meeting ${resolvedMeetingId} cancelled`);\n printJson(result);\n } catch (err) { printError(`Failed to cancel meeting: ${err}`); process.exit(1); }\n}\n\nexport async function reopenMeetingCommand(\n meetingId: string,\n opts: { entityId?: string; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n if (opts.dryRun) {\n printDryRun(\"governance.reopen_meeting\", { entity_id: eid, meeting_id: resolvedMeetingId });\n return;\n }\n const result = await client.reopenMeeting(resolvedMeetingId, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Meeting ${resolvedMeetingId} re-opened`);\n printJson(result);\n } catch (err) { printError(`Failed to re-open meeting: ${err}`); process.exit(1); }\n}\n\nexport async function finalizeAgendaItemCommand(\n meetingId: string,\n itemId: string,\n opts: { status: string; entityId?: string; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n const resolvedItemId = await resolver.resolveAgendaItem(eid, resolvedMeetingId, itemId);\n const payload = {\n entity_id: eid, status: opts.status,\n };\n if (opts.dryRun) {\n printDryRun(\"governance.finalize_agenda_item\", { meeting_id: resolvedMeetingId, agenda_item_id: resolvedItemId, ...payload });\n return;\n }\n const result = await client.finalizeAgendaItem(resolvedMeetingId, resolvedItemId, payload);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Agenda item ${resolvedItemId} finalized as ${opts.status}`);\n printJson(result);\n } catch (err) { printError(`Failed to finalize agenda item: ${err}`); process.exit(1); }\n}\n\nexport async function computeResolutionCommand(\n meetingId: string,\n itemId: string,\n opts: { text: string; entityId?: string; json?: boolean; dryRun?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n const resolvedItemId = await resolver.resolveAgendaItem(eid, resolvedMeetingId, itemId);\n const payload = {\n resolution_text: opts.text,\n };\n if (opts.dryRun) {\n printDryRun(\"governance.compute_resolution\", {\n entity_id: eid,\n meeting_id: resolvedMeetingId,\n agenda_item_id: resolvedItemId,\n ...payload,\n });\n return;\n }\n const result = await client.computeResolution(resolvedMeetingId, resolvedItemId, eid, payload);\n await resolver.stabilizeRecord(\"resolution\", result, eid);\n resolver.rememberFromRecord(\"resolution\", result, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Resolution computed for agenda item ${itemId}`);\n printReferenceSummary(\"resolution\", result, { showReuseHint: true });\n printJson(result);\n } catch (err) { printError(`Failed to compute resolution: ${err}`); process.exit(1); }\n}\n\nexport async function writtenConsentCommand(opts: {\n body: string; title: string; description: string; entityId?: string; json?: boolean; dryRun?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedBodyId = await resolver.resolveBody(eid, opts.body);\n const payload = {\n entity_id: eid, body_id: resolvedBodyId, title: opts.title, description: opts.description,\n };\n if (opts.dryRun) {\n printDryRun(\"governance.written_consent\", payload);\n return;\n }\n const result = await client.writtenConsent(payload);\n await resolver.stabilizeRecord(\"meeting\", result, eid);\n resolver.rememberFromRecord(\"meeting\", result, eid);\n const meetingId = result.meeting_id ?? \"OK\";\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Written consent created: ${meetingId}`);\n printReferenceSummary(\"meeting\", result, { showReuseHint: true });\n printJson(result);\n console.log(chalk.dim(\"\\n Next steps:\"));\n console.log(chalk.dim(` corp governance agenda-items @last:meeting`));\n console.log(chalk.dim(` corp governance vote @last:meeting <item-ref> --voter <contact-ref> --vote for`));\n } catch (err) { printError(`Failed to create written consent: ${err}`); process.exit(1); }\n}\n\nexport async function listAgendaItemsCommand(meetingId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedMeetingId = await resolver.resolveMeeting(eid, meetingId);\n const items = await client.listAgendaItems(resolvedMeetingId, eid);\n await resolver.stabilizeRecords(\"agenda_item\", items, eid);\n if (opts.json) printJson(items);\n else if (items.length === 0) console.log(\"No agenda items found.\");\n else printAgendaItemsTable(items);\n } catch (err) { printError(`Failed to list agenda items: ${err}`); process.exit(1); }\n}\n","import { CorpAPIClient } from \"./api-client.js\";\nimport { ReferenceResolver } from \"./references.js\";\nimport type { ApiRecord } from \"./types.js\";\n\nconst DEFAULT_SIGNATURE_CONSENT = \"I agree to sign this document electronically.\";\nconst DEFAULT_ATTESTATION_CONSENT = \"I attest the filing information is accurate and authorized.\";\n\ntype SignatureRequirement = {\n role: string;\n signer_name: string;\n signer_email?: string;\n};\n\nexport type AutoSignSummary = {\n documents_seen: number;\n documents_signed: number;\n signatures_added: number;\n documents: ApiRecord[];\n};\n\nexport type ActivationSummary = {\n entity_id: string;\n initial_status: string;\n final_status: string;\n signatures_added: number;\n documents_signed: number;\n steps: string[];\n formation: ApiRecord;\n};\n\nfunction normalizeRole(value: unknown): string {\n return String(value ?? \"\").trim().toLowerCase();\n}\n\nfunction fallbackSignerEmail(requirement: SignatureRequirement): string {\n const slug = String(requirement.signer_name ?? \"signer\")\n .toLowerCase()\n .replace(/[^a-z0-9]+/g, \".\")\n .replace(/^\\.+|\\.+$/g, \"\");\n return `${slug || \"signer\"}@example.com`;\n}\n\nfunction getSignatureRequirements(document: ApiRecord): SignatureRequirement[] {\n const content = document.content;\n if (!content || typeof content !== \"object\" || Array.isArray(content)) {\n return [];\n }\n const requirements = (content as ApiRecord).signature_requirements;\n if (!Array.isArray(requirements)) {\n return [];\n }\n return requirements\n .filter((item): item is ApiRecord => typeof item === \"object\" && item !== null && !Array.isArray(item))\n .map((item) => ({\n role: String(item.role ?? \"\").trim(),\n signer_name: String(item.signer_name ?? \"\").trim(),\n signer_email:\n typeof item.signer_email === \"string\" && item.signer_email.trim()\n ? item.signer_email.trim()\n : undefined,\n }))\n .filter((item) => item.role.length > 0 && item.signer_name.length > 0);\n}\n\nfunction getSignedRoles(document: ApiRecord): Set<string> {\n const signatures = Array.isArray(document.signatures) ? document.signatures : [];\n return new Set(\n signatures\n .filter((item): item is ApiRecord => typeof item === \"object\" && item !== null && !Array.isArray(item))\n .map((item) => normalizeRole(item.signer_role))\n .filter(Boolean),\n );\n}\n\nfunction deterministicEin(entityId: string): string {\n const digits = entityId.replace(/\\D/g, \"\");\n const nineDigits = `${digits}123456789`.slice(0, 9).padEnd(9, \"0\");\n return `${nineDigits.slice(0, 2)}-${nineDigits.slice(2)}`;\n}\n\nfunction filingIdentifier(prefix: string, entityId: string): string {\n const token = entityId.replace(/[^a-zA-Z0-9]/g, \"\").slice(0, 12).toLowerCase() || \"formation\";\n return `${prefix}-${token}`;\n}\n\nexport async function autoSignFormationDocument(\n client: CorpAPIClient,\n entityId: string,\n documentId: string,\n): Promise<{ document: ApiRecord; signatures_added: number }> {\n const document = await client.getDocument(documentId, entityId) as ApiRecord;\n const requiredSignatures = getSignatureRequirements(document);\n if (requiredSignatures.length === 0) {\n return { document, signatures_added: 0 };\n }\n\n const signedRoles = getSignedRoles(document);\n let signaturesAdded = 0;\n for (const requirement of requiredSignatures) {\n if (signedRoles.has(normalizeRole(requirement.role))) {\n continue;\n }\n await client.signDocument(documentId, entityId, {\n signer_name: requirement.signer_name,\n signer_role: requirement.role,\n signer_email: requirement.signer_email ?? fallbackSignerEmail(requirement),\n signature_text: requirement.signer_name,\n consent_text: DEFAULT_SIGNATURE_CONSENT,\n });\n signedRoles.add(normalizeRole(requirement.role));\n signaturesAdded += 1;\n }\n\n const refreshed = await client.getDocument(documentId, entityId) as ApiRecord;\n return { document: refreshed, signatures_added: signaturesAdded };\n}\n\nexport async function autoSignFormationDocuments(\n client: CorpAPIClient,\n resolver: ReferenceResolver,\n entityId: string,\n): Promise<AutoSignSummary> {\n const summaries = await client.getEntityDocuments(entityId) as ApiRecord[];\n await resolver.stabilizeRecords(\"document\", summaries, entityId);\n\n let signaturesAdded = 0;\n let documentsSigned = 0;\n const documents: ApiRecord[] = [];\n\n for (const summary of summaries) {\n const documentId = String(summary.document_id ?? \"\");\n if (!documentId) {\n continue;\n }\n const { document, signatures_added } = await autoSignFormationDocument(\n client,\n entityId,\n documentId,\n );\n signaturesAdded += signatures_added;\n if (signatures_added > 0) {\n documentsSigned += 1;\n }\n documents.push(document);\n }\n\n return {\n documents_seen: summaries.length,\n documents_signed: documentsSigned,\n signatures_added: signaturesAdded,\n documents,\n };\n}\n\nexport async function activateFormationEntity(\n client: CorpAPIClient,\n resolver: ReferenceResolver,\n entityId: string,\n options: {\n evidenceUri?: string;\n evidenceType?: string;\n filingId?: string;\n receiptReference?: string;\n ein?: string;\n } = {},\n): Promise<ActivationSummary> {\n let formation = await client.getFormation(entityId) as ApiRecord;\n const initialStatus = String(formation.formation_status ?? \"\");\n const steps: string[] = [];\n let signaturesAdded = 0;\n let documentsSigned = 0;\n\n for (let i = 0; i < 10; i += 1) {\n const status = String(formation.formation_status ?? \"\");\n if (status === \"active\") {\n return {\n entity_id: entityId,\n initial_status: initialStatus,\n final_status: status,\n signatures_added: signaturesAdded,\n documents_signed: documentsSigned,\n steps,\n formation,\n };\n }\n\n if (status === \"pending\") {\n throw new Error(\"Formation is still pending. Finalize it before activation.\");\n }\n\n if (status === \"documents_generated\") {\n const signed = await autoSignFormationDocuments(client, resolver, entityId);\n signaturesAdded += signed.signatures_added;\n documentsSigned += signed.documents_signed;\n await client.markFormationDocumentsSigned(entityId);\n steps.push(`signed ${signed.signatures_added} signatures across ${signed.documents_signed} documents`);\n formation = await client.getFormation(entityId) as ApiRecord;\n continue;\n }\n\n if (status === \"documents_signed\") {\n const gates = await client.getFormationGates(entityId);\n if (gates.requires_natural_person_attestation && !gates.attestation_recorded) {\n await client.recordFilingAttestation(entityId, {\n signer_name: gates.designated_attestor_name,\n signer_role: gates.designated_attestor_role,\n signer_email: gates.designated_attestor_email ?? fallbackSignerEmail({\n role: String(gates.designated_attestor_role ?? \"attestor\"),\n signer_name: String(gates.designated_attestor_name ?? \"attestor\"),\n }),\n consent_text: DEFAULT_ATTESTATION_CONSENT,\n notes: \"Recorded automatically by corp form activate\",\n });\n steps.push(\"recorded filing attestation\");\n }\n const gatesAfterAttestation = await client.getFormationGates(entityId);\n if (\n gatesAfterAttestation.requires_registered_agent_consent_evidence\n && Number(gatesAfterAttestation.registered_agent_consent_evidence_count ?? 0) === 0\n ) {\n await client.addRegisteredAgentConsentEvidence(entityId, {\n evidence_uri: options.evidenceUri ?? `generated://registered-agent-consent/${entityId}`,\n evidence_type: options.evidenceType ?? \"generated\",\n notes: \"Recorded automatically by corp form activate\",\n });\n steps.push(\"recorded registered-agent consent evidence\");\n }\n const finalGates = await client.getFormationGates(entityId);\n if (Array.isArray(finalGates.filing_submission_blockers) && finalGates.filing_submission_blockers.length > 0) {\n throw new Error(\n `Formation filing is still blocked: ${finalGates.filing_submission_blockers.join(\"; \")}`,\n );\n }\n await client.submitFiling(entityId);\n steps.push(\"submitted filing\");\n formation = await client.getFormation(entityId) as ApiRecord;\n continue;\n }\n\n if (status === \"filing_submitted\") {\n await client.confirmFiling(entityId, {\n external_filing_id: options.filingId ?? filingIdentifier(\"sim\", entityId),\n receipt_reference: options.receiptReference ?? filingIdentifier(\"receipt\", entityId),\n });\n steps.push(\"confirmed filing\");\n formation = await client.getFormation(entityId) as ApiRecord;\n continue;\n }\n\n if (status === \"filed\") {\n await client.applyEin(entityId);\n steps.push(\"submitted EIN application\");\n formation = await client.getFormation(entityId) as ApiRecord;\n continue;\n }\n\n if (status === \"ein_applied\") {\n await client.confirmEin(entityId, { ein: options.ein ?? deterministicEin(entityId) });\n steps.push(\"confirmed EIN\");\n formation = await client.getFormation(entityId) as ApiRecord;\n continue;\n }\n\n throw new Error(`Unsupported formation status for activation: ${status || \"unknown\"}`);\n }\n\n throw new Error(\"Formation activation did not converge within 10 steps.\");\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printDocumentsTable, printError, printReferenceSummary, printSuccess, printJson, printWriteResult } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport { autoSignFormationDocument, autoSignFormationDocuments } from \"../formation-automation.js\";\n\nconst HUMANS_APP_ORIGIN = \"https://humans.thecorporation.ai\";\n\nfunction formatSigningLink(docId: string, result: { token?: unknown; signing_url?: unknown }): string {\n if (typeof result.token === \"string\" && result.token.length > 0) {\n return `${HUMANS_APP_ORIGIN}/sign/${docId}?token=${encodeURIComponent(result.token)}`;\n }\n if (typeof result.signing_url === \"string\" && result.signing_url.length > 0) {\n if (/^https?:\\/\\//.test(result.signing_url)) {\n return result.signing_url;\n }\n const normalizedPath = result.signing_url.startsWith(\"/human/sign/\")\n ? result.signing_url.replace(\"/human/sign/\", \"/sign/\")\n : result.signing_url;\n return `${HUMANS_APP_ORIGIN}${normalizedPath.startsWith(\"/\") ? normalizedPath : `/${normalizedPath}`}`;\n }\n return `${HUMANS_APP_ORIGIN}/sign/${docId}`;\n}\n\nexport async function documentsListCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const docs = await client.getEntityDocuments(eid);\n await resolver.stabilizeRecords(\"document\", docs, eid);\n if (opts.json) printJson(docs);\n else if (docs.length === 0) console.log(\"No documents found.\");\n else printDocumentsTable(docs);\n } catch (err) { printError(`Failed to fetch documents: ${err}`); process.exit(1); }\n}\n\nexport async function documentsSigningLinkCommand(docId: string, opts: { entityId?: string }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedDocumentId = await resolver.resolveDocument(eid, docId);\n const result = await client.getSigningLink(resolvedDocumentId, eid);\n const shareUrl = formatSigningLink(resolvedDocumentId, result);\n if (process.stdout.isTTY) {\n printSuccess(\"Signing link generated.\");\n const summaryRecord = await resolver.stabilizeRecord(\"document\", { document_id: resolvedDocumentId, title: docId }, eid);\n printReferenceSummary(\"document\", summaryRecord, { label: \"Document Ref:\" });\n }\n console.log(shareUrl);\n } catch (err) { printError(`Failed to get signing link: ${err}`); process.exit(1); }\n}\n\nexport async function documentsGenerateCommand(opts: {\n entityId?: string;\n template: string;\n counterparty: string;\n effectiveDate?: string;\n baseSalary?: string;\n param?: string[];\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const parameters: Record<string, unknown> = {};\n if (opts.baseSalary) {\n parameters.base_salary = opts.baseSalary;\n }\n for (const raw of opts.param ?? []) {\n const idx = raw.indexOf(\"=\");\n if (idx <= 0) {\n throw new Error(`Invalid --param value: ${raw}. Expected key=value.`);\n }\n const key = raw.slice(0, idx).trim();\n const value = raw.slice(idx + 1).trim();\n if (!key) {\n throw new Error(`Invalid --param value: ${raw}. Expected key=value.`);\n }\n parameters[key] = coerceParamValue(value);\n }\n\n const result = await client.generateContract({\n entity_id: eid,\n template_type: opts.template,\n counterparty_name: opts.counterparty,\n effective_date: opts.effectiveDate ?? new Date().toISOString().slice(0, 10),\n parameters,\n });\n await resolver.stabilizeRecord(\"document\", result, eid);\n resolver.rememberFromRecord(\"document\", result, eid);\n printWriteResult(result, `Contract generated: ${result.contract_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"document\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to generate contract: ${err}`); process.exit(1); }\n}\n\nfunction coerceParamValue(raw: string): unknown {\n if (raw === \"true\") return true;\n if (raw === \"false\") return false;\n if (/^-?\\d+(\\.\\d+)?$/.test(raw)) return Number(raw);\n if ((raw.startsWith(\"{\") && raw.endsWith(\"}\")) || (raw.startsWith(\"[\") && raw.endsWith(\"]\"))) {\n try {\n return JSON.parse(raw);\n } catch {\n return raw;\n }\n }\n return raw;\n}\n\nexport async function documentsSignCommand(docId: string, opts: {\n entityId?: string;\n signerName?: string;\n signerRole?: string;\n signerEmail?: string;\n signatureText?: string;\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedDocumentId = await resolver.resolveDocument(eid, docId);\n\n if (opts.signerName || opts.signerRole || opts.signerEmail || opts.signatureText) {\n if (!opts.signerName || !opts.signerRole || !opts.signerEmail) {\n throw new Error(\"Manual signing requires --signer-name, --signer-role, and --signer-email.\");\n }\n const result = await client.signDocument(resolvedDocumentId, eid, {\n signer_name: opts.signerName,\n signer_role: opts.signerRole,\n signer_email: opts.signerEmail,\n signature_text: opts.signatureText ?? opts.signerName,\n });\n await resolver.stabilizeRecord(\"document\", { document_id: resolvedDocumentId, title: docId }, eid);\n printWriteResult(result, `Document ${resolvedDocumentId} signed.`, opts.json);\n return;\n }\n\n const result = await autoSignFormationDocument(client, eid, resolvedDocumentId);\n await resolver.stabilizeRecord(\"document\", result.document, eid);\n resolver.rememberFromRecord(\"document\", result.document, eid);\n if (opts.json) {\n printJson({\n document_id: resolvedDocumentId,\n signatures_added: result.signatures_added,\n document: result.document,\n });\n return;\n }\n printSuccess(\n result.signatures_added > 0\n ? `Applied ${result.signatures_added} signature(s) to ${resolvedDocumentId}.`\n : `No signatures were needed for ${resolvedDocumentId}.`,\n );\n printReferenceSummary(\"document\", result.document, { showReuseHint: true });\n printJson(result.document);\n } catch (err) {\n printError(`Failed to sign document: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function documentsSignAllCommand(opts: {\n entityId?: string;\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await autoSignFormationDocuments(client, resolver, eid);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(\n `Processed ${result.documents_seen} formation document(s); added ${result.signatures_added} signature(s) across ${result.documents_signed} document(s).`,\n );\n printJson(result.documents.map((document) => ({\n document_id: document.document_id,\n title: document.title,\n status: document.status,\n signatures: Array.isArray(document.signatures) ? document.signatures.length : document.signatures,\n })));\n } catch (err) {\n printError(`Failed to sign formation documents: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function documentsPreviewPdfCommand(opts: {\n entityId?: string; documentId: string;\n}): Promise<void> {\n if (!opts.documentId || opts.documentId.trim().length === 0) {\n printError(\"preview-pdf requires --definition-id (or deprecated alias --document-id)\");\n process.exit(1);\n }\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n await client.validatePreviewPdf(eid, opts.documentId);\n const url = client.getPreviewPdfUrl(eid, opts.documentId);\n printSuccess(`Preview PDF URL: ${url}`);\n console.log(\"The document definition was validated successfully. Use your API key to download the PDF.\");\n } catch (err) {\n printError(`Failed to validate preview PDF: ${err}`);\n process.exit(1);\n }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printDeadlinesTable, printError, printJson, printTaxFilingsTable, printWriteResult } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\n\nfunction normalizeRecurrence(recurrence?: string): string | undefined {\n if (!recurrence) return undefined;\n if (recurrence === \"yearly\") return \"annual\";\n return recurrence;\n}\n\nexport async function taxFilingsCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const filings = await client.listTaxFilings(eid);\n await resolver.stabilizeRecords(\"tax_filing\", filings, eid);\n if (opts.json) printJson(filings);\n else if (filings.length === 0) console.log(\"No tax filings found.\");\n else printTaxFilingsTable(filings);\n } catch (err) { printError(`Failed to fetch tax filings: ${err}`); process.exit(1); }\n}\n\nexport async function taxDeadlinesCommand(opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const deadlines = await client.listDeadlines(eid);\n await resolver.stabilizeRecords(\"deadline\", deadlines, eid);\n if (opts.json) printJson(deadlines);\n else if (deadlines.length === 0) console.log(\"No deadlines found.\");\n else printDeadlinesTable(deadlines);\n } catch (err) { printError(`Failed to fetch deadlines: ${err}`); process.exit(1); }\n}\n\nexport async function taxFileCommand(opts: {\n entityId?: string;\n type: string;\n year: number;\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const result = await client.fileTaxDocument({ entity_id: eid, document_type: opts.type, tax_year: opts.year });\n await resolver.stabilizeRecord(\"tax_filing\", result, eid);\n resolver.rememberFromRecord(\"tax_filing\", result, eid);\n printWriteResult(result, `Tax document filed: ${result.filing_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"tax_filing\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to file tax document: ${err}`); process.exit(1); }\n}\n\nexport async function taxDeadlineCommand(opts: {\n entityId?: string;\n type: string;\n dueDate: string;\n description: string;\n recurrence?: string;\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const payload: Record<string, unknown> = {\n entity_id: eid, deadline_type: opts.type, due_date: opts.dueDate,\n description: opts.description,\n };\n const recurrence = normalizeRecurrence(opts.recurrence);\n if (recurrence) payload.recurrence = recurrence;\n const result = await client.trackDeadline(payload);\n await resolver.stabilizeRecord(\"deadline\", result, eid);\n resolver.rememberFromRecord(\"deadline\", result, eid);\n printWriteResult(result, `Deadline tracked: ${result.deadline_id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"deadline\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to track deadline: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printAgentsTable, printError, printJson, printReferenceSummary, printWriteResult } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport chalk from \"chalk\";\nimport type { ApiRecord } from \"../types.js\";\nimport { readFileSync, realpathSync } from \"node:fs\";\nimport { relative, resolve } from \"node:path\";\n\nexport async function agentsListCommand(opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const agents = await client.listAgents();\n await resolver.stabilizeRecords(\"agent\", agents);\n if (opts.json) printJson(agents);\n else if (agents.length === 0) console.log(\"No agents found.\");\n else printAgentsTable(agents);\n } catch (err) { printError(`Failed to fetch agents: ${err}`); process.exit(1); }\n}\n\nexport async function agentsShowCommand(agentId: string, opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n const agent = await client.getAgent(resolvedAgentId);\n await resolver.stabilizeRecord(\"agent\", agent);\n if (opts.json) { printJson(agent); return; }\n console.log(chalk.magenta(\"─\".repeat(40)));\n console.log(chalk.magenta.bold(\" Agent Detail\"));\n console.log(chalk.magenta(\"─\".repeat(40)));\n console.log(` ${chalk.bold(\"Name:\")} ${agent.name ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Status:\")} ${agent.status ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Model:\")} ${agent.model ?? \"N/A\"}`);\n printReferenceSummary(\"agent\", agent, { showReuseHint: true });\n if (agent.system_prompt) {\n let prompt = String(agent.system_prompt);\n if (prompt.length > 100) prompt = prompt.slice(0, 97) + \"...\";\n console.log(` ${chalk.bold(\"Prompt:\")} ${prompt}`);\n }\n if (agent.skills && Array.isArray(agent.skills) && agent.skills.length > 0) {\n console.log(` ${chalk.bold(\"Skills:\")} ${(agent.skills as Array<{name?: string}>).map((s) => s.name ?? \"?\").join(\", \")}`);\n }\n console.log(chalk.magenta(\"─\".repeat(40)));\n } catch (err) { printError(`Failed to fetch agent: ${err}`); process.exit(1); }\n}\n\nexport async function agentsCreateCommand(opts: {\n name: string;\n prompt: string;\n model?: string;\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const data: ApiRecord = { name: opts.name, system_prompt: opts.prompt };\n if (opts.model) data.model = opts.model;\n const result = await client.createAgent(data);\n await resolver.stabilizeRecord(\"agent\", result);\n resolver.rememberFromRecord(\"agent\", result);\n printWriteResult(result, `Agent created: ${result.agent_id ?? result.id ?? \"OK\"}`, {\n jsonOnly: opts.json,\n referenceKind: \"agent\",\n showReuseHint: true,\n });\n } catch (err) { printError(`Failed to create agent: ${err}`); process.exit(1); }\n}\n\nexport async function agentsPauseCommand(agentId: string, opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n const result = await client.updateAgent(resolvedAgentId, { status: \"paused\" });\n printWriteResult(result, `Agent ${resolvedAgentId} paused.`, opts.json);\n } catch (err) { printError(`Failed to pause agent: ${err}`); process.exit(1); }\n}\n\nexport async function agentsResumeCommand(agentId: string, opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n const result = await client.updateAgent(resolvedAgentId, { status: \"active\" });\n printWriteResult(result, `Agent ${resolvedAgentId} resumed.`, opts.json);\n } catch (err) { printError(`Failed to resume agent: ${err}`); process.exit(1); }\n}\n\nexport async function agentsDeleteCommand(agentId: string, opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n const result = await client.deleteAgent(resolvedAgentId);\n printWriteResult(result, `Agent ${resolvedAgentId} deleted.`, opts.json);\n } catch (err) { printError(`Failed to delete agent: ${err}`); process.exit(1); }\n}\n\nfunction resolveTextInput(\n inlineText: string | undefined,\n filePath: string | undefined,\n label: string,\n required = false,\n): string | undefined {\n if (inlineText && filePath) {\n throw new Error(`Pass either --${label} or --${label}-file, not both.`);\n }\n if (filePath) {\n if (process.env.CORP_ALLOW_UNSAFE_FILE_INPUT === \"1\") {\n return readFileSync(filePath, \"utf8\");\n }\n const resolvedFile = realpathSync(resolve(filePath));\n const workingTreeRoot = realpathSync(process.cwd());\n const rel = relative(workingTreeRoot, resolvedFile);\n if (rel === \"\" || (!rel.startsWith(\"..\") && !rel.startsWith(\"/\"))) {\n return readFileSync(resolvedFile, \"utf8\");\n }\n throw new Error(\n `--${label}-file must stay inside the current working directory unless CORP_ALLOW_UNSAFE_FILE_INPUT=1 is set.`,\n );\n }\n if (inlineText) {\n return inlineText;\n }\n if (required) {\n throw new Error(`Provide --${label} or --${label}-file.`);\n }\n return undefined;\n}\n\nexport async function agentsMessageCommand(\n agentId: string,\n opts: { body?: string; bodyFile?: string; json?: boolean },\n): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const body = resolveTextInput(opts.body, opts.bodyFile, \"body\", true);\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n const result = await client.sendAgentMessage(resolvedAgentId, body!);\n printWriteResult(result, `Message sent. Execution: ${result.execution_id ?? \"OK\"}`, opts.json);\n } catch (err) { printError(`Failed to send message: ${err}`); process.exit(1); }\n}\n\nexport async function agentsExecutionsCommand(agentId: string, _opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n // No list-executions endpoint exists yet; individual executions can be\n // queried via GET /v1/agents/{agent_id}/executions/{execution_id}.\n printError(\n `Listing executions is not yet supported.\\n` +\n ` To inspect a specific run, use the execution ID returned by \"agents message\":\\n` +\n ` GET /v1/agents/${resolvedAgentId}/executions/<execution-id>`,\n );\n process.exit(1);\n}\n\n\nexport async function agentsSkillCommand(agentId: string, opts: {\n name: string;\n description: string;\n instructions?: string;\n instructionsFile?: string;\n json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const instructions = resolveTextInput(\n opts.instructions,\n opts.instructionsFile,\n \"instructions\",\n );\n const resolvedAgentId = await resolver.resolveAgent(agentId);\n const result = await client.addAgentSkill(resolvedAgentId, {\n name: opts.name,\n description: opts.description,\n parameters: instructions ? { instructions } : {},\n });\n printWriteResult(result, `Skill '${opts.name}' added to agent ${resolvedAgentId}.`, opts.json);\n } catch (err) { printError(`Failed to add skill: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printReferenceSummary, printWorkItemsTable, printError, printJson, printWriteResult } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport chalk from \"chalk\";\n\nfunction actorLabel(record: Record<string, unknown>, key: \"claimed_by\" | \"completed_by\" | \"created_by\"): string | undefined {\n const actor = record[`${key}_actor`];\n if (actor && typeof actor === \"object\" && !Array.isArray(actor)) {\n const label = (actor as Record<string, unknown>).label;\n const actorType = (actor as Record<string, unknown>).actor_type;\n if (typeof label === \"string\" && label.trim()) {\n return typeof actorType === \"string\" && actorType.trim()\n ? `${label} (${actorType})`\n : label;\n }\n }\n const legacy = record[key];\n return typeof legacy === \"string\" && legacy.trim() ? legacy : undefined;\n}\n\nexport async function workItemsListCommand(opts: { entityId?: string; json?: boolean; status?: string; category?: string }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const params: Record<string, string> = {};\n if (opts.status) params.status = opts.status;\n if (opts.category) params.category = opts.category;\n const items = await client.listWorkItems(eid, Object.keys(params).length > 0 ? params : undefined);\n await resolver.stabilizeRecords(\"work_item\", items, eid);\n if (opts.json) printJson(items);\n else if (items.length === 0) console.log(\"No work items found.\");\n else printWorkItemsTable(items);\n } catch (err) { printError(`Failed to fetch work items: ${err}`); process.exit(1); }\n}\n\nexport async function workItemsShowCommand(workItemId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedWorkItemId = await resolver.resolveWorkItem(eid, workItemId);\n const w = await client.getWorkItem(eid, resolvedWorkItemId);\n await resolver.stabilizeRecord(\"work_item\", w, eid);\n if (opts.json) { printJson(w); return; }\n console.log(chalk.cyan(\"─\".repeat(40)));\n console.log(chalk.cyan.bold(\" Work Item Detail\"));\n console.log(chalk.cyan(\"─\".repeat(40)));\n console.log(` ${chalk.bold(\"Title:\")} ${w.title ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Category:\")} ${w.category ?? \"N/A\"}`);\n console.log(` ${chalk.bold(\"Status:\")} ${w.effective_status ?? w.status ?? \"N/A\"}`);\n printReferenceSummary(\"work_item\", w, { showReuseHint: true });\n if (w.description) console.log(` ${chalk.bold(\"Description:\")} ${w.description}`);\n if (w.deadline) console.log(` ${chalk.bold(\"Deadline:\")} ${w.deadline}`);\n if (w.asap) console.log(` ${chalk.bold(\"Priority:\")} ${chalk.red.bold(\"ASAP\")}`);\n const claimedBy = actorLabel(w, \"claimed_by\");\n const completedBy = actorLabel(w, \"completed_by\");\n const createdBy = actorLabel(w, \"created_by\");\n if (claimedBy) console.log(` ${chalk.bold(\"Claimed by:\")} ${claimedBy}`);\n if (w.claimed_at) console.log(` ${chalk.bold(\"Claimed at:\")} ${w.claimed_at}`);\n if (w.claim_ttl_seconds) console.log(` ${chalk.bold(\"Claim TTL:\")} ${w.claim_ttl_seconds}s`);\n if (completedBy) console.log(` ${chalk.bold(\"Completed by:\")} ${completedBy}`);\n if (w.completed_at) console.log(` ${chalk.bold(\"Completed at:\")} ${w.completed_at}`);\n if (w.result) console.log(` ${chalk.bold(\"Result:\")} ${w.result}`);\n if (createdBy) console.log(` ${chalk.bold(\"Created by:\")} ${createdBy}`);\n console.log(` ${chalk.bold(\"Created at:\")} ${w.created_at ?? \"N/A\"}`);\n console.log(chalk.cyan(\"─\".repeat(40)));\n } catch (err) { printError(`Failed to fetch work item: ${err}`); process.exit(1); }\n}\n\nexport async function workItemsCreateCommand(opts: {\n entityId?: string; title: string; category?: string;\n description?: string; deadline?: string; asap?: boolean; createdBy?: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n if (!opts.category) {\n printError(\"Missing required option: --category <category>\");\n process.exit(1);\n }\n const data: Record<string, unknown> = { title: opts.title, category: opts.category };\n if (opts.description) data.description = opts.description;\n if (opts.deadline) data.deadline = opts.deadline;\n if (opts.asap) data.asap = true;\n if (opts.createdBy) data.created_by_actor = await resolver.resolveWorkItemActor(eid, opts.createdBy);\n const result = await client.createWorkItem(eid, data);\n await resolver.stabilizeRecord(\"work_item\", result, eid);\n resolver.rememberFromRecord(\"work_item\", result, eid);\n printWriteResult(\n result,\n `Work item created: ${result.work_item_id ?? result.id ?? \"OK\"}`,\n { jsonOnly: opts.json, referenceKind: \"work_item\", showReuseHint: true },\n );\n } catch (err) { printError(`Failed to create work item: ${err}`); process.exit(1); }\n}\n\nexport async function workItemsClaimCommand(workItemId: string, opts: {\n entityId?: string; claimedBy: string; ttl?: number; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedWorkItemId = await resolver.resolveWorkItem(eid, workItemId);\n const data: Record<string, unknown> = {\n claimed_by_actor: await resolver.resolveWorkItemActor(eid, opts.claimedBy),\n };\n if (opts.ttl != null) data.ttl_seconds = opts.ttl;\n const result = await client.claimWorkItem(eid, resolvedWorkItemId, data);\n printWriteResult(result, `Work item ${resolvedWorkItemId} claimed by ${opts.claimedBy}.`, opts.json);\n } catch (err) { printError(`Failed to claim work item: ${err}`); process.exit(1); }\n}\n\nexport async function workItemsCompleteCommand(workItemId: string, opts: {\n entityId?: string; completedBy: string; result?: string; json?: boolean;\n}): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedWorkItemId = await resolver.resolveWorkItem(eid, workItemId);\n const data: Record<string, unknown> = {\n completed_by_actor: await resolver.resolveWorkItemActor(eid, opts.completedBy),\n };\n if (opts.result) data.result = opts.result;\n const result = await client.completeWorkItem(eid, resolvedWorkItemId, data);\n printWriteResult(result, `Work item ${resolvedWorkItemId} completed.`, opts.json);\n } catch (err) { printError(`Failed to complete work item: ${err}`); process.exit(1); }\n}\n\nexport async function workItemsReleaseCommand(workItemId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedWorkItemId = await resolver.resolveWorkItem(eid, workItemId);\n const result = await client.releaseWorkItem(eid, resolvedWorkItemId);\n printWriteResult(result, `Work item ${resolvedWorkItemId} claim released.`, opts.json);\n } catch (err) { printError(`Failed to release work item: ${err}`); process.exit(1); }\n}\n\nexport async function workItemsCancelCommand(workItemId: string, opts: { entityId?: string; json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n try {\n const eid = await resolver.resolveEntity(opts.entityId);\n const resolvedWorkItemId = await resolver.resolveWorkItem(eid, workItemId);\n const result = await client.cancelWorkItem(eid, resolvedWorkItemId);\n printWriteResult(result, `Work item ${resolvedWorkItemId} cancelled.`, opts.json);\n } catch (err) { printError(`Failed to cancel work item: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printBillingPanel, printError, printSuccess, printJson } from \"../output.js\";\nimport type { ApiRecord } from \"../types.js\";\n\nfunction makeClient() {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n return new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n}\n\nfunction enrichBillingStatus(status: ApiRecord): ApiRecord {\n if (typeof status.status_explanation === \"string\" && status.status_explanation.trim()) {\n return status;\n }\n\n const plan = String(status.plan ?? status.tier ?? \"\").trim();\n const subStatus = String(status.status ?? \"\").trim();\n if (subStatus !== \"pending_checkout\") {\n return status;\n }\n\n const statusExplanation = plan\n ? `Checkout for the ${plan} plan has started, but billing will not become active until Stripe checkout is completed.`\n : \"Checkout has started, but billing will not become active until Stripe checkout is completed.\";\n\n return { ...status, status_explanation: statusExplanation };\n}\n\nexport async function billingCommand(opts: { json?: boolean }): Promise<void> {\n const client = makeClient();\n try {\n const [status, plans] = await Promise.all([client.getBillingStatus(), client.getBillingPlans()]);\n const enrichedStatus = enrichBillingStatus(status);\n if (opts.json) printJson({ status: enrichedStatus, plans });\n else printBillingPanel(enrichedStatus, plans);\n } catch (err) { printError(`Failed to fetch billing info: ${err}`); process.exit(1); }\n}\n\nexport async function billingPortalCommand(): Promise<void> {\n const client = makeClient();\n try {\n const result = await client.createBillingPortal();\n const url = result.portal_url as string;\n if (!url) { printError(\"No portal URL returned. Ensure you have an active subscription.\"); process.exit(1); }\n printSuccess(\"Stripe Customer Portal URL:\");\n console.log(url);\n } catch (err) { printError(`Failed to create portal session: ${err}`); process.exit(1); }\n}\n\nexport async function billingUpgradeCommand(opts: { plan: string }): Promise<void> {\n const client = makeClient();\n try {\n const result = await client.createBillingCheckout(opts.plan);\n const url = result.checkout_url as string;\n if (!url) { printError(\"No checkout URL returned.\"); process.exit(1); }\n printSuccess(`Stripe Checkout URL for ${opts.plan}:`);\n console.log(url);\n } catch (err) { printError(`Failed to create checkout session: ${err}`); process.exit(1); }\n}\n","import { printError } from \"../output.js\";\n\nexport async function approvalsListCommand(_opts: { json?: boolean }): Promise<void> {\n printError(\n \"Approvals are managed through governance meetings.\\n\" +\n \" Use: corp governance convene ... to schedule a board meeting\\n\" +\n \" Use: corp governance vote <meeting-ref> <item-ref> ... to cast votes\"\n );\n process.exit(1);\n}\n\nexport async function approvalsRespondCommand(\n _approvalId: string,\n _decision: string,\n _opts: { message?: string }\n): Promise<void> {\n printError(\n \"Approvals are managed through governance meetings.\\n\" +\n \" Use: corp governance vote <meeting-ref> <item-ref> --voter <contact-ref> --vote for\"\n );\n process.exit(1);\n}\n","import { input, select, confirm, number } from \"@inquirer/prompts\";\nimport chalk from \"chalk\";\nimport Table from \"cli-table3\";\nimport { readFileSync, realpathSync } from \"node:fs\";\nimport { relative, resolve } from \"node:path\";\nimport { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printDryRun, printError, printJson, printReferenceSummary, printSuccess } from \"../output.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport type { ApiRecord } from \"../types.js\";\nimport { EntityType, OfficerTitle } from \"@thecorporation/corp-tools\";\nimport { activateFormationEntity } from \"../formation-automation.js\";\n\n// ── Types ──────────────────────────────────────────────────────\n\ninterface FounderInfo {\n name: string;\n email: string;\n role: string;\n address?: { street: string; street2?: string; city: string; state: string; zip: string };\n officer_title?: string;\n is_incorporator?: boolean;\n shares_purchased?: number;\n ownership_pct?: number;\n vesting?: { total_months: number; cliff_months: number; acceleration?: string };\n ip_description?: string;\n}\n\ninterface FormOptions {\n type?: string;\n name?: string;\n jurisdiction?: string;\n member?: string[];\n memberJson?: string[];\n membersFile?: string;\n fiscalYearEnd?: string;\n sCorp?: boolean;\n transferRestrictions?: boolean;\n rofr?: boolean;\n address?: string;\n json?: boolean;\n dryRun?: boolean;\n}\n\n// ── Helpers ────────────────────────────────────────────────────\n\nfunction isCorp(entityType: string): boolean {\n return entityType === \"c_corp\" || entityType === \"s_corp\" || entityType === \"corporation\";\n}\n\nfunction sectionHeader(title: string): void {\n console.log();\n console.log(chalk.blue(\"─\".repeat(50)));\n console.log(chalk.blue.bold(` ${title}`));\n console.log(chalk.blue(\"─\".repeat(50)));\n}\n\nfunction officerTitleLabel(title: string): string {\n switch (title) {\n case \"ceo\":\n return \"CEO\";\n case \"cfo\":\n return \"CFO\";\n case \"cto\":\n return \"CTO\";\n case \"coo\":\n return \"COO\";\n case \"vp\":\n return \"VP\";\n default:\n return title.charAt(0).toUpperCase() + title.slice(1);\n }\n}\n\nfunction parseBoolean(value: unknown): boolean | undefined {\n if (typeof value === \"boolean\") return value;\n if (typeof value !== \"string\") return undefined;\n if (value === \"true\") return true;\n if (value === \"false\") return false;\n return undefined;\n}\n\nfunction parseAddressValue(raw: unknown): FounderInfo[\"address\"] {\n if (!raw) return undefined;\n if (typeof raw === \"string\") {\n const parts = raw.split(\"|\").map((part) => part.trim());\n if (parts.length === 4) {\n return { street: parts[0], city: parts[1], state: parts[2], zip: parts[3] };\n }\n throw new Error(`Invalid founder address: ${raw}. Expected street|city|state|zip.`);\n }\n if (typeof raw === \"object\" && raw !== null) {\n const value = raw as Record<string, unknown>;\n if (\n typeof value.street === \"string\" &&\n typeof value.city === \"string\" &&\n typeof value.state === \"string\" &&\n typeof value.zip === \"string\"\n ) {\n return {\n street: value.street,\n street2: typeof value.street2 === \"string\" ? value.street2 : undefined,\n city: value.city,\n state: value.state,\n zip: value.zip,\n };\n }\n }\n throw new Error(\"Founder address must be an object or street|city|state|zip string.\");\n}\n\nfunction normalizeFounderInfo(input: Record<string, unknown>): FounderInfo {\n const name = typeof input.name === \"string\" ? input.name.trim() : \"\";\n const email = typeof input.email === \"string\" ? input.email.trim() : \"\";\n const role = typeof input.role === \"string\" ? input.role.trim() : \"\";\n if (!name || !email || !role) {\n throw new Error(\"Founder JSON requires non-empty name, email, and role.\");\n }\n\n const founder: FounderInfo = { name, email, role };\n const ownershipPct = input.ownership_pct ?? input.pct;\n if (ownershipPct != null) founder.ownership_pct = Number(ownershipPct);\n const sharesPurchased = input.shares_purchased ?? input.shares;\n if (sharesPurchased != null) founder.shares_purchased = Number(sharesPurchased);\n if (typeof input.officer_title === \"string\") founder.officer_title = input.officer_title;\n const incorporator = parseBoolean(input.is_incorporator ?? input.incorporator);\n if (incorporator !== undefined) founder.is_incorporator = incorporator;\n if (input.address != null) founder.address = parseAddressValue(input.address);\n if (typeof input.ip_description === \"string\") founder.ip_description = input.ip_description;\n if (input.vesting && typeof input.vesting === \"object\") {\n const vesting = input.vesting as Record<string, unknown>;\n if (vesting.total_months != null && vesting.cliff_months != null) {\n founder.vesting = {\n total_months: Number(vesting.total_months),\n cliff_months: Number(vesting.cliff_months),\n acceleration:\n typeof vesting.acceleration === \"string\" ? vesting.acceleration : undefined,\n };\n }\n }\n return founder;\n}\n\nfunction parseLegacyMemberSpec(raw: string): FounderInfo {\n const parts = raw.split(\",\").map((p) => p.trim());\n if (parts.length < 3) {\n throw new Error(\n `Invalid member format: ${raw}. Expected: name,email,role[,pct[,address[,officer_title[,is_incorporator]]]]`,\n );\n }\n const founder: FounderInfo = { name: parts[0], email: parts[1], role: parts[2] };\n if (parts.length >= 4) founder.ownership_pct = parseFloat(parts[3]);\n if (parts.length >= 5 && parts[4]) founder.address = parseAddressValue(parts[4]);\n if (parts.length >= 6 && parts[5]) founder.officer_title = parts[5];\n if (parts.length >= 7) {\n const incorporator = parseBoolean(parts[6]);\n if (incorporator !== undefined) founder.is_incorporator = incorporator;\n }\n return founder;\n}\n\nfunction parseKeyValueMemberSpec(raw: string): FounderInfo {\n const parsed: Record<string, unknown> = {};\n for (const segment of raw.split(\",\")) {\n const [key, ...rest] = segment.split(\"=\");\n if (!key || rest.length === 0) {\n throw new Error(`Invalid member format: ${raw}. Expected key=value pairs.`);\n }\n parsed[key.trim()] = rest.join(\"=\").trim();\n }\n return normalizeFounderInfo(parsed);\n}\n\nfunction readSafeJsonFile(filePath: string, label: string): string {\n if (process.env.CORP_ALLOW_UNSAFE_FILE_INPUT === \"1\") {\n return readFileSync(filePath, \"utf8\");\n }\n const resolvedFile = realpathSync(resolve(filePath));\n const workingTreeRoot = realpathSync(process.cwd());\n const rel = relative(workingTreeRoot, resolvedFile);\n if (rel === \"\" || (!rel.startsWith(\"..\") && !rel.startsWith(\"/\"))) {\n return readFileSync(resolvedFile, \"utf8\");\n }\n throw new Error(\n `--${label} must stay inside the current working directory unless CORP_ALLOW_UNSAFE_FILE_INPUT=1 is set.`,\n );\n}\n\nfunction parseScriptedFounders(opts: FormOptions): FounderInfo[] {\n const founders: FounderInfo[] = [];\n for (const raw of opts.member ?? []) {\n founders.push(raw.includes(\"=\") ? parseKeyValueMemberSpec(raw) : parseLegacyMemberSpec(raw));\n }\n for (const raw of opts.memberJson ?? []) {\n founders.push(normalizeFounderInfo(JSON.parse(raw) as Record<string, unknown>));\n }\n if (opts.membersFile) {\n const parsed = JSON.parse(readSafeJsonFile(opts.membersFile, \"members-file\")) as unknown;\n let entries: unknown[];\n if (Array.isArray(parsed)) {\n entries = parsed;\n } else if (\n typeof parsed === \"object\" &&\n parsed !== null &&\n \"members\" in parsed &&\n Array.isArray((parsed as { members?: unknown }).members)\n ) {\n entries = (parsed as { members: unknown[] }).members;\n } else {\n throw new Error(\"members file must be a JSON array or {\\\"members\\\": [...]}\");\n }\n for (const entry of entries) {\n if (typeof entry !== \"object\" || entry === null || Array.isArray(entry)) {\n throw new Error(\"each founder entry must be a JSON object\");\n }\n founders.push(normalizeFounderInfo(entry as Record<string, unknown>));\n }\n }\n return founders;\n}\n\nasync function promptAddress(): Promise<{ street: string; city: string; state: string; zip: string }> {\n const street = await input({ message: \" Street address\" });\n const city = await input({ message: \" City\" });\n const state = await input({ message: \" State (2-letter)\", default: \"DE\" });\n const zip = await input({ message: \" ZIP code\" });\n return { street, city, state, zip };\n}\n\n// ── Phase 1: Entity Details ────────────────────────────────────\n\nasync function phaseEntityDetails(opts: FormOptions, serverCfg: ApiRecord, scripted: boolean) {\n if (!scripted) sectionHeader(\"Phase 1: Entity Details\");\n\n let entityType = opts.type;\n if (!entityType) {\n if (scripted) { entityType = \"llc\"; }\n else {\n entityType = await select({\n message: \"Entity type\",\n choices: [\n { value: \"llc\", name: \"LLC\" },\n { value: \"c_corp\", name: \"C-Corp\" },\n ],\n });\n }\n }\n\n let name = opts.name;\n if (!name) {\n if (scripted) { printError(\"--name is required in scripted mode\"); process.exit(1); }\n name = await input({ message: \"Legal name\" });\n }\n\n let jurisdiction = opts.jurisdiction;\n if (!jurisdiction) {\n const defaultJ = entityType === \"llc\" ? \"US-WY\" : \"US-DE\";\n if (scripted) { jurisdiction = defaultJ; }\n else { jurisdiction = await input({ message: \"Jurisdiction\", default: defaultJ }); }\n }\n\n let companyAddress: { street: string; city: string; state: string; zip: string } | undefined;\n if (opts.address) {\n const parts = opts.address.split(\",\").map((p) => p.trim());\n if (parts.length === 4) {\n companyAddress = { street: parts[0], city: parts[1], state: parts[2], zip: parts[3] };\n }\n }\n if (!companyAddress && !scripted) {\n const wantAddress = await confirm({ message: \"Add company address?\", default: false });\n if (wantAddress) {\n companyAddress = await promptAddress();\n }\n }\n\n const fiscalYearEnd = opts.fiscalYearEnd ?? \"12-31\";\n\n let sCorpElection = opts.sCorp ?? false;\n if (!scripted && isCorp(entityType) && opts.sCorp === undefined) {\n sCorpElection = await confirm({ message: \"S-Corp election?\", default: false });\n }\n\n return { entityType, name, jurisdiction, companyAddress, fiscalYearEnd, sCorpElection };\n}\n\n// ── Phase 2: People ────────────────────────────────────────────\n\nasync function phasePeople(\n opts: FormOptions,\n entityType: string,\n scripted: boolean,\n): Promise<FounderInfo[]> {\n if (!scripted) sectionHeader(\"Phase 2: Founders & Officers\");\n\n const founders: FounderInfo[] = [];\n\n // CLI-provided members (scripted mode)\n if (scripted) {\n try {\n return parseScriptedFounders(opts);\n } catch (err) {\n printError(String(err));\n process.exit(1);\n }\n }\n\n // Interactive mode\n const founderCount = (await number({ message: \"Number of founders (1-6)\", default: 1 })) ?? 1;\n\n for (let i = 0; i < founderCount; i++) {\n console.log(chalk.dim(`\\n Founder ${i + 1} of ${founderCount}:`));\n const name = await input({ message: ` Name` });\n const email = await input({ message: ` Email` });\n\n let role = \"member\";\n if (isCorp(entityType)) {\n role = await select({\n message: \" Role\",\n choices: [\n { value: \"director\", name: \"Director\" },\n { value: \"officer\", name: \"Officer\" },\n { value: \"member\", name: \"Shareholder only\" },\n ],\n });\n }\n\n const wantAddress = await confirm({ message: \" Add address?\", default: false });\n const address = wantAddress ? await promptAddress() : undefined;\n\n let officerTitle: string | undefined;\n if (isCorp(entityType)) {\n const wantOfficer = role === \"officer\" || await confirm({ message: \" Assign officer title?\", default: i === 0 });\n if (wantOfficer) {\n officerTitle = await select({\n message: \" Officer title\",\n choices: OfficerTitle.map((t) => ({\n value: t,\n name: officerTitleLabel(t),\n })),\n });\n }\n }\n\n let isIncorporator = false;\n if (isCorp(entityType) && i === 0 && founderCount === 1) {\n isIncorporator = true;\n } else if (isCorp(entityType)) {\n isIncorporator = await confirm({ message: \" Designate as sole incorporator?\", default: i === 0 });\n }\n\n founders.push({ name, email, role, address, officer_title: officerTitle, is_incorporator: isIncorporator });\n }\n\n return founders;\n}\n\n// ── Phase 3: Stock & Finalize ──────────────────────────────────\n\nasync function phaseStock(\n opts: FormOptions,\n entityType: string,\n founders: FounderInfo[],\n scripted: boolean,\n): Promise<{ founders: FounderInfo[]; transferRestrictions: boolean; rofr: boolean }> {\n if (!scripted) sectionHeader(\"Phase 3: Equity & Finalize\");\n\n const transferRestrictions = opts.transferRestrictions ?? (\n !scripted && isCorp(entityType)\n ? await confirm({ message: \"Transfer restrictions on shares?\", default: true })\n : isCorp(entityType)\n );\n\n const rofr = opts.rofr ?? (\n !scripted && isCorp(entityType)\n ? await confirm({ message: \"Right of first refusal?\", default: true })\n : isCorp(entityType)\n );\n\n if (!scripted) {\n for (const f of founders) {\n console.log(chalk.dim(`\\n Equity for ${f.name}:`));\n\n if (isCorp(entityType)) {\n const shares = await number({ message: ` Shares to purchase`, default: 0 });\n f.shares_purchased = shares ?? 0;\n if (f.shares_purchased === 0) {\n const pct = await number({ message: ` Ownership % (1-100)`, default: founders.length === 1 ? 100 : 0 });\n f.ownership_pct = pct ?? 0;\n }\n } else {\n const pct = await number({\n message: ` Ownership % (1-100)`,\n default: founders.length === 1 ? 100 : 0,\n });\n f.ownership_pct = pct ?? 0;\n }\n\n if (isCorp(entityType)) {\n const wantVesting = await confirm({ message: \" Add vesting schedule?\", default: false });\n if (wantVesting) {\n const totalMonths = (await number({ message: \" Total vesting months\", default: 48 })) ?? 48;\n const cliffMonths = (await number({ message: \" Cliff months\", default: 12 })) ?? 12;\n const acceleration = await select({\n message: \" Acceleration\",\n choices: [\n { value: \"none\", name: \"None\" },\n { value: \"single_trigger\", name: \"Single trigger\" },\n { value: \"double_trigger\", name: \"Double trigger\" },\n ],\n });\n f.vesting = {\n total_months: totalMonths,\n cliff_months: cliffMonths,\n acceleration: acceleration === \"none\" ? undefined : acceleration,\n };\n }\n }\n\n const wantIp = await confirm({ message: \" Contributing IP?\", default: false });\n if (wantIp) {\n f.ip_description = await input({ message: \" Describe IP being contributed\" });\n }\n }\n }\n\n return { founders, transferRestrictions, rofr };\n}\n\n// ── Summary Table ──────────────────────────────────────────────\n\nfunction printSummary(\n entityType: string,\n name: string,\n jurisdiction: string,\n fiscalYearEnd: string,\n sCorpElection: boolean,\n founders: FounderInfo[],\n transferRestrictions: boolean,\n rofr: boolean,\n): void {\n sectionHeader(\"Formation Summary\");\n\n console.log(` ${chalk.bold(\"Entity:\")} ${name}`);\n console.log(` ${chalk.bold(\"Type:\")} ${entityType}`);\n console.log(` ${chalk.bold(\"Jurisdiction:\")} ${jurisdiction}`);\n console.log(` ${chalk.bold(\"Fiscal Year End:\")} ${fiscalYearEnd}`);\n if (isCorp(entityType)) {\n console.log(` ${chalk.bold(\"S-Corp Election:\")} ${sCorpElection ? \"Yes\" : \"No\"}`);\n console.log(` ${chalk.bold(\"Transfer Restrictions:\")} ${transferRestrictions ? \"Yes\" : \"No\"}`);\n console.log(` ${chalk.bold(\"Right of First Refusal:\")} ${rofr ? \"Yes\" : \"No\"}`);\n }\n\n const table = new Table({\n head: [chalk.dim(\"Name\"), chalk.dim(\"Email\"), chalk.dim(\"Role\"), chalk.dim(\"Equity\"), chalk.dim(\"Officer\")],\n });\n for (const f of founders) {\n const equity = f.shares_purchased\n ? `${f.shares_purchased.toLocaleString()} shares`\n : f.ownership_pct\n ? `${f.ownership_pct}%`\n : \"—\";\n table.push([f.name, f.email, f.role, equity, f.officer_title ?? \"—\"]);\n }\n console.log(table.toString());\n}\n\n// ── Main Command ───────────────────────────────────────────────\n\nexport async function formCommand(opts: FormOptions): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n let serverCfg: ApiRecord = {};\n try { serverCfg = await client.getConfig(); } catch { /* ignore */ }\n\n const scripted = Boolean(\n (opts.member && opts.member.length > 0) ||\n (opts.memberJson && opts.memberJson.length > 0) ||\n opts.membersFile,\n );\n\n // Phase 1: Entity Details\n const { entityType, name, jurisdiction, companyAddress, fiscalYearEnd, sCorpElection } =\n await phaseEntityDetails(opts, serverCfg, scripted);\n\n // Phase 2: People\n const founders = await phasePeople(opts, entityType, scripted);\n\n // Phase 3: Stock & Finalize\n const { transferRestrictions, rofr } = await phaseStock(opts, entityType, founders, scripted);\n\n // Summary & Confirm\n printSummary(entityType, name, jurisdiction, fiscalYearEnd, sCorpElection, founders, transferRestrictions, rofr);\n\n const shouldProceed = scripted\n ? true\n : await confirm({ message: \"Proceed with formation?\", default: true });\n\n if (!shouldProceed) {\n console.log(chalk.yellow(\"Formation cancelled.\"));\n return;\n }\n\n // Build members payload\n const members: ApiRecord[] = founders.map((f) => {\n const m: ApiRecord = {\n name: f.name,\n email: f.email,\n role: f.role,\n investor_type: \"natural_person\",\n };\n if (f.ownership_pct) m.ownership_pct = f.ownership_pct;\n if (f.shares_purchased) m.shares_purchased = f.shares_purchased;\n if (f.address) m.address = f.address;\n if (f.officer_title) m.officer_title = f.officer_title;\n if (f.is_incorporator) m.is_incorporator = true;\n if (f.vesting) m.vesting = f.vesting;\n if (f.ip_description) m.ip_description = f.ip_description;\n return m;\n });\n\n const payload: ApiRecord = {\n entity_type: entityType,\n legal_name: name,\n jurisdiction,\n members,\n workspace_id: cfg.workspace_id,\n fiscal_year_end: fiscalYearEnd,\n s_corp_election: sCorpElection,\n transfer_restrictions: transferRestrictions,\n right_of_first_refusal: rofr,\n };\n if (companyAddress) payload.company_address = companyAddress;\n\n if (opts.dryRun) {\n printDryRun(\"formation.create_with_cap_table\", payload);\n return;\n }\n\n const result = await client.createFormationWithCapTable(payload);\n await resolver.stabilizeRecord(\"entity\", result);\n resolver.rememberFromRecord(\"entity\", result);\n\n if (opts.json) {\n printJson(result);\n return;\n }\n\n // Output results\n printSuccess(`Formation created: ${result.formation_id ?? \"OK\"}`);\n if (result.entity_id) {\n printReferenceSummary(\"entity\", result, { showReuseHint: true });\n }\n if (result.legal_entity_id) console.log(` Legal Entity ID: ${result.legal_entity_id}`);\n if (result.instrument_id) console.log(` Instrument ID: ${result.instrument_id}`);\n\n const docIds = (result.document_ids ?? []) as string[];\n if (docIds.length > 0) {\n console.log(` Documents: ${docIds.length} generated`);\n }\n\n const holders = (result.holders ?? []) as ApiRecord[];\n if (holders.length > 0) {\n console.log();\n const table = new Table({\n head: [chalk.dim(\"Holder\"), chalk.dim(\"Shares\"), chalk.dim(\"Ownership %\")],\n });\n for (const h of holders) {\n const pct = typeof h.ownership_pct === \"number\" ? `${h.ownership_pct.toFixed(1)}%` : \"—\";\n table.push([String(h.name ?? \"?\"), String(h.shares ?? 0), pct]);\n }\n console.log(chalk.bold(\" Cap Table:\"));\n console.log(table.toString());\n }\n\n if (result.next_action) {\n console.log(chalk.yellow(`\\n Next: ${result.next_action}`));\n }\n } catch (err) {\n if (err instanceof Error && err.message.includes(\"exit\")) throw err;\n printError(`Failed to create formation: ${err}`);\n process.exit(1);\n }\n}\n\n// ── Staged Formation Subcommands ─────────────────────────────\n\ninterface FormCreateOptions {\n type: string;\n name: string;\n jurisdiction?: string;\n registeredAgentName?: string;\n registeredAgentAddress?: string;\n formationDate?: string;\n fiscalYearEnd?: string;\n sCorp?: boolean;\n transferRestrictions?: boolean;\n rofr?: boolean;\n companyAddress?: string;\n dryRun?: boolean;\n json?: boolean;\n}\n\nfunction parseCsvAddress(raw?: string): { street: string; city: string; state: string; zip: string } | undefined {\n if (!raw) return undefined;\n const parts = raw.split(\",\").map((p) => p.trim()).filter(Boolean);\n if (parts.length !== 4) {\n throw new Error(`Invalid address format: ${raw}. Expected 'street,city,state,zip'`);\n }\n return { street: parts[0], city: parts[1], state: parts[2], zip: parts[3] };\n}\n\nfunction shouldResolveEntityRefForDryRun(entityRef: string): boolean {\n const trimmed = entityRef.trim().toLowerCase();\n return trimmed === \"_\" || trimmed === \"@last\" || trimmed.startsWith(\"@last:\");\n}\n\nasync function resolveEntityRefForFormCommand(\n resolver: ReferenceResolver,\n entityRef: string,\n dryRun?: boolean,\n): Promise<string> {\n if (!dryRun || shouldResolveEntityRefForDryRun(entityRef)) {\n return resolver.resolveEntity(entityRef);\n }\n try {\n return await resolver.resolveEntity(entityRef);\n } catch (err) {\n if (String(err).includes(\"fetch failed\")) {\n return entityRef;\n }\n throw err;\n }\n}\n\nexport async function formCreateCommand(opts: FormCreateOptions): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n const entityType = opts.type === \"corporation\" ? \"c_corp\" : opts.type;\n const payload: ApiRecord = {\n entity_type: entityType,\n legal_name: opts.name,\n };\n if (opts.jurisdiction) payload.jurisdiction = opts.jurisdiction;\n if (opts.registeredAgentName) payload.registered_agent_name = opts.registeredAgentName;\n if (opts.registeredAgentAddress) payload.registered_agent_address = opts.registeredAgentAddress;\n if (opts.formationDate) payload.formation_date = opts.formationDate;\n if (opts.fiscalYearEnd) payload.fiscal_year_end = opts.fiscalYearEnd;\n if (opts.sCorp !== undefined) payload.s_corp_election = opts.sCorp;\n if (opts.transferRestrictions !== undefined) payload.transfer_restrictions = opts.transferRestrictions;\n if (opts.rofr !== undefined) payload.right_of_first_refusal = opts.rofr;\n const companyAddress = parseCsvAddress(opts.companyAddress);\n if (companyAddress) payload.company_address = companyAddress;\n\n if (opts.dryRun) {\n printDryRun(\"formation.create_pending\", payload);\n return;\n }\n\n const result = await client.createPendingEntity(payload);\n await resolver.stabilizeRecord(\"entity\", result);\n resolver.rememberFromRecord(\"entity\", result);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Pending entity created: ${result.entity_id}`);\n printReferenceSummary(\"entity\", result, { showReuseHint: true });\n console.log(` Name: ${result.legal_name}`);\n console.log(` Type: ${result.entity_type}`);\n console.log(` Jurisdiction: ${result.jurisdiction}`);\n console.log(` Status: ${result.formation_status}`);\n console.log(chalk.yellow(`\\n Next: corp form add-founder @last:entity --name \"...\" --email \"...\" --role member --pct 50`));\n } catch (err) {\n printError(`Failed to create pending entity: ${err}`);\n process.exit(1);\n }\n}\n\ninterface FormAddFounderOptions {\n name: string;\n email: string;\n role: string;\n pct: string;\n officerTitle?: string;\n incorporator?: boolean;\n address?: string;\n dryRun?: boolean;\n json?: boolean;\n}\n\ninterface FormFinalizeOptions {\n authorizedShares?: string;\n parValue?: string;\n boardSize?: string;\n principalName?: string;\n registeredAgentName?: string;\n registeredAgentAddress?: string;\n formationDate?: string;\n fiscalYearEnd?: string;\n sCorp?: boolean;\n transferRestrictions?: boolean;\n rofr?: boolean;\n companyAddress?: string;\n incorporatorName?: string;\n incorporatorAddress?: string;\n dryRun?: boolean;\n json?: boolean;\n}\n\ninterface FormActivateOptions {\n evidenceUri?: string;\n evidenceType?: string;\n filingId?: string;\n receiptReference?: string;\n ein?: string;\n dryRun?: boolean;\n json?: boolean;\n}\n\nexport async function formAddFounderCommand(entityId: string, opts: FormAddFounderOptions): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n const resolvedEntityId = await resolveEntityRefForFormCommand(resolver, entityId, opts.dryRun);\n const payload: ApiRecord = {\n name: opts.name,\n email: opts.email,\n role: opts.role,\n ownership_pct: parseFloat(opts.pct),\n };\n if (opts.officerTitle) payload.officer_title = opts.officerTitle.toLowerCase();\n if (opts.incorporator) payload.is_incorporator = true;\n const address = parseCsvAddress(opts.address);\n if (address) payload.address = address;\n\n if (opts.dryRun) {\n printDryRun(\"formation.add_founder\", { entity_id: resolvedEntityId, ...payload });\n return;\n }\n\n const result = await client.addFounder(resolvedEntityId, payload);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Founder added (${result.member_count} total)`);\n const members = (result.members ?? []) as ApiRecord[];\n for (const m of members) {\n const pct = typeof m.ownership_pct === \"number\" ? ` (${m.ownership_pct}%)` : \"\";\n console.log(` - ${m.name} <${m.email ?? \"no email\"}> [${m.role ?? \"member\"}]${pct}`);\n }\n console.log(chalk.yellow(`\\n Next: add more founders or run: corp form finalize @last:entity`));\n } catch (err) {\n printError(`Failed to add founder: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function formFinalizeCommand(entityId: string, opts: FormFinalizeOptions): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n const resolvedEntityId = await resolveEntityRefForFormCommand(resolver, entityId, opts.dryRun);\n const payload: ApiRecord = {};\n if (opts.authorizedShares) {\n const authorizedShares = parseInt(opts.authorizedShares, 10);\n if (!Number.isFinite(authorizedShares)) {\n throw new Error(`Invalid authorized shares: ${opts.authorizedShares}`);\n }\n payload.authorized_shares = authorizedShares;\n }\n if (opts.parValue) payload.par_value = opts.parValue;\n if (opts.boardSize) {\n const boardSize = parseInt(opts.boardSize, 10);\n if (!Number.isFinite(boardSize) || boardSize <= 0) {\n throw new Error(`Invalid board size: ${opts.boardSize}`);\n }\n payload.board_size = boardSize;\n }\n if (opts.principalName) payload.principal_name = opts.principalName;\n if (opts.registeredAgentName) payload.registered_agent_name = opts.registeredAgentName;\n if (opts.registeredAgentAddress) payload.registered_agent_address = opts.registeredAgentAddress;\n if (opts.formationDate) payload.formation_date = opts.formationDate;\n if (opts.fiscalYearEnd) payload.fiscal_year_end = opts.fiscalYearEnd;\n if (opts.sCorp !== undefined) payload.s_corp_election = opts.sCorp;\n if (opts.transferRestrictions !== undefined) payload.transfer_restrictions = opts.transferRestrictions;\n if (opts.rofr !== undefined) payload.right_of_first_refusal = opts.rofr;\n const companyAddress = parseCsvAddress(opts.companyAddress);\n if (companyAddress) payload.company_address = companyAddress;\n if (opts.incorporatorName) payload.incorporator_name = opts.incorporatorName;\n if (opts.incorporatorAddress) payload.incorporator_address = opts.incorporatorAddress;\n\n if (opts.dryRun) {\n printDryRun(\"formation.finalize\", { entity_id: resolvedEntityId, ...payload });\n return;\n }\n\n const result = await client.finalizeFormation(resolvedEntityId, payload);\n await resolver.stabilizeRecord(\"entity\", result);\n resolver.rememberFromRecord(\"entity\", result);\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(`Formation finalized: ${result.entity_id}`);\n printReferenceSummary(\"entity\", result, { showReuseHint: true });\n if (result.legal_entity_id) console.log(` Legal Entity ID: ${result.legal_entity_id}`);\n if (result.instrument_id) console.log(` Instrument ID: ${result.instrument_id}`);\n\n const docIds = (result.document_ids ?? []) as string[];\n if (docIds.length > 0) {\n console.log(` Documents: ${docIds.length} generated`);\n }\n\n const holders = (result.holders ?? []) as ApiRecord[];\n if (holders.length > 0) {\n console.log();\n const table = new Table({\n head: [chalk.dim(\"Holder\"), chalk.dim(\"Shares\"), chalk.dim(\"Ownership %\")],\n });\n for (const h of holders) {\n const pct = typeof h.ownership_pct === \"number\" ? `${h.ownership_pct.toFixed(1)}%` : \"—\";\n table.push([String(h.name ?? \"?\"), String(h.shares ?? 0), pct]);\n }\n console.log(chalk.bold(\" Cap Table:\"));\n console.log(table.toString());\n }\n\n if (result.next_action) {\n console.log(chalk.yellow(`\\n Next: ${result.next_action}`));\n }\n } catch (err) {\n printError(`Failed to finalize formation: ${err}`);\n process.exit(1);\n }\n}\n\nexport async function formActivateCommand(entityId: string, opts: FormActivateOptions): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n\n try {\n const resolvedEntityId = await resolveEntityRefForFormCommand(resolver, entityId, opts.dryRun);\n const payload: ApiRecord = { entity_id: resolvedEntityId };\n if (opts.evidenceUri) payload.evidence_uri = opts.evidenceUri;\n if (opts.evidenceType) payload.evidence_type = opts.evidenceType;\n if (opts.filingId) payload.filing_id = opts.filingId;\n if (opts.receiptReference) payload.receipt_reference = opts.receiptReference;\n if (opts.ein) payload.ein = opts.ein;\n\n if (opts.dryRun) {\n printDryRun(\"formation.activate\", payload);\n return;\n }\n\n const result = await activateFormationEntity(client, resolver, resolvedEntityId, {\n evidenceUri: opts.evidenceUri,\n evidenceType: opts.evidenceType,\n filingId: opts.filingId,\n receiptReference: opts.receiptReference,\n ein: opts.ein,\n });\n const formation = await client.getFormation(resolvedEntityId);\n await resolver.stabilizeRecord(\"entity\", formation as ApiRecord);\n resolver.rememberFromRecord(\"entity\", formation as ApiRecord);\n\n if (opts.json) {\n printJson({\n ...result,\n formation,\n });\n return;\n }\n\n printSuccess(`Formation advanced to ${result.final_status}.`);\n printReferenceSummary(\"entity\", formation as ApiRecord, { showReuseHint: true });\n if (result.steps.length > 0) {\n console.log(\" Steps:\");\n for (const step of result.steps) {\n console.log(` - ${step}`);\n }\n }\n console.log(` Signatures added: ${result.signatures_added}`);\n console.log(` Documents updated: ${result.documents_signed}`);\n printJson(formation);\n } catch (err) {\n printError(`Failed to activate formation: ${err}`);\n process.exit(1);\n }\n}\n","import { requireConfig, maskKey } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson } from \"../output.js\";\nimport chalk from \"chalk\";\nimport Table from \"cli-table3\";\n\nexport async function apiKeysCommand(opts: { json?: boolean }): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n try {\n const keys = await client.listApiKeys();\n if (opts.json) {\n printJson(keys.map((k: any) => ({\n ...k,\n ...(k.key != null ? { key: maskKey(String(k.key)) } : {}),\n ...(k.api_key != null ? { api_key: maskKey(String(k.api_key)) } : {}),\n })));\n return;\n }\n if (keys.length === 0) { console.log(\"No API keys found.\"); return; }\n console.log(`\\n${chalk.bold(\"API Keys\")}`);\n const table = new Table({\n head: [chalk.dim(\"ID\"), chalk.dim(\"Name\"), chalk.dim(\"Key\"), chalk.dim(\"Created\")],\n });\n for (const k of keys) {\n table.push([\n String(k.key_id ?? k.id ?? k.api_key_id ?? \"\").slice(0, 12),\n String(k.name ?? \"\"),\n maskKey(String(k.key ?? k.api_key ?? \"\")),\n String(k.created_at ?? \"\"),\n ]);\n }\n console.log(table.toString());\n } catch (err) { printError(`Failed to fetch API keys: ${err}`); process.exit(1); }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson, printReferenceSummary, printSuccess } from \"../output.js\";\nimport { withSpinner } from \"../spinner.js\";\nimport { ReferenceResolver } from \"../references.js\";\nimport { activateFormationEntity } from \"../formation-automation.js\";\nimport type { ApiRecord } from \"../types.js\";\n\ntype DemoOptions = {\n name: string;\n scenario?: string;\n minimal?: boolean;\n json?: boolean;\n};\n\nfunction scenarioConfig(name: string, scenario: string): ApiRecord {\n switch (scenario) {\n case \"llc\":\n return {\n entity_type: \"llc\",\n legal_name: name,\n jurisdiction: \"US-WY\",\n members: [\n {\n name: \"Alice Chen\",\n email: \"alice@example.com\",\n role: \"member\",\n investor_type: \"natural_person\",\n ownership_pct: 60,\n },\n {\n name: \"Bob Martinez\",\n email: \"bob@example.com\",\n role: \"member\",\n investor_type: \"natural_person\",\n ownership_pct: 40,\n },\n ],\n fiscal_year_end: \"12-31\",\n company_address: {\n street: \"251 Little Falls Dr\",\n city: \"Wilmington\",\n state: \"DE\",\n zip: \"19808\",\n },\n };\n case \"restaurant\":\n return {\n entity_type: \"llc\",\n legal_name: name,\n jurisdiction: \"US-DE\",\n members: [\n {\n name: \"Rosa Alvarez\",\n email: \"rosa@example.com\",\n role: \"manager\",\n investor_type: \"natural_person\",\n ownership_pct: 55,\n },\n {\n name: \"Noah Patel\",\n email: \"noah@example.com\",\n role: \"member\",\n investor_type: \"natural_person\",\n ownership_pct: 45,\n },\n ],\n fiscal_year_end: \"12-31\",\n company_address: {\n street: \"18 Market St\",\n city: \"Wilmington\",\n state: \"DE\",\n zip: \"19801\",\n },\n };\n case \"startup\":\n default:\n return {\n entity_type: \"c_corp\",\n legal_name: name,\n jurisdiction: \"US-DE\",\n authorized_shares: 10_000_000,\n par_value: \"0.0001\",\n transfer_restrictions: true,\n right_of_first_refusal: true,\n members: [\n {\n name: \"Alice Chen\",\n email: \"alice@example.com\",\n role: \"chair\",\n investor_type: \"natural_person\",\n shares_purchased: 6_000_000,\n officer_title: \"ceo\",\n is_incorporator: true,\n },\n {\n name: \"Bob Martinez\",\n email: \"bob@example.com\",\n role: \"director\",\n investor_type: \"natural_person\",\n shares_purchased: 4_000_000,\n officer_title: \"cto\",\n },\n ],\n fiscal_year_end: \"12-31\",\n company_address: {\n street: \"251 Little Falls Dr\",\n city: \"Wilmington\",\n state: \"DE\",\n zip: \"19808\",\n },\n };\n }\n}\n\nfunction meetingTypeForBody(body: ApiRecord): string {\n return String(body.body_type) === \"llc_member_vote\" ? \"member_meeting\" : \"board_meeting\";\n}\n\nexport async function demoCommand(opts: DemoOptions): Promise<void> {\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n const resolver = new ReferenceResolver(client, cfg);\n const scenario = opts.scenario ?? \"startup\";\n\n try {\n if (opts.minimal) {\n const result = await withSpinner(\"Loading\", () => client.seedDemo({\n name: opts.name,\n scenario,\n }));\n if (opts.json) {\n printJson(result);\n return;\n }\n printSuccess(\"Minimal demo seeded.\");\n printJson(result);\n return;\n }\n\n const formationPayload = scenarioConfig(opts.name, scenario);\n const created = await withSpinner(\"Creating demo entity\", () =>\n client.createFormationWithCapTable(formationPayload),\n );\n const entityId = String(created.entity_id ?? created.formation_id ?? \"\");\n if (!entityId) {\n throw new Error(\"demo formation did not return an entity_id\");\n }\n\n await resolver.stabilizeRecord(\"entity\", created as ApiRecord);\n resolver.rememberFromRecord(\"entity\", created as ApiRecord);\n\n const activation = await withSpinner(\"Activating formation\", () =>\n activateFormationEntity(client, resolver, entityId),\n );\n\n const agent = await withSpinner(\"Creating demo agent\", () =>\n client.createAgent({\n name: `${opts.name} Operator`,\n entity_id: entityId,\n system_prompt: `Operate ${opts.name} and keep the workspace data clean.`,\n scopes: [],\n }),\n );\n await resolver.stabilizeRecord(\"agent\", agent);\n resolver.rememberFromRecord(\"agent\", agent);\n\n const bodies = await client.listGovernanceBodies(entityId);\n await resolver.stabilizeRecords(\"body\", bodies as ApiRecord[], entityId);\n\n let meeting: ApiRecord | undefined;\n if (bodies.length > 0) {\n meeting = await client.scheduleMeeting({\n entity_id: entityId,\n body_id: (bodies[0] as ApiRecord).body_id,\n meeting_type: meetingTypeForBody(bodies[0] as ApiRecord),\n title: \"Demo kickoff meeting\",\n agenda_item_titles: [\n \"Approve demo operating budget\",\n \"Review founder vesting and cap table\",\n ],\n });\n await resolver.stabilizeRecord(\"meeting\", meeting, entityId);\n resolver.rememberFromRecord(\"meeting\", meeting, entityId);\n }\n\n const workItem = await client.createWorkItem(entityId, {\n title: \"Review demo workspace\",\n description: \"Check documents, governance, cap table, and treasury setup.\",\n category: \"ops\",\n created_by_actor: {\n actor_type: \"agent\",\n actor_id: String(agent.agent_id),\n },\n });\n await resolver.stabilizeRecord(\"work_item\", workItem, entityId);\n resolver.rememberFromRecord(\"work_item\", workItem, entityId);\n\n const claimedWorkItem = await client.claimWorkItem(entityId, String(workItem.work_item_id), {\n claimed_by_actor: {\n actor_type: \"agent\",\n actor_id: String(agent.agent_id),\n },\n });\n\n const bankAccount = await client.openBankAccount({\n entity_id: entityId,\n bank_name: \"Mercury\",\n });\n await resolver.stabilizeRecord(\"bank_account\", bankAccount, entityId);\n resolver.rememberFromRecord(\"bank_account\", bankAccount, entityId);\n\n const invoice = await client.createInvoice({\n entity_id: entityId,\n customer_name: \"Acme Customer\",\n amount_cents: 250000,\n due_date: \"2026-04-01\",\n description: \"Demo advisory services\",\n });\n await resolver.stabilizeRecord(\"invoice\", invoice, entityId);\n resolver.rememberFromRecord(\"invoice\", invoice, entityId);\n\n const contract = await client.generateContract({\n entity_id: entityId,\n template_type: \"nda\",\n counterparty_name: \"Example Counterparty\",\n effective_date: \"2026-03-12\",\n parameters: {},\n });\n await resolver.stabilizeRecord(\"document\", contract, entityId);\n resolver.rememberFromRecord(\"document\", contract, entityId);\n\n const result: ApiRecord = {\n scenario,\n entity: created,\n activation,\n agent,\n meeting,\n work_item: claimedWorkItem,\n bank_account: bankAccount,\n invoice,\n contract,\n };\n\n if (opts.json) {\n printJson(result);\n return;\n }\n\n printSuccess(`Demo environment created for ${opts.name}.`);\n printReferenceSummary(\"entity\", created as ApiRecord, { showReuseHint: true });\n printReferenceSummary(\"agent\", agent, { showReuseHint: true });\n if (meeting) {\n printReferenceSummary(\"meeting\", meeting, { showReuseHint: true });\n }\n printReferenceSummary(\"work_item\", claimedWorkItem, { showReuseHint: true });\n printReferenceSummary(\"invoice\", invoice, { showReuseHint: true });\n printReferenceSummary(\"bank_account\", bankAccount, { showReuseHint: true });\n printJson(result);\n } catch (err) {\n printError(`Failed to seed demo: ${err}`);\n process.exit(1);\n }\n}\n","import { requireConfig } from \"../config.js\";\nimport { CorpAPIClient } from \"../api-client.js\";\nimport { printError, printJson } from \"../output.js\";\nimport chalk from \"chalk\";\n\ninterface FeedbackOptions {\n category?: string;\n email?: string;\n json?: boolean;\n}\n\nconst MAX_FEEDBACK_LENGTH = 10_000;\n\nexport async function feedbackCommand(message: string, opts: FeedbackOptions): Promise<void> {\n if (!message || message.trim().length === 0) {\n printError(\"Feedback message cannot be empty\");\n process.exit(1);\n }\n if (message.length > MAX_FEEDBACK_LENGTH) {\n printError(`Feedback message must be at most ${MAX_FEEDBACK_LENGTH} characters (got ${message.length})`);\n process.exit(1);\n }\n const cfg = requireConfig(\"api_url\", \"api_key\", \"workspace_id\");\n const client = new CorpAPIClient(cfg.api_url, cfg.api_key, cfg.workspace_id);\n try {\n const result = await client.submitFeedback(message, opts.category, opts.email);\n if (opts.json) {\n printJson(result);\n return;\n }\n console.log(`\\n${chalk.green(\"✓\")} Feedback submitted (${chalk.dim(result.feedback_id)})`);\n } catch (err: any) {\n const detail = String(err);\n if (detail.includes(\"404\")) {\n printError(\n `Failed to submit feedback: ${detail}\\n` +\n \" This server does not expose /v1/feedback. Local api-rs dev servers currently do not support feedback submission.\",\n );\n } else {\n printError(`Failed to submit feedback: ${detail}`);\n }\n process.exit(1);\n }\n}\n","import { readFileSync, writeFileSync, existsSync } from \"node:fs\";\nimport { resolve } from \"node:path\";\nimport { randomBytes } from \"node:crypto\";\nimport type { ChildProcess } from \"node:child_process\";\n\ninterface ServeOptions {\n port: string;\n dataDir: string;\n}\n\nconst ENV_TEMPLATE = `# Corporation API server configuration\n# Generated by: corp serve\n\n# Required — secret for signing JWTs\nJWT_SECRET={{JWT_SECRET}}\n\n# Required — Fernet key for encrypting secrets at rest (base64url, 32 bytes)\nSECRETS_MASTER_KEY={{SECRETS_MASTER_KEY}}\n\n# Required — bearer token for internal worker-to-server auth\nINTERNAL_WORKER_TOKEN={{INTERNAL_WORKER_TOKEN}}\n\n# Server port (default: 8000)\n# PORT=8000\n\n# Data directory for git repos (default: ./data/repos)\n# DATA_DIR=./data/repos\n\n# Redis URL for agent job queue (optional)\n# REDIS_URL=redis://localhost:6379/0\n\n# LLM proxy upstream (default: https://openrouter.ai/api/v1)\n# LLM_UPSTREAM_URL=https://openrouter.ai/api/v1\n\n# PEM-encoded Ed25519 key for signing git commits (optional)\n# COMMIT_SIGNING_KEY=\n\n# Max agent queue depth (default: 1000)\n# MAX_QUEUE_DEPTH=1000\n`;\n\nfunction generateFernetKey(): string {\n // Fernet key = url-safe base64 of 32 random bytes\n return randomBytes(32).toString(\"base64url\") + \"=\";\n}\n\nfunction generateSecret(length = 32): string {\n return randomBytes(length).toString(\"hex\");\n}\n\nfunction loadEnvFile(path: string): void {\n if (!existsSync(path)) return;\n\n const content = readFileSync(path, \"utf-8\");\n for (const line of content.split(\"\\n\")) {\n const trimmed = line.trim();\n if (!trimmed || trimmed.startsWith(\"#\")) continue;\n\n const eqIdx = trimmed.indexOf(\"=\");\n if (eqIdx === -1) continue;\n\n const key = trimmed.slice(0, eqIdx).trim();\n const value = trimmed.slice(eqIdx + 1).trim().replace(/^[\"']|[\"']$/g, \"\");\n\n // Don't override vars already set in the environment\n if (!process.env[key]) {\n process.env[key] = value;\n }\n }\n}\n\nfunction ensureEnvFile(envPath: string): void {\n if (existsSync(envPath)) return;\n\n console.log(\"No .env file found. Generating one with dev defaults...\\n\");\n\n const content = ENV_TEMPLATE\n .replace(\"{{JWT_SECRET}}\", generateSecret())\n .replace(\"{{SECRETS_MASTER_KEY}}\", generateFernetKey())\n .replace(\"{{INTERNAL_WORKER_TOKEN}}\", generateSecret());\n\n writeFileSync(envPath, content, \"utf-8\");\n console.log(` Created ${envPath}\\n`);\n}\n\nexport async function serveCommand(opts: ServeOptions): Promise<void> {\n let server: { getBinaryPath: () => string | null; isAvailable: () => boolean; startServer: (options: Record<string, unknown>) => ChildProcess };\n try {\n server = await import(\"@thecorporation/server\");\n } catch {\n console.error(\n \"Error: @thecorporation/server is not installed.\\n\\n\" +\n \"Install it with:\\n\" +\n \" npm install @thecorporation/server\\n\\n\" +\n \"Or run the Rust binary directly:\\n\" +\n \" cd services/api-rs && cargo run\"\n );\n process.exit(1);\n }\n\n if (!server.isAvailable()) {\n console.error(\n \"Error: No server binary available for this platform.\\n\\n\" +\n \"Pre-built binaries are available for:\\n\" +\n \" - linux-x64, linux-arm64\\n\" +\n \" - darwin-x64, darwin-arm64\\n\" +\n \" - win32-x64\\n\\n\" +\n \"You can build from source:\\n\" +\n \" cd services/api-rs && cargo build --release\"\n );\n process.exit(1);\n }\n\n const port = parseInt(opts.port, 10);\n if (isNaN(port) || port > 65535) {\n console.error(`Error: Invalid port \"${opts.port}\"`);\n process.exit(1);\n }\n\n // Load .env file, generating one if it doesn't exist\n const envPath = resolve(process.cwd(), \".env\");\n ensureEnvFile(envPath);\n loadEnvFile(envPath);\n\n const localUrl = `http://localhost:${port}`;\n console.log(`Starting server on port ${port}...`);\n console.log(`Data directory: ${opts.dataDir}`);\n console.log(`CLI API URL remains unchanged.`);\n console.log(` Use CORP_API_URL=${localUrl} for commands against this local server.\\n`);\n\n const child = server.startServer({\n port,\n dataDir: opts.dataDir,\n });\n\n const shutdown = () => {\n console.log(\"\\nShutting down server...\");\n child.kill(\"SIGTERM\");\n };\n\n process.on(\"SIGINT\", shutdown);\n process.on(\"SIGTERM\", shutdown);\n\n child.on(\"exit\", (code) => {\n process.exit(code ?? 0);\n });\n}\n","import { Command, Option } from \"commander\";\nimport { createRequire } from \"node:module\";\nimport { inheritOption } from \"./command-options.js\";\n\nconst require = createRequire(import.meta.url);\nconst pkg = require(\"../package.json\");\nconst TAX_DOCUMENT_TYPE_CHOICES = [\n \"1120\",\n \"1120s\",\n \"1065\",\n \"franchise_tax\",\n \"annual_report\",\n \"83b\",\n \"form_1120\",\n \"form_1120s\",\n \"form_1065\",\n \"1099_nec\",\n \"form_1099_nec\",\n \"k1\",\n \"form_k1\",\n \"941\",\n \"form_941\",\n \"w2\",\n \"form_w2\",\n] as const;\nconst FINALIZE_ITEM_STATUS_CHOICES = [\n \"discussed\",\n \"voted\",\n \"tabled\",\n \"withdrawn\",\n] as const;\n\nconst program = new Command();\nprogram\n .name(\"corp\")\n .description(\"corp — Corporate governance from the terminal\")\n .version(pkg.version);\n\n// --- setup ---\nprogram\n .command(\"setup\")\n .description(\"Interactive setup wizard\")\n .action(async () => {\n const { setupCommand } = await import(\"./commands/setup.js\");\n await setupCommand();\n });\n\n// --- status ---\nprogram\n .command(\"status\")\n .description(\"Workspace summary\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { statusCommand } = await import(\"./commands/status.js\");\n await statusCommand(opts);\n });\n\nprogram\n .command(\"context\")\n .alias(\"whoami\")\n .description(\"Show the active workspace, user, and entity context\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { contextCommand } = await import(\"./commands/context.js\");\n await contextCommand(opts);\n });\n\nprogram\n .command(\"schema\")\n .description(\"Dump the CLI command catalog as JSON\")\n .option(\"--compact\", \"Emit compact JSON\")\n .action(async (opts) => {\n const { schemaCommand } = await import(\"./commands/schema.js\");\n schemaCommand(program, opts);\n });\n\n// --- config ---\nconst configCmd = program.command(\"config\").description(\"Manage configuration\");\nconfigCmd\n .command(\"set <key> <value>\")\n .description(\"Set a config value (dot-path)\")\n .option(\"--force\", \"Allow updating a security-sensitive config key\")\n .action(async (key: string, value: string, opts: { force?: boolean }) => {\n const { configSetCommand } = await import(\"./commands/config.js\");\n await configSetCommand(key, value, opts);\n });\nconfigCmd\n .command(\"get <key>\")\n .description(\"Get a config value (dot-path)\")\n .action(async (key: string) => {\n const { configGetCommand } = await import(\"./commands/config.js\");\n configGetCommand(key);\n });\nconfigCmd\n .command(\"list\")\n .description(\"List all config (API keys masked)\")\n .action(async () => {\n const { configListCommand } = await import(\"./commands/config.js\");\n configListCommand();\n });\n\nprogram\n .command(\"resolve <kind> <ref>\")\n .description(\"Resolve a human-friendly reference to a canonical ID\")\n .option(\"--entity-id <ref>\", \"Entity reference for entity-scoped resources\")\n .option(\"--body-id <ref>\", \"Governance body reference for body-scoped resources\")\n .option(\"--meeting-id <ref>\", \"Meeting reference for meeting-scoped resources\")\n .action(async (kind: string, ref: string, opts) => {\n const { resolveCommand } = await import(\"./commands/resolve.js\");\n await resolveCommand(kind, ref, opts);\n });\n\nprogram\n .command(\"find <kind> <query>\")\n .description(\"List matching references for a resource kind\")\n .option(\"--entity-id <ref>\", \"Entity reference for entity-scoped resources\")\n .option(\"--body-id <ref>\", \"Governance body reference for body-scoped resources\")\n .option(\"--meeting-id <ref>\", \"Meeting reference for meeting-scoped resources\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (kind: string, query: string, opts) => {\n const { findCommand } = await import(\"./commands/find.js\");\n await findCommand(kind, query, opts);\n });\n\n// --- obligations ---\nprogram\n .command(\"obligations\")\n .description(\"List obligations with urgency tiers\")\n .option(\"--tier <tier>\", \"Filter by urgency tier\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { obligationsCommand } = await import(\"./commands/obligations.js\");\n await obligationsCommand(opts);\n });\n\n// --- digest ---\nprogram\n .command(\"digest\")\n .description(\"View or trigger daily digests\")\n .option(\"--trigger\", \"Trigger digest now\")\n .option(\"--key <key>\", \"Get specific digest by key\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { digestCommand } = await import(\"./commands/digest.js\");\n await digestCommand(opts);\n });\n\n// --- link ---\nprogram\n .command(\"link\")\n .description(\"Link workspace to an external provider\")\n .requiredOption(\"--external-id <id>\", \"External ID to link\")\n .requiredOption(\"--provider <provider>\", \"Provider name (e.g. stripe, github)\")\n .action(async (opts) => {\n const { linkCommand } = await import(\"./commands/link.js\");\n await linkCommand(opts);\n });\n\n// --- claim ---\nprogram\n .command(\"claim <code>\")\n .description(\"Redeem a claim code to join a workspace\")\n .action(async (code: string) => {\n const { claimCommand } = await import(\"./commands/claim.js\");\n await claimCommand(code);\n });\n\n// --- chat ---\nprogram\n .command(\"chat\")\n .description(\"Interactive LLM chat session\")\n .action(async () => {\n const { chatCommand } = await import(\"./chat.js\");\n await chatCommand();\n });\n\n// --- entities ---\nconst entitiesCmd = program\n .command(\"entities\")\n .description(\"List entities, show detail, convert, or dissolve\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { entitiesCommand } = await import(\"./commands/entities.js\");\n await entitiesCommand(opts);\n });\nentitiesCmd\n .command(\"show <entity-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Show entity detail\")\n .action(async (entityId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { entitiesShowCommand } = await import(\"./commands/entities.js\");\n await entitiesShowCommand(entityId, {\n ...opts,\n json: inheritOption(opts.json, parent.json),\n });\n });\nentitiesCmd\n .command(\"convert <entity-ref>\")\n .requiredOption(\"--to <type>\", \"Target entity type (llc, c_corp)\")\n .option(\"--jurisdiction <jurisdiction>\", \"New jurisdiction\")\n .description(\"Convert entity to a different type\")\n .action(async (entityId: string, opts) => {\n const { entitiesConvertCommand } = await import(\"./commands/entities.js\");\n await entitiesConvertCommand(entityId, opts);\n });\nentitiesCmd\n .command(\"dissolve <entity-ref>\")\n .requiredOption(\"--reason <reason>\", \"Dissolution reason\")\n .option(\"--effective-date <date>\", \"Effective date (ISO 8601)\")\n .description(\"Dissolve an entity\")\n .action(async (entityId: string, opts) => {\n const { entitiesDissolveCommand } = await import(\"./commands/entities.js\");\n await entitiesDissolveCommand(entityId, opts);\n });\n\n// --- contacts ---\nconst contactsCmd = program\n .command(\"contacts\")\n .description(\"Contact management\")\n .option(\"--entity-id <ref>\", \"Entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { contactsListCommand } = await import(\"./commands/contacts.js\");\n await contactsListCommand(opts);\n });\ncontactsCmd\n .command(\"show <contact-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Show contact detail/profile\")\n .action(async (contactId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { contactsShowCommand } = await import(\"./commands/contacts.js\");\n await contactsShowCommand(contactId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncontactsCmd\n .command(\"add\")\n .requiredOption(\"--name <name>\", \"Contact name\")\n .requiredOption(\"--email <email>\", \"Contact email\")\n .option(\"--type <type>\", \"Contact type (individual, organization)\", \"individual\")\n .option(\"--category <category>\", \"Category (employee, contractor, board_member, investor, law_firm, valuation_firm, accounting_firm, officer, founder, member, other)\")\n .option(\"--cap-table-access <level>\", \"Cap table access (none, summary, detailed)\")\n .option(\"--address <address>\", \"Mailing address\")\n .option(\"--mailing-address <address>\", \"Alias for --address\")\n .option(\"--phone <phone>\", \"Phone number\")\n .option(\"--notes <notes>\", \"Notes\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Add a new contact\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { contactsAddCommand } = await import(\"./commands/contacts.js\");\n await contactsAddCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncontactsCmd\n .command(\"edit <contact-ref>\")\n .option(\"--name <name>\", \"Contact name\")\n .option(\"--email <email>\", \"Contact email\")\n .option(\"--category <category>\", \"Contact category\")\n .option(\"--cap-table-access <level>\", \"Cap table access (none, summary, detailed)\")\n .option(\"--address <address>\", \"Mailing address\")\n .option(\"--mailing-address <address>\", \"Alias for --address\")\n .option(\"--phone <phone>\", \"Phone number\")\n .option(\"--notes <notes>\", \"Notes\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Edit an existing contact\")\n .action(async (contactId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { contactsEditCommand } = await import(\"./commands/contacts.js\");\n await contactsEditCommand(contactId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- cap-table ---\nconst capTableCmd = program\n .command(\"cap-table\")\n .description(\"Cap table, equity grants, SAFEs, transfers, and valuations\")\n .option(\"--entity-id <ref>\", \"Entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { capTableCommand } = await import(\"./commands/cap-table.js\");\n await capTableCommand(opts);\n });\ncapTableCmd.command(\"safes\").description(\"SAFE notes\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { safesCommand } = await import(\"./commands/cap-table.js\");\n await safesCommand(parent);\n});\ncapTableCmd.command(\"transfers\").description(\"Share transfers\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { transfersCommand } = await import(\"./commands/cap-table.js\");\n await transfersCommand(parent);\n});\ncapTableCmd.command(\"instruments\").description(\"Cap table instruments\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { instrumentsCommand } = await import(\"./commands/cap-table.js\");\n await instrumentsCommand(parent);\n});\ncapTableCmd.command(\"share-classes\").description(\"Share classes\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { shareClassesCommand } = await import(\"./commands/cap-table.js\");\n await shareClassesCommand(parent);\n});\ncapTableCmd.command(\"rounds\").description(\"Staged equity rounds\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { roundsCommand } = await import(\"./commands/cap-table.js\");\n await roundsCommand(parent);\n});\ncapTableCmd.command(\"valuations\").description(\"Valuations history\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { valuationsCommand } = await import(\"./commands/cap-table.js\");\n await valuationsCommand(parent);\n});\ncapTableCmd.command(\"409a\").description(\"Current 409A valuation\").action(async (_opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { fourOhNineACommand } = await import(\"./commands/cap-table.js\");\n await fourOhNineACommand(parent);\n});\ncapTableCmd\n .command(\"create-instrument\")\n .requiredOption(\"--kind <kind>\", \"Instrument kind (common_equity, preferred_equity, membership_unit, option_grant, safe)\")\n .requiredOption(\"--symbol <symbol>\", \"Instrument symbol\")\n .option(\"--issuer-legal-entity-id <ref>\", \"Issuer legal entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--authorized-units <n>\", \"Authorized units\", parseInt)\n .option(\"--issue-price-cents <n>\", \"Issue price in cents\", parseInt)\n .option(\"--terms-json <json>\", \"JSON object of instrument terms\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the instrument\")\n .description(\"Create a cap table instrument\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { createInstrumentCommand } = await import(\"./commands/cap-table.js\");\n await createInstrumentCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"issue-equity\")\n .requiredOption(\"--grant-type <type>\", \"Grant type (common, preferred, membership_unit, stock_option, iso, nso, rsa)\")\n .requiredOption(\"--shares <n>\", \"Number of shares\", parseInt)\n .requiredOption(\"--recipient <name>\", \"Recipient name\")\n .option(\"--email <email>\", \"Recipient email (auto-creates contact if needed)\")\n .option(\"--instrument-id <ref>\", \"Instrument reference (ID, short ID, symbol, or @last)\")\n .option(\"--meeting-id <ref>\", \"Board meeting reference required when a board approval already exists or is being recorded\")\n .option(\"--resolution-id <ref>\", \"Board resolution reference required when issuing under a board-governed entity\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the round\")\n .description(\"Issue an equity grant (creates a round, adds security, and issues it)\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { issueEquityCommand } = await import(\"./commands/cap-table.js\");\n await issueEquityCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"issue-safe\")\n .requiredOption(\"--investor <name>\", \"Investor name\")\n .requiredOption(\"--amount <n>\", \"Principal amount in cents\", parseInt)\n .option(\"--safe-type <type>\", \"SAFE type\", \"post_money\")\n .requiredOption(\"--valuation-cap <n>\", \"Valuation cap in cents\", parseInt)\n .option(\"--meeting-id <ref>\", \"Board meeting reference required when issuing under a board-governed entity\")\n .option(\"--resolution-id <ref>\", \"Board resolution reference required when issuing under a board-governed entity\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the round\")\n .description(\"Issue a SAFE note\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { issueSafeCommand } = await import(\"./commands/cap-table.js\");\n await issueSafeCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"transfer\")\n .requiredOption(\"--from <ref>\", \"Source contact reference (from_contact_id)\")\n .requiredOption(\"--to <ref>\", \"Destination contact reference (to_contact_id)\")\n .requiredOption(\"--shares <n>\", \"Number of shares to transfer\", parseInt)\n .requiredOption(\"--share-class-id <ref>\", \"Share class reference\")\n .requiredOption(\"--governing-doc-type <type>\", \"Governing doc type (bylaws, operating_agreement, shareholder_agreement, other)\")\n .requiredOption(\"--transferee-rights <rights>\", \"Transferee rights (full_member, economic_only, limited)\")\n .option(\"--prepare-intent-id <id>\", \"Prepare intent ID (auto-created if omitted)\")\n .option(\"--type <type>\", \"Transfer type (gift, trust_transfer, secondary_sale, estate, other)\", \"secondary_sale\")\n .option(\"--price-per-share-cents <n>\", \"Price per share in cents\", parseInt)\n .option(\"--relationship <rel>\", \"Relationship to holder\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the workflow\")\n .description(\"Create a share transfer workflow\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { transferSharesCommand } = await import(\"./commands/cap-table.js\");\n await transferSharesCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"distribute\")\n .requiredOption(\"--amount <n>\", \"Total distribution amount in cents\", parseInt)\n .option(\"--type <type>\", \"Distribution type (dividend, return, liquidation)\", \"dividend\")\n .requiredOption(\"--description <desc>\", \"Distribution description\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without calculating the distribution\")\n .description(\"Calculate a distribution\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { distributeCommand } = await import(\"./commands/cap-table.js\");\n await distributeCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\ncapTableCmd\n .command(\"start-round\")\n .requiredOption(\"--name <name>\", \"Round name\")\n .requiredOption(\"--issuer-legal-entity-id <ref>\", \"Issuer legal entity reference\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the round\")\n .description(\"Start a staged equity round\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { startRoundCommand } = await import(\"./commands/cap-table.js\");\n await startRoundCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"add-security\")\n .requiredOption(\"--round-id <ref>\", \"Round reference\")\n .requiredOption(\"--instrument-id <ref>\", \"Instrument reference\")\n .requiredOption(\"--quantity <n>\", \"Number of shares/units\", parseInt)\n .requiredOption(\"--recipient-name <name>\", \"Recipient display name\")\n .option(\"--holder-id <ref>\", \"Existing holder reference\")\n .option(\"--email <email>\", \"Recipient email (to find or create holder)\")\n .option(\"--principal-cents <n>\", \"Principal amount in cents\", parseInt)\n .option(\"--grant-type <type>\", \"Grant type\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without adding the security\")\n .description(\"Add a security to a staged equity round\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { addSecurityCommand } = await import(\"./commands/cap-table.js\");\n await addSecurityCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"issue-round\")\n .option(\"--meeting-id <ref>\", \"Board meeting reference required when issuing under a board-governed entity\")\n .option(\"--resolution-id <ref>\", \"Board resolution reference required when issuing under a board-governed entity\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without issuing the round\")\n .requiredOption(\"--round-id <ref>\", \"Round reference\")\n .description(\"Issue all securities and close a staged round\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { issueRoundCommand } = await import(\"./commands/cap-table.js\");\n await issueRoundCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"create-valuation\")\n .requiredOption(\"--type <type>\", \"Valuation type (four_oh_nine_a, fair_market_value, etc.)\")\n .requiredOption(\"--date <date>\", \"Effective date (ISO 8601)\")\n .requiredOption(\"--methodology <method>\", \"Methodology (income, market, asset, backsolve, hybrid)\")\n .option(\"--fmv <cents>\", \"FMV per share in cents\", parseInt)\n .option(\"--enterprise-value <cents>\", \"Enterprise value in cents\", parseInt)\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the valuation\")\n .description(\"Create a valuation\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { createValuationCommand } = await import(\"./commands/cap-table.js\");\n await createValuationCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"submit-valuation <valuation-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without submitting the valuation\")\n .description(\"Submit a valuation for board approval\")\n .action(async (valuationId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { submitValuationCommand } = await import(\"./commands/cap-table.js\");\n await submitValuationCommand({\n ...opts,\n valuationId,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ncapTableCmd\n .command(\"approve-valuation <valuation-ref>\")\n .option(\"--resolution-id <ref>\", \"Resolution reference from the board vote\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without approving the valuation\")\n .description(\"Approve a valuation\")\n .action(async (valuationId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { approveValuationCommand } = await import(\"./commands/cap-table.js\");\n await approveValuationCommand({\n ...opts,\n valuationId,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- finance ---\nconst financeCmd = program\n .command(\"finance\")\n .description(\"Invoicing, payroll, payments, banking\")\n .option(\"--entity-id <ref>\", \"Entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { financeSummaryCommand } = await import(\"./commands/finance.js\");\n await financeSummaryCommand(opts);\n });\nfinanceCmd\n .command(\"invoices\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List invoices\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeInvoicesCommand } = await import(\"./commands/finance.js\");\n await financeInvoicesCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"invoice\")\n .requiredOption(\"--customer <name>\", \"Customer name\")\n .requiredOption(\"--amount <n>\", \"Amount in cents\", parseInt)\n .requiredOption(\"--due-date <date>\", \"Due date (ISO 8601)\")\n .option(\"--description <desc>\", \"Description\", \"Services rendered\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Create an invoice\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeInvoiceCommand } = await import(\"./commands/finance.js\");\n await financeInvoiceCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"payroll-runs\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List payroll runs\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financePayrollRunsCommand } = await import(\"./commands/finance.js\");\n await financePayrollRunsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"payroll\")\n .requiredOption(\"--period-start <date>\", \"Pay period start\")\n .requiredOption(\"--period-end <date>\", \"Pay period end\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Run payroll\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financePayrollCommand } = await import(\"./commands/finance.js\");\n await financePayrollCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"payments\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List payments\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financePaymentsCommand } = await import(\"./commands/finance.js\");\n await financePaymentsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"pay\")\n .requiredOption(\"--amount <n>\", \"Amount in cents\", parseInt)\n .requiredOption(\"--recipient <name>\", \"Recipient name\")\n .option(\"--method <method>\", \"Payment method\", \"ach\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Submit a payment\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financePayCommand } = await import(\"./commands/finance.js\");\n await financePayCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"bank-accounts\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List bank accounts\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeBankAccountsCommand } = await import(\"./commands/finance.js\");\n await financeBankAccountsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"open-account\")\n .option(\"--institution <name>\", \"Banking institution\", \"Mercury\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Open a business bank account\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeOpenAccountCommand } = await import(\"./commands/finance.js\");\n await financeOpenAccountCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"classifications\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List contractor classifications\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeClassificationsCommand } = await import(\"./commands/finance.js\");\n await financeClassificationsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"classify-contractor\")\n .requiredOption(\"--name <name>\", \"Contractor name\")\n .requiredOption(\"--state <code>\", \"US state code\")\n .requiredOption(\"--hours <n>\", \"Hours per week\", parseInt)\n .option(\"--exclusive\", \"Exclusive client\", false)\n .requiredOption(\"--duration <n>\", \"Duration in months\", parseInt)\n .option(\"--provides-tools\", \"Company provides tools\", false)\n .option(\"--json\", \"Output as JSON\")\n .description(\"Analyze contractor classification risk\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeClassifyContractorCommand } = await import(\"./commands/finance.js\");\n await financeClassifyContractorCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"reconciliations\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List reconciliations\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeReconciliationsCommand } = await import(\"./commands/finance.js\");\n await financeReconciliationsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"reconcile\")\n .requiredOption(\"--start-date <date>\", \"Period start\")\n .requiredOption(\"--end-date <date>\", \"Period end\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Reconcile ledger\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeReconcileCommand } = await import(\"./commands/finance.js\");\n await financeReconcileCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nfinanceCmd\n .command(\"distributions\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List distributions\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { financeDistributionsCommand } = await import(\"./commands/finance.js\");\n await financeDistributionsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- governance ---\nconst governanceCmd = program\n .command(\"governance\")\n .description(\"Governance bodies, seats, meetings, resolutions\")\n .option(\"--entity-id <ref>\", \"Entity reference (overrides active entity)\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { governanceListCommand } = await import(\"./commands/governance.js\");\n await governanceListCommand(opts);\n });\ngovernanceCmd\n .command(\"create-body\")\n .requiredOption(\"--name <name>\", \"Body name (e.g. 'Board of Directors')\")\n .requiredOption(\"--body-type <type>\", \"Body type (board_of_directors, llc_member_vote)\")\n .option(\"--quorum <rule>\", \"Quorum rule (majority, supermajority, unanimous)\", \"majority\")\n .option(\"--voting <method>\", \"Voting method (per_capita, per_unit)\", \"per_capita\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the governance body\")\n .description(\"Create a governance body\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceCreateBodyCommand } = await import(\"./commands/governance.js\");\n await governanceCreateBodyCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"add-seat <body-ref>\")\n .requiredOption(\"--holder <contact-ref>\", \"Contact reference for the seat holder\")\n .option(\"--role <role>\", \"Seat role (chair, member, officer, observer)\", \"member\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without adding the seat\")\n .description(\"Add a seat to a governance body\")\n .action(async (bodyId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceAddSeatCommand } = await import(\"./commands/governance.js\");\n await governanceAddSeatCommand(bodyId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"seats <body-ref>\")\n .description(\"Seats for a governance body\")\n .action(async (bodyId: string, _opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceSeatsCommand } = await import(\"./commands/governance.js\");\n await governanceSeatsCommand(bodyId, parent);\n });\ngovernanceCmd\n .command(\"meetings <body-ref>\")\n .description(\"Meetings for a governance body\")\n .action(async (bodyId: string, _opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceMeetingsCommand } = await import(\"./commands/governance.js\");\n await governanceMeetingsCommand(bodyId, parent);\n });\ngovernanceCmd\n .command(\"resolutions <meeting-ref>\")\n .description(\"Resolutions for a meeting\")\n .action(async (meetingId: string, _opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceResolutionsCommand } = await import(\"./commands/governance.js\");\n await governanceResolutionsCommand(meetingId, parent);\n });\ngovernanceCmd\n .command(\"convene\")\n .requiredOption(\"--body <ref>\", \"Governance body reference\")\n .requiredOption(\"--type <type>\", \"Meeting type (board_meeting, shareholder_meeting, member_meeting, written_consent)\")\n .requiredOption(\"--title <title>\", \"Meeting title\")\n .option(\"--date <date>\", \"Meeting date (ISO 8601)\")\n .option(\"--agenda <item>\", \"Agenda item (repeatable)\", (v: string, a: string[]) => [...a, v], [] as string[])\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without scheduling the meeting\")\n .description(\"Convene a governance meeting\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceConveneCommand } = await import(\"./commands/governance.js\");\n await governanceConveneCommand({\n ...opts,\n meetingType: opts.type,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"open <meeting-ref>\")\n .requiredOption(\"--present-seat <ref>\", \"Seat reference present at the meeting (repeatable)\", (v: string, a?: string[]) => [...(a ?? []), v])\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without opening the meeting\")\n .description(\"Open a scheduled meeting for voting\")\n .action(async (meetingId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceOpenMeetingCommand } = await import(\"./commands/governance.js\");\n await governanceOpenMeetingCommand(meetingId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"vote <meeting-ref> <item-ref>\")\n .requiredOption(\"--voter <ref>\", \"Voter contact reference\")\n .addOption(new Option(\"--vote <value>\", \"Vote (for, against, abstain, recusal)\").choices([\"for\", \"against\", \"abstain\", \"recusal\"]).makeOptionMandatory())\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without casting the vote\")\n .description(\"Cast a vote on an agenda item\")\n .action(async (meetingId: string, itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { governanceVoteCommand } = await import(\"./commands/governance.js\");\n await governanceVoteCommand(meetingId, itemId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"notice <meeting-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without sending notices\")\n .description(\"Send meeting notice\")\n .action(async (meetingId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { sendNoticeCommand } = await import(\"./commands/governance.js\");\n await sendNoticeCommand(meetingId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"adjourn <meeting-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without adjourning the meeting\")\n .description(\"Adjourn a meeting\")\n .action(async (meetingId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { adjournMeetingCommand } = await import(\"./commands/governance.js\");\n await adjournMeetingCommand(meetingId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"reopen <meeting-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without re-opening the meeting\")\n .description(\"Re-open an adjourned meeting\")\n .action(async (meetingId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { reopenMeetingCommand } = await import(\"./commands/governance.js\");\n await reopenMeetingCommand(meetingId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"cancel <meeting-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without cancelling the meeting\")\n .description(\"Cancel a meeting\")\n .action(async (meetingId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { cancelMeetingCommand } = await import(\"./commands/governance.js\");\n await cancelMeetingCommand(meetingId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"agenda-items <meeting-ref>\")\n .description(\"List agenda items for a meeting\")\n .action(async (meetingId: string, _opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { listAgendaItemsCommand } = await import(\"./commands/governance.js\");\n await listAgendaItemsCommand(meetingId, { entityId: parent.entityId, json: parent.json });\n });\ngovernanceCmd\n .command(\"finalize-item <meeting-ref> <item-ref>\")\n .addOption(\n new Option(\n \"--status <status>\",\n `Status (${FINALIZE_ITEM_STATUS_CHOICES.join(\", \")})`,\n )\n .choices([...FINALIZE_ITEM_STATUS_CHOICES])\n .makeOptionMandatory(),\n )\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without finalizing the item\")\n .description(\"Finalize an agenda item\")\n .action(async (meetingId: string, itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { finalizeAgendaItemCommand } = await import(\"./commands/governance.js\");\n await finalizeAgendaItemCommand(meetingId, itemId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"resolve <meeting-ref> <item-ref>\")\n .requiredOption(\"--text <resolution_text>\", \"Resolution text\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without computing the resolution\")\n .description(\"Compute a resolution for an agenda item\")\n .action(async (meetingId: string, itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { computeResolutionCommand } = await import(\"./commands/governance.js\");\n await computeResolutionCommand(meetingId, itemId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ngovernanceCmd\n .command(\"written-consent\")\n .requiredOption(\"--body <ref>\", \"Governance body reference\")\n .requiredOption(\"--title <title>\", \"Title\")\n .requiredOption(\"--description <desc>\", \"Description\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the written consent\")\n .description(\"Create a written consent action\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { writtenConsentCommand } = await import(\"./commands/governance.js\");\n await writtenConsentCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- documents ---\nconst documentsCmd = program\n .command(\"documents\")\n .description(\"Documents and signing\")\n .option(\"--entity-id <ref>\", \"Entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { documentsListCommand } = await import(\"./commands/documents.js\");\n await documentsListCommand(opts);\n });\ndocumentsCmd\n .command(\"signing-link <doc-ref>\")\n .option(\"--entity-id <ref>\", \"Entity reference (overrides active entity and parent command)\")\n .description(\"Get a signing link for a document\")\n .action(async (docId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { documentsSigningLinkCommand } = await import(\"./commands/documents.js\");\n await documentsSigningLinkCommand(docId, { entityId: opts.entityId ?? parent.entityId });\n });\ndocumentsCmd\n .command(\"sign <doc-ref>\")\n .option(\"--entity-id <ref>\", \"Entity reference (overrides active entity and parent command)\")\n .option(\"--signer-name <name>\", \"Manual signer name\")\n .option(\"--signer-role <role>\", \"Manual signer role\")\n .option(\"--signer-email <email>\", \"Manual signer email\")\n .option(\"--signature-text <text>\", \"Manual signature text (defaults to signer name)\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Sign a formation document, or auto-sign all missing required signatures\")\n .action(async (docId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { documentsSignCommand } = await import(\"./commands/documents.js\");\n await documentsSignCommand(docId, {\n ...opts,\n entityId: opts.entityId ?? parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ndocumentsCmd\n .command(\"sign-all\")\n .option(\"--entity-id <ref>\", \"Entity reference (overrides active entity and parent command)\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Auto-sign all outstanding formation documents for an entity\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { documentsSignAllCommand } = await import(\"./commands/documents.js\");\n await documentsSignAllCommand({\n ...opts,\n entityId: opts.entityId ?? parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ndocumentsCmd\n .command(\"generate\")\n .requiredOption(\"--template <type>\", \"Template type (consulting_agreement, employment_offer, contractor_agreement, nda, custom)\")\n .requiredOption(\"--counterparty <name>\", \"Counterparty name\")\n .option(\"--effective-date <date>\", \"Effective date (ISO 8601, defaults to today)\")\n .option(\"--base-salary <amount>\", \"Employment offer base salary (for employment_offer)\")\n .option(\"--param <key=value>\", \"Additional template parameter (repeatable)\", (value: string, values: string[]) => [...values, value], [] as string[])\n .option(\"--json\", \"Output as JSON\")\n .description(\"Generate a contract from a template\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { documentsGenerateCommand } = await import(\"./commands/documents.js\");\n await documentsGenerateCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ndocumentsCmd\n .command(\"preview-pdf\")\n .option(\"--definition-id <id>\", \"AST document definition ID (e.g. 'bylaws')\")\n .option(\"--document-id <id>\", \"Deprecated alias for --definition-id\")\n .description(\"Validate and print the authenticated PDF preview URL for a governance document\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { documentsPreviewPdfCommand } = await import(\"./commands/documents.js\");\n await documentsPreviewPdfCommand({\n ...opts,\n documentId: opts.definitionId ?? opts.documentId,\n entityId: parent.entityId,\n });\n });\n\n// --- tax ---\nconst taxCmd = program\n .command(\"tax\")\n .description(\"Tax filings and deadline tracking\")\n .option(\"--entity-id <ref>\", \"Entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--json\", \"Output as JSON\");\ntaxCmd\n .command(\"filings\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List tax filings\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { taxFilingsCommand } = await import(\"./commands/tax.js\");\n await taxFilingsCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ntaxCmd\n .command(\"file\")\n .addOption(new Option(\"--type <type>\", `Document type (${TAX_DOCUMENT_TYPE_CHOICES.join(\", \")})`).choices([...TAX_DOCUMENT_TYPE_CHOICES]).makeOptionMandatory())\n .requiredOption(\"--year <year>\", \"Tax year\", parseInt)\n .option(\"--json\", \"Output as JSON\")\n .description(\"File a tax document\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { taxFileCommand } = await import(\"./commands/tax.js\");\n await taxFileCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ntaxCmd\n .command(\"deadlines\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"List tracked deadlines\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { taxDeadlinesCommand } = await import(\"./commands/tax.js\");\n await taxDeadlinesCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\ntaxCmd\n .command(\"deadline\")\n .requiredOption(\"--type <type>\", \"Deadline type\")\n .requiredOption(\"--due-date <date>\", \"Due date (ISO 8601)\")\n .requiredOption(\"--description <desc>\", \"Description\")\n .option(\"--recurrence <recurrence>\", \"Recurrence (e.g. annual; 'yearly' is normalized)\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Track a compliance deadline\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { taxDeadlineCommand } = await import(\"./commands/tax.js\");\n await taxDeadlineCommand({\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- agents ---\nconst agentsCmd = program\n .command(\"agents\")\n .description(\"Agent management\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { agentsListCommand } = await import(\"./commands/agents.js\");\n await agentsListCommand(opts);\n });\nagentsCmd.command(\"show <agent-ref>\").option(\"--json\", \"Output as JSON\").description(\"Show agent detail\")\n .action(async (agentId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsShowCommand } = await import(\"./commands/agents.js\");\n await agentsShowCommand(agentId, {\n ...opts,\n json: inheritOption(opts.json, parent.json),\n });\n });\nagentsCmd.command(\"create\").requiredOption(\"--name <name>\", \"Agent name\")\n .requiredOption(\"--prompt <prompt>\", \"System prompt\").option(\"--model <model>\", \"Model\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Create a new agent\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsCreateCommand } = await import(\"./commands/agents.js\");\n await agentsCreateCommand({\n ...opts,\n json: inheritOption(opts.json, parent.json),\n });\n });\nagentsCmd.command(\"pause <agent-ref>\").option(\"--json\", \"Output as JSON\").description(\"Pause an agent\")\n .action(async (agentId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsPauseCommand } = await import(\"./commands/agents.js\");\n await agentsPauseCommand(agentId, {\n json: inheritOption(opts.json, parent.json),\n });\n });\nagentsCmd.command(\"resume <agent-ref>\").option(\"--json\", \"Output as JSON\").description(\"Resume a paused agent\")\n .action(async (agentId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsResumeCommand } = await import(\"./commands/agents.js\");\n await agentsResumeCommand(agentId, {\n json: inheritOption(opts.json, parent.json),\n });\n });\nagentsCmd.command(\"delete <agent-ref>\").option(\"--json\", \"Output as JSON\").description(\"Delete an agent\")\n .action(async (agentId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsDeleteCommand } = await import(\"./commands/agents.js\");\n await agentsDeleteCommand(agentId, {\n json: inheritOption(opts.json, parent.json),\n });\n });\nagentsCmd.command(\"message <agent-ref>\").option(\"--body <text>\", \"Message text\")\n .option(\"--body-file <path>\", \"Read the message body from a file\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Send a message to an agent\")\n .action(async (agentId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsMessageCommand } = await import(\"./commands/agents.js\");\n await agentsMessageCommand(agentId, {\n ...opts,\n json: inheritOption(opts.json, parent.json),\n });\n });\nagentsCmd.command(\"skill <agent-ref>\").requiredOption(\"--name <name>\", \"Skill name\")\n .requiredOption(\"--description <desc>\", \"Skill description\").option(\"--instructions <text>\", \"Instructions\")\n .option(\"--instructions-file <path>\", \"Read skill instructions from a file\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Add a skill to an agent\")\n .action(async (agentId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { agentsSkillCommand } = await import(\"./commands/agents.js\");\n await agentsSkillCommand(agentId, {\n ...opts,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- work-items ---\nconst workItemsCmd = program\n .command(\"work-items\")\n .description(\"Long-term work item coordination\")\n .option(\"--entity-id <ref>\", \"Entity reference (ID, short ID, @last, or unique name)\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--status <status>\", \"Filter by status (open, claimed, completed, cancelled)\")\n .option(\"--category <category>\", \"Filter by category\")\n .action(async (opts) => {\n const { workItemsListCommand } = await import(\"./commands/work-items.js\");\n await workItemsListCommand(opts);\n });\nworkItemsCmd\n .command(\"show <item-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Show work item detail\")\n .action(async (itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { workItemsShowCommand } = await import(\"./commands/work-items.js\");\n await workItemsShowCommand(itemId, {\n ...opts,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nworkItemsCmd\n .command(\"create\")\n .requiredOption(\"--title <title>\", \"Work item title\")\n .option(\"--category <category>\", \"Work item category\")\n .option(\"--description <desc>\", \"Description\")\n .option(\"--deadline <date>\", \"Deadline (YYYY-MM-DD)\")\n .option(\"--asap\", \"Mark as ASAP priority\")\n .option(\"--created-by <name>\", \"Creator identifier\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Create a new work item\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { workItemsCreateCommand } = await import(\"./commands/work-items.js\");\n await workItemsCreateCommand({\n ...opts,\n category: inheritOption(opts.category, parent.category),\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nworkItemsCmd\n .command(\"claim <item-ref>\")\n .option(\"--by <name>\", \"Agent or user claiming the item\")\n .option(\"--claimer <name>\", \"Alias for --by\")\n .option(\"--ttl <seconds>\", \"Auto-release TTL in seconds\", parseInt)\n .option(\"--json\", \"Output as JSON\")\n .description(\"Claim a work item\")\n .action(async (itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { workItemsClaimCommand } = await import(\"./commands/work-items.js\");\n const claimedBy = opts.by ?? opts.claimer;\n if (!claimedBy) {\n cmd.error(\"required option '--by <name>' not specified\");\n return;\n }\n await workItemsClaimCommand(itemId, {\n claimedBy,\n ttl: opts.ttl,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nworkItemsCmd\n .command(\"complete <item-ref>\")\n .option(\"--by <name>\", \"Agent or user completing the item\")\n .option(\"--completed-by <name>\", \"Alias for --by\")\n .option(\"--result <text>\", \"Completion result or notes\")\n .option(\"--notes <text>\", \"Alias for --result\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Mark a work item as completed\")\n .action(async (itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { workItemsCompleteCommand } = await import(\"./commands/work-items.js\");\n const completedBy = opts.by ?? opts.completedBy;\n if (!completedBy) {\n cmd.error(\"required option '--by <name>' not specified\");\n return;\n }\n await workItemsCompleteCommand(itemId, {\n completedBy,\n result: opts.result ?? opts.notes,\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nworkItemsCmd\n .command(\"release <item-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Release a claimed work item\")\n .action(async (itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { workItemsReleaseCommand } = await import(\"./commands/work-items.js\");\n await workItemsReleaseCommand(itemId, {\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\nworkItemsCmd\n .command(\"cancel <item-ref>\")\n .option(\"--json\", \"Output as JSON\")\n .description(\"Cancel a work item\")\n .action(async (itemId: string, opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { workItemsCancelCommand } = await import(\"./commands/work-items.js\");\n await workItemsCancelCommand(itemId, {\n entityId: parent.entityId,\n json: inheritOption(opts.json, parent.json),\n });\n });\n\n// --- billing ---\nconst billingCmd = program\n .command(\"billing\")\n .description(\"Billing status, plans, and subscription management\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { billingCommand } = await import(\"./commands/billing.js\");\n await billingCommand(opts);\n });\nbillingCmd.command(\"portal\").description(\"Open Stripe Customer Portal\")\n .action(async () => {\n const { billingPortalCommand } = await import(\"./commands/billing.js\");\n await billingPortalCommand();\n });\nbillingCmd.command(\"upgrade\").option(\"--plan <plan>\", \"Plan ID to upgrade to (free, pro, enterprise)\", \"pro\")\n .description(\"Open Stripe Checkout to upgrade your plan\")\n .action(async (opts) => {\n const { billingUpgradeCommand } = await import(\"./commands/billing.js\");\n await billingUpgradeCommand(opts);\n });\n\n// --- approvals ---\n// The approval system is integrated into governance meetings (vote on agenda items)\n// and execution intents. There is no standalone /v1/approvals endpoint.\nprogram\n .command(\"approvals\")\n .description(\"Approvals are managed through governance meetings and execution intents\")\n .action(async () => {\n const { approvalsListCommand } = await import(\"./commands/approvals.js\");\n await approvalsListCommand({});\n });\n\n// --- form ---\nconst formCmd = program\n .command(\"form\")\n .description(\"Form a new entity with founders and cap table\")\n .option(\"--entity-type <type>\", \"Entity type (llc, c_corp)\")\n .option(\"--legal-name <name>\", \"Legal name\")\n .option(\"--jurisdiction <jurisdiction>\", \"Jurisdiction (e.g. US-DE, US-WY)\")\n .option(\"--member <member>\", \"Founder as 'name,email,role[,pct[,address[,officer_title[,is_incorporator]]]]' with address as street|city|state|zip, or key=value pairs like 'name=...,email=...,role=...,officer_title=cto,is_incorporator=true,address=street|city|state|zip' (repeatable)\", (v: string, a: string[]) => [...a, v], [] as string[])\n .option(\"--member-json <json>\", \"Founder JSON object (repeatable)\", (v: string, a: string[]) => [...a, v], [] as string[])\n .option(\"--members-file <path>\", \"Path to a JSON array of founders or {\\\"members\\\": [...]}\")\n .option(\"--address <address>\", \"Company address as 'street,city,state,zip'\")\n .option(\"--fiscal-year-end <date>\", \"Fiscal year end (MM-DD)\", \"12-31\")\n .option(\"--s-corp\", \"Elect S-Corp status\")\n .option(\"--transfer-restrictions\", \"Enable transfer restrictions\")\n .option(\"--rofr\", \"Enable right of first refusal\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the entity\")\n .action(async (opts) => {\n // Map --entity-type and --legal-name to the internal keys expected by formCommand\n if (opts.entityType && !opts.type) opts.type = opts.entityType;\n if (opts.legalName && !opts.name) opts.name = opts.legalName;\n const { formCommand } = await import(\"./commands/form.js\");\n await formCommand(opts);\n });\nformCmd.command(\"create\")\n .description(\"Create a pending entity (staged flow step 1)\")\n .requiredOption(\"--type <type>\", \"Entity type (llc, c_corp)\")\n .requiredOption(\"--name <name>\", \"Legal name\")\n .option(\"--jurisdiction <jurisdiction>\", \"Jurisdiction (e.g. US-DE, US-WY)\")\n .option(\"--registered-agent-name <name>\", \"Registered agent legal name\")\n .option(\"--registered-agent-address <address>\", \"Registered agent address line\")\n .option(\"--formation-date <date>\", \"Formation date (RFC3339 or YYYY-MM-DD)\")\n .option(\"--fiscal-year-end <date>\", \"Fiscal year end (MM-DD)\")\n .option(\"--s-corp\", \"Elect S-Corp status\")\n .option(\"--transfer-restrictions\", \"Enable transfer restrictions\")\n .option(\"--rofr\", \"Enable right of first refusal\")\n .option(\"--company-address <address>\", \"Company address as 'street,city,state,zip'\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without creating the pending entity\")\n .action(async (opts, cmd) => {\n const parent = cmd.parent!.opts();\n const { formCreateCommand } = await import(\"./commands/form.js\");\n await formCreateCommand({\n ...opts,\n jurisdiction: inheritOption(opts.jurisdiction, parent.jurisdiction),\n json: inheritOption(opts.json, parent.json),\n dryRun: inheritOption(opts.dryRun, parent.dryRun),\n });\n });\nformCmd.command(\"add-founder <entity-ref>\")\n .description(\"Add a founder to a pending entity (staged flow step 2)\")\n .requiredOption(\"--name <name>\", \"Founder name\")\n .requiredOption(\"--email <email>\", \"Founder email\")\n .requiredOption(\"--role <role>\", \"Role: director|officer|manager|member|chair\")\n .requiredOption(\"--pct <pct>\", \"Ownership percentage\")\n .addOption(new Option(\"--officer-title <title>\", \"Officer title (corporations only)\").choices([\"ceo\", \"cfo\", \"cto\", \"coo\", \"secretary\", \"treasurer\", \"president\", \"vp\", \"other\"]))\n .option(\"--incorporator\", \"Mark as sole incorporator (corporations only)\")\n .option(\"--address <address>\", \"Founder address as 'street,city,state,zip'\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without adding the founder\")\n .action(async (entityId: string, opts, cmd) => {\n const { formAddFounderCommand } = await import(\"./commands/form.js\");\n await formAddFounderCommand(entityId, {\n ...opts,\n json: inheritOption(opts.json, cmd.parent!.opts().json),\n dryRun: inheritOption(opts.dryRun, cmd.parent!.opts().dryRun),\n });\n });\nformCmd.command(\"finalize <entity-ref>\")\n .description(\"Finalize formation and generate documents + cap table (staged flow step 3)\")\n .option(\"--authorized-shares <count>\", \"Authorized shares for corporations\")\n .option(\"--par-value <value>\", \"Par value per share, e.g. 0.0001\")\n .option(\"--board-size <count>\", \"Board size for corporations\")\n .option(\"--principal-name <name>\", \"Principal or manager name for LLCs\")\n .option(\"--registered-agent-name <name>\", \"Registered agent legal name\")\n .option(\"--registered-agent-address <address>\", \"Registered agent address line\")\n .option(\"--formation-date <date>\", \"Formation date (RFC3339 or YYYY-MM-DD)\")\n .option(\"--fiscal-year-end <date>\", \"Fiscal year end (MM-DD)\")\n .option(\"--s-corp\", \"Elect S-Corp status\")\n .option(\"--transfer-restrictions\", \"Enable transfer restrictions\")\n .option(\"--rofr\", \"Enable right of first refusal\")\n .option(\"--company-address <address>\", \"Company address as 'street,city,state,zip'\")\n .option(\"--incorporator-name <name>\", \"Incorporator legal name (overrides founder)\")\n .option(\"--incorporator-address <address>\", \"Incorporator mailing address (overrides founder)\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the request without finalizing formation\")\n .action(async (entityId: string, opts, cmd) => {\n const { formFinalizeCommand } = await import(\"./commands/form.js\");\n await formFinalizeCommand(entityId, {\n ...opts,\n json: inheritOption(opts.json, cmd.parent!.opts().json),\n dryRun: inheritOption(opts.dryRun, cmd.parent!.opts().dryRun),\n });\n });\nformCmd.command(\"activate <entity-ref>\")\n .description(\"Programmatically sign formation documents and advance an entity to active\")\n .option(\"--evidence-uri <uri>\", \"Registered-agent consent evidence URI placeholder\")\n .option(\"--evidence-type <type>\", \"Registered-agent consent evidence type\", \"generated\")\n .option(\"--filing-id <id>\", \"External filing identifier to record\")\n .option(\"--receipt-reference <ref>\", \"External receipt reference to record\")\n .option(\"--ein <ein>\", \"EIN to confirm (defaults to a deterministic simulated EIN)\")\n .option(\"--json\", \"Output as JSON\")\n .option(\"--dry-run\", \"Show the activation plan without mutating\")\n .action(async (entityId: string, opts, cmd) => {\n const { formActivateCommand } = await import(\"./commands/form.js\");\n await formActivateCommand(entityId, {\n ...opts,\n json: inheritOption(opts.json, cmd.parent!.opts().json),\n dryRun: inheritOption(opts.dryRun, cmd.parent!.opts().dryRun),\n });\n });\n\n// --- api-keys ---\nprogram\n .command(\"api-keys\")\n .description(\"List API keys\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { apiKeysCommand } = await import(\"./commands/api-keys.js\");\n await apiKeysCommand(opts);\n });\n\n// --- demo ---\nprogram\n .command(\"demo\")\n .description(\"Create a usable demo workspace environment\")\n .requiredOption(\"--name <name>\", \"Corporation name\")\n .option(\"--scenario <scenario>\", \"Scenario to create (startup, llc, restaurant)\", \"startup\")\n .option(\"--minimal\", \"Use the minimal server-side demo seed instead of the full CLI workflow\")\n .option(\"--json\", \"Output as JSON\")\n .action(async (opts) => {\n const { demoCommand } = await import(\"./commands/demo.js\");\n await demoCommand(opts);\n });\n\n// --- feedback ---\nprogram\n .command(\"feedback\")\n .description(\"Submit feedback to TheCorporation\")\n .argument(\"<message>\", \"Feedback message\")\n .option(\"--category <category>\", \"Category (e.g. bug, feature, general)\", \"general\")\n .option(\"--email <email>\", \"Your email address (to receive a copy)\")\n .action(async (message, opts) => {\n const { feedbackCommand } = await import(\"./commands/feedback.js\");\n await feedbackCommand(message, opts);\n });\n\n// --- serve ---\nprogram\n .command(\"serve\")\n .description(\"Start the API server locally\")\n .option(\"--port <port>\", \"Port to listen on\", \"8000\")\n .option(\"--data-dir <path>\", \"Data directory\", \"./data/repos\")\n .action(async (opts) => {\n const { serveCommand } = await import(\"./commands/serve.js\");\n await serveCommand(opts);\n });\n\nawait program.parseAsync(process.argv);\n","export function inheritOption<T>(localValue: T | undefined, parentValue: T | undefined): T | undefined {\n return localValue ?? parentValue;\n}\n"],"mappings":"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","names":["s","holders","chalk","program","init_config","chalk","Table","KINDS","ENTITY_SCOPED_KINDS","join","homedir","chalk","resolve","chalk","chalk","chalk","chalk","result","chalk","readFileSync","s","chalk","actorLabel","input","confirm","chalk","Table","readFileSync","realpathSync","relative","resolve","chalk","Table","result","chalk","readFileSync","writeFileSync","existsSync","resolve","require","setupCommand","statusCommand","contextCommand","schemaCommand","configSetCommand","configGetCommand","configListCommand","resolveCommand","findCommand","obligationsCommand","digestCommand","linkCommand","claimCommand","chatCommand","entitiesCommand","entitiesShowCommand","entitiesConvertCommand","entitiesDissolveCommand","contactsListCommand","contactsShowCommand","contactsAddCommand","contactsEditCommand","capTableCommand","safesCommand","transfersCommand","instrumentsCommand","shareClassesCommand","roundsCommand","valuationsCommand","fourOhNineACommand","createInstrumentCommand","issueEquityCommand","issueSafeCommand","transferSharesCommand","distributeCommand","startRoundCommand","addSecurityCommand","issueRoundCommand","createValuationCommand","submitValuationCommand","approveValuationCommand","financeSummaryCommand","financeInvoicesCommand","financeInvoiceCommand","financePayrollRunsCommand","financePayrollCommand","financePaymentsCommand","financePayCommand","financeBankAccountsCommand","financeOpenAccountCommand","financeClassificationsCommand","financeClassifyContractorCommand","financeReconciliationsCommand","financeReconcileCommand","financeDistributionsCommand","governanceListCommand","governanceCreateBodyCommand","governanceAddSeatCommand","governanceSeatsCommand","governanceMeetingsCommand","governanceResolutionsCommand","governanceConveneCommand","governanceOpenMeetingCommand","governanceVoteCommand","sendNoticeCommand","adjournMeetingCommand","reopenMeetingCommand","cancelMeetingCommand","listAgendaItemsCommand","finalizeAgendaItemCommand","computeResolutionCommand","writtenConsentCommand","documentsListCommand","documentsSigningLinkCommand","documentsSignCommand","documentsSignAllCommand","documentsGenerateCommand","documentsPreviewPdfCommand","taxFilingsCommand","taxFileCommand","taxDeadlinesCommand","taxDeadlineCommand","agentsListCommand","agentsShowCommand","agentsCreateCommand","agentsPauseCommand","agentsResumeCommand","agentsDeleteCommand","agentsMessageCommand","agentsSkillCommand","workItemsListCommand","workItemsShowCommand","workItemsCreateCommand","workItemsClaimCommand","workItemsCompleteCommand","workItemsReleaseCommand","workItemsCancelCommand","billingCommand","billingPortalCommand","billingUpgradeCommand","approvalsListCommand","formCommand","formCreateCommand","formAddFounderCommand","formFinalizeCommand","formActivateCommand","apiKeysCommand","demoCommand","feedbackCommand","serveCommand"]}
|