sammy-sdk 0.1.0 → 0.1.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cli/commands/generate.d.ts.map +1 -1
- package/dist/cli/commands/generate.js +1 -0
- package/dist/cli/commands/generate.js.map +1 -1
- package/dist/discovery/llm-analyzer.d.ts +2 -0
- package/dist/discovery/llm-analyzer.d.ts.map +1 -1
- package/dist/discovery/llm-analyzer.js +8 -2
- package/dist/discovery/llm-analyzer.js.map +1 -1
- package/dist/generator/generate.d.ts +1 -0
- package/dist/generator/generate.d.ts.map +1 -1
- package/dist/generator/generate.js +4 -3
- package/dist/generator/generate.js.map +1 -1
- package/dist/generator/handler-generator.d.ts +1 -0
- package/dist/generator/handler-generator.d.ts.map +1 -1
- package/dist/generator/handler-generator.js +56 -12
- package/dist/generator/handler-generator.js.map +1 -1
- package/dist/generator/router-generator.js +2 -2
- package/dist/generator/schema-generator.js +8 -0
- package/dist/generator/schema-generator.js.map +1 -1
- package/package.json +3 -3
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,eAAO,MAAM,eAAe,
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,eAAO,MAAM,eAAe,SAQxB,CAAC"}
|
|
@@ -3,6 +3,7 @@ export const generateCommand = new Command("generate")
|
|
|
3
3
|
.description("Generate tools and agents from sammy.config.json")
|
|
4
4
|
.option("--dry-run", "Preview generated files without writing")
|
|
5
5
|
.option("--domain <domain>", "Generate tools for a specific domain only")
|
|
6
|
+
.option("--force", "Overwrite generated files even if they have local edits")
|
|
6
7
|
.action(async (options) => {
|
|
7
8
|
const { runGenerate } = await import("../../generator/generate.js");
|
|
8
9
|
await runGenerate(options);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KACnD,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;KAC9D,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;IACpE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC"}
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../../src/cli/commands/generate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAEpC,MAAM,CAAC,MAAM,eAAe,GAAG,IAAI,OAAO,CAAC,UAAU,CAAC;KACnD,WAAW,CAAC,kDAAkD,CAAC;KAC/D,MAAM,CAAC,WAAW,EAAE,yCAAyC,CAAC;KAC9D,MAAM,CAAC,mBAAmB,EAAE,2CAA2C,CAAC;KACxE,MAAM,CAAC,SAAS,EAAE,yDAAyD,CAAC;KAC5E,MAAM,CAAC,KAAK,EAAE,OAAO,EAAE,EAAE;IACxB,MAAM,EAAE,WAAW,EAAE,GAAG,MAAM,MAAM,CAAC,6BAA6B,CAAC,CAAC;IACpE,MAAM,WAAW,CAAC,OAAO,CAAC,CAAC;AAC7B,CAAC,CAAC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-analyzer.d.ts","sourceRoot":"","sources":["../../src/discovery/llm-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIzD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,YAAY,EAAE;QACZ,IAAI,EAAE,gBAAgB,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"llm-analyzer.d.ts","sourceRoot":"","sources":["../../src/discovery/llm-analyzer.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AACnD,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAChE,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAIzD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,cAAc,EAAE,CAAC;IAC1B,YAAY,EAAE;QACZ,IAAI,EAAE,gBAAgB,CAAC;QACvB,SAAS,EAAE,MAAM,CAAC;KACnB,CAAC;CACH;AAED,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,MAAM,EAAE,MAAM,EAAE,CAAC;IACjB,gBAAgB,EAAE,MAAM,EAAE,CAAC;IAC3B,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3B,UAAU,EAAE,MAAM,GAAG,OAAO,GAAG,OAAO,CAAC;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,OAAO,CAAC;QAAC,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CACzH;AAsCD,wBAAsB,mBAAmB,CACvC,aAAa,EAAE,gBAAgB,EAC/B,KAAK,EAAE,gBAAgB,GACtB,OAAO,CAAC,cAAc,CAAC,CAiCzB"}
|
|
@@ -9,6 +9,8 @@ const toolSchema = z.object({
|
|
|
9
9
|
parameters: z.record(z.object({
|
|
10
10
|
type: z.string(),
|
|
11
11
|
required: z.boolean(),
|
|
12
|
+
enum: z.array(z.string()).optional(),
|
|
13
|
+
format: z.string().optional(),
|
|
12
14
|
description: z.string().optional(),
|
|
13
15
|
})),
|
|
14
16
|
});
|
|
@@ -81,7 +83,8 @@ You must respond with ONLY valid JSON — no markdown, no explanation, no code f
|
|
|
81
83
|
"permission": "read | write | admin",
|
|
82
84
|
"handler": "src/path/to/file.ts:functionName",
|
|
83
85
|
"parameters": {
|
|
84
|
-
"paramName": { "type": "string", "required": true, "description": "what this param is" }
|
|
86
|
+
"paramName": { "type": "string", "required": true, "description": "what this param is" },
|
|
87
|
+
"statusParam": { "type": "enum", "required": false, "enum": ["open", "closed"], "description": "must list the allowed values" }
|
|
85
88
|
}
|
|
86
89
|
}
|
|
87
90
|
]
|
|
@@ -101,7 +104,10 @@ Rules:
|
|
|
101
104
|
- POST/PUT/DELETE operations are "mutation" type with "write" or "admin" permission
|
|
102
105
|
- Destructive or sensitive operations should be "admin" permission
|
|
103
106
|
- Architecture: use "single-agent" for 1-2 domains, "multi-agent" for 3-6, "hierarchical" for 7+
|
|
104
|
-
- handler should point to the most relevant source file and likely function name
|
|
107
|
+
- handler should point to the most relevant source file and likely function name
|
|
108
|
+
- Parameter "type" must be one of: "string", "number", "integer", "boolean", "date", "enum", "array", "object"
|
|
109
|
+
- When "type" is "enum", you MUST include an "enum" array of the allowed string values
|
|
110
|
+
- Use "date" for timestamps/dates (ISO strings), not "string"`;
|
|
105
111
|
function buildPrompt(map) {
|
|
106
112
|
const sections = [];
|
|
107
113
|
sections.push(`# Project Analysis Request
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"llm-analyzer.js","sourceRoot":"","sources":["../../src/discovery/llm-analyzer.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"llm-analyzer.js","sourceRoot":"","sources":["../../src/discovery/llm-analyzer.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/generator/generate.ts"],"names":[],"mappings":"AAYA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,
|
|
1
|
+
{"version":3,"file":"generate.d.ts","sourceRoot":"","sources":["../../src/generator/generate.ts"],"names":[],"mappings":"AAYA,wBAAsB,WAAW,CAAC,OAAO,EAAE;IAAE,MAAM,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAE,iBA6HhG"}
|
|
@@ -3,7 +3,7 @@ import * as path from "node:path";
|
|
|
3
3
|
import chalk from "chalk";
|
|
4
4
|
import ora from "ora";
|
|
5
5
|
import { generateSchemaFile } from "./schema-generator.js";
|
|
6
|
-
import { generateToolFile } from "./handler-generator.js";
|
|
6
|
+
import { generateToolFile, toolNeedsWiring } from "./handler-generator.js";
|
|
7
7
|
import { generateAgentFile } from "./agent-generator.js";
|
|
8
8
|
import { generateRouterFile } from "./router-generator.js";
|
|
9
9
|
import { generateIndexFile } from "./index-generator.js";
|
|
@@ -18,7 +18,8 @@ export async function runGenerate(options) {
|
|
|
18
18
|
}
|
|
19
19
|
const config = JSON.parse(fs.readFileSync(configPath, "utf-8"));
|
|
20
20
|
const sammyDir = path.join(projectRoot, ".sammy");
|
|
21
|
-
|
|
21
|
+
// force only when --force is passed; otherwise locally-edited files are preserved.
|
|
22
|
+
const merge = new MergeManager(sammyDir, options.force ?? false);
|
|
22
23
|
// Filter domains if --domain specified
|
|
23
24
|
const domains = options.domain
|
|
24
25
|
? config.domains.filter((d) => d.name === options.domain)
|
|
@@ -52,7 +53,7 @@ export async function runGenerate(options) {
|
|
|
52
53
|
merge.writeFile(filePath, content);
|
|
53
54
|
}
|
|
54
55
|
toolCount++;
|
|
55
|
-
if (
|
|
56
|
+
if (toolNeedsWiring(tool)) {
|
|
56
57
|
manualWiring.push(`${domain.name}/${tool.name}`);
|
|
57
58
|
}
|
|
58
59
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/generator/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,MAAM,wBAAwB,CAAC;
|
|
1
|
+
{"version":3,"file":"generate.js","sourceRoot":"","sources":["../../src/generator/generate.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,SAAS,CAAC;AAC9B,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAClC,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,GAAG,MAAM,KAAK,CAAC;AAEtB,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,gBAAgB,EAAE,eAAe,EAAE,MAAM,wBAAwB,CAAC;AAC3E,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAC3D,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,WAAW,CAAC,OAA+D;IAC/F,MAAM,WAAW,GAAG,OAAO,CAAC,GAAG,EAAE,CAAC;IAClC,MAAM,UAAU,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAE/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC;IAEhD,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,UAAU,CAAC,EAAE,CAAC;QAC/B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,6DAA6D,CAAC,CAAC,CAAC;QACtF,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,MAAM,MAAM,GAAgB,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,CAAC,CAAC,CAAC;IAC7E,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,QAAQ,CAAC,CAAC;IAClD,mFAAmF;IACnF,MAAM,KAAK,GAAG,IAAI,YAAY,CAAC,QAAQ,EAAE,OAAO,CAAC,KAAK,IAAI,KAAK,CAAC,CAAC;IAEjE,uCAAuC;IACvC,MAAM,OAAO,GAAG,OAAO,CAAC,MAAM;QAC5B,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,OAAO,CAAC,MAAM,CAAC;QACzD,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC;IAEnB,IAAI,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAC3C,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,aAAa,OAAO,CAAC,MAAM,0BAA0B,CAAC,CAAC,CAAC;QAC9E,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IAED,IAAI,SAAS,GAAG,CAAC,CAAC;IAClB,IAAI,UAAU,GAAG,CAAC,CAAC;IACnB,IAAI,WAAW,GAAG,CAAC,CAAC;IACpB,MAAM,YAAY,GAAa,EAAE,CAAC;IAElC,mBAAmB;IACnB,MAAM,aAAa,GAAG,GAAG,CAAC,uBAAuB,CAAC,CAAC,KAAK,EAAE,CAAC;IAC3D,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,OAAO,GAAG,kBAAkB,CAAC,MAAM,CAAC,CAAC;QAC3C,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,SAAS,EAAE,GAAG,MAAM,CAAC,IAAI,aAAa,CAAC,CAAC;QAC7E,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,WAAW,EAAE,CAAC;IAChB,CAAC;IACD,aAAa,CAAC,OAAO,CAAC,aAAa,WAAW,eAAe,CAAC,CAAC;IAE/D,iBAAiB;IACjB,MAAM,WAAW,GAAG,GAAG,CAAC,qBAAqB,CAAC,CAAC,KAAK,EAAE,CAAC;IACvD,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;YAChC,MAAM,OAAO,GAAG,gBAAgB,CAAC,IAAI,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;YAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,OAAO,EAAE,MAAM,CAAC,IAAI,EAAE,GAAG,IAAI,CAAC,IAAI,KAAK,CAAC,CAAC;YAC9E,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;YACrC,CAAC;YACD,SAAS,EAAE,CAAC;YAEZ,IAAI,eAAe,CAAC,IAAI,CAAC,EAAE,CAAC;gBAC1B,YAAY,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC;YACnD,CAAC;QACH,CAAC;IACH,CAAC;IACD,WAAW,CAAC,OAAO,CAAC,aAAa,SAAS,QAAQ,CAAC,CAAC;IAEpD,kBAAkB;IAClB,MAAM,YAAY,GAAG,GAAG,CAAC,sBAAsB,CAAC,CAAC,KAAK,EAAE,CAAC;IACzD,MAAM,gBAAgB,GAAG,OAAO,CAAC,MAAM;QACrC,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;QACvF,CAAC,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC;IAE/B,KAAK,MAAM,KAAK,IAAI,gBAAgB,EAAE,CAAC;QACrC,MAAM,OAAO,GAAG,iBAAiB,CAAC,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QACzD,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,GAAG,KAAK,CAAC,IAAI,KAAK,CAAC,CAAC;QACnE,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;YACpB,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,OAAO,CAAC,CAAC;QACrC,CAAC;QACD,UAAU,EAAE,CAAC;IACf,CAAC;IAED,kBAAkB;IAClB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,MAAM,aAAa,GAAG,kBAAkB,CAAC,MAAM,CAAC,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;QAC9E,IAAI,aAAa,EAAE,CAAC;YAClB,MAAM,QAAQ,GAAG,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,QAAQ,EAAE,WAAW,CAAC,CAAC;YAC5D,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;gBACpB,KAAK,CAAC,SAAS,CAAC,QAAQ,EAAE,aAAa,CAAC,CAAC;YAC3C,CAAC;QACH,CAAC;IACH,CAAC;IACD,YAAY,CAAC,OAAO,CAAC,aAAa,UAAU,UAAU,MAAM,CAAC,YAAY,CAAC,IAAI,KAAK,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAExH,iBAAiB;IACjB,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,iBAAiB,CAAC,MAAM,CAAC,CAAC;QAC/C,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,QAAQ,EAAE,UAAU,CAAC,EAAE,YAAY,CAAC,CAAC;IACjE,CAAC;IAED,iBAAiB;IACjB,IAAI,CAAC,OAAO,CAAC,MAAM,EAAE,CAAC;QACpB,KAAK,CAAC,IAAI,EAAE,CAAC;IACf,CAAC;IAED,gBAAgB;IAChB,MAAM,OAAO,GAAG,KAAK,CAAC,UAAU,EAAE,CAAC;IACnC,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,OAAO,CAAC,MAAM,wCAAwC,CAAC,CAAC,CAAC;QAC5F,KAAK,MAAM,CAAC,IAAI,OAAO,EAAE,CAAC;YACxB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,SAAS,IAAI,CAAC,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;QACnE,CAAC;IACH,CAAC;IAED,IAAI,YAAY,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAC5B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,UAAU,YAAY,CAAC,MAAM,4BAA4B,CAAC,CAAC,CAAC;QACrF,KAAK,MAAM,CAAC,IAAI,YAAY,EAAE,CAAC;YAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC,CAAC;QACvD,CAAC;IACH,CAAC;IAED,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,KAAK,CAAC,mBAAmB,SAAS,WAAW,UAAU,YAAY,WAAW,UAAU,CAAC,CAAC,CAAC;IAC7G,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8BAA8B,CAAC,CAAC,CAAC;IAEvD,IAAI,OAAO,CAAC,MAAM,EAAE,CAAC;QACnB,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,uCAAuC,CAAC,CAAC,CAAC;IAClE,CAAC;SAAM,CAAC;QACN,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;QAC7B,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,8CAA8C,CAAC,CAAC,CAAC;QACvE,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,4BAA4B,CAAC,CAAC,CAAC;IACvD,CAAC;AACH,CAAC"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
1
|
import type { ToolConfig, DomainConfig } from "../runtime/types.js";
|
|
2
|
+
export declare function toolNeedsWiring(tool: ToolConfig): boolean;
|
|
2
3
|
export declare function generateToolFile(tool: ToolConfig, domain: DomainConfig, projectRoot: string): string;
|
|
3
4
|
//# sourceMappingURL=handler-generator.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler-generator.d.ts","sourceRoot":"","sources":["../../src/generator/handler-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;
|
|
1
|
+
{"version":3,"file":"handler-generator.d.ts","sourceRoot":"","sources":["../../src/generator/handler-generator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AAYpE,wBAAgB,eAAe,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO,CAIzD;AAED,wBAAgB,gBAAgB,CAAC,IAAI,EAAE,UAAU,EAAE,MAAM,EAAE,YAAY,EAAE,WAAW,EAAE,MAAM,GAAG,MAAM,CA8EpG"}
|
|
@@ -1,31 +1,75 @@
|
|
|
1
1
|
import * as path from "node:path";
|
|
2
|
+
// Next.js / web-framework HTTP route handler export names.
|
|
3
|
+
const HTTP_VERBS = new Set(["GET", "POST", "PUT", "PATCH", "DELETE", "HEAD", "OPTIONS", "ALL"]);
|
|
4
|
+
function isHttpRouteHandler(functionName) {
|
|
5
|
+
return HTTP_VERBS.has(functionName.toUpperCase());
|
|
6
|
+
}
|
|
7
|
+
// A tool needs manual wiring when its handler can't be invoked directly with the
|
|
8
|
+
// validated params object — i.e. it has no resolvable target, or it points at an
|
|
9
|
+
// HTTP route handler (which takes a Request, returns a Response, and gates on auth).
|
|
10
|
+
export function toolNeedsWiring(tool) {
|
|
11
|
+
if (!tool.handler || !tool.handler.includes(":"))
|
|
12
|
+
return true;
|
|
13
|
+
const { functionName } = parseHandler(tool.handler);
|
|
14
|
+
return isHttpRouteHandler(functionName);
|
|
15
|
+
}
|
|
2
16
|
export function generateToolFile(tool, domain, projectRoot) {
|
|
3
17
|
const { filePath, functionName } = parseHandler(tool.handler);
|
|
4
|
-
const relativeImport = computeRelativeImport(domain.name, filePath, projectRoot);
|
|
5
18
|
const schemaName = `${tool.name}Schema`;
|
|
6
19
|
const permissionKey = `${domain.name}:${tool.permission}`;
|
|
7
|
-
|
|
8
|
-
import
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
name: "${tool.name}",
|
|
20
|
+
const header = `// Auto-generated by Sammy — safe to edit, will not be overwritten unless you run 'sammy generate --force'
|
|
21
|
+
import type { SammyTool } from "sammy-sdk";
|
|
22
|
+
import { ${schemaName} } from "../../schemas/${domain.name}.schemas.js";`;
|
|
23
|
+
const meta = ` name: "${tool.name}",
|
|
12
24
|
description: ${JSON.stringify(tool.description)},
|
|
13
25
|
domain: "${domain.name}",
|
|
14
26
|
permission: "${tool.permission}",
|
|
15
|
-
parameters: ${schemaName}
|
|
27
|
+
parameters: ${schemaName},`;
|
|
28
|
+
const permissionGuard = ` if (!context.permissions.includes("${permissionKey}")) {
|
|
29
|
+
return { success: false, error: "Insufficient permissions for ${domain.name} ${tool.permission} operations" };
|
|
30
|
+
}`;
|
|
31
|
+
if (isHttpRouteHandler(functionName)) {
|
|
32
|
+
// HTTP route handlers receive a framework Request and return a Response, and
|
|
33
|
+
// typically enforce their own auth — they can't be invoked directly as a tool.
|
|
34
|
+
// Emit a typed stub for the developer to wire to their service layer.
|
|
35
|
+
return `${header}
|
|
36
|
+
|
|
37
|
+
// TODO(sammy): "${tool.name}" maps to the HTTP route handler ${filePath}:${functionName}.
|
|
38
|
+
// Route handlers take a Request, return a Response, and usually enforce their own auth,
|
|
39
|
+
// so they can't be called directly as an agent tool. Replace the body below with a call
|
|
40
|
+
// to your underlying service / business-logic function.
|
|
41
|
+
export const ${tool.name}: SammyTool = {
|
|
42
|
+
${meta}
|
|
16
43
|
|
|
17
44
|
handler: async (params, context) => {
|
|
18
|
-
|
|
19
|
-
|
|
45
|
+
${permissionGuard}
|
|
46
|
+
|
|
47
|
+
return {
|
|
48
|
+
success: false,
|
|
49
|
+
error: "Tool '${tool.name}' is not wired yet — edit .sammy/tools/${domain.name}/${tool.name}.ts to call your service layer (originally ${filePath}:${functionName}).",
|
|
50
|
+
};
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
`;
|
|
20
54
|
}
|
|
55
|
+
const relativeImport = computeRelativeImport(domain.name, filePath, projectRoot);
|
|
56
|
+
return `${header}
|
|
57
|
+
|
|
58
|
+
export const ${tool.name}: SammyTool = {
|
|
59
|
+
${meta}
|
|
60
|
+
|
|
61
|
+
handler: async (params, context) => {
|
|
62
|
+
${permissionGuard}
|
|
21
63
|
|
|
22
64
|
try {
|
|
23
|
-
const mod = await import("${relativeImport}")
|
|
24
|
-
const fn = mod
|
|
25
|
-
if (
|
|
65
|
+
const mod = (await import("${relativeImport}")) as Record<string, unknown>;
|
|
66
|
+
const fn = (mod["${functionName}"] ?? mod.default) as ((...args: unknown[]) => unknown) | undefined;
|
|
67
|
+
if (typeof fn !== "function") {
|
|
26
68
|
return { success: false, error: "Handler function '${functionName}' not found in ${filePath}" };
|
|
27
69
|
}
|
|
28
70
|
|
|
71
|
+
// NOTE(sammy): invoked with the validated params object. If ${functionName} takes
|
|
72
|
+
// positional arguments or requires an authenticated session, adjust this call.
|
|
29
73
|
const result = await fn(params);
|
|
30
74
|
return {
|
|
31
75
|
success: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"handler-generator.js","sourceRoot":"","sources":["../../src/generator/handler-generator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,IAAI,MAAM,WAAW,CAAC;AAGlC,MAAM,UAAU,
|
|
1
|
+
{"version":3,"file":"handler-generator.js","sourceRoot":"","sources":["../../src/generator/handler-generator.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,7 +32,7 @@ export const router = {
|
|
|
32
32
|
reason: z.string().describe("Why this agent was chosen"),
|
|
33
33
|
message: z.string().describe("The message to send to the agent"),
|
|
34
34
|
}),
|
|
35
|
-
handler: async (params) => {
|
|
35
|
+
handler: async (params: Record<string, unknown>) => {
|
|
36
36
|
return { success: true, data: params };
|
|
37
37
|
},
|
|
38
38
|
},
|
|
@@ -44,7 +44,7 @@ export const router = {
|
|
|
44
44
|
parameters: z.object({
|
|
45
45
|
question: z.string().describe("The clarification question to ask"),
|
|
46
46
|
}),
|
|
47
|
-
handler: async (params) => {
|
|
47
|
+
handler: async (params: Record<string, unknown>) => {
|
|
48
48
|
return { success: true, data: params };
|
|
49
49
|
},
|
|
50
50
|
},
|
|
@@ -27,11 +27,19 @@ function zodTypeFromParam(param) {
|
|
|
27
27
|
base = 'z.string()';
|
|
28
28
|
break;
|
|
29
29
|
case 'number':
|
|
30
|
+
case 'integer':
|
|
30
31
|
base = 'z.number()';
|
|
31
32
|
break;
|
|
32
33
|
case 'boolean':
|
|
33
34
|
base = 'z.boolean()';
|
|
34
35
|
break;
|
|
36
|
+
case 'date':
|
|
37
|
+
case 'datetime':
|
|
38
|
+
base = 'z.coerce.date()';
|
|
39
|
+
break;
|
|
40
|
+
case 'enum':
|
|
41
|
+
base = 'z.string()';
|
|
42
|
+
break;
|
|
35
43
|
case 'array':
|
|
36
44
|
base = 'z.array(z.unknown())';
|
|
37
45
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema-generator.js","sourceRoot":"","sources":["../../src/generator/schema-generator.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,MAAM,KAAK,GAAa;QACtB,2CAA2C;QAC3C,0BAA0B;QAC1B,EAAE;KACH,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,IAAI,QAAQ,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;YACnE,OAAO,KAAK,IAAI,KAAK,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,gBAAgB,UAAU,eAAe,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAsB;IAC9C,IAAI,IAAY,CAAC;IAEjB,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,IAAI,GAAG,WAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjE,CAAC;SAAM,CAAC;QACN,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ;gBAAE,IAAI,GAAG,YAAY,CAAC;gBAAC,MAAM;YAC1C,KAAK,QAAQ;gBAAE,IAAI,GAAG,YAAY,CAAC;gBAAC,MAAM;
|
|
1
|
+
{"version":3,"file":"schema-generator.js","sourceRoot":"","sources":["../../src/generator/schema-generator.ts"],"names":[],"mappings":"AAEA,MAAM,UAAU,kBAAkB,CAAC,MAAoB;IACrD,MAAM,KAAK,GAAa;QACtB,2CAA2C;QAC3C,0BAA0B;QAC1B,EAAE;KACH,CAAC;IAEF,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;QAChC,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,IAAI,QAAQ,CAAC;QACxC,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,KAAK,CAAC,EAAE,EAAE;YACnE,OAAO,KAAK,IAAI,KAAK,gBAAgB,CAAC,KAAK,CAAC,GAAG,CAAC;QAClD,CAAC,CAAC,CAAC;QAEH,KAAK,CAAC,IAAI,CAAC,gBAAgB,UAAU,eAAe,CAAC,CAAC;QACtD,KAAK,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,CAAC;QACtB,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAClB,KAAK,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC;IACjB,CAAC;IAED,OAAO,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC1B,CAAC;AAED,SAAS,gBAAgB,CAAC,KAAsB;IAC9C,IAAI,IAAY,CAAC;IAEjB,IAAI,KAAK,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACxC,IAAI,GAAG,WAAW,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC;IACjE,CAAC;SAAM,CAAC;QACN,QAAQ,KAAK,CAAC,IAAI,EAAE,CAAC;YACnB,KAAK,QAAQ;gBAAE,IAAI,GAAG,YAAY,CAAC;gBAAC,MAAM;YAC1C,KAAK,QAAQ,CAAC;YACd,KAAK,SAAS;gBAAE,IAAI,GAAG,YAAY,CAAC;gBAAC,MAAM;YAC3C,KAAK,SAAS;gBAAE,IAAI,GAAG,aAAa,CAAC;gBAAC,MAAM;YAC5C,KAAK,MAAM,CAAC;YACZ,KAAK,UAAU;gBAAE,IAAI,GAAG,iBAAiB,CAAC;gBAAC,MAAM;YACjD,KAAK,MAAM;gBAAE,IAAI,GAAG,YAAY,CAAC;gBAAC,MAAM;YACxC,KAAK,OAAO;gBAAE,IAAI,GAAG,sBAAsB,CAAC;gBAAC,MAAM;YACnD,KAAK,QAAQ;gBAAE,IAAI,GAAG,uBAAuB,CAAC;gBAAC,MAAM;YACrD;gBAAS,IAAI,GAAG,aAAa,CAAC;gBAAC,MAAM;QACvC,CAAC;IACH,CAAC;IAED,IAAI,KAAK,CAAC,MAAM,KAAK,OAAO;QAAE,IAAI,IAAI,UAAU,CAAC;IACjD,IAAI,KAAK,CAAC,MAAM,KAAK,KAAK;QAAE,IAAI,IAAI,QAAQ,CAAC;IAC7C,IAAI,KAAK,CAAC,MAAM,KAAK,MAAM;QAAE,IAAI,IAAI,SAAS,CAAC;IAC/C,IAAI,KAAK,CAAC,WAAW;QAAE,IAAI,IAAI,aAAa,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,WAAW,CAAC,GAAG,CAAC;IACjF,IAAI,CAAC,KAAK,CAAC,QAAQ;QAAE,IAAI,IAAI,aAAa,CAAC;IAE3C,OAAO,IAAI,CAAC;AACd,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "sammy-sdk",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.1",
|
|
4
4
|
"description": "Auto-configuring AI agent framework that learns your codebase and builds itself",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "dist/index.js",
|
|
@@ -46,11 +46,11 @@
|
|
|
46
46
|
},
|
|
47
47
|
"repository": {
|
|
48
48
|
"type": "git",
|
|
49
|
-
"url": "https://github.com/
|
|
49
|
+
"url": "https://github.com/sammymitch0071/sammy.git",
|
|
50
50
|
"directory": "packages/sammy"
|
|
51
51
|
},
|
|
52
52
|
"bugs": {
|
|
53
|
-
"url": "https://github.com/
|
|
53
|
+
"url": "https://github.com/sammymitch0071/sammy/issues"
|
|
54
54
|
},
|
|
55
55
|
"homepage": "https://sammy.dev",
|
|
56
56
|
"dependencies": {
|