@mmerterden/multi-agent-pipeline 20.25.1 → 20.27.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/CHANGELOG.md +29 -0
- package/README.md +1 -1
- package/README.tr.md +1 -1
- package/docs/facts.json +3 -3
- package/install/catalog-history.json +1 -1
- package/manifest.json +50 -39
- package/package.json +5 -5
- package/pipeline/commands/multi-agent/channels/SKILL.md +23 -19
- package/pipeline/lib/_jira-auth.sh +3 -1
- package/pipeline/lib/issue-fetcher.sh +40 -2
- package/pipeline/lib/jira-family-write.sh +339 -0
- package/pipeline/lib/jira-publish.sh +28 -1
- package/pipeline/lib/jira-remote-links.sh +99 -0
- package/pipeline/multi-agent-refs/analysis/intake.md +2 -0
- package/pipeline/multi-agent-refs/analysis/render.md +4 -2
- package/pipeline/multi-agent-refs/channels/jira.md +12 -8
- package/pipeline/multi-agent-refs/channels/pr.md +11 -8
- package/pipeline/multi-agent-refs/channels/test-run.md +52 -0
- package/pipeline/multi-agent-refs/conventions-defaults.md +2 -0
- package/pipeline/multi-agent-refs/features/analysis-issue-links.md +42 -0
- package/pipeline/multi-agent-refs/features/jira-family.md +175 -0
- package/pipeline/multi-agent-refs/features/localization-reuse.md +25 -0
- package/pipeline/multi-agent-refs/features/url-enrichment.md +11 -3
- package/pipeline/multi-agent-refs/features/visual-evidence.md +35 -9
- package/pipeline/multi-agent-refs/generate-issue.md +9 -11
- package/pipeline/multi-agent-refs/phases/phase-0-init.md +13 -7
- package/pipeline/multi-agent-refs/phases/phase-2-dev.md +2 -0
- package/pipeline/multi-agent-refs/phases/phase-4-commit.md +1 -1
- package/pipeline/multi-agent-refs/phases/phase-5-report.md +2 -1
- package/pipeline/multi-agent-refs/phases.md +1 -1
- package/pipeline/multi-agent-refs/platform-parity.md +1 -1
- package/pipeline/multi-agent-refs/tracker-contract.md +10 -6
- package/pipeline/schemas/agent-state.schema.json +86 -0
- package/pipeline/schemas/prefs.schema.json +34 -0
- package/pipeline/schemas/unattended-policy.json +1 -0
- package/pipeline/scripts/_sibling-root.mjs +38 -0
- package/pipeline/scripts/gen-facts.mjs +5 -3
- package/pipeline/scripts/jira-family.mjs +947 -0
- package/pipeline/scripts/jira-wiki-escape.mjs +3 -3
- package/pipeline/scripts/plan-remote-links.mjs +339 -0
- package/pipeline/scripts/render-flow-run.mjs +583 -0
- package/pipeline/scripts/render-jira-evidence.mjs +213 -0
- package/pipeline/skills/.skill-manifest.json +5 -5
- package/pipeline/skills/shared/core/multi-agent/SKILL.md +5 -0
- package/pipeline/skills/shared/core/multi-agent-channels/SKILL.md +15 -2
- package/pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md +1 -1
- package/pipeline/skills/shared/external/ios-localization/SKILL.md +5 -0
package/manifest.json
CHANGED
|
@@ -1,15 +1,15 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "20.
|
|
4
|
-
"commit": "
|
|
5
|
-
"generatedAt": "2026-10-
|
|
3
|
+
"version": "20.27.0",
|
|
4
|
+
"commit": "ecae7ee9cdf384be989d519a17cdf8b89c594d38",
|
|
5
|
+
"generatedAt": "2026-10-16T06:02:08.689Z",
|
|
6
6
|
"algorithm": "sha256",
|
|
7
|
-
"fileCount":
|
|
7
|
+
"fileCount": 1402,
|
|
8
8
|
"files": {
|
|
9
|
-
"CHANGELOG.md": "
|
|
9
|
+
"CHANGELOG.md": "849337446408fe3fadb526d34e45c6a774b62d0b7aa88333a31d0c9aac41ac44",
|
|
10
10
|
"LICENSE": "8d8c51aaf1e1538b180c69965fa038db71be86798cc3e26a143bebfefe16a43e",
|
|
11
|
-
"README.md": "
|
|
12
|
-
"README.tr.md": "
|
|
11
|
+
"README.md": "7727e831f6421adeeaf2e34d9aeb8a6a11ad7ee5b166e09ade43d70704c27cfb",
|
|
12
|
+
"README.tr.md": "ce7978c53c733cf359c21423fbfed640f20644584ff153aaab473958fdccfdc3",
|
|
13
13
|
"SECURITY.md": "0eb89553ddcfc56bfe9712315b55a6630ee2f579631aaeccd6ad24f8ac769a0b",
|
|
14
14
|
"docs/FIGMA_PIPELINE.md": "ea01f3ea5fef1a9cb316040a2d416fcf87dd4f2a14b5497aa00994a0b5dc7e6a",
|
|
15
15
|
"docs/adr/0001-three-model-triage.md": "79a6f1025469f607a5859add21854052d7433bc213f4aceee2e159b613eeb6a1",
|
|
@@ -34,7 +34,7 @@
|
|
|
34
34
|
"docs/best-practices.md": "f8b75b0d38b5896a6a852bb30a1edddeb24dab8b5b7b1d9313290e1241c72024",
|
|
35
35
|
"docs/ecosystem.md": "9b23467fca1bcdc0275e7eccd3428c36181ba9f8cd866778159edd7d65a4d563",
|
|
36
36
|
"docs/engineering.md": "550528cd47c7d2c921729c68d0782a00ac8e77a4bdfec479f6749f9c3235d188",
|
|
37
|
-
"docs/facts.json": "
|
|
37
|
+
"docs/facts.json": "9b8a5d8dd40cb543146acc627afc0b456f9f4d2b8273509c3d4cca7cf00b7010",
|
|
38
38
|
"docs/features.md": "d5fcbe3acc05e054efdf0c43ddfc1a82ef3d463f349ea2ec5b4842fa26d9d49d",
|
|
39
39
|
"docs/performance.md": "bbf2f3922c25dcba0c1a9e69ef420e3871a729af5b35009a49b48a5d3c5cd151",
|
|
40
40
|
"docs/recovery-guide.md": "59a8f1b66b34cb9ff5507b3d54dac3b9915e184aa044d9c758d18cac818d510e",
|
|
@@ -54,7 +54,7 @@
|
|
|
54
54
|
"install/_unattended-profile.mjs": "e1ed82bde35d19105ee12c2a551eb778912b0e5c93ab227fd15c993098d98de0",
|
|
55
55
|
"install/_usage-lifecycle.mjs": "4b010c4e75d6f8e13b58d80a93cc9407f42ccde781c9ed12dcb8e7faf05e526c",
|
|
56
56
|
"install/_xcode-skills.mjs": "1a7e20f1e6743324b941c5d3ecac9f94c65fff1534ffd9c63b39cbea4f8d101a",
|
|
57
|
-
"install/catalog-history.json": "
|
|
57
|
+
"install/catalog-history.json": "af32be1b6a9a209413c7ae89cb69f2bde500545f732e505c94182cc3c15f5acc",
|
|
58
58
|
"install/claude.mjs": "106ce353ebc19c8319d057ce342e1f989519510465c798399076b5f3d8727904",
|
|
59
59
|
"install/codex.mjs": "08925fe9f3ecdf509b37f01105652c847475d20fcde2db0d679b9a7d663ca145",
|
|
60
60
|
"install/copilot.mjs": "41dc394b8a3ae77cfd194ce0ca9bbcafce9bdce349f1f72eeb86569f993e15fe",
|
|
@@ -66,7 +66,7 @@
|
|
|
66
66
|
"install/templates/multi-agent-autopilot-awake.plist.template": "ddd25c76c56fcbb38a89de8e35637372d70ace993d6bc487a88ca9cfb702fe1f",
|
|
67
67
|
"install/templates/multi-agent-autopilot.plist.template": "122c8a61cd927edd99375d6e3da40f1d42bcceed5b6641785c8b28bb930bc77e",
|
|
68
68
|
"install/unattended-profile-legacy.json": "f52e86b998956f09ad306b1735a6c10b58580d7082d8a55665a4c6bb15c3aa1f",
|
|
69
|
-
"package.json": "
|
|
69
|
+
"package.json": "8bc7f4948cd5ba3a59a7a38116ea6f6d116f73907d916555a92ce228364a465e",
|
|
70
70
|
"pipeline/agents/android-architect.md": "11fb74543cb0ebcf9525ca6654fe95d53da7229e0bf4a1149b31fd9005abc453",
|
|
71
71
|
"pipeline/agents/backend-architect.md": "b02a606c301e4714131aed70ae6d16eeb77fbc819a001e2752cff2488d4246de",
|
|
72
72
|
"pipeline/agents/bulk-reader.md": "6597052cd7d205bac2b1c7633f5232fe1a40730664a913b8eb77efd5a786dc25",
|
|
@@ -91,7 +91,7 @@
|
|
|
91
91
|
"pipeline/commands/multi-agent/autopilot/SKILL.md": "ae95364c28e21a5d12b8a579180d59963bad3738fcfd978180c5dca6e55a0d02",
|
|
92
92
|
"pipeline/commands/multi-agent/bug-bash/SKILL.md": "0ae5883b72239c74f4f64fc2d60526091e471afa6a2886f90f70a469a85cc832",
|
|
93
93
|
"pipeline/commands/multi-agent/build-optimize/SKILL.md": "e74d6f5be703acef1704092d5fe53485d95fe6c220bb768accaf68ebd212b7c1",
|
|
94
|
-
"pipeline/commands/multi-agent/channels/SKILL.md": "
|
|
94
|
+
"pipeline/commands/multi-agent/channels/SKILL.md": "ad2669cee680964185a38212148173d60df09d4d98126e237563743f2c5cfa2a",
|
|
95
95
|
"pipeline/commands/multi-agent/complaint-analysis/SKILL.md": "b9ab7b9444cf99f25868d90f050ed96f04ac8cd8ea18d0999376184b067fc2bc",
|
|
96
96
|
"pipeline/commands/multi-agent/create-jira/SKILL.md": "ac3d3e0ab2fb079b7c4107928573912699f68600f922b2f453be49c65317665a",
|
|
97
97
|
"pipeline/commands/multi-agent/design-check/SKILL.md": "d3cb1b50f2d14cf22a38f4c0db98c852e8ed0586e969f7e6da7c1d65f36554eb",
|
|
@@ -168,7 +168,7 @@
|
|
|
168
168
|
"pipeline/contract/frozen/toolbox.json": "d52f94ca81f62e4c0d67f0718ce6361f332f289b09fe7cc25c8f5f40feb0ffff",
|
|
169
169
|
"pipeline/contract/manifest.json": "e9163ba923619447f872416d7f57ea48d67dc13c356c9544f24957f4131946bf",
|
|
170
170
|
"pipeline/contract/types/index.d.ts": "1434e70701023a7274fb13c9dbdf901b2a0d7259e46f3fcf40fe2454300c32a3",
|
|
171
|
-
"pipeline/lib/_jira-auth.sh": "
|
|
171
|
+
"pipeline/lib/_jira-auth.sh": "b5fd733ac26727eda299976c688456e95611ca40acafd3947c66c445d77f2237",
|
|
172
172
|
"pipeline/lib/account-resolver.sh": "f7bef9beba3f839268509361651be0b1e1f319f2f23821f90ba466fdf185a8f6",
|
|
173
173
|
"pipeline/lib/agent-model-sync.mjs": "2e0264ca8d8fef761563db219d588fed9067847043f960f68f055c186c20b668",
|
|
174
174
|
"pipeline/lib/analysis-jira-write.sh": "26e17b8a972819a1649ead8cc4e6f0ff8548dd686c2572107e1777fb384f639d",
|
|
@@ -203,9 +203,11 @@
|
|
|
203
203
|
"pipeline/lib/figma-token.sh": "b192b1d3c8f75f1deb81731e95e080372d87fb44779805d05cdb7cb585ee1db0",
|
|
204
204
|
"pipeline/lib/gc-report.sh": "a70a1fbaea4fb6dbb9a56471119e403071b4358fb0d4577b62bb4d5e08eaf87e",
|
|
205
205
|
"pipeline/lib/invoked-directly.mjs": "a7014f252174414c267cc303a992aa9f3986541c5aad188c87cc6809ba3b69bd",
|
|
206
|
-
"pipeline/lib/issue-fetcher.sh": "
|
|
206
|
+
"pipeline/lib/issue-fetcher.sh": "a074c100d31d08bd04573ae77f51beda4174dc4eaf6781e31000b13117e59da0",
|
|
207
207
|
"pipeline/lib/jira-epic-link.sh": "b5f9ce1067cd8e9f0e547da4e681b71e4ff8c145e9a759fc98f83703dfca4d35",
|
|
208
|
-
"pipeline/lib/jira-
|
|
208
|
+
"pipeline/lib/jira-family-write.sh": "b29674fd2dc6993636d0c8b6b674a069f37d76775420372a755a1ce3b0f94b95",
|
|
209
|
+
"pipeline/lib/jira-publish.sh": "d80c7c128fb16e67962d087f0e12ecbb396d8c7367bbb4f6d7eecb7cedf60fb3",
|
|
210
|
+
"pipeline/lib/jira-remote-links.sh": "ec62eeec7e666ebe5b73870d539306780bd6c32ced1acfda9046a95669a3687f",
|
|
209
211
|
"pipeline/lib/json-file-lock.mjs": "d8a9075e6fa4fd10d4fb84efd438f92906fb3181455d661ca5fe604c57441524",
|
|
210
212
|
"pipeline/lib/md2confluence-v3.py": "3677ca47931e4b3d0fd2ce3e11299fc5f6d24799eb8332e37dd60b6c3c4653a2",
|
|
211
213
|
"pipeline/lib/model-dispatch.sh": "6500a5a7cb6a4c099cf1d01678bc9465a3d4eb1001e1f516dcc5eacd69577158",
|
|
@@ -255,10 +257,10 @@
|
|
|
255
257
|
"pipeline/multi-agent-refs/analysis-template-corporate.md": "a1352dff1e39ef75cb25fadfc686595a584a87e337a45633e99d272b5e38a112",
|
|
256
258
|
"pipeline/multi-agent-refs/analysis-template.md": "5a5376a615332ab75003c2baf897248ba7c06ad2238a41ea1e7d1de0ff491374",
|
|
257
259
|
"pipeline/multi-agent-refs/analysis/evidence.md": "b0c216dc8869b729947ac5ecd33d20034b1a90bd8d648028a20ea7214b748658",
|
|
258
|
-
"pipeline/multi-agent-refs/analysis/intake.md": "
|
|
260
|
+
"pipeline/multi-agent-refs/analysis/intake.md": "192a2da33ceaf4a255645960bc7d6883ab2845b9d45b30ada8faafaf4ad82aba",
|
|
259
261
|
"pipeline/multi-agent-refs/analysis/locked.md": "c914d3da5182bfbb3ba613299cf38f12832fda2f17e1968e5a8fd7b32d867bdf",
|
|
260
262
|
"pipeline/multi-agent-refs/analysis/redesign.md": "6314fc1e14e05166efbea4819d5b07adb838d0704bde61b4b69cef637f251d58",
|
|
261
|
-
"pipeline/multi-agent-refs/analysis/render.md": "
|
|
263
|
+
"pipeline/multi-agent-refs/analysis/render.md": "c3dc2c4dea9c5094ca538abda20543f7fbbca64d3e15f41c3c9e1eae7a64f095",
|
|
262
264
|
"pipeline/multi-agent-refs/analysis/resolve.md": "2e3631a8a9af999e01c66455378020e2134e6ca91bed3a40cd94717da94a34cb",
|
|
263
265
|
"pipeline/multi-agent-refs/analysis/resume.md": "25a430b3a81c877b31c473cb0b708b1b225de3faf4d5f4b2918908df305c6d90",
|
|
264
266
|
"pipeline/multi-agent-refs/analysis/reusable-refs.md": "6058c704a689d20af95a13295fd2e34f8636647f16ab991961ad9b7c0655bd34",
|
|
@@ -270,15 +272,16 @@
|
|
|
270
272
|
"pipeline/multi-agent-refs/channels/board.md": "895edfd4a26f7f5fbe13f0eb5865d30975ed86ee3dbd4bd3bd12340f48001fcb",
|
|
271
273
|
"pipeline/multi-agent-refs/channels/confluence.md": "1e1d731e9f57efdfe77efab3281d74b7f16e28d3d49699da516225492c551ffc",
|
|
272
274
|
"pipeline/multi-agent-refs/channels/issue-comment.md": "19df6d8d6c23b5ea88687250dc10dd5fa35ba2b2e279efcb000e83622a0664f6",
|
|
273
|
-
"pipeline/multi-agent-refs/channels/jira.md": "
|
|
275
|
+
"pipeline/multi-agent-refs/channels/jira.md": "a164ac34b708ec1a3916ee69bcd3758aad5b40d6192fecb829d445afe0a41425",
|
|
274
276
|
"pipeline/multi-agent-refs/channels/multi-repo.md": "a309478d8ba253c797904b1ad174be958e4d365b5ff008634ad1d5fc87969474",
|
|
275
277
|
"pipeline/multi-agent-refs/channels/pr-review-actions.md": "21bf53796ae4ecd59769f9944ad8c7d1cd3a5915b0956be99ec875b847b33c00",
|
|
276
|
-
"pipeline/multi-agent-refs/channels/pr.md": "
|
|
278
|
+
"pipeline/multi-agent-refs/channels/pr.md": "7c374018e2cdd50c0de45728b3ee84fbc21f5d8f6fbcc6db127616be80e39c72",
|
|
279
|
+
"pipeline/multi-agent-refs/channels/test-run.md": "d9d2d325fd8439bc4be03a76c1250bc828c2aadd0d135fb272441705eae777ea",
|
|
277
280
|
"pipeline/multi-agent-refs/channels/wiki.md": "ba52c5efaedc067dd8456fe9076af694d7e3dae9bda621f1df65c9159cd422da",
|
|
278
281
|
"pipeline/multi-agent-refs/complaint-analysis-template.md": "dd5f12a8f56ee4dc177fa7bfba4ffe9ad021e5f1b9e661a49031f02dd6e37109",
|
|
279
282
|
"pipeline/multi-agent-refs/component-dispatch.md": "2ab9094aa716397e4840cd48f736c3f4fc3e7c4f9ccc5c7c7c52f9e8b0a28fb5",
|
|
280
283
|
"pipeline/multi-agent-refs/component-generation.md": "04fdb3fd0f1c129e1df8243184a3225cebd9c4f63511d6015eb356a92eda8891",
|
|
281
|
-
"pipeline/multi-agent-refs/conventions-defaults.md": "
|
|
284
|
+
"pipeline/multi-agent-refs/conventions-defaults.md": "c7ef37d269a49aaa05b096085edb318ce67870aa9a75b7afe219df1af3aa81b6",
|
|
282
285
|
"pipeline/multi-agent-refs/cross-cli-contract.md": "9a21e8aa6adff02f2514b5dd8cb5581e5e10e28007469e663912719ac4b8f2bd",
|
|
283
286
|
"pipeline/multi-agent-refs/design-check/build-launch.md": "0ac64d07ef7389e22f7443f79c70a0a4f8bb87dcff6dbc94c63e034febe194ea",
|
|
284
287
|
"pipeline/multi-agent-refs/design-check/compare.md": "2a0a89542a8bfefcfeaf1068dd91edb6947392f911f23e8b4857e4ace8fd15d7",
|
|
@@ -287,6 +290,7 @@
|
|
|
287
290
|
"pipeline/multi-agent-refs/design-check/figma-mapping.md": "731b7f19ddee2e67ea5d318e95e3a0d6840fa62c4ad682a25315509ac9ddcbc3",
|
|
288
291
|
"pipeline/multi-agent-refs/design-check/init-inventory.md": "62defc5ea804f6c8f059a8d512b023791daac59274c0def28cefd7709a7fe862",
|
|
289
292
|
"pipeline/multi-agent-refs/design-check/mcp-currency-gate.md": "70a96d3135af905989cd1819e6fb37fc44d25df9817b1efcd20121ec6db76d74",
|
|
293
|
+
"pipeline/multi-agent-refs/features/analysis-issue-links.md": "68685a7fbdfd06ddbaafbbbbb6287670957631d9f5b130b851927aacf5345a23",
|
|
290
294
|
"pipeline/multi-agent-refs/features/analysis-jira.md": "e5e88c656fad3f153d0a9ae6278e6f2c9060805029435f72cca64384c6bd6f50",
|
|
291
295
|
"pipeline/multi-agent-refs/features/analysis-outline.md": "36a917343a7c07ae115aa1e89f825304e5878db931915aefef614d251b167e92",
|
|
292
296
|
"pipeline/multi-agent-refs/features/analysis-sources.md": "12c8035e6aabf8e8a973b7264edc9a943e6758e79dbc53ae3e9b43c7f998000c",
|
|
@@ -306,6 +310,8 @@
|
|
|
306
310
|
"pipeline/multi-agent-refs/features/external-context-injection.md": "be9a0e904efd52535fa18a254567c9d0c3fc2ed12fcbc7a116f7879048303df6",
|
|
307
311
|
"pipeline/multi-agent-refs/features/free-models.md": "64afaba7e7a77575f4ed6a10905a01330a83f573907fb1a5d5356ae6c80999a0",
|
|
308
312
|
"pipeline/multi-agent-refs/features/jira-context.md": "7d14802ed9ad1747e1a06dec26f22ff9e8959e03c47d7a018af45b8274aea47c",
|
|
313
|
+
"pipeline/multi-agent-refs/features/jira-family.md": "4be05f296e6a2050355c218ed1cd33b489cd8c89ab798e1e44c7ba45fb9517b8",
|
|
314
|
+
"pipeline/multi-agent-refs/features/localization-reuse.md": "1a5bf13898eb83b65197c77a64736583fca67dc96ebab5df02482263e1091415",
|
|
309
315
|
"pipeline/multi-agent-refs/features/maturity-followup.md": "e663e5bcf0b3b4d4d2a67f4516dbb9fb12520dfbdedb47a9c5f57c13a9a0633e",
|
|
310
316
|
"pipeline/multi-agent-refs/features/model-fallback.md": "5647b4dbeed6fea21d264f03a85796727a83a001710a8bcbb3932c5a3914d6c5",
|
|
311
317
|
"pipeline/multi-agent-refs/features/mutation-probe.md": "e6d622ab061f6cdcc16da40311e8e7aeae3e6f3c1d4b76d3849859a48a8ae31a",
|
|
@@ -333,14 +339,14 @@
|
|
|
333
339
|
"pipeline/multi-agent-refs/features/stack-skill-routing.md": "1989f7f64be6c5ee0a42d8e9962aead7cd7472d795915ab953d89d9382f317e6",
|
|
334
340
|
"pipeline/multi-agent-refs/features/unattended-gates.md": "46b516cac81a4eacf5d58bc3b1613e2266c26f1559be8dac060d1dc6b7d7ca01",
|
|
335
341
|
"pipeline/multi-agent-refs/features/unattended-security.md": "f0f05ed17bbf26a50fa0f88d890f7ac3ccb8f78f169b9f759e997299fdeb5cac",
|
|
336
|
-
"pipeline/multi-agent-refs/features/url-enrichment.md": "
|
|
342
|
+
"pipeline/multi-agent-refs/features/url-enrichment.md": "14c6fcadd31cecf85011d936021a2103d87d37f618a0aab07c693be63aeae210",
|
|
337
343
|
"pipeline/multi-agent-refs/features/usage-reporting.md": "12e8b4ee6170431ea980da829415beeb8dce9381a658b5d70a569ece98799438",
|
|
338
344
|
"pipeline/multi-agent-refs/features/valven.md": "13b1fb8a3815330f6f970181506ac117e0d1c42761e5a83454edbd0b383ee1a7",
|
|
339
345
|
"pipeline/multi-agent-refs/features/verify-by-test.md": "b0735adaa7ead797167b8d9ea48a10851a138083c6e638738cc96c66b02a1e37",
|
|
340
346
|
"pipeline/multi-agent-refs/features/verify.md": "1a6db5e7239eac01e51100353013abd16bf785a7fce88b40139fca27f4166be4",
|
|
341
|
-
"pipeline/multi-agent-refs/features/visual-evidence.md": "
|
|
347
|
+
"pipeline/multi-agent-refs/features/visual-evidence.md": "b7154dfe41f5069ad74883c73d04a4f7e5431c7e654151ab041b2981cd4ab134",
|
|
342
348
|
"pipeline/multi-agent-refs/features/worktree-finalize.md": "628f627b94927a9c4a5b0b261fed1f0ffa42d4155390d57b5e56566a26ed8193",
|
|
343
|
-
"pipeline/multi-agent-refs/generate-issue.md": "
|
|
349
|
+
"pipeline/multi-agent-refs/generate-issue.md": "3e5182b9d6848e852ee3c7f397687f45c05e0861360cb77185c0a27d503a685c",
|
|
344
350
|
"pipeline/multi-agent-refs/help/en.md": "2164743d020630b650d4b3313113e323c3a879e773540475b59bcedc20cb4916",
|
|
345
351
|
"pipeline/multi-agent-refs/help/tr.md": "2325b840682a9b5ca3d99361fedf165f0bfa8ab6dd4a2f33c19cce7fb5b9f95f",
|
|
346
352
|
"pipeline/multi-agent-refs/issue-jira-triad.md": "a12f4e3b75badf8a466e0c3531a5f0e12e44a1dd7799522fb03ff11068ce391d",
|
|
@@ -354,18 +360,18 @@
|
|
|
354
360
|
"pipeline/multi-agent-refs/orchestrator/skill-loading.md": "6827d45f067d3db66fe7a6043308164aaf8a3da7620d018d7ed6459e4356f476",
|
|
355
361
|
"pipeline/multi-agent-refs/outside-the-pipeline.md": "f62960921b2fbebd54914cec7503bfb5e3c3024f30fb3e0ead7e08e36a8139aa",
|
|
356
362
|
"pipeline/multi-agent-refs/payload-contracts.md": "77b10f1d616c20b96c8f83185f9b507c9764fdc69eae1795bff9127ecbc6f37e",
|
|
357
|
-
"pipeline/multi-agent-refs/phases.md": "
|
|
363
|
+
"pipeline/multi-agent-refs/phases.md": "77d04389edaa7aaf4e3a0faffebb2d2228b9e635fcb1e91f48b3f7d351f8aff4",
|
|
358
364
|
"pipeline/multi-agent-refs/phases/log-format.md": "62d51e57cca8445ab40f3c0dc29615e4b5c8e4743286bf9ef0173610e81397aa",
|
|
359
365
|
"pipeline/multi-agent-refs/phases/modes.md": "0733e20dce458c09f30343db9149fc93bc5a4c9531670b93952f223811dcb1aa",
|
|
360
366
|
"pipeline/multi-agent-refs/phases/operations.md": "9506a26684abfff1e332d92c2321e840544fd4f049aff9f118731e198dabca94",
|
|
361
|
-
"pipeline/multi-agent-refs/phases/phase-0-init.md": "
|
|
367
|
+
"pipeline/multi-agent-refs/phases/phase-0-init.md": "3817e3be71adbf30a082713895531ef0e7fed29a32b77ce351103f1dfcd8669c",
|
|
362
368
|
"pipeline/multi-agent-refs/phases/phase-1-plan.md": "de3f3dc16ae8853740540caa5497d2f18f016dcb7ea0bfc280ca5c136259a078",
|
|
363
|
-
"pipeline/multi-agent-refs/phases/phase-2-dev.md": "
|
|
369
|
+
"pipeline/multi-agent-refs/phases/phase-2-dev.md": "fd41c31112e7fd0b547b6210cb6134a383ceb44889cbafc39069fc97d05e5ce6",
|
|
364
370
|
"pipeline/multi-agent-refs/phases/phase-3-review.md": "60d3bff0370e3a31cbc7824560bd8598c19da0c4025be71e1df60661202d2a38",
|
|
365
|
-
"pipeline/multi-agent-refs/phases/phase-4-commit.md": "
|
|
366
|
-
"pipeline/multi-agent-refs/phases/phase-5-report.md": "
|
|
371
|
+
"pipeline/multi-agent-refs/phases/phase-4-commit.md": "49565e1d4bff37e60b6299787e77456d1b1707e42d03a1797612be0604bd0983",
|
|
372
|
+
"pipeline/multi-agent-refs/phases/phase-5-report.md": "293e5071c1465a441a0a54dd9bd8963f6c5d2a0158653f5dd8ff3bf0613ed8ae",
|
|
367
373
|
"pipeline/multi-agent-refs/picker-contract.md": "c03970ad8ebb36ff8742b41cc05b615a907d0cbd363e714a3da687f4aed25bba",
|
|
368
|
-
"pipeline/multi-agent-refs/platform-parity.md": "
|
|
374
|
+
"pipeline/multi-agent-refs/platform-parity.md": "1fa6189ad94ecd3e8a9f15980f19174dc86468050a6de3afff7aa30de60aa689",
|
|
369
375
|
"pipeline/multi-agent-refs/progress-contract.md": "d1dc3c117aeb880cd44b3439062e9fe7d5e2042ba00c49fd495f70a6bdc1addc",
|
|
370
376
|
"pipeline/multi-agent-refs/prompt-assembly.md": "5be25fe3e91ab4f997735907b53c8284fad289c60960e71445e0e8632d2704d1",
|
|
371
377
|
"pipeline/multi-agent-refs/readiness-review.md": "1413e47dc97a54c0a2bd597f996203f24ee8a356f3d5d8690b42b2dad47ddc40",
|
|
@@ -395,7 +401,7 @@
|
|
|
395
401
|
"pipeline/multi-agent-refs/sync/dev-toolkit.md": "b23817e65f3e386bc9b5937995f57394cb00e24147292a461888fb52f80a27e6",
|
|
396
402
|
"pipeline/multi-agent-refs/sync/stack-plugins.md": "07cba6d08f60c6ef6eecd90f373ec35db1bf6f98013cf12fe51155a77e76c748",
|
|
397
403
|
"pipeline/multi-agent-refs/threat-model.md": "3628881538b846f94decd78e389b34b473ba6f91b6e6dcf5c927d307ed264bea",
|
|
398
|
-
"pipeline/multi-agent-refs/tracker-contract.md": "
|
|
404
|
+
"pipeline/multi-agent-refs/tracker-contract.md": "938c05104143a9db45fe393636c5d81625dc65d2cb065945efad3bf885eff4c4",
|
|
399
405
|
"pipeline/multi-agent-refs/unattended-contract.md": "554eeeda1469f405eaf8d59ef11a62efbb6919f06bd9950dc856b0be891e702b",
|
|
400
406
|
"pipeline/multi-agent-refs/web-guide.md": "714cba0d92fa45bf71fbff21bb2f09c88534ebf785b3a2ea96d18037e2e7f7f9",
|
|
401
407
|
"pipeline/multi-agent-refs/website-deploy.md": "ce819c8b1ef8e8ec3257611379aaf0ab4678e08e0b58bd88c936e98cb8ead609",
|
|
@@ -415,7 +421,7 @@
|
|
|
415
421
|
"pipeline/rules/swiftui-qa.md": "8c4afe9e72413e7bdab655f3d17588469e80ac34cb7ad2a690901fc5b6534818",
|
|
416
422
|
"pipeline/rules/tdd.md": "4c1b3114506aa9794c9bb1e1aee1b1bbb4a993d192342e5697cc00bc2f6ea4a2",
|
|
417
423
|
"pipeline/rules/testing.md": "695be5520b65451f0aa300a9643df2c05e607ff6ad372201ea34798dc5998bd5",
|
|
418
|
-
"pipeline/schemas/agent-state.schema.json": "
|
|
424
|
+
"pipeline/schemas/agent-state.schema.json": "96c8a9d57b4ab14332c81a098a9da20828128f5dc1c1924a1bde17d65752087b",
|
|
419
425
|
"pipeline/schemas/analysis-output.schema.json": "41826f4bf7c96778f8cdbcc68531e984087897d438b7b49ac5a93fc29db47916",
|
|
420
426
|
"pipeline/schemas/analysis-spec.schema.json": "43770223266be1c94e2cdea585efb6783043353bc5a374613b554596f46e1bcd",
|
|
421
427
|
"pipeline/schemas/answer-request.schema.json": "29d4211a2a05a230e0707b171b73341d2e56f6b83edb178b731905211aab4e23",
|
|
@@ -469,7 +475,7 @@
|
|
|
469
475
|
"pipeline/schemas/plan-todos.schema.json": "be4374b7eeb513fb8a7663374defa5b35ae084f72e112faa41b07c46532c50de",
|
|
470
476
|
"pipeline/schemas/planning-output.schema.json": "6aea9b5b8bbf7f9a227215c29cc30a5b642981a02fe2a81eaf9e8a113f7c3947",
|
|
471
477
|
"pipeline/schemas/pr-request.schema.json": "ae75c4856349d62834802b1189af516bb6fb3d36646831b7ff2fa61d938afcd0",
|
|
472
|
-
"pipeline/schemas/prefs.schema.json": "
|
|
478
|
+
"pipeline/schemas/prefs.schema.json": "776ea725896456f4853cf7959cab9fdbd3dc34bdaa8e0eaf74b61e93c11710ff",
|
|
473
479
|
"pipeline/schemas/repo-profile.schema.json": "1a74ef8330da9a26a5a70955f6f9cbb20eda54a8615efaf86c7993d420a7f04e",
|
|
474
480
|
"pipeline/schemas/repos.schema.json": "a9bf56f25c66201c170912e3389bd73e4a3f61922410f83e31a6c6ba47aee861",
|
|
475
481
|
"pipeline/schemas/research-output.schema.json": "54e3ba1b04fdc20fbaa84333b943a8ab95d1395c7b0e0aedc67929184cb49523",
|
|
@@ -495,7 +501,7 @@
|
|
|
495
501
|
"pipeline/schemas/token-budget.schema.json": "126292faf6a49db0929d1bcb01be888ef7de4a3938cb7d88a0cf7ee786ffb297",
|
|
496
502
|
"pipeline/schemas/triage-corpus.schema.json": "b919fe3d69443d78e55d875f54717c745320ff94d34c516b0ca32f358ebec2e5",
|
|
497
503
|
"pipeline/schemas/triage-output.schema.json": "60e329a22cea0f0ed9fa1e8e78f9b512ef283277346b08a194ad491e0bad0995",
|
|
498
|
-
"pipeline/schemas/unattended-policy.json": "
|
|
504
|
+
"pipeline/schemas/unattended-policy.json": "423f5d79663fea92dc4035b9e7480acb0ee732a7d89a094ab2bcd252d0f819d3",
|
|
499
505
|
"pipeline/schemas/unattended-policy.schema.json": "d1aab1b49541ca77c3ca5ee69158878b61ea47a5bfdfe06cd548c3315ffd09c4",
|
|
500
506
|
"pipeline/schemas/unattended-profile.json": "25ca36388640a22b47b08f01f515b192ee4210eb820c85fd3d0485e0247afd8c",
|
|
501
507
|
"pipeline/schemas/unattended-profile.schema.json": "a9c0979f0d0742826e410fdbfe1ae1c4a56b05b4e638eec42d4c276d6f48f701",
|
|
@@ -518,6 +524,7 @@
|
|
|
518
524
|
"pipeline/scripts/_redact.mjs": "9d4fb3fa72c45cf14dc3dc9e950969f688c0d34f71c9e39efca0f68dbed15b54",
|
|
519
525
|
"pipeline/scripts/_retrieval.mjs": "c887d90701b610cdc25ad49090c3e2786de4135e73b8d423dc01aa56336edf2f",
|
|
520
526
|
"pipeline/scripts/_run-paths.mjs": "186266e09ffaf793525c0b25572006c9f37cdd2c6ce35abaacb172802476f573",
|
|
527
|
+
"pipeline/scripts/_sibling-root.mjs": "1acd7c997256a44aae19dc38788dda28e0245e9750b851af38ad0c307464e936",
|
|
521
528
|
"pipeline/scripts/_smoke-root.sh": "dad129959a4e37a0cd0f4f6c04f6d66c5a43752b2bf33989db9c002eb106b832",
|
|
522
529
|
"pipeline/scripts/_stack-adapter.mjs": "a754c042d237cd03abf11c6909099a7a3ea798cdd13d49b03787797fd3496cd7",
|
|
523
530
|
"pipeline/scripts/_stack-routing.mjs": "d1f804d457295e5cc8ad7039e8c29431f0e9f52f4396cc54c1305eb82b9b61e9",
|
|
@@ -591,7 +598,7 @@
|
|
|
591
598
|
"pipeline/scripts/gc-refs.sh": "04e91087885bac10ee692cc24914342a459bcfc5533574894e40e43587cec325",
|
|
592
599
|
"pipeline/scripts/gc-tmp.sh": "e833f742b9ca54fde78c58c3d473593a3a093ce35d6e30631e662a84a6ad6efe",
|
|
593
600
|
"pipeline/scripts/gc-worktrees.sh": "06d0a53b9293531f4b8501618648440b668ba1ef60c121576c55b0e203dcfc62",
|
|
594
|
-
"pipeline/scripts/gen-facts.mjs": "
|
|
601
|
+
"pipeline/scripts/gen-facts.mjs": "9e3cffc52882d44c32b60f9ab8eb47a912227ab094f6e896055d2a9c403b3ad1",
|
|
595
602
|
"pipeline/scripts/gen-mode-dispatch.mjs": "c6fd6772888bd928a9e8ac1bddd4effca5f6e7e51d07cee4c7264d48b5a96fac",
|
|
596
603
|
"pipeline/scripts/gen-skills-index.mjs": "64606fb3165786ed1488cc368dcbe8f53d2e9402f02578823a31838b9730180d",
|
|
597
604
|
"pipeline/scripts/git-path.mjs": "e82e0da227fe30f48a50f352556b1769b68e7647f13540d0ab265cbde8a77735",
|
|
@@ -606,8 +613,9 @@
|
|
|
606
613
|
"pipeline/scripts/host-hooks.mjs": "19fa3afc4c5caead2905144fe7727eacaa7c8e1fee5db20cfdfb8879e5aa7704",
|
|
607
614
|
"pipeline/scripts/issues.mjs": "66c787f1d6be924a61cb8b1504354dd7fb0de89a2afee744aa31435b834ef383",
|
|
608
615
|
"pipeline/scripts/jira-attach.sh": "300b6eb76ae2179324f70a2131388c0f56ca8bf49397cc858937b4d7f47372db",
|
|
616
|
+
"pipeline/scripts/jira-family.mjs": "b5860c5702ec8c03d0a9ac222fe9728c147445eab32c72173fa077ef82dcf632",
|
|
609
617
|
"pipeline/scripts/jira-search.sh": "afa2e552eec83bf7ab8bc1aa43b99c7480a82bfbfc808ce22c89df1b57e90563",
|
|
610
|
-
"pipeline/scripts/jira-wiki-escape.mjs": "
|
|
618
|
+
"pipeline/scripts/jira-wiki-escape.mjs": "655a170c1ea0d366a7eac9eb25fbf80ddcd19d1d3315bbf75b210908d14237f9",
|
|
611
619
|
"pipeline/scripts/keychain-save.sh": "7cc4d81acd88d84d710fa733d5c9604a0acb3d924738216ac7d34040bad7ae29",
|
|
612
620
|
"pipeline/scripts/keychain.py": "727f55c6e2b87c6078d4a54cc9470b16fc4610abb3a24c60fdd226ae0bf10391",
|
|
613
621
|
"pipeline/scripts/launch-request.mjs": "826c5ec100cd7def4d55c94894582959c1ce325ffc9527e4b3fe43c89fdd8b10",
|
|
@@ -637,6 +645,7 @@
|
|
|
637
645
|
"pipeline/scripts/plan-complexity.mjs": "ac8e4ad857cabc80fe4051bec84490bb91bfdf75d61cfdad93e315d0965f04b8",
|
|
638
646
|
"pipeline/scripts/plan-coverage-gate.mjs": "1a83bc52584438a9bd5cba96d2ddefed92a6a317d30ee695e67ef6c00b93e5a8",
|
|
639
647
|
"pipeline/scripts/plan-critique-gate.mjs": "b139394e5f16d11e4997d0bb0b08529f439dbd7fad39781ef4c2475247d8fa97",
|
|
648
|
+
"pipeline/scripts/plan-remote-links.mjs": "81673a25b9b9f19edd15ebd1e198552b658a7ec6d138658ec4e6e5b58213bb3a",
|
|
640
649
|
"pipeline/scripts/plugin-refresh.sh": "687a33199ad963616ab537e32210ec8c967e76ecc42f494ee8a1dc9fe947fc30",
|
|
641
650
|
"pipeline/scripts/pr-request.mjs": "e6f4ded2366c6599bb345b3011ecc771e13b8a1561afa4c9a50bca4edff17456",
|
|
642
651
|
"pipeline/scripts/pr-timeline.mjs": "6a12df12a72f3440796569d3264edb0b3e105be6e4f2e26e958a5a0da340d05c",
|
|
@@ -651,6 +660,8 @@
|
|
|
651
660
|
"pipeline/scripts/release-notes.mjs": "05430926cf679534978bcc79c160a6787aaf04831b8b8489d8bbc9fa343a14af",
|
|
652
661
|
"pipeline/scripts/render-agent-log-cost.sh": "6c58c1f5754ff5754485a0c1b66f4cd713575d2e8ebb1630aedf2f87fe34ef4d",
|
|
653
662
|
"pipeline/scripts/render-cost-summary.sh": "ce9647332ab9a3e518af98f52a6fc70baab9fd3c09ec5f9e85bae2d67078a5e3",
|
|
663
|
+
"pipeline/scripts/render-flow-run.mjs": "817ee3b73c41e088e9fb439e5c90970f7697b963f6c895a994c4774d30f8bab2",
|
|
664
|
+
"pipeline/scripts/render-jira-evidence.mjs": "a7bb663ef688ef9bb6e85995089c10b9faa5a9a621c5430ff7925d761571f3cb",
|
|
654
665
|
"pipeline/scripts/render-work-summary.sh": "ee4db04ebc145cc2fc7fa9a533d42b7da4da191710ef67c883502ca83b2aa67c",
|
|
655
666
|
"pipeline/scripts/repo-map.mjs": "175dcaeb548e8a018ad36cf661f3bdcb9340d32439fd4d92918fd6b3ab175730",
|
|
656
667
|
"pipeline/scripts/repo-profile.mjs": "5f0cf90c59accdb0bb763fab9512e271e3cc4c8bc930ece137d94baa5c8e08d9",
|
|
@@ -724,7 +735,7 @@
|
|
|
724
735
|
"pipeline/scripts/worktrees.mjs": "90dfd09b70fffe9b56c331a4ae2692cc248f4898f4ee6aee4239ef0b20888a90",
|
|
725
736
|
"pipeline/scripts/write-state.mjs": "e1198bf970eace07d3eff22b394808a526e473df65d3d58aa2d5a12cfdac8b49",
|
|
726
737
|
"pipeline/scripts/write-store-config.mjs": "b994a061f6febb2ca3d396074d8b51d2c1c1f991d3072d321703380da3639a56",
|
|
727
|
-
"pipeline/skills/.skill-manifest.json": "
|
|
738
|
+
"pipeline/skills/.skill-manifest.json": "a69acae761b7293cac14475e0f403f5d2c39a15e767018e473eb3ecbe4b61cce",
|
|
728
739
|
"pipeline/skills/.skills-index.json": "bfb04a72333aec2c25e21c8edce4a76e2128e5e7f1e88b0cd780e7f1cc6bf370",
|
|
729
740
|
"pipeline/skills/shared/README.md": "47f5c77556bf1676857fe6a803fc5c85da5cd32e1b0332a6f3728b6da610cc58",
|
|
730
741
|
"pipeline/skills/shared/core/apple-archive-compliance/SKILL.md": "7239fef717ea45b79276bfcc2c3903acd57950b6e00dd6a2a66399c4b09cbd51",
|
|
@@ -740,9 +751,9 @@
|
|
|
740
751
|
"pipeline/skills/shared/core/multi-agent-autopilot/SKILL.md": "a9731771fbc1f45260f214f069b976eff16e7b25e2f1375b0d9a213575271bc6",
|
|
741
752
|
"pipeline/skills/shared/core/multi-agent-bug-bash/SKILL.md": "a44ad2520ef24444b68d9040519f82498abda3ebb6467890bb6b5e1460299400",
|
|
742
753
|
"pipeline/skills/shared/core/multi-agent-build-optimize/SKILL.md": "8534891d1198597a0893d131e6b944d15443f62b24cb5584c486a235845fd281",
|
|
743
|
-
"pipeline/skills/shared/core/multi-agent-channels/SKILL.md": "
|
|
754
|
+
"pipeline/skills/shared/core/multi-agent-channels/SKILL.md": "b55e8461a1bcdc1b4b88c42e086f599fccda2a89d7f56a29ac11e5ebc12a3623",
|
|
744
755
|
"pipeline/skills/shared/core/multi-agent-complaint-analysis/SKILL.md": "dd30708491303902aa8629130809e9601c2096dc12aa9fc671f798142cea3485",
|
|
745
|
-
"pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md": "
|
|
756
|
+
"pipeline/skills/shared/core/multi-agent-create-jira/SKILL.md": "15efd1a0c661f848c2afa427015cd6c31e9f6680900111a4ab1a2e34ad705e81",
|
|
746
757
|
"pipeline/skills/shared/core/multi-agent-design-check/SKILL.md": "8888744fa52e935f53db9a1068e1b18c636b6c9d55b084dabfc19b9ae68bf6f8",
|
|
747
758
|
"pipeline/skills/shared/core/multi-agent-diff-explain/SKILL.md": "e0ccaabe77d242f26aca9fa3010e02adc4edd07eeb55230396300caefffe91d2",
|
|
748
759
|
"pipeline/skills/shared/core/multi-agent-doctor/SKILL.md": "2f6222cdef9c6b2b4e2e330ba0acee33ab0fb797029bb16c50bbb244be5fcbe6",
|
|
@@ -796,7 +807,7 @@
|
|
|
796
807
|
"pipeline/skills/shared/core/multi-agent-testflight-validation/SKILL.md": "b6c360c330ef0094cd7e7d9624e89624446b048951e43a180766bbe67d1b725c",
|
|
797
808
|
"pipeline/skills/shared/core/multi-agent-uninstall/SKILL.md": "9dccf78ffc2fb014d83f67d683d395f56f4fad8b5a36b9aa84e6cbd075b58818",
|
|
798
809
|
"pipeline/skills/shared/core/multi-agent-update/SKILL.md": "2f9e224e240e1c9053a59066678f869ae36f18c088482488f3bda8fd207148ea",
|
|
799
|
-
"pipeline/skills/shared/core/multi-agent/SKILL.md": "
|
|
810
|
+
"pipeline/skills/shared/core/multi-agent/SKILL.md": "079b49a1981c63d90798089a343b7f324571c4f7cc6ad3fb757e82719c35eb0a",
|
|
800
811
|
"pipeline/skills/shared/external/NOTICE-avdlee-swiftui-agent-skill.md": "400842e4653f038fad22509fe3f3d152151120758f5f9b170e6dba59afaf4a48",
|
|
801
812
|
"pipeline/skills/shared/external/NOTICE-dimillian-skills.md": "f9c3d783fd3563418c18291b90899251e890fd3fa8ee353c8c1fbbe61078526e",
|
|
802
813
|
"pipeline/skills/shared/external/NOTICE-paul-hudson-skills.md": "bca5fe8779df70fb0f234483d65ff3562c67521e719b69b22aac260803b75244",
|
|
@@ -1001,7 +1012,7 @@
|
|
|
1001
1012
|
"pipeline/skills/shared/external/ios-iphone-duo/references/api-map.md": "ec7d0b3dab323db1951c2b5319691f611466012b970823333a233e33c2a338d4",
|
|
1002
1013
|
"pipeline/skills/shared/external/ios-iphone-duo/references/fixed-assumptions.md": "4a3e52a72b48851adc43ec702c4dbbc9d9d313a7b56409553406885b5606fdab",
|
|
1003
1014
|
"pipeline/skills/shared/external/ios-iphone-duo/references/poses-and-panes.md": "f06bd8689cf793c239125327f4ec74f234c49beda277467cdebc7366ff76909f",
|
|
1004
|
-
"pipeline/skills/shared/external/ios-localization/SKILL.md": "
|
|
1015
|
+
"pipeline/skills/shared/external/ios-localization/SKILL.md": "eb1e0dc8f68d4d6c29af6562186060f265ce4fadad633638d18b9aee098bfe4a",
|
|
1005
1016
|
"pipeline/skills/shared/external/ios-localization/evals/evals.json": "f80b7a9d9a4a262c6df824ba8c4bf1a762d98d0a12501bead04e8cd6a016cc6e",
|
|
1006
1017
|
"pipeline/skills/shared/external/ios-localization/references/formatstyle-locale.md": "3b9aa4a911625a5b246c728d5afe6ec52701d362980de528c554b25b4801a3e8",
|
|
1007
1018
|
"pipeline/skills/shared/external/ios-localization/references/string-catalogs.md": "6e103989d396c43ab3c0e4b2d5df6da34ba6b2d33fae649d84ec4f38f5811ace",
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mmerterden/multi-agent-pipeline",
|
|
3
|
-
"version": "20.
|
|
3
|
+
"version": "20.27.0",
|
|
4
4
|
"description": "6-phase AI development pipeline with full orchestration on Claude Code, Copilot CLI and Codex CLI. Analysis, planning, TDD, CLI-aware parallel review with consensus surfacing + Fable triage, default-FAIL evidence gates, secret + intent guards, per-phase cost ledger, persistent learnings memory, wiki generation, commit automation. Token-preserving uninstall.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"main": "index.js",
|
|
@@ -116,10 +116,10 @@
|
|
|
116
116
|
"ajv": "^8.20.0",
|
|
117
117
|
"ajv-formats": "^3.0.1",
|
|
118
118
|
"c8": "^12.0.0",
|
|
119
|
-
"eslint": "^10.
|
|
119
|
+
"eslint": "^10.12.0",
|
|
120
120
|
"eslint-config-prettier": "^10.1.8",
|
|
121
|
-
"eslint-plugin-n": "^18.
|
|
122
|
-
"prettier": "^3.9.
|
|
123
|
-
"publint": "0.3.
|
|
121
|
+
"eslint-plugin-n": "^18.4.1",
|
|
122
|
+
"prettier": "^3.9.10",
|
|
123
|
+
"publint": "0.3.25"
|
|
124
124
|
}
|
|
125
125
|
}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
---
|
|
2
2
|
description: "Multi-channel reporter - Jira/Confluence/Wiki/PR description/Board status. Multi-select channels + content, humanizer pass, reviewer-preserving Bitbucket PR PUT, GitHub Projects v2 board status move. Phase 5 delegates to this skill; users can invoke post-hoc by Jira ID / PR URL / branch."
|
|
3
3
|
description-tr: "Çok kanallı raporlayıcı - Jira/Confluence/Wiki/PR açıklaması/Board durumu. Çoklu kanal + içerik seçimi, humanizer geçişi, reviewer'ı koruyan Bitbucket PR PUT, GitHub Projects v2 board durum taşıma. Faz 5 bu skill'e delege eder; Jira ID / PR URL / branch ile sonradan da çağrılabilir."
|
|
4
|
-
argument-hint: '[Jira-id | PR-url | #N | Jira-url] [--channels pr,jira,confluence,wiki,board] [--content normal,technical,test,auto-diff,note] [--message "..."] [--message-file path] [--board-status <key>] [--dry-run] [--append] [--ready]'
|
|
5
|
-
parameters: [{"name":"target","kind":"text"},{"name":"--channels","kind":"enum","repeat":true,"enum":["pr","jira","confluence","wiki","board"]},{"name":"--content","kind":"enum","repeat":true,"enum":["normal","technical","test","auto-diff","note"]},{"name":"--message","kind":"text"},{"name":"--message-file","kind":"path"},{"name":"--board-status","kind":"text"},{"name":"--dry-run","kind":"flag"},{"name":"--append","kind":"flag"},{"name":"--ready","kind":"flag"}]
|
|
4
|
+
argument-hint: '[Jira-id | PR-url | #N | Jira-url] [--channels pr,jira,confluence,wiki,board] [--content normal,technical,test,auto-diff,note,test-run] [--flow-run <runId>] [--message "..."] [--message-file path] [--board-status <key>] [--dry-run] [--append] [--ready]'
|
|
5
|
+
parameters: [{"name":"target","kind":"text"},{"name":"--channels","kind":"enum","repeat":true,"enum":["pr","jira","confluence","wiki","board"]},{"name":"--content","kind":"enum","repeat":true,"enum":["normal","technical","test","auto-diff","note","test-run"]},{"name":"--flow-run","kind":"text"},{"name":"--message","kind":"text"},{"name":"--message-file","kind":"path"},{"name":"--board-status","kind":"text"},{"name":"--dry-run","kind":"flag"},{"name":"--append","kind":"flag"},{"name":"--ready","kind":"flag"}]
|
|
6
6
|
gui: form
|
|
7
7
|
destructive: false
|
|
8
8
|
confirm: none
|
|
@@ -11,7 +11,7 @@ allowed-tools: Read, Write, Edit, Bash, Grep, WebFetch, AskUserQuestion
|
|
|
11
11
|
|
|
12
12
|
# /multi-agent channels - Multi-Channel Reporter
|
|
13
13
|
|
|
14
|
-
> **TLDR** - Single entry point for posting task reports to external channels.
|
|
14
|
+
> **TLDR** - Single entry point for posting task reports to external channels. Jira, Confluence, Wiki (component-only), PR description. Multi-select channels × content. Phase 5 of the pipeline delegates to this command; users can also invoke it post-hoc by Jira ID / PR URL / branch.
|
|
15
15
|
|
|
16
16
|
**Claude Code invocation:** `/multi-agent:channels <target>`
|
|
17
17
|
**Copilot CLI invocation:** `multi-agent-channels <target>` (top-level command, dash-separated per Copilot no-namespace convention)
|
|
@@ -97,7 +97,7 @@ When the preview renders:
|
|
|
97
97
|
When the preview does NOT render (no state, or pref explicitly off at global level with no override):
|
|
98
98
|
- Skip 3a silently, go straight to the channels picker. The workSummary row in 3b stays at its pref default (`false`).
|
|
99
99
|
|
|
100
|
-
After the preview prints, 3b renders the two pickers: **Channels** (PR description, Jira comment, Confluence page, Wiki, Board; each unavailable one greyed with its reason) and **Content** (normal analysis, technical analysis, test scenarios, PR auto-diff, manual note, cost summary, work summary).
|
|
100
|
+
After the preview prints, 3b renders the two pickers: **Channels** (PR description, Jira comment, Confluence page, Wiki, Board; each unavailable one greyed with its reason) and **Content** (normal analysis, technical analysis, test scenarios, test run, PR auto-diff, manual note, cost summary, work summary).
|
|
101
101
|
|
|
102
102
|
**Why auto-tick:** the user just saw the summary and is most likely sending it; the explicit pref still wins.
|
|
103
103
|
|
|
@@ -111,7 +111,7 @@ After the preview prints, 3b renders the two pickers: **Channels** (PR descripti
|
|
|
111
111
|
- "Normal analiz" + "Test senaryoları" unselectable if no pipeline log found. Reason: `"(no pipeline log for PROJ-12345)"`.
|
|
112
112
|
- "Teknik analiz" unselectable if no Phase 1 planning log AND no PR diff available. Reason: `"(no technical source - need Phase 1 plan or PR diff)"`.
|
|
113
113
|
- "Auto-diff" unselectable if no PR found. Reason: `"(no PR linked to this target)"`.
|
|
114
|
-
- "Manuel not" always available.
|
|
114
|
+
- "Manuel not" always available. "Test Koşumu (Xray)": `channels/test-run.md`.
|
|
115
115
|
- "Cost özeti" unselectable if `phase-tracker.sh cost total` prints `-` (no priced token tallies; there is no `status` action) AND no `otel-spans.jsonl` exists for the task. Reason: `"(no tracker data - set MULTI_AGENT_OTEL_SPANS=1 or enable token tracking)"`.
|
|
116
116
|
- "Yapılan iş özeti" unselectable if no `agent-state.json` exists for the task (post-hoc call with `--branch` + `--base-branch` flags restores partial availability). Reason: `"(no agent-state.json for {taskId})"`. **Auto-ticked** when Step 3a preview was shown - user can still uncheck before confirming the menu.
|
|
117
117
|
|
|
@@ -137,10 +137,8 @@ For each selected **content** source, produce one section body. Each section run
|
|
|
137
137
|
ticket and by whoever tests it, so its comment carries the four sections
|
|
138
138
|
`channels/jira.md` fixes - `summary` (`Geliştirme Özeti`), `test_scenarios`
|
|
139
139
|
(`Test Senaryoları`), `impact` (`Etki Analizi`) and `context_refs`
|
|
140
|
-
(`Bağlantılar`) - and nothing else. Technical sections go to the PR and to
|
|
141
|
-
Confluence, where the reader is a code reviewer.
|
|
142
|
-
explained a hash-table mutation across three paragraphs of class names; it was
|
|
143
|
-
correct, and it was the wrong document. When `jira` is a selected channel, drop
|
|
140
|
+
(`Bağlantılar`), plus `test_run` when selected - and nothing else. Technical sections go to the PR and to
|
|
141
|
+
Confluence, where the reader is a code reviewer. When `jira` is a selected channel, drop
|
|
144
142
|
the technical sections from its body rather than converting them: the PR link on
|
|
145
143
|
line 1 is how a Jira reader reaches the detail.
|
|
146
144
|
|
|
@@ -154,6 +152,7 @@ lead reads before deciding how wide to test.
|
|
|
154
152
|
| Normal analiz | `### Analysis` - impact summary from Phase 1, risks from Phase 4 (pipeline-log source, high-level only) |
|
|
155
153
|
| Teknik analiz | `### Technical Details` - Changes (what/why per file group), Architecture (structural decisions, pattern changes), Dependencies (new imports/frameworks/packages). Source: Phase 1 planning + Phase 2 dev log + `git diff --stat`. **PR and Confluence only** - never rendered into a Jira comment. |
|
|
156
154
|
| Test senaryoları | `### Test Scenarios` - precondition / steps / expected table (4-8 rows), user perspective |
|
|
155
|
+
| Test Koşumu (Xray) | `### Test Koşumu` - Xray Test Execution of the task's UI scenario run (`channels/test-run.md`) |
|
|
157
156
|
| Auto-diff | Old enrich Output Template verbatim - Root Cause / Solution / Changed Files / Test Scenarios |
|
|
158
157
|
| Manuel not | `### Notes` - user-provided paragraph, or LLM-split into subsections if `--message` is plain text and long |
|
|
159
158
|
| Cost özeti | `### Cost Summary` - per-phase token tally + est. USD table. Source: `phase-tracker.sh` phase status + optional OTel spans. See "Cost summary generation" below. |
|
|
@@ -161,7 +160,7 @@ lead reads before deciding how wide to test.
|
|
|
161
160
|
|
|
162
161
|
**The content options are sources, not the body's shape.** Which sections a PR
|
|
163
162
|
body carries and in what order is fixed by `channels/pr.md` (`summary` →
|
|
164
|
-
`technical` → `architecture` → `impact` → `test_scenarios` → `visuals` → `risk`
|
|
163
|
+
`technical` → `architecture` → `impact` → `test_scenarios` → `test_run` → `visuals` → `risk`
|
|
165
164
|
→ `dependencies` → `build` → `related`); the options below choose what gets
|
|
166
165
|
gathered to fill them. A content option left unselected means a section has no
|
|
167
166
|
source, not that the section may be reordered or renamed.
|
|
@@ -202,6 +201,8 @@ source, not that the section may be reordered or renamed.
|
|
|
202
201
|
1. {step}
|
|
203
202
|
2. **Expected:** {what should still behave as before}
|
|
204
203
|
|
|
204
|
+
### Test Koşumu ← if "Test Koşumu (Xray)" selected
|
|
205
|
+
|
|
205
206
|
### Notes ← if "Manuel not" selected
|
|
206
207
|
{user message}
|
|
207
208
|
|
|
@@ -241,7 +242,7 @@ If no cached report exists, skip silently - this is augmentation, not a gate.
|
|
|
241
242
|
|
|
242
243
|
**Work summary generation:**
|
|
243
244
|
|
|
244
|
-
Emitted only when `reportContent.workSummary === true` and at least one of (`agent-state.json`, `--branch` flag) is available. The shell adapter is `$HOME/.claude/scripts/render-work-summary.sh <taskId>`, and that script's own header is the spec for what it emits - task header, scope delivered, changed files, review outcome, phase strip - including the caps and the hidden-when-empty rules.
|
|
245
|
+
Emitted only when `reportContent.workSummary === true` and at least one of (`agent-state.json`, `--branch` flag) is available. The shell adapter is `$HOME/.claude/scripts/render-work-summary.sh <taskId>`, and that script's own header is the spec for what it emits - task header, scope delivered, changed files, review outcome, phase strip - including the caps and the hidden-when-empty rules. Exit 2 means the state was unreadable: skip the section, do not substitute a hand-written one.
|
|
245
246
|
|
|
246
247
|
**Output template:**
|
|
247
248
|
|
|
@@ -303,11 +304,11 @@ Skipped in exactly two cases:
|
|
|
303
304
|
| Case | Why |
|
|
304
305
|
|---|---|
|
|
305
306
|
| Autopilot (`state.autopilot === true` or `MULTI_AGENT_AUTOPILOT=1`), attended | Explicit consent for side-effect creation: posts directly with prefs/flag selections |
|
|
306
|
-
| `--dry-run` |
|
|
307
|
+
| `--dry-run` | Prints without posting |
|
|
307
308
|
|
|
308
309
|
**Preview render** (one block per selected channel, final body after humanizer - shown in readable Markdown, channel-specific markup conversion happens after approval).
|
|
309
310
|
|
|
310
|
-
Conversion is per-channel
|
|
311
|
+
Conversion is per-channel; two channels have none:
|
|
311
312
|
|
|
312
313
|
| Channel | Conversion after approval | Table |
|
|
313
314
|
|---|---|---|
|
|
@@ -316,7 +317,7 @@ Conversion is per-channel and two of the four channels have none. Do not reach f
|
|
|
316
317
|
| Jira comment | markdown → Jira wiki markup | `channels/jira.md` "Wiki markup conversion" |
|
|
317
318
|
| Confluence page | markdown → storage format | `channels/confluence.md` "Body conversion" |
|
|
318
319
|
|
|
319
|
-
|
|
320
|
+
The Jira table is the only *text* markup table in the doc set and never applies to the PR body: `h2.`, `{{code}}` or `#`-numbered lists render there as raw wiki markup.
|
|
320
321
|
|
|
321
322
|
```
|
|
322
323
|
── PR description ({repoName} #{prNumber}, replace) ─────────
|
|
@@ -327,7 +328,7 @@ Applying the Jira table to the PR body is the recurring failure of this step: it
|
|
|
327
328
|
{body}
|
|
328
329
|
```
|
|
329
330
|
|
|
330
|
-
Secondary artifacts ride along as one-line intents at the bottom of the preview: Wiki page list, wiki → Jira triad comment (when Wiki is selected and the triad is active per `$HOME/.claude/multi-agent-refs/issue-jira-triad.md`), Board status move (`{from} → {to}`), GitHub issue comment + Progress-flag sync (Phase 5 Step 1.5 - same gate, see `$HOME/.claude/multi-agent-refs/phases/phase-5-report.md`).
|
|
331
|
+
Secondary artifacts ride along as one-line intents at the bottom of the preview: Wiki page list, wiki → Jira triad comment (when Wiki is selected and the triad is active per `$HOME/.claude/multi-agent-refs/issue-jira-triad.md`), Board status move (`{from} → {to}`), GitHub issue comment + Progress-flag sync (Phase 5 Step 1.5 - same gate, see `$HOME/.claude/multi-agent-refs/phases/phase-5-report.md`), test-run candidates to untick (`channels/test-run.md`), the Jira body's `--measure` (`render-jira-evidence.mjs`).
|
|
331
332
|
|
|
332
333
|
**Then a single AskUserQuestion** (`picker-contract.md`; `question`/`label`/`description` in `outputLanguage`, `header` English):
|
|
333
334
|
|
|
@@ -352,7 +353,7 @@ Aggregated Markdown from Step 5 → PR description. GitHub uses `gh pr edit --bo
|
|
|
352
353
|
Full contract: [`$HOME/.claude/multi-agent-refs/channels/pr.md`]($HOME/.claude/multi-agent-refs/channels/pr.md) - Bitbucket payload assembly snippet, version-mismatch retry, `--ready` promotion, multi-repo cross-link block.
|
|
353
354
|
|
|
354
355
|
#### Adapter: Jira comment
|
|
355
|
-
Sections: `summary` + `test_scenarios` + `impact` + `context_refs` only - the technical ones go to the PR and Confluence (`channels/jira.md` fixes the order). The PR URL goes on line 1, above the first heading. The wiki-markup conversion table lives in that same ref and only there
|
|
356
|
+
Sections: `summary` + `test_scenarios` + `impact` + `context_refs` only - the technical ones go to the PR and Confluence (`channels/jira.md` fixes the order). The PR URL goes on line 1, above the first heading. The wiki-markup conversion table lives in that same ref and only there.
|
|
356
357
|
|
|
357
358
|
Then post it - do not assemble the request:
|
|
358
359
|
|
|
@@ -360,10 +361,12 @@ Then post it - do not assemble the request:
|
|
|
360
361
|
bash "$HOME/.claude/lib/jira-publish.sh" --issue "$JIRA_ID" --body-file "$F" --target comment
|
|
361
362
|
```
|
|
362
363
|
|
|
363
|
-
The publisher escapes every body (Jira renders `:)` `(x)` `(!)` `(/)` as emoticon images, and a Swift selector like `login(source:input:)` ends in `:)`) and resolves the token from `keychainMapping.jira` without putting it on argv.
|
|
364
|
+
The publisher escapes every body (Jira renders `:)` `(x)` `(!)` `(/)` as emoticon images, and a Swift selector like `login(source:input:)` ends in `:)`) and resolves the token from `keychainMapping.jira` without putting it on argv.
|
|
364
365
|
|
|
365
366
|
Full contract: [`$HOME/.claude/multi-agent-refs/channels/jira.md`]($HOME/.claude/multi-agent-refs/channels/jira.md) - full conversion table, multi-repo PR-list prepend, Wiki→Jira triad interaction.
|
|
366
367
|
|
|
368
|
+
**Issue family** (`state.jiraFamily` set): instead, `bash $HOME/.claude/lib/jira-family-write.sh plan --state "$STATE_FILE" --dev-body "$F"`, the Step 6 preview as one multi-select under `plan.confirm`, then `apply --state "$STATE_FILE"`: `$HOME/.claude/multi-agent-refs/features/jira-family.md`.
|
|
369
|
+
|
|
367
370
|
#### Adapter: Confluence page
|
|
368
371
|
Token from `keychainMapping.confluence`; missing/expired triggers the inline Save Flow from `setup.md`. Parent page picked from `prefs.projects[<project>].confluenceUrls` recents (LRU, max 5) or paste new URL. Auto-suggest title `"{jiraId} - {taskTitle}"`. Body converted to Confluence storage format (`<h3>`, `<table>`, `<ac:structured-macro>` code blocks). POST `/rest/api/content`; URL saved back to recents.
|
|
369
372
|
|
|
@@ -404,7 +407,8 @@ Persist selections to `prefs.global.reportChannels` + `prefs.global.reportConten
|
|
|
404
407
|
| Flag | Effect |
|
|
405
408
|
|------|--------|
|
|
406
409
|
| `--channels pr,jira,confluence,wiki` | Non-interactive channel selection (comma list). Skips channel menu. |
|
|
407
|
-
| `--content normal,technical,test,auto-diff,note` | Non-interactive content selection. Skips content menu. |
|
|
410
|
+
| `--content normal,technical,test,auto-diff,note,test-run` | Non-interactive content selection. Skips content menu. |
|
|
411
|
+
| `--flow-run <runId>[,<runId>...]` | Runs for the test run block (`channels/test-run.md`). |
|
|
408
412
|
| `--message "..."` | Manual mode - use user text as source, no diff read. Forces `content=note`. |
|
|
409
413
|
| `--message-file path` | Manual mode, long message from file. |
|
|
410
414
|
| `--append` | PR description: append instead of replace. |
|
|
@@ -446,7 +450,7 @@ Phase 5 invokes this command internally instead of running its own inline Jira/C
|
|
|
446
450
|
| Phase 5 | Progress tracker (sub-steps 1-3), agent-log finalization (step 4), knowledge+memory capture (step 5), telemetry emission |
|
|
447
451
|
| `channels` | All external delivery: PR description update, Jira comment, Confluence page, Wiki pages |
|
|
448
452
|
|
|
449
|
-
Phase 5 passes a runtime state bundle: `{jiraId, prUrl, remoteType, taskType, figmaConfig, agentState, pipelineLogPath}`. `channels` reads these directly, skips target-resolution Step 1.
|
|
453
|
+
Phase 5 passes a runtime state bundle: `{jiraId, prUrl, remoteType, taskType, figmaConfig, agentState, pipelineLogPath, flowRuns}`. `channels` reads these directly, skips target-resolution Step 1.
|
|
450
454
|
|
|
451
455
|
**Autopilot contract:** Phase 5 ALWAYS pauses at the channels menu (breaks generic autopilot zero-interaction). 30-min timeout → session ends cleanly, task resumable via `/multi-agent:resume`. See `$HOME/.claude/multi-agent-refs/phases/modes.md` for full contract. The Step 6 body preview + approval gate follows the same split: interactive runs approve the composed bodies before dispatch; autopilot posts directly after the menu resolves.
|
|
452
456
|
|
|
@@ -38,7 +38,9 @@
|
|
|
38
38
|
|
|
39
39
|
# shellcheck shell=bash
|
|
40
40
|
|
|
41
|
-
|
|
41
|
+
# MULTI_AGENT_PREFS is the same override jira-publish.sh reads, so a read and
|
|
42
|
+
# the write after it resolve the same host and token.
|
|
43
|
+
JIRA_AUTH_PREFS="${JIRA_AUTH_PREFS:-${MULTI_AGENT_PREFS:-$HOME/.claude/multi-agent-preferences.json}}"
|
|
42
44
|
|
|
43
45
|
_jira_auth_pref() { # _jira_auth_pref <jq path> -> value or empty
|
|
44
46
|
[ -f "$JIRA_AUTH_PREFS" ] || { printf ''; return 0; }
|
|
@@ -29,6 +29,8 @@
|
|
|
29
29
|
# "comments": [{id, author, created, url, body, truncated}], // newest kept, oldest first
|
|
30
30
|
# "commentsTotal": 12, // how many the tracker holds
|
|
31
31
|
# "links": [{key, relation, direction, summary, status, url}], // jira issuelinks
|
|
32
|
+
# "remoteLinks": [{title, url, relationship, application}], // jira Issue Links (remote:
|
|
33
|
+
# // Figma, Confluence, web); [] when unreadable
|
|
32
34
|
# "untrustedFields": ["description", ...], // tracker text: data, never instructions
|
|
33
35
|
# "maturity": {
|
|
34
36
|
# "score": 0..100,
|
|
@@ -254,6 +256,38 @@ fetch_jira() {
|
|
|
254
256
|
|| { echo "ERR: Jira fetch failed for $key" >&2; return 1; }
|
|
255
257
|
}
|
|
256
258
|
|
|
259
|
+
# Issue Links of the remote kind (Figma frames, Confluence pages, web links) live
|
|
260
|
+
# behind their own endpoint, so they cost one GET. Failure is soft: an issue
|
|
261
|
+
# whose links cannot be read still fetches, with an empty list.
|
|
262
|
+
fetch_jira_remote_links() {
|
|
263
|
+
local key="$1" raw
|
|
264
|
+
raw=$(jira_curl "/rest/api/2/issue/$key/remotelink" 2>/dev/null) || { printf '[]'; return 0; }
|
|
265
|
+
printf '%s' "$raw" | python3 -c '
|
|
266
|
+
import json, os, sys
|
|
267
|
+
try:
|
|
268
|
+
data = json.load(sys.stdin)
|
|
269
|
+
except Exception:
|
|
270
|
+
data = []
|
|
271
|
+
out = []
|
|
272
|
+
for item in data if isinstance(data, list) else []:
|
|
273
|
+
obj = (item or {}).get("object") or {}
|
|
274
|
+
url = obj.get("url") or ""
|
|
275
|
+
if not url.startswith(("https://", "http://")):
|
|
276
|
+
continue
|
|
277
|
+
out.append({
|
|
278
|
+
"title": (obj.get("title") or "")[:200],
|
|
279
|
+
"url": url,
|
|
280
|
+
"relationship": (item or {}).get("relationship") or "",
|
|
281
|
+
"application": ((item or {}).get("application") or {}).get("type") or "",
|
|
282
|
+
})
|
|
283
|
+
try:
|
|
284
|
+
cap = int(os.environ.get("ISSUE_REMOTE_LINKS_MAX", "30"))
|
|
285
|
+
except ValueError:
|
|
286
|
+
cap = 30
|
|
287
|
+
print(json.dumps(out[:max(cap, 0)], ensure_ascii=False))
|
|
288
|
+
' 2>/dev/null || printf '[]'
|
|
289
|
+
}
|
|
290
|
+
|
|
257
291
|
# One request returns every sibling WITH its description. The issue's own
|
|
258
292
|
# `subtasks` field lists ITS children, not its siblings, and the parent's
|
|
259
293
|
# lists siblings without descriptions - either shape costs one GET each.
|
|
@@ -330,6 +364,7 @@ try:
|
|
|
330
364
|
except (TypeError, ValueError):
|
|
331
365
|
comments_total = len(comments)
|
|
332
366
|
links = _json_field("links", list) or []
|
|
367
|
+
remote_links = _json_field("remoteLinks", list) or []
|
|
333
368
|
|
|
334
369
|
descriptor = {
|
|
335
370
|
"kind": fields.get("kind"),
|
|
@@ -353,7 +388,8 @@ descriptor = {
|
|
|
353
388
|
"comments": comments,
|
|
354
389
|
"commentsTotal": comments_total,
|
|
355
390
|
"links": links,
|
|
356
|
-
"
|
|
391
|
+
"remoteLinks": remote_links,
|
|
392
|
+
"untrustedFields": ["title", "description", "parentDescription", "relatedIssues", "comments", "links", "remoteLinks"],
|
|
357
393
|
}
|
|
358
394
|
extra = {}
|
|
359
395
|
if fields.get("needsRepoPicker"):
|
|
@@ -657,7 +693,8 @@ sys.stdout.write(json.dumps(out[:cap], ensure_ascii=False))
|
|
|
657
693
|
"url=https://$JIRA_HOST/browse/$KEY" "branchHint=$branch" \
|
|
658
694
|
"priority=$priority" "resolution=$resolution" "fixVersions=$fixversions" \
|
|
659
695
|
"parentKey=$parentkey" "parentDescription=$parentdesc" \
|
|
660
|
-
"relatedIssues=$relatedjson" "comments=$commentsjson" "links=$linksjson"
|
|
696
|
+
"relatedIssues=$relatedjson" "comments=$commentsjson" "links=$linksjson" \
|
|
697
|
+
"remoteLinks=$(fetch_jira_remote_links "$KEY")"
|
|
661
698
|
;;
|
|
662
699
|
|
|
663
700
|
jira-url)
|
|
@@ -804,6 +841,7 @@ out = {
|
|
|
804
841
|
"relatedIssues": json.dumps(d.get("relatedIssues") or [], ensure_ascii=False),
|
|
805
842
|
"comments": json.dumps({"items": comments, "total": d.get("commentsTotal") or len(comments)}, ensure_ascii=False),
|
|
806
843
|
"links": json.dumps(d.get("links") or [], ensure_ascii=False),
|
|
844
|
+
"remoteLinks": json.dumps(d.get("remoteLinks") or [], ensure_ascii=False),
|
|
807
845
|
}
|
|
808
846
|
if d.get("needsRepoPicker"):
|
|
809
847
|
out["needsRepoPicker"] = "1"
|