555e282cc4
pi-agent-plugin checks / lint (push) Has been cancelled
pi-agent-plugin checks / test (20) (push) Has been cancelled
pi-agent-plugin checks / test (22) (push) Has been cancelled
pi-agent-plugin checks / build (push) Has been cancelled
TypeScript SDK CI / check_changes (push) Has been cancelled
TypeScript SDK CI / changelog_check (push) Has been cancelled
ci / changelog_check (push) Has been cancelled
ci / check_changes (push) Has been cancelled
ci / build_mem0 (3.10) (push) Has been cancelled
ci / build_mem0 (3.11) (push) Has been cancelled
ci / build_mem0 (3.12) (push) Has been cancelled
CLI Node CI / lint (push) Has been cancelled
CLI Node CI / test (20) (push) Has been cancelled
CLI Node CI / test (22) (push) Has been cancelled
CLI Node CI / build (push) Has been cancelled
CLI Python CI / lint (push) Has been cancelled
CLI Python CI / test (3.10) (push) Has been cancelled
CLI Python CI / test (3.11) (push) Has been cancelled
CLI Python CI / test (3.12) (push) Has been cancelled
CLI Python CI / build (push) Has been cancelled
openclaw checks / lint (push) Has been cancelled
openclaw checks / test (20) (push) Has been cancelled
openclaw checks / test (22) (push) Has been cancelled
openclaw checks / build (push) Has been cancelled
opencode-plugin checks / build (push) Has been cancelled
TypeScript SDK CI / build_ts_sdk (20) (push) Has been cancelled
TypeScript SDK CI / build_ts_sdk (22) (push) Has been cancelled
TypeScript SDK CI / integration_ts_sdk (20) (push) Has been cancelled
TypeScript SDK CI / integration_ts_sdk (22) (push) Has been cancelled
21 lines
870 B
TypeScript
21 lines
870 B
TypeScript
/**
|
|
* Project identity resolution for the Mem0 OpenCode plugin.
|
|
*
|
|
* The project id (`app_id`) scopes memories to a repo. We derive it from the
|
|
* git remote so it is stable across clones, worktrees, and sub-directories —
|
|
* falling back (in opencode-mem0.ts) to the git repo root dir name, then the
|
|
* cwd. Keeping the parser pure makes the tricky remote formats testable.
|
|
*/
|
|
|
|
/**
|
|
* Parse `owner/repo` out of a git remote URL and return it as `owner-repo`.
|
|
* Handles https, scp-style ssh, custom ssh host aliases (e.g.
|
|
* `git@github.com-work:owner/repo.git`), an optional `.git` suffix, and a
|
|
* trailing slash. Returns null when no owner/repo can be found.
|
|
*/
|
|
export function parseProjectFromRemote(remote: string): string | null {
|
|
const m = remote.trim().match(/[:/]([^/:]+)\/([^/:]+?)(?:\.git)?\/?$/);
|
|
if (!m) return null;
|
|
return `${m[1]}-${m[2]}`;
|
|
}
|