@getfrontline/cli 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (270) hide show
  1. package/README.md +319 -0
  2. package/dist/assets/logo3.png +0 -0
  3. package/dist/commands/agents/analytics.d.ts +3 -0
  4. package/dist/commands/agents/analytics.d.ts.map +1 -0
  5. package/dist/commands/agents/analytics.js +67 -0
  6. package/dist/commands/agents/analytics.js.map +1 -0
  7. package/dist/commands/agents/flows.d.ts +3 -0
  8. package/dist/commands/agents/flows.d.ts.map +1 -0
  9. package/dist/commands/agents/flows.js +47 -0
  10. package/dist/commands/agents/flows.js.map +1 -0
  11. package/dist/commands/agents/list.d.ts +3 -0
  12. package/dist/commands/agents/list.d.ts.map +1 -0
  13. package/dist/commands/agents/list.js +46 -0
  14. package/dist/commands/agents/list.js.map +1 -0
  15. package/dist/commands/api/raw.d.ts +3 -0
  16. package/dist/commands/api/raw.d.ts.map +1 -0
  17. package/dist/commands/api/raw.js +54 -0
  18. package/dist/commands/api/raw.js.map +1 -0
  19. package/dist/commands/auth/login.d.ts +3 -0
  20. package/dist/commands/auth/login.d.ts.map +1 -0
  21. package/dist/commands/auth/login.js +39 -0
  22. package/dist/commands/auth/login.js.map +1 -0
  23. package/dist/commands/auth/logout.d.ts +3 -0
  24. package/dist/commands/auth/logout.d.ts.map +1 -0
  25. package/dist/commands/auth/logout.js +16 -0
  26. package/dist/commands/auth/logout.js.map +1 -0
  27. package/dist/commands/auth/profiles.d.ts +3 -0
  28. package/dist/commands/auth/profiles.d.ts.map +1 -0
  29. package/dist/commands/auth/profiles.js +72 -0
  30. package/dist/commands/auth/profiles.js.map +1 -0
  31. package/dist/commands/auth/whoami.d.ts +3 -0
  32. package/dist/commands/auth/whoami.d.ts.map +1 -0
  33. package/dist/commands/auth/whoami.js +46 -0
  34. package/dist/commands/auth/whoami.js.map +1 -0
  35. package/dist/commands/billing/get.d.ts +3 -0
  36. package/dist/commands/billing/get.d.ts.map +1 -0
  37. package/dist/commands/billing/get.js +42 -0
  38. package/dist/commands/billing/get.js.map +1 -0
  39. package/dist/commands/object/aggregation.d.ts +3 -0
  40. package/dist/commands/object/aggregation.d.ts.map +1 -0
  41. package/dist/commands/object/aggregation.js +78 -0
  42. package/dist/commands/object/aggregation.js.map +1 -0
  43. package/dist/commands/object/export.d.ts +3 -0
  44. package/dist/commands/object/export.d.ts.map +1 -0
  45. package/dist/commands/object/export.js +98 -0
  46. package/dist/commands/object/export.js.map +1 -0
  47. package/dist/commands/object/field.d.ts +3 -0
  48. package/dist/commands/object/field.d.ts.map +1 -0
  49. package/dist/commands/object/field.js +76 -0
  50. package/dist/commands/object/field.js.map +1 -0
  51. package/dist/commands/object/file.d.ts +3 -0
  52. package/dist/commands/object/file.d.ts.map +1 -0
  53. package/dist/commands/object/file.js +105 -0
  54. package/dist/commands/object/file.js.map +1 -0
  55. package/dist/commands/object/index.d.ts +3 -0
  56. package/dist/commands/object/index.d.ts.map +1 -0
  57. package/dist/commands/object/index.js +136 -0
  58. package/dist/commands/object/index.js.map +1 -0
  59. package/dist/commands/object/note.d.ts +3 -0
  60. package/dist/commands/object/note.d.ts.map +1 -0
  61. package/dist/commands/object/note.js +62 -0
  62. package/dist/commands/object/note.js.map +1 -0
  63. package/dist/commands/object/option.d.ts +3 -0
  64. package/dist/commands/object/option.d.ts.map +1 -0
  65. package/dist/commands/object/option.js +78 -0
  66. package/dist/commands/object/option.js.map +1 -0
  67. package/dist/commands/object/record-type.d.ts +3 -0
  68. package/dist/commands/object/record-type.d.ts.map +1 -0
  69. package/dist/commands/object/record-type.js +73 -0
  70. package/dist/commands/object/record-type.js.map +1 -0
  71. package/dist/commands/object/record.d.ts +3 -0
  72. package/dist/commands/object/record.d.ts.map +1 -0
  73. package/dist/commands/object/record.js +128 -0
  74. package/dist/commands/object/record.js.map +1 -0
  75. package/dist/commands/object/relation.d.ts +3 -0
  76. package/dist/commands/object/relation.d.ts.map +1 -0
  77. package/dist/commands/object/relation.js +73 -0
  78. package/dist/commands/object/relation.js.map +1 -0
  79. package/dist/commands/object/task.d.ts +3 -0
  80. package/dist/commands/object/task.d.ts.map +1 -0
  81. package/dist/commands/object/task.js +88 -0
  82. package/dist/commands/object/task.js.map +1 -0
  83. package/dist/commands/object/view.d.ts +3 -0
  84. package/dist/commands/object/view.d.ts.map +1 -0
  85. package/dist/commands/object/view.js +118 -0
  86. package/dist/commands/object/view.js.map +1 -0
  87. package/dist/commands/setup/claudeSkills.d.ts +3 -0
  88. package/dist/commands/setup/claudeSkills.d.ts.map +1 -0
  89. package/dist/commands/setup/claudeSkills.js +84 -0
  90. package/dist/commands/setup/claudeSkills.js.map +1 -0
  91. package/dist/commands/table/aggregation.d.ts +3 -0
  92. package/dist/commands/table/aggregation.d.ts.map +1 -0
  93. package/dist/commands/table/aggregation.js +78 -0
  94. package/dist/commands/table/aggregation.js.map +1 -0
  95. package/dist/commands/table/export.d.ts +3 -0
  96. package/dist/commands/table/export.d.ts.map +1 -0
  97. package/dist/commands/table/export.js +97 -0
  98. package/dist/commands/table/export.js.map +1 -0
  99. package/dist/commands/table/field.d.ts +3 -0
  100. package/dist/commands/table/field.d.ts.map +1 -0
  101. package/dist/commands/table/field.js +76 -0
  102. package/dist/commands/table/field.js.map +1 -0
  103. package/dist/commands/table/file.d.ts +3 -0
  104. package/dist/commands/table/file.d.ts.map +1 -0
  105. package/dist/commands/table/file.js +106 -0
  106. package/dist/commands/table/file.js.map +1 -0
  107. package/dist/commands/table/index.d.ts +3 -0
  108. package/dist/commands/table/index.d.ts.map +1 -0
  109. package/dist/commands/table/index.js +142 -0
  110. package/dist/commands/table/index.js.map +1 -0
  111. package/dist/commands/table/note.d.ts +3 -0
  112. package/dist/commands/table/note.d.ts.map +1 -0
  113. package/dist/commands/table/note.js +62 -0
  114. package/dist/commands/table/note.js.map +1 -0
  115. package/dist/commands/table/option.d.ts +3 -0
  116. package/dist/commands/table/option.d.ts.map +1 -0
  117. package/dist/commands/table/option.js +78 -0
  118. package/dist/commands/table/option.js.map +1 -0
  119. package/dist/commands/table/relation.d.ts +3 -0
  120. package/dist/commands/table/relation.d.ts.map +1 -0
  121. package/dist/commands/table/relation.js +74 -0
  122. package/dist/commands/table/relation.js.map +1 -0
  123. package/dist/commands/table/row.d.ts +3 -0
  124. package/dist/commands/table/row.d.ts.map +1 -0
  125. package/dist/commands/table/row.js +124 -0
  126. package/dist/commands/table/row.js.map +1 -0
  127. package/dist/commands/table/task.d.ts +3 -0
  128. package/dist/commands/table/task.d.ts.map +1 -0
  129. package/dist/commands/table/task.js +88 -0
  130. package/dist/commands/table/task.js.map +1 -0
  131. package/dist/commands/workflows/analytics.d.ts +3 -0
  132. package/dist/commands/workflows/analytics.d.ts.map +1 -0
  133. package/dist/commands/workflows/analytics.js +60 -0
  134. package/dist/commands/workflows/analytics.js.map +1 -0
  135. package/dist/commands/workflows/list.d.ts +3 -0
  136. package/dist/commands/workflows/list.d.ts.map +1 -0
  137. package/dist/commands/workflows/list.js +47 -0
  138. package/dist/commands/workflows/list.js.map +1 -0
  139. package/dist/index.d.ts +3 -0
  140. package/dist/index.d.ts.map +1 -0
  141. package/dist/index.js +73 -0
  142. package/dist/index.js.map +1 -0
  143. package/dist/lib/auth.d.ts +13 -0
  144. package/dist/lib/auth.d.ts.map +1 -0
  145. package/dist/lib/auth.js +40 -0
  146. package/dist/lib/auth.js.map +1 -0
  147. package/dist/lib/config.d.ts +28 -0
  148. package/dist/lib/config.d.ts.map +1 -0
  149. package/dist/lib/config.js +77 -0
  150. package/dist/lib/config.js.map +1 -0
  151. package/dist/lib/errors.d.ts +13 -0
  152. package/dist/lib/errors.d.ts.map +1 -0
  153. package/dist/lib/errors.js +31 -0
  154. package/dist/lib/errors.js.map +1 -0
  155. package/dist/lib/globalOpts.d.ts +23 -0
  156. package/dist/lib/globalOpts.d.ts.map +1 -0
  157. package/dist/lib/globalOpts.js +40 -0
  158. package/dist/lib/globalOpts.js.map +1 -0
  159. package/dist/lib/helpEpilog.d.ts +18 -0
  160. package/dist/lib/helpEpilog.d.ts.map +1 -0
  161. package/dist/lib/helpEpilog.js +56 -0
  162. package/dist/lib/helpEpilog.js.map +1 -0
  163. package/dist/lib/httpClient.d.ts +50 -0
  164. package/dist/lib/httpClient.d.ts.map +1 -0
  165. package/dist/lib/httpClient.js +196 -0
  166. package/dist/lib/httpClient.js.map +1 -0
  167. package/dist/lib/output.d.ts +38 -0
  168. package/dist/lib/output.d.ts.map +1 -0
  169. package/dist/lib/output.js +131 -0
  170. package/dist/lib/output.js.map +1 -0
  171. package/dist/max/browserLogin.d.ts +15 -0
  172. package/dist/max/browserLogin.d.ts.map +1 -0
  173. package/dist/max/browserLogin.js +164 -0
  174. package/dist/max/browserLogin.js.map +1 -0
  175. package/dist/max/commands/auth/login.d.ts +3 -0
  176. package/dist/max/commands/auth/login.d.ts.map +1 -0
  177. package/dist/max/commands/auth/login.js +58 -0
  178. package/dist/max/commands/auth/login.js.map +1 -0
  179. package/dist/max/commands/auth/logout.d.ts +3 -0
  180. package/dist/max/commands/auth/logout.d.ts.map +1 -0
  181. package/dist/max/commands/auth/logout.js +23 -0
  182. package/dist/max/commands/auth/logout.js.map +1 -0
  183. package/dist/max/commands/auth/whoami.d.ts +3 -0
  184. package/dist/max/commands/auth/whoami.d.ts.map +1 -0
  185. package/dist/max/commands/auth/whoami.js +46 -0
  186. package/dist/max/commands/auth/whoami.js.map +1 -0
  187. package/dist/max/commands/chat/repl.d.ts +3 -0
  188. package/dist/max/commands/chat/repl.d.ts.map +1 -0
  189. package/dist/max/commands/chat/repl.js +104 -0
  190. package/dist/max/commands/chat/repl.js.map +1 -0
  191. package/dist/max/commands/chat/send.d.ts +25 -0
  192. package/dist/max/commands/chat/send.d.ts.map +1 -0
  193. package/dist/max/commands/chat/send.js +163 -0
  194. package/dist/max/commands/chat/send.js.map +1 -0
  195. package/dist/max/commands/conversations/abort.d.ts +3 -0
  196. package/dist/max/commands/conversations/abort.d.ts.map +1 -0
  197. package/dist/max/commands/conversations/abort.js +55 -0
  198. package/dist/max/commands/conversations/abort.js.map +1 -0
  199. package/dist/max/commands/conversations/get.d.ts +3 -0
  200. package/dist/max/commands/conversations/get.d.ts.map +1 -0
  201. package/dist/max/commands/conversations/get.js +42 -0
  202. package/dist/max/commands/conversations/get.js.map +1 -0
  203. package/dist/max/commands/conversations/index.d.ts +3 -0
  204. package/dist/max/commands/conversations/index.d.ts.map +1 -0
  205. package/dist/max/commands/conversations/index.js +16 -0
  206. package/dist/max/commands/conversations/index.js.map +1 -0
  207. package/dist/max/commands/conversations/list.d.ts +3 -0
  208. package/dist/max/commands/conversations/list.d.ts.map +1 -0
  209. package/dist/max/commands/conversations/list.js +35 -0
  210. package/dist/max/commands/conversations/list.js.map +1 -0
  211. package/dist/max/commands/conversations/update.d.ts +3 -0
  212. package/dist/max/commands/conversations/update.d.ts.map +1 -0
  213. package/dist/max/commands/conversations/update.js +53 -0
  214. package/dist/max/commands/conversations/update.js.map +1 -0
  215. package/dist/max/jwtDecode.d.ts +5 -0
  216. package/dist/max/jwtDecode.d.ts.map +1 -0
  217. package/dist/max/jwtDecode.js +19 -0
  218. package/dist/max/jwtDecode.js.map +1 -0
  219. package/dist/max/lib/auth.d.ts +20 -0
  220. package/dist/max/lib/auth.d.ts.map +1 -0
  221. package/dist/max/lib/auth.js +53 -0
  222. package/dist/max/lib/auth.js.map +1 -0
  223. package/dist/max/lib/httpClient.d.ts +25 -0
  224. package/dist/max/lib/httpClient.d.ts.map +1 -0
  225. package/dist/max/lib/httpClient.js +138 -0
  226. package/dist/max/lib/httpClient.js.map +1 -0
  227. package/dist/max/lib/maxResponse.d.ts +30 -0
  228. package/dist/max/lib/maxResponse.d.ts.map +1 -0
  229. package/dist/max/lib/maxResponse.js +132 -0
  230. package/dist/max/lib/maxResponse.js.map +1 -0
  231. package/dist/max/lib/publicApiPaths.d.ts +12 -0
  232. package/dist/max/lib/publicApiPaths.d.ts.map +1 -0
  233. package/dist/max/lib/publicApiPaths.js +15 -0
  234. package/dist/max/lib/publicApiPaths.js.map +1 -0
  235. package/dist/max/maxConfig.d.ts +31 -0
  236. package/dist/max/maxConfig.d.ts.map +1 -0
  237. package/dist/max/maxConfig.js +50 -0
  238. package/dist/max/maxConfig.js.map +1 -0
  239. package/dist/max/ui/banner.d.ts +3 -0
  240. package/dist/max/ui/banner.d.ts.map +1 -0
  241. package/dist/max/ui/banner.js +96 -0
  242. package/dist/max/ui/banner.js.map +1 -0
  243. package/dist/max.d.ts +3 -0
  244. package/dist/max.d.ts.map +1 -0
  245. package/dist/max.js +94 -0
  246. package/dist/max.js.map +1 -0
  247. package/dist/scripts/postinstall.d.ts +8 -0
  248. package/dist/scripts/postinstall.d.ts.map +1 -0
  249. package/dist/scripts/postinstall.js +149 -0
  250. package/dist/scripts/postinstall.js.map +1 -0
  251. package/dist/skills/aggregations/SKILL.md +122 -0
  252. package/dist/skills/auth-and-profiles/SKILL.md +102 -0
  253. package/dist/skills/crm-setup/SKILL.md +385 -0
  254. package/dist/skills/crud-operations/SKILL.md +287 -0
  255. package/dist/skills/export-and-delete/SKILL.md +96 -0
  256. package/dist/skills/files/SKILL.md +70 -0
  257. package/dist/skills/filter-and-query/SKILL.md +199 -0
  258. package/dist/skills/frontline-agents/SKILL.md +99 -0
  259. package/dist/skills/frontline-api/SKILL.md +59 -0
  260. package/dist/skills/frontline-billing/SKILL.md +42 -0
  261. package/dist/skills/frontline-workflows/SKILL.md +72 -0
  262. package/dist/skills/max-auth/SKILL.md +76 -0
  263. package/dist/skills/max-chat/SKILL.md +111 -0
  264. package/dist/skills/notes-and-tasks/SKILL.md +128 -0
  265. package/dist/skills/pipeline-setup/SKILL.md +233 -0
  266. package/dist/skills/record-type-management/SKILL.md +104 -0
  267. package/dist/skills/relations/SKILL.md +153 -0
  268. package/dist/skills/resource-creation/SKILL.md +86 -0
  269. package/dist/skills/schema-design/SKILL.md +263 -0
  270. package/package.json +47 -0
