@thecorporation/corp-tools 0.1.0
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.d.ts +152 -0
- package/dist/index.js +1626 -0
- package/dist/index.js.map +1 -0
- package/package.json +38 -0
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../src/api-client.ts","../src/tools.ts","../src/tool-defs.generated.ts","../src/tool-descriptions.ts","../src/system-prompt.ts","../src/definitions.ts"],"sourcesContent":["import type { ApiRecord } from \"./types.js\";\n\nexport class SessionExpiredError extends Error {\n constructor() {\n super(\"Your API key is no longer valid. Run 'corp setup' to re-authenticate.\");\n this.name = \"SessionExpiredError\";\n }\n}\n\nexport async function provisionWorkspace(\n apiUrl: string,\n name?: string\n): Promise<ApiRecord> {\n const url = `${apiUrl.replace(/\\/+$/, \"\")}/v1/workspaces/provision`;\n const body: Record<string, string> = {};\n if (name) body.name = name;\n const resp = await fetch(url, {\n method: \"POST\",\n headers: { \"Content-Type\": \"application/json\" },\n body: JSON.stringify(body),\n });\n if (!resp.ok) throw new Error(`Provision failed: ${resp.status} ${resp.statusText}`);\n return resp.json() as Promise<ApiRecord>;\n}\n\nexport class CorpAPIClient {\n readonly apiUrl: string;\n readonly apiKey: string;\n readonly workspaceId: string;\n\n constructor(apiUrl: string, apiKey: string, workspaceId: string) {\n this.apiUrl = apiUrl.replace(/\\/+$/, \"\");\n this.apiKey = apiKey;\n this.workspaceId = workspaceId;\n }\n\n private headers(): Record<string, string> {\n return {\n Authorization: `Bearer ${this.apiKey}`,\n \"Content-Type\": \"application/json\",\n Accept: \"application/json\",\n };\n }\n\n private async request(method: string, path: string, body?: unknown, params?: Record<string, string>): Promise<Response> {\n let url = `${this.apiUrl}${path}`;\n if (params) {\n const qs = new URLSearchParams(params).toString();\n if (qs) url += `?${qs}`;\n }\n const opts: RequestInit = { method, headers: this.headers() };\n if (body !== undefined) opts.body = JSON.stringify(body);\n return fetch(url, opts);\n }\n\n private async get(path: string, params?: Record<string, string>): Promise<unknown> {\n const resp = await this.request(\"GET\", path, undefined, params);\n if (resp.status === 401) throw new SessionExpiredError();\n if (!resp.ok) throw new Error(`${resp.status} ${resp.statusText}`);\n return resp.json();\n }\n\n private async post(path: string, body?: unknown): Promise<unknown> {\n const resp = await this.request(\"POST\", path, body);\n if (resp.status === 401) throw new SessionExpiredError();\n if (!resp.ok) throw new Error(`${resp.status} ${resp.statusText}`);\n return resp.json();\n }\n\n private async patch(path: string, body?: unknown): Promise<unknown> {\n const resp = await this.request(\"PATCH\", path, body);\n if (resp.status === 401) throw new SessionExpiredError();\n if (!resp.ok) throw new Error(`${resp.status} ${resp.statusText}`);\n return resp.json();\n }\n\n private async del(path: string): Promise<void> {\n const resp = await this.request(\"DELETE\", path);\n if (resp.status === 401) throw new SessionExpiredError();\n if (!resp.ok) throw new Error(`${resp.status} ${resp.statusText}`);\n }\n\n // --- Workspace ---\n getStatus() { return this.get(`/v1/workspaces/${this.workspaceId}/status`) as Promise<ApiRecord>; }\n\n // --- Obligations ---\n getObligations(tier?: string) {\n const params: Record<string, string> = {};\n if (tier) params.tier = tier;\n return this.get(\"/v1/obligations/summary\", params) as Promise<ApiRecord>;\n }\n\n // --- Digests ---\n listDigests() { return this.get(\"/v1/digests\") as Promise<ApiRecord[]>; }\n triggerDigest() { return this.post(\"/v1/digests/trigger\") as Promise<ApiRecord>; }\n getDigest(key: string) { return this.get(`/v1/digests/${key}`) as Promise<ApiRecord>; }\n\n // --- Entities ---\n listEntities() { return this.get(`/v1/workspaces/${this.workspaceId}/entities`) as Promise<ApiRecord[]>; }\n\n // --- Contacts ---\n listContacts() { return this.get(`/v1/workspaces/${this.workspaceId}/contacts`) as Promise<ApiRecord[]>; }\n getContact(id: string) { return this.get(`/v1/contacts/${id}`) as Promise<ApiRecord>; }\n getContactProfile(id: string) { return this.get(`/v1/contacts/${id}/profile`) as Promise<ApiRecord>; }\n createContact(data: ApiRecord) { return this.post(`/v1/workspaces/${this.workspaceId}/contacts`, data) as Promise<ApiRecord>; }\n updateContact(id: string, data: ApiRecord) { return this.patch(`/v1/contacts/${id}`, data) as Promise<ApiRecord>; }\n getNotificationPrefs(contactId: string) { return this.get(`/v1/contacts/${contactId}/notification-prefs`) as Promise<ApiRecord>; }\n updateNotificationPrefs(contactId: string, prefs: ApiRecord) { return this.patch(`/v1/contacts/${contactId}/notification-prefs`, prefs) as Promise<ApiRecord>; }\n\n // --- Cap Table ---\n getCapTable(entityId: string) { return this.get(`/v1/entities/${entityId}/cap-table`) as Promise<ApiRecord>; }\n getSafeNotes(entityId: string) { return this.get(`/v1/entities/${entityId}/safe-notes`) as Promise<ApiRecord[]>; }\n getShareTransfers(entityId: string) { return this.get(`/v1/entities/${entityId}/share-transfers`) as Promise<ApiRecord[]>; }\n getValuations(entityId: string) { return this.get(`/v1/entities/${entityId}/valuations`) as Promise<ApiRecord[]>; }\n getCurrent409a(entityId: string) { return this.get(`/v1/entities/${entityId}/current-409a`) as Promise<ApiRecord>; }\n issueEquity(data: ApiRecord) { return this.post(\"/v1/equity/grants\", data) as Promise<ApiRecord>; }\n issueSafe(data: ApiRecord) { return this.post(\"/v1/safe-notes\", data) as Promise<ApiRecord>; }\n transferShares(data: ApiRecord) { return this.post(\"/v1/share-transfers\", data) as Promise<ApiRecord>; }\n calculateDistribution(data: ApiRecord) { return this.post(\"/v1/distributions\", data) as Promise<ApiRecord>; }\n\n // --- Governance ---\n listGovernanceBodies(entityId: string) { return this.get(`/v1/entities/${entityId}/governance-bodies`) as Promise<ApiRecord[]>; }\n getGovernanceSeats(bodyId: string) { return this.get(`/v1/governance-bodies/${bodyId}/seats`) as Promise<ApiRecord[]>; }\n listMeetings(bodyId: string) { return this.get(`/v1/governance-bodies/${bodyId}/meetings`) as Promise<ApiRecord[]>; }\n getMeetingResolutions(meetingId: string) { return this.get(`/v1/meetings/${meetingId}/resolutions`) as Promise<ApiRecord[]>; }\n conveneMeeting(data: ApiRecord) { return this.post(\"/v1/meetings\", data) as Promise<ApiRecord>; }\n castVote(meetingId: string, itemId: string, data: ApiRecord) { return this.post(`/v1/meetings/${meetingId}/agenda-items/${itemId}/vote`, data) as Promise<ApiRecord>; }\n\n // --- Documents ---\n getEntityDocuments(entityId: string) { return this.get(`/v1/formations/${entityId}/documents`) as Promise<ApiRecord[]>; }\n generateContract(data: ApiRecord) { return this.post(\"/v1/contracts\", data) as Promise<ApiRecord>; }\n getSigningLink(documentId: string): ApiRecord {\n return {\n document_id: documentId,\n signing_url: `https://humans.thecorporation.ai/sign/${documentId}`,\n };\n }\n\n // --- Finance ---\n createInvoice(data: ApiRecord) { return this.post(\"/v1/invoices\", data) as Promise<ApiRecord>; }\n runPayroll(data: ApiRecord) { return this.post(\"/v1/payroll/runs\", data) as Promise<ApiRecord>; }\n submitPayment(data: ApiRecord) { return this.post(\"/v1/payments\", data) as Promise<ApiRecord>; }\n openBankAccount(data: ApiRecord) { return this.post(\"/v1/bank-accounts\", data) as Promise<ApiRecord>; }\n classifyContractor(data: ApiRecord) { return this.post(\"/v1/contractors/classify\", data) as Promise<ApiRecord>; }\n reconcileLedger(data: ApiRecord) { return this.post(\"/v1/ledger/reconcile\", data) as Promise<ApiRecord>; }\n\n // --- Tax ---\n fileTaxDocument(data: ApiRecord) { return this.post(\"/v1/tax/filings\", data) as Promise<ApiRecord>; }\n trackDeadline(data: ApiRecord) { return this.post(\"/v1/deadlines\", data) as Promise<ApiRecord>; }\n\n // --- Billing ---\n getBillingStatus() { return this.get(\"/v1/billing/status\", { workspace_id: this.workspaceId }) as Promise<ApiRecord>; }\n getBillingPlans() {\n return (this.get(\"/v1/billing/plans\") as Promise<unknown>).then((data) => {\n if (typeof data === \"object\" && data !== null && \"plans\" in data) {\n return (data as { plans: ApiRecord[] }).plans;\n }\n return data as ApiRecord[];\n });\n }\n createBillingPortal() { return this.post(\"/v1/billing/portal\", { workspace_id: this.workspaceId }) as Promise<ApiRecord>; }\n createBillingCheckout(tier: string, entityId?: string) {\n const body: ApiRecord = { tier };\n if (entityId) body.entity_id = entityId;\n return this.post(\"/v1/billing/checkout\", body) as Promise<ApiRecord>;\n }\n\n // --- Formations ---\n getFormation(id: string) { return this.get(`/v1/formations/${id}`) as Promise<ApiRecord>; }\n getFormationDocuments(id: string) { return this.get(`/v1/formations/${id}/documents`) as Promise<ApiRecord[]>; }\n createFormation(data: ApiRecord) { return this.post(\"/v1/formations\", data) as Promise<ApiRecord>; }\n\n // --- Human obligations ---\n getHumanObligations() { return this.get(`/v1/workspaces/${this.workspaceId}/human-obligations`) as Promise<ApiRecord[]>; }\n getSignerToken(obligationId: string) { return this.post(`/v1/human-obligations/${obligationId}/signer-token`) as Promise<ApiRecord>; }\n\n // --- Demo ---\n seedDemo(name: string) { return this.post(\"/v1/demo/seed\", { name, workspace_id: this.workspaceId }) as Promise<ApiRecord>; }\n\n // --- Entities writes ---\n convertEntity(entityId: string, data: ApiRecord) { return this.post(`/v1/entities/${entityId}/convert`, data) as Promise<ApiRecord>; }\n dissolveEntity(entityId: string, data: ApiRecord) { return this.post(`/v1/entities/${entityId}/dissolve`, data) as Promise<ApiRecord>; }\n\n // --- Agents ---\n listAgents() { return this.get(\"/v1/agents\") as Promise<ApiRecord[]>; }\n getAgent(id: string) { return this.get(`/v1/agents/${id}`) as Promise<ApiRecord>; }\n createAgent(data: ApiRecord) { return this.post(\"/v1/agents\", data) as Promise<ApiRecord>; }\n updateAgent(id: string, data: ApiRecord) { return this.patch(`/v1/agents/${id}`, data) as Promise<ApiRecord>; }\n deleteAgent(id: string) { return this.del(`/v1/agents/${id}`); }\n sendAgentMessage(id: string, body: string) { return this.post(`/v1/agents/${id}/messages`, { body }) as Promise<ApiRecord>; }\n listAgentExecutions(id: string) { return this.get(`/v1/agents/${id}/executions`) as Promise<ApiRecord[]>; }\n getAgentUsage(id: string) { return this.get(`/v1/agents/${id}/usage`) as Promise<ApiRecord>; }\n addAgentSkill(id: string, data: ApiRecord) { return this.post(`/v1/agents/${id}/skills`, data) as Promise<ApiRecord>; }\n listSupportedModels() { return this.get(\"/v1/models\") as Promise<ApiRecord[]>; }\n\n // --- Approvals ---\n listPendingApprovals() { return this.get(\"/v1/approvals/pending\") as Promise<ApiRecord[]>; }\n respondApproval(id: string, decision: string, message = \"\") { return this.patch(`/v1/approvals/${id}`, { decision, message }) as Promise<ApiRecord>; }\n\n // --- API Keys ---\n listApiKeys() { return this.get(\"/v1/api-keys\", { workspace_id: this.workspaceId }) as Promise<ApiRecord[]>; }\n\n // --- Obligations ---\n assignObligation(obligationId: string, contactId: string) {\n return this.patch(`/v1/obligations/${obligationId}/assign`, { contact_id: contactId }) as Promise<ApiRecord>;\n }\n\n // --- Config ---\n getConfig() { return this.get(\"/v1/config\") as Promise<ApiRecord>; }\n\n // --- Link/Claim ---\n async createLink(): Promise<ApiRecord> {\n const resp = await this.request(\"POST\", \"/v1/workspaces/link\");\n if (!resp.ok) throw new Error(`${resp.status} ${resp.statusText}`);\n return resp.json() as Promise<ApiRecord>;\n }\n}\n","import type { CorpAPIClient } from \"./api-client.js\";\nimport { readFileSync, writeFileSync, mkdirSync, existsSync } from \"node:fs\";\nimport { join } from \"node:path\";\nimport { GENERATED_TOOL_DEFINITIONS } from \"./tool-defs.generated.js\";\n\nexport interface ToolContext {\n dataDir: string;\n onEntityFormed?: (entityId: string) => void;\n}\n\ntype ToolHandler = (args: Record<string, unknown>, client: CorpAPIClient, ctx: ToolContext) => Promise<unknown>;\n\nconst TOOL_HANDLERS: Record<string, ToolHandler> = {\n get_workspace_status: async (_args, client) => client.getStatus(),\n list_obligations: async (args, client) => client.getObligations(args.tier as string | undefined),\n list_entities: async (_args, client) => client.listEntities(),\n get_cap_table: async (args, client) => client.getCapTable(args.entity_id as string),\n list_documents: async (args, client) => client.getEntityDocuments(args.entity_id as string),\n list_safe_notes: async (args, client) => client.getSafeNotes(args.entity_id as string),\n list_agents: async (_args, client) => client.listAgents(),\n get_billing_status: async (_args, client) => {\n const [status, plans] = await Promise.all([client.getBillingStatus(), client.getBillingPlans()]);\n return { status, plans };\n },\n\n form_entity: async (args, client, ctx) => {\n const entityType = args.entity_type as string;\n let jurisdiction = (args.jurisdiction as string) || \"\";\n if (!jurisdiction || jurisdiction.length === 2) {\n jurisdiction = entityType === \"llc\" ? \"US-WY\" : \"US-DE\";\n }\n const members = (args.members ?? []) as Record<string, unknown>[];\n if (!members.length) return { error: \"Members are required.\" };\n // Normalize: ensure investor_type defaults, convert ownership_pct > 1 to 0-1 scale\n for (const m of members) {\n if (!m.investor_type) m.investor_type = \"natural_person\";\n if (typeof m.ownership_pct === \"number\" && (m.ownership_pct as number) > 1) {\n m.ownership_pct = (m.ownership_pct as number) / 100;\n }\n }\n const result = await client.createFormation({\n entity_type: entityType, legal_name: args.entity_name, jurisdiction,\n members, workspace_id: client.workspaceId,\n });\n const entityId = result.entity_id as string;\n if (entityId && ctx.onEntityFormed) {\n ctx.onEntityFormed(entityId);\n }\n return result;\n },\n\n issue_equity: async (args, client) => client.issueEquity(args),\n issue_safe: async (args, client) => client.issueSafe(args),\n create_invoice: async (args, client) => {\n if (!(\"amount_cents\" in args) && Array.isArray(args.line_items)) {\n args.amount_cents = (args.line_items as Record<string, number>[])\n .reduce((sum, item) => sum + (item.amount_cents ?? 0), 0);\n }\n if (!(\"amount_cents\" in args)) args.amount_cents = 0;\n return client.createInvoice(args);\n },\n run_payroll: async (args, client) => client.runPayroll(args),\n submit_payment: async (args, client) => client.submitPayment(args),\n open_bank_account: async (args, client) => {\n const body: Record<string, unknown> = { entity_id: args.entity_id };\n if (args.institution_name) body.institution_name = args.institution_name;\n return client.openBankAccount(body);\n },\n generate_contract: async (args, client) => client.generateContract(args),\n file_tax_document: async (args, client) => client.fileTaxDocument(args),\n\n get_signer_link: async (args, client) => {\n const result = await client.getSignerToken(args.obligation_id as string);\n const token = result.token as string ?? \"\";\n const obligationId = args.obligation_id as string;\n const humansBase = client.apiUrl.replace(\"://api.\", \"://humans.\");\n return {\n signer_url: `${humansBase}/human/${obligationId}?token=${token}`,\n obligation_id: obligationId,\n expires_in_seconds: result.expires_in ?? 900,\n message: \"Share this link with the signer. Link expires in 15 minutes.\",\n };\n },\n\n schedule_meeting: async (args, client) => {\n const body: Record<string, unknown> = {\n body_id: args.body_id, meeting_type: args.meeting_type,\n title: args.title, proposed_date: args.proposed_date,\n };\n if (args.agenda_items) body.agenda_item_titles = args.agenda_items;\n return client.conveneMeeting(body);\n },\n\n cast_vote: async (args, client) =>\n client.castVote(args.meeting_id as string, args.agenda_item_id as string, {\n voter_id: args.voter_id, vote_value: args.vote,\n }),\n\n update_checklist: async (args, _client, ctx) => {\n const path = join(ctx.dataDir, \"checklist.md\");\n mkdirSync(ctx.dataDir, { recursive: true });\n writeFileSync(path, args.checklist as string);\n return { status: \"updated\", checklist: args.checklist };\n },\n\n get_checklist: async (_args, _client, ctx) => {\n const path = join(ctx.dataDir, \"checklist.md\");\n if (existsSync(path)) return { checklist: readFileSync(path, \"utf-8\") };\n return { checklist: null, message: \"No checklist yet.\" };\n },\n\n get_document_link: async (args, client) => {\n const docId = args.document_id as string;\n try {\n const resp = await fetch(`${client.apiUrl}/v1/documents/${docId}/request-copy`, {\n method: \"POST\",\n headers: { Authorization: `Bearer ${client.apiKey}`, \"Content-Type\": \"application/json\" },\n body: JSON.stringify({ email: \"owner@workspace\" }),\n });\n if (!resp.ok) throw new Error(\"request-copy failed\");\n const result = await resp.json() as Record<string, string>;\n let downloadUrl = result.download_url ?? \"\";\n if (downloadUrl.startsWith(\"/\")) downloadUrl = client.apiUrl + downloadUrl;\n return { document_id: docId, download_url: downloadUrl, expires_in: \"24 hours\" };\n } catch {\n return {\n document_id: docId,\n download_url: `${client.apiUrl}/v1/documents/${docId}/pdf`,\n note: \"Use your API key to authenticate the download.\",\n };\n }\n },\n\n get_signing_link: async (args, client) => client.getSigningLink(args.document_id as string),\n convert_entity: async (args, client) => client.convertEntity(args.entity_id as string, args),\n dissolve_entity: async (args, client) => client.dissolveEntity(args.entity_id as string, args),\n transfer_shares: async (args, client) => client.transferShares(args),\n calculate_distribution: async (args, client) => client.calculateDistribution(args),\n classify_contractor: async (args, client) => client.classifyContractor(args),\n reconcile_ledger: async (args, client) => client.reconcileLedger(args),\n track_deadline: async (args, client) => client.trackDeadline(args),\n convene_meeting: async (args, client) => client.conveneMeeting(args),\n\n create_agent: async (args, client) => client.createAgent(args),\n send_agent_message: async (args, client) => client.sendAgentMessage(args.agent_id as string, args.body as string),\n update_agent: async (args, client) => client.updateAgent(args.agent_id as string, args),\n add_agent_skill: async (args, client) => client.addAgentSkill(args.agent_id as string, args),\n};\n\n// Tool definitions are generated from the backend OpenAPI spec.\n// Regenerate: make generate-tools\nexport const TOOL_DEFINITIONS: Record<string, unknown>[] = GENERATED_TOOL_DEFINITIONS;\n\nconst READ_ONLY_TOOLS = new Set([\n \"get_workspace_status\", \"list_entities\", \"get_cap_table\", \"list_documents\",\n \"list_safe_notes\", \"list_agents\", \"get_checklist\", \"get_document_link\",\n \"get_signing_link\", \"list_obligations\", \"get_billing_status\",\n]);\n\nexport function isWriteTool(name: string): boolean {\n return !READ_ONLY_TOOLS.has(name);\n}\n\nexport async function executeTool(\n name: string,\n args: Record<string, unknown>,\n client: CorpAPIClient,\n ctx: ToolContext,\n): Promise<string> {\n const handler = TOOL_HANDLERS[name];\n if (!handler) return JSON.stringify({ error: `Unknown tool: ${name}` });\n try {\n const result = await handler(args, client, ctx);\n return JSON.stringify(result, null, 0);\n } catch (err) {\n return JSON.stringify({ error: String(err) });\n }\n}\n","// AUTO-GENERATED from backend OpenAPI spec — do not edit by hand.\n// Regenerate: make generate-tools\n\nexport const GENERATED_TOOL_DEFINITIONS: Record<string, unknown>[] = [\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_workspace_status\",\n \"description\": \"Get workspace status summary\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {},\n \"required\": []\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"list_entities\",\n \"description\": \"List all entities in the workspace\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {},\n \"required\": []\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_cap_table\",\n \"description\": \"Get cap table for an entity\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"list_documents\",\n \"description\": \"List documents for an entity\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"list_safe_notes\",\n \"description\": \"List SAFE notes for an entity\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"list_agents\",\n \"description\": \"List all agents in the workspace\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {},\n \"required\": []\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"list_obligations\",\n \"description\": \"List obligations with urgency tiers\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"tier\": {\n \"type\": \"string\"\n }\n },\n \"required\": []\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_billing_status\",\n \"description\": \"Get billing status and plans\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {},\n \"required\": []\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"form_entity\",\n \"description\": \"Form a new business entity (LLC or corporation)\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_type\": {\n \"type\": \"string\",\n \"enum\": [\n \"llc\",\n \"corporation\"\n ]\n },\n \"entity_name\": {\n \"type\": \"string\"\n },\n \"jurisdiction\": {\n \"type\": \"string\"\n },\n \"members\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"investor_type\": {\n \"type\": \"string\",\n \"enum\": [\n \"natural_person\",\n \"agent\",\n \"entity\"\n ]\n },\n \"email\": {\n \"type\": \"string\"\n },\n \"agent_id\": {\n \"type\": \"string\"\n },\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"ownership_pct\": {\n \"type\": \"number\"\n },\n \"membership_units\": {\n \"type\": \"integer\"\n },\n \"share_count\": {\n \"type\": \"integer\"\n },\n \"share_class\": {\n \"type\": \"string\"\n },\n \"role\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"investor_type\"\n ]\n }\n }\n },\n \"required\": [\n \"entity_type\",\n \"entity_name\",\n \"jurisdiction\",\n \"members\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"issue_equity\",\n \"description\": \"Issue an equity grant\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"grant_type\": {\n \"type\": \"string\"\n },\n \"shares\": {\n \"type\": \"integer\"\n },\n \"recipient_name\": {\n \"type\": \"string\"\n },\n \"vesting_schedule\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"grant_type\",\n \"shares\",\n \"recipient_name\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"issue_safe\",\n \"description\": \"Issue a SAFE note\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"investor_name\": {\n \"type\": \"string\"\n },\n \"principal_amount_cents\": {\n \"type\": \"integer\"\n },\n \"safe_type\": {\n \"type\": \"string\"\n },\n \"valuation_cap_cents\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"investor_name\",\n \"principal_amount_cents\",\n \"safe_type\",\n \"valuation_cap_cents\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"transfer_shares\",\n \"description\": \"Transfer shares between holders\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"share_class_id\": {\n \"type\": \"string\"\n },\n \"from_holder\": {\n \"type\": \"string\"\n },\n \"to_holder\": {\n \"type\": \"string\"\n },\n \"transfer_type\": {\n \"type\": \"string\"\n },\n \"shares\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"from_holder\",\n \"to_holder\",\n \"shares\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"calculate_distribution\",\n \"description\": \"Calculate a distribution\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"total_amount_cents\": {\n \"type\": \"integer\"\n },\n \"distribution_type\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"total_amount_cents\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"create_invoice\",\n \"description\": \"Create an invoice\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"customer_name\": {\n \"type\": \"string\"\n },\n \"amount_cents\": {\n \"type\": \"integer\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"due_date\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"customer_name\",\n \"amount_cents\",\n \"due_date\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"run_payroll\",\n \"description\": \"Run payroll\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"pay_period_start\": {\n \"type\": \"string\"\n },\n \"pay_period_end\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"pay_period_start\",\n \"pay_period_end\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"submit_payment\",\n \"description\": \"Submit a payment\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"amount_cents\": {\n \"type\": \"integer\"\n },\n \"recipient\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"amount_cents\",\n \"recipient\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"open_bank_account\",\n \"description\": \"Open a business bank account\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"institution_name\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"generate_contract\",\n \"description\": \"Generate a contract from a template\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"template_type\": {\n \"type\": \"string\"\n },\n \"parameters\": {\n \"type\": \"object\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"template_type\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"file_tax_document\",\n \"description\": \"File a tax document\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"document_type\": {\n \"type\": \"string\"\n },\n \"tax_year\": {\n \"type\": \"integer\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"document_type\",\n \"tax_year\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"track_deadline\",\n \"description\": \"Track a compliance deadline\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"deadline_type\": {\n \"type\": \"string\"\n },\n \"due_date\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"recurrence\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"deadline_type\",\n \"due_date\",\n \"description\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"classify_contractor\",\n \"description\": \"Classify contractor risk\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"contractor_name\": {\n \"type\": \"string\"\n },\n \"state\": {\n \"type\": \"string\"\n },\n \"hours_per_week\": {\n \"type\": \"integer\"\n },\n \"exclusive_client\": {\n \"type\": \"boolean\"\n },\n \"duration_months\": {\n \"type\": \"integer\"\n },\n \"provides_tools\": {\n \"type\": \"boolean\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"contractor_name\",\n \"state\",\n \"hours_per_week\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"reconcile_ledger\",\n \"description\": \"Reconcile an entity's ledger\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"start_date\": {\n \"type\": \"string\"\n },\n \"end_date\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"start_date\",\n \"end_date\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"convene_meeting\",\n \"description\": \"Convene a governance meeting\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"meeting_type\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"agenda_item_titles\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n },\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"governance_body_id\": {\n \"type\": \"string\"\n },\n \"scheduled_date\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"governance_body_id\",\n \"meeting_type\",\n \"title\",\n \"scheduled_date\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"cast_vote\",\n \"description\": \"Cast a vote on an agenda item\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"meeting_id\": {\n \"type\": \"string\"\n },\n \"agenda_item_id\": {\n \"type\": \"string\"\n },\n \"voter_id\": {\n \"type\": \"string\"\n },\n \"vote\": {\n \"type\": \"string\",\n \"description\": \"for, against, abstain, or recusal\"\n }\n },\n \"required\": [\n \"meeting_id\",\n \"agenda_item_id\",\n \"voter_id\",\n \"vote\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"schedule_meeting\",\n \"description\": \"Schedule a board or member meeting\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"body_id\": {\n \"type\": \"string\"\n },\n \"meeting_type\": {\n \"type\": \"string\"\n },\n \"title\": {\n \"type\": \"string\"\n },\n \"proposed_date\": {\n \"type\": \"string\"\n },\n \"agenda_items\": {\n \"type\": \"array\",\n \"items\": {\n \"type\": \"string\"\n }\n }\n },\n \"required\": [\n \"body_id\",\n \"meeting_type\",\n \"title\",\n \"proposed_date\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_signer_link\",\n \"description\": \"Generate a signing link for a human obligation\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"obligation_id\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"obligation_id\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_document_link\",\n \"description\": \"Get a download link for a document\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"document_id\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"document_id\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"convert_entity\",\n \"description\": \"Convert entity type\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"new_entity_type\": {\n \"type\": \"string\"\n },\n \"new_jurisdiction\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"new_entity_type\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"dissolve_entity\",\n \"description\": \"Dissolve an entity\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"entity_id\": {\n \"type\": \"string\"\n },\n \"reason\": {\n \"type\": \"string\"\n },\n \"effective_date\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"entity_id\",\n \"reason\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"add_agent_skill\",\n \"description\": \"Add a skill to an agent\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"agent_id\": {\n \"type\": \"string\"\n },\n \"skill_name\": {\n \"type\": \"string\"\n },\n \"description\": {\n \"type\": \"string\"\n },\n \"instructions\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"agent_id\",\n \"skill_name\",\n \"description\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_checklist\",\n \"description\": \"Get the user's onboarding checklist\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {},\n \"required\": []\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"update_checklist\",\n \"description\": \"Update the user's onboarding checklist\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"checklist\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"checklist\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"get_signing_link\",\n \"description\": \"Get a signing link for a document\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"document_id\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"document_id\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"create_agent\",\n \"description\": \"Create a new agent\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"name\": {\n \"type\": \"string\"\n },\n \"system_prompt\": {\n \"type\": \"string\"\n },\n \"model\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"name\",\n \"system_prompt\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"send_agent_message\",\n \"description\": \"Send a message to an agent\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"agent_id\": {\n \"type\": \"string\"\n },\n \"body\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"agent_id\",\n \"body\"\n ]\n }\n }\n },\n {\n \"type\": \"function\",\n \"function\": {\n \"name\": \"update_agent\",\n \"description\": \"Update an agent\",\n \"parameters\": {\n \"type\": \"object\",\n \"properties\": {\n \"agent_id\": {\n \"type\": \"string\"\n },\n \"status\": {\n \"type\": \"string\"\n }\n },\n \"required\": [\n \"agent_id\"\n ]\n }\n }\n }\n];\n\n","function centsToUsd(cents: number): string {\n return \"$\" + (cents / 100).toLocaleString(\"en-US\", { minimumFractionDigits: 0, maximumFractionDigits: 0 });\n}\n\nexport function describeToolCall(name: string, args: Record<string, unknown>): string {\n const a = { ...args } as Record<string, unknown>;\n for (const k of [\"amount_cents\", \"principal_amount_cents\", \"total_amount_cents\", \"valuation_cap_cents\"]) {\n if (k in a) {\n try { a._amount = centsToUsd(Number(a[k])); } catch { a._amount = String(a[k]); }\n }\n }\n a._amount ??= \"?\";\n a.institution_name ??= \"Mercury\";\n a.payment_method ??= \"ach\";\n\n const fmts: Record<string, string> = {\n form_entity: 'Form a new {entity_type} named \"{entity_name}\" in {jurisdiction}',\n convert_entity: \"Convert entity to {new_entity_type}\",\n dissolve_entity: \"Dissolve entity — {dissolution_reason}\",\n issue_equity: \"Issue {shares} {grant_type} shares to {recipient_name}\",\n transfer_shares: \"Transfer {shares} shares to {to_recipient_name}\",\n issue_safe: \"Issue SAFE note to {investor_name} for {_amount}\",\n calculate_distribution: \"Calculate {distribution_type} distribution of {_amount}\",\n create_invoice: \"Create invoice for {customer_name} — {_amount}\",\n run_payroll: \"Run payroll for {pay_period_start} to {pay_period_end}\",\n submit_payment: \"Submit {_amount} payment to {recipient} via {payment_method}\",\n open_bank_account: \"Open bank account at {institution_name}\",\n reconcile_ledger: \"Reconcile ledger from {start_date} to {end_date}\",\n generate_contract: \"Generate {template_type} contract for {counterparty_name}\",\n file_tax_document: \"File {document_type} for tax year {tax_year}\",\n track_deadline: \"Track {deadline_type} deadline — {description}\",\n classify_contractor: \"Classify contractor {contractor_name} in {state}\",\n convene_meeting: \"Convene {meeting_type} meeting\",\n cast_vote: \"Cast {vote} vote\",\n schedule_meeting: \"Schedule {meeting_type} meeting: {title}\",\n update_checklist: \"Update workspace checklist\",\n create_agent: 'Create agent \"{name}\"',\n send_agent_message: \"Send message to agent\",\n update_agent: \"Update agent configuration\",\n add_agent_skill: 'Add skill \"{skill_name}\" to agent',\n };\n\n const fmt = fmts[name];\n if (fmt) {\n try {\n return fmt.replace(/\\{(\\w+)\\}/g, (_, k: string) => String(a[k] ?? \"?\"));\n } catch { /* fall through */ }\n }\n return name.replace(/_/g, \" \");\n}\n","/**\n * System prompt base and config formatter.\n */\n\nexport const SYSTEM_PROMPT_BASE = `You are a corporate governance assistant for TheCorporation, an agentic corporate governance platform.\n\n## Context\n{context}\n\n## Capabilities\nYou can perform the full range of corporate operations:\n\n**Read operations:**\n- View workspace status, entities, cap tables, documents\n- List SAFE notes, equity grants, agents\n- Check deadlines and compliance status\n\n**Write operations:**\n- Form new LLCs and corporations in any US jurisdiction\n- Issue equity (common, preferred, options, units)\n- Issue SAFE notes to investors\n- Transfer shares between holders\n- Convert entities (LLC <> Corporation)\n- Create invoices, run payroll, submit payments\n- Open bank accounts, reconcile ledgers\n- Generate contracts (NDAs, employment offers, consulting agreements)\n- File tax documents (1099-NEC, K-1, 941, W-2, estimated tax)\n- Generate signing links for documents (human-only signing)\n- Track compliance deadlines\n- Classify contractor risk (employee vs 1099)\n- Convene governance meetings and cast votes\n- Dissolve entities with full wind-down workflow\n\n## Rules\n- All monetary values are in integer cents ($1,000 = 100000).\n- Be concise and helpful.\n- **You MUST confirm with the user before calling ANY write tool.** Describe what you are about to do and wait for explicit approval. Never execute tools speculatively or \"on behalf of\" the user without their go-ahead.\n- Don't ask for info available in platform config — use the correct values automatically.\n- If only one option exists for a field, use it without asking.\n- Don't make up data — only present what the tools return.\n- If a tool returns an error, explain it simply without exposing raw error details.\n- NEVER create an agent to answer a question you can answer yourself. You are the assistant — answer questions directly using your knowledge and the read tools.\n\n## Agent Rules\n- Agents are for **delegating recurring corporate operations tasks** that the user explicitly requests — e.g. \"process incoming invoices\", \"monitor compliance deadlines\", \"handle payroll every two weeks\".\n- Agents are NOT for research, answering questions, or one-off lookups. If the user asks a question, YOU answer it.\n- NEVER proactively suggest or create an agent unless the user specifically asks for one.\n- Agent tools require a paid plan.\n\n## Entity Formation Rules\n- When forming an entity, you MUST ask about all founding members and their ownership allocations BEFORE calling the form_entity tool.\n- For LLCs, ownership percentages must total 100%.\n\n## Document Signing Rules\n- You CANNOT sign documents on behalf of users. Signing is a human action.\n- Use \\`get_signing_link\\` to generate a signing URL for a document.\n- Present the signing link so users can open it and sign themselves.\n- NEVER attempt to sign, execute, or complete signature actions automatically.\n- The \\`get_signing_link\\` tool does NOT sign anything — it only returns a URL.\n\n## User Journey\nAfter completing any action, ALWAYS present the logical next step(s) as a\nnumbered list. The user should never wonder \"what now?\" — guide them forward.\n\nAfter entity formation:\n1. The \\`form_entity\\` response includes a \\`documents\\` array with document IDs. These documents are created immediately — they are NEVER \"still being generated\" or delayed.\n2. Immediately call \\`get_signing_link\\` for each document ID in the response to get signing URLs.\n3. Present the signing links to the user right away. Do NOT tell the user to \"check back later\" or that documents are \"being prepared\" — they already exist.\n4. Then: \"Documents signed! Next: apply for an EIN, open a bank account, or issue equity.\"\n\nAfter document generation:\n1. Present signing links immediately — don't wait for the user to ask.\n2. Use the document IDs from the tool response — do NOT call \\`list_documents\\` to re-fetch them.\n\nAfter signing:\n1. \"Documents are signed! Next: file for EIN, open a bank account, or add team members.\"\n\nAfter equity issuance:\n1. \"Equity issued! Next: generate the stock certificate for signing, or issue more grants.\"\n\nGeneral pattern:\n- Always end with 1-2 concrete next actions the user can take.\n- Phrase them as questions or suggestions: \"Would you like to [next step]?\"\n- If there are signing obligations, proactively generate and present the signing links.\n- Never just say \"done\" — always show what comes next.\n\nAfter major actions, use update_checklist to track progress. Use markdown checkbox\nformat (- [x] / - [ ]). Call get_checklist first to see current state, then\nupdate_checklist with checked-off items. This helps users see where they are.\n\n{extra_sections}`;\n\ninterface ConfigItem {\n value: string;\n label?: string;\n}\n\nexport function formatConfigSection(cfgData: Record<string, unknown>): string {\n const lines: string[] = [];\n\n const entityTypes = cfgData.entity_types as ConfigItem[] | undefined;\n if (entityTypes?.length) {\n const vals = entityTypes.map((t) => `\"${t.value}\"`).join(\", \");\n lines.push(`Entity types: ${vals}`);\n }\n\n const jurisdictions = cfgData.jurisdictions as Record<string, ConfigItem[]> | undefined;\n if (jurisdictions) {\n for (const [etype, jurs] of Object.entries(jurisdictions)) {\n const jurVals = jurs.map((j) => `${j.label} (${j.value})`).join(\", \");\n lines.push(`Jurisdictions for ${etype}: ${jurVals}`);\n }\n }\n\n const invTypes = cfgData.investor_types as ConfigItem[] | undefined;\n if (invTypes?.length) {\n const vals = invTypes.map((t) => `\"${t.value}\"`).join(\", \");\n lines.push(`Investor types: ${vals}`);\n }\n\n const workers = cfgData.worker_classifications as ConfigItem[] | undefined;\n if (workers?.length) {\n const vals = workers.map((t) => `\"${t.value}\"`).join(\", \");\n lines.push(`Worker classifications: ${vals}`);\n }\n\n const vesting = cfgData.vesting_schedules as ConfigItem[] | undefined;\n if (vesting?.length) {\n const vals = vesting.map((t) => `${t.label} (${t.value})`).join(\", \");\n lines.push(`Vesting schedules: ${vals}`);\n }\n\n const safeTypes = cfgData.safe_types as ConfigItem[] | undefined;\n if (safeTypes?.length) {\n const vals = safeTypes.map((t) => `\"${t.value}\"`).join(\", \");\n lines.push(`SAFE types: ${vals}`);\n }\n\n const compTypes = cfgData.compensation_types as ConfigItem[] | undefined;\n if (compTypes?.length) {\n const vals = compTypes.map((t) => `${t.label} (${t.value})`).join(\", \");\n lines.push(`Compensation types: ${vals}`);\n }\n\n const bodyTypes = cfgData.governance_body_types as ConfigItem[] | undefined;\n if (bodyTypes?.length) {\n const vals = bodyTypes.map((t) => `\"${t.value}\"`).join(\", \");\n lines.push(`Governance body types: ${vals}`);\n }\n\n const quorum = cfgData.quorum_rules as ConfigItem[] | undefined;\n if (quorum?.length) {\n const vals = quorum.map((t) => `\"${t.value}\"`).join(\", \");\n lines.push(`Quorum rules: ${vals}`);\n }\n\n const voting = cfgData.voting_methods as ConfigItem[] | undefined;\n if (voting?.length) {\n const vals = voting.map((t) => `${t.label} (${t.value})`).join(\", \");\n lines.push(`Voting methods: ${vals}`);\n }\n\n if (!lines.length) return \"\";\n\n const configYaml = lines.map((line) => `- ${line}`).join(\"\\n\");\n return (\n \"\\n## Platform Configuration\\n\" +\n \"The following are the ONLY valid values supported by this platform. \" +\n \"Do not offer or accept values outside these lists.\\n\\n\" +\n configYaml + \"\\n\"\n );\n}\n","/**\n * Tool registry and classification helpers.\n * Re-exports from existing modules + builds a registry from generated defs.\n */\n\nimport { GENERATED_TOOL_DEFINITIONS } from \"./tool-defs.generated.js\";\n\nexport { GENERATED_TOOL_DEFINITIONS } from \"./tool-defs.generated.js\";\nexport { isWriteTool } from \"./tools.js\";\nexport { describeToolCall } from \"./tool-descriptions.js\";\n\ninterface ToolFunction {\n name: string;\n description: string;\n parameters: Record<string, unknown>;\n}\n\ninterface ToolDef {\n type: string;\n function: ToolFunction;\n}\n\n/** Registry: tool name → function metadata (description + parameters). */\nexport const TOOL_REGISTRY: Record<string, ToolFunction> = {};\n\nfor (const td of GENERATED_TOOL_DEFINITIONS as unknown as ToolDef[]) {\n TOOL_REGISTRY[td.function.name] = td.function;\n}\n\nexport const READ_ONLY_TOOLS = new Set([\n \"get_workspace_status\", \"list_entities\", \"get_cap_table\", \"list_documents\",\n \"list_safe_notes\", \"list_agents\", \"get_checklist\", \"get_document_link\",\n \"get_signing_link\", \"list_obligations\", \"get_billing_status\",\n]);\n"],"mappings":"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","names":["READ_ONLY_TOOLS"]}
|
package/package.json
ADDED
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "@thecorporation/corp-tools",
|
|
3
|
+
"version": "0.1.0",
|
|
4
|
+
"description": "Shared corporate tool handlers, API client, and types",
|
|
5
|
+
"type": "module",
|
|
6
|
+
"main": "./dist/index.js",
|
|
7
|
+
"types": "./dist/index.d.ts",
|
|
8
|
+
"exports": {
|
|
9
|
+
".": {
|
|
10
|
+
"import": "./dist/index.js",
|
|
11
|
+
"types": "./dist/index.d.ts"
|
|
12
|
+
}
|
|
13
|
+
},
|
|
14
|
+
"files": [
|
|
15
|
+
"dist/"
|
|
16
|
+
],
|
|
17
|
+
"scripts": {
|
|
18
|
+
"build": "tsup",
|
|
19
|
+
"dev": "tsup --watch"
|
|
20
|
+
},
|
|
21
|
+
"devDependencies": {
|
|
22
|
+
"tsup": "^8.4.0",
|
|
23
|
+
"typescript": "^5.8.0",
|
|
24
|
+
"@types/node": "^22.0.0"
|
|
25
|
+
},
|
|
26
|
+
"publishConfig": {
|
|
27
|
+
"access": "public"
|
|
28
|
+
},
|
|
29
|
+
"engines": {
|
|
30
|
+
"node": ">=20"
|
|
31
|
+
},
|
|
32
|
+
"license": "MIT",
|
|
33
|
+
"repository": {
|
|
34
|
+
"type": "git",
|
|
35
|
+
"url": "https://github.com/thecorporationai/thecorporation-mono.git",
|
|
36
|
+
"directory": "packages/corp-tools"
|
|
37
|
+
}
|
|
38
|
+
}
|