@halfagiraf/clawx 0.2.8 → 0.2.10

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 (84) hide show
  1. package/README.md +63 -0
  2. package/dist/cli/forge.d.ts +4 -0
  3. package/dist/cli/forge.d.ts.map +1 -0
  4. package/dist/cli/forge.js +205 -0
  5. package/dist/cli/forge.js.map +1 -0
  6. package/dist/cli/main.js +3 -0
  7. package/dist/cli/main.js.map +1 -1
  8. package/dist/config/index.d.ts.map +1 -1
  9. package/dist/config/index.js +6 -0
  10. package/dist/config/index.js.map +1 -1
  11. package/dist/core/agent.d.ts.map +1 -1
  12. package/dist/core/agent.js +5 -2
  13. package/dist/core/agent.js.map +1 -1
  14. package/dist/forge/community.d.ts +25 -0
  15. package/dist/forge/community.d.ts.map +1 -0
  16. package/dist/forge/community.js +126 -0
  17. package/dist/forge/community.js.map +1 -0
  18. package/dist/forge/discover.d.ts +14 -0
  19. package/dist/forge/discover.d.ts.map +1 -0
  20. package/dist/forge/discover.js +134 -0
  21. package/dist/forge/discover.js.map +1 -0
  22. package/dist/forge/forge.test.d.ts +2 -0
  23. package/dist/forge/forge.test.d.ts.map +1 -0
  24. package/dist/forge/forge.test.js +202 -0
  25. package/dist/forge/forge.test.js.map +1 -0
  26. package/dist/forge/hardware.d.ts +8 -0
  27. package/dist/forge/hardware.d.ts.map +1 -0
  28. package/dist/forge/hardware.js +31 -0
  29. package/dist/forge/hardware.js.map +1 -0
  30. package/dist/forge/hf-client.d.ts +9 -0
  31. package/dist/forge/hf-client.d.ts.map +1 -0
  32. package/dist/forge/hf-client.js +101 -0
  33. package/dist/forge/hf-client.js.map +1 -0
  34. package/dist/forge/index.d.ts +13 -0
  35. package/dist/forge/index.d.ts.map +1 -0
  36. package/dist/forge/index.js +13 -0
  37. package/dist/forge/index.js.map +1 -0
  38. package/dist/forge/loader.d.ts +10 -0
  39. package/dist/forge/loader.d.ts.map +1 -0
  40. package/dist/forge/loader.js +385 -0
  41. package/dist/forge/loader.js.map +1 -0
  42. package/dist/forge/loader.test.d.ts +5 -0
  43. package/dist/forge/loader.test.d.ts.map +1 -0
  44. package/dist/forge/loader.test.js +15 -0
  45. package/dist/forge/loader.test.js.map +1 -0
  46. package/dist/forge/pipeline-builder.d.ts +9 -0
  47. package/dist/forge/pipeline-builder.d.ts.map +1 -0
  48. package/dist/forge/pipeline-builder.js +125 -0
  49. package/dist/forge/pipeline-builder.js.map +1 -0
  50. package/dist/forge/pipeline.d.ts +28 -0
  51. package/dist/forge/pipeline.d.ts.map +1 -0
  52. package/dist/forge/pipeline.js +206 -0
  53. package/dist/forge/pipeline.js.map +1 -0
  54. package/dist/forge/rank.d.ts +3 -0
  55. package/dist/forge/rank.d.ts.map +1 -0
  56. package/dist/forge/rank.js +138 -0
  57. package/dist/forge/rank.js.map +1 -0
  58. package/dist/forge/reasoner.d.ts +10 -0
  59. package/dist/forge/reasoner.d.ts.map +1 -0
  60. package/dist/forge/reasoner.js +312 -0
  61. package/dist/forge/reasoner.js.map +1 -0
  62. package/dist/forge/registry.d.ts +15 -0
  63. package/dist/forge/registry.d.ts.map +1 -0
  64. package/dist/forge/registry.js +149 -0
  65. package/dist/forge/registry.js.map +1 -0
  66. package/dist/forge/scaffold.d.ts +10 -0
  67. package/dist/forge/scaffold.d.ts.map +1 -0
  68. package/dist/forge/scaffold.js +412 -0
  69. package/dist/forge/scaffold.js.map +1 -0
  70. package/dist/forge/scaffolder.d.ts +9 -0
  71. package/dist/forge/scaffolder.d.ts.map +1 -0
  72. package/dist/forge/scaffolder.js +118 -0
  73. package/dist/forge/scaffolder.js.map +1 -0
  74. package/dist/forge/tester.d.ts +9 -0
  75. package/dist/forge/tester.d.ts.map +1 -0
  76. package/dist/forge/tester.js +103 -0
  77. package/dist/forge/tester.js.map +1 -0
  78. package/dist/forge/types.d.ts +54 -0
  79. package/dist/forge/types.d.ts.map +1 -0
  80. package/dist/forge/types.js +3 -0
  81. package/dist/forge/types.js.map +1 -0
  82. package/dist/types/index.d.ts +1 -0
  83. package/dist/types/index.d.ts.map +1 -1
  84. package/package.json +2 -1
