@formant/formant-cli 0.3.0 → 0.4.2

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 (183) hide show
  1. package/README.md +152 -124
  2. package/dist/commands/{commands → command}/for-device.js +2 -2
  3. package/dist/commands/command/for-device.js.map +1 -0
  4. package/dist/commands/{commands → command}/get.js +2 -2
  5. package/dist/commands/command/get.js.map +1 -0
  6. package/dist/commands/{commands → command}/history.js +3 -3
  7. package/dist/commands/command/history.js.map +1 -0
  8. package/dist/commands/{commands → command}/list.js +2 -2
  9. package/dist/commands/command/list.js.map +1 -0
  10. package/dist/commands/{commands → command}/send.js +5 -5
  11. package/dist/commands/command/send.js.map +1 -0
  12. package/dist/commands/{devices → device}/config.js +2 -2
  13. package/dist/commands/device/config.js.map +1 -0
  14. package/dist/commands/{devices → device}/create.js +3 -3
  15. package/dist/commands/device/create.js.map +1 -0
  16. package/dist/commands/{devices → device}/delete.js +2 -2
  17. package/dist/commands/device/delete.js.map +1 -0
  18. package/dist/commands/{devices → device}/get.js +2 -2
  19. package/dist/commands/device/get.js.map +1 -0
  20. package/dist/commands/{devices → device}/last-seen.js +2 -2
  21. package/dist/commands/device/last-seen.js.map +1 -0
  22. package/dist/commands/{devices → device}/list.js +5 -5
  23. package/dist/commands/device/list.js.map +1 -0
  24. package/dist/commands/{devices → device}/rename.js +2 -2
  25. package/dist/commands/device/rename.js.map +1 -0
  26. package/dist/commands/{devices → device}/streams.d.ts +3 -0
  27. package/dist/commands/device/streams.js +100 -0
  28. package/dist/commands/device/streams.js.map +1 -0
  29. package/dist/commands/{devices → device}/tag.js +3 -3
  30. package/dist/commands/device/tag.js.map +1 -0
  31. package/dist/commands/{devices → device}/untag.js +3 -3
  32. package/dist/commands/device/untag.js.map +1 -0
  33. package/dist/commands/{events → event}/get.js +2 -2
  34. package/dist/commands/event/get.js.map +1 -0
  35. package/dist/commands/{events → event}/list.js +4 -4
  36. package/dist/commands/event/list.js.map +1 -0
  37. package/dist/commands/{event-triggers → event-trigger}/get.js +2 -2
  38. package/dist/commands/event-trigger/get.js.map +1 -0
  39. package/dist/commands/{event-triggers → event-trigger}/list.js +2 -2
  40. package/dist/commands/event-trigger/list.js.map +1 -0
  41. package/dist/commands/{fleets → fleet}/get.js +2 -2
  42. package/dist/commands/fleet/get.js.map +1 -0
  43. package/dist/commands/{fleets → fleet}/list.js +2 -2
  44. package/dist/commands/fleet/list.js.map +1 -0
  45. package/dist/commands/{investigations → investigation}/analytics.js +3 -3
  46. package/dist/commands/investigation/analytics.js.map +1 -0
  47. package/dist/commands/{investigations → investigation}/get.js +2 -2
  48. package/dist/commands/investigation/get.js.map +1 -0
  49. package/dist/commands/{investigations → investigation}/list.js +3 -3
  50. package/dist/commands/investigation/list.js.map +1 -0
  51. package/dist/commands/{investigations → investigation}/run.js +3 -3
  52. package/dist/commands/investigation/run.js.map +1 -0
  53. package/dist/commands/{investigations → investigation}/runs-list.js +3 -3
  54. package/dist/commands/investigation/runs-list.js.map +1 -0
  55. package/dist/commands/{investigations → investigation}/runs.js +2 -2
  56. package/dist/commands/investigation/runs.js.map +1 -0
  57. package/dist/commands/{investigations → investigation}/stats.js +2 -2
  58. package/dist/commands/investigation/stats.js.map +1 -0
  59. package/dist/commands/{investigations → investigation}/trigger.js +2 -2
  60. package/dist/commands/investigation/trigger.js.map +1 -0
  61. package/dist/commands/persona/delegate-task.d.ts +14 -0
  62. package/dist/commands/persona/delegate-task.js +50 -0
  63. package/dist/commands/persona/delegate-task.js.map +1 -0
  64. package/dist/commands/persona/get.d.ts +10 -0
  65. package/dist/commands/persona/get.js +98 -0
  66. package/dist/commands/persona/get.js.map +1 -0
  67. package/dist/commands/{signals → persona}/list.d.ts +1 -1
  68. package/dist/commands/persona/list.js +31 -0
  69. package/dist/commands/persona/list.js.map +1 -0
  70. package/dist/commands/persona/task-status.d.ts +12 -0
  71. package/dist/commands/persona/task-status.js +57 -0
  72. package/dist/commands/persona/task-status.js.map +1 -0
  73. package/dist/commands/query/latest-values.d.ts +1 -0
  74. package/dist/commands/query/latest-values.js +41 -15
  75. package/dist/commands/query/latest-values.js.map +1 -1
  76. package/dist/commands/{schedules → schedule}/get.js +2 -2
  77. package/dist/commands/schedule/get.js.map +1 -0
  78. package/dist/commands/{schedules → schedule}/list.js +2 -2
  79. package/dist/commands/schedule/list.js.map +1 -0
  80. package/dist/commands/{signals → signal}/count.js +3 -3
  81. package/dist/commands/signal/count.js.map +1 -0
  82. package/dist/commands/signal/create.d.ts +16 -0
  83. package/dist/commands/signal/create.js +95 -0
  84. package/dist/commands/signal/create.js.map +1 -0
  85. package/dist/commands/{signals → signal}/get.js +3 -3
  86. package/dist/commands/signal/get.js.map +1 -0
  87. package/dist/commands/signal/list.d.ts +12 -0
  88. package/dist/commands/signal/list.js +85 -0
  89. package/dist/commands/signal/list.js.map +1 -0
  90. package/dist/commands/{signals → signal}/query.d.ts +1 -0
  91. package/dist/commands/signal/query.js +100 -0
  92. package/dist/commands/signal/query.js.map +1 -0
  93. package/dist/commands/signal/set-ground-truth.d.ts +12 -0
  94. package/dist/commands/signal/set-ground-truth.js +46 -0
  95. package/dist/commands/signal/set-ground-truth.js.map +1 -0
  96. package/dist/commands/{users → user}/get.js +2 -2
  97. package/dist/commands/user/get.js.map +1 -0
  98. package/dist/commands/{users → user}/list.js +2 -2
  99. package/dist/commands/user/list.js.map +1 -0
  100. package/dist/help.js +53 -47
  101. package/dist/help.js.map +1 -1
  102. package/dist/lib/api.d.ts +1 -1
  103. package/dist/lib/api.js +3 -0
  104. package/dist/lib/api.js.map +1 -1
  105. package/dist/lib/config.d.ts +1 -0
  106. package/dist/lib/config.js +3 -0
  107. package/dist/lib/config.js.map +1 -1
  108. package/oclif.manifest.json +1288 -834
  109. package/package.json +28 -25
  110. package/dist/commands/commands/for-device.js.map +0 -1
  111. package/dist/commands/commands/get.js.map +0 -1
  112. package/dist/commands/commands/history.js.map +0 -1
  113. package/dist/commands/commands/list.js.map +0 -1
  114. package/dist/commands/commands/send.js.map +0 -1
  115. package/dist/commands/devices/config.js.map +0 -1
  116. package/dist/commands/devices/create.js.map +0 -1
  117. package/dist/commands/devices/delete.js.map +0 -1
  118. package/dist/commands/devices/get.js.map +0 -1
  119. package/dist/commands/devices/last-seen.js.map +0 -1
  120. package/dist/commands/devices/list.js.map +0 -1
  121. package/dist/commands/devices/rename.js.map +0 -1
  122. package/dist/commands/devices/streams.js +0 -56
  123. package/dist/commands/devices/streams.js.map +0 -1
  124. package/dist/commands/devices/tag.js.map +0 -1
  125. package/dist/commands/devices/untag.js.map +0 -1
  126. package/dist/commands/event-triggers/get.js.map +0 -1
  127. package/dist/commands/event-triggers/list.js.map +0 -1
  128. package/dist/commands/events/get.js.map +0 -1
  129. package/dist/commands/events/list.js.map +0 -1
  130. package/dist/commands/fleets/get.js.map +0 -1
  131. package/dist/commands/fleets/list.js.map +0 -1
  132. package/dist/commands/investigations/analytics.js.map +0 -1
  133. package/dist/commands/investigations/get.js.map +0 -1
  134. package/dist/commands/investigations/list.js.map +0 -1
  135. package/dist/commands/investigations/run.js.map +0 -1
  136. package/dist/commands/investigations/runs-list.js.map +0 -1
  137. package/dist/commands/investigations/runs.js.map +0 -1
  138. package/dist/commands/investigations/stats.js.map +0 -1
  139. package/dist/commands/investigations/trigger.js.map +0 -1
  140. package/dist/commands/schedules/get.js.map +0 -1
  141. package/dist/commands/schedules/list.js.map +0 -1
  142. package/dist/commands/signals/count.js.map +0 -1
  143. package/dist/commands/signals/get.js.map +0 -1
  144. package/dist/commands/signals/list.js +0 -30
  145. package/dist/commands/signals/list.js.map +0 -1
  146. package/dist/commands/signals/query.js +0 -52
  147. package/dist/commands/signals/query.js.map +0 -1
  148. package/dist/commands/users/get.js.map +0 -1
  149. package/dist/commands/users/list.js.map +0 -1
  150. /package/dist/commands/{commands → command}/for-device.d.ts +0 -0
  151. /package/dist/commands/{commands → command}/get.d.ts +0 -0
  152. /package/dist/commands/{commands → command}/history.d.ts +0 -0
  153. /package/dist/commands/{commands → command}/list.d.ts +0 -0
  154. /package/dist/commands/{commands → command}/send.d.ts +0 -0
  155. /package/dist/commands/{devices → device}/config.d.ts +0 -0
  156. /package/dist/commands/{devices → device}/create.d.ts +0 -0
  157. /package/dist/commands/{devices → device}/delete.d.ts +0 -0
  158. /package/dist/commands/{devices → device}/get.d.ts +0 -0
  159. /package/dist/commands/{devices → device}/last-seen.d.ts +0 -0
  160. /package/dist/commands/{devices → device}/list.d.ts +0 -0
  161. /package/dist/commands/{devices → device}/rename.d.ts +0 -0
  162. /package/dist/commands/{devices → device}/tag.d.ts +0 -0
  163. /package/dist/commands/{devices → device}/untag.d.ts +0 -0
  164. /package/dist/commands/{events → event}/get.d.ts +0 -0
  165. /package/dist/commands/{events → event}/list.d.ts +0 -0
  166. /package/dist/commands/{event-triggers → event-trigger}/get.d.ts +0 -0
  167. /package/dist/commands/{event-triggers → event-trigger}/list.d.ts +0 -0
  168. /package/dist/commands/{fleets → fleet}/get.d.ts +0 -0
  169. /package/dist/commands/{fleets → fleet}/list.d.ts +0 -0
  170. /package/dist/commands/{investigations → investigation}/analytics.d.ts +0 -0
  171. /package/dist/commands/{investigations → investigation}/get.d.ts +0 -0
  172. /package/dist/commands/{investigations → investigation}/list.d.ts +0 -0
  173. /package/dist/commands/{investigations → investigation}/run.d.ts +0 -0
  174. /package/dist/commands/{investigations → investigation}/runs-list.d.ts +0 -0
  175. /package/dist/commands/{investigations → investigation}/runs.d.ts +0 -0
  176. /package/dist/commands/{investigations → investigation}/stats.d.ts +0 -0
  177. /package/dist/commands/{investigations → investigation}/trigger.d.ts +0 -0
  178. /package/dist/commands/{schedules → schedule}/get.d.ts +0 -0
  179. /package/dist/commands/{schedules → schedule}/list.d.ts +0 -0
  180. /package/dist/commands/{signals → signal}/count.d.ts +0 -0
  181. /package/dist/commands/{signals → signal}/get.d.ts +0 -0
  182. /package/dist/commands/{users → user}/get.d.ts +0 -0
  183. /package/dist/commands/{users → user}/list.d.ts +0 -0
