@riotprompt/riotprompt 0.0.20 → 1.0.0

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.
Files changed (73) hide show
  1. package/CHANGELOG.md +74 -0
  2. package/MIGRATION.md +235 -0
  3. package/README.md +2 -0
  4. package/SECURITY.md +132 -0
  5. package/dist/builder.js +6 -0
  6. package/dist/builder.js.map +1 -1
  7. package/dist/{cli.cjs → cli.js} +658 -216
  8. package/dist/context-manager.js +1 -1
  9. package/dist/conversation-logger.d.ts +17 -1
  10. package/dist/conversation-logger.js +21 -17
  11. package/dist/conversation-logger.js.map +1 -1
  12. package/dist/conversation.js +1 -1
  13. package/dist/error-handling.d.ts +52 -0
  14. package/dist/error-handling.js +132 -0
  15. package/dist/error-handling.js.map +1 -0
  16. package/dist/formatter.js +1 -1
  17. package/dist/iteration-strategy.js +1 -1
  18. package/dist/loader.js +60 -12
  19. package/dist/loader.js.map +1 -1
  20. package/dist/logger.d.ts +52 -0
  21. package/dist/logger.js +114 -14
  22. package/dist/logger.js.map +1 -1
  23. package/dist/logging-config.d.ts +84 -0
  24. package/dist/logging-config.js +116 -0
  25. package/dist/logging-config.js.map +1 -0
  26. package/dist/message-builder.js +1 -1
  27. package/dist/model-config.js +1 -1
  28. package/dist/override.js +10 -4
  29. package/dist/override.js.map +1 -1
  30. package/dist/recipes.js +6 -0
  31. package/dist/recipes.js.map +1 -1
  32. package/dist/reflection.js +1 -1
  33. package/dist/riotprompt.d.ts +9 -0
  34. package/dist/riotprompt.js +8 -0
  35. package/dist/riotprompt.js.map +1 -1
  36. package/dist/security/audit-logger.d.ts +61 -0
  37. package/dist/security/audit-logger.js +281 -0
  38. package/dist/security/audit-logger.js.map +1 -0
  39. package/dist/security/cli-security.d.ts +143 -0
  40. package/dist/security/cli-security.js +302 -0
  41. package/dist/security/cli-security.js.map +1 -0
  42. package/dist/security/defaults.d.ts +31 -0
  43. package/dist/security/defaults.js +72 -0
  44. package/dist/security/defaults.js.map +1 -0
  45. package/dist/security/events.d.ts +8 -0
  46. package/dist/security/index.d.ts +27 -0
  47. package/dist/security/index.js +22 -0
  48. package/dist/security/index.js.map +1 -0
  49. package/dist/security/path-guard.d.ts +161 -0
  50. package/dist/security/path-guard.js +327 -0
  51. package/dist/security/path-guard.js.map +1 -0
  52. package/dist/security/rate-limiter.d.ts +117 -0
  53. package/dist/security/rate-limiter.js +165 -0
  54. package/dist/security/rate-limiter.js.map +1 -0
  55. package/dist/security/serialization-schemas.d.ts +183 -0
  56. package/dist/security/serialization-schemas.js +174 -0
  57. package/dist/security/serialization-schemas.js.map +1 -0
  58. package/dist/security/timeout-guard.d.ts +123 -0
  59. package/dist/security/timeout-guard.js +223 -0
  60. package/dist/security/timeout-guard.js.map +1 -0
  61. package/dist/security/types.d.ts +86 -0
  62. package/dist/security/types.js +80 -0
  63. package/dist/security/types.js.map +1 -0
  64. package/dist/token-budget.js +1 -1
  65. package/dist/tools.js +1 -1
  66. package/dist/util/storage.js.map +1 -1
  67. package/guide/index.md +2 -0
  68. package/guide/integration.md +1109 -0
  69. package/guide/security.md +237 -0
  70. package/package.json +23 -17
  71. package/vite.config.cli.ts +9 -18
  72. package/dist/riotprompt.cjs +0 -6169
  73. package/dist/riotprompt.cjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"override.js","sources":["../src/override.ts"],"sourcesContent":["import path from 'path';\nimport { z } from 'zod';\nimport { ParametersSchema } from './items/parameters';\nimport { SectionOptions, SectionOptionsSchema } from './items/section';\nimport { DEFAULT_LOGGER, wrapLogger } from './logger';\nimport { Formatter, Parser, Section, Weighted } from './riotprompt';\nimport * as Storage from './util/storage';\n\nconst OptionsSchema = z.object({\n logger: z.any().optional().default(DEFAULT_LOGGER),\n configDirs: z.array(z.string()).default(['./overrides']),\n overrides: z.boolean().default(false),\n parameters: ParametersSchema.optional().default({}),\n});\n\nexport type Options = z.infer<typeof OptionsSchema>;\n\nexport type OptionsParam = Partial<Options>;\n\nexport interface Instance {\n customize: <T extends Weighted>(overrideFile: string, section: Section<T>, sectionOptions?: SectionOptions) => Promise<Section<T>>;\n override: <T extends Weighted>(overrideFile: string, section: Section<T>, sectionOptions?: SectionOptions) =>\n Promise<{ override?: Section<T>, prepends: Section<T>[], appends: Section<T>[] }>;\n}\n\nexport const create = (overrideOptions: OptionsParam = {}): Instance => {\n const options: Required<Options> = OptionsSchema.parse(overrideOptions) as Required<Options>;\n\n const parameters = options.parameters;\n\n const logger = wrapLogger(options?.logger, 'Override');\n const storage = Storage.create({ log: logger.debug });\n\n const loadOptions = (sectionOptions: Partial<SectionOptions> = {}): SectionOptions => {\n const currentOptions = SectionOptionsSchema.parse(sectionOptions);\n return {\n ...currentOptions,\n parameters: {\n ...parameters,\n ...currentOptions.parameters\n }\n }\n }\n\n const override = async <T extends Weighted>(\n overrideFile: string,\n section: Section<T>,\n sectionOptions: Partial<SectionOptions> = {}\n ): Promise<{ override?: Section<T>, prepends: Section<T>[], appends: Section<T>[] }> => {\n const currentSectionOptions = loadOptions(sectionOptions);\n\n const response: { override?: Section<T>, prepends: Section<T>[], appends: Section<T>[] } = {\n prepends: [],\n appends: []\n };\n\n // Process directories in order (closest to furthest)\n for (let i = 0; i < options.configDirs.length; i++) {\n const configDir = options.configDirs[i];\n const baseFile = path.join(configDir, overrideFile);\n const preFile = baseFile.replace('.md', '-pre.md');\n const postFile = baseFile.replace('.md', '-post.md');\n\n // Check for prepend files (-pre.md)\n if (await storage.exists(preFile)) {\n logger.silly('Found pre file %s (layer %d)', preFile, i + 1);\n const parser = Parser.create({ logger });\n const prependSection = await parser.parseFile<T>(preFile, currentSectionOptions);\n response.prepends.push(prependSection);\n }\n\n // Check for append files (-post.md)\n if (await storage.exists(postFile)) {\n logger.silly('Found post file %s (layer %d)', postFile, i + 1);\n const parser = Parser.create({ logger });\n const appendSection = await parser.parseFile<T>(postFile, currentSectionOptions);\n response.appends.push(appendSection);\n }\n\n // Check for complete override files - use the first (closest) one found\n if (!response.override && await storage.exists(baseFile)) {\n logger.silly('Found base file %s (layer %d)', baseFile, i + 1);\n if (options.overrides) {\n logger.warn('WARNING: Core directives are being overwritten by custom configuration at layer %d', i + 1);\n const parser = Parser.create({ logger });\n response.override = await parser.parseFile<T>(baseFile, currentSectionOptions);\n } else {\n logger.error('ERROR: Core directives are being overwritten by custom configuration');\n throw new Error('Core directives are being overwritten by custom configuration, but overrides are not enabled. Please enable --overrides to use this feature.');\n }\n }\n }\n\n return response;\n }\n\n const customize = async <T extends Weighted>(\n overrideFile: string,\n section: Section<T>,\n sectionOptions: Partial<SectionOptions> = {}\n ): Promise<Section<T>> => {\n const currentSectionOptions = loadOptions(sectionOptions);\n\n const { override: overrideContent, prepends, appends }: { override?: Section<T>, prepends: Section<T>[], appends: Section<T>[] } = await override(overrideFile, section, currentSectionOptions);\n let finalSection: Section<T> = section;\n\n if (overrideContent) {\n if (options.overrides) {\n logger.warn('Override found, replacing content from file %s', overrideContent);\n finalSection = overrideContent;\n } else {\n logger.error('ERROR: Core directives are being overwritten by custom configuration');\n throw new Error('Core directives are being overwritten by custom configuration, but overrides are not enabled. Please enable --overrides to use this feature.');\n }\n }\n\n // Apply prepends in order (closest layer first)\n for (const prepend of prepends) {\n logger.silly('Prepend found, adding to content from file %s', prepend);\n finalSection = finalSection.prepend(prepend);\n }\n\n // Apply appends in reverse order (furthest layers first, then closest)\n // Create a copy to avoid mutating the original array\n const reversedAppends = [...appends].reverse();\n for (const append of reversedAppends) {\n logger.silly('Append found, adding to content from file %s', append);\n finalSection = finalSection.append(append);\n }\n\n const formatter = Formatter.create({ logger });\n logger.silly('Final section %s:\\n\\n%s\\n\\n', logger.name, formatter.format(finalSection));\n\n return finalSection;\n }\n\n return {\n override,\n customize,\n }\n}\n"],"names":["OptionsSchema","z","object","logger","any","optional","default","DEFAULT_LOGGER","configDirs","array","string","overrides","boolean","parameters","ParametersSchema","create","overrideOptions","options","parse","wrapLogger","storage","Storage","log","debug","loadOptions","sectionOptions","currentOptions","SectionOptionsSchema","override","overrideFile","section","currentSectionOptions","response","prepends","appends","i","length","configDir","baseFile","path","join","preFile","replace","postFile","exists","silly","parser","Parser","prependSection","parseFile","push","appendSection","warn","error","Error","customize","overrideContent","finalSection","prepend","reversedAppends","reverse","append","formatter","Formatter","name","format"],"mappings":";;;;;;;;;;;;;;;;;;;AAQA,MAAMA,aAAAA,GAAgBC,CAAAA,CAAEC,MAAM,CAAC;AAC3BC,IAAAA,MAAAA,EAAQF,EAAEG,GAAG,EAAA,CAAGC,QAAQ,EAAA,CAAGC,OAAO,CAACC,cAAAA,CAAAA;AACnCC,IAAAA,UAAAA,EAAYP,EAAEQ,KAAK,CAACR,EAAES,MAAM,EAAA,CAAA,CAAIJ,OAAO,CAAC;AAAC,QAAA;AAAc,KAAA,CAAA;AACvDK,IAAAA,SAAAA,EAAWV,CAAAA,CAAEW,OAAO,EAAA,CAAGN,OAAO,CAAC,KAAA,CAAA;AAC/BO,IAAAA,UAAAA,EAAYC,gBAAAA,CAAiBT,QAAQ,EAAA,CAAGC,OAAO,CAAC,EAAC;AACrD,CAAA,CAAA;AAYO,MAAMS,MAAAA,GAAS,CAACC,eAAAA,GAAgC,EAAE,GAAA;IACrD,MAAMC,OAAAA,GAA6BjB,aAAAA,CAAckB,KAAK,CAACF,eAAAA,CAAAA;IAEvD,MAAMH,UAAAA,GAAaI,QAAQJ,UAAU;AAErC,IAAA,MAAMV,SAASgB,UAAAA,CAAWF,OAAAA,KAAAA,IAAAA,IAAAA,OAAAA,KAAAA,MAAAA,GAAAA,MAAAA,GAAAA,OAAAA,CAASd,MAAM,EAAE,UAAA,CAAA;IAC3C,MAAMiB,OAAAA,GAAUC,QAAc,CAAC;AAAEC,QAAAA,GAAAA,EAAKnB,OAAOoB;AAAM,KAAA,CAAA;AAEnD,IAAA,MAAMC,WAAAA,GAAc,CAACC,cAAAA,GAA0C,EAAE,GAAA;QAC7D,MAAMC,cAAAA,GAAiBC,oBAAAA,CAAqBT,KAAK,CAACO,cAAAA,CAAAA;QAClD,OAAO;AACH,YAAA,GAAGC,cAAc;YACjBb,UAAAA,EAAY;AACR,gBAAA,GAAGA,UAAU;AACb,gBAAA,GAAGa,eAAeb;AACtB;AACJ,SAAA;AACJ,IAAA,CAAA;AAEA,IAAA,MAAMe,WAAW,OACbC,YAAAA,EACAC,OAAAA,EACAL,cAAAA,GAA0C,EAAE,GAAA;AAE5C,QAAA,MAAMM,wBAAwBP,WAAAA,CAAYC,cAAAA,CAAAA;AAE1C,QAAA,MAAMO,QAAAA,GAAqF;AACvFC,YAAAA,QAAAA,EAAU,EAAE;AACZC,YAAAA,OAAAA,EAAS;AACb,SAAA;;QAGA,IAAK,IAAIC,IAAI,CAAA,EAAGA,CAAAA,GAAIlB,QAAQT,UAAU,CAAC4B,MAAM,EAAED,CAAAA,EAAAA,CAAK;AAChD,YAAA,MAAME,SAAAA,GAAYpB,OAAAA,CAAQT,UAAU,CAAC2B,CAAAA,CAAE;AACvC,YAAA,MAAMG,QAAAA,GAAWC,aAAAA,CAAKC,IAAI,CAACH,SAAAA,EAAWR,YAAAA,CAAAA;AACtC,YAAA,MAAMY,OAAAA,GAAUH,QAAAA,CAASI,OAAO,CAAC,KAAA,EAAO,SAAA,CAAA;AACxC,YAAA,MAAMC,QAAAA,GAAWL,QAAAA,CAASI,OAAO,CAAC,KAAA,EAAO,UAAA,CAAA;;AAGzC,YAAA,IAAI,MAAMtB,OAAAA,CAAQwB,MAAM,CAACH,OAAAA,CAAAA,EAAU;AAC/BtC,gBAAAA,MAAAA,CAAO0C,KAAK,CAAC,8BAAA,EAAgCJ,OAAAA,EAASN,CAAAA,GAAI,CAAA,CAAA;gBAC1D,MAAMW,QAAAA,GAASC,QAAa,CAAC;AAAE5C,oBAAAA;AAAO,iBAAA,CAAA;AACtC,gBAAA,MAAM6C,cAAAA,GAAiB,MAAMF,QAAAA,CAAOG,SAAS,CAAIR,OAAAA,EAASV,qBAAAA,CAAAA;gBAC1DC,QAAAA,CAASC,QAAQ,CAACiB,IAAI,CAACF,cAAAA,CAAAA;AAC3B,YAAA;;AAGA,YAAA,IAAI,MAAM5B,OAAAA,CAAQwB,MAAM,CAACD,QAAAA,CAAAA,EAAW;AAChCxC,gBAAAA,MAAAA,CAAO0C,KAAK,CAAC,+BAAA,EAAiCF,QAAAA,EAAUR,CAAAA,GAAI,CAAA,CAAA;gBAC5D,MAAMW,QAAAA,GAASC,QAAa,CAAC;AAAE5C,oBAAAA;AAAO,iBAAA,CAAA;AACtC,gBAAA,MAAMgD,aAAAA,GAAgB,MAAML,QAAAA,CAAOG,SAAS,CAAIN,QAAAA,EAAUZ,qBAAAA,CAAAA;gBAC1DC,QAAAA,CAASE,OAAO,CAACgB,IAAI,CAACC,aAAAA,CAAAA;AAC1B,YAAA;;YAGA,IAAI,CAACnB,SAASJ,QAAQ,IAAI,MAAMR,OAAAA,CAAQwB,MAAM,CAACN,QAAAA,CAAAA,EAAW;AACtDnC,gBAAAA,MAAAA,CAAO0C,KAAK,CAAC,+BAAA,EAAiCP,QAAAA,EAAUH,CAAAA,GAAI,CAAA,CAAA;gBAC5D,IAAIlB,OAAAA,CAAQN,SAAS,EAAE;oBACnBR,MAAAA,CAAOiD,IAAI,CAAC,oFAAA,EAAsFjB,CAAAA,GAAI,CAAA,CAAA;oBACtG,MAAMW,QAAAA,GAASC,QAAa,CAAC;AAAE5C,wBAAAA;AAAO,qBAAA,CAAA;AACtC6B,oBAAAA,QAAAA,CAASJ,QAAQ,GAAG,MAAMkB,QAAAA,CAAOG,SAAS,CAAIX,QAAAA,EAAUP,qBAAAA,CAAAA;gBAC5D,CAAA,MAAO;AACH5B,oBAAAA,MAAAA,CAAOkD,KAAK,CAAC,sEAAA,CAAA;AACb,oBAAA,MAAM,IAAIC,KAAAA,CAAM,+IAAA,CAAA;AACpB,gBAAA;AACJ,YAAA;AACJ,QAAA;QAEA,OAAOtB,QAAAA;AACX,IAAA,CAAA;AAEA,IAAA,MAAMuB,YAAY,OACd1B,YAAAA,EACAC,OAAAA,EACAL,cAAAA,GAA0C,EAAE,GAAA;AAE5C,QAAA,MAAMM,wBAAwBP,WAAAA,CAAYC,cAAAA,CAAAA;AAE1C,QAAA,MAAM,EAAEG,QAAAA,EAAU4B,eAAe,EAAEvB,QAAQ,EAAEC,OAAO,EAAE,GAA6E,MAAMN,QAAAA,CAASC,YAAAA,EAAcC,OAAAA,EAASC,qBAAAA,CAAAA;AACzK,QAAA,IAAI0B,YAAAA,GAA2B3B,OAAAA;AAE/B,QAAA,IAAI0B,eAAAA,EAAiB;YACjB,IAAIvC,OAAAA,CAAQN,SAAS,EAAE;gBACnBR,MAAAA,CAAOiD,IAAI,CAAC,gDAAA,EAAkDI,eAAAA,CAAAA;gBAC9DC,YAAAA,GAAeD,eAAAA;YACnB,CAAA,MAAO;AACHrD,gBAAAA,MAAAA,CAAOkD,KAAK,CAAC,sEAAA,CAAA;AACb,gBAAA,MAAM,IAAIC,KAAAA,CAAM,+IAAA,CAAA;AACpB,YAAA;AACJ,QAAA;;QAGA,KAAK,MAAMI,WAAWzB,QAAAA,CAAU;YAC5B9B,MAAAA,CAAO0C,KAAK,CAAC,+CAAA,EAAiDa,OAAAA,CAAAA;YAC9DD,YAAAA,GAAeA,YAAAA,CAAaC,OAAO,CAACA,OAAAA,CAAAA;AACxC,QAAA;;;AAIA,QAAA,MAAMC,eAAAA,GAAkB;AAAIzB,YAAAA,GAAAA;AAAQ,SAAA,CAAC0B,OAAO,EAAA;QAC5C,KAAK,MAAMC,UAAUF,eAAAA,CAAiB;YAClCxD,MAAAA,CAAO0C,KAAK,CAAC,8CAAA,EAAgDgB,MAAAA,CAAAA;YAC7DJ,YAAAA,GAAeA,YAAAA,CAAaI,MAAM,CAACA,MAAAA,CAAAA;AACvC,QAAA;QAEA,MAAMC,WAAAA,GAAYC,QAAgB,CAAC;AAAE5D,YAAAA;AAAO,SAAA,CAAA;QAC5CA,MAAAA,CAAO0C,KAAK,CAAC,6BAAA,EAA+B1C,MAAAA,CAAO6D,IAAI,EAAEF,WAAAA,CAAUG,MAAM,CAACR,YAAAA,CAAAA,CAAAA;QAE1E,OAAOA,YAAAA;AACX,IAAA,CAAA;IAEA,OAAO;AACH7B,QAAAA,QAAAA;AACA2B,QAAAA;AACJ,KAAA;AACJ;;;;"}
