@sundaeswap/sprinkles 0.7.0 → 0.8.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +178 -181
- package/dist/cjs/Sprinkle/__tests__/builtin-actions.test.js +4 -4
- package/dist/cjs/Sprinkle/__tests__/builtin-actions.test.js.map +1 -1
- package/dist/cjs/Sprinkle/__tests__/cli-adapter.test.js +25 -3
- package/dist/cjs/Sprinkle/__tests__/cli-adapter.test.js.map +1 -1
- package/dist/cjs/Sprinkle/__tests__/fill-in-struct.test.js +15 -1
- package/dist/cjs/Sprinkle/__tests__/fill-in-struct.test.js.map +1 -1
- package/dist/cjs/Sprinkle/__tests__/mcp-adapter.test.js +7 -9
- package/dist/cjs/Sprinkle/__tests__/mcp-adapter.test.js.map +1 -1
- package/dist/cjs/Sprinkle/__tests__/native-script.test.js +390 -0
- package/dist/cjs/Sprinkle/__tests__/native-script.test.js.map +1 -0
- package/dist/cjs/Sprinkle/__tests__/utility-actions.test.js +367 -0
- package/dist/cjs/Sprinkle/__tests__/utility-actions.test.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/builtin/addressbook-actions.js +164 -0
- package/dist/cjs/Sprinkle/actions/builtin/addressbook-actions.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/builtin/index.js +60 -3
- package/dist/cjs/Sprinkle/actions/builtin/index.js.map +1 -1
- package/dist/cjs/Sprinkle/actions/builtin/native-script.js +139 -0
- package/dist/cjs/Sprinkle/actions/builtin/native-script.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/builtin/utility-actions.js +218 -0
- package/dist/cjs/Sprinkle/actions/builtin/utility-actions.js.map +1 -0
- package/dist/cjs/Sprinkle/actions/cli-adapter.js +20 -2
- package/dist/cjs/Sprinkle/actions/cli-adapter.js.map +1 -1
- package/dist/cjs/Sprinkle/actions/index.js +12 -0
- package/dist/cjs/Sprinkle/actions/index.js.map +1 -1
- package/dist/cjs/Sprinkle/actions/mcp-adapter.js +146 -4
- package/dist/cjs/Sprinkle/actions/mcp-adapter.js.map +1 -1
- package/dist/cjs/Sprinkle/index.js +282 -6
- package/dist/cjs/Sprinkle/index.js.map +1 -1
- package/dist/cjs/Sprinkle/schemas.js +17 -1
- package/dist/cjs/Sprinkle/schemas.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/builtin-actions.test.js +4 -4
- package/dist/esm/Sprinkle/__tests__/builtin-actions.test.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/cli-adapter.test.js +25 -3
- package/dist/esm/Sprinkle/__tests__/cli-adapter.test.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/fill-in-struct.test.js +15 -1
- package/dist/esm/Sprinkle/__tests__/fill-in-struct.test.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/mcp-adapter.test.js +7 -9
- package/dist/esm/Sprinkle/__tests__/mcp-adapter.test.js.map +1 -1
- package/dist/esm/Sprinkle/__tests__/native-script.test.js +388 -0
- package/dist/esm/Sprinkle/__tests__/native-script.test.js.map +1 -0
- package/dist/esm/Sprinkle/__tests__/utility-actions.test.js +365 -0
- package/dist/esm/Sprinkle/__tests__/utility-actions.test.js.map +1 -0
- package/dist/esm/Sprinkle/actions/builtin/addressbook-actions.js +159 -0
- package/dist/esm/Sprinkle/actions/builtin/addressbook-actions.js.map +1 -0
- package/dist/esm/Sprinkle/actions/builtin/index.js +8 -3
- package/dist/esm/Sprinkle/actions/builtin/index.js.map +1 -1
- package/dist/esm/Sprinkle/actions/builtin/native-script.js +133 -0
- package/dist/esm/Sprinkle/actions/builtin/native-script.js.map +1 -0
- package/dist/esm/Sprinkle/actions/builtin/utility-actions.js +213 -0
- package/dist/esm/Sprinkle/actions/builtin/utility-actions.js.map +1 -0
- package/dist/esm/Sprinkle/actions/cli-adapter.js +20 -2
- package/dist/esm/Sprinkle/actions/cli-adapter.js.map +1 -1
- package/dist/esm/Sprinkle/actions/index.js +1 -1
- package/dist/esm/Sprinkle/actions/index.js.map +1 -1
- package/dist/esm/Sprinkle/actions/mcp-adapter.js +145 -5
- package/dist/esm/Sprinkle/actions/mcp-adapter.js.map +1 -1
- package/dist/esm/Sprinkle/index.js +260 -9
- package/dist/esm/Sprinkle/index.js.map +1 -1
- package/dist/esm/Sprinkle/schemas.js +16 -0
- package/dist/esm/Sprinkle/schemas.js.map +1 -1
- package/dist/types/Sprinkle/actions/builtin/addressbook-actions.d.ts +50 -0
- package/dist/types/Sprinkle/actions/builtin/addressbook-actions.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/builtin/index.d.ts +6 -2
- package/dist/types/Sprinkle/actions/builtin/index.d.ts.map +1 -1
- package/dist/types/Sprinkle/actions/builtin/native-script.d.ts +27 -0
- package/dist/types/Sprinkle/actions/builtin/native-script.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/builtin/utility-actions.d.ts +48 -0
- package/dist/types/Sprinkle/actions/builtin/utility-actions.d.ts.map +1 -0
- package/dist/types/Sprinkle/actions/cli-adapter.d.ts.map +1 -1
- package/dist/types/Sprinkle/actions/index.d.ts +2 -1
- package/dist/types/Sprinkle/actions/index.d.ts.map +1 -1
- package/dist/types/Sprinkle/actions/mcp-adapter.d.ts +24 -0
- package/dist/types/Sprinkle/actions/mcp-adapter.d.ts.map +1 -1
- package/dist/types/Sprinkle/index.d.ts +5 -2
- package/dist/types/Sprinkle/index.d.ts.map +1 -1
- package/dist/types/Sprinkle/schemas.d.ts +72 -0
- package/dist/types/Sprinkle/schemas.d.ts.map +1 -1
- package/dist/types/tsconfig.build.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/src/Sprinkle/__tests__/builtin-actions.test.ts +4 -4
- package/src/Sprinkle/__tests__/cli-adapter.test.ts +24 -3
- package/src/Sprinkle/__tests__/fill-in-struct.test.ts +23 -1
- package/src/Sprinkle/__tests__/mcp-adapter.test.ts +7 -5
- package/src/Sprinkle/__tests__/native-script.test.ts +341 -0
- package/src/Sprinkle/__tests__/utility-actions.test.ts +348 -0
- package/src/Sprinkle/actions/builtin/addressbook-actions.ts +168 -0
- package/src/Sprinkle/actions/builtin/index.ts +41 -2
- package/src/Sprinkle/actions/builtin/native-script.ts +165 -0
- package/src/Sprinkle/actions/builtin/utility-actions.ts +285 -0
- package/src/Sprinkle/actions/cli-adapter.ts +18 -2
- package/src/Sprinkle/actions/index.ts +2 -1
- package/src/Sprinkle/actions/mcp-adapter.ts +179 -4
- package/src/Sprinkle/index.ts +264 -3
- package/src/Sprinkle/schemas.ts +20 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"builtin-actions.test.js","names":["_bunTest","require","fs","_interopRequireWildcard","path","os","_typebox","_index","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","writeTestProfile","storagePath","id","name","settings","description","dir","join","mkdirSync","recursive","meta","createdAt","Date","toISOString","updatedAt","writeFileSync","JSON","stringify","defaults","TestSchema","Type","String","token","Optional","sensitive","SimpleSchema","makeSprinkle","profileId","sprinkle","Sprinkle","loadProfile","describe","test","actions","getBuiltinActions","expect","toHaveLength","validCategories","action","toContain","category","names","map","a","inputSchema","toBeDefined","outputSchema","tmpdir","registerAction","listActions","tmpDir","beforeEach","mkdtempSync","afterEach","rmSync","force","result","runAction","success","toBe","data","profiles","toEqual","p","activeProfileId","toBeUndefined","profile","error","code","includeSensitive","details","toMatchObject","profilePath","existsSync","content","parse","readFileSync","deleted","profileName","masked","raw","Promise","all","TwoKeySchema","label","entry","getProfileById","createProfileNonInteractive","rejects","undefined","profileMeta","deleteProfileById","toThrow"],"sources":["../../../../src/Sprinkle/__tests__/builtin-actions.test.ts"],"sourcesContent":["import { describe, expect, test, beforeEach, afterEach } from \"bun:test\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as os from \"os\";\nimport { Type } from \"@sinclair/typebox\";\nimport { Sprinkle, ActionError, getBuiltinActions } from \"../index.js\";\nimport { withProfile } from \"./test-helpers.js\";\n\n// Helper: write a minimal profile file into a tmp storage directory\nfunction writeTestProfile(\n storagePath: string,\n id: string,\n name: string,\n settings: Record<string, unknown>,\n description?: string,\n): void {\n const dir = path.join(storagePath, \"profiles\");\n fs.mkdirSync(dir, { recursive: true });\n const meta = {\n name,\n description,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n fs.writeFileSync(\n path.join(dir, `${id}.json`),\n JSON.stringify({ meta, settings, defaults: {} }, null, 2),\n \"utf-8\",\n );\n}\n\n// Settings schema with a sensitive field for masking tests\nconst TestSchema = Type.Object({\n name: Type.String(),\n token: Type.Optional(Type.String({ sensitive: true })),\n});\n\n// Simple schema without sensitive fields\nconst SimpleSchema = Type.Object({ name: Type.String() });\n\n// Helper: create a Sprinkle with a loaded profile ready for action execution\nasync function makeSprinkle(\n storagePath: string,\n profileId = \"default\",\n settings: Record<string, unknown> = { name: \"tester\" },\n): Promise<Sprinkle<typeof SimpleSchema>> {\n const sprinkle = new Sprinkle(SimpleSchema, storagePath);\n writeTestProfile(storagePath, profileId, \"Default\", settings);\n await sprinkle.loadProfile(profileId);\n return sprinkle;\n}\n\ndescribe(\"getBuiltinActions\", () => {\n test(\"returns an array of 14 actions\", () => {\n const actions = getBuiltinActions();\n expect(actions).toHaveLength(14);\n });\n\n test(\"all actions have a category\", () => {\n const actions = getBuiltinActions();\n const validCategories = [\"sprinkles\", \"wallet\", \"transaction\"];\n for (const action of actions) {\n expect(validCategories).toContain((action as any).category);\n }\n });\n\n test(\"returns actions with expected names\", () => {\n const names = getBuiltinActions().map((a) => a.name);\n expect(names).toContain(\"list-profiles\");\n expect(names).toContain(\"get-profile\");\n expect(names).toContain(\"set-profile\");\n expect(names).toContain(\"create-profile\");\n expect(names).toContain(\"delete-profile\");\n expect(names).toContain(\"get-settings\");\n expect(names).toContain(\"update-settings\");\n });\n\n test(\"all actions have inputSchema and outputSchema\", () => {\n const actions = getBuiltinActions();\n for (const action of actions) {\n expect(action.inputSchema).toBeDefined();\n expect(action.outputSchema).toBeDefined();\n }\n });\n\n test(\"built-in actions can be registered on a Sprinkle instance\", () => {\n const sprinkle = new Sprinkle(SimpleSchema, os.tmpdir());\n const actions = getBuiltinActions<typeof SimpleSchema>();\n for (const action of actions) {\n sprinkle.registerAction(action as any);\n }\n expect(sprinkle.listActions()).toHaveLength(14);\n });\n});\n\n// ---------------------------------------------------------------------------\n// list-profiles\n// ---------------------------------------------------------------------------\n\ndescribe(\"list-profiles action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"returns empty profiles array when no profiles exist\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n const result = await sprinkle.runAction(\"list-profiles\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.profiles).toEqual([]);\n }\n });\n\n test(\"returns all profiles with expected fields\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n writeTestProfile(tmpDir, \"bob\", \"Bob\", { name: \"bob\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"list-profiles\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.profiles).toHaveLength(2);\n const names = result.data.profiles.map((p: any) => p.name);\n expect(names).toContain(\"Alice\");\n expect(names).toContain(\"Bob\");\n }\n });\n\n test(\"includes activeProfileId when a profile is loaded\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"tester\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"list-profiles\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.activeProfileId).toBe(\"default\");\n }\n });\n\n test(\"activeProfileId is undefined when no profile is loaded\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"list-profiles\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.activeProfileId).toBeUndefined();\n }\n });\n\n test(\"each profile entry contains id, name, createdAt, updatedAt\", async () => {\n writeTestProfile(tmpDir, \"alpha\", \"Alpha Profile\", { name: \"alpha\" }, \"A profile\");\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alpha\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"list-profiles\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n const profile = result.data.profiles[0] as any;\n expect(profile.id).toBe(\"alpha\");\n expect(profile.name).toBe(\"Alpha Profile\");\n expect(profile.description).toBe(\"A profile\");\n expect(profile.createdAt).toBeDefined();\n expect(profile.updatedAt).toBeDefined();\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// get-profile\n// ---------------------------------------------------------------------------\n\ndescribe(\"get-profile action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"returns profile metadata and settings for a valid id\", async () => {\n writeTestProfile(tmpDir, \"myprofile\", \"My Profile\", { name: \"hello\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"myprofile\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", { id: \"myprofile\" });\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.id).toBe(\"myprofile\");\n expect(result.data.name).toBe(\"My Profile\");\n expect(result.data.settings).toBeDefined();\n }\n });\n\n test(\"returns PROFILE_NOT_FOUND for unknown profile id\", async () => {\n writeTestProfile(tmpDir, \"existing\", \"Existing\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"existing\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", { id: \"no-such-profile\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"PROFILE_NOT_FOUND\");\n }\n });\n\n test(\"settings are returned when includeSensitive is not specified (defaults to masked)\", async () => {\n writeTestProfile(tmpDir, \"prof1\", \"Prof1\", { name: \"value\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"prof1\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", { id: \"prof1\" });\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.settings).toBeDefined();\n }\n });\n\n test(\"returns raw settings when includeSensitive is true\", async () => {\n writeTestProfile(tmpDir, \"prof2\", \"Prof2\", { name: \"raw-value\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"prof2\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", {\n id: \"prof2\",\n includeSensitive: true,\n });\n expect(result.success).toBe(true);\n if (result.success) {\n expect((result.data.settings as any).name).toBe(\"raw-value\");\n }\n });\n\n test(\"error details include the requested id\", async () => {\n writeTestProfile(tmpDir, \"existing\", \"Existing\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"existing\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", { id: \"ghost\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect((result.error as ActionError).details).toMatchObject({ id: \"ghost\" });\n }\n });\n\n test(\"returns INVALID_PROFILE_ID for path traversal attempts\", async () => {\n writeTestProfile(tmpDir, \"existing\", \"Existing\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"existing\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", { id: \"../etc/passwd\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"INVALID_PROFILE_ID\");\n }\n });\n\n test(\"masks sensitive fields by default with TestSchema\", async () => {\n // Write profile with a sensitive token field\n writeTestProfile(tmpDir, \"sensitive-test\", \"Sensitive Test\", {\n name: \"user\",\n token: \"secret-api-key-12345\",\n });\n const sprinkle = new Sprinkle(TestSchema, tmpDir);\n await sprinkle.loadProfile(\"sensitive-test\");\n for (const action of getBuiltinActions<typeof TestSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", { id: \"sensitive-test\" });\n expect(result.success).toBe(true);\n if (result.success) {\n // Token should be masked\n expect((result.data.settings as any).token).toBe(\"********\");\n // Name should not be masked\n expect((result.data.settings as any).name).toBe(\"user\");\n }\n });\n\n test(\"returns raw sensitive fields when includeSensitive is true with TestSchema\", async () => {\n writeTestProfile(tmpDir, \"sensitive-raw\", \"Sensitive Raw\", {\n name: \"user\",\n token: \"my-secret-token\",\n });\n const sprinkle = new Sprinkle(TestSchema, tmpDir);\n await sprinkle.loadProfile(\"sensitive-raw\");\n for (const action of getBuiltinActions<typeof TestSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", {\n id: \"sensitive-raw\",\n includeSensitive: true,\n });\n expect(result.success).toBe(true);\n if (result.success) {\n // Token should NOT be masked\n expect((result.data.settings as any).token).toBe(\"my-secret-token\");\n expect((result.data.settings as any).name).toBe(\"user\");\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// set-profile\n// ---------------------------------------------------------------------------\n\ndescribe(\"set-profile action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"switches active profile and returns id and name\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n writeTestProfile(tmpDir, \"bob\", \"Bob\", { name: \"bob\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"set-profile\", { id: \"bob\" });\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.id).toBe(\"bob\");\n expect(result.data.name).toBe(\"Bob\");\n }\n });\n\n test(\"active profile is actually changed after set-profile\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n writeTestProfile(tmpDir, \"bob\", \"Bob\", { name: \"bob\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n await sprinkle.runAction(\"set-profile\", { id: \"bob\" });\n expect(sprinkle.profileId).toBe(\"bob\");\n });\n\n test(\"returns PROFILE_NOT_FOUND when switching to unknown profile\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"set-profile\", { id: \"nobody\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"PROFILE_NOT_FOUND\");\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// create-profile\n// ---------------------------------------------------------------------------\n\ndescribe(\"create-profile action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"creates a new profile and returns id and name\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"create-profile\", {\n name: \"New Profile\",\n });\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.name).toBe(\"New Profile\");\n expect(result.data.id).toBeDefined();\n }\n });\n\n test(\"created profile file exists on disk\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"create-profile\", {\n name: \"Disk Profile\",\n });\n expect(result.success).toBe(true);\n if (result.success) {\n const profilePath = path.join(tmpDir, \"profiles\", `${result.data.id}.json`);\n expect(fs.existsSync(profilePath)).toBe(true);\n }\n });\n\n test(\"create-profile does NOT switch the active profile\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n await sprinkle.runAction(\"create-profile\", { name: \"Another Profile\" });\n expect(sprinkle.profileId).toBe(\"default\");\n });\n\n test(\"create-profile with optional description stores it\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"create-profile\", {\n name: \"Described Profile\",\n description: \"A detailed description\",\n });\n expect(result.success).toBe(true);\n if (result.success) {\n const profilePath = path.join(tmpDir, \"profiles\", `${result.data.id}.json`);\n const content = JSON.parse(fs.readFileSync(profilePath, \"utf-8\"));\n expect(content.meta.description).toBe(\"A detailed description\");\n }\n });\n\n test(\"returns DUPLICATE_PROFILE error when name already exists\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"create-profile\", {\n name: \"Default\",\n });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"DUPLICATE_PROFILE\");\n }\n });\n\n test(\"duplicate name check is case-insensitive\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"create-profile\", {\n name: \"DEFAULT\",\n });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"DUPLICATE_PROFILE\");\n }\n });\n\n test(\"create-profile with initial settings writes them to disk\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"create-profile\", {\n name: \"Preset Profile\",\n settings: { name: \"preset-name\" },\n });\n expect(result.success).toBe(true);\n if (result.success) {\n const profilePath = path.join(tmpDir, \"profiles\", `${result.data.id}.json`);\n const content = JSON.parse(fs.readFileSync(profilePath, \"utf-8\"));\n expect(content.settings.name).toBe(\"preset-name\");\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// delete-profile\n// ---------------------------------------------------------------------------\n\ndescribe(\"delete-profile action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"deletes a profile and returns deleted:true with id\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n writeTestProfile(tmpDir, \"bob\", \"Bob\", { name: \"bob\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"delete-profile\", { id: \"bob\" });\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.deleted).toBe(true);\n expect(result.data.id).toBe(\"bob\");\n }\n });\n\n test(\"profile file is removed from disk after deletion\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n writeTestProfile(tmpDir, \"bob\", \"Bob\", { name: \"bob\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n await sprinkle.runAction(\"delete-profile\", { id: \"bob\" });\n expect(fs.existsSync(path.join(tmpDir, \"profiles\", \"bob.json\"))).toBe(false);\n });\n\n test(\"returns PROFILE_NOT_FOUND when deleting a non-existent profile\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n writeTestProfile(tmpDir, \"bob\", \"Bob\", { name: \"bob\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"delete-profile\", { id: \"nobody\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"PROFILE_NOT_FOUND\");\n }\n });\n\n test(\"returns CANNOT_DELETE_ONLY_PROFILE when only one profile exists\", async () => {\n writeTestProfile(tmpDir, \"only\", \"Only\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"only\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"delete-profile\", { id: \"only\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"CANNOT_DELETE_ONLY_PROFILE\");\n }\n });\n\n test(\"returns CANNOT_DELETE_ACTIVE_PROFILE when deleting the active profile\", async () => {\n writeTestProfile(tmpDir, \"active\", \"Active\", { name: \"x\" });\n writeTestProfile(tmpDir, \"other\", \"Other\", { name: \"y\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"active\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"delete-profile\", { id: \"active\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"CANNOT_DELETE_ACTIVE_PROFILE\");\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// get-settings\n// ---------------------------------------------------------------------------\n\ndescribe(\"get-settings action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"returns settings, profileId, and profileName\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"Alice\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-settings\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.profileId).toBe(\"default\");\n expect(result.data.profileName).toBe(\"Default\");\n expect(result.data.settings).toBeDefined();\n }\n });\n\n test(\"returns masked settings by default\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"Alice\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-settings\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n // For a schema without sensitive fields, settings pass through unchanged\n expect((result.data.settings as any).name).toBe(\"Alice\");\n }\n });\n\n test(\"returns raw settings when includeSensitive is true\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"raw-user\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-settings\", {\n includeSensitive: true,\n });\n expect(result.success).toBe(true);\n if (result.success) {\n expect((result.data.settings as any).name).toBe(\"raw-user\");\n }\n });\n\n test(\"returns same settings whether includeSensitive is false or not provided (no sensitive fields)\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"same-user\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const [masked, raw] = await Promise.all([\n sprinkle.runAction(\"get-settings\", { includeSensitive: false }),\n sprinkle.runAction(\"get-settings\", { includeSensitive: true }),\n ]);\n expect(masked.success).toBe(true);\n expect(raw.success).toBe(true);\n if (masked.success && raw.success) {\n expect(masked.data.settings).toEqual(raw.data.settings);\n }\n });\n\n test(\"settings match what was loaded from profile\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"prof\", { name: \"expected-value\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-settings\", {\n includeSensitive: true,\n });\n expect(result.success).toBe(true);\n if (result.success) {\n expect((result.data.settings as any).name).toBe(\"expected-value\");\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// update-settings\n// ---------------------------------------------------------------------------\n\ndescribe(\"update-settings action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"updates settings and returns masked settings with profileId\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"old-name\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"update-settings\", {\n settings: { name: \"new-name\" },\n });\n expect(result.success).toBe(true);\n if (result.success) {\n expect((result.data.settings as any).name).toBe(\"new-name\");\n expect(result.data.profileId).toBe(\"default\");\n }\n });\n\n test(\"update persists settings in memory\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"before\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n await sprinkle.runAction(\"update-settings\", { settings: { name: \"after\" } });\n expect((sprinkle.settings as any).name).toBe(\"after\");\n });\n\n test(\"update persists settings to disk\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"before\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n await sprinkle.runAction(\"update-settings\", { settings: { name: \"persisted\" } });\n\n // Read the saved file to verify persistence\n const profilePath = path.join(tmpDir, \"profiles\", \"default.json\");\n const content = JSON.parse(fs.readFileSync(profilePath, \"utf-8\"));\n expect(content.settings.name).toBe(\"persisted\");\n });\n\n test(\"returns VALIDATION_ERROR for settings that violate schema\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"valid\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n // Removing required 'name' field should fail schema validation\n const result = await sprinkle.runAction(\"update-settings\", {\n settings: { name: 12345 }, // name must be a string\n });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"VALIDATION_ERROR\");\n }\n });\n\n test(\"settings are not saved when validation fails\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"original\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n await sprinkle.runAction(\"update-settings\", {\n settings: { name: 99 }, // invalid: not a string\n });\n\n // Settings in memory should remain unchanged\n expect((sprinkle.settings as any).name).toBe(\"original\");\n });\n\n test(\"shallow merges settings - existing keys not in update are preserved\", async () => {\n // Use a schema with two optional keys to test merge behaviour\n const TwoKeySchema = Type.Object({\n name: Type.String(),\n label: Type.Optional(Type.String()),\n });\n writeTestProfile(tmpDir, \"twokey\", \"TwoKey\", { name: \"base\", label: \"keep-me\" });\n const sprinkle = new Sprinkle(TwoKeySchema, tmpDir);\n await sprinkle.loadProfile(\"twokey\");\n for (const action of getBuiltinActions<typeof TwoKeySchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"update-settings\", {\n settings: { name: \"updated\" },\n });\n expect(result.success).toBe(true);\n if (result.success) {\n expect((result.data.settings as any).name).toBe(\"updated\");\n expect((result.data.settings as any).label).toBe(\"keep-me\");\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// Sprinkle.getProfileById direct method tests\n// ---------------------------------------------------------------------------\n\ndescribe(\"Sprinkle.getProfileById\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"returns profile entry when id exists\", () => {\n writeTestProfile(tmpDir, \"myid\", \"My Name\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n const entry = sprinkle.getProfileById(\"myid\");\n expect(entry).toBeDefined();\n expect(entry!.id).toBe(\"myid\");\n expect(entry!.meta.name).toBe(\"My Name\");\n });\n\n test(\"returns undefined when id does not exist\", () => {\n writeTestProfile(tmpDir, \"real\", \"Real\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n expect(sprinkle.getProfileById(\"ghost\")).toBeUndefined();\n });\n\n test(\"returns undefined when no profiles exist\", () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n expect(sprinkle.getProfileById(\"anything\")).toBeUndefined();\n });\n});\n\n// ---------------------------------------------------------------------------\n// Sprinkle.createProfileNonInteractive direct method tests\n// ---------------------------------------------------------------------------\n\ndescribe(\"Sprinkle.createProfileNonInteractive\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"creates a profile file and returns IProfileEntry\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n const entry = await sprinkle.createProfileNonInteractive(\"Test Profile\");\n expect(entry.id).toBeDefined();\n expect(entry.meta.name).toBe(\"Test Profile\");\n const profilePath = path.join(tmpDir, \"profiles\", `${entry.id}.json`);\n expect(fs.existsSync(profilePath)).toBe(true);\n });\n\n test(\"sanitizes name to form a valid id\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n const entry = await sprinkle.createProfileNonInteractive(\"My New Profile!\");\n // sanitized: \"my-new-profile\"\n expect(entry.id).toBe(\"my-new-profile\");\n });\n\n test(\"uses findAvailableId to avoid collisions\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n // \"My Profile\" sanitizes to \"my-profile\". Pre-create that file so\n // findAvailableId must fall back to \"my-profile-2\".\n writeTestProfile(tmpDir, \"my-profile\", \"My Profile First\", { name: \"x\" });\n const entry = await sprinkle.createProfileNonInteractive(\"My Profile\");\n // \"my-profile\" is taken, so the entry id should become \"my-profile-2\"\n expect(entry.id).toBe(\"my-profile-2\");\n });\n\n test(\"throws DUPLICATE_PROFILE for same name (case-insensitive)\", async () => {\n writeTestProfile(tmpDir, \"existing\", \"Existing Profile\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await expect(\n sprinkle.createProfileNonInteractive(\"existing profile\"),\n ).rejects.toMatchObject({ code: \"DUPLICATE_PROFILE\" });\n });\n\n test(\"stores optional description in meta\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n const entry = await sprinkle.createProfileNonInteractive(\n \"Described\",\n \"My description\",\n );\n expect(entry.meta.description).toBe(\"My description\");\n const profilePath = path.join(tmpDir, \"profiles\", `${entry.id}.json`);\n const content = JSON.parse(fs.readFileSync(profilePath, \"utf-8\"));\n expect(content.meta.description).toBe(\"My description\");\n });\n\n test(\"stores initial settings when provided\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n const entry = await sprinkle.createProfileNonInteractive(\"With Settings\", undefined, {\n name: \"preset\",\n });\n const profilePath = path.join(tmpDir, \"profiles\", `${entry.id}.json`);\n const content = JSON.parse(fs.readFileSync(profilePath, \"utf-8\"));\n expect(content.settings.name).toBe(\"preset\");\n });\n\n test(\"does not change the active profile\", async () => {\n writeTestProfile(tmpDir, \"active\", \"Active\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"active\");\n await sprinkle.createProfileNonInteractive(\"New One\");\n expect(sprinkle.profileId).toBe(\"active\");\n });\n});\n\n// ---------------------------------------------------------------------------\n// Sprinkle.deleteProfileById direct method tests\n// ---------------------------------------------------------------------------\n\ndescribe(\"Sprinkle.deleteProfileById\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"removes the profile file from disk\", () => {\n writeTestProfile(tmpDir, \"keep\", \"Keep\", { name: \"x\" });\n writeTestProfile(tmpDir, \"remove\", \"Remove\", { name: \"y\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n sprinkle.profileId = \"keep\";\n sprinkle.profileMeta = { name: \"Keep\", createdAt: \"\", updatedAt: \"\" };\n sprinkle.deleteProfileById(\"remove\");\n expect(fs.existsSync(path.join(tmpDir, \"profiles\", \"remove.json\"))).toBe(false);\n expect(fs.existsSync(path.join(tmpDir, \"profiles\", \"keep.json\"))).toBe(true);\n });\n\n test(\"throws PROFILE_NOT_FOUND for unknown id\", () => {\n writeTestProfile(tmpDir, \"alpha\", \"Alpha\", { name: \"x\" });\n writeTestProfile(tmpDir, \"beta\", \"Beta\", { name: \"y\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n sprinkle.profileId = \"alpha\";\n sprinkle.profileMeta = { name: \"Alpha\", createdAt: \"\", updatedAt: \"\" };\n expect(() => sprinkle.deleteProfileById(\"ghost\")).toThrow();\n try {\n sprinkle.deleteProfileById(\"ghost\");\n } catch (e: any) {\n expect(e.code).toBe(\"PROFILE_NOT_FOUND\");\n }\n });\n\n test(\"throws CANNOT_DELETE_ONLY_PROFILE when only one profile exists\", () => {\n writeTestProfile(tmpDir, \"solo\", \"Solo\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n sprinkle.profileId = \"solo\";\n sprinkle.profileMeta = { name: \"Solo\", createdAt: \"\", updatedAt: \"\" };\n expect(() => sprinkle.deleteProfileById(\"solo\")).toThrow();\n try {\n sprinkle.deleteProfileById(\"solo\");\n } catch (e: any) {\n expect(e.code).toBe(\"CANNOT_DELETE_ONLY_PROFILE\");\n }\n });\n\n test(\"throws CANNOT_DELETE_ACTIVE_PROFILE when deleting the active profile\", () => {\n writeTestProfile(tmpDir, \"active\", \"Active\", { name: \"x\" });\n writeTestProfile(tmpDir, \"other\", \"Other\", { name: \"y\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n sprinkle.profileId = \"active\";\n sprinkle.profileMeta = { name: \"Active\", createdAt: \"\", updatedAt: \"\" };\n expect(() => sprinkle.deleteProfileById(\"active\")).toThrow();\n try {\n sprinkle.deleteProfileById(\"active\");\n } catch (e: any) {\n expect(e.code).toBe(\"CANNOT_DELETE_ACTIVE_PROFILE\");\n }\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
1
|
+
{"version":3,"file":"builtin-actions.test.js","names":["_bunTest","require","fs","_interopRequireWildcard","path","os","_typebox","_index","e","t","WeakMap","r","n","__esModule","o","i","f","__proto__","default","has","get","set","hasOwnProperty","call","Object","defineProperty","getOwnPropertyDescriptor","writeTestProfile","storagePath","id","name","settings","description","dir","join","mkdirSync","recursive","meta","createdAt","Date","toISOString","updatedAt","writeFileSync","JSON","stringify","defaults","TestSchema","Type","String","token","Optional","sensitive","SimpleSchema","makeSprinkle","profileId","sprinkle","Sprinkle","loadProfile","describe","test","actions","getBuiltinActions","expect","toHaveLength","validCategories","action","toContain","category","names","map","a","inputSchema","toBeDefined","outputSchema","tmpdir","registerAction","listActions","tmpDir","beforeEach","mkdtempSync","afterEach","rmSync","force","result","runAction","success","toBe","data","profiles","toEqual","p","activeProfileId","toBeUndefined","profile","error","code","includeSensitive","details","toMatchObject","profilePath","existsSync","content","parse","readFileSync","deleted","profileName","masked","raw","Promise","all","TwoKeySchema","label","entry","getProfileById","createProfileNonInteractive","rejects","undefined","profileMeta","deleteProfileById","toThrow"],"sources":["../../../../src/Sprinkle/__tests__/builtin-actions.test.ts"],"sourcesContent":["import { describe, expect, test, beforeEach, afterEach } from \"bun:test\";\nimport * as fs from \"fs\";\nimport * as path from \"path\";\nimport * as os from \"os\";\nimport { Type } from \"@sinclair/typebox\";\nimport { Sprinkle, ActionError, getBuiltinActions } from \"../index.js\";\nimport { withProfile } from \"./test-helpers.js\";\n\n// Helper: write a minimal profile file into a tmp storage directory\nfunction writeTestProfile(\n storagePath: string,\n id: string,\n name: string,\n settings: Record<string, unknown>,\n description?: string,\n): void {\n const dir = path.join(storagePath, \"profiles\");\n fs.mkdirSync(dir, { recursive: true });\n const meta = {\n name,\n description,\n createdAt: new Date().toISOString(),\n updatedAt: new Date().toISOString(),\n };\n fs.writeFileSync(\n path.join(dir, `${id}.json`),\n JSON.stringify({ meta, settings, defaults: {} }, null, 2),\n \"utf-8\",\n );\n}\n\n// Settings schema with a sensitive field for masking tests\nconst TestSchema = Type.Object({\n name: Type.String(),\n token: Type.Optional(Type.String({ sensitive: true })),\n});\n\n// Simple schema without sensitive fields\nconst SimpleSchema = Type.Object({ name: Type.String() });\n\n// Helper: create a Sprinkle with a loaded profile ready for action execution\nasync function makeSprinkle(\n storagePath: string,\n profileId = \"default\",\n settings: Record<string, unknown> = { name: \"tester\" },\n): Promise<Sprinkle<typeof SimpleSchema>> {\n const sprinkle = new Sprinkle(SimpleSchema, storagePath);\n writeTestProfile(storagePath, profileId, \"Default\", settings);\n await sprinkle.loadProfile(profileId);\n return sprinkle;\n}\n\ndescribe(\"getBuiltinActions\", () => {\n test(\"returns an array of 21 actions\", () => {\n const actions = getBuiltinActions();\n expect(actions).toHaveLength(21);\n });\n\n test(\"all actions have a category\", () => {\n const actions = getBuiltinActions();\n const validCategories = [\"sprinkles\", \"wallet\", \"transaction\", \"utility\", \"addressbook\"];\n for (const action of actions) {\n expect(validCategories).toContain((action as any).category);\n }\n });\n\n test(\"returns actions with expected names\", () => {\n const names = getBuiltinActions().map((a) => a.name);\n expect(names).toContain(\"list-profiles\");\n expect(names).toContain(\"get-profile\");\n expect(names).toContain(\"set-profile\");\n expect(names).toContain(\"create-profile\");\n expect(names).toContain(\"delete-profile\");\n expect(names).toContain(\"get-settings\");\n expect(names).toContain(\"update-settings\");\n });\n\n test(\"all actions have inputSchema and outputSchema\", () => {\n const actions = getBuiltinActions();\n for (const action of actions) {\n expect(action.inputSchema).toBeDefined();\n expect(action.outputSchema).toBeDefined();\n }\n });\n\n test(\"built-in actions can be registered on a Sprinkle instance\", () => {\n const sprinkle = new Sprinkle(SimpleSchema, os.tmpdir());\n const actions = getBuiltinActions<typeof SimpleSchema>();\n for (const action of actions) {\n sprinkle.registerAction(action as any);\n }\n expect(sprinkle.listActions()).toHaveLength(21);\n });\n});\n\n// ---------------------------------------------------------------------------\n// list-profiles\n// ---------------------------------------------------------------------------\n\ndescribe(\"list-profiles action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"returns empty profiles array when no profiles exist\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n const result = await sprinkle.runAction(\"list-profiles\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.profiles).toEqual([]);\n }\n });\n\n test(\"returns all profiles with expected fields\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n writeTestProfile(tmpDir, \"bob\", \"Bob\", { name: \"bob\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"list-profiles\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.profiles).toHaveLength(2);\n const names = result.data.profiles.map((p: any) => p.name);\n expect(names).toContain(\"Alice\");\n expect(names).toContain(\"Bob\");\n }\n });\n\n test(\"includes activeProfileId when a profile is loaded\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"tester\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"list-profiles\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.activeProfileId).toBe(\"default\");\n }\n });\n\n test(\"activeProfileId is undefined when no profile is loaded\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"list-profiles\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.activeProfileId).toBeUndefined();\n }\n });\n\n test(\"each profile entry contains id, name, createdAt, updatedAt\", async () => {\n writeTestProfile(tmpDir, \"alpha\", \"Alpha Profile\", { name: \"alpha\" }, \"A profile\");\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alpha\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"list-profiles\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n const profile = result.data.profiles[0] as any;\n expect(profile.id).toBe(\"alpha\");\n expect(profile.name).toBe(\"Alpha Profile\");\n expect(profile.description).toBe(\"A profile\");\n expect(profile.createdAt).toBeDefined();\n expect(profile.updatedAt).toBeDefined();\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// get-profile\n// ---------------------------------------------------------------------------\n\ndescribe(\"get-profile action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"returns profile metadata and settings for a valid id\", async () => {\n writeTestProfile(tmpDir, \"myprofile\", \"My Profile\", { name: \"hello\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"myprofile\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", { id: \"myprofile\" });\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.id).toBe(\"myprofile\");\n expect(result.data.name).toBe(\"My Profile\");\n expect(result.data.settings).toBeDefined();\n }\n });\n\n test(\"returns PROFILE_NOT_FOUND for unknown profile id\", async () => {\n writeTestProfile(tmpDir, \"existing\", \"Existing\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"existing\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", { id: \"no-such-profile\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"PROFILE_NOT_FOUND\");\n }\n });\n\n test(\"settings are returned when includeSensitive is not specified (defaults to masked)\", async () => {\n writeTestProfile(tmpDir, \"prof1\", \"Prof1\", { name: \"value\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"prof1\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", { id: \"prof1\" });\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.settings).toBeDefined();\n }\n });\n\n test(\"returns raw settings when includeSensitive is true\", async () => {\n writeTestProfile(tmpDir, \"prof2\", \"Prof2\", { name: \"raw-value\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"prof2\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", {\n id: \"prof2\",\n includeSensitive: true,\n });\n expect(result.success).toBe(true);\n if (result.success) {\n expect((result.data.settings as any).name).toBe(\"raw-value\");\n }\n });\n\n test(\"error details include the requested id\", async () => {\n writeTestProfile(tmpDir, \"existing\", \"Existing\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"existing\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", { id: \"ghost\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect((result.error as ActionError).details).toMatchObject({ id: \"ghost\" });\n }\n });\n\n test(\"returns INVALID_PROFILE_ID for path traversal attempts\", async () => {\n writeTestProfile(tmpDir, \"existing\", \"Existing\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"existing\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", { id: \"../etc/passwd\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"INVALID_PROFILE_ID\");\n }\n });\n\n test(\"masks sensitive fields by default with TestSchema\", async () => {\n // Write profile with a sensitive token field\n writeTestProfile(tmpDir, \"sensitive-test\", \"Sensitive Test\", {\n name: \"user\",\n token: \"secret-api-key-12345\",\n });\n const sprinkle = new Sprinkle(TestSchema, tmpDir);\n await sprinkle.loadProfile(\"sensitive-test\");\n for (const action of getBuiltinActions<typeof TestSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", { id: \"sensitive-test\" });\n expect(result.success).toBe(true);\n if (result.success) {\n // Token should be masked\n expect((result.data.settings as any).token).toBe(\"********\");\n // Name should not be masked\n expect((result.data.settings as any).name).toBe(\"user\");\n }\n });\n\n test(\"returns raw sensitive fields when includeSensitive is true with TestSchema\", async () => {\n writeTestProfile(tmpDir, \"sensitive-raw\", \"Sensitive Raw\", {\n name: \"user\",\n token: \"my-secret-token\",\n });\n const sprinkle = new Sprinkle(TestSchema, tmpDir);\n await sprinkle.loadProfile(\"sensitive-raw\");\n for (const action of getBuiltinActions<typeof TestSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-profile\", {\n id: \"sensitive-raw\",\n includeSensitive: true,\n });\n expect(result.success).toBe(true);\n if (result.success) {\n // Token should NOT be masked\n expect((result.data.settings as any).token).toBe(\"my-secret-token\");\n expect((result.data.settings as any).name).toBe(\"user\");\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// set-profile\n// ---------------------------------------------------------------------------\n\ndescribe(\"set-profile action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"switches active profile and returns id and name\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n writeTestProfile(tmpDir, \"bob\", \"Bob\", { name: \"bob\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"set-profile\", { id: \"bob\" });\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.id).toBe(\"bob\");\n expect(result.data.name).toBe(\"Bob\");\n }\n });\n\n test(\"active profile is actually changed after set-profile\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n writeTestProfile(tmpDir, \"bob\", \"Bob\", { name: \"bob\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n await sprinkle.runAction(\"set-profile\", { id: \"bob\" });\n expect(sprinkle.profileId).toBe(\"bob\");\n });\n\n test(\"returns PROFILE_NOT_FOUND when switching to unknown profile\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"set-profile\", { id: \"nobody\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"PROFILE_NOT_FOUND\");\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// create-profile\n// ---------------------------------------------------------------------------\n\ndescribe(\"create-profile action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"creates a new profile and returns id and name\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"create-profile\", {\n name: \"New Profile\",\n });\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.name).toBe(\"New Profile\");\n expect(result.data.id).toBeDefined();\n }\n });\n\n test(\"created profile file exists on disk\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"create-profile\", {\n name: \"Disk Profile\",\n });\n expect(result.success).toBe(true);\n if (result.success) {\n const profilePath = path.join(tmpDir, \"profiles\", `${result.data.id}.json`);\n expect(fs.existsSync(profilePath)).toBe(true);\n }\n });\n\n test(\"create-profile does NOT switch the active profile\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n await sprinkle.runAction(\"create-profile\", { name: \"Another Profile\" });\n expect(sprinkle.profileId).toBe(\"default\");\n });\n\n test(\"create-profile with optional description stores it\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"create-profile\", {\n name: \"Described Profile\",\n description: \"A detailed description\",\n });\n expect(result.success).toBe(true);\n if (result.success) {\n const profilePath = path.join(tmpDir, \"profiles\", `${result.data.id}.json`);\n const content = JSON.parse(fs.readFileSync(profilePath, \"utf-8\"));\n expect(content.meta.description).toBe(\"A detailed description\");\n }\n });\n\n test(\"returns DUPLICATE_PROFILE error when name already exists\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"create-profile\", {\n name: \"Default\",\n });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"DUPLICATE_PROFILE\");\n }\n });\n\n test(\"duplicate name check is case-insensitive\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"create-profile\", {\n name: \"DEFAULT\",\n });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"DUPLICATE_PROFILE\");\n }\n });\n\n test(\"create-profile with initial settings writes them to disk\", async () => {\n writeTestProfile(tmpDir, \"default\", \"Default\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"default\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"create-profile\", {\n name: \"Preset Profile\",\n settings: { name: \"preset-name\" },\n });\n expect(result.success).toBe(true);\n if (result.success) {\n const profilePath = path.join(tmpDir, \"profiles\", `${result.data.id}.json`);\n const content = JSON.parse(fs.readFileSync(profilePath, \"utf-8\"));\n expect(content.settings.name).toBe(\"preset-name\");\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// delete-profile\n// ---------------------------------------------------------------------------\n\ndescribe(\"delete-profile action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"deletes a profile and returns deleted:true with id\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n writeTestProfile(tmpDir, \"bob\", \"Bob\", { name: \"bob\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"delete-profile\", { id: \"bob\" });\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.deleted).toBe(true);\n expect(result.data.id).toBe(\"bob\");\n }\n });\n\n test(\"profile file is removed from disk after deletion\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n writeTestProfile(tmpDir, \"bob\", \"Bob\", { name: \"bob\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n await sprinkle.runAction(\"delete-profile\", { id: \"bob\" });\n expect(fs.existsSync(path.join(tmpDir, \"profiles\", \"bob.json\"))).toBe(false);\n });\n\n test(\"returns PROFILE_NOT_FOUND when deleting a non-existent profile\", async () => {\n writeTestProfile(tmpDir, \"alice\", \"Alice\", { name: \"alice\" });\n writeTestProfile(tmpDir, \"bob\", \"Bob\", { name: \"bob\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"alice\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"delete-profile\", { id: \"nobody\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"PROFILE_NOT_FOUND\");\n }\n });\n\n test(\"returns CANNOT_DELETE_ONLY_PROFILE when only one profile exists\", async () => {\n writeTestProfile(tmpDir, \"only\", \"Only\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"only\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"delete-profile\", { id: \"only\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"CANNOT_DELETE_ONLY_PROFILE\");\n }\n });\n\n test(\"returns CANNOT_DELETE_ACTIVE_PROFILE when deleting the active profile\", async () => {\n writeTestProfile(tmpDir, \"active\", \"Active\", { name: \"x\" });\n writeTestProfile(tmpDir, \"other\", \"Other\", { name: \"y\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"active\");\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"delete-profile\", { id: \"active\" });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"CANNOT_DELETE_ACTIVE_PROFILE\");\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// get-settings\n// ---------------------------------------------------------------------------\n\ndescribe(\"get-settings action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"returns settings, profileId, and profileName\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"Alice\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-settings\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n expect(result.data.profileId).toBe(\"default\");\n expect(result.data.profileName).toBe(\"Default\");\n expect(result.data.settings).toBeDefined();\n }\n });\n\n test(\"returns masked settings by default\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"Alice\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-settings\", {});\n expect(result.success).toBe(true);\n if (result.success) {\n // For a schema without sensitive fields, settings pass through unchanged\n expect((result.data.settings as any).name).toBe(\"Alice\");\n }\n });\n\n test(\"returns raw settings when includeSensitive is true\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"raw-user\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-settings\", {\n includeSensitive: true,\n });\n expect(result.success).toBe(true);\n if (result.success) {\n expect((result.data.settings as any).name).toBe(\"raw-user\");\n }\n });\n\n test(\"returns same settings whether includeSensitive is false or not provided (no sensitive fields)\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"same-user\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const [masked, raw] = await Promise.all([\n sprinkle.runAction(\"get-settings\", { includeSensitive: false }),\n sprinkle.runAction(\"get-settings\", { includeSensitive: true }),\n ]);\n expect(masked.success).toBe(true);\n expect(raw.success).toBe(true);\n if (masked.success && raw.success) {\n expect(masked.data.settings).toEqual(raw.data.settings);\n }\n });\n\n test(\"settings match what was loaded from profile\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"prof\", { name: \"expected-value\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"get-settings\", {\n includeSensitive: true,\n });\n expect(result.success).toBe(true);\n if (result.success) {\n expect((result.data.settings as any).name).toBe(\"expected-value\");\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// update-settings\n// ---------------------------------------------------------------------------\n\ndescribe(\"update-settings action\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"updates settings and returns masked settings with profileId\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"old-name\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"update-settings\", {\n settings: { name: \"new-name\" },\n });\n expect(result.success).toBe(true);\n if (result.success) {\n expect((result.data.settings as any).name).toBe(\"new-name\");\n expect(result.data.profileId).toBe(\"default\");\n }\n });\n\n test(\"update persists settings in memory\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"before\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n await sprinkle.runAction(\"update-settings\", { settings: { name: \"after\" } });\n expect((sprinkle.settings as any).name).toBe(\"after\");\n });\n\n test(\"update persists settings to disk\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"before\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n await sprinkle.runAction(\"update-settings\", { settings: { name: \"persisted\" } });\n\n // Read the saved file to verify persistence\n const profilePath = path.join(tmpDir, \"profiles\", \"default.json\");\n const content = JSON.parse(fs.readFileSync(profilePath, \"utf-8\"));\n expect(content.settings.name).toBe(\"persisted\");\n });\n\n test(\"returns VALIDATION_ERROR for settings that violate schema\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"valid\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n // Removing required 'name' field should fail schema validation\n const result = await sprinkle.runAction(\"update-settings\", {\n settings: { name: 12345 }, // name must be a string\n });\n expect(result.success).toBe(false);\n if (!result.success) {\n expect(result.error.code).toBe(\"VALIDATION_ERROR\");\n }\n });\n\n test(\"settings are not saved when validation fails\", async () => {\n const sprinkle = await makeSprinkle(tmpDir, \"default\", { name: \"original\" });\n for (const action of getBuiltinActions<typeof SimpleSchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n await sprinkle.runAction(\"update-settings\", {\n settings: { name: 99 }, // invalid: not a string\n });\n\n // Settings in memory should remain unchanged\n expect((sprinkle.settings as any).name).toBe(\"original\");\n });\n\n test(\"shallow merges settings - existing keys not in update are preserved\", async () => {\n // Use a schema with two optional keys to test merge behaviour\n const TwoKeySchema = Type.Object({\n name: Type.String(),\n label: Type.Optional(Type.String()),\n });\n writeTestProfile(tmpDir, \"twokey\", \"TwoKey\", { name: \"base\", label: \"keep-me\" });\n const sprinkle = new Sprinkle(TwoKeySchema, tmpDir);\n await sprinkle.loadProfile(\"twokey\");\n for (const action of getBuiltinActions<typeof TwoKeySchema>()) {\n sprinkle.registerAction(action as any);\n }\n\n const result = await sprinkle.runAction(\"update-settings\", {\n settings: { name: \"updated\" },\n });\n expect(result.success).toBe(true);\n if (result.success) {\n expect((result.data.settings as any).name).toBe(\"updated\");\n expect((result.data.settings as any).label).toBe(\"keep-me\");\n }\n });\n});\n\n// ---------------------------------------------------------------------------\n// Sprinkle.getProfileById direct method tests\n// ---------------------------------------------------------------------------\n\ndescribe(\"Sprinkle.getProfileById\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"returns profile entry when id exists\", () => {\n writeTestProfile(tmpDir, \"myid\", \"My Name\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n const entry = sprinkle.getProfileById(\"myid\");\n expect(entry).toBeDefined();\n expect(entry!.id).toBe(\"myid\");\n expect(entry!.meta.name).toBe(\"My Name\");\n });\n\n test(\"returns undefined when id does not exist\", () => {\n writeTestProfile(tmpDir, \"real\", \"Real\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n expect(sprinkle.getProfileById(\"ghost\")).toBeUndefined();\n });\n\n test(\"returns undefined when no profiles exist\", () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n expect(sprinkle.getProfileById(\"anything\")).toBeUndefined();\n });\n});\n\n// ---------------------------------------------------------------------------\n// Sprinkle.createProfileNonInteractive direct method tests\n// ---------------------------------------------------------------------------\n\ndescribe(\"Sprinkle.createProfileNonInteractive\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"creates a profile file and returns IProfileEntry\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n const entry = await sprinkle.createProfileNonInteractive(\"Test Profile\");\n expect(entry.id).toBeDefined();\n expect(entry.meta.name).toBe(\"Test Profile\");\n const profilePath = path.join(tmpDir, \"profiles\", `${entry.id}.json`);\n expect(fs.existsSync(profilePath)).toBe(true);\n });\n\n test(\"sanitizes name to form a valid id\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n const entry = await sprinkle.createProfileNonInteractive(\"My New Profile!\");\n // sanitized: \"my-new-profile\"\n expect(entry.id).toBe(\"my-new-profile\");\n });\n\n test(\"uses findAvailableId to avoid collisions\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n // \"My Profile\" sanitizes to \"my-profile\". Pre-create that file so\n // findAvailableId must fall back to \"my-profile-2\".\n writeTestProfile(tmpDir, \"my-profile\", \"My Profile First\", { name: \"x\" });\n const entry = await sprinkle.createProfileNonInteractive(\"My Profile\");\n // \"my-profile\" is taken, so the entry id should become \"my-profile-2\"\n expect(entry.id).toBe(\"my-profile-2\");\n });\n\n test(\"throws DUPLICATE_PROFILE for same name (case-insensitive)\", async () => {\n writeTestProfile(tmpDir, \"existing\", \"Existing Profile\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await expect(\n sprinkle.createProfileNonInteractive(\"existing profile\"),\n ).rejects.toMatchObject({ code: \"DUPLICATE_PROFILE\" });\n });\n\n test(\"stores optional description in meta\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n const entry = await sprinkle.createProfileNonInteractive(\n \"Described\",\n \"My description\",\n );\n expect(entry.meta.description).toBe(\"My description\");\n const profilePath = path.join(tmpDir, \"profiles\", `${entry.id}.json`);\n const content = JSON.parse(fs.readFileSync(profilePath, \"utf-8\"));\n expect(content.meta.description).toBe(\"My description\");\n });\n\n test(\"stores initial settings when provided\", async () => {\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n const entry = await sprinkle.createProfileNonInteractive(\"With Settings\", undefined, {\n name: \"preset\",\n });\n const profilePath = path.join(tmpDir, \"profiles\", `${entry.id}.json`);\n const content = JSON.parse(fs.readFileSync(profilePath, \"utf-8\"));\n expect(content.settings.name).toBe(\"preset\");\n });\n\n test(\"does not change the active profile\", async () => {\n writeTestProfile(tmpDir, \"active\", \"Active\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n await sprinkle.loadProfile(\"active\");\n await sprinkle.createProfileNonInteractive(\"New One\");\n expect(sprinkle.profileId).toBe(\"active\");\n });\n});\n\n// ---------------------------------------------------------------------------\n// Sprinkle.deleteProfileById direct method tests\n// ---------------------------------------------------------------------------\n\ndescribe(\"Sprinkle.deleteProfileById\", () => {\n let tmpDir: string;\n\n beforeEach(() => {\n tmpDir = fs.mkdtempSync(path.join(os.tmpdir(), \"sprinkles-builtin-test-\"));\n });\n\n afterEach(() => {\n fs.rmSync(tmpDir, { recursive: true, force: true });\n });\n\n test(\"removes the profile file from disk\", () => {\n writeTestProfile(tmpDir, \"keep\", \"Keep\", { name: \"x\" });\n writeTestProfile(tmpDir, \"remove\", \"Remove\", { name: \"y\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n sprinkle.profileId = \"keep\";\n sprinkle.profileMeta = { name: \"Keep\", createdAt: \"\", updatedAt: \"\" };\n sprinkle.deleteProfileById(\"remove\");\n expect(fs.existsSync(path.join(tmpDir, \"profiles\", \"remove.json\"))).toBe(false);\n expect(fs.existsSync(path.join(tmpDir, \"profiles\", \"keep.json\"))).toBe(true);\n });\n\n test(\"throws PROFILE_NOT_FOUND for unknown id\", () => {\n writeTestProfile(tmpDir, \"alpha\", \"Alpha\", { name: \"x\" });\n writeTestProfile(tmpDir, \"beta\", \"Beta\", { name: \"y\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n sprinkle.profileId = \"alpha\";\n sprinkle.profileMeta = { name: \"Alpha\", createdAt: \"\", updatedAt: \"\" };\n expect(() => sprinkle.deleteProfileById(\"ghost\")).toThrow();\n try {\n sprinkle.deleteProfileById(\"ghost\");\n } catch (e: any) {\n expect(e.code).toBe(\"PROFILE_NOT_FOUND\");\n }\n });\n\n test(\"throws CANNOT_DELETE_ONLY_PROFILE when only one profile exists\", () => {\n writeTestProfile(tmpDir, \"solo\", \"Solo\", { name: \"x\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n sprinkle.profileId = \"solo\";\n sprinkle.profileMeta = { name: \"Solo\", createdAt: \"\", updatedAt: \"\" };\n expect(() => sprinkle.deleteProfileById(\"solo\")).toThrow();\n try {\n sprinkle.deleteProfileById(\"solo\");\n } catch (e: any) {\n expect(e.code).toBe(\"CANNOT_DELETE_ONLY_PROFILE\");\n }\n });\n\n test(\"throws CANNOT_DELETE_ACTIVE_PROFILE when deleting the active profile\", () => {\n writeTestProfile(tmpDir, \"active\", \"Active\", { name: \"x\" });\n writeTestProfile(tmpDir, \"other\", \"Other\", { name: \"y\" });\n const sprinkle = new Sprinkle(SimpleSchema, tmpDir);\n sprinkle.profileId = \"active\";\n sprinkle.profileMeta = { name: \"Active\", createdAt: \"\", updatedAt: \"\" };\n expect(() => sprinkle.deleteProfileById(\"active\")).toThrow();\n try {\n sprinkle.deleteProfileById(\"active\");\n } catch (e: any) {\n expect(e.code).toBe(\"CANNOT_DELETE_ACTIVE_PROFILE\");\n }\n });\n});\n"],"mappings":"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","ignoreList":[]}
|
|
@@ -174,13 +174,35 @@ const fakeContext = {};
|
|
|
174
174
|
x: _typebox.Type.String()
|
|
175
175
|
}))).toBe("not-json");
|
|
176
176
|
});
|
|
177
|
-
(0, _bunTest.test)("
|
|
177
|
+
(0, _bunTest.test)("coerces properties of already-parsed object for Object schema", () => {
|
|
178
178
|
const obj = {
|
|
179
|
-
x: 1
|
|
179
|
+
x: "1"
|
|
180
180
|
};
|
|
181
181
|
(0, _bunTest.expect)((0, _index.coerceValue)(obj, _typebox.Type.Object({
|
|
182
182
|
x: _typebox.Type.Number()
|
|
183
|
-
}))).
|
|
183
|
+
}))).toEqual({
|
|
184
|
+
x: 1
|
|
185
|
+
});
|
|
186
|
+
});
|
|
187
|
+
(0, _bunTest.test)("recursively coerces nested BigInt values inside parsed JSON", () => {
|
|
188
|
+
const schema = _typebox.Type.Object({
|
|
189
|
+
name: _typebox.Type.String(),
|
|
190
|
+
reserve_assets: _typebox.Type.Array(_typebox.Type.Object({
|
|
191
|
+
asset: _typebox.Type.Array(_typebox.Type.String()),
|
|
192
|
+
numerator: _typebox.Type.BigInt(),
|
|
193
|
+
denominator: _typebox.Type.BigInt()
|
|
194
|
+
}))
|
|
195
|
+
});
|
|
196
|
+
const raw = '{"name":"test","reserve_assets":[{"asset":["policy","name"],"numerator":"1","denominator":"2"}]}';
|
|
197
|
+
const result = (0, _index.coerceValue)(raw, schema);
|
|
198
|
+
(0, _bunTest.expect)(result).toEqual({
|
|
199
|
+
name: "test",
|
|
200
|
+
reserve_assets: [{
|
|
201
|
+
asset: ["policy", "name"],
|
|
202
|
+
numerator: BigInt(1),
|
|
203
|
+
denominator: BigInt(2)
|
|
204
|
+
}]
|
|
205
|
+
});
|
|
184
206
|
});
|
|
185
207
|
(0, _bunTest.test)("returns malformed JSON string as-is for Object schema", () => {
|
|
186
208
|
(0, _bunTest.expect)((0, _index.coerceValue)("{bad", _typebox.Type.Object({
|