costhawk 1.5.17 → 1.5.19

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/README.md CHANGED
@@ -167,10 +167,13 @@ COSTHAWK_GIT_SHA=$(git rev-parse --short HEAD) npm run build
167
167
 
168
168
  | Tool | Description |
169
169
  |------|-------------|
170
+ | `costhawk_get_company_brain_onboarding` | Get the workspace Company Brain destination and per-project sharing policies before writing learnings |
170
171
  | `costhawk_get_usage_summary` | Get usage and costs over a time period (by provider/model) |
171
172
  | `costhawk_get_usage_by_tag` | Get usage grouped by attribution fields and custom metadata (`project`, `feature`, `team`, `environment`, `user_id`, etc.) |
172
173
  | `costhawk_detect_anomalies` | Check for cost anomalies and unusual usage patterns |
173
174
 
175
+ `costhawk_get_company_brain_onboarding` is the policy gate for Company Brain writes. Private projects must not submit shared learnings. Project memory projects can keep local/project-scoped memory. Company Brain projects can submit allowed entry types using the configured review mode.
176
+
174
177
  `costhawk_get_usage_by_tag` has two data sources:
175
178
  - Standard attribution fields like `feature`, `project`, `team`, and `environment` can come from wrapped-key or scoped API key attribution.
176
179
  - Arbitrary custom tag keys only appear when you send request metadata through the proxy, such as `costhawk_metadata.feature` or `costhawk_metadata.user_id`.
@@ -271,10 +274,17 @@ The cache read savings are significant - CostHawk tracks all 4 types to give you
271
274
  | `--tools` | Print the registered tool names and exit |
272
275
  | `--self-test` | Print version + tool list + local env checks and exit |
273
276
  | `--what-we-read` | Print local directories and sample files read by the MCP |
277
+ | `brain status` | Show Company Brain sharing policy for the current repo/workspace |
274
278
  | `--setup` | Configure Claude Code, Codex CLI, and Gemini CLI MCP settings |
275
279
  | `--codex` / `--no-codex` | Include or skip Codex CLI config at `~/.codex/config.toml` |
276
280
  | `--opencode` / `--no-opencode` | Include or skip OpenCode config |
277
281
 
282
+ Company Brain CLI example:
283
+
284
+ ```bash
285
+ costhawk brain status --org-slug acme --git-repo github.com/acme/app
286
+ ```
287
+
278
288
  ## Privacy & Trust
279
289
 
280
290
  CostHawk’s MCP server is designed to be **local-first** and transparent:
@@ -1,2 +1,2 @@
1
- export declare const BUILD_COMMIT_SHA = "7a15693";
1
+ export declare const BUILD_COMMIT_SHA = "6547cd3";
2
2
  //# sourceMappingURL=build-info.d.ts.map
@@ -1,3 +1,3 @@
1
1
  // Auto-generated during release builds. Values may be empty in dev.
2
- export const BUILD_COMMIT_SHA = "7a15693";
2
+ export const BUILD_COMMIT_SHA = "6547cd3";
3
3
  //# sourceMappingURL=build-info.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"codex-parser.d.ts","sourceRoot":"","sources":["../src/codex-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AAqPD,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,qBAAqB,CAAC,WAAW,GAAE,MAAW,GAAG,gBAAgB,EAAE,CA+BlF;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;CAAE,GAC/C,yBAAyB,GAAG,IAAI,CA+KlC;AAED,wBAAgB,6BAA6B,CAC3C,WAAW,GAAE,MAAW,EACxB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;CAAE,GAC/C,yBAAyB,EAAE,CAY7B"}
