/** * @deprecated v1.3.5 — the `assets/` bundle dir was retired; its only remaining * contents (`.env.example`, `docker/`) moved to the bundle root. Resolves to the * now-absent `/assets` so the two historical migrations that probe * `assets/{agents,routines}` (already removed in v1.1/v1.3.1) keep no-op'ing. * New code should use `getBundleRoot()` + the specific file/dir. */ export declare function getAssetsDir(): string; /** * Workspace root — the directory that contains either `.solosquad/` (v0.2.2+) * or the legacy layout markers (v0.1.x: agents/, routines/, core/). * Walks up from CWD. Falls back to CWD if nothing is found (fresh install). */ export declare function getWorkspaceRoot(): string; /** Back-compat: legacy callers expect CWD. Kept as alias during migration. */ export declare function getWorkspaceDir(): string; /** v0.2.2+: path to the hidden `.solosquad/` config directory. */ export declare function getSolosquadConfigDir(workspace?: string): string; /** v0.2.2+: path to workspace.yaml. */ export declare function getWorkspaceYamlPath(workspace?: string): string; /** v0.2.2+: path to .env (inside .solosquad/). */ export declare function getEnvPath(workspace?: string): string; /** Agents dir — v0.2.2 looks in .solosquad/agents; falls back to workspace-root agents/ for legacy, then the bundle. */ export declare function getAgentsDir(): string; /** * v1.3.2 — the bundled actor roster, resolved *deterministically* from the * installed package root (via getBundleRoot → __dirname), independent of the * current working directory. * * Use this (not getAgentsDir) wherever the intended scope is "the canonical * actors SoloSquad ships" — e.g. `agent validate --graph`, `workflow validate` * agent-ref resolution, and the adoption collision roster (§10.4). getAgentsDir * walks *up from cwd* to find a workspace, so when the package checkout itself * lives inside an unrelated SoloSquad workspace (a dev machine, or a user who * cloned the repo into their workspace tree), it would otherwise validate that * ancestor workspace's — possibly stale — agents instead of the shipped bundle. */ export declare function getBundledAgentsDir(): string; /** * v0.6 §2.3 — Workspace knowledge layer. * * User-accumulated craft, decision frameworks, and glossaries that are * orthogonal to any single agent role. Resolution mirrors `getAgentsDir()` * and `getCoreDir()`: * 1. `/.solosquad/knowledge/` (user-authored, top priority) * 2. `/knowledge/` (legacy out-of-config-dir layout, defensive) * 3. `/knowledge/` (bundled starter guide — top-level since v1.1; * the old `assets/knowledge/` source was removed in v1.3.1 §9) * * Always returns *some* path so callers can `fs.existsSync` without an extra * undefined check — the bundled dir is the last-resort fallback. */ export declare function getKnowledgeDir(workspace?: string): string; /** * v1.1 — Bundle root (the directory above `assets/`). Used by new * top-level bundled folders introduced in v1.1: `agents/`, `skills/`, * `teams/`, `user/`, `crons/`. These supersede the old `assets/*` * layout but the migration to `assets/` is gradual — both layouts may * coexist during the transition. */ export declare function getBundleRoot(): string; /** * v1.1 — `agents/main//` (workspace bundle). Main bot SKILL.md * files: pm, engineer, designer, marketer (chief lives org-side). * Resolution mirrors getAgentsDir: workspace override > bundle. */ export declare function getMainAgentsDir(): string; /** * v1.1 — `agents/specialists//` (workspace bundle, flat). Members * of teams are declared in `teams//composition.yaml`, not by * folder nesting. */ export declare function getSpecialistsDir(): string; /** * v1.1 — `skills//` (workspace bundle, flat). agentskills.io- * compliant: each skill folder has SKILL.md + optional assets/, scripts/, * references/. */ export declare function getSkillsDir(): string; /** * v1.3.2 — the bundled skills dir, resolved deterministically from the package * root (cwd-independent). The skill-manager counterpart to * getBundledAgentsDir(): use it wherever the scope is "the skills SoloSquad * ships" (the adoption collision roster, bundled workflow templates), so an * ancestor workspace's `.solosquad/skills` override can never shadow the bundle. */ export declare function getBundledSkillsDir(): string; /** * v1.1 — `teams//` (workspace bundle). KNOWLEDGE.md + OKR.md + * composition.yaml per team. Four known teams: product, engineering, * design, marketing. */ export declare function getTeamsDir(): string; /** v1.1 — `user/` (workspace bundle): profile.md, voice.md, preferences.md. */ export declare function getUserDir(): string; /** * v1.3.x — `crons/` (workspace bundle). Renamed from `schedules/` (v1.1) and * `routines/` (v1.0.x). Each `.md` file = a cron prompt run via node-cron. This * is the canonical resolver the scheduler reads (v1.3.1 §9 wired `loadCronPrompt` * here). * * Priority preserves existing-workspace customizations across the rename: * 1. `/.solosquad/crons/` (v1.3.x user override, canonical) * 2. `/.solosquad/schedules/` (v1.1 user override — legacy name) * 3. `/.solosquad/routines/` (v1.0.x user override — legacy name; * both legacy dirs are checked before the bundle so prior customizations * still win until the cron-rename migration moves them) * 4. `/crons/` (legacy out-of-config layout, defensive) * 5. `/crons/` (bundled canonical, last resort) */ export declare function getCronsDir(): string; /** * v1.3.5 §3.9 B-D3 — canonical WRITE target for an org's user cron defs/prompts. * Crons are now **org-scoped** (`/crons/`), aligning with workflow * (`/workflows/`) and goal (`/goals/`). Each org owns its crons, so a * cron only fires for its org (was: `.solosquad/crons/` workspace-global, firing * for every org). The `1.3.4-to-1.3.5` migration relocates the legacy dir. * * (v1.3.3 §C history: was `/.solosquad/crons`. Unlike getCronsDir() * — a read-resolver that falls back to the bundle for built-in prompts — this is * a write target so `cron new/edit/delete` never write into the installed * package. The dir is created lazily by the writer.) */ export declare function getCronsWriteDir(orgSlug: string, workspace?: string): string; /** * v1.3.5 §3.9 B-D3 — the workspace-global legacy user-cron dir * (`/.solosquad/crons`). Pre-1.3.5 write target; retained so the * migration and a defensive runtime fallback can still find un-migrated defs. */ export declare function getLegacyCronsWriteDir(workspace?: string): string; /** Products file (v0.1.x legacy only). v0.2.2+ uses .org.yaml per organization. */ export declare function getProductsFile(): string; /** * Directory that holds "product/organization" folders. * * - v0.2.2+: organizations live directly under the workspace root, so this * returns the workspace root itself. Legacy callers looking up * `//...` still work because the slug sits at the workspace root. * - v0.1.x: REPOS_BASE_PATH env var (or ~/repos fallback). * * Kept under this name because existing bot/scheduler/adapter code imports it; * migration scripts still read `process.env.REPOS_BASE_PATH` directly when * they need the original value. */ export declare function getReposBase(): string; /** v0.2.2+: path to an org directory under the workspace. */ export declare function getOrgDir(orgSlug: string, workspace?: string): string; /** v0.2.2+: path to an org's `repositories/` container folder. */ export declare function getRepositoriesDir(orgSlug: string, workspace?: string): string; /** v0.2.2+: path to a specific repo directory (under `/repositories/`). */ export declare function getRepoDir(orgSlug: string, repoSlug: string, workspace?: string): string; /** * Resolve the runtime cwd for a given org/repo. * * Priority (v0.9.1+): * 1. **path-reference (model B)**: `//repositories/.yaml` * (file, not directory) has a `path:` field → resolve to that absolute * external path (validated to exist). * 2. **legacy tree (model A)**: `//repositories//` * directory exists → use it (v0.8.x and earlier default). * 3. **legacy root (org=repo, pre-sync)**: `/.git` exists → org root. * 4. Fallback: org root. * * See `docs/plan/v0.9.1-workspace-repo-relationship.md` §7 for the design * rationale (path-reference becomes the v0.9+ default; the legacy tree stays * permanently supported for backward-compat). */ export declare function resolveRepoCwd(orgSlug: string, repoSlug: string | null, workspace?: string): string; /** System-reserved folder names that must not be treated as repos. */ export declare const RESERVED_ORG_CHILDREN: Set;