feat(FN-1216): rename extension tools to fn_* across CLI and docs

- Rename all pi extension tool registrations from kb_* to fn_* across task, mission, and agent tool families
- Update extension and skill-sync tests plus Fusion skill docs/workflows to assert and document the new fn_* tool names
- Align product-identity strings across core, dashboard, and CLI references, including GitHub import examples, User-Agent headers, and terminal TERM_PROGRAM
- Add a @gsxdsm/fusion minor changeset describing the extension tool-prefix rename
This commit is contained in:
gsxdsm
2026-04-08 14:26:30 -07:00
parent 324f28a90c
commit 9ad0b8be24
32 changed files with 371 additions and 366 deletions

View File

@@ -21,7 +21,7 @@ import type { AgentCapability, AgentPromptTemplate, AgentPromptsConfig } from ".
// Built-in prompt text (derived from engine constants — keep in sync)
// ---------------------------------------------------------------------------
const EXECUTOR_PROMPT_TEXT = `You are a task execution agent for "kb", an AI-orchestrated task board.
const EXECUTOR_PROMPT_TEXT = `You are a task execution agent for "fn", an AI-orchestrated task board.
You are working in a git worktree isolated from the main branch. Your job is to implement the task described in the PROMPT.md specification you're given.
@@ -143,7 +143,7 @@ Tests and typecheck are also hard quality gates:
- If the repository exposes a typecheck command, run it and keep fixing failures until it passes
- Do not stop at "out of scope" if additional fixes are required to restore green tests, build, or typecheck`;
const TRIAGE_PROMPT_TEXT = `You are a task specification agent for "kb", an AI-orchestrated task board.
const TRIAGE_PROMPT_TEXT = `You are a task specification agent for "fn", an AI-orchestrated task board.
Your job: take a rough task description and produce a fully specified PROMPT.md that another AI agent can execute autonomously in a fresh context with zero memory of this conversation.
@@ -372,7 +372,7 @@ access to the codebase and can run commands to inspect code.
* appended dynamically by the merger's buildMergeSystemPrompt function).
* Derived from the merger's hardcoded prompt — keep in sync.
*/
const MERGER_BASE_PROMPT_TEXT = `You are a merge agent for "kb", an AI-orchestrated task board.
const MERGER_BASE_PROMPT_TEXT = `You are a merge agent for "fn", an AI-orchestrated task board.
Your job is to finalize a squash merge: resolve any conflicts and write a good commit message.
All changes from the branch are squashed into a single commit.
@@ -390,7 +390,7 @@ If there are merge conflicts:
// Additional role variant prompt texts
// ---------------------------------------------------------------------------
const SENIOR_ENGINEER_PROMPT_TEXT = `You are a senior engineering agent for "kb", an AI-orchestrated task board.
const SENIOR_ENGINEER_PROMPT_TEXT = `You are a senior engineering agent for "fn", an AI-orchestrated task board.
You are working in a git worktree isolated from the main branch. Your job is to implement the task described in the PROMPT.md specification you're given. You operate with a high degree of autonomy, making architectural decisions and balancing trade-offs independently.
@@ -614,7 +614,7 @@ submissions to a high bar for correctness, security, and maintainability.
- [Optional improvements, not blocking]
\`\`\``;
const CONCISE_TRIAGE_PROMPT_TEXT = `You are a task specification agent for "kb". Produce a concise, actionable PROMPT.md from the given task description.
const CONCISE_TRIAGE_PROMPT_TEXT = `You are a task specification agent for "fn". Produce a concise, actionable PROMPT.md from the given task description.
## What you produce
Write a PROMPT.md specification to the given path. Be brief and precise — avoid verbosity.

View File

