/** * @traqr/core — Sub-App Provisioning Checklist * * Checklist data structure and helpers for monorepo sub-app init. * Drives the scan→probe→update→execute→handhold→complete lifecycle * that Claude works through when adding a new app to a Traqr monorepo. */ import type { TraqrConfig } from './config-schema.js'; import type { OrgConfig } from './config-resolver.js'; /** Status of each checklist item as Claude works through it */ export type ChecklistStatus = 'pending' | 'scanning' | 'found' | 'not-found' | 'wired' | 'user-action' | 'skipped' | 'done'; export interface SubAppChecklistItem { /** Unique identifier for this item */ id: string; /** Service category (linear, slack, memory, posthog, etc.) */ service: string; /** Current status */ status: ChecklistStatus; /** Human-readable description */ description: string; /** What was discovered during scan (team name, channel list, etc.) */ discovered?: Record; /** What needs user action (create channel, paste key, etc.) */ userAction?: string; /** MCP tools used for scanning/executing */ mcpTools?: string[]; /** Config keys this item writes to */ configKeys?: string[]; } export interface SubAppProvisioningPlan { appSlug: string; appDisplayName: string; parentConfig: TraqrConfig; items: SubAppChecklistItem[]; } export declare const REQUIRED_LINEAR_LABELS: readonly [{ readonly name: "agent-ready"; readonly color: "#27AE60"; }, { readonly name: "agent-claimed"; readonly color: "#E67E22"; }, { readonly name: "has-plan"; readonly color: "#3498DB"; }, { readonly name: "stale-pr"; readonly color: "#E74C3C"; }, { readonly name: "daemon-pr"; readonly color: "#9B59B6"; }]; /** * Build the initial checklist for a new sub-app. * Items start as 'pending'. Claude works through each one * via the scan→probe→update→execute→handhold→complete lifecycle. */ export declare function buildSubAppChecklist(parentConfig: TraqrConfig, orgConfig: OrgConfig | null, appSlug: string, appDisplayName: string): SubAppProvisioningPlan; /** * Derive expected per-app Slack channels from parent's channel naming pattern. * e.g., parent has "nk-deployments" → new app with prefix "pk" expects "pk-deployments" * Returns the full set; Claude then scans to see which actually exist. */ export declare function deriveAppChannels(parentConfig: TraqrConfig, appChannelPrefix: string): Record; /** * Derive expected per-app Linear team config from parent. * Generates suggested team key, ticket prefix, and required labels. * Claude then scans Linear to see if team already exists. */ export declare function deriveLinearTeamConfig(parentConfig: TraqrConfig, appSlug: string): { teamKey: string; ticketPrefix: string; labels: Array<{ name: string; color: string; }>; }; /** * Format the checklist for display, showing status icons for each item. */ export declare function formatChecklist(plan: SubAppProvisioningPlan): string; /** * Generate a port allocation table showing all apps across all slots. */ export declare function generatePortTable(config: TraqrConfig): string; //# sourceMappingURL=sub-app-checklist.d.ts.map