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:
@@ -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.
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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
|
||||
*
|
||||
|
||||
@@ -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 {
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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".
|
||||
*
|
||||
|
||||
@@ -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") */
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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.
|
||||
*/
|
||||
|
||||
@@ -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";
|
||||
|
||||
Reference in New Issue
Block a user