@@ -0,0 +1,78 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tableAggregationCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const globalOpts_1 = require("../../lib/globalOpts");
6
+ const output_1 = require("../../lib/output");
7
+ const listCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("list")
8
+ .description("List aggregations for a view")
9
+ .argument("<table>", "Table name (slug)")
10
+ .argument("<view-id>", "View ID (number)")).action(async (tableName, viewId, opts) => {
11
+ const client = (0, globalOpts_1.requireClient)(opts);
12
+ const result = await client.get(`tables/${encodeURIComponent(tableName)}/views/${viewId}/aggregations`);
13
+ (0, output_1.success)(result);
14
+ });
15
+ const createCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("create")
16
+ .description("Create an aggregation on a view")
17
+ .argument("<table>", "Table name (slug)")
18
+ .argument("<view-id>", "View ID (number)")
19
+ .option("--data <json>", "Aggregation definition (JSON: {columnId, operation, tagId?})")
20
+ .addHelpText("after", `
21
+ Operations: COUNT_EMPTY, COUNT_FILLED, PERCENT_EMPTY, PERCENT_FILLED, SUM, AVERAGE, MIN, MAX`)).action(async (tableName, viewId, opts) => {
22
+ const client = (0, globalOpts_1.requireClient)(opts);
23
+ if (!opts.data) {
24
+ (0, output_1.error)("missing_data", "--data is required", output_1.EXIT_CODES.BAD_INPUT);
25
+ }
26
+ const body = JSON.parse(opts.data);
27
+ const result = await client.post(`tables/${encodeURIComponent(tableName)}/views/${viewId}/aggregations`, body);
28
+ (0, output_1.success)(result);
29
+ });
30
+ const updateCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("update")
31
+ .description("Update an aggregation's operation")
32
+ .argument("<table>", "Table name (slug)")
33
+ .argument("<view-id>", "View ID (number)")
34
+ .argument("<agg-id>", "Aggregation ID (number)")
35
+ .option("--data <json>", "Update payload (JSON: {operation})")).action(async (tableName, viewId, aggId, opts) => {
36
+ const client = (0, globalOpts_1.requireClient)(opts);
37
+ if (!opts.data) {
38
+ (0, output_1.error)("missing_data", "--data is required", output_1.EXIT_CODES.BAD_INPUT);
39
+ }
40
+ const body = JSON.parse(opts.data);
41
+ const result = await client.patch(`tables/${encodeURIComponent(tableName)}/views/${viewId}/aggregations/${aggId}`, body);
42
+ (0, output_1.success)(result);
43
+ });
44
+ const deleteCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("delete")
45
+ .description("Delete an aggregation")
46
+ .argument("<table>", "Table name (slug)")
47
+ .argument("<view-id>", "View ID (number)")
48
+ .argument("<agg-id>", "Aggregation ID (number)")).action(async (tableName, viewId, aggId, opts) => {
49
+ const client = (0, globalOpts_1.requireClient)(opts);
50
+ const result = await client.delete(`tables/${encodeURIComponent(tableName)}/views/${viewId}/aggregations/${aggId}`);
51
+ (0, output_1.success)(result);
52
+ });
53
+ const computeCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("compute")
54
+ .description("Compute aggregation values for a view")
55
+ .argument("<table>", "Table name (slug)")
56
+ .argument("<view-id>", "View ID (number)")
57
+ .option("--query <json>", "Filter query (JSON)")
58
+ .option("--search <term>", "Full-text search")
59
+ .option("--column-id <id>", "Specific column ID to compute")).action(async (tableName, viewId, opts) => {
60
+ const client = (0, globalOpts_1.requireClient)(opts);
61
+ const body = {};
62
+ if (opts.query)
63
+ body.query = JSON.parse(opts.query);
64
+ if (opts.search)
65
+ body.search = opts.search;
66
+ if (opts.columnId)
67
+ body.columnId = parseInt(opts.columnId, 10);
68
+ const result = await client.post(`tables/${encodeURIComponent(tableName)}/views/${viewId}/aggregations/compute`, body);
69
+ (0, output_1.success)(result);
70
+ });
71
+ exports.tableAggregationCommand = new commander_1.Command("aggregation")
72
+ .description("Manage view aggregations")
73
+ .addCommand(listCmd)
74
+ .addCommand(createCmd)
75
+ .addCommand(updateCmd)
76
+ .addCommand(deleteCmd)
77
+ .addCommand(computeCmd);
78
+ //# sourceMappingURL=aggregation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"aggregation.js","sourceRoot":"","sources":["../../../src/commands/table/aggregation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const tableExportCommand: Command;
3
+ //# sourceMappingURL=export.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.d.ts","sourceRoot":"","sources":["../../../src/commands/table/export.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAqFpC,eAAO,MAAM,kBAAkB,SAGR,CAAC"}
@@ -0,0 +1,97 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.tableExportCommand = void 0;
37
+ const commander_1 = require("commander");
38
+ const fs = __importStar(require("fs"));
39
+ const globalOpts_1 = require("../../lib/globalOpts");
40
+ const output_1 = require("../../lib/output");
41
+ const xlsxCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("xlsx")
42
+ .description("Export table as XLSX spreadsheet")
43
+ .argument("<name>", "Table name (slug)")
44
+ .option("--query <json>", "Filter query (JSON)")
45
+ .option("--search <term>", "Full-text search filter")
46
+ .option("--sort <json>", "Sort config (JSON)")
47
+ .option("--output <path>", "Output file path")
48
+ .addHelpText("after", `
49
+ Examples:
50
+ $ frontline table export xlsx sales_pipeline
51
+
52
+ Output: Downloads XLSX file.`)).action(async (name, opts) => {
53
+ const client = (0, globalOpts_1.requireClient)(opts);
54
+ const body = {};
55
+ if (opts.query)
56
+ body.query = JSON.parse(opts.query);
57
+ if (opts.search)
58
+ body.search = opts.search;
59
+ if (opts.sort)
60
+ body.sort = JSON.parse(opts.sort);
61
+ const outputPath = opts.output || `./${name}_export.xlsx`;
62
+ const response = await client.postRaw(`tables/${encodeURIComponent(name)}/export/xlsx`, body);
63
+ const buffer = Buffer.from(await response.arrayBuffer());
64
+ fs.writeFileSync(outputPath, buffer);
65
+ (0, output_1.success)({ exported: true, file: outputPath, size_bytes: buffer.length });
66
+ });
67
+ const csvCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("csv")
68
+ .description("Export table as CSV")
69
+ .argument("<name>", "Table name (slug)")
70
+ .option("--query <json>", "Filter query (JSON)")
71
+ .option("--search <term>", "Full-text search filter")
72
+ .option("--sort <json>", "Sort config (JSON)")
73
+ .option("--output <path>", "Output file path")
74
+ .addHelpText("after", `
75
+ Examples:
76
+ $ frontline table export csv sales_pipeline
77
+
78
+ Output: Downloads CSV file.`)).action(async (name, opts) => {
79
+ const client = (0, globalOpts_1.requireClient)(opts);
80
+ const body = {};
81
+ if (opts.query)
82
+ body.query = JSON.parse(opts.query);
83
+ if (opts.search)
84
+ body.search = opts.search;
85
+ if (opts.sort)
86
+ body.sort = JSON.parse(opts.sort);
87
+ const outputPath = opts.output || `./${name}_export.csv`;
88
+ const response = await client.postRaw(`tables/${encodeURIComponent(name)}/export/csv`, body);
89
+ const buffer = Buffer.from(await response.arrayBuffer());
90
+ fs.writeFileSync(outputPath, buffer);
91
+ (0, output_1.success)({ exported: true, file: outputPath, size_bytes: buffer.length });
92
+ });
93
+ exports.tableExportCommand = new commander_1.Command("export")
94
+ .description("Export table data")
95
+ .addCommand(xlsxCmd)
96
+ .addCommand(csvCmd);
97
+ //# sourceMappingURL=export.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"export.js","sourceRoot":"","sources":["../../../src/commands/table/export.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const tableFieldCommand: Command;
3
+ //# sourceMappingURL=field.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.d.ts","sourceRoot":"","sources":["../../../src/commands/table/field.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAmGpC,eAAO,MAAM,iBAAiB,SAKJ,CAAC"}
@@ -0,0 +1,76 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tableFieldCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const globalOpts_1 = require("../../lib/globalOpts");
6
+ const output_1 = require("../../lib/output");
7
+ const listCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("list")
8
+ .description("List all fields for a table (excludes system fields)")
9
+ .argument("<table>", "Table name (slug)")
10
+ .addHelpText("after", `
11
+ Examples:
12
+ $ frontline table field list sales_pipeline
13
+
14
+ Output: Array of fields with id, name, type, options (for select fields), format, mode.`)).action(async (tableName, opts) => {
15
+ const client = (0, globalOpts_1.requireClient)(opts);
16
+ const result = await client.get(`tables/${encodeURIComponent(tableName)}/fields`);
17
+ (0, output_1.success)(result);
18
+ });
19
+ const createCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("create")
20
+ .description("Create a new field on a table")
21
+ .argument("<table>", "Table name (slug)")
22
+ .option("--data <json>", "Field definition (JSON)")
23
+ .addHelpText("after", `
24
+ Examples:
25
+ $ frontline table field create my_table --data '{"name":"Priority","type":"select","metadata":{"mode":"singleSelect"}}'
26
+
27
+ Output: Created field object.`)).action(async (tableName, opts) => {
28
+ const client = (0, globalOpts_1.requireClient)(opts);
29
+ if (!opts.data) {
30
+ (0, output_1.error)("missing_data", "--data is required", output_1.EXIT_CODES.BAD_INPUT);
31
+ }
32
+ const body = JSON.parse(opts.data);
33
+ const result = await client.post(`tables/${encodeURIComponent(tableName)}/fields`, body);
34
+ (0, output_1.success)(result);
35
+ });
36
+ const updateCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("update")
37
+ .description("Update a field")
38
+ .argument("<table>", "Table name (slug)")
39
+ .argument("<field-id>", "Field ID (number)")
40
+ .option("--data <json>", "Updated field data (JSON)")
41
+ .addHelpText("after", `
42
+ Examples:
43
+ $ frontline table field update my_table 42 --data '{"name":"New Name"}'
44
+ $ frontline table field update my_table 42 --data '{"required":true,"unique":true}'
45
+
46
+ Supported keys: name, metadata, required, unique, tags, defaultValue.
47
+
48
+ Output: Updated field object.`)).action(async (tableName, fieldId, opts) => {
49
+ const client = (0, globalOpts_1.requireClient)(opts);
50
+ if (!opts.data) {
51
+ (0, output_1.error)("missing_data", "--data is required", output_1.EXIT_CODES.BAD_INPUT);
52
+ }
53
+ const body = JSON.parse(opts.data);
54
+ const result = await client.patch(`tables/${encodeURIComponent(tableName)}/fields/${fieldId}`, body);
55
+ (0, output_1.success)(result);
56
+ });
57
+ const deleteCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("delete")
58
+ .description("Delete a field from a table")
59
+ .argument("<table>", "Table name (slug)")
60
+ .argument("<field-id>", "Field ID (number)")
61
+ .addHelpText("after", `
62
+ Examples:
63
+ $ frontline table field delete my_table 42
64
+
65
+ Output: { deleted: true, field_id: 42 }`)).action(async (tableName, fieldId, opts) => {
66
+ const client = (0, globalOpts_1.requireClient)(opts);
67
+ const result = await client.delete(`tables/${encodeURIComponent(tableName)}/fields/${fieldId}`);
68
+ (0, output_1.success)(result);
69
+ });
70
+ exports.tableFieldCommand = new commander_1.Command("field")
71
+ .description("Manage fields (columns) on a table")
72
+ .addCommand(listCmd)
73
+ .addCommand(createCmd)
74
+ .addCommand(updateCmd)
75
+ .addCommand(deleteCmd);
76
+ //# sourceMappingURL=field.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"field.js","sourceRoot":"","sources":["../../../src/commands/table/field.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const tableFileCommand: Command;
3
+ //# sourceMappingURL=file.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.d.ts","sourceRoot":"","sources":["../../../src/commands/table/file.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA8FpC,eAAO,MAAM,gBAAgB,SAMH,CAAC"}
@@ -0,0 +1,106 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.tableFileCommand = void 0;
37
+ const commander_1 = require("commander");
38
+ const fs = __importStar(require("fs"));
39
+ const path = __importStar(require("path"));
40
+ const globalOpts_1 = require("../../lib/globalOpts");
41
+ const output_1 = require("../../lib/output");
42
+ const listCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("list")
43
+ .description("List files for a row")
44
+ .argument("<table>", "Table name (slug)")
45
+ .argument("<row-id>", "Row ID")).action(async (tableName, rowId, opts) => {
46
+ const client = (0, globalOpts_1.requireClient)(opts);
47
+ const result = await client.get(`tables/${encodeURIComponent(tableName)}/rows/${encodeURIComponent(rowId)}/files`);
48
+ (0, output_1.success)(result);
49
+ });
50
+ const getCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("get")
51
+ .description("Get file metadata by ID")
52
+ .argument("<table>", "Table name (slug)")
53
+ .argument("<file-id>", "File ID (number)")).action(async (tableName, fileId, opts) => {
54
+ const client = (0, globalOpts_1.requireClient)(opts);
55
+ const result = await client.get(`tables/${encodeURIComponent(tableName)}/files/${fileId}`);
56
+ (0, output_1.success)(result);
57
+ });
58
+ const downloadCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("download")
59
+ .description("Download a file by ID")
60
+ .argument("<table>", "Table name (slug)")
61
+ .argument("<file-id>", "File ID (number)")
62
+ .option("--output <path>", "Output file path")).action(async (tableName, fileId, opts) => {
63
+ const client = (0, globalOpts_1.requireClient)(opts);
64
+ const response = await client.getRaw(`tables/${encodeURIComponent(tableName)}/files/${fileId}/download`);
65
+ const contentDisposition = response.headers.get("content-disposition") || "";
66
+ const filenameMatch = contentDisposition.match(/filename="?(.+?)"?$/);
67
+ const defaultName = filenameMatch ? filenameMatch[1] : `file_${fileId}`;
68
+ const outputPath = opts.output || `./${defaultName}`;
69
+ const buffer = Buffer.from(await response.arrayBuffer());
70
+ fs.writeFileSync(outputPath, buffer);
71
+ (0, output_1.success)({ downloaded: true, file: outputPath, size_bytes: buffer.length });
72
+ });
73
+ const uploadCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("upload")
74
+ .description("Upload a file for a row")
75
+ .argument("<table>", "Table name (slug)")
76
+ .argument("<row-id>", "Row ID")
77
+ .argument("<file-path>", "Path to local file")).action(async (tableName, rowId, filePath, opts) => {
78
+ const client = (0, globalOpts_1.requireClient)(opts);
79
+ if (!fs.existsSync(filePath)) {
80
+ (0, output_1.error)("file_not_found", `File not found: ${filePath}`, output_1.EXIT_CODES.BAD_INPUT);
81
+ }
82
+ const formData = new FormData();
83
+ const fileContent = fs.readFileSync(filePath);
84
+ const fileName = path.basename(filePath);
85
+ // Native FormData in Node 18+ takes a Blob/File or string
86
+ const blob = new Blob([fileContent]);
87
+ formData.append("files", blob, fileName);
88
+ const result = await client.postMultipart(`tables/${encodeURIComponent(tableName)}/rows/${encodeURIComponent(rowId)}/files`, formData);
89
+ (0, output_1.success)(result);
90
+ });
91
+ const deleteCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("delete")
92
+ .description("Delete a file")
93
+ .argument("<table>", "Table name (slug)")
94
+ .argument("<file-id>", "File ID (number)")).action(async (tableName, fileId, opts) => {
95
+ const client = (0, globalOpts_1.requireClient)(opts);
96
+ const result = await client.delete(`tables/${encodeURIComponent(tableName)}/files/${fileId}`);
97
+ (0, output_1.success)(result);
98
+ });
99
+ exports.tableFileCommand = new commander_1.Command("file")
100
+ .description("Manage files attached to table rows")
101
+ .addCommand(listCmd)
102
+ .addCommand(getCmd)
103
+ .addCommand(downloadCmd)
104
+ .addCommand(uploadCmd)
105
+ .addCommand(deleteCmd);
106
+ //# sourceMappingURL=file.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"file.js","sourceRoot":"","sources":["../../../src/commands/table/file.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,yCAAoC;AACpC,uCAAyB;AACzB,2CAA6B;AAC7B,qDAA0E;AAC1E,6CAA8D;AAE9D,MAAM,OAAO,GAAG,IAAA,uBAAU,EACtB,IAAI,mBAAO,CAAC,MAAM,CAAC;KACd,WAAW,CAAC,sBAAsB,CAAC;KACnC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;KACxC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC,CACtC,CAAC,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,KAAa,EAAE,IAAa,EAAE,EAAE;IAC/D,MAAM,MAAM,GAAG,IAAA,0BAAa,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAC3B,UAAU,kBAAkB,CAAC,SAAS,CAAC,SAAS,kBAAkB,CAAC,KAAK,CAAC,QAAQ,CACpF,CAAC;IACF,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,MAAM,MAAM,GAAG,IAAA,uBAAU,EACrB,IAAI,mBAAO,CAAC,KAAK,CAAC;KACb,WAAW,CAAC,yBAAyB,CAAC;KACtC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;KACxC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC,CACjD,CAAC,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,MAAc,EAAE,IAAa,EAAE,EAAE;IAChE,MAAM,MAAM,GAAG,IAAA,0BAAa,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,GAAG,CAC3B,UAAU,kBAAkB,CAAC,SAAS,CAAC,UAAU,MAAM,EAAE,CAC5D,CAAC;IACF,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,MAAM,WAAW,GAAG,IAAA,uBAAU,EAC1B,IAAI,mBAAO,CAAC,UAAU,CAAC;KAClB,WAAW,CAAC,uBAAuB,CAAC;KACpC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;KACxC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC;KACzC,MAAM,CAAC,iBAAiB,EAAE,kBAAkB,CAAC,CACrD,CAAC,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,MAAc,EAAE,IAAmC,EAAE,EAAE;IACtF,MAAM,MAAM,GAAG,IAAA,0BAAa,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,MAAM,CAChC,UAAU,kBAAkB,CAAC,SAAS,CAAC,UAAU,MAAM,WAAW,CACrE,CAAC;IACF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;IAC7E,MAAM,aAAa,GAAG,kBAAkB,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACtE,MAAM,WAAW,GAAG,aAAa,CAAC,CAAC,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,QAAQ,MAAM,EAAE,CAAC;IACxE,MAAM,UAAU,GAAG,IAAI,CAAC,MAAM,IAAI,KAAK,WAAW,EAAE,CAAC;IAErD,MAAM,MAAM,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC,CAAC;IACzD,EAAE,CAAC,aAAa,CAAC,UAAU,EAAE,MAAM,CAAC,CAAC;IACrC,IAAA,gBAAO,EAAC,EAAE,UAAU,EAAE,IAAI,EAAE,IAAI,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,CAAC,CAAC;AAC/E,CAAC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,IAAA,uBAAU,EACxB,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAChB,WAAW,CAAC,yBAAyB,CAAC;KACtC,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;KACxC,QAAQ,CAAC,UAAU,EAAE,QAAQ,CAAC;KAC9B,QAAQ,CAAC,aAAa,EAAE,oBAAoB,CAAC,CACrD,CAAC,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,KAAa,EAAE,QAAgB,EAAE,IAAa,EAAE,EAAE;IACjF,MAAM,MAAM,GAAG,IAAA,0BAAa,EAAC,IAAI,CAAC,CAAC;IAEnC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,QAAQ,CAAC,EAAE,CAAC;QAC3B,IAAA,cAAK,EAAC,gBAAgB,EAAE,mBAAmB,QAAQ,EAAE,EAAE,mBAAU,CAAC,SAAS,CAAC,CAAC;IACjF,CAAC;IAED,MAAM,QAAQ,GAAG,IAAI,QAAQ,EAAE,CAAC;IAChC,MAAM,WAAW,GAAG,EAAE,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;IAC9C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,CAAC;IAEzC,0DAA0D;IAC1D,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC;IACrC,QAAQ,CAAC,MAAM,CAAC,OAAO,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;IAEzC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,aAAa,CACrC,UAAU,kBAAkB,CAAC,SAAS,CAAC,SAAS,kBAAkB,CAAC,KAAK,CAAC,QAAQ,EACjF,QAAQ,CACX,CAAC;IACF,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEH,MAAM,SAAS,GAAG,IAAA,uBAAU,EACxB,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAChB,WAAW,CAAC,eAAe,CAAC;KAC5B,QAAQ,CAAC,SAAS,EAAE,mBAAmB,CAAC;KACxC,QAAQ,CAAC,WAAW,EAAE,kBAAkB,CAAC,CACjD,CAAC,MAAM,CAAC,KAAK,EAAE,SAAiB,EAAE,MAAc,EAAE,IAAa,EAAE,EAAE;IAChE,MAAM,MAAM,GAAG,IAAA,0BAAa,EAAC,IAAI,CAAC,CAAC;IACnC,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,MAAM,CAC9B,UAAU,kBAAkB,CAAC,SAAS,CAAC,UAAU,MAAM,EAAE,CAC5D,CAAC;IACF,IAAA,gBAAO,EAAC,MAAM,CAAC,CAAC;AACpB,CAAC,CAAC,CAAC;AAEU,QAAA,gBAAgB,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;KAC9C,WAAW,CAAC,qCAAqC,CAAC;KAClD,UAAU,CAAC,OAAO,CAAC;KACnB,UAAU,CAAC,MAAM,CAAC;KAClB,UAAU,CAAC,WAAW,CAAC;KACvB,UAAU,CAAC,SAAS,CAAC;KACrB,UAAU,CAAC,SAAS,CAAC,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const tableCommand: Command;
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/commands/table/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA2KpC,eAAO,MAAM,YAAY,SAiBe,CAAC"}
@@ -0,0 +1,142 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.tableCommand = void 0;
4
+ const commander_1 = require("commander");
5
+ const globalOpts_1 = require("../../lib/globalOpts");
6
+ const output_1 = require("../../lib/output");
7
+ const field_1 = require("./field");
8
+ const option_1 = require("./option");
9
+ const row_1 = require("./row");
10
+ const relation_1 = require("./relation");
11
+ const export_1 = require("./export");
12
+ const note_1 = require("./note");
13
+ const task_1 = require("./task");
14
+ const file_1 = require("./file");
15
+ const aggregation_1 = require("./aggregation");
16
+ const listCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("list").description("List all data tables in the account").addHelpText("after", `
17
+ Examples:
18
+ $ frontline table list
19
+
20
+ Output: JSON array of tables with id, name, display_name, type, field_count.`)).action(async (opts) => {
21
+ const client = (0, globalOpts_1.requireClient)(opts);
22
+ const result = await client.get("tables");
23
+ (0, output_1.success)(result);
24
+ });
25
+ const createCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("create")
26
+ .description("Create a new data table")
27
+ .argument("<name>", "Table name (slug, e.g. embarques)")
28
+ .option("-d, --data <json>", "JSON body with columns and optional displayName, emoji")
29
+ .addHelpText("after", `
30
+ Examples:
31
+ $ frontline table create embarques --data '{"displayName":"Embarques","columns":[{"name":"Nombre","type":"string","metadata":{"format":"text"}}]}'
32
+
33
+ The --data payload must include a "columns" array. The table name is set from the argument.
34
+ Supported column types: string, number, date, dateOnly, boolean, select, relation, file.`)).action(async (name, opts) => {
35
+ const client = (0, globalOpts_1.requireClient)(opts);
36
+ let body = {};
37
+ if (opts.data) {
38
+ try {
39
+ body = JSON.parse(opts.data);
40
+ }
41
+ catch {
42
+ (0, output_1.error)("invalid_json", "Failed to parse --data as JSON", output_1.EXIT_CODES.BAD_INPUT);
43
+ }
44
+ }
45
+ body.name = name;
46
+ if (!body.columns || !Array.isArray(body.columns) || body.columns.length === 0) {
47
+ (0, output_1.error)("missing_columns", "At least one column is required in --data", output_1.EXIT_CODES.BAD_INPUT, {
48
+ suggestion: 'Provide --data \'{"columns":[{"name":"Name","type":"string","metadata":{"format":"text"}}]}\'',
49
+ });
50
+ }
51
+ const result = await client.post("tables", body);
52
+ (0, output_1.success)(result);
53
+ });
54
+ const getCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("get")
55
+ .description("Get detailed info about a table (fields, views)")
56
+ .argument("<name>", "Table name (slug)")
57
+ .addHelpText("after", `
58
+ Examples:
59
+ $ frontline table get sales_pipeline
60
+
61
+ Output: Table with id, name, display_name, fields, views.`)).action(async (name, opts) => {
62
+ const client = (0, globalOpts_1.requireClient)(opts);
63
+ const result = await client.get(`tables/${encodeURIComponent(name)}`);
64
+ (0, output_1.success)(result);
65
+ });
66
+ const schemaCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("schema")
67
+ .description("Get the schema definition for a table")
68
+ .argument("<name>", "Table name (slug)")
69
+ .addHelpText("after", `
70
+ Examples:
71
+ $ frontline table schema sales_pipeline
72
+
73
+ Output: Schema with name, type, extensible, fields, deduplication_fields, title_field.`)).action(async (name, opts) => {
74
+ const client = (0, globalOpts_1.requireClient)(opts);
75
+ const result = await client.get(`tables/${encodeURIComponent(name)}/schema`);
76
+ (0, output_1.success)(result);
77
+ });
78
+ const updateCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("update")
79
+ .description("Update a table (displayName, emoji, iconColor)")
80
+ .argument("<name>", "Table name (slug)")
81
+ .option("--data <json>", "Update payload (JSON)")
82
+ .addHelpText("after", `
83
+ Examples:
84
+ $ frontline table update my_table --data '{"displayName":"My updated table"}'
85
+
86
+ Output: Updated table.`)).action(async (name, opts) => {
87
+ const client = (0, globalOpts_1.requireClient)(opts);
88
+ if (!opts.data) {
89
+ (0, output_1.error)("missing_data", "--data is required", output_1.EXIT_CODES.BAD_INPUT);
90
+ }
91
+ const body = JSON.parse(opts.data);
92
+ const result = await client.patch(`tables/${encodeURIComponent(name)}`, body);
93
+ (0, output_1.success)(result);
94
+ });
95
+ const countCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("count")
96
+ .description("Count rows in a table, with optional query filter")
97
+ .argument("<name>", "Table name (slug)")
98
+ .option("--query <json>", "Filter query (JSON)")
99
+ .addHelpText("after", `
100
+ Examples:
101
+ $ frontline table count my_table
102
+ $ frontline table count my_table --query '{"path":"[Amount]","operator":"gte","value":10000}'
103
+
104
+ Output: { count: 42 }`)).action(async (name, opts) => {
105
+ const client = (0, globalOpts_1.requireClient)(opts);
106
+ const body = {};
107
+ if (opts.query)
108
+ body.query = JSON.parse(opts.query);
109
+ const result = await client.post(`tables/${encodeURIComponent(name)}/rows/count`, body);
110
+ (0, output_1.success)(result);
111
+ });
112
+ const deleteCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("delete")
113
+ .description("Delete an entire table (DESTRUCTIVE)")
114
+ .argument("<name>", "Table name (slug)")
115
+ .addHelpText("after", `
116
+ Examples:
117
+ $ frontline table delete my_table
118
+
119
+ Output: { deleted: true, name: "my_table" }`)).action(async (name, opts) => {
120
+ const client = (0, globalOpts_1.requireClient)(opts);
121
+ const result = await client.delete(`tables/${encodeURIComponent(name)}`);
122
+ (0, output_1.success)(result);
123
+ });
124
+ exports.tableCommand = new commander_1.Command("table")
125
+ .description("Manage data tables (spreadsheet-like, no record types)")
126
+ .addCommand(listCmd)
127
+ .addCommand(createCmd)
128
+ .addCommand(getCmd)
129
+ .addCommand(schemaCmd)
130
+ .addCommand(updateCmd)
131
+ .addCommand(countCmd)
132
+ .addCommand(deleteCmd)
133
+ .addCommand(field_1.tableFieldCommand)
134
+ .addCommand(option_1.tableOptionCommand)
135
+ .addCommand(row_1.tableRowCommand)
136
+ .addCommand(relation_1.tableRelationCommand)
137
+ .addCommand(export_1.tableExportCommand)
138
+ .addCommand(note_1.tableNoteCommand)
139
+ .addCommand(task_1.tableTaskCommand)
140
+ .addCommand(file_1.tableFileCommand)
141
+ .addCommand(aggregation_1.tableAggregationCommand);
142
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/commands/table/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { Command } from "commander";
2
+ export declare const tableNoteCommand: Command;
3
+ //# sourceMappingURL=note.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"note.d.ts","sourceRoot":"","sources":["../../../src/commands/table/note.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AA+EpC,eAAO,MAAM,gBAAgB,SAMH,CAAC"}