@@ -0,0 +1,95 @@
1
+ import { Args, Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { formatDetail } from '../../lib/formatters.js';
4
+ export default class SignalCreate extends BaseCommand {
5
+ static args = {
6
+ goal: Args.string({ description: 'Goal or description for the signal', required: true }),
7
+ };
8
+ static description = `Create a manual signal.
9
+
10
+ Signals are points of interest that can trigger AI-powered investigations. Use this to
11
+ manually create a signal with a goal description, optionally targeting a specific device
12
+ or persona.`;
13
+ static examples = [
14
+ '<%= config.bin %> signal create "Robot arm jammed at joint 3"',
15
+ '<%= config.bin %> signal create "Battery draining fast" --device <device-id>',
16
+ '<%= config.bin %> signal create "Investigate sensor anomaly" --persona <persona-id>',
17
+ '<%= config.bin %> signal create "Test alarm scenario" --investigation <taskflow-id>',
18
+ '<%= config.bin %> signal create "Motor overheated" --investigation <id> --ground-truth "Should identify motor thermal fault"',
19
+ ];
20
+ static flags = {
21
+ device: Flags.string({
22
+ char: 'd',
23
+ description: 'Device ID to associate with this signal',
24
+ }),
25
+ 'ground-truth': Flags.string({
26
+ char: 'g',
27
+ dependsOn: ['investigation'],
28
+ description: 'Expected outcome (ground truth) for this signal — requires --investigation',
29
+ }),
30
+ investigation: Flags.string({
31
+ char: 'i',
32
+ description: 'Investigation (taskflow) ID this signal targets',
33
+ }),
34
+ persona: Flags.string({
35
+ char: 'p',
36
+ description: 'Persona ID to handle this signal',
37
+ }),
38
+ };
39
+ static summary = 'Create a manual signal';
40
+ async run() {
41
+ const body = {
42
+ goal: this.args.goal,
43
+ type: 'manual',
44
+ };
45
+ if (this.flags.device)
46
+ body.deviceId = this.flags.device;
47
+ if (this.flags.persona)
48
+ body.personaId = this.flags.persona;
49
+ if (this.flags.investigation)
50
+ body.createdForTaskFlowId = this.flags.investigation;
51
+ const signal = await this.api('theopolis', 'signals', { body });
52
+ // If ground truth specified, create it for this signal + investigation
53
+ let groundTruth;
54
+ if (this.flags['ground-truth'] && this.flags.investigation) {
55
+ groundTruth = await this.api('theopolis', `taskflows/${this.flags.investigation}/eval/ground-truths`, {
56
+ body: {
57
+ expectedOutcome: this.flags['ground-truth'],
58
+ signalId: signal.id,
59
+ },
60
+ });
61
+ }
62
+ if (!this.jsonEnabled()) {
63
+ this.log(`\nSignal created (${this.env}):\n`);
64
+ const detail = {
65
+ createdAt: signal.createdAt,
66
+ deviceId: signal.deviceId ?? '—',
67
+ goal: signal.goal,
68
+ id: signal.id,
69
+ personaId: signal.personaId ?? '—',
70
+ status: signal.status,
71
+ type: signal.type,
72
+ };
73
+ const labels = {
74
+ createdAt: 'Created',
75
+ deviceId: 'Device',
76
+ goal: 'Goal',
77
+ id: 'ID',
78
+ personaId: 'Persona',
79
+ status: 'Status',
80
+ type: 'Type',
81
+ };
82
+ if (groundTruth) {
83
+ detail.groundTruth = groundTruth.expectedOutcome;
84
+ labels.groundTruth = 'Ground Truth';
85
+ }
86
+ this.log(formatDetail(detail, labels));
87
+ this.log('');
88
+ }
89
+ const result = { ...signal };
90
+ if (groundTruth)
91
+ result.groundTruth = groundTruth;
92
+ return result;
93
+ }
94
+ }
95
+ //# sourceMappingURL=create.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/signal/create.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAgC;IACxE,MAAM,CAAU,IAAI,GAAG;QACrB,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,oCAAoC,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;KACvF,CAAA;IAED,MAAM,CAAU,WAAW,GAAG;;;;YAIpB,CAAA;IAEV,MAAM,CAAU,QAAQ,GAAG;QACzB,+DAA+D;QAC/D,8EAA8E;QAC9E,qFAAqF;QACrF,qFAAqF;QACrF,8HAA8H;KAC/H,CAAA;IAED,MAAM,CAAU,KAAK,GAAG;QACtB,MAAM,EAAE,KAAK,CAAC,MAAM,CAAC;YACnB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,yCAAyC;SACvD,CAAC;QACF,cAAc,EAAE,KAAK,CAAC,MAAM,CAAC;YAC3B,IAAI,EAAE,GAAG;YACT,SAAS,EAAE,CAAC,eAAe,CAAC;YAC5B,WAAW,EAAE,4EAA4E;SAC1F,CAAC;QACF,aAAa,EAAE,KAAK,CAAC,MAAM,CAAC;YAC1B,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,iDAAiD;SAC/D,CAAC;QACF,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC;YACpB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,kCAAkC;SAChD,CAAC;KACH,CAAA;IAED,MAAM,CAAU,OAAO,GAAG,wBAAwB,CAAA;IAE3C,KAAK,CAAC,GAAG;QACd,MAAM,IAAI,GAA4B;YACpC,IAAI,EAAE,IAAI,CAAC,IAAI,CAAC,IAAI;YACpB,IAAI,EAAE,QAAQ;SACf,CAAA;QAED,IAAI,IAAI,CAAC,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,QAAQ,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAA;QACxD,IAAI,IAAI,CAAC,KAAK,CAAC,OAAO;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAA;QAC3D,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa;YAAE,IAAI,CAAC,oBAAoB,GAAG,IAAI,CAAC,KAAK,CAAC,aAAa,CAAA;QAElF,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAC3B,WAAW,EACX,SAAS,EACT,EAAC,IAAI,EAAC,CACP,CAAA;QAED,uEAAuE;QACvE,IAAI,WAAgD,CAAA;QACpD,IAAI,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC,IAAI,IAAI,CAAC,KAAK,CAAC,aAAa,EAAE,CAAC;YAC3D,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAC1B,WAAW,EACX,aAAa,IAAI,CAAC,KAAK,CAAC,aAAa,qBAAqB,EAC1D;gBACE,IAAI,EAAE;oBACJ,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,cAAc,CAAC;oBAC3C,QAAQ,EAAE,MAAM,CAAC,EAAE;iBACpB;aACF,CACF,CAAA;QACH,CAAC;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;YAC7C,MAAM,MAAM,GAA4B;gBACtC,SAAS,EAAE,MAAM,CAAC,SAAS;gBAC3B,QAAQ,EAAE,MAAM,CAAC,QAAQ,IAAI,GAAG;gBAChC,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,EAAE,EAAE,MAAM,CAAC,EAAE;gBACb,SAAS,EAAE,MAAM,CAAC,SAAS,IAAI,GAAG;gBAClC,MAAM,EAAE,MAAM,CAAC,MAAM;gBACrB,IAAI,EAAE,MAAM,CAAC,IAAI;aAClB,CAAA;YAED,MAAM,MAAM,GAA2B;gBACrC,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,QAAQ;gBAClB,IAAI,EAAE,MAAM;gBACZ,EAAE,EAAE,IAAI;gBACR,SAAS,EAAE,SAAS;gBACpB,MAAM,EAAE,QAAQ;gBAChB,IAAI,EAAE,MAAM;aACb,CAAA;YAED,IAAI,WAAW,EAAE,CAAC;gBAChB,MAAM,CAAC,WAAW,GAAG,WAAW,CAAC,eAAe,CAAA;gBAChD,MAAM,CAAC,WAAW,GAAG,cAAc,CAAA;YACrC,CAAC;YAED,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC,CAAA;YACtC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;QAED,MAAM,MAAM,GAA4B,EAAC,GAAG,MAAM,EAAC,CAAA;QACnD,IAAI,WAAW;YAAE,MAAM,CAAC,WAAW,GAAG,WAAW,CAAA;QACjD,OAAO,MAAM,CAAA;IACf,CAAC"}
@@ -11,9 +11,9 @@ Shows signal details including the triggering event, goal, status, and type (man
11
11
  eventTrigger, schedule, slack). Use --trace to also fetch the event and event trigger
12
12
  information.`;
13
13
  static examples = [
14
- '<%= config.bin %> signals get <signal-id>',
15
- '<%= config.bin %> signals get <signal-id> --trace',
16
- '<%= config.bin %> signals get <signal-id> --json',
14
+ '<%= config.bin %> signal get <signal-id>',
15
+ '<%= config.bin %> signal get <signal-id> --trace',
16
+ '<%= config.bin %> signal get <signal-id> --json',
17
17
  ];
18
18
  static flags = {
19
19
  trace: Flags.boolean({
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/signal/get.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class SignalsList extends BaseCommand<typeof SignalsList> {
3
+ static description: string;
4
+ static examples: string[];
5
+ static flags: {
6
+ investigation: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ };
8
+ static summary: string;
9
+ run(): Promise<{
10
+ items: unknown[];
11
+ }>;
12
+ }
@@ -0,0 +1,85 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { formatTable } from '../../lib/formatters.js';
4
+ export default class SignalsList extends BaseCommand {
5
+ static description = `List all signals in your organization.
6
+
7
+ Signals are points of interest that trigger AI-powered investigations. They can be
8
+ created manually, generated from device events, scheduled, or from Slack/Teams integrations.
9
+
10
+ Use --investigation to also show ground truth (expected outcome) for each signal
11
+ that has one assigned for that investigation.`;
12
+ static examples = [
13
+ '<%= config.bin %> signal list',
14
+ '<%= config.bin %> signal list --investigation <taskflow-id>',
15
+ '<%= config.bin %> signal list --json',
16
+ ];
17
+ static flags = {
18
+ investigation: Flags.string({
19
+ char: 'i',
20
+ description: 'Investigation (taskflow) ID — shows ground truth for signals that have one',
21
+ }),
22
+ };
23
+ static summary = 'List all signals';
24
+ async run() {
25
+ const result = await this.api('theopolis', 'signals', { method: 'GET' });
26
+ // If investigation flag set, fetch ground truths and merge
27
+ let groundTruthMap;
28
+ if (this.flags.investigation) {
29
+ try {
30
+ const gtResult = await this.api('theopolis', `taskflows/${this.flags.investigation}/eval/ground-truths`, { method: 'GET' });
31
+ groundTruthMap = new Map();
32
+ for (const gt of gtResult.groundTruths ?? []) {
33
+ groundTruthMap.set(gt.signalId, gt.expectedOutcome);
34
+ }
35
+ // Enrich signal items with ground truth
36
+ for (const signal of result.items ?? []) {
37
+ const expectedOutcome = groundTruthMap.get(signal.id);
38
+ if (expectedOutcome) {
39
+ signal.expectedOutcome = expectedOutcome;
40
+ }
41
+ }
42
+ }
43
+ catch {
44
+ // Investigation may not exist or have no ground truths — continue without
45
+ }
46
+ }
47
+ if (!this.jsonEnabled()) {
48
+ const hasGt = this.flags.investigation && groundTruthMap && groundTruthMap.size > 0;
49
+ const columns = [
50
+ { key: 'id', label: 'ID', width: 40 },
51
+ { key: 'type', label: 'TYPE', width: 14 },
52
+ { key: 'status', label: 'STATUS', width: 12 },
53
+ { key: 'goal', label: 'GOAL', width: 36 },
54
+ { key: 'createdAt', label: 'CREATED', width: 22 },
55
+ ];
56
+ if (hasGt) {
57
+ columns.push({ key: 'hasGroundTruth', label: 'GT', width: 4 });
58
+ }
59
+ // Mark signals that have ground truth
60
+ const items = (result.items ?? []).map((s) => ({
61
+ ...s,
62
+ hasGroundTruth: groundTruthMap?.has(s.id) ? '*' : '',
63
+ }));
64
+ this.log(`\nSignals (${this.env}):\n`);
65
+ this.log(formatTable(items, columns));
66
+ // Print full ground truths below the table
67
+ if (hasGt) {
68
+ this.log(`\nGround Truths:\n`);
69
+ for (const signal of result.items ?? []) {
70
+ const gt = groundTruthMap.get(signal.id);
71
+ if (gt) {
72
+ const goal = String(signal.goal ?? '').slice(0, 60);
73
+ this.log(` ${signal.id}`);
74
+ this.log(` Goal: ${goal}`);
75
+ this.log(` Ground Truth: ${gt}`);
76
+ this.log('');
77
+ }
78
+ }
79
+ }
80
+ this.log('');
81
+ }
82
+ return result;
83
+ }
84
+ }
85
+ //# sourceMappingURL=list.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/signal/list.ts"],"names":[],"mappings":"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"}
@@ -4,6 +4,7 @@ export default class SignalsQuery extends BaseCommand<typeof SignalsQuery> {
4
4
  static examples: string[];
5
5
  static flags: {
6
6
  end: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
+ investigation: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
8
  start: import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
9
  type: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
10
  };
@@ -0,0 +1,100 @@
1
+ import { Flags } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { formatTable } from '../../lib/formatters.js';
4
+ export default class SignalsQuery extends BaseCommand {
5
+ static description = `Query signals by time range and type.
6
+
7
+ Signal types: manual, eventTrigger, schedule, slack.
8
+
9
+ Use --investigation to also show ground truth (expected outcome) for each signal.`;
10
+ static examples = [
11
+ '<%= config.bin %> signal query --start 2026-01-01',
12
+ '<%= config.bin %> signal query --start 2026-01-01 --end 2026-02-01 --type eventTrigger',
13
+ '<%= config.bin %> signal query --start 2026-01-01 --investigation <taskflow-id>',
14
+ '<%= config.bin %> signal query --start 2026-01-01 --json',
15
+ ];
16
+ static flags = {
17
+ end: Flags.string({
18
+ description: 'End time (ISO 8601)',
19
+ }),
20
+ investigation: Flags.string({
21
+ char: 'i',
22
+ description: 'Investigation (taskflow) ID — shows ground truth for signals that have one',
23
+ }),
24
+ start: Flags.string({
25
+ description: 'Start time (ISO 8601)',
26
+ required: true,
27
+ }),
28
+ type: Flags.string({
29
+ description: 'Filter by signal type',
30
+ options: ['manual', 'eventTrigger', 'schedule', 'slack'],
31
+ }),
32
+ };
33
+ static summary = 'Query signals by time range';
34
+ async run() {
35
+ // Normalize dates to ISO 8601 datetime format
36
+ const body = {
37
+ startTime: this.normalizeDateTime(this.flags.start),
38
+ };
39
+ if (this.flags.end)
40
+ body.endTime = this.normalizeDateTime(this.flags.end);
41
+ if (this.flags.type)
42
+ body.type = this.flags.type;
43
+ const result = await this.api('theopolis', 'signals/query', { body });
44
+ // If investigation flag set, fetch ground truths and merge
45
+ let groundTruthMap;
46
+ if (this.flags.investigation) {
47
+ try {
48
+ const gtResult = await this.api('theopolis', `taskflows/${this.flags.investigation}/eval/ground-truths`, { method: 'GET' });
49
+ groundTruthMap = new Map();
50
+ for (const gt of gtResult.groundTruths ?? []) {
51
+ groundTruthMap.set(gt.signalId, gt.expectedOutcome);
52
+ }
53
+ for (const signal of result.items ?? []) {
54
+ const expectedOutcome = groundTruthMap.get(signal.id);
55
+ if (expectedOutcome) {
56
+ signal.expectedOutcome = expectedOutcome;
57
+ }
58
+ }
59
+ }
60
+ catch {
61
+ // Continue without ground truths
62
+ }
63
+ }
64
+ if (!this.jsonEnabled()) {
65
+ const hasGt = this.flags.investigation && groundTruthMap && groundTruthMap.size > 0;
66
+ const columns = [
67
+ { key: 'id', label: 'ID', width: 40 },
68
+ { key: 'type', label: 'TYPE', width: 14 },
69
+ { key: 'status', label: 'STATUS', width: 12 },
70
+ { key: 'goal', label: 'GOAL', width: 36 },
71
+ { key: 'createdAt', label: 'CREATED', width: 22 },
72
+ ];
73
+ if (hasGt) {
74
+ columns.push({ key: 'hasGroundTruth', label: 'GT', width: 4 });
75
+ }
76
+ const items = (result.items ?? []).map((s) => ({
77
+ ...s,
78
+ hasGroundTruth: groundTruthMap?.has(s.id) ? '*' : '',
79
+ }));
80
+ this.log(`\nSignals (${this.env}):\n`);
81
+ this.log(formatTable(items, columns));
82
+ if (hasGt) {
83
+ this.log(`\nGround Truths:\n`);
84
+ for (const signal of result.items ?? []) {
85
+ const gt = groundTruthMap.get(signal.id);
86
+ if (gt) {
87
+ const goal = String(signal.goal ?? '').slice(0, 60);
88
+ this.log(` ${signal.id}`);
89
+ this.log(` Goal: ${goal}`);
90
+ this.log(` Ground Truth: ${gt}`);
91
+ this.log('');
92
+ }
93
+ }
94
+ }
95
+ this.log('');
96
+ }
97
+ return result;
98
+ }
99
+ }
100
+ //# sourceMappingURL=query.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"query.js","sourceRoot":"","sources":["../../../src/commands/signal/query.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { BaseCommand } from '../../base-command.js';
2
+ export default class SignalSetGroundTruth extends BaseCommand<typeof SignalSetGroundTruth> {
3
+ static args: {
4
+ signalId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
5
+ investigationId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
6
+ expectedOutcome: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
7
+ };
8
+ static description: string;
9
+ static examples: string[];
10
+ static summary: string;
11
+ run(): Promise<Record<string, unknown>>;
12
+ }
@@ -0,0 +1,46 @@
1
+ import { Args } from '@oclif/core';
2
+ import { BaseCommand } from '../../base-command.js';
3
+ import { formatDetail } from '../../lib/formatters.js';
4
+ export default class SignalSetGroundTruth extends BaseCommand {
5
+ static args = {
6
+ signalId: Args.string({ description: 'Signal ID (UUID)', required: true }),
7
+ investigationId: Args.string({ description: 'Investigation (taskflow) ID', required: true }),
8
+ expectedOutcome: Args.string({ description: 'The expected outcome / ground truth for this signal', required: true }),
9
+ };
10
+ static description = `Assign a ground truth (expected outcome) to a signal for an investigation.
11
+
12
+ Ground truths define what the correct outcome should be when an investigation processes
13
+ a given signal. They are used for evaluation and quality measurement of investigation
14
+ workflows.`;
15
+ static examples = [
16
+ '<%= config.bin %> signal set-ground-truth <signal-id> <investigation-id> "The alarm should be dismissed as a false positive"',
17
+ '<%= config.bin %> signal set-ground-truth <signal-id> <investigation-id> "Root cause: overheated motor in joint 3" --json',
18
+ ];
19
+ static summary = 'Assign ground truth to a signal';
20
+ async run() {
21
+ const { expectedOutcome, investigationId, signalId } = this.args;
22
+ const groundTruth = await this.api('theopolis', `taskflows/${investigationId}/eval/ground-truths`, {
23
+ body: {
24
+ expectedOutcome,
25
+ signalId,
26
+ },
27
+ });
28
+ if (!this.jsonEnabled()) {
29
+ this.log(`\nGround truth assigned (${this.env}):\n`);
30
+ this.log(formatDetail({
31
+ expectedOutcome: groundTruth.expectedOutcome,
32
+ id: groundTruth.id,
33
+ investigation: investigationId,
34
+ signalId: groundTruth.signalId,
35
+ }, {
36
+ expectedOutcome: 'Expected Outcome',
37
+ id: 'Ground Truth ID',
38
+ investigation: 'Investigation',
39
+ signalId: 'Signal',
40
+ }));
41
+ this.log('');
42
+ }
43
+ return groundTruth;
44
+ }
45
+ }
46
+ //# sourceMappingURL=set-ground-truth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"set-ground-truth.js","sourceRoot":"","sources":["../../../src/commands/signal/set-ground-truth.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,oBAAqB,SAAQ,WAAwC;IACxF,MAAM,CAAU,IAAI,GAAG;QACrB,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,kBAAkB,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;QACxE,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,6BAA6B,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;QAC1F,eAAe,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,qDAAqD,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;KACnH,CAAA;IAED,MAAM,CAAU,WAAW,GAAG;;;;WAIrB,CAAA;IAET,MAAM,CAAU,QAAQ,GAAG;QACzB,8HAA8H;QAC9H,2HAA2H;KAC5H,CAAA;IAED,MAAM,CAAU,OAAO,GAAG,iCAAiC,CAAA;IAEpD,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,eAAe,EAAE,eAAe,EAAE,QAAQ,EAAC,GAAG,IAAI,CAAC,IAAI,CAAA;QAE9D,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,GAAG,CAChC,WAAW,EACX,aAAa,eAAe,qBAAqB,EACjD;YACE,IAAI,EAAE;gBACJ,eAAe;gBACf,QAAQ;aACT;SACF,CACF,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,4BAA4B,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;YACpD,IAAI,CAAC,GAAG,CAAC,YAAY,CACnB;gBACE,eAAe,EAAE,WAAW,CAAC,eAAe;gBAC5C,EAAE,EAAE,WAAW,CAAC,EAAE;gBAClB,aAAa,EAAE,eAAe;gBAC9B,QAAQ,EAAE,WAAW,CAAC,QAAQ;aAC/B,EACD;gBACE,eAAe,EAAE,kBAAkB;gBACnC,EAAE,EAAE,iBAAiB;gBACrB,aAAa,EAAE,eAAe;gBAC9B,QAAQ,EAAE,QAAQ;aACnB,CACF,CAAC,CAAA;YACF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;QAED,OAAO,WAAW,CAAA;IACpB,CAAC"}
@@ -9,8 +9,8 @@ export default class UsersGet extends BaseCommand {
9
9
 
10
10
  Shows user details including email, name, roles, and account settings.`;
11
11
  static examples = [
12
- '<%= config.bin %> users get <user-id>',
13
- '<%= config.bin %> users get <user-id> --json',
12
+ '<%= config.bin %> user get <user-id>',
13
+ '<%= config.bin %> user get <user-id> --json',
14
14
  ];
15
15
  static summary = 'Get user details';
16
16
  async run() {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/user/get.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAC,YAAY,EAAC,MAAM,yBAAyB,CAAA;AAEpD,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,WAA4B;IAChE,MAAM,CAAU,IAAI,GAAG;QACrB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,gBAAgB,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;KACjE,CAAA;IAED,MAAM,CAAU,WAAW,GAAG;;uEAEuC,CAAA;IAErE,MAAM,CAAU,QAAQ,GAAG;QACzB,sCAAsC;QACtC,6CAA6C;KAC9C,CAAA;IAED,MAAM,CAAU,OAAO,GAAG,kBAAkB,CAAA;IAErC,KAAK,CAAC,GAAG;QACd,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAA0B,OAAO,EAAE,SAAS,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE;YACrF,MAAM,EAAE,KAAK;SACd,CAAC,CAAA;QAEF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,mBAAmB,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;YAC3C,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,IAAI,CAAC,CAAC,CAAA;YAC5B,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;QAED,OAAO,IAAI,CAAA;IACb,CAAC"}
@@ -5,8 +5,8 @@ export default class UsersList extends BaseCommand {
5
5
 
6
6
  Shows user accounts, their email addresses, and account status.`;
7
7
  static examples = [
8
- '<%= config.bin %> users list',
9
- '<%= config.bin %> users list --json',
8
+ '<%= config.bin %> user list',
9
+ '<%= config.bin %> user list --json',
10
10
  ];
11
11
  static summary = 'List users';
12
12
  async run() {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/user/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAc,WAAW,EAAC,MAAM,yBAAyB,CAAA;AAEhE,MAAM,CAAC,OAAO,OAAO,SAAU,SAAQ,WAA6B;IAClE,MAAM,CAAU,WAAW,GAAG;;gEAEgC,CAAA;IAE9D,MAAM,CAAU,QAAQ,GAAG;QACzB,6BAA6B;QAC7B,oCAAoC;KACrC,CAAA;IAED,MAAM,CAAU,OAAO,GAAG,YAAY,CAAA;IAE/B,KAAK,CAAC,GAAG;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAC3B,OAAO,EACP,OAAO,EACP,EAAC,MAAM,EAAE,KAAK,EAAC,CAChB,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,OAAO,GAAa;gBACxB,EAAC,GAAG,EAAE,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAC;gBACzC,EAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAC;gBACvC,EAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAC;gBACnC,EAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,CAAC,EAAC;aAC7C,CAAA;YAED,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;YACpC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,EAAE,OAAO,CAAC,CAAC,CAAA;YAClD,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC"}
package/dist/help.js CHANGED
@@ -3,17 +3,17 @@ export default class FcliHelp extends Help {
3
3
  async showRootHelp() {
4
4
  const output = `
5
5
  ███████╗ ██████╗██╗ ██╗
6
- ██╔════╝██╔════╝██║ ██║ 🤖 Formant CLI v${this.config.version}
7
- █████╗ ██║ ██║ ██║ Manage your robot fleet
8
- ██╔══╝ ██║ ██║ ██║ 🚀 from the command line
6
+ ██╔════╝██╔════╝██║ ██║ Formant CLI v${this.config.version}
7
+ █████╗ ██║ ██║ ██║ Manage your robot fleet
8
+ ██╔══╝ ██║ ██║ ██║ from the command line
9
9
  ██║ ╚██████╗███████╗██║
10
10
  ╚═╝ ╚═════╝╚══════╝╚═╝
11
11
 
12
12
  ABOUT
13
13
  Formant is a cloud platform for monitoring, operating, and analyzing robot fleets.
14
14
  This CLI lets you interact with your robots, query telemetry data, trigger AI-powered
15
- investigations, manage users and permissions, and automate fleet operations — all from
16
- your terminal.
15
+ investigations, delegate tasks to AI personas, and automate fleet operations — all
16
+ from your terminal.
17
17
 
18
18
  USAGE
19
19
  $ fcli <command> [flags]
@@ -24,23 +24,25 @@ KEY CONCEPTS
24
24
  Event An important occurrence (alert, warning, error) emitted by a device
25
25
  Signal A point of interest that triggers investigation or analysis
26
26
  Investigation AI-powered workflow that analyzes device data and diagnoses issues
27
+ Persona An AI agent with specific tools and instructions
27
28
  Stream Real-time telemetry data (battery, temperature, location, sensors)
28
29
  Command Remote instruction sent to a device to perform an action
29
30
  Fleet A logical group of devices (by location, type, or tags)
30
31
 
31
32
  COMMANDS
32
33
  org View and update your Formant organization
33
- devices Create, list, tag, and manage robots/sensors in your fleet
34
- events View and filter important events emitted by devices
34
+ device Create, list, tag, and manage robots/sensors in your fleet
35
+ event View and filter important events emitted by devices
35
36
  query Retrieve historical telemetry data and latest sensor values
36
37
  ingest Send telemetry data to devices via the Formant ingestion API
37
- signals List, query, and analyze signals that trigger investigations
38
- investigations Trigger, monitor, and analyze AI-powered diagnostic workflows
39
- commands Send remote commands to devices and view command history
40
- event-triggers Configure rules that automatically generate events and signals
41
- users List and inspect users in your organization
42
- fleets Manage device groups and organize your fleet
43
- schedules Set up recurring tasks and one-time scheduled jobs
38
+ signal List, query, and analyze signals that trigger investigations
39
+ investigation Trigger, monitor, and analyze AI-powered diagnostic workflows
40
+ persona Manage AI personas and delegate async tasks
41
+ command Send remote commands to devices and view command history
42
+ event-trigger Configure rules that automatically generate events and signals
43
+ user List and inspect users in your organization
44
+ fleet Manage device groups and organize your fleet
45
+ schedule Set up recurring tasks and one-time scheduled jobs
44
46
  analytics Execute custom SQL queries against your analytics database
45
47
  kv Store and retrieve metadata in the key-value store
46
48
  help Display help for fcli
@@ -65,16 +67,16 @@ EXAMPLES
65
67
  $ fcli org update --name "Acme Robotics" # Update org name
66
68
 
67
69
  # Device management
68
- $ fcli devices list --online # List all online devices
69
- $ fcli devices list --tag location=warehouse # Filter by tags
70
- $ fcli devices create --name "robot-001" # Create a new device
71
- $ fcli devices tag <device-id> --key env --value prod # Add tags
72
- $ fcli devices rename <device-id> --name "robot-new" # Rename a device
70
+ $ fcli device list --online # List all online devices
71
+ $ fcli device list --tag location=warehouse # Filter by tags
72
+ $ fcli device create --name "robot-001" # Create a new device
73
+ $ fcli device tag <device-id> --key env --value prod # Add tags
74
+ $ fcli device rename <device-id> --name "robot-new" # Rename a device
73
75
 
74
76
  # Telemetry queries
75
77
  $ fcli query --device <id> --stream battery_level --start 2026-01-01 --end 2026-01-02
76
78
  $ fcli query latest-values --device <id> --stream battery_level
77
- $ fcli devices streams <device-id> # List available streams
79
+ $ fcli device streams <device-id> # List available streams
78
80
 
79
81
  # Ingest telemetry data
80
82
  $ fcli ingest numeric 42.5 --device <id> --stream battery_level
@@ -83,37 +85,41 @@ EXAMPLES
83
85
  $ fcli ingest batch --file payload.json # Batch ingest from file
84
86
 
85
87
  # Events and monitoring
86
- $ fcli events list --severity critical --limit 50 # View critical events
87
- $ fcli events list --device <id> --start 2026-01-01 # Events for one device
88
- $ fcli events get <event-id> # Get event details
88
+ $ fcli event list --severity critical --limit 50 # View critical events
89
+ $ fcli event list --device <id> --start 2026-01-01 # Events for one device
90
+ $ fcli event get <event-id> # Get event details
89
91
 
90
- # AI investigations
91
- $ fcli investigations list # List all investigations
92
- $ fcli investigations trigger <inv-id> <device-id> # Trigger an investigation
93
- $ fcli investigations runs <inv-id> # View investigation runs
94
- $ fcli investigations stats --start 2026-01-01 # Get investigation metrics
92
+ # AI personas
93
+ $ fcli persona list # List all personas
94
+ $ fcli persona get <persona-id> # View persona tools
95
+ $ fcli persona delegate-task <persona-id> "Analyze recent failures"
96
+ $ fcli persona task-status <task-id> # Check task results
95
97
 
96
- # Signals (investigation triggers)
97
- $ fcli signals list --start 2026-01-01 --end 2026-02-01
98
- $ fcli signals query --start 2026-01-01 # Query by time range
99
- $ fcli signals count # Count signals by type
100
- $ fcli signals get <signal-id> # Get signal details
98
+ # AI investigations
99
+ $ fcli investigation list # List all investigations
100
+ $ fcli investigation trigger <id> -i "Robot stopped" # Trigger an investigation
101
+ $ fcli investigation runs <id> # View investigation runs
102
+
103
+ # Signals and ground truths
104
+ $ fcli signal create "Motor overheated on device X" # Create a manual signal
105
+ $ fcli signal create "Sensor fault" -i <inv-id> -g "Should detect thermal issue"
106
+ $ fcli signal list # List all signals
107
+ $ fcli signal list --investigation <inv-id> # List with ground truths
108
+ $ fcli signal query --start 2026-01-01 # Query by time range
109
+ $ fcli signal set-ground-truth <signal-id> <inv-id> "Expected outcome"
101
110
 
102
111
  # Remote commands
103
- $ fcli commands list # List command templates
104
- $ fcli commands for-device <device-id> # Commands for one device
105
- $ fcli commands send <device-id> <template-id> --param speed=10
106
- $ fcli commands history <device-id> # View command history
112
+ $ fcli command list # List command templates
113
+ $ fcli command for-device <device-id> # Commands for one device
114
+ $ fcli command send <device-id> <template-id> --param speed=10
107
115
 
108
116
  # Event triggers (automation)
109
- $ fcli event-triggers list # List all trigger rules
110
- $ fcli event-triggers get <trigger-id> # View trigger details
117
+ $ fcli event-trigger list # List all trigger rules
118
+ $ fcli event-trigger get <trigger-id> # View trigger details
111
119
 
112
120
  # User and fleet management
113
- $ fcli users list # List all users
114
- $ fcli users get <user-id> # View user details
115
- $ fcli fleets list # List device groups
116
- $ fcli fleets get <fleet-id> # View fleet details
121
+ $ fcli user list # List all users
122
+ $ fcli fleet list # List device groups
117
123
 
118
124
  # Analytics and data queries
119
125
  $ fcli analytics tables # List available tables
@@ -125,10 +131,10 @@ EXAMPLES
125
131
  $ fcli kv set <device-id> <key> <value> # Store a value
126
132
 
127
133
  TIPS
128
- Use --json with any command to get machine-readable output for scripting
129
- Pipe output to jq for advanced JSON processing: fcli devices list --json | jq
130
- Set --dev or --stage to target non-production environments
131
- Use fcli <command> --help to see detailed help for any command
134
+ * Use --json with any command to get machine-readable output for scripting
135
+ * Pipe output to jq for advanced JSON processing: fcli device list --json | jq
136
+ * Set --dev or --stage to target non-production environments
137
+ * Use fcli <command> --help to see detailed help for any command
132
138
 
133
139
  LEARN MORE
134
140
  Documentation: https://formant.io/docs
package/dist/help.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,IAAI;IACrB,KAAK,CAAC,YAAY;QACnC,MAAM,MAAM,GAAG;;qDAEkC,IAAI,CAAC,MAAM,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmIvE,CAAA;QAEG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAClB,CAAC;CACF"}
1
+ {"version":3,"file":"help.js","sourceRoot":"","sources":["../src/help.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAC,MAAM,aAAa,CAAA;AAEhC,MAAM,CAAC,OAAO,OAAO,QAAS,SAAQ,IAAI;IACrB,KAAK,CAAC,YAAY;QACnC,MAAM,MAAM,GAAG;;kDAE+B,IAAI,CAAC,MAAM,CAAC,OAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyIpE,CAAA;QAEG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAA;IAClB,CAAC;CACF"}
package/dist/lib/api.d.ts CHANGED
@@ -1,5 +1,5 @@
1
1
  import { type Environment } from './config.js';
2
- export type ApiTarget = 'admin' | 'ingest' | 'query' | 'theopolis';
2
+ export type ApiTarget = 'admin' | 'gateway' | 'ingest' | 'query' | 'theopolis';
3
3
  interface RequestOptions {
4
4
  body?: unknown;
5
5
  method?: 'DELETE' | 'GET' | 'PATCH' | 'POST' | 'PUT';