SYMBOL INDEX (1127 symbols across 157 files) FILE: .cursor/hooks/adapter.js constant MAX_STDIN (line 11) | const MAX_STDIN = 1024 * 1024; function readStdin (line 13) | function readStdin() { function getPluginRoot (line 24) | function getPluginRoot() { function transformToClaude (line 28) | function transformToClaude(cursorInput, overrides = {}) { function runExistingHook (line 49) | function runExistingHook(scriptName, stdinData) { function hookEnabled (line 63) | function hookEnabled(hookId, allowedProfiles = ['standard', 'strict']) { FILE: .opencode/index.ts constant VERSION (line 44) | const VERSION = "1.6.0" FILE: .opencode/plugins/ecc-hooks.ts type HookProfile (line 24) | type HookProfile = "minimal" | "standard" | "strict" FILE: .opencode/tools/check-coverage.ts method execute (line 29) | async execute(args, context) { type CoverageSummary (line 103) | interface CoverageSummary { type CoverageResult (line 117) | interface CoverageResult { function parseCoverageData (line 129) | function parseCoverageData(data: unknown): CoverageSummary { FILE: .opencode/tools/format-code.ts type Formatter (line 12) | type Formatter = "biome" | "prettier" | "black" | "gofmt" | "rustfmt" method execute (line 24) | async execute(args, context) { function detectFormatter (line 46) | function detectFormatter(cwd: string, ext: string): Formatter | null { function buildFormatterCommand (line 59) | function buildFormatterCommand(formatter: Formatter, filePath: string): ... FILE: .opencode/tools/git-summary.ts method execute (line 27) | async execute(args, context) { function run (line 48) | function run(command: string, cwd: string): string { FILE: .opencode/tools/lint-check.ts type Linter (line 11) | type Linter = "biome" | "eslint" | "ruff" | "pylint" | "golangci-lint" method execute (line 30) | async execute(args, context) { function detectLinter (line 46) | function detectLinter(cwd: string): Linter { function buildLintCommand (line 79) | function buildLintCommand(linter: Linter, target: string, fix: boolean):... FILE: .opencode/tools/run-tests.ts method execute (line 33) | async execute(args, context) { function detectPackageManager (line 100) | async function detectPackageManager(cwd: string): Promise { function detectTestFramework (line 117) | async function detectTestFramework(cwd: string): Promise { FILE: .opencode/tools/security-audit.ts method execute (line 32) | async execute(args, context) { type AuditCheck (line 109) | interface AuditCheck { type AuditResults (line 118) | interface AuditResults { function scanForSecrets (line 130) | async function scanForSecrets( function scanDirectory (line 172) | async function scanDirectory( function scanFile (line 195) | async function scanFile( function scanCodeSecurity (line 223) | async function scanCodeSecurity( function generateRecommendations (line 246) | function generateRecommendations(results: AuditResults): string[] { FILE: scripts/ci/catalog.js constant ROOT (line 17) | const ROOT = path.join(__dirname, '../..'); constant README_PATH (line 18) | const README_PATH = path.join(ROOT, 'README.md'); constant AGENTS_PATH (line 19) | const AGENTS_PATH = path.join(ROOT, 'AGENTS.md'); constant OUTPUT_MODE (line 21) | const OUTPUT_MODE = process.argv.includes('--md') function normalizePathSegments (line 27) | function normalizePathSegments(relativePath) { function listMatchingFiles (line 31) | function listMatchingFiles(relativeDir, matcher) { function buildCatalog (line 43) | function buildCatalog() { function readFileOrThrow (line 56) | function readFileOrThrow(filePath) { function parseReadmeExpectations (line 64) | function parseReadmeExpectations(readmeContent) { function parseAgentsDocExpectations (line 101) | function parseAgentsDocExpectations(agentsContent) { function evaluateExpectations (line 156) | function evaluateExpectations(catalog, expectations) { function formatExpectation (line 171) | function formatExpectation(expectation) { function renderText (line 176) | function renderText(result) { function renderMarkdown (line 195) | function renderMarkdown(result) { function main (line 216) | function main() { FILE: scripts/ci/validate-agents.js constant AGENTS_DIR (line 9) | const AGENTS_DIR = path.join(__dirname, '../../agents'); constant REQUIRED_FIELDS (line 10) | const REQUIRED_FIELDS = ['model', 'tools']; constant VALID_MODELS (line 11) | const VALID_MODELS = ['haiku', 'sonnet', 'opus']; function extractFrontmatter (line 13) | function extractFrontmatter(content) { function validateAgents (line 33) | function validateAgents() { FILE: scripts/ci/validate-commands.js constant ROOT_DIR (line 10) | const ROOT_DIR = path.join(__dirname, '../..'); constant COMMANDS_DIR (line 11) | const COMMANDS_DIR = path.join(ROOT_DIR, 'commands'); constant AGENTS_DIR (line 12) | const AGENTS_DIR = path.join(ROOT_DIR, 'agents'); constant SKILLS_DIR (line 13) | const SKILLS_DIR = path.join(ROOT_DIR, 'skills'); function validateCommands (line 15) | function validateCommands() { FILE: scripts/ci/validate-hooks.js constant HOOKS_FILE (line 11) | const HOOKS_FILE = path.join(__dirname, '../../hooks/hooks.json'); constant HOOKS_SCHEMA_PATH (line 12) | const HOOKS_SCHEMA_PATH = path.join(__dirname, '../../schemas/hooks.sche... constant VALID_EVENTS (line 13) | const VALID_EVENTS = [ constant VALID_HOOK_TYPES (line 33) | const VALID_HOOK_TYPES = ['command', 'http', 'prompt', 'agent']; constant EVENTS_WITHOUT_MATCHER (line 34) | const EVENTS_WITHOUT_MATCHER = new Set(['UserPromptSubmit', 'Notificatio... function isNonEmptyString (line 36) | function isNonEmptyString(value) { function isNonEmptyStringArray (line 40) | function isNonEmptyStringArray(value) { function validateHookEntry (line 50) | function validateHookEntry(hook, label) { function validateHooks (line 127) | function validateHooks() { FILE: scripts/ci/validate-install-manifests.js constant REPO_ROOT (line 10) | const REPO_ROOT = path.join(__dirname, '../..'); constant MODULES_MANIFEST_PATH (line 11) | const MODULES_MANIFEST_PATH = path.join(REPO_ROOT, 'manifests/install-mo... constant PROFILES_MANIFEST_PATH (line 12) | const PROFILES_MANIFEST_PATH = path.join(REPO_ROOT, 'manifests/install-p... constant COMPONENTS_MANIFEST_PATH (line 13) | const COMPONENTS_MANIFEST_PATH = path.join(REPO_ROOT, 'manifests/install... constant MODULES_SCHEMA_PATH (line 14) | const MODULES_SCHEMA_PATH = path.join(REPO_ROOT, 'schemas/install-module... constant PROFILES_SCHEMA_PATH (line 15) | const PROFILES_SCHEMA_PATH = path.join(REPO_ROOT, 'schemas/install-profi... constant COMPONENTS_SCHEMA_PATH (line 16) | const COMPONENTS_SCHEMA_PATH = path.join(REPO_ROOT, 'schemas/install-com... constant COMPONENT_FAMILY_PREFIXES (line 17) | const COMPONENT_FAMILY_PREFIXES = { function readJson (line 24) | function readJson(filePath, label) { function normalizeRelativePath (line 32) | function normalizeRelativePath(relativePath) { function validateSchema (line 36) | function validateSchema(ajv, schemaPath, data, label) { function validateInstallManifests (line 53) | function validateInstallManifests() { FILE: scripts/ci/validate-no-personal-paths.js constant ROOT (line 11) | const ROOT = path.join(__dirname, '../..'); constant TARGETS (line 12) | const TARGETS = [ constant BLOCK_PATTERNS (line 21) | const BLOCK_PATTERNS = [ function collectFiles (line 26) | function collectFiles(targetPath, out) { FILE: scripts/ci/validate-rules.js constant RULES_DIR (line 9) | const RULES_DIR = path.join(__dirname, '../../rules'); function collectRuleFiles (line 17) | function collectRuleFiles(dir) { function validateRules (line 45) | function validateRules() { FILE: scripts/ci/validate-skills.js constant SKILLS_DIR (line 9) | const SKILLS_DIR = path.join(__dirname, '../../skills'); function validateSkills (line 11) | function validateSkills() { FILE: scripts/claw.js constant SESSION_NAME_RE (line 16) | const SESSION_NAME_RE = /^[a-zA-Z0-9][-a-zA-Z0-9]*$/; constant DEFAULT_MODEL (line 17) | const DEFAULT_MODEL = process.env.CLAW_MODEL || 'sonnet'; constant DEFAULT_COMPACT_KEEP_TURNS (line 18) | const DEFAULT_COMPACT_KEEP_TURNS = 20; function isValidSessionName (line 20) | function isValidSessionName(name) { function getClawDir (line 24) | function getClawDir() { function getSessionPath (line 28) | function getSessionPath(name) { function listSessions (line 32) | function listSessions(dir) { function loadHistory (line 40) | function loadHistory(filePath) { function appendTurn (line 48) | function appendTurn(filePath, role, content, timestamp) { function normalizeSkillList (line 55) | function normalizeSkillList(raw) { function loadECCContext (line 61) | function loadECCContext(skillList) { function buildPrompt (line 78) | function buildPrompt(systemPrompt, history, userMessage) { function askClaude (line 86) | function askClaude(systemPrompt, history, userMessage, model) { function parseTurns (line 112) | function parseTurns(history) { function estimateTokenCount (line 122) | function estimateTokenCount(text) { function getSessionMetrics (line 126) | function getSessionMetrics(filePath) { function searchSessions (line 143) | function searchSessions(query, dir) { function compactSession (line 166) | function compactSession(filePath, keepTurns = DEFAULT_COMPACT_KEEP_TURNS) { function exportSession (line 180) | function exportSession(filePath, format, outputPath) { function branchSession (line 216) | function branchSession(currentSessionPath, newSessionName, targetDir = g... function skillExists (line 229) | function skillExists(skillName) { function handleClear (line 234) | function handleClear(sessionPath) { function handleHistory (line 240) | function handleHistory(sessionPath) { function handleSessions (line 249) | function handleSessions(dir) { function handleHelp (line 262) | function handleHelp() { function main (line 278) | function main() { FILE: scripts/codemaps/generate.ts constant ROOT (line 30) | const ROOT = process.cwd(); constant SRC_DIR (line 31) | const SRC_DIR = process.argv[2] ? path.resolve(process.argv[2]) : ROOT; constant OUTPUT_DIR (line 32) | const OUTPUT_DIR = path.join(ROOT, 'docs', 'CODEMAPS'); constant TODAY (line 33) | const TODAY = new Date().toISOString().split('T')[0]; constant AREA_PATTERNS (line 36) | const AREA_PATTERNS: Record = { function walkDir (line 66) | function walkDir(dir: string, results: string[] = []): string[] { function rel (line 92) | function rel(p: string): string { type AreaInfo (line 100) | interface AreaInfo { function classifyFiles (line 107) | function classifyFiles(allFiles: string[]): Record { function lineCount (line 140) | function lineCount(p: string): number { function buildTree (line 150) | function buildTree(dir: string, prefix = '', depth = 0): string { function generateAreaDoc (line 182) | function generateAreaDoc(areaKey: string, area: AreaInfo, allFiles: stri... function generateIndex (line 244) | function generateIndex(areas: Record, allFiles: string... function main (line 292) | function main(): void { FILE: scripts/doctor.js function showHelp (line 6) | function showHelp(exitCode = 0) { function parseArgs (line 15) | function parseArgs(argv) { function statusLabel (line 41) | function statusLabel(status) { function printHuman (line 57) | function printHuman(report) { function main (line 82) | function main() { FILE: scripts/ecc.js constant COMMANDS (line 7) | const COMMANDS = { constant PRIMARY_COMMANDS (line 50) | const PRIMARY_COMMANDS = [ function showHelp (line 62) | function showHelp(exitCode = 0) { function resolveCommand (line 95) | function resolveCommand(argv) { function runCommand (line 140) | function runCommand(commandName, args) { function main (line 180) | function main() { FILE: scripts/harness-audit.js constant REPO_ROOT (line 6) | const REPO_ROOT = path.join(__dirname, '..'); constant CATEGORIES (line 8) | const CATEGORIES = [ function normalizeScope (line 18) | function normalizeScope(scope) { function parseArgs (line 26) | function parseArgs(argv) { function fileExists (line 78) | function fileExists(relativePath) { function readText (line 82) | function readText(relativePath) { function countFiles (line 86) | function countFiles(relativeDir, extension) { function safeRead (line 112) | function safeRead(relativePath) { function getChecks (line 120) | function getChecks() { function summarizeCategoryScores (line 390) | function summarizeCategoryScores(checks) { function buildReport (line 410) | function buildReport(scope) { function printText (line 448) | function printText(report) { function showHelp (line 474) | function showHelp(exitCode = 0) { function main (line 483) | function main() { FILE: scripts/hooks/auto-tmux-dev.js constant MAX_STDIN (line 31) | const MAX_STDIN = 1024 * 1024; FILE: scripts/hooks/check-console-log.js constant EXCLUDED_PATTERNS (line 20) | const EXCLUDED_PATTERNS = [ constant MAX_STDIN (line 29) | const MAX_STDIN = 1024 * 1024; FILE: scripts/hooks/cost-tracker.js constant MAX_STDIN (line 17) | const MAX_STDIN = 1024 * 1024; function toNumber (line 20) | function toNumber(value) { function estimateCost (line 25) | function estimateCost(model, inputTokens, outputTokens) { FILE: scripts/hooks/doc-file-warning.js constant MAX_STDIN (line 12) | const MAX_STDIN = 1024 * 1024; function isAllowedDocPath (line 15) | function isAllowedDocPath(filePath) { FILE: scripts/hooks/evaluate-session.js constant MAX_STDIN (line 26) | const MAX_STDIN = 1024 * 1024; function main (line 44) | async function main() { FILE: scripts/hooks/insaits-security-monitor.py function extract_content (line 95) | def extract_content(data: Dict[str, Any]) -> Tuple[str, str]: function write_audit (line 129) | def write_audit(event: Dict[str, Any]) -> None: function get_anomaly_attr (line 148) | def get_anomaly_attr(anomaly: Any, key: str, default: str = "") -> str: function format_feedback (line 160) | def format_feedback(anomalies: List[Any]) -> str: function main (line 187) | def main() -> None: FILE: scripts/hooks/insaits-security-wrapper.js constant MAX_STDIN (line 17) | const MAX_STDIN = 1024 * 1024; function isEnabled (line 19) | function isEnabled(value) { FILE: scripts/hooks/post-bash-build-complete.js constant MAX_STDIN (line 4) | const MAX_STDIN = 1024 * 1024; FILE: scripts/hooks/post-bash-pr-created.js constant MAX_STDIN (line 4) | const MAX_STDIN = 1024 * 1024; FILE: scripts/hooks/post-edit-console-warn.js constant MAX_STDIN (line 14) | const MAX_STDIN = 1024 * 1024; FILE: scripts/hooks/post-edit-format.js constant UNSAFE_PATH_CHARS (line 24) | const UNSAFE_PATH_CHARS = /[&|<>^%!]/; constant MAX_STDIN (line 28) | const MAX_STDIN = 1024 * 1024; function run (line 37) | function run(rawInput) { FILE: scripts/hooks/post-edit-typecheck.js constant MAX_STDIN (line 16) | const MAX_STDIN = 1024 * 1024; FILE: scripts/hooks/pre-bash-dev-server-block.js constant MAX_STDIN (line 4) | const MAX_STDIN = 1024 * 1024; constant DEV_COMMAND_WORDS (line 8) | const DEV_COMMAND_WORDS = new Set([ constant SKIPPABLE_PREFIX_WORDS (line 16) | const SKIPPABLE_PREFIX_WORDS = new Set(['env', 'command', 'builtin', 'ex... constant PREFIX_OPTION_VALUE_WORDS (line 17) | const PREFIX_OPTION_VALUE_WORDS = { function readToken (line 37) | function readToken(input, startIndex) { function shouldSkipOptionValue (line 87) | function shouldSkipOptionValue(wrapper, optionToken) { function isOptionToken (line 93) | function isOptionToken(token) { function normalizeCommandWord (line 97) | function normalizeCommandWord(token) { function getLeadingCommandWord (line 103) | function getLeadingCommandWord(segment) { FILE: scripts/hooks/pre-bash-git-push-reminder.js constant MAX_STDIN (line 4) | const MAX_STDIN = 1024 * 1024; FILE: scripts/hooks/pre-bash-tmux-reminder.js constant MAX_STDIN (line 4) | const MAX_STDIN = 1024 * 1024; FILE: scripts/hooks/pre-compact.js function main (line 22) | async function main() { FILE: scripts/hooks/quality-gate.js constant MAX_STDIN (line 23) | const MAX_STDIN = 1024 * 1024; function exec (line 33) | function exec(command, args, cwd = process.cwd()) { function log (line 47) | function log(msg) { function maybeRunQualityGate (line 57) | function maybeRunQualityGate(filePath) { function run (line 140) | function run(rawInput) { FILE: scripts/hooks/run-with-flags.js constant MAX_STDIN (line 16) | const MAX_STDIN = 1024 * 1024; function readStdinRaw (line 18) | function readStdinRaw() { function getPluginRoot (line 33) | function getPluginRoot() { function main (line 40) | async function main() { FILE: scripts/hooks/session-end-marker.js function run (line 9) | function run(rawInput) { FILE: scripts/hooks/session-end.js constant SUMMARY_START_MARKER (line 27) | const SUMMARY_START_MARKER = ''; constant SUMMARY_END_MARKER (line 28) | const SUMMARY_END_MARKER = ''; constant SESSION_SEPARATOR (line 29) | const SESSION_SEPARATOR = '\n---\n'; function extractSessionSummary (line 38) | function extractSessionSummary(transcriptPath) { constant MAX_STDIN (line 111) | const MAX_STDIN = 1024 * 1024; function runMain (line 126) | function runMain() { function getSessionMetadata (line 133) | function getSessionMetadata() { function extractHeaderField (line 143) | function extractHeaderField(header, label) { function buildSessionHeader (line 148) | function buildSessionHeader(today, currentTime, metadata, existingConten... function mergeSessionHeader (line 166) | function mergeSessionHeader(content, today, currentTime, metadata) { function main (line 178) | async function main() { function buildSummarySection (line 264) | function buildSummarySection(summary) { function buildSummaryBlock (line 293) | function buildSummaryBlock(summary) { function escapeRegExp (line 297) | function escapeRegExp(value) { FILE: scripts/hooks/session-start.js function main (line 25) | async function main() { FILE: scripts/hooks/suggest-compact.js function main (line 24) | async function main() { FILE: scripts/install-apply.js function showHelp (line 19) | function showHelp(exitCode = 0) { function printHumanPlan (line 51) | function printHumanPlan(plan, dryRun) { function main (line 95) | function main() { FILE: scripts/install-plan.js function showHelp (line 15) | function showHelp() { function parseArgs (line 44) | function parseArgs(argv) { function printProfiles (line 109) | function printProfiles(profiles) { function printModules (line 117) | function printModules(modules) { function printComponents (line 128) | function printComponents(components) { function printPlan (line 137) | function printPlan(plan) { function main (line 185) | function main() { FILE: scripts/lib/hook-flags.js constant VALID_PROFILES (line 12) | const VALID_PROFILES = new Set(['minimal', 'standard', 'strict']); function normalizeId (line 14) | function normalizeId(value) { function getHookProfile (line 18) | function getHookProfile() { function getDisabledHookIds (line 23) | function getDisabledHookIds() { function parseProfiles (line 35) | function parseProfiles(rawProfiles, fallback = ['standard', 'strict']) { function isHookEnabled (line 53) | function isHookEnabled(hookId, options = {}) { FILE: scripts/lib/install-executor.js constant LANGUAGE_NAME_PATTERN (line 14) | const LANGUAGE_NAME_PATTERN = /^[a-zA-Z0-9_-]+$/; constant EXCLUDED_GENERATED_SOURCE_SUFFIXES (line 15) | const EXCLUDED_GENERATED_SOURCE_SUFFIXES = [ function getSourceRoot (line 20) | function getSourceRoot() { function getPackageVersion (line 24) | function getPackageVersion(sourceRoot) { function getManifestVersion (line 35) | function getManifestVersion(sourceRoot) { function getRepoCommit (line 46) | function getRepoCommit(sourceRoot) { function readDirectoryNames (line 59) | function readDirectoryNames(dirPath) { function listAvailableLanguages (line 70) | function listAvailableLanguages(sourceRoot = getSourceRoot()) { function validateLegacyTarget (line 78) | function validateLegacyTarget(target) { constant IGNORED_DIRECTORY_NAMES (line 86) | const IGNORED_DIRECTORY_NAMES = new Set([ function listFilesRecursive (line 91) | function listFilesRecursive(dirPath) { function isGeneratedRuntimeSourcePath (line 117) | function isGeneratedRuntimeSourcePath(sourceRelativePath) { function createStatePreview (line 122) | function createStatePreview(options) { function applyInstallPlan (line 127) | function applyInstallPlan(plan) { function buildCopyFileOperation (line 132) | function buildCopyFileOperation({ moduleId, sourcePath, sourceRelativePa... function addRecursiveCopyOperations (line 145) | function addRecursiveCopyOperations(operations, options) { function addFileCopyOperation (line 169) | function addFileCopyOperation(operations, options) { function addMatchingRuleOperations (line 186) | function addMatchingRuleOperations(operations, options) { function isDirectoryNonEmpty (line 217) | function isDirectoryNonEmpty(dirPath) { function planClaudeLegacyInstall (line 221) | function planClaudeLegacyInstall(context) { function planCursorLegacyInstall (line 277) | function planCursorLegacyInstall(context) { function planAntigravityLegacyInstall (line 364) | function planAntigravityLegacyInstall(context) { function createLegacyInstallPlan (line 442) | function createLegacyInstallPlan(options = {}) { function createLegacyCompatInstallPlan (line 509) | function createLegacyCompatInstallPlan(options = {}) { function materializeScaffoldOperation (line 541) | function materializeScaffoldOperation(sourceRoot, operation) { function createManifestInstallPlan (line 578) | function createManifestInstallPlan(options = {}) { FILE: scripts/lib/install-lifecycle.js constant DEFAULT_REPO_ROOT (line 14) | const DEFAULT_REPO_ROOT = path.join(__dirname, '../..'); function readPackageVersion (line 16) | function readPackageVersion(repoRoot) { function normalizeTargets (line 25) | function normalizeTargets(targets) { function compareStringArrays (line 41) | function compareStringArrays(left, right) { function getManagedOperations (line 52) | function getManagedOperations(state) { function resolveOperationSourcePath (line 58) | function resolveOperationSourcePath(repoRoot, operation) { function areFilesEqual (line 66) | function areFilesEqual(leftPath, rightPath) { function readFileUtf8 (line 80) | function readFileUtf8(filePath) { function isPlainObject (line 84) | function isPlainObject(value) { function cloneJsonValue (line 88) | function cloneJsonValue(value) { function parseJsonLikeValue (line 96) | function parseJsonLikeValue(value, label) { function getOperationTextContent (line 116) | function getOperationTextContent(operation) { function getOperationJsonPayload (line 134) | function getOperationJsonPayload(operation) { function getOperationPreviousContent (line 152) | function getOperationPreviousContent(operation) { function getOperationPreviousJson (line 168) | function getOperationPreviousJson(operation) { function formatJson (line 184) | function formatJson(value) { function readJsonFile (line 188) | function readJsonFile(filePath) { function ensureParentDir (line 192) | function ensureParentDir(filePath) { function deepMergeJson (line 196) | function deepMergeJson(baseValue, patchValue) { function jsonContainsSubset (line 212) | function jsonContainsSubset(actualValue, expectedValue) { constant JSON_REMOVE_SENTINEL (line 235) | const JSON_REMOVE_SENTINEL = Symbol('json-remove'); function deepRemoveJsonSubset (line 237) | function deepRemoveJsonSubset(currentValue, managedValue) { function hydrateRecordedOperations (line 281) | function hydrateRecordedOperations(repoRoot, operations) { function buildRecordedStatePreview (line 294) | function buildRecordedStatePreview(state, context, operations) { function shouldRepairFromRecordedOperations (line 307) | function shouldRepairFromRecordedOperations(state) { function executeRepairOperation (line 311) | function executeRepairOperation(repoRoot, operation) { function executeUninstallOperation (line 362) | function executeUninstallOperation(operation) { function inspectManagedOperation (line 494) | function inspectManagedOperation(repoRoot, operation) { function summarizeManagedOperationHealth (line 621) | function summarizeManagedOperationHealth(repoRoot, operations) { function buildDiscoveryRecord (line 642) | function buildDiscoveryRecord(adapter, context) { function discoverInstalledStates (line 697) | function discoverInstalledStates(options = {}) { function buildIssue (line 710) | function buildIssue(severity, code, message, extra = {}) { function determineStatus (line 719) | function determineStatus(issues) { function analyzeRecord (line 731) | function analyzeRecord(record, context) { function buildDoctorReport (line 897) | function buildDoctorReport(options = {}) { function createRepairPlanFromRecord (line 939) | function createRepairPlanFromRecord(record, context) { function repairInstalledStates (line 986) | function repairInstalledStates(options = {}) { function cleanupEmptyParentDirs (line 1097) | function cleanupEmptyParentDirs(filePath, stopAt) { function uninstallInstalledStates (line 1121) | function uninstallInstalledStates(options = {}) { FILE: scripts/lib/install-manifests.js constant DEFAULT_REPO_ROOT (line 6) | const DEFAULT_REPO_ROOT = path.join(__dirname, '../..'); constant SUPPORTED_INSTALL_TARGETS (line 7) | const SUPPORTED_INSTALL_TARGETS = ['claude', 'cursor', 'antigravity', 'c... constant COMPONENT_FAMILY_PREFIXES (line 8) | const COMPONENT_FAMILY_PREFIXES = { constant LEGACY_COMPAT_BASE_MODULE_IDS_BY_TARGET (line 14) | const LEGACY_COMPAT_BASE_MODULE_IDS_BY_TARGET = Object.freeze({ constant LEGACY_LANGUAGE_ALIAS_TO_CANONICAL (line 37) | const LEGACY_LANGUAGE_ALIAS_TO_CANONICAL = Object.freeze({ constant LEGACY_LANGUAGE_EXTRA_MODULE_IDS (line 49) | const LEGACY_LANGUAGE_EXTRA_MODULE_IDS = Object.freeze({ function readJson (line 59) | function readJson(filePath, label) { function dedupeStrings (line 67) | function dedupeStrings(values) { function assertKnownModuleIds (line 71) | function assertKnownModuleIds(moduleIds, manifests) { function intersectTargets (line 84) | function intersectTargets(modules) { function getManifestPaths (line 94) | function getManifestPaths(repoRoot = DEFAULT_REPO_ROOT) { function loadInstallManifests (line 102) | function loadInstallManifests(options = {}) { function listInstallProfiles (line 139) | function listInstallProfiles(options = {}) { function listInstallModules (line 148) | function listInstallModules(options = {}) { function listLegacyCompatibilityLanguages (line 162) | function listLegacyCompatibilityLanguages() { function validateInstallModuleIds (line 166) | function validateInstallModuleIds(moduleIds, options = {}) { function listInstallComponents (line 173) | function listInstallComponents(options = {}) { function expandComponentIdsToModuleIds (line 211) | function expandComponentIdsToModuleIds(componentIds, manifests) { function resolveLegacyCompatibilitySelection (line 225) | function resolveLegacyCompatibilitySelection(options = {}) { function resolveInstallPlan (line 278) | function resolveInstallPlan(options = {}) { FILE: scripts/lib/install-state.js constant SCHEMA_PATH (line 14) | const SCHEMA_PATH = path.join(__dirname, '..', '..', 'schemas', 'install... function cloneJsonValue (line 18) | function cloneJsonValue(value) { function readJson (line 26) | function readJson(filePath, label) { function getValidator (line 34) | function getValidator() { function createFallbackValidator (line 50) | function createFallbackValidator() { function formatValidationErrors (line 221) | function formatValidationErrors(errors = []) { function validateInstallState (line 227) | function validateInstallState(state) { function assertValidInstallState (line 236) | function assertValidInstallState(state, label) { function createInstallState (line 243) | function createInstallState(options) { function readInstallState (line 295) | function readInstallState(filePath) { function writeInstallState (line 301) | function writeInstallState(filePath, state) { FILE: scripts/lib/install-targets/antigravity-project.js method planOperations (line 15) | planOperations(input, adapter) { FILE: scripts/lib/install-targets/cursor-project.js method planOperations (line 15) | planOperations(input, adapter) { FILE: scripts/lib/install-targets/helpers.js function normalizeRelativePath (line 5) | function normalizeRelativePath(relativePath) { function resolveBaseRoot (line 12) | function resolveBaseRoot(scope, input = {}) { function buildValidationIssue (line 28) | function buildValidationIssue(severity, code, message, extra = {}) { function listRelativeFiles (line 37) | function listRelativeFiles(dirPath, prefix = '') { function createManagedOperation (line 61) | function createManagedOperation({ function defaultValidateAdapterInput (line 83) | function defaultValidateAdapterInput(config, input = {}) { function createRemappedOperation (line 107) | function createRemappedOperation(adapter, moduleId, sourceRelativePath, ... function createNamespacedFlatRuleOperations (line 120) | function createNamespacedFlatRuleOperations(adapter, moduleId, sourceRel... function createFlatRuleOperations (line 163) | function createFlatRuleOperations({ moduleId, repoRoot, sourceRelativePa... function createInstallTargetAdapter (line 204) | function createInstallTargetAdapter(config) { FILE: scripts/lib/install-targets/registry.js constant ADAPTERS (line 7) | const ADAPTERS = Object.freeze([ function listInstallTargetAdapters (line 15) | function listInstallTargetAdapters() { function getInstallTargetAdapter (line 19) | function getInstallTargetAdapter(targetOrAdapterId) { function planInstallTargetScaffold (line 29) | function planInstallTargetScaffold(options = {}) { FILE: scripts/lib/install/apply.js function applyInstallPlan (line 7) | function applyInstallPlan(plan) { FILE: scripts/lib/install/config.js constant DEFAULT_INSTALL_CONFIG (line 7) | const DEFAULT_INSTALL_CONFIG = 'ecc-install.json'; constant CONFIG_SCHEMA_PATH (line 8) | const CONFIG_SCHEMA_PATH = path.join(__dirname, '..', '..', '..', 'schem... function readJson (line 12) | function readJson(filePath, label) { function getValidator (line 20) | function getValidator() { function dedupeStrings (line 31) | function dedupeStrings(values) { function formatValidationErrors (line 35) | function formatValidationErrors(errors = []) { function resolveInstallConfigPath (line 39) | function resolveInstallConfigPath(configPath, options = {}) { function loadInstallConfig (line 50) | function loadInstallConfig(configPath, options = {}) { FILE: scripts/lib/install/request.js constant LEGACY_INSTALL_TARGETS (line 5) | const LEGACY_INSTALL_TARGETS = ['claude', 'cursor', 'antigravity']; function dedupeStrings (line 7) | function dedupeStrings(values) { function parseInstallArgs (line 11) | function parseInstallArgs(argv) { function normalizeInstallRequest (line 70) | function normalizeInstallRequest(options = {}) { FILE: scripts/lib/install/runtime.js function createInstallPlanFromRequest (line 9) | function createInstallPlanFromRequest(request, options = {}) { FILE: scripts/lib/orchestration-session.js function stripCodeTicks (line 7) | function stripCodeTicks(value) { function parseSection (line 20) | function parseSection(content, heading) { function parseBullets (line 46) | function parseBullets(section) { function parseWorkerStatus (line 58) | function parseWorkerStatus(content) { function parseWorkerTask (line 92) | function parseWorkerTask(content) { function parseWorkerHandoff (line 99) | function parseWorkerHandoff(content) { function readTextIfExists (line 107) | function readTextIfExists(filePath) { function listWorkerDirectories (line 115) | function listWorkerDirectories(coordinationDir) { function loadWorkerSnapshots (line 131) | function loadWorkerSnapshots(coordinationDir) { function listTmuxPanes (line 157) | function listTmuxPanes(sessionName, options = {}) { function summarizeWorkerStates (line 218) | function summarizeWorkerStates(workers) { function buildSessionSnapshot (line 226) | function buildSessionSnapshot({ sessionName, coordinationDir, panes }) { function resolveSnapshotTarget (line 247) | function resolveSnapshotTarget(targetPath, cwd = process.cwd()) { function collectSessionSnapshot (line 273) | function collectSessionSnapshot(targetPath, cwd = process.cwd()) { FILE: scripts/lib/package-manager.d.ts type PackageManagerName (line 7) | type PackageManagerName = 'npm' | 'pnpm' | 'yarn' | 'bun'; type PackageManagerConfig (line 10) | interface PackageManagerConfig { type DetectionSource (line 29) | type DetectionSource = type PackageManagerResult (line 38) | interface PackageManagerResult { constant PACKAGE_MANAGERS (line 45) | const PACKAGE_MANAGERS: Record; constant DETECTION_PRIORITY (line 48) | const DETECTION_PRIORITY: PackageManagerName[]; type GetPackageManagerOptions (line 50) | interface GetPackageManagerOptions { FILE: scripts/lib/package-manager.js constant PACKAGE_MANAGERS (line 13) | const PACKAGE_MANAGERS = { constant DETECTION_PRIORITY (line 57) | const DETECTION_PRIORITY = ['pnpm', 'bun', 'yarn', 'npm']; function getConfigPath (line 60) | function getConfigPath() { function loadConfig (line 67) | function loadConfig() { function saveConfig (line 84) | function saveConfig(config) { function detectFromLockFile (line 92) | function detectFromLockFile(projectDir = process.cwd()) { function detectFromPackageJson (line 107) | function detectFromPackageJson(projectDir = process.cwd()) { function getAvailablePackageManagers (line 136) | function getAvailablePackageManagers() { function getPackageManager (line 163) | function getPackageManager(options = {}) { function setPreferredPackageManager (line 241) | function setPreferredPackageManager(pmName) { function setProjectPackageManager (line 262) | function setProjectPackageManager(pmName, projectDir = process.cwd()) { constant SAFE_NAME_REGEX (line 285) | const SAFE_NAME_REGEX = /^[@a-zA-Z0-9_./-]+$/; function getRunCommand (line 293) | function getRunCommand(script, options = {}) { constant SAFE_ARGS_REGEX (line 319) | const SAFE_ARGS_REGEX = /^[@a-zA-Z0-9\s_./:=,'"*+-]+$/; function getExecCommand (line 327) | function getExecCommand(binary, args = '', options = {}) { function getSelectionPrompt (line 349) | function getSelectionPrompt() { function escapeRegex (line 362) | function escapeRegex(str) { function getCommandPattern (line 370) | function getCommandPattern(action) { FILE: scripts/lib/project-detect.js constant LANGUAGE_RULES (line 17) | const LANGUAGE_RULES = [ constant FRAMEWORK_RULES (line 84) | const FRAMEWORK_RULES = [ function fileExists (line 131) | function fileExists(projectDir, filePath) { function hasFileWithExtension (line 145) | function hasFileWithExtension(projectDir, extensions) { function getPackageJsonDeps (line 163) | function getPackageJsonDeps(projectDir) { function getPythonDeps (line 179) | function getPythonDeps(projectDir) { function getGoDeps (line 232) | function getGoDeps(projectDir) { function getRustDeps (line 259) | function getRustDeps(projectDir) { function getComposerDeps (line 288) | function getComposerDeps(projectDir) { function getElixirDeps (line 304) | function getElixirDeps(projectDir) { function detectProjectType (line 325) | function detectProjectType(projectDir) { FILE: scripts/lib/resolve-formatter.js constant BIOME_CONFIGS (line 21) | const BIOME_CONFIGS = ['biome.json', 'biome.jsonc']; constant PRETTIER_CONFIGS (line 23) | const PRETTIER_CONFIGS = [ constant PROJECT_ROOT_MARKERS (line 37) | const PROJECT_ROOT_MARKERS = ['package.json', ...BIOME_CONFIGS, ...PRETT... constant WIN_CMD_SHIMS (line 40) | const WIN_CMD_SHIMS = { npx: 'npx.cmd', pnpm: 'pnpm.cmd', yarn: 'yarn.cm... constant FORMATTER_PACKAGES (line 43) | const FORMATTER_PACKAGES = { function findProjectRoot (line 58) | function findProjectRoot(startDir) { function detectFormatter (line 83) | function detectFormatter(projectRoot) { function getRunnerFromPackageManager (line 125) | function getRunnerFromPackageManager(projectRoot) { function resolveFormatterBin (line 146) | function resolveFormatterBin(projectRoot, formatter) { function clearCaches (line 174) | function clearCaches() { FILE: scripts/lib/session-adapters/canonical-session.js constant SESSION_SCHEMA_VERSION (line 7) | const SESSION_SCHEMA_VERSION = 'ecc.session.v1'; constant SESSION_RECORDING_SCHEMA_VERSION (line 8) | const SESSION_RECORDING_SCHEMA_VERSION = 'ecc.session.recording.v1'; constant DEFAULT_RECORDING_DIR (line 9) | const DEFAULT_RECORDING_DIR = path.join(os.tmpdir(), 'ecc-session-record... function isObject (line 11) | function isObject(value) { function sanitizePathSegment (line 15) | function sanitizePathSegment(value) { function parseContextSeedPaths (line 22) | function parseContextSeedPaths(context) { function ensureString (line 33) | function ensureString(value, fieldPath) { function ensureOptionalString (line 39) | function ensureOptionalString(value, fieldPath) { function ensureBoolean (line 45) | function ensureBoolean(value, fieldPath) { function ensureArrayOfStrings (line 51) | function ensureArrayOfStrings(value, fieldPath) { function ensureInteger (line 57) | function ensureInteger(value, fieldPath) { function buildAggregates (line 63) | function buildAggregates(workers) { function summarizeRawWorkerStates (line 76) | function summarizeRawWorkerStates(snapshot) { function deriveDmuxSessionState (line 90) | function deriveDmuxSessionState(snapshot) { function validateCanonicalSnapshot (line 120) | function validateCanonicalSnapshot(snapshot) { function resolveRecordingDir (line 213) | function resolveRecordingDir(options = {}) { function getFallbackSessionRecordingPath (line 225) | function getFallbackSessionRecordingPath(snapshot, options = {}) { function readExistingRecording (line 235) | function readExistingRecording(filePath) { function writeFallbackSessionRecording (line 247) | function writeFallbackSessionRecording(snapshot, options = {}) { function loadStateStore (line 280) | function loadStateStore(options = {}) { function resolveStateStoreWriter (line 303) | function resolveStateStoreWriter(stateStore) { function persistCanonicalSnapshot (line 336) | function persistCanonicalSnapshot(snapshot, options = {}) { function normalizeDmuxSnapshot (line 374) | function normalizeDmuxSnapshot(snapshot, sourceTarget) { function deriveClaudeWorkerId (line 419) | function deriveClaudeWorkerId(session) { function normalizeClaudeHistorySession (line 427) | function normalizeClaudeHistorySession(session, sourceTarget) { FILE: scripts/lib/session-adapters/claude-history.js function parseClaudeTarget (line 10) | function parseClaudeTarget(target) { function isSessionFileTarget (line 24) | function isSessionFileTarget(target, cwd) { function hydrateSessionFromPath (line 35) | function hydrateSessionFromPath(sessionPath) { function resolveSessionRecord (line 57) | function resolveSessionRecord(target, cwd) { function createClaudeHistoryAdapter (line 114) | function createClaudeHistoryAdapter(options = {}) { FILE: scripts/lib/session-adapters/dmux-tmux.js function isPlanFileTarget (line 9) | function isPlanFileTarget(target, cwd) { function isSessionNameTarget (line 20) | function isSessionNameTarget(target, cwd) { function buildSourceTarget (line 29) | function buildSourceTarget(target, cwd) { function createDmuxTmuxAdapter (line 43) | function createDmuxTmuxAdapter(options = {}) { FILE: scripts/lib/session-adapters/registry.js constant TARGET_TYPE_TO_ADAPTER_ID (line 6) | const TARGET_TYPE_TO_ADAPTER_ID = Object.freeze({ function buildDefaultAdapterOptions (line 14) | function buildDefaultAdapterOptions(options, adapterId) { function createDefaultAdapters (line 30) | function createDefaultAdapters(options = {}) { function coerceTargetValue (line 37) | function coerceTargetValue(value) { function normalizeStructuredTarget (line 45) | function normalizeStructuredTarget(target, context = {}) { function createAdapterRegistry (line 78) | function createAdapterRegistry(options = {}) { function inspectSessionTarget (line 117) | function inspectSessionTarget(target, options = {}) { FILE: scripts/lib/session-aliases.d.ts type AliasEntry (line 7) | interface AliasEntry { type AliasStore (line 15) | interface AliasStore { type ResolvedAlias (line 25) | interface ResolvedAlias { type AliasListItem (line 33) | interface AliasListItem { type AliasResult (line 42) | interface AliasResult { type SetAliasResult (line 48) | interface SetAliasResult extends AliasResult { type DeleteAliasResult (line 55) | interface DeleteAliasResult extends AliasResult { type RenameAliasResult (line 60) | interface RenameAliasResult extends AliasResult { type CleanupResult (line 66) | interface CleanupResult { type ListAliasesOptions (line 73) | interface ListAliasesOptions { FILE: scripts/lib/session-aliases.js function getAliasesPath (line 17) | function getAliasesPath() { constant ALIAS_VERSION (line 22) | const ALIAS_VERSION = '1.0'; function getDefaultAliases (line 27) | function getDefaultAliases() { function loadAliases (line 42) | function loadAliases() { function saveAliases (line 88) | function saveAliases(aliases) { function resolveAlias (line 158) | function resolveAlias(alias) { function setAlias (line 188) | function setAlias(alias, sessionPath, title = null) { function listAliases (line 244) | function listAliases(options = {}) { function deleteAlias (line 281) | function deleteAlias(alias) { function renameAlias (line 308) | function renameAlias(oldAlias, newAlias) { function resolveSessionAlias (line 365) | function resolveSessionAlias(aliasOrId) { function updateAliasTitle (line 382) | function updateAliasTitle(alias, title) { function getAliasesForSession (line 412) | function getAliasesForSession(sessionPath) { function cleanupAliases (line 434) | function cleanupAliases(sessionExists) { FILE: scripts/lib/session-manager.d.ts type SessionFilenameMeta (line 7) | interface SessionFilenameMeta { type SessionMetadata (line 19) | interface SessionMetadata { type SessionStats (line 31) | interface SessionStats { type Session (line 41) | interface Session extends SessionFilenameMeta { type SessionListResult (line 61) | interface SessionListResult { type GetAllSessionsOptions (line 69) | interface GetAllSessionsOptions { FILE: scripts/lib/session-manager.js constant SESSION_FILENAME_REGEX (line 25) | const SESSION_FILENAME_REGEX = /^(\d{4}-\d{2}-\d{2})(?:-([a-zA-Z0-9_][a-... function parseSessionFilename (line 32) | function parseSessionFilename(filename) { function getSessionPath (line 65) | function getSessionPath(filename) { function getSessionContent (line 74) | function getSessionContent(sessionPath) { function parseSessionMetadata (line 83) | function parseSessionMetadata(content) { function getSessionStats (line 180) | function getSessionStats(sessionPathOrContent) { function getAllSessions (line 214) | function getAllSessions(options = {}) { function getSessionById (line 301) | function getSessionById(sessionId, includeContent = false) { function getSessionTitle (line 361) | function getSessionTitle(sessionPath) { function getSessionSize (line 373) | function getSessionSize(sessionPath) { function writeSessionContent (line 393) | function writeSessionContent(sessionPath, content) { function appendSessionContent (line 409) | function appendSessionContent(sessionPath, content) { function deleteSession (line 424) | function deleteSession(sessionPath) { function sessionExists (line 442) | function sessionExists(sessionPath) { FILE: scripts/lib/shell-split.js function splitShellSegments (line 8) | function splitShellSegments(command) { FILE: scripts/lib/skill-evolution/dashboard.js constant DAY_IN_MS (line 7) | const DAY_IN_MS = 24 * 60 * 60 * 1000; constant SPARKLINE_CHARS (line 8) | const SPARKLINE_CHARS = '\u2581\u2582\u2583\u2584\u2585\u2586\u2587\u2588'; constant EMPTY_BLOCK (line 9) | const EMPTY_BLOCK = '\u2591'; constant FILL_BLOCK (line 10) | const FILL_BLOCK = '\u2588'; constant DEFAULT_PANEL_WIDTH (line 11) | const DEFAULT_PANEL_WIDTH = 64; constant VALID_PANELS (line 12) | const VALID_PANELS = new Set(['success-rate', 'failures', 'amendments', ... function sparkline (line 14) | function sparkline(values) { function horizontalBar (line 30) | function horizontalBar(value, max, width) { function panelBox (line 40) | function panelBox(title, lines, width) { function bucketByDay (line 56) | function bucketByDay(records, nowMs, days) { function getTrendArrow (line 88) | function getTrendArrow(successRate7d, successRate30d) { function formatPercent (line 105) | function formatPercent(value) { function groupRecordsBySkill (line 113) | function groupRecordsBySkill(records) { function renderSuccessRatePanel (line 125) | function renderSuccessRatePanel(records, skills, options = {}) { function renderFailureClusterPanel (line 174) | function renderFailureClusterPanel(records, options = {}) { function renderAmendmentPanel (line 222) | function renderAmendmentPanel(skillsById, options = {}) { function renderVersionTimelinePanel (line 277) | function renderVersionTimelinePanel(skillsById, options = {}) { function renderDashboard (line 331) | function renderDashboard(options = {}) { FILE: scripts/lib/skill-evolution/health.js constant DAY_IN_MS (line 10) | const DAY_IN_MS = 24 * 60 * 60 * 1000; constant PENDING_AMENDMENT_STATUSES (line 11) | const PENDING_AMENDMENT_STATUSES = Object.freeze(new Set(['pending', 'pr... function roundRate (line 13) | function roundRate(value) { function formatRate (line 21) | function formatRate(value) { function summarizeHealthReport (line 29) | function summarizeHealthReport(report) { function listSkillsInRoot (line 41) | function listSkillsInRoot(rootPath) { function discoverSkills (line 55) | function discoverSkills(options = {}) { function calculateSuccessRate (line 80) | function calculateSuccessRate(records) { function filterRecordsWithinDays (line 89) | function filterRecordsWithinDays(records, nowMs, days) { function getFailureTrend (line 97) | function getFailureTrend(successRate7d, successRate30d, warnThreshold) { function countPendingAmendments (line 114) | function countPendingAmendments(skillDir) { function getLastRun (line 130) | function getLastRun(records) { function collectSkillHealth (line 145) | function collectSkillHealth(options = {}) { function formatHealthReport (line 213) | function formatHealthReport(report, options = {}) { FILE: scripts/lib/skill-evolution/provenance.js constant PROVENANCE_FILE_NAME (line 9) | const PROVENANCE_FILE_NAME = '.provenance.json'; constant SKILL_TYPES (line 10) | const SKILL_TYPES = Object.freeze({ function resolveRepoRoot (line 17) | function resolveRepoRoot(repoRoot) { function resolveHomeDir (line 25) | function resolveHomeDir(homeDir) { function normalizeSkillDir (line 29) | function normalizeSkillDir(skillPath) { function isWithinRoot (line 42) | function isWithinRoot(targetPath, rootPath) { function getSkillRoots (line 50) | function getSkillRoots(options = {}) { function classifySkillPath (line 61) | function classifySkillPath(skillPath, options = {}) { function requiresProvenance (line 80) | function requiresProvenance(skillPath, options = {}) { function getProvenancePath (line 85) | function getProvenancePath(skillPath) { function isIsoTimestamp (line 89) | function isIsoTimestamp(value) { function validateProvenance (line 98) | function validateProvenance(record) { function assertValidProvenance (line 133) | function assertValidProvenance(record) { function readProvenance (line 140) | function readProvenance(skillPath, options = {}) { function writeProvenance (line 158) | function writeProvenance(skillPath, record, options = {}) { FILE: scripts/lib/skill-evolution/tracker.js constant VALID_OUTCOMES (line 9) | const VALID_OUTCOMES = new Set(['success', 'failure', 'partial']); constant VALID_FEEDBACK (line 10) | const VALID_FEEDBACK = new Set(['accepted', 'corrected', 'rejected']); function resolveHomeDir (line 12) | function resolveHomeDir(homeDir) { function getRunsFilePath (line 16) | function getRunsFilePath(options = {}) { function toNullableNumber (line 24) | function toNullableNumber(value, fieldName) { function normalizeExecutionRecord (line 37) | function normalizeExecutionRecord(input, options = {}) { function readJsonl (line 86) | function readJsonl(filePath) { function recordSkillExecution (line 105) | function recordSkillExecution(input, options = {}) { function readSkillExecutionRecords (line 131) | function readSkillExecutionRecords(options = {}) { FILE: scripts/lib/skill-evolution/versioning.js constant VERSION_DIRECTORY_NAME (line 8) | const VERSION_DIRECTORY_NAME = '.versions'; constant EVOLUTION_DIRECTORY_NAME (line 9) | const EVOLUTION_DIRECTORY_NAME = '.evolution'; constant EVOLUTION_LOG_TYPES (line 10) | const EVOLUTION_LOG_TYPES = Object.freeze([ function normalizeSkillDir (line 16) | function normalizeSkillDir(skillPath) { function getSkillFilePath (line 29) | function getSkillFilePath(skillPath) { function ensureSkillExists (line 33) | function ensureSkillExists(skillPath) { function getVersionsDir (line 42) | function getVersionsDir(skillPath) { function getEvolutionDir (line 46) | function getEvolutionDir(skillPath) { function getEvolutionLogPath (line 50) | function getEvolutionLogPath(skillPath, logType) { function ensureSkillVersioning (line 58) | function ensureSkillVersioning(skillPath) { function parseVersionNumber (line 80) | function parseVersionNumber(fileName) { function listVersions (line 89) | function listVersions(skillPath) { function getCurrentVersion (line 115) | function getCurrentVersion(skillPath) { function appendEvolutionRecord (line 129) | function appendEvolutionRecord(skillPath, logType, record) { function readJsonl (line 135) | function readJsonl(filePath) { function getEvolutionLog (line 154) | function getEvolutionLog(skillPath, logType) { function createVersion (line 158) | function createVersion(skillPath, options = {}) { function rollbackTo (line 185) | function rollbackTo(skillPath, targetVersion, options = {}) { FILE: scripts/lib/skill-improvement/amendify.js constant AMENDMENT_SCHEMA_VERSION (line 5) | const AMENDMENT_SCHEMA_VERSION = 'ecc.skill-amendment-proposal.v1'; function createProposalId (line 7) | function createProposalId(skillId) { function summarizePatchPreview (line 11) | function summarizePatchPreview(skillId, health) { function proposeSkillAmendment (line 34) | function proposeSkillAmendment(skillId, records, options = {}) { FILE: scripts/lib/skill-improvement/evaluate.js constant EVALUATION_SCHEMA_VERSION (line 3) | const EVALUATION_SCHEMA_VERSION = 'ecc.skill-evaluation.v1'; function roundRate (line 5) | function roundRate(value) { function summarize (line 9) | function summarize(records) { function buildSkillEvaluationScaffold (line 21) | function buildSkillEvaluationScaffold(skillId, records, options = {}) { FILE: scripts/lib/skill-improvement/health.js constant HEALTH_SCHEMA_VERSION (line 3) | const HEALTH_SCHEMA_VERSION = 'ecc.skill-health.v1'; function roundRate (line 5) | function roundRate(value) { function rankCounts (line 9) | function rankCounts(values) { function summarizeVariantRuns (line 15) | function summarizeVariantRuns(records) { function deriveSkillStatus (line 33) | function deriveSkillStatus(skillSummary, options = {}) { function buildSkillHealthReport (line 46) | function buildSkillHealthReport(records, options = {}) { FILE: scripts/lib/skill-improvement/observations.js constant OBSERVATION_SCHEMA_VERSION (line 7) | const OBSERVATION_SCHEMA_VERSION = 'ecc.skill-observation.v1'; function resolveProjectRoot (line 9) | function resolveProjectRoot(options = {}) { function getSkillTelemetryRoot (line 13) | function getSkillTelemetryRoot(options = {}) { function getSkillObservationsPath (line 17) | function getSkillObservationsPath(options = {}) { function ensureString (line 21) | function ensureString(value, label) { function createObservationId (line 29) | function createObservationId() { function createSkillObservation (line 33) | function createSkillObservation(input) { function appendSkillObservation (line 74) | function appendSkillObservation(observation, options = {}) { function readSkillObservations (line 81) | function readSkillObservations(options = {}) { FILE: scripts/lib/state-store/index.js constant DEFAULT_STATE_STORE_RELATIVE_PATH (line 12) | const DEFAULT_STATE_STORE_RELATIVE_PATH = path.join('.claude', 'ecc', 's... function resolveStateStorePath (line 14) | function resolveStateStorePath(options = {}) { function wrapSqlJsDatabase (line 34) | function wrapSqlJsDatabase(rawDb, dbPath) { function openDatabase (line 141) | async function openDatabase(SQL, dbPath) { function createStateStore (line 164) | async function createStateStore(options = {}) { FILE: scripts/lib/state-store/migrations.js constant INITIAL_SCHEMA_SQL (line 3) | const INITIAL_SCHEMA_SQL = ` constant MIGRATIONS (line 110) | const MIGRATIONS = [ function ensureMigrationTable (line 118) | function ensureMigrationTable(db) { function getAppliedMigrations (line 128) | function getAppliedMigrations(db) { function applyMigrations (line 144) | function applyMigrations(db) { FILE: scripts/lib/state-store/queries.js constant ACTIVE_SESSION_STATES (line 5) | const ACTIVE_SESSION_STATES = ['active', 'running', 'idle']; constant SUCCESS_OUTCOMES (line 6) | const SUCCESS_OUTCOMES = new Set(['success', 'succeeded', 'passed']); constant FAILURE_OUTCOMES (line 7) | const FAILURE_OUTCOMES = new Set(['failure', 'failed', 'error']); function normalizeLimit (line 9) | function normalizeLimit(value, fallback) { function parseJsonColumn (line 22) | function parseJsonColumn(value, fallback) { function stringifyJson (line 30) | function stringifyJson(value, label) { function mapSessionRow (line 38) | function mapSessionRow(row) { function mapSkillRunRow (line 53) | function mapSkillRunRow(row) { function mapSkillVersionRow (line 69) | function mapSkillVersionRow(row) { function mapDecisionRow (line 80) | function mapDecisionRow(row) { function mapInstallStateRow (line 93) | function mapInstallStateRow(row) { function mapGovernanceEventRow (line 112) | function mapGovernanceEventRow(row) { function classifyOutcome (line 124) | function classifyOutcome(outcome) { function toPercent (line 137) | function toPercent(numerator, denominator) { function summarizeSkillRuns (line 145) | function summarizeSkillRuns(skillRuns) { function summarizeInstallHealth (line 174) | function summarizeInstallHealth(installations) { function normalizeSessionInput (line 205) | function normalizeSessionInput(session) { function normalizeSkillRunInput (line 218) | function normalizeSkillRunInput(skillRun) { function normalizeSkillVersionInput (line 234) | function normalizeSkillVersionInput(skillVersion) { function normalizeDecisionInput (line 245) | function normalizeDecisionInput(decision) { function normalizeInstallStateInput (line 260) | function normalizeInstallStateInput(installState) { function normalizeGovernanceEventInput (line 276) | function normalizeGovernanceEventInput(governanceEvent) { function createQueryApi (line 288) | function createQueryApi(db) { FILE: scripts/lib/state-store/schema.js constant SCHEMA_PATH (line 7) | const SCHEMA_PATH = path.join(__dirname, '..', '..', '..', 'schemas', 's... constant ENTITY_DEFINITIONS (line 9) | const ENTITY_DEFINITIONS = { function readSchema (line 22) | function readSchema() { function getAjv (line 31) | function getAjv() { function getEntityValidator (line 43) | function getEntityValidator(entityName) { function formatValidationErrors (line 65) | function formatValidationErrors(errors = []) { function validateEntity (line 71) | function validateEntity(entityName, payload) { function assertValidEntity (line 80) | function assertValidEntity(entityName, payload, label) { FILE: scripts/lib/tmux-worktree-orchestrator.js function slugify (line 7) | function slugify(value, fallback = 'worker') { function renderTemplate (line 16) | function renderTemplate(template, variables) { function shellQuote (line 29) | function shellQuote(value) { function formatCommand (line 33) | function formatCommand(program, args) { function buildTemplateVariables (line 37) | function buildTemplateVariables(values) { function buildSessionBannerCommand (line 49) | function buildSessionBannerCommand(sessionName, coordinationDir) { function normalizeSeedPaths (line 53) | function normalizeSeedPaths(seedPaths, repoRoot) { function overlaySeedPaths (line 86) | function overlaySeedPaths({ repoRoot, seedPaths, worktreePath }) { function buildWorkerArtifacts (line 108) | function buildWorkerArtifacts(workerPlan) { function buildOrchestrationPlan (line 175) | function buildOrchestrationPlan(config = {}) { function materializePlan (line 314) | function materializePlan(plan) { function runCommand (line 324) | function runCommand(program, args, options = {}) { function commandSucceeds (line 341) | function commandSucceeds(program, args, options = {}) { function canonicalizePath (line 350) | function canonicalizePath(targetPath) { function branchExists (line 366) | function branchExists(repoRoot, branchName) { function listWorktrees (line 372) | function listWorktrees(repoRoot) { function cleanupExisting (line 390) | function cleanupExisting(plan) { function rollbackCreatedResources (line 426) | function rollbackCreatedResources(plan, createdState, runtime = {}) { function executePlan (line 482) | function executePlan(plan, runtime = {}) { FILE: scripts/lib/utils.d.ts type FileMatch (line 64) | interface FileMatch { type FindFilesOptions (line 71) | interface FindFilesOptions { type ReplaceInFileOptions (line 96) | interface ReplaceInFileOptions { type GrepMatch (line 116) | interface GrepMatch { type ReadStdinJsonOptions (line 128) | interface ReadStdinJsonOptions { type CommandResult (line 163) | interface CommandResult { FILE: scripts/lib/utils.js function getHomeDir (line 19) | function getHomeDir() { function getClaudeDir (line 26) | function getClaudeDir() { function getSessionsDir (line 33) | function getSessionsDir() { function getLearnedSkillsDir (line 40) | function getLearnedSkillsDir() { function getTempDir (line 47) | function getTempDir() { function ensureDir (line 57) | function ensureDir(dirPath) { function getDateString (line 74) | function getDateString() { function getTimeString (line 85) | function getTimeString() { function getGitRepoName (line 95) | function getGitRepoName() { function getProjectName (line 104) | function getProjectName() { function getSessionIdShort (line 114) | function getSessionIdShort(fallback = 'default') { function getDateTimeString (line 125) | function getDateTimeString() { function findFiles (line 142) | function findFiles(dir, pattern, options = {}) { function readStdinJson (line 208) | async function readStdinJson(options = {}) { function log (line 265) | function log(message) { function output (line 272) | function output(data) { function readFile (line 283) | function readFile(filePath) { function writeFile (line 294) | function writeFile(filePath, content) { function appendFile (line 302) | function appendFile(filePath, content) { function commandExists (line 311) | function commandExists(cmd) { function runCommand (line 341) | function runCommand(cmd, options = {}) { function isGitRepo (line 371) | function isGitRepo() { function getGitModifiedFiles (line 381) | function getGitModifiedFiles(patterns = []) { function replaceInFile (line 419) | function replaceInFile(filePath, search, replace, options = {}) { function countInFile (line 446) | function countInFile(filePath, pattern) { function grepFile (line 470) | function grepFile(filePath, pattern) { FILE: scripts/list-installed.js function showHelp (line 6) | function showHelp(exitCode = 0) { function parseArgs (line 15) | function parseArgs(argv) { function printHuman (line 41) | function printHuman(records) { function main (line 65) | function main() { FILE: scripts/orchestrate-worktrees.js function usage (line 13) | function usage() { function parseArgs (line 27) | function parseArgs(argv) { function loadPlanConfig (line 37) | function loadPlanConfig(planPath) { function printDryRun (line 45) | function printDryRun(plan, absolutePath) { function main (line 69) | function main() { FILE: scripts/orchestration-status.js function usage (line 9) | function usage() { function parseArgs (line 21) | function parseArgs(argv) { function main (line 30) | function main() { FILE: scripts/repair.js function showHelp (line 6) | function showHelp(exitCode = 0) { function parseArgs (line 15) | function parseArgs(argv) { function printHuman (line 44) | function printHuman(result) { function main (line 68) | function main() { FILE: scripts/session-inspect.js function usage (line 13) | function usage() { function parseArgs (line 40) | function parseArgs(argv) { function inspectSkillLoopTarget (line 66) | function inspectSkillLoopTarget(target, options = {}) { function main (line 100) | function main() { FILE: scripts/sessions-cli.js function showHelp (line 6) | function showHelp(exitCode = 0) { function parseArgs (line 16) | function parseArgs(argv) { function printSessionList (line 49) | function printSessionList(payload) { function printWorkers (line 68) | function printWorkers(workers) { function printSkillRuns (line 82) | function printSkillRuns(skillRuns) { function printDecisions (line 96) | function printDecisions(decisions) { function printSessionDetail (line 110) | function printSessionDetail(payload) { function main (line 126) | async function main() { FILE: scripts/setup-package-manager.js function showHelp (line 25) | function showHelp() { function detectAndShow (line 60) | function detectAndShow() { function listAvailable (line 95) | function listAvailable() { function setGlobal (line 115) | function setGlobal(pmName) { function setProject (line 138) | function setProject(pmName) { FILE: scripts/skill-create-output.js constant BOX (line 24) | const BOX = { constant SPINNER (line 36) | const SPINNER = ['⠋', '⠙', '⠹', '⠸', '⠼', '⠴', '⠦', '⠧', '⠇', '⠏']; function box (line 39) | function box(title, content, width = 60) { function stripAnsi (line 50) | function stripAnsi(str) { function progressBar (line 55) | function progressBar(percent, width = 30) { function sleep (line 62) | function sleep(ms) { function animateProgress (line 66) | async function animateProgress(label, steps, callback) { class SkillCreateOutput (line 81) | class SkillCreateOutput { method constructor (line 82) | constructor(repoName, options = {}) { method header (line 88) | header() { method analyzePhase (line 99) | async analyzePhase(data) { method analysisResults (line 112) | analysisResults(data) { method patterns (line 122) | patterns(patterns) { method instincts (line 138) | instincts(instincts) { method output (line 145) | output(skillPath, instinctsPath) { method nextSteps (line 158) | nextSteps() { method footer (line 168) | footer() { function demo (line 177) | async function demo() { FILE: scripts/skills-health.js function showHelp (line 7) | function showHelp() { function requireValue (line 26) | function requireValue(argv, index, argName) { function parseArgs (line 35) | function parseArgs(argv) { function main (line 110) | function main() { FILE: scripts/status.js function showHelp (line 6) | function showHelp(exitCode = 0) { function parseArgs (line 16) | function parseArgs(argv) { function printActiveSessions (line 46) | function printActiveSessions(section) { function printSkillRuns (line 61) | function printSkillRuns(section) { function printInstallHealth (line 84) | function printInstallHealth(section) { function printGovernance (line 105) | function printGovernance(section) { function printHuman (line 119) | function printHuman(payload) { function main (line 131) | async function main() { FILE: scripts/uninstall.js function showHelp (line 6) | function showHelp(exitCode = 0) { function parseArgs (line 15) | function parseArgs(argv) { function printHuman (line 44) | function printHuman(result) { function main (line 68) | function main() { FILE: skills/continuous-learning-v2/scripts/instinct-cli.py function _ensure_global_dirs (line 51) | def _ensure_global_dirs(): function _validate_file_path (line 62) | def _validate_file_path(path_str: str, must_exist: bool = False) -> Path: function _validate_instinct_id (line 89) | def _validate_instinct_id(instinct_id: str) -> bool: function detect_project (line 106) | def detect_project() -> dict: function _update_registry (line 186) | def _update_registry(pid: str, pname: str, proot: str, premote: str) -> ... function load_registry (line 210) | def load_registry() -> dict: function parse_instinct_file (line 223) | def parse_instinct_file(content: str) -> list[dict]: function _load_instincts_from_dir (line 264) | def _load_instincts_from_dir(directory: Path, source_type: str, scope_la... function load_all_instincts (line 290) | def load_all_instincts(project: dict, include_global: bool = True) -> li... function load_project_only_instincts (line 325) | def load_project_only_instincts(project: dict) -> list[dict]: function cmd_status (line 341) | def cmd_status(args) -> int: function _print_instincts_by_domain (line 392) | def _print_instincts_by_domain(instincts: list[dict]) -> None: function cmd_import (line 427) | def cmd_import(args) -> int: function cmd_export (line 577) | def cmd_export(args) -> int: function cmd_evolve (line 646) | def cmd_evolve(args) -> int: function _find_cross_project_instincts (line 762) | def _find_cross_project_instincts() -> dict: function _show_promotion_candidates (line 785) | def _show_promotion_candidates(project: dict) -> None: function cmd_promote (line 821) | def cmd_promote(args) -> int: function _promote_specific (line 833) | def _promote_specific(project: dict, instinct_id: str, force: bool) -> int: function _promote_auto (line 884) | def _promote_auto(project: dict, force: bool, dry_run: bool) -> int: function cmd_projects (line 962) | def cmd_projects(args) -> int: function _generate_evolved (line 1012) | def _generate_evolved(skill_candidates: list, workflow_instincts: list, ... function main (line 1090) | def main() -> int: FILE: skills/continuous-learning-v2/scripts/test_parse_instinct.py function project_tree (line 85) | def project_tree(tmp_path): function patch_globals (line 112) | def patch_globals(project_tree, monkeypatch): function _make_project (line 124) | def _make_project(tree, pid="abc123", pname="test-project"): function test_multiple_instincts_preserve_content (line 179) | def test_multiple_instincts_preserve_content(): function test_single_instinct_preserves_content (line 187) | def test_single_instinct_preserves_content(): function test_empty_content_no_error (line 208) | def test_empty_content_no_error(): function test_parse_no_id_skipped (line 222) | def test_parse_no_id_skipped(): function test_parse_confidence_is_float (line 236) | def test_parse_confidence_is_float(): function test_parse_trigger_strips_quotes (line 252) | def test_parse_trigger_strips_quotes(): function test_parse_empty_string (line 267) | def test_parse_empty_string(): function test_parse_garbage_input (line 272) | def test_parse_garbage_input(): function test_validate_normal_path (line 281) | def test_validate_normal_path(tmp_path): function test_validate_rejects_etc (line 288) | def test_validate_rejects_etc(): function test_validate_rejects_var_log (line 293) | def test_validate_rejects_var_log(): function test_validate_rejects_usr (line 298) | def test_validate_rejects_usr(): function test_validate_rejects_proc (line 303) | def test_validate_rejects_proc(): function test_validate_must_exist_fails (line 308) | def test_validate_must_exist_fails(tmp_path): function test_validate_home_expansion (line 313) | def test_validate_home_expansion(tmp_path): function test_validate_relative_path (line 319) | def test_validate_relative_path(tmp_path, monkeypatch): function test_detect_project_global_fallback (line 332) | def test_detect_project_global_fallback(patch_globals, monkeypatch): function test_detect_project_from_env (line 347) | def test_detect_project_from_env(patch_globals, monkeypatch, tmp_path): function test_detect_project_git_timeout (line 368) | def test_detect_project_git_timeout(patch_globals, monkeypatch): function test_detect_project_creates_directories (line 382) | def test_detect_project_creates_directories(patch_globals, monkeypatch, ... function test_load_from_empty_dir (line 407) | def test_load_from_empty_dir(tmp_path): function test_load_from_nonexistent_dir (line 412) | def test_load_from_nonexistent_dir(tmp_path): function test_load_annotates_metadata (line 417) | def test_load_annotates_metadata(tmp_path): function test_load_defaults_scope_from_label (line 429) | def test_load_defaults_scope_from_label(tmp_path): function test_load_preserves_explicit_scope (line 446) | def test_load_preserves_explicit_scope(tmp_path): function test_load_handles_corrupt_file (line 457) | def test_load_handles_corrupt_file(tmp_path, capsys): function test_load_supports_yml_extension (line 469) | def test_load_supports_yml_extension(tmp_path): function test_load_supports_md_extension (line 478) | def test_load_supports_md_extension(tmp_path): function test_load_instincts_from_dir_uses_utf8_encoding (line 487) | def test_load_instincts_from_dir_uses_utf8_encoding(tmp_path, monkeypatch): function test_load_all_project_and_global (line 506) | def test_load_all_project_and_global(patch_globals): function test_load_all_project_overrides_global (line 522) | def test_load_all_project_overrides_global(patch_globals): function test_load_all_global_only (line 543) | def test_load_all_global_only(patch_globals): function test_load_project_only_excludes_global (line 564) | def test_load_project_only_excludes_global(patch_globals): function test_load_project_only_global_fallback_loads_global (line 578) | def test_load_project_only_global_fallback_loads_global(patch_globals): function test_load_all_empty (line 599) | def test_load_all_empty(patch_globals): function test_cmd_status_no_instincts (line 612) | def test_cmd_status_no_instincts(patch_globals, monkeypatch, capsys): function test_cmd_status_with_instincts (line 625) | def test_cmd_status_with_instincts(patch_globals, monkeypatch, capsys): function test_cmd_status_returns_int (line 645) | def test_cmd_status_returns_int(patch_globals, monkeypatch): function test_cmd_projects_empty_registry (line 660) | def test_cmd_projects_empty_registry(patch_globals, capsys): function test_cmd_projects_with_registry (line 669) | def test_cmd_projects_with_registry(patch_globals, capsys): function test_promote_specific_not_found (line 702) | def test_promote_specific_not_found(patch_globals, capsys): function test_promote_specific_rejects_invalid_id (line 713) | def test_promote_specific_rejects_invalid_id(patch_globals, capsys): function test_promote_specific_already_global (line 724) | def test_promote_specific_already_global(patch_globals, capsys): function test_promote_specific_success (line 740) | def test_promote_specific_success(patch_globals, capsys): function test_promote_auto_no_candidates (line 764) | def test_promote_auto_no_candidates(patch_globals, capsys): function test_promote_auto_dry_run (line 778) | def test_promote_auto_dry_run(patch_globals, capsys): function test_promote_auto_writes_file (line 819) | def test_promote_auto_writes_file(patch_globals, capsys): function test_promote_auto_skips_invalid_id (line 857) | def test_promote_auto_skips_invalid_id(patch_globals, capsys): function test_find_cross_project_empty_registry (line 895) | def test_find_cross_project_empty_registry(patch_globals): function test_find_cross_project_single_project (line 902) | def test_find_cross_project_single_project(patch_globals): function test_find_cross_project_shared_instinct (line 915) | def test_find_cross_project_shared_instinct(patch_globals): function test_load_registry_missing_file (line 939) | def test_load_registry_missing_file(patch_globals): function test_load_registry_corrupt_json (line 944) | def test_load_registry_corrupt_json(patch_globals): function test_load_registry_valid (line 951) | def test_load_registry_valid(patch_globals): function test_load_registry_uses_utf8_encoding (line 959) | def test_load_registry_uses_utf8_encoding(monkeypatch): function test_validate_instinct_id (line 971) | def test_validate_instinct_id(): function test_update_registry_atomic_replaces_file (line 978) | def test_update_registry_atomic_replaces_file(patch_globals): FILE: skills/videodb/scripts/ws_listener.py function default_output_dir (line 60) | def default_output_dir() -> Path: function ensure_private_dir (line 68) | def ensure_private_dir(path: Path) -> Path: function parse_args (line 78) | def parse_args() -> tuple[bool, Path]: function log (line 108) | def log(msg: str): function append_event (line 113) | def append_event(event: dict): function write_pid (line 122) | def write_pid(): function cleanup_pid (line 128) | def cleanup_pid(): function is_fatal_error (line 136) | def is_fatal_error(exc: Exception) -> bool: function listen_with_retry (line 147) | async def listen_with_retry(): function main_async (line 232) | async def main_async(): function main (line 273) | def main(): FILE: tests/ci/validators.test.js function test (line 23) | function test(name, fn) { function createTestDir (line 35) | function createTestDir() { function cleanupTestDir (line 39) | function cleanupTestDir(testDir) { function writeJson (line 43) | function writeJson(filePath, value) { function writeInstallComponentsManifest (line 48) | function writeInstallComponentsManifest(testDir, components) { function runValidatorWithDir (line 64) | function runValidatorWithDir(validatorName, dirConstant, overridePath) { function runValidatorWithDirs (line 98) | function runValidatorWithDirs(validatorName, overrides) { function runValidator (line 125) | function runValidator(validatorName) { function runCatalogValidator (line 143) | function runCatalogValidator(overrides = {}) { function writeCatalogFixture (line 177) | function writeCatalogFixture(testDir, options = {}) { function runTests (line 205) | function runTests() { FILE: tests/codex-config.test.js function test (line 11) | function test(name, fn) { FILE: tests/hooks/auto-tmux-dev.test.js function test (line 15) | function test(name, fn) { function runScript (line 27) | function runScript(input) { function runTests (line 40) | function runTests() { FILE: tests/hooks/check-hook-enabled.test.js function test (line 15) | function test(name, fn) { function runScript (line 27) | function runScript(args = [], envOverrides = {}) { function runTests (line 45) | function runTests() { FILE: tests/hooks/cost-tracker.test.js function test (line 15) | function test(name, fn) { function makeTempDir (line 27) | function makeTempDir() { function runScript (line 31) | function runScript(input, envOverrides = {}) { function runTests (line 42) | function runTests() { FILE: tests/hooks/doc-file-warning.test.js function test (line 10) | function test(name, fn) { function runScript (line 22) | function runScript(input) { function runTests (line 31) | function runTests() { FILE: tests/hooks/evaluate-session.test.js function test (line 19) | function test(name, fn) { function createTestDir (line 31) | function createTestDir() { function cleanupTestDir (line 35) | function cleanupTestDir(testDir) { function createTranscript (line 43) | function createTranscript(dir, messageCount) { function runEvaluate (line 60) | function runEvaluate(stdinJson) { function runTests (line 73) | function runTests() { FILE: tests/hooks/hook-flags.test.js function test (line 20) | function test(name, fn) { function withEnv (line 33) | function withEnv(vars, fn) { function runTests (line 57) | function runTests() { FILE: tests/hooks/hooks.test.js function toBashPath (line 13) | function toBashPath(filePath) { function sleepMs (line 23) | function sleepMs(ms) { function test (line 28) | function test(name, fn) { function asyncTest (line 41) | async function asyncTest(name, fn) { function runScript (line 54) | function runScript(scriptPath, input = '', env = {}) { function runShellScript (line 80) | function runShellScript(scriptPath, args = [], input = '', env = {}, cwd... function createTestDir (line 104) | function createTestDir() { function cleanupTestDir (line 109) | function cleanupTestDir(testDir) { function createCommandShim (line 125) | function createCommandShim(binDir, baseName, logFile) { function readCommandLog (line 148) | function readCommandLog(logFile) { function withPrependedPath (line 164) | function withPrependedPath(binDir, env = {}) { function assertNoProjectDetectionSideEffects (line 176) | function assertNoProjectDetectionSideEffects(homeDir, testName) { function assertObserveSkipBeforeProjectDetection (line 189) | async function assertObserveSkipBeforeProjectDetection(testCase) { function runPatchedRunAll (line 221) | function runPatchedRunAll(tempRoot) { function runTests (line 242) | async function runTests() { FILE: tests/hooks/observer-memory.test.js function test (line 21) | function test(name, fn) { function createTempDir (line 33) | function createTempDir() { function cleanupDir (line 37) | function cleanupDir(dir) { FILE: tests/hooks/post-bash-hooks.test.js function test (line 14) | function test(name, fn) { function runScript (line 26) | function runScript(scriptPath, input) { FILE: tests/hooks/pre-bash-dev-server-block.test.js function test (line 13) | function test(name, fn) { function runScript (line 25) | function runScript(command) { function runTests (line 35) | function runTests() { FILE: tests/hooks/pre-bash-reminders.test.js function test (line 14) | function test(name, fn) { function runScript (line 26) | function runScript(scriptPath, command, envOverrides = {}) { function runTests (line 38) | function runTests() { FILE: tests/hooks/quality-gate.test.js function test (line 14) | function test(name, fn) { FILE: tests/hooks/suggest-compact.test.js function test (line 19) | function test(name, fn) { function runCompact (line 35) | function runCompact(envOverrides = {}) { function getCounterFilePath (line 53) | function getCounterFilePath(sessionId) { function runTests (line 57) | function runTests() { FILE: tests/integration/hooks.test.js constant REPO_ROOT (line 14) | const REPO_ROOT = path.join(__dirname, '..', '..'); function _test (line 17) | function _test(name, fn) { function asyncTest (line 30) | async function asyncTest(name, fn) { function runHookWithInput (line 49) | function runHookWithInput(scriptPath, input = {}, env = {}, timeoutMs = ... function runHookCommand (line 100) | function runHookCommand(command, input = {}, env = {}, timeoutMs = 10000) { function createTestDir (line 165) | function createTestDir() { function cleanupTestDir (line 170) | function cleanupTestDir(testDir) { function runTests (line 175) | async function runTests() { FILE: tests/lib/install-config.test.js function test (line 15) | function test(name, fn) { function createTempDir (line 27) | function createTempDir(prefix) { function cleanup (line 31) | function cleanup(dirPath) { function writeJson (line 35) | function writeJson(filePath, value) { function runTests (line 40) | function runTests() { FILE: tests/lib/install-lifecycle.test.js constant REPO_ROOT (line 21) | const REPO_ROOT = path.join(__dirname, '..', '..'); constant CURRENT_PACKAGE_VERSION (line 22) | const CURRENT_PACKAGE_VERSION = JSON.parse( constant CURRENT_MANIFEST_VERSION (line 25) | const CURRENT_MANIFEST_VERSION = JSON.parse( function test (line 29) | function test(name, fn) { function createTempDir (line 41) | function createTempDir(prefix) { function cleanup (line 45) | function cleanup(dirPath) { function writeState (line 49) | function writeState(filePath, options) { function runTests (line 55) | function runTests() { FILE: tests/lib/install-manifests.test.js function test (line 21) | function test(name, fn) { function createTestRepo (line 33) | function createTestRepo() { function cleanupTestRepo (line 39) | function cleanupTestRepo(root) { function writeJson (line 43) | function writeJson(filePath, value) { function runTests (line 48) | function runTests() { FILE: tests/lib/install-request.test.js function test (line 12) | function test(name, fn) { function runTests (line 24) | function runTests() { FILE: tests/lib/install-state.test.js function test (line 16) | function test(name, fn) { function createTestDir (line 28) | function createTestDir() { function cleanupTestDir (line 32) | function cleanupTestDir(dirPath) { function runTests (line 36) | function runTests() { FILE: tests/lib/install-targets.test.js function normalizedRelativePath (line 14) | function normalizedRelativePath(value) { function test (line 18) | function test(name, fn) { function runTests (line 30) | function runTests() { FILE: tests/lib/orchestration-session.test.js function test (line 23) | function test(desc, fn) { FILE: tests/lib/package-manager.test.js function test (line 16) | function test(name, fn) { function createTestDir (line 29) | function createTestDir() { function cleanupTestDir (line 36) | function cleanupTestDir(testDir) { function runTests (line 41) | function runTests() { FILE: tests/lib/project-detect.test.js function test (line 25) | function test(name, fn) { function createTempDir (line 38) | function createTempDir() { function cleanupDir (line 43) | function cleanupDir(dir) { function writeTestFile (line 50) | function writeTestFile(dir, filePath, content = '') { function runTests (line 57) | function runTests() { FILE: tests/lib/resolve-formatter.test.js function test (line 21) | function test(name, fn) { function makeTmpDir (line 41) | function makeTmpDir() { function cleanupTmpDirs (line 50) | function cleanupTmpDirs() { function runTests (line 61) | function runTests() { FILE: tests/lib/session-adapters.test.js function test (line 24) | function test(name, fn) { function withHome (line 35) | function withHome(homeDir, fn) { method persistCanonicalSessionSnapshot (line 459) | persistCanonicalSessionSnapshot(snapshot, metadata) { method loadStateStoreImpl (line 553) | loadStateStoreImpl() { FILE: tests/lib/session-aliases.test.js function test (line 27) | function test(name, fn) { function resetAliases (line 39) | function resetAliases() { function runTests (line 50) | function runTests() { FILE: tests/lib/session-manager.test.js function test (line 15) | function test(name, fn) { function createTempSessionDir (line 28) | function createTempSessionDir() { function cleanup (line 34) | function cleanup(dir) { function runTests (line 42) | function runTests() { FILE: tests/lib/shell-split.test.js function test (line 10) | function test(desc, fn) { FILE: tests/lib/skill-dashboard.test.js constant HEALTH_SCRIPT (line 17) | const HEALTH_SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'skill... function test (line 19) | function test(name, fn) { function createTempDir (line 31) | function createTempDir(prefix) { function cleanupTempDir (line 35) | function cleanupTempDir(dirPath) { function createSkill (line 39) | function createSkill(skillRoot, name, content) { function appendJsonl (line 46) | function appendJsonl(filePath, rows) { function runCli (line 52) | function runCli(args) { function runTests (line 58) | function runTests() { FILE: tests/lib/skill-evolution.test.js constant HEALTH_SCRIPT (line 19) | const HEALTH_SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'skill... function test (line 21) | function test(name, fn) { function createTempDir (line 33) | function createTempDir(prefix) { function cleanupTempDir (line 37) | function cleanupTempDir(dirPath) { function createSkill (line 41) | function createSkill(skillRoot, name, content) { function appendJsonl (line 48) | function appendJsonl(filePath, rows) { function readJson (line 54) | function readJson(filePath) { function runCli (line 58) | function runCli(args, options = {}) { function runTests (line 68) | function runTests() { FILE: tests/lib/skill-improvement.test.js function test (line 23) | function test(name, fn) { function makeProjectRoot (line 34) | function makeProjectRoot(prefix) { function cleanup (line 38) | function cleanup(dirPath) { FILE: tests/lib/state-store.test.js constant ECC_SCRIPT (line 16) | const ECC_SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'ecc.js'); constant STATUS_SCRIPT (line 17) | const STATUS_SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'statu... constant SESSIONS_SCRIPT (line 18) | const SESSIONS_SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'ses... function test (line 20) | async function test(name, fn) { function createTempDir (line 32) | function createTempDir(prefix) { function cleanupTempDir (line 36) | function cleanupTempDir(dirPath) { function runNode (line 40) | function runNode(scriptPath, args = [], options = {}) { function parseJson (line 51) | function parseJson(stdout) { function seedStore (line 55) | async function seedStore(dbPath) { function runTests (line 255) | async function runTests() { FILE: tests/lib/tmux-worktree-orchestrator.test.js function test (line 23) | function test(desc, fn) { method spawnSync (line 313) | spawnSync(program, args) { method runCommand (line 320) | runCommand(program, args) { method materializePlan (line 333) | materializePlan(receivedPlan) { method overlaySeedPaths (line 336) | overlaySeedPaths() { method rollbackCreatedResources (line 339) | rollbackCreatedResources(receivedPlan, createdState) { method spawnSync (line 384) | spawnSync(program, args) { method runCommand (line 390) | runCommand(program, args) { method materializePlan (line 402) | materializePlan() {} method rollbackCreatedResources (line 403) | rollbackCreatedResources(receivedPlan, createdState) { FILE: tests/lib/utils.test.js function test (line 15) | function test(name, fn) { function runTests (line 28) | function runTests() { FILE: tests/opencode-config.test.js function test (line 11) | function test(name, fn) { function walk (line 47) | function walk(value) { FILE: tests/run-all.js constant TEST_GLOB (line 14) | const TEST_GLOB = 'tests/**/*.test.js'; function matchesTestGlob (line 16) | function matchesTestGlob(relativePath) { function walkFiles (line 25) | function walkFiles(dir, acc = []) { function discoverTestFiles (line 38) | function discoverTestFiles() { constant BOX_W (line 48) | const BOX_W = 58; FILE: tests/scripts/claw.test.js function test (line 33) | function test(name, fn) { function makeTmpDir (line 46) | function makeTmpDir() { function runTests (line 50) | function runTests() { FILE: tests/scripts/doctor.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'doctor.js'); constant REPO_ROOT (line 12) | const REPO_ROOT = path.join(__dirname, '..', '..'); constant CURRENT_PACKAGE_VERSION (line 13) | const CURRENT_PACKAGE_VERSION = JSON.parse( constant CURRENT_MANIFEST_VERSION (line 16) | const CURRENT_MANIFEST_VERSION = JSON.parse( function createTempDir (line 24) | function createTempDir(prefix) { function cleanup (line 28) | function cleanup(dirPath) { function writeState (line 32) | function writeState(filePath, options) { function run (line 37) | function run(args = [], options = {}) { function test (line 62) | function test(name, fn) { function runTests (line 74) | function runTests() { FILE: tests/scripts/ecc.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'ecc.js'); function runCli (line 13) | function runCli(args, options = {}) { function createTempDir (line 37) | function createTempDir(prefix) { function parseJson (line 41) | function parseJson(stdout) { function runTest (line 45) | function runTest(name, fn) { function main (line 57) | function main() { FILE: tests/scripts/harness-audit.test.js constant SCRIPT (line 9) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'harness-audi... function run (line 11) | function run(args = []) { function test (line 22) | function test(name, fn) { function runTests (line 34) | function runTests() { FILE: tests/scripts/install-apply.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'install-appl... function createTempDir (line 13) | function createTempDir(prefix) { function cleanup (line 17) | function cleanup(dirPath) { function readJson (line 21) | function readJson(filePath) { function run (line 25) | function run(args = [], options = {}) { function test (line 51) | function test(name, fn) { function runTests (line 63) | function runTests() { FILE: tests/scripts/install-plan.test.js constant SCRIPT (line 9) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'install-plan... function run (line 11) | function run(args = []) { function test (line 28) | function test(name, fn) { function runTests (line 40) | function runTests() { FILE: tests/scripts/install-ps1.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'install.ps1'); constant PACKAGE_JSON (line 12) | const PACKAGE_JSON = path.join(__dirname, '..', '..', 'package.json'); function createTempDir (line 14) | function createTempDir(prefix) { function cleanup (line 18) | function cleanup(dirPath) { function resolvePowerShellCommand (line 22) | function resolvePowerShellCommand() { function run (line 42) | function run(powerShellCommand, args = [], options = {}) { function test (line 68) | function test(name, fn) { function runTests (line 80) | function runTests() { FILE: tests/scripts/install-sh.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'install.sh'); function createTempDir (line 13) | function createTempDir(prefix) { function cleanup (line 17) | function cleanup(dirPath) { function run (line 21) | function run(args = [], options = {}) { function test (line 46) | function test(name, fn) { function runTests (line 58) | function runTests() { FILE: tests/scripts/list-installed.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'list-install... constant REPO_ROOT (line 12) | const REPO_ROOT = path.join(__dirname, '..', '..'); constant CURRENT_PACKAGE_VERSION (line 13) | const CURRENT_PACKAGE_VERSION = JSON.parse( constant CURRENT_MANIFEST_VERSION (line 16) | const CURRENT_MANIFEST_VERSION = JSON.parse( function createTempDir (line 24) | function createTempDir(prefix) { function cleanup (line 28) | function cleanup(dirPath) { function writeState (line 32) | function writeState(filePath, options) { function run (line 37) | function run(args = [], options = {}) { function test (line 62) | function test(name, fn) { function runTests (line 74) | function runTests() { FILE: tests/scripts/orchestrate-codex-worker.test.js constant SCRIPT (line 9) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'orchestrate-... function test (line 16) | function test(desc, fn) { FILE: tests/scripts/orchestration-status.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'orchestratio... function run (line 13) | function run(args = [], options = {}) { function test (line 31) | function test(name, fn) { function runTests (line 43) | function runTests() { FILE: tests/scripts/repair.test.js constant INSTALL_SCRIPT (line 11) | const INSTALL_SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'inst... constant DOCTOR_SCRIPT (line 12) | const DOCTOR_SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'docto... constant REPAIR_SCRIPT (line 13) | const REPAIR_SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'repai... constant REPO_ROOT (line 14) | const REPO_ROOT = path.join(__dirname, '..', '..'); constant CURRENT_PACKAGE_VERSION (line 15) | const CURRENT_PACKAGE_VERSION = JSON.parse( constant CURRENT_MANIFEST_VERSION (line 18) | const CURRENT_MANIFEST_VERSION = JSON.parse( function createTempDir (line 26) | function createTempDir(prefix) { function cleanup (line 30) | function cleanup(dirPath) { function writeState (line 34) | function writeState(filePath, options) { function runNode (line 40) | function runNode(scriptPath, args = [], options = {}) { function test (line 65) | function test(name, fn) { function runTests (line 77) | function runTests() { FILE: tests/scripts/session-inspect.test.js constant SCRIPT (line 13) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'session-insp... function run (line 15) | function run(args = [], options = {}) { function test (line 49) | function test(name, fn) { function runTests (line 61) | function runTests() { FILE: tests/scripts/setup-package-manager.test.js constant SCRIPT (line 15) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'setup-packag... function run (line 18) | function run(args = [], env = {}) { function test (line 37) | function test(name, fn) { function runTests (line 49) | function runTests() { FILE: tests/scripts/skill-create-output.test.js function test (line 19) | function test(name, fn) { function stripAnsi (line 32) | function stripAnsi(str) { function captureLog (line 38) | function captureLog(fn) { function runTests (line 50) | function runTests() { FILE: tests/scripts/uninstall.test.js constant INSTALL_SCRIPT (line 11) | const INSTALL_SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'inst... constant SCRIPT (line 12) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'uninstall.js'); constant REPO_ROOT (line 13) | const REPO_ROOT = path.join(__dirname, '..', '..'); constant CURRENT_PACKAGE_VERSION (line 14) | const CURRENT_PACKAGE_VERSION = JSON.parse( constant CURRENT_MANIFEST_VERSION (line 17) | const CURRENT_MANIFEST_VERSION = JSON.parse( function createTempDir (line 25) | function createTempDir(prefix) { function cleanup (line 29) | function cleanup(dirPath) { function writeState (line 33) | function writeState(filePath, options) { function run (line 39) | function run(args = [], options = {}) { function test (line 64) | function test(name, fn) { function runTests (line 76) | function runTests() {