@nervekit/tools 0.3.0 → 0.4.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.
Files changed (53) hide show
  1. package/dist/catalog/core/jira.tools.d.ts +111 -0
  2. package/dist/catalog/core/jira.tools.d.ts.map +1 -0
  3. package/dist/catalog/core/jira.tools.js +151 -0
  4. package/dist/catalog/core/jira.tools.js.map +1 -0
  5. package/dist/catalog/core/shell.tools.js +3 -3
  6. package/dist/catalog/core/shell.tools.js.map +1 -1
  7. package/dist/catalog/index.d.ts +1 -0
  8. package/dist/catalog/index.d.ts.map +1 -1
  9. package/dist/catalog/index.js +3 -0
  10. package/dist/catalog/index.js.map +1 -1
  11. package/dist/catalog/orchestration/task.tools.d.ts.map +1 -1
  12. package/dist/catalog/orchestration/task.tools.js +8 -4
  13. package/dist/catalog/orchestration/task.tools.js.map +1 -1
  14. package/dist/catalog/risk.d.ts.map +1 -1
  15. package/dist/catalog/risk.js +7 -0
  16. package/dist/catalog/risk.js.map +1 -1
  17. package/dist/execution/core-dispatch.d.ts.map +1 -1
  18. package/dist/execution/core-dispatch.js +15 -0
  19. package/dist/execution/core-dispatch.js.map +1 -1
  20. package/dist/execution/index.d.ts +1 -0
  21. package/dist/execution/index.d.ts.map +1 -1
  22. package/dist/execution/index.js +1 -0
  23. package/dist/execution/index.js.map +1 -1
  24. package/dist/execution/jira/adf.d.ts +15 -0
  25. package/dist/execution/jira/adf.d.ts.map +1 -0
  26. package/dist/execution/jira/adf.js +105 -0
  27. package/dist/execution/jira/adf.js.map +1 -0
  28. package/dist/execution/jira/client.d.ts +19 -0
  29. package/dist/execution/jira/client.d.ts.map +1 -0
  30. package/dist/execution/jira/client.js +104 -0
  31. package/dist/execution/jira/client.js.map +1 -0
  32. package/dist/execution/jira/format.d.ts +43 -0
  33. package/dist/execution/jira/format.d.ts.map +1 -0
  34. package/dist/execution/jira/format.js +174 -0
  35. package/dist/execution/jira/format.js.map +1 -0
  36. package/dist/execution/jira/jira.d.ts +9 -0
  37. package/dist/execution/jira/jira.d.ts.map +1 -0
  38. package/dist/execution/jira/jira.js +471 -0
  39. package/dist/execution/jira/jira.js.map +1 -0
  40. package/dist/execution/shell/bash.d.ts.map +1 -1
  41. package/dist/execution/shell/bash.js +6 -2
  42. package/dist/execution/shell/bash.js.map +1 -1
  43. package/dist/execution/shell/shell-config.d.ts +16 -0
  44. package/dist/execution/shell/shell-config.d.ts.map +1 -0
  45. package/dist/execution/shell/shell-config.js +74 -0
  46. package/dist/execution/shell/shell-config.js.map +1 -0
  47. package/dist/index.d.ts +1 -1
  48. package/dist/index.d.ts.map +1 -1
  49. package/dist/index.js +1 -1
  50. package/dist/index.js.map +1 -1
  51. package/dist/types.d.ts +3 -0
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +2 -2
@@ -0,0 +1,105 @@
1
+ export function textToAdf(text) {
2
+ const lines = text.replaceAll("\r\n", "\n").split("\n");
3
+ const content = [];
4
+ let paragraph = [];
5
+ let bullets = [];
6
+ let code;
7
+ const flushParagraph = () => {
8
+ const body = paragraph.join("\n").trimEnd();
9
+ paragraph = [];
10
+ if (!body.trim())
11
+ return;
12
+ content.push({
13
+ type: "paragraph",
14
+ content: [{ type: "text", text: body }],
15
+ });
16
+ };
17
+ const flushBullets = () => {
18
+ if (bullets.length === 0)
19
+ return;
20
+ content.push({
21
+ type: "bulletList",
22
+ content: bullets.map((item) => ({
23
+ type: "listItem",
24
+ content: [
25
+ { type: "paragraph", content: [{ type: "text", text: item }] },
26
+ ],
27
+ })),
28
+ });
29
+ bullets = [];
30
+ };
31
+ const flushCode = () => {
32
+ if (!code)
33
+ return;
34
+ content.push({
35
+ type: "codeBlock",
36
+ content: [{ type: "text", text: code.join("\n") }],
37
+ });
38
+ code = undefined;
39
+ };
40
+ const flushBlocks = () => {
41
+ flushParagraph();
42
+ flushBullets();
43
+ flushCode();
44
+ };
45
+ for (const rawLine of lines) {
46
+ const line = rawLine.replace(/\s+$/, "");
47
+ if (line.trim().startsWith("```")) {
48
+ if (code)
49
+ flushCode();
50
+ else {
51
+ flushParagraph();
52
+ flushBullets();
53
+ code = [];
54
+ }
55
+ continue;
56
+ }
57
+ if (code) {
58
+ code.push(rawLine);
59
+ continue;
60
+ }
61
+ const heading = /^(#{1,6})\s+(.+)$/.exec(line);
62
+ if (heading) {
63
+ flushBlocks();
64
+ content.push({
65
+ type: "heading",
66
+ attrs: { level: heading[1].length },
67
+ content: [{ type: "text", text: heading[2] }],
68
+ });
69
+ continue;
70
+ }
71
+ const bullet = /^\s*[-*]\s+(.+)$/.exec(line);
72
+ if (bullet) {
73
+ flushParagraph();
74
+ bullets.push(bullet[1]);
75
+ continue;
76
+ }
77
+ if (line.trim().length === 0) {
78
+ flushBlocks();
79
+ continue;
80
+ }
81
+ flushBullets();
82
+ paragraph.push(line);
83
+ }
84
+ flushBlocks();
85
+ return {
86
+ type: "doc",
87
+ version: 1,
88
+ content: content.length > 0 ? content : [{ type: "paragraph" }],
89
+ };
90
+ }
91
+ export function adfFromEither({ text, adf, textName, adfName, }) {
92
+ if (typeof text === "string" && adf && typeof adf === "object") {
93
+ throw new Error(`Provide either ${textName} or ${adfName}, not both.`);
94
+ }
95
+ if (adf !== undefined) {
96
+ if (!adf || typeof adf !== "object" || Array.isArray(adf)) {
97
+ throw new Error(`${adfName} must be an ADF object.`);
98
+ }
99
+ return adf;
100
+ }
101
+ if (typeof text === "string" && text.trim().length > 0)
102
+ return textToAdf(text);
103
+ return undefined;
104
+ }
105
+ //# sourceMappingURL=adf.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"adf.js","sourceRoot":"","sources":["../../../src/execution/jira/adf.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import type { ToolExecutionContext } from "../../types.js";
2
+ export type JiraConnection = {
3
+ siteUrl: string;
4
+ email: string;
5
+ token: string;
6
+ defaultProjectKey?: string;
7
+ };
8
+ type JiraRequestOptions = {
9
+ method?: string;
10
+ path: string;
11
+ query?: Record<string, string | number | boolean | string[] | undefined>;
12
+ body?: unknown;
13
+ signal?: AbortSignal;
14
+ };
15
+ export declare function requireJiraConnection(context: ToolExecutionContext): Promise<JiraConnection>;
16
+ export declare function jiraRequest<T = unknown>(connection: JiraConnection, options: JiraRequestOptions): Promise<T>;
17
+ export declare function pathSegment(value: string): string;
18
+ export {};
19
+ //# sourceMappingURL=client.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../../src/execution/jira/client.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,gBAAgB,CAAC;AAG3D,MAAM,MAAM,cAAc,GAAG;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,MAAM,CAAC;IACd,iBAAiB,CAAC,EAAE,MAAM,CAAC;CAC5B,CAAC;AASF,KAAK,kBAAkB,GAAG;IACxB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,GAAG,OAAO,GAAG,MAAM,EAAE,GAAG,SAAS,CAAC,CAAC;IACzE,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB,CAAC;AAEF,wBAAsB,qBAAqB,CACzC,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,cAAc,CAAC,CA8BzB;AAED,wBAAsB,WAAW,CAAC,CAAC,GAAG,OAAO,EAC3C,UAAU,EAAE,cAAc,EAC1B,OAAO,EAAE,kBAAkB,GAC1B,OAAO,CAAC,CAAC,CAAC,CAmCZ;AA2CD,wBAAgB,WAAW,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAEjD"}
@@ -0,0 +1,104 @@
1
+ import { Buffer } from "node:buffer";
2
+ import { ToolExecutionError } from "../common/tool-error.js";
3
+ export async function requireJiraConnection(context) {
4
+ const token = await context.getApiKey?.("jira");
5
+ const rawConfig = (await context.getProviderConfig?.("jira"));
6
+ const siteUrl = typeof rawConfig?.siteUrl === "string"
7
+ ? rawConfig.siteUrl.trim().replace(/\/+$/, "")
8
+ : "";
9
+ const email = typeof rawConfig?.email === "string" ? rawConfig.email.trim() : "";
10
+ const defaultProjectKey = typeof rawConfig?.defaultProjectKey === "string" &&
11
+ rawConfig.defaultProjectKey.trim().length > 0
12
+ ? rawConfig.defaultProjectKey.trim()
13
+ : undefined;
14
+ if (rawConfig?.enabled !== true || !siteUrl || !email || !token) {
15
+ throw new ToolExecutionError("JIRA_NOT_CONFIGURED", "Jira is not configured or enabled. Configure Jira site URL, Atlassian email, and API token in Nerve Settings, then enable the Jira module.", {
16
+ enabled: rawConfig?.enabled === true,
17
+ hasSiteUrl: Boolean(siteUrl),
18
+ hasEmail: Boolean(email),
19
+ hasToken: Boolean(token),
20
+ });
21
+ }
22
+ return { siteUrl, email, token, defaultProjectKey };
23
+ }
24
+ export async function jiraRequest(connection, options) {
25
+ const url = new URL(`${connection.siteUrl}/rest/api/3${options.path}`);
26
+ for (const [key, value] of Object.entries(options.query ?? {})) {
27
+ if (value === undefined)
28
+ continue;
29
+ if (Array.isArray(value)) {
30
+ if (value.length > 0)
31
+ url.searchParams.set(key, value.join(","));
32
+ }
33
+ else {
34
+ url.searchParams.set(key, String(value));
35
+ }
36
+ }
37
+ const headers = {
38
+ Accept: "application/json",
39
+ Authorization: `Basic ${Buffer.from(`${connection.email}:${connection.token}`, "utf8").toString("base64")}`,
40
+ };
41
+ const init = {
42
+ method: options.method ?? "GET",
43
+ headers,
44
+ signal: timeoutSignal(options.signal, 60_000),
45
+ };
46
+ if (options.body !== undefined) {
47
+ headers["Content-Type"] = "application/json";
48
+ init.body = JSON.stringify(options.body);
49
+ }
50
+ const response = await fetch(url, init);
51
+ if (!response.ok)
52
+ await throwJiraError(response);
53
+ if (response.status === 204)
54
+ return undefined;
55
+ const text = await response.text();
56
+ if (!text.trim())
57
+ return undefined;
58
+ try {
59
+ return JSON.parse(text);
60
+ }
61
+ catch {
62
+ return text;
63
+ }
64
+ }
65
+ function timeoutSignal(signal, milliseconds) {
66
+ const timeout = AbortSignal.timeout(milliseconds);
67
+ return signal ? AbortSignal.any([signal, timeout]) : timeout;
68
+ }
69
+ async function throwJiraError(response) {
70
+ const body = await response.text().catch(() => "");
71
+ const code = jiraErrorCode(response.status);
72
+ const retryable = response.status === 429 || response.status >= 500;
73
+ throw new ToolExecutionError(code, `Jira API error: ${response.status} ${response.statusText}`, {
74
+ status: response.status,
75
+ statusText: response.statusText,
76
+ body: safeErrorBody(body),
77
+ }, retryable);
78
+ }
79
+ function jiraErrorCode(status) {
80
+ if (status === 400)
81
+ return "JIRA_BAD_REQUEST";
82
+ if (status === 401)
83
+ return "JIRA_UNAUTHORIZED";
84
+ if (status === 403)
85
+ return "JIRA_FORBIDDEN";
86
+ if (status === 404)
87
+ return "JIRA_NOT_FOUND";
88
+ if (status === 429)
89
+ return "JIRA_RATE_LIMITED";
90
+ if (status >= 500)
91
+ return "JIRA_SERVER_ERROR";
92
+ return "JIRA_API_ERROR";
93
+ }
94
+ function safeErrorBody(body) {
95
+ if (!body)
96
+ return undefined;
97
+ return body
98
+ .replaceAll(/Basic\s+[A-Za-z0-9+/=_-]+/g, "Basic [redacted]")
99
+ .slice(0, 4000);
100
+ }
101
+ export function pathSegment(value) {
102
+ return encodeURIComponent(value);
103
+ }
104
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../../src/execution/jira/client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,43 @@
1
+ import type { JiraIssueSummaryPayload, JiraProjectSummaryPayload, JiraTransitionSummaryPayload } from "@nervekit/shared";
2
+ import type { ToolExecutionContext, ToolExecutionResult } from "../../types.js";
3
+ export declare const JIRA_DISPLAY_ITEM_LIMIT = 20;
4
+ export declare const JIRA_FIELD_DISPLAY_LIMIT = 20;
5
+ export declare const JIRA_TEXT_FIELD_MAX_CHARS = 300;
6
+ export declare function writeJiraArtifact(context: ToolExecutionContext, kind: string, payload: unknown): Promise<{
7
+ path: string;
8
+ bytes: number;
9
+ chars: number;
10
+ lines: number;
11
+ }>;
12
+ export declare function buildJiraTextResult({ text, context, details, artifact, }: {
13
+ text: string;
14
+ context: ToolExecutionContext;
15
+ details?: Record<string, unknown>;
16
+ artifact?: {
17
+ path: string;
18
+ bytes: number;
19
+ chars: number;
20
+ lines: number;
21
+ };
22
+ }): Promise<ToolExecutionResult>;
23
+ export declare function takeDisplayItems<T>(items: T[], limit?: number): {
24
+ items: T[];
25
+ total: number;
26
+ displayed: number;
27
+ omitted: number;
28
+ };
29
+ export declare function displayLimitNotice({ noun, total, displayed, artifactPath, }: {
30
+ noun: string;
31
+ total: number;
32
+ displayed: number;
33
+ artifactPath?: string;
34
+ }): string | undefined;
35
+ export declare function summarizeJiraIssue(issue: unknown): JiraIssueSummaryPayload | undefined;
36
+ export declare function summarizeJiraProject(project: unknown, fallbackKey?: string): JiraProjectSummaryPayload | undefined;
37
+ export declare function summarizeJiraTransition(value: unknown): JiraTransitionSummaryPayload | undefined;
38
+ export declare function issueLine(issue: unknown): string;
39
+ export declare function formatIssueSummaryLine(summary: JiraIssueSummaryPayload): string;
40
+ export declare function nameOf(value: unknown): string | undefined;
41
+ export declare function transitionLine(value: unknown): string;
42
+ export declare function formatTransitionSummaryLine(summary: JiraTransitionSummaryPayload): string;
43
+ //# sourceMappingURL=format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../../../src/execution/jira/format.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,EACV,uBAAuB,EACvB,yBAAyB,EACzB,4BAA4B,EAE7B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAGhF,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,wBAAwB,KAAK,CAAC;AAC3C,eAAO,MAAM,yBAAyB,MAAM,CAAC;AAE7C,wBAAsB,iBAAiB,CACrC,OAAO,EAAE,oBAAoB,EAC7B,IAAI,EAAE,MAAM,EACZ,OAAO,EAAE,OAAO,GACf,OAAO,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAgBxE;AAED,wBAAsB,mBAAmB,CAAC,EACxC,IAAI,EACJ,OAAO,EACP,OAAY,EACZ,QAAQ,GACT,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,oBAAoB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAClC,QAAQ,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAA;KAAE,CAAC;CAC1E,GAAG,OAAO,CAAC,mBAAmB,CAAC,CA2B/B;AAED,wBAAgB,gBAAgB,CAAC,CAAC,EAChC,KAAK,EAAE,CAAC,EAAE,EACV,KAAK,SAA0B,GAC9B;IAAE,KAAK,EAAE,CAAC,EAAE,CAAC;IAAC,KAAK,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CASnE;AAED,wBAAgB,kBAAkB,CAAC,EACjC,IAAI,EACJ,KAAK,EACL,SAAS,EACT,YAAY,GACb,EAAE;IACD,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,GAAG,MAAM,GAAG,SAAS,CAMrB;AAED,wBAAgB,kBAAkB,CAChC,KAAK,EAAE,OAAO,GACb,uBAAuB,GAAG,SAAS,CAgBrC;AAED,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,OAAO,EAChB,WAAW,CAAC,EAAE,MAAM,GACnB,yBAAyB,GAAG,SAAS,CAcvC;AAED,wBAAgB,uBAAuB,CACrC,KAAK,EAAE,OAAO,GACb,4BAA4B,GAAG,SAAS,CAU1C;AAED,wBAAgB,SAAS,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGhD;AAED,wBAAgB,sBAAsB,CACpC,OAAO,EAAE,uBAAuB,GAC/B,MAAM,CAWR;AAED,wBAAgB,MAAM,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,GAAG,SAAS,CAIzD;AAED,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAGrD;AAED,wBAAgB,2BAA2B,CACzC,OAAO,EAAE,4BAA4B,GACpC,MAAM,CAER"}
@@ -0,0 +1,174 @@
1
+ import { createHash } from "node:crypto";
2
+ import { mkdir, writeFile } from "node:fs/promises";
3
+ import { tmpdir } from "node:os";
4
+ import { join } from "node:path";
5
+ import { buildProcessTextResult } from "../common/process-result.js";
6
+ export const JIRA_DISPLAY_ITEM_LIMIT = 20;
7
+ export const JIRA_FIELD_DISPLAY_LIMIT = 20;
8
+ export const JIRA_TEXT_FIELD_MAX_CHARS = 300;
9
+ export async function writeJiraArtifact(context, kind, payload) {
10
+ const baseDir = context.dataDir
11
+ ? join(context.dataDir, "tmp", "jira")
12
+ : join(tmpdir(), "nerve-jira");
13
+ await mkdir(baseDir, { recursive: true, mode: 0o700 });
14
+ const text = JSON.stringify(payload, null, 2);
15
+ const hash = createHash("sha256").update(text).digest("hex").slice(0, 10);
16
+ const timestamp = new Date().toISOString().replace(/[:.]/g, "-");
17
+ const path = join(baseDir, `${kind}-${timestamp}-${hash}.json`);
18
+ await writeFile(path, text, { encoding: "utf8", mode: 0o600 });
19
+ return {
20
+ path,
21
+ bytes: Buffer.byteLength(text, "utf8"),
22
+ chars: text.length,
23
+ lines: text.length === 0 ? 0 : text.split("\n").length,
24
+ };
25
+ }
26
+ export async function buildJiraTextResult({ text, context, details = {}, artifact, }) {
27
+ const existingOutputLimits = details.outputLimits;
28
+ const outputLimits = artifact
29
+ ? {
30
+ ...(existingOutputLimits ?? {}),
31
+ artifacts: [
32
+ ...(existingOutputLimits?.artifacts ?? []),
33
+ {
34
+ kind: "raw_result",
35
+ path: artifact.path,
36
+ label: "Raw Jira JSON",
37
+ bytes: artifact.bytes,
38
+ chars: artifact.chars,
39
+ lines: artifact.lines,
40
+ },
41
+ ],
42
+ }
43
+ : existingOutputLimits;
44
+ return buildProcessTextResult({
45
+ text,
46
+ outputFilePrefix: "nerve-jira",
47
+ exitMessagePrefix: "Jira",
48
+ dataDir: context.dataDir,
49
+ details: { ...details, ...(outputLimits ? { outputLimits } : {}) },
50
+ });
51
+ }
52
+ export function takeDisplayItems(items, limit = JIRA_DISPLAY_ITEM_LIMIT) {
53
+ const total = items.length;
54
+ const displayedItems = items.slice(0, limit);
55
+ return {
56
+ items: displayedItems,
57
+ total,
58
+ displayed: displayedItems.length,
59
+ omitted: Math.max(0, total - displayedItems.length),
60
+ };
61
+ }
62
+ export function displayLimitNotice({ noun, total, displayed, artifactPath, }) {
63
+ if (total <= displayed)
64
+ return undefined;
65
+ const plural = total === 1 ? noun : `${noun}s`;
66
+ return artifactPath
67
+ ? `Showing first ${displayed} of ${total} ${plural}; full Jira response is saved to ${artifactPath}.`
68
+ : `Showing first ${displayed} of ${total} ${plural}; narrow the query or save raw JSON for full details.`;
69
+ }
70
+ export function summarizeJiraIssue(issue) {
71
+ if (!issue || typeof issue !== "object")
72
+ return undefined;
73
+ const record = issue;
74
+ const fields = asRecord(record.fields);
75
+ const key = stringField(record.key) ?? stringField(record.id);
76
+ if (!key)
77
+ return undefined;
78
+ return compactRecord({
79
+ key,
80
+ id: stringField(record.id),
81
+ summary: truncateField(stringField(fields.summary)),
82
+ issueType: truncateField(nameOf(fields.issuetype)),
83
+ status: truncateField(nameOf(fields.status)),
84
+ assignee: truncateField(displayNameOf(fields.assignee)),
85
+ priority: truncateField(nameOf(fields.priority)),
86
+ updated: truncateField(stringField(fields.updated)),
87
+ });
88
+ }
89
+ export function summarizeJiraProject(project, fallbackKey) {
90
+ if (!project || typeof project !== "object") {
91
+ return fallbackKey ? { key: fallbackKey } : undefined;
92
+ }
93
+ const record = project;
94
+ const key = stringField(record.key) ?? fallbackKey ?? stringField(record.id);
95
+ if (!key)
96
+ return undefined;
97
+ return compactRecord({
98
+ key,
99
+ id: stringField(record.id),
100
+ name: truncateField(stringField(record.name)),
101
+ projectTypeKey: truncateField(stringField(record.projectTypeKey)),
102
+ lead: truncateField(displayNameOf(record.lead)),
103
+ });
104
+ }
105
+ export function summarizeJiraTransition(value) {
106
+ if (!value || typeof value !== "object")
107
+ return undefined;
108
+ const record = value;
109
+ const id = stringField(record.id);
110
+ if (!id)
111
+ return undefined;
112
+ return compactRecord({
113
+ id,
114
+ name: truncateField(stringField(record.name)),
115
+ to: truncateField(nameOf(record.to) ?? stringField(record.to)),
116
+ });
117
+ }
118
+ export function issueLine(issue) {
119
+ const summary = summarizeJiraIssue(issue);
120
+ return summary ? formatIssueSummaryLine(summary) : JSON.stringify(issue);
121
+ }
122
+ export function formatIssueSummaryLine(summary) {
123
+ const parts = [
124
+ summary.key,
125
+ summary.issueType,
126
+ summary.status,
127
+ summary.priority ? `priority: ${summary.priority}` : undefined,
128
+ summary.assignee ? `assignee: ${summary.assignee}` : undefined,
129
+ ]
130
+ .filter(Boolean)
131
+ .join(" · ");
132
+ return `- ${parts}${summary.summary ? ` — ${summary.summary}` : ""}`;
133
+ }
134
+ export function nameOf(value) {
135
+ if (!value || typeof value !== "object")
136
+ return undefined;
137
+ const name = value.name;
138
+ return typeof name === "string" ? name : undefined;
139
+ }
140
+ export function transitionLine(value) {
141
+ const summary = summarizeJiraTransition(value);
142
+ return summary ? formatTransitionSummaryLine(summary) : JSON.stringify(value);
143
+ }
144
+ export function formatTransitionSummaryLine(summary) {
145
+ return `- ${summary.id} · ${summary.name ?? "(unnamed)"}${summary.to ? ` → ${summary.to}` : ""}`;
146
+ }
147
+ function truncateField(value) {
148
+ if (value === undefined)
149
+ return undefined;
150
+ const normalized = value.replace(/\s+/g, " ").trim();
151
+ if (normalized.length <= JIRA_TEXT_FIELD_MAX_CHARS)
152
+ return normalized;
153
+ return `${normalized.slice(0, JIRA_TEXT_FIELD_MAX_CHARS - 1)}…`;
154
+ }
155
+ function stringField(value) {
156
+ return typeof value === "string" && value.length > 0 ? value : undefined;
157
+ }
158
+ function asRecord(value) {
159
+ return value && typeof value === "object" && !Array.isArray(value)
160
+ ? value
161
+ : {};
162
+ }
163
+ function displayNameOf(value) {
164
+ if (!value || typeof value !== "object")
165
+ return undefined;
166
+ const record = value;
167
+ return typeof record.displayName === "string"
168
+ ? record.displayName
169
+ : nameOf(value);
170
+ }
171
+ function compactRecord(record) {
172
+ return Object.fromEntries(Object.entries(record).filter(([, value]) => value !== undefined));
173
+ }
174
+ //# sourceMappingURL=format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"format.js","sourceRoot":"","sources":["../../../src/execution/jira/format.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,9 @@
1
+ import type { ToolExecutionContext, ToolExecutionResult } from "../../types.js";
2
+ export declare function executeJiraSearchIssues(args: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolExecutionResult>;
3
+ export declare function executeJiraGetIssue(args: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolExecutionResult>;
4
+ export declare function executeJiraGetProject(args: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolExecutionResult>;
5
+ export declare function executeJiraCreateIssue(args: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolExecutionResult>;
6
+ export declare function executeJiraUpdateIssue(args: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolExecutionResult>;
7
+ export declare function executeJiraAddComment(args: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolExecutionResult>;
8
+ export declare function executeJiraTransitionIssue(args: Record<string, unknown>, context: ToolExecutionContext): Promise<ToolExecutionResult>;
9
+ //# sourceMappingURL=jira.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"jira.d.ts","sourceRoot":"","sources":["../../../src/execution/jira/jira.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAiDhF,wBAAsB,uBAAuB,CAC3C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CA8D9B;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAoF9B;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAyD9B;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CA6C9B;AAED,wBAAsB,sBAAsB,CAC1C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAyC9B;AAED,wBAAsB,qBAAqB,CACzC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAyB9B;AAED,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,EAC7B,OAAO,EAAE,oBAAoB,GAC5B,OAAO,CAAC,mBAAmB,CAAC,CAmF9B"}