@getfrontline/cli 1.0.3 → 1.0.5

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 (145) hide show
  1. package/README.md +173 -7
  2. package/dist/commands/agents/builder.d.ts +10 -0
  3. package/dist/commands/agents/builder.d.ts.map +1 -0
  4. package/dist/commands/agents/builder.js +243 -0
  5. package/dist/commands/agents/builder.js.map +1 -0
  6. package/dist/commands/agents/flows.d.ts.map +1 -1
  7. package/dist/commands/agents/flows.js +253 -25
  8. package/dist/commands/agents/flows.js.map +1 -1
  9. package/dist/commands/agents/intents.d.ts +3 -0
  10. package/dist/commands/agents/intents.d.ts.map +1 -0
  11. package/dist/commands/agents/intents.js +137 -0
  12. package/dist/commands/agents/intents.js.map +1 -0
  13. package/dist/commands/agents/use.d.ts +3 -0
  14. package/dist/commands/agents/use.d.ts.map +1 -0
  15. package/dist/commands/agents/use.js +33 -0
  16. package/dist/commands/agents/use.js.map +1 -0
  17. package/dist/commands/agents/variables.d.ts +3 -0
  18. package/dist/commands/agents/variables.d.ts.map +1 -0
  19. package/dist/commands/agents/variables.js +111 -0
  20. package/dist/commands/agents/variables.js.map +1 -0
  21. package/dist/commands/aiModels/index.d.ts +3 -0
  22. package/dist/commands/aiModels/index.d.ts.map +1 -0
  23. package/dist/commands/aiModels/index.js +60 -0
  24. package/dist/commands/aiModels/index.js.map +1 -0
  25. package/dist/commands/incomingWebhooks/index.d.ts +3 -0
  26. package/dist/commands/incomingWebhooks/index.d.ts.map +1 -0
  27. package/dist/commands/incomingWebhooks/index.js +28 -0
  28. package/dist/commands/incomingWebhooks/index.js.map +1 -0
  29. package/dist/commands/object/activity.d.ts +3 -0
  30. package/dist/commands/object/activity.d.ts.map +1 -0
  31. package/dist/commands/object/{note.js → activity.js} +24 -19
  32. package/dist/commands/object/activity.js.map +1 -0
  33. package/dist/commands/object/export.js +3 -3
  34. package/dist/commands/object/field.js +5 -5
  35. package/dist/commands/object/index.js +10 -10
  36. package/dist/commands/object/index.js.map +1 -1
  37. package/dist/commands/object/option.js +4 -4
  38. package/dist/commands/object/record-type.js +4 -4
  39. package/dist/commands/object/record.js +8 -8
  40. package/dist/commands/object/relation.js +4 -4
  41. package/dist/commands/object/view.js +9 -9
  42. package/dist/commands/table/index.d.ts.map +1 -1
  43. package/dist/commands/table/index.js +0 -4
  44. package/dist/commands/table/index.js.map +1 -1
  45. package/dist/commands/tools/index.d.ts +3 -0
  46. package/dist/commands/tools/index.d.ts.map +1 -0
  47. package/dist/commands/tools/index.js +113 -0
  48. package/dist/commands/tools/index.js.map +1 -0
  49. package/dist/commands/util/uuid.d.ts +3 -0
  50. package/dist/commands/util/uuid.d.ts.map +1 -0
  51. package/dist/commands/util/uuid.js +15 -0
  52. package/dist/commands/util/uuid.js.map +1 -0
  53. package/dist/commands/workflows/analytics.d.ts.map +1 -1
  54. package/dist/commands/workflows/analytics.js +9 -3
  55. package/dist/commands/workflows/analytics.js.map +1 -1
  56. package/dist/commands/workflows/common.d.ts +39 -0
  57. package/dist/commands/workflows/common.d.ts.map +1 -0
  58. package/dist/commands/workflows/common.js +45 -0
  59. package/dist/commands/workflows/common.js.map +1 -0
  60. package/dist/commands/workflows/create.d.ts +3 -0
  61. package/dist/commands/workflows/create.d.ts.map +1 -0
  62. package/dist/commands/workflows/create.js +41 -0
  63. package/dist/commands/workflows/create.js.map +1 -0
  64. package/dist/commands/workflows/delete.d.ts +3 -0
  65. package/dist/commands/workflows/delete.d.ts.map +1 -0
  66. package/dist/commands/workflows/delete.js +20 -0
  67. package/dist/commands/workflows/delete.js.map +1 -0
  68. package/dist/commands/workflows/describe.d.ts +3 -0
  69. package/dist/commands/workflows/describe.d.ts.map +1 -0
  70. package/dist/commands/workflows/describe.js +40 -0
  71. package/dist/commands/workflows/describe.js.map +1 -0
  72. package/dist/commands/workflows/edges.d.ts +3 -0
  73. package/dist/commands/workflows/edges.d.ts.map +1 -0
  74. package/dist/commands/workflows/edges.js +50 -0
  75. package/dist/commands/workflows/edges.js.map +1 -0
  76. package/dist/commands/workflows/graph.d.ts +3 -0
  77. package/dist/commands/workflows/graph.d.ts.map +1 -0
  78. package/dist/commands/workflows/graph.js +47 -0
  79. package/dist/commands/workflows/graph.js.map +1 -0
  80. package/dist/commands/workflows/nodes.d.ts +3 -0
  81. package/dist/commands/workflows/nodes.d.ts.map +1 -0
  82. package/dist/commands/workflows/nodes.js +68 -0
  83. package/dist/commands/workflows/nodes.js.map +1 -0
  84. package/dist/commands/workflows/update.d.ts +3 -0
  85. package/dist/commands/workflows/update.d.ts.map +1 -0
  86. package/dist/commands/workflows/update.js +42 -0
  87. package/dist/commands/workflows/update.js.map +1 -0
  88. package/dist/commands/workflows/use.d.ts +3 -0
  89. package/dist/commands/workflows/use.d.ts.map +1 -0
  90. package/dist/commands/workflows/use.js +34 -0
  91. package/dist/commands/workflows/use.js.map +1 -0
  92. package/dist/commands/workflows/variables.d.ts +3 -0
  93. package/dist/commands/workflows/variables.d.ts.map +1 -0
  94. package/dist/commands/workflows/variables.js +105 -0
  95. package/dist/commands/workflows/variables.js.map +1 -0
  96. package/dist/index.js +50 -1
  97. package/dist/index.js.map +1 -1
  98. package/dist/lib/config.d.ts +9 -0
  99. package/dist/lib/config.d.ts.map +1 -1
  100. package/dist/lib/config.js +54 -0
  101. package/dist/lib/config.js.map +1 -1
  102. package/dist/lib/httpClient.d.ts +2 -1
  103. package/dist/lib/httpClient.d.ts.map +1 -1
  104. package/dist/lib/httpClient.js +5 -2
  105. package/dist/lib/httpClient.js.map +1 -1
  106. package/dist/max/ui/banner.js +15 -15
  107. package/dist/max.js +7 -1
  108. package/dist/max.js.map +1 -1
  109. package/dist/scripts/postinstall.d.ts.map +1 -1
  110. package/dist/scripts/postinstall.js +8 -0
  111. package/dist/scripts/postinstall.js.map +1 -1
  112. package/dist/skills/agent-builder/SKILL.md +88 -0
  113. package/dist/skills/aggregations/SKILL.md +7 -7
  114. package/dist/skills/ai-models/SKILL.md +43 -0
  115. package/dist/skills/auth-and-profiles/SKILL.md +1 -1
  116. package/dist/skills/crm-setup/SKILL.md +66 -48
  117. package/dist/skills/crud-operations/SKILL.md +2 -2
  118. package/dist/skills/export-and-delete/SKILL.md +5 -5
  119. package/dist/skills/files/SKILL.md +4 -4
  120. package/dist/skills/filter-and-query/SKILL.md +7 -7
  121. package/dist/skills/flow-builder/SKILL.md +124 -0
  122. package/dist/skills/frontline-agents/SKILL.md +152 -3
  123. package/dist/skills/frontline-internals/SKILL.md +7 -7
  124. package/dist/skills/frontline-workflows/SKILL.md +170 -3
  125. package/dist/skills/incoming-webhooks/SKILL.md +36 -0
  126. package/dist/skills/notes-and-tasks/SKILL.md +29 -29
  127. package/dist/skills/pipeline-setup/SKILL.md +13 -13
  128. package/dist/skills/relations/SKILL.md +15 -15
  129. package/dist/skills/resource-creation/SKILL.md +70 -1
  130. package/dist/skills/schema-design/SKILL.md +21 -14
  131. package/dist/skills/tools/SKILL.md +65 -0
  132. package/dist/skills/variables/SKILL.md +82 -0
  133. package/dist/skills/workflow-builder/SKILL.md +426 -0
  134. package/package.json +51 -51
  135. package/dist/commands/object/note.d.ts +0 -3
  136. package/dist/commands/object/note.d.ts.map +0 -1
  137. package/dist/commands/object/note.js.map +0 -1
  138. package/dist/commands/table/note.d.ts +0 -3
  139. package/dist/commands/table/note.d.ts.map +0 -1
  140. package/dist/commands/table/note.js +0 -62
  141. package/dist/commands/table/note.js.map +0 -1
  142. package/dist/commands/table/task.d.ts +0 -3
  143. package/dist/commands/table/task.d.ts.map +0 -1
  144. package/dist/commands/table/task.js +0 -88
  145. package/dist/commands/table/task.js.map +0 -1
