- ui/src/App.tsx: Create/first company titles and descriptions → VOCAB.company
- ui/src/components/OnboardingWizard.tsx: 3 company display strings → VOCAB
- ui/src/components/Sidebar.tsx: 'Select company' fallback → VOCAB
- ui/src/pages/CliAuth.tsx: 'Requested company' label → VOCAB
- ui/src/pages/AgentDetail.tsx: company library string → VOCAB
- server/src/services/company-portability.ts: 'Imported Company' x2 → 'Imported Workspace'
- cli/src/commands/client/{issue,approval,agent,dashboard,activity}.ts: option descriptions → VOCAB
- cli/src/commands/worktree.ts: error message and option description → VOCAB
- server/src/index.ts: comment cleanup (actual value already 'Owner')
- server/src/services/company-export-readme.ts: comment cleanup (value already 'Project Manager')
72 lines
2.3 KiB
TypeScript
72 lines
2.3 KiB
TypeScript
import { Command } from "commander";
|
|
import { VOCAB } from "@paperclipai/branding";
|
|
import type { ActivityEvent } from "@paperclipai/shared";
|
|
import {
|
|
addCommonClientOptions,
|
|
formatInlineRecord,
|
|
handleCommandError,
|
|
printOutput,
|
|
resolveCommandContext,
|
|
type BaseClientOptions,
|
|
} from "./common.js";
|
|
|
|
interface ActivityListOptions extends BaseClientOptions {
|
|
companyId?: string;
|
|
agentId?: string;
|
|
entityType?: string;
|
|
entityId?: string;
|
|
}
|
|
|
|
export function registerActivityCommands(program: Command): void {
|
|
const activity = program.command("activity").description("Activity log operations");
|
|
|
|
addCommonClientOptions(
|
|
activity
|
|
.command("list")
|
|
.description(`List ${VOCAB.company.toLowerCase()} activity log entries`)
|
|
.requiredOption("-C, --company-id <id>", `${VOCAB.company} ID`)
|
|
.option("--agent-id <id>", "Filter by agent ID")
|
|
.option("--entity-type <type>", "Filter by entity type")
|
|
.option("--entity-id <id>", "Filter by entity ID")
|
|
.action(async (opts: ActivityListOptions) => {
|
|
try {
|
|
const ctx = resolveCommandContext(opts, { requireCompany: true });
|
|
const params = new URLSearchParams();
|
|
if (opts.agentId) params.set("agentId", opts.agentId);
|
|
if (opts.entityType) params.set("entityType", opts.entityType);
|
|
if (opts.entityId) params.set("entityId", opts.entityId);
|
|
|
|
const query = params.toString();
|
|
const path = `/api/companies/${ctx.companyId}/activity${query ? `?${query}` : ""}`;
|
|
const rows = (await ctx.api.get<ActivityEvent[]>(path)) ?? [];
|
|
|
|
if (ctx.json) {
|
|
printOutput(rows, { json: true });
|
|
return;
|
|
}
|
|
|
|
if (rows.length === 0) {
|
|
printOutput([], { json: false });
|
|
return;
|
|
}
|
|
|
|
for (const row of rows) {
|
|
console.log(
|
|
formatInlineRecord({
|
|
id: row.id,
|
|
action: row.action,
|
|
actorType: row.actorType,
|
|
actorId: row.actorId,
|
|
entityType: row.entityType,
|
|
entityId: row.entityId,
|
|
createdAt: String(row.createdAt),
|
|
}),
|
|
);
|
|
}
|
|
} catch (err) {
|
|
handleCommandError(err);
|
|
}
|
|
}),
|
|
{ includeCompany: false },
|
|
);
|
|
}
|