@@ -76,7 +76,7 @@ type TypedEventEmitter<Events extends Record<string, unknown[]>> = {
/** Options for AgentStore constructor */
export interface AgentStoreOptions {
/** Root directory for kb data (default: .fusion) */
/** Root directory for fn data (default: .fusion) */
rootDir?: string;
}

View File

@@ -1,5 +1,5 @@
/**
* CentralCore — Main API for kb's multi-project central infrastructure.
* CentralCore — Main API for fn's multi-project central infrastructure.
*
* Provides project registry, health tracking, unified activity feed,
* and global concurrency management across all registered projects.
@@ -1560,7 +1560,7 @@ export class CentralCore extends EventEmitter<CentralCoreEvents> {
/**
* Get the global directory path.
*
* @returns Absolute path to global kb directory
* @returns Absolute path to global fn directory
*/
getGlobalDir(): string {
return this.globalDir;

View File

@@ -1,5 +1,5 @@
/**
* Central SQLite database module for kb's multi-project architecture.
* Central SQLite database module for fn's multi-project architecture.
*
* Uses Node.js built-in `node:sqlite` (DatabaseSync) for simplified
* synchronous transaction handling. The database runs in WAL mode

View File

@@ -39,7 +39,7 @@ export function detectLegacyData(kbDir: string): boolean {
}
/**
* Get the migration status of a kb directory.
* Get the migration status of a fn directory.
*/
export function getMigrationStatus(kbDir: string): {
hasLegacy: boolean;

View File

@@ -1,5 +1,5 @@
/**
* SQLite database module for kb task board storage.
* SQLite database module for fn task board storage.
*
* Uses Node.js built-in `node:sqlite` (DatabaseSync) for simplified
* synchronous transaction handling. The database runs in WAL mode

View File

@@ -3,7 +3,7 @@
*
* Handles the transition from single-project to multi-project mode:
* - Detects if this is a fresh installation (no projects registered)
* - Auto-detects existing kb projects from current working directory
* - Auto-detects existing fn projects from current working directory
* - Guides users through initial project registration
* - Provides setup state for dashboard wizard UI
*
@@ -87,7 +87,7 @@ export class FirstRunExperience {
* Detect or create the initial project.
*
* Tries the following in order:
* 1. Detect existing kb project from `process.cwd()`
* 1. Detect existing fn project from `process.cwd()`
* 2. If found, auto-register it and return
* 3. If not found, return guidance for manual setup
*

View File

@@ -1,7 +1,7 @@
/**
* Global settings store — manages user-level settings in `~/.pi/fusion/settings.json`.
*
* Global settings persist across all kb projects for the current user.
* Global settings persist across all fn projects for the current user.
* They include UI theme preferences, default AI model selection, and
* notification configuration.
*
@@ -34,7 +34,7 @@ export function defaultGlobalDir(): string {
* Resolve the active global directory.
*
* If the new `~/.pi/fusion` directory does not exist but the legacy
* `~/.pi/kb` directory does, move the legacy directory into place so
* `~/.pi/fusion` directory does, move the legacy directory into place so
* existing settings and central metadata continue to work after upgrade.
*/
export function resolveGlobalDir(dir?: string): string {

View File

@@ -37,7 +37,7 @@ export interface MessageStoreEvents {
/** Options for MessageStore constructor */
export interface MessageStoreOptions {
/** Root directory for kb data (default: .fusion) */
/** Root directory for fn data (default: .fusion) */
rootDir?: string;
/** Optional hook invoked when a message is addressed to an agent */
onMessageToAgent?: (message: Message) => void;

View File

@@ -1337,7 +1337,7 @@ export class MissionStore extends EventEmitter<MissionStoreEvents> {
/**
* Triage a feature by creating a new task and linking it.
*
* Creates a kb task from the feature's title and description, then links
* Creates a fn task from the feature's title and description, then links
* the feature to the newly created task using `linkFeatureToTask()`.
* The feature status transitions from "defined" to "triaged".
*

View File

@@ -1,10 +1,10 @@
/**
* Mission hierarchy types for kb project planning.
* Mission hierarchy types for fn project planning.
*
* A Mission represents a high-level objective that can span multiple milestones.
* Each Milestone represents a phase of work within a mission.
* Each Slice represents a work unit within a milestone that can be activated for implementation.
* Each Feature represents a deliverable within a slice that can be linked to a kb Task.
* Each Feature represents a deliverable within a slice that can be linked to a fn Task.
*
* The hierarchy: Mission → Milestone → Slice → Feature → (optional) Task
*/
@@ -153,7 +153,7 @@ export interface Milestone {
/**
* A Slice represents a work unit within a milestone.
* Slices can be activated for implementation, linking to kb tasks.
* Slices can be activated for implementation, linking to fn tasks.
*/
export interface Slice {
/** Unique identifier (e.g., "SL-P4T2WX-D5E8") */
@@ -178,7 +178,7 @@ export interface Slice {
/**
* A MissionFeature represents a deliverable within a slice.
* Features can be linked to kb Tasks for implementation.
* Features can be linked to fn Tasks for implementation.
*/
export interface MissionFeature {
/** Unique identifier (e.g., "F-J6K9AB-G7H3") */

View File

@@ -20,7 +20,7 @@ export interface ReflectionStoreEvents {
/** Constructor options for ReflectionStore. */
export interface ReflectionStoreOptions {
/** Root kb data directory (default: .fusion). */
/** Root fn data directory (default: .fusion). */
rootDir?: string;
}

View File

@@ -1,7 +1,7 @@
/**
* Settings export and import functionality.
*
* This module provides utilities for exporting and importing kb settings,
* This module provides utilities for exporting and importing fn settings,
* supporting both global (~/.pi/fusion/settings.json) and project-level (.fusion/config.json)
* settings for backup, migration, and sharing.
*/

View File

@@ -566,8 +566,8 @@ export interface Task {
* dependency's branch instead of HEAD. Cleared after worktree creation. */
baseBranch?: string;
/** Actual git branch name used for this task's worktree. May differ from
* the conventional `kb/{task-id}` when conflict recovery generated a
* unique suffixed name (e.g., `kb/fn-042-2`). The merger and PR systems
* the conventional `fn/{task-id}` when conflict recovery generated a
* unique suffixed name (e.g., `fn/fn-042-2`). The merger and PR systems
* read this field instead of deriving the branch from the task ID. */
branch?: string;
/** Base commit SHA for creating this task's worktree. Used with baseBranch
@@ -709,7 +709,7 @@ export interface TaskCreateInput {
// Settings are split into two scopes:
//
// 1. **GlobalSettings** — User preferences stored in `~/.pi/fusion/settings.json`.
// These persist across all kb projects for the current user (theme, default
// These persist across all fn projects for the current user (theme, default
// AI models, notification preferences).
//
// 2. **ProjectSettings** — Project-specific workflow and resource settings stored
@@ -729,7 +729,7 @@ export type SettingsScope = "global" | "project";
/**
* Global (user-level) settings stored in `~/.pi/fusion/settings.json`.
*
* These are user preferences that persist across all kb projects.
* These are user preferences that persist across all fn projects.
* The dashboard UI shows these under a "Global" section.
*/
export interface GlobalSettings {
@@ -777,7 +777,7 @@ export interface GlobalSettings {
ntfyDashboardHost?: string;
/** The default project ID for CLI operations when --project flag is not provided.
* Used to determine which project to operate on when not in a project directory.
* Set via `kb project set-default <name>`. */
* Set via `fn project set-default <name>`. */
defaultProjectId?: string;
/** Whether the first-run setup wizard has been completed.
* Set to true when the user completes the multi-project setup process.
@@ -854,7 +854,7 @@ export interface ProjectSettings {
/** Controls how worktree directory names are generated when creating fresh worktrees.
* Only applies when recycleWorktrees is NOT enabled (pooled worktrees retain their existing names).
* - "random": Human-friendly adjective-noun names (e.g., swift-falcon) — default
* - "task-id": Use the task ID (e.g., kb-042)
* - "task-id": Use the task ID (e.g., fn-042)
* - "task-title": Use a slugified version of the task title (e.g., fix-login-bug)
* Default: "random". */
worktreeNaming?: "random" | "task-id" | "task-title";