@@ -0,0 +1,125 @@
1
+ /**
2
+ * Forge pipeline builder.
3
+ *
4
+ * Builds discovered pipelines into working Clawx tools.
5
+ */
6
+ import fs from "node:fs";
7
+ import path from "node:path";
8
+ import { generatePipelineCode } from "./pipeline.js";
9
+ import { getForgeToolsDir } from "./registry.js";
10
+ import { log } from "../utils/logger.js";
11
+ // In a full implementation, we would load discovered pipelines from storage
12
+ // For now, we'll simulate with a simple example
13
+ export async function buildPipeline(config, pipelineId, options = {}) {
14
+ console.log(`\n🔨 Building pipeline: ${pipelineId}\n`);
15
+ // For now, create a sample pipeline
16
+ // In a real implementation, we would load the pipeline definition
17
+ const samplePipeline = {
18
+ id: pipelineId,
19
+ name: "Document Intelligence Pipeline",
20
+ description: "Extract, analyze, and summarize documents using multiple AI models",
21
+ stages: [
22
+ {
23
+ id: "stage-1",
24
+ task: "text-generation",
25
+ modelId: "gpt2",
26
+ input: "document",
27
+ output: "extracted text",
28
+ description: "Extract text from document",
29
+ },
30
+ {
31
+ id: "stage-2",
32
+ task: "text-classification",
33
+ modelId: "distilbert-base-uncased-finetuned-sst-2-english",
34
+ input: "extracted text",
35
+ output: "document type",
36
+ description: "Classify document type",
37
+ },
38
+ {
39
+ id: "stage-3",
40
+ task: "summarization",
41
+ modelId: "facebook/bart-large-cnn",
42
+ input: "extracted text",
43
+ output: "summary",
44
+ description: "Summarize key points",
45
+ },
46
+ ],
47
+ inputType: "document",
48
+ outputType: "analysis",
49
+ complexity: "medium",
50
+ feasibility: "high",
51
+ };
52
+ try {
53
+ // Generate pipeline implementation
54
+ const pipelineCode = generatePipelineCode(samplePipeline);
55
+ const pipelineName = samplePipeline.name.toLowerCase().replace(/[^a-z0-9]+/g, '_');
56
+ const pipelinePath = path.join(getForgeToolsDir(), `${pipelineName}.ts`);
57
+ // Check if pipeline already exists
58
+ if (fs.existsSync(pipelinePath) && !options.force) {
59
+ console.error(` ❌ Pipeline already exists: ${pipelineName}`);
60
+ console.error(` Use --force to overwrite.`);
61
+ process.exit(1);
62
+ }
63
+ // Create directory if needed
64
+ fs.mkdirSync(getForgeToolsDir(), { recursive: true });
65
+ // Write pipeline file
66
+ fs.writeFileSync(pipelinePath, pipelineCode, "utf-8");
67
+ console.log(` ✅ Generated pipeline: ${pipelinePath}`);
68
+ // Generate test file
69
+ const testCode = generatePipelineTestCode(samplePipeline);
70
+ const testPath = path.join(getForgeToolsDir(), `${pipelineName}.test.ts`);
71
+ fs.writeFileSync(testPath, testCode, "utf-8");
72
+ console.log(` ✅ Generated test: ${testPath}`);
73
+ console.log(`\n✨ Pipeline built successfully!`);
74
+ console.log(`\n📋 Pipeline ready to use in Clawx sessions`);
75
+ console.log(` Tool name: ${pipelineName}`);
76
+ console.log(` Stages: ${samplePipeline.stages.map(s => s.task).join(" → ")}`);
77
+ console.log(` Models: ${samplePipeline.stages.map(s => s.modelId).join(", ")}`);
78
+ }
79
+ catch (error) {
80
+ log.error("Pipeline build failed:", error);
81
+ throw error;
82
+ }
83
+ }
84
+ function generatePipelineTestCode(pipeline) {
85
+ const pipelineName = pipeline.name.toLowerCase().replace(/[^a-z0-9]+/g, '_');
86
+ const className = pipelineName.split('_').map((word) => word.charAt(0).toUpperCase() + word.slice(1)).join('');
87
+ return `/**
88
+ * Tests for ${pipelineName} pipeline
89
+ */
90
+
91
+ import { describe, it, expect } from "vitest";
92
+ import { create${className}Pipeline } from "./${pipelineName}.js";
93
+
94
+ describe("${pipelineName}", () => {
95
+ const pipeline = create${className}Pipeline();
96
+
97
+ it("should have correct metadata", () => {
98
+ expect(pipeline.name).toBe("${pipelineName}");
99
+ expect(pipeline.label).toBe("${pipeline.name}");
100
+ expect(pipeline.description).toBe("${pipeline.description}");
101
+ });
102
+
103
+ it("should execute without errors", async () => {
104
+ const result = await pipeline.execute("test-id", {
105
+ input: "Test document content for pipeline processing.",
106
+ verbose: false
107
+ });
108
+
109
+ expect(result.content[0].type).toBe("text");
110
+ expect(typeof result.content[0].text).toBe("string");
111
+ expect(result.content[0].text).toContain("Pipeline Complete");
112
+ });
113
+
114
+ it("should handle verbose mode", async () => {
115
+ const result = await pipeline.execute("test-id", {
116
+ input: "Another test document.",
117
+ verbose: true
118
+ });
119
+
120
+ expect(result.content[0].text).toContain("Pipeline Stages");
121
+ });
122
+ });
123
+ `;
124
+ }
125
+ //# sourceMappingURL=pipeline-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline-builder.js","sourceRoot":"","sources":["../../src/forge/pipeline-builder.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,28 @@
1
+ /**
2
+ * Forge pipeline discovery.
3
+ *
4
+ * Discovers and scaffolds multi-model pipelines for complex tasks.
5
+ */
6
+ import type { HfModel, HfDataset } from "./types.js";
7
+ import type { ClawxConfig } from "../types/index.js";
8
+ export interface PipelineStage {
9
+ id: string;
10
+ task: string;
11
+ modelId: string;
12
+ input: string;
13
+ output: string;
14
+ description: string;
15
+ }
16
+ export interface DiscoveredPipeline {
17
+ id: string;
18
+ name: string;
19
+ description: string;
20
+ stages: PipelineStage[];
21
+ inputType: string;
22
+ outputType: string;
23
+ complexity: "simple" | "medium" | "complex";
24
+ feasibility: "high" | "medium" | "low";
25
+ }
26
+ export declare function discoverPipelines(config: ClawxConfig, models: HfModel[], datasets: HfDataset[]): Promise<DiscoveredPipeline[]>;
27
+ export declare function generatePipelineCode(pipeline: DiscoveredPipeline): string;
28
+ //# sourceMappingURL=pipeline.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.d.ts","sourceRoot":"","sources":["../../src/forge/pipeline.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAwB,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAC3E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,MAAM,WAAW,aAAa;IAC5B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,MAAM,WAAW,kBAAkB;IACjC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,MAAM,EAAE,aAAa,EAAE,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,CAAC;IAC5C,WAAW,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;CACxC;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,OAAO,EAAE,EACjB,QAAQ,EAAE,SAAS,EAAE,GACpB,OAAO,CAAC,kBAAkB,EAAE,CAAC,CA8G/B;AAED,wBAAgB,oBAAoB,CAAC,QAAQ,EAAE,kBAAkB,GAAG,MAAM,CAsGzE"}
@@ -0,0 +1,206 @@
1
+ /**
2
+ * Forge pipeline discovery.
3
+ *
4
+ * Discovers and scaffolds multi-model pipelines for complex tasks.
5
+ */
6
+ import { log } from "../utils/logger.js";
7
+ export async function discoverPipelines(config, models, datasets) {
8
+ log.info("Discovering potential pipelines...");
9
+ const pipelines = [];
10
+ // Group models by task/capability
11
+ const modelsByTask = new Map();
12
+ for (const model of models) {
13
+ const task = model.pipeline_tag || "unknown";
14
+ if (!modelsByTask.has(task)) {
15
+ modelsByTask.set(task, []);
16
+ }
17
+ modelsByTask.get(task).push(model);
18
+ }
19
+ // Define common pipeline patterns
20
+ const pipelinePatterns = [
21
+ {
22
+ name: "Document Intelligence Pipeline",
23
+ description: "Extract, analyze, and summarize documents",
24
+ stages: [
25
+ { task: "text-generation", description: "Extract text from document" },
26
+ { task: "text-classification", description: "Classify document type" },
27
+ { task: "summarization", description: "Summarize key points" },
28
+ { task: "question-answering", description: "Answer questions about document" },
29
+ ],
30
+ inputType: "document",
31
+ outputType: "analysis",
32
+ },
33
+ {
34
+ name: "Code Analysis Pipeline",
35
+ description: "Review, test, and improve code",
36
+ stages: [
37
+ { task: "text-generation", description: "Parse and understand code" },
38
+ { task: "text-classification", description: "Detect bugs and vulnerabilities" },
39
+ { task: "text-generation", description: "Suggest improvements" },
40
+ { task: "text-generation", description: "Generate tests" },
41
+ ],
42
+ inputType: "code",
43
+ outputType: "review",
44
+ },
45
+ {
46
+ name: "Content Creation Pipeline",
47
+ description: "Generate, refine, and optimize content",
48
+ stages: [
49
+ { task: "text-generation", description: "Generate initial content" },
50
+ { task: "text-classification", description: "Check tone and style" },
51
+ { task: "summarization", description: "Create concise version" },
52
+ { task: "text-generation", description: "Optimize for SEO" },
53
+ ],
54
+ inputType: "topic",
55
+ outputType: "content",
56
+ },
57
+ {
58
+ name: "Data Analysis Pipeline",
59
+ description: "Process, analyze, and visualize data",
60
+ stages: [
61
+ { task: "text-generation", description: "Extract insights from data" },
62
+ { task: "text-classification", description: "Categorize findings" },
63
+ { task: "summarization", description: "Summarize key trends" },
64
+ { task: "text-generation", description: "Generate reports" },
65
+ ],
66
+ inputType: "data",
67
+ outputType: "insights",
68
+ },
69
+ ];
70
+ // Find pipelines where we have models for each stage
71
+ for (const pattern of pipelinePatterns) {
72
+ const availableStages = [];
73
+ for (let i = 0; i < pattern.stages.length; i++) {
74
+ const stagePattern = pattern.stages[i];
75
+ const taskModels = modelsByTask.get(stagePattern.task);
76
+ if (taskModels && taskModels.length > 0) {
77
+ // Pick the most downloaded model for this task
78
+ const bestModel = taskModels.sort((a, b) => b.downloads - a.downloads)[0];
79
+ availableStages.push({
80
+ id: `stage-${i + 1}`,
81
+ task: stagePattern.task,
82
+ modelId: bestModel.id,
83
+ input: i === 0 ? pattern.inputType : `output from stage ${i}`,
84
+ output: i === pattern.stages.length - 1 ? pattern.outputType : `input for stage ${i + 2}`,
85
+ description: stagePattern.description,
86
+ });
87
+ }
88
+ }
89
+ // Only create pipeline if we have at least 2 stages
90
+ if (availableStages.length >= 2) {
91
+ const completeness = availableStages.length / pattern.stages.length;
92
+ const feasibility = completeness >= 0.75 ? "high" : completeness >= 0.5 ? "medium" : "low";
93
+ const complexity = availableStages.length <= 2 ? "simple" : availableStages.length <= 3 ? "medium" : "complex";
94
+ pipelines.push({
95
+ id: `pipeline-${Date.now()}-${pipelines.length}`,
96
+ name: pattern.name,
97
+ description: pattern.description,
98
+ stages: availableStages,
99
+ inputType: pattern.inputType,
100
+ outputType: pattern.outputType,
101
+ complexity,
102
+ feasibility,
103
+ });
104
+ }
105
+ }
106
+ return pipelines;
107
+ }
108
+ export function generatePipelineCode(pipeline) {
109
+ const pipelineName = pipeline.name.toLowerCase().replace(/[^a-z0-9]+/g, '_');
110
+ const className = pipelineName.split('_').map(word => word.charAt(0).toUpperCase() + word.slice(1)).join('');
111
+ const stageCalls = pipeline.stages.map((stage, index) => {
112
+ return ` // Stage ${index + 1}: ${stage.description}
113
+ const stage${index + 1}Input = ${index === 0 ? 'params.input' : `stage${index}Result`};
114
+ const stage${index + 1}Result = await executeStage${index + 1}(stage${index + 1}Input);`;
115
+ }).join('\n\n');
116
+ const stageFunctions = pipeline.stages.map((stage, index) => {
117
+ return ` async function executeStage${index + 1}(input: string): Promise<string> {
118
+ // Execute ${stage.task} using ${stage.modelId}
119
+ // TODO: Implement actual model inference
120
+
121
+ // Simulated execution
122
+ const result = \`Stage ${index + 1} (${stage.task}) processed: "\${input.substring(0, 50)}\${input.length > 50 ? '...' : ''}"\\n\\nModel: ${stage.modelId}\\n\\n[Implement with Hugging Face Inference API]\`;
123
+
124
+ return result;
125
+ }`;
126
+ }).join('\n\n');
127
+ return `/**
128
+ * ${pipeline.name}
129
+ *
130
+ * ${pipeline.description}
131
+ *
132
+ * Generated by Clawx Forge on ${new Date().toISOString()}
133
+ *
134
+ * Pipeline stages:
135
+ ${pipeline.stages.map(s => ` * ${s.task} → ${s.modelId}`).join('\n')}
136
+ */
137
+
138
+ import { Type, type Static } from "@sinclair/typebox";
139
+ import type { AgentTool, AgentToolResult } from "@mariozechner/pi-agent-core";
140
+
141
+ const ${className}Schema = Type.Object({
142
+ input: Type.String({ description: "Input for the pipeline" }),
143
+ verbose: Type.Boolean({ description: "Show detailed stage outputs", default: false }),
144
+ });
145
+
146
+ type ${className}Input = Static<typeof ${className}Schema>;
147
+
148
+ export function create${className}Pipeline(): AgentTool<typeof ${className}Schema> {
149
+ return {
150
+ name: "${pipelineName}",
151
+ label: "${pipeline.name}",
152
+ description: "${pipeline.description}",
153
+ parameters: ${className}Schema,
154
+ async execute(
155
+ _toolCallId: string,
156
+ params: ${className}Input,
157
+ ): Promise<AgentToolResult<unknown>> {
158
+ try {
159
+ log.info("Starting pipeline: ${pipeline.name}");
160
+
161
+ ${stageCalls}
162
+
163
+ const finalResult = stage${pipeline.stages.length}Result;
164
+
165
+ let output = \`Pipeline Complete: ${pipeline.name}\\n\\n\`;
166
+ output += \`Input: \${params.input.substring(0, 100)}\${params.input.length > 100 ? '...' : ''}\\n\\n\`;
167
+ output += \`Final Output:\\n\${finalResult}\\n\\n\`;
168
+
169
+ if (params.verbose) {
170
+ output += \`Pipeline Stages:\\n\`;
171
+ ${pipeline.stages.map((_, index) => `output += \`Stage ${index + 1}: \${stage${index + 1}Result.substring(0, 100)}\\n\\n\`;`).join('\n ')}
172
+ }
173
+
174
+ output += \`\\nTo implement fully:\\n\`;
175
+ ${pipeline.stages.map((stage, index) => `output += \`Stage ${index + 1}: Implement ${stage.task} with ${stage.modelId}\\n\`;`).join('\n ')}
176
+ output += \`\\nRequired: HUGGINGFACE_TOKEN environment variable\`;
177
+
178
+ return {
179
+ content: [{
180
+ type: "text",
181
+ text: output
182
+ }],
183
+ details: {
184
+ pipeline: "${pipeline.name}",
185
+ stages: ${pipeline.stages.length},
186
+ inputLength: params.input.length,
187
+ timestamp: new Date().toISOString()
188
+ },
189
+ };
190
+ } catch (error) {
191
+ return {
192
+ content: [{
193
+ type: "text",
194
+ text: \`Pipeline execution failed: \${error instanceof Error ? error.message : String(error)}\`
195
+ }],
196
+ details: { error: String(error) },
197
+ };
198
+ }
199
+ },
200
+ };
201
+
202
+ ${stageFunctions}
203
+ }
204
+ `;
205
+ }
206
+ //# sourceMappingURL=pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"pipeline.js","sourceRoot":"","sources":["../../src/forge/pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Asset, Opportunity } from './types.js';
2
+ export declare function createOpportunity(model: Asset, dataset: Asset | undefined, query: string): Opportunity;
3
+ //# sourceMappingURL=rank.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rank.d.ts","sourceRoot":"","sources":["../../src/forge/rank.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,KAAK,EAAE,WAAW,EAAE,MAAM,YAAY,CAAC;AAEhD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,KAAK,EACZ,OAAO,EAAE,KAAK,GAAG,SAAS,EAC1B,KAAK,EAAE,MAAM,GACZ,WAAW,CAoBb"}
@@ -0,0 +1,138 @@
1
+ // Forge v1: Simple ranking algorithm
2
+ export function createOpportunity(model, dataset, query) {
3
+ const id = `opp_${generateId()}`;
4
+ const title = generateTitle(model, dataset);
5
+ const description = generateDescription(model, dataset);
6
+ const scores = scoreOpportunity(model, dataset);
7
+ const possibleOutputs = determinePossibleOutputs(model, dataset);
8
+ return {
9
+ id,
10
+ title,
11
+ description,
12
+ primaryModel: model,
13
+ supportingDataset: dataset,
14
+ scores,
15
+ possibleOutputs,
16
+ createdAt: new Date().toISOString(),
17
+ query
18
+ };
19
+ }
20
+ function generateId() {
21
+ return Math.random().toString(36).substring(2, 8);
22
+ }
23
+ function generateTitle(model, dataset) {
24
+ const modelName = model.name.replace(/-/g, ' ');
25
+ const task = model.task || 'processing';
26
+ if (dataset) {
27
+ const datasetName = dataset.name.replace(/-/g, ' ');
28
+ return `${modelName} ${task} for ${datasetName}`;
29
+ }
30
+ return `${modelName} ${task}`;
31
+ }
32
+ function generateDescription(model, dataset) {
33
+ const task = model.task || 'process data';
34
+ const modality = model.modality || 'data';
35
+ if (dataset) {
36
+ return `Use ${model.name} to ${task} on ${dataset.name} ${modality} data`;
37
+ }
38
+ return `Use ${model.name} to ${task} ${modality} data`;
39
+ }
40
+ function scoreOpportunity(model, dataset) {
41
+ const usefulness = scoreUsefulness(model, dataset);
42
+ const novelty = scoreNovelty(model, dataset);
43
+ const feasibility = scoreFeasibility(model);
44
+ const fit = scoreFit(model);
45
+ const overall = (usefulness + novelty + feasibility + fit) / 4;
46
+ return {
47
+ usefulness: round(usefulness),
48
+ novelty: round(novelty),
49
+ feasibility: round(feasibility),
50
+ fit: round(fit),
51
+ overall: round(overall)
52
+ };
53
+ }
54
+ function scoreUsefulness(model, dataset) {
55
+ let score = 0;
56
+ // Model downloads (log scale)
57
+ if (model.downloads > 1000000)
58
+ score += 0.4;
59
+ else if (model.downloads > 100000)
60
+ score += 0.3;
61
+ else if (model.downloads > 10000)
62
+ score += 0.2;
63
+ else if (model.downloads > 1000)
64
+ score += 0.1;
65
+ // Dataset adds usefulness
66
+ if (dataset)
67
+ score += 0.2;
68
+ // Common tasks are more useful
69
+ const usefulTasks = ['text-classification', 'text-generation', 'translation',
70
+ 'image-classification', 'object-detection'];
71
+ if (model.task && usefulTasks.includes(model.task))
72
+ score += 0.2;
73
+ return Math.min(score, 1.0);
74
+ }
75
+ function scoreNovelty(model, dataset) {
76
+ let score = 0.5; // Start at middle
77
+ // Less popular models are more novel
78
+ if (model.downloads < 10000)
79
+ score += 0.3;
80
+ else if (model.downloads > 100000)
81
+ score -= 0.2;
82
+ // Combination with dataset adds novelty
83
+ if (dataset)
84
+ score += 0.2;
85
+ // Newer modalities are more novel
86
+ const novelModalities = ['audio', 'video', 'multimodal'];
87
+ if (model.modality && novelModalities.includes(model.modality))
88
+ score += 0.2;
89
+ return Math.max(0, Math.min(score, 1.0));
90
+ }
91
+ function scoreFeasibility(model) {
92
+ let score = 1.0;
93
+ // Hardware requirements reduce feasibility
94
+ if (model.hardware?.gpu)
95
+ score -= 0.3;
96
+ if (model.hardware?.memory === 'high')
97
+ score -= 0.3;
98
+ else if (model.hardware?.memory === 'medium')
99
+ score -= 0.15;
100
+ // Large models are less feasible
101
+ if (model.downloads > 500000)
102
+ score -= 0.1;
103
+ return Math.max(0.1, score);
104
+ }
105
+ function scoreFit(model) {
106
+ let score = 0.5;
107
+ // Text-based tasks fit Clawx well
108
+ if (model.modality === 'text')
109
+ score += 0.3;
110
+ // Classification/generation tasks fit well
111
+ const goodTasks = ['text-classification', 'text-generation', 'translation'];
112
+ if (model.task && goodTasks.includes(model.task))
113
+ score += 0.2;
114
+ // CLI-friendly tasks
115
+ const cliTasks = ['text-classification', 'translation', 'summarization'];
116
+ if (model.task && cliTasks.includes(model.task))
117
+ score += 0.1;
118
+ return Math.min(score, 1.0);
119
+ }
120
+ function determinePossibleOutputs(model, dataset) {
121
+ const outputs = [];
122
+ // Always possible as a tool
123
+ outputs.push({
124
+ type: 'tool',
125
+ complexity: model.hardware?.memory === 'high' ? 'high' :
126
+ model.hardware?.gpu ? 'medium' : 'low'
127
+ });
128
+ // Usually possible as an app
129
+ outputs.push({
130
+ type: 'app',
131
+ complexity: dataset ? 'medium' : 'low'
132
+ });
133
+ return outputs;
134
+ }
135
+ function round(num) {
136
+ return Math.round(num * 100) / 100;
137
+ }
138
+ //# sourceMappingURL=rank.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"rank.js","sourceRoot":"","sources":["../../src/forge/rank.ts"],"names":[],"mappings":"AAAA,qCAAqC;AAIrC,MAAM,UAAU,iBAAiB,CAC/B,KAAY,EACZ,OAA0B,EAC1B,KAAa;IAEb,MAAM,EAAE,GAAG,OAAO,UAAU,EAAE,EAAE,CAAC;IACjC,MAAM,KAAK,GAAG,aAAa,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC5C,MAAM,WAAW,GAAG,mBAAmB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAExD,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEhD,MAAM,eAAe,GAAG,wBAAwB,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAEjE,OAAO;QACL,EAAE;QACF,KAAK;QACL,WAAW;QACX,YAAY,EAAE,KAAK;QACnB,iBAAiB,EAAE,OAAO;QAC1B,MAAM;QACN,eAAe;QACf,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,KAAK;KACN,CAAC;AACJ,CAAC;AAED,SAAS,UAAU;IACjB,OAAO,IAAI,CAAC,MAAM,EAAE,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;AACpD,CAAC;AAED,SAAS,aAAa,CAAC,KAAY,EAAE,OAAe;IAClD,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;IAChD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,YAAY,CAAC;IAExC,IAAI,OAAO,EAAE,CAAC;QACZ,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,GAAG,CAAC,CAAC;QACpD,OAAO,GAAG,SAAS,IAAI,IAAI,QAAQ,WAAW,EAAE,CAAC;IACnD,CAAC;IAED,OAAO,GAAG,SAAS,IAAI,IAAI,EAAE,CAAC;AAChC,CAAC;AAED,SAAS,mBAAmB,CAAC,KAAY,EAAE,OAAe;IACxD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,cAAc,CAAC;IAC1C,MAAM,QAAQ,GAAG,KAAK,CAAC,QAAQ,IAAI,MAAM,CAAC;IAE1C,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,OAAO,KAAK,CAAC,IAAI,OAAO,IAAI,OAAO,OAAO,CAAC,IAAI,IAAI,QAAQ,OAAO,CAAC;IAC5E,CAAC;IAED,OAAO,OAAO,KAAK,CAAC,IAAI,OAAO,IAAI,IAAI,QAAQ,OAAO,CAAC;AACzD,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAY,EAAE,OAAe;IACrD,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IACnD,MAAM,OAAO,GAAG,YAAY,CAAC,KAAK,EAAE,OAAO,CAAC,CAAC;IAC7C,MAAM,WAAW,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC;IAC5C,MAAM,GAAG,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC;IAC5B,MAAM,OAAO,GAAG,CAAC,UAAU,GAAG,OAAO,GAAG,WAAW,GAAG,GAAG,CAAC,GAAG,CAAC,CAAC;IAE/D,OAAO;QACL,UAAU,EAAE,KAAK,CAAC,UAAU,CAAC;QAC7B,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;QACvB,WAAW,EAAE,KAAK,CAAC,WAAW,CAAC;QAC/B,GAAG,EAAE,KAAK,CAAC,GAAG,CAAC;QACf,OAAO,EAAE,KAAK,CAAC,OAAO,CAAC;KACxB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,KAAY,EAAE,OAAe;IACpD,IAAI,KAAK,GAAG,CAAC,CAAC;IAEd,8BAA8B;IAC9B,IAAI,KAAK,CAAC,SAAS,GAAG,OAAO;QAAE,KAAK,IAAI,GAAG,CAAC;SACvC,IAAI,KAAK,CAAC,SAAS,GAAG,MAAM;QAAE,KAAK,IAAI,GAAG,CAAC;SAC3C,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK;QAAE,KAAK,IAAI,GAAG,CAAC;SAC1C,IAAI,KAAK,CAAC,SAAS,GAAG,IAAI;QAAE,KAAK,IAAI,GAAG,CAAC;IAE9C,0BAA0B;IAC1B,IAAI,OAAO;QAAE,KAAK,IAAI,GAAG,CAAC;IAE1B,+BAA+B;IAC/B,MAAM,WAAW,GAAG,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,aAAa;QACvD,sBAAsB,EAAE,kBAAkB,CAAC,CAAC;IACjE,IAAI,KAAK,CAAC,IAAI,IAAI,WAAW,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,KAAK,IAAI,GAAG,CAAC;IAEjE,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,YAAY,CAAC,KAAY,EAAE,OAAe;IACjD,IAAI,KAAK,GAAG,GAAG,CAAC,CAAC,kBAAkB;IAEnC,qCAAqC;IACrC,IAAI,KAAK,CAAC,SAAS,GAAG,KAAK;QAAE,KAAK,IAAI,GAAG,CAAC;SACrC,IAAI,KAAK,CAAC,SAAS,GAAG,MAAM;QAAE,KAAK,IAAI,GAAG,CAAC;IAEhD,wCAAwC;IACxC,IAAI,OAAO;QAAE,KAAK,IAAI,GAAG,CAAC;IAE1B,kCAAkC;IAClC,MAAM,eAAe,GAAG,CAAC,OAAO,EAAE,OAAO,EAAE,YAAY,CAAC,CAAC;IACzD,IAAI,KAAK,CAAC,QAAQ,IAAI,eAAe,CAAC,QAAQ,CAAC,KAAK,CAAC,QAAQ,CAAC;QAAE,KAAK,IAAI,GAAG,CAAC;IAE7E,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC,CAAC;AAC3C,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAY;IACpC,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,2CAA2C;IAC3C,IAAI,KAAK,CAAC,QAAQ,EAAE,GAAG;QAAE,KAAK,IAAI,GAAG,CAAC;IACtC,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM;QAAE,KAAK,IAAI,GAAG,CAAC;SAC/C,IAAI,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,QAAQ;QAAE,KAAK,IAAI,IAAI,CAAC;IAE5D,iCAAiC;IACjC,IAAI,KAAK,CAAC,SAAS,GAAG,MAAM;QAAE,KAAK,IAAI,GAAG,CAAC;IAE3C,OAAO,IAAI,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,QAAQ,CAAC,KAAY;IAC5B,IAAI,KAAK,GAAG,GAAG,CAAC;IAEhB,kCAAkC;IAClC,IAAI,KAAK,CAAC,QAAQ,KAAK,MAAM;QAAE,KAAK,IAAI,GAAG,CAAC;IAE5C,2CAA2C;IAC3C,MAAM,SAAS,GAAG,CAAC,qBAAqB,EAAE,iBAAiB,EAAE,aAAa,CAAC,CAAC;IAC5E,IAAI,KAAK,CAAC,IAAI,IAAI,SAAS,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,KAAK,IAAI,GAAG,CAAC;IAE/D,qBAAqB;IACrB,MAAM,QAAQ,GAAG,CAAC,qBAAqB,EAAE,aAAa,EAAE,eAAe,CAAC,CAAC;IACzE,IAAI,KAAK,CAAC,IAAI,IAAI,QAAQ,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,CAAC;QAAE,KAAK,IAAI,GAAG,CAAC;IAE9D,OAAO,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,GAAG,CAAC,CAAC;AAC9B,CAAC;AAED,SAAS,wBAAwB,CAAC,KAAY,EAAE,OAAe;IAC7D,MAAM,OAAO,GAAyE,EAAE,CAAC;IAEzF,4BAA4B;IAC5B,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,MAAM;QACZ,UAAU,EAAE,KAAK,CAAC,QAAQ,EAAE,MAAM,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC5C,KAAK,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;KACnD,CAAC,CAAC;IAEH,6BAA6B;IAC7B,OAAO,CAAC,IAAI,CAAC;QACX,IAAI,EAAE,KAAK;QACX,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK;KACvC,CAAC,CAAC;IAEH,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,SAAS,KAAK,CAAC,GAAW;IACxB,OAAO,IAAI,CAAC,KAAK,CAAC,GAAG,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC;AACrC,CAAC"}
@@ -0,0 +1,10 @@
1
+ /**
2
+ * Forge capability reasoner.
3
+ *
4
+ * Analyzes models and datasets to identify novel capabilities
5
+ * and applications.
6
+ */
7
+ import type { ClawxConfig } from "../types/index.js";
8
+ import type { ForgeOptions, DiscoveredCapability, HfModel, HfDataset } from "./types.js";
9
+ export declare function analyzeCapabilities(config: ClawxConfig, models: HfModel[], datasets: HfDataset[], options: ForgeOptions): Promise<DiscoveredCapability[]>;
10
+ //# sourceMappingURL=reasoner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"reasoner.d.ts","sourceRoot":"","sources":["../../src/forge/reasoner.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AACrD,OAAO,KAAK,EAAE,YAAY,EAAE,oBAAoB,EAAE,OAAO,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAKzF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,WAAW,EACnB,MAAM,EAAE,OAAO,EAAE,EACjB,QAAQ,EAAE,SAAS,EAAE,EACrB,OAAO,EAAE,YAAY,GACpB,OAAO,CAAC,oBAAoB,EAAE,CAAC,CA4CjC"}