clawbr 0.0.41 → 0.0.43

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.
@@ -8,6 +8,8 @@
8
8
  primary: "google/gemini-2.5-flash-image",
9
9
  fallbacks: [
10
10
  "google/gemini-3-pro-image-preview",
11
+ "openai/gpt-5-image",
12
+ "sourceful/riverflow-v2-pro",
11
13
  "black-forest-labs/flux.2-pro"
12
14
  ],
13
15
  models: [
@@ -18,6 +20,13 @@
18
20
  supportsCustomSize: true,
19
21
  description: "Fast, affordable image generation with reference image support"
20
22
  },
23
+ {
24
+ id: "google/gemini-2.5-flash-image-preview",
25
+ name: "Gemini 2.5 Flash Image Preview",
26
+ supportsReferenceImage: true,
27
+ supportsCustomSize: true,
28
+ description: "Preview version of Gemini 2.5 Flash"
29
+ },
21
30
  {
22
31
  id: "google/gemini-3-pro-image-preview",
23
32
  name: "Nano Banana Pro (Gemini 3 Pro)",
@@ -28,67 +37,108 @@
28
37
  {
29
38
  id: "black-forest-labs/flux.2-pro",
30
39
  name: "FLUX.2 Pro",
31
- supportsReferenceImage: false,
40
+ supportsReferenceImage: true,
32
41
  supportsCustomSize: true,
33
- description: "High-quality image generation without reference support"
42
+ description: "High-quality image generation with reference support"
34
43
  },
35
44
  {
36
45
  id: "black-forest-labs/flux.2-flex",
37
46
  name: "FLUX.2 Flex",
38
- supportsReferenceImage: false,
47
+ supportsReferenceImage: true,
39
48
  supportsCustomSize: true,
40
49
  description: "Flexible FLUX variant for diverse styles"
41
50
  },
42
51
  {
43
- id: "sourceful/riverflow-v2-standard-preview",
44
- name: "Riverflow V2 Standard Preview",
52
+ id: "openai/gpt-5-image",
53
+ name: "GPT-5 Image",
45
54
  supportsReferenceImage: false,
46
55
  supportsCustomSize: true,
47
- description: "Sourceful's unified t2i/i2i model"
48
- }
49
- ]
50
- },
51
- openai: {
52
- primary: "gpt-image-1.5",
53
- fallbacks: [
54
- "gpt-image-1",
55
- "dall-e-3"
56
- ],
57
- models: [
56
+ description: "OpenAI's GPT-5 image generation (via OpenRouter)"
57
+ },
58
58
  {
59
- id: "gpt-image-1.5",
60
- name: "GPT Image 1.5",
59
+ id: "openai/gpt-5-image-mini",
60
+ name: "GPT-5 Image Mini",
61
61
  supportsReferenceImage: false,
62
62
  supportsCustomSize: true,
63
- description: "Latest GPT image generation model"
63
+ description: "Lightweight GPT-5 image generation (via OpenRouter)"
64
64
  },
65
65
  {
66
- id: "gpt-image-1",
67
- name: "GPT Image 1",
68
- supportsReferenceImage: false,
66
+ id: "black-forest-labs/flux.2-max",
67
+ name: "FLUX.2 Max",
68
+ supportsReferenceImage: true,
69
69
  supportsCustomSize: true,
70
- description: "Standard GPT image generation"
70
+ description: "Maximum quality FLUX generation"
71
71
  },
72
72
  {
73
- id: "gpt-image-1-mini",
74
- name: "GPT Image 1 Mini",
75
- supportsReferenceImage: false,
73
+ id: "black-forest-labs/flux.2-klein-4b",
74
+ name: "FLUX.2 Klein 4B",
75
+ supportsReferenceImage: true,
76
+ supportsCustomSize: true,
77
+ description: "Compact FLUX model"
78
+ },
79
+ {
80
+ id: "sourceful/riverflow-v2-fast",
81
+ name: "Riverflow V2 Fast",
82
+ supportsReferenceImage: true,
83
+ supportsCustomSize: true,
84
+ description: "Fast unified t2i/i2i model"
85
+ },
86
+ {
87
+ id: "sourceful/riverflow-v2-fast-preview",
88
+ name: "Riverflow V2 Fast Preview",
89
+ supportsReferenceImage: true,
90
+ supportsCustomSize: true,
91
+ description: "Preview version of Riverflow V2 Fast"
92
+ },
93
+ {
94
+ id: "sourceful/riverflow-v2-standard-preview",
95
+ name: "Riverflow V2 Standard Preview",
96
+ supportsReferenceImage: true,
76
97
  supportsCustomSize: true,
77
- description: "Lightweight GPT image generation"
98
+ description: "Standard Riverflow with t2i/i2i support"
78
99
  },
100
+ {
101
+ id: "sourceful/riverflow-v2-max-preview",
102
+ name: "Riverflow V2 Max Preview",
103
+ supportsReferenceImage: true,
104
+ supportsCustomSize: true,
105
+ description: "Maximum quality Riverflow generation"
106
+ },
107
+ {
108
+ id: "sourceful/riverflow-v2-pro",
109
+ name: "Riverflow V2 Pro",
110
+ supportsReferenceImage: true,
111
+ supportsCustomSize: true,
112
+ description: "Professional Riverflow with advanced features"
113
+ },
114
+ {
115
+ id: "bytedance-seed/seedream-4.5",
116
+ name: "SeedReam 4.5",
117
+ supportsReferenceImage: false,
118
+ supportsCustomSize: true,
119
+ description: "ByteDance's SeedReam image generation"
120
+ }
121
+ ]
122
+ },
123
+ openai: {
124
+ primary: "dall-e-3",
125
+ fallbacks: [
126
+ "dall-e-2"
127
+ ],
128
+ models: [
79
129
  {
80
130
  id: "dall-e-3",
81
131
  name: "DALL-E 3",
82
132
  supportsReferenceImage: false,
83
133
  supportsCustomSize: true,
84
- description: "OpenAI's DALL-E 3 model"
134
+ description: "OpenAI's DALL-E 3 (direct OpenAI API)"
85
135
  },
86
136
  {
87
137
  id: "dall-e-2",
88
138
  name: "DALL-E 2",
89
139
  supportsReferenceImage: false,
90
140
  supportsCustomSize: true,
91
- description: "OpenAI's DALL-E 2 model"
141
+ description: "OpenAI's DALL-E 2 (direct OpenAI API)"
92
142
  }
93
143
  ]
94
144
  },
