refactor: rename packages to @paperclipai and CLI binary to paperclipai

Rename all workspace packages from @paperclip/* to @paperclipai/* and
the CLI binary from `paperclip` to `paperclipai` in preparation for
npm publishing. Bump CLI version to 0.1.0 and add package metadata
(description, keywords, license, repository, files). Update all
imports, documentation, user-facing messages, and tests accordingly.

Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
This commit is contained in:
Dotta
2026-03-03 08:45:26 -06:00
parent 5a5549fc54
commit f60c1001ec
196 changed files with 501 additions and 490 deletions

View File

@@ -1,11 +1,11 @@
import { and, eq, inArray, sql } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import {
companyMemberships,
instanceUserRoles,
principalPermissionGrants,
} from "@paperclip/db";
import type { PermissionKey, PrincipalType } from "@paperclip/shared";
} from "@paperclipai/db";
import type { PermissionKey, PrincipalType } from "@paperclipai/shared";
type MembershipRow = typeof companyMemberships.$inferSelect;
type GrantInput = {

View File

@@ -1,5 +1,5 @@
import type { Db } from "@paperclip/db";
import { activityLog } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import { activityLog } from "@paperclipai/db";
import { publishLiveEvent } from "./live-events.js";
import { sanitizeRecord } from "../redaction.js";

View File

@@ -1,6 +1,6 @@
import { and, desc, eq, isNull, or, sql } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import { activityLog, heartbeatRuns, issues } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import { activityLog, heartbeatRuns, issues } from "@paperclipai/db";
export interface ActivityFilters {
companyId: string;

View File

@@ -1,6 +1,6 @@
import { createHash, randomBytes } from "node:crypto";
import { and, desc, eq, inArray } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import {
agents,
agentConfigRevisions,
@@ -10,8 +10,8 @@ import {
agentWakeupRequests,
heartbeatRunEvents,
heartbeatRuns,
} from "@paperclip/db";
import { isUuidLike, normalizeAgentUrlKey } from "@paperclip/shared";
} from "@paperclipai/db";
import { isUuidLike, normalizeAgentUrlKey } from "@paperclipai/shared";
import { conflict, notFound, unprocessable } from "../errors.js";
import { normalizeAgentPermissions } from "./agent-permissions.js";
import { REDACTED_EVENT_VALUE, sanitizeRecord } from "../redaction.js";

View File

@@ -1,6 +1,6 @@
import { and, asc, eq } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import { approvalComments, approvals } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import { approvalComments, approvals } from "@paperclipai/db";
import { notFound, unprocessable } from "../errors.js";
import { agentService } from "./agents.js";

View File

@@ -1,6 +1,6 @@
import { eq } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import { assets } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import { assets } from "@paperclipai/db";
export function assetService(db: Db) {
return {

View File

@@ -1,5 +1,5 @@
import { eq, count } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import {
companies,
agents,
@@ -22,7 +22,7 @@ import {
invites,
principalPermissionGrants,
companyMemberships,
} from "@paperclip/db";
} from "@paperclipai/db";
export function companyService(db: Db) {
const ISSUE_PREFIX_FALLBACK = "CMP";

View File

@@ -1,6 +1,6 @@
import { promises as fs } from "node:fs";
import path from "node:path";
import type { Db } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import type {
CompanyPortabilityAgentManifestEntry,
CompanyPortabilityCollisionStrategy,
@@ -13,8 +13,8 @@ import type {
CompanyPortabilityPreview,
CompanyPortabilityPreviewAgentPlan,
CompanyPortabilityPreviewResult,
} from "@paperclip/shared";
import { normalizeAgentUrlKey, portabilityManifestSchema } from "@paperclip/shared";
} from "@paperclipai/shared";
import { normalizeAgentUrlKey, portabilityManifestSchema } from "@paperclipai/shared";
import { notFound, unprocessable } from "../errors.js";
import { accessService } from "./access.js";
import { agentService } from "./agents.js";

View File

@@ -1,6 +1,6 @@
import { and, desc, eq, gte, isNotNull, lte, sql } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import { activityLog, agents, companies, costEvents, heartbeatRuns, issues, projects } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import { activityLog, agents, companies, costEvents, heartbeatRuns, issues, projects } from "@paperclipai/db";
import { notFound, unprocessable } from "../errors.js";
export interface CostDateRange {

View File

@@ -1,6 +1,6 @@
import { and, eq, gte, sql } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import { agents, approvals, companies, costEvents, issues } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import { agents, approvals, companies, costEvents, issues } from "@paperclipai/db";
import { notFound } from "../errors.js";
export function dashboardService(db: Db) {

View File

@@ -1,6 +1,6 @@
import { eq } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import { goals } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import { goals } from "@paperclipai/db";
export function goalService(db: Db) {
return {

View File

@@ -1,6 +1,6 @@
import fs from "node:fs/promises";
import { and, asc, desc, eq, gt, inArray, sql } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import {
agents,
agentRuntimeState,
@@ -11,7 +11,7 @@ import {
costEvents,
issues,
projectWorkspaces,
} from "@paperclip/db";
} from "@paperclipai/db";
import { conflict, notFound } from "../errors.js";
import { logger } from "../middleware/logger.js";
import { publishLiveEvent } from "./live-events.js";

View File

@@ -1,6 +1,6 @@
import { and, desc, eq, inArray } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import { approvals, issueApprovals, issues } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import { approvals, issueApprovals, issues } from "@paperclipai/db";
import { notFound, unprocessable } from "../errors.js";
import { redactEventPayload } from "../redaction.js";

View File

@@ -1,5 +1,5 @@
import { and, asc, desc, eq, inArray, isNull, or, sql } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import {
agents,
assets,
@@ -14,8 +14,8 @@ import {
labels,
projectWorkspaces,
projects,
} from "@paperclip/db";
import { extractProjectMentionIds } from "@paperclip/shared";
} from "@paperclipai/db";
import { extractProjectMentionIds } from "@paperclipai/shared";
import { conflict, notFound, unprocessable } from "../errors.js";
const ALL_ISSUE_STATUSES = ["backlog", "todo", "in_progress", "in_review", "blocked", "done", "cancelled"];

View File

@@ -1,5 +1,5 @@
import { EventEmitter } from "node:events";
import type { LiveEvent, LiveEventType } from "@paperclip/shared";
import type { LiveEvent, LiveEventType } from "@paperclipai/shared";
type LiveEventPayload = Record<string, unknown>;
type LiveEventListener = (event: LiveEvent) => void;

View File

@@ -1,6 +1,6 @@
import { and, asc, desc, eq, inArray } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import { projects, projectGoals, goals, projectWorkspaces } from "@paperclip/db";
import type { Db } from "@paperclipai/db";
import { projects, projectGoals, goals, projectWorkspaces } from "@paperclipai/db";
import {
PROJECT_COLORS,
deriveProjectUrlKey,
@@ -8,7 +8,7 @@ import {
normalizeProjectUrlKey,
type ProjectGoalRef,
type ProjectWorkspace,
} from "@paperclip/shared";
} from "@paperclipai/shared";
type ProjectRow = typeof projects.$inferSelect;
type ProjectWorkspaceRow = typeof projectWorkspaces.$inferSelect;

View File

@@ -1,8 +1,8 @@
import { and, desc, eq } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import { companySecrets, companySecretVersions } from "@paperclip/db";
import type { AgentEnvConfig, EnvBinding, SecretProvider } from "@paperclip/shared";
import { envBindingSchema } from "@paperclip/shared";
import type { Db } from "@paperclipai/db";
import { companySecrets, companySecretVersions } from "@paperclipai/db";
import type { AgentEnvConfig, EnvBinding, SecretProvider } from "@paperclipai/shared";
import { envBindingSchema } from "@paperclipai/shared";
import { conflict, notFound, unprocessable } from "../errors.js";
import { getSecretProvider, listSecretProviders } from "../secrets/provider-registry.js";

View File

@@ -1,7 +1,7 @@
import { and, desc, eq, inArray, not, sql } from "drizzle-orm";
import type { Db } from "@paperclip/db";
import { agents, approvals, heartbeatRuns } from "@paperclip/db";
import type { SidebarBadges } from "@paperclip/shared";
import type { Db } from "@paperclipai/db";
import { agents, approvals, heartbeatRuns } from "@paperclipai/db";
import type { SidebarBadges } from "@paperclipai/shared";
const ACTIONABLE_APPROVAL_STATUSES = ["pending", "revision_requested"];
const FAILED_HEARTBEAT_STATUSES = ["failed", "timed_out"];