1
+ {"version":3,"file":"codex-parser.d.ts","sourceRoot":"","sources":["../src/codex-parser.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAOH,MAAM,WAAW,UAAU;IACzB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,eAAe,EAAE,MAAM,CAAC;CACzB;AAED,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,UAAU,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAA0B,SAAQ,iBAAiB;IAClE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,UAAU,CAAC,CAAC;IACvC,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,0BAA0B,CAAC,EAAE,MAAM,CAAC;CACrC;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,IAAI,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;CACd;AA8QD,wBAAgB,mBAAmB,IAAI,MAAM,CAI5C;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,qBAAqB,CAAC,WAAW,GAAE,MAAW,GAAG,gBAAgB,EAAE,CA+BlF;AAED,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;CAAE,GAC/C,yBAAyB,GAAG,IAAI,CA8KlC;AAED,wBAAgB,6BAA6B,CAC3C,WAAW,GAAE,MAAW,EACxB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,IAAI,CAAC;IAAC,QAAQ,CAAC,EAAE,IAAI,CAAA;CAAE,GAC/C,yBAAyB,EAAE,CAY7B"}
@@ -71,23 +71,36 @@ function addActiveGap(previous, current) {
71
71
  }
72
72
  function normalizeTotals(totals) {
73
73
  const input = totals?.input_tokens ??
74
- totals?.inputTokens ??
75
74
  totals?.prompt_tokens ??
76
- 0;
77
- const output = totals?.output_tokens ??
78
- totals?.outputTokens ??
79
- totals?.completion_tokens ??
75
+ totals?.inputTokens ??
80
76
  0;
81
77
  const cachedInput = totals?.cached_input_tokens ??
82
- totals?.cacheReadTokens ??
78
+ totals?.cache_read_input_tokens ??
79
+ totals?.input_cached_tokens ??
80
+ totals?.input_tokens_details?.cached_tokens ??
81
+ totals?.prompt_tokens_details?.cached_tokens ??
83
82
  totals?.cached_tokens ??
83
+ totals?.cacheReadTokens ??
84
84
  0;
85
+ const inputIncludesCache = totals?.input_tokens !== undefined ||
86
+ totals?.prompt_tokens !== undefined ||
87
+ totals?.cached_input_tokens !== undefined ||
88
+ totals?.cache_read_input_tokens !== undefined ||
89
+ totals?.input_cached_tokens !== undefined ||
90
+ totals?.input_tokens_details?.cached_tokens !== undefined ||
91
+ totals?.prompt_tokens_details?.cached_tokens !== undefined ||
92
+ totals?.cached_tokens !== undefined;
85
93
  const reasoningOutput = totals?.reasoning_output_tokens ??
94
+ totals?.output_tokens_details?.reasoning_tokens ??
86
95
  totals?.reasoningTokens ??
87
96
  totals?.reasoning_tokens ??
88
97
  0;
98
+ const output = totals?.output_tokens ??
99
+ totals?.outputTokens ??
100
+ totals?.completion_tokens ??
101
+ reasoningOutput;
89
102
  return {
90
- input_tokens: Math.max(0, input),
103
+ input_tokens: Math.max(0, inputIncludesCache ? input - cachedInput : input),
91
104
  output_tokens: Math.max(0, output),
92
105
  cached_input_tokens: Math.max(0, cachedInput),
93
106
  reasoning_output_tokens: Math.max(0, reasoningOutput),
@@ -288,13 +301,12 @@ export function parseCodexSessionDetailed(filePath, options) {
288
301
  lastTotals = deltaResult.totals;
289
302
  const deltaTotal = deltaResult.delta.input_tokens +
290
303
  deltaResult.delta.output_tokens +
291
- deltaResult.delta.cached_input_tokens +
292
- deltaResult.delta.reasoning_output_tokens;
304
+ deltaResult.delta.cached_input_tokens;
293
305
  if (deltaTotal === 0)
294
306
  continue;
295
307
  const usageTokens = {
296
308
  inputTokens: deltaResult.delta.input_tokens,
297
- outputTokens: deltaResult.delta.output_tokens + deltaResult.delta.reasoning_output_tokens,
309
+ outputTokens: deltaResult.delta.output_tokens,
298
310
  cacheCreationTokens: 0,
299
311
  cacheReadTokens: deltaResult.delta.cached_input_tokens,
300
312
  };
@@ -1 +1 @@
1
- {"version":3,"file":"codex-parser.js","sourceRoot":"","sources":["../src/codex-parser.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"codex-parser.js","sourceRoot":"","sources":["../src/codex-parser.ts"],"names":[],"mappings":"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"}
package/dist/index.js CHANGED
@@ -94,6 +94,9 @@ function extractApiErrorMessage(errorText) {
94
94
  catch {
95
95
  // Fall through to the raw response body.
96
96
  }
97
+ if (/^<!doctype html/i.test(trimmed) || /^<html/i.test(trimmed)) {
98
+ return "HTML error page returned. Check COSTHAWK_API_URL and confirm this MCP route is deployed.";
99
+ }
97
100
  return trimmed;
98
101
  }
99
102
  function formatApiErrorMessage(status, errorText) {
@@ -411,6 +414,26 @@ async function apiRequest(endpoint, options) {
411
414
  clearTimeout(timeoutId);
412
415
  }
413
416
  }
417
+ function buildCompanyBrainOnboardingEndpoint(input) {
418
+ const queryParams = new URLSearchParams();
419
+ if (input.orgId)
420
+ queryParams.set("orgId", input.orgId);
421
+ if (input.orgSlug)
422
+ queryParams.set("orgSlug", input.orgSlug);
423
+ if (input.projectId)
424
+ queryParams.set("projectId", input.projectId);
425
+ if (input.projectSlug)
426
+ queryParams.set("projectSlug", input.projectSlug);
427
+ if (input.gitRepo)
428
+ queryParams.set("gitRepo", input.gitRepo);
429
+ const query = queryParams.toString();
430
+ return query ? `/api/mcp/brain/onboarding?${query}` : "/api/mcp/brain/onboarding";
431
+ }
432
+ async function fetchCompanyBrainOnboardingState(input) {
433
+ return apiRequest(buildCompanyBrainOnboardingEndpoint(input), {
434
+ apiKey: input.apiKey,
435
+ });
436
+ }
414
437
  function isModelPricingEntry(value) {
415
438
  if (!value || typeof value !== "object")
416
439
  return false;
@@ -731,6 +754,31 @@ function getArgValue(args, flag) {
731
754
  }
732
755
  return undefined;
733
756
  }
757
+ function normalizeGitRemoteForProject(rawRemote) {
758
+ const trimmed = rawRemote.trim();
759
+ if (!trimmed)
760
+ return null;
761
+ const sshMatch = trimmed.match(/^git@([^:]+):(.+?)(?:\.git)?$/);
762
+ if (sshMatch) {
763
+ return `${sshMatch[1]}/${sshMatch[2].replace(/\.git$/, "")}`;
764
+ }
765
+ try {
766
+ const parsed = new URL(trimmed);
767
+ return `${parsed.hostname}${parsed.pathname.replace(/^\/+/, "").replace(/\.git$/, "")}`;
768
+ }
769
+ catch {
770
+ return trimmed.replace(/\.git$/, "");
771
+ }
772
+ }
773
+ function detectGitRepoFromCurrentDirectory() {
774
+ const result = spawnSync("git", ["config", "--get", "remote.origin.url"], {
775
+ encoding: "utf8",
776
+ stdio: ["ignore", "pipe", "ignore"],
777
+ });
778
+ if (result.status !== 0 || typeof result.stdout !== "string")
779
+ return undefined;
780
+ return normalizeGitRemoteForProject(result.stdout) ?? undefined;
781
+ }
734
782
  function parseBooleanFlag(args, flag) {
735
783
  const negated = `--no-${flag}`;
736
784
  if (args.includes(negated))
@@ -1698,6 +1746,84 @@ async function runLoginCommand(args) {
1698
1746
  await performLoginSync(apiKey);
1699
1747
  }
1700
1748
  // Markdown formatters
1749
+ function formatPolicyMode(mode) {
1750
+ switch (mode) {
1751
+ case "company_brain":
1752
+ return "Company Brain";
1753
+ case "project_memory":
1754
+ return "Project memory";
1755
+ case "private":
1756
+ default:
1757
+ return "Private";
1758
+ }
1759
+ }
1760
+ function formatReviewMode(mode) {
1761
+ switch (mode) {
1762
+ case "auto_all":
1763
+ return "Auto approve all";
1764
+ case "auto_low_risk":
1765
+ return "Auto approve low risk";
1766
+ case "manual":
1767
+ default:
1768
+ return "Manual review";
1769
+ }
1770
+ }
1771
+ function formatCompanyBrainOnboardingMarkdown(data) {
1772
+ let output = `# Company Brain Project Policies\n\n`;
1773
+ output += `**Organization:** ${data.organization.name} (${data.organization.slug})\n`;
1774
+ output += `**Company Brain:** ${data.companyBrain.name}\n`;
1775
+ output += `**Raw content stored by default:** ${data.companyBrain.rawContentStorage ? "yes" : "no"}\n\n`;
1776
+ output += `## Summary\n`;
1777
+ output += `| Metric | Value |\n|--------|-------|\n`;
1778
+ output += `| Active projects | ${formatNumber(data.summary.totalProjects)} |\n`;
1779
+ output += `| Explicit policies | ${formatNumber(data.summary.explicitPolicies)} |\n`;
1780
+ output += `| Private | ${formatNumber(data.summary.privateProjects)} |\n`;
1781
+ output += `| Project memory | ${formatNumber(data.summary.projectMemoryProjects)} |\n`;
1782
+ output += `| Company Brain | ${formatNumber(data.summary.companyBrainProjects)} |\n`;
1783
+ output += `| Needs review | ${formatNumber(data.summary.unreviewedProjects)} |\n`;
1784
+ if (data.summary.matchedProjects !== null) {
1785
+ output += `| Current repo matches | ${formatNumber(data.summary.matchedProjects)} |\n`;
1786
+ }
1787
+ output += `\n## Project Policies\n`;
1788
+ if (data.projects.length === 0) {
1789
+ output += `No active projects found for this organization.\n\n`;
1790
+ }
1791
+ else {
1792
+ output += `| Project | Policy | Review | Sensitivity | Writes | Entries | Match |\n`;
1793
+ output += `|---------|--------|--------|-------------|--------|---------|-------|\n`;
1794
+ for (const project of data.projects) {
1795
+ const policy = project.policy;
1796
+ const writes = policy.canWriteCompanyBrain
1797
+ ? "company brain"
1798
+ : policy.canWriteProjectMemory
1799
+ ? "project memory"
1800
+ : "blocked";
1801
+ const match = project.currentProjectMatch === null ? "" : project.currentProjectMatch ? "current" : "";
1802
+ output += `| ${project.name} | ${formatPolicyMode(policy.mode)}${policy.isExplicit ? "" : " (default)"} | ${formatReviewMode(policy.reviewMode)} | ${policy.defaultSensitivity} | ${writes} | ${policy.allowedEntryTypes.join(", ")} | ${match} |\n`;
1803
+ }
1804
+ }
1805
+ const currentMatches = data.projects.filter((project) => project.currentProjectMatch);
1806
+ if (currentMatches.length > 0) {
1807
+ output += `\n## Current Project\n`;
1808
+ for (const project of currentMatches) {
1809
+ output += `- ${project.name}: ${formatPolicyMode(project.policy.mode)}. `;
1810
+ if (project.policy.canWriteCompanyBrain) {
1811
+ output += `Agents may submit allowed entries to the Company Brain with ${formatReviewMode(project.policy.reviewMode).toLowerCase()}.\n`;
1812
+ }
1813
+ else if (project.policy.canWriteProjectMemory) {
1814
+ output += `Agents may write project memory, but not shared Company Brain entries.\n`;
1815
+ }
1816
+ else {
1817
+ output += `Agents must not write shared learnings from this project.\n`;
1818
+ }
1819
+ }
1820
+ }
1821
+ output += `\n## Next Actions\n`;
1822
+ for (const action of data.nextActions) {
1823
+ output += `- ${action}\n`;
1824
+ }
1825
+ return truncateResponse(output);
1826
+ }
1701
1827
  function formatUsageSummaryMarkdown(data) {
1702
1828
  let output = `# API Usage Summary\n\n`;
1703
1829
  output += `This report covers CostHawk-tracked API requests from wrapped/proxied keys and provider-ingested API usage. It does not include local Claude Code, Codex, or Cursor sessions; use the local usage, sync, ROI, or savings tools for those.\n\n`;
@@ -3066,7 +3192,57 @@ const GetProxyGuideSchema = {
3066
3192
  const ListIntegrationsSchema = {
3067
3193
  apiKey: z.string().optional().describe("CostHawk API key (falls back to COSTHAWK_API_KEY env var)"),
3068
3194
  };
3195
+ const CompanyBrainOnboardingSchema = {
3196
+ apiKey: z.string().optional().describe("CostHawk API key (falls back to COSTHAWK_API_KEY env var)"),
3197
+ orgId: z.string().optional().describe("Organization ID to inspect. Required only when the API key has access to multiple organizations."),
3198
+ orgSlug: z.string().optional().describe("Organization slug to inspect. Required only when the API key has access to multiple organizations."),
3199
+ projectId: z.string().optional().describe("Optional project ID to mark as the current project in the response."),
3200
+ projectSlug: z.string().optional().describe("Optional project slug to mark as the current project in the response."),
3201
+ gitRepo: z
3202
+ .string()
3203
+ .optional()
3204
+ .describe("Optional git repository identifier for the current local project, such as github.com/acme/app or acme/app."),
3205
+ format: z.enum(["markdown", "json"]).optional().default("markdown").describe("Response format"),
3206
+ };
3069
3207
  // Register tools
3208
+ server.registerTool("costhawk_get_company_brain_onboarding", {
3209
+ description: `Get the Company Brain onboarding state for the authenticated workspace. Use this before proposing or writing any Company Brain or project-memory entry. It returns the organization brain destination, active projects, each project's sharing policy (Private, Project memory, or Company Brain), review mode, sensitivity, allowed entry types, and whether the current repo/project is allowed to write. Agents must treat Private projects as a hard stop for shared brain writes.`,
3210
+ inputSchema: CompanyBrainOnboardingSchema,
3211
+ annotations: READ_ONLY_ANNOTATIONS,
3212
+ }, async (args, _extra) => {
3213
+ const apiKey = getApiKey(args.apiKey);
3214
+ if (!apiKey) {
3215
+ return {
3216
+ content: [
3217
+ {
3218
+ type: "text",
3219
+ text: "Error: No API key provided. Run `costhawk --login` or set COSTHAWK_API_KEY in your MCP configuration.",
3220
+ },
3221
+ ],
3222
+ isError: true,
3223
+ };
3224
+ }
3225
+ try {
3226
+ const data = await fetchCompanyBrainOnboardingState({
3227
+ apiKey,
3228
+ orgId: args.orgId,
3229
+ orgSlug: args.orgSlug,
3230
+ projectId: args.projectId,
3231
+ projectSlug: args.projectSlug,
3232
+ gitRepo: args.gitRepo,
3233
+ });
3234
+ const text = args.format === "json" ? JSON.stringify(data, null, 2) : formatCompanyBrainOnboardingMarkdown(data);
3235
+ return {
3236
+ content: [{ type: "text", text }],
3237
+ };
3238
+ }
3239
+ catch (error) {
3240
+ return {
3241
+ content: [{ type: "text", text: `Error: ${error instanceof Error ? error.message : "Unknown error"}` }],
3242
+ isError: true,
3243
+ };
3244
+ }
3245
+ });
3070
3246
  server.registerTool("costhawk_get_usage_summary", {
3071
3247
  description: `Get a summary of CostHawk-tracked API request usage over a time period. This covers wrapped/proxied keys and provider-ingested API usage stored as API requests. It does NOT include local Claude Code, Codex, or Cursor sessions; for local AI-tool token usage, use costhawk_get_local_claude_code_usage, costhawk_get_local_codex_usage, costhawk_get_local_cursor_usage, costhawk_get_local_roi_report, or costhawk_get_savings after syncing. Returns total API costs, API calls, and API token usage broken down by provider and model. Supports preset periods (last_24h, today, yesterday, last_7d, last_30d) or custom date ranges.\n\nIMPORTANT: Always display the COMPLETE output in your response using markdown tables. Render every section (Overview, By Provider, By Model). Never summarize or truncate. If this report is zero, do not say the user's local AI-tool usage is zero; explain that local Claude Code, Codex, and Cursor usage is reported separately.`,
3072
3248
  inputSchema: UsageSummarySchema,
@@ -4870,8 +5046,70 @@ function stopAutoSync() {
4870
5046
  console.error("[Auto-sync] Stopped");
4871
5047
  }
4872
5048
  }
5049
+ async function runBrainCommand(args) {
5050
+ const hasExplicitSubcommand = Boolean(args[1] && !args[1].startsWith("-"));
5051
+ const subcommand = hasExplicitSubcommand ? args[1] : "status";
5052
+ const commandArgs = args.slice(hasExplicitSubcommand ? 2 : 1);
5053
+ if (subcommand === "help" || commandArgs.includes("--help") || commandArgs.includes("-h")) {
5054
+ console.log(`CostHawk Company Brain
5055
+
5056
+ USAGE:
5057
+ costhawk brain status [OPTIONS]
5058
+
5059
+ OPTIONS:
5060
+ --org-id Organization ID
5061
+ --org-slug Organization slug
5062
+ --project-id Current project ID
5063
+ --project-slug Current project slug
5064
+ --git-repo Current git repository identifier
5065
+ --no-detect-git Do not auto-detect git remote.origin.url
5066
+ --json Print raw JSON
5067
+ --api-key Provide API key non-interactively
5068
+
5069
+ EXAMPLES:
5070
+ costhawk brain status
5071
+ costhawk brain status --org-slug acme --git-repo github.com/acme/app
5072
+ `);
5073
+ process.exit(0);
5074
+ }
5075
+ if (subcommand !== "status" && subcommand !== "onboarding") {
5076
+ console.error(`Error: unknown brain command "${subcommand}". Use "costhawk brain status".`);
5077
+ process.exit(1);
5078
+ }
5079
+ const apiKey = getApiKey(getArgValue(commandArgs, "--api-key"));
5080
+ if (!apiKey) {
5081
+ console.error("Error: No API key provided. Run `costhawk --login` or set COSTHAWK_API_KEY.");
5082
+ process.exit(1);
5083
+ }
5084
+ const explicitGitRepo = getArgValue(commandArgs, "--git-repo");
5085
+ const gitRepo = explicitGitRepo ?? (commandArgs.includes("--no-detect-git") ? undefined : detectGitRepoFromCurrentDirectory());
5086
+ try {
5087
+ const data = await fetchCompanyBrainOnboardingState({
5088
+ apiKey,
5089
+ orgId: getArgValue(commandArgs, "--org-id"),
5090
+ orgSlug: getArgValue(commandArgs, "--org-slug"),
5091
+ projectId: getArgValue(commandArgs, "--project-id"),
5092
+ projectSlug: getArgValue(commandArgs, "--project-slug"),
5093
+ gitRepo,
5094
+ });
5095
+ if (commandArgs.includes("--json")) {
5096
+ console.log(JSON.stringify(data, null, 2));
5097
+ }
5098
+ else {
5099
+ console.log(formatCompanyBrainOnboardingMarkdown(data));
5100
+ }
5101
+ process.exit(0);
5102
+ }
5103
+ catch (error) {
5104
+ console.error(`Error: ${error instanceof Error ? error.message : "Unknown error"}`);
5105
+ process.exit(1);
5106
+ }
5107
+ }
4873
5108
  async function handleCliFlags() {
4874
5109
  const args = process.argv.slice(2);
5110
+ if (args[0] === "brain") {
5111
+ await runBrainCommand(args);
5112
+ }
4875
5113
  if (args.includes("--version") || args.includes("-v")) {
4876
5114
  console.log(formatVersion());
4877
5115
  process.exit(0);
@@ -4888,6 +5126,7 @@ OPTIONS:
4888
5126
  --tools List all available MCP tools
4889
5127
  --self-test Output diagnostic JSON for debugging
4890
5128
  --what-we-read Show local directories and sample files the MCP reads
5129
+ brain status Show Company Brain project sharing policy for this workspace/repo
4891
5130
  --login Browser/device login (recommended)
4892
5131
  --no-setup With --login, skip writing MCP config files
4893
5132
  --open With --login, force opening the browser