@getfrontline/cli 1.0.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +319 -0
- package/dist/assets/logo3.png +0 -0
- package/dist/commands/agents/analytics.d.ts +3 -0
- package/dist/commands/agents/analytics.d.ts.map +1 -0
- package/dist/commands/agents/analytics.js +67 -0
- package/dist/commands/agents/analytics.js.map +1 -0
- package/dist/commands/agents/flows.d.ts +3 -0
- package/dist/commands/agents/flows.d.ts.map +1 -0
- package/dist/commands/agents/flows.js +47 -0
- package/dist/commands/agents/flows.js.map +1 -0
- package/dist/commands/agents/list.d.ts +3 -0
- package/dist/commands/agents/list.d.ts.map +1 -0
- package/dist/commands/agents/list.js +46 -0
- package/dist/commands/agents/list.js.map +1 -0
- package/dist/commands/api/raw.d.ts +3 -0
- package/dist/commands/api/raw.d.ts.map +1 -0
- package/dist/commands/api/raw.js +54 -0
- package/dist/commands/api/raw.js.map +1 -0
- package/dist/commands/auth/login.d.ts +3 -0
- package/dist/commands/auth/login.d.ts.map +1 -0
- package/dist/commands/auth/login.js +39 -0
- package/dist/commands/auth/login.js.map +1 -0
- package/dist/commands/auth/logout.d.ts +3 -0
- package/dist/commands/auth/logout.d.ts.map +1 -0
- package/dist/commands/auth/logout.js +16 -0
- package/dist/commands/auth/logout.js.map +1 -0
- package/dist/commands/auth/profiles.d.ts +3 -0
- package/dist/commands/auth/profiles.d.ts.map +1 -0
- package/dist/commands/auth/profiles.js +72 -0
- package/dist/commands/auth/profiles.js.map +1 -0
- package/dist/commands/auth/whoami.d.ts +3 -0
- package/dist/commands/auth/whoami.d.ts.map +1 -0
- package/dist/commands/auth/whoami.js +46 -0
- package/dist/commands/auth/whoami.js.map +1 -0
- package/dist/commands/billing/get.d.ts +3 -0
- package/dist/commands/billing/get.d.ts.map +1 -0
- package/dist/commands/billing/get.js +42 -0
- package/dist/commands/billing/get.js.map +1 -0
- package/dist/commands/object/aggregation.d.ts +3 -0
- package/dist/commands/object/aggregation.d.ts.map +1 -0
- package/dist/commands/object/aggregation.js +78 -0
- package/dist/commands/object/aggregation.js.map +1 -0
- package/dist/commands/object/export.d.ts +3 -0
- package/dist/commands/object/export.d.ts.map +1 -0
- package/dist/commands/object/export.js +98 -0
- package/dist/commands/object/export.js.map +1 -0
- package/dist/commands/object/field.d.ts +3 -0
- package/dist/commands/object/field.d.ts.map +1 -0
- package/dist/commands/object/field.js +76 -0
- package/dist/commands/object/field.js.map +1 -0
- package/dist/commands/object/file.d.ts +3 -0
- package/dist/commands/object/file.d.ts.map +1 -0
- package/dist/commands/object/file.js +105 -0
- package/dist/commands/object/file.js.map +1 -0
- package/dist/commands/object/index.d.ts +3 -0
- package/dist/commands/object/index.d.ts.map +1 -0
- package/dist/commands/object/index.js +136 -0
- package/dist/commands/object/index.js.map +1 -0
- package/dist/commands/object/note.d.ts +3 -0
- package/dist/commands/object/note.d.ts.map +1 -0
- package/dist/commands/object/note.js +62 -0
- package/dist/commands/object/note.js.map +1 -0
- package/dist/commands/object/option.d.ts +3 -0
- package/dist/commands/object/option.d.ts.map +1 -0
- package/dist/commands/object/option.js +78 -0
- package/dist/commands/object/option.js.map +1 -0
- package/dist/commands/object/record-type.d.ts +3 -0
- package/dist/commands/object/record-type.d.ts.map +1 -0
- package/dist/commands/object/record-type.js +73 -0
- package/dist/commands/object/record-type.js.map +1 -0
- package/dist/commands/object/record.d.ts +3 -0
- package/dist/commands/object/record.d.ts.map +1 -0
- package/dist/commands/object/record.js +128 -0
- package/dist/commands/object/record.js.map +1 -0
- package/dist/commands/object/relation.d.ts +3 -0
- package/dist/commands/object/relation.d.ts.map +1 -0
- package/dist/commands/object/relation.js +73 -0
- package/dist/commands/object/relation.js.map +1 -0
- package/dist/commands/object/task.d.ts +3 -0
- package/dist/commands/object/task.d.ts.map +1 -0
- package/dist/commands/object/task.js +88 -0
- package/dist/commands/object/task.js.map +1 -0
- package/dist/commands/object/view.d.ts +3 -0
- package/dist/commands/object/view.d.ts.map +1 -0
- package/dist/commands/object/view.js +118 -0
- package/dist/commands/object/view.js.map +1 -0
- package/dist/commands/setup/claudeSkills.d.ts +3 -0
- package/dist/commands/setup/claudeSkills.d.ts.map +1 -0
- package/dist/commands/setup/claudeSkills.js +84 -0
- package/dist/commands/setup/claudeSkills.js.map +1 -0
- package/dist/commands/table/aggregation.d.ts +3 -0
- package/dist/commands/table/aggregation.d.ts.map +1 -0
- package/dist/commands/table/aggregation.js +78 -0
- package/dist/commands/table/aggregation.js.map +1 -0
- package/dist/commands/table/export.d.ts +3 -0
- package/dist/commands/table/export.d.ts.map +1 -0
- package/dist/commands/table/export.js +97 -0
- package/dist/commands/table/export.js.map +1 -0
- package/dist/commands/table/field.d.ts +3 -0
- package/dist/commands/table/field.d.ts.map +1 -0
- package/dist/commands/table/field.js +76 -0
- package/dist/commands/table/field.js.map +1 -0
- package/dist/commands/table/file.d.ts +3 -0
- package/dist/commands/table/file.d.ts.map +1 -0
- package/dist/commands/table/file.js +106 -0
- package/dist/commands/table/file.js.map +1 -0
- package/dist/commands/table/index.d.ts +3 -0
- package/dist/commands/table/index.d.ts.map +1 -0
- package/dist/commands/table/index.js +142 -0
- package/dist/commands/table/index.js.map +1 -0
- package/dist/commands/table/note.d.ts +3 -0
- package/dist/commands/table/note.d.ts.map +1 -0
- package/dist/commands/table/note.js +62 -0
- package/dist/commands/table/note.js.map +1 -0
- package/dist/commands/table/option.d.ts +3 -0
- package/dist/commands/table/option.d.ts.map +1 -0
- package/dist/commands/table/option.js +78 -0
- package/dist/commands/table/option.js.map +1 -0
- package/dist/commands/table/relation.d.ts +3 -0
- package/dist/commands/table/relation.d.ts.map +1 -0
- package/dist/commands/table/relation.js +74 -0
- package/dist/commands/table/relation.js.map +1 -0
- package/dist/commands/table/row.d.ts +3 -0
- package/dist/commands/table/row.d.ts.map +1 -0
- package/dist/commands/table/row.js +124 -0
- package/dist/commands/table/row.js.map +1 -0
- package/dist/commands/table/task.d.ts +3 -0
- package/dist/commands/table/task.d.ts.map +1 -0
- package/dist/commands/table/task.js +88 -0
- package/dist/commands/table/task.js.map +1 -0
- package/dist/commands/workflows/analytics.d.ts +3 -0
- package/dist/commands/workflows/analytics.d.ts.map +1 -0
- package/dist/commands/workflows/analytics.js +60 -0
- package/dist/commands/workflows/analytics.js.map +1 -0
- package/dist/commands/workflows/list.d.ts +3 -0
- package/dist/commands/workflows/list.d.ts.map +1 -0
- package/dist/commands/workflows/list.js +47 -0
- package/dist/commands/workflows/list.js.map +1 -0
- package/dist/index.d.ts +3 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +73 -0
- package/dist/index.js.map +1 -0
- package/dist/lib/auth.d.ts +13 -0
- package/dist/lib/auth.d.ts.map +1 -0
- package/dist/lib/auth.js +40 -0
- package/dist/lib/auth.js.map +1 -0
- package/dist/lib/config.d.ts +28 -0
- package/dist/lib/config.d.ts.map +1 -0
- package/dist/lib/config.js +77 -0
- package/dist/lib/config.js.map +1 -0
- package/dist/lib/errors.d.ts +13 -0
- package/dist/lib/errors.d.ts.map +1 -0
- package/dist/lib/errors.js +31 -0
- package/dist/lib/errors.js.map +1 -0
- package/dist/lib/globalOpts.d.ts +23 -0
- package/dist/lib/globalOpts.d.ts.map +1 -0
- package/dist/lib/globalOpts.js +40 -0
- package/dist/lib/globalOpts.js.map +1 -0
- package/dist/lib/helpEpilog.d.ts +18 -0
- package/dist/lib/helpEpilog.d.ts.map +1 -0
- package/dist/lib/helpEpilog.js +56 -0
- package/dist/lib/helpEpilog.js.map +1 -0
- package/dist/lib/httpClient.d.ts +50 -0
- package/dist/lib/httpClient.d.ts.map +1 -0
- package/dist/lib/httpClient.js +196 -0
- package/dist/lib/httpClient.js.map +1 -0
- package/dist/lib/output.d.ts +38 -0
- package/dist/lib/output.d.ts.map +1 -0
- package/dist/lib/output.js +131 -0
- package/dist/lib/output.js.map +1 -0
- package/dist/max/browserLogin.d.ts +15 -0
- package/dist/max/browserLogin.d.ts.map +1 -0
- package/dist/max/browserLogin.js +164 -0
- package/dist/max/browserLogin.js.map +1 -0
- package/dist/max/commands/auth/login.d.ts +3 -0
- package/dist/max/commands/auth/login.d.ts.map +1 -0
- package/dist/max/commands/auth/login.js +58 -0
- package/dist/max/commands/auth/login.js.map +1 -0
- package/dist/max/commands/auth/logout.d.ts +3 -0
- package/dist/max/commands/auth/logout.d.ts.map +1 -0
- package/dist/max/commands/auth/logout.js +23 -0
- package/dist/max/commands/auth/logout.js.map +1 -0
- package/dist/max/commands/auth/whoami.d.ts +3 -0
- package/dist/max/commands/auth/whoami.d.ts.map +1 -0
- package/dist/max/commands/auth/whoami.js +46 -0
- package/dist/max/commands/auth/whoami.js.map +1 -0
- package/dist/max/commands/chat/repl.d.ts +3 -0
- package/dist/max/commands/chat/repl.d.ts.map +1 -0
- package/dist/max/commands/chat/repl.js +104 -0
- package/dist/max/commands/chat/repl.js.map +1 -0
- package/dist/max/commands/chat/send.d.ts +25 -0
- package/dist/max/commands/chat/send.d.ts.map +1 -0
- package/dist/max/commands/chat/send.js +163 -0
- package/dist/max/commands/chat/send.js.map +1 -0
- package/dist/max/commands/conversations/abort.d.ts +3 -0
- package/dist/max/commands/conversations/abort.d.ts.map +1 -0
- package/dist/max/commands/conversations/abort.js +55 -0
- package/dist/max/commands/conversations/abort.js.map +1 -0
- package/dist/max/commands/conversations/get.d.ts +3 -0
- package/dist/max/commands/conversations/get.d.ts.map +1 -0
- package/dist/max/commands/conversations/get.js +42 -0
- package/dist/max/commands/conversations/get.js.map +1 -0
- package/dist/max/commands/conversations/index.d.ts +3 -0
- package/dist/max/commands/conversations/index.d.ts.map +1 -0
- package/dist/max/commands/conversations/index.js +16 -0
- package/dist/max/commands/conversations/index.js.map +1 -0
- package/dist/max/commands/conversations/list.d.ts +3 -0
- package/dist/max/commands/conversations/list.d.ts.map +1 -0
- package/dist/max/commands/conversations/list.js +35 -0
- package/dist/max/commands/conversations/list.js.map +1 -0
- package/dist/max/commands/conversations/update.d.ts +3 -0
- package/dist/max/commands/conversations/update.d.ts.map +1 -0
- package/dist/max/commands/conversations/update.js +53 -0
- package/dist/max/commands/conversations/update.js.map +1 -0
- package/dist/max/jwtDecode.d.ts +5 -0
- package/dist/max/jwtDecode.d.ts.map +1 -0
- package/dist/max/jwtDecode.js +19 -0
- package/dist/max/jwtDecode.js.map +1 -0
- package/dist/max/lib/auth.d.ts +20 -0
- package/dist/max/lib/auth.d.ts.map +1 -0
- package/dist/max/lib/auth.js +53 -0
- package/dist/max/lib/auth.js.map +1 -0
- package/dist/max/lib/httpClient.d.ts +25 -0
- package/dist/max/lib/httpClient.d.ts.map +1 -0
- package/dist/max/lib/httpClient.js +138 -0
- package/dist/max/lib/httpClient.js.map +1 -0
- package/dist/max/lib/maxResponse.d.ts +30 -0
- package/dist/max/lib/maxResponse.d.ts.map +1 -0
- package/dist/max/lib/maxResponse.js +132 -0
- package/dist/max/lib/maxResponse.js.map +1 -0
- package/dist/max/lib/publicApiPaths.d.ts +12 -0
- package/dist/max/lib/publicApiPaths.d.ts.map +1 -0
- package/dist/max/lib/publicApiPaths.js +15 -0
- package/dist/max/lib/publicApiPaths.js.map +1 -0
- package/dist/max/maxConfig.d.ts +31 -0
- package/dist/max/maxConfig.d.ts.map +1 -0
- package/dist/max/maxConfig.js +50 -0
- package/dist/max/maxConfig.js.map +1 -0
- package/dist/max/ui/banner.d.ts +3 -0
- package/dist/max/ui/banner.d.ts.map +1 -0
- package/dist/max/ui/banner.js +96 -0
- package/dist/max/ui/banner.js.map +1 -0
- package/dist/max.d.ts +3 -0
- package/dist/max.d.ts.map +1 -0
- package/dist/max.js +94 -0
- package/dist/max.js.map +1 -0
- package/dist/scripts/postinstall.d.ts +8 -0
- package/dist/scripts/postinstall.d.ts.map +1 -0
- package/dist/scripts/postinstall.js +149 -0
- package/dist/scripts/postinstall.js.map +1 -0
- package/dist/skills/aggregations/SKILL.md +122 -0
- package/dist/skills/auth-and-profiles/SKILL.md +102 -0
- package/dist/skills/crm-setup/SKILL.md +385 -0
- package/dist/skills/crud-operations/SKILL.md +287 -0
- package/dist/skills/export-and-delete/SKILL.md +96 -0
- package/dist/skills/files/SKILL.md +70 -0
- package/dist/skills/filter-and-query/SKILL.md +199 -0
- package/dist/skills/frontline-agents/SKILL.md +99 -0
- package/dist/skills/frontline-api/SKILL.md +59 -0
- package/dist/skills/frontline-billing/SKILL.md +42 -0
- package/dist/skills/frontline-workflows/SKILL.md +72 -0
- package/dist/skills/max-auth/SKILL.md +76 -0
- package/dist/skills/max-chat/SKILL.md +111 -0
- package/dist/skills/notes-and-tasks/SKILL.md +128 -0
- package/dist/skills/pipeline-setup/SKILL.md +233 -0
- package/dist/skills/record-type-management/SKILL.md +104 -0
- package/dist/skills/relations/SKILL.md +153 -0
- package/dist/skills/resource-creation/SKILL.md +86 -0
- package/dist/skills/schema-design/SKILL.md +263 -0
- package/package.json +47 -0
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.maxConversationsListCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const httpClient_1 = require("../../lib/httpClient");
|
|
6
|
+
const publicApiPaths_1 = require("../../lib/publicApiPaths");
|
|
7
|
+
const maxResponse_1 = require("../../lib/maxResponse");
|
|
8
|
+
const output_1 = require("../../../lib/output");
|
|
9
|
+
const helpEpilog_1 = require("../../../lib/helpEpilog");
|
|
10
|
+
exports.maxConversationsListCommand = new commander_1.Command("list")
|
|
11
|
+
.description("GET /public/v1/max/conversations/ — list Max conversations for the current user.")
|
|
12
|
+
.option("--profile <name>", helpEpilog_1.MAX_PROFILE_OPTION)
|
|
13
|
+
.option("--base-url <url>", helpEpilog_1.MAX_BASE_URL_OPTION)
|
|
14
|
+
.option("--api-base-url <url>", "Deprecated alias for --base-url")
|
|
15
|
+
.option("--api-key <key>", "Override per-user API key for this run")
|
|
16
|
+
.option("--pretty", "Print assistant-style text from `data` when detectable; otherwise same as default")
|
|
17
|
+
.option("--debug", "Show debug information")
|
|
18
|
+
.action(async (options) => {
|
|
19
|
+
try {
|
|
20
|
+
const data = await (0, httpClient_1.maxApiGet)({
|
|
21
|
+
path: publicApiPaths_1.MAX_PUBLIC_API_PATHS.conversationsRoot,
|
|
22
|
+
profile: options.profile,
|
|
23
|
+
baseUrl: options.baseUrl,
|
|
24
|
+
apiBaseUrl: options.apiBaseUrl,
|
|
25
|
+
apiKey: options.apiKey,
|
|
26
|
+
debug: options.debug,
|
|
27
|
+
});
|
|
28
|
+
(0, maxResponse_1.printMaxRestOutput)(data, options.pretty);
|
|
29
|
+
}
|
|
30
|
+
catch (err) {
|
|
31
|
+
(0, output_1.printError)(err instanceof Error ? err.message : String(err));
|
|
32
|
+
process.exitCode = 1;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
35
|
+
//# sourceMappingURL=list.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"list.js","sourceRoot":"","sources":["../../../../src/max/commands/conversations/list.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,qDAAiD;AACjD,6DAAgE;AAChE,uDAA2D;AAC3D,gDAAiD;AACjD,wDAAkF;AAWrE,QAAA,2BAA2B,GAAG,IAAI,mBAAO,CAAC,MAAM,CAAC;KACzD,WAAW,CAAC,kFAAkF,CAAC;KAC/F,MAAM,CAAC,kBAAkB,EAAE,+BAAkB,CAAC;KAC9C,MAAM,CAAC,kBAAkB,EAAE,gCAAmB,CAAC;KAC/C,MAAM,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;KACjE,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;KACnE,MAAM,CACH,UAAU,EACV,mFAAmF,CACtF;KACA,MAAM,CAAC,SAAS,EAAE,wBAAwB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,OAAoB,EAAE,EAAE;IACnC,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAA,sBAAS,EAAU;YAClC,IAAI,EAAE,qCAAoB,CAAC,iBAAiB;YAC5C,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACvB,CAAC,CAAC;QACH,IAAA,gCAAkB,EAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,IAAA,mBAAU,EAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzB,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.d.ts","sourceRoot":"","sources":["../../../../src/max/commands/conversations/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,WAAW,CAAC;AAiBpC,eAAO,MAAM,6BAA6B,SA6CpC,CAAC"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.maxConversationsUpdateCommand = void 0;
|
|
4
|
+
const commander_1 = require("commander");
|
|
5
|
+
const httpClient_1 = require("../../lib/httpClient");
|
|
6
|
+
const publicApiPaths_1 = require("../../lib/publicApiPaths");
|
|
7
|
+
const maxResponse_1 = require("../../lib/maxResponse");
|
|
8
|
+
const output_1 = require("../../../lib/output");
|
|
9
|
+
const helpEpilog_1 = require("../../../lib/helpEpilog");
|
|
10
|
+
exports.maxConversationsUpdateCommand = new commander_1.Command("update")
|
|
11
|
+
.description("PATCH /public/v1/max/conversations/:conversationId — update conversation fields (JSON body).")
|
|
12
|
+
.argument("<conversationId>", "Conversation id")
|
|
13
|
+
.requiredOption("--data <json>", "JSON object string for the request body")
|
|
14
|
+
.option("--profile <name>", helpEpilog_1.MAX_PROFILE_OPTION)
|
|
15
|
+
.option("--base-url <url>", helpEpilog_1.MAX_BASE_URL_OPTION)
|
|
16
|
+
.option("--api-base-url <url>", "Deprecated alias for --base-url")
|
|
17
|
+
.option("--api-key <key>", "Override per-user API key for this run")
|
|
18
|
+
.option("--pretty", "Print assistant-style text from `data` when detectable; otherwise full JSON")
|
|
19
|
+
.option("--debug", "Show debug information")
|
|
20
|
+
.action(async (conversationId, options) => {
|
|
21
|
+
try {
|
|
22
|
+
const id = conversationId.trim();
|
|
23
|
+
if (!id) {
|
|
24
|
+
(0, output_1.printError)("conversationId is required.");
|
|
25
|
+
process.exitCode = 1;
|
|
26
|
+
return;
|
|
27
|
+
}
|
|
28
|
+
let body;
|
|
29
|
+
try {
|
|
30
|
+
body = JSON.parse(options.data ?? "{}");
|
|
31
|
+
}
|
|
32
|
+
catch {
|
|
33
|
+
(0, output_1.printError)("--data must be valid JSON.");
|
|
34
|
+
process.exitCode = 1;
|
|
35
|
+
return;
|
|
36
|
+
}
|
|
37
|
+
const data = await (0, httpClient_1.maxApiPatch)({
|
|
38
|
+
path: publicApiPaths_1.MAX_PUBLIC_API_PATHS.conversationById(id),
|
|
39
|
+
body,
|
|
40
|
+
profile: options.profile,
|
|
41
|
+
baseUrl: options.baseUrl,
|
|
42
|
+
apiBaseUrl: options.apiBaseUrl,
|
|
43
|
+
apiKey: options.apiKey,
|
|
44
|
+
debug: options.debug,
|
|
45
|
+
});
|
|
46
|
+
(0, maxResponse_1.printMaxRestOutput)(data, options.pretty);
|
|
47
|
+
}
|
|
48
|
+
catch (err) {
|
|
49
|
+
(0, output_1.printError)(err instanceof Error ? err.message : String(err));
|
|
50
|
+
process.exitCode = 1;
|
|
51
|
+
}
|
|
52
|
+
});
|
|
53
|
+
//# sourceMappingURL=update.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"update.js","sourceRoot":"","sources":["../../../../src/max/commands/conversations/update.ts"],"names":[],"mappings":";;;AAAA,yCAAoC;AACpC,qDAAmD;AACnD,6DAAgE;AAChE,uDAA2D;AAC3D,gDAAiD;AACjD,wDAAkF;AAYrE,QAAA,6BAA6B,GAAG,IAAI,mBAAO,CAAC,QAAQ,CAAC;KAC7D,WAAW,CACR,8FAA8F,CACjG;KACA,QAAQ,CAAC,kBAAkB,EAAE,iBAAiB,CAAC;KAC/C,cAAc,CAAC,eAAe,EAAE,yCAAyC,CAAC;KAC1E,MAAM,CAAC,kBAAkB,EAAE,+BAAkB,CAAC;KAC9C,MAAM,CAAC,kBAAkB,EAAE,gCAAmB,CAAC;KAC/C,MAAM,CAAC,sBAAsB,EAAE,iCAAiC,CAAC;KACjE,MAAM,CAAC,iBAAiB,EAAE,wCAAwC,CAAC;KACnE,MAAM,CACH,UAAU,EACV,6EAA6E,CAChF;KACA,MAAM,CAAC,SAAS,EAAE,wBAAwB,CAAC;KAC3C,MAAM,CAAC,KAAK,EAAE,cAAsB,EAAE,OAAsB,EAAE,EAAE;IAC7D,IAAI,CAAC;QACD,MAAM,EAAE,GAAG,cAAc,CAAC,IAAI,EAAE,CAAC;QACjC,IAAI,CAAC,EAAE,EAAE,CAAC;YACN,IAAA,mBAAU,EAAC,6BAA6B,CAAC,CAAC;YAC1C,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QACD,IAAI,IAAa,CAAC;QAClB,IAAI,CAAC;YACD,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QAC5C,CAAC;QAAC,MAAM,CAAC;YACL,IAAA,mBAAU,EAAC,4BAA4B,CAAC,CAAC;YACzC,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;YACrB,OAAO;QACX,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,IAAA,wBAAW,EAAU;YACpC,IAAI,EAAE,qCAAoB,CAAC,gBAAgB,CAAC,EAAE,CAAC;YAC/C,IAAI;YACJ,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,OAAO,EAAE,OAAO,CAAC,OAAO;YACxB,UAAU,EAAE,OAAO,CAAC,UAAU;YAC9B,MAAM,EAAE,OAAO,CAAC,MAAM;YACtB,KAAK,EAAE,OAAO,CAAC,KAAK;SACvB,CAAC,CAAC;QACH,IAAA,gCAAkB,EAAC,IAAI,EAAE,OAAO,CAAC,MAAM,CAAC,CAAC;IAC7C,CAAC;IAAC,OAAO,GAAY,EAAE,CAAC;QACpB,IAAA,mBAAU,EAAC,GAAG,YAAY,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,CAAC;QAC7D,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC;IACzB,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwtDecode.d.ts","sourceRoot":"","sources":["../../src/max/jwtDecode.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,wBAAgB,gBAAgB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,IAAI,CAS9E"}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.decodeJwtPayload = decodeJwtPayload;
|
|
4
|
+
/**
|
|
5
|
+
* Decodes JWT payload without verifying signature (CLI display only).
|
|
6
|
+
*/
|
|
7
|
+
function decodeJwtPayload(token) {
|
|
8
|
+
const parts = token.split(".");
|
|
9
|
+
if (parts.length !== 3)
|
|
10
|
+
return null;
|
|
11
|
+
try {
|
|
12
|
+
const json = Buffer.from(parts[1], "base64url").toString("utf8");
|
|
13
|
+
return JSON.parse(json);
|
|
14
|
+
}
|
|
15
|
+
catch {
|
|
16
|
+
return null;
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=jwtDecode.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"jwtDecode.js","sourceRoot":"","sources":["../../src/max/jwtDecode.ts"],"names":[],"mappings":";;AAGA,4CASC;AAZD;;GAEG;AACH,SAAgB,gBAAgB,CAAC,KAAa;IAC1C,MAAM,KAAK,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,IAAI,CAAC;IACpC,IAAI,CAAC;QACD,MAAM,IAAI,GAAG,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC;QACjE,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAA4B,CAAC;IACvD,CAAC;IAAC,MAAM,CAAC;QACL,OAAO,IAAI,CAAC;IAChB,CAAC;AACL,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Resolve the per-user API key used as Bearer for Max REST calls.
|
|
3
|
+
*
|
|
4
|
+
* Priority order:
|
|
5
|
+
* 1. Explicit flag value (`--api-key` on the command).
|
|
6
|
+
* 2. MAX_API_KEY env var, then FRONTLINE_API_KEY env var (shared across CLIs).
|
|
7
|
+
* 3. apiKey stored on the Max profile (set by `max auth login`).
|
|
8
|
+
* 4. Fallback: apiKey stored on the Frontline profile with the same name
|
|
9
|
+
* (so `frontline auth login` alone is enough to power Max commands too).
|
|
10
|
+
*/
|
|
11
|
+
export declare function getMaxApiKey(options?: {
|
|
12
|
+
apiKey?: string;
|
|
13
|
+
profile?: string;
|
|
14
|
+
}): string;
|
|
15
|
+
/**
|
|
16
|
+
* @deprecated The hosted browser login flow is currently disabled. Kept for
|
|
17
|
+
* reference so we can restore Firebase id-token authentication later without
|
|
18
|
+
* rewriting call sites. Callers should use `getMaxApiKey` instead.
|
|
19
|
+
*/
|
|
20
|
+
//# sourceMappingURL=auth.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/max/lib/auth.ts"],"names":[],"mappings":"AAIA;;;;;;;;;GASG;AACH,wBAAgB,YAAY,CAAC,OAAO,CAAC,EAAE;IAAE,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,MAAM,CAqBpF;AAED;;;;GAIG"}
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getMaxApiKey = getMaxApiKey;
|
|
4
|
+
const errors_1 = require("../../lib/errors");
|
|
5
|
+
const maxConfig_1 = require("../maxConfig");
|
|
6
|
+
const config_1 = require("../../lib/config");
|
|
7
|
+
/**
|
|
8
|
+
* Resolve the per-user API key used as Bearer for Max REST calls.
|
|
9
|
+
*
|
|
10
|
+
* Priority order:
|
|
11
|
+
* 1. Explicit flag value (`--api-key` on the command).
|
|
12
|
+
* 2. MAX_API_KEY env var, then FRONTLINE_API_KEY env var (shared across CLIs).
|
|
13
|
+
* 3. apiKey stored on the Max profile (set by `max auth login`).
|
|
14
|
+
* 4. Fallback: apiKey stored on the Frontline profile with the same name
|
|
15
|
+
* (so `frontline auth login` alone is enough to power Max commands too).
|
|
16
|
+
*/
|
|
17
|
+
function getMaxApiKey(options) {
|
|
18
|
+
const fromFlag = options?.apiKey?.trim();
|
|
19
|
+
if (fromFlag)
|
|
20
|
+
return fromFlag;
|
|
21
|
+
const fromEnv = process.env.MAX_API_KEY?.trim() || process.env.FRONTLINE_API_KEY?.trim();
|
|
22
|
+
if (fromEnv)
|
|
23
|
+
return fromEnv;
|
|
24
|
+
const profileName = options?.profile ?? (0, maxConfig_1.getMaxCurrentProfile)();
|
|
25
|
+
const maxProfile = (0, maxConfig_1.getMaxProfile)(profileName);
|
|
26
|
+
const fromMax = maxProfile?.apiKey?.trim();
|
|
27
|
+
if (fromMax)
|
|
28
|
+
return fromMax;
|
|
29
|
+
const frontProfile = (0, config_1.getProfile)(profileName);
|
|
30
|
+
const fromFront = frontProfile?.apiKey?.trim();
|
|
31
|
+
if (fromFront)
|
|
32
|
+
return fromFront;
|
|
33
|
+
throw new errors_1.CLIError("No Max API key found.", 'Run "max auth login <api-key>" (or "frontline auth login <api-key>") to store a per-user API key.');
|
|
34
|
+
}
|
|
35
|
+
/**
|
|
36
|
+
* @deprecated The hosted browser login flow is currently disabled. Kept for
|
|
37
|
+
* reference so we can restore Firebase id-token authentication later without
|
|
38
|
+
* rewriting call sites. Callers should use `getMaxApiKey` instead.
|
|
39
|
+
*/
|
|
40
|
+
// export function getMaxIdToken(options?: { idToken?: string; profile?: string }): string {
|
|
41
|
+
// if (options?.idToken?.trim()) return options.idToken.trim();
|
|
42
|
+
//
|
|
43
|
+
// const envToken = process.env.MAX_ID_TOKEN?.trim();
|
|
44
|
+
// if (envToken) return envToken;
|
|
45
|
+
//
|
|
46
|
+
// const profileName = options?.profile ?? getMaxCurrentProfile();
|
|
47
|
+
// const profile = getMaxProfile(profileName);
|
|
48
|
+
// if (!profile?.idToken) {
|
|
49
|
+
// throw new CLIError("No Max session found.", 'Run "max auth login" to authenticate.');
|
|
50
|
+
// }
|
|
51
|
+
// return profile.idToken;
|
|
52
|
+
// }
|
|
53
|
+
//# sourceMappingURL=auth.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/max/lib/auth.ts"],"names":[],"mappings":";;AAcA,oCAqBC;AAnCD,6CAA4C;AAC5C,4CAAmE;AACnE,6CAAqE;AAErE;;;;;;;;;GASG;AACH,SAAgB,YAAY,CAAC,OAA+C;IACxE,MAAM,QAAQ,GAAG,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IACzC,IAAI,QAAQ;QAAE,OAAO,QAAQ,CAAC;IAE9B,MAAM,OAAO,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,EAAE,IAAI,EAAE,IAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,EAAE,IAAI,EAAE,CAAC;IACzF,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,MAAM,WAAW,GAAG,OAAO,EAAE,OAAO,IAAI,IAAA,gCAAoB,GAAE,CAAC;IAE/D,MAAM,UAAU,GAAG,IAAA,yBAAa,EAAC,WAAW,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,UAAU,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC3C,IAAI,OAAO;QAAE,OAAO,OAAO,CAAC;IAE5B,MAAM,YAAY,GAAG,IAAA,mBAAmB,EAAC,WAAW,CAAC,CAAC;IACtD,MAAM,SAAS,GAAG,YAAY,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;IAC/C,IAAI,SAAS;QAAE,OAAO,SAAS,CAAC;IAEhC,MAAM,IAAI,iBAAQ,CACd,uBAAuB,EACvB,mGAAmG,CACtG,CAAC;AACN,CAAC;AAED;;;;GAIG;AACH,4FAA4F;AAC5F,mEAAmE;AACnE,EAAE;AACF,yDAAyD;AACzD,qCAAqC;AACrC,EAAE;AACF,sEAAsE;AACtE,kDAAkD;AAClD,+BAA+B;AAC/B,gGAAgG;AAChG,QAAQ;AACR,8BAA8B;AAC9B,IAAI"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
export interface MaxRequestOptions {
|
|
2
|
+
path: string;
|
|
3
|
+
method: "GET" | "POST" | "PATCH";
|
|
4
|
+
query?: Record<string, string | undefined>;
|
|
5
|
+
body?: unknown;
|
|
6
|
+
profile?: string;
|
|
7
|
+
apiKey?: string;
|
|
8
|
+
/** Public API root (…/public/v1). Overrides FRONTLINE_BASE_URL / profile baseUrl. */
|
|
9
|
+
baseUrl?: string;
|
|
10
|
+
/**
|
|
11
|
+
* @deprecated Prefer --base-url. If set, treated as Public API root like baseUrl
|
|
12
|
+
* (for backwards compatibility with older Max CLI flags).
|
|
13
|
+
*/
|
|
14
|
+
apiBaseUrl?: string;
|
|
15
|
+
debug?: boolean;
|
|
16
|
+
}
|
|
17
|
+
export declare function maxApiRequest<T = unknown>(opts: MaxRequestOptions): Promise<T>;
|
|
18
|
+
export declare function maxApiGet<T = unknown>(opts: Omit<MaxRequestOptions, "method">): Promise<T>;
|
|
19
|
+
export declare function maxApiPost<T = unknown>(opts: Omit<MaxRequestOptions, "method"> & {
|
|
20
|
+
body?: unknown;
|
|
21
|
+
}): Promise<T>;
|
|
22
|
+
export declare function maxApiPatch<T = unknown>(opts: Omit<MaxRequestOptions, "method"> & {
|
|
23
|
+
body?: unknown;
|
|
24
|
+
}): Promise<T>;
|
|
25
|
+
//# sourceMappingURL=httpClient.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpClient.d.ts","sourceRoot":"","sources":["../../../src/max/lib/httpClient.ts"],"names":[],"mappings":"AASA,MAAM,WAAW,iBAAiB;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,MAAM,EAAE,KAAK,GAAG,MAAM,GAAG,OAAO,CAAC;IACjC,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;IAC3C,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,qFAAqF;IACrF,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,KAAK,CAAC,EAAE,OAAO,CAAC;CACnB;AAiID,wBAAsB,aAAa,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,iBAAiB,GAAG,OAAO,CAAC,CAAC,CAAC,CA2BpF;AAED,wBAAsB,SAAS,CAAC,CAAC,GAAG,OAAO,EAAE,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAEhG;AAED,wBAAsB,UAAU,CAAC,CAAC,GAAG,OAAO,EACxC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7D,OAAO,CAAC,CAAC,CAAC,CAEZ;AAED,wBAAsB,WAAW,CAAC,CAAC,GAAG,OAAO,EACzC,IAAI,EAAE,IAAI,CAAC,iBAAiB,EAAE,QAAQ,CAAC,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GAC7D,OAAO,CAAC,CAAC,CAAC,CAEZ"}
|
|
@@ -0,0 +1,138 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
3
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
4
|
+
};
|
|
5
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
|
+
exports.maxApiRequest = maxApiRequest;
|
|
7
|
+
exports.maxApiGet = maxApiGet;
|
|
8
|
+
exports.maxApiPost = maxApiPost;
|
|
9
|
+
exports.maxApiPatch = maxApiPatch;
|
|
10
|
+
const http_1 = __importDefault(require("http"));
|
|
11
|
+
const https_1 = __importDefault(require("https"));
|
|
12
|
+
const url_1 = require("url");
|
|
13
|
+
const errors_1 = require("../../lib/errors");
|
|
14
|
+
const auth_1 = require("../../lib/auth");
|
|
15
|
+
const config_1 = require("../../lib/config");
|
|
16
|
+
const auth_2 = require("./auth");
|
|
17
|
+
const maxConfig_1 = require("../maxConfig");
|
|
18
|
+
function resolveMaxPublicBaseUrl(opts) {
|
|
19
|
+
const explicit = (opts.baseUrl ?? opts.apiBaseUrl)?.trim();
|
|
20
|
+
if (explicit) {
|
|
21
|
+
return (0, config_1.resolveBaseUrl)(explicit, opts.profile).replace(/\/$/, "");
|
|
22
|
+
}
|
|
23
|
+
const profileName = opts.profile;
|
|
24
|
+
const maxOnly = profileName ? (0, maxConfig_1.getMaxProfile)(profileName)?.apiBaseUrl?.trim() : undefined;
|
|
25
|
+
if (maxOnly && maxOnly.includes("/public/v1")) {
|
|
26
|
+
return maxOnly.replace(/\/$/, "");
|
|
27
|
+
}
|
|
28
|
+
return (0, config_1.resolveBaseUrl)(undefined, profileName).replace(/\/$/, "");
|
|
29
|
+
}
|
|
30
|
+
function buildUrl(publicBaseUrl, path, query) {
|
|
31
|
+
const normalizedPath = path.startsWith("/") ? path : `/${path}`;
|
|
32
|
+
const url = new url_1.URL(`${publicBaseUrl}${normalizedPath}`);
|
|
33
|
+
if (query) {
|
|
34
|
+
for (const [key, value] of Object.entries(query)) {
|
|
35
|
+
if (value !== undefined && value !== "")
|
|
36
|
+
url.searchParams.set(key, value);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
return url;
|
|
40
|
+
}
|
|
41
|
+
function requestJson(url, options) {
|
|
42
|
+
return new Promise((resolve, reject) => {
|
|
43
|
+
const protocol = url.protocol === "https:" ? https_1.default : http_1.default;
|
|
44
|
+
const start = Date.now();
|
|
45
|
+
const req = protocol.request(url, {
|
|
46
|
+
method: options.method,
|
|
47
|
+
headers: options.headers,
|
|
48
|
+
timeout: 60000,
|
|
49
|
+
}, (res) => {
|
|
50
|
+
let raw = "";
|
|
51
|
+
res.on("data", (chunk) => (raw += chunk.toString()));
|
|
52
|
+
res.on("end", () => {
|
|
53
|
+
const elapsed = Date.now() - start;
|
|
54
|
+
if (options.debug) {
|
|
55
|
+
const safeHeaders = { ...options.headers };
|
|
56
|
+
if (safeHeaders["Authorization"]) {
|
|
57
|
+
const token = safeHeaders["Authorization"].replace(/^Bearer /, "");
|
|
58
|
+
safeHeaders["Authorization"] = `Bearer ${(0, auth_1.redactToken)(token)}`;
|
|
59
|
+
}
|
|
60
|
+
console.error(`[DEBUG] ${options.method} ${url.toString()} -> ${res.statusCode} (${elapsed}ms)`);
|
|
61
|
+
console.error(`[DEBUG] Request headers: ${JSON.stringify(safeHeaders)}`);
|
|
62
|
+
}
|
|
63
|
+
let data;
|
|
64
|
+
try {
|
|
65
|
+
data = raw ? JSON.parse(raw) : {};
|
|
66
|
+
}
|
|
67
|
+
catch {
|
|
68
|
+
reject(new errors_1.APIError("Invalid JSON response from API", res.statusCode ?? 0, raw));
|
|
69
|
+
return;
|
|
70
|
+
}
|
|
71
|
+
if (res.statusCode && res.statusCode >= 400) {
|
|
72
|
+
const msg = data?.message ?? data?.error ?? `API returned ${res.statusCode}`;
|
|
73
|
+
reject(new errors_1.APIError(String(msg), res.statusCode, data));
|
|
74
|
+
return;
|
|
75
|
+
}
|
|
76
|
+
// Max Public API: HTTP 200 with logical failure { ok: false, ... }
|
|
77
|
+
if (data &&
|
|
78
|
+
typeof data === "object" &&
|
|
79
|
+
"ok" in data &&
|
|
80
|
+
data.ok === false) {
|
|
81
|
+
const body = data;
|
|
82
|
+
const msg = (typeof body.message === "string" && body.message) ||
|
|
83
|
+
(typeof body.error === "string" && body.error) ||
|
|
84
|
+
(body.data && typeof body.data === "object" && "message" in body.data
|
|
85
|
+
? String(body.data.message)
|
|
86
|
+
: undefined) ||
|
|
87
|
+
"Request failed (ok: false)";
|
|
88
|
+
reject(new errors_1.APIError(String(msg), res.statusCode ?? 0, data));
|
|
89
|
+
return;
|
|
90
|
+
}
|
|
91
|
+
resolve(data);
|
|
92
|
+
});
|
|
93
|
+
});
|
|
94
|
+
req.on("error", (err) => reject(new errors_1.APIError(`Request failed: ${err.message}`, 0)));
|
|
95
|
+
req.on("timeout", () => {
|
|
96
|
+
req.destroy();
|
|
97
|
+
reject(new errors_1.APIError("Request timed out after 60s", 0));
|
|
98
|
+
});
|
|
99
|
+
if (options.body)
|
|
100
|
+
req.write(options.body);
|
|
101
|
+
req.end();
|
|
102
|
+
});
|
|
103
|
+
}
|
|
104
|
+
async function maxApiRequest(opts) {
|
|
105
|
+
const apiKey = (0, auth_2.getMaxApiKey)({ apiKey: opts.apiKey, profile: opts.profile });
|
|
106
|
+
const publicBaseUrl = resolveMaxPublicBaseUrl({
|
|
107
|
+
baseUrl: opts.baseUrl,
|
|
108
|
+
apiBaseUrl: opts.apiBaseUrl,
|
|
109
|
+
profile: opts.profile,
|
|
110
|
+
});
|
|
111
|
+
const url = buildUrl(publicBaseUrl, opts.path, opts.query);
|
|
112
|
+
const headers = {
|
|
113
|
+
Authorization: `Bearer ${apiKey}`,
|
|
114
|
+
Accept: "application/json",
|
|
115
|
+
"User-Agent": "max-cli",
|
|
116
|
+
};
|
|
117
|
+
let body;
|
|
118
|
+
if (opts.method === "POST" || opts.method === "PATCH") {
|
|
119
|
+
headers["Content-Type"] = "application/json";
|
|
120
|
+
body = JSON.stringify(opts.body ?? {});
|
|
121
|
+
}
|
|
122
|
+
return await requestJson(url, {
|
|
123
|
+
method: opts.method,
|
|
124
|
+
headers,
|
|
125
|
+
body,
|
|
126
|
+
debug: Boolean(opts.debug),
|
|
127
|
+
});
|
|
128
|
+
}
|
|
129
|
+
async function maxApiGet(opts) {
|
|
130
|
+
return await maxApiRequest({ ...opts, method: "GET" });
|
|
131
|
+
}
|
|
132
|
+
async function maxApiPost(opts) {
|
|
133
|
+
return await maxApiRequest({ ...opts, method: "POST", body: opts.body });
|
|
134
|
+
}
|
|
135
|
+
async function maxApiPatch(opts) {
|
|
136
|
+
return await maxApiRequest({ ...opts, method: "PATCH", body: opts.body });
|
|
137
|
+
}
|
|
138
|
+
//# sourceMappingURL=httpClient.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"httpClient.js","sourceRoot":"","sources":["../../../src/max/lib/httpClient.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
/** Shape returned by Max Public API handlers. */
|
|
2
|
+
export interface MaxPublicEnvelope {
|
|
3
|
+
ok: boolean;
|
|
4
|
+
data?: unknown;
|
|
5
|
+
message?: unknown;
|
|
6
|
+
error?: unknown;
|
|
7
|
+
[key: string]: unknown;
|
|
8
|
+
}
|
|
9
|
+
export declare function isMaxPublicEnvelope(value: unknown): value is MaxPublicEnvelope;
|
|
10
|
+
/**
|
|
11
|
+
* Ensures Max Public API logical success. Throws APIError when `ok === false`
|
|
12
|
+
* (including HTTP 200 with an error envelope).
|
|
13
|
+
*/
|
|
14
|
+
export declare function assertMaxPublicSuccess(raw: unknown): {
|
|
15
|
+
data: unknown;
|
|
16
|
+
envelope: MaxPublicEnvelope | null;
|
|
17
|
+
};
|
|
18
|
+
/**
|
|
19
|
+
* Human-visible assistant text from `data` (message send / poll) or nested conversation.
|
|
20
|
+
*/
|
|
21
|
+
export declare function extractMaxUserVisibleMessage(data: unknown): string | null;
|
|
22
|
+
/** Latest assistant text from a conversation-shaped object (messages array). */
|
|
23
|
+
export declare function extractLatestAssistantText(conversation: unknown): string | null;
|
|
24
|
+
export declare function pickConversationIdFromPayload(data: unknown): number | undefined;
|
|
25
|
+
/**
|
|
26
|
+
* Non-chat Max commands: default stdout is full JSON (`{ ok, data }` when present).
|
|
27
|
+
* With `pretty`, print assistant-style text from `data` when detectable, else full JSON.
|
|
28
|
+
*/
|
|
29
|
+
export declare function printMaxRestOutput(raw: unknown, pretty?: boolean): void;
|
|
30
|
+
//# sourceMappingURL=maxResponse.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maxResponse.d.ts","sourceRoot":"","sources":["../../../src/max/lib/maxResponse.ts"],"names":[],"mappings":"AAEA,iDAAiD;AACjD,MAAM,WAAW,iBAAiB;IAC9B,EAAE,EAAE,OAAO,CAAC;IACZ,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CAC1B;AAED,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,iBAAiB,CAO9E;AAuBD;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,GAAG,EAAE,OAAO,GAAG;IAClD,IAAI,EAAE,OAAO,CAAC;IACd,QAAQ,EAAE,iBAAiB,GAAG,IAAI,CAAC;CACtC,CAWA;AAED;;GAEG;AACH,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAyBzE;AAED,gFAAgF;AAChF,wBAAgB,0BAA0B,CAAC,YAAY,EAAE,OAAO,GAAG,MAAM,GAAG,IAAI,CAkB/E;AAED,wBAAgB,6BAA6B,CAAC,IAAI,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAO/E;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAAC,GAAG,EAAE,OAAO,EAAE,MAAM,CAAC,EAAE,OAAO,GAAG,IAAI,CAcvE"}
|
|
@@ -0,0 +1,132 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.isMaxPublicEnvelope = isMaxPublicEnvelope;
|
|
4
|
+
exports.assertMaxPublicSuccess = assertMaxPublicSuccess;
|
|
5
|
+
exports.extractMaxUserVisibleMessage = extractMaxUserVisibleMessage;
|
|
6
|
+
exports.extractLatestAssistantText = extractLatestAssistantText;
|
|
7
|
+
exports.pickConversationIdFromPayload = pickConversationIdFromPayload;
|
|
8
|
+
exports.printMaxRestOutput = printMaxRestOutput;
|
|
9
|
+
const errors_1 = require("../../lib/errors");
|
|
10
|
+
function isMaxPublicEnvelope(value) {
|
|
11
|
+
return (typeof value === "object" &&
|
|
12
|
+
value !== null &&
|
|
13
|
+
"ok" in value &&
|
|
14
|
+
typeof value.ok === "boolean");
|
|
15
|
+
}
|
|
16
|
+
function unwrapPayload(raw) {
|
|
17
|
+
if (isMaxPublicEnvelope(raw)) {
|
|
18
|
+
return { ok: raw.ok, data: raw.data, envelope: raw };
|
|
19
|
+
}
|
|
20
|
+
return { ok: true, data: raw, envelope: null };
|
|
21
|
+
}
|
|
22
|
+
function pickErrorText(value) {
|
|
23
|
+
if (typeof value === "string" && value.trim())
|
|
24
|
+
return value.trim();
|
|
25
|
+
if (value && typeof value === "object") {
|
|
26
|
+
const o = value;
|
|
27
|
+
const m = o.message ?? o.error ?? o.detail;
|
|
28
|
+
if (typeof m === "string" && m.trim())
|
|
29
|
+
return m.trim();
|
|
30
|
+
}
|
|
31
|
+
return undefined;
|
|
32
|
+
}
|
|
33
|
+
/**
|
|
34
|
+
* Ensures Max Public API logical success. Throws APIError when `ok === false`
|
|
35
|
+
* (including HTTP 200 with an error envelope).
|
|
36
|
+
*/
|
|
37
|
+
function assertMaxPublicSuccess(raw) {
|
|
38
|
+
const { ok, data, envelope } = unwrapPayload(raw);
|
|
39
|
+
if (!ok) {
|
|
40
|
+
const msg = pickErrorText(envelope) ??
|
|
41
|
+
pickErrorText(data) ??
|
|
42
|
+
(typeof data === "string" ? data : undefined) ??
|
|
43
|
+
"Request failed (ok: false)";
|
|
44
|
+
throw new errors_1.APIError(msg, 0, raw);
|
|
45
|
+
}
|
|
46
|
+
return { data, envelope };
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Human-visible assistant text from `data` (message send / poll) or nested conversation.
|
|
50
|
+
*/
|
|
51
|
+
function extractMaxUserVisibleMessage(data) {
|
|
52
|
+
if (data == null)
|
|
53
|
+
return null;
|
|
54
|
+
if (typeof data === "string") {
|
|
55
|
+
const t = data.trim();
|
|
56
|
+
return t.length > 0 ? t : null;
|
|
57
|
+
}
|
|
58
|
+
if (typeof data === "object") {
|
|
59
|
+
const o = data;
|
|
60
|
+
const directKeys = [
|
|
61
|
+
"message",
|
|
62
|
+
"assistantMessage",
|
|
63
|
+
"assistant_message",
|
|
64
|
+
"text",
|
|
65
|
+
"reply",
|
|
66
|
+
"content",
|
|
67
|
+
"assistantText",
|
|
68
|
+
];
|
|
69
|
+
for (const k of directKeys) {
|
|
70
|
+
const v = o[k];
|
|
71
|
+
if (typeof v === "string" && v.trim())
|
|
72
|
+
return v.trim();
|
|
73
|
+
}
|
|
74
|
+
const nested = extractLatestAssistantText(data);
|
|
75
|
+
if (nested)
|
|
76
|
+
return nested;
|
|
77
|
+
}
|
|
78
|
+
return null;
|
|
79
|
+
}
|
|
80
|
+
/** Latest assistant text from a conversation-shaped object (messages array). */
|
|
81
|
+
function extractLatestAssistantText(conversation) {
|
|
82
|
+
if (!conversation || typeof conversation !== "object")
|
|
83
|
+
return null;
|
|
84
|
+
const c = conversation;
|
|
85
|
+
const msgs = (c.messages ?? c.Messages);
|
|
86
|
+
if (!Array.isArray(msgs) || msgs.length === 0)
|
|
87
|
+
return null;
|
|
88
|
+
for (let i = msgs.length - 1; i >= 0; i--) {
|
|
89
|
+
const m = msgs[i];
|
|
90
|
+
const role = String(m?.role ?? m?.Role ?? "").toUpperCase();
|
|
91
|
+
if (role && role !== "ASSISTANT")
|
|
92
|
+
continue;
|
|
93
|
+
const text = m?.message ??
|
|
94
|
+
m?.content ??
|
|
95
|
+
m?.text ??
|
|
96
|
+
(Array.isArray(m?.contentParts) ? m.contentParts.join("") : undefined);
|
|
97
|
+
if (typeof text === "string" && text.trim())
|
|
98
|
+
return text.trim();
|
|
99
|
+
}
|
|
100
|
+
return null;
|
|
101
|
+
}
|
|
102
|
+
function pickConversationIdFromPayload(data) {
|
|
103
|
+
if (data == null || typeof data !== "object")
|
|
104
|
+
return undefined;
|
|
105
|
+
const o = data;
|
|
106
|
+
const raw = o.id ?? o.conversationId ?? o.conversation_id;
|
|
107
|
+
const n = typeof raw === "number" ? raw : typeof raw === "string" ? Number(raw) : NaN;
|
|
108
|
+
if (Number.isFinite(n) && !Number.isNaN(n) && n > 0)
|
|
109
|
+
return n;
|
|
110
|
+
return undefined;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Non-chat Max commands: default stdout is full JSON (`{ ok, data }` when present).
|
|
114
|
+
* With `pretty`, print assistant-style text from `data` when detectable, else full JSON.
|
|
115
|
+
*/
|
|
116
|
+
function printMaxRestOutput(raw, pretty) {
|
|
117
|
+
if (pretty) {
|
|
118
|
+
try {
|
|
119
|
+
const { data } = assertMaxPublicSuccess(raw);
|
|
120
|
+
const msg = extractMaxUserVisibleMessage(data) ?? extractLatestAssistantText(data);
|
|
121
|
+
if (msg) {
|
|
122
|
+
console.log(msg);
|
|
123
|
+
return;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch {
|
|
127
|
+
// fall through to JSON
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
process.stdout.write(JSON.stringify(raw) + "\n");
|
|
131
|
+
}
|
|
132
|
+
//# sourceMappingURL=maxResponse.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"maxResponse.js","sourceRoot":"","sources":["../../../src/max/lib/maxResponse.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Max routes on the Frontline Public API (base URL ends with /public/v1).
|
|
3
|
+
* Auth: Authorization: Bearer <user api key> (USER type).
|
|
4
|
+
*/
|
|
5
|
+
export declare const MAX_PUBLIC_API_PATHS: {
|
|
6
|
+
readonly conversationMessage: "/max/conversations/message";
|
|
7
|
+
readonly conversationById: (conversationId: string | number) => string;
|
|
8
|
+
readonly conversationAbortMessage: (conversationId: string | number) => string;
|
|
9
|
+
/** Trailing slash matches route table from the API spec. */
|
|
10
|
+
readonly conversationsRoot: "/max/conversations/";
|
|
11
|
+
};
|
|
12
|
+
//# sourceMappingURL=publicApiPaths.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publicApiPaths.d.ts","sourceRoot":"","sources":["../../../src/max/lib/publicApiPaths.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH,eAAO,MAAM,oBAAoB;;gDAEM,MAAM,GAAG,MAAM;wDACP,MAAM,GAAG,MAAM;IAE1D,4DAA4D;;CAEtD,CAAC"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Max routes on the Frontline Public API (base URL ends with /public/v1).
|
|
4
|
+
* Auth: Authorization: Bearer <user api key> (USER type).
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.MAX_PUBLIC_API_PATHS = void 0;
|
|
8
|
+
exports.MAX_PUBLIC_API_PATHS = {
|
|
9
|
+
conversationMessage: "/max/conversations/message",
|
|
10
|
+
conversationById: (conversationId) => `/max/conversations/${conversationId}`,
|
|
11
|
+
conversationAbortMessage: (conversationId) => `/max/conversations/${conversationId}/abortMessage`,
|
|
12
|
+
/** Trailing slash matches route table from the API spec. */
|
|
13
|
+
conversationsRoot: "/max/conversations/",
|
|
14
|
+
};
|
|
15
|
+
//# sourceMappingURL=publicApiPaths.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"publicApiPaths.js","sourceRoot":"","sources":["../../../src/max/lib/publicApiPaths.ts"],"names":[],"mappings":";AAAA;;;GAGG;;;AAEU,QAAA,oBAAoB,GAAG;IAChC,mBAAmB,EAAE,4BAA4B;IACjD,gBAAgB,EAAE,CAAC,cAA+B,EAAE,EAAE,CAAC,sBAAsB,cAAc,EAAE;IAC7F,wBAAwB,EAAE,CAAC,cAA+B,EAAE,EAAE,CAC1D,sBAAsB,cAAc,eAAe;IACvD,4DAA4D;IAC5D,iBAAiB,EAAE,qBAAqB;CAClC,CAAC"}
|