alpic 0.0.0-dev.gf22191e → 0.0.0-dev.gf24c182

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (55) hide show
  1. package/dist/__tests__/audit.e2e.test.js +1 -1
  2. package/dist/__tests__/audit.e2e.test.js.map +1 -1
  3. package/dist/__tests__/insights-category.e2e.test.js +3 -2
  4. package/dist/__tests__/insights-category.e2e.test.js.map +1 -1
  5. package/dist/__tests__/insights.e2e.test.js +2 -3
  6. package/dist/__tests__/insights.e2e.test.js.map +1 -1
  7. package/dist/__tests__/mock-api.d.ts +0 -3
  8. package/dist/__tests__/mock-api.js +0 -58
  9. package/dist/__tests__/mock-api.js.map +1 -1
  10. package/dist/commands/audit.js +1 -3
  11. package/dist/commands/audit.js.map +1 -1
  12. package/dist/commands/insights/category/create.js +2 -2
  13. package/dist/commands/insights/category/create.js.map +1 -1
  14. package/dist/commands/insights/category/list.js +2 -2
  15. package/dist/commands/insights/category/list.js.map +1 -1
  16. package/dist/commands/insights/category/update.js +3 -3
  17. package/dist/commands/insights/category/update.js.map +1 -1
  18. package/dist/commands/insights/feedback/list.js +2 -2
  19. package/dist/commands/insights/feedback/list.js.map +1 -1
  20. package/dist/commands/insights/intent/list.js +2 -2
  21. package/dist/commands/insights/intent/list.js.map +1 -1
  22. package/dist/lib/agent-mode.d.ts +1 -3
  23. package/dist/lib/agent-mode.js +1 -24
  24. package/dist/lib/agent-mode.js.map +1 -1
  25. package/dist/lib/alpic-command.d.ts +1 -3
  26. package/dist/lib/alpic-command.js +2 -2
  27. package/dist/lib/alpic-command.js.map +1 -1
  28. package/dist/lib/audit.d.ts +0 -2
  29. package/dist/lib/audit.js +6 -12
  30. package/dist/lib/audit.js.map +1 -1
  31. package/dist/lib/base-workflow.d.ts +1 -3
  32. package/dist/lib/base-workflow.js +2 -2
  33. package/dist/lib/base-workflow.js.map +1 -1
  34. package/dist/lib/insights.d.ts +1 -3
  35. package/dist/lib/insights.js +2 -2
  36. package/dist/lib/insights.js.map +1 -1
  37. package/dist/lib/resolve.d.ts +6 -7
  38. package/dist/lib/resolve.js +9 -15
  39. package/dist/lib/resolve.js.map +1 -1
  40. package/package.json +6 -6
  41. package/dist/__tests__/submission.e2e.test.d.ts +0 -1
  42. package/dist/__tests__/submission.e2e.test.js +0 -146
  43. package/dist/__tests__/submission.e2e.test.js.map +0 -1
  44. package/dist/commands/submission/create.d.ts +0 -15
  45. package/dist/commands/submission/create.js +0 -59
  46. package/dist/commands/submission/create.js.map +0 -1
  47. package/dist/commands/submission/inspect.d.ts +0 -10
  48. package/dist/commands/submission/inspect.js +0 -55
  49. package/dist/commands/submission/inspect.js.map +0 -1
  50. package/dist/commands/submission/update.d.ts +0 -12
  51. package/dist/commands/submission/update.js +0 -37
  52. package/dist/commands/submission/update.js.map +0 -1
  53. package/dist/lib/submission.d.ts +0 -13
  54. package/dist/lib/submission.js +0 -44
  55. package/dist/lib/submission.js.map +0 -1
