@eyeauras/youtrack-cli 0.5.7 → 0.6.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +26 -17
- package/dist/src/articles-commands.d.ts.map +1 -1
- package/dist/src/articles-commands.js +2 -3
- package/dist/src/articles-commands.js.map +1 -1
- package/dist/src/articles.d.ts +3 -3
- package/dist/src/articles.d.ts.map +1 -1
- package/dist/src/articles.js +6 -5
- package/dist/src/articles.js.map +1 -1
- package/dist/src/attachment-download-commands.d.ts.map +1 -1
- package/dist/src/attachment-download-commands.js +6 -7
- package/dist/src/attachment-download-commands.js.map +1 -1
- package/dist/src/attachment-download.d.ts +6 -3
- package/dist/src/attachment-download.d.ts.map +1 -1
- package/dist/src/attachment-download.js +18 -15
- package/dist/src/attachment-download.js.map +1 -1
- package/dist/src/cli.d.ts.map +1 -1
- package/dist/src/cli.js +6 -8
- package/dist/src/cli.js.map +1 -1
- package/dist/src/issue-batch.d.ts +1 -1
- package/dist/src/issue-batch.d.ts.map +1 -1
- package/dist/src/issue-batch.js +10 -5
- package/dist/src/issue-batch.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -350,7 +350,7 @@ grants permissions.
|
|
|
350
350
|
|
|
351
351
|
```powershell
|
|
352
352
|
npm run youtrack -- issues attachments download DEMO-1 1-1 --profile youtrack-dev
|
|
353
|
-
npm run youtrack -- issues attachments download DEMO-1 1-1 --
|
|
353
|
+
npm run youtrack -- issues attachments download DEMO-1 1-1 --output report.txt --max-bytes 1048576 --profile youtrack-dev
|
|
354
354
|
npm run youtrack -- article attachment download KB-A-1 7-1 --profile youtrack-dev
|
|
355
355
|
```
|
|
356
356
|
|
|
@@ -360,31 +360,30 @@ HTTP(S) URLs may use an external/CDN origin or another native file path; userinf
|
|
|
360
360
|
controls are rejected at the transport boundary. Signatures stay in memory and never
|
|
361
361
|
appear in metadata output, errors or the download result.
|
|
362
362
|
|
|
363
|
-
Files
|
|
364
|
-
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
file into `downloads`. Partial files are removed when their identities remain trusted. Output
|
|
363
|
+
Files default to the invocation working directory using the metadata filename. Unsafe or ambiguous
|
|
364
|
+
default filenames are rejected. `--output <path>` chooses a relative path against that working
|
|
365
|
+
directory or an absolute path. The parent must exist. Existing files and symlinks are never overwritten,
|
|
366
|
+
regardless of the selected profile. Downloads have no default byte ceiling; optional `--max-bytes`
|
|
367
|
+
bounds streamed bytes and Content-Length. Core stages bytes in a fresh private `.download-*` directory
|
|
368
|
+
beside the output file, then hard-links only the complete identity-checked file into place. Partial files are removed when their identities remain trusted. Output
|
|
370
369
|
contains only sanitized ID/name, local path, byte count and content type.
|
|
371
370
|
No binary data is printed. Publication uses an exclusive hard link; unsupported filesystems
|
|
372
371
|
fail without a copy/rename fallback. Existing links or junctions in the directory chain and detectable directory/staged/destination
|
|
373
372
|
replacement are rejected. Unknown replacement files are never removed. This protects
|
|
374
|
-
|
|
373
|
+
the output destination; it cannot prevent every malicious same-account replacement after the
|
|
375
374
|
last identity check. Errors report whether publication occurred and whether private staging cleanup
|
|
376
375
|
failed, without raw filesystem/service details. The local proof never invokes download or upload.
|
|
377
376
|
|
|
378
|
-
`article export <article> [--
|
|
379
|
-
URLs scrubbed like console output, as
|
|
377
|
+
`article export <article> [--output <path>]` (ReadOnly) saves the article content, with signed
|
|
378
|
+
URLs scrubbed like console output, as `<idReadable>.md` in the invocation working directory through the same no-overwrite
|
|
380
379
|
publication. Edit it and send it back with `article update <article> --body '{}' --content-file <path>`.
|
|
381
380
|
The result's `redacted: true` means the file contains `[redacted]` placeholders where console-output
|
|
382
381
|
scrubbing removed text (signed or credential-bearing URLs, undecodable URL-like text or the token);
|
|
383
382
|
sending it back unchanged would replace that text in YouTrack, so restore it first or edit that
|
|
384
383
|
article elsewhere.
|
|
385
|
-
The
|
|
386
|
-
|
|
387
|
-
|
|
384
|
+
The former `--name` option and `downloads list/delete/clean` commands are removed. Existing files
|
|
385
|
+
in profile AppData are left untouched; move or delete them explicitly if desired. New user outputs
|
|
386
|
+
are not owned by profile cleanup.
|
|
388
387
|
|
|
389
388
|
## Issue batches
|
|
390
389
|
|
|
@@ -404,9 +403,19 @@ rollback or compensation; a batch is not atomic. It stops at the first unsuccess
|
|
|
404
403
|
`--continue-on-error` is given. Each row reports `completed` (with the write result), `failed`
|
|
405
404
|
(rejected before the write or with HTTP 4xx: not applied), `uncertain` (connectivity, 5xx or an
|
|
406
405
|
invalid response: it may have been applied) or `unattempted`; the overall `status` is `completed`
|
|
407
|
-
or `incomplete`, with counts.
|
|
408
|
-
|
|
409
|
-
|
|
406
|
+
or `incomplete`, with counts. Only a fully completed batch succeeds (exit code 0). Any `failed`,
|
|
407
|
+
`uncertain` or `unattempted` row fails the command with `batch.incomplete` (exit code 1).
|
|
408
|
+
The full summary, counts, rows and `failedRows` metadata stay available: ordinary CLI prints the
|
|
409
|
+
summary on stdout and the reason on stderr; `--json` prints the summary on stdout and one machine-error
|
|
410
|
+
line on stderr; JSON-RPC carries `error.data.code` and `error.data.result`; `execute` rejects with
|
|
411
|
+
a `CliError` carrying `.result`.
|
|
412
|
+
|
|
413
|
+
This is a breaking change: scripts that previously relied on exit 0 plus `status: incomplete`
|
|
414
|
+
must now handle the failure path and read the same summary from the appropriate surface.
|
|
415
|
+
See the [0.6.1 release notes](../../CHANGELOG.md#061).
|
|
416
|
+
|
|
417
|
+
`--failed-rows <path.json>` saves the `failed` and `unattempted` rows
|
|
418
|
+
as a manifest at the requested path relative to the invocation working directory for deliberate resubmission; `uncertain` rows are left out and must
|
|
410
419
|
be checked in YouTrack first. A save failure is reported in `failedRows.error` without hiding row results.
|
|
411
420
|
|
|
412
421
|
## Compared with `yt` 0.22.2
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articles-commands.d.ts","sourceRoot":"","sources":["../../src/articles-commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"articles-commands.d.ts","sourceRoot":"","sources":["../../src/articles-commands.ts"],"names":[],"mappings":"AA4BA,eAAO,MAAM,oBAAoB,qDAiChC,CAAC;AAEF,eAAO,MAAM,uBAAuB,qDAInC,CAAC"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
import { command } from "@eyeauras/cli-factory";
|
|
2
2
|
import { articlesExtraChildren } from "./article-extras-commands.js";
|
|
3
|
-
import { downloadName } from "./attachment-download.js";
|
|
4
3
|
import { pagedRead, projectedBodyUpdate, projectedRead, readCommand } from "./cli-support.js";
|
|
5
4
|
import { addArticleComment, createArticle, exportArticle, getArticle, getArticleComment, listArticleComments, listArticles, listProjectArticles, updateArticle, updateArticleComment, } from "./articles.js";
|
|
6
5
|
import { articleRecord, articleTable, commentAdded, commentShown, commentTable, commentUpdated, createdArticle, exportedArticle, updatedArticle, withView, } from "./presentation.js";
|
|
@@ -9,7 +8,7 @@ export const articlesRootCommands = [
|
|
|
9
8
|
...articlesExtraChildren,
|
|
10
9
|
pagedRead("list", "List articles", listArticles, articleTable),
|
|
11
10
|
projectedRead("get <article>", "Show an article", getArticle, articleRecord),
|
|
12
|
-
withView(exportedArticle, readCommand("export <article>", "Save the article content as a file", async (connection, { args, options }, context) => exportArticle(connection, args.article, context.
|
|
11
|
+
withView(exportedArticle, readCommand("export <article>", "Save the article content as a file", async (connection, { args, options }, context) => exportArticle(connection, args.article, context.cwd, typeof options.output === "string" ? options.output : undefined), [{ flags: "--output <path>", description: "Save to a relative or absolute path (default: <idReadable>.md)" }])),
|
|
13
12
|
projectedBodyUpdate("create", "Create an article", createArticle, "content", createdArticle),
|
|
14
13
|
projectedBodyUpdate("update <article>", "Update the summary or content", updateArticle, "content", updatedArticle),
|
|
15
14
|
command("comment", "Read and write article comments", [
|
|
@@ -19,7 +18,7 @@ export const articlesRootCommands = [
|
|
|
19
18
|
projectedBodyUpdate("update <article> <comment>", "Replace a comment's text", updateArticleComment, "text", commentUpdated("article", "comment")),
|
|
20
19
|
]),
|
|
21
20
|
], {
|
|
22
|
-
examples: ["article list --top 20", "article get KB-A-7", "article export KB-A-7 --
|
|
21
|
+
examples: ["article list --top 20", "article get KB-A-7", "article export KB-A-7 --output onboarding.md"],
|
|
23
22
|
}),
|
|
24
23
|
];
|
|
25
24
|
export const articlesProjectChildren = [
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articles-commands.js","sourceRoot":"","sources":["../../src/articles-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"articles-commands.js","sourceRoot":"","sources":["../../src/articles-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,SAAS,EAAE,mBAAmB,EAAE,aAAa,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC9F,OAAO,EACL,iBAAiB,EACjB,aAAa,EACb,aAAa,EACb,UAAU,EACV,iBAAiB,EACjB,mBAAmB,EACnB,YAAY,EACZ,mBAAmB,EACnB,aAAa,EACb,oBAAoB,GACrB,MAAM,eAAe,CAAC;AACvB,OAAO,EACL,aAAa,EACb,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,YAAY,EACZ,cAAc,EACd,cAAc,EACd,eAAe,EACf,cAAc,EACd,QAAQ,GACT,MAAM,mBAAmB,CAAC;AAE3B,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,OAAO,CAAC,SAAS,EAAE,wCAAwC,EAAE;QAC3D,GAAG,qBAAqB;QACxB,SAAS,CAAC,MAAM,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,CAAC;QAC9D,aAAa,CAAC,eAAe,EAAE,iBAAiB,EAAE,UAAU,EAAE,aAAa,CAAC;QAC5E,QAAQ,CAAC,eAAe,EAAE,WAAW,CACnC,kBAAkB,EAClB,oCAAoC,EACpC,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,aAAa,CAC7D,UAAU,EACV,IAAI,CAAC,OAAO,EACZ,OAAO,CAAC,GAAG,EACX,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAChE,EACD,CAAC,EAAE,KAAK,EAAE,iBAAiB,EAAE,WAAW,EAAE,gEAAgE,EAAE,CAAC,CAC9G,CAAC;QACF,mBAAmB,CAAC,QAAQ,EAAE,mBAAmB,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC;QAC5F,mBAAmB,CAAC,kBAAkB,EAAE,+BAA+B,EAAE,aAAa,EAAE,SAAS,EAAE,cAAc,CAAC;QAClH,OAAO,CAAC,SAAS,EAAE,iCAAiC,EAAE;YACpD,SAAS,CAAC,gBAAgB,EAAE,eAAe,EAAE,mBAAmB,EAAE,YAAY,CAAC;YAC/E,aAAa,CAAC,yBAAyB,EAAE,gBAAgB,EAAE,iBAAiB,EAAE,YAAY,CAAC;YAC3F,mBAAmB,CAAC,eAAe,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC;YACzG,mBAAmB,CACjB,4BAA4B,EAC5B,0BAA0B,EAC1B,oBAAoB,EACpB,MAAM,EACN,cAAc,CAAC,SAAS,EAAE,SAAS,CAAC,CACrC;SACF,CAAC;KACH,EAAE;QACD,QAAQ,EAAE,CAAC,uBAAuB,EAAE,oBAAoB,EAAE,8CAA8C,CAAC;KAC1G,CAAC;CACH,CAAC;AAEF,MAAM,CAAC,MAAM,uBAAuB,GAAG;IACrC,OAAO,CAAC,SAAS,EAAE,gCAAgC,EAAE;QACnD,SAAS,CAAC,gBAAgB,EAAE,6BAA6B,EAAE,mBAAmB,EAAE,YAAY,CAAC;KAC9F,CAAC;CACH,CAAC"}
|
package/dist/src/articles.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { type
|
|
1
|
+
import { type PublishedFile } from "@eyeauras/cli-factory";
|
|
2
2
|
import { type Connection, type ProjectionOptions, type YouTrackObject } from "./client.js";
|
|
3
3
|
export declare const listArticles: (connection: Connection, options?: import("./client.js").PageOptions | undefined) => Promise<YouTrackObject[]>;
|
|
4
4
|
export declare const getArticle: (connection: Connection, articleID: string, options?: ProjectionOptions | undefined) => Promise<YouTrackObject>;
|
|
@@ -6,10 +6,10 @@ export declare const getArticle: (connection: Connection, articleID: string, opt
|
|
|
6
6
|
* Save the scrubbed article content as a profile-owned file for a fetch/edit/update workflow.
|
|
7
7
|
* `redacted` warns that URL placeholders would replace the originals if the file were sent back.
|
|
8
8
|
*/
|
|
9
|
-
export declare function exportArticle(connection: Connection, articleID: string,
|
|
9
|
+
export declare function exportArticle(connection: Connection, articleID: string, cwd: string, output?: string): Promise<{
|
|
10
10
|
id: string;
|
|
11
11
|
redacted: boolean;
|
|
12
|
-
} &
|
|
12
|
+
} & PublishedFile>;
|
|
13
13
|
export declare function createArticle(connection: Connection, input: unknown, options?: ProjectionOptions): Promise<YouTrackObject | null>;
|
|
14
14
|
export declare function updateArticle(connection: Connection, articleID: string, input: unknown, options?: ProjectionOptions): Promise<YouTrackObject | null>;
|
|
15
15
|
export declare const listArticleComments: (connection: Connection, articleID: string, options?: import("./client.js").PageOptions | undefined) => Promise<YouTrackObject[]>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articles.d.ts","sourceRoot":"","sources":["../../src/articles.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"articles.d.ts","sourceRoot":"","sources":["../../src/articles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAY,KAAK,aAAa,EAAE,MAAM,uBAAuB,CAAC;AACrE,OAAO,EASL,KAAK,UAAU,EACf,KAAK,iBAAiB,EACtB,KAAK,cAAc,EACpB,MAAM,aAAa,CAAC;AAWrB,eAAO,MAAM,YAAY,gHAAsD,CAAC;AAChF,eAAO,MAAM,UAAU,iHAAiD,CAAC;AAEzE;;;GAGG;AACH,wBAAsB,aAAa,CACjC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,GAAG,EAAE,MAAM,EACX,MAAM,CAAC,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,EAAE,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,OAAO,CAAA;CAAE,GAAG,aAAa,CAAC,CAc5D;AAED,wBAAsB,aAAa,CACjC,UAAU,EAAE,UAAU,EACtB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAchC;AAED,wBAAsB,aAAa,CACjC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAYhC;AAED,eAAO,MAAM,mBAAmB,mIAG/B,CAAC;AACF,eAAO,MAAM,iBAAiB,oIAI7B,CAAC;AAEF,wBAAsB,iBAAiB,CACrC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQhC;AAED,wBAAsB,oBAAoB,CACxC,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,MAAM,EACjB,KAAK,EAAE,OAAO,EACd,OAAO,GAAE,iBAAsB,GAC9B,OAAO,CAAC,cAAc,GAAG,IAAI,CAAC,CAQhC;AAED,eAAO,MAAM,mBAAmB,mIAG/B,CAAC"}
|
package/dist/src/articles.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { saveFile } from "@eyeauras/cli-factory";
|
|
2
2
|
import { encodedID, fields, mutate, mutationBody, narrative, nullableText, readCollectionAt, readObjectAt, } from "./client.js";
|
|
3
3
|
const articleListFields = "id,idReadable,summary,project(id,shortName),updated";
|
|
4
4
|
const articleDetailFields = `${articleListFields},content,parentArticle(id,idReadable),created`;
|
|
@@ -13,15 +13,16 @@ export const getArticle = readObjectAt(articlePath, articleDetailFields);
|
|
|
13
13
|
* Save the scrubbed article content as a profile-owned file for a fetch/edit/update workflow.
|
|
14
14
|
* `redacted` warns that URL placeholders would replace the originals if the file were sent back.
|
|
15
15
|
*/
|
|
16
|
-
export async function exportArticle(connection, articleID,
|
|
16
|
+
export async function exportArticle(connection, articleID, cwd, output) {
|
|
17
17
|
const article = await getArticle(connection, articleID, { fields: "id,idReadable,content" });
|
|
18
18
|
const id = typeof article.idReadable === "string" ? article.idReadable : article.id;
|
|
19
19
|
if (typeof id !== "string" || !id || (article.content !== null && typeof article.content !== "string")) {
|
|
20
20
|
throw new Error("Invalid article for export from YouTrack.");
|
|
21
21
|
}
|
|
22
|
-
const saved = await
|
|
23
|
-
|
|
24
|
-
name:
|
|
22
|
+
const saved = await saveFile({
|
|
23
|
+
cwd,
|
|
24
|
+
name: `${id}.md`,
|
|
25
|
+
output,
|
|
25
26
|
content: article.content ?? "",
|
|
26
27
|
signal: connection.signal,
|
|
27
28
|
});
|
package/dist/src/articles.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"articles.js","sourceRoot":"","sources":["../../src/articles.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"articles.js","sourceRoot":"","sources":["../../src/articles.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-download-commands.d.ts","sourceRoot":"","sources":["../../src/attachment-download-commands.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"attachment-download-commands.d.ts","sourceRoot":"","sources":["../../src/attachment-download-commands.ts"],"names":[],"mappings":"AA6BA,eAAO,MAAM,yBAAyB,mDAWpC,CAAC;AAEH,eAAO,MAAM,gCAAgC,mDAW3C,CAAC"}
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { readCommand } from "./cli-support.js";
|
|
2
|
-
import { downloadArticleAttachment, downloadIssueAttachment, downloadLimit,
|
|
2
|
+
import { downloadArticleAttachment, downloadIssueAttachment, downloadLimit, } from "./attachment-download.js";
|
|
3
3
|
import { savedAttachment, withView } from "./presentation.js";
|
|
4
4
|
const downloadOptions = [
|
|
5
5
|
{
|
|
6
|
-
flags: "--
|
|
7
|
-
description: "
|
|
8
|
-
parse: downloadName,
|
|
6
|
+
flags: "--output <path>",
|
|
7
|
+
description: "Save to a relative or absolute path",
|
|
9
8
|
},
|
|
10
9
|
{
|
|
11
10
|
flags: "--max-bytes <n>",
|
|
@@ -16,10 +15,10 @@ const downloadOptions = [
|
|
|
16
15
|
function downloadInput(options, progress) {
|
|
17
16
|
return {
|
|
18
17
|
progress,
|
|
19
|
-
...(typeof options.
|
|
18
|
+
...(typeof options.output === "string" ? { output: options.output } : {}),
|
|
20
19
|
...(typeof options.maxBytes === "number" ? { maxBytes: options.maxBytes } : {}),
|
|
21
20
|
};
|
|
22
21
|
}
|
|
23
|
-
export const attachmentDownloadCommand = withView(savedAttachment, readCommand("download <issueID> <attachmentID>", "Download an attachment", async (connection, { args, options }, context) => downloadIssueAttachment(connection, args.issueID, args.attachmentID, context.
|
|
24
|
-
export const articleAttachmentDownloadCommand = withView(savedAttachment, readCommand("download <article> <attachment>", "Download an attachment", async (connection, { args, options }, context) => downloadArticleAttachment(connection, args.article, args.attachment, context.
|
|
22
|
+
export const attachmentDownloadCommand = withView(savedAttachment, readCommand("download <issueID> <attachmentID>", "Download an attachment", async (connection, { args, options }, context) => downloadIssueAttachment(connection, args.issueID, args.attachmentID, context.cwd, downloadInput(options, context.progress)), downloadOptions));
|
|
23
|
+
export const articleAttachmentDownloadCommand = withView(savedAttachment, readCommand("download <article> <attachment>", "Download an attachment", async (connection, { args, options }, context) => downloadArticleAttachment(connection, args.article, args.attachment, context.cwd, downloadInput(options, context.progress)), downloadOptions));
|
|
25
24
|
//# sourceMappingURL=attachment-download-commands.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-download-commands.js","sourceRoot":"","sources":["../../src/attachment-download-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,aAAa,
|
|
1
|
+
{"version":3,"file":"attachment-download-commands.js","sourceRoot":"","sources":["../../src/attachment-download-commands.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EACL,yBAAyB,EACzB,uBAAuB,EACvB,aAAa,GAEd,MAAM,0BAA0B,CAAC;AAClC,OAAO,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAE9D,MAAM,eAAe,GAAG;IACtB;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,qCAAqC;KACnD;IACD;QACE,KAAK,EAAE,iBAAiB;QACxB,WAAW,EAAE,4BAA4B;QACzC,KAAK,EAAE,aAAa;KACrB;CACF,CAAC;AAEF,SAAS,aAAa,CAAC,OAAgC,EAAE,QAAmC;IAC1F,OAAO;QACL,QAAQ;QACR,GAAG,CAAC,OAAO,OAAO,CAAC,MAAM,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,OAAO,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzE,GAAG,CAAC,OAAO,OAAO,CAAC,QAAQ,KAAK,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAChF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,MAAM,yBAAyB,GAAG,QAAQ,CAAC,eAAe,EAAE,WAAW,CAC5E,mCAAmC,EACnC,wBAAwB,EACxB,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,uBAAuB,CACvE,UAAU,EACV,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,YAAY,EACjB,OAAO,CAAC,GAAG,EACX,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CACzC,EACD,eAAe,CAChB,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,gCAAgC,GAAG,QAAQ,CAAC,eAAe,EAAE,WAAW,CACnF,iCAAiC,EACjC,wBAAwB,EACxB,KAAK,EAAE,UAAU,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,CAAC,yBAAyB,CACzE,UAAU,EACV,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,UAAU,EACf,OAAO,CAAC,GAAG,EACX,aAAa,CAAC,OAAO,EAAE,OAAO,CAAC,QAAQ,CAAC,CACzC,EACD,eAAe,CAChB,CAAC,CAAC"}
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { type Connection } from "./client.js";
|
|
2
|
+
/** User output path and optional streaming budget; no profile storage ownership. */
|
|
2
3
|
export interface DownloadOptions {
|
|
3
|
-
|
|
4
|
+
output?: string;
|
|
4
5
|
maxBytes?: number;
|
|
5
6
|
progress?: (message: string) => void;
|
|
6
7
|
}
|
|
@@ -13,6 +14,8 @@ export interface AttachmentDownloadResult {
|
|
|
13
14
|
}
|
|
14
15
|
export declare function downloadName(value: string): string;
|
|
15
16
|
export declare function downloadLimit(value: number | string): number;
|
|
16
|
-
|
|
17
|
-
export declare function
|
|
17
|
+
/** Download using captured cwd, metadata basename and optional explicit output path. */
|
|
18
|
+
export declare function downloadIssueAttachment(connection: Connection, issueID: string, attachmentID: string, cwd: string, options?: DownloadOptions): Promise<AttachmentDownloadResult>;
|
|
19
|
+
/** Download using captured cwd, metadata basename and optional explicit output path. */
|
|
20
|
+
export declare function downloadArticleAttachment(connection: Connection, articleID: string, attachmentID: string, cwd: string, options?: DownloadOptions): Promise<AttachmentDownloadResult>;
|
|
18
21
|
//# sourceMappingURL=attachment-download.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-download.d.ts","sourceRoot":"","sources":["../../src/attachment-download.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,UAAU,EAEhB,MAAM,aAAa,CAAC;AAErB,MAAM,WAAW,eAAe;IAC9B,
|
|
1
|
+
{"version":3,"file":"attachment-download.d.ts","sourceRoot":"","sources":["../../src/attachment-download.ts"],"names":[],"mappings":"AACA,OAAO,EAIL,KAAK,UAAU,EAEhB,MAAM,aAAa,CAAC;AAErB,oFAAoF;AACpF,MAAM,WAAW,eAAe;IAC9B,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;AAED,MAAM,WAAW,wBAAwB;IACvC,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;CACrB;AAID,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAOlD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,MAAM,CAM5D;AAwDD,wFAAwF;AACxF,wBAAsB,uBAAuB,CAC3C,UAAU,EAAE,UAAU,EACtB,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,CAGnC;AAED,wFAAwF;AACxF,wBAAsB,yBAAyB,CAC7C,UAAU,EAAE,UAAU,EACtB,SAAS,EAAE,MAAM,EACjB,YAAY,EAAE,MAAM,EACpB,GAAG,EAAE,MAAM,EACX,OAAO,GAAE,eAAoB,GAC5B,OAAO,CAAC,wBAAwB,CAAC,CAGnC"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { diagnosticCause, fetchWithRedirects,
|
|
1
|
+
import { diagnosticCause, fetchWithRedirects, FilePublicationError, publishFile } from "@eyeauras/cli-factory";
|
|
2
2
|
import { encodedID, getAttachmentDownloadMetadata, issuePath, youTrackUrl, } from "./client.js";
|
|
3
|
-
class DownloadError extends
|
|
3
|
+
class DownloadError extends FilePublicationError {
|
|
4
4
|
}
|
|
5
5
|
export function downloadName(value) {
|
|
6
6
|
if (!value || value === "." || value === ".." ||
|
|
@@ -64,16 +64,18 @@ function contentType(value, secrets) {
|
|
|
64
64
|
return type && redact(type, secrets) === type && /^[!#$%&'*+.^_`|~a-zA-Z0-9-]+\/[!#$%&'*+.^_`|~a-zA-Z0-9-]+$/.test(type)
|
|
65
65
|
? type : "application/octet-stream";
|
|
66
66
|
}
|
|
67
|
-
|
|
67
|
+
/** Download using captured cwd, metadata basename and optional explicit output path. */
|
|
68
|
+
export async function downloadIssueAttachment(connection, issueID, attachmentID, cwd, options = {}) {
|
|
68
69
|
const path = `${issuePath(issueID)}/attachments/${encodedID(attachmentID, "attachment ID")}`;
|
|
69
|
-
return downloadAttachment(connection, path, attachmentID,
|
|
70
|
+
return downloadAttachment(connection, path, attachmentID, cwd, options);
|
|
70
71
|
}
|
|
71
|
-
|
|
72
|
+
/** Download using captured cwd, metadata basename and optional explicit output path. */
|
|
73
|
+
export async function downloadArticleAttachment(connection, articleID, attachmentID, cwd, options = {}) {
|
|
72
74
|
const path = `api/articles/${encodedID(articleID, "article ID")}/attachments/${encodedID(attachmentID, "attachment ID")}`;
|
|
73
|
-
return downloadAttachment(connection, path, attachmentID,
|
|
75
|
+
return downloadAttachment(connection, path, attachmentID, cwd, options);
|
|
74
76
|
}
|
|
75
|
-
async function downloadAttachment(connection, attachmentPath, attachmentID,
|
|
76
|
-
const requestedName = options.
|
|
77
|
+
async function downloadAttachment(connection, attachmentPath, attachmentID, cwd, options) {
|
|
78
|
+
const requestedName = options.output;
|
|
77
79
|
const maxBytes = options.maxBytes === undefined ? undefined : downloadLimit(options.maxBytes);
|
|
78
80
|
const diagnosticSecrets = [connection.token];
|
|
79
81
|
try {
|
|
@@ -85,15 +87,16 @@ async function downloadAttachment(connection, attachmentPath, attachmentID, appD
|
|
|
85
87
|
diagnosticSecrets.push(...secrets);
|
|
86
88
|
const id = filenamePart(redact(metadata.id, secrets), "attachment");
|
|
87
89
|
const name = requestedName ??
|
|
88
|
-
downloadName(
|
|
89
|
-
if (redact(name, secrets) !== name || redact(
|
|
90
|
+
downloadName(metadata.name);
|
|
91
|
+
if (redact(name, secrets) !== name || redact(cwd, secrets) !== cwd) {
|
|
90
92
|
throw new DownloadError("The download destination must not contain reflected credentials or signatures.");
|
|
91
93
|
}
|
|
92
94
|
options.progress?.(`Downloading ${name}…`);
|
|
93
95
|
let type = "application/octet-stream";
|
|
94
|
-
const saved = await
|
|
95
|
-
|
|
96
|
-
name,
|
|
96
|
+
const saved = await publishFile({
|
|
97
|
+
cwd,
|
|
98
|
+
name: metadata.name,
|
|
99
|
+
output: requestedName,
|
|
97
100
|
maxBytes,
|
|
98
101
|
signal: connection.signal,
|
|
99
102
|
openResponse: () => fetchWithRedirects(connection.fetch ?? globalThis.fetch, url, {
|
|
@@ -120,9 +123,9 @@ async function downloadAttachment(connection, attachmentPath, attachmentID, appD
|
|
|
120
123
|
return { id, name, path: saved.path, bytes: saved.bytes, contentType: type };
|
|
121
124
|
}
|
|
122
125
|
catch (error) {
|
|
123
|
-
if (error instanceof
|
|
126
|
+
if (error instanceof FilePublicationError && error.cause !== undefined)
|
|
124
127
|
error.cause = diagnosticCause(error.cause, diagnosticSecrets);
|
|
125
|
-
throw error instanceof
|
|
128
|
+
throw error instanceof FilePublicationError ? error : new DownloadError("The attachment download failed; check connectivity and the output directory.", false, false, { cause: diagnosticCause(error, diagnosticSecrets) });
|
|
126
129
|
}
|
|
127
130
|
}
|
|
128
131
|
//# sourceMappingURL=attachment-download.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"attachment-download.js","sourceRoot":"","sources":["../../src/attachment-download.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,kBAAkB,EAAE,
|
|
1
|
+
{"version":3,"file":"attachment-download.js","sourceRoot":"","sources":["../../src/attachment-download.ts"],"names":[],"mappings":"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"}
|
package/dist/src/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EAOL,KAAK,cAAc,EACnB,KAAK,UAAU,EAChB,MAAM,uBAAuB,CAAC;AA0E/B,wBAAgB,iBAAiB,CAAC,OAAO,CAAC,EAAE,UAAU,GAAG,cAAc,CA8ItE"}
|
package/dist/src/cli.js
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
import { command, createCli,
|
|
1
|
+
import { command, createCli, helpLayout, integerParser, Permission, tokenAuth, } from "@eyeauras/cli-factory";
|
|
2
2
|
import { addComment, currentUser, getIssue, listComments, listIssues, listProjects, readUser, youTrackUrl, youTrackUrlHelp, } from "./client.js";
|
|
3
3
|
import { bodyUpdate, fileOption, pagedRead, pageOptions, projectedRead, readCommand, readOptions, readTextFile, updateCommand, } from "./cli-support.js";
|
|
4
|
-
import { downloadLimit
|
|
4
|
+
import { downloadLimit } from "./attachment-download.js";
|
|
5
5
|
import { applyIssueBatch, manifestRows } from "./issue-batch.js";
|
|
6
6
|
import { createIssue, updateIssue } from "./issue-fields.js";
|
|
7
7
|
import { contextRootCommands, contextIssueChildren, contextCommentChildren } from "./issue-context-commands.js";
|
|
@@ -40,7 +40,7 @@ export function createYouTrackCli(runtime) {
|
|
|
40
40
|
name: "youtrack-cli",
|
|
41
41
|
description: "AI-friendly access to YouTrack",
|
|
42
42
|
examples: [...issueExamples.slice(0, 3), "article get KB-A-7", "project list"],
|
|
43
|
-
version: "0.
|
|
43
|
+
version: "0.6.1",
|
|
44
44
|
applicationId: "youtrack-cli",
|
|
45
45
|
permissions: {},
|
|
46
46
|
profile: {
|
|
@@ -69,7 +69,6 @@ export function createYouTrackCli(runtime) {
|
|
|
69
69
|
signal,
|
|
70
70
|
}),
|
|
71
71
|
}),
|
|
72
|
-
builtins: [downloadCommands],
|
|
73
72
|
commands: helpLayout(rootLayout, [
|
|
74
73
|
...contextRootCommands,
|
|
75
74
|
...timeRootCommands,
|
|
@@ -135,7 +134,7 @@ export function createYouTrackCli(runtime) {
|
|
|
135
134
|
return { rows: rows.length, create: rows.length - updates, update: updates };
|
|
136
135
|
}, { permission: Permission.ReadOnly, options: [manifestOption] })),
|
|
137
136
|
withView(batchApplied, updateCommand("apply", "Apply manifest rows in order", async (connection, { options }, context) => applyIssueBatch(connection, await manifest(options), {
|
|
138
|
-
|
|
137
|
+
cwd: context.cwd,
|
|
139
138
|
continueOnError: options.continueOnError === true,
|
|
140
139
|
progress: context.progress,
|
|
141
140
|
...(typeof options.failedRows === "string" ? { failedRows: options.failedRows } : {}),
|
|
@@ -143,9 +142,8 @@ export function createYouTrackCli(runtime) {
|
|
|
143
142
|
manifestOption,
|
|
144
143
|
{ flags: "--continue-on-error", description: "Keep going after a failed row" },
|
|
145
144
|
{
|
|
146
|
-
flags: "--failed-rows <
|
|
147
|
-
description: "Save failed rows as a .json manifest",
|
|
148
|
-
parse: downloadName,
|
|
145
|
+
flags: "--failed-rows <path>",
|
|
146
|
+
description: "Save failed rows as a .json manifest at a relative or absolute path",
|
|
149
147
|
},
|
|
150
148
|
])),
|
|
151
149
|
]),
|
package/dist/src/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,OAAO,EACP,SAAS,EACT,
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/cli.ts"],"names":[],"mappings":"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"}
|
|
@@ -13,7 +13,7 @@ export declare function manifestRows(text: string, path: string): BatchRow[];
|
|
|
13
13
|
* other write failures are uncertain and never enter the resubmittable failed-row manifest.
|
|
14
14
|
*/
|
|
15
15
|
export declare function applyIssueBatch(connection: Connection, rows: readonly BatchRow[], options: {
|
|
16
|
-
|
|
16
|
+
cwd: string;
|
|
17
17
|
continueOnError?: boolean;
|
|
18
18
|
failedRows?: string;
|
|
19
19
|
/** One human-only line per failed row and every ten rows. */
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-batch.d.ts","sourceRoot":"","sources":["../../src/issue-batch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,KAAK,UAAU,EAAE,KAAK,cAAc,EAAsB,MAAM,aAAa,CAAC;AACxH,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIhG,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;CACnB;AAsCD,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CA4BnE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,QAAQ,EAAE,EACzB,OAAO,EAAE;IACP,
|
|
1
|
+
{"version":3,"file":"issue-batch.d.ts","sourceRoot":"","sources":["../../src/issue-batch.ts"],"names":[],"mappings":"AAEA,OAAO,EAAmC,KAAK,UAAU,EAAE,KAAK,cAAc,EAAsB,MAAM,aAAa,CAAC;AACxH,OAAO,EAA8C,KAAK,UAAU,EAAE,MAAM,mBAAmB,CAAC;AAIhG,MAAM,WAAW,QAAQ;IACvB,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,UAAU,CAAC;CACnB;AAsCD,sFAAsF;AACtF,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,QAAQ,EAAE,CA4BnE;AAED;;;GAGG;AACH,wBAAsB,eAAe,CACnC,UAAU,EAAE,UAAU,EACtB,IAAI,EAAE,SAAS,QAAQ,EAAE,EACzB,OAAO,EAAE;IACP,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,6DAA6D;IAC7D,QAAQ,CAAC,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;CACtC;;;;;;;;GA6DF"}
|
package/dist/src/issue-batch.js
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { CliError, saveFile } from "@eyeauras/cli-factory";
|
|
2
2
|
import { parse } from "csv-parse/sync";
|
|
3
3
|
import { encodedID, mutate, mutationBody } from "./client.js";
|
|
4
4
|
import { issueRequest, issueWrite, issueWriteFields } from "./issue-fields.js";
|
|
@@ -117,9 +117,10 @@ export async function applyIssueBatch(connection, rows, options) {
|
|
|
117
117
|
if (options.failedRows !== undefined && resubmit.length) {
|
|
118
118
|
try {
|
|
119
119
|
failedRows = {
|
|
120
|
-
...await
|
|
121
|
-
|
|
122
|
-
name:
|
|
120
|
+
...await saveFile({
|
|
121
|
+
cwd: options.cwd,
|
|
122
|
+
name: "failed-rows.json",
|
|
123
|
+
output: options.failedRows,
|
|
123
124
|
content: `${JSON.stringify(resubmit.map((row) => row.source), null, 2)}\n`,
|
|
124
125
|
signal: connection.signal,
|
|
125
126
|
}),
|
|
@@ -129,7 +130,7 @@ export async function applyIssueBatch(connection, rows, options) {
|
|
|
129
130
|
failedRows = { error: error.message };
|
|
130
131
|
}
|
|
131
132
|
}
|
|
132
|
-
|
|
133
|
+
const result = {
|
|
133
134
|
status: count("completed") === rows.length ? "completed" : "incomplete",
|
|
134
135
|
completed: count("completed"),
|
|
135
136
|
failed: count("failed"),
|
|
@@ -138,5 +139,9 @@ export async function applyIssueBatch(connection, rows, options) {
|
|
|
138
139
|
rows: results,
|
|
139
140
|
...(options.failedRows === undefined ? {} : { failedRows }),
|
|
140
141
|
};
|
|
142
|
+
if (result.status === "incomplete") {
|
|
143
|
+
throw new CliError(`Not every row completed.${result.uncertain ? " Check uncertain rows in YouTrack before resubmitting." : ""}`, { code: "batch.incomplete", result });
|
|
144
|
+
}
|
|
145
|
+
return result;
|
|
141
146
|
}
|
|
142
147
|
//# sourceMappingURL=issue-batch.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-batch.js","sourceRoot":"","sources":["../../src/issue-batch.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"issue-batch.js","sourceRoot":"","sources":["../../src/issue-batch.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@eyeauras/youtrack-cli",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.6.1",
|
|
4
4
|
"description": "AI-friendly YouTrack CLI built with AI CLI Factory.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "./dist/src/index.js",
|
|
@@ -20,7 +20,7 @@
|
|
|
20
20
|
"node": ">=22"
|
|
21
21
|
},
|
|
22
22
|
"dependencies": {
|
|
23
|
-
"@eyeauras/cli-factory": "0.
|
|
23
|
+
"@eyeauras/cli-factory": "0.6.1",
|
|
24
24
|
"csv-parse": "^7.0.3"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|