@cmssy/ai-tools 0.1.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 (78) hide show
  1. package/README.md +44 -0
  2. package/dist/index.d.ts +19 -0
  3. package/dist/index.d.ts.map +1 -0
  4. package/dist/index.js +18 -0
  5. package/dist/index.js.map +1 -0
  6. package/dist/registry.d.ts +3 -0
  7. package/dist/registry.d.ts.map +1 -0
  8. package/dist/registry.js +33 -0
  9. package/dist/registry.js.map +1 -0
  10. package/dist/schemas.d.ts +42 -0
  11. package/dist/schemas.d.ts.map +1 -0
  12. package/dist/schemas.js +52 -0
  13. package/dist/schemas.js.map +1 -0
  14. package/dist/tools/create-discount.tool.d.ts +17 -0
  15. package/dist/tools/create-discount.tool.d.ts.map +1 -0
  16. package/dist/tools/create-discount.tool.js +30 -0
  17. package/dist/tools/create-discount.tool.js.map +1 -0
  18. package/dist/tools/create-form.tool.d.ts +11 -0
  19. package/dist/tools/create-form.tool.d.ts.map +1 -0
  20. package/dist/tools/create-form.tool.js +17 -0
  21. package/dist/tools/create-form.tool.js.map +1 -0
  22. package/dist/tools/create-model.tool.d.ts +35 -0
  23. package/dist/tools/create-model.tool.d.ts.map +1 -0
  24. package/dist/tools/create-model.tool.js +14 -0
  25. package/dist/tools/create-model.tool.js.map +1 -0
  26. package/dist/tools/create-page.tool.d.ts +11 -0
  27. package/dist/tools/create-page.tool.d.ts.map +1 -0
  28. package/dist/tools/create-page.tool.js +14 -0
  29. package/dist/tools/create-page.tool.js.map +1 -0
  30. package/dist/tools/create-record.tool.d.ts +10 -0
  31. package/dist/tools/create-record.tool.d.ts.map +1 -0
  32. package/dist/tools/create-record.tool.js +24 -0
  33. package/dist/tools/create-record.tool.js.map +1 -0
  34. package/dist/tools/get-model.tool.d.ts +15 -0
  35. package/dist/tools/get-model.tool.d.ts.map +1 -0
  36. package/dist/tools/get-model.tool.js +21 -0
  37. package/dist/tools/get-model.tool.js.map +1 -0
  38. package/dist/tools/list-discounts.tool.d.ts +11 -0
  39. package/dist/tools/list-discounts.tool.d.ts.map +1 -0
  40. package/dist/tools/list-discounts.tool.js +13 -0
  41. package/dist/tools/list-discounts.tool.js.map +1 -0
  42. package/dist/tools/list-forms.tool.d.ts +11 -0
  43. package/dist/tools/list-forms.tool.d.ts.map +1 -0
  44. package/dist/tools/list-forms.tool.js +13 -0
  45. package/dist/tools/list-forms.tool.js.map +1 -0
  46. package/dist/tools/list-media.tool.d.ts +11 -0
  47. package/dist/tools/list-media.tool.d.ts.map +1 -0
  48. package/dist/tools/list-media.tool.js +13 -0
  49. package/dist/tools/list-media.tool.js.map +1 -0
  50. package/dist/tools/list-models.tool.d.ts +11 -0
  51. package/dist/tools/list-models.tool.d.ts.map +1 -0
  52. package/dist/tools/list-models.tool.js +13 -0
  53. package/dist/tools/list-models.tool.js.map +1 -0
  54. package/dist/tools/list-orders.tool.d.ts +11 -0
  55. package/dist/tools/list-orders.tool.d.ts.map +1 -0
  56. package/dist/tools/list-orders.tool.js +13 -0
  57. package/dist/tools/list-orders.tool.js.map +1 -0
  58. package/dist/tools/list-records.tool.d.ts +14 -0
  59. package/dist/tools/list-records.tool.d.ts.map +1 -0
  60. package/dist/tools/list-records.tool.js +25 -0
  61. package/dist/tools/list-records.tool.js.map +1 -0
  62. package/dist/tools/search-content.tool.d.ts +13 -0
  63. package/dist/tools/search-content.tool.d.ts.map +1 -0
  64. package/dist/tools/search-content.tool.js +17 -0
  65. package/dist/tools/search-content.tool.js.map +1 -0
  66. package/dist/tools/update-model.tool.d.ts +37 -0
  67. package/dist/tools/update-model.tool.d.ts.map +1 -0
  68. package/dist/tools/update-model.tool.js +33 -0
  69. package/dist/tools/update-model.tool.js.map +1 -0
  70. package/dist/tools/update-record.tool.d.ts +10 -0
  71. package/dist/tools/update-record.tool.d.ts.map +1 -0
  72. package/dist/tools/update-record.tool.js +21 -0
  73. package/dist/tools/update-record.tool.js.map +1 -0
  74. package/dist/types.d.ts +165 -0
  75. package/dist/types.d.ts.map +1 -0
  76. package/dist/types.js +2 -0
  77. package/dist/types.js.map +1 -0
  78. package/package.json +53 -0
