@formant/formant-cli 0.3.1 → 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.
- package/README.md +152 -124
- package/dist/commands/{commands → command}/for-device.js +2 -2
- package/dist/commands/command/for-device.js.map +1 -0
- package/dist/commands/{commands → command}/get.js +2 -2
- package/dist/commands/command/get.js.map +1 -0
- package/dist/commands/{commands → command}/history.js +3 -3
- package/dist/commands/command/history.js.map +1 -0
- package/dist/commands/{commands → command}/list.js +2 -2
- package/dist/commands/command/list.js.map +1 -0
- package/dist/commands/{commands → command}/send.js +5 -5
- package/dist/commands/command/send.js.map +1 -0
- package/dist/commands/{devices → device}/config.js +2 -2
- package/dist/commands/device/config.js.map +1 -0
- package/dist/commands/{devices → device}/create.js +3 -3
- package/dist/commands/device/create.js.map +1 -0
- package/dist/commands/{devices → device}/delete.js +2 -2
- package/dist/commands/device/delete.js.map +1 -0
- package/dist/commands/{devices → device}/get.js +2 -2
- package/dist/commands/device/get.js.map +1 -0
- package/dist/commands/{devices → device}/last-seen.js +2 -2
- package/dist/commands/device/last-seen.js.map +1 -0
- package/dist/commands/{devices → device}/list.js +5 -5
- package/dist/commands/device/list.js.map +1 -0
- package/dist/commands/{devices → device}/rename.js +2 -2
- package/dist/commands/device/rename.js.map +1 -0
- package/dist/commands/{devices → device}/streams.js +3 -3
- package/dist/commands/device/streams.js.map +1 -0
- package/dist/commands/{devices → device}/tag.js +3 -3
- package/dist/commands/device/tag.js.map +1 -0
- package/dist/commands/{devices → device}/untag.js +3 -3
- package/dist/commands/device/untag.js.map +1 -0
- package/dist/commands/{events → event}/get.js +2 -2
- package/dist/commands/event/get.js.map +1 -0
- package/dist/commands/{events → event}/list.js +4 -4
- package/dist/commands/event/list.js.map +1 -0
- package/dist/commands/{event-triggers → event-trigger}/get.js +2 -2
- package/dist/commands/event-trigger/get.js.map +1 -0
- package/dist/commands/{event-triggers → event-trigger}/list.js +2 -2
- package/dist/commands/event-trigger/list.js.map +1 -0
- package/dist/commands/{fleets → fleet}/get.js +2 -2
- package/dist/commands/fleet/get.js.map +1 -0
- package/dist/commands/{fleets → fleet}/list.js +2 -2
- package/dist/commands/fleet/list.js.map +1 -0
- package/dist/commands/{investigations → investigation}/analytics.js +3 -3
- package/dist/commands/investigation/analytics.js.map +1 -0
- package/dist/commands/{investigations → investigation}/get.js +2 -2
- package/dist/commands/investigation/get.js.map +1 -0
- package/dist/commands/{investigations → investigation}/list.js +3 -3
- package/dist/commands/investigation/list.js.map +1 -0
- package/dist/commands/{investigations → investigation}/run.js +3 -3
- package/dist/commands/investigation/run.js.map +1 -0
- package/dist/commands/{investigations → investigation}/runs-list.js +3 -3
- package/dist/commands/investigation/runs-list.js.map +1 -0
- package/dist/commands/{investigations → investigation}/runs.js +2 -2
- package/dist/commands/investigation/runs.js.map +1 -0
- package/dist/commands/{investigations → investigation}/stats.js +2 -2
- package/dist/commands/investigation/stats.js.map +1 -0
- package/dist/commands/{investigations → investigation}/trigger.js +2 -2
- package/dist/commands/investigation/trigger.js.map +1 -0
- package/dist/commands/persona/delegate-task.d.ts +14 -0
- package/dist/commands/persona/delegate-task.js +50 -0
- package/dist/commands/persona/delegate-task.js.map +1 -0
- package/dist/commands/persona/get.d.ts +10 -0
- package/dist/commands/persona/get.js +98 -0
- package/dist/commands/persona/get.js.map +1 -0
- package/dist/commands/{signals → persona}/list.d.ts +1 -1
- package/dist/commands/persona/list.js +31 -0
- package/dist/commands/persona/list.js.map +1 -0
- package/dist/commands/persona/task-status.d.ts +12 -0
- package/dist/commands/persona/task-status.js +57 -0
- package/dist/commands/persona/task-status.js.map +1 -0
- package/dist/commands/{schedules → schedule}/get.js +2 -2
- package/dist/commands/schedule/get.js.map +1 -0
- package/dist/commands/{schedules → schedule}/list.js +2 -2
- package/dist/commands/schedule/list.js.map +1 -0
- package/dist/commands/{signals → signal}/count.js +3 -3
- package/dist/commands/signal/count.js.map +1 -0
- package/dist/commands/signal/create.d.ts +16 -0
- package/dist/commands/signal/create.js +95 -0
- package/dist/commands/signal/create.js.map +1 -0
- package/dist/commands/{signals → signal}/get.js +3 -3
- package/dist/commands/signal/get.js.map +1 -0
- package/dist/commands/signal/list.d.ts +12 -0
- package/dist/commands/signal/list.js +85 -0
- package/dist/commands/signal/list.js.map +1 -0
- package/dist/commands/{signals → signal}/query.d.ts +1 -0
- package/dist/commands/signal/query.js +100 -0
- package/dist/commands/signal/query.js.map +1 -0
- package/dist/commands/signal/set-ground-truth.d.ts +12 -0
- package/dist/commands/signal/set-ground-truth.js +46 -0
- package/dist/commands/signal/set-ground-truth.js.map +1 -0
- package/dist/commands/{users → user}/get.js +2 -2
- package/dist/commands/user/get.js.map +1 -0
- package/dist/commands/{users → user}/list.js +2 -2
- package/dist/commands/user/list.js.map +1 -0
- package/dist/help.js +53 -47
- package/dist/help.js.map +1 -1
- package/dist/lib/api.d.ts +1 -1
- package/dist/lib/api.js +3 -0
- package/dist/lib/api.js.map +1 -1
- package/dist/lib/config.d.ts +1 -0
- package/dist/lib/config.js +3 -0
- package/dist/lib/config.js.map +1 -1
- package/oclif.manifest.json +1484 -1047
- package/package.json +28 -25
- package/dist/commands/commands/for-device.js.map +0 -1
- package/dist/commands/commands/get.js.map +0 -1
- package/dist/commands/commands/history.js.map +0 -1
- package/dist/commands/commands/list.js.map +0 -1
- package/dist/commands/commands/send.js.map +0 -1
- package/dist/commands/devices/config.js.map +0 -1
- package/dist/commands/devices/create.js.map +0 -1
- package/dist/commands/devices/delete.js.map +0 -1
- package/dist/commands/devices/get.js.map +0 -1
- package/dist/commands/devices/last-seen.js.map +0 -1
- package/dist/commands/devices/list.js.map +0 -1
- package/dist/commands/devices/rename.js.map +0 -1
- package/dist/commands/devices/streams.js.map +0 -1
- package/dist/commands/devices/tag.js.map +0 -1
- package/dist/commands/devices/untag.js.map +0 -1
- package/dist/commands/event-triggers/get.js.map +0 -1
- package/dist/commands/event-triggers/list.js.map +0 -1
- package/dist/commands/events/get.js.map +0 -1
- package/dist/commands/events/list.js.map +0 -1
- package/dist/commands/fleets/get.js.map +0 -1
- package/dist/commands/fleets/list.js.map +0 -1
- package/dist/commands/investigations/analytics.js.map +0 -1
- package/dist/commands/investigations/get.js.map +0 -1
- package/dist/commands/investigations/list.js.map +0 -1
- package/dist/commands/investigations/run.js.map +0 -1
- package/dist/commands/investigations/runs-list.js.map +0 -1
- package/dist/commands/investigations/runs.js.map +0 -1
- package/dist/commands/investigations/stats.js.map +0 -1
- package/dist/commands/investigations/trigger.js.map +0 -1
- package/dist/commands/schedules/get.js.map +0 -1
- package/dist/commands/schedules/list.js.map +0 -1
- package/dist/commands/signals/count.js.map +0 -1
- package/dist/commands/signals/get.js.map +0 -1
- package/dist/commands/signals/list.js +0 -30
- package/dist/commands/signals/list.js.map +0 -1
- package/dist/commands/signals/query.js +0 -52
- package/dist/commands/signals/query.js.map +0 -1
- package/dist/commands/users/get.js.map +0 -1
- package/dist/commands/users/list.js.map +0 -1
- /package/dist/commands/{commands → command}/for-device.d.ts +0 -0
- /package/dist/commands/{commands → command}/get.d.ts +0 -0
- /package/dist/commands/{commands → command}/history.d.ts +0 -0
- /package/dist/commands/{commands → command}/list.d.ts +0 -0
- /package/dist/commands/{commands → command}/send.d.ts +0 -0
- /package/dist/commands/{devices → device}/config.d.ts +0 -0
- /package/dist/commands/{devices → device}/create.d.ts +0 -0
- /package/dist/commands/{devices → device}/delete.d.ts +0 -0
- /package/dist/commands/{devices → device}/get.d.ts +0 -0
- /package/dist/commands/{devices → device}/last-seen.d.ts +0 -0
- /package/dist/commands/{devices → device}/list.d.ts +0 -0
- /package/dist/commands/{devices → device}/rename.d.ts +0 -0
- /package/dist/commands/{devices → device}/streams.d.ts +0 -0
- /package/dist/commands/{devices → device}/tag.d.ts +0 -0
- /package/dist/commands/{devices → device}/untag.d.ts +0 -0
- /package/dist/commands/{events → event}/get.d.ts +0 -0
- /package/dist/commands/{events → event}/list.d.ts +0 -0
- /package/dist/commands/{event-triggers → event-trigger}/get.d.ts +0 -0
- /package/dist/commands/{event-triggers → event-trigger}/list.d.ts +0 -0
- /package/dist/commands/{fleets → fleet}/get.d.ts +0 -0
- /package/dist/commands/{fleets → fleet}/list.d.ts +0 -0
- /package/dist/commands/{investigations → investigation}/analytics.d.ts +0 -0
- /package/dist/commands/{investigations → investigation}/get.d.ts +0 -0
- /package/dist/commands/{investigations → investigation}/list.d.ts +0 -0
- /package/dist/commands/{investigations → investigation}/run.d.ts +0 -0
- /package/dist/commands/{investigations → investigation}/runs-list.d.ts +0 -0
- /package/dist/commands/{investigations → investigation}/runs.d.ts +0 -0
- /package/dist/commands/{investigations → investigation}/stats.d.ts +0 -0
- /package/dist/commands/{investigations → investigation}/trigger.d.ts +0 -0
- /package/dist/commands/{schedules → schedule}/get.d.ts +0 -0
- /package/dist/commands/{schedules → schedule}/list.d.ts +0 -0
- /package/dist/commands/{signals → signal}/count.d.ts +0 -0
- /package/dist/commands/{signals → signal}/get.d.ts +0 -0
- /package/dist/commands/{users → user}/get.d.ts +0 -0
- /package/dist/commands/{users → user}/list.d.ts +0 -0
|
@@ -0,0 +1,50 @@
|
|
|
1
|
+
import { Args, Flags } from '@oclif/core';
|
|
2
|
+
import { BaseCommand } from '../../base-command.js';
|
|
3
|
+
export default class PersonaDelegateTask extends BaseCommand {
|
|
4
|
+
static args = {
|
|
5
|
+
id: Args.string({ description: 'Persona ID (UUID)', required: true }),
|
|
6
|
+
goal: Args.string({ description: 'The task goal / instruction for the persona', required: true }),
|
|
7
|
+
};
|
|
8
|
+
static description = `Delegate a task to a persona for async execution.
|
|
9
|
+
|
|
10
|
+
Creates a task with the given goal, assigns it to the persona, and queues it to run in the background. Returns immediately with a task ID you can use to check status later via "persona task-status".`;
|
|
11
|
+
static examples = [
|
|
12
|
+
'<%= config.bin %> persona delegate-task <persona-id> "Analyze recent device failures and summarize findings"',
|
|
13
|
+
'<%= config.bin %> persona delegate-task <persona-id> "Generate a daily report of fleet health" --name "Daily Fleet Report"',
|
|
14
|
+
'<%= config.bin %> persona delegate-task <persona-id> "Check all offline devices" --dev',
|
|
15
|
+
];
|
|
16
|
+
static flags = {
|
|
17
|
+
name: Flags.string({
|
|
18
|
+
char: 'n',
|
|
19
|
+
description: 'Task name (defaults to first 50 chars of goal)',
|
|
20
|
+
}),
|
|
21
|
+
};
|
|
22
|
+
static summary = 'Delegate an async task to a persona';
|
|
23
|
+
async run() {
|
|
24
|
+
const { goal, id: personaId } = this.args;
|
|
25
|
+
const name = this.flags.name ?? goal.slice(0, 50);
|
|
26
|
+
// Step 1: Create the task
|
|
27
|
+
const task = await this.api('theopolis', 'tasks', {
|
|
28
|
+
body: {
|
|
29
|
+
goal,
|
|
30
|
+
guardrails: '',
|
|
31
|
+
meaningfulness: '',
|
|
32
|
+
name,
|
|
33
|
+
personaId,
|
|
34
|
+
},
|
|
35
|
+
});
|
|
36
|
+
// Step 2: Queue it for async execution
|
|
37
|
+
await this.api('theopolis', `tasks/${task.id}/runs/queue`, { body: {} });
|
|
38
|
+
if (!this.jsonEnabled()) {
|
|
39
|
+
this.log(`\nTask delegated (${this.env}):\n`);
|
|
40
|
+
this.log(` Task ID ${task.id}`);
|
|
41
|
+
this.log(` Name ${name}`);
|
|
42
|
+
this.log(` Persona ${personaId}`);
|
|
43
|
+
this.log(` Status queued`);
|
|
44
|
+
this.log(`\n Check progress: fcli persona task-status ${task.id}`);
|
|
45
|
+
this.log('');
|
|
46
|
+
}
|
|
47
|
+
return { personaId, queued: true, taskId: task.id, taskName: name };
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
//# sourceMappingURL=delegate-task.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"delegate-task.js","sourceRoot":"","sources":["../../../src/commands/persona/delegate-task.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,IAAI,EAAE,KAAK,EAAC,MAAM,aAAa,CAAA;AAEvC,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAA;AAUjD,MAAM,CAAC,OAAO,OAAO,mBAAoB,SAAQ,WAAuC;IACtF,MAAM,CAAU,IAAI,GAAG;QACrB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,mBAAmB,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;QACnE,IAAI,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,6CAA6C,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;KAChG,CAAA;IAED,MAAM,CAAU,WAAW,GAAG;;uMAEuK,CAAA;IAErM,MAAM,CAAU,QAAQ,GAAG;QACzB,8GAA8G;QAC9G,4HAA4H;QAC5H,wFAAwF;KACzF,CAAA;IAED,MAAM,CAAU,KAAK,GAAG;QACtB,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC;YACjB,IAAI,EAAE,GAAG;YACT,WAAW,EAAE,gDAAgD;SAC9D,CAAC;KACH,CAAA;IAED,MAAM,CAAU,OAAO,GAAG,qCAAqC,CAAA;IAExD,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,IAAI,EAAE,EAAE,EAAE,SAAS,EAAC,GAAG,IAAI,CAAC,IAAI,CAAA;QACvC,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAA;QAEjD,0BAA0B;QAC1B,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CACzB,WAAW,EACX,OAAO,EACP;YACE,IAAI,EAAE;gBACJ,IAAI;gBACJ,UAAU,EAAE,EAAE;gBACd,cAAc,EAAE,EAAE;gBAClB,IAAI;gBACJ,SAAS;aACV;SACF,CACF,CAAA;QAED,uCAAuC;QACvC,MAAM,IAAI,CAAC,GAAG,CACZ,WAAW,EACX,SAAS,IAAI,CAAC,EAAE,aAAa,EAC7B,EAAC,IAAI,EAAE,EAAE,EAAC,CACX,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,qBAAqB,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;YAC7C,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;YACnC,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,EAAE,CAAC,CAAA;YAChC,IAAI,CAAC,GAAG,CAAC,gBAAgB,SAAS,EAAE,CAAC,CAAA;YACrC,IAAI,CAAC,GAAG,CAAC,qBAAqB,CAAC,CAAA;YAC/B,IAAI,CAAC,GAAG,CAAC,gDAAgD,IAAI,CAAC,EAAE,EAAE,CAAC,CAAA;YACnE,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;QAED,OAAO,EAAC,SAAS,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,CAAC,EAAE,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAA;IACnE,CAAC"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { BaseCommand } from '../../base-command.js';
|
|
2
|
+
export default class PersonasGet extends BaseCommand<typeof PersonasGet> {
|
|
3
|
+
static args: {
|
|
4
|
+
id: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
+
};
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static summary: string;
|
|
9
|
+
run(): Promise<Record<string, unknown>>;
|
|
10
|
+
}
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import { Args } from '@oclif/core';
|
|
2
|
+
import { BaseCommand } from '../../base-command.js';
|
|
3
|
+
import { formatDetail, formatTable } from '../../lib/formatters.js';
|
|
4
|
+
export default class PersonasGet extends BaseCommand {
|
|
5
|
+
static args = {
|
|
6
|
+
id: Args.string({ description: 'Persona ID (UUID)', required: true }),
|
|
7
|
+
};
|
|
8
|
+
static description = `Get detailed information about a persona including its integrations and available tools.
|
|
9
|
+
|
|
10
|
+
Uses the user-level persona endpoint which merges org, persona, and user configurations.`;
|
|
11
|
+
static examples = [
|
|
12
|
+
'<%= config.bin %> personas get <persona-id>',
|
|
13
|
+
'<%= config.bin %> personas get <persona-id> --json',
|
|
14
|
+
'<%= config.bin %> personas get <persona-id> --dev',
|
|
15
|
+
];
|
|
16
|
+
static summary = 'Get persona details and tools';
|
|
17
|
+
async run() {
|
|
18
|
+
const persona = await this.api('gateway', `personas/user/${this.args.id}`, { method: 'GET' });
|
|
19
|
+
if (!this.jsonEnabled()) {
|
|
20
|
+
// --- Persona overview ---
|
|
21
|
+
this.log(`\nPersona Details (${this.env}):\n`);
|
|
22
|
+
this.log(formatDetail({
|
|
23
|
+
aiModel: persona.aiModel ?? '—',
|
|
24
|
+
builtIn: persona.builtIn ?? false,
|
|
25
|
+
createdAt: persona.createdAt,
|
|
26
|
+
description: persona.description ?? '—',
|
|
27
|
+
dynamicToolLoading: persona.enableDynamicToolLoading ?? false,
|
|
28
|
+
enabled: persona.enabled,
|
|
29
|
+
name: persona.name ?? '—',
|
|
30
|
+
personaId: persona.personaId,
|
|
31
|
+
updatedAt: persona.updatedAt,
|
|
32
|
+
}, {
|
|
33
|
+
aiModel: 'AI Model',
|
|
34
|
+
builtIn: 'Built-in',
|
|
35
|
+
createdAt: 'Created',
|
|
36
|
+
description: 'Description',
|
|
37
|
+
dynamicToolLoading: 'Dynamic Tool Loading',
|
|
38
|
+
enabled: 'Enabled',
|
|
39
|
+
name: 'Name',
|
|
40
|
+
personaId: 'ID',
|
|
41
|
+
updatedAt: 'Updated',
|
|
42
|
+
}));
|
|
43
|
+
// --- Instructions (truncated) ---
|
|
44
|
+
if (persona.instructions) {
|
|
45
|
+
const preview = persona.instructions.length > 200
|
|
46
|
+
? persona.instructions.slice(0, 200) + '...'
|
|
47
|
+
: persona.instructions;
|
|
48
|
+
this.log(`\n Instructions:\n ${preview.split('\n').join('\n ')}`);
|
|
49
|
+
}
|
|
50
|
+
// --- Integrations & Tools ---
|
|
51
|
+
const integrations = (persona.integrations ?? []).filter((i) => i.enabled !== false);
|
|
52
|
+
if (integrations.length > 0) {
|
|
53
|
+
this.log(`\n\nIntegrations (${integrations.length}):\n`);
|
|
54
|
+
for (const integration of integrations) {
|
|
55
|
+
const label = integration.name ?? integration.aiIntegrationId;
|
|
56
|
+
this.log(` ${label}`);
|
|
57
|
+
if (integration.description) {
|
|
58
|
+
this.log(` ${integration.description}`);
|
|
59
|
+
}
|
|
60
|
+
const tools = (integration.tools ?? []).filter((t) => t.enabled);
|
|
61
|
+
if (tools.length > 0) {
|
|
62
|
+
this.log('');
|
|
63
|
+
const toolColumns = [
|
|
64
|
+
{ key: 'name', label: 'TOOL', width: 40 },
|
|
65
|
+
{ key: 'description', label: 'DESCRIPTION', width: 60 },
|
|
66
|
+
];
|
|
67
|
+
const toolRows = tools.map((t) => ({
|
|
68
|
+
description: t.description,
|
|
69
|
+
name: t.name,
|
|
70
|
+
}));
|
|
71
|
+
this.log(formatTable(toolRows, toolColumns));
|
|
72
|
+
}
|
|
73
|
+
else {
|
|
74
|
+
this.log(' No enabled tools');
|
|
75
|
+
}
|
|
76
|
+
this.log('');
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
else {
|
|
80
|
+
this.log('\n No integrations configured.\n');
|
|
81
|
+
}
|
|
82
|
+
// --- Delegations ---
|
|
83
|
+
const delegations = persona.delegations ?? [];
|
|
84
|
+
if (delegations.length > 0) {
|
|
85
|
+
this.log(`Delegations (${delegations.length}):\n`);
|
|
86
|
+
const delColumns = [
|
|
87
|
+
{ key: 'personaId', label: 'PERSONA ID', width: 40 },
|
|
88
|
+
{ key: 'name', label: 'NAME', width: 25 },
|
|
89
|
+
{ key: 'description', label: 'DESCRIPTION', width: 50 },
|
|
90
|
+
];
|
|
91
|
+
this.log(formatTable(delegations, delColumns));
|
|
92
|
+
this.log('');
|
|
93
|
+
}
|
|
94
|
+
}
|
|
95
|
+
return persona;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
//# sourceMappingURL=get.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/persona/get.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import { BaseCommand } from '../../base-command.js';
|
|
2
|
-
export default class
|
|
2
|
+
export default class PersonasList extends BaseCommand<typeof PersonasList> {
|
|
3
3
|
static description: string;
|
|
4
4
|
static examples: string[];
|
|
5
5
|
static summary: string;
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { BaseCommand } from '../../base-command.js';
|
|
2
|
+
import { formatTable } from '../../lib/formatters.js';
|
|
3
|
+
export default class PersonasList extends BaseCommand {
|
|
4
|
+
static description = `List AI personas available in your organization.
|
|
5
|
+
|
|
6
|
+
Shows both built-in and custom personas with their ID, name, and description.`;
|
|
7
|
+
static examples = [
|
|
8
|
+
'<%= config.bin %> personas list',
|
|
9
|
+
'<%= config.bin %> personas list --json',
|
|
10
|
+
'<%= config.bin %> personas list --dev',
|
|
11
|
+
];
|
|
12
|
+
static summary = 'List AI personas';
|
|
13
|
+
async run() {
|
|
14
|
+
const result = await this.api('gateway', 'personas/org', { method: 'GET' });
|
|
15
|
+
const personas = (result.items ?? []).filter((p) => p.enabled);
|
|
16
|
+
if (!this.jsonEnabled()) {
|
|
17
|
+
const columns = [
|
|
18
|
+
{ key: 'personaId', label: 'ID', width: 40 },
|
|
19
|
+
{ key: 'name', label: 'NAME', width: 30 },
|
|
20
|
+
{ key: 'description', label: 'DESCRIPTION', width: 50 },
|
|
21
|
+
{ key: 'aiModel', label: 'MODEL', width: 20 },
|
|
22
|
+
{ key: 'builtIn', label: 'BUILT-IN', width: 10 },
|
|
23
|
+
];
|
|
24
|
+
this.log(`\nPersonas (${this.env}):\n`);
|
|
25
|
+
this.log(formatTable(personas, columns));
|
|
26
|
+
this.log('');
|
|
27
|
+
}
|
|
28
|
+
return { items: personas };
|
|
29
|
+
}
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/persona/list.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,WAAW,EAAC,MAAM,uBAAuB,CAAA;AACjD,OAAO,EAAc,WAAW,EAAC,MAAM,yBAAyB,CAAA;AAWhE,MAAM,CAAC,OAAO,OAAO,YAAa,SAAQ,WAAgC;IACxE,MAAM,CAAU,WAAW,GAAG;;8EAE8C,CAAA;IAE5E,MAAM,CAAU,QAAQ,GAAG;QACzB,iCAAiC;QACjC,wCAAwC;QACxC,uCAAuC;KACxC,CAAA;IAED,MAAM,CAAU,OAAO,GAAG,kBAAkB,CAAA;IAErC,KAAK,CAAC,GAAG;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAC3B,SAAS,EACT,cAAc,EACd,EAAC,MAAM,EAAE,KAAK,EAAC,CAChB,CAAA;QAED,MAAM,QAAQ,GAAG,CAAC,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC,CAAA;QAE9D,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,OAAO,GAAa;gBACxB,EAAC,GAAG,EAAE,WAAW,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAC;gBAC1C,EAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAC;gBACvC,EAAC,GAAG,EAAE,aAAa,EAAE,KAAK,EAAE,aAAa,EAAE,KAAK,EAAE,EAAE,EAAC;gBACrD,EAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,EAAC;gBAC3C,EAAC,GAAG,EAAE,SAAS,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,EAAE,EAAC;aAC/C,CAAA;YAED,IAAI,CAAC,GAAG,CAAC,eAAe,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;YACvC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,QAAgD,EAAE,OAAO,CAAC,CAAC,CAAA;YAChF,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;QAED,OAAO,EAAC,KAAK,EAAE,QAAQ,EAAC,CAAA;IAC1B,CAAC"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { BaseCommand } from '../../base-command.js';
|
|
2
|
+
export default class PersonaTaskStatus extends BaseCommand<typeof PersonaTaskStatus> {
|
|
3
|
+
static args: {
|
|
4
|
+
taskId: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
+
};
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static summary: string;
|
|
9
|
+
run(): Promise<{
|
|
10
|
+
items: unknown[];
|
|
11
|
+
}>;
|
|
12
|
+
}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import { Args } from '@oclif/core';
|
|
2
|
+
import { BaseCommand } from '../../base-command.js';
|
|
3
|
+
import { formatDetail } from '../../lib/formatters.js';
|
|
4
|
+
export default class PersonaTaskStatus extends BaseCommand {
|
|
5
|
+
static args = {
|
|
6
|
+
taskId: Args.string({ description: 'Task ID (from delegate-task output)', required: true }),
|
|
7
|
+
};
|
|
8
|
+
static description = `Check the status and results of a delegated task.
|
|
9
|
+
|
|
10
|
+
Shows all runs for a task including their status, result summary, and timestamps.`;
|
|
11
|
+
static examples = [
|
|
12
|
+
'<%= config.bin %> persona task-status <task-id>',
|
|
13
|
+
'<%= config.bin %> persona task-status <task-id> --json',
|
|
14
|
+
'<%= config.bin %> persona task-status <task-id> --dev',
|
|
15
|
+
];
|
|
16
|
+
static summary = 'Check status of a delegated task';
|
|
17
|
+
async run() {
|
|
18
|
+
const { taskId } = this.args;
|
|
19
|
+
const result = await this.api('theopolis', `tasks/${taskId}/results`, { method: 'GET' });
|
|
20
|
+
const runs = result.items ?? [];
|
|
21
|
+
if (!this.jsonEnabled()) {
|
|
22
|
+
this.log(`\nTask Runs for ${taskId} (${this.env}):\n`);
|
|
23
|
+
if (runs.length === 0) {
|
|
24
|
+
this.log(' No runs found. The task may still be queued.\n');
|
|
25
|
+
return result;
|
|
26
|
+
}
|
|
27
|
+
for (const run of runs) {
|
|
28
|
+
this.log(formatDetail({
|
|
29
|
+
createdAt: run.createdAt,
|
|
30
|
+
id: run.id,
|
|
31
|
+
status: run.status,
|
|
32
|
+
threadId: run.threadId ?? '—',
|
|
33
|
+
title: run.title ?? '—',
|
|
34
|
+
tldr: run.tldr ?? '—',
|
|
35
|
+
updatedAt: run.updatedAt,
|
|
36
|
+
}, {
|
|
37
|
+
createdAt: 'Started',
|
|
38
|
+
id: 'Run ID',
|
|
39
|
+
status: 'Status',
|
|
40
|
+
threadId: 'Thread',
|
|
41
|
+
title: 'Title',
|
|
42
|
+
tldr: 'Summary',
|
|
43
|
+
updatedAt: 'Updated',
|
|
44
|
+
}));
|
|
45
|
+
if (run.result && run.status === 'completed') {
|
|
46
|
+
const preview = run.result.length > 500
|
|
47
|
+
? run.result.slice(0, 500) + '...'
|
|
48
|
+
: run.result;
|
|
49
|
+
this.log(`\n Result:\n ${preview.split('\n').join('\n ')}`);
|
|
50
|
+
}
|
|
51
|
+
this.log('');
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
return result;
|
|
55
|
+
}
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=task-status.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"task-status.js","sourceRoot":"","sources":["../../../src/commands/persona/task-status.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;AAgB9E,MAAM,CAAC,OAAO,OAAO,iBAAkB,SAAQ,WAAqC;IAClF,MAAM,CAAU,IAAI,GAAG;QACrB,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,qCAAqC,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;KAC1F,CAAA;IAED,MAAM,CAAU,WAAW,GAAG;;kFAEkD,CAAA;IAEhF,MAAM,CAAU,QAAQ,GAAG;QACzB,iDAAiD;QACjD,wDAAwD;QACxD,uDAAuD;KACxD,CAAA;IAED,MAAM,CAAU,OAAO,GAAG,kCAAkC,CAAA;IAErD,KAAK,CAAC,GAAG;QACd,MAAM,EAAC,MAAM,EAAC,GAAG,IAAI,CAAC,IAAI,CAAA;QAE1B,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAC3B,WAAW,EACX,SAAS,MAAM,UAAU,EACzB,EAAC,MAAM,EAAE,KAAK,EAAC,CAChB,CAAA;QAED,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,IAAI,EAAE,CAAA;QAE/B,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,mBAAmB,MAAM,KAAK,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;YAEtD,IAAI,IAAI,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;gBACtB,IAAI,CAAC,GAAG,CAAC,kDAAkD,CAAC,CAAA;gBAC5D,OAAO,MAAM,CAAA;YACf,CAAC;YAED,KAAK,MAAM,GAAG,IAAI,IAAI,EAAE,CAAC;gBACvB,IAAI,CAAC,GAAG,CAAC,YAAY,CACnB;oBACE,SAAS,EAAE,GAAG,CAAC,SAAS;oBACxB,EAAE,EAAE,GAAG,CAAC,EAAE;oBACV,MAAM,EAAE,GAAG,CAAC,MAAM;oBAClB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG;oBAC7B,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,GAAG;oBACvB,IAAI,EAAE,GAAG,CAAC,IAAI,IAAI,GAAG;oBACrB,SAAS,EAAE,GAAG,CAAC,SAAS;iBACzB,EACD;oBACE,SAAS,EAAE,SAAS;oBACpB,EAAE,EAAE,QAAQ;oBACZ,MAAM,EAAE,QAAQ;oBAChB,QAAQ,EAAE,QAAQ;oBAClB,KAAK,EAAE,OAAO;oBACd,IAAI,EAAE,SAAS;oBACf,SAAS,EAAE,SAAS;iBACrB,CACF,CAAC,CAAA;gBAEF,IAAI,GAAG,CAAC,MAAM,IAAI,GAAG,CAAC,MAAM,KAAK,WAAW,EAAE,CAAC;oBAC7C,MAAM,OAAO,GAAG,GAAG,CAAC,MAAM,CAAC,MAAM,GAAG,GAAG;wBACrC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,KAAK;wBAClC,CAAC,CAAC,GAAG,CAAC,MAAM,CAAA;oBACd,IAAI,CAAC,GAAG,CAAC,oBAAoB,OAAO,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC,CAAA;gBACpE,CAAC;gBAED,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;YACd,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC"}
|
|
@@ -10,8 +10,8 @@ export default class SchedulesGet extends BaseCommand {
|
|
|
10
10
|
Shows the full schedule configuration including cron expression, command template,
|
|
11
11
|
investigation link, and execution settings.`;
|
|
12
12
|
static examples = [
|
|
13
|
-
'<%= config.bin %>
|
|
14
|
-
'<%= config.bin %>
|
|
13
|
+
'<%= config.bin %> schedule get <schedule-id>',
|
|
14
|
+
'<%= config.bin %> schedule get <schedule-id> --json',
|
|
15
15
|
];
|
|
16
16
|
static summary = 'Get schedule details';
|
|
17
17
|
async run() {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"get.js","sourceRoot":"","sources":["../../../src/commands/schedule/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,YAAa,SAAQ,WAAgC;IACxE,MAAM,CAAU,IAAI,GAAG;QACrB,EAAE,EAAE,IAAI,CAAC,MAAM,CAAC,EAAC,WAAW,EAAE,oBAAoB,EAAE,QAAQ,EAAE,IAAI,EAAC,CAAC;KACrE,CAAA;IAED,MAAM,CAAU,WAAW,GAAG;;;4CAGY,CAAA;IAE1C,MAAM,CAAU,QAAQ,GAAG;QACzB,8CAA8C;QAC9C,qDAAqD;KACtD,CAAA;IAED,MAAM,CAAU,OAAO,GAAG,sBAAsB,CAAA;IAEzC,KAAK,CAAC,GAAG;QACd,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAA0B,OAAO,EAAE,aAAa,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,EAAE;YAC7F,MAAM,EAAE,KAAK;SACd,CAAC,CAAA;QAEF,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,uBAAuB,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;YAC/C,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAA;YAChC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;QAED,OAAO,QAAQ,CAAA;IACjB,CAAC"}
|
|
@@ -5,8 +5,8 @@ export default class SchedulesList extends BaseCommand {
|
|
|
5
5
|
|
|
6
6
|
Schedules can trigger commands or investigations on a recurring (cron) or one-time basis.`;
|
|
7
7
|
static examples = [
|
|
8
|
-
'<%= config.bin %>
|
|
9
|
-
'<%= config.bin %>
|
|
8
|
+
'<%= config.bin %> schedule list',
|
|
9
|
+
'<%= config.bin %> schedule list --json',
|
|
10
10
|
];
|
|
11
11
|
static summary = 'List schedules';
|
|
12
12
|
async run() {
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../src/commands/schedule/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,aAAc,SAAQ,WAAiC;IAC1E,MAAM,CAAU,WAAW,GAAG;;0FAE0D,CAAA;IAExF,MAAM,CAAU,QAAQ,GAAG;QACzB,iCAAiC;QACjC,wCAAwC;KACzC,CAAA;IAED,MAAM,CAAU,OAAO,GAAG,gBAAgB,CAAA;IAEnC,KAAK,CAAC,GAAG;QACd,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAC3B,OAAO,EACP,WAAW,EACX,EAAC,MAAM,EAAE,KAAK,EAAC,CAChB,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,MAAM,OAAO,GAAa;gBACxB,EAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAC;gBACvC,EAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAC;gBACvC,EAAC,GAAG,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,KAAK,EAAE,EAAE,EAAC;gBACvC,EAAC,GAAG,EAAE,QAAQ,EAAE,KAAK,EAAE,QAAQ,EAAE,KAAK,EAAE,EAAE,EAAC;gBAC3C,EAAC,GAAG,EAAE,IAAI,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,EAAE,EAAC;aACpC,CAAA;YAED,IAAI,CAAC,GAAG,CAAC,gBAAgB,IAAI,CAAC,GAAG,MAAM,CAAC,CAAA;YACxC,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"}
|
|
@@ -6,9 +6,9 @@ export default class SignalsCount extends BaseCommand {
|
|
|
6
6
|
|
|
7
7
|
Returns total counts and per-type breakdowns (manual, eventTrigger, schedule, slack).`;
|
|
8
8
|
static examples = [
|
|
9
|
-
'<%= config.bin %>
|
|
10
|
-
'<%= config.bin %>
|
|
11
|
-
'<%= config.bin %>
|
|
9
|
+
'<%= config.bin %> signal count',
|
|
10
|
+
'<%= config.bin %> signal count --start 2026-01-01 --end 2026-02-01',
|
|
11
|
+
'<%= config.bin %> signal count --json',
|
|
12
12
|
];
|
|
13
13
|
static flags = {
|
|
14
14
|
end: Flags.string({
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"count.js","sourceRoot":"","sources":["../../../src/commands/signal/count.ts"],"names":[],"mappings":"AAAA,OAAO,EAAC,KAAK,EAAC,MAAM,aAAa,CAAA;AAEjC,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,WAAW,GAAG;;sFAEsD,CAAA;IAEpF,MAAM,CAAU,QAAQ,GAAG;QACzB,gCAAgC;QAChC,oEAAoE;QACpE,uCAAuC;KACxC,CAAA;IAED,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,EAAE,KAAK,CAAC,MAAM,CAAC;YAChB,WAAW,EAAE,qBAAqB;SACnC,CAAC;QACF,KAAK,EAAE,KAAK,CAAC,MAAM,CAAC;YAClB,WAAW,EAAE,uBAAuB;SACrC,CAAC;KACH,CAAA;IAED,MAAM,CAAU,OAAO,GAAG,2BAA2B,CAAA;IAE9C,KAAK,CAAC,GAAG;QACd,MAAM,IAAI,GAA4B,EAAE,CAAA;QACxC,IAAI,IAAI,CAAC,KAAK,CAAC,KAAK;YAAE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,KAAK,CAAA;QACvD,IAAI,IAAI,CAAC,KAAK,CAAC,GAAG;YAAE,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAA;QAEjD,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,GAAG,CAC3B,WAAW,EACX,eAAe,EACf,EAAC,IAAI,EAAC,CACP,CAAA;QAED,IAAI,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC;YACxB,IAAI,CAAC,GAAG,CAAC,oBAAoB,IAAI,CAAC,GAAG,kBAAkB,CAAC,CAAA;YACxD,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,MAAM,IAAI,MAAM,EAAE;gBAC7C,YAAY,EAAE,eAAe;gBAC7B,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,UAAU;gBACpB,KAAK,EAAE,OAAO;gBACd,KAAK,EAAE,OAAO;aACf,CAAC,CAAC,CAAA;YACH,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAA;QACd,CAAC;QAED,OAAO,MAAM,CAAA;IACf,CAAC"}
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
import { BaseCommand } from '../../base-command.js';
|
|
2
|
+
export default class SignalCreate extends BaseCommand<typeof SignalCreate> {
|
|
3
|
+
static args: {
|
|
4
|
+
goal: import("@oclif/core/interfaces").Arg<string, Record<string, unknown>>;
|
|
5
|
+
};
|
|
6
|
+
static description: string;
|
|
7
|
+
static examples: string[];
|
|
8
|
+
static flags: {
|
|
9
|
+
device: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
10
|
+
'ground-truth': import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
11
|
+
investigation: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
12
|
+
persona: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
|
|
13
|
+
};
|
|
14
|
+
static summary: string;
|
|
15
|
+
run(): Promise<Record<string, unknown>>;
|
|
16
|
+
}
|
|
@@ -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":"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"}
|
|
@@ -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 %>
|
|
15
|
-
'<%= config.bin %>
|
|
16
|
-
'<%= config.bin %>
|
|
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
|
};
|