@@ -1,88 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, "__esModule", { value: true });
3
- exports.tableTaskCommand = 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 tasks for a row")
9
- .argument("<table>", "Table name (slug)")
10
- .argument("<row-id>", "Row ID")).action(async (tableName, rowId, opts) => {
11
- const client = (0, globalOpts_1.requireClient)(opts);
12
- const result = await client.get(`tables/${encodeURIComponent(tableName)}/rows/${encodeURIComponent(rowId)}/tasks`);
13
- (0, output_1.success)(result);
14
- });
15
- const createCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("create")
16
- .description("Create a task on a row")
17
- .argument("<table>", "Table name (slug)")
18
- .argument("<row-id>", "Row ID")
19
- .option("--content <text>", "Task content (required)")
20
- .option("--due-date <date>", "Due date (ISO 8601)")
21
- .option("--assignees <ids>", "Comma-separated user IDs")).action(async (tableName, rowId, opts) => {
22
- const client = (0, globalOpts_1.requireClient)(opts);
23
- if (!opts.content) {
24
- (0, output_1.error)("missing_content", "--content is required", output_1.EXIT_CODES.BAD_INPUT);
25
- }
26
- const body = { content: opts.content };
27
- if (opts.dueDate)
28
- body.dueDate = opts.dueDate;
29
- if (opts.assignees)
30
- body.assigneeIds = opts.assignees.split(",").map(Number);
31
- const result = await client.post(`tables/${encodeURIComponent(tableName)}/rows/${encodeURIComponent(rowId)}/tasks`, body);
32
- (0, output_1.success)(result);
33
- });
34
- const getCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("get")
35
- .description("Get a specific task by ID")
36
- .argument("<table>", "Table name (slug)")
37
- .argument("<task-id>", "Task ID (number)")).action(async (tableName, taskId, opts) => {
38
- const client = (0, globalOpts_1.requireClient)(opts);
39
- const result = await client.get(`tables/${encodeURIComponent(tableName)}/tasks/${taskId}`);
40
- (0, output_1.success)(result);
41
- });
42
- const updateCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("update")
43
- .description("Update a task")
44
- .argument("<table>", "Table name (slug)")
45
- .argument("<task-id>", "Task ID (number)")
46
- .option("--data <json>", "Updated task data (JSON)")).action(async (tableName, taskId, opts) => {
47
- const client = (0, globalOpts_1.requireClient)(opts);
48
- if (!opts.data) {
49
- (0, output_1.error)("missing_data", "--data is required", output_1.EXIT_CODES.BAD_INPUT);
50
- }
51
- const body = JSON.parse(opts.data);
52
- const result = await client.patch(`tables/${encodeURIComponent(tableName)}/tasks/${taskId}`, body);
53
- (0, output_1.success)(result);
54
- });
55
- const completeCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("complete")
56
- .description("Mark a task as completed")
57
- .argument("<table>", "Table name (slug)")
58
- .argument("<task-id>", "Task ID (number)")).action(async (tableName, taskId, opts) => {
59
- const client = (0, globalOpts_1.requireClient)(opts);
60
- const result = await client.post(`tables/${encodeURIComponent(tableName)}/tasks/${taskId}/complete`);
61
- (0, output_1.success)(result);
62
- });
63
- const uncompleteCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("uncomplete")
64
- .description("Mark a task as uncompleted")
65
- .argument("<table>", "Table name (slug)")
66
- .argument("<task-id>", "Task ID (number)")).action(async (tableName, taskId, opts) => {
67
- const client = (0, globalOpts_1.requireClient)(opts);
68
- const result = await client.post(`tables/${encodeURIComponent(tableName)}/tasks/${taskId}/uncomplete`);
69
- (0, output_1.success)(result);
70
- });
71
- const deleteCmd = (0, globalOpts_1.globalOpts)(new commander_1.Command("delete")
72
- .description("Delete a task")
73
- .argument("<table>", "Table name (slug)")
74
- .argument("<task-id>", "Task ID (number)")).action(async (tableName, taskId, opts) => {
75
- const client = (0, globalOpts_1.requireClient)(opts);
76
- const result = await client.delete(`tables/${encodeURIComponent(tableName)}/tasks/${taskId}`);
77
- (0, output_1.success)(result);
78
- });
79
- exports.tableTaskCommand = new commander_1.Command("task")
80
- .description("Manage tasks on table rows")
81
- .addCommand(listCmd)
82
- .addCommand(createCmd)
83
- .addCommand(getCmd)
84
- .addCommand(updateCmd)
85
- .addCommand(completeCmd)
86
- .addCommand(uncompleteCmd)
87
- .addCommand(deleteCmd);
88
- //# sourceMappingURL=task.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"task.js","sourceRoot":"","sources":["../../../src/commands/table/task.ts"],"names":[],"mappings":"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"}