diff --git a/packages/agentstack/src/index.test.ts b/packages/agentstack/src/index.test.ts index 99bc1a7..31b3b6d 100644 --- a/packages/agentstack/src/index.test.ts +++ b/packages/agentstack/src/index.test.ts @@ -29,6 +29,7 @@ describe("DID helpers", () => { it("rejects non-CoinPay DIDs", () => { expect(parseDid("did:web:example.com")).toBeNull(); expect(parseDid("did:coinpay:bot:abc")).toBeNull(); + expect(parseDid("did:coinpay:agent:abc:extra")).toBeNull(); }); }); diff --git a/packages/agentstack/src/index.ts b/packages/agentstack/src/index.ts index d5ea46c..319ad1f 100644 --- a/packages/agentstack/src/index.ts +++ b/packages/agentstack/src/index.ts @@ -25,7 +25,9 @@ export const agentDid = (id: string) => makeDid("agent", id); export function parseDid(did: string): { kind: DidKind; id: string } | null { const prefix = `${DID_METHOD}:`; if (!did.startsWith(prefix)) return null; - const [kind, id] = did.slice(prefix.length).split(":"); + const parts = did.slice(prefix.length).split(":"); + if (parts.length !== 2) return null; + const [kind, id] = parts; if ((kind !== "user" && kind !== "agent") || !id) return null; return { kind, id }; }