- Move src/ → plugin/ with subdirectories: - plugin/core/ (business logic, models, store, permissions, utils, memory) - plugin/tools/ (query, resources) - plugin/commands/ (placeholder for slash commands) - plugin/hooks/ (placeholder for lifecycle hooks) - plugin/index.ts (wiring layer only, no business logic) - Add install.mjs with --install, --uninstall, --openclaw-profile-path - Add skills/ and docs/ root directories - Move planning docs (PLAN.md, FEAT.md, AGENT_TASKS.md) to docs/ - Remove old scripts/install.sh - Update tsconfig rootDir: src → plugin - Update README.md and README.zh.md with new layout - Bump version to 0.2.0 - All tests pass
11 lines
289 B
TypeScript
11 lines
289 B
TypeScript
const SAFE = /[^a-z0-9]+/g;
|
|
|
|
export function slug(input: string): string {
|
|
return input.trim().toLowerCase().replace(SAFE, "-").replace(/^-+|-+$/g, "");
|
|
}
|
|
|
|
export function makeId(prefix: string, input: string): string {
|
|
const s = slug(input);
|
|
return `${prefix}:${s || "unknown"}`;
|
|
}
|