1
+ {"version":3,"file":"override.js","sources":["../src/override.ts"],"sourcesContent":["import path from 'path';\nimport { z } from 'zod';\nimport { ParametersSchema } from './items/parameters';\nimport { SectionOptions, SectionOptionsSchema } from './items/section';\nimport { DEFAULT_LOGGER, wrapLogger } from './logger';\nimport { Formatter, Parser, Section, Weighted } from './riotprompt';\nimport * as Storage from './util/storage';\n\nconst OptionsSchema = z.object({\n logger: z.any().optional().default(DEFAULT_LOGGER),\n configDirs: z.array(z.string()).default(['./overrides']),\n overrides: z.boolean().default(false),\n parameters: ParametersSchema.optional().default({}),\n});\n\nexport type Options = z.infer<typeof OptionsSchema>;\n\nexport type OptionsParam = Partial<Options>;\n\nexport interface Instance {\n customize: <T extends Weighted>(overrideFile: string, section: Section<T>, sectionOptions?: SectionOptions) => Promise<Section<T>>;\n override: <T extends Weighted>(overrideFile: string, section: Section<T>, sectionOptions?: SectionOptions) =>\n Promise<{ override?: Section<T>, prepends: Section<T>[], appends: Section<T>[] }>;\n}\n\nexport const create = (overrideOptions: OptionsParam = {}): Instance => {\n const options: Required<Options> = OptionsSchema.parse(overrideOptions) as Required<Options>;\n\n const parameters = options.parameters;\n\n const logger = wrapLogger(options?.logger, 'Override');\n const storage = Storage.create({ log: logger.debug });\n\n const loadOptions = (sectionOptions: Partial<SectionOptions> = {}): SectionOptions => {\n const currentOptions = SectionOptionsSchema.parse(sectionOptions);\n return {\n ...currentOptions,\n parameters: {\n ...parameters,\n ...currentOptions.parameters\n }\n }\n }\n\n const override = async <T extends Weighted>(\n overrideFile: string,\n section: Section<T>,\n sectionOptions: Partial<SectionOptions> = {}\n ): Promise<{ override?: Section<T>, prepends: Section<T>[], appends: Section<T>[] }> => {\n const currentSectionOptions = loadOptions(sectionOptions);\n\n const response: { override?: Section<T>, prepends: Section<T>[], appends: Section<T>[] } = {\n prepends: [],\n appends: []\n };\n\n // Process directories in order (closest to furthest)\n for (let i = 0; i < options.configDirs.length; i++) {\n const configDir = options.configDirs[i];\n const baseFile = path.join(configDir, overrideFile);\n const preFile = baseFile.replace('.md', '-pre.md');\n const postFile = baseFile.replace('.md', '-post.md');\n\n // Check for prepend files (-pre.md)\n if (await storage.exists(preFile)) {\n logger.silly('Found pre file %s (layer %d)', preFile, i + 1);\n const parser = Parser.create({ logger });\n const prependSection = await parser.parseFile<T>(preFile, currentSectionOptions);\n response.prepends.push(prependSection);\n }\n\n // Check for append files (-post.md)\n if (await storage.exists(postFile)) {\n logger.silly('Found post file %s (layer %d)', postFile, i + 1);\n const parser = Parser.create({ logger });\n const appendSection = await parser.parseFile<T>(postFile, currentSectionOptions);\n response.appends.push(appendSection);\n }\n\n // Check for complete override files - use the first (closest) one found\n if (!response.override && await storage.exists(baseFile)) {\n logger.silly('Found base file %s (layer %d)', baseFile, i + 1);\n if (options.overrides) {\n logger.warn('WARNING: Core directives are being overwritten by custom configuration at layer %d', i + 1);\n const parser = Parser.create({ logger });\n response.override = await parser.parseFile<T>(baseFile, currentSectionOptions);\n } else {\n logger.error('ERROR: Core directives are being overwritten by custom configuration');\n throw new Error('Core directives are being overwritten by custom configuration, but overrides are not enabled. Please enable --overrides to use this feature.');\n }\n }\n }\n\n return response;\n }\n\n const customize = async <T extends Weighted>(\n overrideFile: string,\n section: Section<T>,\n sectionOptions: Partial<SectionOptions> = {}\n ): Promise<Section<T>> => {\n const currentSectionOptions = loadOptions(sectionOptions);\n\n const { override: overrideContent, prepends, appends }: { override?: Section<T>, prepends: Section<T>[], appends: Section<T>[] } = await override(overrideFile, section, currentSectionOptions);\n let finalSection: Section<T> = section;\n\n if (overrideContent) {\n if (options.overrides) {\n logger.warn('Override found, replacing content from file %s', overrideContent);\n finalSection = overrideContent;\n } else {\n logger.error('ERROR: Core directives are being overwritten by custom configuration');\n throw new Error('Core directives are being overwritten by custom configuration, but overrides are not enabled. Please enable --overrides to use this feature.');\n }\n }\n\n // Apply prepends in order (closest layer first)\n for (const prepend of prepends) {\n logger.silly('Prepend found, adding to content from file %s', prepend);\n finalSection = finalSection.prepend(prepend);\n }\n\n // Apply appends in reverse order (furthest layers first, then closest)\n // Create a copy to avoid mutating the original array\n const reversedAppends = [...appends].reverse();\n for (const append of reversedAppends) {\n logger.silly('Append found, adding to content from file %s', append);\n finalSection = finalSection.append(append);\n }\n\n const formatter = Formatter.create({ logger });\n logger.silly('Final section %s:\\n\\n%s\\n\\n', logger.name, formatter.format(finalSection));\n\n return finalSection;\n }\n\n return {\n override,\n customize,\n }\n}\n"],"names":["OptionsSchema","z","object","logger","any","optional","default","DEFAULT_LOGGER","configDirs","array","string","overrides","boolean","parameters","ParametersSchema","create","overrideOptions","options","parse","wrapLogger","storage","Storage","log","debug","loadOptions","sectionOptions","currentOptions","SectionOptionsSchema","override","overrideFile","section","currentSectionOptions","response","prepends","appends","i","length","configDir","baseFile","path","join","preFile","replace","postFile","exists","silly","parser","Parser","prependSection","parseFile","push","appendSection","warn","error","Error","customize","overrideContent","finalSection","prepend","reversedAppends","reverse","append","formatter","Formatter","name","format"],"mappings":"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"}
package/dist/recipes.js CHANGED
@@ -14,11 +14,17 @@ import { create as create$2 } from './loader.js';
14
14
  import { create as create$1 } from './override.js';