package/README.md ADDED
@@ -0,0 +1,44 @@
1
+ # @cmssy/ai-tools
2
+
3
+ Transport-neutral AI tool-core shared by Cmssy Spotlight (in-process admin
4
+ assistant) and `@cmssy/mcp-server` (public MCP server).
5
+
6
+ Each tool is defined **once** - `name`, `description`, `inputSchema`,
7
+ `requiredPermissions`, and an `execute(input, ops)` that runs against the
8
+ abstract `WorkspaceOps` capability port. Each consumer supplies its own
9
+ `WorkspaceOps` adapter (Spotlight: in-process repositories/services; MCP: the
10
+ public GraphQL API via `cs_*` token) and a thin binder for its framework and
11
+ return shape.
12
+
13
+ See the RFC `docs/rfc/spotlight-mcp-shared-tools.md` in the `cmssy` repo.
14
+
15
+ ## Install
16
+
17
+ ```bash
18
+ npm install @cmssy/ai-tools zod
19
+ ```
20
+
21
+ `zod` is a peer dependency.
22
+
23
+ ## Usage
24
+
25
+ ```ts
26
+ import { AI_TOOLS, type WorkspaceOps } from "@cmssy/ai-tools";
27
+
28
+ const ops: WorkspaceOps = /* your adapter */;
29
+
30
+ for (const tool of AI_TOOLS) {
31
+ // bind tool.name / tool.description / tool.inputSchema into your framework,
32
+ // calling tool.execute(input, ops) and shaping the result for your transport.
33
+ }
34
+ ```
35
+
36
+ ## Contract
37
+
38
+ - **Always shared:** `name`, `description`, `inputSchema`, `requiredPermissions`,
39
+ and the `execute` orchestration against `WorkspaceOps`.
40
+ - **Read/list outputs** are transport-neutral domain summaries; each binder
41
+ presents its own shape.
42
+ - **Write/action outputs** are small identity DTOs that converge across surfaces.
43
+ - `requiredPermissions` is enforced by Spotlight (admin session) and advisory for
44
+ MCP (the public API is the gate).
@@ -0,0 +1,19 @@
1
+ export type { AiTool, WorkspaceOps, ModelOps, ModelSummary, ModelFieldSummary, ModelDetail, RecordSummary, RecordList, PageOps, PageSummary, PageInput, PageCreated, MediaSummary, MediaOps, FormSummary, FormOps, OrderSummary, OrderOps, DiscountSummary, DiscountOps, FieldType, ProposedField, ModelCreated, ModelUpdated, ModelUpdateInput, RecordCreated, DiscountType, DiscountInput, DiscountCreated, FormInput, FormCreated, } from "./types.js";
2
+ export { AI_TOOLS } from "./registry.js";
3
+ export { listModelsTool } from "./tools/list-models.tool.js";
4
+ export { getModelTool } from "./tools/get-model.tool.js";
5
+ export { listRecordsTool } from "./tools/list-records.tool.js";
6
+ export { searchContentTool } from "./tools/search-content.tool.js";
7
+ export { listMediaTool } from "./tools/list-media.tool.js";
8
+ export { listFormsTool } from "./tools/list-forms.tool.js";
9
+ export { listOrdersTool } from "./tools/list-orders.tool.js";
10
+ export { listDiscountsTool } from "./tools/list-discounts.tool.js";
11
+ export { createModelTool } from "./tools/create-model.tool.js";
12
+ export { createRecordTool } from "./tools/create-record.tool.js";
13
+ export { updateModelTool } from "./tools/update-model.tool.js";
14
+ export { updateRecordTool } from "./tools/update-record.tool.js";
15
+ export { createDiscountTool } from "./tools/create-discount.tool.js";
16
+ export { createFormTool } from "./tools/create-form.tool.js";
17
+ export { createPageTool } from "./tools/create-page.tool.js";
18
+ export { fieldTypeSchema, proposedFieldSchema } from "./schemas.js";
19
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EACV,MAAM,EACN,YAAY,EACZ,QAAQ,EACR,YAAY,EACZ,iBAAiB,EACjB,WAAW,EACX,aAAa,EACb,UAAU,EACV,OAAO,EACP,WAAW,EACX,SAAS,EACT,WAAW,EACX,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,OAAO,EACP,YAAY,EACZ,QAAQ,EACR,eAAe,EACf,WAAW,EACX,SAAS,EACT,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,gBAAgB,EAChB,aAAa,EACb,YAAY,EACZ,aAAa,EACb,eAAe,EACf,SAAS,EACT,WAAW,GACZ,MAAM,YAAY,CAAC;AACpB,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,18 @@
1
+ export { AI_TOOLS } from "./registry.js";
2
+ export { listModelsTool } from "./tools/list-models.tool.js";
3
+ export { getModelTool } from "./tools/get-model.tool.js";
4
+ export { listRecordsTool } from "./tools/list-records.tool.js";
5
+ export { searchContentTool } from "./tools/search-content.tool.js";
6
+ export { listMediaTool } from "./tools/list-media.tool.js";
7
+ export { listFormsTool } from "./tools/list-forms.tool.js";
8
+ export { listOrdersTool } from "./tools/list-orders.tool.js";
9
+ export { listDiscountsTool } from "./tools/list-discounts.tool.js";
10
+ export { createModelTool } from "./tools/create-model.tool.js";
11
+ export { createRecordTool } from "./tools/create-record.tool.js";
12
+ export { updateModelTool } from "./tools/update-model.tool.js";
13
+ export { updateRecordTool } from "./tools/update-record.tool.js";
14
+ export { createDiscountTool } from "./tools/create-discount.tool.js";
15
+ export { createFormTool } from "./tools/create-form.tool.js";
16
+ export { createPageTool } from "./tools/create-page.tool.js";
17
+ export { fieldTypeSchema, proposedFieldSchema } from "./schemas.js";
18
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAiCA,OAAO,EAAE,QAAQ,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,eAAe,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC"}
@@ -0,0 +1,3 @@
1
+ import type { AiTool } from "./types.js";
2
+ export declare const AI_TOOLS: readonly AiTool[];
3
+ //# sourceMappingURL=registry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.ts","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,YAAY,CAAC;AAiBzC,eAAO,MAAM,QAAQ,EAAE,SAAS,MAAM,EAgBrC,CAAC"}
@@ -0,0 +1,33 @@
1
+ import { listModelsTool } from "./tools/list-models.tool.js";
2
+ import { getModelTool } from "./tools/get-model.tool.js";
3
+ import { listRecordsTool } from "./tools/list-records.tool.js";
4
+ import { searchContentTool } from "./tools/search-content.tool.js";
5
+ import { listMediaTool } from "./tools/list-media.tool.js";
6
+ import { listFormsTool } from "./tools/list-forms.tool.js";
7
+ import { listOrdersTool } from "./tools/list-orders.tool.js";
8
+ import { listDiscountsTool } from "./tools/list-discounts.tool.js";
9
+ import { createModelTool } from "./tools/create-model.tool.js";
10
+ import { createRecordTool } from "./tools/create-record.tool.js";
11
+ import { updateModelTool } from "./tools/update-model.tool.js";
12
+ import { updateRecordTool } from "./tools/update-record.tool.js";
13
+ import { createDiscountTool } from "./tools/create-discount.tool.js";
14
+ import { createFormTool } from "./tools/create-form.tool.js";
15
+ import { createPageTool } from "./tools/create-page.tool.js";
16
+ export const AI_TOOLS = [
17
+ listModelsTool,
18
+ getModelTool,
19
+ listRecordsTool,
20
+ searchContentTool,
21
+ listMediaTool,
22
+ listFormsTool,
23
+ listOrdersTool,
24
+ listDiscountsTool,
25
+ createModelTool,
26
+ createRecordTool,
27
+ updateModelTool,
28
+ updateRecordTool,
29
+ createDiscountTool,
30
+ createFormTool,
31
+ createPageTool,
32
+ ];
33
+ //# sourceMappingURL=registry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.js","sourceRoot":"","sources":["../src/registry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,iBAAiB,EAAE,MAAM,gCAAgC,CAAC;AACnE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,kBAAkB,EAAE,MAAM,iCAAiC,CAAC;AACrE,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAC7D,OAAO,EAAE,cAAc,EAAE,MAAM,6BAA6B,CAAC;AAE7D,MAAM,CAAC,MAAM,QAAQ,GAAsB;IACzC,cAAc;IACd,YAAY;IACZ,eAAe;IACf,iBAAiB;IACjB,aAAa;IACb,aAAa;IACb,cAAc;IACd,iBAAiB;IACjB,eAAe;IACf,gBAAgB;IAChB,eAAe;IACf,gBAAgB;IAChB,kBAAkB;IAClB,cAAc;IACd,cAAc;CACf,CAAC"}
@@ -0,0 +1,42 @@
1
+ import { z } from "zod";
2
+ export declare const fieldTypeSchema: z.ZodEnum<{
3
+ string: "string";
4
+ number: "number";
5
+ boolean: "boolean";
6
+ richtext: "richtext";
7
+ date: "date";
8
+ datetime: "datetime";
9
+ email: "email";
10
+ url: "url";
11
+ media: "media";
12
+ select: "select";
13
+ multiselect: "multiselect";
14
+ relation: "relation";
15
+ }>;
16
+ export declare const proposedFieldSchema: z.ZodObject<{
17
+ key: z.ZodString;
18
+ label: z.ZodString;
19
+ type: z.ZodEnum<{
20
+ string: "string";
21
+ number: "number";
22
+ boolean: "boolean";
23
+ richtext: "richtext";
24
+ date: "date";
25
+ datetime: "datetime";
26
+ email: "email";
27
+ url: "url";
28
+ media: "media";
29
+ select: "select";
30
+ multiselect: "multiselect";
31
+ relation: "relation";
32
+ }>;
33
+ required: z.ZodDefault<z.ZodBoolean>;
34
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
35
+ relationTo: z.ZodOptional<z.ZodString>;
36
+ relationType: z.ZodOptional<z.ZodEnum<{
37
+ hasOne: "hasOne";
38
+ hasMany: "hasMany";
39
+ manyToMany: "manyToMany";
40
+ }>>;
41
+ }, z.core.$strip>;
42
+ //# sourceMappingURL=schemas.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,eAAO,MAAM,eAAe;;;;;;;;;;;;;EAa1B,CAAC;AAEH,eAAO,MAAM,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;iBA2C5B,CAAC"}
@@ -0,0 +1,52 @@
1
+ import { z } from "zod";
2
+ export const fieldTypeSchema = z.enum([
3
+ "string",
4
+ "richtext",
5
+ "number",
6
+ "boolean",
7
+ "date",
8
+ "datetime",
9
+ "email",
10
+ "url",
11
+ "media",
12
+ "select",
13
+ "multiselect",
14
+ "relation",
15
+ ]);
16
+ export const proposedFieldSchema = z
17
+ .object({
18
+ key: z.string().min(1),
19
+ label: z.string().min(1),
20
+ type: fieldTypeSchema,
21
+ required: z.boolean().default(false),
22
+ options: z
23
+ .array(z.string())
24
+ .optional()
25
+ .describe("Choices for a 'select' or 'multiselect' field. Required (non-empty) for those types."),
26
+ relationTo: z
27
+ .string()
28
+ .optional()
29
+ .describe("For a 'relation' field: the slug of the model to link to (e.g. 'category', from list_models). Required for relation fields."),
30
+ relationType: z
31
+ .enum(["hasOne", "hasMany", "manyToMany"])
32
+ .optional()
33
+ .describe("For a 'relation' field: cardinality. 'hasOne' = one linked record, 'hasMany' = many. If omitted, treated as 'hasOne'."),
34
+ })
35
+ .superRefine((field, ctx) => {
36
+ if ((field.type === "select" || field.type === "multiselect") &&
37
+ (!field.options || field.options.length === 0)) {
38
+ ctx.addIssue({
39
+ code: z.ZodIssueCode.custom,
40
+ message: `Field "${field.key}" of type ${field.type} must have at least one option`,
41
+ path: ["options"],
42
+ });
43
+ }
44
+ if (field.type === "relation" && !field.relationTo) {
45
+ ctx.addIssue({
46
+ code: z.ZodIssueCode.custom,
47
+ message: `Field "${field.key}" of type relation must set relationTo (the target model's slug)`,
48
+ path: ["relationTo"],
49
+ });
50
+ }
51
+ });
52
+ //# sourceMappingURL=schemas.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"schemas.js","sourceRoot":"","sources":["../src/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,CAAC,IAAI,CAAC;IACpC,QAAQ;IACR,UAAU;IACV,QAAQ;IACR,SAAS;IACT,MAAM;IACN,UAAU;IACV,OAAO;IACP,KAAK;IACL,OAAO;IACP,QAAQ;IACR,aAAa;IACb,UAAU;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC;KACjC,MAAM,CAAC;IACN,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACtB,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACxB,IAAI,EAAE,eAAe;IACrB,QAAQ,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,KAAK,CAAC;IACpC,OAAO,EAAE,CAAC;SACP,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;SACjB,QAAQ,EAAE;SACV,QAAQ,CACP,sFAAsF,CACvF;IACH,UAAU,EAAE,CAAC;SACV,MAAM,EAAE;SACR,QAAQ,EAAE;SACV,QAAQ,CACP,6HAA6H,CAC9H;IACH,YAAY,EAAE,CAAC;SACZ,IAAI,CAAC,CAAC,QAAQ,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;SACzC,QAAQ,EAAE;SACV,QAAQ,CACP,uHAAuH,CACxH;CACJ,CAAC;KACD,WAAW,CAAC,CAAC,KAAK,EAAE,GAAG,EAAE,EAAE;IAC1B,IACE,CAAC,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,KAAK,CAAC,IAAI,KAAK,aAAa,CAAC;QACzD,CAAC,CAAC,KAAK,CAAC,OAAO,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,KAAK,CAAC,CAAC,EAC9C,CAAC;QACD,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,UAAU,KAAK,CAAC,GAAG,aAAa,KAAK,CAAC,IAAI,gCAAgC;YACnF,IAAI,EAAE,CAAC,SAAS,CAAC;SAClB,CAAC,CAAC;IACL,CAAC;IACD,IAAI,KAAK,CAAC,IAAI,KAAK,UAAU,IAAI,CAAC,KAAK,CAAC,UAAU,EAAE,CAAC;QACnD,GAAG,CAAC,QAAQ,CAAC;YACX,IAAI,EAAE,CAAC,CAAC,YAAY,CAAC,MAAM;YAC3B,OAAO,EAAE,UAAU,KAAK,CAAC,GAAG,kEAAkE;YAC9F,IAAI,EAAE,CAAC,YAAY,CAAC;SACrB,CAAC,CAAC;IACL,CAAC;AACH,CAAC,CAAC,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, DiscountCreated } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ code: z.ZodString;
5
+ type: z.ZodEnum<{
6
+ percentage: "percentage";
7
+ fixed: "fixed";
8
+ free_shipping: "free_shipping";
9
+ }>;
10
+ value: z.ZodNumber;
11
+ currency: z.ZodOptional<z.ZodString>;
12
+ enabled: z.ZodDefault<z.ZodBoolean>;
13
+ }, z.core.$strip>;
14
+ type Input = z.infer<typeof inputSchema>;
15
+ export declare const createDiscountTool: AiTool<Input, DiscountCreated>;
16
+ export {};
17
+ //# sourceMappingURL=create-discount.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-discount.tool.d.ts","sourceRoot":"","sources":["../../src/tools/create-discount.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE3D,QAAA,MAAM,WAAW;;;;;;;;;;iBAYf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,kBAAkB,EAAE,MAAM,CAAC,KAAK,EAAE,eAAe,CAe7D,CAAC"}
@@ -0,0 +1,30 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({
3
+ code: z.string().min(3).max(32).describe("The discount code"),
4
+ type: z.enum(["percentage", "fixed", "free_shipping"]),
5
+ value: z
6
+ .number()
7
+ .describe("Percent (0-100), fixed amount in minor units, or 0"),
8
+ currency: z
9
+ .string()
10
+ .length(3)
11
+ .optional()
12
+ .describe("ISO 4217 code, required for 'fixed' type"),
13
+ enabled: z.boolean().default(true),
14
+ });
15
+ export const createDiscountTool = {
16
+ name: "create_discount",
17
+ description: "Create a discount code. `type` is 'percentage' (value 0-100), 'fixed' (value in minor currency units, requires currency e.g. 'USD'), or 'free_shipping' (value 0). Only call AFTER the user explicitly agreed to the code you described.",
18
+ inputSchema,
19
+ requiredPermissions: ["discounts:manage"],
20
+ execute: async ({ code, type, value, currency, enabled }, ops) => {
21
+ if (type === "fixed" && !currency) {
22
+ throw new Error("A 'fixed' discount requires a currency");
23
+ }
24
+ if (type === "percentage" && value <= 0) {
25
+ throw new Error("A percentage discount must be greater than 0");
26
+ }
27
+ return ops.discounts.create({ code, type, value, currency, enabled });
28
+ },
29
+ };
30
+ //# sourceMappingURL=create-discount.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-discount.tool.js","sourceRoot":"","sources":["../../src/tools/create-discount.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,QAAQ,CAAC,mBAAmB,CAAC;IAC7D,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,OAAO,EAAE,eAAe,CAAC,CAAC;IACtD,KAAK,EAAE,CAAC;SACL,MAAM,EAAE;SACR,QAAQ,CAAC,oDAAoD,CAAC;IACjE,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,MAAM,CAAC,CAAC,CAAC;SACT,QAAQ,EAAE;SACV,QAAQ,CAAC,0CAA0C,CAAC;IACvD,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC;CACnC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,kBAAkB,GAAmC;IAChE,IAAI,EAAE,iBAAiB;IACvB,WAAW,EACT,0OAA0O;IAC5O,WAAW;IACX,mBAAmB,EAAE,CAAC,kBAAkB,CAAC;IACzC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,EAAE,GAAG,EAAE,EAAE;QAC/D,IAAI,IAAI,KAAK,OAAO,IAAI,CAAC,QAAQ,EAAE,CAAC;YAClC,MAAM,IAAI,KAAK,CAAC,wCAAwC,CAAC,CAAC;QAC5D,CAAC;QACD,IAAI,IAAI,KAAK,YAAY,IAAI,KAAK,IAAI,CAAC,EAAE,CAAC;YACxC,MAAM,IAAI,KAAK,CAAC,8CAA8C,CAAC,CAAC;QAClE,CAAC;QACD,OAAO,GAAG,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,OAAO,EAAE,CAAC,CAAC;IACxE,CAAC;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, FormCreated } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ name: z.ZodString;
5
+ slug: z.ZodString;
6
+ description: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ type Input = z.infer<typeof inputSchema>;
9
+ export declare const createFormTool: AiTool<Input, FormCreated>;
10
+ export {};
11
+ //# sourceMappingURL=create-form.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-form.tool.d.ts","sourceRoot":"","sources":["../../src/tools/create-form.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,QAAA,MAAM,WAAW;;;;iBAOf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,CAOrD,CAAC"}
@@ -0,0 +1,17 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({
3
+ name: z.string().min(1).describe("The form's display name"),
4
+ slug: z
5
+ .string()
6
+ .min(1)
7
+ .describe("URL-friendly slug, unique within the workspace"),
8
+ description: z.string().optional(),
9
+ });
10
+ export const createFormTool = {
11
+ name: "create_form",
12
+ description: "Create a new (empty) form with a name and slug; fields are added later in the Forms editor. Only call AFTER the user explicitly agreed.",
13
+ inputSchema,
14
+ requiredPermissions: ["forms:create"],
15
+ execute: async (input, ops) => ops.forms.create(input),
16
+ };
17
+ //# sourceMappingURL=create-form.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-form.tool.js","sourceRoot":"","sources":["../../src/tools/create-form.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,yBAAyB,CAAC;IAC3D,IAAI,EAAE,CAAC;SACJ,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,gDAAgD,CAAC;IAC7D,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAA+B;IACxD,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,yIAAyI;IAC3I,WAAW;IACX,mBAAmB,EAAE,CAAC,cAAc,CAAC;IACrC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;CACvD,CAAC"}
@@ -0,0 +1,35 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, ModelCreated } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ name: z.ZodString;
5
+ fields: z.ZodArray<z.ZodObject<{
6
+ key: z.ZodString;
7
+ label: z.ZodString;
8
+ type: z.ZodEnum<{
9
+ string: "string";
10
+ number: "number";
11
+ boolean: "boolean";
12
+ richtext: "richtext";
13
+ date: "date";
14
+ datetime: "datetime";
15
+ email: "email";
16
+ url: "url";
17
+ media: "media";
18
+ select: "select";
19
+ multiselect: "multiselect";
20
+ relation: "relation";
21
+ }>;
22
+ required: z.ZodDefault<z.ZodBoolean>;
23
+ options: z.ZodOptional<z.ZodArray<z.ZodString>>;
24
+ relationTo: z.ZodOptional<z.ZodString>;
25
+ relationType: z.ZodOptional<z.ZodEnum<{
26
+ hasOne: "hasOne";
27
+ hasMany: "hasMany";
28
+ manyToMany: "manyToMany";
29
+ }>>;
30
+ }, z.core.$strip>>;
31
+ }, z.core.$strip>;
32
+ type Input = z.infer<typeof inputSchema>;
33
+ export declare const createModelTool: AiTool<Input, ModelCreated>;
34
+ export {};
35
+ //# sourceMappingURL=create-model.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-model.tool.d.ts","sourceRoot":"","sources":["../../src/tools/create-model.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAGxD,QAAA,MAAM,WAAW;;;;;;;;;;;;;;;;;;;;;;;;;;;;iBAGf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,KAAK,EAAE,YAAY,CAOvD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { z } from "zod";
2
+ import { proposedFieldSchema } from "../schemas.js";
3
+ const inputSchema = z.object({
4
+ name: z.string().min(1),
5
+ fields: z.array(proposedFieldSchema).min(1),
6
+ });
7
+ export const createModelTool = {
8
+ name: "create_model",
9
+ description: "Create a data model in the workspace. Field types include select/multiselect (provide `options`) and relation (link to another model via `relationTo` = the target model's slug + `relationType`). Only call AFTER the user has explicitly agreed to a structure you proposed (e.g. replied yes / clicked 'Yes, create'). Never create without that explicit go-ahead.",
10
+ inputSchema,
11
+ requiredPermissions: ["models:create"],
12
+ execute: async ({ name, fields }, ops) => ops.models.create({ name, fields }),
13
+ };
14
+ //# sourceMappingURL=create-model.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-model.tool.js","sourceRoot":"","sources":["../../src/tools/create-model.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,mBAAmB,EAAE,MAAM,eAAe,CAAC;AAEpD,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACvB,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CAC5C,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,eAAe,GAAgC;IAC1D,IAAI,EAAE,cAAc;IACpB,WAAW,EACT,wWAAwW;IAC1W,WAAW;IACX,mBAAmB,EAAE,CAAC,eAAe,CAAC;IACtC,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC;CAC9E,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, PageCreated } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ name: z.ZodString;
5
+ slug: z.ZodString;
6
+ description: z.ZodOptional<z.ZodString>;
7
+ }, z.core.$strip>;
8
+ type Input = z.infer<typeof inputSchema>;
9
+ export declare const createPageTool: AiTool<Input, PageCreated>;
10
+ export {};
11
+ //# sourceMappingURL=create-page.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-page.tool.d.ts","sourceRoot":"","sources":["../../src/tools/create-page.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,QAAA,MAAM,WAAW;;;;iBAIf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,KAAK,EAAE,WAAW,CAOrD,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({
3
+ name: z.string().min(1).describe("The page's name"),
4
+ slug: z.string().min(1).describe("URL-friendly slug, e.g. 'about-us'"),
5
+ description: z.string().optional(),
6
+ });
7
+ export const createPageTool = {
8
+ name: "create_page",
9
+ description: "Create a new draft page with a name and slug (content/blocks are added later in the editor). Only call AFTER the user explicitly agreed.",
10
+ inputSchema,
11
+ requiredPermissions: ["pages:create"],
12
+ execute: async (input, ops) => ops.pages.create(input),
13
+ };
14
+ //# sourceMappingURL=create-page.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-page.tool.js","sourceRoot":"","sources":["../../src/tools/create-page.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,iBAAiB,CAAC;IACnD,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,oCAAoC,CAAC;IACtE,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;CACnC,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,cAAc,GAA+B;IACxD,IAAI,EAAE,aAAa;IACnB,WAAW,EACT,0IAA0I;IAC5I,WAAW;IACX,mBAAmB,EAAE,CAAC,cAAc,CAAC;IACrC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;CACvD,CAAC"}
@@ -0,0 +1,10 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, RecordCreated } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ modelIdOrSlug: z.ZodString;
5
+ data: z.ZodRecord<z.ZodString, z.ZodUnknown>;
6
+ }, z.core.$strip>;
7
+ type Input = z.infer<typeof inputSchema>;
8
+ export declare const createRecordTool: AiTool<Input, RecordCreated>;
9
+ export {};
10
+ //# sourceMappingURL=create-record.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-record.tool.d.ts","sourceRoot":"","sources":["../../src/tools/create-record.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAEzD,QAAA,MAAM,WAAW;;;iBAQf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,eAAO,MAAM,gBAAgB,EAAE,MAAM,CAAC,KAAK,EAAE,aAAa,CAazD,CAAC"}
@@ -0,0 +1,24 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({
3
+ modelIdOrSlug: z
4
+ .string()
5
+ .min(1)
6
+ .describe("The target model's id or slug (from list_models)"),
7
+ data: z
8
+ .record(z.string(), z.unknown())
9
+ .describe("Field values keyed by the model's field keys"),
10
+ });
11
+ export const createRecordTool = {
12
+ name: "create_record",
13
+ description: "Add a record (entry) to a data model. Pass the model id or slug and a `data` object whose keys are the model's field keys (use get_model first if unsure). Only call AFTER you described the record and the user explicitly agreed; never create without that go-ahead.",
14
+ inputSchema,
15
+ requiredPermissions: ["models:edit"],
16
+ execute: async ({ modelIdOrSlug, data }, ops) => {
17
+ const result = await ops.models.createRecord(modelIdOrSlug, data);
18
+ if (!result) {
19
+ throw new Error(`Model "${modelIdOrSlug}" not found`);
20
+ }
21
+ return result;
22
+ },
23
+ };
24
+ //# sourceMappingURL=create-record.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create-record.tool.js","sourceRoot":"","sources":["../../src/tools/create-record.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,aAAa,EAAE,CAAC;SACb,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,kDAAkD,CAAC;IAC/D,IAAI,EAAE,CAAC;SACJ,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC;SAC/B,QAAQ,CAAC,8CAA8C,CAAC;CAC5D,CAAC,CAAC;AAIH,MAAM,CAAC,MAAM,gBAAgB,GAAiC;IAC5D,IAAI,EAAE,eAAe;IACrB,WAAW,EACT,yQAAyQ;IAC3Q,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,IAAI,EAAE,EAAE,GAAG,EAAE,EAAE;QAC9C,MAAM,MAAM,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;QAClE,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,IAAI,KAAK,CAAC,UAAU,aAAa,aAAa,CAAC,CAAC;QACxD,CAAC;QACD,OAAO,MAAM,CAAC;IAChB,CAAC;CACF,CAAC"}
@@ -0,0 +1,15 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, ModelDetail } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{
4
+ idOrSlug: z.ZodString;
5
+ }, z.core.$strip>;
6
+ type Input = z.infer<typeof inputSchema>;
7
+ type Output = ({
8
+ found: true;
9
+ } & ModelDetail) | {
10
+ found: false;
11
+ idOrSlug: string;
12
+ };
13
+ export declare const getModelTool: AiTool<Input, Output>;
14
+ export {};
15
+ //# sourceMappingURL=get-model.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-model.tool.d.ts","sourceRoot":"","sources":["../../src/tools/get-model.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,QAAA,MAAM,WAAW;;iBAKf,CAAC;AAEH,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,KAAK,MAAM,GACP,CAAC;IAAE,KAAK,EAAE,IAAI,CAAA;CAAE,GAAG,WAAW,CAAC,GAC/B;IAAE,KAAK,EAAE,KAAK,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,CAAC;AAEvC,eAAO,MAAM,YAAY,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAa9C,CAAC"}
@@ -0,0 +1,21 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({
3
+ idOrSlug: z
4
+ .string()
5
+ .min(1)
6
+ .describe("The model's id or slug (from list_models)"),
7
+ });
8
+ export const getModelTool = {
9
+ name: "get_model",
10
+ description: "Get the full details of one data model (its fields, types and which are required), by id or slug. Use when the user asks about a specific model's structure.",
11
+ inputSchema,
12
+ requiredPermissions: ["models:view"],
13
+ execute: async ({ idOrSlug }, ops) => {
14
+ const model = await ops.models.get(idOrSlug);
15
+ if (!model) {
16
+ return { found: false, idOrSlug };
17
+ }
18
+ return { found: true, ...model };
19
+ },
20
+ };
21
+ //# sourceMappingURL=get-model.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-model.tool.js","sourceRoot":"","sources":["../../src/tools/get-model.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC;IAC3B,QAAQ,EAAE,CAAC;SACR,MAAM,EAAE;SACR,GAAG,CAAC,CAAC,CAAC;SACN,QAAQ,CAAC,2CAA2C,CAAC;CACzD,CAAC,CAAC;AAQH,MAAM,CAAC,MAAM,YAAY,GAA0B;IACjD,IAAI,EAAE,WAAW;IACjB,WAAW,EACT,8JAA8J;IAChK,WAAW;IACX,mBAAmB,EAAE,CAAC,aAAa,CAAC;IACpC,OAAO,EAAE,KAAK,EAAE,EAAE,QAAQ,EAAE,EAAE,GAAG,EAAE,EAAE;QACnC,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC7C,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC;QACpC,CAAC;QACD,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,GAAG,KAAK,EAAE,CAAC;IACnC,CAAC;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, DiscountSummary } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{}, z.core.$strip>;
4
+ type Input = z.infer<typeof inputSchema>;
5
+ interface Output {
6
+ count: number;
7
+ items: DiscountSummary[];
8
+ }
9
+ export declare const listDiscountsTool: AiTool<Input, Output>;
10
+ export {};
11
+ //# sourceMappingURL=list-discounts.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-discounts.tool.d.ts","sourceRoot":"","sources":["../../src/tools/list-discounts.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAE3D,QAAA,MAAM,WAAW,gCAAe,CAAC;AAEjC,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,UAAU,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,eAAe,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,iBAAiB,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CASnD,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({});
3
+ export const listDiscountsTool = {
4
+ name: "list_discounts",
5
+ description: "List discount codes in the workspace.",
6
+ inputSchema,
7
+ requiredPermissions: ["discounts:view"],
8
+ execute: async (_input, ops) => {
9
+ const items = await ops.discounts.list();
10
+ return { count: items.length, items };
11
+ },
12
+ };
13
+ //# sourceMappingURL=list-discounts.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-discounts.tool.js","sourceRoot":"","sources":["../../src/tools/list-discounts.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AASjC,MAAM,CAAC,MAAM,iBAAiB,GAA0B;IACtD,IAAI,EAAE,gBAAgB;IACtB,WAAW,EAAE,uCAAuC;IACpD,WAAW;IACX,mBAAmB,EAAE,CAAC,gBAAgB,CAAC;IACvC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;QACzC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, FormSummary } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{}, z.core.$strip>;
4
+ type Input = z.infer<typeof inputSchema>;
5
+ interface Output {
6
+ count: number;
7
+ items: FormSummary[];
8
+ }
9
+ export declare const listFormsTool: AiTool<Input, Output>;
10
+ export {};
11
+ //# sourceMappingURL=list-forms.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-forms.tool.d.ts","sourceRoot":"","sources":["../../src/tools/list-forms.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAEvD,QAAA,MAAM,WAAW,gCAAe,CAAC;AAEjC,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,UAAU,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,WAAW,EAAE,CAAC;CACtB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAS/C,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ const inputSchema = z.object({});
3
+ export const listFormsTool = {
4
+ name: "list_forms",
5
+ description: "List the forms in the workspace.",
6
+ inputSchema,
7
+ requiredPermissions: ["forms:view"],
8
+ execute: async (_input, ops) => {
9
+ const items = await ops.forms.list();
10
+ return { count: items.length, items };
11
+ },
12
+ };
13
+ //# sourceMappingURL=list-forms.tool.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-forms.tool.js","sourceRoot":"","sources":["../../src/tools/list-forms.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAGxB,MAAM,WAAW,GAAG,CAAC,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;AASjC,MAAM,CAAC,MAAM,aAAa,GAA0B;IAClD,IAAI,EAAE,YAAY;IAClB,WAAW,EAAE,kCAAkC;IAC/C,WAAW;IACX,mBAAmB,EAAE,CAAC,YAAY,CAAC;IACnC,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,EAAE;QAC7B,MAAM,KAAK,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QACrC,OAAO,EAAE,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE,KAAK,EAAE,CAAC;IACxC,CAAC;CACF,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { z } from "zod";
2
+ import type { AiTool, MediaSummary } from "../types.js";
3
+ declare const inputSchema: z.ZodObject<{}, z.core.$strip>;
4
+ type Input = z.infer<typeof inputSchema>;
5
+ interface Output {
6
+ count: number;
7
+ items: MediaSummary[];
8
+ }
9
+ export declare const listMediaTool: AiTool<Input, Output>;
10
+ export {};
11
+ //# sourceMappingURL=list-media.tool.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list-media.tool.d.ts","sourceRoot":"","sources":["../../src/tools/list-media.tool.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AACxB,OAAO,KAAK,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,aAAa,CAAC;AAExD,QAAA,MAAM,WAAW,gCAAe,CAAC;AAEjC,KAAK,KAAK,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,WAAW,CAAC,CAAC;AAEzC,UAAU,MAAM;IACd,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,YAAY,EAAE,CAAC;CACvB;AAED,eAAO,MAAM,aAAa,EAAE,MAAM,CAAC,KAAK,EAAE,MAAM,CAS/C,CAAC"}