@@ -1 +1 @@
1
- {"version":3,"sources":["../../src/config/image-models.ts"],"sourcesContent":["/**\n * Image Generation Models Configuration\n *\n * Defines available models for each AI provider with their capabilities.\n * Used by generate command to validate and select appropriate models.\n */\n\nexport interface ImageModel {\n id: string;\n name: string;\n supportsReferenceImage: boolean;\n supportsCustomSize: boolean;\n description?: string;\n}\n\nexport interface ProviderModels {\n primary: string;\n fallbacks: string[];\n models: ImageModel[];\n}\n\nexport const IMAGE_MODELS: Record<string, ProviderModels> = {\n openrouter: {\n primary: \"google/gemini-2.5-flash-image\",\n fallbacks: [\"google/gemini-3-pro-image-preview\", \"black-forest-labs/flux.2-pro\"],\n models: [\n {\n id: \"google/gemini-2.5-flash-image\",\n name: \"Gemini 2.5 Flash Image (Nano Banana)\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"Fast, affordable image generation with reference image support\",\n },\n {\n id: \"google/gemini-3-pro-image-preview\",\n name: \"Nano Banana Pro (Gemini 3 Pro)\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"Professional graphics, 4K, multi-subject support\",\n },\n {\n id: \"black-forest-labs/flux.2-pro\",\n name: \"FLUX.2 Pro\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"High-quality image generation without reference support\",\n },\n {\n id: \"black-forest-labs/flux.2-flex\",\n name: \"FLUX.2 Flex\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"Flexible FLUX variant for diverse styles\",\n },\n {\n id: \"sourceful/riverflow-v2-standard-preview\",\n name: \"Riverflow V2 Standard Preview\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"Sourceful's unified t2i/i2i model\",\n },\n ],\n },\n openai: {\n primary: \"gpt-image-1.5\",\n fallbacks: [\"gpt-image-1\", \"dall-e-3\"],\n models: [\n {\n id: \"gpt-image-1.5\",\n name: \"GPT Image 1.5\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"Latest GPT image generation model\",\n },\n {\n id: \"gpt-image-1\",\n name: \"GPT Image 1\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"Standard GPT image generation\",\n },\n {\n id: \"gpt-image-1-mini\",\n name: \"GPT Image 1 Mini\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"Lightweight GPT image generation\",\n },\n {\n id: \"dall-e-3\",\n name: \"DALL-E 3\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"OpenAI's DALL-E 3 model\",\n },\n {\n id: \"dall-e-2\",\n name: \"DALL-E 2\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"OpenAI's DALL-E 2 model\",\n },\n ],\n },\n google: {\n primary: \"imagen-4.0-generate-001\",\n fallbacks: [\"imagen-4.0-fast-generate-001\"],\n models: [\n {\n id: \"imagen-4.0-generate-001\",\n name: \"Imagen 4.0\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"Google's Imagen 4.0 generation model\",\n },\n {\n id: \"imagen-4.0-fast-generate-001\",\n name: \"Imagen 4.0 Fast\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"Fast variant of Imagen 4.0\",\n },\n ],\n },\n};\n\n/**\n * Get available models for a provider\n */\nexport function getProviderModels(provider: string): ImageModel[] {\n const providerConfig = IMAGE_MODELS[provider];\n if (!providerConfig) {\n throw new Error(`Unknown provider: ${provider}`);\n }\n return providerConfig.models;\n}\n\n/**\n * Get model by ID for a provider\n */\nexport function getModelById(provider: string, modelId: string): ImageModel | undefined {\n const models = getProviderModels(provider);\n return models.find((m) => m.id === modelId);\n}\n\n/**\n * Validate if a model exists for a provider\n */\nexport function isValidModel(provider: string, modelId: string): boolean {\n return getModelById(provider, modelId) !== undefined;\n}\n\n/**\n * Get primary model for a provider\n */\nexport function getPrimaryModel(provider: string): string {\n const providerConfig = IMAGE_MODELS[provider];\n if (!providerConfig) {\n throw new Error(`Unknown provider: ${provider}`);\n }\n return providerConfig.primary;\n}\n\n/**\n * Get fallback models for a provider\n */\nexport function getFallbackModels(provider: string): string[] {\n const providerConfig = IMAGE_MODELS[provider];\n if (!providerConfig) {\n throw new Error(`Unknown provider: ${provider}`);\n }\n return providerConfig.fallbacks;\n}\n\n/**\n * Check if a model supports reference images\n */\nexport function supportsReferenceImage(provider: string, modelId: string): boolean {\n const model = getModelById(provider, modelId);\n return model?.supportsReferenceImage ?? false;\n}\n\n/**\n * Get list of models that support reference images for a provider\n */\nexport function getModelsWithReferenceSupport(provider: string): ImageModel[] {\n return getProviderModels(provider).filter((m) => m.supportsReferenceImage);\n}\n\n/**\n * Format model list for display\n */\nexport function formatModelList(provider: string): string {\n const models = getProviderModels(provider);\n return models\n .map((m) => {\n const refSupport = m.supportsReferenceImage ? \" [supports reference images]\" : \"\";\n return ` • ${m.id}${refSupport}\\n ${m.description || \"\"}`;\n })\n .join(\"\\n\\n\");\n}\n"],"names":["IMAGE_MODELS","openrouter","primary","fallbacks","models","id","name","supportsReferenceImage","supportsCustomSize","description","openai","google","getProviderModels","provider","providerConfig","Error","getModelById","modelId","find","m","isValidModel","undefined","getPrimaryModel","getFallbackModels","model","getModelsWithReferenceSupport","filter","formatModelList","map","refSupport","join"],"mappings":"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"}
1
+ {"version":3,"sources":["../../src/config/image-models.ts"],"sourcesContent":["/**\n * Image Generation Models Configuration\n *\n * Defines available models for each AI provider with their capabilities.\n * Used by generate command to validate and select appropriate models.\n */\n\nexport interface ImageModel {\n id: string;\n name: string;\n supportsReferenceImage: boolean;\n supportsCustomSize: boolean;\n description?: string;\n}\n\nexport interface ProviderModels {\n primary: string;\n fallbacks: string[];\n models: ImageModel[];\n}\n\nexport const IMAGE_MODELS: Record<string, ProviderModels> = {\n openrouter: {\n primary: \"google/gemini-2.5-flash-image\",\n fallbacks: [\n \"google/gemini-3-pro-image-preview\",\n \"openai/gpt-5-image\",\n \"sourceful/riverflow-v2-pro\",\n \"black-forest-labs/flux.2-pro\",\n ],\n models: [\n {\n id: \"google/gemini-2.5-flash-image\",\n name: \"Gemini 2.5 Flash Image (Nano Banana)\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"Fast, affordable image generation with reference image support\",\n },\n {\n id: \"google/gemini-2.5-flash-image-preview\",\n name: \"Gemini 2.5 Flash Image Preview\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"Preview version of Gemini 2.5 Flash\",\n },\n {\n id: \"google/gemini-3-pro-image-preview\",\n name: \"Nano Banana Pro (Gemini 3 Pro)\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"Professional graphics, 4K, multi-subject support\",\n },\n\n {\n id: \"black-forest-labs/flux.2-pro\",\n name: \"FLUX.2 Pro\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"High-quality image generation with reference support\",\n },\n {\n id: \"black-forest-labs/flux.2-flex\",\n name: \"FLUX.2 Flex\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"Flexible FLUX variant for diverse styles\",\n },\n {\n id: \"openai/gpt-5-image\",\n name: \"GPT-5 Image\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"OpenAI's GPT-5 image generation (via OpenRouter)\",\n },\n {\n id: \"openai/gpt-5-image-mini\",\n name: \"GPT-5 Image Mini\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"Lightweight GPT-5 image generation (via OpenRouter)\",\n },\n {\n id: \"black-forest-labs/flux.2-max\",\n name: \"FLUX.2 Max\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"Maximum quality FLUX generation\",\n },\n {\n id: \"black-forest-labs/flux.2-klein-4b\",\n name: \"FLUX.2 Klein 4B\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"Compact FLUX model\",\n },\n {\n id: \"sourceful/riverflow-v2-fast\",\n name: \"Riverflow V2 Fast\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"Fast unified t2i/i2i model\",\n },\n {\n id: \"sourceful/riverflow-v2-fast-preview\",\n name: \"Riverflow V2 Fast Preview\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"Preview version of Riverflow V2 Fast\",\n },\n {\n id: \"sourceful/riverflow-v2-standard-preview\",\n name: \"Riverflow V2 Standard Preview\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"Standard Riverflow with t2i/i2i support\",\n },\n {\n id: \"sourceful/riverflow-v2-max-preview\",\n name: \"Riverflow V2 Max Preview\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"Maximum quality Riverflow generation\",\n },\n {\n id: \"sourceful/riverflow-v2-pro\",\n name: \"Riverflow V2 Pro\",\n supportsReferenceImage: true,\n supportsCustomSize: true,\n description: \"Professional Riverflow with advanced features\",\n },\n {\n id: \"bytedance-seed/seedream-4.5\",\n name: \"SeedReam 4.5\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"ByteDance's SeedReam image generation\",\n },\n ],\n },\n openai: {\n primary: \"dall-e-3\",\n fallbacks: [\"dall-e-2\"],\n models: [\n {\n id: \"dall-e-3\",\n name: \"DALL-E 3\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"OpenAI's DALL-E 3 (direct OpenAI API)\",\n },\n {\n id: \"dall-e-2\",\n name: \"DALL-E 2\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"OpenAI's DALL-E 2 (direct OpenAI API)\",\n },\n ],\n },\n google: {\n primary: \"imagen-4.0-generate-001\",\n fallbacks: [\"imagen-4.0-fast-generate-001\"],\n models: [\n {\n id: \"imagen-4.0-generate-001\",\n name: \"Imagen 4.0\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"Google's Imagen 4.0 generation model\",\n },\n {\n id: \"imagen-4.0-fast-generate-001\",\n name: \"Imagen 4.0 Fast\",\n supportsReferenceImage: false,\n supportsCustomSize: true,\n description: \"Fast variant of Imagen 4.0\",\n },\n ],\n },\n};\n\n/**\n * Get available models for a provider\n */\nexport function getProviderModels(provider: string): ImageModel[] {\n const providerConfig = IMAGE_MODELS[provider];\n if (!providerConfig) {\n throw new Error(`Unknown provider: ${provider}`);\n }\n return providerConfig.models;\n}\n\n/**\n * Get model by ID for a provider\n */\nexport function getModelById(provider: string, modelId: string): ImageModel | undefined {\n const models = getProviderModels(provider);\n return models.find((m) => m.id === modelId);\n}\n\n/**\n * Validate if a model exists for a provider\n */\nexport function isValidModel(provider: string, modelId: string): boolean {\n return getModelById(provider, modelId) !== undefined;\n}\n\n/**\n * Get primary model for a provider\n */\nexport function getPrimaryModel(provider: string): string {\n const providerConfig = IMAGE_MODELS[provider];\n if (!providerConfig) {\n throw new Error(`Unknown provider: ${provider}`);\n }\n return providerConfig.primary;\n}\n\n/**\n * Get fallback models for a provider\n */\nexport function getFallbackModels(provider: string): string[] {\n const providerConfig = IMAGE_MODELS[provider];\n if (!providerConfig) {\n throw new Error(`Unknown provider: ${provider}`);\n }\n return providerConfig.fallbacks;\n}\n\n/**\n * Check if a model supports reference images\n */\nexport function supportsReferenceImage(provider: string, modelId: string): boolean {\n const model = getModelById(provider, modelId);\n return model?.supportsReferenceImage ?? false;\n}\n\n/**\n * Get list of models that support reference images for a provider\n */\nexport function getModelsWithReferenceSupport(provider: string): ImageModel[] {\n return getProviderModels(provider).filter((m) => m.supportsReferenceImage);\n}\n\n/**\n * Format model list for display\n */\nexport function formatModelList(provider: string): string {\n const models = getProviderModels(provider);\n return models\n .map((m) => {\n const refSupport = m.supportsReferenceImage ? \" [supports reference images]\" : \"\";\n return ` • ${m.id}${refSupport}\\n ${m.description || \"\"}`;\n })\n .join(\"\\n\\n\");\n}\n"],"names":["IMAGE_MODELS","openrouter","primary","fallbacks","models","id","name","supportsReferenceImage","supportsCustomSize","description","openai","google","getProviderModels","provider","providerConfig","Error","getModelById","modelId","find","m","isValidModel","undefined","getPrimaryModel","getFallbackModels","model","getModelsWithReferenceSupport","filter","formatModelList","map","refSupport","join"],"mappings":"AAAA;;;;;CAKC,GAgBD,OAAO,MAAMA,eAA+C;IAC1DC,YAAY;QACVC,SAAS;QACTC,WAAW;YACT;YACA;YACA;YACA;SACD;QACDC,QAAQ;YACN;gBACEC,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YAEA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;SACD;IACH;IACAC,QAAQ;QACNR,SAAS;QACTC,WAAW;YAAC;SAAW;QACvBC,QAAQ;YACN;gBACEC,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;SACD;IACH;IACAE,QAAQ;QACNT,SAAS;QACTC,WAAW;YAAC;SAA+B;QAC3CC,QAAQ;YACN;gBACEC,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;YACA;gBACEJ,IAAI;gBACJC,MAAM;gBACNC,wBAAwB;gBACxBC,oBAAoB;gBACpBC,aAAa;YACf;SACD;IACH;AACF,EAAE;AAEF;;CAEC,GACD,OAAO,SAASG,kBAAkBC,QAAgB;IAChD,MAAMC,iBAAiBd,YAAY,CAACa,SAAS;IAC7C,IAAI,CAACC,gBAAgB;QACnB,MAAM,IAAIC,MAAM,CAAC,kBAAkB,EAAEF,UAAU;IACjD;IACA,OAAOC,eAAeV,MAAM;AAC9B;AAEA;;CAEC,GACD,OAAO,SAASY,aAAaH,QAAgB,EAAEI,OAAe;IAC5D,MAAMb,SAASQ,kBAAkBC;IACjC,OAAOT,OAAOc,IAAI,CAAC,CAACC,IAAMA,EAAEd,EAAE,KAAKY;AACrC;AAEA;;CAEC,GACD,OAAO,SAASG,aAAaP,QAAgB,EAAEI,OAAe;IAC5D,OAAOD,aAAaH,UAAUI,aAAaI;AAC7C;AAEA;;CAEC,GACD,OAAO,SAASC,gBAAgBT,QAAgB;IAC9C,MAAMC,iBAAiBd,YAAY,CAACa,SAAS;IAC7C,IAAI,CAACC,gBAAgB;QACnB,MAAM,IAAIC,MAAM,CAAC,kBAAkB,EAAEF,UAAU;IACjD;IACA,OAAOC,eAAeZ,OAAO;AAC/B;AAEA;;CAEC,GACD,OAAO,SAASqB,kBAAkBV,QAAgB;IAChD,MAAMC,iBAAiBd,YAAY,CAACa,SAAS;IAC7C,IAAI,CAACC,gBAAgB;QACnB,MAAM,IAAIC,MAAM,CAAC,kBAAkB,EAAEF,UAAU;IACjD;IACA,OAAOC,eAAeX,SAAS;AACjC;AAEA;;CAEC,GACD,OAAO,SAASI,uBAAuBM,QAAgB,EAAEI,OAAe;IACtE,MAAMO,QAAQR,aAAaH,UAAUI;IACrC,OAAOO,OAAOjB,0BAA0B;AAC1C;AAEA;;CAEC,GACD,OAAO,SAASkB,8BAA8BZ,QAAgB;IAC5D,OAAOD,kBAAkBC,UAAUa,MAAM,CAAC,CAACP,IAAMA,EAAEZ,sBAAsB;AAC3E;AAEA;;CAEC,GACD,OAAO,SAASoB,gBAAgBd,QAAgB;IAC9C,MAAMT,SAASQ,kBAAkBC;IACjC,OAAOT,OACJwB,GAAG,CAAC,CAACT;QACJ,MAAMU,aAAaV,EAAEZ,sBAAsB,GAAG,iCAAiC;QAC/E,OAAO,CAAC,IAAI,EAAEY,EAAEd,EAAE,GAAGwB,WAAW,MAAM,EAAEV,EAAEV,WAAW,IAAI,IAAI;IAC/D,GACCqB,IAAI,CAAC;AACV"}
package/dist/version.js CHANGED
@@ -1,4 +1,4 @@
1
1
  // This file is auto-generated. Do not edit manually.
2
- export const CLAWBR_VERSION = "0.0.41";
2
+ export const CLAWBR_VERSION = "0.0.43";
3
3
 
4
4
  //# sourceMappingURL=version.js.map
@@ -1 +1 @@
1
- {"version":3,"sources":["../src/version.ts"],"sourcesContent":["// This file is auto-generated. Do not edit manually.\nexport const CLAWBR_VERSION = \"0.0.41\";\n"],"names":["CLAWBR_VERSION"],"mappings":"AAAA,qDAAqD;AACrD,OAAO,MAAMA,iBAAiB,SAAS"}
1
+ {"version":3,"sources":["../src/version.ts"],"sourcesContent":["// This file is auto-generated. Do not edit manually.\nexport const CLAWBR_VERSION = \"0.0.43\";\n"],"names":["CLAWBR_VERSION"],"mappings":"AAAA,qDAAqD;AACrD,OAAO,MAAMA,iBAAiB,SAAS"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "clawbr",
3
- "version": "0.0.41",
3
+ "version": "0.0.43",
4
4
  "description": "Official CLI for clawbr - Tumblr for AI agents. Full social interaction: post, like, comment, quote, and browse feeds.",
5
5
  "type": "module",
6
6
  "bin": {