15
15
  import './builder.js';
16
16
  import 'tiktoken';
17
+ import './logging-config.js';
17
18
  import { ToolRegistry } from './tools.js';
18
19
  import { StrategyExecutor } from './iteration-strategy.js';
19
20
  import 'openai';
20
21
  import '@anthropic-ai/sdk';
21
22
  import '@google/generative-ai';
23
+ import './security/types.js';
24
+ import './security/defaults.js';
25
+ import './security/serialization-schemas.js';
26
+ import '@theunwalked/pressurelid';
27
+ import '@theunwalked/spotclean';
22
28
 
23
29
  // ===== CONFIGURATION SCHEMAS =====
24
30
  const ContentItemSchema = z.union([
@@ -1 +1 @@
1
- {"version":3,"file":"recipes.js","sources":["../src/recipes.ts"],"sourcesContent":["import path from \"path\";\nimport fs from \"fs/promises\";\nimport { z } from \"zod\";\nimport zodToJsonSchema from \"zod-to-json-schema\";\nimport { Model } from \"./chat\";\nimport { ConversationBuilder } from \"./conversation\";\nimport { ParametersSchema } from \"./items/parameters\";\nimport { SectionOptions } from \"./items/section\";\nimport { DEFAULT_LOGGER, wrapLogger } from \"./logger\";\nimport { Content, Context, createPrompt, createSection, Instruction, Loader, Override, Parser, Prompt, Section, Weighted } from \"./riotprompt\";\nimport { type TokenBudgetConfig } from \"./token-budget\";\nimport { Tool, ToolRegistry } from \"./tools\";\nimport { StrategyExecutor, type IterationStrategy, type LLMClient, type StrategyResult } from \"./iteration-strategy\";\n\n// ===== CONFIGURATION SCHEMAS =====\n\nconst ContentItemSchema = z.union([\n z.string(), // Simple string content\n z.object({\n content: z.string(),\n title: z.string().optional(),\n weight: z.number().optional(),\n }),\n z.object({\n path: z.string(),\n title: z.string().optional(),\n weight: z.number().optional(),\n }),\n z.object({\n directories: z.array(z.string()),\n title: z.string().optional(),\n weight: z.number().optional(),\n })\n]);\n\nconst RecipeConfigSchema = z.object({\n // Core settings\n basePath: z.string(),\n logger: z.any().optional().default(DEFAULT_LOGGER),\n overridePaths: z.array(z.string()).optional().default([\"./\"]),\n overrides: z.boolean().optional().default(false),\n parameters: ParametersSchema.optional().default({}),\n\n // Content sections\n persona: ContentItemSchema.optional(),\n instructions: z.array(ContentItemSchema).optional().default([]),\n content: z.array(ContentItemSchema).optional().default([]),\n context: z.array(ContentItemSchema).optional().default([]),\n\n // Advanced prompting sections\n constraints: z.array(ContentItemSchema).optional().default([]),\n tone: z.array(ContentItemSchema).optional().default([]),\n examples: z.array(ContentItemSchema).optional().default([]),\n reasoning: z.array(ContentItemSchema).optional().default([]),\n responseFormat: z.array(ContentItemSchema).optional().default([]),\n recap: z.array(ContentItemSchema).optional().default([]),\n safeguards: z.array(ContentItemSchema).optional().default([]),\n schema: z.any().optional(), // Can be string path, JSON object, or Zod schema\n\n // Templates and inheritance\n extends: z.string().optional(), // Extend another recipe\n template: z.string().optional(), // Generic template name\n\n // Tool integration\n tools: z.any().optional(), // Tool[] | ToolRegistry\n toolGuidance: z.union([\n z.enum(['auto', 'minimal', 'detailed']),\n z.object({\n strategy: z.enum(['adaptive', 'prescriptive', 'minimal']),\n includeExamples: z.boolean().optional(),\n explainWhenToUse: z.boolean().optional(),\n includeCategories: z.boolean().optional(),\n customInstructions: z.string().optional(),\n })\n ]).optional(),\n toolCategories: z.array(z.string()).optional(),\n});\n\ntype RecipeConfig = z.infer<typeof RecipeConfigSchema>;\ntype ContentItem = z.infer<typeof ContentItemSchema>;\n\n// ===== CONFIGURABLE TEMPLATE SYSTEM =====\n\nexport interface ToolGuidanceConfig {\n strategy: 'adaptive' | 'prescriptive' | 'minimal';\n includeExamples?: boolean;\n explainWhenToUse?: boolean;\n includeCategories?: boolean;\n customInstructions?: string;\n}\n\nexport interface TemplateConfig {\n persona?: ContentItem;\n instructions?: ContentItem[];\n content?: ContentItem[];\n context?: ContentItem[];\n constraints?: ContentItem[];\n tone?: ContentItem[];\n examples?: ContentItem[];\n reasoning?: ContentItem[];\n responseFormat?: ContentItem[];\n recap?: ContentItem[];\n safeguards?: ContentItem[];\n schema?: string | Record<string, any> | z.ZodType<any>;\n tools?: Tool[] | ToolRegistry;\n toolGuidance?: Partial<ToolGuidanceConfig> | 'auto' | 'minimal' | 'detailed';\n}\n\n// User-customizable template registry\nlet TEMPLATES: Record<string, TemplateConfig> = {};\n\n/**\n * Register custom templates with the recipes system\n *\n * @example\n * ```typescript\n * // Register your own templates\n * registerTemplates({\n * myWorkflow: {\n * persona: { path: \"personas/my-persona.md\" },\n * instructions: [{ path: \"instructions/my-instructions.md\" }]\n * },\n * anotherTemplate: {\n * persona: { content: \"You are a helpful assistant\" },\n * instructions: [{ content: \"Follow these steps...\" }]\n * }\n * });\n * ```\n */\nexport const registerTemplates = (templates: Record<string, TemplateConfig>): void => {\n TEMPLATES = { ...TEMPLATES, ...templates };\n};\n\n/**\n * Get currently registered templates\n */\nexport const getTemplates = (): Record<string, TemplateConfig> => ({ ...TEMPLATES });\n\n/**\n * Clear all registered templates\n */\nexport const clearTemplates = (): void => {\n TEMPLATES = {};\n};\n\n// ===== TOOL GUIDANCE GENERATION =====\n\n/**\n * Generate tool guidance instructions based on strategy\n */\nexport const generateToolGuidance = (\n tools: Tool[],\n guidance: ToolGuidanceConfig | 'auto' | 'minimal' | 'detailed'\n): string => {\n if (tools.length === 0) {\n return '';\n }\n\n // Normalize guidance config\n let config: ToolGuidanceConfig;\n if (typeof guidance === 'string') {\n switch (guidance) {\n case 'auto':\n case 'detailed':\n config = { strategy: 'adaptive', includeExamples: true, explainWhenToUse: true };\n break;\n case 'minimal':\n config = { strategy: 'minimal', includeExamples: false, explainWhenToUse: false };\n break;\n default:\n config = { strategy: 'adaptive' };\n }\n } else {\n config = guidance;\n }\n\n let output = '## Available Tools\\n\\n';\n\n if (config.customInstructions) {\n output += config.customInstructions + '\\n\\n';\n }\n\n // Group by category if enabled\n if (config.includeCategories) {\n const categorized = new Map<string, Tool[]>();\n tools.forEach(tool => {\n const category = tool.category || 'General';\n if (!categorized.has(category)) {\n categorized.set(category, []);\n }\n categorized.get(category)!.push(tool);\n });\n\n categorized.forEach((categoryTools, category) => {\n output += `### ${category}\\n\\n`;\n categoryTools.forEach(tool => {\n output += formatToolGuidance(tool, config);\n });\n });\n } else {\n tools.forEach(tool => {\n output += formatToolGuidance(tool, config);\n });\n }\n\n return output;\n};\n\nconst formatToolGuidance = (tool: Tool, config: ToolGuidanceConfig): string => {\n let output = `**${tool.name}**`;\n\n if (tool.cost) {\n output += ` _(${tool.cost})_`;\n }\n\n output += `\\n${tool.description}\\n\\n`;\n\n if (config.strategy !== 'minimal') {\n // Parameters\n const required = tool.parameters.required || [];\n const paramList = Object.entries(tool.parameters.properties)\n .map(([name, param]) => {\n const isRequired = required.includes(name);\n return `- \\`${name}\\`${isRequired ? ' (required)' : ''}: ${param.description}`;\n })\n .join('\\n');\n\n if (paramList) {\n output += 'Parameters:\\n' + paramList + '\\n\\n';\n }\n\n // When to use (adaptive and prescriptive)\n if (config.explainWhenToUse && (config.strategy === 'adaptive' || config.strategy === 'prescriptive')) {\n output += `**When to use:** ${tool.description}\\n\\n`;\n }\n\n // Examples\n if (config.includeExamples && tool.examples && tool.examples.length > 0) {\n output += '**Examples:**\\n';\n tool.examples.forEach(example => {\n output += `- ${example.scenario}: \\`${tool.name}(${JSON.stringify(example.params)})\\`\\n`;\n });\n output += '\\n';\n }\n }\n\n output += '---\\n\\n';\n\n return output;\n};\n\n// ===== CORE RECIPE ENGINE =====\n\nexport const cook = async (config: Partial<RecipeConfig> & { basePath: string }): Promise<Prompt> => {\n // Parse and validate configuration with defaults\n const validatedConfig = RecipeConfigSchema.parse({\n overridePaths: [\"./\"],\n overrides: false,\n parameters: {},\n instructions: [],\n content: [],\n context: [],\n constraints: [],\n tone: [],\n examples: [],\n reasoning: [],\n responseFormat: [],\n recap: [],\n safeguards: [],\n ...config\n });\n\n // Handle template inheritance\n let finalConfig = { ...validatedConfig };\n if (validatedConfig.template) {\n const template = TEMPLATES[validatedConfig.template];\n if (template) {\n finalConfig = {\n ...validatedConfig,\n persona: validatedConfig.persona || template.persona,\n instructions: [\n ...(template.instructions || []),\n ...(validatedConfig.instructions || [])\n ],\n content: [\n ...(template.content || []),\n ...(validatedConfig.content || [])\n ],\n context: [\n ...(template.context || []),\n ...(validatedConfig.context || [])\n ],\n constraints: [\n ...(template.constraints || []),\n ...(validatedConfig.constraints || [])\n ],\n tone: [\n ...(template.tone || []),\n ...(validatedConfig.tone || [])\n ],\n examples: [\n ...(template.examples || []),\n ...(validatedConfig.examples || [])\n ],\n reasoning: [\n ...(template.reasoning || []),\n ...(validatedConfig.reasoning || [])\n ],\n responseFormat: [\n ...(template.responseFormat || []),\n ...(validatedConfig.responseFormat || [])\n ],\n recap: [\n ...(template.recap || []),\n ...(validatedConfig.recap || [])\n ],\n safeguards: [\n ...(template.safeguards || []),\n ...(validatedConfig.safeguards || [])\n ],\n schema: validatedConfig.schema || template.schema,\n };\n }\n }\n\n // Setup internal services\n const logger = wrapLogger(finalConfig.logger, 'Recipe');\n const parser = Parser.create({ logger });\n const override = Override.create({\n logger,\n configDirs: finalConfig.overridePaths || [\"./\"],\n overrides: finalConfig.overrides || false\n });\n const loader = Loader.create({ logger });\n\n // Create sections\n const personaSection: Section<Instruction> = createSection({ title: \"Persona\" });\n const instructionSection: Section<Instruction> = createSection({ title: \"Instruction\" });\n const contentSection: Section<Content> = createSection({ title: \"Content\" });\n const contextSection: Section<Context> = createSection({ title: \"Context\" });\n \n // Advanced sections\n const constraintSection: Section<Instruction> = createSection({ title: \"Constraints\" });\n const toneSection: Section<Instruction> = createSection({ title: \"Tone\" });\n const exampleSection: Section<Content> = createSection({ title: \"Examples\" });\n const reasoningSection: Section<Instruction> = createSection({ title: \"Reasoning\" });\n const responseFormatSection: Section<Instruction> = createSection({ title: \"Response Format\" });\n const recapSection: Section<Instruction> = createSection({ title: \"Recap\" });\n const safeguardSection: Section<Instruction> = createSection({ title: \"Safeguards\" });\n\n // Helper for processing list items\n const processList = async <T extends Weighted>(\n items: ContentItem[],\n section: Section<T>,\n type: 'persona' | 'instruction' | 'content' | 'context'\n ) => {\n for (const item of items) {\n await processContentItem(item, section, type, {\n basePath: finalConfig.basePath,\n parser,\n override,\n loader,\n parameters: finalConfig.parameters,\n logger\n });\n }\n };\n\n // Process persona\n if (finalConfig.persona) {\n await processContentItem(finalConfig.persona, personaSection, 'persona', {\n basePath: finalConfig.basePath,\n parser,\n override,\n loader,\n parameters: finalConfig.parameters,\n logger\n });\n }\n\n // Process standard sections\n await processList(finalConfig.instructions || [], instructionSection, 'instruction');\n await processList(finalConfig.content || [], contentSection, 'content');\n await processList(finalConfig.context || [], contextSection, 'context');\n\n // Process advanced sections\n await processList(finalConfig.constraints || [], constraintSection, 'instruction');\n await processList(finalConfig.tone || [], toneSection, 'instruction');\n await processList(finalConfig.examples || [], exampleSection, 'content');\n await processList(finalConfig.reasoning || [], reasoningSection, 'instruction');\n await processList(finalConfig.responseFormat || [], responseFormatSection, 'instruction');\n await processList(finalConfig.recap || [], recapSection, 'instruction');\n await processList(finalConfig.safeguards || [], safeguardSection, 'instruction');\n\n // Generate tool guidance if tools are provided\n if (finalConfig.tools) {\n const tools: Tool[] = Array.isArray(finalConfig.tools)\n ? finalConfig.tools\n : finalConfig.tools.getAll();\n\n // Filter by categories if specified\n const filteredTools: Tool[] = finalConfig.toolCategories\n ? tools.filter((tool: Tool) => tool.category && finalConfig.toolCategories!.includes(tool.category))\n : tools;\n\n if (filteredTools.length > 0 && finalConfig.toolGuidance) {\n const guidance = generateToolGuidance(filteredTools, finalConfig.toolGuidance);\n const toolSection = await parser.parse(guidance, { parameters: finalConfig.parameters });\n instructionSection.add(toolSection);\n }\n }\n\n // Process schema\n let schema = finalConfig.schema;\n let validator: any = undefined;\n\n if (schema instanceof z.ZodType) {\n // It's a Zod schema!\n validator = schema;\n const jsonSchema = zodToJsonSchema(schema as any, \"response\");\n \n // Wrap in OpenAI Structured Output format\n // zod-to-json-schema returns { \"$schema\": \"...\", \"definitions\": { \"response\": { ... } }, \"$ref\": \"#/definitions/response\" }\n // We need to extract the schema part.\n \n // Simpler usage for OpenAI: just get the schema object.\n // Actually, zod-to-json-schema produces a full JSON schema object.\n // OpenAI expects: { type: \"json_schema\", json_schema: { name: \"...\", schema: ... } }\n \n // Let's create a clean schema object\n // NOTE: OpenAI requires strict: true and additionalProperties: false\n // zod-to-json-schema generally produces compatible schemas but strictness might need tweaking if required by OpenAI.\n // For now, let's assume \"response\" as the name.\n \n // We'll define a simpler conversion if possible, or trust the user to configure Zod strictly if they want strict mode.\n \n // Extract the definition if it exists\n const actualSchema = (jsonSchema as any).definitions?.response || jsonSchema;\n \n schema = {\n type: \"json_schema\",\n json_schema: {\n name: \"response\",\n schema: actualSchema,\n strict: true // Try to enable strict mode for OpenAI\n }\n };\n } else if (typeof schema === 'string') {\n const schemaPath = path.resolve(finalConfig.basePath, schema);\n try {\n const schemaContent = await fs.readFile(schemaPath, 'utf-8');\n schema = JSON.parse(schemaContent);\n } catch (e: any) {\n throw new Error(`Failed to load schema from ${schemaPath}: ${e.message}`);\n }\n }\n\n // Build and return prompt\n return createPrompt({\n persona: personaSection.items.length > 0 ? personaSection : undefined,\n instructions: instructionSection,\n contents: contentSection.items.length > 0 ? contentSection : undefined,\n contexts: contextSection.items.length > 0 ? contextSection : undefined,\n constraints: constraintSection.items.length > 0 ? constraintSection : undefined,\n tone: toneSection.items.length > 0 ? toneSection : undefined,\n examples: exampleSection.items.length > 0 ? exampleSection : undefined,\n reasoning: reasoningSection.items.length > 0 ? reasoningSection : undefined,\n responseFormat: responseFormatSection.items.length > 0 ? responseFormatSection : undefined,\n recap: recapSection.items.length > 0 ? recapSection : undefined,\n safeguards: safeguardSection.items.length > 0 ? safeguardSection : undefined,\n schema,\n validator,\n });\n};\n\n// ===== CONTENT PROCESSING =====\n\ninterface ProcessingContext {\n basePath: string;\n parser: any;\n override: any;\n loader: any;\n parameters: any;\n logger: any;\n}\n\nconst processContentItem = async <T extends Weighted>(\n item: ContentItem,\n section: Section<T>,\n type: 'persona' | 'instruction' | 'content' | 'context',\n ctx: ProcessingContext\n): Promise<void> => {\n const sectionOptions: SectionOptions = {\n parameters: ctx.parameters,\n };\n\n if (typeof item === 'string') {\n // Simple string content\n const parsedSection = await ctx.parser.parse(item, sectionOptions);\n section.add(parsedSection);\n } else if ('content' in item) {\n // Inline content with options\n const parsedSection = await ctx.parser.parse(item.content, {\n ...sectionOptions,\n title: item.title,\n weight: item.weight,\n });\n section.add(parsedSection);\n } else if ('path' in item) {\n // File path\n const fullPath = path.join(ctx.basePath, item.path);\n const parsedSection = await ctx.parser.parseFile(fullPath, {\n ...sectionOptions,\n title: item.title,\n weight: item.weight,\n });\n const overrideSection = await ctx.override.customize(item.path, parsedSection, sectionOptions);\n section.add(overrideSection);\n } else if ('directories' in item) {\n // Directory loading\n const sections = await ctx.loader.load(item.directories, {\n ...sectionOptions,\n title: item.title,\n weight: item.weight,\n });\n section.add(sections);\n }\n};\n\n// ===== FLUENT RECIPE BUILDER =====\n\nexport const recipe = (basePath: string) => {\n const config: Partial<RecipeConfig> & { basePath: string } = { basePath };\n\n const builder = {\n template: (name: string) => {\n config.template = name;\n return builder;\n },\n with: (partialConfig: Partial<RecipeConfig>) => {\n Object.assign(config, partialConfig);\n return builder;\n },\n persona: (persona: ContentItem) => {\n config.persona = persona;\n return builder;\n },\n instructions: (...instructions: ContentItem[]) => {\n config.instructions = [...(config.instructions || []), ...instructions];\n return builder;\n },\n content: (...content: ContentItem[]) => {\n config.content = [...(config.content || []), ...content];\n return builder;\n },\n context: (...context: ContentItem[]) => {\n config.context = [...(config.context || []), ...context];\n return builder;\n },\n constraints: (...constraints: ContentItem[]) => {\n config.constraints = [...(config.constraints || []), ...constraints];\n return builder;\n },\n tone: (...tone: ContentItem[]) => {\n config.tone = [...(config.tone || []), ...tone];\n return builder;\n },\n examples: (...examples: ContentItem[]) => {\n config.examples = [...(config.examples || []), ...examples];\n return builder;\n },\n reasoning: (...reasoning: ContentItem[]) => {\n config.reasoning = [...(config.reasoning || []), ...reasoning];\n return builder;\n },\n responseFormat: (...responseFormat: ContentItem[]) => {\n config.responseFormat = [...(config.responseFormat || []), ...responseFormat];\n return builder;\n },\n recap: (...recap: ContentItem[]) => {\n config.recap = [...(config.recap || []), ...recap];\n return builder;\n },\n safeguards: (...safeguards: ContentItem[]) => {\n config.safeguards = [...(config.safeguards || []), ...safeguards];\n return builder;\n },\n schema: (schema: string | Record<string, any> | z.ZodType<any>) => {\n config.schema = schema;\n return builder;\n },\n parameters: (parameters: any) => {\n config.parameters = { ...config.parameters, ...parameters };\n return builder;\n },\n overrides: (enabled: boolean) => {\n config.overrides = enabled;\n return builder;\n },\n overridePaths: (paths: string[]) => {\n config.overridePaths = paths;\n return builder;\n },\n tools: (tools: Tool[] | ToolRegistry) => {\n config.tools = tools;\n return builder;\n },\n toolRegistry: (registry: ToolRegistry) => {\n config.tools = registry;\n return builder;\n },\n toolGuidance: (guidance: ToolGuidanceConfig | 'auto' | 'minimal' | 'detailed') => {\n config.toolGuidance = guidance as any;\n return builder;\n },\n toolCategories: (categories: string[]) => {\n config.toolCategories = categories;\n return builder;\n },\n cook: () => cook(config),\n buildConversation: async (model: Model, tokenBudget?: TokenBudgetConfig) => {\n const prompt = await cook(config);\n const conversation = ConversationBuilder.create({ model }, config.logger);\n conversation.fromPrompt(prompt, model);\n\n // Apply token budget if provided\n if (tokenBudget) {\n conversation.withTokenBudget(tokenBudget);\n }\n\n return conversation;\n },\n getToolRegistry: (): ToolRegistry | undefined => {\n if (config.tools instanceof ToolRegistry) {\n return config.tools;\n } else if (Array.isArray(config.tools)) {\n const registry = ToolRegistry.create({}, config.logger);\n registry.registerAll(config.tools);\n return registry;\n }\n return undefined;\n },\n executeWith: async (\n llm: LLMClient,\n strategy: IterationStrategy,\n model: Model = 'gpt-4o',\n tokenBudget?: TokenBudgetConfig\n ): Promise<StrategyResult> => {\n const prompt = await cook(config);\n const conversation = ConversationBuilder.create({ model }, config.logger);\n conversation.fromPrompt(prompt, model);\n\n if (tokenBudget) {\n conversation.withTokenBudget(tokenBudget);\n }\n\n const registry = builder.getToolRegistry();\n if (!registry) {\n throw new Error('Tools must be configured to use executeWith');\n }\n\n const executor = new StrategyExecutor(llm, config.logger);\n return executor.execute(conversation, registry, strategy);\n },\n };\n\n return builder;\n};\n\n// Export types for external use\nexport type { RecipeConfig, ContentItem };\n"],"names":["ContentItemSchema","z","union","string","object","content","title","optional","weight","number","path","directories","array","RecipeConfigSchema","basePath","logger","any","default","DEFAULT_LOGGER","overridePaths","overrides","boolean","parameters","ParametersSchema","persona","instructions","context","constraints","tone","examples","reasoning","responseFormat","recap","safeguards","schema","extends","template","tools","toolGuidance","enum","strategy","includeExamples","explainWhenToUse","includeCategories","customInstructions","toolCategories","TEMPLATES","registerTemplates","templates","getTemplates","clearTemplates","generateToolGuidance","guidance","length","config","output","categorized","Map","forEach","tool","category","has","set","get","push","categoryTools","formatToolGuidance","name","cost","description","required","paramList","Object","entries","properties","map","param","isRequired","includes","join","example","scenario","JSON","stringify","params","cook","validatedConfig","parse","finalConfig","wrapLogger","parser","Parser","override","Override","configDirs","loader","Loader","personaSection","createSection","instructionSection","contentSection","contextSection","constraintSection","toneSection","exampleSection","reasoningSection","responseFormatSection","recapSection","safeguardSection","processList","items","section","type","item","processContentItem","Array","isArray","getAll","filteredTools","filter","toolSection","add","validator","undefined","ZodType","jsonSchema","zodToJsonSchema","actualSchema","definitions","response","json_schema","strict","schemaPath","resolve","schemaContent","fs","readFile","e","Error","message","createPrompt","contents","contexts","ctx","sectionOptions","parsedSection","fullPath","parseFile","overrideSection","customize","sections","load","recipe","builder","with","partialConfig","assign","enabled","paths","toolRegistry","registry","categories","buildConversation","model","tokenBudget","prompt","conversation","ConversationBuilder","create","fromPrompt","withTokenBudget","getToolRegistry","ToolRegistry","registerAll","executeWith","llm","executor","StrategyExecutor","execute"],"mappings":"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"}
1
+ {"version":3,"file":"recipes.js","sources":["../src/recipes.ts"],"sourcesContent":["import path from \"path\";\nimport fs from \"fs/promises\";\nimport { z } from \"zod\";\nimport zodToJsonSchema from \"zod-to-json-schema\";\nimport { Model } from \"./chat\";\nimport { ConversationBuilder } from \"./conversation\";\nimport { ParametersSchema } from \"./items/parameters\";\nimport { SectionOptions } from \"./items/section\";\nimport { DEFAULT_LOGGER, wrapLogger } from \"./logger\";\nimport { Content, Context, createPrompt, createSection, Instruction, Loader, Override, Parser, Prompt, Section, Weighted } from \"./riotprompt\";\nimport { type TokenBudgetConfig } from \"./token-budget\";\nimport { Tool, ToolRegistry } from \"./tools\";\nimport { StrategyExecutor, type IterationStrategy, type LLMClient, type StrategyResult } from \"./iteration-strategy\";\n\n// ===== CONFIGURATION SCHEMAS =====\n\nconst ContentItemSchema = z.union([\n z.string(), // Simple string content\n z.object({\n content: z.string(),\n title: z.string().optional(),\n weight: z.number().optional(),\n }),\n z.object({\n path: z.string(),\n title: z.string().optional(),\n weight: z.number().optional(),\n }),\n z.object({\n directories: z.array(z.string()),\n title: z.string().optional(),\n weight: z.number().optional(),\n })\n]);\n\nconst RecipeConfigSchema = z.object({\n // Core settings\n basePath: z.string(),\n logger: z.any().optional().default(DEFAULT_LOGGER),\n overridePaths: z.array(z.string()).optional().default([\"./\"]),\n overrides: z.boolean().optional().default(false),\n parameters: ParametersSchema.optional().default({}),\n\n // Content sections\n persona: ContentItemSchema.optional(),\n instructions: z.array(ContentItemSchema).optional().default([]),\n content: z.array(ContentItemSchema).optional().default([]),\n context: z.array(ContentItemSchema).optional().default([]),\n\n // Advanced prompting sections\n constraints: z.array(ContentItemSchema).optional().default([]),\n tone: z.array(ContentItemSchema).optional().default([]),\n examples: z.array(ContentItemSchema).optional().default([]),\n reasoning: z.array(ContentItemSchema).optional().default([]),\n responseFormat: z.array(ContentItemSchema).optional().default([]),\n recap: z.array(ContentItemSchema).optional().default([]),\n safeguards: z.array(ContentItemSchema).optional().default([]),\n schema: z.any().optional(), // Can be string path, JSON object, or Zod schema\n\n // Templates and inheritance\n extends: z.string().optional(), // Extend another recipe\n template: z.string().optional(), // Generic template name\n\n // Tool integration\n tools: z.any().optional(), // Tool[] | ToolRegistry\n toolGuidance: z.union([\n z.enum(['auto', 'minimal', 'detailed']),\n z.object({\n strategy: z.enum(['adaptive', 'prescriptive', 'minimal']),\n includeExamples: z.boolean().optional(),\n explainWhenToUse: z.boolean().optional(),\n includeCategories: z.boolean().optional(),\n customInstructions: z.string().optional(),\n })\n ]).optional(),\n toolCategories: z.array(z.string()).optional(),\n});\n\ntype RecipeConfig = z.infer<typeof RecipeConfigSchema>;\ntype ContentItem = z.infer<typeof ContentItemSchema>;\n\n// ===== CONFIGURABLE TEMPLATE SYSTEM =====\n\nexport interface ToolGuidanceConfig {\n strategy: 'adaptive' | 'prescriptive' | 'minimal';\n includeExamples?: boolean;\n explainWhenToUse?: boolean;\n includeCategories?: boolean;\n customInstructions?: string;\n}\n\nexport interface TemplateConfig {\n persona?: ContentItem;\n instructions?: ContentItem[];\n content?: ContentItem[];\n context?: ContentItem[];\n constraints?: ContentItem[];\n tone?: ContentItem[];\n examples?: ContentItem[];\n reasoning?: ContentItem[];\n responseFormat?: ContentItem[];\n recap?: ContentItem[];\n safeguards?: ContentItem[];\n schema?: string | Record<string, any> | z.ZodType<any>;\n tools?: Tool[] | ToolRegistry;\n toolGuidance?: Partial<ToolGuidanceConfig> | 'auto' | 'minimal' | 'detailed';\n}\n\n// User-customizable template registry\nlet TEMPLATES: Record<string, TemplateConfig> = {};\n\n/**\n * Register custom templates with the recipes system\n *\n * @example\n * ```typescript\n * // Register your own templates\n * registerTemplates({\n * myWorkflow: {\n * persona: { path: \"personas/my-persona.md\" },\n * instructions: [{ path: \"instructions/my-instructions.md\" }]\n * },\n * anotherTemplate: {\n * persona: { content: \"You are a helpful assistant\" },\n * instructions: [{ content: \"Follow these steps...\" }]\n * }\n * });\n * ```\n */\nexport const registerTemplates = (templates: Record<string, TemplateConfig>): void => {\n TEMPLATES = { ...TEMPLATES, ...templates };\n};\n\n/**\n * Get currently registered templates\n */\nexport const getTemplates = (): Record<string, TemplateConfig> => ({ ...TEMPLATES });\n\n/**\n * Clear all registered templates\n */\nexport const clearTemplates = (): void => {\n TEMPLATES = {};\n};\n\n// ===== TOOL GUIDANCE GENERATION =====\n\n/**\n * Generate tool guidance instructions based on strategy\n */\nexport const generateToolGuidance = (\n tools: Tool[],\n guidance: ToolGuidanceConfig | 'auto' | 'minimal' | 'detailed'\n): string => {\n if (tools.length === 0) {\n return '';\n }\n\n // Normalize guidance config\n let config: ToolGuidanceConfig;\n if (typeof guidance === 'string') {\n switch (guidance) {\n case 'auto':\n case 'detailed':\n config = { strategy: 'adaptive', includeExamples: true, explainWhenToUse: true };\n break;\n case 'minimal':\n config = { strategy: 'minimal', includeExamples: false, explainWhenToUse: false };\n break;\n default:\n config = { strategy: 'adaptive' };\n }\n } else {\n config = guidance;\n }\n\n let output = '## Available Tools\\n\\n';\n\n if (config.customInstructions) {\n output += config.customInstructions + '\\n\\n';\n }\n\n // Group by category if enabled\n if (config.includeCategories) {\n const categorized = new Map<string, Tool[]>();\n tools.forEach(tool => {\n const category = tool.category || 'General';\n if (!categorized.has(category)) {\n categorized.set(category, []);\n }\n categorized.get(category)!.push(tool);\n });\n\n categorized.forEach((categoryTools, category) => {\n output += `### ${category}\\n\\n`;\n categoryTools.forEach(tool => {\n output += formatToolGuidance(tool, config);\n });\n });\n } else {\n tools.forEach(tool => {\n output += formatToolGuidance(tool, config);\n });\n }\n\n return output;\n};\n\nconst formatToolGuidance = (tool: Tool, config: ToolGuidanceConfig): string => {\n let output = `**${tool.name}**`;\n\n if (tool.cost) {\n output += ` _(${tool.cost})_`;\n }\n\n output += `\\n${tool.description}\\n\\n`;\n\n if (config.strategy !== 'minimal') {\n // Parameters\n const required = tool.parameters.required || [];\n const paramList = Object.entries(tool.parameters.properties)\n .map(([name, param]) => {\n const isRequired = required.includes(name);\n return `- \\`${name}\\`${isRequired ? ' (required)' : ''}: ${param.description}`;\n })\n .join('\\n');\n\n if (paramList) {\n output += 'Parameters:\\n' + paramList + '\\n\\n';\n }\n\n // When to use (adaptive and prescriptive)\n if (config.explainWhenToUse && (config.strategy === 'adaptive' || config.strategy === 'prescriptive')) {\n output += `**When to use:** ${tool.description}\\n\\n`;\n }\n\n // Examples\n if (config.includeExamples && tool.examples && tool.examples.length > 0) {\n output += '**Examples:**\\n';\n tool.examples.forEach(example => {\n output += `- ${example.scenario}: \\`${tool.name}(${JSON.stringify(example.params)})\\`\\n`;\n });\n output += '\\n';\n }\n }\n\n output += '---\\n\\n';\n\n return output;\n};\n\n// ===== CORE RECIPE ENGINE =====\n\nexport const cook = async (config: Partial<RecipeConfig> & { basePath: string }): Promise<Prompt> => {\n // Parse and validate configuration with defaults\n const validatedConfig = RecipeConfigSchema.parse({\n overridePaths: [\"./\"],\n overrides: false,\n parameters: {},\n instructions: [],\n content: [],\n context: [],\n constraints: [],\n tone: [],\n examples: [],\n reasoning: [],\n responseFormat: [],\n recap: [],\n safeguards: [],\n ...config\n });\n\n // Handle template inheritance\n let finalConfig = { ...validatedConfig };\n if (validatedConfig.template) {\n const template = TEMPLATES[validatedConfig.template];\n if (template) {\n finalConfig = {\n ...validatedConfig,\n persona: validatedConfig.persona || template.persona,\n instructions: [\n ...(template.instructions || []),\n ...(validatedConfig.instructions || [])\n ],\n content: [\n ...(template.content || []),\n ...(validatedConfig.content || [])\n ],\n context: [\n ...(template.context || []),\n ...(validatedConfig.context || [])\n ],\n constraints: [\n ...(template.constraints || []),\n ...(validatedConfig.constraints || [])\n ],\n tone: [\n ...(template.tone || []),\n ...(validatedConfig.tone || [])\n ],\n examples: [\n ...(template.examples || []),\n ...(validatedConfig.examples || [])\n ],\n reasoning: [\n ...(template.reasoning || []),\n ...(validatedConfig.reasoning || [])\n ],\n responseFormat: [\n ...(template.responseFormat || []),\n ...(validatedConfig.responseFormat || [])\n ],\n recap: [\n ...(template.recap || []),\n ...(validatedConfig.recap || [])\n ],\n safeguards: [\n ...(template.safeguards || []),\n ...(validatedConfig.safeguards || [])\n ],\n schema: validatedConfig.schema || template.schema,\n };\n }\n }\n\n // Setup internal services\n const logger = wrapLogger(finalConfig.logger, 'Recipe');\n const parser = Parser.create({ logger });\n const override = Override.create({\n logger,\n configDirs: finalConfig.overridePaths || [\"./\"],\n overrides: finalConfig.overrides || false\n });\n const loader = Loader.create({ logger });\n\n // Create sections\n const personaSection: Section<Instruction> = createSection({ title: \"Persona\" });\n const instructionSection: Section<Instruction> = createSection({ title: \"Instruction\" });\n const contentSection: Section<Content> = createSection({ title: \"Content\" });\n const contextSection: Section<Context> = createSection({ title: \"Context\" });\n \n // Advanced sections\n const constraintSection: Section<Instruction> = createSection({ title: \"Constraints\" });\n const toneSection: Section<Instruction> = createSection({ title: \"Tone\" });\n const exampleSection: Section<Content> = createSection({ title: \"Examples\" });\n const reasoningSection: Section<Instruction> = createSection({ title: \"Reasoning\" });\n const responseFormatSection: Section<Instruction> = createSection({ title: \"Response Format\" });\n const recapSection: Section<Instruction> = createSection({ title: \"Recap\" });\n const safeguardSection: Section<Instruction> = createSection({ title: \"Safeguards\" });\n\n // Helper for processing list items\n const processList = async <T extends Weighted>(\n items: ContentItem[],\n section: Section<T>,\n type: 'persona' | 'instruction' | 'content' | 'context'\n ) => {\n for (const item of items) {\n await processContentItem(item, section, type, {\n basePath: finalConfig.basePath,\n parser,\n override,\n loader,\n parameters: finalConfig.parameters,\n logger\n });\n }\n };\n\n // Process persona\n if (finalConfig.persona) {\n await processContentItem(finalConfig.persona, personaSection, 'persona', {\n basePath: finalConfig.basePath,\n parser,\n override,\n loader,\n parameters: finalConfig.parameters,\n logger\n });\n }\n\n // Process standard sections\n await processList(finalConfig.instructions || [], instructionSection, 'instruction');\n await processList(finalConfig.content || [], contentSection, 'content');\n await processList(finalConfig.context || [], contextSection, 'context');\n\n // Process advanced sections\n await processList(finalConfig.constraints || [], constraintSection, 'instruction');\n await processList(finalConfig.tone || [], toneSection, 'instruction');\n await processList(finalConfig.examples || [], exampleSection, 'content');\n await processList(finalConfig.reasoning || [], reasoningSection, 'instruction');\n await processList(finalConfig.responseFormat || [], responseFormatSection, 'instruction');\n await processList(finalConfig.recap || [], recapSection, 'instruction');\n await processList(finalConfig.safeguards || [], safeguardSection, 'instruction');\n\n // Generate tool guidance if tools are provided\n if (finalConfig.tools) {\n const tools: Tool[] = Array.isArray(finalConfig.tools)\n ? finalConfig.tools\n : finalConfig.tools.getAll();\n\n // Filter by categories if specified\n const filteredTools: Tool[] = finalConfig.toolCategories\n ? tools.filter((tool: Tool) => tool.category && finalConfig.toolCategories!.includes(tool.category))\n : tools;\n\n if (filteredTools.length > 0 && finalConfig.toolGuidance) {\n const guidance = generateToolGuidance(filteredTools, finalConfig.toolGuidance);\n const toolSection = await parser.parse(guidance, { parameters: finalConfig.parameters });\n instructionSection.add(toolSection);\n }\n }\n\n // Process schema\n let schema = finalConfig.schema;\n let validator: any = undefined;\n\n if (schema instanceof z.ZodType) {\n // It's a Zod schema!\n validator = schema;\n const jsonSchema = zodToJsonSchema(schema as any, \"response\");\n \n // Wrap in OpenAI Structured Output format\n // zod-to-json-schema returns { \"$schema\": \"...\", \"definitions\": { \"response\": { ... } }, \"$ref\": \"#/definitions/response\" }\n // We need to extract the schema part.\n \n // Simpler usage for OpenAI: just get the schema object.\n // Actually, zod-to-json-schema produces a full JSON schema object.\n // OpenAI expects: { type: \"json_schema\", json_schema: { name: \"...\", schema: ... } }\n \n // Let's create a clean schema object\n // NOTE: OpenAI requires strict: true and additionalProperties: false\n // zod-to-json-schema generally produces compatible schemas but strictness might need tweaking if required by OpenAI.\n // For now, let's assume \"response\" as the name.\n \n // We'll define a simpler conversion if possible, or trust the user to configure Zod strictly if they want strict mode.\n \n // Extract the definition if it exists\n const actualSchema = (jsonSchema as any).definitions?.response || jsonSchema;\n \n schema = {\n type: \"json_schema\",\n json_schema: {\n name: \"response\",\n schema: actualSchema,\n strict: true // Try to enable strict mode for OpenAI\n }\n };\n } else if (typeof schema === 'string') {\n const schemaPath = path.resolve(finalConfig.basePath, schema);\n try {\n const schemaContent = await fs.readFile(schemaPath, 'utf-8');\n schema = JSON.parse(schemaContent);\n } catch (e: any) {\n throw new Error(`Failed to load schema from ${schemaPath}: ${e.message}`);\n }\n }\n\n // Build and return prompt\n return createPrompt({\n persona: personaSection.items.length > 0 ? personaSection : undefined,\n instructions: instructionSection,\n contents: contentSection.items.length > 0 ? contentSection : undefined,\n contexts: contextSection.items.length > 0 ? contextSection : undefined,\n constraints: constraintSection.items.length > 0 ? constraintSection : undefined,\n tone: toneSection.items.length > 0 ? toneSection : undefined,\n examples: exampleSection.items.length > 0 ? exampleSection : undefined,\n reasoning: reasoningSection.items.length > 0 ? reasoningSection : undefined,\n responseFormat: responseFormatSection.items.length > 0 ? responseFormatSection : undefined,\n recap: recapSection.items.length > 0 ? recapSection : undefined,\n safeguards: safeguardSection.items.length > 0 ? safeguardSection : undefined,\n schema,\n validator,\n });\n};\n\n// ===== CONTENT PROCESSING =====\n\ninterface ProcessingContext {\n basePath: string;\n parser: any;\n override: any;\n loader: any;\n parameters: any;\n logger: any;\n}\n\nconst processContentItem = async <T extends Weighted>(\n item: ContentItem,\n section: Section<T>,\n type: 'persona' | 'instruction' | 'content' | 'context',\n ctx: ProcessingContext\n): Promise<void> => {\n const sectionOptions: SectionOptions = {\n parameters: ctx.parameters,\n };\n\n if (typeof item === 'string') {\n // Simple string content\n const parsedSection = await ctx.parser.parse(item, sectionOptions);\n section.add(parsedSection);\n } else if ('content' in item) {\n // Inline content with options\n const parsedSection = await ctx.parser.parse(item.content, {\n ...sectionOptions,\n title: item.title,\n weight: item.weight,\n });\n section.add(parsedSection);\n } else if ('path' in item) {\n // File path\n const fullPath = path.join(ctx.basePath, item.path);\n const parsedSection = await ctx.parser.parseFile(fullPath, {\n ...sectionOptions,\n title: item.title,\n weight: item.weight,\n });\n const overrideSection = await ctx.override.customize(item.path, parsedSection, sectionOptions);\n section.add(overrideSection);\n } else if ('directories' in item) {\n // Directory loading\n const sections = await ctx.loader.load(item.directories, {\n ...sectionOptions,\n title: item.title,\n weight: item.weight,\n });\n section.add(sections);\n }\n};\n\n// ===== FLUENT RECIPE BUILDER =====\n\nexport const recipe = (basePath: string) => {\n const config: Partial<RecipeConfig> & { basePath: string } = { basePath };\n\n const builder = {\n template: (name: string) => {\n config.template = name;\n return builder;\n },\n with: (partialConfig: Partial<RecipeConfig>) => {\n Object.assign(config, partialConfig);\n return builder;\n },\n persona: (persona: ContentItem) => {\n config.persona = persona;\n return builder;\n },\n instructions: (...instructions: ContentItem[]) => {\n config.instructions = [...(config.instructions || []), ...instructions];\n return builder;\n },\n content: (...content: ContentItem[]) => {\n config.content = [...(config.content || []), ...content];\n return builder;\n },\n context: (...context: ContentItem[]) => {\n config.context = [...(config.context || []), ...context];\n return builder;\n },\n constraints: (...constraints: ContentItem[]) => {\n config.constraints = [...(config.constraints || []), ...constraints];\n return builder;\n },\n tone: (...tone: ContentItem[]) => {\n config.tone = [...(config.tone || []), ...tone];\n return builder;\n },\n examples: (...examples: ContentItem[]) => {\n config.examples = [...(config.examples || []), ...examples];\n return builder;\n },\n reasoning: (...reasoning: ContentItem[]) => {\n config.reasoning = [...(config.reasoning || []), ...reasoning];\n return builder;\n },\n responseFormat: (...responseFormat: ContentItem[]) => {\n config.responseFormat = [...(config.responseFormat || []), ...responseFormat];\n return builder;\n },\n recap: (...recap: ContentItem[]) => {\n config.recap = [...(config.recap || []), ...recap];\n return builder;\n },\n safeguards: (...safeguards: ContentItem[]) => {\n config.safeguards = [...(config.safeguards || []), ...safeguards];\n return builder;\n },\n schema: (schema: string | Record<string, any> | z.ZodType<any>) => {\n config.schema = schema;\n return builder;\n },\n parameters: (parameters: any) => {\n config.parameters = { ...config.parameters, ...parameters };\n return builder;\n },\n overrides: (enabled: boolean) => {\n config.overrides = enabled;\n return builder;\n },\n overridePaths: (paths: string[]) => {\n config.overridePaths = paths;\n return builder;\n },\n tools: (tools: Tool[] | ToolRegistry) => {\n config.tools = tools;\n return builder;\n },\n toolRegistry: (registry: ToolRegistry) => {\n config.tools = registry;\n return builder;\n },\n toolGuidance: (guidance: ToolGuidanceConfig | 'auto' | 'minimal' | 'detailed') => {\n config.toolGuidance = guidance as any;\n return builder;\n },\n toolCategories: (categories: string[]) => {\n config.toolCategories = categories;\n return builder;\n },\n cook: () => cook(config),\n buildConversation: async (model: Model, tokenBudget?: TokenBudgetConfig) => {\n const prompt = await cook(config);\n const conversation = ConversationBuilder.create({ model }, config.logger);\n conversation.fromPrompt(prompt, model);\n\n // Apply token budget if provided\n if (tokenBudget) {\n conversation.withTokenBudget(tokenBudget);\n }\n\n return conversation;\n },\n getToolRegistry: (): ToolRegistry | undefined => {\n if (config.tools instanceof ToolRegistry) {\n return config.tools;\n } else if (Array.isArray(config.tools)) {\n const registry = ToolRegistry.create({}, config.logger);\n registry.registerAll(config.tools);\n return registry;\n }\n return undefined;\n },\n executeWith: async (\n llm: LLMClient,\n strategy: IterationStrategy,\n model: Model = 'gpt-4o',\n tokenBudget?: TokenBudgetConfig\n ): Promise<StrategyResult> => {\n const prompt = await cook(config);\n const conversation = ConversationBuilder.create({ model }, config.logger);\n conversation.fromPrompt(prompt, model);\n\n if (tokenBudget) {\n conversation.withTokenBudget(tokenBudget);\n }\n\n const registry = builder.getToolRegistry();\n if (!registry) {\n throw new Error('Tools must be configured to use executeWith');\n }\n\n const executor = new StrategyExecutor(llm, config.logger);\n return executor.execute(conversation, registry, strategy);\n },\n };\n\n return builder;\n};\n\n// Export types for external use\nexport type { RecipeConfig, ContentItem };\n"],"names":["ContentItemSchema","z","union","string","object","content","title","optional","weight","number","path","directories","array","RecipeConfigSchema","basePath","logger","any","default","DEFAULT_LOGGER","overridePaths","overrides","boolean","parameters","ParametersSchema","persona","instructions","context","constraints","tone","examples","reasoning","responseFormat","recap","safeguards","schema","extends","template","tools","toolGuidance","enum","strategy","includeExamples","explainWhenToUse","includeCategories","customInstructions","toolCategories","TEMPLATES","registerTemplates","templates","getTemplates","clearTemplates","generateToolGuidance","guidance","length","config","output","categorized","Map","forEach","tool","category","has","set","get","push","categoryTools","formatToolGuidance","name","cost","description","required","paramList","Object","entries","properties","map","param","isRequired","includes","join","example","scenario","JSON","stringify","params","cook","validatedConfig","parse","finalConfig","wrapLogger","parser","Parser","override","Override","configDirs","loader","Loader","personaSection","createSection","instructionSection","contentSection","contextSection","constraintSection","toneSection","exampleSection","reasoningSection","responseFormatSection","recapSection","safeguardSection","processList","items","section","type","item","processContentItem","Array","isArray","getAll","filteredTools","filter","toolSection","add","validator","undefined","ZodType","jsonSchema","zodToJsonSchema","actualSchema","definitions","response","json_schema","strict","schemaPath","resolve","schemaContent","fs","readFile","e","Error","message","createPrompt","contents","contexts","ctx","sectionOptions","parsedSection","fullPath","parseFile","overrideSection","customize","sections","load","recipe","builder","with","partialConfig","assign","enabled","paths","toolRegistry","registry","categories","buildConversation","model","tokenBudget","prompt","conversation","ConversationBuilder","create","fromPrompt","withTokenBudget","getToolRegistry","ToolRegistry","registerAll","executeWith","llm","executor","StrategyExecutor","execute"],"mappings":"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"}
@@ -415,5 +415,5 @@ function _define_property(obj, key, value) {
415
415
  }
416
416
  }
417
417
 
418
- export { MetricsCollector, ReflectionReportGenerator, ReflectionReportGenerator as default };
418
+ export { MetricsCollector, ReflectionReportGenerator };
419
419
  //# sourceMappingURL=reflection.js.map
@@ -39,6 +39,7 @@ export { MetricsCollector, ReflectionReportGenerator } from './reflection';
39
39
  export * as Serializer from './serializer';
40
40
  export * as Writer from './writer';
41
41
  export * as Execution from './execution/index';
42
+ export * as Security from './security/index';
42
43
  export { ModelRegistry, getModelRegistry, resetModelRegistry, getPersonaRole, getEncoding, supportsToolCalls, getModelFamily, configureModel } from './model-config';
43
44
  export type { Content } from './items/content';
44
45
  export type { Context } from './items/context';
@@ -51,6 +52,13 @@ export type { Prompt } from './prompt';
51
52
  export type { FormatOptions, SectionSeparator, SectionTitleProperty } from './formatter';
52
53
  export type { Model, Request } from './chat';
53
54
  export type { Logger } from './logger';
55
+ export { DEFAULT_LOGGER, wrapLogger, createConsoleLogger } from './logger';
56
+ export { configureSecureLogging, maskSensitive, executeWithCorrelation, DEFAULT_MASKING_CONFIG, DEVELOPMENT_MASKING_CONFIG, RiotPromptLogger, maskWithConfig, createCorrelatedLogger, generateCorrelationId } from './logging-config';
57
+ export type { SecureLoggingOptions, MaskingConfig } from './logging-config';
58
+ export { SafeRegex, createSafeRegex, globToSafeRegex, escapeForRegex } from '@theunwalked/pressurelid';
59
+ export type { SafeRegexResult, SafeRegexConfig, SafeRegexReason } from '@theunwalked/pressurelid';
60
+ export { initializeErrorHandling, sanitize as sanitizeError, createSafeError, withErrorHandling, handleError, formatErrorForDisplay, configureErrorSanitizer, configurePathSanitizer, configureSecretGuard, } from './error-handling';
61
+ export type { ErrorSanitizerConfig, SanitizedErrorResult, ErrorHandlingOptions } from './error-handling';
54
62
  export type { RecipeConfig, ContentItem, TemplateConfig, ToolGuidanceConfig } from './recipes';
55
63
  export type { ConversationMessage, ConversationBuilderConfig, ConversationMetadata, ConversationState, InjectOptions, ToolCall } from './conversation';
56
64
  export type { DynamicContentItem, TrackedContextItem, ContextStats } from './context-manager';
@@ -61,3 +69,4 @@ export type { ReflectionReport, ReflectionConfig, AgenticExecutionMetrics, ToolE
61
69
  export type { LogConfig, LogFormat, LoggedConversation, ConversationLogMetadata, LoggedMessage, ToolCallLog, ConversationSummary, ReplayOptions, ReplayResult } from './conversation-logger';
62
70
  export type { Tool, ToolParameter, ToolContext, ToolExample, ToolCost, OpenAITool, AnthropicTool, ToolDefinition, ToolUsageStats } from './tools';
63
71
  export type { ModelConfig, PersonaRole, TokenizerEncoding } from './model-config';
72
+ export type { PathSecurityConfig, ToolSecurityConfig, SecretSecurityConfig, LogSecurityConfig, TimeoutConfig, SecurityConfig, SecurityEventType, SecurityEvent } from './security/index';
@@ -35,5 +35,13 @@ import * as writer from './writer.js';
35
35
  export { writer as Writer };
36
36
  import * as index from './execution/index.js';
37
37
  export { index as Execution };
38
+ import * as index$1 from './security/index.js';
39
+ export { index$1 as Security };
38
40
  export { ModelRegistry, configureModel, getEncoding, getModelFamily, getModelRegistry, getPersonaRole, resetModelRegistry, supportsToolCalls } from './model-config.js';
41
+ export { DEFAULT_LOGGER, createConsoleLogger, wrapLogger } from './logger.js';
42
+ export { DEFAULT_MASKING_CONFIG, DEVELOPMENT_MASKING_CONFIG, RiotPromptLogger, configureSecureLogging, executeWithCorrelation, maskSensitive } from './logging-config.js';
43
+ export { SafeRegex, createSafeRegex, escapeForRegex, globToSafeRegex } from '@theunwalked/pressurelid';
44
+ export { createSafeError, formatErrorForDisplay, handleError, initializeErrorHandling, sanitize as sanitizeError, withErrorHandling } from './error-handling.js';
45
+ export { configureErrorSanitizer, configurePathSanitizer, configureSecretGuard } from '@theunwalked/spotclean';
46
+ export { createCorrelatedLogger, generateCorrelationId, maskWithConfig } from '@fjell/logging';
39
47
  //# sourceMappingURL=riotprompt.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"riotprompt.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
1
+ {"version":3,"file":"riotprompt.js","sources":[],"sourcesContent":[],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;"}
@@ -0,0 +1,61 @@
1
+ import { SecurityEvent, SecurityEventType } from './events';
2
+ import { Logger } from '../logger';
3
+ export interface AuditLoggerConfig {
4
+ enabled: boolean;
5
+ logLevel: 'all' | 'warning' | 'error' | 'critical';
6
+ includeContext: boolean;
7
+ maxContextSize: number;
8
+ onEvent?: (event: SecurityEvent) => void;
9
+ }
10
+ export declare class SecurityAuditLogger {
11
+ private config;
12
+ private logger;
13
+ private eventCount;
14
+ constructor(config?: Partial<AuditLoggerConfig>, logger?: Logger);
15
+ /**
16
+ * Log a security event
17
+ */
18
+ log(event: Omit<SecurityEvent, 'timestamp'>): void;
19
+ /**
20
+ * Convenience methods for common events
21
+ */
22
+ pathTraversalBlocked(path: string, reason: string): void;
23
+ pathValidationFailed(path: string, reason: string): void;
24
+ toolValidationFailed(toolName: string, reason: string): void;
25
+ toolExecutionBlocked(toolName: string, reason: string): void;
26
+ toolTimeout(toolName: string, timeoutMs: number): void;
27
+ secretRedacted(source: string): void;
28
+ apiKeyUsed(provider: string): void;
29
+ deserializationFailed(source: string, reason: string): void;
30
+ regexTimeout(pattern: string, timeoutMs: number): void;
31
+ requestTimeout(operation: string, timeoutMs: number): void;
32
+ rateLimitExceeded(resource: string, limit: number): void;
33
+ /**
34
+ * Get event statistics
35
+ */
36
+ getStats(): Map<SecurityEventType, number>;
37
+ /**
38
+ * Get total event count
39
+ */
40
+ getTotalEventCount(): number;
41
+ /**
42
+ * Reset statistics
43
+ */
44
+ resetStats(): void;
45
+ /**
46
+ * Check if any events of a specific type have been logged
47
+ */
48
+ hasEventsOfType(type: SecurityEventType): boolean;
49
+ /**
50
+ * Get count for a specific event type
51
+ */
52
+ getEventCount(type: SecurityEventType): number;
53
+ private shouldLog;
54
+ private formatEvent;
55
+ private sanitizeContext;
56
+ private sanitizePath;
57
+ private looksLikeSensitiveKey;
58
+ }
59
+ export declare function getAuditLogger(): SecurityAuditLogger;
60
+ export declare function configureAuditLogger(config: Partial<AuditLoggerConfig>, logger?: Logger): void;
61
+ export declare function resetAuditLogger(): void;