@rooaak/cli 0.1.0-beta.1
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 +121 -0
- package/dist/cli.d.ts +2 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +4 -0
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +1 -0
- package/dist/src/commands/auth-login.d.ts +3 -0
- package/dist/src/commands/auth-login.d.ts.map +1 -0
- package/dist/src/commands/auth-login.js +97 -0
- package/dist/src/commands/config-profile-use.d.ts +3 -0
- package/dist/src/commands/config-profile-use.d.ts.map +1 -0
- package/dist/src/commands/config-profile-use.js +88 -0
- package/dist/src/commands/config-whoami.d.ts +3 -0
- package/dist/src/commands/config-whoami.d.ts.map +1 -0
- package/dist/src/commands/config-whoami.js +101 -0
- package/dist/src/commands/help.d.ts +3 -0
- package/dist/src/commands/help.d.ts.map +1 -0
- package/dist/src/commands/help.js +61 -0
- package/dist/src/commands/init/index.d.ts +3 -0
- package/dist/src/commands/init/index.d.ts.map +1 -0
- package/dist/src/commands/init/index.js +756 -0
- package/dist/src/commands/init/prompting.d.ts +16 -0
- package/dist/src/commands/init/prompting.d.ts.map +1 -0
- package/dist/src/commands/init/prompting.js +63 -0
- package/dist/src/commands/init/wait-for-message.d.ts +45 -0
- package/dist/src/commands/init/wait-for-message.d.ts.map +1 -0
- package/dist/src/commands/init/wait-for-message.js +27 -0
- package/dist/src/commands/version.d.ts +3 -0
- package/dist/src/commands/version.d.ts.map +1 -0
- package/dist/src/commands/version.js +14 -0
- package/dist/src/generated/handlers.d.ts +5 -0
- package/dist/src/generated/handlers.d.ts.map +1 -0
- package/dist/src/generated/handlers.js +17 -0
- package/dist/src/generated/manifest.d.ts +3 -0
- package/dist/src/generated/manifest.d.ts.map +1 -0
- package/dist/src/generated/manifest.js +56 -0
- package/dist/src/lib/argv.d.ts +16 -0
- package/dist/src/lib/argv.d.ts.map +1 -0
- package/dist/src/lib/argv.js +68 -0
- package/dist/src/lib/base-url.d.ts +7 -0
- package/dist/src/lib/base-url.d.ts.map +1 -0
- package/dist/src/lib/base-url.js +6 -0
- package/dist/src/lib/exit-codes.d.ts +11 -0
- package/dist/src/lib/exit-codes.d.ts.map +1 -0
- package/dist/src/lib/exit-codes.js +29 -0
- package/dist/src/lib/generated-command.d.ts +25 -0
- package/dist/src/lib/generated-command.d.ts.map +1 -0
- package/dist/src/lib/generated-command.js +357 -0
- package/dist/src/lib/normalize-error.d.ts +45 -0
- package/dist/src/lib/normalize-error.d.ts.map +1 -0
- package/dist/src/lib/normalize-error.js +128 -0
- package/dist/src/lib/options.d.ts +12 -0
- package/dist/src/lib/options.d.ts.map +1 -0
- package/dist/src/lib/options.js +49 -0
- package/dist/src/lib/package-version.d.ts +2 -0
- package/dist/src/lib/package-version.d.ts.map +1 -0
- package/dist/src/lib/package-version.js +22 -0
- package/dist/src/lib/paths.d.ts +2 -0
- package/dist/src/lib/paths.d.ts.map +1 -0
- package/dist/src/lib/paths.js +21 -0
- package/dist/src/lib/profile-name.d.ts +2 -0
- package/dist/src/lib/profile-name.d.ts.map +1 -0
- package/dist/src/lib/profile-name.js +4 -0
- package/dist/src/lib/profile-store.d.ts +31 -0
- package/dist/src/lib/profile-store.d.ts.map +1 -0
- package/dist/src/lib/profile-store.js +179 -0
- package/dist/src/lib/renderer.d.ts +10 -0
- package/dist/src/lib/renderer.d.ts.map +1 -0
- package/dist/src/lib/renderer.js +25 -0
- package/dist/src/lib/run.d.ts +12 -0
- package/dist/src/lib/run.d.ts.map +1 -0
- package/dist/src/lib/run.js +108 -0
- package/dist/src/lib/transport.d.ts +37 -0
- package/dist/src/lib/transport.d.ts.map +1 -0
- package/dist/src/lib/transport.js +65 -0
- package/dist/src/lib/types.d.ts +22 -0
- package/dist/src/lib/types.d.ts.map +1 -0
- package/dist/src/lib/types.js +1 -0
- package/package.json +46 -0
- package/rooaak.js +39 -0
- package/schemas/openapi.v1.json +6013 -0
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type PromptIO = {
|
|
2
|
+
stderr: NodeJS.WritableStream;
|
|
3
|
+
stdin: NodeJS.ReadableStream;
|
|
4
|
+
stdinIsTTY: boolean;
|
|
5
|
+
};
|
|
6
|
+
export declare function promptText(io: PromptIO, question: string, options?: {
|
|
7
|
+
defaultValue?: string;
|
|
8
|
+
allowEmpty?: boolean;
|
|
9
|
+
}): Promise<string>;
|
|
10
|
+
export declare function promptConfirm(io: PromptIO, question: string, options?: {
|
|
11
|
+
defaultYes?: boolean;
|
|
12
|
+
}): Promise<boolean>;
|
|
13
|
+
export declare function promptSecret(io: PromptIO, question: string, options?: {
|
|
14
|
+
allowEmpty?: boolean;
|
|
15
|
+
}): Promise<string>;
|
|
16
|
+
//# sourceMappingURL=prompting.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"prompting.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/prompting.ts"],"names":[],"mappings":"AAEA,MAAM,MAAM,QAAQ,GAAG;IAErB,MAAM,EAAE,MAAM,CAAC,cAAc,CAAC;IAC9B,KAAK,EAAE,MAAM,CAAC,cAAc,CAAC;IAC7B,UAAU,EAAE,OAAO,CAAC;CACrB,CAAC;AAEF,wBAAsB,UAAU,CAC9B,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,YAAY,CAAC,EAAE,MAAM,CAAC;IAAC,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACxD,OAAO,CAAC,MAAM,CAAC,CAiBjB;AAED,wBAAsB,aAAa,CAAC,EAAE,EAAE,QAAQ,EAAE,QAAQ,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GAAG,OAAO,CAAC,OAAO,CAAC,CAiBxH;AAED,wBAAsB,YAAY,CAChC,EAAE,EAAE,QAAQ,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,CAAC,EAAE;IAAE,UAAU,CAAC,EAAE,OAAO,CAAA;CAAE,GACjC,OAAO,CAAC,MAAM,CAAC,CAiBjB"}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
import readline from "node:readline/promises";
|
|
2
|
+
export async function promptText(io, question, options) {
|
|
3
|
+
const rl = readline.createInterface({
|
|
4
|
+
input: io.stdin,
|
|
5
|
+
output: io.stderr,
|
|
6
|
+
terminal: io.stdinIsTTY,
|
|
7
|
+
});
|
|
8
|
+
try {
|
|
9
|
+
const suffix = options?.defaultValue ? ` [${options.defaultValue}]` : "";
|
|
10
|
+
const answer = (await rl.question(`${question}${suffix}: `)).trim();
|
|
11
|
+
if (answer.length === 0) {
|
|
12
|
+
if (options?.defaultValue)
|
|
13
|
+
return options.defaultValue;
|
|
14
|
+
if (options?.allowEmpty)
|
|
15
|
+
return "";
|
|
16
|
+
}
|
|
17
|
+
return answer;
|
|
18
|
+
}
|
|
19
|
+
finally {
|
|
20
|
+
rl.close();
|
|
21
|
+
}
|
|
22
|
+
}
|
|
23
|
+
export async function promptConfirm(io, question, options) {
|
|
24
|
+
const defaultYes = options?.defaultYes ?? true;
|
|
25
|
+
const hint = defaultYes ? "Y/n" : "y/N";
|
|
26
|
+
const rl = readline.createInterface({
|
|
27
|
+
input: io.stdin,
|
|
28
|
+
output: io.stderr,
|
|
29
|
+
terminal: io.stdinIsTTY,
|
|
30
|
+
});
|
|
31
|
+
try {
|
|
32
|
+
const answer = (await rl.question(`${question} (${hint}): `)).trim().toLowerCase();
|
|
33
|
+
if (answer === "")
|
|
34
|
+
return defaultYes;
|
|
35
|
+
if (answer === "y" || answer === "yes")
|
|
36
|
+
return true;
|
|
37
|
+
if (answer === "n" || answer === "no")
|
|
38
|
+
return false;
|
|
39
|
+
return defaultYes;
|
|
40
|
+
}
|
|
41
|
+
finally {
|
|
42
|
+
rl.close();
|
|
43
|
+
}
|
|
44
|
+
}
|
|
45
|
+
export async function promptSecret(io, question, options) {
|
|
46
|
+
const rl = readline.createInterface({
|
|
47
|
+
input: io.stdin,
|
|
48
|
+
output: io.stderr,
|
|
49
|
+
// Disable terminal echo for secrets.
|
|
50
|
+
terminal: false,
|
|
51
|
+
});
|
|
52
|
+
try {
|
|
53
|
+
io.stderr.write(`${question}: `);
|
|
54
|
+
const answer = (await rl.question("")).trim();
|
|
55
|
+
if (!options?.allowEmpty && answer.length === 0)
|
|
56
|
+
return "";
|
|
57
|
+
return answer;
|
|
58
|
+
}
|
|
59
|
+
finally {
|
|
60
|
+
io.stderr.write("\n");
|
|
61
|
+
rl.close();
|
|
62
|
+
}
|
|
63
|
+
}
|
|
@@ -0,0 +1,45 @@
|
|
|
1
|
+
import { ExitCode } from "../../lib/exit-codes.js";
|
|
2
|
+
import type { Transport } from "../../lib/transport.js";
|
|
3
|
+
export type MessageRecord = {
|
|
4
|
+
id: string;
|
|
5
|
+
agentId: string;
|
|
6
|
+
sessionId: string;
|
|
7
|
+
message: string;
|
|
8
|
+
response: string | null;
|
|
9
|
+
status: string;
|
|
10
|
+
createdAt: string;
|
|
11
|
+
deliveredAt: string | null;
|
|
12
|
+
};
|
|
13
|
+
export type WaitForMessageResult = {
|
|
14
|
+
ok: true;
|
|
15
|
+
kind: "responded";
|
|
16
|
+
message: MessageRecord;
|
|
17
|
+
meta: {
|
|
18
|
+
status: number;
|
|
19
|
+
requestId?: string;
|
|
20
|
+
};
|
|
21
|
+
} | {
|
|
22
|
+
ok: true;
|
|
23
|
+
kind: "timeout";
|
|
24
|
+
messageId: string;
|
|
25
|
+
last?: MessageRecord;
|
|
26
|
+
waitedMs: number;
|
|
27
|
+
} | {
|
|
28
|
+
ok: false;
|
|
29
|
+
exit: ExitCode;
|
|
30
|
+
error: {
|
|
31
|
+
code: string;
|
|
32
|
+
message: string;
|
|
33
|
+
details: Record<string, unknown>;
|
|
34
|
+
meta: {
|
|
35
|
+
status?: number;
|
|
36
|
+
requestId?: string;
|
|
37
|
+
};
|
|
38
|
+
};
|
|
39
|
+
};
|
|
40
|
+
export declare function waitForMessageResponse(input: {
|
|
41
|
+
transport: Transport;
|
|
42
|
+
messageId: string;
|
|
43
|
+
timeoutMs: number;
|
|
44
|
+
}): Promise<WaitForMessageResult>;
|
|
45
|
+
//# sourceMappingURL=wait-for-message.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"wait-for-message.d.ts","sourceRoot":"","sources":["../../../../src/commands/init/wait-for-message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,yBAAyB,CAAC;AAGnD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,wBAAwB,CAAC;AAExD,MAAM,MAAM,aAAa,GAAG;IAC1B,EAAE,EAAE,MAAM,CAAC;IACX,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,GAAG,IAAI,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;CAC5B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAC5B;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,WAAW,CAAC;IAAC,OAAO,EAAE,aAAa,CAAC;IAAC,IAAI,EAAE;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,SAAS,CAAC,EAAE,MAAM,CAAA;KAAE,CAAA;CAAE,GACrG;IAAE,EAAE,EAAE,IAAI,CAAC;IAAC,IAAI,EAAE,SAAS,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,IAAI,CAAC,EAAE,aAAa,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GACxF;IAAE,EAAE,EAAE,KAAK,CAAC;IAAC,IAAI,EAAE,QAAQ,CAAC;IAAC,KAAK,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QAAC,IAAI,EAAE;YAAE,MAAM,CAAC,EAAE,MAAM,CAAC;YAAC,SAAS,CAAC,EAAE,MAAM,CAAA;SAAE,CAAA;KAAE,CAAA;CAAE,CAAC;AAM7J,wBAAsB,sBAAsB,CAAC,KAAK,EAAE;IAClD,SAAS,EAAE,SAAS,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;CACnB,GAAG,OAAO,CAAC,oBAAoB,CAAC,CA2BhC"}
|
|
@@ -0,0 +1,27 @@
|
|
|
1
|
+
import { exitCodeForError } from "../../lib/normalize-error.js";
|
|
2
|
+
function sleep(ms) {
|
|
3
|
+
return new Promise((resolve) => setTimeout(resolve, ms));
|
|
4
|
+
}
|
|
5
|
+
export async function waitForMessageResponse(input) {
|
|
6
|
+
const startedAt = Date.now();
|
|
7
|
+
let delayMs = 250;
|
|
8
|
+
let last;
|
|
9
|
+
while (true) {
|
|
10
|
+
const httpRes = await input.transport.getJson(`/api/v1/messages/${input.messageId}`);
|
|
11
|
+
if (!httpRes.ok) {
|
|
12
|
+
const err = httpRes.error;
|
|
13
|
+
return { ok: false, exit: exitCodeForError(err), error: err };
|
|
14
|
+
}
|
|
15
|
+
last = httpRes.data;
|
|
16
|
+
if (last.status === "responded" && typeof last.response === "string") {
|
|
17
|
+
return { ok: true, kind: "responded", message: last, meta: { status: httpRes.status, requestId: httpRes.requestId } };
|
|
18
|
+
}
|
|
19
|
+
const waitedMs = Date.now() - startedAt;
|
|
20
|
+
if (waitedMs >= input.timeoutMs) {
|
|
21
|
+
return { ok: true, kind: "timeout", messageId: input.messageId, last, waitedMs };
|
|
22
|
+
}
|
|
23
|
+
// Backoff up to 2s; no delay before the first poll is achieved by starting at 250ms and checking time after fetch.
|
|
24
|
+
await sleep(delayMs);
|
|
25
|
+
delayMs = Math.min(Math.floor(delayMs * 1.4), 2000);
|
|
26
|
+
}
|
|
27
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../../src/commands/version.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAEtD,wBAAgB,cAAc,CAAC,GAAG,EAAE,cAAc,GAAG,MAAM,CAU1D"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ExitCode } from "../lib/exit-codes.js";
|
|
2
|
+
import { getPackageVersion } from "../lib/package-version.js";
|
|
3
|
+
import { toJsonOkEnvelope } from "../lib/normalize-error.js";
|
|
4
|
+
import { createRenderer } from "../lib/renderer.js";
|
|
5
|
+
export function versionCommand(ctx) {
|
|
6
|
+
const r = createRenderer(ctx);
|
|
7
|
+
const version = getPackageVersion();
|
|
8
|
+
if (ctx.flags.json) {
|
|
9
|
+
r.json(toJsonOkEnvelope({ name: "rooaak", version }));
|
|
10
|
+
return ExitCode.Success;
|
|
11
|
+
}
|
|
12
|
+
ctx.stdout.write(`rooaak ${version}\n`);
|
|
13
|
+
return ExitCode.Success;
|
|
14
|
+
}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import type { CommandContext } from "../lib/types.js";
|
|
2
|
+
import { type GeneratedCommandSpec } from "../lib/generated-command.js";
|
|
3
|
+
export declare function findGeneratedCommand(group: string, action?: string): GeneratedCommandSpec | null;
|
|
4
|
+
export declare function dispatchGeneratedCommand(ctx: CommandContext, group: string, action: string, argv: string[]): Promise<number>;
|
|
5
|
+
//# sourceMappingURL=handlers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handlers.d.ts","sourceRoot":"","sources":["../../../src/generated/handlers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,iBAAiB,CAAC;AACtD,OAAO,EAAuB,KAAK,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAQ7F,wBAAgB,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,MAAM,GAAG,oBAAoB,GAAG,IAAI,CAGhG;AAED,wBAAsB,wBAAwB,CAAC,GAAG,EAAE,cAAc,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAIlI"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { runGeneratedCommand } from "../lib/generated-command.js";
|
|
2
|
+
import { generatedCommandManifest } from "./manifest.js";
|
|
3
|
+
const index = new Map();
|
|
4
|
+
for (const spec of generatedCommandManifest) {
|
|
5
|
+
index.set(`${spec.group} ${spec.action}`, spec);
|
|
6
|
+
}
|
|
7
|
+
export function findGeneratedCommand(group, action) {
|
|
8
|
+
if (!action)
|
|
9
|
+
return null;
|
|
10
|
+
return index.get(`${group} ${action}`) ?? null;
|
|
11
|
+
}
|
|
12
|
+
export async function dispatchGeneratedCommand(ctx, group, action, argv) {
|
|
13
|
+
const spec = findGeneratedCommand(group, action);
|
|
14
|
+
if (!spec)
|
|
15
|
+
return 2;
|
|
16
|
+
return runGeneratedCommand(ctx, spec, argv);
|
|
17
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"manifest.d.ts","sourceRoot":"","sources":["../../../src/generated/manifest.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,eAAO,MAAM,wBAAwB,EAAE,oBAAoB,EAuD1D,CAAC"}
|
|
@@ -0,0 +1,56 @@
|
|
|
1
|
+
export const generatedCommandManifest = [
|
|
2
|
+
{ operationId: "v1.agents.composio.linkedAccounts.callback", group: "agents", action: "composio-linked-accounts-callback", method: "GET", pathTemplate: "/api/v1/agents/{id}/composio/linked-accounts/{provider}/callback", summary: "Linked-account OAuth callback", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--provider", wireName: "provider", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--state", wireName: "state", required: true, takesValue: true, description: undefined, source: "query", valueType: "string" }] },
|
|
3
|
+
{ operationId: "v1.agents.composio.linkedAccounts.initiate", group: "agents", action: "composio-linked-accounts-initiate", method: "POST", pathTemplate: "/api/v1/agents/{id}/composio/linked-accounts/{provider}/initiate", summary: "Initiate linked-account flow", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--provider", wireName: "provider", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--principal", wireName: "principal", required: true, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--return-url", wireName: "returnUrl", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }] },
|
|
4
|
+
{ operationId: "v1.agents.composio.linkedAccounts.list", group: "agents", action: "composio-linked-accounts-list", method: "GET", pathTemplate: "/api/v1/agents/{id}/composio/linked-accounts", summary: "List agent linked accounts", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--end-user-id", wireName: "endUserId", required: false, takesValue: true, description: undefined, source: "query", valueType: "string" }, { name: "--principal-type", wireName: "principalType", required: false, takesValue: true, description: undefined, source: "query", valueType: "string" }, { name: "--provider", wireName: "provider", required: false, takesValue: true, description: undefined, source: "query", valueType: "string" }] },
|
|
5
|
+
{ operationId: "v1.agents.composio.linkedAccounts.unlink", group: "agents", action: "composio-linked-accounts-unlink", method: "DELETE", pathTemplate: "/api/v1/agents/{id}/composio/linked-accounts/{provider}", summary: "Unlink account", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--provider", wireName: "provider", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--principal", wireName: "principal", required: true, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }] },
|
|
6
|
+
{ operationId: "v1.agents.create", group: "agents", action: "create", method: "POST", pathTemplate: "/api/v1/agents", summary: "Create agent", description: undefined, flags: [{ name: "--name", wireName: "name", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--always-on", wireName: "alwaysOn", required: false, takesValue: true, description: undefined, source: "body", valueType: "boolean" }, { name: "--avatar-url", wireName: "avatarUrl", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--capabilities", wireName: "capabilities", required: false, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--composio", wireName: "composio", required: false, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--context-url", wireName: "contextUrl", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--external-id", wireName: "externalId", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--personality", wireName: "personality", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--user-id", wireName: "userId", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--voice-style", wireName: "voiceStyle", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }] },
|
|
7
|
+
{ operationId: "v1.agents.delete", group: "agents", action: "delete", method: "DELETE", pathTemplate: "/api/v1/agents/{id}", summary: "Delete agent", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
8
|
+
{ operationId: "v1.agents.docs.getEffective", group: "agents", action: "docs-get-effective", method: "GET", pathTemplate: "/api/v1/agents/{id}/docs", summary: "Get agent effective docs", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
9
|
+
{ operationId: "v1.agents.docs.setOverrides", group: "agents", action: "docs-set-overrides", method: "PUT", pathTemplate: "/api/v1/agents/{id}/docs", summary: "Set agent doc overrides", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--overrides", wireName: "overrides", required: true, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--idempotency-key", wireName: "Idempotency-Key", required: false, takesValue: true, description: "Optional idempotency key (4-200 chars) for safe retries.", source: "header", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--mode", wireName: "mode", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }] },
|
|
10
|
+
{ operationId: "v1.agents.get", group: "agents", action: "get", method: "GET", pathTemplate: "/api/v1/agents/{id}", summary: "Get agent", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
11
|
+
{ operationId: "v1.agents.list", group: "agents", action: "list", method: "GET", pathTemplate: "/api/v1/agents", summary: "List agents", description: undefined, flags: [{ name: "--cursor", wireName: "cursor", required: false, takesValue: true, description: "Pagination cursor (ISO timestamp).", source: "query", valueType: "string" }, { name: "--limit", wireName: "limit", required: false, takesValue: true, description: "Max number of items to return (default 50, max 100).", source: "query", valueType: "number" }] },
|
|
12
|
+
{ operationId: "v1.agents.reload", group: "agents", action: "reload", method: "POST", pathTemplate: "/api/v1/agents/{id}/reload", summary: "Queue agent reload (apply pending config)", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
13
|
+
{ operationId: "v1.agents.restart", group: "agents", action: "restart", method: "POST", pathTemplate: "/api/v1/agents/{id}/restart", summary: "Restart agent", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
14
|
+
{ operationId: "v1.agents.skills.setAssignments", group: "agents", action: "skills-set-assignments", method: "PUT", pathTemplate: "/api/v1/agents/{id}/skills", summary: "Set agent pinned skill assignments", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--assignments", wireName: "assignments", required: true, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--idempotency-key", wireName: "Idempotency-Key", required: false, takesValue: true, description: "Optional idempotency key (4-200 chars) for safe retries.", source: "header", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--mode", wireName: "mode", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }] },
|
|
15
|
+
{ operationId: "v1.agents.start", group: "agents", action: "start", method: "POST", pathTemplate: "/api/v1/agents/{id}/start", summary: "Start agent", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
16
|
+
{ operationId: "v1.agents.stop", group: "agents", action: "stop", method: "POST", pathTemplate: "/api/v1/agents/{id}/stop", summary: "Stop agent", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
17
|
+
{ operationId: "v1.agents.update", group: "agents", action: "update", method: "PATCH", pathTemplate: "/api/v1/agents/{id}", summary: "Update agent", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--apply", wireName: "apply", required: false, takesValue: true, description: undefined, source: "query", valueType: "string" }, { name: "--always-on", wireName: "alwaysOn", required: false, takesValue: true, description: undefined, source: "body", valueType: "boolean" }, { name: "--avatar-url", wireName: "avatarUrl", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--capabilities", wireName: "capabilities", required: false, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--composio-default-principal-type", wireName: "composioDefaultPrincipalType", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--context-url", wireName: "contextUrl", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--external-id", wireName: "externalId", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--name", wireName: "name", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--personality", wireName: "personality", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--voice-style", wireName: "voiceStyle", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }] },
|
|
18
|
+
{ operationId: "v1.conversations.get", group: "conversations", action: "get", method: "GET", pathTemplate: "/api/v1/conversations/{id}", summary: "Get conversation history (sessionId)", description: undefined, flags: [{ name: "--conversation-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--agent-id", wireName: "agentId", required: false, takesValue: true, description: undefined, source: "query", valueType: "string" }, { name: "--cursor", wireName: "cursor", required: false, takesValue: true, description: "Pagination cursor (ISO timestamp).", source: "query", valueType: "string" }, { name: "--limit", wireName: "limit", required: false, takesValue: true, description: "Max number of items to return (default 100, max 500).", source: "query", valueType: "number" }] },
|
|
19
|
+
{ operationId: "v1.conversations.listForAgent", group: "conversations", action: "list-for-agent", method: "GET", pathTemplate: "/api/v1/agents/{id}/conversations", summary: "List conversations for agent", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--cursor", wireName: "cursor", required: false, takesValue: true, description: "Pagination cursor (ISO timestamp).", source: "query", valueType: "string" }, { name: "--limit", wireName: "limit", required: false, takesValue: true, description: "Max number of items to return (default 50, max 100).", source: "query", valueType: "number" }] },
|
|
20
|
+
{ operationId: "v1.events.ingest", group: "events", action: "ingest", method: "POST", pathTemplate: "/api/v1/events", summary: "Ingest event", description: undefined, flags: [{ name: "--id", wireName: "id", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--type", wireName: "type", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--created-at", wireName: "createdAt", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--data", wireName: "data", required: false, takesValue: true, description: undefined, source: "body", valueType: "json" }] },
|
|
21
|
+
{ operationId: "v1.memory.batch", group: "memory", action: "batch", method: "POST", pathTemplate: "/api/v1/agents/{id}/memory/batch", summary: "Batch upsert/delete agent memory", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--delete", wireName: "delete", required: false, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--upsert", wireName: "upsert", required: false, takesValue: true, description: undefined, source: "body", valueType: "json" }] },
|
|
22
|
+
{ operationId: "v1.memory.delete", group: "memory", action: "delete", method: "DELETE", pathTemplate: "/api/v1/agents/{id}/memory/{key}", summary: "Delete agent memory entry", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--key", wireName: "key", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
23
|
+
{ operationId: "v1.memory.get", group: "memory", action: "get", method: "GET", pathTemplate: "/api/v1/agents/{id}/memory/{key}", summary: "Get agent memory entry", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--key", wireName: "key", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
24
|
+
{ operationId: "v1.memory.list", group: "memory", action: "list", method: "GET", pathTemplate: "/api/v1/agents/{id}/memory", summary: "List agent memory", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--cursor", wireName: "cursor", required: false, takesValue: true, description: "Pagination cursor (ISO timestamp).", source: "query", valueType: "string" }, { name: "--limit", wireName: "limit", required: false, takesValue: true, description: "Max number of items to return (default 100, max 500).", source: "query", valueType: "number" }] },
|
|
25
|
+
{ operationId: "v1.memory.put", group: "memory", action: "put", method: "PUT", pathTemplate: "/api/v1/agents/{id}/memory/{key}", summary: "Upsert agent memory entry", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--key", wireName: "key", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--value", wireName: "value", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }] },
|
|
26
|
+
{ operationId: "v1.messages.get", group: "messages", action: "get", method: "GET", pathTemplate: "/api/v1/messages/{id}", summary: "Get message", description: undefined, flags: [{ name: "--message-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
27
|
+
{ operationId: "v1.messages.send", group: "messages", action: "send", method: "POST", pathTemplate: "/api/v1/agents/{id}/messages", summary: "Send message to agent", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--message", wireName: "message", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--session-id", wireName: "sessionId", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--idempotency-key", wireName: "Idempotency-Key", required: false, takesValue: true, description: "Optional idempotency key (4-200 chars) for safe retries.", source: "header", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--execution-principal", wireName: "executionPrincipal", required: false, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--metadata", wireName: "metadata", required: false, takesValue: true, description: undefined, source: "body", valueType: "json" }] },
|
|
28
|
+
{ operationId: "v1.projects.apiKeys.create", group: "projects", action: "api-keys-create", method: "POST", pathTemplate: "/api/v1/projects/{id}/api-keys", summary: "Create project API key", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--name", wireName: "name", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--scopes", wireName: "scopes", required: false, takesValue: true, description: undefined, source: "body", valueType: "json" }] },
|
|
29
|
+
{ operationId: "v1.projects.apiKeys.delete", group: "projects", action: "api-keys-delete", method: "DELETE", pathTemplate: "/api/v1/projects/{id}/api-keys/{keyId}", summary: "Delete project API key", description: undefined, flags: [{ name: "--key-id", wireName: "keyId", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
30
|
+
{ operationId: "v1.projects.apiKeys.list", group: "projects", action: "api-keys-list", method: "GET", pathTemplate: "/api/v1/projects/{id}/api-keys", summary: "List project API keys", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
31
|
+
{ operationId: "v1.projects.composio.oauthCallback", group: "projects", action: "composio-oauth-callback", method: "GET", pathTemplate: "/api/v1/projects/{id}/composio/oauth/callback", summary: "Composio OAuth callback (project)", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--state", wireName: "state", required: true, takesValue: true, description: undefined, source: "query", valueType: "string" }] },
|
|
32
|
+
{ operationId: "v1.projects.composio.providers.list", group: "projects", action: "composio-providers-list", method: "GET", pathTemplate: "/api/v1/projects/{id}/composio/providers", summary: "List project Composio provider config", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
33
|
+
{ operationId: "v1.projects.composio.providers.upsert", group: "projects", action: "composio-providers-upsert", method: "POST", pathTemplate: "/api/v1/projects/{id}/composio/providers", summary: "Upsert project Composio provider config", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--is-enabled", wireName: "isEnabled", required: true, takesValue: true, description: undefined, source: "body", valueType: "boolean" }, { name: "--provider", wireName: "provider", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--auth-config-id", wireName: "authConfigId", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--composio-api-key", wireName: "composioApiKey", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--default-disabled-tools", wireName: "defaultDisabledTools", required: false, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--default-enabled-tools", wireName: "defaultEnabledTools", required: false, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--provider-overrides", wireName: "providerOverrides", required: false, takesValue: true, description: undefined, source: "body", valueType: "json" }] },
|
|
34
|
+
{ operationId: "v1.projects.create", group: "projects", action: "create", method: "POST", pathTemplate: "/api/v1/projects", summary: "Create project (admin)", description: undefined, flags: [{ name: "--name", wireName: "name", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--owner-user-id", wireName: "ownerUserId", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }] },
|
|
35
|
+
{ operationId: "v1.projects.docs.list", group: "projects", action: "docs-list", method: "GET", pathTemplate: "/api/v1/projects/{id}/docs", summary: "List project docs summary", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
36
|
+
{ operationId: "v1.projects.docs.listVersions", group: "projects", action: "docs-list-versions", method: "GET", pathTemplate: "/api/v1/projects/{id}/docs/{docType}/versions", summary: "List project doc versions", description: undefined, flags: [{ name: "--doc-type", wireName: "docType", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
37
|
+
{ operationId: "v1.projects.docs.publishVersion", group: "projects", action: "docs-publish-version", method: "POST", pathTemplate: "/api/v1/projects/{id}/docs/{docType}/versions", summary: "Publish project doc version", description: undefined, flags: [{ name: "--doc-type", wireName: "docType", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--source", wireName: "source", required: true, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--idempotency-key", wireName: "Idempotency-Key", required: false, takesValue: true, description: "Optional idempotency key (4-200 chars) for safe retries.", source: "header", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--version", wireName: "version", required: false, takesValue: true, description: undefined, source: "body", valueType: "number" }] },
|
|
38
|
+
{ operationId: "v1.projects.docs.setDefaults", group: "projects", action: "docs-set-defaults", method: "PUT", pathTemplate: "/api/v1/projects/{id}/docs/defaults", summary: "Set project doc defaults", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--defaults", wireName: "defaults", required: true, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }] },
|
|
39
|
+
{ operationId: "v1.projects.docs.uploadInit", group: "projects", action: "docs-upload-init", method: "POST", pathTemplate: "/api/v1/projects/{id}/docs/uploads", summary: "Initialize project docs upload", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--content-type", wireName: "contentType", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--size-bytes", wireName: "sizeBytes", required: false, takesValue: true, description: undefined, source: "body", valueType: "number" }] },
|
|
40
|
+
{ operationId: "v1.projects.get", group: "projects", action: "get", method: "GET", pathTemplate: "/api/v1/projects/{id}", summary: "Get project", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
41
|
+
{ operationId: "v1.projects.list", group: "projects", action: "list", method: "GET", pathTemplate: "/api/v1/projects", summary: "List projects (admin)", description: undefined, flags: [{ name: "--cursor", wireName: "cursor", required: false, takesValue: true, description: "Pagination cursor (ISO timestamp).", source: "query", valueType: "string" }, { name: "--limit", wireName: "limit", required: false, takesValue: true, description: "Max number of items to return (default 100, max 500).", source: "query", valueType: "number" }, { name: "--owner-user-id", wireName: "ownerUserId", required: false, takesValue: true, description: undefined, source: "query", valueType: "string" }] },
|
|
42
|
+
{ operationId: "v1.projects.skills.list", group: "projects", action: "skills-list", method: "GET", pathTemplate: "/api/v1/projects/{id}/skills", summary: "List project skills", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
43
|
+
{ operationId: "v1.projects.skills.listVersions", group: "projects", action: "skills-list-versions", method: "GET", pathTemplate: "/api/v1/projects/{id}/skills/{skillKey}/versions", summary: "List project skill versions", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--skill-key", wireName: "skillKey", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
44
|
+
{ operationId: "v1.projects.skills.promote", group: "projects", action: "skills-promote", method: "POST", pathTemplate: "/api/v1/projects/{id}/skills/{skillKey}/promote", summary: "Promote published skill version to agents", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--skill-key", wireName: "skillKey", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--to-version", wireName: "toVersion", required: true, takesValue: true, description: undefined, source: "body", valueType: "number" }, { name: "--idempotency-key", wireName: "Idempotency-Key", required: false, takesValue: true, description: "Optional idempotency key (4-200 chars) for safe retries.", source: "header", valueType: "string" }, { name: "--agent-ids", wireName: "agentIds", required: false, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }] },
|
|
45
|
+
{ operationId: "v1.projects.skills.publishVersion", group: "projects", action: "skills-publish-version", method: "POST", pathTemplate: "/api/v1/projects/{id}/skills", summary: "Publish project skill version", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--skill-key", wireName: "skillKey", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--source", wireName: "source", required: true, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--idempotency-key", wireName: "Idempotency-Key", required: false, takesValue: true, description: "Optional idempotency key (4-200 chars) for safe retries.", source: "header", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--changelog", wireName: "changelog", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--description", wireName: "description", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--display-name", wireName: "displayName", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--version", wireName: "version", required: false, takesValue: true, description: undefined, source: "body", valueType: "number" }] },
|
|
46
|
+
{ operationId: "v1.projects.skills.uploadInit", group: "projects", action: "skills-upload-init", method: "POST", pathTemplate: "/api/v1/projects/{id}/skills/uploads", summary: "Initialize project skills upload", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }, { name: "--content-type", wireName: "contentType", required: false, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--size-bytes", wireName: "sizeBytes", required: false, takesValue: true, description: undefined, source: "body", valueType: "number" }] },
|
|
47
|
+
{ operationId: "v1.agents.providerKeys.delete", group: "provider-keys", action: "delete-agents", method: "DELETE", pathTemplate: "/api/v1/agents/{id}/provider-keys/{provider}", summary: "Delete agent provider key override", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--provider", wireName: "provider", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
48
|
+
{ operationId: "v1.projects.providerKeys.delete", group: "provider-keys", action: "delete-projects", method: "DELETE", pathTemplate: "/api/v1/projects/{id}/provider-keys/{provider}", summary: "Delete project provider key", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--provider", wireName: "provider", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
49
|
+
{ operationId: "v1.agents.providerKeys.list", group: "provider-keys", action: "list-agents", method: "GET", pathTemplate: "/api/v1/agents/{id}/provider-keys", summary: "List agent provider keys (merged project + agent overrides)", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
50
|
+
{ operationId: "v1.projects.providerKeys.list", group: "provider-keys", action: "list-projects", method: "GET", pathTemplate: "/api/v1/projects/{id}/provider-keys", summary: "List project provider keys", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
51
|
+
{ operationId: "v1.agents.providerKeys.upsert", group: "provider-keys", action: "upsert-agents", method: "POST", pathTemplate: "/api/v1/agents/{id}/provider-keys", summary: "Upsert agent provider key", description: undefined, flags: [{ name: "--agent-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--key", wireName: "key", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--provider", wireName: "provider", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }] },
|
|
52
|
+
{ operationId: "v1.projects.providerKeys.upsert", group: "provider-keys", action: "upsert-projects", method: "POST", pathTemplate: "/api/v1/projects/{id}/provider-keys", summary: "Upsert project provider key", description: undefined, flags: [{ name: "--project-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }, { name: "--key", wireName: "key", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--provider", wireName: "provider", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }] },
|
|
53
|
+
{ operationId: "v1.webhooks.create", group: "webhooks", action: "create", method: "POST", pathTemplate: "/api/v1/webhooks", summary: "Create webhook", description: undefined, flags: [{ name: "--events", wireName: "events", required: true, takesValue: true, description: undefined, source: "body", valueType: "json" }, { name: "--url", wireName: "url", required: true, takesValue: true, description: undefined, source: "body", valueType: "string" }, { name: "--body", wireName: "body", required: false, takesValue: true, description: "Raw JSON request body (overrides individual body flags)", source: "body", valueType: "json" }] },
|
|
54
|
+
{ operationId: "v1.webhooks.delete", group: "webhooks", action: "delete", method: "DELETE", pathTemplate: "/api/v1/webhooks/{id}", summary: "Delete webhook", description: undefined, flags: [{ name: "--webhook-id", wireName: "id", required: true, takesValue: true, description: undefined, source: "path", valueType: "string" }] },
|
|
55
|
+
{ operationId: "v1.webhooks.list", group: "webhooks", action: "list", method: "GET", pathTemplate: "/api/v1/webhooks", summary: "List webhooks", description: undefined, flags: [] },
|
|
56
|
+
];
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
export type ParsedArgv = {
|
|
2
|
+
positionals: string[];
|
|
3
|
+
flags: {
|
|
4
|
+
help: boolean;
|
|
5
|
+
version: boolean;
|
|
6
|
+
json: boolean;
|
|
7
|
+
nonInteractive: boolean;
|
|
8
|
+
quiet: boolean;
|
|
9
|
+
verbose: boolean;
|
|
10
|
+
baseUrl?: string;
|
|
11
|
+
};
|
|
12
|
+
unknownOption?: string;
|
|
13
|
+
missingValueOption?: string;
|
|
14
|
+
};
|
|
15
|
+
export declare function parseArgv(argv: string[]): ParsedArgv;
|
|
16
|
+
//# sourceMappingURL=argv.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"argv.d.ts","sourceRoot":"","sources":["../../../src/lib/argv.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,UAAU,GAAG;IACvB,WAAW,EAAE,MAAM,EAAE,CAAC;IACtB,KAAK,EAAE;QACL,IAAI,EAAE,OAAO,CAAC;QACd,OAAO,EAAE,OAAO,CAAC;QACjB,IAAI,EAAE,OAAO,CAAC;QACd,cAAc,EAAE,OAAO,CAAC;QACxB,KAAK,EAAE,OAAO,CAAC;QACf,OAAO,EAAE,OAAO,CAAC;QACjB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAC;IACF,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B,CAAC;AAEF,wBAAgB,SAAS,CAAC,IAAI,EAAE,MAAM,EAAE,GAAG,UAAU,CA8EpD"}
|
|
@@ -0,0 +1,68 @@
|
|
|
1
|
+
export function parseArgv(argv) {
|
|
2
|
+
const positionals = [];
|
|
3
|
+
let help = false;
|
|
4
|
+
let version = false;
|
|
5
|
+
let json = false;
|
|
6
|
+
let nonInteractive = false;
|
|
7
|
+
let quiet = false;
|
|
8
|
+
let verbose = false;
|
|
9
|
+
let baseUrl;
|
|
10
|
+
let seenCommand = false;
|
|
11
|
+
for (let i = 0; i < argv.length; i++) {
|
|
12
|
+
const arg = argv[i];
|
|
13
|
+
if (arg === "--") {
|
|
14
|
+
positionals.push(...argv.slice(i + 1));
|
|
15
|
+
break;
|
|
16
|
+
}
|
|
17
|
+
// Global flags are valid anywhere; strip them out so subcommands can parse their own flags.
|
|
18
|
+
if (arg === "--help" || arg === "-h") {
|
|
19
|
+
help = true;
|
|
20
|
+
continue;
|
|
21
|
+
}
|
|
22
|
+
if (arg === "--version" || arg === "-v") {
|
|
23
|
+
version = true;
|
|
24
|
+
continue;
|
|
25
|
+
}
|
|
26
|
+
if (arg === "--json") {
|
|
27
|
+
json = true;
|
|
28
|
+
continue;
|
|
29
|
+
}
|
|
30
|
+
if (arg === "--non-interactive") {
|
|
31
|
+
nonInteractive = true;
|
|
32
|
+
continue;
|
|
33
|
+
}
|
|
34
|
+
if (arg === "--quiet") {
|
|
35
|
+
quiet = true;
|
|
36
|
+
continue;
|
|
37
|
+
}
|
|
38
|
+
if (arg === "--verbose") {
|
|
39
|
+
verbose = true;
|
|
40
|
+
continue;
|
|
41
|
+
}
|
|
42
|
+
if (arg === "--base-url" || arg.startsWith("--base-url=")) {
|
|
43
|
+
const value = arg.includes("=") ? arg.slice("--base-url=".length) : argv[i + 1];
|
|
44
|
+
if (!value || value.startsWith("-")) {
|
|
45
|
+
return {
|
|
46
|
+
positionals: [],
|
|
47
|
+
flags: { help, version, json, nonInteractive, quiet, verbose, baseUrl },
|
|
48
|
+
missingValueOption: "--base-url",
|
|
49
|
+
};
|
|
50
|
+
}
|
|
51
|
+
baseUrl = value;
|
|
52
|
+
if (!arg.includes("="))
|
|
53
|
+
i++;
|
|
54
|
+
continue;
|
|
55
|
+
}
|
|
56
|
+
if (arg.startsWith("-") && !seenCommand) {
|
|
57
|
+
return {
|
|
58
|
+
positionals: [],
|
|
59
|
+
flags: { help, version, json, nonInteractive, quiet, verbose, baseUrl },
|
|
60
|
+
unknownOption: arg,
|
|
61
|
+
};
|
|
62
|
+
}
|
|
63
|
+
if (!arg.startsWith("-"))
|
|
64
|
+
seenCommand = true;
|
|
65
|
+
positionals.push(arg);
|
|
66
|
+
}
|
|
67
|
+
return { positionals, flags: { help, version, json, nonInteractive, quiet, verbose, baseUrl } };
|
|
68
|
+
}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"base-url.d.ts","sourceRoot":"","sources":["../../../src/lib/base-url.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,gBAAgB,2BAA2B,CAAC;AAEzD,wBAAgB,cAAc,CAAC,KAAK,EAAE;IACpC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB,GAAG,MAAM,CAIT"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
export const DEFAULT_BASE_URL = "https://www.rooaak.com";
|
|
2
|
+
export function resolveBaseUrl(input) {
|
|
3
|
+
const base = input.cliFlag || input.env || input.profile || DEFAULT_BASE_URL;
|
|
4
|
+
// Normalize: no trailing slash.
|
|
5
|
+
return base.endsWith("/") ? base.slice(0, -1) : base;
|
|
6
|
+
}
|
|
@@ -0,0 +1,11 @@
|
|
|
1
|
+
export declare enum ExitCode {
|
|
2
|
+
Success = 0,
|
|
3
|
+
Usage = 2,
|
|
4
|
+
Auth = 3,
|
|
5
|
+
Permission = 4,
|
|
6
|
+
NotFound = 5,
|
|
7
|
+
Conflict = 6,
|
|
8
|
+
Transient = 7
|
|
9
|
+
}
|
|
10
|
+
export declare function exitCodeForHttpStatus(status: number): ExitCode;
|
|
11
|
+
//# sourceMappingURL=exit-codes.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"exit-codes.d.ts","sourceRoot":"","sources":["../../../src/lib/exit-codes.ts"],"names":[],"mappings":"AAAA,oBAAY,QAAQ;IAClB,OAAO,IAAI;IACX,KAAK,IAAI;IACT,IAAI,IAAI;IACR,UAAU,IAAI;IACd,QAAQ,IAAI;IACZ,QAAQ,IAAI;IACZ,SAAS,IAAI;CACd;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,MAAM,GAAG,QAAQ,CAkB9D"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
export var ExitCode;
|
|
2
|
+
(function (ExitCode) {
|
|
3
|
+
ExitCode[ExitCode["Success"] = 0] = "Success";
|
|
4
|
+
ExitCode[ExitCode["Usage"] = 2] = "Usage";
|
|
5
|
+
ExitCode[ExitCode["Auth"] = 3] = "Auth";
|
|
6
|
+
ExitCode[ExitCode["Permission"] = 4] = "Permission";
|
|
7
|
+
ExitCode[ExitCode["NotFound"] = 5] = "NotFound";
|
|
8
|
+
ExitCode[ExitCode["Conflict"] = 6] = "Conflict";
|
|
9
|
+
ExitCode[ExitCode["Transient"] = 7] = "Transient";
|
|
10
|
+
})(ExitCode || (ExitCode = {}));
|
|
11
|
+
export function exitCodeForHttpStatus(status) {
|
|
12
|
+
if (status >= 200 && status <= 299)
|
|
13
|
+
return ExitCode.Success;
|
|
14
|
+
switch (status) {
|
|
15
|
+
case 400:
|
|
16
|
+
case 422:
|
|
17
|
+
return ExitCode.Usage;
|
|
18
|
+
case 401:
|
|
19
|
+
return ExitCode.Auth;
|
|
20
|
+
case 403:
|
|
21
|
+
return ExitCode.Permission;
|
|
22
|
+
case 404:
|
|
23
|
+
return ExitCode.NotFound;
|
|
24
|
+
case 409:
|
|
25
|
+
return ExitCode.Conflict;
|
|
26
|
+
default:
|
|
27
|
+
return ExitCode.Transient;
|
|
28
|
+
}
|
|
29
|
+
}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import type { CommandContext } from "./types.js";
|
|
2
|
+
export type GeneratedFlagSource = "path" | "query" | "header" | "body";
|
|
3
|
+
export type GeneratedFlagType = "string" | "number" | "boolean" | "json";
|
|
4
|
+
export type GeneratedFlag = {
|
|
5
|
+
name: string;
|
|
6
|
+
wireName: string;
|
|
7
|
+
required: boolean;
|
|
8
|
+
takesValue: boolean;
|
|
9
|
+
description?: string;
|
|
10
|
+
source: GeneratedFlagSource;
|
|
11
|
+
valueType: GeneratedFlagType;
|
|
12
|
+
};
|
|
13
|
+
export type GeneratedCommandSpec = {
|
|
14
|
+
operationId: string;
|
|
15
|
+
group: string;
|
|
16
|
+
action: string;
|
|
17
|
+
method: "GET" | "POST" | "PATCH" | "PUT" | "DELETE";
|
|
18
|
+
pathTemplate: string;
|
|
19
|
+
summary?: string;
|
|
20
|
+
description?: string;
|
|
21
|
+
flags: GeneratedFlag[];
|
|
22
|
+
};
|
|
23
|
+
export declare function renderGeneratedCommandHelp(ctx: CommandContext, spec: GeneratedCommandSpec): number;
|
|
24
|
+
export declare function runGeneratedCommand(ctx: CommandContext, spec: GeneratedCommandSpec, argv: string[]): Promise<number>;
|
|
25
|
+
//# sourceMappingURL=generated-command.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"generated-command.d.ts","sourceRoot":"","sources":["../../../src/lib/generated-command.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAEjD,MAAM,MAAM,mBAAmB,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,MAAM,CAAC;AACvE,MAAM,MAAM,iBAAiB,GAAG,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,MAAM,CAAC;AAEzE,MAAM,MAAM,aAAa,GAAG;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,OAAO,CAAC;IAClB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,MAAM,EAAE,mBAAmB,CAAC;IAC5B,SAAS,EAAE,iBAAiB,CAAC;CAC9B,CAAC;AAEF,MAAM,MAAM,oBAAoB,GAAG;IACjC,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,GAAG,KAAK,GAAG,QAAQ,CAAC;IACpD,YAAY,EAAE,MAAM,CAAC;IACrB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,aAAa,EAAE,CAAC;CACxB,CAAC;AA2FF,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,GAAG,MAAM,CA2DlG;AAED,wBAAsB,mBAAmB,CAAC,GAAG,EAAE,cAAc,EAAE,IAAI,EAAE,oBAAoB,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,OAAO,CAAC,MAAM,CAAC,CAmL1H"}
|