SYMBOL INDEX (4837 symbols across 364 files) FILE: .codebuddy/install.js function getHomeDir (line 21) | function getHomeDir() { function ensureDir (line 28) | function ensureDir(dirPath) { function readLines (line 43) | function readLines(filePath) { function manifestHasEntry (line 58) | function manifestHasEntry(manifestPath, entry) { function ensureManifestEntry (line 66) | function ensureManifestEntry(manifestPath, entry) { function copyManagedFile (line 81) | function copyManagedFile(sourcePath, targetPath, manifestPath, manifestE... function findFiles (line 113) | function findFiles(dir, extension = '') { function doInstall (line 146) | function doInstall() { FILE: .codebuddy/uninstall.js function getHomeDir (line 19) | function getHomeDir() { function resolvePath (line 26) | function resolvePath(filePath) { function isValidManifestEntry (line 38) | function isValidManifestEntry(entry) { function readManifest (line 53) | function readManifest(manifestPath) { function findEmptyDirs (line 68) | function findEmptyDirs(dirPath) { function promptConfirm (line 102) | async function promptConfirm(question) { function doUninstall (line 119) | async function doUninstall() { 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 ECCHooksPluginFn (line 26) | type ECCHooksPluginFn = (input: PluginInput) => Promise | undefined): string ... FILE: .opencode/plugins/lib/changed-files-store.ts type ChangeType (line 3) | type ChangeType = "added" | "modified" | "deleted" function initStore (line 8) | function initStore(worktree: string): void { function toRelative (line 12) | function toRelative(p: string): string { function recordChange (line 22) | function recordChange(filePath: string, type: ChangeType): void { function getChanges (line 28) | function getChanges(): Map { function clearChanges (line 32) | function clearChanges(): void { type TreeNode (line 36) | type TreeNode = { function addToTree (line 43) | function addToTree(children: TreeNode[], segs: string[], fullPath: strin... function buildTree (line 66) | function buildTree(filter?: ChangeType): TreeNode[] { function getChangedPaths (line 86) | function getChangedPaths(filter?: ChangeType): Array<{ path: string; cha... function hasChanges (line 96) | function hasChanges(): boolean { FILE: .opencode/tools/changed-files.ts constant INDICATORS (line 10) | const INDICATORS: Record = { function renderTree (line 16) | function renderTree(nodes: TreeNode[], indent: string): string { method execute (line 42) | async execute(args, context) { FILE: .opencode/tools/check-coverage.ts method execute (line 29) | async execute(args, context) { type CoverageSummary (line 105) | interface CoverageSummary { type CoverageResult (line 119) | interface CoverageResult { function parseCoverageData (line 131) | 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 48) | function detectFormatter(cwd: string, ext: string): Formatter | null { function buildFormatterCommand (line 61) | function buildFormatterCommand(formatter: Formatter, filePath: string): ... FILE: .opencode/tools/git-summary.ts method execute (line 27) | async execute(args, context) { function run (line 50) | 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 48) | function detectLinter(cwd: string): Linter { function buildLintCommand (line 81) | 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 102) | async function detectPackageManager(cwd: string): Promise { function detectTestFramework (line 119) | async function detectTestFramework(cwd: string): Promise { FILE: .opencode/tools/security-audit.ts method execute (line 32) | async execute(args, context) { type AuditCheck (line 111) | interface AuditCheck { type AuditResults (line 120) | interface AuditResults { function scanForSecrets (line 132) | async function scanForSecrets( function scanDirectory (line 174) | async function scanDirectory( function scanFile (line 197) | async function scanFile( function scanCodeSecurity (line 225) | async function scanCodeSecurity( function generateRecommendations (line 248) | function generateRecommendations(results: AuditResults): string[] { FILE: ecc2/src/comms/mod.rs type TaskPriority (line 9) | pub enum TaskPriority { method fmt (line 18) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type MessageType (line 31) | pub enum MessageType { function send (line 53) | pub fn send(db: &StateStore, from: &str, to: &str, msg: &MessageType) ->... function message_type_name (line 60) | pub fn message_type_name(msg: &MessageType) -> &'static str { function parse (line 70) | pub fn parse(content: &str) -> Option { function preview (line 74) | pub fn preview(msg_type: &str, content: &str) -> String { function handoff_priority (line 115) | pub fn handoff_priority(content: &str) -> TaskPriority { function extract_legacy_handoff_priority (line 122) | fn extract_legacy_handoff_priority(content: &str) -> TaskPriority { function priority_label (line 139) | fn priority_label(priority: TaskPriority) -> &'static str { function truncate (line 148) | fn truncate(value: &str, max_chars: usize) -> String { FILE: ecc2/src/config/mod.rs type PaneLayout (line 14) | pub enum PaneLayout { type RiskThresholds (line 23) | pub struct RiskThresholds { type BudgetAlertThresholds (line 31) | pub struct BudgetAlertThresholds { method sanitized (line 888) | pub fn sanitized(self) -> Self { type ConflictResolutionStrategy (line 39) | pub enum ConflictResolutionStrategy { type ConflictResolutionConfig (line 47) | pub struct ConflictResolutionConfig { type ComputerUseDispatchConfig (line 55) | pub struct ComputerUseDispatchConfig { type AgentProfileConfig (line 65) | pub struct AgentProfileConfig { type ResolvedAgentProfile (line 79) | pub struct ResolvedAgentProfile { method apply (line 751) | fn apply(&mut self, profile_name: &str, config: &AgentProfileConfig) { type HarnessRunnerConfig (line 94) | pub struct HarnessRunnerConfig { type OrchestrationTemplateConfig (line 115) | pub struct OrchestrationTemplateConfig { type OrchestrationTemplateStepConfig (line 127) | pub struct OrchestrationTemplateStepConfig { type MemoryConnectorConfig (line 139) | pub enum MemoryConnectorConfig { type MemoryConnectorJsonlFileConfig (line 149) | pub struct MemoryConnectorJsonlFileConfig { type MemoryConnectorJsonlDirectoryConfig (line 158) | pub struct MemoryConnectorJsonlDirectoryConfig { type MemoryConnectorMarkdownFileConfig (line 168) | pub struct MemoryConnectorMarkdownFileConfig { type MemoryConnectorMarkdownDirectoryConfig (line 177) | pub struct MemoryConnectorMarkdownDirectoryConfig { type MemoryConnectorDotenvFileConfig (line 187) | pub struct MemoryConnectorDotenvFileConfig { type ResolvedOrchestrationTemplate (line 199) | pub struct ResolvedOrchestrationTemplate { type ResolvedOrchestrationTemplateStep (line 208) | pub struct ResolvedOrchestrationTemplateStep { type Config (line 220) | pub struct Config { constant RISK_THRESHOLDS (line 326) | pub const RISK_THRESHOLDS: RiskThresholds = RiskThresholds { constant BUDGET_ALERT_THRESHOLDS (line 332) | pub const BUDGET_ALERT_THRESHOLDS: BudgetAlertThresholds = BudgetAlert... method config_path (line 338) | pub fn config_path() -> PathBuf { method cost_metrics_path (line 342) | pub fn cost_metrics_path(&self) -> PathBuf { method tool_activity_metrics_path (line 350) | pub fn tool_activity_metrics_path(&self) -> PathBuf { method effective_budget_alert_thresholds (line 358) | pub fn effective_budget_alert_thresholds(&self) -> BudgetAlertThreshol... method computer_use_dispatch_defaults (line 362) | pub fn computer_use_dispatch_defaults(&self) -> ResolvedComputerUseDis... method resolve_agent_profile (line 382) | pub fn resolve_agent_profile(&self, name: &str) -> Result Option<&HarnessRunnerCo... method resolve_orchestration_template (line 392) | pub fn resolve_orchestration_template( method resolve_agent_profile_inner (line 466) | fn resolve_agent_profile_inner( method load (line 493) | pub fn load() -> Result { method load_from_paths (line 502) | fn load_from_paths( method config_root (line 520) | fn config_root() -> PathBuf { method legacy_global_config_path (line 528) | fn legacy_global_config_path() -> PathBuf { method global_config_paths (line 535) | fn global_config_paths() -> Vec { method project_config_paths_from (line 546) | fn project_config_paths_from(start: &std::path::Path) -> Vec { method merge_config_file (line 571) | fn merge_config_file(base: &mut toml::Value, path: &std::path::Path) -... method merge_toml_values (line 580) | fn merge_toml_values(base: &mut toml::Value, overlay: toml::Value) { method save (line 595) | pub fn save(&self) -> Result<()> { method save_to_path (line 599) | pub fn save_to_path(&self, path: &std::path::Path) -> Result<()> { type PaneNavigationConfig (line 258) | pub struct PaneNavigationConfig { method action_for_key (line 626) | pub fn action_for_key(&self, key: KeyEvent) -> Option String { method movement_shortcuts_label (line 654) | pub fn movement_shortcuts_label(&self) -> String { type PaneNavigationAction (line 270) | pub enum PaneNavigationAction { type Theme (line 279) | pub enum Theme { method default (line 285) | fn default() -> Self { method default (line 611) | fn default() -> Self { function shortcut_matches (line 668) | fn shortcut_matches(spec: &str, key: KeyEvent) -> bool { function parse_shortcut (line 673) | fn parse_shortcut(spec: &str) -> Option<(KeyModifiers, KeyCode)> { function parse_single_char (line 697) | fn parse_single_char(value: &str) -> Option { function shortcut_label (line 703) | fn shortcut_label(spec: &str) -> String { method default (line 723) | fn default() -> Self { method default (line 729) | fn default() -> Self { method default (line 735) | fn default() -> Self { method default (line 741) | fn default() -> Self { method default (line 784) | fn default() -> Self { method default (line 807) | fn default() -> Self { type ResolvedComputerUseDispatchConfig (line 819) | pub struct ResolvedComputerUseDispatchConfig { function merge_unique (line 827) | fn merge_unique(base: &mut Vec, additions: &[T]) function interpolate_optional_string (line 838) | fn interpolate_optional_string( function interpolate_required_string (line 857) | fn interpolate_required_string(value: &str, vars: &BTreeMap Result { method drop (line 42) | fn drop(&mut self) { type Cli (line 60) | struct Cli { type WorktreePolicyArgs (line 66) | struct WorktreePolicyArgs { method resolve (line 76) | fn resolve(&self, cfg: &config::Config) -> bool { type OptionalWorktreePolicyArgs (line 88) | struct OptionalWorktreePolicyArgs { method resolve (line 98) | fn resolve(&self, default_value: bool) -> bool { type Commands (line 110) | enum Commands { type MessageCommands (line 441) | enum MessageCommands { type ScheduleCommands (line 468) | enum ScheduleCommands { type RemoteCommands (line 518) | enum RemoteCommands { type MigrationCommands (line 616) | enum MigrationCommands { type GraphCommands (line 740) | enum GraphCommands { type MessageKindArg (line 945) | enum MessageKindArg { type TaskPriorityArg (line 955) | enum TaskPriorityArg { function from (line 963) | fn from(value: TaskPriorityArg) -> Self { type ObservationPriorityArg (line 974) | enum ObservationPriorityArg { function from (line 982) | fn from(value: ObservationPriorityArg) -> Self { type GraphConnectorSyncStats (line 993) | struct GraphConnectorSyncStats { type GraphConnectorSyncReport (line 1003) | struct GraphConnectorSyncReport { type GraphConnectorStatus (line 1014) | struct GraphConnectorStatus { type GraphConnectorStatusReport (line 1027) | struct GraphConnectorStatusReport { type LegacyMigrationReadiness (line 1034) | enum LegacyMigrationReadiness { type LegacyMigrationArtifact (line 1041) | struct LegacyMigrationArtifact { type LegacyMigrationAuditSummary (line 1051) | struct LegacyMigrationAuditSummary { type LegacyMigrationAuditReport (line 1059) | struct LegacyMigrationAuditReport { type LegacyMigrationPlanStep (line 1068) | struct LegacyMigrationPlanStep { type LegacyMigrationPlanReport (line 1080) | struct LegacyMigrationPlanReport { type LegacyMigrationScaffoldReport (line 1088) | struct LegacyMigrationScaffoldReport { type LegacyScheduleImportJobStatus (line 1097) | enum LegacyScheduleImportJobStatus { type LegacyScheduleImportJobReport (line 1106) | struct LegacyScheduleImportJobReport { type LegacyScheduleImportReport (line 1123) | struct LegacyScheduleImportReport { type LegacyMemoryImportReport (line 1137) | struct LegacyMemoryImportReport { type LegacyEnvImportSourceStatus (line 1145) | enum LegacyEnvImportSourceStatus { type LegacyEnvImportSourceReport (line 1152) | struct LegacyEnvImportSourceReport { type LegacyEnvImportReport (line 1160) | struct LegacyEnvImportReport { type LegacySkillImportEntry (line 1172) | struct LegacySkillImportEntry { type LegacySkillImportReport (line 1180) | struct LegacySkillImportReport { type LegacySkillTemplateFile (line 1190) | struct LegacySkillTemplateFile { type LegacyToolImportEntry (line 1195) | struct LegacyToolImportEntry { type LegacyToolImportReport (line 1204) | struct LegacyToolImportReport { type LegacyToolTemplateFile (line 1214) | struct LegacyToolTemplateFile { type LegacyPluginImportEntry (line 1219) | struct LegacyPluginImportEntry { type LegacyPluginImportReport (line 1228) | struct LegacyPluginImportReport { type LegacyPluginTemplateFile (line 1238) | struct LegacyPluginTemplateFile { type LegacyRemoteImportRequestStatus (line 1244) | enum LegacyRemoteImportRequestStatus { type LegacyRemoteImportRequestReport (line 1253) | struct LegacyRemoteImportRequestReport { type LegacyRemoteImportReport (line 1275) | struct LegacyRemoteImportReport { type RemoteDispatchHttpRequest (line 1288) | struct RemoteDispatchHttpRequest { type RemoteComputerUseHttpRequest (line 1300) | struct RemoteComputerUseHttpRequest { type JsonlMemoryConnectorRecord (line 1315) | struct JsonlMemoryConnectorRecord { constant MARKDOWN_CONNECTOR_SUMMARY_LIMIT (line 1327) | const MARKDOWN_CONNECTOR_SUMMARY_LIMIT: usize = 160; constant MARKDOWN_CONNECTOR_BODY_LIMIT (line 1328) | const MARKDOWN_CONNECTOR_BODY_LIMIT: usize = 4000; constant DOTENV_CONNECTOR_VALUE_LIMIT (line 1329) | const DOTENV_CONNECTOR_VALUE_LIMIT: usize = 160; type MarkdownMemorySection (line 1332) | struct MarkdownMemorySection { type DotenvMemoryEntry (line 1341) | struct DotenvMemoryEntry { function main (line 1349) | async fn main() -> Result<()> { function resolve_session_id (line 2762) | fn resolve_session_id(db: &session::store::StateStore, value: &str) -> R... function sync_runtime_session_metrics (line 2775) | fn sync_runtime_session_metrics( function sync_memory_connector (line 2787) | fn sync_memory_connector( function sync_all_memory_connectors (line 2817) | fn sync_all_memory_connectors( function memory_connector_status_report (line 2838) | fn memory_connector_status_report( function describe_memory_connector (line 2873) | fn describe_memory_connector( function sync_jsonl_memory_connector (line 2927) | fn sync_jsonl_memory_connector( function sync_jsonl_directory_memory_connector (line 2970) | fn sync_jsonl_directory_memory_connector( function sync_jsonl_memory_reader (line 3036) | fn sync_jsonl_memory_reader( function sync_markdown_memory_connector (line 3083) | fn sync_markdown_memory_connector( function sync_markdown_directory_memory_connector (line 3123) | fn sync_markdown_directory_memory_connector( function sync_markdown_memory_path (line 3187) | fn sync_markdown_memory_path( function sync_dotenv_memory_connector (line 3240) | fn sync_dotenv_memory_connector( function import_memory_connector_record (line 3301) | fn import_memory_connector_record( function collect_jsonl_paths (line 3375) | fn collect_jsonl_paths(root: &Path, recurse: bool) -> Result Result> { function collect_markdown_paths (line 3389) | fn collect_markdown_paths(root: &Path, recurse: bool) -> Result Result { function collect_jsonl_paths_inner (line 3408) | fn collect_jsonl_paths_inner(root: &Path, recurse: bool, paths: &mut Vec... function collect_json_paths_inner (line 3431) | fn collect_json_paths_inner(root: &Path, recurse: bool, paths: &mut Vec<... function collect_markdown_paths_inner (line 3454) | fn collect_markdown_paths_inner( function parse_dotenv_memory_entries (line 3483) | fn parse_dotenv_memory_entries( function parse_markdown_memory_sections (line 3549) | fn parse_markdown_memory_sections( function markdown_heading_title (line 3623) | fn markdown_heading_title(line: &str) -> Option<&str> { function markdown_memory_section (line 3636) | fn markdown_memory_section( function markdown_section_summary (line 3667) | fn markdown_section_summary(heading: &str, body: &str) -> String { function markdown_heading_slug (line 3676) | fn markdown_heading_slug(value: &str) -> String { function truncate_connector_text (line 3691) | fn truncate_connector_text(value: &str, max_chars: usize) -> String { function parse_dotenv_assignment (line 3700) | fn parse_dotenv_assignment(line: &str) -> Option<(&str, &str)> { function parse_dotenv_value (line 3710) | fn parse_dotenv_value(raw: &str) -> String { function dotenv_key_included (line 3727) | fn dotenv_key_included(key: &str, settings: &config::MemoryConnectorDote... function dotenv_key_is_secret (line 3752) | fn dotenv_key_is_secret(key: &str) -> bool { function build_message (line 3767) | fn build_message( function format_remote_dispatch_action (line 3799) | fn format_remote_dispatch_action(action: &session::manager::RemoteDispat... function format_remote_dispatch_kind (line 3819) | fn format_remote_dispatch_kind(kind: session::RemoteDispatchKind) -> &'s... function short_session (line 3826) | fn short_session(session_id: &str) -> String { function run_remote_dispatch_server (line 3830) | fn run_remote_dispatch_server( function handle_remote_dispatch_connection (line 3864) | fn handle_remote_dispatch_connection( function read_http_request (line 4044) | fn read_http_request( function write_http_response (line 4107) | fn write_http_response( function format_coordination_status (line 4131) | fn format_coordination_status( function run_coordination_loop (line 4142) | async fn run_coordination_loop( type CoordinateBacklogPassSummary (line 4202) | struct CoordinateBacklogPassSummary { type CoordinateBacklogRun (line 4218) | struct CoordinateBacklogRun { type MaintainCoordinationRun (line 4225) | struct MaintainCoordinationRun { type WorktreeMergeReadinessReport (line 4233) | struct WorktreeMergeReadinessReport { type WorktreeStatusReport (line 4240) | struct WorktreeStatusReport { type WorktreeResolutionReport (line 4258) | struct WorktreeResolutionReport { type OtlpExport (line 4275) | struct OtlpExport { type OtlpResourceSpans (line 4281) | struct OtlpResourceSpans { type OtlpResource (line 4288) | struct OtlpResource { type OtlpScopeSpans (line 4294) | struct OtlpScopeSpans { type OtlpInstrumentationScope (line 4301) | struct OtlpInstrumentationScope { type OtlpSpan (line 4308) | struct OtlpSpan { type OtlpSpanLink (line 4325) | struct OtlpSpanLink { type OtlpSpanStatus (line 4334) | struct OtlpSpanStatus { type OtlpKeyValue (line 4342) | struct OtlpKeyValue { type OtlpAnyValue (line 4349) | struct OtlpAnyValue { function build_worktree_status_report (line 4360) | fn build_worktree_status_report( function build_worktree_resolution_report (line 4423) | fn build_worktree_resolution_report( function format_worktree_status_human (line 4480) | fn format_worktree_status_human(report: &WorktreeStatusReport) -> String { function format_worktree_status_reports_human (line 4528) | fn format_worktree_status_reports_human(reports: &[WorktreeStatusReport]... function format_worktree_resolution_human (line 4536) | fn format_worktree_resolution_human(report: &WorktreeResolutionReport) -... function format_worktree_resolution_reports_human (line 4577) | fn format_worktree_resolution_reports_human(reports: &[WorktreeResolutio... function format_worktree_merge_human (line 4589) | fn format_worktree_merge_human(outcome: &session::manager::WorktreeMerge... function format_bulk_worktree_merge_human (line 4611) | fn format_bulk_worktree_merge_human( function worktree_status_exit_code (line 4692) | fn worktree_status_exit_code(report: &WorktreeStatusReport) -> i32 { function worktree_status_reports_exit_code (line 4696) | fn worktree_status_reports_exit_code(reports: &[WorktreeStatusReport]) -... function worktree_resolution_reports_exit_code (line 4704) | fn worktree_resolution_reports_exit_code(reports: &[WorktreeResolutionRe... function format_prune_worktrees_human (line 4712) | fn format_prune_worktrees_human(outcome: &session::manager::WorktreePrun... function format_logged_decision_human (line 4754) | fn format_logged_decision_human(entry: &session::DecisionLogEntry) -> St... function format_decisions_human (line 4777) | fn format_decisions_human(entries: &[session::DecisionLogEntry], include... function format_graph_entity_human (line 4811) | fn format_graph_entity_human(entity: &session::ContextGraphEntity) -> St... function format_graph_entities_human (line 4843) | fn format_graph_entities_human( function format_graph_relation_human (line 4876) | fn format_graph_relation_human(relation: &session::ContextGraphRelation)... function format_graph_relations_human (line 4905) | fn format_graph_relations_human(relations: &[session::ContextGraphRelati... function format_graph_observation_human (line 4923) | fn format_graph_observation_human(observation: &session::ContextGraphObs... function format_graph_observations_human (line 4953) | fn format_graph_observations_human(observations: &[session::ContextGraph... function build_legacy_migration_audit_report (line 4981) | fn build_legacy_migration_audit_report(source: &Path) -> Result Result> { function count_files_recursive (line 5225) | fn count_files_recursive(path: &Path) -> Result { function detect_legacy_workspace_systems (line 5242) | fn detect_legacy_workspace_systems( function build_legacy_migration_next_steps (line 5264) | fn build_legacy_migration_next_steps(artifacts: &[LegacyMigrationArtifac... type LegacyScheduleDraft (line 5325) | struct LegacyScheduleDraft { type LegacyRemoteDispatchDraft (line 5339) | struct LegacyRemoteDispatchDraft { function load_legacy_schedule_drafts (line 5357) | fn load_legacy_schedule_drafts(source: &Path) -> Result Result( function legacy_remote_dispatch_entry_is_relevant (line 5509) | fn legacy_remote_dispatch_entry_is_relevant(value: &serde_json::Value) -... function build_legacy_remote_dispatch_draft (line 5556) | fn build_legacy_remote_dispatch_draft( function detect_legacy_remote_dispatch_kind (line 5637) | fn detect_legacy_remote_dispatch_kind(value: &serde_json::Value) -> sess... function build_legacy_schedule_draft (line 5676) | fn build_legacy_schedule_draft( function json_string_candidates (line 5731) | fn json_string_candidates(value: &serde_json::Value, paths: &[&[&str]]) ... function json_bool_candidates (line 5738) | fn json_bool_candidates(value: &serde_json::Value, paths: &[&[&str]]) ->... function json_task_priority_candidates (line 5752) | fn json_task_priority_candidates( function format_task_priority_arg (line 5777) | fn format_task_priority_arg(priority: TaskPriorityArg) -> &'static str { function json_lookup (line 5786) | fn json_lookup<'a>(value: &'a serde_json::Value, path: &[&str]) -> Optio... function json_to_string (line 5794) | fn json_to_string(value: &serde_json::Value) -> Option { function shell_quote_double (line 5809) | fn shell_quote_double(value: &str) -> String { function validate_schedule_cron_expr (line 5819) | fn validate_schedule_cron_expr(expr: &str) -> Result<()> { function build_legacy_schedule_add_command (line 5835) | fn build_legacy_schedule_add_command(draft: &LegacyScheduleDraft) -> Opt... function import_legacy_schedules (line 5863) | fn import_legacy_schedules( function import_legacy_memory (line 5992) | fn import_legacy_memory( function import_legacy_env_services (line 6051) | fn import_legacy_env_services( function build_legacy_env_connector (line 6122) | fn build_legacy_env_connector( function import_legacy_skills (line 6157) | fn import_legacy_skills(source: &Path, output_dir: &Path) -> Result String { function extract_legacy_skill_summary (line 6312) | fn extract_legacy_skill_summary(body: &str) -> Option { function extract_legacy_skill_excerpt (line 6319) | fn extract_legacy_skill_excerpt(body: &str, max_lines: usize, max_chars:... function slugify_legacy_skill_template_name (line 6341) | fn slugify_legacy_skill_template_name(relative_path: &Path) -> String { function format_legacy_skill_import_summary_markdown (line 6360) | fn format_legacy_skill_import_summary_markdown(report: &LegacySkillImpor... function import_legacy_tools (line 6390) | fn import_legacy_tools(source: &Path, output_dir: &Path) -> Result Result> { function collect_legacy_tool_paths_inner (line 6509) | fn collect_legacy_tool_paths_inner(root: &Path, paths: &mut Vec... function is_legacy_tool_candidate (line 6531) | fn is_legacy_tool_candidate(path: &Path) -> bool { function build_legacy_tool_draft (line 6538) | fn build_legacy_tool_draft( function extract_legacy_tool_title (line 6571) | fn extract_legacy_tool_title(relative_path: &Path) -> String { function extract_legacy_tool_summary (line 6580) | fn extract_legacy_tool_summary(body: &str) -> Option { function extract_legacy_tool_excerpt (line 6600) | fn extract_legacy_tool_excerpt(body: &str, max_lines: usize, max_chars: ... function classify_legacy_tool_surface (line 6625) | fn classify_legacy_tool_surface(source_path: &str, body: &str) -> &'stat... function format_legacy_tool_import_summary_markdown (line 6645) | fn format_legacy_tool_import_summary_markdown(report: &LegacyToolImportR... function import_legacy_plugins (line 6676) | fn import_legacy_plugins(source: &Path, output_dir: &Path) -> Result &'st... function format_legacy_plugin_import_summary_markdown (line 6846) | fn format_legacy_plugin_import_summary_markdown(report: &LegacyPluginImp... function build_legacy_remote_add_command (line 6880) | fn build_legacy_remote_add_command(draft: &LegacyRemoteDispatchDraft) ->... function import_legacy_remote_dispatch (line 6965) | fn import_legacy_remote_dispatch( function build_legacy_migration_plan_report (line 7124) | fn build_legacy_migration_plan_report( function write_legacy_migration_scaffold (line 7376) | fn write_legacy_migration_scaffold( function render_legacy_migration_config_scaffold (line 7406) | fn render_legacy_migration_config_scaffold(plan: &LegacyMigrationPlanRep... function format_legacy_migration_audit_human (line 7432) | fn format_legacy_migration_audit_human(report: &LegacyMigrationAuditRepo... function format_legacy_migration_readiness (line 7482) | fn format_legacy_migration_readiness(readiness: LegacyMigrationReadiness... function format_legacy_migration_plan_human (line 7490) | fn format_legacy_migration_plan_human(report: &LegacyMigrationPlanReport... function format_legacy_migration_scaffold_human (line 7537) | fn format_legacy_migration_scaffold_human(report: &LegacyMigrationScaffo... function format_legacy_schedule_import_human (line 7550) | fn format_legacy_schedule_import_human(report: &LegacyScheduleImportRepo... function format_legacy_memory_import_human (line 7608) | fn format_legacy_memory_import_human(report: &LegacyMemoryImportReport) ... function format_legacy_env_import_human (line 7643) | fn format_legacy_env_import_human(report: &LegacyEnvImportReport) -> Str... function format_legacy_skill_import_human (line 7693) | fn format_legacy_skill_import_human(report: &LegacySkillImportReport) ->... function format_legacy_tool_import_human (line 7723) | fn format_legacy_tool_import_human(report: &LegacyToolImportReport) -> S... function format_legacy_plugin_import_human (line 7751) | fn format_legacy_plugin_import_human(report: &LegacyPluginImportReport) ... function format_legacy_remote_import_human (line 7782) | fn format_legacy_remote_import_human(report: &LegacyRemoteImportReport) ... function format_graph_recall_human (line 7846) | fn format_graph_recall_human( function format_graph_compaction_stats_human (line 7894) | fn format_graph_compaction_stats_human( function format_graph_connector_sync_stats_human (line 7920) | fn format_graph_connector_sync_stats_human(stats: &GraphConnectorSyncSta... function format_graph_connector_sync_report_human (line 7935) | fn format_graph_connector_sync_report_human(report: &GraphConnectorSyncR... function format_graph_connector_status_report_human (line 7970) | fn format_graph_connector_status_report_human(report: &GraphConnectorSta... function format_graph_entity_detail_human (line 8012) | fn format_graph_entity_detail_human(detail: &session::ContextGraphEntity... function format_graph_sync_stats_human (line 8052) | fn format_graph_sync_stats_human( function format_merge_queue_human (line 8069) | fn format_merge_queue_human(report: &session::manager::MergeQueueReport)... function build_otel_export (line 8126) | fn build_otel_export( function build_session_otel_spans (line 8163) | fn build_session_otel_spans( function otlp_timestamp_nanos (line 8248) | fn otlp_timestamp_nanos(value: chrono::DateTime) -> String { function otlp_trace_id (line 8256) | fn otlp_trace_id(seed: &str) -> String { function otlp_span_id (line 8264) | fn otlp_span_id(seed: &str) -> String { function fnv1a64 (line 8268) | fn fnv1a64(bytes: &[u8]) -> u64 { function fnv1a64_with_seed (line 8272) | fn fnv1a64_with_seed(bytes: &[u8], offset_basis: u64) -> u64 { function otlp_string_attr (line 8281) | fn otlp_string_attr(key: &str, value: &str) -> OtlpKeyValue { function otlp_int_attr (line 8293) | fn otlp_int_attr(key: &str, value: u64) -> OtlpKeyValue { function otlp_double_attr (line 8305) | fn otlp_double_attr(key: &str, value: f64) -> OtlpKeyValue { function otlp_session_status (line 8317) | fn otlp_session_status(state: &session::SessionState) -> OtlpSpanStatus { function summarize_coordinate_backlog (line 8334) | fn summarize_coordinate_backlog( function coordination_status_exit_code (line 8397) | fn coordination_status_exit_code(status: &session::manager::Coordination... function send_handoff_message (line 8406) | fn send_handoff_message(db: &session::store::StateStore, from_id: &str, ... function parse_template_vars (line 8438) | fn parse_template_vars(values: &[String]) -> Result Result Result { method path (line 8480) | fn path(&self) -> &Path { method drop (line 8486) | fn drop(&mut self) { function build_session (line 8491) | fn build_session(id: &str, task: &str, state: SessionState) -> Session { function attr_value (line 8518) | fn attr_value<'a>(attrs: &'a [OtlpKeyValue], key: &str) -> Option<&'a Ot... function worktree_policy_defaults_to_config_setting (line 8526) | fn worktree_policy_defaults_to_config_setting() { function worktree_policy_explicit_flags_override_config_setting (line 8537) | fn worktree_policy_explicit_flags_override_config_setting() { function cli_parses_resume_command (line 8556) | fn cli_parses_resume_command() { function cli_parses_export_otel_command (line 8567) | fn cli_parses_export_otel_command() { function cli_parses_messages_send_command (line 8587) | fn cli_parses_messages_send_command() { function cli_parses_schedule_add_command (line 8626) | fn cli_parses_schedule_add_command() { function cli_parses_remote_computer_use_command (line 8671) | fn cli_parses_remote_computer_use_command() { function cli_parses_start_with_handoff_source (line 8720) | fn cli_parses_start_with_handoff_source() { function cli_parses_start_without_agent_override (line 8749) | fn cli_parses_start_without_agent_override() { function cli_parses_start_no_worktree_override (line 8763) | fn cli_parses_start_no_worktree_override() { function cli_parses_delegate_command (line 8777) | fn cli_parses_delegate_command() { function cli_parses_delegate_worktree_override (line 8805) | fn cli_parses_delegate_worktree_override() { function cli_parses_template_command (line 8819) | fn cli_parses_template_command() { function parse_template_vars_builds_map (line 8855) | fn parse_template_vars_builds_map() { function parse_template_vars_rejects_invalid_entries (line 8870) | fn parse_template_vars_rejects_invalid_entries() { function parse_key_value_pairs_rejects_empty_values (line 8883) | fn parse_key_value_pairs_rejects_empty_values() { function cli_parses_team_command (line 8896) | fn cli_parses_team_command() { function cli_parses_worktree_status_command (line 8910) | fn cli_parses_worktree_status_command() { function cli_parses_worktree_status_json_flag (line 8933) | fn cli_parses_worktree_status_json_flag() { function cli_parses_worktree_status_all_flag (line 8956) | fn cli_parses_worktree_status_all_flag() { function cli_parses_worktree_status_session_id_with_all_flag (line 8979) | fn cli_parses_worktree_status_session_id_with_all_flag() { function format_worktree_status_reports_human_joins_multiple_reports (line 8996) | fn format_worktree_status_reports_human_joins_multiple_reports() { function cli_parses_worktree_status_patch_flag (line 9039) | fn cli_parses_worktree_status_patch_flag() { function build_otel_export_includes_session_and_tool_spans (line 9062) | fn build_otel_export_includes_session_and_tool_spans() -> Result<()> { function build_otel_export_links_delegated_session_to_parent_trace (line 9118) | fn build_otel_export_links_delegated_session_to_parent_trace() -> Result... function cli_parses_worktree_status_check_flag (line 9155) | fn cli_parses_worktree_status_check_flag() { function cli_parses_worktree_resolution_flags (line 9178) | fn cli_parses_worktree_resolution_flags() { function cli_parses_worktree_resolution_all_flag (line 9200) | fn cli_parses_worktree_resolution_all_flag() { function cli_parses_prune_worktrees_json_flag (line 9221) | fn cli_parses_prune_worktrees_json_flag() { function cli_parses_merge_worktree_flags (line 9234) | fn cli_parses_merge_worktree_flags() { function cli_parses_merge_worktree_all_flags (line 9261) | fn cli_parses_merge_worktree_all_flags() { function cli_parses_merge_queue_json_flag (line 9282) | fn cli_parses_merge_queue_json_flag() { function cli_parses_merge_queue_apply_flag (line 9296) | fn cli_parses_merge_queue_apply_flag() { function format_worktree_status_human_includes_readiness_and_conflicts (line 9310) | fn format_worktree_status_human_includes_readiness_and_conflicts() { function format_worktree_resolution_human_includes_protocol_steps (line 9344) | fn format_worktree_resolution_human_includes_protocol_steps() { function worktree_resolution_reports_exit_code_tracks_conflicts (line 9374) | fn worktree_resolution_reports_exit_code_tracks_conflicts() { function format_prune_worktrees_human_reports_cleaned_and_active_sessions (line 9409) | fn format_prune_worktrees_human_reports_cleaned_and_active_sessions() { function format_worktree_merge_human_reports_merge_and_cleanup (line 9425) | fn format_worktree_merge_human_reports_merge_and_cleanup() { function format_merge_queue_human_reports_ready_and_blocked_entries (line 9441) | fn format_merge_queue_human_reports_ready_and_blocked_entries() { function format_bulk_worktree_merge_human_reports_summary_and_skips (line 9495) | fn format_bulk_worktree_merge_human_reports_summary_and_skips() { function format_worktree_status_human_handles_missing_worktree (line 9533) | fn format_worktree_status_human_handles_missing_worktree() { function worktree_status_exit_code_tracks_health (line 9559) | fn worktree_status_exit_code_tracks_health() { function worktree_status_reports_exit_code_uses_highest_severity (line 9623) | fn worktree_status_reports_exit_code_uses_highest_severity() { function cli_parses_assign_command (line 9679) | fn cli_parses_assign_command() { function cli_parses_drain_inbox_command (line 9707) | fn cli_parses_drain_inbox_command() { function cli_parses_auto_dispatch_command (line 9735) | fn cli_parses_auto_dispatch_command() { function cli_parses_coordinate_backlog_command (line 9758) | fn cli_parses_coordinate_backlog_command() { function cli_parses_coordinate_backlog_until_healthy_flags (line 9789) | fn cli_parses_coordinate_backlog_until_healthy_flags() { function cli_parses_coordinate_backlog_json_flag (line 9815) | fn cli_parses_coordinate_backlog_json_flag() { function cli_parses_coordinate_backlog_check_flag (line 9837) | fn cli_parses_coordinate_backlog_check_flag() { function cli_parses_rebalance_all_command (line 9859) | fn cli_parses_rebalance_all_command() { function cli_parses_coordination_status_command (line 9882) | fn cli_parses_coordination_status_command() { function cli_parses_log_decision_command (line 9896) | fn cli_parses_log_decision_command() { function cli_parses_decisions_command (line 9932) | fn cli_parses_decisions_command() { function cli_parses_graph_add_entity_command (line 9953) | fn cli_parses_graph_add_entity_command() { function cli_parses_graph_sync_command (line 10000) | fn cli_parses_graph_sync_command() { function cli_parses_graph_recall_command (line 10024) | fn cli_parses_graph_recall_command() { function cli_parses_graph_add_observation_command (line 10058) | fn cli_parses_graph_add_observation_command() { function cli_parses_graph_pin_observation_command (line 10106) | fn cli_parses_graph_pin_observation_command() { function cli_parses_graph_unpin_observation_command (line 10133) | fn cli_parses_graph_unpin_observation_command() { function cli_parses_graph_compact_command (line 10160) | fn cli_parses_graph_compact_command() { function cli_parses_graph_connector_sync_command (line 10191) | fn cli_parses_graph_connector_sync_command() { function cli_parses_graph_connector_sync_all_command (line 10223) | fn cli_parses_graph_connector_sync_all_command() { function cli_parses_graph_connectors_command (line 10255) | fn cli_parses_graph_connectors_command() { function cli_parses_migrate_audit_command (line 10270) | fn cli_parses_migrate_audit_command() { function cli_parses_migrate_plan_command (line 10293) | fn cli_parses_migrate_plan_command() { function cli_parses_migrate_scaffold_command (line 10323) | fn cli_parses_migrate_scaffold_command() { function cli_parses_migrate_import_schedules_command (line 10354) | fn cli_parses_migrate_import_schedules_command() { function cli_parses_migrate_import_memory_command (line 10384) | fn cli_parses_migrate_import_memory_command() { function cli_parses_migrate_import_env_command (line 10415) | fn cli_parses_migrate_import_env_command() { function cli_parses_migrate_import_skills_command (line 10449) | fn cli_parses_migrate_import_skills_command() { function cli_parses_migrate_import_tools_command (line 10480) | fn cli_parses_migrate_import_tools_command() { function cli_parses_migrate_import_plugins_command (line 10511) | fn cli_parses_migrate_import_plugins_command() { function legacy_migration_audit_report_maps_detected_artifacts (line 10542) | fn legacy_migration_audit_report_maps_detected_artifacts() -> Result<()> { function legacy_migration_plan_report_generates_workspace_connector_step (line 10609) | fn legacy_migration_plan_report_generates_workspace_connector_step() -> ... function import_legacy_schedules_dry_run_reports_ready_disabled_and_invalid_jobs (line 10789) | fn import_legacy_schedules_dry_run_reports_ready_disabled_and_invalid_jo... function import_legacy_schedules_creates_real_ecc2_schedules (line 10842) | fn import_legacy_schedules_creates_real_ecc2_schedules() -> Result<()> { function import_legacy_memory_imports_workspace_markdown_and_jsonl (line 10898) | fn import_legacy_memory_imports_workspace_markdown_and_jsonl() -> Result... function import_legacy_memory_reports_no_workspace_connectors_when_absent (line 10954) | fn import_legacy_memory_reports_no_workspace_connectors_when_absent() ->... function import_legacy_remote_dispatch_dry_run_reports_ready_disabled_and_invalid_requests (line 10973) | fn import_legacy_remote_dispatch_dry_run_reports_ready_disabled_and_inva... function import_legacy_remote_dispatch_creates_real_pending_requests (line 11035) | fn import_legacy_remote_dispatch_creates_real_pending_requests() -> Resu... function import_legacy_env_dry_run_reports_importable_and_manual_sources (line 11122) | fn import_legacy_env_dry_run_reports_importable_and_manual_sources() -> ... function import_legacy_env_imports_safe_context_into_graph (line 11170) | fn import_legacy_env_imports_safe_context_into_graph() -> Result<()> { function import_legacy_skills_writes_template_artifacts (line 11226) | fn import_legacy_skills_writes_template_artifacts() -> Result<()> { function import_legacy_tools_writes_template_artifacts (line 11268) | fn import_legacy_tools_writes_template_artifacts() -> Result<()> { function import_legacy_plugins_writes_template_artifacts (line 11319) | fn import_legacy_plugins_writes_template_artifacts() -> Result<()> { function legacy_migration_scaffold_writes_plan_and_config_files (line 11370) | fn legacy_migration_scaffold_writes_plan_and_config_files() -> Result<()> { function format_decisions_human_renders_details (line 11397) | fn format_decisions_human_renders_details() { function format_graph_entity_detail_human_renders_relations (line 11421) | fn format_graph_entity_detail_human_renders_relations() { function format_graph_recall_human_renders_scores_and_matches (line 11479) | fn format_graph_recall_human_renders_scores_and_matches() { function format_graph_observations_human_renders_summaries (line 11521) | fn format_graph_observations_human_renders_summaries() { function format_graph_compaction_stats_human_renders_counts (line 11544) | fn format_graph_compaction_stats_human_renders_counts() { function format_graph_connector_sync_stats_human_renders_counts (line 11565) | fn format_graph_connector_sync_stats_human_renders_counts() { function format_graph_connector_sync_report_human_renders_totals_and_connectors (line 11584) | fn format_graph_connector_sync_report_human_renders_totals_and_connector... function format_graph_connector_status_report_human_renders_connector_details (line 11622) | fn format_graph_connector_status_report_human_renders_connector_details() { function memory_connector_status_report_includes_checkpoint_state (line 11669) | fn memory_connector_status_report_includes_checkpoint_state() -> Result<... function sync_memory_connector_imports_jsonl_observations (line 11759) | fn sync_memory_connector_imports_jsonl_observations() -> Result<()> { function sync_memory_connector_skips_unchanged_jsonl_sources (line 11832) | fn sync_memory_connector_skips_unchanged_jsonl_sources() -> Result<()> { function sync_memory_connector_imports_jsonl_directory_observations (line 11887) | fn sync_memory_connector_imports_jsonl_directory_observations() -> Resul... function sync_memory_connector_imports_markdown_file_sections (line 11975) | fn sync_memory_connector_imports_markdown_file_sections() -> Result<()> { function sync_memory_connector_imports_markdown_directory_sections (line 12062) | fn sync_memory_connector_imports_markdown_directory_sections() -> Result... function sync_memory_connector_imports_dotenv_entries_safely (line 12147) | fn sync_memory_connector_imports_dotenv_entries_safely() -> Result<()> { function sync_all_memory_connectors_aggregates_results (line 12251) | fn sync_all_memory_connectors_aggregates_results() -> Result<()> { function format_graph_sync_stats_human_renders_counts (line 12336) | fn format_graph_sync_stats_human_renders_counts() { function cli_parses_coordination_status_json_flag (line 12355) | fn cli_parses_coordination_status_json_flag() { function cli_parses_coordination_status_check_flag (line 12369) | fn cli_parses_coordination_status_check_flag() { function cli_parses_maintain_coordination_command (line 12383) | fn cli_parses_maintain_coordination_command() { function cli_parses_maintain_coordination_json_flag (line 12405) | fn cli_parses_maintain_coordination_json_flag() { function cli_parses_maintain_coordination_check_flag (line 12425) | fn cli_parses_maintain_coordination_check_flag() { function format_coordination_status_emits_json (line 12445) | fn format_coordination_status_emits_json() { function coordination_status_exit_codes_reflect_pressure (line 12474) | fn coordination_status_exit_codes_reflect_pressure() { function summarize_coordinate_backlog_reports_clear_state (line 12507) | fn summarize_coordinate_backlog_reports_clear_state() { function summarize_coordinate_backlog_structures_counts (line 12523) | fn summarize_coordinate_backlog_structures_counts() { function cli_parses_rebalance_team_command (line 12569) | fn cli_parses_rebalance_team_command() { FILE: ecc2/src/notifications.rs type NotificationEvent (line 10) | pub enum NotificationEvent { type QuietHoursConfig (line 20) | pub struct QuietHoursConfig { method sanitized (line 102) | pub fn sanitized(self) -> Self { method is_active (line 111) | pub fn is_active(&self, now: DateTime) -> bool { type DesktopNotificationConfig (line 28) | pub struct DesktopNotificationConfig { method sanitized (line 145) | pub fn sanitized(self) -> Self { method allows (line 152) | pub fn allows(&self, event: NotificationEvent, now: DateTime) -... type CompletionSummaryDelivery (line 40) | pub enum CompletionSummaryDelivery { type CompletionSummaryConfig (line 49) | pub struct CompletionSummaryConfig { method desktop_enabled (line 178) | pub fn desktop_enabled(&self) -> bool { method popup_enabled (line 186) | pub fn popup_enabled(&self) -> bool { type WebhookProvider (line 56) | pub enum WebhookProvider { type WebhookTarget (line 64) | pub struct WebhookTarget { method sanitized (line 205) | fn sanitized(self) -> Option { type WebhookNotificationConfig (line 71) | pub struct WebhookNotificationConfig { method sanitized (line 230) | pub fn sanitized(self) -> Self { method allows (line 241) | pub fn allows(&self, event: NotificationEvent) -> bool { type DesktopNotifier (line 82) | pub struct DesktopNotifier { method new (line 258) | pub fn new(config: DesktopNotificationConfig) -> Self { method notify (line 264) | pub fn notify(&self, event: NotificationEvent, title: &str, body: &str... method try_notify (line 274) | fn try_notify( type WebhookNotifier (line 87) | pub struct WebhookNotifier { method new (line 295) | pub fn new(config: WebhookNotificationConfig) -> Self { method notify (line 301) | pub fn notify(&self, event: NotificationEvent, message: &str) -> bool { method try_notify (line 311) | fn try_notify(&self, event: NotificationEvent, message: &str) -> Resul... method try_notify_with (line 315) | fn try_notify_with( method default (line 92) | fn default() -> Self { method default (line 131) | fn default() -> Self { method default (line 169) | fn default() -> Self { method default (line 196) | fn default() -> Self { method default (line 216) | fn default() -> Self { function notification_command (line 345) | fn notification_command(platform: &str, title: &str, body: &str) -> Opti... function webhook_payload (line 371) | fn webhook_payload(target: &WebhookTarget, message: &str) -> serde_json:... function run_notification_command (line 386) | fn run_notification_command(program: &str, args: &[String]) -> Result<()> { function run_notification_command (line 400) | fn run_notification_command(_program: &str, _args: &[String]) -> Result<... function send_webhook_request (line 405) | fn send_webhook_request(target: &WebhookTarget, payload: serde_json::Val... function send_webhook_request (line 423) | fn send_webhook_request(_target: &WebhookTarget, _payload: serde_json::V... function sanitize_osascript (line 427) | fn sanitize_osascript(value: &str) -> String { function quiet_hours_support_cross_midnight_ranges (line 445) | fn quiet_hours_support_cross_midnight_ranges() { function quiet_hours_support_same_day_ranges (line 458) | fn quiet_hours_support_same_day_ranges() { function notification_preferences_respect_event_flags (line 470) | fn notification_preferences_respect_event_flags() { function notifier_skips_delivery_during_quiet_hours (line 481) | fn notifier_skips_delivery_during_quiet_hours() { function macos_notifications_use_osascript (line 501) | fn macos_notifications_use_osascript() { function linux_notifications_use_notify_send (line 512) | fn linux_notifications_use_notify_send() { function webhook_notifications_require_enabled_targets_and_event (line 524) | fn webhook_notifications_require_enabled_targets_and_event() { function webhook_sanitization_filters_invalid_urls (line 540) | fn webhook_sanitization_filters_invalid_urls() { function slack_webhook_payload_uses_text (line 562) | fn slack_webhook_payload_uses_text() { function discord_webhook_payload_disables_mentions (line 575) | fn discord_webhook_payload_disables_mentions() { function webhook_notifier_sends_to_each_target (line 594) | fn webhook_notifier_sends_to_each_target() { function completion_summary_delivery_defaults_to_desktop (line 629) | fn completion_summary_delivery_defaults_to_desktop() { FILE: ecc2/src/observability/mod.rs type ToolCallEvent (line 8) | pub struct ToolCallEvent { method new (line 36) | pub fn new( method compute_risk (line 60) | pub fn compute_risk( type RiskAssessment (line 20) | pub struct RiskAssessment { type SuggestedAction (line 28) | pub enum SuggestedAction { method from_score (line 108) | fn from_score(score: f64, thresholds: &RiskThresholds) -> Self { function base_tool_risk (line 121) | fn base_tool_risk(tool_name: &str) -> (f64, Option<&'static str>) { function assess_file_sensitivity (line 133) | fn assess_file_sensitivity(input: &str) -> (f64, Option) { function assess_blast_radius (line 171) | fn assess_blast_radius(input: &str) -> (f64, Option) { function assess_irreversibility (line 207) | fn assess_irreversibility(input: &str) -> (f64, Option) { function contains_any (line 235) | fn contains_any(input: &str, patterns: &[&str]) -> bool { type ToolLogEntry (line 240) | pub struct ToolLogEntry { type ToolLogPage (line 254) | pub struct ToolLogPage { type ToolLogger (line 261) | pub struct ToolLogger<'a> { function new (line 266) | pub fn new(db: &'a StateStore) -> Self { function log (line 270) | pub fn log(&self, event: &ToolCallEvent) -> Result { function query (line 286) | pub fn query(&self, session_id: &str, page: u64, page_size: u64) -> Resu... function log_tool_call (line 295) | pub fn log_tool_call(db: &StateStore, event: &ToolCallEvent) -> Result PathBuf { function test_session (line 311) | fn test_session(id: &str) -> Session { function computes_sensitive_file_risk (line 332) | fn computes_sensitive_file_risk() { function computes_blast_radius_risk (line 348) | fn computes_blast_radius_risk() { function computes_irreversible_risk (line 364) | fn computes_irreversible_risk() { function blocks_combined_high_risk_operations (line 383) | fn blocks_combined_high_risk_operations() { function logger_persists_entries_and_paginates (line 395) | fn logger_persists_entries_and_paginates() -> anyhow::Result<()> { FILE: ecc2/src/session/daemon.rs type DispatchPassSummary (line 12) | struct DispatchPassSummary { function run (line 20) | pub async fn run(db: StateStore, cfg: Config) -> Result<()> { function resume_crashed_sessions (line 58) | pub fn resume_crashed_sessions(db: &StateStore) -> Result<()> { function resume_crashed_sessions_with (line 66) | fn resume_crashed_sessions_with(db: &StateStore, is_pid_alive: F) -> ... function check_sessions (line 95) | fn check_sessions(db: &StateStore, cfg: &Config) -> Result<()> { function maybe_run_due_schedules (line 100) | async fn maybe_run_due_schedules(db: &StateStore, cfg: &Config) -> Resul... function maybe_run_remote_dispatch (line 108) | async fn maybe_run_remote_dispatch(db: &StateStore, cfg: &Config) -> Res... function maybe_auto_dispatch (line 127) | async fn maybe_auto_dispatch(db: &StateStore, cfg: &Config) -> Result Resu... function coordinate_backlog_cycle_with (line 186) | async fn coordinate_backlog_cycle_with( function maybe_auto_dispatch_with (line 248) | async fn maybe_auto_dispatch_with(cfg: &Config, dispatch: F) -> ... function maybe_auto_dispatch_with_recorder (line 260) | async fn maybe_auto_dispatch_with_recorder( function maybe_auto_rebalance (line 315) | async fn maybe_auto_rebalance(db: &StateStore, cfg: &Config) -> Result(cfg: &Config, rebalance: F) -... function maybe_auto_rebalance_with_recorder (line 340) | async fn maybe_auto_rebalance_with_recorder( function maybe_auto_merge_ready_worktrees (line 368) | async fn maybe_auto_merge_ready_worktrees(db: &StateStore, cfg: &Config)... function maybe_auto_merge_ready_worktrees_with (line 379) | async fn maybe_auto_merge_ready_worktrees_with(cfg: &Config, mer... function maybe_auto_merge_ready_worktrees_with_recorder (line 387) | async fn maybe_auto_merge_ready_worktrees_with_recorder( function maybe_auto_prune_inactive_worktrees (line 431) | async fn maybe_auto_prune_inactive_worktrees(db: &StateStore, cfg: &Conf... function maybe_auto_prune_inactive_worktrees_with (line 439) | async fn maybe_auto_prune_inactive_worktrees_with(prune: F) -> R... function maybe_auto_prune_inactive_worktrees_with_recorder (line 447) | async fn maybe_auto_prune_inactive_worktrees_with_recorder( function pid_is_alive (line 476) | fn pid_is_alive(pid: u32) -> bool { function pid_is_alive (line 494) | fn pid_is_alive(_pid: u32) -> bool { function temp_db_path (line 509) | fn temp_db_path() -> PathBuf { function sample_session (line 513) | fn sample_session(id: &str, state: SessionState, pid: Option) -> Se... function resume_crashed_sessions_marks_dead_running_sessions_failed (line 533) | fn resume_crashed_sessions_marks_dead_running_sessions_failed() -> Resul... function resume_crashed_sessions_keeps_live_running_sessions_running (line 555) | fn resume_crashed_sessions_keeps_live_running_sessions_running() -> Resu... function maybe_auto_dispatch_noops_when_disabled (line 577) | async fn maybe_auto_dispatch_noops_when_disabled() -> Result<()> { function maybe_auto_dispatch_reports_total_routed_work (line 600) | async fn maybe_auto_dispatch_reports_total_routed_work() -> Result<()> { function maybe_auto_dispatch_records_latest_pass (line 646) | async fn maybe_auto_dispatch_records_latest_pass() -> Result<()> { function coordinate_backlog_cycle_retries_after_rebalance_when_dispatch_deferred (line 691) | async fn coordinate_backlog_cycle_retries_after_rebalance_when_dispatch_... function coordinate_backlog_cycle_skips_retry_without_rebalance (line 735) | async fn coordinate_backlog_cycle_skips_retry_without_rebalance() -> Res... function coordinate_backlog_cycle_records_recovery_dispatch_when_it_routes_work (line 771) | async fn coordinate_backlog_cycle_records_recovery_dispatch_when_it_rout... function coordinate_backlog_cycle_rebalances_first_after_unrecovered_deferred_pressure (line 818) | async fn coordinate_backlog_cycle_rebalances_first_after_unrecovered_def... function coordinate_backlog_cycle_records_recovery_when_rebalance_first_dispatch_routes_work (line 884) | async fn coordinate_backlog_cycle_records_recovery_when_rebalance_first_... function coordinate_backlog_cycle_skips_dispatch_during_chronic_cooloff_when_rebalance_does_not_help (line 942) | async fn coordinate_backlog_cycle_skips_dispatch_during_chronic_cooloff_... function coordinate_backlog_cycle_skips_dispatch_when_persistent_saturation_streak_hits_cooloff (line 1001) | async fn coordinate_backlog_cycle_skips_dispatch_when_persistent_saturat... function coordinate_backlog_cycle_skips_rebalance_when_stabilized_and_dispatch_is_healthy (line 1060) | async fn coordinate_backlog_cycle_skips_rebalance_when_stabilized_and_di... function maybe_auto_rebalance_noops_when_disabled (line 1121) | async fn maybe_auto_rebalance_noops_when_disabled() -> Result<()> { function maybe_auto_rebalance_reports_total_rerouted_work (line 1144) | async fn maybe_auto_rebalance_reports_total_rerouted_work() -> Result<()> { function maybe_auto_rebalance_records_latest_pass (line 1191) | async fn maybe_auto_rebalance_records_latest_pass() -> Result<()> { function maybe_auto_merge_ready_worktrees_noops_when_disabled (line 1227) | async fn maybe_auto_merge_ready_worktrees_noops_when_disabled() -> Resul... function maybe_auto_merge_ready_worktrees_merges_ready_worktrees_when_enabled (line 1257) | async fn maybe_auto_merge_ready_worktrees_merges_ready_worktrees_when_en... function maybe_auto_prune_inactive_worktrees_records_pruned_and_active_counts (line 1299) | async fn maybe_auto_prune_inactive_worktrees_records_pruned_and_active_c... FILE: ecc2/src/session/manager.rs function create_session (line 26) | pub async fn create_session( function create_session_with_grouping (line 45) | pub async fn create_session_with_grouping( function create_session_with_profile_and_grouping (line 65) | pub async fn create_session_with_profile_and_grouping( function create_session_from_source_with_profile_and_grouping (line 90) | pub async fn create_session_from_source_with_profile_and_grouping( function run_due_schedules_with_runner_program (line 116) | async fn run_due_schedules_with_runner_program( function list_sessions (line 158) | pub fn list_sessions(db: &StateStore) -> Result> { function get_status (line 162) | pub fn get_status(db: &StateStore, cfg: &Config, id: &str) -> Result Resul... function create_scheduled_task (line 206) | pub fn create_scheduled_task( function list_scheduled_tasks (line 248) | pub fn list_scheduled_tasks(db: &StateStore) -> Result Resul... function create_remote_dispatch_request (line 257) | pub fn create_remote_dispatch_request( function create_computer_use_remote_dispatch_request (line 291) | pub fn create_computer_use_remote_dispatch_request( function create_computer_use_remote_dispatch_request_in_dir (line 327) | fn create_computer_use_remote_dispatch_request_in_dir( function create_remote_dispatch_request_inner (line 375) | fn create_remote_dispatch_request_inner( function render_computer_use_task (line 427) | fn render_computer_use_task(goal: &str, target_url: Option<&str>, contex... function list_remote_dispatch_requests (line 445) | pub fn list_remote_dispatch_requests( function run_due_schedules (line 453) | pub async fn run_due_schedules( function run_remote_dispatch_requests (line 463) | pub async fn run_remote_dispatch_requests( function run_remote_dispatch_requests_with_runner_program (line 474) | async fn run_remote_dispatch_requests_with_runner_program( type TemplateLaunchStepOutcome (line 591) | pub struct TemplateLaunchStepOutcome { type TemplateLaunchOutcome (line 598) | pub struct TemplateLaunchOutcome { function launch_orchestration_template (line 605) | pub async fn launch_orchestration_template( function build_template_variables (line 738) | pub(crate) fn build_template_variables( type HeartbeatEnforcementOutcome (line 782) | pub struct HeartbeatEnforcementOutcome { function enforce_session_heartbeats (line 787) | pub fn enforce_session_heartbeats( function enforce_session_heartbeats_with (line 794) | fn enforce_session_heartbeats_with( function assign_session (line 833) | pub async fn assign_session( function assign_session_with_grouping (line 854) | pub async fn assign_session_with_grouping( function assign_session_with_profile_and_grouping (line 876) | pub async fn assign_session_with_profile_and_grouping( function drain_inbox (line 903) | pub async fn drain_inbox( function auto_dispatch_backlog (line 950) | pub async fn auto_dispatch_backlog( function rebalance_all_teams (line 983) | pub async fn rebalance_all_teams( function coordinate_backlog (line 1024) | pub async fn coordinate_backlog( function rebalance_team_backlog (line 1051) | pub async fn rebalance_team_backlog( function stop_session (line 1157) | pub async fn stop_session(db: &StateStore, id: &str) -> Result<()> { type BudgetEnforcementOutcome (line 1162) | pub struct BudgetEnforcementOutcome { method hard_limit_exceeded (line 1170) | pub fn hard_limit_exceeded(&self) -> bool { function enforce_budget_hard_limits (line 1177) | pub fn enforce_budget_hard_limits( type ConflictEnforcementOutcome (line 1248) | pub struct ConflictEnforcementOutcome { function enforce_conflict_resolution (line 1255) | pub fn enforce_conflict_resolution( function conflict_incident_key (line 1414) | fn conflict_incident_key(path: &str, session_a: &str, session_b: &str) -... function conflict_strategy_label (line 1423) | fn conflict_strategy_label(strategy: crate::config::ConflictResolutionSt... function choose_conflict_resolution (line 1431) | fn choose_conflict_resolution( function record_tool_call (line 1465) | pub fn record_tool_call( function query_tool_calls (line 1490) | pub fn query_tool_calls( function resume_session (line 1503) | pub async fn resume_session(db: &StateStore, cfg: &Config, id: &str) -> ... function resume_session_with_program (line 1507) | async fn resume_session_with_program( function assign_session_in_dir_with_runner_program (line 1548) | async fn assign_session_in_dir_with_runner_program( function collect_delegation_descendants (line 1696) | fn collect_delegation_descendants( function cleanup_session_worktree (line 1738) | pub async fn cleanup_session_worktree(db: &StateStore, id: &str) -> Resu... type WorktreeMergeOutcome (line 1756) | pub struct WorktreeMergeOutcome { type WorktreeRebaseOutcome (line 1765) | pub struct WorktreeRebaseOutcome { function merge_session_worktree (line 1772) | pub async fn merge_session_worktree( function rebase_session_worktree (line 1810) | pub async fn rebase_session_worktree(db: &StateStore, id: &str) -> Resul... type WorktreeMergeFailure (line 1839) | pub struct WorktreeMergeFailure { type WorktreeBulkMergeOutcome (line 1845) | pub struct WorktreeBulkMergeOutcome { function merge_ready_worktrees (line 1855) | pub async fn merge_ready_worktrees( function process_merge_queue (line 1866) | pub async fn process_merge_queue(db: &StateStore) -> Result Result { function can_auto_rebase_merge_queue_entry (line 2264) | fn can_auto_rebase_merge_queue_entry(entry: &MergeQueueEntry) -> bool { function classify_merge_queue_report (line 2275) | fn classify_merge_queue_report( function delete_session (line 2307) | pub async fn delete_session(db: &StateStore, id: &str) -> Result<()> { function agent_program (line 2329) | fn agent_program(cfg: &Config, agent_type: &str) -> Result { function resolve_session (line 2349) | fn resolve_session(db: &StateStore, id: &str) -> Result { function parse_cron_schedule (line 2359) | fn parse_cron_schedule(expr: &str) -> Result { function next_schedule_run_at (line 2374) | fn next_schedule_run_at( function run_session (line 2385) | pub async fn run_session( function activate_pending_worktree_sessions (line 2426) | pub async fn activate_pending_worktree_sessions( function activate_pending_worktree_sessions_with (line 2448) | async fn activate_pending_worktree_sessions_with( function queue_session_in_dir (line 2534) | async fn queue_session_in_dir( function queue_session_in_dir_with_runner_program (line 2560) | async fn queue_session_in_dir_with_runner_program( function queue_session_with_resolved_profile_and_runner_program (line 2588) | async fn queue_session_with_resolved_profile_and_runner_program( function build_session_record (line 2650) | fn build_session_record( function create_session_in_dir (line 2701) | async fn create_session_in_dir( function resolve_launch_profile (line 2751) | fn resolve_launch_profile( function attached_worktree_count (line 2774) | fn attached_worktree_count(db: &StateStore) -> Result { function merge_queue_priority (line 2782) | fn merge_queue_priority(session: &Session) -> (u8, chrono::DateTime Vec { function summarize_backlog_pressure (line 2900) | fn summarize_backlog_pressure( function send_task_handoff (line 2927) | fn send_task_handoff( function parse_task_handoff_task (line 2963) | pub(crate) fn parse_task_handoff_task(content: &str) -> Option { function extract_legacy_handoff_task (line 2970) | fn extract_legacy_handoff_task(content: &str) -> Option { function spawn_session_runner_for_program (line 2978) | async fn spawn_session_runner_for_program( function background_runner_stderr_log_path (line 3031) | fn background_runner_stderr_log_path(working_dir: &Path, session_id: &st... function detached_creation_flags (line 3040) | fn detached_creation_flags() -> u32 { function configure_background_runner_command (line 3046) | fn configure_background_runner_command(command: &mut Command) { function build_agent_command (line 3071) | fn build_agent_command( function build_configured_harness_command (line 3190) | fn build_configured_harness_command( function apply_shared_harness_runtime_env (line 3279) | fn apply_shared_harness_runtime_env( function resolve_ecc_plugin_root (line 3307) | fn resolve_ecc_plugin_root() -> Option { function is_ecc_plugin_root (line 3325) | fn is_ecc_plugin_root(candidate: &Path) -> bool { function resolve_project_package_manager (line 3329) | fn resolve_project_package_manager(working_dir: &Path) -> Option<&'stati... function read_package_manager_from_json (line 3353) | fn read_package_manager_from_json(path: &Path, field_name: &str) -> Opti... function read_package_manager_from_package_json (line 3362) | fn read_package_manager_from_package_json(path: &Path) -> Option<&'stati... function detect_package_manager_from_lockfile (line 3367) | fn detect_package_manager_from_lockfile(working_dir: &Path) -> Option<&'... function normalize_package_manager_name (line 3383) | fn normalize_package_manager_name(package_manager: &str) -> Option<&'sta... function normalize_task_for_harness (line 3398) | fn normalize_task_for_harness( type TaskProjectionSupport (line 3436) | struct TaskProjectionSupport { function normalize_task_for_configured_runner (line 3446) | fn normalize_task_for_configured_runner( function render_task_with_profile_projection (line 3468) | fn render_task_with_profile_projection( function spawn_claude_code (line 3542) | async fn spawn_claude_code( function stop_session_with_options (line 3573) | async fn stop_session_with_options( function stop_session_recorded (line 3582) | fn stop_session_recorded(db: &StateStore, session: &Session, cleanup_wor... function kill_process (line 3601) | fn kill_process(pid: u32) -> Result<()> { function kill_process (line 3609) | fn kill_process(pid: u32) -> Result<()> { function send_signal (line 3623) | fn send_signal(pid: u32, signal: i32) -> Result<()> { function kill_process (line 3638) | async fn kill_process(pid: u32) -> Result<()> { type SessionStatus (line 3655) | pub struct SessionStatus { method fmt (line 3984) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type TeamStatus (line 3663) | pub struct TeamStatus { method fmt (line 4043) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type AssignmentOutcome (line 3669) | pub struct AssignmentOutcome { type AssignmentPreview (line 3675) | pub struct AssignmentPreview { type InboxDrainOutcome (line 3683) | pub struct InboxDrainOutcome { type LeadDispatchOutcome (line 3690) | pub struct LeadDispatchOutcome { type ScheduledRunOutcome (line 3697) | pub struct ScheduledRunOutcome { type RemoteDispatchOutcome (line 3706) | pub struct RemoteDispatchOutcome { type RemoteDispatchAction (line 3717) | pub enum RemoteDispatchAction { type RebalanceOutcome (line 3724) | pub struct RebalanceOutcome { type LeadRebalanceOutcome (line 3732) | pub struct LeadRebalanceOutcome { type CoordinateBacklogOutcome (line 3737) | pub struct CoordinateBacklogOutcome { type CoordinationStatus (line 3747) | pub struct CoordinationStatus { method fmt (line 4103) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type CoordinationMode (line 3762) | pub enum CoordinationMode { type CoordinationHealth (line 3771) | pub enum CoordinationHealth { type AssignmentAction (line 3780) | pub enum AssignmentAction { method label (line 3788) | fn label(self) -> &'static str { function preview_assignment_for_task (line 3798) | pub fn preview_assignment_for_task( function assignment_action_routes_work (line 3912) | pub fn assignment_action_routes_work(action: AssignmentAction) -> bool { function coordination_mode (line 3916) | fn coordination_mode(activity: &super::store::DaemonActivity) -> Coordin... function coordination_health (line 3928) | fn coordination_health( function get_coordination_status (line 3944) | pub fn get_coordination_status(db: &StateStore, cfg: &Config) -> Result<... type BacklogPressureSummary (line 3972) | struct BacklogPressureSummary { type DelegatedSessionSummary (line 3977) | struct DelegatedSessionSummary { function session_state_label (line 4218) | fn session_state_label(state: &SessionState) -> &'static str { type TestDir (line 4244) | struct TestDir { method new (line 4249) | fn new(label: &str) -> Result { method path (line 4256) | fn path(&self) -> &Path { method drop (line 4262) | fn drop(&mut self) { function build_config (line 4267) | fn build_config(root: &Path) -> Config { function build_session (line 4306) | fn build_session(id: &str, state: SessionState, updated_at: chrono::Date... function build_agent_command_applies_profile_runner_flags_for_claude (line 4325) | fn build_agent_command_applies_profile_runner_flags_for_claude() { function build_agent_command_normalizes_runner_flags_for_codex (line 4383) | fn build_agent_command_normalizes_runner_flags_for_codex() { function build_agent_command_normalizes_runner_flags_for_opencode (line 4454) | fn build_agent_command_normalizes_runner_flags_for_opencode() { function build_agent_command_normalizes_runner_flags_for_gemini (line 4500) | fn build_agent_command_normalizes_runner_flags_for_gemini() { function agent_program_uses_configured_runner_for_cursor (line 4544) | fn agent_program_uses_configured_runner_for_cursor() -> Result<()> { function agent_program_uses_configured_runner_for_unknown_custom_harness (line 4562) | fn agent_program_uses_configured_runner_for_unknown_custom_harness() -> ... function build_agent_command_uses_configured_runner_for_cursor (line 4580) | fn build_agent_command_uses_configured_runner_for_cursor() { function build_agent_command_projects_unsupported_profile_fields_for_configured_runner (line 4663) | fn build_agent_command_projects_unsupported_profile_fields_for_configure... function build_agent_command_exports_detected_package_manager_env_from_lockfile (line 4716) | fn build_agent_command_exports_detected_package_manager_env_from_lockfil... function build_agent_command_prefers_project_package_manager_config_over_lockfile (line 4745) | fn build_agent_command_prefers_project_package_manager_config_over_lockf... function build_session_record_canonicalizes_known_agent_aliases (line 4779) | fn build_session_record_canonicalizes_known_agent_aliases() -> Result<()> { function direct_delegate_sessions_matches_harness_aliases_for_existing_rows (line 4801) | fn direct_delegate_sessions_matches_harness_aliases_for_existing_rows() ... function direct_delegate_sessions_resolves_auto_to_configured_harness (line 4855) | fn direct_delegate_sessions_resolves_auto_to_configured_harness() -> Res... function enforce_session_heartbeats_marks_overdue_running_sessions_stale (line 4938) | fn enforce_session_heartbeats_marks_overdue_running_sessions_stale() -> ... function enforce_session_heartbeats_auto_terminates_when_enabled (line 4972) | fn enforce_session_heartbeats_auto_terminates_when_enabled() -> Result<(... function build_daemon_activity (line 5015) | fn build_daemon_activity() -> super::super::store::DaemonActivity { function init_git_repo (line 5041) | fn init_git_repo(path: &Path) -> Result<()> { function run_git (line 5052) | fn run_git(path: &Path, args: [&str; N]) -> Result<()> { function write_fake_claude (line 5066) | fn write_fake_claude(root: &Path) -> Result<(PathBuf, PathBuf)> { function wait_for_file (line 5082) | fn wait_for_file(path: &Path) -> Result { function wait_for_text (line 5098) | fn wait_for_text(path: &Path, needle: &str) -> Result { function command_env_map (line 5114) | fn command_env_map(command: &Command) -> BTreeMap { function background_runner_command_starts_new_session (line 5131) | async fn background_runner_command_starts_new_session() -> Result<()> { function background_runner_stderr_log_path_is_session_scoped (line 5171) | fn background_runner_stderr_log_path_is_session_scoped() { function detached_creation_flags_include_detach_and_process_group (line 5182) | fn detached_creation_flags_include_detach_and_process_group() { function write_package_manager_project_files (line 5186) | fn write_package_manager_project_files( function create_session_spawns_process_and_marks_session_running (line 5214) | async fn create_session_spawns_process_and_marks_session_running() -> Re... function create_session_resolves_auto_agent_from_repo_markers (line 5264) | async fn create_session_resolves_auto_agent_from_repo_markers() -> Resul... function create_session_derives_project_and_task_group_defaults (line 5295) | async fn create_session_derives_project_and_task_group_defaults() -> Res... function run_due_schedules_dispatches_due_tasks_and_advances_next_run (line 5326) | async fn run_due_schedules_dispatches_due_tasks_and_advances_next_run() ... function run_remote_dispatch_requests_prioritizes_critical_targeted_work (line 5373) | async fn run_remote_dispatch_requests_prioritizes_critical_targeted_work... function run_remote_dispatch_requests_spawns_top_level_session_when_untargeted (line 5461) | async fn run_remote_dispatch_requests_spawns_top_level_session_when_unta... function create_computer_use_remote_dispatch_request_uses_config_defaults (line 5521) | fn create_computer_use_remote_dispatch_request_uses_config_defaults() ->... function stop_session_kills_process_and_optionally_cleans_worktree (line 5574) | async fn stop_session_kills_process_and_optionally_cleans_worktree() -> ... function create_session_with_worktree_limit_queues_without_starting_runner (line 5642) | async fn create_session_with_worktree_limit_queues_without_starting_runn... function activate_pending_worktree_sessions_starts_queued_session_when_slot_opens (line 5696) | async fn activate_pending_worktree_sessions_starts_queued_session_when_s... function create_session_uses_default_agent_profile_and_persists_launch_settings (line 5767) | async fn create_session_uses_default_agent_profile_and_persists_launch_s... function enforce_budget_hard_limits_stops_active_sessions_without_cleaning_worktrees (line 5824) | fn enforce_budget_hard_limits_stops_active_sessions_without_cleaning_wor... function enforce_budget_hard_limits_ignores_inactive_sessions (line 5889) | fn enforce_budget_hard_limits_ignores_inactive_sessions() -> Result<()> { function enforce_budget_hard_limits_pauses_sessions_over_profile_token_budget (line 5939) | fn enforce_budget_hard_limits_pauses_sessions_over_profile_token_budget(... function resume_session_requeues_failed_session (line 6006) | async fn resume_session_requeues_failed_session() -> Result<()> { function cleanup_session_worktree_removes_path_and_clears_metadata (line 6057) | async fn cleanup_session_worktree_removes_path_and_clears_metadata() -> ... function prune_inactive_worktrees_cleans_stopped_sessions_only (line 6106) | async fn prune_inactive_worktrees_cleans_stopped_sessions_only() -> Resu... function prune_inactive_worktrees_defers_recent_sessions_within_retention (line 6184) | async fn prune_inactive_worktrees_defers_recent_sessions_within_retentio... function merge_session_worktree_merges_branch_and_cleans_worktree (line 6242) | async fn merge_session_worktree_merges_branch_and_cleans_worktree() -> R... function merge_ready_worktrees_merges_ready_sessions_and_skips_active_and_dirty (line 6312) | async fn merge_ready_worktrees_merges_ready_sessions_and_skips_active_an... function process_merge_queue_rebases_blocked_session_and_merges_it (line 6422) | async fn process_merge_queue_rebases_blocked_session_and_merges_it() -> ... function process_merge_queue_records_failed_rebase_and_leaves_blocked_session (line 6514) | async fn process_merge_queue_records_failed_rebase_and_leaves_blocked_se... function build_merge_queue_orders_ready_sessions_and_blocks_conflicts (line 6590) | async fn build_merge_queue_orders_ready_sessions_and_blocks_conflicts() ... function delete_session_removes_inactive_session_and_worktree (line 6681) | async fn delete_session_removes_inactive_session_and_worktree() -> Resul... function get_status_supports_latest_alias (line 6723) | fn get_status_supports_latest_alias() -> Result<()> { function get_status_uses_configured_custom_harness_markers (line 6740) | fn get_status_uses_configured_custom_harness_markers() -> Result<()> { function get_status_surfaces_handoff_lineage (line 6766) | fn get_status_surfaces_handoff_lineage() -> Result<()> { function get_team_status_groups_delegated_children (line 6811) | fn get_team_status_groups_delegated_children() -> Result<()> { function assign_session_reuses_idle_delegate_when_available (line 6868) | async fn assign_session_reuses_idle_delegate_when_available() -> Result<... function assign_session_prefers_idle_delegate_with_graph_context_match (line 6943) | async fn assign_session_prefers_idle_delegate_with_graph_context_match()... function assign_session_spawns_instead_of_reusing_backed_up_idle_delegate (line 7069) | async fn assign_session_spawns_instead_of_reusing_backed_up_idle_delegat... function assign_session_reuses_idle_delegate_when_only_non_handoff_messages_are_unread (line 7152) | async fn assign_session_reuses_idle_delegate_when_only_non_handoff_messa... function assign_session_spawns_when_team_has_capacity (line 7228) | async fn assign_session_spawns_when_team_has_capacity() -> Result<()> { function assign_session_inherits_lead_grouping_for_spawned_delegate (line 7306) | async fn assign_session_inherits_lead_grouping_for_spawned_delegate() ->... function assign_session_defers_when_team_is_saturated (line 7358) | async fn assign_session_defers_when_team_is_saturated() -> Result<()> { function drain_inbox_routes_unread_task_handoffs_and_marks_them_read (line 7432) | async fn drain_inbox_routes_unread_task_handoffs_and_marks_them_read() -... function drain_inbox_leaves_saturated_handoffs_unread (line 7481) | async fn drain_inbox_leaves_saturated_handoffs_unread() -> Result<()> { function drain_inbox_routes_high_priority_handoff_first (line 7553) | async fn drain_inbox_routes_high_priority_handoff_first() -> Result<()> { function auto_dispatch_backlog_routes_multiple_lead_inboxes (line 7609) | async fn auto_dispatch_backlog_routes_multiple_lead_inboxes() -> Result<... function coordinate_backlog_reports_remaining_backlog_after_limited_pass (line 7671) | async fn coordinate_backlog_reports_remaining_backlog_after_limited_pass... function coordinate_backlog_classifies_remaining_saturated_pressure (line 7725) | async fn coordinate_backlog_classifies_remaining_saturated_pressure() ->... function rebalance_team_backlog_moves_work_off_backed_up_delegate (line 7800) | async fn rebalance_team_backlog_moves_work_off_backed_up_delegate() -> R... function team_status_reports_handoff_backlog_not_generic_inbox_noise (line 7895) | fn team_status_reports_handoff_backlog_not_generic_inbox_noise() -> Resu... function coordination_status_display_surfaces_mode_and_activity (line 7956) | fn coordination_status_display_surfaces_mode_and_activity() { function coordination_status_summarizes_real_handoff_backlog (line 7987) | fn coordination_status_summarizes_real_handoff_backlog() -> Result<()> { function enforce_conflict_resolution_pauses_later_session_and_notifies_lead (line 8047) | fn enforce_conflict_resolution_pauses_later_session_and_notifies_lead() ... function enforce_conflict_resolution_supports_last_write_wins (line 8138) | fn enforce_conflict_resolution_supports_last_write_wins() -> Result<()> { FILE: ecc2/src/session/mod.rs type SessionAgentProfile (line 14) | pub type SessionAgentProfile = crate::config::ResolvedAgentProfile; type HarnessKind (line 18) | pub enum HarnessKind { method from_agent_type (line 34) | pub fn from_agent_type(agent_type: &str) -> Self { method from_db_value (line 50) | pub fn from_db_value(value: &str) -> Self { method as_str (line 66) | pub fn as_str(self) -> &'static str { method canonical_agent_type (line 82) | pub fn canonical_agent_type(agent_type: &str) -> String { method supports_direct_execution (line 89) | fn supports_direct_execution(self) -> bool { method project_markers (line 96) | fn project_markers(self) -> &'static [&'static str] { method fmt (line 114) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { type SessionHarnessInfo (line 120) | pub struct SessionHarnessInfo { method detected_labels_for (line 128) | fn detected_labels_for(detected: &[HarnessKind]) -> Vec { method configured_detected_labels (line 132) | fn configured_detected_labels(cfg: &crate::config::Config, working_dir... method runner_key (line 152) | pub fn runner_key(agent_type: &str) -> String { method primary_label_for (line 163) | fn primary_label_for(agent_type: &str, primary: HarnessKind) -> String { method detect (line 177) | pub fn detect(agent_type: &str, working_dir: &Path) -> Self { method from_persisted (line 217) | pub fn from_persisted( method with_config_detection (line 243) | pub fn with_config_detection( method resolve_requested_agent_type (line 264) | pub fn resolve_requested_agent_type( method can_launch_detected_label (line 290) | fn can_launch_detected_label(cfg: &crate::config::Config, label: &str)... method detected_summary (line 295) | pub fn detected_summary(&self) -> String { type Session (line 305) | pub struct Session { type SessionState (line 322) | pub enum SessionState { method fmt (line 333) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { method can_transition_to (line 347) | pub fn can_transition_to(&self, next: &Self) -> bool { method from_db_value (line 383) | pub fn from_db_value(value: &str) -> Self { type WorktreeInfo (line 397) | pub struct WorktreeInfo { type SessionMetrics (line 404) | pub struct SessionMetrics { type SessionBoardMeta (line 415) | pub struct SessionBoardMeta { type SessionMessage (line 436) | pub struct SessionMessage { type ScheduledTask (line 447) | pub struct ScheduledTask { type RemoteDispatchRequest (line 464) | pub struct RemoteDispatchRequest { type RemoteDispatchKind (line 490) | pub enum RemoteDispatchKind { method fmt (line 496) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { method from_db_value (line 505) | pub fn from_db_value(value: &str) -> Self { type RemoteDispatchStatus (line 515) | pub enum RemoteDispatchStatus { method fmt (line 522) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { method from_db_value (line 532) | pub fn from_db_value(value: &str) -> Self { type FileActivityEntry (line 542) | pub struct FileActivityEntry { type DecisionLogEntry (line 553) | pub struct DecisionLogEntry { type ContextGraphEntity (line 563) | pub struct ContextGraphEntity { type ContextGraphRelation (line 576) | pub struct ContextGraphRelation { type ContextGraphEntityDetail (line 591) | pub struct ContextGraphEntityDetail { type ContextGraphObservation (line 598) | pub struct ContextGraphObservation { type ContextGraphRecallEntry (line 613) | pub struct ContextGraphRecallEntry { type ContextObservationPriority (line 625) | pub enum ContextObservationPriority { method fmt (line 639) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result { method from_db_value (line 650) | pub fn from_db_value(value: i64) -> Self { method as_db_value (line 659) | pub fn as_db_value(self) -> i64 { method default (line 633) | fn default() -> Self { type ContextGraphSyncStats (line 670) | pub struct ContextGraphSyncStats { type ContextGraphCompactionStats (line 678) | pub struct ContextGraphCompactionStats { type FileActivityAction (line 687) | pub enum FileActivityAction { function normalize_group_label (line 696) | pub fn normalize_group_label(value: &str) -> Option { function default_project_label (line 705) | pub fn default_project_label(working_dir: &Path) -> String { function default_task_group_label (line 713) | pub fn default_task_group_label(task: &str) -> String { type SessionGrouping (line 718) | pub struct SessionGrouping { type TestDir (line 728) | struct TestDir { method new (line 733) | fn new(label: &str) -> Result> { method path (line 740) | fn path(&self) -> &Path { method drop (line 746) | fn drop(&mut self) { function detect_session_harness_prefers_agent_type_and_collects_project_markers (line 752) | fn detect_session_harness_prefers_agent_type_and_collects_project_markers( function detect_session_harness_falls_back_to_project_markers_when_agent_unspecified (line 771) | fn detect_session_harness_falls_back_to_project_markers_when_agent_unspe... function detect_session_harness_collects_extended_builtin_markers (line 785) | fn detect_session_harness_collects_extended_builtin_markers( function canonical_agent_type_normalizes_known_aliases (line 811) | fn canonical_agent_type_normalizes_known_aliases() { function detect_session_harness_preserves_custom_agent_label_without_markers (line 825) | fn detect_session_harness_preserves_custom_agent_label_without_markers() { function detect_session_harness_preserves_custom_agent_label_with_project_markers (line 834) | fn detect_session_harness_preserves_custom_agent_label_with_project_mark... function config_detection_adds_custom_markers_to_detected_summary (line 852) | fn config_detection_adds_custom_markers_to_detected_summary( function config_detection_preserves_custom_primary_label_and_appends_marker_matches (line 875) | fn config_detection_preserves_custom_primary_label_and_appends_marker_ma... function runner_key_uses_canonical_label_for_unknown_harnesses (line 899) | fn runner_key_uses_canonical_label_for_unknown_harnesses() { function resolve_requested_agent_type_uses_detected_builtin_marker_for_auto (line 908) | fn resolve_requested_agent_type_uses_detected_builtin_marker_for_auto( function resolve_requested_agent_type_uses_configured_marker_for_auto (line 923) | fn resolve_requested_agent_type_uses_configured_marker_for_auto( function resolve_requested_agent_type_skips_nonlaunchable_builtin_markers_without_runner (line 942) | fn resolve_requested_agent_type_skips_nonlaunchable_builtin_markers_with... function resolve_requested_agent_type_uses_configured_runner_for_extended_builtin_markers (line 957) | fn resolve_requested_agent_type_uses_configured_runner_for_extended_buil... function resolve_requested_agent_type_falls_back_to_claude_without_markers (line 976) | fn resolve_requested_agent_type_falls_back_to_claude_without_markers() { FILE: ecc2/src/session/output.rs constant OUTPUT_BUFFER_LIMIT (line 7) | pub const OUTPUT_BUFFER_LIMIT: usize = 1000; type OutputStream (line 10) | pub enum OutputStream { method as_str (line 16) | pub fn as_str(self) -> &'static str { method from_db_value (line 23) | pub fn from_db_value(value: &str) -> Self { type OutputLine (line 32) | pub struct OutputLine { method new (line 39) | pub fn new( method with_current_timestamp (line 51) | pub fn with_current_timestamp(stream: OutputStream, text: impl Into Option> { type OutputEvent (line 63) | pub struct OutputEvent { type SessionOutputStore (line 69) | pub struct SessionOutputStore { method new (line 82) | pub fn new(capacity: usize) -> Self { method subscribe (line 93) | pub fn subscribe(&self) -> broadcast::Receiver { method push_line (line 97) | pub fn push_line(&self, session_id: &str, stream: OutputStream, text: ... method replace_lines (line 116) | pub fn replace_lines(&self, session_id: &str, lines: Vec) { method lines (line 126) | pub fn lines(&self, session_id: &str) -> Vec { method lock_buffers (line 133) | fn lock_buffers(&self) -> MutexGuard<'_, HashMap Self { function ring_buffer_keeps_most_recent_lines (line 145) | fn ring_buffer_keeps_most_recent_lines() { function pushing_output_broadcasts_events (line 160) | async fn pushing_output_broadcasts_events() { FILE: ecc2/src/session/runtime.rs type DbAck (line 14) | type DbAck = std::result::Result<(), String>; type DbMessage (line 16) | enum DbMessage { type DbWriter (line 36) | struct DbWriter { method start (line 41) | fn start(db_path: PathBuf, session_id: String) -> Self { method update_state (line 47) | async fn update_state(&self, state: SessionState) -> Result<()> { method update_pid (line 51) | async fn update_pid(&self, pid: Option) -> Result<()> { method append_output_line (line 55) | async fn append_output_line(&self, stream: OutputStream, line: String)... method touch_heartbeat (line 60) | async fn touch_heartbeat(&self) -> Result<()> { method send (line 64) | async fn send(&self, build: F) -> Result<()> function run_db_writer (line 81) | fn run_db_writer(db_path: PathBuf, session_id: String, mut rx: mpsc::Unb... function capture_command_output (line 137) | pub async fn capture_command_output( function capture_stream (line 230) | async fn capture_stream( function capture_command_output_persists_lines_and_events (line 266) | async fn capture_command_output_persists_lines_and_events() -> Result<()> { function capture_command_output_updates_heartbeat_for_quiet_processes (line 334) | async fn capture_command_output_updates_heartbeat_for_quiet_processes() ... FILE: ecc2/src/session/store.rs type StateStore (line 26) | pub struct StateStore { method open (line 159) | pub fn open(path: &Path) -> Result { method init_schema (line 168) | fn init_schema(&self) -> Result<()> { method ensure_session_columns (line 442) | fn ensure_session_columns(&self) -> Result<()> { method ensure_session_board_columns (line 805) | fn ensure_session_board_columns(&self) -> Result<()> { method has_column (line 902) | fn has_column(&self, table: &str, column: &str) -> Result { method backfill_session_harnesses (line 912) | fn backfill_session_harnesses(&self) -> Result<()> { method insert_session (line 950) | pub fn insert_session(&self, session: &Session) -> Result<()> { method upsert_session_profile (line 983) | pub fn upsert_session_profile( method get_session_profile (line 1035) | pub fn get_session_profile(&self, session_id: &str) -> Result ... method update_pid (line 1145) | pub fn update_pid(&self, session_id: &str, pid: Option) -> Result... method clear_worktree (line 1167) | pub fn clear_worktree(&self, session_id: &str) -> Result<()> { method clear_worktree_to_dir (line 1176) | pub fn clear_worktree_to_dir(&self, session_id: &str, working_dir: &Pa... method attach_worktree (line 1201) | pub fn attach_worktree(&self, session_id: &str, worktree: &WorktreeInf... method enqueue_pending_worktree (line 1229) | pub fn enqueue_pending_worktree(&self, session_id: &str, repo_root: &P... method dequeue_pending_worktree (line 1242) | pub fn dequeue_pending_worktree(&self, session_id: &str) -> Result<()> { method pending_worktree_queue_contains (line 1250) | pub fn pending_worktree_queue_contains(&self, session_id: &str) -> Res... method pending_worktree_queue (line 1262) | pub fn pending_worktree_queue(&self, limit: usize) -> Result Result> { method list_due_scheduled_tasks (line 1344) | pub fn list_due_scheduled_tasks( method get_scheduled_task (line 1365) | pub fn get_scheduled_task(&self, schedule_id: i64) -> Result Result { method record_scheduled_task_run (line 1385) | pub fn record_scheduled_task_run( method insert_remote_dispatch_request (line 1406) | pub fn insert_remote_dispatch_request( method list_remote_dispatch_requests (line 1466) | pub fn list_remote_dispatch_requests( method list_pending_remote_dispatch_requests (line 1494) | pub fn list_pending_remote_dispatch_requests( method get_remote_dispatch_request (line 1501) | pub fn get_remote_dispatch_request( method record_remote_dispatch_success (line 1519) | pub fn record_remote_dispatch_success( method record_remote_dispatch_failure (line 1545) | pub fn record_remote_dispatch_failure(&self, request_id: i64, error: &... method update_metrics (line 1558) | pub fn update_metrics(&self, session_id: &str, metrics: &SessionMetric... method refresh_session_durations (line 1586) | pub fn refresh_session_durations(&self) -> Result<()> { method touch_heartbeat (line 1638) | pub fn touch_heartbeat(&self, session_id: &str) -> Result<()> { method sync_cost_tracker_metrics (line 1652) | pub fn sync_cost_tracker_metrics(&self, metrics_path: &Path) -> Result... method sync_tool_activity_metrics (line 1724) | pub fn sync_tool_activity_metrics(&self, metrics_path: &Path) -> Resul... method sync_context_graph_decision (line 1905) | fn sync_context_graph_decision( method sync_context_graph_file_event (line 1940) | fn sync_context_graph_file_event( method sync_context_graph_session (line 1983) | fn sync_context_graph_session(&self, session_id: &str) -> Result Result<()> { method list_sessions (line 2079) | pub fn list_sessions(&self) -> Result> { method list_session_harnesses (line 2153) | pub fn list_session_harnesses(&self) -> Result Result Result Result> { method refresh_session_board_meta (line 2248) | fn refresh_session_board_meta(&self) -> Result<()> { method get_session (line 2336) | pub fn get_session(&self, id: &str) -> Result> { method delete_session (line 2343) | pub fn delete_session(&self, session_id: &str) -> Result<()> { method send_message (line 2370) | pub fn send_message(&self, from: &str, to: &str, content: &str, msg_ty... method list_messages_sent_by_session (line 2381) | fn list_messages_sent_by_session( method list_messages_for_session (line 2416) | pub fn list_messages_for_session( method unread_message_counts (line 2451) | pub fn unread_message_counts(&self) -> Result> { method unread_approval_counts (line 2468) | pub fn unread_approval_counts(&self) -> Result> { method unread_approval_queue (line 2485) | pub fn unread_approval_queue(&self, limit: usize) -> Result Result Result Result Result { method mark_message_read (line 2652) | pub fn mark_message_read(&self, message_id: i64) -> Result { method latest_task_handoff_source (line 2662) | pub fn latest_task_handoff_source(&self, session_id: &str) -> Result Result Result { method record_daemon_dispatch_pass (line 3597) | pub fn record_daemon_dispatch_pass( method record_daemon_recovery_dispatch_pass (line 3625) | pub fn record_daemon_recovery_dispatch_pass(&self, routed: usize, lead... method record_daemon_rebalance_pass (line 3639) | pub fn record_daemon_rebalance_pass(&self, rerouted: usize, leads: usi... method record_daemon_auto_merge_pass (line 3656) | pub fn record_daemon_auto_merge_pass( method record_daemon_auto_prune_pass (line 3686) | pub fn record_daemon_auto_prune_pass( method delegated_children (line 3707) | pub fn delegated_children(&self, session_id: &str, limit: usize) -> Re... method append_output_line (line 3726) | pub fn append_output_line( method get_output_lines (line 3764) | pub fn get_output_lines(&self, session_id: &str, limit: usize) -> Resu... method insert_tool_log (line 3794) | pub fn insert_tool_log( method query_tool_logs (line 3836) | pub fn query_tool_logs( method list_tool_logs_for_session (line 3886) | pub fn list_tool_logs_for_session(&self, session_id: &str) -> Result Result... method upsert_conflict_incident (line 4084) | pub fn upsert_conflict_incident( method resolve_conflict_incidents_not_in (line 4145) | pub fn resolve_conflict_incidents_not_in( method list_open_conflict_incidents_for_session (line 4169) | pub fn list_open_conflict_incidents_for_session( method list_open_conflict_incidents (line 4200) | fn list_open_conflict_incidents(&self, limit: usize) -> Result bool { method dispatch_cooloff_active (line 114) | pub fn dispatch_cooloff_active(&self) -> bool { method chronic_saturation_cleared_at (line 119) | pub fn chronic_saturation_cleared_at(&self) -> Option<&chrono::DateTim... method stabilized_after_recovery_at (line 135) | pub fn stabilized_after_recovery_at(&self) -> Option<&chrono::DateTime... method operator_escalation_required (line 151) | pub fn operator_escalation_required(&self) -> bool { type PersistedFileEvent (line 4220) | struct PersistedFileEvent { function parse_persisted_file_events (line 4229) | fn parse_persisted_file_events(value: &str) -> Option &'static s... function board_lane_for_state (line 4263) | fn board_lane_for_state(state: &SessionState) -> &'static str { function derive_board_scope (line 4274) | fn derive_board_scope(session: &Session) -> (Option, Option HashMap i64 { function derive_board_progress_percent (line 4398) | fn derive_board_progress_percent(session: &Session) -> i64 { function derive_board_status_detail (line 4418) | fn derive_board_status_detail(session: &Session) -> Option { function annotate_board_motion (line 4440) | fn annotate_board_motion(current: &mut SessionBoardMeta, previous: &Sess... function extract_labeled_scope (line 4467) | fn extract_labeled_scope(task: &str, labels: &[&str]) -> Option { function extract_issue_reference (line 4504) | fn extract_issue_reference(task: &str) -> Option { function derive_board_conflict_signals (line 4530) | fn derive_board_conflict_signals(sessions: &[Session]) -> HashMap String { function routing_activity_suffix (line 4629) | fn routing_activity_suffix(context: &str) -> Option<&'static str> { function extract_task_handoff_context (line 4644) | fn extract_task_handoff_context(content: &str) -> Option { function truncate_task_for_signal (line 4657) | fn truncate_task_for_signal(task: &str) -> String { function map_conflict_incident (line 4668) | fn map_conflict_incident(row: &rusqlite::Row<'_>) -> rusqlite::Result) -> rusqlite::Result) -> rusqlite::Res... function parse_timestamp_column (line 4763) | fn parse_timestamp_column( function parse_file_activity_action (line 4778) | fn parse_file_activity_action(value: &str) -> Option { function normalize_optional_string (line 4790) | fn normalize_optional_string(value: Option) -> Option { function default_input_params_json (line 4801) | fn default_input_params_json() -> String { function task_priority_db_value (line 4805) | fn task_priority_db_value(priority: crate::comms::TaskPriority) -> i64 { function task_priority_from_db_value (line 4814) | fn task_priority_from_db_value(value: i64) -> crate::comms::TaskPriority { function infer_file_activity_action (line 4823) | fn infer_file_activity_action(tool_name: &str) -> FileActivityAction { function session_state_supports_overlap (line 4840) | fn session_state_supports_overlap(state: &SessionState) -> bool { function map_decision_log_entry (line 4847) | fn map_decision_log_entry(row: &rusqlite::Row<'_>) -> rusqlite::Result) -> rusqlite::Result... function map_context_graph_relation (line 4898) | fn map_context_graph_relation(row: &rusqlite::Row<'_>) -> rusqlite::Resu... function map_context_graph_observation (line 4916) | fn map_context_graph_observation( function context_graph_recall_terms (line 4942) | fn context_graph_recall_terms(query: &str) -> Vec { function context_graph_matched_terms (line 4956) | fn context_graph_matched_terms( function context_graph_recall_score (line 4986) | fn context_graph_recall_score( function parse_store_timestamp (line 5016) | fn parse_store_timestamp( function context_graph_entity_key (line 5031) | fn context_graph_entity_key(entity_type: &str, name: &str, path: Option<... function context_graph_file_name (line 5040) | fn context_graph_file_name(path: &str) -> String { function file_overlap_is_relevant (line 5048) | fn file_overlap_is_relevant(current: &FileActivityEntry, other: &FileAct... function overlap_state_priority (line 5054) | fn overlap_state_priority(state: &SessionState) -> u8 { type TestDir (line 5072) | struct TestDir { method new (line 5077) | fn new(label: &str) -> Result { method path (line 5084) | fn path(&self) -> &Path { method drop (line 5090) | fn drop(&mut self) { function build_session (line 5095) | fn build_session(id: &str, state: SessionState) -> Session { function update_state_rejects_invalid_terminal_transition (line 5115) | fn update_state_rejects_invalid_terminal_transition() -> Result<()> { function open_migrates_existing_sessions_table_with_pid_column (line 5132) | fn open_migrates_existing_sessions_table_with_pid_column() -> Result<()> { function open_backfills_session_harness_metadata_for_legacy_rows (line 5181) | fn open_backfills_session_harness_metadata_for_legacy_rows() -> Result<(... function insert_session_preserves_custom_harness_label_for_unknown_agent_types (line 5253) | fn insert_session_preserves_custom_harness_label_for_unknown_agent_types... function session_profile_round_trips_with_launch_settings (line 5283) | fn session_profile_round_trips_with_launch_settings() -> Result<()> { function sync_cost_tracker_metrics_aggregates_usage_into_sessions (line 5343) | fn sync_cost_tracker_metrics_aggregates_usage_into_sessions() -> Result<... function sync_tool_activity_metrics_aggregates_usage_and_logs (line 5390) | fn sync_tool_activity_metrics_aggregates_usage_and_logs() -> Result<()> { function list_file_activity_expands_logged_file_paths (line 5471) | fn list_file_activity_expands_logged_file_paths() -> Result<()> { function list_file_activity_preserves_diff_and_patch_previews (line 5518) | fn list_file_activity_preserves_diff_and_patch_previews() -> Result<()> { function list_file_overlaps_reports_other_active_sessions_sharing_paths (line 5568) | fn list_file_overlaps_reports_other_active_sessions_sharing_paths() -> R... function conflict_incidents_upsert_and_resolve (line 5645) | fn conflict_incidents_upsert_and_resolve() -> Result<()> { function open_migrates_legacy_tool_log_before_creating_hook_event_index (line 5695) | fn open_migrates_legacy_tool_log_before_creating_hook_event_index() -> R... function insert_and_list_decisions_for_session (line 5741) | fn insert_and_list_decisions_for_session() -> Result<()> { function list_recent_decisions_across_sessions_returns_latest_subset_in_order (line 5796) | fn list_recent_decisions_across_sessions_returns_latest_subset_in_order(... function upsert_and_filter_context_graph_entities (line 5840) | fn upsert_and_filter_context_graph_entities() -> Result<()> { function add_and_list_context_observations (line 5907) | fn add_and_list_context_observations() -> Result<()> { function compact_context_graph_prunes_duplicate_and_overflow_observations (line 5962) | fn compact_context_graph_prunes_duplicate_and_overflow_observations() ->... function add_context_observation_auto_compacts_entity_history (line 6033) | fn add_context_observation_auto_compacts_entity_history() -> Result<()> { function recall_context_entities_ranks_matching_entities (line 6089) | fn recall_context_entities_ranks_matching_entities() -> Result<()> { function compact_context_graph_preserves_pinned_observations (line 6197) | fn compact_context_graph_preserves_pinned_observations() -> Result<()> { function set_context_observation_pinned_updates_existing_observation (line 6264) | fn set_context_observation_pinned_updates_existing_observation() -> Resu... function connector_checkpoint_summary_reports_synced_sources_and_timestamp (line 6319) | fn connector_checkpoint_summary_reports_synced_sources_and_timestamp() -... function scheduled_tasks_round_trip_and_advance_runs (line 6344) | fn scheduled_tasks_round_trip_and_advance_runs() -> Result<()> { function context_graph_detail_includes_incoming_and_outgoing_relations (line 6387) | fn context_graph_detail_includes_incoming_and_outgoing_relations() -> Re... function insert_decision_automatically_upserts_context_graph_entity (line 6470) | fn insert_decision_automatically_upserts_context_graph_entity() -> Resul... function sync_tool_activity_metrics_automatically_upserts_file_entities (line 6527) | fn sync_tool_activity_metrics_automatically_upserts_file_entities() -> R... function sync_context_graph_history_backfills_existing_activity (line 6586) | fn sync_context_graph_history_backfills_existing_activity() -> Result<()> { function refresh_session_durations_updates_running_and_terminal_sessions (line 6684) | fn refresh_session_durations_updates_running_and_terminal_sessions() -> ... function touch_heartbeat_updates_last_heartbeat_timestamp (line 6736) | fn touch_heartbeat_updates_last_heartbeat_timestamp() -> Result<()> { function append_output_line_keeps_latest_buffer_window (line 6768) | fn append_output_line_keeps_latest_buffer_window() -> Result<()> { function message_round_trip_tracks_unread_counts_and_read_state (line 6805) | fn message_round_trip_tracks_unread_counts_and_read_state() -> Result<()> { function approval_queue_counts_only_queries_and_conflicts (line 6922) | fn approval_queue_counts_only_queries_and_conflicts() -> Result<()> { function daemon_activity_round_trips_latest_passes (line 6969) | fn daemon_activity_round_trips_latest_passes() -> Result<()> { function daemon_activity_detects_rebalance_first_mode (line 7005) | fn daemon_activity_detects_rebalance_first_mode() { function daemon_activity_tracks_chronic_saturation_streak (line 7088) | fn daemon_activity_tracks_chronic_saturation_streak() -> Result<()> { FILE: ecc2/src/tui/app.rs function run (line 15) | pub async fn run(db: StateStore, cfg: Config) -> Result<()> { FILE: ecc2/src/tui/dashboard.rs constant DEFAULT_GRID_SIZE_PERCENT (line 34) | const DEFAULT_GRID_SIZE_PERCENT: u16 = 50; constant OUTPUT_PANE_PERCENT (line 35) | const OUTPUT_PANE_PERCENT: u16 = 70; constant MIN_PANE_SIZE_PERCENT (line 36) | const MIN_PANE_SIZE_PERCENT: u16 = 20; constant MAX_PANE_SIZE_PERCENT (line 37) | const MAX_PANE_SIZE_PERCENT: u16 = 80; constant PANE_RESIZE_STEP_PERCENT (line 38) | const PANE_RESIZE_STEP_PERCENT: u16 = 5; constant MAX_LOG_ENTRIES (line 39) | const MAX_LOG_ENTRIES: u64 = 12; constant MAX_DIFF_PREVIEW_LINES (line 40) | const MAX_DIFF_PREVIEW_LINES: usize = 6; constant MAX_DIFF_PATCH_LINES (line 41) | const MAX_DIFF_PATCH_LINES: usize = 80; constant MAX_METRICS_GRAPH_RELATIONS (line 42) | const MAX_METRICS_GRAPH_RELATIONS: usize = 6; constant MAX_FILE_ACTIVITY_PATCH_LINES (line 43) | const MAX_FILE_ACTIVITY_PATCH_LINES: usize = 3; type WorktreeDiffColumns (line 46) | struct WorktreeDiffColumns { type ThemePalette (line 53) | struct ThemePalette { type SessionCompletionSummary (line 61) | struct SessionCompletionSummary { method title (line 380) | fn title(&self) -> String { method subtitle (line 388) | fn subtitle(&self) -> String { method notification_body (line 396) | fn notification_body(&self) -> String { method popup_text (line 429) | fn popup_text(&self) -> String { type TestRunSummary (line 77) | struct TestRunSummary { type Dashboard (line 82) | pub struct Dashboard { method new (line 505) | pub fn new(db: StateStore, cfg: Config) -> Self { method with_output_store (line 509) | pub fn with_output_store( method render (line 636) | pub fn render(&mut self, frame: &mut Frame) { method render_header (line 672) | fn render_header(&self, frame: &mut Frame, area: Rect) { method render_sessions (line 704) | fn render_sessions(&mut self, frame: &mut Frame, area: Rect) { method render_output (line 828) | fn render_output(&mut self, frame: &mut Frame, area: Rect) { method render_split_diff_output (line 949) | fn render_split_diff_output(&mut self, frame: &mut Frame, area: Rect) { method output_title (line 983) | fn output_title(&self) -> String { method empty_output_message (line 1078) | fn empty_output_message(&self) -> &'static str { method empty_git_status_message (line 1099) | fn empty_git_status_message(&self) -> &'static str { method empty_timeline_message (line 1103) | fn empty_timeline_message(&self) -> &'static str { method empty_graph_message (line 1204) | fn empty_graph_message(&self) -> &'static str { method render_searchable_output (line 1232) | fn render_searchable_output(&self, lines: &[&OutputLine]) -> Text<'sta... method render_searchable_graph (line 1267) | fn render_searchable_graph(&self, lines: &[GraphDisplayLine]) -> Text<... method render_metrics (line 1300) | fn render_metrics(&mut self, frame: &mut Frame, area: Rect) { method render_log (line 1369) | fn render_log(&self, frame: &mut Frame, area: Rect) { method render_status_bar (line 1420) | fn render_status_bar(&self, frame: &mut Frame, area: Rect) { method render_completion_popup (line 1510) | fn render_completion_popup(&self, frame: &mut Frame, summary: &Session... method render_help (line 1535) | fn render_help(&self, frame: &mut Frame, area: Rect) { method next_pane (line 1618) | pub fn next_pane(&mut self) { method prev_pane (line 1629) | pub fn prev_pane(&mut self) { method focus_pane_number (line 1640) | pub fn focus_pane_number(&mut self, slot: usize) { method focus_pane_left (line 1657) | pub fn focus_pane_left(&mut self) { method focus_pane_right (line 1661) | pub fn focus_pane_right(&mut self) { method focus_pane_up (line 1665) | pub fn focus_pane_up(&mut self) { method focus_pane_down (line 1669) | pub fn focus_pane_down(&mut self) { method begin_pane_command_mode (line 1673) | pub fn begin_pane_command_mode(&mut self) { method is_pane_command_mode (line 1680) | pub fn is_pane_command_mode(&self) -> bool { method handle_pane_navigation_key (line 1684) | pub fn handle_pane_navigation_key(&mut self, key: KeyEvent) -> bool { method handle_pane_command_key (line 1710) | pub fn handle_pane_command_key(&mut self, key: KeyEvent) -> bool { method collapse_selected_pane (line 1741) | pub fn collapse_selected_pane(&mut self) { method restore_collapsed_panes (line 1761) | pub fn restore_collapsed_panes(&mut self) { method cycle_pane_layout (line 1773) | pub fn cycle_pane_layout(&mut self) { method set_pane_layout (line 1778) | pub fn set_pane_layout(&mut self, layout: PaneLayout) { method cycle_pane_layout_with_save (line 1783) | fn cycle_pane_layout_with_save(&mut self, config_path: &std::path::... method set_pane_layout_with_save (line 1815) | fn set_pane_layout_with_save( method auto_split_layout_after_spawn (line 1852) | fn auto_split_layout_after_spawn(&mut self, spawned_count: usize) -> O... method auto_split_layout_after_spawn_with_save (line 1857) | fn auto_split_layout_after_spawn_with_save( method adjust_pane_size_with_save (line 1911) | fn adjust_pane_size_with_save( method persist_current_pane_size (line 1955) | fn persist_current_pane_size(&mut self) { method toggle_theme (line 1966) | pub fn toggle_theme(&mut self) { method toggle_theme_with_save (line 1971) | fn toggle_theme_with_save(&mut self, config_path: &std::path::Path,... method increase_pane_size (line 1994) | pub fn increase_pane_size(&mut self) { method decrease_pane_size (line 2001) | pub fn decrease_pane_size(&mut self) { method scroll_down (line 2010) | pub fn scroll_down(&mut self) { method scroll_up (line 2057) | pub fn scroll_up(&mut self) { method focus_next_delegate (line 2094) | pub fn focus_next_delegate(&mut self) { method focus_previous_delegate (line 2102) | pub fn focus_previous_delegate(&mut self) { method open_focused_delegate (line 2114) | pub fn open_focused_delegate(&mut self) { method focus_next_approval_target (line 2137) | pub fn focus_next_approval_target(&mut self) { method new_session (line 2159) | pub async fn new_session(&mut self) { method toggle_output_mode (line 2261) | pub fn toggle_output_mode(&mut self) { method toggle_git_status_mode (line 2317) | pub fn toggle_git_status_mode(&mut self) { method stage_selected_git_status (line 2345) | pub fn stage_selected_git_status(&mut self) { method unstage_selected_git_status (line 2373) | pub fn unstage_selected_git_status(&mut self) { method reset_selected_git_status (line 2404) | pub fn reset_selected_git_status(&mut self) { method begin_commit_prompt (line 2432) | pub fn begin_commit_prompt(&mut self) { method begin_pr_prompt (line 2466) | pub fn begin_pr_prompt(&mut self) { method stage_selected_git_hunk (line 2492) | fn stage_selected_git_hunk(&mut self) { method unstage_selected_git_hunk (line 2511) | fn unstage_selected_git_hunk(&mut self) { method reset_selected_git_hunk (line 2530) | fn reset_selected_git_hunk(&mut self) { method toggle_diff_view_mode (line 2549) | pub fn toggle_diff_view_mode(&mut self) { method next_diff_hunk (line 2568) | pub fn next_diff_hunk(&mut self) { method prev_diff_hunk (line 2572) | pub fn prev_diff_hunk(&mut self) { method move_diff_hunk (line 2576) | fn move_diff_hunk(&mut self, delta: isize) { method toggle_timeline_mode (line 2607) | pub fn toggle_timeline_mode(&mut self) { method toggle_conflict_protocol_mode (line 2628) | pub fn toggle_conflict_protocol_mode(&mut self) { method assign_selected (line 2651) | pub async fn assign_selected(&mut self) { method rebalance_selected_team (line 2695) | pub async fn rebalance_selected_team(&mut self) { method drain_inbox_selected (line 2748) | pub async fn drain_inbox_selected(&mut self) { method auto_dispatch_backlog (line 2802) | pub async fn auto_dispatch_backlog(&mut self) { method rebalance_all_teams (line 2861) | pub async fn rebalance_all_teams(&mut self) { method coordinate_backlog (line 2907) | pub async fn coordinate_backlog(&mut self) { method stop_selected (line 2982) | pub async fn stop_selected(&mut self) { method resume_selected (line 3004) | pub async fn resume_selected(&mut self) { method cleanup_selected_worktree (line 3026) | pub async fn cleanup_selected_worktree(&mut self) { method merge_selected_worktree (line 3052) | pub async fn merge_selected_worktree(&mut self) { method merge_ready_worktrees (line 3089) | pub async fn merge_ready_worktrees(&mut self) { method prune_inactive_worktrees (line 3145) | pub async fn prune_inactive_worktrees(&mut self) { method delete_selected_session (line 3192) | pub async fn delete_selected_session(&mut self) { method refresh (line 3214) | pub fn refresh(&mut self) { method toggle_help (line 3218) | pub fn toggle_help(&mut self) { method is_input_mode (line 3222) | pub fn is_input_mode(&self) -> bool { method has_active_search (line 3229) | pub fn has_active_search(&self) -> bool { method is_context_graph_mode (line 3233) | pub fn is_context_graph_mode(&self) -> bool { method has_active_completion_popup (line 3237) | pub fn has_active_completion_popup(&self) -> bool { method dismiss_completion_popup (line 3241) | pub fn dismiss_completion_popup(&mut self) { method begin_spawn_prompt (line 3247) | pub fn begin_spawn_prompt(&mut self) { method toggle_search_scope (line 3261) | pub fn toggle_search_scope(&mut self) { method toggle_search_agent_filter (line 3312) | pub fn toggle_search_agent_filter(&mut self) { method begin_search (line 3346) | pub fn begin_search(&mut self) { method push_input_char (line 3371) | pub fn push_input_char(&mut self, ch: char) { method pop_input_char (line 3383) | pub fn pop_input_char(&mut self) { method cancel_input (line 3395) | pub fn cancel_input(&mut self) { method submit_input (line 3407) | pub async fn submit_input(&mut self) { method submit_pr_prompt (line 3419) | fn submit_pr_prompt(&mut self) { method submit_commit_prompt (line 3480) | fn submit_commit_prompt(&mut self) { method submit_search (line 3515) | fn submit_search(&mut self) { method build_pull_request_body (line 3555) | fn build_pull_request_body(&self, session: &Session) -> String { method submit_spawn_prompt (line 3608) | async fn submit_spawn_prompt(&mut self) { method clear_search (line 3764) | pub fn clear_search(&mut self) { method next_search_match (line 3779) | pub fn next_search_match(&mut self) { method prev_search_match (line 3790) | pub fn prev_search_match(&mut self) { method toggle_output_filter (line 3805) | pub fn toggle_output_filter(&mut self) { method cycle_output_time_filter (line 3822) | pub fn cycle_output_time_filter(&mut self) { method cycle_timeline_event_filter (line 3853) | pub fn cycle_timeline_event_filter(&mut self) { method toggle_context_graph_mode (line 3869) | pub fn toggle_context_graph_mode(&mut self) { method cycle_graph_entity_filter (line 3887) | pub fn cycle_graph_entity_filter(&mut self) { method toggle_auto_dispatch_policy (line 3904) | pub fn toggle_auto_dispatch_policy(&mut self) { method toggle_auto_merge_policy (line 3925) | pub fn toggle_auto_merge_policy(&mut self) { method toggle_auto_worktree_policy (line 3946) | pub fn toggle_auto_worktree_policy(&mut self) { method adjust_auto_dispatch_limit (line 3969) | pub fn adjust_auto_dispatch_limit(&mut self, delta: isize) { method tick (line 3995) | pub async fn tick(&mut self) { method sync_runtime_metrics (line 4012) | fn sync_runtime_metrics( method sync_from_store (line 4076) | fn sync_from_store(&mut self) { method sync_budget_alerts (line 4133) | fn sync_budget_alerts(&mut self) { method sync_session_state_notifications (line 4190) | fn sync_session_state_notifications(&mut self) { method persist_completion_summary_observation (line 4294) | fn persist_completion_summary_observation( method sync_approval_notifications (line 4329) | fn sync_approval_notifications(&mut self) { method deliver_completion_summary (line 4368) | fn deliver_completion_summary(&mut self, summary: SessionCompletionSum... method build_completion_summary (line 4388) | fn build_completion_summary(&self, session: &Session) -> SessionComple... method notify_desktop (line 4452) | fn notify_desktop(&self, event: NotificationEvent, title: &str, body: ... method notify_webhook (line 4456) | fn notify_webhook(&self, event: NotificationEvent, body: &str) { method sync_selection (line 4460) | fn sync_selection(&mut self) { method sync_selection_by_id (line 4470) | fn sync_selection_by_id(&mut self, selected_id: Option<&str>) { method sync_output_cache (line 4483) | fn sync_output_cache(&mut self) { method ensure_selected_pane_visible (line 4505) | fn ensure_selected_pane_visible(&mut self) { method focus_pane (line 4511) | fn focus_pane(&mut self, pane: Pane) { method move_pane_focus (line 4517) | fn move_pane_focus(&mut self, direction: PaneDirection) { method pane_focus_shortcuts_label (line 4555) | fn pane_focus_shortcuts_label(&self) -> String { method pane_move_shortcuts_label (line 4559) | fn pane_move_shortcuts_label(&self) -> String { method sync_global_handoff_backlog (line 4563) | fn sync_global_handoff_backlog(&mut self) { method sync_approval_queue (line 4579) | fn sync_approval_queue(&mut self) { method sync_handoff_backlog_counts (line 4596) | fn sync_handoff_backlog_counts(&mut self) { method sync_board_meta (line 4609) | fn sync_board_meta(&mut self) { method sync_worktree_health_by_session (line 4619) | fn sync_worktree_health_by_session(&mut self) { method sync_daemon_activity (line 4641) | fn sync_daemon_activity(&mut self) { method sync_selected_output (line 4651) | fn sync_selected_output(&mut self) { method sync_selected_diff (line 4663) | fn sync_selected_diff(&mut self) { method sync_selected_git_status (line 4718) | fn sync_selected_git_status(&mut self) { method sync_selected_git_patch (line 4736) | fn sync_selected_git_patch(&mut self) { method selected_git_status_context (line 4771) | fn selected_git_status_context( method selected_git_patch_context (line 4783) | fn selected_git_patch_context( method refresh_after_git_status_action (line 4797) | fn refresh_after_git_status_action(&mut self, preferred_path: Option<&... method active_patch_text (line 4824) | fn active_patch_text(&self) -> Option<&String> { method current_diff_hunk_offsets (line 4832) | fn current_diff_hunk_offsets(&self) -> &[usize] { method current_diff_hunk_index (line 4845) | fn current_diff_hunk_index(&self) -> usize { method set_current_diff_hunk_index (line 4852) | fn set_current_diff_hunk_index(&mut self, index: usize) { method current_diff_hunk_offset (line 4859) | fn current_diff_hunk_offset(&self) -> usize { method diff_hunk_title_suffix (line 4866) | fn diff_hunk_title_suffix(&self) -> String { method sync_selected_messages (line 4875) | fn sync_selected_messages(&mut self) { method sync_selected_lineage (line 4912) | fn sync_selected_lineage(&mut self) { method build_route_preview (line 5057) | fn build_route_preview( method latest_route_task (line 5138) | fn latest_route_task(&self, session_id: &str) -> Option { method format_assignment_preview (line 5152) | fn format_assignment_preview( method selected_session_id (line 5209) | fn selected_session_id(&self) -> Option<&str> { method selected_output_lines (line 5215) | fn selected_output_lines(&self) -> &[OutputLine] { method selected_agent_type (line 5222) | fn selected_agent_type(&self) -> Option<&str> { method search_agent_filter_label (line 5228) | fn search_agent_filter_label(&self) -> String { method search_agent_title_suffix (line 5234) | fn search_agent_title_suffix(&self) -> String { method visible_output_lines_for_session (line 5244) | fn visible_output_lines_for_session(&self, session_id: &str) -> Vec<&O... method visible_output_lines (line 5258) | fn visible_output_lines(&self) -> Vec<&OutputLine> { method visible_graph_lines (line 5264) | fn visible_graph_lines(&self) -> Vec { method graph_lines_for_entity (line 5283) | fn graph_lines_for_entity( method session_graph_metrics_lines (line 5355) | fn session_graph_metrics_lines(&self, session_id: &str) -> Vec { method session_graph_recall_lines (line 5409) | fn session_graph_recall_lines(&self, session: &Session) -> Vec { method visible_git_status_lines (line 5478) | fn visible_git_status_lines(&self) -> Vec> { method visible_timeline_lines (line 5518) | fn visible_timeline_lines(&self) -> Vec> { method timeline_events (line 5548) | fn timeline_events(&self) -> Vec { method session_timeline_events (line 5570) | fn session_timeline_events(&self, session: &Session) -> Vec String { method search_match_session_count (line 5787) | fn search_match_session_count(&self) -> usize { method search_target_session_ids (line 5796) | fn search_target_session_ids(&self) -> Vec<&str> { method next_approval_target_session_id (line 5813) | fn next_approval_target_session_id(&self) -> Option { method sync_output_scroll (line 5851) | fn sync_output_scroll(&mut self, viewport_height: usize) { method max_output_scroll (line 5870) | fn max_output_scroll(&self) -> usize { method sync_metrics_scroll (line 5890) | fn sync_metrics_scroll(&mut self, viewport_height: usize) { method max_metrics_scroll (line 5896) | fn max_metrics_scroll(&self) -> usize { method focused_delegate_index (line 5903) | fn focused_delegate_index(&self) -> Option { method set_focused_delegate_by_index (line 5918) | fn set_focused_delegate_by_index(&mut self, index: usize) { method sync_focused_delegate_selection (line 5932) | fn sync_focused_delegate_selection(&mut self) { method ensure_focused_delegate_visible (line 5940) | fn ensure_focused_delegate_visible(&mut self) { method delegate_metrics_line_index (line 5958) | fn delegate_metrics_line_index(&self, target_index: usize) -> Option usize { method visible_output_text (line 6034) | fn visible_output_text(&self) -> String { method reset_output_view (line 6042) | fn reset_output_view(&mut self) { method reset_metrics_view (line 6047) | fn reset_metrics_view(&mut self) { method refresh_logs (line 6051) | fn refresh_logs(&mut self) { method aggregate_usage (line 6066) | fn aggregate_usage(&self) -> AggregateUsage { method selected_session_metrics_text (line 6094) | fn selected_session_metrics_text(&self) -> String { method board_text (line 6535) | fn board_text(&self) -> String { method board_overlap_risks (line 6746) | fn board_overlap_risks(&self) -> Vec { method aggregate_cost_summary (line 6797) | fn aggregate_cost_summary(&self) -> (String, Style) { method attention_queue_items (line 6821) | fn attention_queue_items(&self, limit: usize) -> Vec { method set_operator_note (line 6874) | fn set_operator_note(&mut self, note: String) { method active_session_count (line 6878) | fn active_session_count(&self) -> usize { method refresh_after_spawn (line 6893) | fn refresh_after_spawn(&mut self, select_session_id: Option<&str>) { method new_session_task (line 6905) | fn new_session_task(&self) -> String { method spawn_prompt_seed (line 6918) | fn spawn_prompt_seed(&self) -> String { method build_spawn_plan (line 6922) | fn build_spawn_plan(&self, input: &str) -> Result { method pane_areas (line 6983) | fn pane_areas(&self, area: Rect) -> PaneAreas { method primary_constraints (line 7059) | fn primary_constraints(&self) -> [Constraint; 2] { method visible_panes (line 7066) | fn visible_panes(&self) -> Vec { method visible_detail_panes (line 7073) | fn visible_detail_panes(&self) -> Vec { method layout_panes (line 7082) | fn layout_panes(&self) -> Vec { method selected_pane_index (line 7091) | fn selected_pane_index(&self) -> usize { method pane_border_style (line 7098) | fn pane_border_style(&self, pane: Pane) -> Style { method layout_label (line 7106) | fn layout_label(&self) -> &'static str { method theme_label (line 7114) | fn theme_label(&self) -> &'static str { method board_pane_visible (line 7121) | fn board_pane_visible(&self) -> bool { method is_pane_visible (line 7127) | fn is_pane_visible(&self, pane: Pane) -> bool { method theme_palette (line 7134) | fn theme_palette(&self) -> ThemePalette { method log_field (line 7151) | fn log_field<'a>(&self, value: &'a str) -> &'a str { method short_timestamp (line 7160) | fn short_timestamp(&self, timestamp: &str) -> String { method aggregate_cost_summary_text (line 7167) | fn aggregate_cost_summary_text(&self) -> String { method selected_output_text (line 7172) | fn selected_output_text(&self) -> String { method rendered_output_text (line 7181) | fn rendered_output_text(&mut self, width: u16, height: u16) -> String { type SessionSummary (line 161) | struct SessionSummary { method from_sessions (line 7768) | fn from_sessions( type Pane (line 179) | enum Pane { method title (line 7196) | fn title(self) -> &'static str { method from_shortcut (line 7206) | fn from_shortcut(slot: usize) -> Option { method sort_key (line 7217) | fn sort_key(self) -> u8 { type OutputMode (line 188) | enum OutputMode { type GraphEntityFilter (line 199) | enum GraphEntityFilter { method next (line 7655) | fn next(self) -> Self { method entity_type (line 7665) | fn entity_type(self) -> Option<&'static str> { method label (line 7675) | fn label(self) -> &'static str { method title_suffix (line 7685) | fn title_suffix(self) -> &'static str { type DiffViewMode (line 208) | enum DiffViewMode { method label (line 7593) | fn label(self) -> &'static str { method title_suffix (line 7600) | fn title_suffix(self) -> &'static str { type OutputFilter (line 214) | enum OutputFilter { method next (line 7246) | fn next(self) -> Self { method matches (line 7255) | fn matches(self, line: &OutputLine) -> bool { method label (line 7264) | fn label(self) -> &'static str { method title_suffix (line 7273) | fn title_suffix(self) -> &'static str { type OutputTimeFilter (line 222) | enum OutputTimeFilter { method next (line 7537) | fn next(self) -> Self { method matches (line 7546) | fn matches(self, line: &OutputLine) -> bool { method matches_timestamp (line 7564) | fn matches_timestamp(self, timestamp: chrono::DateTime) -> bool { method label (line 7573) | fn label(self) -> &'static str { method title_suffix (line 7582) | fn title_suffix(self) -> &'static str { type TimelineEventFilter (line 230) | enum TimelineEventFilter { method next (line 7609) | fn next(self) -> Self { method matches (line 7620) | fn matches(self, event_type: TimelineEventType) -> bool { method label (line 7631) | fn label(self) -> &'static str { method title_suffix (line 7642) | fn title_suffix(self) -> &'static str { type SearchScope (line 240) | enum SearchScope { method next (line 7715) | fn next(self) -> Self { method label (line 7722) | fn label(self) -> &'static str { method title_suffix (line 7729) | fn title_suffix(self) -> &'static str { method matches (line 7736) | fn matches(self, selected_session_id: Option<&str>, session_id: &str) ... type SearchAgentFilter (line 246) | enum SearchAgentFilter { method matches (line 7745) | fn matches(self, selected_agent_type: Option<&str>, session_agent_type... method label (line 7752) | fn label(self, selected_agent_type: &str) -> String { method title_suffix (line 7759) | fn title_suffix(self, selected_agent_type: &str) -> String { type PaneDirection (line 252) | enum PaneDirection { type SearchMatch (line 260) | struct SearchMatch { type GraphDisplayLine (line 266) | struct GraphDisplayLine { type PrPromptSpec (line 272) | struct PrPromptSpec { type TimelineEventType (line 280) | enum TimelineEventType { method label (line 7697) | fn label(self) -> &'static str { type TimelineEvent (line 289) | struct TimelineEvent { type SpawnRequest (line 298) | enum SpawnRequest { type SpawnPlan (line 311) | enum SpawnPlan { type PaneAreas (line 326) | struct PaneAreas { method assign (line 334) | fn assign(&mut self, pane: Pane, area: Rect) { type AggregateUsage (line 345) | struct AggregateUsage { type DelegatedChildSummary (line 354) | struct DelegatedChildSummary { type TeamSummary (line 369) | struct TeamSummary { function load_session_harnesses (line 481) | fn load_session_harnesses( function pane_rect (line 7228) | fn pane_rect(pane_areas: &PaneAreas, pane: Pane) -> Option { function pane_center (line 7238) | fn pane_center(rect: Rect) -> (i16, i16) { function looks_like_tool_call (line 7283) | fn looks_like_tool_call(text: &str) -> bool { function parse_spawn_request (line 7313) | fn parse_spawn_request(input: &str) -> Result { function parse_template_spawn_request (line 7341) | fn parse_template_spawn_request(input: &str) -> Result Result String { function expand_spawn_tasks (line 7421) | fn expand_spawn_tasks(task: &str, count: usize) -> Vec { function build_spawn_note (line 7431) | fn build_spawn_note(plan: &SpawnPlan, created_count: usize, queued_count... function post_spawn_selection_id (line 7468) | fn post_spawn_selection_id( function looks_like_file_change (line 7481) | fn looks_like_file_change(text: &str) -> bool { function contains_path_like_token (line 7511) | fn contains_path_like_token(text: &str) -> bool { function parse_rfc3339_to_utc (line 7708) | fn parse_rfc3339_to_utc(value: &str) -> Option> { function session_row (line 7829) | fn session_row( function sort_sessions_for_display (line 7880) | fn sort_sessions_for_display(sessions: &mut [Session]) { function summary_line (line 7890) | fn summary_line(summary: &SessionSummary) -> Line<'static> { function summary_span (line 7926) | fn summary_span(label: &str, value: usize, color: Color) -> Span<'static> { function attention_queue_line (line 7933) | fn attention_queue_line(summary: &SessionSummary, stabilized: bool) -> L... function approval_queue_line (line 7982) | fn approval_queue_line(approval_queue_counts: &HashMap) -... function approval_queue_preview_line (line 8010) | fn approval_queue_preview_line(messages: &[SessionMessage]) -> Option String { function configured_pane_size (line 8035) | fn configured_pane_size(cfg: &Config, layout: PaneLayout) -> u16 { function recommended_spawn_layout (line 8044) | fn recommended_spawn_layout(live_session_count: usize) -> PaneLayout { function pane_layout_name (line 8052) | fn pane_layout_name(layout: PaneLayout) -> &'static str { function horizontal_detail_layout (line 8060) | fn horizontal_detail_layout(area: Rect, panes: &[Pane]) -> Vec<(Pane, Re... function vertical_detail_layout (line 8078) | fn vertical_detail_layout(area: Rect, panes: &[Pane]) -> Vec<(Pane, Rect... function compile_search_regex (line 8096) | fn compile_search_regex(query: &str) -> Result { function highlight_output_line (line 8100) | fn highlight_output_line( function build_worktree_diff_columns (line 8147) | fn build_worktree_diff_columns(patch: &str, palette: ThemePalette) -> Wo... function build_unified_diff_text (line 8213) | fn build_unified_diff_text(patch: &str, palette: ThemePalette) -> Text<'... function build_unified_diff_hunk_offsets (line 8257) | fn build_unified_diff_hunk_offsets(patch: &str) -> Vec { function flush_split_diff_change_block (line 8293) | fn flush_split_diff_change_block( function flush_unified_diff_change_block (line 8349) | fn flush_unified_diff_change_block( function split_diff_display_line (line 8398) | fn split_diff_display_line(line: &str) -> String { function is_diff_removal_line (line 8414) | fn is_diff_removal_line(line: &str) -> bool { function is_diff_addition_line (line 8418) | fn is_diff_addition_line(line: &str) -> bool { function styled_diff_meta_line (line 8422) | fn styled_diff_meta_line(text: impl Into, palette: ThemePalette)... function styled_diff_context_line (line 8426) | fn styled_diff_context_line(text: &str, palette: ThemePalette) -> Line<'... function styled_diff_change_line (line 8433) | fn styled_diff_change_line( function tokenize_diff_words (line 8458) | fn tokenize_diff_words(text: &str) -> Vec { function diff_word_change_masks (line 8490) | fn diff_word_change_masks(left: &str, right: &str) -> (Vec, Vec Style { function diff_context_style (line 8532) | fn diff_context_style(palette: ThemePalette) -> Style { function diff_removal_style (line 8536) | fn diff_removal_style(palette: ThemePalette) -> Style { function diff_addition_style (line 8544) | fn diff_addition_style(palette: ThemePalette) -> Style { function diff_removal_word_style (line 8552) | fn diff_removal_word_style() -> Style { function diff_addition_word_style (line 8559) | fn diff_addition_word_style() -> Style { function board_lane_label (line 8566) | fn board_lane_label(state: &SessionState) -> &'static str { function session_state_label (line 8577) | fn session_state_label(state: &SessionState) -> &'static str { function session_state_color (line 8589) | fn session_state_color(state: &SessionState) -> Color { function board_codename (line 8601) | fn board_codename(session: &Session) -> String { function file_activity_summary (line 8620) | fn file_activity_summary(entry: &FileActivityEntry) -> String { function file_activity_patch_lines (line 8635) | fn file_activity_patch_lines(entry: &FileActivityEntry, max_lines: usize... function file_overlap_summary (line 8651) | fn file_overlap_summary(entry: &FileActivityOverlap, timestamp: &str) ->... function conflict_incident_summary (line 8663) | fn conflict_incident_summary( function decision_log_summary (line 8677) | fn decision_log_summary(entry: &DecisionLogEntry) -> String { function decision_log_detail_lines (line 8681) | fn decision_log_detail_lines(entry: &DecisionLogEntry) -> Vec { function tool_log_detail_lines (line 8699) | fn tool_log_detail_lines(entry: &ToolLogEntry) -> Vec { function centered_rect (line 8716) | fn centered_rect(width_percent: u16, height_percent: u16, area: Rect) ->... function summarize_test_runs (line 8735) | fn summarize_test_runs( function tool_log_looks_like_test (line 8757) | fn tool_log_looks_like_test(entry: &ToolLogEntry) -> bool { function tool_log_looks_failed (line 8788) | fn tool_log_looks_failed(entry: &ToolLogEntry) -> bool { function tool_log_looks_passed (line 8813) | fn tool_log_looks_passed(entry: &ToolLogEntry) -> bool { function extract_tool_command (line 8829) | fn extract_tool_command(entry: &ToolLogEntry) -> String { function recent_completion_files (line 8841) | fn recent_completion_files(file_activity: &[FileActivityEntry], files_ch... function summarize_completion_decisions (line 8857) | fn summarize_completion_decisions( function summarize_completion_warnings (line 8913) | fn summarize_completion_warnings( function completion_summary_observation_details (line 8964) | fn completion_summary_observation_details( function session_started_webhook_body (line 8997) | fn session_started_webhook_body(session: &Session, compare_url: Option<&... function completion_summary_webhook_body (line 9027) | fn completion_summary_webhook_body( function budget_alert_webhook_body (line 9079) | fn budget_alert_webhook_body( function approval_request_webhook_body (line 9095) | fn approval_request_webhook_body(message: &SessionMessage, preview: &str... function markdown_code_block (line 9109) | fn markdown_code_block(label: &str, lines: &[String]) -> String { function session_compare_url (line 9113) | fn session_compare_url(session: &Session) -> Option { function file_activity_verb (line 9120) | fn file_activity_verb(action: crate::session::FileActivityAction) -> &'s... function heartbeat_enforcement_note (line 9131) | fn heartbeat_enforcement_note(outcome: &manager::HeartbeatEnforcementOut... function budget_auto_pause_note (line 9145) | fn budget_auto_pause_note(outcome: &manager::BudgetEnforcementOutcome) -... function conflict_enforcement_note (line 9164) | fn conflict_enforcement_note(outcome: &manager::ConflictEnforcementOutco... function format_session_id (line 9179) | fn format_session_id(id: &str) -> String { function build_conflict_protocol (line 9183) | fn build_conflict_protocol( function build_session_conflict_protocol (line 9226) | fn build_session_conflict_protocol( function assignment_action_label (line 9264) | fn assignment_action_label(action: manager::AssignmentAction) -> &'stati... function parse_pr_prompt (line 9273) | fn parse_pr_prompt(input: &str) -> std::result::Result &... function delegate_next_action (line 9334) | fn delegate_next_action(delegate: &DelegatedChildSummary) -> &'static str { function delegate_attention_priority (line 9361) | fn delegate_attention_priority(delegate: &DelegatedChildSummary) -> u8 { function session_branch (line 9389) | fn session_branch(session: &Session) -> String { function board_progress_bar (line 9397) | fn board_progress_bar(progress_percent: i64) -> String { function board_presence_marker (line 9404) | fn board_presence_marker(session: &Session) -> String { function board_motion_marker (line 9415) | fn board_motion_marker(meta: &SessionBoardMeta) -> &'static str { function board_activity_marker (line 9425) | fn board_activity_marker(meta: &SessionBoardMeta) -> &'static str { function format_duration (line 9435) | fn format_duration(duration_secs: u64) -> String { function metrics_file_signature (line 9442) | fn metrics_file_signature(path: &std::path::Path) -> Option<(u64, u128)> { function render_sessions_shows_summary_headers_and_selected_row (line 9467) | fn render_sessions_shows_summary_headers_and_selected_row() { function approval_queue_preview_line_uses_target_session_and_preview (line 9513) | fn approval_queue_preview_line_uses_target_session_and_preview() { function sync_selected_messages_refreshes_approval_queue_after_marking_read (line 9535) | fn sync_selected_messages_refreshes_approval_queue_after_marking_read() { function refresh_tracks_latest_unread_approval_before_selected_messages_mark_read (line 9576) | fn refresh_tracks_latest_unread_approval_before_selected_messages_mark_r... function focus_next_approval_target_selects_oldest_unread_target (line 9612) | fn focus_next_approval_target_selects_oldest_unread_target() { function focus_next_approval_target_cycles_distinct_targets (line 9673) | fn focus_next_approval_target_cycles_distinct_targets() { function focus_next_approval_target_reports_clear_queue (line 9741) | fn focus_next_approval_target_reports_clear_queue() { function selected_session_metrics_text_includes_worktree_output_and_attention_queue (line 9764) | fn selected_session_metrics_text_includes_worktree_output_and_attention_... function toggle_output_mode_switches_to_worktree_diff_preview (line 9817) | fn toggle_output_mode_switches_to_worktree_diff_preview() { function toggle_git_status_mode_renders_selected_worktree_status (line 9850) | fn toggle_git_status_mode_renders_selected_worktree_status() -> Result<(... function toggle_output_mode_from_git_status_opens_selected_file_patch (line 9891) | fn toggle_output_mode_from_git_status_opens_selected_file_patch() -> Res... function git_patch_mode_stages_only_selected_hunk (line 9935) | fn git_patch_mode_stages_only_selected_hunk() -> Result<()> { function begin_commit_prompt_opens_commit_input_for_staged_entries (line 9996) | fn begin_commit_prompt_opens_commit_input_for_staged_entries() { function begin_pr_prompt_seeds_latest_commit_subject (line 10032) | fn begin_pr_prompt_seeds_latest_commit_subject() -> Result<()> { function parse_pr_prompt_supports_base_labels_and_reviewers (line 10067) | fn parse_pr_prompt_supports_base_labels_and_reviewers() { function submit_pr_prompt_passes_custom_metadata_to_gh (line 10080) | fn submit_pr_prompt_passes_custom_metadata_to_gh() -> Result<()> { function toggle_diff_view_mode_switches_to_unified_rendering (line 10181) | fn toggle_diff_view_mode_switches_to_unified_rendering() { function diff_hunk_navigation_updates_scroll_offset_and_wraps (line 10224) | fn diff_hunk_navigation_updates_scroll_offset_and_wraps() { function toggle_timeline_mode_renders_selected_session_events (line 10271) | fn toggle_timeline_mode_renders_selected_session_events() { function cycle_timeline_event_filter_limits_rendered_events (line 10329) | fn cycle_timeline_event_filter_limits_rendered_events() { function timeline_and_metrics_render_recent_file_activity_details (line 10390) | fn timeline_and_metrics_render_recent_file_activity_details() -> Result<... function metrics_text_surfaces_file_activity_conflicts (line 10439) | fn metrics_text_surfaces_file_activity_conflicts() -> Result<()> { function timeline_and_metrics_render_decision_log_entries (line 10498) | fn timeline_and_metrics_render_decision_log_entries() -> Result<()> { function timeline_time_filter_hides_old_events (line 10553) | fn timeline_time_filter_hides_old_events() { function timeline_scope_all_sessions_renders_cross_session_events (line 10601) | fn timeline_scope_all_sessions_renders_cross_session_events() { function toggle_context_graph_mode_renders_selected_session_entities_and_relations (line 10676) | fn toggle_context_graph_mode_renders_selected_session_entities_and_relat... function cycle_graph_entity_filter_limits_rendered_entities (line 10728) | fn cycle_graph_entity_filter_limits_rendered_entities() -> Result<()> { function graph_scope_all_sessions_renders_cross_session_entities (line 10773) | fn graph_scope_all_sessions_renders_cross_session_entities() -> Result<(... function graph_search_matches_and_switches_selected_session (line 10818) | fn graph_search_matches_and_switches_selected_session() -> Result<()> { function graph_sessions_filter_renders_auto_session_relations (line 10870) | fn graph_sessions_filter_renders_auto_session_relations() -> Result<()> { function selected_session_metrics_text_includes_context_graph_relations (line 10904) | fn selected_session_metrics_text_includes_context_graph_relations() -> R... function selected_session_metrics_text_includes_relevant_memory (line 10939) | fn selected_session_metrics_text_includes_relevant_memory() -> Result<()> { function worktree_diff_columns_split_removed_and_added_lines (line 10990) | fn worktree_diff_columns_split_removed_and_added_lines() { function split_diff_highlights_changed_words (line 11018) | fn split_diff_highlights_changed_words() { function unified_diff_highlights_changed_words (line 11049) | fn unified_diff_highlights_changed_words() { function toggle_conflict_protocol_mode_switches_to_protocol_view (line 11076) | fn toggle_conflict_protocol_mode_switches_to_protocol_view() { function selected_session_metrics_text_includes_team_capacity_summary (line 11111) | fn selected_session_metrics_text_includes_team_capacity_summary() { function selected_session_metrics_text_includes_delegate_task_board (line 11146) | fn selected_session_metrics_text_includes_delegate_task_board() { function selected_session_metrics_text_marks_focused_delegate_row (line 11182) | fn selected_session_metrics_text_marks_focused_delegate_row() { function focus_next_delegate_wraps_across_delegate_board (line 11233) | fn focus_next_delegate_wraps_across_delegate_board() { function open_focused_delegate_switches_selected_session (line 11289) | fn open_focused_delegate_switches_selected_session() { function selected_session_metrics_text_shows_worktree_and_auto_merge_policy_state (line 11340) | fn selected_session_metrics_text_shows_worktree_and_auto_merge_policy_st... function toggle_auto_worktree_policy_persists_config (line 11365) | fn toggle_auto_worktree_policy_persists_config() { function selected_session_metrics_text_includes_daemon_activity (line 11408) | fn selected_session_metrics_text_includes_daemon_activity() { function selected_session_metrics_text_shows_rebalance_first_mode_when_saturation_is_unrecovered (line 11457) | fn selected_session_metrics_text_shows_rebalance_first_mode_when_saturat... function selected_session_metrics_text_shows_rebalance_cooloff_mode_when_saturation_is_chronic (line 11497) | fn selected_session_metrics_text_shows_rebalance_cooloff_mode_when_satur... function selected_session_metrics_text_recommends_operator_escalation_when_chronic_saturation_is_stuck (line 11538) | fn selected_session_metrics_text_recommends_operator_escalation_when_chr... function selected_session_metrics_text_shows_stabilized_dispatch_mode_after_recovery (line 11581) | fn selected_session_metrics_text_shows_stabilized_dispatch_mode_after_re... function attention_queue_suppresses_inbox_pressure_when_stabilized (line 11625) | fn attention_queue_suppresses_inbox_pressure_when_stabilized() { function summary_line_includes_worktree_health_counts (line 11682) | fn summary_line_includes_worktree_health_counts() { function attention_queue_keeps_conflicted_worktree_pressure_when_stabilized (line 11725) | fn attention_queue_keeps_conflicted_worktree_pressure_when_stabilized() { function route_preview_uses_graph_context_for_latest_incoming_handoff (line 11787) | fn route_preview_uses_graph_context_for_latest_incoming_handoff() { function route_preview_ignores_non_handoff_inbox_noise (line 11872) | fn route_preview_ignores_non_handoff_inbox_noise() { function sync_selected_lineage_populates_delegate_task_and_output_previews (line 11924) | fn sync_selected_lineage_populates_delegate_task_and_output_previews() { function sync_selected_lineage_prioritizes_conflicted_delegate_rows (line 12003) | fn sync_selected_lineage_prioritizes_conflicted_delegate_rows() { function sync_selected_lineage_preserves_focused_delegate_by_session_id (line 12070) | fn sync_selected_lineage_preserves_focused_delegate_by_session_id() { function sync_selected_lineage_keeps_all_delegate_rows (line 12134) | fn sync_selected_lineage_keeps_all_delegate_rows() { function aggregate_cost_summary_mentions_total_cost (line 12178) | fn aggregate_cost_summary_mentions_total_cost() { function aggregate_cost_summary_mentions_fifty_percent_alert (line 12193) | fn aggregate_cost_summary_mentions_fifty_percent_alert() { function aggregate_cost_summary_uses_custom_threshold_labels (line 12208) | fn aggregate_cost_summary_uses_custom_threshold_labels() { function aggregate_cost_summary_mentions_ninety_percent_alert (line 12228) | fn aggregate_cost_summary_mentions_ninety_percent_alert() { function sync_budget_alerts_sets_operator_note_when_threshold_is_crossed (line 12243) | fn sync_budget_alerts_sets_operator_note_when_threshold_is_crossed() { function sync_budget_alerts_uses_custom_threshold_labels (line 12263) | fn sync_budget_alerts_uses_custom_threshold_labels() { function refresh_auto_pauses_over_budget_sessions_and_sets_operator_note (line 12288) | fn refresh_auto_pauses_over_budget_sessions_and_sets_operator_note() { function refresh_updates_session_state_snapshot_after_completion (line 12322) | fn refresh_updates_session_state_snapshot_after_completion() { function refresh_builds_completion_summary_popup_from_metrics_activity_and_logs (line 12358) | fn refresh_builds_completion_summary_popup_from_metrics_activity_and_log... function refresh_persists_completion_summary_observation (line 12414) | fn refresh_persists_completion_summary_observation() -> Result<()> { function dismiss_completion_popup_promotes_the_next_summary (line 12481) | fn dismiss_completion_popup_promotes_the_next_summary() { function refresh_syncs_tool_activity_metrics_from_hook_file (line 12530) | fn refresh_syncs_tool_activity_metrics_from_hook_file() { function refresh_flags_stale_sessions_and_sets_operator_note (line 12574) | fn refresh_flags_stale_sessions_and_sets_operator_note() { function refresh_enforces_conflicts_and_surfaces_active_incidents (line 12609) | fn refresh_enforces_conflicts_and_surfaces_active_incidents() -> Result<... function selected_session_metrics_text_includes_harness_summary (line 12706) | fn selected_session_metrics_text_includes_harness_summary() -> Result<()> { function new_session_task_uses_selected_session_context (line 12740) | fn new_session_task_uses_selected_session_context() { function active_session_count_only_counts_live_queue_states (line 12760) | fn active_session_count_only_counts_live_queue_states() { function spawn_prompt_seed_uses_selected_session_context (line 12777) | fn spawn_prompt_seed_uses_selected_session_context() { function parse_spawn_request_extracts_count_and_task_from_natural_language (line 12797) | fn parse_spawn_request_extracts_count_and_task_from_natural_language() { function parse_spawn_request_defaults_to_single_session_without_count (line 12811) | fn parse_spawn_request_defaults_to_single_session_without_count() { function parse_spawn_request_extracts_template_request (line 12824) | fn parse_spawn_request_extracts_template_request() { function build_spawn_plan_caps_requested_count_to_available_slots (line 12844) | fn build_spawn_plan_caps_requested_count_to_available_slots() { function build_spawn_plan_resolves_template_steps (line 12869) | fn build_spawn_plan_resolves_template_steps() { function submit_spawn_prompt_launches_orchestration_template (line 12921) | async fn submit_spawn_prompt_launches_orchestration_template() -> Result... function expand_spawn_tasks_suffixes_multi_session_requests (line 13008) | fn expand_spawn_tasks_suffixes_multi_session_requests() { function refresh_preserves_selected_session_by_id (line 13020) | fn refresh_preserves_selected_session_by_id() -> Result<()> { function metrics_scroll_uses_independent_offset (line 13068) | fn metrics_scroll_uses_independent_offset() -> Result<()> { function refresh_loads_selected_session_output_and_follows_tail (line 13113) | fn refresh_loads_selected_session_output_and_follows_tail() -> Result<()> { function submit_search_tracks_matches_and_sets_navigation_note (line 13151) | fn submit_search_tracks_matches_and_sets_navigation_note() { function next_search_match_wraps_and_updates_scroll_offset (line 13201) | fn next_search_match_wraps_and_updates_scroll_offset() { function submit_search_rejects_invalid_regex_and_keeps_input (line 13239) | fn submit_search_rejects_invalid_regex_and_keeps_input() { function clear_search_resets_active_query_and_matches (line 13269) | fn clear_search_resets_active_query_and_matches() { function toggle_output_filter_keeps_only_stderr_lines (line 13298) | fn toggle_output_filter_keeps_only_stderr_lines() { function toggle_output_filter_cycles_tool_calls_and_file_changes (line 13330) | fn toggle_output_filter_cycles_tool_calls_and_file_changes() { function search_matches_respect_error_only_filter (line 13379) | fn search_matches_respect_error_only_filter() { function search_matches_respect_tool_call_filter (line 13416) | fn search_matches_respect_tool_call_filter() { function search_matches_respect_file_change_filter (line 13456) | fn search_matches_respect_file_change_filter() { function cycle_output_time_filter_keeps_only_recent_lines (line 13496) | fn cycle_output_time_filter_keeps_only_recent_lines() { function search_matches_respect_time_filter (line 13532) | fn search_matches_respect_time_filter() { function search_scope_all_sessions_matches_across_output_buffers (line 13569) | fn search_scope_all_sessions_matches_across_output_buffers() { function next_search_match_switches_selected_session_in_all_sessions_scope (line 13628) | fn next_search_match_switches_selected_session_in_all_sessions_scope() { function search_agent_filter_selected_agent_type_limits_global_search (line 13674) | fn search_agent_filter_selected_agent_type_limits_global_search() { function stop_selected_uses_session_manager_transition (line 13750) | async fn stop_selected_uses_session_manager_transition() -> Result<()> { function resume_selected_requeues_failed_session (line 13786) | async fn resume_selected_requeues_failed_session() -> Result<()> { function cleanup_selected_worktree_clears_session_metadata (line 13826) | async fn cleanup_selected_worktree_clears_session_metadata() -> Result<(... function prune_inactive_worktrees_sets_operator_note_when_clear (line 13871) | async fn prune_inactive_worktrees_sets_operator_note_when_clear() -> Res... function prune_inactive_worktrees_reports_pruned_and_skipped_counts (line 13906) | async fn prune_inactive_worktrees_reports_pruned_and_skipped_counts() ->... function prune_inactive_worktrees_reports_retained_sessions_within_retention (line 13980) | async fn prune_inactive_worktrees_reports_retained_sessions_within_reten... function merge_selected_worktree_sets_operator_note_when_ready (line 14031) | async fn merge_selected_worktree_sets_operator_note_when_ready() -> Resu... function merge_ready_worktrees_sets_operator_note_with_skip_summary (line 14099) | async fn merge_ready_worktrees_sets_operator_note_with_skip_summary() ->... function delete_selected_session_removes_inactive_session (line 14184) | async fn delete_selected_session_removes_inactive_session() -> Result<()> { function auto_dispatch_backlog_sets_operator_note_when_clear (line 14219) | async fn auto_dispatch_backlog_sets_operator_note_when_clear() -> Result... function rebalance_selected_team_sets_operator_note_when_clear (line 14254) | async fn rebalance_selected_team_sets_operator_note_when_clear() -> Resu... function rebalance_all_teams_sets_operator_note_when_clear (line 14289) | async fn rebalance_all_teams_sets_operator_note_when_clear() -> Result<(... function coordinate_backlog_sets_operator_note_when_clear (line 14324) | async fn coordinate_backlog_sets_operator_note_when_clear() -> Result<()> { function grid_layout_renders_four_panes (line 14359) | fn grid_layout_renders_four_panes() { function collapse_selected_pane_hides_metrics_and_moves_focus (line 14385) | fn collapse_selected_pane_hides_metrics_and_moves_focus() { function collapse_selected_pane_rejects_sessions_and_last_detail_pane (line 14403) | fn collapse_selected_pane_rejects_sessions_and_last_detail_pane() { function restore_collapsed_panes_restores_hidden_tabs (line 14428) | fn restore_collapsed_panes_restores_hidden_tabs() { function collapsed_grid_reflows_to_horizontal_detail_stack (line 14446) | fn collapsed_grid_reflows_to_horizontal_detail_stack() { function pane_resize_clamps_to_bounds (line 14464) | fn pane_resize_clamps_to_bounds() { function pane_navigation_skips_log_outside_grid_layouts (line 14481) | fn pane_navigation_skips_log_outside_grid_layouts() { function focus_pane_number_selects_visible_panes_and_rejects_hidden_targets (line 14497) | fn focus_pane_number_selects_visible_panes_and_rejects_hidden_targets() { function directional_pane_focus_uses_grid_neighbors (line 14518) | fn directional_pane_focus_uses_grid_neighbors() { function configured_pane_navigation_keys_override_defaults (line 14541) | fn configured_pane_navigation_keys_override_defaults() { function pane_navigation_labels_use_configured_bindings (line 14560) | fn pane_navigation_labels_use_configured_bindings() { function pane_command_mode_handles_focus_and_cancel (line 14576) | fn pane_command_mode_handles_focus_and_cancel() { function pane_command_mode_sets_layout (line 14602) | fn pane_command_mode_sets_layout() { function cycle_pane_layout_rotates_and_hides_log_when_leaving_grid (line 14632) | fn cycle_pane_layout_rotates_and_hides_log_when_leaving_grid() { function cycle_pane_layout_persists_config (line 14660) | fn cycle_pane_layout_persists_config() { function pane_resize_persists_linear_setting (line 14685) | fn pane_resize_persists_linear_setting() { function cycle_pane_layout_uses_persisted_grid_size (line 14712) | fn cycle_pane_layout_uses_persisted_grid_size() { function auto_split_layout_after_spawn_prefers_vertical_for_two_live_sessions (line 14726) | fn auto_split_layout_after_spawn_prefers_vertical_for_two_live_sessions() { function auto_split_layout_after_spawn_prefers_grid_for_three_live_sessions (line 14754) | fn auto_split_layout_after_spawn_prefers_grid_for_three_live_sessions() { function auto_split_layout_after_spawn_focuses_sessions_when_layout_already_matches (line 14784) | fn auto_split_layout_after_spawn_focuses_sessions_when_layout_already_ma... function post_spawn_selection_prefers_lead_for_multi_spawn (line 14811) | fn post_spawn_selection_prefers_lead_for_multi_spawn() { function post_spawn_selection_keeps_single_spawn_on_created_session (line 14821) | fn post_spawn_selection_keeps_single_spawn_on_created_session() { function post_spawn_selection_falls_back_to_first_created_when_no_lead_exists (line 14828) | fn post_spawn_selection_falls_back_to_first_created_when_no_lead_exists() { function toggle_theme_persists_config (line 14836) | fn toggle_theme_persists_config() { function light_theme_uses_light_palette_accent (line 14858) | fn light_theme_uses_light_palette_accent() { function test_output_line (line 14870) | fn test_output_line(stream: OutputStream, text: &str) -> OutputLine { function test_output_line_minutes_ago (line 14874) | fn test_output_line_minutes_ago( function line_plain_text (line 14886) | fn line_plain_text(line: &Line<'_>) -> String { function text_plain_text (line 14893) | fn text_plain_text(text: &Text<'_>) -> String { function test_dashboard (line 14901) | fn test_dashboard(sessions: Vec, selected_session: usize) -> Da... function build_config (line 15006) | fn build_config(root: &Path) -> Config { function init_git_repo (line 15045) | fn init_git_repo(path: &Path) -> Result<()> { function run_git (line 15056) | fn run_git(path: &Path, args: &[&str]) -> Result<()> { function git_stdout (line 15068) | fn git_stdout(path: &Path, args: &[&str]) -> Result { function sample_session (line 15080) | fn sample_session( function budget_session (line 15119) | fn budget_session(id: &str, tokens_used: u64, cost_usd: f64) -> Session { function render_dashboard_text (line 15146) | fn render_dashboard_text(mut dashboard: Dashboard, width: u16, height: u... FILE: ecc2/src/tui/widgets.rs type BudgetState (line 10) | pub(crate) enum BudgetState { method badge (line 20) | fn badge(self, thresholds: BudgetAlertThresholds) -> Option { method summary_suffix (line 31) | pub(crate) fn summary_suffix(self, thresholds: BudgetAlertThresholds) ... method style (line 50) | pub(crate) fn style(self) -> Style { type MeterFormat (line 69) | enum MeterFormat { type TokenMeter (line 75) | pub(crate) struct TokenMeter<'a> { function tokens (line 84) | pub(crate) fn tokens( function currency (line 99) | pub(crate) fn currency( function state (line 114) | pub(crate) fn state(&self) -> BudgetState { function ratio (line 118) | fn ratio(&self) -> f64 { function clamped_ratio (line 122) | fn clamped_ratio(&self) -> f64 { function title_line (line 126) | fn title_line(&self) -> Line<'static> { function display_label (line 142) | fn display_label(&self) -> String { function used_label (line 159) | fn used_label(&self) -> String { function budget_label (line 166) | fn budget_label(&self) -> String { function unit_suffix (line 173) | fn unit_suffix(&self) -> &'static str { method render (line 182) | fn render(self, area: Rect, buf: &mut Buffer) { function budget_ratio (line 211) | pub(crate) fn budget_ratio(used: f64, budget: f64) -> f64 { function budget_state (line 219) | pub(crate) fn budget_state( function gradient_color (line 239) | pub(crate) fn gradient_color(ratio: f64, thresholds: BudgetAlertThreshol... function threshold_label (line 260) | fn threshold_label(value: f64) -> String { function format_currency (line 264) | pub(crate) fn format_currency(value: f64) -> String { function format_token_count (line 268) | pub(crate) fn format_token_count(value: u64) -> String { function interpolate_rgb (line 282) | fn interpolate_rgb(from: (u8, u8, u8), to: (u8, u8, u8), ratio: f64) -> ... function budget_state_uses_alert_threshold_ladder (line 304) | fn budget_state_uses_alert_threshold_ladder() { function gradient_runs_from_green_to_yellow_to_red (line 324) | fn gradient_runs_from_green_to_yellow_to_red() { function token_meter_uses_custom_budget_thresholds (line 340) | fn token_meter_uses_custom_budget_thresholds() { function threshold_label_rounds_to_percent (line 356) | fn threshold_label_rounds_to_percent() { function token_meter_renders_compact_usage_label (line 362) | fn token_meter_renders_compact_usage_label() { FILE: ecc2/src/worktree/mod.rs type MergeReadinessStatus (line 13) | pub enum MergeReadinessStatus { type MergeReadiness (line 19) | pub struct MergeReadiness { type WorktreeHealth (line 26) | pub enum WorktreeHealth { type MergeOutcome (line 33) | pub struct MergeOutcome { type RebaseOutcome (line 40) | pub struct RebaseOutcome { type BranchConflictPreview (line 47) | pub struct BranchConflictPreview { type GitStatusEntry (line 56) | pub struct GitStatusEntry { type DraftPrOptions (line 68) | pub struct DraftPrOptions { type GitPatchSectionKind (line 75) | pub enum GitPatchSectionKind { type GitPatchHunk (line 81) | pub struct GitPatchHunk { type GitStatusPatchView (line 88) | pub struct GitStatusPatchView { function create_for_session (line 96) | pub fn create_for_session(session_id: &str, cfg: &Config) -> Result Result Result<()> { function list (line 237) | pub fn list() -> Result> { function diff_summary (line 253) | pub fn diff_summary(worktree: &WorktreeInfo) -> Result> { function git_status_entries (line 273) | pub fn git_status_entries(worktree: &WorktreeInfo) -> Result Result<()> { function unstage_path (line 308) | pub fn unstage_path(worktree: &WorktreeInfo, path: &str) -> Result<()> { function reset_path (line 324) | pub fn reset_path(worktree: &WorktreeInfo, entry: &GitStatusEntry) -> Re... function git_status_patch_view (line 357) | pub fn git_status_patch_view( function stage_hunk (line 402) | pub fn stage_hunk(worktree: &WorktreeInfo, hunk: &GitPatchHunk) -> Resul... function unstage_hunk (line 414) | pub fn unstage_hunk(worktree: &WorktreeInfo, hunk: &GitPatchHunk) -> Res... function reset_hunk (line 426) | pub fn reset_hunk( function commit_staged (line 455) | pub fn commit_staged(worktree: &WorktreeInfo, message: &str) -> Result Result { function create_draft_pr (line 506) | pub fn create_draft_pr(worktree: &WorktreeInfo, title: &str, body: &str)... function create_draft_pr_with_options (line 510) | pub fn create_draft_pr_with_options( function github_compare_url (line 519) | pub fn github_compare_url(worktree: &WorktreeInfo) -> Result Result { function github_repo_web_url (line 619) | fn github_repo_web_url(origin: &str) -> Option { function parse_httpish_remote (line 645) | fn parse_httpish_remote(rest: &str) -> Option { function percent_encode_git_ref (line 651) | fn percent_encode_git_ref(value: &str) -> String { function diff_file_preview (line 665) | pub fn diff_file_preview(worktree: &WorktreeInfo, limit: usize) -> Resul... function diff_patch_preview (line 694) | pub fn diff_patch_preview(worktree: &WorktreeInfo, max_lines: usize) -> ... function merge_readiness (line 722) | pub fn merge_readiness(worktree: &WorktreeInfo) -> Result { function merge_readiness_for_branches (line 753) | pub fn merge_readiness_for_branches( function branch_conflict_preview (line 811) | pub fn branch_conflict_preview( function health (line 835) | pub fn health(worktree: &WorktreeInfo) -> Result { function has_uncommitted_changes (line 848) | pub fn has_uncommitted_changes(worktree: &WorktreeInfo) -> Result { function has_staged_changes (line 852) | pub fn has_staged_changes(worktree: &WorktreeInfo) -> Result { function merge_into_base (line 858) | pub fn merge_into_base(worktree: &WorktreeInfo) -> Result { function rebase_onto_base (line 913) | pub fn rebase_onto_base(worktree: &WorktreeInfo) -> Result { function branch_head_oid (line 967) | pub fn branch_head_oid(worktree: &WorktreeInfo, branch: &str) -> Result<... function git_diff_shortstat (line 972) | fn git_diff_shortstat(worktree_path: &Path, extra_args: &[&str]) -> Resu... function git_diff_name_status (line 1002) | fn git_diff_name_status(worktree_path: &Path, extra_args: &[&str]) -> Re... function git_diff_patch_lines (line 1027) | fn git_diff_patch_lines(worktree_path: &Path, extra_args: &[&str]) -> Re... function git_diff_patch_text_for_paths (line 1052) | fn git_diff_patch_text_for_paths( function git_diff_patch_lines_for_paths (line 1085) | fn git_diff_patch_lines_for_paths( function extract_patch_hunks (line 1122) | fn extract_patch_hunks(section: GitPatchSectionKind, patch_text: &str) -... function git_apply_patch (line 1169) | fn git_apply_patch(worktree_path: &Path, args: &[&str], patch: &str, act... type SharedDependencyStrategy (line 1203) | struct SharedDependencyStrategy { function sync_shared_dependency_dirs_in_repo (line 1209) | fn sync_shared_dependency_dirs_in_repo( function detect_shared_dependency_strategies (line 1222) | fn detect_shared_dependency_strategies(repo_root: &Path) -> Vec Result { function is_symlink_to (line 1362) | fn is_symlink_to(path: &Path, target: &Path) -> Result { function remove_symlink (line 1381) | fn remove_symlink(path: &Path) -> Result<()> { function create_dir_symlink (line 1392) | fn create_dir_symlink(src: &Path, dst: &Path) -> std::io::Result<()> { function create_dir_symlink (line 1397) | fn create_dir_symlink(src: &Path, dst: &Path) -> std::io::Result<()> { function diff_patch_preview_for_paths (line 1401) | pub fn diff_patch_preview_for_paths( function git_status_short (line 1437) | fn git_status_short(worktree_path: &Path) -> Result> { function branch_head_oid_in_repo (line 1457) | fn branch_head_oid_in_repo(repo_root: &Path, branch: &str) -> Result Result<()> { function parse_git_status_entry (line 1493) | fn parse_git_status_entry(line: &str) -> Option { function parse_nonempty_lines (line 1527) | fn parse_nonempty_lines(stdout: &[u8]) -> Vec { function take_preview_lines (line 1536) | fn take_preview_lines(lines: &[String], remaining: &mut usize) -> Vec Option { function get_current_branch (line 1555) | fn get_current_branch(repo_root: &Path) -> Result { function base_checkout_path (line 1566) | fn base_checkout_path(worktree: &WorktreeInfo) -> Result { function run_git (line 1630) | fn run_git(repo: &Path, args: &[&str]) -> Result<()> { function git_stdout (line 1642) | fn git_stdout(repo: &Path, args: &[&str]) -> Result { function init_repo (line 1654) | fn init_repo(root: &Path) -> Result { function create_for_session_uses_configured_branch_prefix (line 1669) | fn create_for_session_uses_configured_branch_prefix() -> Result<()> { function create_for_session_rejects_invalid_branch_prefix (line 1696) | fn create_for_session_rejects_invalid_branch_prefix() -> Result<()> { function diff_summary_reports_clean_and_dirty_worktrees (line 1715) | fn diff_summary_reports_clean_and_dirty_worktrees() -> Result<()> { function diff_file_preview_reports_branch_and_working_tree_files (line 1759) | fn diff_file_preview_reports_branch_and_working_tree_files() -> Result<(... function diff_patch_preview_reports_branch_and_working_tree_sections (line 1806) | fn diff_patch_preview_reports_branch_and_working_tree_sections() -> Resu... function merge_readiness_reports_ready_worktree (line 1851) | fn merge_readiness_reports_ready_worktree() -> Result<()> { function merge_readiness_reports_conflicted_worktree (line 1895) | fn merge_readiness_reports_conflicted_worktree() -> Result<()> { function rebase_onto_base_replays_simple_branch_after_base_advances (line 1940) | fn rebase_onto_base_replays_simple_branch_after_base_advances() -> Resul... function rebase_onto_base_aborts_failed_rebase (line 2016) | fn rebase_onto_base_aborts_failed_rebase() -> Result<()> { function branch_conflict_preview_reports_conflicting_branches (line 2064) | fn branch_conflict_preview_reports_conflicting_branches() -> Result<()> { function git_status_helpers_stage_unstage_reset_and_commit (line 2143) | fn git_status_helpers_stage_unstage_reset_and_commit() -> Result<()> { function git_status_patch_view_supports_hunk_stage_and_unstage (line 2208) | fn git_status_patch_view_supports_hunk_stage_and_unstage() -> Result<()> { function reset_hunk_discards_unstaged_then_staged_hunks (line 2283) | fn reset_hunk_discards_unstaged_then_staged_hunks() -> Result<()> { function latest_commit_subject_reads_head_subject (line 2365) | fn latest_commit_subject_reads_head_subject() -> Result<()> { function create_draft_pr_pushes_branch_and_invokes_gh (line 2384) | fn create_draft_pr_pushes_branch_and_invokes_gh() -> Result<()> { function create_draft_pr_forwards_custom_base_labels_and_reviewers (line 2465) | fn create_draft_pr_forwards_custom_base_labels_and_reviewers() -> Result... function github_compare_url_uses_origin_remote_and_encodes_refs (line 2534) | fn github_compare_url_uses_origin_remote_and_encodes_refs() -> Result<()> { function github_repo_web_url_supports_multiple_remote_formats (line 2559) | fn github_repo_web_url_supports_multiple_remote_formats() { function create_for_session_links_shared_node_modules_cache (line 2575) | fn create_for_session_links_shared_node_modules_cache() -> Result<()> { function sync_shared_dependency_dirs_falls_back_when_lockfiles_diverge (line 2605) | fn sync_shared_dependency_dirs_falls_back_when_lockfiles_diverge() -> Re... function create_for_session_links_shared_cargo_target_cache (line 2646) | fn create_for_session_links_shared_cargo_target_cache() -> Result<()> { FILE: ecc_dashboard.py function get_project_path (line 24) | def get_project_path() -> str: function load_agents (line 29) | def load_agents(project_path: str) -> List[Dict]: function load_skills (line 93) | def load_skills(project_path: str) -> List[Dict]: function load_commands (line 173) | def load_commands(project_path: str) -> List[Dict]: function load_rules (line 222) | def load_rules(project_path: str) -> List[Dict]: class ECCDashboard (line 272) | class ECCDashboard(tk.Tk): method __init__ (line 275) | def __init__(self): method setup_styles (line 310) | def setup_styles(self): method center_window (line 327) | def center_window(self): method create_widgets (line 336) | def create_widgets(self): method create_agents_tab (line 382) | def create_agents_tab(self): method populate_agents (line 439) | def populate_agents(self, agents: List[Dict]): method filter_agents (line 447) | def filter_agents(self, event=None): method on_agent_select (line 460) | def on_agent_select(self, event): method create_skills_tab (line 487) | def create_skills_tab(self): method get_categories (line 550) | def get_categories(self) -> List[str]: method populate_skills (line 555) | def populate_skills(self, skills: List[Dict]): method filter_skills (line 564) | def filter_skills(self, event=None): method on_skill_select (line 581) | def on_skill_select(self, event): method create_commands_tab (line 609) | def create_commands_tab(self): method create_rules_tab (line 652) | def create_rules_tab(self): method get_rule_languages (line 700) | def get_rule_languages(self) -> List[str]: method populate_rules (line 705) | def populate_rules(self, rules: List[Dict]): method filter_rules (line 714) | def filter_rules(self, event=None): method create_settings_tab (line 729) | def create_settings_tab(self): method browse_path (line 803) | def browse_path(self): method open_terminal (line 811) | def open_terminal(self): method _open_project_doc (line 819) | def _open_project_doc(self, filename: str) -> None: method open_readme (line 831) | def open_readme(self): method open_agents (line 835) | def open_agents(self): method refresh_data (line 839) | def refresh_data(self): method apply_theme (line 864) | def apply_theme(self): function main (line 925) | def main(): FILE: scripts/auto-update.js function showHelp (line 11) | function showHelp(exitCode = 0) { function parseArgs (line 21) | function parseArgs(argv) { function deriveRepoRootFromState (line 54) | function deriveRepoRootFromState(state) { function buildInstallApplyArgs (line 85) | function buildInstallApplyArgs(record) { function determineInstallCwd (line 118) | function determineInstallCwd(record, repoRoot) { function validateRepoRoot (line 126) | function validateRepoRoot(repoRoot) { function runExternalCommand (line 142) | function runExternalCommand(command, args, options = {}) { function runAutoUpdate (line 162) | function runAutoUpdate(options = {}, dependencies = {}) { function printHuman (line 297) | function printHuman(result) { function main (line 323) | function main() { FILE: scripts/catalog.js constant FAMILY_ALIASES (line 9) | const FAMILY_ALIASES = Object.freeze({ function showHelp (line 25) | function showHelp(exitCode = 0) { function normalizeFamily (line 43) | function normalizeFamily(value) { function parseArgs (line 52) | function parseArgs(argv) { function printProfiles (line 99) | function printProfiles(profiles) { function printComponents (line 107) | function printComponents(components) { function printComponent (line 116) | function printComponent(component) { function main (line 135) | function main() { FILE: scripts/ci/catalog.js constant ROOT (line 18) | const ROOT = path.join(__dirname, '../..'); constant README_PATH (line 19) | const README_PATH = path.join(ROOT, 'README.md'); constant AGENTS_PATH (line 20) | const AGENTS_PATH = path.join(ROOT, 'AGENTS.md'); constant README_ZH_CN_PATH (line 21) | const README_ZH_CN_PATH = path.join(ROOT, 'README.zh-CN.md'); constant DOCS_ZH_CN_README_PATH (line 22) | const DOCS_ZH_CN_README_PATH = path.join(ROOT, 'docs', 'zh-CN', 'README.... constant DOCS_ZH_CN_AGENTS_PATH (line 23) | const DOCS_ZH_CN_AGENTS_PATH = path.join(ROOT, 'docs', 'zh-CN', 'AGENTS.... constant PLUGIN_JSON_PATH (line 24) | const PLUGIN_JSON_PATH = path.join(ROOT, '.claude-plugin', 'plugin.json'); constant MARKETPLACE_JSON_PATH (line 25) | const MARKETPLACE_JSON_PATH = path.join(ROOT, '.claude-plugin', 'marketp... constant WRITE_MODE (line 26) | const WRITE_MODE = process.argv.includes('--write'); constant OUTPUT_MODE (line 28) | const OUTPUT_MODE = process.argv.includes('--md') function normalizePathSegments (line 34) | function normalizePathSegments(relativePath) { function listMatchingFiles (line 38) | function listMatchingFiles(root, relativeDir, matcher) { function buildCatalog (line 50) | function buildCatalog(root = ROOT) { function readFileOrThrow (line 64) | function readFileOrThrow(filePath) { function writeFileOrThrow (line 72) | function writeFileOrThrow(filePath, content) { function replaceOrThrow (line 80) | function replaceOrThrow(content, regex, replacer, source) { function parseReadmeExpectations (line 88) | function parseReadmeExpectations(readmeContent) { function parseZhRootReadmeExpectations (line 184) | function parseZhRootReadmeExpectations(readmeContent) { function parseZhDocsReadmeExpectations (line 197) | function parseZhDocsReadmeExpectations(readmeContent) { function parseAgentsDocExpectations (line 266) | function parseAgentsDocExpectations(agentsContent) { function parseZhAgentsDocExpectations (line 321) | function parseZhAgentsDocExpectations(agentsContent) { function parseCatalogDescriptionExpectations (line 376) | function parseCatalogDescriptionExpectations(content, source, getDescrip... function evaluateExpectations (line 401) | function evaluateExpectations(catalog, expectations) { function formatExpectation (line 416) | function formatExpectation(expectation) { function syncEnglishReadme (line 421) | function syncEnglishReadme(content, catalog) { function syncEnglishAgents (line 484) | function syncEnglishAgents(content, catalog) { function syncZhRootReadme (line 516) | function syncZhRootReadme(content, catalog) { function syncZhDocsReadme (line 526) | function syncZhDocsReadme(content, catalog) { function syncZhAgents (line 576) | function syncZhAgents(content, catalog) { function syncCatalogDescription (line 608) | function syncCatalogDescription(content, catalog, source, getDescription... function createDocumentSpecs (line 633) | function createDocumentSpecs(paths = {}) { function createDocumentSpecsForRoot (line 703) | function createDocumentSpecsForRoot(root) { constant DOCUMENT_SPECS (line 715) | const DOCUMENT_SPECS = createDocumentSpecs(); function renderText (line 717) | function renderText(result) { function renderMarkdown (line 736) | function renderMarkdown(result) { function runCatalogCheck (line 757) | function runCatalogCheck(options = {}) { function main (line 782) | function main(options = {}) { FILE: scripts/ci/check-unicode-safety.js function shouldSkip (line 70) | function shouldSkip(entryPath) { function isTextFile (line 74) | function isTextFile(filePath) { function canAutoWrite (line 78) | function canAutoWrite(relativePath) { function listFiles (line 82) | function listFiles(dirPath) { function lineAndColumn (line 98) | function lineAndColumn(text, index) { function isAllowedEmojiLikeSymbol (line 105) | function isAllowedEmojiLikeSymbol(char) { function isDangerousInvisibleCodePoint (line 109) | function isDangerousInvisibleCodePoint(codePoint) { function stripDangerousInvisibleChars (line 145) | function stripDangerousInvisibleChars(text) { function sanitizeText (line 155) | function sanitizeText(text) { function collectMatches (line 175) | function collectMatches(text, regex, kind) { function collectDangerousInvisibleMatches (line 195) | function collectDangerousInvisibleMatches(text) { FILE: scripts/ci/generate-command-registry.js constant ROOT (line 17) | const ROOT = path.join(__dirname, '../..'); constant DEFAULT_OUTPUT_PATH (line 18) | const DEFAULT_OUTPUT_PATH = path.join(ROOT, 'docs', 'COMMAND-REGISTRY.js... function normalizePath (line 20) | function normalizePath(relativePath) { function listMarkdownFiles (line 24) | function listMarkdownFiles(root, relativeDir) { function listKnownAgents (line 36) | function listKnownAgents(root) { function listKnownSkills (line 43) | function listKnownSkills(root) { function cleanYamlScalar (line 59) | function cleanYamlScalar(value) { function extractDescription (line 65) | function extractDescription(content) { function collectKnownReferences (line 78) | function collectKnownReferences(content, patterns, knownNames) { function extractReferences (line 93) | function extractReferences(content, knownAgents, knownSkills) { function inferCommandType (line 114) | function inferCommandType(content, commandName) { function processCommandFile (line 139) | function processCommandFile(root, filename, knownAgents, knownSkills) { function sortCountMap (line 156) | function sortCountMap(countMap) { function topUsage (line 162) | function topUsage(countMap, keyName) { function generateRegistry (line 171) | function generateRegistry(options = {}) { function formatRegistry (line 207) | function formatRegistry(registry) { function writeRegistry (line 211) | function writeRegistry(registry, outputPath = DEFAULT_OUTPUT_PATH) { function checkRegistry (line 216) | function checkRegistry(registry, outputPath = DEFAULT_OUTPUT_PATH) { function formatTextSummary (line 231) | function formatTextSummary(registry) { function parseArgs (line 257) | function parseArgs(argv) { function run (line 275) | function run(argv = process.argv.slice(2), options = {}) { FILE: scripts/ci/scan-supply-chain-iocs.js constant DEFAULT_ROOT (line 12) | const DEFAULT_ROOT = path.resolve(__dirname, '../..'); constant MALICIOUS_PACKAGE_VERSIONS (line 14) | const MALICIOUS_PACKAGE_VERSIONS = { constant CRITICAL_TEXT_INDICATORS (line 215) | const CRITICAL_TEXT_INDICATORS = [ constant MALICIOUS_FILE_HASHES (line 320) | const MALICIOUS_FILE_HASHES = { constant DEPENDENCY_FILENAMES (line 339) | const DEPENDENCY_FILENAMES = new Set([ constant INSPECT_ONLY_FILENAMES (line 350) | const INSPECT_ONLY_FILENAMES = new Set([ constant PERSISTENCE_FILENAMES (line 357) | const PERSISTENCE_FILENAMES = new Set([ constant PAYLOAD_FILENAMES (line 373) | const PAYLOAD_FILENAMES = new Set([ function normalizedPath (line 390) | function normalizedPath(filePath) { function isGhTokenMonitorTokenPath (line 394) | function isGhTokenMonitorTokenPath(filePath) { constant IGNORED_DIRS (line 398) | const IGNORED_DIRS = new Set([ function normalizeForMatch (line 410) | function normalizeForMatch(value) { function isInSpecialConfigPath (line 414) | function isInSpecialConfigPath(filePath) { function shouldInspectFile (line 425) | function shouldInspectFile(filePath) { function walkFiles (line 435) | function walkFiles(rootDir, files = []) { function walkNodeModules (line 461) | function walkNodeModules(nodeModulesDir, files) { function inspectPackageDir (line 481) | function inspectPackageDir(packageDir, files) { function readText (line 496) | function readText(filePath) { function sha256File (line 504) | function sha256File(filePath) { function lineForIndex (line 512) | function lineForIndex(text, index) { function escapeRegExp (line 516) | function escapeRegExp(value) { function versionSpecifierMatches (line 520) | function versionSpecifierMatches(value, version) { function packageKeyMatches (line 527) | function packageKeyMatches(key, packageName) { function jsonReferencesPackageVersion (line 533) | function jsonReferencesPackageVersion(value, packageName, version) { function textReferencesPackageVersion (line 558) | function textReferencesPackageVersion(text, packageName, version) { function dependencyFileReferencesPackageVersion (line 571) | function dependencyFileReferencesPackageVersion(text, packageName, versi... function addFinding (line 579) | function addFinding(findings, severity, filePath, line, indicator, messa... function isClaudeSettingsFile (line 583) | function isClaudeSettingsFile(filePath) { function claudePermissionDenyRanges (line 588) | function claudePermissionDenyRanges(filePath, text) { function indexInRanges (line 617) | function indexInRanges(index, ranges) { function scanFile (line 621) | function scanFile(filePath, rootDir, findings) { function homeTargets (line 701) | function homeTargets(homeDir) { function runtimeTargets (line 725) | function runtimeTargets() { function scanSupplyChainIocs (line 740) | function scanSupplyChainIocs(options = {}) { function parseArgs (line 765) | function parseArgs(argv) { function printHelp (line 787) | function printHelp() { function printReport (line 807) | function printReport(result, json = false) { FILE: scripts/ci/supply-chain-advisory-sources.js constant DEFAULT_TIMEOUT_MS (line 12) | const DEFAULT_TIMEOUT_MS = 5000; constant MAX_REDIRECTS (line 13) | const MAX_REDIRECTS = 5; constant DEFAULT_ADVISORY_SOURCES (line 15) | const DEFAULT_ADVISORY_SOURCES = [ function normalizeArray (line 99) | function normalizeArray(values) { function createCheck (line 103) | function createCheck(id, status, summary, fix) { function uniqueValues (line 107) | function uniqueValues(sources, field) { function validateSources (line 111) | function validateSources(sources) { function refreshStatusFromResult (line 177) | function refreshStatusFromResult(result) { function defaultFetchSource (line 196) | async function defaultFetchSource(source, options = {}) { function requestUrl (line 226) | function requestUrl(url, options) { function buildLinearStatus (line 282) | function buildLinearStatus(report, sources) { function buildAdvisorySourceReport (line 304) | async function buildAdvisorySourceReport(options = {}) { function parseArgs (line 369) | function parseArgs(argv) { function printHelp (line 399) | function printHelp() { function renderText (line 416) | function renderText(report) { function writeReport (line 431) | function writeReport(report, writePath) { 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 43) | 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 validateFrontmatter (line 15) | function validateFrontmatter(file, content) { function validateCommands (line 62) | 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 12) | const REPO_ROOT = path.join(__dirname, '../..'); constant MODULES_MANIFEST_PATH (line 13) | const MODULES_MANIFEST_PATH = path.join(REPO_ROOT, 'manifests/install-mo... constant PROFILES_MANIFEST_PATH (line 14) | const PROFILES_MANIFEST_PATH = path.join(REPO_ROOT, 'manifests/install-p... constant COMPONENTS_MANIFEST_PATH (line 15) | const COMPONENTS_MANIFEST_PATH = path.join(REPO_ROOT, 'manifests/install... constant MODULES_SCHEMA_PATH (line 16) | const MODULES_SCHEMA_PATH = path.join(REPO_ROOT, 'schemas/install-module... constant PROFILES_SCHEMA_PATH (line 17) | const PROFILES_SCHEMA_PATH = path.join(REPO_ROOT, 'schemas/install-profi... constant COMPONENTS_SCHEMA_PATH (line 18) | const COMPONENTS_SCHEMA_PATH = path.join(REPO_ROOT, 'schemas/install-com... constant COMPONENT_FAMILY_PREFIXES (line 19) | const COMPONENT_FAMILY_PREFIXES = { function readJson (line 27) | function readJson(filePath, label) { function normalizeRelativePath (line 35) | function normalizeRelativePath(relativePath) { function validateSchema (line 39) | function validateSchema(ajv, schemaPath, data, label) { function validateInstallManifests (line 56) | function validateInstallManifests() { FILE: scripts/ci/validate-no-personal-paths.js constant ROOT (line 16) | const ROOT = path.join(__dirname, '../..'); constant TARGETS (line 17) | const TARGETS = [ constant EXEMPT_PREFIXES (line 26) | const EXEMPT_PREFIXES = [ constant PLACEHOLDER_USERNAMES (line 30) | const PLACEHOLDER_USERNAMES = new Set([ constant POSIX_USER_RE (line 41) | const POSIX_USER_RE = /\/Users\/([a-zA-Z][a-zA-Z0-9._-]*)/g; constant WIN_USER_RE (line 42) | const WIN_USER_RE = /C:\\Users\\([a-zA-Z][a-zA-Z0-9._-]*)/gi; function repoRelative (line 44) | function repoRelative(file) { function isExempt (line 48) | function isExempt(file) { function findLeaks (line 53) | function findLeaks(content) { function collectFiles (line 70) | 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 27) | const SKILLS_DIR = path.join(__dirname, '../../skills'); constant STRICT (line 29) | const STRICT = process.argv.includes('--strict') || process.env.CI_STRIC... function extractFrontmatter (line 43) | function extractFrontmatter(content) { function inspectFrontmatter (line 67) | function inspectFrontmatter(lines) { function validateSkillDir (line 128) | function validateSkillDir(dir, skillsDir, reportFrontmatterFinding) { function validateSkills (line 167) | function validateSkills() { FILE: scripts/ci/validate-workflow-security.js constant DEFAULT_WORKFLOWS_DIR (line 10) | const DEFAULT_WORKFLOWS_DIR = path.join(__dirname, '../../.github/workfl... constant RULES (line 12) | const RULES = [ constant WRITE_PERMISSION_PATTERN (line 36) | const WRITE_PERMISSION_PATTERN = /^\s*(?:contents|issues|pull-requests|a... constant WRITE_ALL_PATTERN (line 43) | const WRITE_ALL_PATTERN = /^\s*permissions:\s*["']?write-all["']?\s*$/m; constant NPM_AUDIT_PATTERN (line 44) | const NPM_AUDIT_PATTERN = /\bnpm\s+audit\b(?!\s+signatures\b)/; constant NPM_AUDIT_SIGNATURES_PATTERN (line 45) | const NPM_AUDIT_SIGNATURES_PATTERN = /\bnpm\s+audit\s+signatures\b/; constant ACTIONS_CACHE_PATTERN (line 46) | const ACTIONS_CACHE_PATTERN = /uses:\s*['"]?actions\/cache@/m; constant ID_TOKEN_WRITE_PATTERN (line 47) | const ID_TOKEN_WRITE_PATTERN = /^\s*id-token:\s*write\b/m; constant TOP_LEVEL_JOBS_PATTERN (line 48) | const TOP_LEVEL_JOBS_PATTERN = /^jobs:\s*$/m; constant UNSAFE_INSTALL_PATTERNS (line 49) | const UNSAFE_INSTALL_PATTERNS = [ function getWorkflowFiles (line 68) | function getWorkflowFiles(workflowsDir) { function getLineNumber (line 79) | function getLineNumber(source, index) { function extractCheckoutSteps (line 83) | function extractCheckoutSteps(source) { function findViolations (line 122) | function findViolations(filePath, source) { function validateWorkflowSecurity (line 246) | function validateWorkflowSecurity(workflowsDir = DEFAULT_WORKFLOWS_DIR) { 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 117) | function parseTurns(history) { function estimateTokenCount (line 127) | function estimateTokenCount(text) { function getSessionMetrics (line 131) | function getSessionMetrics(filePath) { function searchSessions (line 148) | function searchSessions(query, dir) { function compactSession (line 171) | function compactSession(filePath, keepTurns = DEFAULT_COMPACT_KEEP_TURNS) { function exportSession (line 185) | function exportSession(filePath, format, outputPath) { function branchSession (line 221) | function branchSession(currentSessionPath, newSessionName, targetDir = g... function skillExists (line 234) | function skillExists(skillName) { function handleClear (line 239) | function handleClear(sessionPath) { function handleHistory (line 245) | function handleHistory(sessionPath) { function handleSessions (line 254) | function handleSessions(dir) { function handleHelp (line 267) | function handleHelp() { function main (line 283) | 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/codex/merge-codex-config.js constant TOML (line 17) | let TOML; constant ROOT_KEYS (line 26) | const ROOT_KEYS = ['approval_policy', 'sandbox_mode', 'web_search', 'not... constant TABLE_PATHS (line 27) | const TABLE_PATHS = [ constant TOML_HEADER_RE (line 36) | const TOML_HEADER_RE = /^[ \t]*(?:\[[^[\]\n][^\]\n]*\]|\[\[[^[\]\n][^\]\... function log (line 38) | function log(message) { function warn (line 42) | function warn(message) { function getNested (line 46) | function getNested(obj, pathParts) { function setNested (line 57) | function setNested(obj, pathParts, value) { function findFirstTableIndex (line 69) | function findFirstTableIndex(raw) { function findTableRange (line 74) | function findTableRange(raw, tablePath) { function ensureTrailingNewline (line 89) | function ensureTrailingNewline(text) { function insertBeforeFirstTable (line 93) | function insertBeforeFirstTable(raw, block) { function appendBlock (line 106) | function appendBlock(raw, block) { function stringifyValue (line 112) | function stringifyValue(value) { function updateInlineTableKeys (line 116) | function updateInlineTableKeys(raw, tablePath, missingKeys) { function appendImplicitTable (line 150) | function appendImplicitTable(raw, tablePath, missingKeys) { function appendToTable (line 160) | function appendToTable(raw, tablePath, block, missingKeys = null) { function stringifyRootKeys (line 183) | function stringifyRootKeys(keys) { function stringifyTable (line 187) | function stringifyTable(tablePath, value) { function stringifyTableKeys (line 201) | function stringifyTableKeys(tableValue) { function main (line 212) | function main() { FILE: scripts/codex/merge-mcp-config.js constant TOML (line 24) | let TOML; constant PM_NAME (line 60) | const PM_NAME = pmConfig.config.name || pmConfig.name; constant PM_EXEC (line 61) | const PM_EXEC = resolvedExecCmd; constant PM_EXEC_PARTS (line 62) | const PM_EXEC_PARTS = PM_EXEC.split(/\s+/); constant GH_BOOTSTRAP (line 70) | const GH_BOOTSTRAP = `token=$(gh auth token 2>/dev/null || true); if [ -... function dlxServer (line 77) | function dlxServer(name, pkg, extraFields, extraToml) { constant DEFAULT_MCP_STARTUP_TIMEOUT_SEC (line 87) | const DEFAULT_MCP_STARTUP_TIMEOUT_SEC = 30; constant DEFAULT_MCP_STARTUP_TIMEOUT_TOML (line 88) | const DEFAULT_MCP_STARTUP_TIMEOUT_TOML = `startup_timeout_sec = ${DEFAUL... constant ECC_SERVERS (line 90) | const ECC_SERVERS = { constant LEGACY_ALIASES (line 112) | const LEGACY_ALIASES = { function log (line 120) | function log(msg) { function warn (line 124) | function warn(msg) { function configDiffers (line 129) | function configDiffers(existing, recommended) { function removeSectionFromText (line 148) | function removeSectionFromText(text, sectionHeader) { function findSubSections (line 176) | function findSubSections(serverObj, prefix) { function removeServerFromText (line 194) | function removeServerFromText(raw, serverName, existing) { function main (line 209) | function main() { FILE: scripts/consult.js constant DEFAULT_TARGET (line 10) | const DEFAULT_TARGET = 'claude'; constant DEFAULT_LIMIT (line 11) | const DEFAULT_LIMIT = 5; constant MAX_LIMIT (line 12) | const MAX_LIMIT = 20; constant SCHEMA_VERSION (line 13) | const SCHEMA_VERSION = 'ecc.consult.v1'; constant FUZZY_EXCLUDED_TOKENS (line 14) | const FUZZY_EXCLUDED_TOKENS = new Set(['review']); constant MACHINE_LEARNING_CONTEXT_TOKENS (line 15) | const MACHINE_LEARNING_CONTEXT_TOKENS = new Set([ constant STOP_WORDS (line 30) | const STOP_WORDS = new Set([ constant COMPONENT_ALIASES (line 54) | const COMPONENT_ALIASES = Object.freeze({ constant PROFILE_ALIASES (line 110) | const PROFILE_ALIASES = Object.freeze({ function showHelp (line 119) | function showHelp(exitCode = 0) { function normalizeToken (line 142) | function normalizeToken(value) { function expandToken (line 150) | function expandToken(token) { function tokenize (line 169) | function tokenize(value) { function parsePositiveInteger (line 185) | function parsePositiveInteger(value, label) { function parseArgs (line 192) | function parseArgs(argv) { function commandFor (line 241) | function commandFor(kind, id, target) { function planCommandFor (line 249) | function planCommandFor(componentId, target) { function buildSearchCorpus (line 253) | function buildSearchCorpus(parts) { function scoreAgainstQuery (line 257) | function scoreAgainstQuery(queryTokens, corpusTokens, options = {}) { function preferredComponentBonus (line 289) | function preferredComponentBonus(component, queryTokens) { function rankComponents (line 319) | function rankComponents({ queryTokens, target, limit }) { function rankProfiles (line 360) | function rankProfiles({ queryTokens, target, limit }) { function buildConsultation (line 394) | function buildConsultation(options) { function formatText (line 430) | function formatText(payload) { function main (line 468) | function main() { FILE: scripts/discussion-audit.js constant SCHEMA_VERSION (line 12) | const SCHEMA_VERSION = 'ecc.discussion-audit.v1'; constant DEFAULT_REPOS (line 13) | const DEFAULT_REPOS = Object.freeze([ function usage (line 21) | function usage() { function readValue (line 41) | function readValue(args, index, flagName) { function parseIntegerFlag (line 49) | function parseIntegerFlag(value, flagName) { function parseArgs (line 57) | function parseArgs(argv) { function buildReport (line 155) | function buildReport(options) { function markdownEscape (line 221) | function markdownEscape(value) { function renderText (line 227) | function renderText(report) { function renderMarkdown (line 256) | function renderMarkdown(report) { function writeOutput (line 295) | function writeOutput(writePath, output) { function renderReport (line 300) | function renderReport(report, format) { function main (line 312) | function main() { FILE: scripts/doctor.js function showHelp (line 7) | function showHelp(exitCode = 0) { function parseArgs (line 16) | function parseArgs(argv) { function statusLabel (line 42) | function statusLabel(status) { function printHuman (line 58) | function printHuman(report) { function main (line 83) | function main() { FILE: scripts/ecc.js constant COMMANDS (line 7) | const COMMANDS = { constant PRIMARY_COMMANDS (line 78) | const PRIMARY_COMMANDS = [ function showHelp (line 97) | function showHelp(exitCode = 0) { function resolveCommand (line 142) | function resolveCommand(argv) { function runCommand (line 187) | function runCommand(commandName, args) { function main (line 227) | function main() { FILE: scripts/gemini-adapt-agents.js constant TOOL_NAME_MAP (line 7) | const TOOL_NAME_MAP = new Map([ function usage (line 18) | function usage() { function parseArgs (line 30) | function parseArgs(argv) { function ensureDirectory (line 46) | function ensureDirectory(dirPath) { function stripQuotes (line 56) | function stripQuotes(value) { function parseToolList (line 60) | function parseToolList(line) { function adaptToolName (line 77) | function adaptToolName(toolName) { function formatToolLine (line 94) | function formatToolLine(tools) { function adaptFrontmatter (line 98) | function adaptFrontmatter(text) { function adaptAgents (line 147) | function adaptAgents(dirPath) { function main (line 173) | function main() { FILE: scripts/harness-adapter-compliance.js function parseArgs (line 12) | function parseArgs(argv) { function printHelp (line 67) | function printHelp() { function buildPayload (line 81) | function buildPayload(root) { function renderText (line 95) | function renderText(payload) { function main (line 111) | function main() { FILE: scripts/harness-audit.js constant CATEGORIES (line 7) | const CATEGORIES = [ constant RUBRIC_VERSION (line 22) | const RUBRIC_VERSION = '2026-05-19'; constant PROVIDERS (line 24) | const PROVIDERS = { function getApplicableProviders (line 56) | function getApplicableProviders(rootDir) { function normalizeScope (line 62) | function normalizeScope(scope) { function parseArgs (line 70) | function parseArgs(argv) { function fileExists (line 134) | function fileExists(rootDir, relativePath) { function readText (line 138) | function readText(rootDir, relativePath) { function countFiles (line 142) | function countFiles(rootDir, relativeDir, extension) { function safeRead (line 168) | function safeRead(rootDir, relativePath) { function safeParseJson (line 176) | function safeParseJson(text) { function hasFileWithExtension (line 188) | function hasFileWithExtension(rootDir, relativeDir, extensions) { function detectTargetMode (line 217) | function detectTargetMode(rootDir) { constant ECC_PLUGIN_KEY_PATTERNS (line 235) | const ECC_PLUGIN_KEY_PATTERNS = [ constant ECC_LEGACY_PLUGIN_DIRS (line 240) | const ECC_LEGACY_PLUGIN_DIRS = [ constant ECC_CACHE_MARKETPLACES (line 247) | const ECC_CACHE_MARKETPLACES = ['everything-claude-code', 'ecc']; constant ECC_CACHE_PLUGIN_NAMES (line 248) | const ECC_CACHE_PLUGIN_NAMES = ['ecc', 'everything-claude-code']; function uniquePaths (line 250) | function uniquePaths(paths) { function compareVersionDesc (line 254) | function compareVersionDesc(a, b) { function findPluginJsonUnder (line 270) | function findPluginJsonUnder(installRoot) { function findPluginInstallFromManifest (line 280) | function findPluginInstallFromManifest(installedPluginsPaths) { function findPluginInstallFlatLayout (line 316) | function findPluginInstallFlatLayout(candidateRoots) { function findPluginInstallMarketplaceCache (line 329) | function findPluginInstallMarketplaceCache(candidateRoots) { function findPluginInstall (line 362) | function findPluginInstall(rootDir) { function getRepoChecks (line 388) | function getRepoChecks(rootDir) { function buildGithubChecks (line 661) | function buildGithubChecks(rootDir) { function readAllWorkflowsText (line 726) | function readAllWorkflowsText(rootDir) { function buildProviderChecks (line 756) | function buildProviderChecks(rootDir, provider, sharedContext) { function collectProviderChecks (line 806) | function collectProviderChecks(rootDir, packageJson) { function getConsumerChecks (line 821) | function getConsumerChecks(rootDir) { function summarizeCategoryScores (line 947) | function summarizeCategoryScores(checks) { function buildReport (line 967) | function buildReport(scope, options = {}) { function printText (line 1013) | function printText(report) { function showHelp (line 1040) | function showHelp(exitCode = 0) { function main (line 1051) | function main() { FILE: scripts/hooks/auto-tmux-dev.js constant MAX_STDIN (line 31) | const MAX_STDIN = 1024 * 1024; function run (line 34) | function run(rawInput) { FILE: scripts/hooks/bash-hook-dispatcher.js constant MAX_STDIN (line 16) | const MAX_STDIN = 1024 * 1024; constant PRE_BASH_HOOKS (line 18) | const PRE_BASH_HOOKS = [ constant POST_BASH_HOOKS (line 50) | const POST_BASH_HOOKS = [ function readStdinRaw (line 71) | function readStdinRaw() { function normalizeHookResult (line 86) | function normalizeHookResult(previousRaw, output) { function runHooks (line 116) | function runHooks(rawInput, hooks) { function runPreBash (line 142) | function runPreBash(rawInput) { function runPostBash (line 146) | function runPostBash(rawInput) { function main (line 150) | async function main() { FILE: scripts/hooks/block-no-verify.js constant MAX_STDIN (line 18) | const MAX_STDIN = 1024 * 1024; constant GIT_COMMANDS_WITH_NO_VERIFY (line 24) | const GIT_COMMANDS_WITH_NO_VERIFY = [ constant VALID_BEFORE_GIT (line 36) | const VALID_BEFORE_GIT = ' \t\n\r;&|$`(<{!"\']/.~\\'; constant GIT_CONFIG_KEY_PREFIX (line 43) | const GIT_CONFIG_KEY_PREFIX = 'core.hookspath='; constant COMMIT_OPTIONS_WITH_VALUE (line 45) | const COMMIT_OPTIONS_WITH_VALUE = new Set([ constant COMMIT_OPTIONS_WITH_INLINE_VALUE (line 62) | const COMMIT_OPTIONS_WITH_INLINE_VALUE = [ constant COMMIT_SHORT_OPTIONS_WITH_VALUE (line 80) | const COMMIT_SHORT_OPTIONS_WITH_VALUE = new Set(['m', 'F', 'C', 'c', 't']); function tokenizeShellWords (line 82) | function tokenizeShellWords(input, start = 0, end = input.length) { function findCommandSegmentEnd (line 165) | function findCommandSegmentEnd(input, start) { function commitOptionConsumesNextValue (line 206) | function commitOptionConsumesNextValue(value) { function commitOptionContainsInlineValue (line 219) | function commitOptionContainsInlineValue(value) { function getCommitShortValueOption (line 232) | function getCommitShortValueOption(value) { function isCommitNoVerifyShortFlag (line 250) | function isCommitNoVerifyShortFlag(value) { function isInComment (line 257) | function isInComment(input, idx) { function findGit (line 272) | function findGit(input, start) { function detectGitCommand (line 298) | function detectGitCommand(input, start = 0) { function hasNoVerifyFlag (line 379) | function hasNoVerifyFlag(input, command, offset) { function hasHooksPathOverride (line 421) | function hasHooksPathOverride(input, detected) { function checkCommand (line 451) | function checkCommand(input) { function extractCommand (line 483) | function extractCommand(rawInput) { function run (line 509) | function run(rawInput) { 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/config-protection.js constant MAX_STDIN (line 19) | const MAX_STDIN = 1024 * 1024; constant PROTECTED_FILES (line 22) | const PROTECTED_FILES = new Set([ function parseInput (line 65) | function parseInput(inputOrRaw) { function run (line 81) | function run(inputOrRaw, options = {}) { FILE: scripts/hooks/cost-tracker.js constant RATE_TABLE (line 34) | const RATE_TABLE = { function getRates (line 40) | function getRates(model) { function toNumber (line 47) | function toNumber(v) { function sumUsageFromTranscript (line 57) | function sumUsageFromTranscript(transcriptPath) { constant MAX_STDIN (line 92) | const MAX_STDIN = 64 * 1024; FILE: scripts/hooks/design-quality-check.js constant FRONTEND_EXTENSIONS (line 15) | const FRONTEND_EXTENSIONS = /\.(astro|css|html|jsx|scss|svelte|tsx|vue)$/i; constant MAX_STDIN (line 16) | const MAX_STDIN = 1024 * 1024; constant GENERIC_SIGNALS (line 18) | const GENERIC_SIGNALS = [ constant CHECKLIST (line 27) | const CHECKLIST = [ function getFilePaths (line 35) | function getFilePaths(input) { function readContent (line 50) | function readContent(filePath) { function detectSignals (line 58) | function detectSignals(content) { function buildWarning (line 62) | function buildWarning(frontendPaths, findings) { function run (line 78) | function run(inputOrRaw) { FILE: scripts/hooks/desktop-notify.js constant TITLE (line 26) | const TITLE = 'Claude Code'; constant MAX_BODY_LENGTH (line 27) | const MAX_BODY_LENGTH = 100; constant MAX_TTY_LOOKUP_DEPTH (line 28) | const MAX_TTY_LOOKUP_DEPTH = 30; constant PS_TIMEOUT_MS (line 29) | const PS_TIMEOUT_MS = 2000; function findPowerShell (line 47) | function findPowerShell() { function notifyWindows (line 76) | function notifyWindows(pwshPath, title, body) { function extractSummary (line 93) | function extractSummary(message) { function findTerminalTTY (line 114) | function findTerminalTTY() { function isUnderMultiplexer (line 148) | function isUnderMultiplexer() { function notifyMacOS (line 169) | function notifyMacOS(title, body) { function run (line 196) | function run(raw) { FILE: scripts/hooks/doc-file-warning.js constant MAX_STDIN (line 18) | const MAX_STDIN = 1024 * 1024; constant ADHOC_FILENAMES (line 22) | const ADHOC_FILENAMES = /^(NOTES|TODO|SCRATCH|TEMP|DRAFT|BRAINSTORM|SPIK... constant STRUCTURED_DIRS (line 25) | const STRUCTURED_DIRS = /(^|\/)(docs|\.claude|\.github|commands|skills|b... function isSuspiciousDocPath (line 27) | function isSuspiciousDocPath(filePath) { function run (line 47) | function run(inputOrRaw, _options = {}) { FILE: scripts/hooks/ecc-context-monitor.js constant CONTEXT_WARNING_PCT (line 18) | const CONTEXT_WARNING_PCT = 35; constant CONTEXT_CRITICAL_PCT (line 19) | const CONTEXT_CRITICAL_PCT = 25; constant COST_NOTICE_USD (line 20) | const COST_NOTICE_USD = 5; constant COST_WARNING_USD (line 21) | const COST_WARNING_USD = 10; constant COST_CRITICAL_USD (line 22) | const COST_CRITICAL_USD = 50; constant FILES_WARNING_COUNT (line 23) | const FILES_WARNING_COUNT = 20; constant LOOP_THRESHOLD (line 24) | const LOOP_THRESHOLD = 3; constant STALE_SECONDS (line 25) | const STALE_SECONDS = 60; constant DEBOUNCE_CALLS (line 26) | const DEBOUNCE_CALLS = 5; function isEnabledEnv (line 28) | function isEnabledEnv(value, defaultValue = true) { function costWarningsEnabled (line 38) | function costWarningsEnabled(env = process.env) { function getWarnPath (line 47) | function getWarnPath(sessionId) { function readWarnState (line 56) | function readWarnState(sessionId) { function writeWarnState (line 79) | function writeWarnState(sessionId, state) { function detectLoop (line 96) | function detectLoop(recentTools) { function evaluateConditions (line 117) | function evaluateConditions(bridge, options = {}) { function severityLabel (line 191) | function severityLabel(n) { function run (line 201) | function run(rawInput) { FILE: scripts/hooks/ecc-metrics-bridge.js constant MAX_STDIN (line 19) | const MAX_STDIN = 1024 * 1024; constant MAX_FILES_TRACKED (line 20) | const MAX_FILES_TRACKED = 200; constant RECENT_TOOLS_SIZE (line 21) | const RECENT_TOOLS_SIZE = 5; constant HASH_INPUT_LIMIT (line 22) | const HASH_INPUT_LIMIT = 2048; constant WARNING_CACHE_PREFIX (line 23) | const WARNING_CACHE_PREFIX = 'ecc-metrics-cost-warnings-'; function toNumber (line 25) | function toNumber(value) { function stableStringify (line 30) | function stableStringify(value, depth = 0) { function hashToolCall (line 46) | function hashToolCall(toolName, toolInput) { function extractFilePaths (line 62) | function extractFilePaths(toolName, toolInput) { function getCostWarningCachePath (line 81) | function getCostWarningCachePath(costsPath) { function readCostWarningCache (line 86) | function readCostWarningCache(cachePath) { function writeCostWarningIfChanged (line 95) | function writeCostWarningIfChanged(kind, costsPath, signature, message) { function readSessionCost (line 128) | function readSessionCost(sessionId) { function run (line 187) | function run(rawInput) { FILE: scripts/hooks/ecc-statusline.js constant AUTO_COMPACT_BUFFER_PCT (line 18) | const AUTO_COMPACT_BUFFER_PCT = 16.5; constant MAX_STDIN (line 19) | const MAX_STDIN = 1024 * 1024; function formatDuration (line 26) | function formatDuration(isoTimestamp) { function buildContextBar (line 43) | function buildContextBar(remaining) { function readCurrentTask (line 63) | function readCurrentTask(sessionId) { function runStatusline (line 88) | function runStatusline() { 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/gateguard-fact-force.js constant STATE_DIR (line 35) | const STATE_DIR = process.env.GATEGUARD_STATE_DIR || path.join(process.e... constant SESSION_TIMEOUT_MS (line 39) | const SESSION_TIMEOUT_MS = 30 * 60 * 1000; constant READ_HEARTBEAT_MS (line 40) | const READ_HEARTBEAT_MS = 60 * 1000; constant MAX_CHECKED_ENTRIES (line 43) | const MAX_CHECKED_ENTRIES = 500; constant MAX_SESSION_KEYS (line 44) | const MAX_SESSION_KEYS = 50; constant ROUTINE_BASH_SESSION_KEY (line 45) | const ROUTINE_BASH_SESSION_KEY = '__bash_session__'; constant EDIT_WRITE_HOOK_ID (line 46) | const EDIT_WRITE_HOOK_ID = 'pre:edit-write:gateguard-fact-force'; constant BASH_HOOK_ID (line 47) | const BASH_HOOK_ID = 'pre:bash:gateguard-fact-force'; constant ECC_DISABLE_VALUES (line 48) | const ECC_DISABLE_VALUES = new Set(['0', 'false', 'off', 'disabled', 'di... constant DESTRUCTIVE_SQL_DD (line 54) | const DESTRUCTIVE_SQL_DD = /\b(drop\s+table|delete\s+from|truncate|dd\s+... function stripQuotedStrings (line 65) | function stripQuotedStrings(input) { function explodeSubshells (line 81) | function explodeSubshells(input) { function splitCommandSegments (line 102) | function splitCommandSegments(input) { function tokenize (line 118) | function tokenize(segment) { function tokenizeAllowlistedShellWords (line 132) | function tokenizeAllowlistedShellWords(input) { function commandBasename (line 188) | function commandBasename(token) { function isDestructiveRm (line 200) | function isDestructiveRm(tokens) { function findGitSubcommand (line 229) | function findGitSubcommand(tokens) { function isDestructiveGit (line 262) | function isDestructiveGit(tokens) { function collectExecutableBodies (line 378) | function collectExecutableBodies(raw) { function isDestructiveBash (line 408) | function isDestructiveBash(command) { function normalizeEnvValue (line 429) | function normalizeEnvValue(value) { function isGateGuardDisabled (line 433) | function isGateGuardDisabled() { function sanitizeSessionKey (line 441) | function sanitizeSessionKey(value) { function hashSessionKey (line 455) | function hashSessionKey(prefix, value) { function resolveSessionKey (line 459) | function resolveSessionKey(data) { function getStateFile (line 478) | function getStateFile(data) { function loadState (line 486) | function loadState() { function pruneCheckedEntries (line 508) | function pruneCheckedEntries(checked) { function saveState (line 523) | function saveState(state) { function markChecked (line 582) | function markChecked(key) { function isChecked (line 591) | function isChecked(key) { function sanitizePath (line 625) | function sanitizePath(filePath) { function normalizeForMatch (line 637) | function normalizeForMatch(value) { function isClaudeSettingsPath (line 643) | function isClaudeSettingsPath(filePath) { function isReadOnlyGitIntrospection (line 648) | function isReadOnlyGitIntrospection(command) { function editGateMsg (line 699) | function editGateMsg(filePath) { function writeGateMsg (line 715) | function writeGateMsg(filePath) { function destructiveBashMsg (line 731) | function destructiveBashMsg() { function routineBashMsg (line 745) | function routineBashMsg() { function withRecoveryHint (line 758) | function withRecoveryHint(message, hookIds = [EDIT_WRITE_HOOK_ID]) { function isSubagentInvocation (line 767) | function isSubagentInvocation(data) { function denyResult (line 784) | function denyResult(reason, options = {}) { function allowWithStateWarning (line 799) | function allowWithStateWarning() { function run (line 808) | function run(rawInput) { FILE: scripts/hooks/governance-capture.js constant MAX_STDIN (line 23) | const MAX_STDIN = 1024 * 1024; constant SECRET_PATTERNS (line 26) | const SECRET_PATTERNS = [ constant SECURITY_RELEVANT_TOOLS (line 35) | const SECURITY_RELEVANT_TOOLS = new Set([ constant APPROVAL_COMMANDS (line 40) | const APPROVAL_COMMANDS = [ constant SENSITIVE_PATHS (line 49) | const SENSITIVE_PATHS = [ function generateEventId (line 61) | function generateEventId() { function detectSecrets (line 69) | function detectSecrets(text) { function detectApprovalRequired (line 84) | function detectApprovalRequired(command) { function detectSensitivePath (line 99) | function detectSensitivePath(filePath) { function fingerprintCommand (line 105) | function fingerprintCommand(command) { function summarizeCommand (line 110) | function summarizeCommand(command) { function emitGovernanceEvent (line 132) | function emitGovernanceEvent(event) { function analyzeForGovernanceEvents (line 143) | function analyzeForGovernanceEvents(input, context = {}) { function run (line 253) | function run(rawInput, options = {}) { 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; constant WINDOWS_SHELL_UNSAFE_PATH_CHARS (line 18) | const WINDOWS_SHELL_UNSAFE_PATH_CHARS = /[&|<>^%!]/; function isEnabled (line 20) | function isEnabled(value) { FILE: scripts/hooks/mcp-health-check.js constant MAX_STDIN (line 22) | const MAX_STDIN = 1024 * 1024; constant DEFAULT_TTL_MS (line 23) | const DEFAULT_TTL_MS = 2 * 60 * 1000; constant DEFAULT_TIMEOUT_MS (line 24) | const DEFAULT_TIMEOUT_MS = 5000; constant DEFAULT_BACKOFF_MS (line 25) | const DEFAULT_BACKOFF_MS = 30 * 1000; constant MAX_BACKOFF_MS (line 26) | const MAX_BACKOFF_MS = 10 * 60 * 1000; constant HEALTHY_HTTP_CODES (line 32) | const HEALTHY_HTTP_CODES = new Set([200, 201, 202, 204, 301, 302, 303, 3... constant RECONNECT_STATUS_CODES (line 33) | const RECONNECT_STATUS_CODES = new Set([401, 403, 429, 503]); constant FAILURE_PATTERNS (line 34) | const FAILURE_PATTERNS = [ function envNumber (line 42) | function envNumber(name, fallback) { function stateFilePath (line 47) | function stateFilePath() { function configPaths (line 54) | function configPaths() { function readJsonFile (line 74) | function readJsonFile(filePath) { function loadState (line 82) | function loadState(filePath) { function saveState (line 95) | function saveState(filePath, state) { function readRawStdin (line 104) | function readRawStdin() { function safeParse (line 125) | function safeParse(raw) { function extractMcpTarget (line 133) | function extractMcpTarget(input) { function extractMcpTargetFromRaw (line 169) | function extractMcpTargetFromRaw(raw) { function resolveServerConfig (line 181) | function resolveServerConfig(serverName) { function markHealthy (line 199) | function markHealthy(state, serverName, now, details = {}) { function markUnhealthy (line 213) | function markUnhealthy(state, serverName, now, failureCode, errorMessage) { function failureSummary (line 231) | function failureSummary(input) { function detectFailureCode (line 246) | function detectFailureCode(text) { function requestHttp (line 256) | function requestHttp(urlString, headers, timeoutMs) { function probeCommandServer (line 301) | function probeCommandServer(serverName, config) { function probeServer (line 483) | async function probeServer(serverName, resolvedConfig) { function reconnectCommand (line 516) | function reconnectCommand(serverName) { function attemptReconnect (line 528) | function attemptReconnect(serverName) { function shouldFailOpen (line 557) | function shouldFailOpen() { function emitLogs (line 561) | function emitLogs(logs) { function handlePreToolUse (line 567) | async function handlePreToolUse(rawInput, input, target, statePathValue,... function handlePostToolUseFailure (line 632) | async function handlePostToolUseFailure(rawInput, input, target, statePa... function main (line 680) | async function main() { FILE: scripts/hooks/observe-runner.js constant OBSERVE_RELATIVE_PATH (line 8) | const OBSERVE_RELATIVE_PATH = path.join('skills', 'continuous-learning-v... constant DEFAULT_TIMEOUT_MS (line 9) | const DEFAULT_TIMEOUT_MS = 9000; function getPluginRoot (line 11) | function getPluginRoot(options = {}) { function resolveTarget (line 24) | function resolveTarget(rootDir, relPath) { function toShellPath (line 36) | function toShellPath(filePath) { function findShellBinary (line 47) | function findShellBinary() { function getPhaseFromHookId (line 72) | function getPhaseFromHookId(hookId) { function getTimeoutMs (line 77) | function getTimeoutMs() { function combineStderr (line 82) | function combineStderr(stderr, message) { function run (line 89) | function run(raw, options = {}) { function emitHookResult (line 162) | function emitHookResult(raw, output) { FILE: scripts/hooks/plugin-hook-bootstrap.js function readStdinRaw (line 8) | function readStdinRaw() { function writeStderr (line 16) | function writeStderr(stderr) { function passthrough (line 22) | function passthrough(raw, result) { function resolveTarget (line 34) | function resolveTarget(rootDir, relPath) { function findShellBinary (line 46) | function findShellBinary() { function spawnNode (line 71) | function spawnNode(rootDir, relPath, raw, args) { function spawnShell (line 86) | function spawnShell(rootDir, relPath, raw, args) { function main (line 110) | function main() { FILE: scripts/hooks/post-bash-build-complete.js constant MAX_STDIN (line 4) | const MAX_STDIN = 1024 * 1024; function run (line 7) | function run(rawInput) { FILE: scripts/hooks/post-bash-command-log.js constant MAX_STDIN (line 8) | const MAX_STDIN = 1024 * 1024; constant MODE_CONFIG (line 11) | const MODE_CONFIG = { function sanitizeCommand (line 22) | function sanitizeCommand(command) { function appendLine (line 36) | function appendLine(filePath, line) { function run (line 41) | function run(rawInput, mode = 'audit') { function main (line 57) | function main() { FILE: scripts/hooks/post-bash-dispatcher.js constant MAX_STDIN (line 7) | const MAX_STDIN = 1024 * 1024; FILE: scripts/hooks/post-bash-pr-created.js constant MAX_STDIN (line 4) | const MAX_STDIN = 1024 * 1024; function run (line 7) | function run(rawInput) { FILE: scripts/hooks/post-edit-accumulator.js constant MAX_STDIN (line 22) | const MAX_STDIN = 1024 * 1024; function getAccumFile (line 24) | function getAccumFile() { constant JS_TS_EXT (line 38) | const JS_TS_EXT = /\.(ts|tsx|js|jsx)$/; function appendPath (line 40) | function appendPath(filePath) { function run (line 50) | function run(rawInput) { 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-commit-quality.js constant MAX_STDIN (line 22) | const MAX_STDIN = 1024 * 1024; function getStagedFiles (line 28) | function getStagedFiles() { function getStagedFileContent (line 39) | function getStagedFileContent(filePath) { function shouldCheckFile (line 55) | function shouldCheckFile(filePath) { function findFileIssues (line 65) | function findFileIssues(filePath) { function validateCommitMessage (line 140) | function validateCommitMessage(command) { function getPathEnv (line 191) | function getPathEnv() { function isPathLike (line 196) | function isPathLike(command) { function getExecutableCandidates (line 200) | function getExecutableCandidates(command) { function resolveCommand (line 209) | function resolveCommand(command) { function runLinterCommand (line 225) | function runLinterCommand(command, args) { function commandOutput (line 235) | function commandOutput(result) { function runLinter (line 244) | function runLinter(files) { function evaluate (line 312) | function evaluate(rawInput) { function run (line 420) | function run(rawInput) { FILE: scripts/hooks/pre-bash-dev-server-block.js constant MAX_STDIN (line 4) | const MAX_STDIN = 1024 * 1024; constant DEV_COMMAND_WORDS (line 12) | const DEV_COMMAND_WORDS = new Set([ constant SKIPPABLE_PREFIX_WORDS (line 20) | const SKIPPABLE_PREFIX_WORDS = new Set(['env', 'command', 'builtin', 'ex... constant PREFIX_OPTION_VALUE_WORDS (line 21) | const PREFIX_OPTION_VALUE_WORDS = { function readToken (line 41) | function readToken(input, startIndex) { function shouldSkipOptionValue (line 91) | function shouldSkipOptionValue(wrapper, optionToken) { function isOptionToken (line 97) | function isOptionToken(token) { function normalizeCommandWord (line 101) | function normalizeCommandWord(token) { function getLeadingCommandWord (line 107) | function getLeadingCommandWord(segment) { constant TMUX_LAUNCHER (line 163) | const TMUX_LAUNCHER = /^\s*tmux\s+(new|new-session|new-window|split-wind... constant DEV_PATTERN (line 164) | const DEV_PATTERN = /\b(npm\s+run\s+dev|pnpm(?:\s+run)?\s+dev|yarn(?:\s+... function collectCheckSegments (line 175) | function collectCheckSegments(cmd) { function isBlockedDevSegment (line 198) | function isBlockedDevSegment(segment) { FILE: scripts/hooks/pre-bash-dispatcher.js constant MAX_STDIN (line 7) | const MAX_STDIN = 1024 * 1024; FILE: scripts/hooks/pre-bash-git-push-reminder.js constant MAX_STDIN (line 4) | const MAX_STDIN = 1024 * 1024; function run (line 7) | function run(rawInput) { FILE: scripts/hooks/pre-bash-tmux-reminder.js constant MAX_STDIN (line 4) | const MAX_STDIN = 1024 * 1024; function run (line 7) | function run(rawInput) { 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 writeStderr (line 39) | function writeStderr(stderr) { function emitHookResult (line 47) | function emitHookResult(raw, output) { function writeLegacySpawnOutput (line 69) | function writeLegacySpawnOutput(raw, result) { function getPluginRoot (line 81) | function getPluginRoot() { function main (line 88) | async function main() { FILE: scripts/hooks/session-activity-tracker.js constant MAX_STDIN (line 20) | const MAX_STDIN = 1024 * 1024; constant METRICS_FILE_NAME (line 21) | const METRICS_FILE_NAME = 'tool-usage.jsonl'; constant FILE_PATH_KEYS (line 22) | const FILE_PATH_KEYS = new Set([ function redactSecrets (line 31) | function redactSecrets(value) { function truncateSummary (line 45) | function truncateSummary(value, maxLength = 220) { function sanitizeParamValue (line 53) | function sanitizeParamValue(value, depth = 0) { function sanitizeInputParams (line 85) | function sanitizeInputParams(toolInput) { function pushPathCandidate (line 97) | function pushPathCandidate(paths, value) { function pushFileEvent (line 110) | function pushFileEvent(events, value, action, diffPreview, patchPreview) { function sanitizeDiffText (line 141) | function sanitizeDiffText(value, maxLength = 96) { function sanitizePatchLines (line 148) | function sanitizePatchLines(value, maxLines = 4, maxLineLength = 120) { function buildReplacementPreview (line 161) | function buildReplacementPreview(oldValue, newValue) { function buildCreationPreview (line 176) | function buildCreationPreview(content) { function buildPatchPreviewFromReplacement (line 184) | function buildPatchPreviewFromReplacement(oldValue, newValue) { function buildPatchPreviewFromContent (line 201) | function buildPatchPreviewFromContent(content, prefix) { function buildDiffPreviewFromPatchPreview (line 209) | function buildDiffPreviewFromPatchPreview(patchPreview) { function inferDefaultFileAction (line 236) | function inferDefaultFileAction(toolName) { function actionForFileKey (line 256) | function actionForFileKey(toolName, key) { function collectFilePaths (line 266) | function collectFilePaths(value, paths) { function extractFilePaths (line 299) | function extractFilePaths(toolInput) { function fileEventDiffPreview (line 308) | function fileEventDiffPreview(toolName, value, action) { function fileEventPatchPreview (line 324) | function fileEventPatchPreview(value, action) { function runGit (line 344) | function runGit(args, cwd) { function gitRepoRoot (line 358) | function gitRepoRoot(cwd) { constant MAX_RELEVANT_PATCH_LINES (line 362) | const MAX_RELEVANT_PATCH_LINES = 6; function candidateGitPaths (line 364) | function candidateGitPaths(repoRoot, filePath) { function patchPreviewFromGitDiff (line 397) | function patchPreviewFromGitDiff(repoRoot, pathCandidates) { function trackedInGit (line 424) | function trackedInGit(repoRoot, pathCandidates) { function enrichFileEventFromWorkingTree (line 430) | function enrichFileEventFromWorkingTree(toolName, event) { function collectFileEvents (line 470) | function collectFileEvents(toolName, value, events, key = null, parentVa... function extractFileEvents (line 512) | function extractFileEvents(toolName, toolInput) { function summarizeInput (line 521) | function summarizeInput(toolName, toolInput, filePaths) { function summarizeOutput (line 547) | function summarizeOutput(toolOutput) { function buildActivityRow (line 563) | function buildActivityRow(input, env = process.env) { function run (line 597) | function run(rawInput) { function main (line 614) | function main() { FILE: scripts/hooks/session-end-marker.js function log (line 17) | function log(message) { function run (line 21) | function run(rawInput) { FILE: scripts/hooks/session-end.js constant SUMMARY_START_MARKER (line 29) | const SUMMARY_START_MARKER = ''; constant SUMMARY_END_MARKER (line 30) | const SUMMARY_END_MARKER = ''; constant SESSION_SEPARATOR (line 31) | const SESSION_SEPARATOR = '\n---\n'; function extractSessionSummary (line 40) | function extractSessionSummary(transcriptPath) { constant MAX_STDIN (line 114) | const MAX_STDIN = 1024 * 1024; function runMain (line 129) | function runMain() { function getSessionMetadata (line 136) | function getSessionMetadata() { function extractHeaderField (line 146) | function extractHeaderField(header, label) { function buildSessionHeader (line 151) | function buildSessionHeader(today, currentTime, metadata, existingConten... function mergeSessionHeader (line 169) | function mergeSessionHeader(content, today, currentTime, metadata) { function main (line 181) | async function main() { function buildSummarySection (line 293) | function buildSummarySection(summary) { function buildSummaryBlock (line 322) | function buildSummaryBlock(summary) { function escapeRegExp (line 326) | function escapeRegExp(value) { FILE: scripts/hooks/session-start-bootstrap.js constant CURRENT_PLUGIN_SLUG (line 33) | const CURRENT_PLUGIN_SLUG = 'ecc'; constant LEGACY_PLUGIN_SLUG (line 34) | const LEGACY_PLUGIN_SLUG = 'everything-claude-code'; constant KNOWN_PLUGIN_PATHS (line 35) | const KNOWN_PLUGIN_PATHS = [ constant CACHE_PLUGIN_SLUGS (line 43) | const CACHE_PLUGIN_SLUGS = [CURRENT_PLUGIN_SLUG, LEGACY_PLUGIN_SLUG]; function hasRunnerRoot (line 58) | function hasRunnerRoot(candidate) { function resolvePluginRoot (line 73) | function resolvePluginRoot() { FILE: scripts/hooks/session-start.js constant INSTINCT_CONFIDENCE_THRESHOLD (line 30) | const INSTINCT_CONFIDENCE_THRESHOLD = 0.7; constant MAX_INJECTED_INSTINCTS (line 31) | const MAX_INJECTED_INSTINCTS = 6; constant MAX_INJECTED_LEARNED_SKILLS (line 32) | const MAX_INJECTED_LEARNED_SKILLS = 6; constant MAX_LEARNED_SKILL_SUMMARY_CHARS (line 33) | const MAX_LEARNED_SKILL_SUMMARY_CHARS = 220; constant DEFAULT_SESSION_START_CONTEXT_MAX_CHARS (line 34) | const DEFAULT_SESSION_START_CONTEXT_MAX_CHARS = 8000; constant DEFAULT_SESSION_RETENTION_DAYS (line 35) | const DEFAULT_SESSION_RETENTION_DAYS = 30; constant SESSION_START_MODE_INVALID (line 36) | const SESSION_START_MODE_INVALID = 'invalid'; constant SESSION_START_MODE_SKIP (line 37) | const SESSION_START_MODE_SKIP = 'skip'; function normalizePath (line 49) | function normalizePath(p) { function dedupeRecentSessions (line 57) | function dedupeRecentSessions(searchDirs) { function getSessionRetentionDays (line 86) | function getSessionRetentionDays() { function isSessionStartContextDisabled (line 93) | function isSessionStartContextDisabled() { function getSessionStartMaxContextChars (line 98) | function getSessionStartMaxContextChars() { function getSessionStartMode (line 106) | function getSessionStartMode(rawInput) { function limitSessionStartContext (line 133) | function limitSessionStartContext(additionalContext, maxChars = getSessi... function pruneExpiredSessions (line 147) | function pruneExpiredSessions(searchDirs, retentionDays) { function selectMatchingSession (line 213) | function selectMatchingSession(sessions, cwd, currentProject) { function parseInstinctFile (line 260) | function parseInstinctFile(content) { function readInstinctsFromDir (line 309) | function readInstinctsFromDir(directory, scope) { function extractInstinctAction (line 336) | function extractInstinctAction(content) { function summarizeActiveInstincts (line 347) | function summarizeActiveInstincts(observerContext) { function stripMarkdownInline (line 400) | function stripMarkdownInline(value) { function collapseWhitespace (line 409) | function collapseWhitespace(value) { function truncateSummary (line 413) | function truncateSummary(value, maxLength = MAX_LEARNED_SKILL_SUMMARY_CH... function extractMarkdownHeading (line 421) | function extractMarkdownHeading(content) { function extractSection (line 426) | function extractSection(content, headingPattern) { function extractFirstParagraph (line 432) | function extractFirstParagraph(content) { function summarizeLearnedSkillFile (line 440) | function summarizeLearnedSkillFile(filePath, learnedRoot) { function collectLearnedSkillFiles (line 476) | function collectLearnedSkillFiles(learnedDir) { function summarizeLearnedSkills (line 489) | function summarizeLearnedSkills(learnedDir, learnedSkillFiles = collectL... function main (line 513) | async function main() { function writeSessionStartPayload (line 669) | function writeSessionStartPayload(additionalContext) { FILE: scripts/hooks/stop-format-typecheck.js constant MAX_STDIN (line 27) | const MAX_STDIN = 1024 * 1024; constant TOTAL_BUDGET_MS (line 29) | const TOTAL_BUDGET_MS = 270_000; constant UNSAFE_PATH_CHARS (line 33) | const UNSAFE_PATH_CHARS = /[&|<>^%!\s()]/; function parseAccumulator (line 36) | function parseAccumulator(raw) { function getAccumFile (line 40) | function getAccumFile() { function formatBatch (line 48) | function formatBatch(projectRoot, files, timeoutMs) { function findTsConfigDir (line 79) | function findTsConfigDir(filePath) { function typecheckBatch (line 91) | function typecheckBatch(tsConfigDir, editedFiles, timeoutMs) { function main (line 136) | function main() { function run (line 188) | function run(rawInput) { FILE: scripts/hooks/suggest-compact.js function resolveSessionId (line 26) | async function resolveSessionId() { function main (line 40) | async function main() { FILE: scripts/install-apply.js function getHelpText (line 21) | function getHelpText() { function showHelp (line 68) | function showHelp(exitCode = 0) { function printHumanPlan (line 73) | function printHumanPlan(plan, dryRun) { function main (line 117) | function main() { FILE: scripts/install-plan.js function showHelp (line 18) | function showHelp() { function parseArgs (line 49) | function parseArgs(argv) { function printProfiles (line 122) | function printProfiles(profiles) { function printModules (line 130) | function printModules(modules) { function printComponents (line 141) | function printComponents(components) { function printPlan (line 150) | function printPlan(plan) { function main (line 198) | function main() { FILE: scripts/lib/agent-compress.js function parseFrontmatter (line 10) | function parseFrontmatter(content) { function extractSummary (line 48) | function extractSummary(body, maxSentences = 1) { function loadAgent (line 103) | function loadAgent(filePath) { function loadAgents (line 122) | function loadAgents(agentsDir) { function compressToCatalog (line 134) | function compressToCatalog(agent) { function compressToSummary (line 146) | function compressToSummary(agent) { function buildAgentCatalog (line 165) | function buildAgentCatalog(agentsDir, options = {}) { function lazyLoadAgent (line 217) | function lazyLoadAgent(agentsDir, agentName) { FILE: scripts/lib/cost-estimate.js constant RATE_TABLE (line 9) | const RATE_TABLE = { function estimateCost (line 22) | function estimateCost(model, inputTokens, outputTokens) { FILE: scripts/lib/cursor-agent-names.js function toCursorAgentFileName (line 5) | function toCursorAgentFileName(fileName) { function toCursorAgentRelativePath (line 13) | function toCursorAgentRelativePath(relativePath) { FILE: scripts/lib/ecc_dashboard_runtime.py function maximize_window (line 14) | def maximize_window(window) -> None: function build_terminal_launch (line 35) | def build_terminal_launch( function launch_terminal (line 64) | def launch_terminal(path: str) -> None: FILE: scripts/lib/github-discussions.js constant DEFAULT_DISCUSSION_FIRST (line 5) | const DEFAULT_DISCUSSION_FIRST = 100; constant MAINTAINER_ASSOCIATIONS (line 6) | const MAINTAINER_ASSOCIATIONS = new Set(['OWNER', 'MEMBER', 'COLLABORATO... constant DISCUSSION_ENABLED_QUERY (line 7) | const DISCUSSION_ENABLED_QUERY = 'query($owner: String!, $name: String!)... constant DISCUSSION_QUERY (line 8) | const DISCUSSION_QUERY = 'query($owner: String!, $name: String!, $first:... function splitRepo (line 10) | function splitRepo(repo) { function runCommand (line 18) | function runCommand(command, args, options = {}) { function runGhJson (line 37) | function runGhJson(args, options = {}) { function discussionNeedsMaintainerTouch (line 55) | function discussionNeedsMaintainerTouch(discussion) { function discussionNeedsAcceptedAnswer (line 73) | function discussionNeedsAcceptedAnswer(discussion) { function summarizeDiscussion (line 82) | function summarizeDiscussion(discussion) { function fetchDiscussionSummary (line 92) | function fetchDiscussionSummary(repo, options = {}) { function emptyDiscussionSummary (line 138) | function emptyDiscussionSummary() { FILE: scripts/lib/harness-adapter-compliance.js constant MATRIX_BLOCK_START (line 6) | const MATRIX_BLOCK_START = ''; constant COMPLIANCE_STATES (line 9) | const COMPLIANCE_STATES = Object.freeze({ constant REQUIRED_FIELDS (line 16) | const REQUIRED_FIELDS = Object.freeze([ function freezeRecord (line 30) | function freezeRecord(record) { constant ADAPTER_RECORDS (line 42) | const ADAPTER_RECORDS = Object.freeze([ function toTextList (line 310) | function toTextList(value) { function escapeMarkdownCell (line 314) | function escapeMarkdownCell(value) { function renderMarkdownTable (line 318) | function renderMarkdownTable(records = ADAPTER_RECORDS) { function renderStateTable (line 339) | function renderStateTable() { function validateAdapterRecords (line 352) | function validateAdapterRecords(records = ADAPTER_RECORDS) { function extractMatrixBlock (line 413) | function extractMatrixBlock(markdown) { function validateDocumentation (line 425) | function validateDocumentation(options = {}) { 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/inspection.js constant DEFAULT_FAILURE_THRESHOLD (line 3) | const DEFAULT_FAILURE_THRESHOLD = 3; constant DEFAULT_WINDOW_SIZE (line 4) | const DEFAULT_WINDOW_SIZE = 50; constant FAILURE_OUTCOMES (line 6) | const FAILURE_OUTCOMES = new Set(['failure', 'failed', 'error']); function normalizeFailureReason (line 12) | function normalizeFailureReason(reason) { function groupFailures (line 37) | function groupFailures(skillRuns) { function detectPatterns (line 71) | function detectPatterns(skillRuns, options = {}) { function generateReport (line 121) | function generateReport(patterns, options = {}) { function suggestAction (line 161) | function suggestAction(pattern) { function inspect (line 192) | function inspect(store, options = {}) { FILE: scripts/lib/install-executor.js constant LANGUAGE_NAME_PATTERN (line 16) | const LANGUAGE_NAME_PATTERN = /^[a-zA-Z0-9_-]+$/; constant CLAUDE_ECC_NAMESPACE (line 17) | const CLAUDE_ECC_NAMESPACE = 'ecc'; constant EXCLUDED_GENERATED_SOURCE_SUFFIXES (line 18) | const EXCLUDED_GENERATED_SOURCE_SUFFIXES = [ function getSourceRoot (line 23) | function getSourceRoot() { function getPackageVersion (line 27) | function getPackageVersion(sourceRoot) { function getManifestVersion (line 38) | function getManifestVersion(sourceRoot) { function getRepoCommit (line 49) | function getRepoCommit(sourceRoot) { function readDirectoryNames (line 62) | function readDirectoryNames(dirPath) { function listAvailableLanguages (line 73) | function listAvailableLanguages(sourceRoot = getSourceRoot()) { function validateLegacyTarget (line 81) | function validateLegacyTarget(target) { constant IGNORED_DIRECTORY_NAMES (line 89) | const IGNORED_DIRECTORY_NAMES = new Set([ function listFilesRecursive (line 94) | function listFilesRecursive(dirPath) { function isGeneratedRuntimeSourcePath (line 120) | function isGeneratedRuntimeSourcePath(sourceRelativePath) { function createStatePreview (line 125) | function createStatePreview(options) { function applyInstallPlan (line 130) | function applyInstallPlan(plan) { function buildCopyFileOperation (line 135) | function buildCopyFileOperation({ moduleId, sourcePath, sourceRelativePa... function addRecursiveCopyOperations (line 148) | function addRecursiveCopyOperations(operations, options) { function addFileCopyOperation (line 178) | function addFileCopyOperation(operations, options) { function readJsonObject (line 195) | function readJsonObject(filePath, label) { function addJsonMergeOperation (line 210) | function addJsonMergeOperation(operations, options) { function addMatchingRuleOperations (line 230) | function addMatchingRuleOperations(operations, options) { function isDirectoryNonEmpty (line 261) | function isDirectoryNonEmpty(dirPath) { function planClaudeLegacyInstall (line 265) | function planClaudeLegacyInstall(context) { function planCursorLegacyInstall (line 321) | function planCursorLegacyInstall(context) { function planAntigravityLegacyInstall (line 409) | function planAntigravityLegacyInstall(context) { function createLegacyInstallPlan (line 487) | function createLegacyInstallPlan(options = {}) { function createLegacyCompatInstallPlan (line 554) | function createLegacyCompatInstallPlan(options = {}) { function materializeScaffoldOperation (line 592) | function materializeScaffoldOperation(sourceRoot, operation) { function createManifestInstallPlan (line 645) | function createManifestInstallPlan(options = {}) { FILE: scripts/lib/install-lifecycle.js constant DEFAULT_REPO_ROOT (line 15) | const DEFAULT_REPO_ROOT = path.join(__dirname, '../..'); function readPackageVersion (line 17) | function readPackageVersion(repoRoot) { function normalizeTargets (line 26) | function normalizeTargets(targets) { function compareStringArrays (line 42) | function compareStringArrays(left, right) { function getManagedOperations (line 53) | function getManagedOperations(state) { function resolveOperationSourcePath (line 59) | function resolveOperationSourcePath(repoRoot, operation) { function areFilesEqual (line 67) | function areFilesEqual(leftPath, rightPath) { function readFileUtf8 (line 81) | function readFileUtf8(filePath) { function isPlainObject (line 85) | function isPlainObject(value) { function cloneJsonValue (line 89) | function cloneJsonValue(value) { function parseJsonLikeValue (line 97) | function parseJsonLikeValue(value, label) { function getOperationTextContent (line 117) | function getOperationTextContent(operation) { function getOperationJsonPayload (line 135) | function getOperationJsonPayload(operation) { function getOperationPreviousContent (line 153) | function getOperationPreviousContent(operation) { function getOperationPreviousJson (line 169) | function getOperationPreviousJson(operation) { function formatJson (line 185) | function formatJson(value) { function readJsonFile (line 189) | function readJsonFile(filePath) { function ensureParentDir (line 193) | function ensureParentDir(filePath) { function deepMergeJson (line 197) | function deepMergeJson(baseValue, patchValue) { function jsonContainsSubset (line 213) | function jsonContainsSubset(actualValue, expectedValue) { constant JSON_REMOVE_SENTINEL (line 236) | const JSON_REMOVE_SENTINEL = Symbol('json-remove'); function deepRemoveJsonSubset (line 238) | function deepRemoveJsonSubset(currentValue, managedValue) { function hydrateRecordedOperations (line 282) | function hydrateRecordedOperations(repoRoot, operations) { function buildRecordedStatePreview (line 295) | function buildRecordedStatePreview(state, context, operations) { function shouldRepairFromRecordedOperations (line 308) | function shouldRepairFromRecordedOperations(state) { function executeRepairOperation (line 312) | function executeRepairOperation(repoRoot, operation) { function executeUninstallOperation (line 363) | function executeUninstallOperation(operation) { function inspectManagedOperation (line 495) | function inspectManagedOperation(repoRoot, operation) { function summarizeManagedOperationHealth (line 622) | function summarizeManagedOperationHealth(repoRoot, operations) { function buildDiscoveryRecord (line 643) | function buildDiscoveryRecord(adapter, context) { function discoverInstalledStates (line 698) | function discoverInstalledStates(options = {}) { function buildIssue (line 711) | function buildIssue(severity, code, message, extra = {}) { function determineStatus (line 720) | function determineStatus(issues) { function analyzeRecord (line 732) | function analyzeRecord(record, context) { function buildDoctorReport (line 898) | function buildDoctorReport(options = {}) { function createRepairPlanFromRecord (line 940) | function createRepairPlanFromRecord(record, context) { function repairInstalledStates (line 987) | function repairInstalledStates(options = {}) { function cleanupEmptyParentDirs (line 1098) | function cleanupEmptyParentDirs(filePath, stopAt) { function uninstallInstalledStates (line 1122) | 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', 'claude-project', 'cursor',... constant COMPONENT_FAMILY_PREFIXES (line 8) | const COMPONENT_FAMILY_PREFIXES = { constant SUPPORTED_LOCALES (line 17) | const SUPPORTED_LOCALES = Object.freeze(['ja', 'zh-CN', 'ko-KR', 'pt-BR'... constant LOCALE_ALIAS_TO_COMPONENT_ID (line 18) | const LOCALE_ALIAS_TO_COMPONENT_ID = Object.freeze({ function listSupportedLocales (line 34) | function listSupportedLocales() { constant LEGACY_COMPAT_BASE_MODULE_IDS_BY_TARGET (line 37) | const LEGACY_COMPAT_BASE_MODULE_IDS_BY_TARGET = Object.freeze({ constant LEGACY_LANGUAGE_ALIAS_TO_CANONICAL (line 75) | const LEGACY_LANGUAGE_ALIAS_TO_CANONICAL = Object.freeze({ constant LEGACY_LANGUAGE_EXTRA_MODULE_IDS (line 96) | const LEGACY_LANGUAGE_EXTRA_MODULE_IDS = Object.freeze({ function readJson (line 113) | function readJson(filePath, label) { function dedupeStrings (line 121) | function dedupeStrings(values) { function listSkillDirectoryIds (line 125) | function listSkillDirectoryIds(repoRoot) { function addSyntheticSkillComponents (line 137) | function addSyntheticSkillComponents({ repoRoot, modules, components }) { function readOptionalStringOption (line 175) | function readOptionalStringOption(options, key) { function readModuleTargetsOrThrow (line 191) | function readModuleTargetsOrThrow(module) { function assertKnownModuleIds (line 217) | function assertKnownModuleIds(moduleIds, manifests) { function intersectTargets (line 230) | function intersectTargets(modules) { function getManifestPaths (line 240) | function getManifestPaths(repoRoot = DEFAULT_REPO_ROOT) { function loadInstallManifests (line 248) | function loadInstallManifests(options = {}) { function listInstallProfiles (line 292) | function listInstallProfiles(options = {}) { function listInstallModules (line 301) | function listInstallModules(options = {}) { function listLegacyCompatibilityLanguages (line 315) | function listLegacyCompatibilityLanguages() { function validateInstallModuleIds (line 319) | function validateInstallModuleIds(moduleIds, options = {}) { function listInstallComponents (line 326) | function listInstallComponents(options = {}) { function getInstallComponent (line 364) | function getInstallComponent(componentId, options = {}) { function expandComponentIdsToModuleIds (line 403) | function expandComponentIdsToModuleIds(componentIds, manifests) { function resolveLegacyCompatibilitySelection (line 417) | function resolveLegacyCompatibilitySelection(options = {}) { function resolveInstallPlan (line 470) | 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 constant SUPPORTED_SOURCE_PREFIXES (line 10) | const SUPPORTED_SOURCE_PREFIXES = ['rules', 'commands', 'agents', 'skill... function supportsAntigravitySourcePath (line 12) | function supportsAntigravitySourcePath(sourceRelativePath) { method supportsModule (line 25) | supportsModule(module) { method planOperations (line 29) | planOperations(input, adapter) { FILE: scripts/lib/install-targets/claude-home.js constant CLAUDE_ECC_NAMESPACE (line 10) | const CLAUDE_ECC_NAMESPACE = 'ecc'; function getClaudeManagedDestinationPath (line 12) | function getClaudeManagedDestinationPath(adapter, sourceRelativePath, in... method planOperations (line 56) | planOperations(input, adapter) { FILE: scripts/lib/install-targets/claude-project.js constant CLAUDE_ECC_NAMESPACE (line 10) | const CLAUDE_ECC_NAMESPACE = 'ecc'; function getClaudeManagedDestinationPath (line 12) | function getClaudeManagedDestinationPath(adapter, sourceRelativePath, in... method planOperations (line 56) | planOperations(input, adapter) { FILE: scripts/lib/install-targets/codebuddy-project.js method planOperations (line 16) | planOperations(input, adapter) { FILE: scripts/lib/install-targets/cursor-project.js function toCursorRuleFileName (line 13) | function toCursorRuleFileName(fileName, sourceRelativeFile) { function readJsonObject (line 23) | function readJsonObject(filePath, label) { function createJsonMergeOperation (line 38) | function createJsonMergeOperation({ moduleId, repoRoot, sourceRelativePa... method planOperations (line 63) | planOperations(input, adapter) { FILE: scripts/lib/install-targets/helpers.js constant PLATFORM_SOURCE_PATH_OWNERS (line 5) | const PLATFORM_SOURCE_PATH_OWNERS = Object.freeze({ function normalizeRelativePath (line 17) | function normalizeRelativePath(relativePath) { function isForeignPlatformPath (line 24) | function isForeignPlatformPath(sourceRelativePath, adapterTarget) { function resolveBaseRoot (line 36) | function resolveBaseRoot(scope, input = {}) { function buildValidationIssue (line 52) | function buildValidationIssue(severity, code, message, extra = {}) { function listRelativeFiles (line 61) | function listRelativeFiles(dirPath, prefix = '') { function createManagedOperation (line 85) | function createManagedOperation({ function defaultValidateAdapterInput (line 107) | function defaultValidateAdapterInput(config, input = {}) { function createRemappedOperation (line 131) | function createRemappedOperation(adapter, moduleId, sourceRelativePath, ... function createNamespacedFlatRuleOperations (line 144) | function createNamespacedFlatRuleOperations(adapter, moduleId, sourceRel... function createFlatFileOperations (line 187) | function createFlatFileOperations({ function createFlatRuleOperations (line 248) | function createFlatRuleOperations(options) { function createInstallTargetAdapter (line 252) | function createInstallTargetAdapter(config) { FILE: scripts/lib/install-targets/joycode-project.js method planOperations (line 16) | planOperations(input, adapter) { FILE: scripts/lib/install-targets/registry.js constant ADAPTERS (line 13) | const ADAPTERS = Object.freeze([ function listInstallTargetAdapters (line 27) | function listInstallTargetAdapters() { function getInstallTargetAdapter (line 31) | function getInstallTargetAdapter(targetOrAdapterId) { function planInstallTargetScaffold (line 41) | function planInstallTargetScaffold(options = {}) { FILE: scripts/lib/install-targets/zed-project.js method planOperations (line 16) | planOperations(input, adapter) { FILE: scripts/lib/install/apply.js function readJsonObject (line 9) | function readJsonObject(filePath, label) { function cloneJsonValue (line 24) | function cloneJsonValue(value) { function isPlainObject (line 32) | function isPlainObject(value) { function deepMergeJson (line 36) | function deepMergeJson(baseValue, patchValue) { function formatJson (line 52) | function formatJson(value) { function replacePluginRootPlaceholders (line 56) | function replacePluginRootPlaceholders(value, pluginRoot) { function findHooksSourcePath (line 81) | function findHooksSourcePath(plan, hooksDestinationPath) { function isMcpConfigPath (line 86) | function isMcpConfigPath(filePath) { function buildResolvedClaudeHooks (line 91) | function buildResolvedClaudeHooks(plan) { function applyInstallPlan (line 118) | 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 findDefaultInstallConfigPath (line 50) | function findDefaultInstallConfigPath(options = {}) { function loadInstallConfig (line 56) | 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 normalizeSkillComponentIds (line 11) | function normalizeSkillComponentIds(rawValue) { function parseInstallArgs (line 17) | function parseInstallArgs(argv) { function normalizeInstallRequest (line 87) | function normalizeInstallRequest(options = {}) { FILE: scripts/lib/install/runtime.js function createInstallPlanFromRequest (line 9) | function createInstallPlanFromRequest(request, options = {}) { FILE: scripts/lib/mcp-config.js function parseDisabledMcpServers (line 3) | function parseDisabledMcpServers(value) { function filterMcpConfig (line 12) | function filterMcpConfig(config, disabledServerNames = []) { FILE: scripts/lib/observer-sessions.js function getHomunculusDir (line 8) | function getHomunculusDir() { function getProjectsDir (line 28) | function getProjectsDir() { function getProjectRegistryPath (line 32) | function getProjectRegistryPath() { function readProjectRegistry (line 36) | function readProjectRegistry() { function runGit (line 44) | function runGit(args, cwd) { function stripRemoteCredentials (line 54) | function stripRemoteCredentials(remoteUrl) { function normalizeRemoteUrl (line 59) | function normalizeRemoteUrl(remoteUrl) { function resolveProjectRoot (line 76) | function resolveProjectRoot(cwd = process.cwd()) { function computeProjectId (line 88) | function computeProjectId(projectRoot) { function resolveProjectContext (line 94) | function resolveProjectContext(cwd = process.cwd()) { function getObserverPidFile (line 111) | function getObserverPidFile(context) { function getObserverSignalCounterFile (line 115) | function getObserverSignalCounterFile(context) { function getObserverActivityFile (line 119) | function getObserverActivityFile(context) { function getSessionLeaseDir (line 123) | function getSessionLeaseDir(context) { function resolveSessionId (line 127) | function resolveSessionId(rawSessionId = process.env.CLAUDE_SESSION_ID) { function getSessionLeaseFile (line 131) | function getSessionLeaseFile(context, rawSessionId = process.env.CLAUDE_... function writeSessionLease (line 137) | function writeSessionLease(context, rawSessionId = process.env.CLAUDE_SE... function removeSessionLease (line 153) | function removeSessionLease(context, rawSessionId = process.env.CLAUDE_S... function listSessionLeases (line 164) | function listSessionLeases(context) { function stopObserverForContext (line 172) | function stopObserverForContext(context) { 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 94) | const FRAMEWORK_RULES = [ function fileExists (line 141) | function fileExists(projectDir, filePath) { function hasFileWithExtension (line 155) | function hasFileWithExtension(projectDir, extensions) { function getPackageJsonDeps (line 173) | function getPackageJsonDeps(projectDir) { function getPythonDeps (line 189) | function getPythonDeps(projectDir) { function getGoDeps (line 242) | function getGoDeps(projectDir) { function getRustDeps (line 269) | function getRustDeps(projectDir) { function getComposerDeps (line 298) | function getComposerDeps(projectDir) { function getElixirDeps (line 314) | function getElixirDeps(projectDir) { function detectProjectType (line 335) | function detectProjectType(projectDir) { FILE: scripts/lib/resolve-ecc-root.js constant CURRENT_PLUGIN_SLUG (line 7) | const CURRENT_PLUGIN_SLUG = 'ecc'; constant LEGACY_PLUGIN_SLUG (line 8) | const LEGACY_PLUGIN_SLUG = 'everything-claude-code'; constant CURRENT_PLUGIN_HANDLE (line 9) | const CURRENT_PLUGIN_HANDLE = `${CURRENT_PLUGIN_SLUG}@${CURRENT_PLUGIN_S... constant LEGACY_PLUGIN_HANDLE (line 10) | const LEGACY_PLUGIN_HANDLE = `${LEGACY_PLUGIN_SLUG}@${LEGACY_PLUGIN_SLUG}`; constant PLUGIN_CACHE_SLUGS (line 11) | const PLUGIN_CACHE_SLUGS = [CURRENT_PLUGIN_SLUG, LEGACY_PLUGIN_SLUG]; constant PLUGIN_ROOT_SEGMENTS (line 12) | const PLUGIN_ROOT_SEGMENTS = [ function resolveEccRoot (line 38) | function resolveEccRoot(options = {}) { function inlineSingleQuote (line 113) | function inlineSingleQuote(value) { function inlineArray (line 117) | function inlineArray(values) { function inlineNestedArray (line 121) | function inlineNestedArray(values) { constant INLINE_PLUGIN_ROOT_SEGMENTS (line 125) | const INLINE_PLUGIN_ROOT_SEGMENTS = inlineNestedArray(PLUGIN_ROOT_SEGMEN... constant INLINE_PLUGIN_CACHE_SLUGS (line 126) | const INLINE_PLUGIN_CACHE_SLUGS = inlineArray(PLUGIN_CACHE_SLUGS); constant INLINE_RESOLVE (line 128) | const INLINE_RESOLVE = `(()=>{var e=process.env.CLAUDE_PLUGIN_ROOT;if(e&... 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) { constant STALE_THRESHOLD_MS (line 63) | const STALE_THRESHOLD_MS = 5 * 60 * 1000; function parseUpdatedMs (line 65) | function parseUpdatedMs(updated) { function deriveWorkerHealth (line 71) | function deriveWorkerHealth(rawWorker) { function buildAggregates (line 92) | function buildAggregates(workers) { function summarizeRawWorkerStates (line 112) | function summarizeRawWorkerStates(snapshot) { function deriveDmuxSessionState (line 126) | function deriveDmuxSessionState(snapshot) { function validateCanonicalSnapshot (line 156) | function validateCanonicalSnapshot(snapshot) { function resolveRecordingDir (line 259) | function resolveRecordingDir(options = {}) { function getFallbackSessionRecordingPath (line 271) | function getFallbackSessionRecordingPath(snapshot, options = {}) { function readExistingRecording (line 281) | function readExistingRecording(filePath) { function writeFallbackSessionRecording (line 293) | function writeFallbackSessionRecording(snapshot, options = {}) { function loadStateStore (line 326) | function loadStateStore(options = {}) { function resolveStateStoreWriter (line 349) | function resolveStateStoreWriter(stateStore) { function persistCanonicalSnapshot (line 382) | function persistCanonicalSnapshot(snapshot, options = {}) { function normalizeDmuxSnapshot (line 420) | function normalizeDmuxSnapshot(snapshot, sourceTarget) { function deriveClaudeWorkerId (line 466) | function deriveClaudeWorkerId(session) { function normalizeClaudeHistorySession (line 474) | 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-bridge.js constant MAX_SESSION_ID_LENGTH (line 16) | const MAX_SESSION_ID_LENGTH = 64; function sanitizeSessionId (line 24) | function sanitizeSessionId(raw) { function getBridgePath (line 36) | function getBridgePath(sessionId) { function readBridge (line 45) | function readBridge(sessionId) { function writeBridgeAtomic (line 74) | function writeBridgeAtomic(sessionId, data) { function renameWithRetry (line 107) | function renameWithRetry(tmp, target) { function resolveSessionId (line 135) | function resolveSessionId() { FILE: scripts/lib/session-manager.d.ts type SessionFilenameMeta (line 8) | interface SessionFilenameMeta { type SessionMetadata (line 20) | interface SessionMetadata { type SessionStats (line 32) | interface SessionStats { type Session (line 42) | interface Session extends SessionFilenameMeta { type SessionListResult (line 62) | interface SessionListResult { type GetAllSessionsOptions (line 70) | interface GetAllSessionsOptions { FILE: scripts/lib/session-manager.js constant SESSION_FILENAME_REGEX (line 27) | const SESSION_FILENAME_REGEX = /^(\d{4}-\d{2}-\d{2})(?:-([a-zA-Z0-9_][a-... function parseSessionFilename (line 34) | function parseSessionFilename(filename) { function getSessionPath (line 68) | function getSessionPath(filename) { function getSessionCandidates (line 72) | function getSessionCandidates(options = {}) { function buildSessionRecord (line 139) | function buildSessionRecord(sessionPath, metadata) { function sessionMatchesId (line 158) | function sessionMatchesId(metadata, normalizedSessionId) { function getMatchingSessionCandidates (line 167) | function getMatchingSessionCandidates(normalizedSessionId) { function getSessionContent (line 216) | function getSessionContent(sessionPath) { function parseSessionMetadata (line 225) | function parseSessionMetadata(content) { function getSessionStats (line 322) | function getSessionStats(sessionPathOrContent) { function getAllSessions (line 356) | function getAllSessions(options = {}) { function getSessionById (line 397) | function getSessionById(sessionId, includeContent = false) { function getSessionTitle (line 430) | function getSessionTitle(sessionPath) { function getSessionSize (line 442) | function getSessionSize(sessionPath) { function writeSessionContent (line 462) | function writeSessionContent(sessionPath, content) { function appendSessionContent (line 478) | function appendSessionContent(sessionPath, content) { function deleteSession (line 493) | function deleteSession(sessionPath) { function sessionExists (line 511) | function sessionExists(sessionPath) { FILE: scripts/lib/shell-split.js function splitShellSegments (line 8) | function splitShellSegments(command) { FILE: scripts/lib/shell-substitution.js function extractCommandSubstitutions (line 19) | function extractCommandSubstitutions(input) { function extractSubshellGroups (line 135) | function extractSubshellGroups(input) { function extractBraceGroups (line 267) | function extractBraceGroups(input) { 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 WORK_ITEMS_SQL (line 110) | const WORK_ITEMS_SQL = ` constant MIGRATIONS (line 136) | const MIGRATIONS = [ function ensureMigrationTable (line 149) | function ensureMigrationTable(db) { function getAppliedMigrations (line 159) | function getAppliedMigrations(db) { function applyMigrations (line 175) | 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']); constant CLOSED_WORK_ITEM_STATUSES (line 8) | const CLOSED_WORK_ITEM_STATUSES = new Set(['done', 'closed', 'resolved',... constant ATTENTION_WORK_ITEM_STATUSES (line 9) | const ATTENTION_WORK_ITEM_STATUSES = new Set(['blocked', 'needs-review',... function normalizeLimit (line 11) | function normalizeLimit(value, fallback) { function parseJsonColumn (line 24) | function parseJsonColumn(value, fallback) { function stringifyJson (line 32) | function stringifyJson(value, label) { function mapSessionRow (line 40) | function mapSessionRow(row) { function mapSkillRunRow (line 55) | function mapSkillRunRow(row) { function mapSkillVersionRow (line 71) | function mapSkillVersionRow(row) { function mapDecisionRow (line 82) | function mapDecisionRow(row) { function mapInstallStateRow (line 95) | function mapInstallStateRow(row) { function mapGovernanceEventRow (line 114) | function mapGovernanceEventRow(row) { function mapWorkItemRow (line 126) | function mapWorkItemRow(row) { function classifyOutcome (line 144) | function classifyOutcome(outcome) { function classifyWorkItemStatus (line 157) | function classifyWorkItemStatus(status) { function toPercent (line 170) | function toPercent(numerator, denominator) { function summarizeSkillRuns (line 178) | function summarizeSkillRuns(skillRuns) { function summarizeInstallHealth (line 207) | function summarizeInstallHealth(installations) { function summarizeWorkItems (line 238) | function summarizeWorkItems(workItems) { function summarizeReadiness (line 262) | function summarizeReadiness({ activeSessionCount, skillRuns, installHeal... function normalizeSessionInput (line 280) | function normalizeSessionInput(session) { function normalizeSkillRunInput (line 293) | function normalizeSkillRunInput(skillRun) { function normalizeSkillVersionInput (line 309) | function normalizeSkillVersionInput(skillVersion) { function normalizeDecisionInput (line 320) | function normalizeDecisionInput(decision) { function normalizeInstallStateInput (line 335) | function normalizeInstallStateInput(installState) { function normalizeGovernanceEventInput (line 351) | function normalizeGovernanceEventInput(governanceEvent) { function normalizeWorkItemInput (line 363) | function normalizeWorkItemInput(workItem) { function createQueryApi (line 382) | 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 23) | function readSchema() { function getAjv (line 32) | function getAjv() { function getEntityValidator (line 44) | function getEntityValidator(entityName) { function formatValidationErrors (line 66) | function formatValidationErrors(errors = []) { function validateEntity (line 72) | function validateEntity(entityName, payload) { function assertValidEntity (line 81) | 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 77) | interface FileMatch { type FindFilesOptions (line 84) | interface FindFilesOptions { type ReplaceInFileOptions (line 109) | interface ReplaceInFileOptions { type GrepMatch (line 129) | interface GrepMatch { type ReadStdinJsonOptions (line 141) | interface ReadStdinJsonOptions { type CommandResult (line 176) | interface CommandResult { FILE: scripts/lib/utils.js constant SESSION_DATA_DIR_NAME (line 16) | const SESSION_DATA_DIR_NAME = 'session-data'; constant LEGACY_SESSIONS_DIR_NAME (line 17) | const LEGACY_SESSIONS_DIR_NAME = 'sessions'; constant WINDOWS_RESERVED_SESSION_IDS (line 18) | const WINDOWS_RESERVED_SESSION_IDS = new Set([ function getHomeDir (line 27) | function getHomeDir() { function getClaudeDir (line 38) | function getClaudeDir() { function getSessionsDir (line 45) | function getSessionsDir() { function getLegacySessionsDir (line 52) | function getLegacySessionsDir() { function getSessionSearchDirs (line 59) | function getSessionSearchDirs() { function getLearnedSkillsDir (line 66) | function getLearnedSkillsDir() { function getTempDir (line 73) | function getTempDir() { function ensureDir (line 83) | function ensureDir(dirPath) { function getDateString (line 100) | function getDateString() { function getTimeString (line 111) | function getTimeString() { function getGitRepoName (line 121) | function getGitRepoName() { function getProjectName (line 130) | function getProjectName() { function sanitizeSessionId (line 146) | function sanitizeSessionId(raw) { function getSessionIdShort (line 175) | function getSessionIdShort(fallback = 'default') { function getDateTimeString (line 187) | function getDateTimeString() { function findFiles (line 204) | function findFiles(dir, pattern, options = {}) { function readStdinJson (line 270) | async function readStdinJson(options = {}) { function log (line 327) | function log(message) { function output (line 334) | function output(data) { function readFile (line 345) | function readFile(filePath) { function writeFile (line 356) | function writeFile(filePath, content) { function appendFile (line 364) | function appendFile(filePath, content) { function commandExists (line 373) | function commandExists(cmd) { function runCommand (line 403) | function runCommand(cmd, options = {}) { function isGitRepo (line 433) | function isGitRepo() { function getGitModifiedFiles (line 443) | function getGitModifiedFiles(patterns = []) { function replaceInFile (line 481) | function replaceInFile(filePath, search, replace, options = {}) { function countInFile (line 508) | function countInFile(filePath, pattern) { function stripAnsi (line 541) | function stripAnsi(str) { function grepFile (line 550) | function grepFile(filePath, pattern) { FILE: scripts/list-installed.js function showHelp (line 7) | function showHelp(exitCode = 0) { function parseArgs (line 16) | function parseArgs(argv) { function printHuman (line 42) | function printHuman(records) { function main (line 66) | function main() { FILE: scripts/loop-status.js constant DEFAULT_BASH_TIMEOUT_SECONDS (line 9) | const DEFAULT_BASH_TIMEOUT_SECONDS = 30 * 60; constant DEFAULT_LIMIT (line 10) | const DEFAULT_LIMIT = 10; constant DEFAULT_WAKE_GRACE_MULTIPLIER (line 11) | const DEFAULT_WAKE_GRACE_MULTIPLIER = 2; constant DEFAULT_WATCH_INTERVAL_SECONDS (line 12) | const DEFAULT_WATCH_INTERVAL_SECONDS = 5; function usage (line 14) | function usage() { function readValue (line 40) | function readValue(args, index, flagName) { function readPositiveNumber (line 48) | function readPositiveNumber(value, flagName) { function readPositiveInteger (line 56) | function readPositiveInteger(value, flagName) { function parseArgs (line 64) | function parseArgs(argv) { function normalizeOptions (line 132) | function normalizeOptions(options = {}) { function getHomeDir (line 147) | function getHomeDir(options = {}) { function getNow (line 154) | function getNow(options = {}) { function walkJsonlFiles (line 172) | function walkJsonlFiles(dir, result = { errors: [], files: [] }) { function findTranscriptPaths (line 200) | function findTranscriptPaths(options = {}) { function parseTimestamp (line 240) | function parseTimestamp(value) { function getEntryTimestamp (line 252) | function getEntryTimestamp(entry) { function getSessionId (line 259) | function getSessionId(entry, transcriptPath) { function getContentBlocks (line 267) | function getContentBlocks(entry) { function extractToolUses (line 278) | function extractToolUses(entry) { function extractToolResultIds (line 311) | function extractToolResultIds(entry) { function isAssistantProgressEntry (line 341) | function isAssistantProgressEntry(entry) { function readJsonlEntries (line 347) | function readJsonlEntries(transcriptPath) { function readDelaySeconds (line 367) | function readDelaySeconds(input) { function toIso (line 381) | function toIso(date) { function buildRecommendation (line 385) | function buildRecommendation(signals) { function analyzeTranscript (line 401) | function analyzeTranscript(transcriptPath, options = {}) { function buildStatus (line 529) | function buildStatus(options = {}) { function formatSignals (line 575) | function formatSignals(signals) { function formatText (line 582) | function formatText(payload) { function hashString (line 613) | function hashString(value) { function isWindowsReservedBasename (line 617) | function isWindowsReservedBasename(value) { function sanitizeSnapshotName (line 622) | function sanitizeSnapshotName(value, fallback = 'session') { function atomicWriteJson (line 641) | function atomicWriteJson(filePath, payload) { function getSnapshotPath (line 659) | function getSnapshotPath(outputDir, session, usedNames) { function writeStatusSnapshots (line 677) | function writeStatusSnapshots(payload, writeDir) { function tryWriteStatusSnapshots (line 720) | function tryWriteStatusSnapshots(payload, options) { function sleep (line 733) | function sleep(ms) { function writeStatus (line 737) | function writeStatus(payload, options) { function getStatusExitCode (line 745) | function getStatusExitCode(payload) { function runWatch (line 755) | async function runWatch(options) { function main (line 780) | async function main() { FILE: scripts/observability-readiness.js constant RUBRIC_VERSION (line 7) | const RUBRIC_VERSION = '2026-05-11'; function usage (line 9) | function usage() { function readValue (line 22) | function readValue(args, index, flagName) { function parseArgs (line 30) | function parseArgs(argv) { function fileExists (line 78) | function fileExists(rootDir, relativePath) { function readText (line 82) | function readText(rootDir, relativePath) { function safeParseJson (line 90) | function safeParseJson(text) { function includesAll (line 102) | function includesAll(text, needles) { function hasObjectKeys (line 106) | function hasObjectKeys(value, keys) { function buildChecks (line 113) | function buildChecks(rootDir) { function buildReport (line 354) | function buildReport(rootDir) { function renderText (line 404) | function renderText(report) { function main (line 431) | function main() { FILE: scripts/operator-readiness-dashboard.js constant SCHEMA_VERSION (line 9) | const SCHEMA_VERSION = 'ecc.operator-readiness-dashboard.v1'; constant DEFAULT_THRESHOLDS (line 10) | const DEFAULT_THRESHOLDS = Object.freeze({ function usage (line 16) | function usage() { function readValue (line 42) | function readValue(args, index, flagName) { function parseIntegerFlag (line 50) | function parseIntegerFlag(value, flagName) { function normalizeRelativePrefix (line 58) | function normalizeRelativePrefix(value) { function parseArgs (line 66) | function parseArgs(argv) { function readText (line 230) | function readText(rootDir, relativePath) { function fileExists (line 238) | function fileExists(rootDir, relativePath) { function includesAll (line 242) | function includesAll(text, needles) { constant LOCALIZATION_MANUAL_REVIEW_TAIL (line 246) | const LOCALIZATION_MANUAL_REVIEW_TAIL = [ function hasLegacySalvageTracking (line 254) | function hasLegacySalvageTracking({ stalePrSalvage, legacyInventory, roa... function hasAttachedLegacyManualReviewTail (line 262) | function hasAttachedLegacyManualReviewTail({ stalePrSalvage, legacyInven... function legacySalvageStatus (line 271) | function legacySalvageStatus(context) { function legacySalvageEvidence (line 279) | function legacySalvageEvidence(context) { function legacySalvageGap (line 287) | function legacySalvageGap(context) { function hasAgentShieldEnterpriseTracking (line 295) | function hasAgentShieldEnterpriseTracking(roadmap) { function agentShieldEnterpriseGap (line 313) | function agentShieldEnterpriseGap(roadmap) { function agentShieldEnterpriseEvidence (line 335) | function agentShieldEnterpriseEvidence(roadmap) { function eccToolsNextLevelEvidence (line 344) | function eccToolsNextLevelEvidence(roadmap) { function eccToolsNextLevelGap (line 404) | function eccToolsNextLevelGap(roadmap) { function supplyChainLocalProtectionEvidence (line 469) | function supplyChainLocalProtectionEvidence({ roadmap, scripts }) { function supplyChainLocalProtectionGap (line 480) | function supplyChainLocalProtectionGap({ roadmap, scripts }) { function hasCurrentLinearProgressSync (line 489) | function hasCurrentLinearProgressSync({ roadmap, progressSync }) { function hasLinearProgressContract (line 509) | function hasLinearProgressContract({ roadmap, progressSync }) { function linearProgressStatus (line 514) | function linearProgressStatus(context) { function linearProgressEvidence (line 522) | function linearProgressEvidence(context) { function linearProgressGap (line 539) | function linearProgressGap(context) { function runCommand (line 547) | function runCommand(command, args, options = {}) { function readPackage (line 561) | function readPackage(rootDir) { function buildRequirement (line 574) | function buildRequirement(id, requirement, artifact, status, evidence, g... function extractLabeledCount (line 578) | function extractLabeledCount(text, label) { function isCurrentOrComplete (line 589) | function isCurrentOrComplete(status) { function extractGrowthBaseline (line 593) | function extractGrowthBaseline(hypergrowth) { function buildGrowthSummary (line 611) | function buildGrowthSummary(rootDir) { function buildRequirements (line 627) | function buildRequirements(rootDir, platformReport) { function buildReport (line 974) | function buildReport(options) { function markdownEscape (line 1037) | function markdownEscape(value) { function renderText (line 1043) | function renderText(report) { function renderMarkdown (line 1080) | function renderMarkdown(report) { function renderReport (line 1136) | function renderReport(report, format) { function writeOutput (line 1148) | function writeOutput(writePath, output) { function main (line 1153) | 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/platform-audit.js constant SCHEMA_VERSION (line 12) | const SCHEMA_VERSION = 'ecc.platform-audit.v1'; constant DEFAULT_REPOS (line 13) | const DEFAULT_REPOS = Object.freeze([ constant DEFAULT_THRESHOLDS (line 20) | const DEFAULT_THRESHOLDS = Object.freeze({ function usage (line 25) | function usage() { function readValue (line 50) | function readValue(args, index, flagName) { function parseIntegerFlag (line 58) | function parseIntegerFlag(value, flagName) { function parseArgs (line 66) | function parseArgs(argv) { function normalizeRelativePrefix (line 218) | function normalizeRelativePrefix(value) { function runCommand (line 225) | function runCommand(command, args, options = {}) { function runGhJson (line 244) | function runGhJson(args, options = {}) { function readText (line 262) | function readText(rootDir, relativePath) { function fileExists (line 270) | function fileExists(rootDir, relativePath) { function safeParseJson (line 274) | function safeParseJson(text) { function includesAll (line 286) | function includesAll(text, needles) { function buildCheck (line 290) | function buildCheck(id, status, summary, details = {}) { function parseGitStatus (line 294) | function parseGitStatus(output) { function isAllowedUntracked (line 304) | function isAllowedUntracked(statusLine, allowUntracked) { function inspectGit (line 313) | function inspectGit(rootDir, options) { function fetchGithubRepo (line 340) | function fetchGithubRepo(repo, options) { function buildGithubReport (line 376) | function buildGithubReport(options) { function buildLocalEvidenceChecks (line 423) | function buildLocalEvidenceChecks(rootDir) { function buildReport (line 496) | function buildReport(options) { function renderText (line 581) | function renderText(report) { function markdownEscape (line 617) | function markdownEscape(value) { function markdownStatus (line 623) | function markdownStatus(status) { function renderMarkdown (line 636) | function renderMarkdown(report) { function writeOutput (line 708) | function writeOutput(writePath, output) { function main (line 713) | function main() { FILE: scripts/preview-pack-smoke.js constant RELEASE (line 8) | const RELEASE = '2.0.0-rc.1'; constant RELEASE_DIR (line 9) | const RELEASE_DIR = `docs/releases/${RELEASE}`; constant SCHEMA_VERSION (line 10) | const SCHEMA_VERSION = 'ecc.preview-pack-smoke.v1'; constant REQUIRED_ARTIFACTS (line 12) | const REQUIRED_ARTIFACTS = [ constant REQUIRED_VERIFICATION_COMMANDS (line 48) | const REQUIRED_VERIFICATION_COMMANDS = [ constant REQUIRED_PUBLICATION_BLOCKERS (line 65) | const REQUIRED_PUBLICATION_BLOCKERS = [ constant HERMES_BOUNDARY_MARKERS (line 73) | const HERMES_BOUNDARY_MARKERS = [ function usage (line 81) | function usage() { function readArgValue (line 94) | function readArgValue(args, index, flagName) { function parseArgs (line 102) | function parseArgs(argv) { function readText (line 150) | function readText(rootDir, relativePath) { function fileExists (line 158) | function fileExists(rootDir, relativePath) { function safeParseJson (line 162) | function safeParseJson(text) { function lineNumberForIndex (line 174) | function lineNumberForIndex(text, index) { function findForbiddenContent (line 178) | function findForbiddenContent(rootDir, relativePaths) { function makeCheck (line 200) | function makeCheck(id, status, evidence, fix) { function buildReport (line 209) | function buildReport(options = {}) { function renderText (line 299) | function renderText(report) { function main (line 323) | function main() { FILE: scripts/release-approval-gate.js constant RELEASE (line 8) | const RELEASE = '2.0.0-rc.1'; constant RELEASE_DIR (line 9) | const RELEASE_DIR = `docs/releases/${RELEASE}`; constant SCHEMA_VERSION (line 10) | const SCHEMA_VERSION = 'ecc.release-approval-gate.v1'; constant SCRIPT_PATH (line 11) | const SCRIPT_PATH = 'scripts/release-approval-gate.js'; constant OWNER_PACKET_PATH (line 12) | const OWNER_PACKET_PATH = `${RELEASE_DIR}/owner-approval-packet-2026-05-... constant URL_LEDGER_PATH (line 13) | const URL_LEDGER_PATH = `${RELEASE_DIR}/release-url-ledger-2026-05-19.md`; constant PREVIEW_MANIFEST_PATH (line 14) | const PREVIEW_MANIFEST_PATH = `${RELEASE_DIR}/preview-pack-manifest.md`; constant REQUIRED_COMMAND (line 15) | const REQUIRED_COMMAND = 'npm run release:approval-gate -- --format json'; constant REQUIRED_DECISIONS (line 17) | const REQUIRED_DECISIONS = [ constant REQUIRED_URL_SURFACES (line 52) | const REQUIRED_URL_SURFACES = [ constant ANNOUNCEMENT_FILES (line 90) | const ANNOUNCEMENT_FILES = [ function usage (line 99) | function usage() { function readArgValue (line 113) | function readArgValue(args, index, flagName) { function parseArgs (line 121) | function parseArgs(argv) { function readText (line 174) | function readText(rootDir, relativePath) { function fileExists (line 182) | function fileExists(rootDir, relativePath) { function safeParseJson (line 186) | function safeParseJson(text) { function normalizeLabel (line 198) | function normalizeLabel(value) { function normalizeState (line 206) | function normalizeState(value) { function splitMarkdownRow (line 214) | function splitMarkdownRow(row) { function parseDecisionRegister (line 226) | function parseDecisionRegister(packet) { function isApproved (line 251) | function isApproved(state) { function lineNumberForIndex (line 255) | function lineNumberForIndex(text, index) { function findAnnouncementOffenders (line 259) | function findAnnouncementOffenders(rootDir, relativePaths) { function ledgerBlockers (line 304) | function ledgerBlockers(ledger) { function makeCheck (line 326) | function makeCheck(id, status, evidence, fix) { function topActionsForChecks (line 335) | function topActionsForChecks(checks) { function buildReport (line 366) | function buildReport(options = {}) { function renderText (line 481) | function renderText(report) { function main (line 513) | function main() { FILE: scripts/release-video-suite.js constant RELEASE (line 8) | const RELEASE = '2.0.0-rc.1'; constant SCHEMA_VERSION (line 9) | const SCHEMA_VERSION = 'ecc.release-video-suite.v1'; constant VIDEO_MANIFEST_PATH (line 10) | const VIDEO_MANIFEST_PATH = `docs/releases/${RELEASE}/video-suite-produc... constant HYPERGROWTH_DOC_PATH (line 11) | const HYPERGROWTH_DOC_PATH = 'docs/releases/2.0.0/ecc-2-hypergrowth-rele... constant REQUIRED_DOC_MARKERS (line 13) | const REQUIRED_DOC_MARKERS = [ constant REQUIRED_SOURCE_ASSETS (line 23) | const REQUIRED_SOURCE_ASSETS = [ constant REQUIRED_SUITE_ARTIFACTS (line 116) | const REQUIRED_SUITE_ARTIFACTS = [ constant REQUIRED_PUBLISH_CANDIDATES (line 186) | const REQUIRED_PUBLISH_CANDIDATES = [ function usage (line 319) | function usage() { function readArgValue (line 341) | function readArgValue(args, index, flagName) { function parseArgs (line 349) | function parseArgs(argv) { function readText (line 438) | function readText(rootDir, relativePath) { function safeParseJson (line 446) | function safeParseJson(text) { function lineNumberForIndex (line 458) | function lineNumberForIndex(text, index) { function scanForbiddenPaths (line 462) | function scanForbiddenPaths(rootDir, relativePaths) { function makeCheck (line 484) | function makeCheck(id, status, summary, fix, details = {}) { function formatBytes (line 494) | function formatBytes(bytes) { function probeMedia (line 502) | function probeMedia(filePath, skipProbe) { function detectBlackSegments (line 563) | function detectBlackSegments(filePath, skipProbe) { function resolveSourceAssetPath (line 612) | function resolveSourceAssetPath(sourceRoot, fileName) { function inspectSourceAssets (line 621) | function inspectSourceAssets(sourceRoot, skipProbe) { function validateVideoArtifact (line 656) | function validateVideoArtifact(artifact, media, skipProbe) { function inspectArtifactCollection (line 723) | function inspectArtifactCollection(rootDir, artifacts, skipProbe) { function inspectSuiteArtifacts (line 767) | function inspectSuiteArtifacts(suiteRoot, skipProbe) { function inspectPublishCandidates (line 771) | function inspectPublishCandidates(suiteRoot, skipProbe) { function evaluatePrimaryRender (line 775) | function evaluatePrimaryRender(suiteArtifacts, skipProbe) { function buildReport (line 838) | function buildReport(options = {}) { function summarizeItems (line 978) | function summarizeItems(items) { function summarizeReport (line 989) | function summarizeReport(report) { function renderText (line 1019) | function renderText(report) { function main (line 1058) | function main() { FILE: scripts/repair.js function showHelp (line 7) | function showHelp(exitCode = 0) { function parseArgs (line 16) | function parseArgs(argv) { function printHuman (line 45) | function printHuman(result) { function main (line 69) | 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 7) | function showHelp(exitCode = 0) { function parseArgs (line 17) | function parseArgs(argv) { function printSessionList (line 50) | function printSessionList(payload) { function printWorkers (line 69) | function printWorkers(workers) { function printSkillRuns (line 83) | function printSkillRuns(skillRuns) { function printDecisions (line 97) | function printDecisions(decisions) { function printSessionDetail (line 111) | function printSessionDetail(payload) { function main (line 127) | 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 9) | function showHelp(exitCode = 0) { function parseArgs (line 21) | function parseArgs(argv) { function printActiveSessions (line 77) | function printActiveSessions(section) { function printSkillRuns (line 92) | function printSkillRuns(section) { function printInstallHealth (line 115) | function printInstallHealth(section) { function printGovernance (line 136) | function printGovernance(section) { function printWorkItems (line 150) | function printWorkItems(section) { function printReadiness (line 168) | function printReadiness(section) { function printHuman (line 178) | function printHuman(payload) { function formatPercent (line 194) | function formatPercent(value) { function formatCode (line 198) | function formatCode(value) { function renderMarkdown (line 202) | function renderMarkdown(payload) { function writeOutput (line 324) | function writeOutput(writePath, output) { function main (line 330) | async function main() { FILE: scripts/uninstall.js function showHelp (line 7) | function showHelp(exitCode = 0) { function parseArgs (line 16) | function parseArgs(argv) { function printHuman (line 45) | function printHuman(result) { function main (line 69) | function main() { FILE: scripts/work-items.js constant VALUE_FLAGS (line 8) | const VALUE_FLAGS = new Set([ function showHelp (line 27) | function showHelp(exitCode = 0) { function assignOption (line 59) | function assignOption(options, flag, value) { function parseArgs (line 78) | function parseArgs(argv) { function parseMetadataJson (line 116) | function parseMetadataJson(value) { function resolveWorkItemId (line 128) | function resolveWorkItemId(options) { function normalizeLimit (line 132) | function normalizeLimit(value) { function runGhJson (line 140) | function runGhJson(args) { function slugifyWorkItemSegment (line 165) | function slugifyWorkItemSegment(value) { function githubWorkItemId (line 172) | function githubWorkItemId(repo, type, number) { function githubPrStatus (line 176) | function githubPrStatus(pr) { function githubAuthorLogin (line 184) | function githubAuthorLogin(item) { function buildGithubPrWorkItem (line 188) | function buildGithubPrWorkItem(repo, pr, options = {}) { function buildGithubIssueWorkItem (line 212) | function buildGithubIssueWorkItem(repo, issue, options = {}) { function closeStaleGithubItems (line 234) | function closeStaleGithubItems(store, repo, activeIds, options = {}) { function syncGithubWorkItems (line 260) | function syncGithubWorkItems(store, options) { function buildUpsertPayload (line 326) | function buildUpsertPayload(options, existing = null) { function printWorkItem (line 356) | function printWorkItem(item) { function printWorkItemList (line 370) | function printWorkItemList(payload) { function printGithubSyncResult (line 389) | function printGithubSyncResult(payload) { function main (line 403) | async function main() { FILE: skills/ck/commands/init.mjs function readFile (line 29) | function readFile(filename) { function extractSection (line 35) | function extractSection(md, heading) { FILE: skills/ck/commands/migrate.mjs function extractSection (line 26) | function extractSection(md, heading) { function parseBullets (line 32) | function parseBullets(text) { function parseDecisionsTable (line 40) | function parseDecisionsTable(text) { function parseLeftOff (line 59) | function parseLeftOff(text) { FILE: skills/ck/commands/shared.mjs constant CK_HOME (line 16) | const CK_HOME = resolve(homedir(), '.claude', 'ck'); constant CONTEXTS_DIR (line 17) | const CONTEXTS_DIR = resolve(CK_HOME, 'contexts'); constant PROJECTS_FILE (line 18) | const PROJECTS_FILE = resolve(CK_HOME, 'projects.json'); constant CURRENT_SESSION (line 19) | const CURRENT_SESSION = resolve(CK_HOME, 'current-session.json'); constant SKILL_FILE (line 20) | const SKILL_FILE = resolve(homedir(), '.claude', 'skills', 'ck', '... function readJson (line 24) | function readJson(filePath) { function writeJson (line 33) | function writeJson(filePath, data) { function readProjects (line 39) | function readProjects() { function writeProjects (line 43) | function writeProjects(projects) { function contextPath (line 49) | function contextPath(contextDir) { function contextMdPath (line 53) | function contextMdPath(contextDir) { function loadContext (line 57) | function loadContext(contextDir) { function saveContext (line 61) | function saveContext(contextDir, data) { function resolveContext (line 74) | function resolveContext(arg, cwd) { function today (line 117) | function today() { function daysAgoLabel (line 121) | function daysAgoLabel(dateStr) { function stalenessIcon (line 129) | function stalenessIcon(dateStr) { function shortId (line 139) | function shortId() { function runGit (line 145) | function runGit(args, cwd) { function gitLogSince (line 159) | function gitLogSince(projectPath, sinceDate) { function gitSummary (line 164) | function gitSummary(projectPath, sinceDate) { function encodeProjectPath (line 185) | function encodeProjectPath(absolutePath) { function nativeMemoryDir (line 190) | function nativeMemoryDir(absolutePath) { function renderContextMd (line 198) | function renderContextMd(ctx) { function renderBriefingBox (line 273) | function renderBriefingBox(ctx, _meta = {}) { function renderInfoBlock (line 320) | function renderInfoBlock(ctx) { function renderListTable (line 347) | function renderListTable(entries, cwd, _todayStr) { FILE: skills/ck/hooks/session-start.mjs constant CK_HOME (line 22) | const CK_HOME = resolve(homedir(), '.claude', 'ck'); constant PROJECTS_FILE (line 23) | const PROJECTS_FILE = resolve(CK_HOME, 'projects.json'); constant CURRENT_SESSION (line 24) | const CURRENT_SESSION = resolve(CK_HOME, 'current-session.json'); constant SKILL_FILE (line 25) | const SKILL_FILE = resolve(homedir(), '.claude', 'skills', 'ck', 'S... function readJson (line 29) | function readJson(p) { function daysAgo (line 33) | function daysAgo(dateStr) { function stalenessIcon (line 41) | function stalenessIcon(dateStr) { function gitLogSince (line 47) | function gitLogSince(projectPath, sinceDate) { function extractClaudeMdGoal (line 62) | function extractClaudeMdGoal(projectPath) { function readSessionId (line 74) | function readSessionId() { function main (line 83) | function main() { FILE: skills/continuous-learning-v2/scripts/instinct-cli.py function _resolve_homunculus_dir (line 49) | def _resolve_homunculus_dir() -> Path: function _strip_remote_credentials (line 65) | def _strip_remote_credentials(remote_url: str) -> str: function _normalize_remote_url (line 69) | def _normalize_remote_url(remote_url: str) -> str: function _stream_can_encode (line 86) | def _stream_can_encode(text: str, stream=None) -> bool: function _confidence_bar (line 96) | def _confidence_bar(confidence, stream=None) -> str: function _project_hash (line 107) | def _project_hash(value: str) -> str: function _ensure_global_dirs (line 133) | def _ensure_global_dirs(): function _validate_file_path (line 144) | def _validate_file_path(path_str: str, must_exist: bool = False) -> Path: function _validate_instinct_id (line 171) | def _validate_instinct_id(instinct_id: str) -> bool: function _yaml_quote (line 184) | def _yaml_quote(value: str) -> str: function _git_repo_root (line 198) | def _git_repo_root(cwd: Optional[str] = None) -> Optional[str]: function _main_worktree_root (line 212) | def _main_worktree_root(project_root: str) -> str: function detect_project (line 232) | def detect_project() -> dict: function _update_registry (line 345) | def _update_registry(pid: str, pname: str, proot: str, premote: str) -> ... function load_registry (line 386) | def load_registry() -> dict: function _write_registry (line 395) | def _write_registry(registry: dict) -> None: function _validate_project_id (line 407) | def _validate_project_id(project_id: str) -> bool: function parse_instinct_file (line 419) | def parse_instinct_file(content: str) -> list[dict]: function _load_instincts_from_dir (line 473) | def _load_instincts_from_dir(directory: Path, source_type: str, scope_la... function _project_counts (line 499) | def _project_counts(project_id: str) -> dict: function _remove_project_storage (line 523) | def _remove_project_storage(project_id: str) -> None: function _project_instinct_ids (line 529) | def _project_instinct_ids(project_dir: Path, source_type: str) -> set[str]: function _merge_instinct_dir (line 538) | def _merge_instinct_dir(from_dir: Path, into_dir: Path, existing_ids: se... function _append_observations (line 567) | def _append_observations(from_project_dir: Path, into_project_dir: Path)... function load_all_instincts (line 589) | def load_all_instincts(project: dict, include_global: bool = True) -> li... function load_project_only_instincts (line 624) | def load_project_only_instincts(project: dict) -> list[dict]: function cmd_status (line 640) | def cmd_status(args) -> int: function _print_instincts_by_domain (line 710) | def _print_instincts_by_domain(instincts: list[dict]) -> None: function cmd_import (line 745) | def cmd_import(args) -> int: function cmd_export (line 935) | def cmd_export(args) -> int: function cmd_evolve (line 1008) | def cmd_evolve(args) -> int: function _find_cross_project_instincts (line 1124) | def _find_cross_project_instincts() -> dict: function _show_promotion_candidates (line 1151) | def _show_promotion_candidates(project: dict) -> None: function cmd_promote (line 1187) | def cmd_promote(args) -> int: function _promote_specific (line 1199) | def _promote_specific(project: dict, instinct_id: str, force: bool, dry_... function _promote_auto (line 1254) | def _promote_auto(project: dict, force: bool, dry_run: bool) -> int: function cmd_projects (line 1332) | def cmd_projects(args) -> int: function _cmd_projects_delete (line 1385) | def _cmd_projects_delete(args) -> int: function _cmd_projects_gc (line 1420) | def _cmd_projects_gc(args) -> int: function _cmd_projects_merge (line 1455) | def _cmd_projects_merge(args) -> int: function _generate_evolved (line 1526) | def _generate_evolved(skill_candidates: list, workflow_instincts: list, ... function _collect_pending_dirs (line 1604) | def _collect_pending_dirs() -> list[Path]: function _parse_created_date (line 1619) | def _parse_created_date(file_path: Path) -> Optional[datetime]: function _collect_pending_instincts (line 1663) | def _collect_pending_instincts() -> list[dict]: function cmd_prune (line 1695) | def cmd_prune(args) -> int: function main (line 1746) | def main() -> int: FILE: skills/continuous-learning-v2/scripts/test_parse_instinct.py function project_tree (line 86) | def project_tree(tmp_path): function patch_globals (line 113) | def patch_globals(project_tree, monkeypatch): function _make_project (line 125) | def _make_project(tree, pid="abc123", pname="test-project"): function test_multiple_instincts_preserve_content (line 180) | def test_multiple_instincts_preserve_content(): function test_single_instinct_preserves_content (line 188) | def test_single_instinct_preserves_content(): function test_empty_content_no_error (line 209) | def test_empty_content_no_error(): function test_parse_no_id_skipped (line 223) | def test_parse_no_id_skipped(): function test_parse_confidence_is_float (line 237) | def test_parse_confidence_is_float(): function test_parse_trigger_strips_quotes (line 253) | def test_parse_trigger_strips_quotes(): function test_parse_empty_string (line 268) | def test_parse_empty_string(): function test_parse_garbage_input (line 273) | def test_parse_garbage_input(): function test_validate_normal_path (line 282) | def test_validate_normal_path(tmp_path): function test_validate_rejects_etc (line 289) | def test_validate_rejects_etc(): function test_validate_rejects_var_log (line 294) | def test_validate_rejects_var_log(): function test_validate_rejects_usr (line 299) | def test_validate_rejects_usr(): function test_validate_rejects_proc (line 304) | def test_validate_rejects_proc(): function test_validate_must_exist_fails (line 309) | def test_validate_must_exist_fails(tmp_path): function test_validate_home_expansion (line 314) | def test_validate_home_expansion(tmp_path): function test_validate_relative_path (line 320) | def test_validate_relative_path(tmp_path, monkeypatch): function test_detect_project_global_fallback (line 333) | def test_detect_project_global_fallback(patch_globals, monkeypatch): function test_detect_project_from_env (line 348) | def test_detect_project_from_env(patch_globals, monkeypatch, tmp_path): function test_detect_project_git_timeout (line 369) | def test_detect_project_git_timeout(patch_globals, monkeypatch): function test_detect_project_creates_directories (line 383) | def test_detect_project_creates_directories(patch_globals, monkeypatch, ... function test_load_from_empty_dir (line 408) | def test_load_from_empty_dir(tmp_path): function test_load_from_nonexistent_dir (line 413) | def test_load_from_nonexistent_dir(tmp_path): function test_load_annotates_metadata (line 418) | def test_load_annotates_metadata(tmp_path): function test_load_defaults_scope_from_label (line 430) | def test_load_defaults_scope_from_label(tmp_path): function test_load_preserves_explicit_scope (line 447) | def test_load_preserves_explicit_scope(tmp_path): function test_load_handles_corrupt_file (line 458) | def test_load_handles_corrupt_file(tmp_path, capsys): function test_load_supports_yml_extension (line 470) | def test_load_supports_yml_extension(tmp_path): function test_load_supports_md_extension (line 479) | def test_load_supports_md_extension(tmp_path): function test_load_instincts_from_dir_uses_utf8_encoding (line 488) | def test_load_instincts_from_dir_uses_utf8_encoding(tmp_path, monkeypatch): function test_load_all_project_and_global (line 507) | def test_load_all_project_and_global(patch_globals): function test_load_all_project_overrides_global (line 523) | def test_load_all_project_overrides_global(patch_globals): function test_load_all_global_only (line 544) | def test_load_all_global_only(patch_globals): function test_load_project_only_excludes_global (line 565) | def test_load_project_only_excludes_global(patch_globals): function test_load_project_only_global_fallback_loads_global (line 579) | def test_load_project_only_global_fallback_loads_global(patch_globals): function test_load_all_empty (line 600) | def test_load_all_empty(patch_globals): function test_cmd_status_no_instincts (line 613) | def test_cmd_status_no_instincts(patch_globals, monkeypatch, capsys): function test_cmd_status_with_instincts (line 626) | def test_cmd_status_with_instincts(patch_globals, monkeypatch, capsys): function test_confidence_bar_uses_unicode_when_supported (line 646) | def test_confidence_bar_uses_unicode_when_supported(): function test_confidence_bar_uses_ascii_when_stream_rejects_block_glyphs (line 652) | def test_confidence_bar_uses_ascii_when_stream_rejects_block_glyphs(): function test_print_instincts_by_domain_is_cp1252_safe (line 658) | def test_print_instincts_by_domain_is_cp1252_safe(monkeypatch): function test_cmd_status_returns_int (line 679) | def test_cmd_status_returns_int(patch_globals, monkeypatch): function test_cmd_projects_empty_registry (line 694) | def test_cmd_projects_empty_registry(patch_globals, capsys): function test_cmd_projects_with_registry (line 703) | def test_cmd_projects_with_registry(patch_globals, capsys): function test_promote_specific_not_found (line 736) | def test_promote_specific_not_found(patch_globals, capsys): function test_promote_specific_rejects_invalid_id (line 747) | def test_promote_specific_rejects_invalid_id(patch_globals, capsys): function test_promote_specific_already_global (line 758) | def test_promote_specific_already_global(patch_globals, capsys): function test_promote_specific_success (line 774) | def test_promote_specific_success(patch_globals, capsys): function test_promote_auto_no_candidates (line 798) | def test_promote_auto_no_candidates(patch_globals, capsys): function test_promote_auto_dry_run (line 812) | def test_promote_auto_dry_run(patch_globals, capsys): function test_promote_auto_writes_file (line 853) | def test_promote_auto_writes_file(patch_globals, capsys): function test_promote_auto_skips_invalid_id (line 891) | def test_promote_auto_skips_invalid_id(patch_globals, capsys): function test_find_cross_project_empty_registry (line 929) | def test_find_cross_project_empty_registry(patch_globals): function test_find_cross_project_single_project (line 936) | def test_find_cross_project_single_project(patch_globals): function test_find_cross_project_shared_instinct (line 949) | def test_find_cross_project_shared_instinct(patch_globals): function test_load_registry_missing_file (line 973) | def test_load_registry_missing_file(patch_globals): function test_load_registry_corrupt_json (line 978) | def test_load_registry_corrupt_json(patch_globals): function test_load_registry_valid (line 985) | def test_load_registry_valid(patch_globals): function test_load_registry_uses_utf8_encoding (line 993) | def test_load_registry_uses_utf8_encoding(monkeypatch): function test_validate_instinct_id (line 1005) | def test_validate_instinct_id(): function test_update_registry_atomic_replaces_file (line 1012) | def test_update_registry_atomic_replaces_file(patch_globals): FILE: skills/frontend-slides/scripts/extract-pptx.py function extract_pptx (line 18) | def extract_pptx(file_path, output_dir="."): FILE: skills/manim-video/assets/network_graph_scene.py class NetworkGraphExplainer (line 4) | class NetworkGraphExplainer(Scene): method construct (line 5) | def construct(self): FILE: skills/openclaw-persona-forge/gacha.py function pick (line 176) | def pick(pool): function main (line 181) | def main(): FILE: skills/remotion-video-creation/rules/assets/charts-bar-chart.tsx constant COLOR_BAR (line 6) | const COLOR_BAR = '#D4AF37'; constant COLOR_TEXT (line 7) | const COLOR_TEXT = '#ffffff'; constant COLOR_MUTED (line 8) | const COLOR_MUTED = '#888888'; constant COLOR_BG (line 9) | const COLOR_BG = '#0a0a0a'; constant COLOR_AXIS (line 10) | const COLOR_AXIS = '#333333'; FILE: skills/remotion-video-creation/rules/assets/text-animations-typewriter.tsx constant COLOR_BG (line 8) | const COLOR_BG = '#ffffff'; constant COLOR_TEXT (line 9) | const COLOR_TEXT = '#000000'; constant FULL_TEXT (line 10) | const FULL_TEXT = 'From prompt to motion graphics. This is Remotion.'; constant PAUSE_AFTER (line 11) | const PAUSE_AFTER = 'From prompt to motion graphics.'; constant FONT_SIZE (line 12) | const FONT_SIZE = 72; constant FONT_WEIGHT (line 13) | const FONT_WEIGHT = 700; constant CHAR_FRAMES (line 14) | const CHAR_FRAMES = 2; constant CURSOR_BLINK_FRAMES (line 15) | const CURSOR_BLINK_FRAMES = 16; constant PAUSE_SECONDS (line 16) | const PAUSE_SECONDS = 1; FILE: skills/remotion-video-creation/rules/assets/text-animations-word-highlight.tsx constant COLOR_BG (line 16) | const COLOR_BG = '#ffffff'; constant COLOR_TEXT (line 17) | const COLOR_TEXT = '#000000'; constant COLOR_HIGHLIGHT (line 18) | const COLOR_HIGHLIGHT = '#A7C7E7'; constant FULL_TEXT (line 19) | const FULL_TEXT = 'This is Remotion.'; constant HIGHLIGHT_WORD (line 20) | const HIGHLIGHT_WORD = 'Remotion'; constant FONT_SIZE (line 21) | const FONT_SIZE = 72; constant FONT_WEIGHT (line 22) | const FONT_WEIGHT = 700; constant HIGHLIGHT_START_FRAME (line 23) | const HIGHLIGHT_START_FRAME = 30; constant HIGHLIGHT_WIPE_DURATION (line 24) | const HIGHLIGHT_WIPE_DURATION = 18; FILE: skills/skill-comply/scripts/classifier.py function classify_events (line 17) | def classify_events( function _parse_classification (line 62) | def _parse_classification(text: str) -> dict[str, list[int]]: FILE: skills/skill-comply/scripts/grader.py class StepResult (line 12) | class StepResult: class ComplianceResult (line 20) | class ComplianceResult: function _check_temporal_order (line 28) | def _check_temporal_order( function grade (line 64) | def grade( FILE: skills/skill-comply/scripts/parser.py class ObservationEvent (line 13) | class ObservationEvent: class Detector (line 23) | class Detector: class Step (line 30) | class Step: class ComplianceSpec (line 38) | class ComplianceSpec: function parse_trace (line 47) | def parse_trace(path: Path) -> list[ObservationEvent]: function parse_spec (line 77) | def parse_spec(path: Path) -> ComplianceSpec: FILE: skills/skill-comply/scripts/report.py function generate_report (line 13) | def generate_report( function _overall_compliance (line 141) | def _overall_compliance(results: list[tuple[str, ComplianceResult, list[... function _step_compliance_rate (line 147) | def _step_compliance_rate( function _steps_to_promote (line 158) | def _steps_to_promote( FILE: skills/skill-comply/scripts/run.py function main (line 22) | def main() -> None: FILE: skills/skill-comply/scripts/runner.py class ScenarioRun (line 25) | class ScenarioRun: function run_scenario (line 31) | def run_scenario( function _safe_sandbox_dir (line 87) | def _safe_sandbox_dir(scenario_id: str) -> Path: function _setup_sandbox (line 96) | def _setup_sandbox(sandbox_dir: Path, scenario: Scenario) -> None: function _parse_stream_json (line 117) | def _parse_stream_json(stdout: str) -> list[ObservationEvent]: FILE: skills/skill-comply/scripts/scenario_generator.py class Scenario (line 17) | class Scenario: function generate_scenarios (line 26) | def generate_scenarios( FILE: skills/skill-comply/scripts/spec_generator.py function generate_spec (line 17) | def generate_spec( FILE: skills/skill-comply/scripts/utils.py function extract_yaml (line 6) | def extract_yaml(text: str) -> str: FILE: skills/skill-comply/tests/test_grader.py function tdd_spec (line 15) | def tdd_spec(): function compliant_trace (line 20) | def compliant_trace(): function noncompliant_trace (line 25) | def noncompliant_trace(): function _mock_compliant_classification (line 29) | def _mock_compliant_classification(spec, trace, model="haiku"): # noqa:... function _mock_noncompliant_classification (line 40) | def _mock_noncompliant_classification(spec, trace, model="haiku"): function _mock_empty_classification (line 49) | def _mock_empty_classification(spec, trace, model="haiku"): class TestGradeCompliant (line 53) | class TestGradeCompliant: method test_returns_compliance_result (line 55) | def test_returns_compliance_result(self, mock_cls, tdd_spec, compliant... method test_full_compliance (line 60) | def test_full_compliance(self, mock_cls, tdd_spec, compliant_trace) ->... method test_all_required_steps_detected (line 65) | def test_all_required_steps_detected(self, mock_cls, tdd_spec, complia... method test_optional_step_detected (line 72) | def test_optional_step_detected(self, mock_cls, tdd_spec, compliant_tr... method test_no_hook_promotion_recommended (line 78) | def test_no_hook_promotion_recommended(self, mock_cls, tdd_spec, compl... method test_step_evidence_not_empty (line 83) | def test_step_evidence_not_empty(self, mock_cls, tdd_spec, compliant_t... class TestGradeNoncompliant (line 90) | class TestGradeNoncompliant: method test_low_compliance (line 92) | def test_low_compliance(self, mock_cls, tdd_spec, noncompliant_trace) ... method test_write_test_fails_ordering (line 97) | def test_write_test_fails_ordering(self, mock_cls, tdd_spec, noncompli... method test_run_test_red_not_detected (line 104) | def test_run_test_red_not_detected(self, mock_cls, tdd_spec, noncompli... method test_hook_promotion_recommended (line 110) | def test_hook_promotion_recommended(self, mock_cls, tdd_spec, noncompl... method test_failure_reasons_present (line 115) | def test_failure_reasons_present(self, mock_cls, tdd_spec, noncomplian... class TestGradeEdgeCases (line 122) | class TestGradeEdgeCases: method test_empty_trace (line 124) | def test_empty_trace(self, mock_cls, tdd_spec) -> None: method test_compliance_rate_is_ratio_of_required_only (line 130) | def test_compliance_rate_is_ratio_of_required_only(self, mock_cls, tdd... method test_spec_id_in_result (line 135) | def test_spec_id_in_result(self, mock_cls, tdd_spec, compliant_trace) ... method test_after_step_can_reference_later_declared_spec_step (line 140) | def test_after_step_can_reference_later_declared_spec_step(self, mock_... FILE: skills/skill-comply/tests/test_parser.py class TestParseTrace (line 19) | class TestParseTrace: method test_parses_compliant_trace (line 20) | def test_parses_compliant_trace(self) -> None: method test_events_sorted_by_timestamp (line 25) | def test_events_sorted_by_timestamp(self) -> None: method test_event_fields (line 30) | def test_event_fields(self) -> None: method test_parses_noncompliant_trace (line 38) | def test_parses_noncompliant_trace(self) -> None: method test_empty_file_returns_empty_list (line 43) | def test_empty_file_returns_empty_list(self, tmp_path: Path) -> None: method test_nonexistent_file_raises (line 49) | def test_nonexistent_file_raises(self) -> None: class TestParseSpec (line 54) | class TestParseSpec: method test_parses_tdd_spec (line 55) | def test_parses_tdd_spec(self) -> None: method test_step_fields (line 61) | def test_step_fields(self) -> None: method test_optional_detector_fields (line 71) | def test_optional_detector_fields(self) -> None: method test_scoring_threshold (line 80) | def test_scoring_threshold(self) -> None: method test_required_vs_optional_steps (line 84) | def test_required_vs_optional_steps(self) -> None: FILE: skills/skill-comply/tests/test_runner.py class _FakeScenario (line 15) | class _FakeScenario: class TestSetupSandboxSkipsShellBuiltins (line 23) | class TestSetupSandboxSkipsShellBuiltins: method test_skips_cd (line 32) | def test_skips_cd(self, tmp_path): method test_skips_pushd_popd (line 50) | def test_skips_pushd_popd(self, tmp_path): method test_tolerates_missing_executable (line 67) | def test_tolerates_missing_executable(self, tmp_path): method test_real_commands_still_run (line 83) | def test_real_commands_still_run(self, tmp_path): class TestRunScenarioMaxTurnsTermination (line 104) | class TestRunScenarioMaxTurnsTermination: method test_rc1_with_max_turns_marker_returns_normally (line 113) | def test_rc1_with_max_turns_marker_returns_normally(self, tmp_path, mo... method test_rc1_without_max_turns_marker_still_raises (line 132) | def test_rc1_without_max_turns_marker_still_raises(self, tmp_path, mon... class TestRunScenarioErrorIncludesStdoutTail (line 146) | class TestRunScenarioErrorIncludesStdoutTail: method test_error_message_contains_stdout_tail (line 155) | def test_error_message_contains_stdout_tail(self, tmp_path, monkeypatch): 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: src/llm/__init__.py function gui (line 30) | def gui() -> None: FILE: src/llm/cli/selector.py class Color (line 10) | class Color(str, Enum): function print_banner (line 19) | def print_banner() -> None: function print_providers (line 28) | def print_providers(providers: list[tuple[str, str]]) -> None: function select_provider (line 34) | def select_provider(providers: list[tuple[str, str]]) -> str | None: function select_model (line 54) | def select_model(models: list[tuple[str, str]]) -> str | None: function save_config (line 76) | def save_config(provider: str, model: str, persist: bool = False) -> None: function interactive_select (line 91) | def interactive_select( function main (line 141) | def main() -> None: FILE: src/llm/core/interface.py class LLMProvider (line 11) | class LLMProvider(ABC): method generate (line 15) | def generate(self, input: LLMInput) -> LLMOutput: ... method list_models (line 18) | def list_models(self) -> list[ModelInfo]: ... method validate_config (line 21) | def validate_config(self) -> bool: ... method supports_tools (line 23) | def supports_tools(self) -> bool: method supports_vision (line 26) | def supports_vision(self) -> bool: method get_default_model (line 29) | def get_default_model(self) -> str: class LLMError (line 33) | class LLMError(Exception): method __init__ (line 34) | def __init__( class AuthenticationError (line 48) | class AuthenticationError(LLMError): ... class RateLimitError (line 51) | class RateLimitError(LLMError): ... class ContextLengthError (line 54) | class ContextLengthError(LLMError): ... class ModelNotFoundError (line 57) | class ModelNotFoundError(LLMError): ... class ToolExecutionError (line 60) | class ToolExecutionError(LLMError): ... FILE: src/llm/core/types.py class Role (line 10) | class Role(str, Enum): class ProviderType (line 17) | class ProviderType(str, Enum): class Message (line 26) | class Message: method to_dict (line 33) | def to_dict(self) -> dict[str, Any]: class ToolDefinition (line 48) | class ToolDefinition: method to_dict (line 54) | def to_dict(self) -> dict[str, Any]: method to_openai_tool (line 62) | def to_openai_tool(self) -> dict[str, Any]: method to_anthropic_tool (line 73) | def to_anthropic_tool(self) -> dict[str, Any]: class ToolCall (line 82) | class ToolCall: class ToolResult (line 89) | class ToolResult: class LLMInput (line 96) | class LLMInput: method to_dict (line 105) | def to_dict(self) -> dict[str, Any]: class LLMOutput (line 121) | class LLMOutput: method has_tool_calls (line 130) | def has_tool_calls(self) -> bool: method to_dict (line 133) | def to_dict(self) -> dict[str, Any]: class ModelInfo (line 150) | class ModelInfo: method to_dict (line 158) | def to_dict(self) -> dict[str, Any]: FILE: src/llm/prompt/builder.py class PromptConfig (line 15) | class PromptConfig: class PromptBuilder (line 22) | class PromptBuilder: method __init__ (line 23) | def __init__( method build (line 49) | def build(self, messages: list[Message], tools: list[ToolDefinition] |... method _format_tools (line 74) | def _format_tools(self, tools: list[ToolDefinition]) -> str: method _format_parameters (line 84) | def _format_parameters(self, params: dict[str, Any]) -> str: function get_provider_builder (line 113) | def get_provider_builder(provider_name: str) -> PromptBuilder: function adapt_messages_for_provider (line 119) | def adapt_messages_for_provider( FILE: src/llm/prompt/templates/__init__.py function _validate_template_input (line 9) | def _validate_template_input(name: str, template: str | None = None) -> ... function register_template (line 17) | def register_template(name: str, template: str) -> None: function deregister_template (line 23) | def deregister_template(name: str) -> None: function clear_templates (line 29) | def clear_templates() -> None: function get_template (line 34) | def get_template(name: str) -> str | None: function get_template_or_default (line 39) | def get_template_or_default(name: str, default: str = "") -> str: FILE: src/llm/providers/astraflow.py function _parse_tool_arguments (line 25) | def _parse_tool_arguments(raw_arguments: str | None) -> dict[str, Any]: class _AstraflowBaseProvider (line 39) | class _AstraflowBaseProvider(LLMProvider): method __init__ (line 48) | def __init__( method generate (line 69) | def generate(self, llm_input: LLMInput) -> LLMOutput: method list_models (line 123) | def list_models(self) -> list[ModelInfo]: method validate_config (line 126) | def validate_config(self) -> bool: method get_default_model (line 129) | def get_default_model(self) -> str: class AstraflowProvider (line 133) | class AstraflowProvider(_AstraflowBaseProvider): class AstraflowCNProvider (line 143) | class AstraflowCNProvider(_AstraflowBaseProvider): FILE: src/llm/providers/claude.py class ClaudeProvider (line 19) | class ClaudeProvider(LLMProvider): method __init__ (line 22) | def __init__(self, api_key: str | None = None, base_url: str | None = ... method generate (line 51) | def generate(self, input: LLMInput) -> LLMOutput: method list_models (line 110) | def list_models(self) -> list[ModelInfo]: method validate_config (line 113) | def validate_config(self) -> bool: method get_default_model (line 116) | def get_default_model(self) -> str: FILE: src/llm/providers/ollama.py class OllamaProvider (line 17) | class OllamaProvider(LLMProvider): method __init__ (line 20) | def __init__( method generate (line 54) | def generate(self, input: LLMInput) -> LLMOutput: method list_models (line 105) | def list_models(self) -> list[ModelInfo]: method validate_config (line 108) | def validate_config(self) -> bool: method get_default_model (line 111) | def get_default_model(self) -> str: FILE: src/llm/providers/openai.py class OpenAIProvider (line 21) | class OpenAIProvider(LLMProvider): method __init__ (line 24) | def __init__(self, api_key: str | None = None, base_url: str | None = ... method generate (line 65) | def generate(self, input: LLMInput) -> LLMOutput: method list_models (line 118) | def list_models(self) -> list[ModelInfo]: method validate_config (line 121) | def validate_config(self) -> bool: method get_default_model (line 124) | def get_default_model(self) -> str: FILE: src/llm/providers/resolver.py function _strip_env_value (line 27) | def _strip_env_value(value: str) -> str: function _read_saved_llm_config (line 34) | def _read_saved_llm_config(env_path: str | Path = LLM_ENV_FILE) -> dict[... function _resolve_provider_type (line 49) | def _resolve_provider_type(provider_type: ProviderType | str | None) -> ... function get_provider (line 61) | def get_provider(provider_type: ProviderType | str | None = None, **kwar... function register_provider (line 77) | def register_provider(provider_type: ProviderType, provider_cls: type[LL... FILE: src/llm/tools/executor.py class ToolRegistry (line 15) | class ToolRegistry: method __init__ (line 16) | def __init__(self) -> None: method register (line 20) | def register(self, definition: ToolDefinition, func: ToolFunc) -> None: method get (line 24) | def get(self, name: str) -> ToolFunc | None: method get_definition (line 27) | def get_definition(self, name: str) -> ToolDefinition | None: method list_tools (line 30) | def list_tools(self) -> list[ToolDefinition]: method has (line 33) | def has(self, name: str) -> bool: class ToolExecutor (line 37) | class ToolExecutor: method __init__ (line 38) | def __init__(self, registry: ToolRegistry | None = None) -> None: method execute (line 41) | def execute(self, tool_call: ToolCall) -> ToolResult: method execute_all (line 61) | def execute_all(self, tool_calls: list[ToolCall]) -> list[ToolResult]: class ReActAgent (line 65) | class ReActAgent: method __init__ (line 66) | def __init__( method run (line 76) | async def run(self, input: LLMInput) -> LLMOutput: FILE: tests/ci/agent-instruction-safety.test.js function test (line 60) | function test(name, fn) { function read (line 72) | function read(relativePath) { function run (line 76) | function run() { FILE: tests/ci/agent-yaml-surface.test.js constant REPO_ROOT (line 10) | const REPO_ROOT = path.join(__dirname, '..', '..'); constant AGENT_YAML_PATH (line 11) | const AGENT_YAML_PATH = path.join(REPO_ROOT, 'agent.yaml'); constant COMMANDS_DIR (line 12) | const COMMANDS_DIR = path.join(REPO_ROOT, 'commands'); constant SKILLS_DIR (line 13) | const SKILLS_DIR = path.join(REPO_ROOT, 'skills'); constant CODEX_SKILLS_DIR (line 14) | const CODEX_SKILLS_DIR = path.join(REPO_ROOT, '.agents', 'skills'); constant LEGACY_COMMANDS_DIR (line 15) | const LEGACY_COMMANDS_DIR = path.join(REPO_ROOT, 'legacy-command-shims',... constant RETIRED_LEGACY_SHIMS (line 17) | const RETIRED_LEGACY_SHIMS = [ constant CANONICAL_ANTHROPIC_SKILLS (line 32) | const CANONICAL_ANTHROPIC_SKILLS = [ function extractTopLevelList (line 37) | function extractTopLevelList(yamlSource, key) { function test (line 63) | function test(name, fn) { function run (line 75) | function run() { FILE: tests/ci/catalog.test.js function createTestDir (line 18) | function createTestDir() { function cleanupTestDir (line 22) | function cleanupTestDir(testDir) { function writeCountedFiles (line 26) | function writeCountedFiles(root, category, count) { function writeEnglishReadme (line 41) | function writeEnglishReadme(root, counts, options = {}) { function writePluginMetadata (line 69) | function writePluginMetadata(root, counts) { function writeEnglishAgents (line 85) | function writeEnglishAgents(root, counts, options = {}) { function writeZhRootReadme (line 98) | function writeZhRootReadme(root, counts) { function writeZhDocsReadme (line 102) | function writeZhDocsReadme(root, counts, options = {}) { function writeZhAgents (line 130) | function writeZhAgents(root, counts, options = {}) { function writeCatalogFixture (line 145) | function writeCatalogFixture(root, options = {}) { function test (line 167) | function test(name, fn) { function runTests (line 179) | function runTests() { FILE: tests/ci/code-reviewer-false-positive-guard.test.js function test (line 40) | function test(name, fn) { function readReviewer (line 52) | function readReviewer() { FILE: tests/ci/codex-skill-surface.test.js constant REPO_ROOT (line 10) | const REPO_ROOT = path.join(__dirname, '..', '..'); constant CODEX_SKILLS_DIR (line 11) | const CODEX_SKILLS_DIR = path.join(REPO_ROOT, '.agents', 'skills'); constant ALLOWED_FRONTMATTER_KEYS (line 12) | const ALLOWED_FRONTMATTER_KEYS = new Set([ function test (line 20) | function test(name, fn) { function listSkillDirs (line 32) | function listSkillDirs() { function parseFrontmatter (line 39) | function parseFrontmatter(skillName) { function parseQuotedYamlValue (line 55) | function parseQuotedYamlValue(source, key) { function run (line 69) | function run() { FILE: tests/ci/command-registry.test.js function createTestDir (line 21) | function createTestDir() { function cleanupTestDir (line 25) | function cleanupTestDir(testDir) { function writeFixture (line 29) | function writeFixture(root) { function test (line 57) | function test(name, fn) { function runTests (line 69) | function runTests() { FILE: tests/ci/mle-workflow-coverage.test.js constant REPO_ROOT (line 5) | const REPO_ROOT = path.resolve(__dirname, '..', '..'); constant CANONICAL_SKILL (line 6) | const CANONICAL_SKILL = path.join(REPO_ROOT, 'skills', 'mle-workflow', '... constant CODEX_SKILL (line 7) | const CODEX_SKILL = path.join(REPO_ROOT, '.agents', 'skills', 'mle-workf... constant EXPECTED_TASKS (line 9) | const EXPECTED_TASKS = [ constant PIPELINE_LANES (line 22) | const PIPELINE_LANES = [ constant SWE_SURFACES (line 53) | const SWE_SURFACES = [ constant JUDGMENT_PRIMITIVES (line 81) | const JUDGMENT_PRIMITIVES = [ constant FORBIDDEN_DOMAIN_EXAMPLES (line 115) | const FORBIDDEN_DOMAIN_EXAMPLES = [ constant SCOPE_CALIBRATION_PHRASES (line 122) | const SCOPE_CALIBRATION_PHRASES = [ function stripFrontmatter (line 129) | function stripFrontmatter(content) { function readSkill (line 133) | function readSkill(filePath) { function extractSimulationRows (line 137) | function extractSimulationRows(content) { function test (line 143) | function test(name, fn) { function run (line 155) | function run() { FILE: tests/ci/no-personal-paths.test.js function test (line 18) | function test(name, fn) { function createTestDir (line 30) | function createTestDir() { function cleanupTestDir (line 34) | function cleanupTestDir(testDir) { function writeFile (line 38) | function writeFile(filePath, content) { function stripShebang (line 43) | function stripShebang(source) { function runValidatorAgainst (line 53) | function runValidatorAgainst(testDir) { function runValidatorAgainstRealRepo (line 86) | function runValidatorAgainstRealRepo() { function record (line 109) | function record(ok) { FILE: tests/ci/scan-supply-chain-iocs.test.js constant SCRIPT_PATH (line 12) | const SCRIPT_PATH = path.join(__dirname, '..', '..', 'scripts', 'ci', 's... constant TANSTACK_SETUP_DEPENDENCY (line 14) | const TANSTACK_SETUP_DEPENDENCY = [ function test (line 19) | function test(name, fn) { function withFixture (line 31) | function withFixture(files, fn) { function run (line 45) | function run() { FILE: tests/ci/supply-chain-advisory-sources.test.js constant SCRIPT_PATH (line 13) | const SCRIPT_PATH = path.join( function test (line 29) | async function test(name, fn) { function run (line 41) | async function run() { FILE: tests/ci/supply-chain-watch-workflow.test.js constant WORKFLOW_PATH (line 10) | const WORKFLOW_PATH = path.join( function test (line 19) | function test(name, fn) { function run (line 31) | function run() { FILE: tests/ci/validate-workflow-security.test.js constant SCRIPT_PATH (line 12) | const SCRIPT_PATH = path.join(__dirname, '..', '..', 'scripts', 'ci', 'v... function test (line 14) | function test(name, fn) { function runValidator (line 26) | function runValidator(files) { function run (line 45) | function run() { 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 stripShebang (line 55) | function stripShebang(source) { function runSourceViaTempFile (line 71) | function runSourceViaTempFile(source) { function runValidatorWithDir (line 102) | function runValidatorWithDir(validatorName, dirConstant, overridePath) { function runValidatorWithDirs (line 123) | function runValidatorWithDirs(validatorName, overrides) { function runValidator (line 137) | function runValidator(validatorName) { function runCatalogValidator (line 155) | function runCatalogValidator(overrides = {}) { function runSkillsValidator (line 193) | function runSkillsValidator(testDir, argv = [], envOverrides = {}) { function writeCatalogFixture (line 227) | function writeCatalogFixture(testDir, options = {}) { function runTests (line 292) | function runTests() { FILE: tests/codex-config.test.js function test (line 11) | function test(name, fn) { function escapeRegExp (line 28) | function escapeRegExp(value) { function getTomlSection (line 32) | function getTomlSection(text, sectionName) { FILE: tests/commands/command-frontmatter.test.js function test (line 13) | function test(name, fn) { function getCommandFiles (line 25) | function getCommandFiles() { function parseFrontmatter (line 31) | function parseFrontmatter(content) { FILE: tests/commands/plan-command.test.js function test (line 13) | function test(name, fn) { function readPlanCommand (line 25) | function readPlanCommand() { FILE: tests/conftest.py function pytest_configure (line 9) | def pytest_configure(config: pytest.Config) -> None: FILE: tests/docs/canary-watch.test.js constant SKILL_PATH (line 5) | const SKILL_PATH = path.join(__dirname, '..', '..', 'skills', 'canary-wa... function test (line 7) | function test(name, fn) { function runTests (line 19) | function runTests() { FILE: tests/docs/configure-ecc-install-paths.test.js function test (line 18) | function test(name, fn) { function readConfigureEccDoc (line 30) | function readConfigureEccDoc(relativePath) { FILE: tests/docs/continuous-learning-v2-docs.test.js function test (line 12) | function test(name, fn) { FILE: tests/docs/copilot-support.test.js function test (line 13) | function test(name, fn) { function read (line 25) | function read(relativePath) { function parseSimpleFrontmatter (line 29) | function parseSimpleFrontmatter(source, relativePath) { FILE: tests/docs/ecc2-release-surface.test.js function test (line 13) | function test(name, fn) { function read (line 25) | function read(relativePath) { function walkMarkdown (line 29) | function walkMarkdown(rootPath) { FILE: tests/docs/evaluator-rag-prototype.test.js function test (line 13) | function test(name, fn) { function read (line 25) | function read(relativePath) { function readJson (line 29) | function readJson(fileName) { function readFixtureJson (line 33) | function readFixtureJson(relativePath) { FILE: tests/docs/harness-adapter-compliance.test.js function test (line 20) | function test(name, fn) { function read (line 32) | function read(relativePath) { FILE: tests/docs/install-identifiers.test.js function test (line 12) | function test(name, fn) { FILE: tests/docs/legacy-artifact-inventory.test.js function test (line 13) | function test(name, fn) { function read (line 25) | function read(relativePath) { function findLegacyDocumentDirs (line 29) | function findLegacyDocumentDirs(dir) { FILE: tests/docs/mcp-management-docs.test.js function test (line 12) | function test(name, fn) { function read (line 24) | function read(relativePath) { FILE: tests/docs/stale-pr-salvage-ledger.test.js function test (line 12) | function test(name, fn) { function read (line 24) | function read(relativePath) { 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/bash-hook-dispatcher.test.js function test (line 14) | function test(name, fn) { function runScript (line 26) | function runScript(scriptPath, input, env = {}) { function runTests (line 38) | function runTests() { FILE: tests/hooks/block-no-verify.test.js function test (line 11) | function test(name, fn) { function runHook (line 23) | function runHook(input, env = {}) { 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/config-protection.test.js function test (line 13) | function test(name, fn) { function runHook (line 25) | function runHook(input, env = {}) { function runCustomHook (line 46) | function runCustomHook(pluginRoot, hookId, relScriptPath, input, env = {... function runTests (line 68) | function runTests() { FILE: tests/hooks/continuous-learning-observe-runner.test.js function test (line 20) | function test(name, fn) { function loadHook (line 32) | function loadHook(id) { function withTempPluginRoot (line 42) | function withTempPluginRoot(fn) { function withEnv (line 57) | function withEnv(vars, fn) { function writeFakeObserveScript (line 81) | function writeFakeObserveScript(tempRoot) { function runWithFlags (line 97) | function runWithFlags(tempRoot, hookId, relScriptPath, stdin) { function runTests (line 111) | function runTests() { FILE: tests/hooks/cost-tracker.test.js function test (line 15) | function test(name, fn) { function makeTempDir (line 27) | function makeTempDir() { function withTempHome (line 31) | function withTempHome(homeDir) { function writeTranscript (line 38) | function writeTranscript(filePath, entries) { function runScript (line 46) | function runScript(input, envOverrides = {}) { function runTests (line 57) | function runTests() { FILE: tests/hooks/design-quality-check.test.js function test (line 14) | function test(name, fn) { FILE: tests/hooks/detect-project-worktree.test.js function test (line 26) | function test(name, fn) { function createTempDir (line 38) | function createTempDir() { function cleanupDir (line 42) | function cleanupDir(dir) { function toBashPath (line 50) | function toBashPath(filePath) { function runBash (line 60) | function runBash(command, options = {}) { function detectId (line 262) | function detectId(targetDir) { 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/ecc-context-monitor.test.js function test (line 16) | function test(name, fn) { function withEnv (line 28) | function withEnv(name, value, fn) { function runTests (line 40) | function runTests() { FILE: tests/hooks/ecc-metrics-bridge.test.js function test (line 16) | function test(name, fn) { function makeTempHome (line 28) | function makeTempHome() { function runTests (line 32) | function runTests() { FILE: tests/hooks/ecc-statusline.test.js function test (line 15) | function test(name, fn) { function makeTempConfig (line 27) | function makeTempConfig() { 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/gateguard-fact-force.test.js constant TEST_SESSION_ID (line 17) | const TEST_SESSION_ID = 'gateguard-test-session'; constant READ_HEARTBEAT_MS (line 19) | const READ_HEARTBEAT_MS = 60 * 1000; function test (line 21) | function test(name, fn) { function clearState (line 33) | function clearState() { function writeExpiredState (line 44) | function writeExpiredState() { function writeState (line 55) | function writeState(state) { function runHook (line 60) | function runHook(input, env = {}) { function runBashHook (line 88) | function runBashHook(input, env = {}) { function parseOutput (line 116) | function parseOutput(stdout) { function loadDirectHook (line 124) | function loadDirectHook(env = {}) { function runTests (line 134) | function runTests() { FILE: tests/hooks/governance-capture.test.js function test (line 15) | async function test(name, fn) { function runTests (line 27) | async 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 constant SKIP_BASH (line 13) | const SKIP_BASH = process.platform === 'win32'; function toBashPath (line 15) | function toBashPath(filePath) { function fromBashPath (line 25) | function fromBashPath(filePath) { function normalizeComparablePath (line 60) | function normalizeComparablePath(filePath) { function sleepMs (line 81) | function sleepMs(ms) { function getCanonicalSessionsDir (line 85) | function getCanonicalSessionsDir(homeDir) { function getLegacySessionsDir (line 89) | function getLegacySessionsDir(homeDir) { function getSessionStartAdditionalContext (line 93) | function getSessionStartAdditionalContext(stdout) { constant RESUME_SESSION_SENTINEL (line 101) | const RESUME_SESSION_SENTINEL = 'RESUME_CONTEXT_SHOULD_NOT_BE_INJECTED'; constant INVALID_STDIN_SESSION_SENTINEL (line 102) | const INVALID_STDIN_SESSION_SENTINEL = 'INVALID_STDIN_CONTEXT_SHOULD_NOT... constant INVALID_STDIN_LOG_SENTINEL (line 103) | const INVALID_STDIN_LOG_SENTINEL = 'SENSITIVE_STDIN_SHOULD_NOT_BE_LOGGED'; constant CROSS_PROJECT_SESSION_SENTINEL (line 104) | const CROSS_PROJECT_SESSION_SENTINEL = 'CROSS_PROJECT_CONTEXT_SHOULD_NOT... constant CROSS_WORKTREE_PROJECT_SENTINEL (line 105) | const CROSS_WORKTREE_PROJECT_SENTINEL = 'CROSS_WORKTREE_PROJECT_CONTEXT_... constant CLI_RESUME_SESSION_SENTINEL (line 106) | const CLI_RESUME_SESSION_SENTINEL = 'CLI_RESUME_CONTEXT_SHOULD_NOT_BE_IN... constant CLI_CLEAR_SESSION_SENTINEL (line 107) | const CLI_CLEAR_SESSION_SENTINEL = 'CLI_CLEAR_CONTEXT_SHOULD_NOT_BE_INJE... constant DESKTOP_CLEAR_SESSION_SENTINEL (line 108) | const DESKTOP_CLEAR_SESSION_SENTINEL = 'DESKTOP_CLEAR_CONTEXT_SHOULD_NOT... constant PROJECT_ONLY_SESSION_SENTINEL (line 109) | const PROJECT_ONLY_SESSION_SENTINEL = 'PROJECT_ONLY_CONTEXT_SHOULD_BE_IN... function buildSessionStartFixture (line 111) | function buildSessionStartFixture(content, options = {}) { function test (line 126) | function test(name, fn) { function asyncTest (line 139) | async function asyncTest(name, fn) { function runScript (line 152) | function runScript(scriptPath, input = '', env = {}) { function runShellScript (line 178) | function runShellScript(scriptPath, args = [], input = '', env = {}, cwd... function createTestDir (line 202) | function createTestDir() { function cleanupTestDir (line 207) | function cleanupTestDir(testDir) { function createCommandShim (line 223) | function createCommandShim(binDir, baseName, logFile) { function readCommandLog (line 246) | function readCommandLog(logFile) { function withPrependedPath (line 262) | function withPrependedPath(binDir, env = {}) { function assertNoProjectDetectionSideEffects (line 274) | function assertNoProjectDetectionSideEffects(homeDir, testName) { function assertObserveSkipBeforeProjectDetection (line 285) | async function assertObserveSkipBeforeProjectDetection(testCase) { function runPatchedRunAll (line 323) | function runPatchedRunAll(tempRoot) { function runTests (line 344) | async function runTests() { FILE: tests/hooks/insaits-security-monitor.test.js constant SCRIPT (line 13) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'hooks', 'ins... constant MONITOR_TIMEOUT_MS (line 14) | const MONITOR_TIMEOUT_MS = 60000; function createTempDir (line 16) | function createTempDir() { function cleanup (line 20) | function cleanup(dirPath) { function findPython (line 24) | function findPython() { constant PYTHON (line 44) | const PYTHON = findPython(); function writeFakeSdk (line 46) | function writeFakeSdk(root) { function readAudit (line 68) | function readAudit(root) { function runMonitor (line 76) | function runMonitor(options = {}) { function statusError (line 103) | function statusError(result) { function test (line 107) | function test(name, fn) { function runTests (line 119) | function runTests() { FILE: tests/hooks/insaits-security-wrapper.test.js constant SCRIPT (line 13) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'hooks', 'ins... function createTempDir (line 15) | function createTempDir() { function cleanup (line 19) | function cleanup(dirPath) { function shellQuote (line 23) | function shellQuote(value) { function writeFakePython (line 27) | function writeFakePython(binDir) { function run (line 70) | function run(options = {}) { function test (line 83) | function test(name, fn) { function runTests (line 95) | function runTests() { FILE: tests/hooks/mcp-health-check.test.js function test (line 17) | function test(name, fn) { function asyncTest (line 29) | async function asyncTest(name, fn) { function createTempDir (line 41) | function createTempDir() { function cleanupTempDir (line 45) | function cleanupTempDir(dirPath) { function writeConfig (line 49) | function writeConfig(configPath, body) { function readState (line 53) | function readState(statePath) { function readOptionalFile (line 57) | function readOptionalFile(filePath) { function hookFailureDetails (line 61) | function hookFailureDetails(result, statePath) { function createCommandConfig (line 69) | function createCommandConfig(scriptPath) { function buildHookEnv (line 76) | function buildHookEnv(env = {}) { function runHook (line 93) | function runHook(input, env = {}, options = {}) { function runRawHook (line 110) | function runRawHook(rawInput, env = {}, options = {}) { function waitForFile (line 127) | function waitForFile(filePath, timeoutMs = 5000) { function waitForHttpReady (line 141) | function waitForHttpReady(urlString, timeoutMs = 5000) { function runTests (line 181) | async function runTests() { FILE: tests/hooks/observe-subdirectory-detection.test.js function test (line 31) | function test(name, fn) { function createTempDir (line 43) | function createTempDir() { function cleanupDir (line 47) | function cleanupDir(dir) { function normalizeComparablePath (line 55) | function normalizeComparablePath(filePath) { function gitInit (line 64) | function gitInit(dir) { function runObserve (line 89) | function runObserve({ homeDir, cwd, args = ['post'], extraEnv = {} }) { function readSingleProjectMetadata (line 115) | function readSingleProjectMetadata(homeDir) { 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/plugin-hook-bootstrap.test.js constant SCRIPT (line 13) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'hooks', 'plu... function createTempDir (line 15) | function createTempDir() { function cleanup (line 19) | function cleanup(dirPath) { function writeFile (line 23) | function writeFile(root, relativePath, content) { function run (line 30) | function run(args = [], options = {}) { function test (line 45) | function test(name, fn) { function runTests (line 57) | function runTests() { 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-commit-quality.test.js function test (line 15) | function test(name, fn) { function inTempRepo (line 27) | function inTempRepo(fn) { function captureConsoleError (line 43) | function captureConsoleError(fn) { function writeAndStage (line 58) | function writeAndStage(repoDir, relativePath, content) { function executableName (line 65) | function executableName(name) { function writeFakeExecutable (line 69) | function writeFakeExecutable(filePath, output, exitCode) { function pathEnvKey (line 78) | function pathEnvKey() { function withEnv (line 82) | function withEnv(overrides, fn) { 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/session-activity-tracker.test.js function test (line 27) | function test(name, fn) { function makeTempDir (line 39) | function makeTempDir() { function withTempHome (line 43) | function withTempHome(homeDir) { function runScript (line 50) | function runScript(input, envOverrides = {}, options = {}) { function readMetricRows (line 62) | function readMetricRows(homeDir) { function runTests (line 71) | function runTests() { FILE: tests/hooks/stop-format-typecheck.test.js function test (line 18) | function test(name, fn) { constant TEST_SESSION_ID (line 34) | const TEST_SESSION_ID = `test-${Date.now()}`; function getAccumFile (line 38) | function getAccumFile() { function cleanAccumFile (line 42) | function cleanAccumFile() { 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 createCounterContext (line 59) | function createCounterContext(prefix = 'test-compact') { function runTests (line 77) | function runTests() { FILE: tests/hooks/test_insaits_security_monitor.py function load_monitor (line 15) | def load_monitor(): function run_main (line 25) | def run_main(monkeypatch, module, raw): function install_fake_monitor (line 38) | def install_fake_monitor(monkeypatch, module, *, result=None, error=None): function read_audit (line 56) | def read_audit(tmp_path): function test_extract_content_handles_supported_payload_shapes (line 61) | def test_extract_content_handles_supported_payload_shapes(): function test_format_feedback_accepts_dict_and_object_anomalies (line 89) | def test_format_feedback_accepts_dict_and_object_anomalies(): function test_main_skips_short_or_empty_content (line 104) | def test_main_skips_short_or_empty_content(monkeypatch): function test_main_exits_cleanly_when_sdk_is_missing (line 111) | def test_main_exits_cleanly_when_sdk_is_missing(monkeypatch): function test_clean_scan_writes_audit_and_uses_environment_options (line 125) | def test_clean_scan_writes_audit_and_uses_environment_options(monkeypatc... function test_scan_input_is_truncated_before_sdk_call (line 161) | def test_scan_input_is_truncated_before_sdk_call(monkeypatch, tmp_path): function test_critical_anomaly_blocks_and_writes_feedback (line 180) | def test_critical_anomaly_blocks_and_writes_feedback(monkeypatch, tmp_pa... function test_noncritical_anomaly_warns_without_blocking (line 211) | def test_noncritical_anomaly_warns_without_blocking(monkeypatch, tmp_path): function test_sdk_errors_fail_open_by_default (line 242) | def test_sdk_errors_fail_open_by_default(monkeypatch, tmp_path): function test_sdk_errors_can_fail_closed (line 258) | def test_sdk_errors_can_fail_closed(monkeypatch, tmp_path): FILE: tests/integration/hooks.test.js constant REPO_ROOT (line 15) | const REPO_ROOT = path.join(__dirname, '..', '..'); function _test (line 18) | function _test(name, fn) { function asyncTest (line 31) | async function asyncTest(name, fn) { function runHookWithInput (line 50) | function runHookWithInput(scriptPath, input = {}, env = {}, timeoutMs = ... function getSessionStartPayload (line 94) | function getSessionStartPayload(stdout) { function runHookCommand (line 109) | function runHookCommand(command, input = {}, env = {}, timeoutMs = 10000) { function createTestDir (line 220) | function createTestDir() { function cleanupTestDir (line 225) | function cleanupTestDir(testDir) { function getTestHomunculusEnv (line 229) | function getTestHomunculusEnv(testDir) { function writeInstinctFile (line 238) | function writeInstinctFile(filePath, entries) { function getHookCommandByDescription (line 258) | function getHookCommandByDescription(hooks, lifecycle, descriptionText) { function getHookCommandById (line 268) | function getHookCommandById(hooks, lifecycle, hookId) { function runTests (line 277) | async function runTests() { FILE: tests/lib/agent-compress.test.js function test (line 23) | function test(name, fn) { function runTests (line 35) | function runTests() { FILE: tests/lib/changed-files-store.test.js function test (line 8) | function test(name, fn) { function runTests (line 20) | async function runTests() { FILE: tests/lib/command-plugin-root.test.js function test (line 11) | function test(name, fn) { FILE: tests/lib/cost-estimate.test.js function test (line 12) | function test(name, fn) { function runTests (line 24) | function runTests() { FILE: tests/lib/inspection.test.js function test (line 16) | async function test(name, fn) { function makeSkillRun (line 28) | function makeSkillRun(overrides = {}) { function runTests (line 44) | async function runTests() { FILE: tests/lib/install-config.test.js function test (line 16) | function test(name, fn) { function createTempDir (line 28) | function createTempDir(prefix) { function cleanup (line 32) | function cleanup(dirPath) { function writeJson (line 36) | function writeJson(filePath, value) { function runTests (line 41) | function runTests() { FILE: tests/lib/install-executor.test.js constant REPO_ROOT (line 20) | const REPO_ROOT = path.resolve(__dirname, '..', '..'); function createTempDir (line 22) | function createTempDir(prefix) { function cleanup (line 26) | function cleanup(dirPath) { function writeFile (line 30) | function writeFile(root, relativePath, content = '') { function writeJson (line 37) | function writeJson(root, relativePath, value) { function operationFor (line 41) | function operationFor(plan, suffix) { function writeLegacySourceFixture (line 48) | function writeLegacySourceFixture(root) { function writeManifestSourceFixture (line 72) | function writeManifestSourceFixture(root) { function test (line 119) | function test(name, fn) { function runTests (line 131) | function runTests() { FILE: tests/lib/install-lifecycle.test.js constant REPO_ROOT (line 22) | const REPO_ROOT = path.join(__dirname, '..', '..'); constant CURRENT_PACKAGE_VERSION (line 23) | const CURRENT_PACKAGE_VERSION = JSON.parse( constant CURRENT_MANIFEST_VERSION (line 26) | const CURRENT_MANIFEST_VERSION = JSON.parse( function test (line 30) | function test(name, fn) { function createTempDir (line 42) | function createTempDir(prefix) { function cleanup (line 46) | function cleanup(dirPath) { function writeState (line 50) | function writeState(filePath, options) { function createCursorStateOptions (line 56) | function createCursorStateOptions(projectRoot, overrides = {}) { function writeCursorState (line 88) | function writeCursorState(projectRoot, overrides = {}) { function managedOperation (line 98) | function managedOperation(kind, destinationPath, overrides = {}) { function runTests (line 111) | function runTests() { FILE: tests/lib/install-manifests.test.js function test (line 22) | function test(name, fn) { function createTestRepo (line 34) | function createTestRepo() { function cleanupTestRepo (line 40) | function cleanupTestRepo(root) { function writeJson (line 44) | function writeJson(filePath, value) { function writeManifestSet (line 49) | function writeManifestSet(repoRoot, options = {}) { function runTests (line 67) | 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 constant CURRENT_PACKAGE_VERSION (line 9) | const CURRENT_PACKAGE_VERSION = JSON.parse( function test (line 19) | function test(name, fn) { function createTestDir (line 31) | function createTestDir() { function cleanupTestDir (line 35) | function cleanupTestDir(dirPath) { function runTests (line 39) | 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/locale-install.test.js function normalizePlanPath (line 16) | function normalizePlanPath(value) { function runInstallApply (line 20) | function runInstallApply(args, options = {}) { function test (line 31) | function test(name, fn) { function runTests (line 43) | function runTests() { FILE: tests/lib/mcp-config.test.js function test (line 7) | function test(name, fn) { function runTests (line 19) | function runTests() { FILE: tests/lib/observer-sessions.test.js function test (line 16) | function test(name, fn) { function createTempDir (line 28) | function createTempDir() { function cleanup (line 32) | function cleanup(dir) { function withEnv (line 40) | function withEnv(overrides, fn) { function initRepo (line 63) | function initRepo(repoDir, remoteUrl) { 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 withIsolatedHome (line 40) | function withIsolatedHome(fn) { function runTests (line 68) | 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-ecc-root.test.js constant CURRENT_PACKAGE_VERSION (line 16) | const CURRENT_PACKAGE_VERSION = JSON.parse( function test (line 22) | function test(name, fn) { function createTempDir (line 34) | function createTempDir() { function setupStandardInstall (line 38) | function setupStandardInstall(homeDir) { function setupLegacyPluginInstall (line 46) | function setupLegacyPluginInstall(homeDir, segments) { function setupPluginCache (line 53) | function setupPluginCache(homeDir, pluginSlug, orgName, version) { function runTests (line 64) | 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 withIsolatedHome (line 61) | function withIsolatedHome(fn) { function runTests (line 88) | function runTests() { FILE: tests/lib/selective-install.test.js function normalizePlanPath (line 30) | function normalizePlanPath(value) { function test (line 34) | function test(name, fn) { function runTests (line 46) | function runTests() { FILE: tests/lib/session-adapters.test.js function test (line 29) | function test(name, fn) { function withHome (line 40) | function withHome(homeDir, fn) { function canonicalSnapshot (line 63) | function canonicalSnapshot(overrides = {}) { method persistCanonicalSessionSnapshot (line 546) | persistCanonicalSessionSnapshot(snapshot, metadata) { function dmuxWorker (line 654) | function dmuxWorker(workerSlug, status = {}, overrides = {}) { function dmuxSnapshot (line 693) | function dmuxSnapshot(overrides = {}) { method recordCanonicalSessionSnapshot (line 860) | recordCanonicalSessionSnapshot(snapshotArg, metadata) { method recordSessionSnapshot (line 872) | recordSessionSnapshot(snapshotArg, metadata) { method createStateStore (line 885) | createStateStore() {} method loadStateStoreImpl (line 893) | loadStateStoreImpl() { method loadStateStoreImpl (line 962) | 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-bridge.test.js function test (line 13) | function test(name, fn) { function runTests (line 25) | 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... constant WORK_ITEMS_SCRIPT (line 19) | const WORK_ITEMS_SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'w... function test (line 21) | async function test(name, fn) { function createTempDir (line 33) | function createTempDir(prefix) { function cleanupTempDir (line 37) | function cleanupTempDir(dirPath) { function runNode (line 41) | function runNode(scriptPath, args = [], options = {}) { function createGhShim (line 52) | function createGhShim(binDir) { function parseJson (line 105) | function parseJson(stdout) { function seedStore (line 109) | async function seedStore(dbPath) { function runTests (line 309) | 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 16) | function test(name, fn) { function runTests (line 29) | 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/opencode-plugin-hooks.test.js function runTest (line 12) | function runTest(name, fn) { function loadPlugin (line 26) | async function loadPlugin() { function createClient (line 39) | function createClient() { function createFailingShell (line 52) | function createFailingShell() { function withTempProject (line 68) | async function withTempProject(files, fn) { function main (line 82) | async function main() { FILE: tests/plugin-manifest.test.js function test (line 42) | function test(name, fn) { function loadJsonObject (line 54) | function loadJsonObject(filePath, label) { function collectMarkdownFiles (line 72) | function collectMarkdownFiles(rootPath) { 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/auto-update.test.js function test (line 21) | function test(name, fn) { function createTempDir (line 33) | function createTempDir(prefix) { function cleanup (line 37) | function cleanup(dirPath) { function makeRecord (line 41) | function makeRecord({ repoRoot, homeDir, projectRoot, adapter, request, ... function ensureFakeRepo (line 74) | function ensureFakeRepo(repoRoot) { function runTests (line 83) | function runTests() { FILE: tests/scripts/build-opencode.test.js function runTest (line 10) | function runTest(name, fn) { function main (line 22) | function main() { FILE: tests/scripts/catalog.test.js constant SCRIPT (line 9) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'catalog.js'); function run (line 11) | function run(args = []) { function test (line 28) | function test(name, fn) { function runTests (line 40) | function runTests() { FILE: tests/scripts/check-unicode-safety.test.js function test (line 9) | function test(name, fn) { function runCheck (line 21) | function runCheck(root, args = []) { function makeTempRoot (line 31) | function makeTempRoot(prefix) { constant NEWLY_COVERED_RANGES (line 118) | const NEWLY_COVERED_RANGES = [ 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/codex-hooks.test.js constant TOML (line 10) | const TOML = require('@iarna/toml'); function test (line 22) | function test(name, fn) { function createTempDir (line 34) | function createTempDir(prefix) { function cleanup (line 38) | function cleanup(dirPath) { function runBash (line 42) | function runBash(scriptPath, args = [], env = {}, cwd = repoRoot) { function runNode (line 54) | function runNode(scriptPath, args = [], env = {}, cwd = repoRoot) { function makeHermeticCodexEnv (line 66) | function makeHermeticCodexEnv(homeDir, codexDir, extraEnv = {}) { FILE: tests/scripts/consult.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'consult.js'); function run (line 13) | function run(args = [], options = {}) { function parseJson (line 21) | function parseJson(stdout) { function findMatch (line 25) | function findMatch(payload, componentId) { function findMatchIndex (line 29) | function findMatchIndex(payload, componentId) { function test (line 33) | function test(name, fn) { function runTests (line 45) | function runTests() { FILE: tests/scripts/discussion-audit.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'discussion-a... function createTempDir (line 17) | function createTempDir(prefix) { function cleanup (line 21) | function cleanup(dirPath) { function discussionGhKey (line 25) | function discussionGhKey(owner, name, first = 100) { function discussionEnabledGhKey (line 29) | function discussionEnabledGhKey(owner, name) { function writeGhShim (line 33) | function writeGhShim(rootDir, responses) { function run (line 52) | function run(args = [], options = {}) { function runProcess (line 67) | function runProcess(args = [], options = {}) { function test (line 82) | function test(name, fn) { function runTests (line 94) | 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-dashboard.test.js function test (line 12) | function test(name, fn) { function runPython (line 24) | function runPython(source) { function runTests (line 49) | 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/gemini-adapt-agents.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'gemini-adapt... function run (line 13) | function run(args = [], options = {}) { function test (line 31) | function test(name, fn) { function createTempDir (line 43) | function createTempDir() { function cleanupTempDir (line 47) | function cleanupTempDir(dirPath) { function writeAgent (line 51) | function writeAgent(dirPath, name, body) { function runTests (line 56) | function runTests() { FILE: tests/scripts/harness-audit.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'harness-audi... function createTempDir (line 14) | function createTempDir(prefix) { function cleanup (line 18) | function cleanup(dirPath) { function buildEnv (line 22) | function buildEnv(options = {}) { function run (line 38) | function run(args = [], options = {}) { function runProcess (line 50) | function runProcess(args = [], options = {}) { function test (line 60) | function test(name, fn) { function runTests (line 72) | function runTests() { FILE: tests/scripts/install-apply.test.js constant SCRIPT (line 12) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'install-appl... constant DEFAULT_INSTALL_APPLY_TIMEOUT_MS (line 13) | const DEFAULT_INSTALL_APPLY_TIMEOUT_MS = process.platform === 'win32' ? ... function createTempDir (line 15) | function createTempDir(prefix) { function cleanup (line 19) | function cleanup(dirPath) { function readJson (line 23) | function readJson(filePath) { function run (line 27) | function run(args = [], options = {}) { function test (line 55) | function test(name, fn) { function runTests (line 67) | 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 = [], options = {}) { function test (line 29) | function test(name, fn) { function runTests (line 41) | 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-readme-clarity.test.js constant README (line 9) | const README = path.join(__dirname, '..', '..', 'README.md'); constant RULES_README (line 10) | const RULES_README = path.join(__dirname, '..', '..', 'rules', 'README.m... function test (line 12) | function test(name, fn) { function runTests (line 24) | 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/instinct-cli-projects.test.js function test (line 20) | function test(name, fn) { function createTempDir (line 32) | function createTempDir() { function cleanupDir (line 36) | function cleanupDir(dir) { function writeJson (line 40) | function writeJson(filePath, payload) { function readJson (line 45) | function readJson(filePath) { function writeInstinct (line 49) | function writeInstinct(filePath, id, confidence = 0.9) { function seedProject (line 67) | function seedProject(root, id, options = {}) { function projectHash (line 90) | function projectHash(value) { function runGit (line 94) | function runGit(cwd, args) { function runCli (line 103) | function runCli(root, args, options = {}) { 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/loop-status.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'loop-status.... constant NOW (line 19) | const NOW = '2026-04-30T10:00:00.000Z'; function run (line 21) | function run(args = [], options = {}) { function createTempHome (line 52) | function createTempHome() { function writeTranscript (line 56) | function writeTranscript(homeDir, projectSlug, fileName, entries) { function toolUse (line 68) | function toolUse(timestamp, sessionId, id, name, input = {}) { function toolResult (line 87) | function toolResult(timestamp, sessionId, toolUseId, content = 'ok') { function assistantMessage (line 105) | function assistantMessage(timestamp, sessionId, text) { function parsePayload (line 122) | function parsePayload(stdout) { function test (line 126) | function test(name, fn) { function runTests (line 138) | function runTests() { FILE: tests/scripts/manual-hook-install-docs.test.js constant README (line 9) | const README = path.join(__dirname, '..', '..', 'README.md'); constant HOOKS_README (line 10) | const HOOKS_README = path.join(__dirname, '..', '..', 'hooks', 'README.m... function test (line 12) | function test(name, fn) { function runTests (line 24) | function runTests() { FILE: tests/scripts/npm-publish-surface.test.js function runTest (line 10) | function runTest(name, fn) { function normalizePublishPath (line 22) | function normalizePublishPath(value) { function isCoveredByAncestor (line 26) | function isCoveredByAncestor(target, roots) { function buildExpectedPublishPaths (line 37) | function buildExpectedPublishPaths(repoRoot) { function main (line 99) | function main() { FILE: tests/scripts/observability-readiness.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'observabilit... function createTempDir (line 14) | function createTempDir(prefix) { function cleanup (line 18) | function cleanup(dirPath) { function writeFile (line 22) | function writeFile(rootDir, relativePath, content) { function run (line 28) | function run(args = [], options = {}) { function runProcess (line 37) | function runProcess(args = [], options = {}) { function seedMinimalRepo (line 46) | function seedMinimalRepo(rootDir, overrides = {}) { function test (line 148) | function test(name, fn) { function runTests (line 160) | function runTests() { FILE: tests/scripts/openclaw-persona-forge-gacha.test.js constant SCRIPT (line 5) | const SCRIPT = path.join( function findPython (line 14) | function findPython() { function runGacha (line 29) | function runGacha(pythonBin, arg) { function runTest (line 37) | function runTest(name, fn) { function assertSingleDrawOutput (line 49) | function assertSingleDrawOutput(result) { function main (line 55) | function main() { FILE: tests/scripts/operator-readiness-dashboard.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'operator-rea... function createTempDir (line 14) | function createTempDir(prefix) { function cleanup (line 18) | function cleanup(dirPath) { function writeFile (line 22) | function writeFile(rootDir, relativePath, content) { function seedRepo (line 28) | function seedRepo(rootDir, overrides = {}) { function run (line 256) | function run(args = [], options = {}) { function runProcess (line 265) | function runProcess(args = [], options = {}) { function buildSeededReport (line 274) | function buildSeededReport(rootDir) { function test (line 290) | function test(name, fn) { function runTests (line 302) | 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/platform-audit.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'platform-aud... function createTempDir (line 17) | function createTempDir(prefix) { function cleanup (line 21) | function cleanup(dirPath) { function writeFile (line 25) | function writeFile(rootDir, relativePath, content) { function seedRepo (line 31) | function seedRepo(rootDir, overrides = {}) { function discussionGhKey (line 96) | function discussionGhKey(owner, name, first = 100) { function discussionEnabledGhKey (line 100) | function discussionEnabledGhKey(owner, name) { function writeGhShim (line 104) | function writeGhShim(rootDir, responses) { function run (line 123) | function run(args = [], options = {}) { function runProcess (line 138) | function runProcess(args = [], options = {}) { function test (line 153) | function test(name, fn) { function runTests (line 165) | function runTests() { FILE: tests/scripts/post-bash-command-log.test.js function test (line 10) | function test(name, fn) { function runHook (line 22) | function runHook(mode, payload, homeDir) { FILE: tests/scripts/preview-pack-smoke.test.js constant SCRIPT (line 9) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'preview-pack... constant RELEASE_DIR (line 19) | const RELEASE_DIR = 'docs/releases/2.0.0-rc.1'; function createTempDir (line 21) | function createTempDir(prefix) { function cleanup (line 25) | function cleanup(dirPath) { function writeFile (line 29) | function writeFile(rootDir, relativePath, content) { function manifestContent (line 35) | function manifestContent() { function seedRepo (line 63) | function seedRepo(rootDir, overrides = {}) { function run (line 103) | function run(args = [], options = {}) { function runProcess (line 112) | function runProcess(args = [], options = {}) { function test (line 121) | function test(name, fn) { function runTests (line 133) | function runTests() { FILE: tests/scripts/release-approval-gate.test.js constant SCRIPT (line 9) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'release-appr... constant RELEASE_DIR (line 18) | const RELEASE_DIR = 'docs/releases/2.0.0-rc.1'; function createTempDir (line 20) | function createTempDir(prefix) { function cleanup (line 24) | function cleanup(dirPath) { function writeFile (line 28) | function writeFile(rootDir, relativePath, content) { function approvedPacketContent (line 34) | function approvedPacketContent(overrides = {}) { function finalLedgerContent (line 61) | function finalLedgerContent(extra = '') { function manifestContent (line 83) | function manifestContent() { function seedRepo (line 99) | function seedRepo(rootDir, overrides = {}) { function run (line 127) | function run(args = [], options = {}) { function runProcess (line 136) | function runProcess(args = [], options = {}) { function test (line 145) | function test(name, fn) { function runTests (line 157) | function runTests() { FILE: tests/scripts/release-publish.test.js function test (line 12) | function test(name, fn) { function load (line 24) | function load(relativePath) { FILE: tests/scripts/release-video-suite.test.js constant SCRIPT (line 11) | const SCRIPT = path.join(__dirname, '..', '..', 'scripts', 'release-vide... function createTempDir (line 22) | function createTempDir(prefix) { function cleanup (line 26) | function cleanup(dirPath) { function writeFile (line 30) | function writeFile(rootDir, relativePath, content = 'fixture') { function seedRepo (line 36) | function seedRepo(rootDir, overrides = {}) { function seedMedia (line 71) | function seedMedia(sourceRoot, suiteRoot) { function run (line 85) | function run(args = [], options = {}) { function runProcess (line 94) | function runProcess(args = [], options = {}) { function test (line 103) | function test(name, fn) { function runTests (line 115) | function runTests() { FILE: tests/scripts/release.test.js function test (line 26) | function test(name, fn) { function runTests (line 38) | 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 CLI_TIMEOUT_MS (line 15) | const CLI_TIMEOUT_MS = 30000; constant CURRENT_PACKAGE_VERSION (line 16) | const CURRENT_PACKAGE_VERSION = JSON.parse( constant CURRENT_MANIFEST_VERSION (line 19) | const CURRENT_MANIFEST_VERSION = JSON.parse( function createTempDir (line 27) | function createTempDir(prefix) { function cleanup (line 31) | function cleanup(dirPath) { function writeState (line 35) | function writeState(filePath, options) { function runNode (line 41) | function runNode(scriptPath, args = [], options = {}) { function normalizeComparablePath (line 68) | function normalizeComparablePath(filePath) { function pathListIncludes (line 73) | function pathListIncludes(paths, expectedPath) { function test (line 78) | function test(name, fn) { function runTests (line 90) | 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/sync-ecc-to-codex.test.js function test (line 39) | function test(name, fn) { function runTests (line 51) | function runTests() { FILE: tests/scripts/trae-install.test.js constant REPO_ROOT (line 11) | const REPO_ROOT = path.join(__dirname, '..', '..'); constant INSTALL_SCRIPT (line 12) | const INSTALL_SCRIPT = path.join(REPO_ROOT, '.trae', 'install.sh'); constant UNINSTALL_SCRIPT (line 13) | const UNINSTALL_SCRIPT = path.join(REPO_ROOT, '.trae', 'uninstall.sh'); function createTempDir (line 15) | function createTempDir(prefix) { function cleanup (line 19) | function cleanup(dirPath) { function runInstall (line 23) | function runInstall(options = {}) { function runUninstall (line 36) | function runUninstall(options = {}) { function readManifestLines (line 50) | function readManifestLines(projectRoot) { function test (line 58) | function test(name, fn) { function runTests (line 70) | 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( constant CLI_TIMEOUT_MS (line 20) | const CLI_TIMEOUT_MS = 30000; function createTempDir (line 26) | function createTempDir(prefix) { function cleanup (line 30) | function cleanup(dirPath) { function writeState (line 34) | function writeState(filePath, options) { function run (line 40) | function run(args = [], options = {}) { function test (line 65) | function test(name, fn) { function runTests (line 77) | function runTests() { FILE: tests/test_astraflow_provider.py function _tool (line 7) | def _tool() -> ToolDefinition: class _Completions (line 15) | class _Completions: method __init__ (line 16) | def __init__(self, response: SimpleNamespace) -> None: method create (line 20) | def create(self, **params): class _Client (line 25) | class _Client: method __init__ (line 26) | def __init__(self, response: SimpleNamespace) -> None: function _response (line 31) | def _response(**overrides) -> SimpleNamespace: function test_astraflow_provider_defaults_to_global_umodelverse_endpoint (line 43) | def test_astraflow_provider_defaults_to_global_umodelverse_endpoint(monk... function test_astraflow_cn_provider_uses_cn_endpoint_and_model_fallback (line 56) | def test_astraflow_cn_provider_uses_cn_endpoint_and_model_fallback(monke... function test_astraflow_provider_generates_openai_compatible_chat_completion (line 71) | def test_astraflow_provider_generates_openai_compatible_chat_completion(): function test_astraflow_provider_forwards_non_default_temperature (line 103) | def test_astraflow_provider_forwards_non_default_temperature(): function test_astraflow_provider_parses_tool_calls (line 113) | def test_astraflow_provider_parses_tool_calls(): function test_astraflow_provider_preserves_malformed_tool_arguments (line 129) | def test_astraflow_provider_preserves_malformed_tool_arguments(): FILE: tests/test_builder.py class TestPromptBuilder (line 7) | class TestPromptBuilder: method test_build_without_system (line 8) | def test_build_without_system(self): method test_build_with_system (line 16) | def test_build_with_system(self): method test_build_adds_system_from_keyword_options (line 27) | def test_build_adds_system_from_keyword_options(self): method test_build_adds_system_from_prompt_config (line 35) | def test_build_adds_system_from_prompt_config(self): method test_rejects_config_with_keyword_options (line 43) | def test_rejects_config_with_keyword_options(self): method test_empty_system_template_does_not_add_blank_system_message (line 50) | def test_empty_system_template_does_not_add_blank_system_message(self): method test_build_with_tools (line 57) | def test_build_with_tools(self): class TestAdaptMessagesForProvider (line 70) | class TestAdaptMessagesForProvider: method test_adapt_for_claude (line 71) | def test_adapt_for_claude(self): method test_adapt_for_openai (line 76) | def test_adapt_for_openai(self): method test_adapt_for_ollama (line 81) | def test_adapt_for_ollama(self): FILE: tests/test_claude_provider.py class FakeMessages (line 10) | class FakeMessages: method __init__ (line 11) | def __init__(self, response: SimpleNamespace) -> None: method create (line 14) | def create(self, **_params: object) -> SimpleNamespace: class FakeClient (line 18) | class FakeClient: method __init__ (line 19) | def __init__(self, response: SimpleNamespace) -> None: function make_provider (line 24) | def make_provider(response: SimpleNamespace) -> ClaudeProvider: function make_response (line 30) | def make_response(content: list[SimpleNamespace], stop_reason: str = "to... function test_generate_collects_text_and_tool_use_blocks (line 40) | def test_generate_collects_text_and_tool_use_blocks() -> None: function test_generate_collects_multiple_tool_use_blocks (line 62) | def test_generate_collects_multiple_tool_use_blocks() -> None: function test_generate_copies_tool_use_dict_arguments (line 85) | def test_generate_copies_tool_use_dict_arguments() -> None: function test_generate_text_only_has_no_tool_calls (line 100) | def test_generate_text_only_has_no_tool_calls() -> None: FILE: tests/test_executor.py class TestToolRegistry (line 6) | class TestToolRegistry: method test_register_and_get (line 7) | def test_register_and_get(self): method test_list_tools (line 24) | def test_list_tools(self): class TestToolExecutor (line 34) | class TestToolExecutor: method test_execute_success (line 35) | def test_execute_success(self): method test_execute_unknown_tool (line 57) | def test_execute_unknown_tool(self): method test_execute_all (line 66) | def test_execute_all(self): FILE: tests/test_provider_tools.py function _tool (line 11) | def _tool() -> ToolDefinition: class _OpenAICompletions (line 19) | class _OpenAICompletions: method __init__ (line 20) | def __init__(self, response: SimpleNamespace | None = None) -> None: method create (line 24) | def create(self, **params): class _OpenAIClient (line 31) | class _OpenAIClient: method __init__ (line 32) | def __init__(self, response: SimpleNamespace | None = None) -> None: class _AnthropicMessages (line 37) | class _AnthropicMessages: method __init__ (line 38) | def __init__(self) -> None: method create (line 41) | def create(self, **params): class _AnthropicClient (line 51) | class _AnthropicClient: method __init__ (line 52) | def __init__(self) -> None: function _openai_response (line 57) | def _openai_response(**overrides) -> SimpleNamespace: function test_openai_provider_serializes_tools_for_chat_completions (line 67) | def test_openai_provider_serializes_tools_for_chat_completions(): function test_openai_provider_can_be_constructed_without_credentials (line 87) | def test_openai_provider_can_be_constructed_without_credentials(monkeypa... function test_openai_provider_rejects_empty_or_filtered_responses (line 95) | def test_openai_provider_rejects_empty_or_filtered_responses(): function test_openai_provider_allows_missing_usage (line 107) | def test_openai_provider_allows_missing_usage(): function test_claude_provider_serializes_tools_for_messages_api (line 117) | def test_claude_provider_serializes_tools_for_messages_api(): FILE: tests/test_resolver.py class TestGetProvider (line 6) | class TestGetProvider: method test_get_claude_provider (line 7) | def test_get_claude_provider(self): method test_get_openai_provider (line 12) | def test_get_openai_provider(self): method test_get_ollama_provider (line 17) | def test_get_ollama_provider(self): method test_get_astraflow_provider (line 22) | def test_get_astraflow_provider(self): method test_get_astraflow_cn_provider (line 27) | def test_get_astraflow_cn_provider(self): method test_get_provider_by_enum (line 32) | def test_get_provider_by_enum(self): method test_invalid_provider_raises (line 36) | def test_invalid_provider_raises(self): method test_saved_llm_env_selects_provider (line 40) | def test_saved_llm_env_selects_provider(self, monkeypatch, tmp_path): method test_env_provider_overrides_saved_llm_env (line 49) | def test_env_provider_overrides_saved_llm_env(self, monkeypatch, tmp_p... method test_env_provider_is_normalized (line 58) | def test_env_provider_is_normalized(self, monkeypatch): method test_astraflow_env_provider_is_normalized (line 65) | def test_astraflow_env_provider_is_normalized(self, monkeypatch): method test_explicit_provider_overrides_saved_llm_env (line 72) | def test_explicit_provider_overrides_saved_llm_env(self, monkeypatch, ... method test_saved_llm_env_selects_astraflow_cn_provider (line 81) | def test_saved_llm_env_selects_astraflow_cn_provider(self, monkeypatch... FILE: tests/test_templates.py function restore_template_registry (line 14) | def restore_template_registry(): function test_register_template_exposes_public_template_mapping (line 25) | def test_register_template_exposes_public_template_mapping(): function test_templates_mapping_remains_mutable_for_existing_callers (line 34) | def test_templates_mapping_remains_mutable_for_existing_callers(): function test_deregister_template_removes_named_template (line 41) | def test_deregister_template_removes_named_template(): function test_clear_templates_removes_all_registered_templates (line 50) | def test_clear_templates_removes_all_registered_templates(): function test_register_template_rejects_empty_inputs (line 69) | def test_register_template_rejects_empty_inputs(name, template, error_ma... FILE: tests/test_types.py class TestRole (line 15) | class TestRole: method test_role_values (line 16) | def test_role_values(self): class TestProviderType (line 23) | class TestProviderType: method test_provider_values (line 24) | def test_provider_values(self): class TestMessage (line 32) | class TestMessage: method test_create_message (line 33) | def test_create_message(self): method test_message_to_dict (line 40) | def test_message_to_dict(self): class TestToolDefinition (line 48) | class TestToolDefinition: method test_create_tool (line 49) | def test_create_tool(self): method test_tool_to_dict (line 58) | def test_tool_to_dict(self): method test_tool_to_openai_tool (line 68) | def test_tool_to_openai_tool(self): method test_tool_to_anthropic_tool (line 86) | def test_tool_to_anthropic_tool(self): class TestToolCall (line 100) | class TestToolCall: method test_create_tool_call (line 101) | def test_create_tool_call(self): class TestToolResult (line 108) | class TestToolResult: method test_create_tool_result (line 109) | def test_create_tool_result(self): class TestLLMInput (line 115) | class TestLLMInput: method test_create_input (line 116) | def test_create_input(self): method test_input_to_dict (line 122) | def test_input_to_dict(self): class TestLLMOutput (line 130) | class TestLLMOutput: method test_create_output (line 131) | def test_create_output(self): method test_output_with_tool_calls (line 136) | def test_output_with_tool_calls(self): class TestModelInfo (line 142) | class TestModelInfo: method test_create_model_info (line 143) | def test_create_model_info(self):