@@ -1,146 +0,0 @@
1
- import { writeFile } from "node:fs/promises";
2
- import { join } from "node:path";
3
- import { beforeEach, describe, expect, it } from "vitest";
4
- import { cliSession, expectSuccessfulApiCall, registerCliE2ELifecycle } from "./utils.js";
5
- const ENV_ID = "env-submission-test";
6
- const PROJECT_ID = "prj-submission-test";
7
- const TEAM_ID = "mock-team-id";
8
- const SUBMISSION_ID = "sub-existing";
9
- const PREFILLED_FORM_DATA = { appName: "Chess", developerName: "Alpic", tools: [] };
10
- describe("alpic submission (E2E)", () => {
11
- const context = registerCliE2ELifecycle({
12
- projects: [
13
- {
14
- projectId: PROJECT_ID,
15
- teamId: TEAM_ID,
16
- projectName: "submission-project",
17
- environmentId: ENV_ID,
18
- environmentName: "production",
19
- },
20
- ],
21
- });
22
- let mockServer;
23
- let serverUrl;
24
- let cwd;
25
- let binPath;
26
- beforeEach(() => {
27
- ({ mockServer, serverUrl, cwd, binPath } = context);
28
- mockServer.setSubmissionPrefill("chatgpt", PREFILLED_FORM_DATA);
29
- mockServer.addSubmission({
30
- id: SUBMISSION_ID,
31
- environmentId: ENV_ID,
32
- platform: "chatgpt",
33
- formData: PREFILLED_FORM_DATA,
34
- prefillSnapshot: PREFILLED_FORM_DATA,
35
- auditId: "audit-1",
36
- urlVerification: null,
37
- createdAt: new Date("2026-08-10T00:00:00.000Z"),
38
- updatedAt: new Date("2026-08-10T00:00:00.000Z"),
39
- });
40
- });
41
- const env = () => ({ ALPIC_API_BASE_URL: serverUrl, ALPIC_API_KEY: "test-api-key" });
42
- it("creates a submission package for an environment", async () => {
43
- const { exitCode, output } = await cliSession(process.execPath, [binPath, "submission", "create", "--environment-id", ENV_ID, "--platform", "chatgpt"], { cwd, env: env() });
44
- expect(exitCode).toBe(0);
45
- expect(output).toContain("for ChatGPT");
46
- const call = mockServer.getLastCall("POST", "/v1/submissions");
47
- expectSuccessfulApiCall(call);
48
- expect(call?.input).toMatchObject({ environmentId: ENV_ID, platform: "chatgpt" });
49
- });
50
- it("prints the created package as JSON", async () => {
51
- const { exitCode, output } = await cliSession(process.execPath, [binPath, "submission", "create", "--environment-id", ENV_ID, "--platform", "chatgpt", "--json"], { cwd, env: env() });
52
- expect(exitCode).toBe(0);
53
- expect(output).toContain('"appName":"Chess"');
54
- });
55
- it("errors when no platform is given in non-interactive mode", async () => {
56
- const { exitCode, output } = await cliSession(process.execPath, [binPath, "submission", "create", "--environment-id", ENV_ID, "--non-interactive"], { cwd, env: env() });
57
- expect(exitCode).not.toBe(0);
58
- expect(output).toContain("--platform is required in non-interactive mode.");
59
- expect(mockServer.getCalls("POST", "/v1/submissions")).toHaveLength(0);
60
- });
61
- it("keeps status output off stdout in JSON mode, so the package can be piped", async () => {
62
- const { exitCode, output } = await cliSession(process.execPath, [binPath, "submission", "inspect", "--submission-id", SUBMISSION_ID, "--json"], { cwd, env: env() });
63
- expect(exitCode).toBe(0);
64
- expect(JSON.parse(output.trim())).toMatchObject({ id: SUBMISSION_ID, platform: "chatgpt" });
65
- });
66
- it("keeps nested project resolution off stdout in JSON mode", async () => {
67
- const { exitCode, output } = await cliSession(process.execPath, [
68
- binPath,
69
- "submission",
70
- "create",
71
- "--environment-name",
72
- "production",
73
- "--project-name",
74
- "submission-project",
75
- "--platform",
76
- "chatgpt",
77
- "--json",
78
- ], { cwd, env: env() });
79
- expect(exitCode).toBe(0);
80
- expect(JSON.parse(output.trim())).toMatchObject({ platform: "chatgpt" });
81
- });
82
- it("keeps environment resolution off stdout in JSON mode", async () => {
83
- const { exitCode, output } = await cliSession(process.execPath, [
84
- binPath,
85
- "submission",
86
- "create",
87
- "--environment-name",
88
- "production",
89
- "--project-id",
90
- PROJECT_ID,
91
- "--platform",
92
- "chatgpt",
93
- "--json",
94
- ], { cwd, env: env() });
95
- expect(exitCode).toBe(0);
96
- expect(JSON.parse(output.trim())).toMatchObject({ platform: "chatgpt" });
97
- });
98
- it("rejects a form field the platform does not have, rather than dropping it", async () => {
99
- const { exitCode, output } = await cliSession(process.execPath, [binPath, "submission", "update", "--submission-id", SUBMISSION_ID, "--form-data", '{"appNmae":"Chess"}'], { cwd, env: env() });
100
- expect(exitCode).not.toBe(0);
101
- expect(output).not.toContain("Updated");
102
- expect(output).toContain("Input validation failed");
103
- expect(mockServer.getLastCall("PUT", `/v1/submissions/${SUBMISSION_ID}`)?.responseStatus).toBeGreaterThanOrEqual(400);
104
- });
105
- it("inspects a submission package field by field", async () => {
106
- const { exitCode, output } = await cliSession(process.execPath, [binPath, "submission", "inspect", "--submission-id", SUBMISSION_ID], { cwd, env: env() });
107
- expect(exitCode).toBe(0);
108
- expect(output).toContain("ChatGPT");
109
- expect(output).toContain("appName");
110
- expect(output).toContain("Chess");
111
- expectSuccessfulApiCall(mockServer.getLastCall("GET", `/v1/submissions/${SUBMISSION_ID}`));
112
- });
113
- it("exits with an error when the submission does not exist", async () => {
114
- const { exitCode, output } = await cliSession(process.execPath, [binPath, "submission", "inspect", "--submission-id", "sub-unknown"], { cwd, env: env() });
115
- expect(exitCode).not.toBe(0);
116
- expect(output).toContain("Submission not found");
117
- });
118
- it("sends the fields from inline JSON, reading the platform off the package", async () => {
119
- const { exitCode, output } = await cliSession(process.execPath, [binPath, "submission", "update", "--submission-id", SUBMISSION_ID, "--form-data", '{"appName":"Chess Master"}'], { cwd, env: env() });
120
- expect(exitCode).toBe(0);
121
- expect(output).toContain(`Updated ${SUBMISSION_ID}.`);
122
- const call = mockServer.getLastCall("PUT", `/v1/submissions/${SUBMISSION_ID}`);
123
- expectSuccessfulApiCall(call);
124
- expect(call?.input).toMatchObject({ platform: "chatgpt", formData: { appName: "Chess Master" } });
125
- });
126
- it("sends the fields from a JSON file", async () => {
127
- const formDataPath = join(cwd, "submission.json");
128
- await writeFile(formDataPath, JSON.stringify({ appName: "Chess Club" }));
129
- const { exitCode } = await cliSession(process.execPath, [binPath, "submission", "update", "--submission-id", SUBMISSION_ID, "--form-data-file", formDataPath], { cwd, env: env() });
130
- expect(exitCode).toBe(0);
131
- const call = mockServer.getLastCall("PUT", `/v1/submissions/${SUBMISSION_ID}`);
132
- expect(call?.input).toMatchObject({ formData: { appName: "Chess Club" } });
133
- });
134
- it("rejects form data that is not a JSON object without calling the API", async () => {
135
- const { exitCode, output } = await cliSession(process.execPath, [binPath, "submission", "update", "--submission-id", SUBMISSION_ID, "--form-data", "[]"], { cwd, env: env() });
136
- expect(exitCode).not.toBe(0);
137
- expect(output).toContain("Form data must be a JSON object of submission fields.");
138
- expect(mockServer.getCalls("PUT", `/v1/submissions/${SUBMISSION_ID}`)).toHaveLength(0);
139
- });
140
- it("rejects an update with no form data", async () => {
141
- const { exitCode, output } = await cliSession(process.execPath, [binPath, "submission", "update", "--submission-id", SUBMISSION_ID], { cwd, env: env() });
142
- expect(exitCode).not.toBe(0);
143
- expect(output).toContain("No form data provided. Use --form-data or --form-data-file.");
144
- });
145
- });
146
- //# sourceMappingURL=submission.e2e.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"submission.e2e.test.js","sourceRoot":"","sources":["../../src/__tests__/submission.e2e.test.ts"],"names":[],"mappings":"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"}
@@ -1,15 +0,0 @@
1
- import { AlpicCommand } from "../../lib/alpic-command.js";
2
- export declare class SubmissionCreate extends AlpicCommand {
3
- static description: string;
4
- static examples: string[];
5
- static flags: {
6
- platform: import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
8
- "environment-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
- "environment-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
10
- "project-id": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
11
- "project-name": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
12
- };
13
- run(): Promise<void>;
14
- private resolvePlatform;
15
- }
@@ -1,59 +0,0 @@
1
- import { AI_PLATFORMS, PLATFORM_LABELS } from "@alpic-ai/api";
2
- import * as p from "@clack/prompts";
3
- import { Flags } from "@oclif/core";
4
- import chalk from "chalk";
5
- import { api } from "../../api.js";
6
- import { isAgentMode } from "../../lib/agent-mode.js";
7
- import { AlpicCommand } from "../../lib/alpic-command.js";
8
- import { environmentFlags, projectFlags, resolveEnvironmentId } from "../../lib/resolve.js";
9
- export class SubmissionCreate extends AlpicCommand {
10
- static description = "Create a submission package for an environment. Alpic reads the deployed MCP server and prefills every field it can infer.";
11
- static examples = [
12
- "<%= config.bin %> submission create --platform chatgpt",
13
- "<%= config.bin %> submission create --platform claudeai --environment-id <environmentId>",
14
- "<%= config.bin %> submission create --platform chatgpt --environment-name production --project-name <projectName>",
15
- "<%= config.bin %> submission create --platform chatgpt --json",
16
- ];
17
- static flags = {
18
- ...projectFlags,
19
- ...environmentFlags,
20
- platform: Flags.string({
21
- description: "The directory the package targets",
22
- options: [...AI_PLATFORMS],
23
- }),
24
- json: Flags.boolean({ description: "Print the unmodified API response as JSON", default: false }),
25
- };
26
- async run() {
27
- const { flags } = await this.parse(SubmissionCreate);
28
- await this.ensureAuthenticated(flags);
29
- const environmentId = await resolveEnvironmentId(flags, { silent: flags.json });
30
- const platform = await this.resolvePlatform(flags);
31
- const spinner = this.spinner({ silent: flags.json });
32
- spinner.start(`Building the ${PLATFORM_LABELS[platform]} submission package...`);
33
- const submission = await api.submissions.create.v1({ environmentId, platform });
34
- spinner.stop(`Created ${chalk.cyan(submission.id)} for ${PLATFORM_LABELS[platform]}. ✅`);
35
- if (flags.json) {
36
- this.log(JSON.stringify(submission));
37
- return;
38
- }
39
- p.log.info(`Review and complete it with ${chalk.bold(`alpic submission inspect --submission-id ${submission.id}`)}`);
40
- }
41
- async resolvePlatform(flags) {
42
- if (flags.platform !== undefined) {
43
- // biome-ignore lint/plugin/no-type-assertion: oclif validates the flag against AI_PLATFORMS.
44
- return flags.platform;
45
- }
46
- if (flags["non-interactive"] || isAgentMode()) {
47
- throw new Error("--platform is required in non-interactive mode.");
48
- }
49
- const choice = await p.select({
50
- message: chalk.bold("Choose a directory to submit to"),
51
- options: AI_PLATFORMS.map((platform) => ({ value: platform, label: PLATFORM_LABELS[platform] })),
52
- });
53
- if (p.isCancel(choice)) {
54
- throw new Error("Cancelled.");
55
- }
56
- return choice;
57
- }
58
- }
59
- //# sourceMappingURL=create.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"create.js","sourceRoot":"","sources":["../../../src/commands/submission/create.ts"],"names":[],"mappings":"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"}
@@ -1,10 +0,0 @@
1
- import { AlpicCommand } from "../../lib/alpic-command.js";
2
- export declare class SubmissionInspect extends AlpicCommand {
3
- static description: string;
4
- static examples: string[];
5
- static flags: {
6
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
- "submission-id": import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
8
- };
9
- run(): Promise<void>;
10
- }
@@ -1,55 +0,0 @@
1
- import { PLATFORM_LABELS } from "@alpic-ai/api";
2
- import { Flags } from "@oclif/core";
3
- import chalk from "chalk";
4
- import { api } from "../../api.js";
5
- import { AlpicCommand } from "../../lib/alpic-command.js";
6
- import { formatFormDataValue, submissionFlags } from "../../lib/submission.js";
7
- import { formatTable } from "../../lib/table.js";
8
- import { formatAgo } from "../../lib/utils.js";
9
- export class SubmissionInspect extends AlpicCommand {
10
- static description = "Show a submission package and the fields it carries";
11
- static examples = [
12
- "<%= config.bin %> submission inspect --submission-id <submissionId>",
13
- "<%= config.bin %> submission inspect --submission-id <submissionId> --json",
14
- ];
15
- static flags = {
16
- ...submissionFlags,
17
- json: Flags.boolean({ description: "Print the unmodified API response as JSON", default: false }),
18
- };
19
- async run() {
20
- const { flags } = await this.parse(SubmissionInspect);
21
- await this.ensureAuthenticated(flags);
22
- const spinner = this.spinner({ silent: flags.json });
23
- spinner.start("Fetching submission...");
24
- const submission = await api.submissions.get.v1({ submissionId: flags["submission-id"] });
25
- spinner.stop("Submission found");
26
- if (flags.json) {
27
- this.log(JSON.stringify(submission));
28
- return;
29
- }
30
- const detailRows = [
31
- { label: "ID", value: chalk.cyan(submission.id) },
32
- { label: "Platform", value: PLATFORM_LABELS[submission.platform] },
33
- { label: "Environment", value: submission.environmentId },
34
- { label: "Beacon audit", value: submission.auditId ?? chalk.gray("-") },
35
- { label: "Created", value: formatAgo(submission.createdAt) },
36
- { label: "Updated", value: formatAgo(submission.updatedAt) },
37
- ];
38
- console.log(formatTable(detailRows, [
39
- { key: "label", header: "", format: (value) => chalk.bold(value) },
40
- { key: "value", header: "" },
41
- ]));
42
- const fieldRows = Object.entries(submission.formData).map(([field, value]) => ({
43
- field,
44
- value: formatFormDataValue(value),
45
- }));
46
- if (fieldRows.length === 0) {
47
- return;
48
- }
49
- console.log(formatTable(fieldRows, [
50
- { key: "field", header: "field", format: (value) => chalk.bold(value) },
51
- { key: "value", header: "value" },
52
- ]));
53
- }
54
- }
55
- //# sourceMappingURL=inspect.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"inspect.js","sourceRoot":"","sources":["../../../src/commands/submission/inspect.ts"],"names":[],"mappings":"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"}
@@ -1,12 +0,0 @@
1
- import { AlpicCommand } from "../../lib/alpic-command.js";
2
- export declare class SubmissionUpdate extends AlpicCommand {
3
- static description: string;
4
- static examples: string[];
5
- static flags: {
6
- json: import("@oclif/core/interfaces").BooleanFlag<boolean>;
7
- "form-data": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
8
- "form-data-file": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
9
- "submission-id": import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
10
- };
11
- run(): Promise<void>;
12
- }
@@ -1,37 +0,0 @@
1
- import { Flags } from "@oclif/core";
2
- import chalk from "chalk";
3
- import { api } from "../../api.js";
4
- import { AlpicCommand } from "../../lib/alpic-command.js";
5
- import { formDataFlags, readFormData, submissionFlags } from "../../lib/submission.js";
6
- export class SubmissionUpdate extends AlpicCommand {
7
- static description = "Update the fields of a submission package. Only the fields you pass are changed; the rest are left as they are.";
8
- static examples = [
9
- "<%= config.bin %> submission update --submission-id <submissionId> --form-data-file ./submission.json",
10
- '<%= config.bin %> submission update --submission-id <submissionId> --form-data \'{"appName":"Chess"}\'',
11
- "<%= config.bin %> submission inspect --submission-id <submissionId> --json | jq .formData | alpic submission update --submission-id <submissionId> --form-data-file -",
12
- ];
13
- static flags = {
14
- ...submissionFlags,
15
- ...formDataFlags,
16
- json: Flags.boolean({ description: "Print the unmodified API response as JSON", default: false }),
17
- };
18
- async run() {
19
- const { flags } = await this.parse(SubmissionUpdate);
20
- const formData = readFormData(flags);
21
- await this.ensureAuthenticated(flags);
22
- const submissionId = flags["submission-id"];
23
- const spinner = this.spinner({ silent: flags.json });
24
- spinner.start("Fetching submission...");
25
- const submission = await api.submissions.get.v1({ submissionId });
26
- spinner.message("Updating submission...");
27
- // The platform is read from the package rather than asked for: it is fixed at creation and the API rejects a mismatch.
28
- const updated = submission.platform === "chatgpt"
29
- ? await api.submissions.update.v1({ submissionId, platform: "chatgpt", formData })
30
- : await api.submissions.update.v1({ submissionId, platform: "claudeai", formData });
31
- spinner.stop(`Updated ${chalk.cyan(updated.id)}. ✅`);
32
- if (flags.json) {
33
- this.log(JSON.stringify(updated));
34
- }
35
- }
36
- }
37
- //# sourceMappingURL=update.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"update.js","sourceRoot":"","sources":["../../../src/commands/submission/update.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AACpC,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AACnC,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAC1D,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEvF,MAAM,OAAO,gBAAiB,SAAQ,YAAY;IAChD,MAAM,CAAU,WAAW,GACzB,iHAAiH,CAAC;IAEpH,MAAM,CAAU,QAAQ,GAAG;QACzB,uGAAuG;QACvG,wGAAwG;QACxG,uKAAuK;KACxK,CAAC;IAEF,MAAM,CAAU,KAAK,GAAG;QACtB,GAAG,eAAe;QAClB,GAAG,aAAa;QAChB,IAAI,EAAE,KAAK,CAAC,OAAO,CAAC,EAAE,WAAW,EAAE,2CAA2C,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC;KAClG,CAAC;IAEF,KAAK,CAAC,GAAG;QACP,MAAM,EAAE,KAAK,EAAE,GAAG,MAAM,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;QAErD,MAAM,QAAQ,GAAG,YAAY,CAAC,KAAK,CAAC,CAAC;QAErC,MAAM,IAAI,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAEtC,MAAM,YAAY,GAAG,KAAK,CAAC,eAAe,CAAC,CAAC;QAC5C,MAAM,OAAO,GAAG,IAAI,CAAC,OAAO,CAAC,EAAE,MAAM,EAAE,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,OAAO,CAAC,KAAK,CAAC,wBAAwB,CAAC,CAAC;QAExC,MAAM,UAAU,GAAG,MAAM,GAAG,CAAC,WAAW,CAAC,GAAG,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC;QAElE,OAAO,CAAC,OAAO,CAAC,wBAAwB,CAAC,CAAC;QAE1C,uHAAuH;QACvH,MAAM,OAAO,GACX,UAAU,CAAC,QAAQ,KAAK,SAAS;YAC/B,CAAC,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,CAAC;YAClF,CAAC,CAAC,MAAM,GAAG,CAAC,WAAW,CAAC,MAAM,CAAC,EAAE,CAAC,EAAE,YAAY,EAAE,QAAQ,EAAE,UAAU,EAAE,QAAQ,EAAE,CAAC,CAAC;QAExF,OAAO,CAAC,IAAI,CAAC,WAAW,KAAK,CAAC,IAAI,CAAC,OAAO,CAAC,EAAE,CAAC,KAAK,CAAC,CAAC;QAErD,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;YACf,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CAAC;QACpC,CAAC;IACH,CAAC"}
@@ -1,13 +0,0 @@
1
- export declare const submissionFlags: {
2
- "submission-id": import("@oclif/core/interfaces").OptionFlag<string, import("@oclif/core/interfaces").CustomOptions>;
3
- };
4
- export declare const formDataFlags: {
5
- "form-data": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
6
- "form-data-file": import("@oclif/core/interfaces").OptionFlag<string | undefined, import("@oclif/core/interfaces").CustomOptions>;
7
- };
8
- /** `--form-data-file -` reads stdin, which `readFileSync` takes as file descriptor 0. */
9
- export declare const readFormData: (flags: {
10
- "form-data"?: string;
11
- "form-data-file"?: string;
12
- }) => object;
13
- export declare const formatFormDataValue: (value: unknown) => string;
@@ -1,44 +0,0 @@
1
- import { readFileSync } from "node:fs";
2
- import { Flags } from "@oclif/core";
3
- const MAX_FIELD_VALUE_LENGTH = 80;
4
- export const submissionFlags = {
5
- "submission-id": Flags.string({ description: "The ID of the submission package", required: true }),
6
- };
7
- export const formDataFlags = {
8
- "form-data": Flags.string({
9
- description: "The submission fields as a JSON object",
10
- exclusive: ["form-data-file"],
11
- }),
12
- "form-data-file": Flags.string({
13
- description: "Path to a JSON file holding the submission fields; use - to read stdin",
14
- exclusive: ["form-data"],
15
- }),
16
- };
17
- /** `--form-data-file -` reads stdin, which `readFileSync` takes as file descriptor 0. */
18
- export const readFormData = (flags) => {
19
- const source = flags["form-data-file"]
20
- ? readFileSync(flags["form-data-file"] === "-" ? 0 : flags["form-data-file"], "utf8")
21
- : flags["form-data"];
22
- if (source === undefined) {
23
- throw new Error("No form data provided. Use --form-data or --form-data-file.");
24
- }
25
- let parsed;
26
- try {
27
- parsed = JSON.parse(source);
28
- }
29
- catch (error) {
30
- throw new Error(`Form data is not valid JSON: ${error instanceof Error ? error.message : String(error)}`);
31
- }
32
- if (parsed === null || typeof parsed !== "object" || Array.isArray(parsed)) {
33
- throw new Error("Form data must be a JSON object of submission fields.");
34
- }
35
- return parsed;
36
- };
37
- export const formatFormDataValue = (value) => {
38
- if (value === null || value === undefined || value === "") {
39
- return "-";
40
- }
41
- const formatted = typeof value === "string" ? value : JSON.stringify(value);
42
- return formatted.length <= MAX_FIELD_VALUE_LENGTH ? formatted : `${formatted.slice(0, MAX_FIELD_VALUE_LENGTH - 1)}…`;
43
- };
44
- //# sourceMappingURL=submission.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"submission.js","sourceRoot":"","sources":["../../src/lib/submission.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AACvC,OAAO,EAAE,KAAK,EAAE,MAAM,aAAa,CAAC;AAEpC,MAAM,sBAAsB,GAAG,EAAE,CAAC;AAElC,MAAM,CAAC,MAAM,eAAe,GAAG;IAC7B,eAAe,EAAE,KAAK,CAAC,MAAM,CAAC,EAAE,WAAW,EAAE,kCAAkC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;CACnG,CAAC;AAEF,MAAM,CAAC,MAAM,aAAa,GAAG;IAC3B,WAAW,EAAE,KAAK,CAAC,MAAM,CAAC;QACxB,WAAW,EAAE,wCAAwC;QACrD,SAAS,EAAE,CAAC,gBAAgB,CAAC;KAC9B,CAAC;IACF,gBAAgB,EAAE,KAAK,CAAC,MAAM,CAAC;QAC7B,WAAW,EAAE,wEAAwE;QACrF,SAAS,EAAE,CAAC,WAAW,CAAC;KACzB,CAAC;CACH,CAAC;AAEF,yFAAyF;AACzF,MAAM,CAAC,MAAM,YAAY,GAAG,CAAC,KAA0D,EAAE,EAAE;IACzF,MAAM,MAAM,GAAG,KAAK,CAAC,gBAAgB,CAAC;QACpC,CAAC,CAAC,YAAY,CAAC,KAAK,CAAC,gBAAgB,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAAE,MAAM,CAAC;QACrF,CAAC,CAAC,KAAK,CAAC,WAAW,CAAC,CAAC;IAEvB,IAAI,MAAM,KAAK,SAAS,EAAE,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAC;IACjF,CAAC;IAED,IAAI,MAAe,CAAC;IACpB,IAAI,CAAC;QACH,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IAC9B,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,KAAK,CAAC,gCAAgC,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC;IAC5G,CAAC;IAED,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,MAAM,KAAK,QAAQ,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,uDAAuD,CAAC,CAAC;IAC3E,CAAC;IAED,OAAO,MAAM,CAAC;AAChB,CAAC,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAG,CAAC,KAAc,EAAE,EAAE;IACpD,IAAI,KAAK,KAAK,IAAI,IAAI,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,EAAE,EAAE,CAAC;QAC1D,OAAO,GAAG,CAAC;IACb,CAAC;IACD,MAAM,SAAS,GAAG,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;IAC5E,OAAO,SAAS,CAAC,MAAM,IAAI,sBAAsB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,SAAS,CAAC,KAAK,CAAC,CAAC,EAAE,sBAAsB,GAAG,CAAC,CAAC,GAAG,CAAC;AACvH,CAAC,CAAC"}