@gonovus-ai/spec-flow-cli 0.4.0 → 0.6.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 +190 -28
- package/dist/bin.js +6 -50
- package/dist/bin.js.map +1 -1
- package/dist/cli.d.ts +3 -0
- package/dist/cli.js +126 -397
- package/dist/cli.js.map +1 -1
- package/dist/commands/work-item-output.d.ts +390 -0
- package/dist/commands/work-item-output.js +36 -0
- package/dist/commands/work-item-output.js.map +1 -0
- package/dist/custom-field-color-commands.d.ts +7 -0
- package/dist/custom-field-color-commands.js +22 -0
- package/dist/custom-field-color-commands.js.map +1 -0
- package/dist/github-connection-commands.js +23 -3
- package/dist/github-connection-commands.js.map +1 -1
- package/dist/http-origin.js +3 -0
- package/dist/http-origin.js.map +1 -1
- package/dist/index.js +50 -28
- package/dist/index.js.map +1 -1
- package/dist/input/text-source.d.ts +9 -0
- package/dist/input/text-source.js +74 -0
- package/dist/input/text-source.js.map +1 -0
- package/dist/product-map-commands.d.ts +2 -0
- package/dist/product-map-commands.js +2 -0
- package/dist/product-map-commands.js.map +1 -1
- package/dist/program.d.ts +3 -0
- package/dist/program.js +19 -0
- package/dist/program.js.map +1 -0
- package/dist/project-administration-commands.d.ts +3 -0
- package/dist/project-administration-commands.js +31 -0
- package/dist/project-administration-commands.js.map +1 -0
- package/dist/resource-command-runtime.d.ts +16 -0
- package/dist/resource-command-runtime.js +2 -0
- package/dist/resource-command-runtime.js.map +1 -0
- package/dist/runtime/errors.d.ts +28 -0
- package/dist/runtime/errors.js +133 -0
- package/dist/runtime/errors.js.map +1 -0
- package/dist/runtime/execute.d.ts +23 -0
- package/dist/runtime/execute.js +25 -0
- package/dist/runtime/execute.js.map +1 -0
- package/dist/runtime/identity.d.ts +183 -0
- package/dist/runtime/identity.js +17 -0
- package/dist/runtime/identity.js.map +1 -0
- package/dist/runtime/output.d.ts +3 -0
- package/dist/runtime/output.js +13 -0
- package/dist/runtime/output.js.map +1 -0
- package/dist/runtime/session.d.ts +16 -0
- package/dist/runtime/session.js +123 -0
- package/dist/runtime/session.js.map +1 -0
- package/dist/screen-image-commands.d.ts +10 -0
- package/dist/screen-image-commands.js +77 -0
- package/dist/screen-image-commands.js.map +1 -0
- package/dist/spec-discussion-commands.d.ts +3 -0
- package/dist/spec-discussion-commands.js +56 -0
- package/dist/spec-discussion-commands.js.map +1 -0
- package/dist/spec-owner-commands.d.ts +3 -0
- package/dist/spec-owner-commands.js +37 -0
- package/dist/spec-owner-commands.js.map +1 -0
- package/dist/work-item-asset-commands.d.ts +13 -0
- package/dist/work-item-asset-commands.js +10 -9
- package/dist/work-item-asset-commands.js.map +1 -1
- package/dist/work-item-query-commands.d.ts +3 -0
- package/dist/work-item-query-commands.js +29 -0
- package/dist/work-item-query-commands.js.map +1 -0
- package/package.json +1 -1
- package/dist/work-item-time-entry-input.d.ts +0 -4
- package/dist/work-item-time-entry-input.js +0 -27
- package/dist/work-item-time-entry-input.js.map +0 -1
|
@@ -0,0 +1,37 @@
|
|
|
1
|
+
import { InvalidArgumentError } from "commander";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
const userIdentity = (value) => {
|
|
4
|
+
const parsed = z.string().trim().min(1).max(200).safeParse(value);
|
|
5
|
+
if (!parsed.success)
|
|
6
|
+
throw new InvalidArgumentError("Owner must be a current Workspace member identity");
|
|
7
|
+
return parsed.data;
|
|
8
|
+
};
|
|
9
|
+
const commandKey = (value) => {
|
|
10
|
+
if (!z.uuid().safeParse(value).success)
|
|
11
|
+
throw new InvalidArgumentError("Command identity must be a UUID");
|
|
12
|
+
return value;
|
|
13
|
+
};
|
|
14
|
+
export function registerSpecOwnerCommands(spec, runtime) {
|
|
15
|
+
const owner = spec.command("owner").description("Read and assign Spec responsibility without granting access");
|
|
16
|
+
const scoped = (command) => command.requiredOption("--workspace-id <id>").requiredOption("--spec-id <id>").option("--json", "Emit structured JSON (the default)");
|
|
17
|
+
scoped(owner.command("read")).action(async (options) => {
|
|
18
|
+
runtime.setExitCode(await runtime.run(client => client.GET("/v1/workspaces/{workspaceId}/specs/{specId}/owner", { params: { path: options } }), { rejectWorkspaceReadToken: true }));
|
|
19
|
+
});
|
|
20
|
+
scoped(owner.command("candidates")).action(async (options) => {
|
|
21
|
+
runtime.setExitCode(await runtime.run(client => client.GET("/v1/workspaces/{workspaceId}/specs/{specId}/owner/candidates", { params: { path: options } }), { rejectWorkspaceReadToken: true }));
|
|
22
|
+
});
|
|
23
|
+
for (const operation of ["assign", "clear"]) {
|
|
24
|
+
const command = scoped(owner.command(operation))
|
|
25
|
+
.requiredOption("--expected-version <version>", "Observed Owner version", runtime.parseOpaqueVersion)
|
|
26
|
+
.requiredOption("--idempotency-key <key>", "Retain this UUID for the same intent", commandKey);
|
|
27
|
+
if (operation === "assign")
|
|
28
|
+
command.requiredOption("--user-id <id>", "Eligible Workspace member", userIdentity);
|
|
29
|
+
command.action(async (options) => {
|
|
30
|
+
runtime.setExitCode(await runtime.run(client => client.PUT("/v1/workspaces/{workspaceId}/specs/{specId}/owner", {
|
|
31
|
+
params: { path: { workspaceId: options.workspaceId, specId: options.specId }, header: { "if-match": options.expectedVersion, "idempotency-key": options.idempotencyKey } },
|
|
32
|
+
body: { userId: operation === "clear" ? null : options.userId ?? "" },
|
|
33
|
+
}), { rejectWorkspaceReadToken: true, retryTransportOnce: true }));
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
//# sourceMappingURL=spec-owner-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"spec-owner-commands.js","sourceRoot":"","sources":["../src/spec-owner-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
import type { Command } from "commander";
|
|
2
2
|
import type createClient from "openapi-fetch";
|
|
3
|
+
import { z } from "zod";
|
|
3
4
|
import type { paths } from "@spec-flow/api-client";
|
|
4
5
|
import type { CliDependencies } from "./cli.js";
|
|
5
6
|
type Client = ReturnType<typeof createClient<paths>>;
|
|
@@ -17,8 +18,20 @@ interface Runtime {
|
|
|
17
18
|
readonly setExitCode: (value: number) => void;
|
|
18
19
|
readonly rejectWrite: () => number;
|
|
19
20
|
}
|
|
21
|
+
export declare const reservationSchema: z.ZodObject<{
|
|
22
|
+
uploadId: z.ZodUUID;
|
|
23
|
+
uploadUrl: z.ZodURL;
|
|
24
|
+
expiresAt: z.ZodISODateTime;
|
|
25
|
+
headers: z.ZodObject<{
|
|
26
|
+
"Content-Type": z.ZodString;
|
|
27
|
+
"x-ms-blob-type": z.ZodOptional<z.ZodLiteral<"BlockBlob">>;
|
|
28
|
+
}, z.core.$strict>;
|
|
29
|
+
}, z.core.$strip>;
|
|
20
30
|
/** One published CLI entry with explicit replayable upload phases. The signed
|
|
21
31
|
* reservation is read from a file rather than repeated in shell arguments.
|
|
22
32
|
*/
|
|
23
33
|
export declare function registerWorkItemAssetCommands(workItem: Command, runtime: Runtime): void;
|
|
34
|
+
export declare function readBoundedFile(path: string, maximum: number): Promise<Uint8Array>;
|
|
35
|
+
/** Only a fresh server reservation may authorize a byte PUT. No credentials or redirects. */
|
|
36
|
+
export declare function validateUploadReservation(reservation: z.infer<typeof reservationSchema>): URL;
|
|
24
37
|
export {};
|
|
@@ -7,7 +7,7 @@ const uuid = (value) => {
|
|
|
7
7
|
return value;
|
|
8
8
|
};
|
|
9
9
|
const maximumBytes = 10 * 1024 * 1024;
|
|
10
|
-
const reservationSchema = z.object({
|
|
10
|
+
export const reservationSchema = z.object({
|
|
11
11
|
uploadId: z.uuid(),
|
|
12
12
|
uploadUrl: z.url(),
|
|
13
13
|
expiresAt: z.iso.datetime(),
|
|
@@ -79,13 +79,7 @@ export function registerWorkItemAssetCommands(workItem, runtime) {
|
|
|
79
79
|
try {
|
|
80
80
|
const source = await readBoundedFile(options.reservationFile, 32_768);
|
|
81
81
|
reservation = reservationSchema.parse(JSON.parse(new TextDecoder("utf-8", { fatal: true }).decode(source)));
|
|
82
|
-
const url =
|
|
83
|
-
if ((url.protocol !== "http:" && url.protocol !== "https:") ||
|
|
84
|
-
url.username !== "" ||
|
|
85
|
-
url.password !== "" ||
|
|
86
|
-
url.hash !== "" ||
|
|
87
|
-
new Date(reservation.expiresAt).getTime() <= Date.now())
|
|
88
|
-
throw new Error("Upload reservation is invalid or expired");
|
|
82
|
+
const url = validateUploadReservation(reservation);
|
|
89
83
|
const bytes = await readBoundedFile(options.file, maximumBytes);
|
|
90
84
|
uploadRequest = new Request(url, {
|
|
91
85
|
method: "PUT",
|
|
@@ -212,7 +206,7 @@ export function registerWorkItemAssetCommands(workItem, runtime) {
|
|
|
212
206
|
}));
|
|
213
207
|
});
|
|
214
208
|
}
|
|
215
|
-
async function readBoundedFile(path, maximum) {
|
|
209
|
+
export async function readBoundedFile(path, maximum) {
|
|
216
210
|
const file = await open(path, "r");
|
|
217
211
|
try {
|
|
218
212
|
if (!(await file.stat()).isFile())
|
|
@@ -233,4 +227,11 @@ async function readBoundedFile(path, maximum) {
|
|
|
233
227
|
await file.close();
|
|
234
228
|
}
|
|
235
229
|
}
|
|
230
|
+
/** Only a fresh server reservation may authorize a byte PUT. No credentials or redirects. */
|
|
231
|
+
export function validateUploadReservation(reservation) {
|
|
232
|
+
const url = new URL(reservation.uploadUrl);
|
|
233
|
+
if ((url.protocol !== "http:" && url.protocol !== "https:") || url.username !== "" || url.password !== "" || url.hash !== "" || new Date(reservation.expiresAt).getTime() <= Date.now())
|
|
234
|
+
throw new Error("Upload reservation is invalid or expired");
|
|
235
|
+
return url;
|
|
236
|
+
}
|
|
236
237
|
//# sourceMappingURL=work-item-asset-commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"work-item-asset-commands.js","sourceRoot":"","sources":["../src/work-item-asset-commands.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,oBAAoB,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAC;AAExC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AA4BxB,MAAM,IAAI,GAAG,CAAC,KAAa,EAAU,EAAE;IACrC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO;QACpC,MAAM,IAAI,oBAAoB,CAC5B,4CAA4C,CAC7C,CAAC;IACJ,OAAO,KAAK,CAAC;AACf,CAAC,CAAC;AACF,MAAM,YAAY,GAAG,EAAE,GAAG,IAAI,GAAG,IAAI,CAAC;AACtC,MAAM,iBAAiB,GAAG,CAAC,CAAC,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"work-item-asset-commands.js","sourceRoot":"","sources":["../src/work-item-asset-commands.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import { InvalidArgumentError } from "commander";
|
|
2
|
+
import { z } from "zod";
|
|
3
|
+
const filters = z.object({ repositoryConnectionId: z.uuid().nullable().optional(), assignees: z.array(z.string().nullable()), customFields: z.record(z.string(), z.array(z.string())), dueDates: z.array(z.enum(["dueThisWeek", "dueNextWeek", "noDueDate"])), labels: z.array(z.string()), priorities: z.array(z.enum(["urgent", "high", "medium", "low", "no-priority"])), search: z.string(), sortBy: z.enum(["createdAt", "dueDate", "number", "position", "priority", "title"]), sortOrder: z.enum(["asc", "desc"]), statuses: z.array(z.string()) }).strict();
|
|
4
|
+
const viewSchema = z.object({ id: z.uuid(), name: z.string(), layout: z.enum(["board", "list"]), groupedByStatus: z.boolean(), filters }).strict();
|
|
5
|
+
const statisticsSchema = z.object({ view: z.enum(["board", "list"]), repositoryConnectionId: z.string().optional(), assignee: z.string().optional(), customFields: z.string().optional(), due: z.string().optional(), dueAfter: z.string().optional(), dueBefore: z.string().optional(), label: z.string().optional(), priority: z.string().optional(), search: z.string().optional(), sortBy: z.enum(["createdAt", "dueDate", "number", "position", "priority", "title"]).optional(), sortOrder: z.enum(["asc", "desc"]).optional(), startAfter: z.string().optional(), startBefore: z.string().optional(), status: z.string().optional() }).strict();
|
|
6
|
+
function parseJson(value, schema) {
|
|
7
|
+
try {
|
|
8
|
+
return schema.parse(JSON.parse(value));
|
|
9
|
+
}
|
|
10
|
+
catch {
|
|
11
|
+
throw new InvalidArgumentError("Input must match the documented JSON contract");
|
|
12
|
+
}
|
|
13
|
+
}
|
|
14
|
+
export function registerWorkItemQueryCommands(workItem, workspace, runtime) {
|
|
15
|
+
const view = workItem.command("view").description("Read and save existing shared task views");
|
|
16
|
+
view.command("list").requiredOption("--project-id <id>").action(async (o) => {
|
|
17
|
+
runtime.setExitCode(await runtime.run(c => c.GET("/v1/projects/{projectId}/work-item-views", { params: { path: o } }), { rejectWorkspaceReadToken: true }));
|
|
18
|
+
});
|
|
19
|
+
view.command("save").requiredOption("--project-id <id>").requiredOption("--input <json>", "Complete view without version", value => parseJson(value, viewSchema)).option("--expected-version <version>", "Required for an existing view; omit only for creation", runtime.parseOpaqueVersion).action(async (o) => {
|
|
20
|
+
runtime.setExitCode(await runtime.run(c => c.PUT("/v1/projects/{projectId}/work-item-views", { params: { path: { projectId: o.projectId }, ...(o.expectedVersion === undefined ? {} : { header: { "if-match": o.expectedVersion } }) }, body: o.input }), { rejectWorkspaceReadToken: true }));
|
|
21
|
+
});
|
|
22
|
+
workItem.command("statistics").description("Server statistics, including trends in overview.timeline").requiredOption("--project-id <id>").requiredOption("--query <json>", "view plus existing server selection fields; CSV strings retain server semantics", value => parseJson(value, statisticsSchema)).action(async (o) => {
|
|
23
|
+
runtime.setExitCode(await runtime.run(c => c.GET("/v1/projects/{projectId}/work-item-statistics", { params: { path: { projectId: o.projectId }, query: o.query } }), { rejectWorkspaceReadToken: true }));
|
|
24
|
+
});
|
|
25
|
+
workspace.command("my-work-items").requiredOption("--workspace-id <id>").option("--limit <limit>", "Server page size", runtime.parseLimit, 50).option("--cursor <cursor>").action(async (o) => {
|
|
26
|
+
runtime.setExitCode(await runtime.run(c => c.GET("/v1/workspaces/{workspaceId}/my-work-items", { params: { path: { workspaceId: o.workspaceId }, query: { limit: o.limit, ...(o.cursor === undefined ? {} : { cursor: o.cursor }) } } }), { rejectWorkspaceReadToken: true }));
|
|
27
|
+
});
|
|
28
|
+
}
|
|
29
|
+
//# sourceMappingURL=work-item-query-commands.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"work-item-query-commands.js","sourceRoot":"","sources":["../src/work-item-query-commands.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,4 +0,0 @@
|
|
|
1
|
-
/** ISO/calendar validation ported from Kaneo time-entry/schema.ts (MIT). */
|
|
2
|
-
export declare function parseTimeEntryTimestamp(value: string): string;
|
|
3
|
-
export declare function parseTimeEntryUuid(value: string): string;
|
|
4
|
-
export declare function parseTimeEntryDescription(value: string): string;
|
|
@@ -1,27 +0,0 @@
|
|
|
1
|
-
import { z } from "zod";
|
|
2
|
-
/** ISO/calendar validation ported from Kaneo time-entry/schema.ts (MIT). */
|
|
3
|
-
export function parseTimeEntryTimestamp(value) {
|
|
4
|
-
const validFormat = /^\d{4}-\d{2}-\d{2}T\d{2}:\d{2}(:\d{2}(\.\d{1,9})?)?(Z|[+-]\d{2}:\d{2})$/u.test(value);
|
|
5
|
-
const year = Number(value.slice(0, 4));
|
|
6
|
-
const month = Number(value.slice(5, 7));
|
|
7
|
-
const day = Number(value.slice(8, 10));
|
|
8
|
-
const calendar = new Date(0);
|
|
9
|
-
calendar.setUTCFullYear(year, month - 1, day);
|
|
10
|
-
if (!validFormat || Number.isNaN(Date.parse(value)) || year === 0 || calendar.getUTCFullYear() !== year || calendar.getUTCMonth() !== month - 1 || calendar.getUTCDate() !== day)
|
|
11
|
-
throw new Error("Time Entry timestamp must be a valid ISO 8601 date-time with an offset");
|
|
12
|
-
const timestamp = new Date(value);
|
|
13
|
-
if (timestamp.getUTCFullYear() < 1 || timestamp.getUTCFullYear() > 9999)
|
|
14
|
-
throw new Error("Time Entry UTC year must be between 1 and 9999");
|
|
15
|
-
return timestamp.toISOString();
|
|
16
|
-
}
|
|
17
|
-
export function parseTimeEntryUuid(value) {
|
|
18
|
-
if (!z.uuid().safeParse(value).success)
|
|
19
|
-
throw new Error("Time Entry identifier and command key must be UUIDs");
|
|
20
|
-
return value;
|
|
21
|
-
}
|
|
22
|
-
export function parseTimeEntryDescription(value) {
|
|
23
|
-
if (value.length > 20_000 || value.includes("\0"))
|
|
24
|
-
throw new Error("Time Entry description exceeds the allowed limit");
|
|
25
|
-
return value;
|
|
26
|
-
}
|
|
27
|
-
//# sourceMappingURL=work-item-time-entry-input.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"work-item-time-entry-input.js","sourceRoot":"","sources":["../src/work-item-time-entry-input.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,4EAA4E;AAC5E,MAAM,UAAU,uBAAuB,CAAC,KAAa;IACnD,MAAM,WAAW,GAAG,0EAA0E,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;IAC3G,MAAM,IAAI,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACvC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;IACxC,MAAM,GAAG,GAAG,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC;IACvC,MAAM,QAAQ,GAAG,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC;IAC7B,QAAQ,CAAC,cAAc,CAAC,IAAI,EAAE,KAAK,GAAG,CAAC,EAAE,GAAG,CAAC,CAAC;IAC9C,IAAI,CAAC,WAAW,IAAI,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,QAAQ,CAAC,cAAc,EAAE,KAAK,IAAI,IAAI,QAAQ,CAAC,WAAW,EAAE,KAAK,KAAK,GAAG,CAAC,IAAI,QAAQ,CAAC,UAAU,EAAE,KAAK,GAAG;QAAE,MAAM,IAAI,KAAK,CAAC,wEAAwE,CAAC,CAAC;IAC5Q,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,KAAK,CAAC,CAAC;IAClC,IAAI,SAAS,CAAC,cAAc,EAAE,GAAG,CAAC,IAAI,SAAS,CAAC,cAAc,EAAE,GAAG,IAAI;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAC;IAC3I,OAAO,SAAS,CAAC,WAAW,EAAE,CAAC;AACjC,CAAC;AACD,MAAM,UAAU,kBAAkB,CAAC,KAAa;IAC9C,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,CAAC,CAAC;IAC/G,OAAO,KAAK,CAAC;AACf,CAAC;AACD,MAAM,UAAU,yBAAyB,CAAC,KAAa;IACrD,IAAI,KAAK,CAAC,MAAM,GAAG,MAAM,IAAI,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,kDAAkD,CAAC,CAAC;IACvH,OAAO,KAAK,CAAC;AACf,CAAC"}
|