@unbrained/pm-cli 2026.6.24 → 2026.7.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/AGENTS.md +2 -0
- package/CHANGELOG.md +113 -1
- package/CONTRIBUTING.md +30 -0
- package/README.md +16 -3
- package/dist/cli/bootstrap-args.js +89 -79
- package/dist/cli/bootstrap-args.js.map +1 -1
- package/dist/cli/commander-usage.js +3 -3
- package/dist/cli/commander-usage.js.map +1 -1
- package/dist/cli/commands/aggregate.js +8 -7
- package/dist/cli/commands/aggregate.js.map +1 -1
- package/dist/cli/commands/calendar.js +63 -62
- package/dist/cli/commands/calendar.js.map +1 -1
- package/dist/cli/commands/close.d.ts +2 -4
- package/dist/cli/commands/close.js +5 -17
- package/dist/cli/commands/close.js.map +1 -1
- package/dist/cli/commands/completion.js +158 -9
- package/dist/cli/commands/completion.js.map +1 -1
- package/dist/cli/commands/config.d.ts +1 -1
- package/dist/cli/commands/config.js +2 -2
- package/dist/cli/commands/config.js.map +1 -1
- package/dist/cli/commands/context.d.ts +31 -4
- package/dist/cli/commands/context.js +33 -10
- package/dist/cli/commands/context.js.map +1 -1
- package/dist/cli/commands/contracts.js +48 -8
- package/dist/cli/commands/contracts.js.map +1 -1
- package/dist/cli/commands/create.d.ts +1 -6
- package/dist/cli/commands/create.js +491 -587
- package/dist/cli/commands/create.js.map +1 -1
- package/dist/cli/commands/extension/bundled-catalog.js +59 -46
- package/dist/cli/commands/extension/bundled-catalog.js.map +1 -1
- package/dist/cli/commands/extension/describe.d.ts +15 -0
- package/dist/cli/commands/extension/describe.js +48 -2
- package/dist/cli/commands/extension/describe.js.map +1 -1
- package/dist/cli/commands/extension/doctor.js +129 -75
- package/dist/cli/commands/extension/doctor.js.map +1 -1
- package/dist/cli/commands/extension/install-sources.js +37 -7
- package/dist/cli/commands/extension/install-sources.js.map +1 -1
- package/dist/cli/commands/extension/managed-state.js +101 -57
- package/dist/cli/commands/extension/managed-state.js.map +1 -1
- package/dist/cli/commands/extension/scaffold.d.ts +38 -8
- package/dist/cli/commands/extension/scaffold.js +1956 -242
- package/dist/cli/commands/extension/scaffold.js.map +1 -1
- package/dist/cli/commands/extension.d.ts +28 -3
- package/dist/cli/commands/extension.js +1181 -880
- package/dist/cli/commands/extension.js.map +1 -1
- package/dist/cli/commands/index.d.ts +3 -1
- package/dist/cli/commands/index.js +5 -3
- package/dist/cli/commands/index.js.map +1 -1
- package/dist/cli/commands/item-filter-options.d.ts +63 -0
- package/dist/cli/commands/item-filter-options.js +10 -0
- package/dist/cli/commands/item-filter-options.js.map +1 -0
- package/dist/cli/commands/legacy-none-tokens.d.ts +14 -0
- package/dist/cli/commands/legacy-none-tokens.js +31 -2
- package/dist/cli/commands/legacy-none-tokens.js.map +1 -1
- package/dist/cli/commands/linked-artifacts.d.ts +7 -0
- package/dist/cli/commands/linked-artifacts.js +12 -2
- package/dist/cli/commands/linked-artifacts.js.map +1 -1
- package/dist/cli/commands/list-filter-shared.js +55 -48
- package/dist/cli/commands/list-filter-shared.js.map +1 -1
- package/dist/cli/commands/list.d.ts +16 -39
- package/dist/cli/commands/list.js +127 -118
- package/dist/cli/commands/list.js.map +1 -1
- package/dist/cli/commands/next.d.ts +98 -0
- package/dist/cli/commands/next.js +304 -0
- package/dist/cli/commands/next.js.map +1 -0
- package/dist/cli/commands/profile.d.ts +208 -0
- package/dist/cli/commands/profile.js +418 -0
- package/dist/cli/commands/profile.js.map +1 -0
- package/dist/cli/commands/repeatable-metadata-parsers.js +12 -13
- package/dist/cli/commands/repeatable-metadata-parsers.js.map +1 -1
- package/dist/cli/commands/schema.d.ts +7 -0
- package/dist/cli/commands/schema.js +9 -3
- package/dist/cli/commands/schema.js.map +1 -1
- package/dist/cli/commands/search.d.ts +2 -39
- package/dist/cli/commands/search.js +196 -172
- package/dist/cli/commands/search.js.map +1 -1
- package/dist/cli/commands/shared-unset-fields.d.ts +30 -0
- package/dist/cli/commands/shared-unset-fields.js +161 -0
- package/dist/cli/commands/shared-unset-fields.js.map +1 -0
- package/dist/cli/commands/stats.js +15 -3
- package/dist/cli/commands/stats.js.map +1 -1
- package/dist/cli/commands/test.js +115 -125
- package/dist/cli/commands/test.js.map +1 -1
- package/dist/cli/commands/update.d.ts +1 -6
- package/dist/cli/commands/update.js +37 -232
- package/dist/cli/commands/update.js.map +1 -1
- package/dist/cli/commands/validate.js +20 -5
- package/dist/cli/commands/validate.js.map +1 -1
- package/dist/cli/extension-command-options.js +48 -21
- package/dist/cli/extension-command-options.js.map +1 -1
- package/dist/cli/help-content.js +26 -2
- package/dist/cli/help-content.js.map +1 -1
- package/dist/cli/help-json-payload.js +3 -3
- package/dist/cli/help-json-payload.js.map +1 -1
- package/dist/cli/main.js +27 -12
- package/dist/cli/main.js.map +1 -1
- package/dist/cli/register-list-query.js +42 -3
- package/dist/cli/register-list-query.js.map +1 -1
- package/dist/cli/register-mutation.js +86 -2
- package/dist/cli/register-mutation.js.map +1 -1
- package/dist/cli/register-setup.js +67 -6
- package/dist/cli/register-setup.js.map +1 -1
- package/dist/cli/registration-helpers.d.ts +9 -1
- package/dist/cli/registration-helpers.js +149 -123
- package/dist/cli/registration-helpers.js.map +1 -1
- package/dist/cli-bundle/chunks/activity-AW6XVFH6.js +16 -0
- package/dist/cli-bundle/chunks/{activity-N7RVTLBQ.js → activity-DBLQVIP6.js} +9 -11
- package/dist/cli-bundle/chunks/{aggregate-63NWNIBR.js → aggregate-JTEF4BP7.js} +17 -18
- package/dist/cli-bundle/chunks/aggregate-JTEF4BP7.js.map +1 -0
- package/dist/cli-bundle/chunks/{aggregate-YHCYX2EV.js → aggregate-SDF7DUOD.js} +16 -17
- package/dist/cli-bundle/chunks/aggregate-SDF7DUOD.js.map +7 -0
- package/dist/cli-bundle/chunks/{append-VLQQDHMJ.js → append-LOVPGVPT.js} +8 -10
- package/dist/cli-bundle/chunks/{append-VLQQDHMJ.js.map → append-LOVPGVPT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{append-PUKREFV5.js → append-QCFJSDFL.js} +10 -12
- package/dist/cli-bundle/chunks/{append-PUKREFV5.js.map → append-QCFJSDFL.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-ABYCA5VX.js → chunk-22WKIL3H.js} +9 -11
- package/dist/cli-bundle/chunks/{chunk-ABYCA5VX.js.map → chunk-22WKIL3H.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-A66VYUOV.js → chunk-2466X6E4.js} +9 -11
- package/dist/cli-bundle/chunks/{chunk-A66VYUOV.js.map → chunk-2466X6E4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-F32L4HR6.js → chunk-27BXPBAY.js} +3 -3
- package/dist/cli-bundle/chunks/{schema-QO5I4FBL.js → chunk-2D4HATP2.js} +136 -66
- package/dist/cli-bundle/chunks/chunk-2D4HATP2.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-J7I4C5ZB.js → chunk-3J6JRJ3I.js} +153 -125
- package/dist/cli-bundle/chunks/chunk-3J6JRJ3I.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-OHDQNKJB.js → chunk-3K2M5OYU.js} +106 -34
- package/dist/cli-bundle/chunks/chunk-3K2M5OYU.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-XVYKWZNL.js → chunk-3S2KT7NG.js} +127 -127
- package/dist/cli-bundle/chunks/chunk-3S2KT7NG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-5BBEWX6C.js → chunk-3VGN2UWE.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-N5B6WZC5.js → chunk-3XZCOZ5J.js} +115 -123
- package/dist/cli-bundle/chunks/chunk-3XZCOZ5J.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-4A3BJ675.js +799 -0
- package/dist/cli-bundle/chunks/chunk-4A3BJ675.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js +87 -0
- package/dist/cli-bundle/chunks/chunk-4BU75MF4.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-HZF5RLKX.js → chunk-4DSGXSBL.js} +5 -7
- package/dist/cli-bundle/chunks/{chunk-HZF5RLKX.js.map → chunk-4DSGXSBL.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-JV27C7OZ.js → chunk-4DUVCVLZ.js} +4 -6
- package/dist/cli-bundle/chunks/{chunk-JV27C7OZ.js.map → chunk-4DUVCVLZ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-IAP5KYBQ.js → chunk-4XOIEKSD.js} +563 -506
- package/dist/cli-bundle/chunks/chunk-4XOIEKSD.js.map +1 -0
- package/dist/cli-bundle/chunks/{context-5LB7UGKE.js → chunk-55SNVXRQ.js} +79 -82
- package/dist/cli-bundle/chunks/chunk-55SNVXRQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-BFFO3AIB.js → chunk-5CGRF3L5.js} +128 -128
- package/dist/cli-bundle/chunks/chunk-5CGRF3L5.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-JKL6HRMV.js → chunk-5QFDBI4F.js} +1260 -1046
- package/dist/cli-bundle/chunks/chunk-5QFDBI4F.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-LU36E6GU.js → chunk-64HNBBFQ.js} +8 -12
- package/dist/cli-bundle/chunks/{chunk-LU36E6GU.js.map → chunk-64HNBBFQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-6AQZPVHQ.js +2444 -0
- package/dist/cli-bundle/chunks/chunk-6AQZPVHQ.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-7M2HAZEB.js +17 -0
- package/dist/cli-bundle/chunks/chunk-7M2HAZEB.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-VSAABFGQ.js → chunk-7R4QEMZZ.js} +1490 -734
- package/dist/cli-bundle/chunks/chunk-7R4QEMZZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-M6TUBOGW.js → chunk-A7FPBAQS.js} +19 -12
- package/dist/cli-bundle/chunks/chunk-A7FPBAQS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-GQYJEEFX.js → chunk-AVEE5EHK.js} +53 -54
- package/dist/cli-bundle/chunks/chunk-AVEE5EHK.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-FMWW2JDU.js → chunk-AXIDKKAT.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TIM4OD74.js → chunk-BDTISOSD.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-C4C3EJCJ.js → chunk-BHO33VBQ.js} +509 -363
- package/dist/cli-bundle/chunks/chunk-BHO33VBQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-6W3Y65PL.js → chunk-BZCEN4JA.js} +198 -177
- package/dist/cli-bundle/chunks/chunk-BZCEN4JA.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-RRP6D345.js → chunk-CF7RL6FR.js} +12 -16
- package/dist/cli-bundle/chunks/{chunk-RRP6D345.js.map → chunk-CF7RL6FR.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-HC2S36NB.js → chunk-CWFNTKQJ.js} +154 -126
- package/dist/cli-bundle/chunks/chunk-CWFNTKQJ.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-CZVISY5A.js +87 -0
- package/dist/cli-bundle/chunks/chunk-CZVISY5A.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-CZIFFMZI.js → chunk-DDPTYJIM.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-AYPQUFCX.js → chunk-EJUDVUYZ.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-EOGBMLCE.js → chunk-EVMTBV6V.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-RAWA3Y7O.js → chunk-FFMQB7WR.js} +199 -178
- package/dist/cli-bundle/chunks/chunk-FFMQB7WR.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-CG3KP6I5.js → chunk-G7I7DEZA.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-MEXZ5XUM.js → chunk-GJ326ZKX.js} +53 -54
- package/dist/cli-bundle/chunks/chunk-GJ326ZKX.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-HPPFYYOV.js +119 -0
- package/dist/cli-bundle/chunks/chunk-HPPFYYOV.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-OF7V47P3.js → chunk-HXTQJXWT.js} +2172 -2146
- package/dist/cli-bundle/chunks/chunk-HXTQJXWT.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-F4BNR2IN.js → chunk-HYTGA6GI.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-2WCYE3IF.js → chunk-HZZEHPRG.js} +2 -2
- package/dist/cli-bundle/chunks/chunk-IBMFIKVS.js +14 -0
- package/dist/cli-bundle/chunks/chunk-IBMFIKVS.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-YV2OSAMS.js → chunk-IJYK2T43.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-4XDGYFHL.js → chunk-IPYBJWTE.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-4XDGYFHL.js.map → chunk-IPYBJWTE.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-6EBNFQOR.js → chunk-IZBR4NRW.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-6EBNFQOR.js.map → chunk-IZBR4NRW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-VFJYVXHL.js → chunk-JLM7BHI7.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-VFJYVXHL.js.map → chunk-JLM7BHI7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-6EL7SW5C.js → chunk-JMP4E6D7.js} +114 -122
- package/dist/cli-bundle/chunks/chunk-JMP4E6D7.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-QOUOMPHO.js → chunk-JPECA746.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-KJZOSF7J.js → chunk-JSU5P7VS.js} +100 -35
- package/dist/cli-bundle/chunks/chunk-JSU5P7VS.js.map +1 -0
- package/dist/cli-bundle/chunks/{context-55VEOYI3.js → chunk-JWXRETDF.js} +79 -82
- package/dist/cli-bundle/chunks/chunk-JWXRETDF.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-OQ2E64FH.js → chunk-KNPEF7QG.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-3BKH2CL3.js → chunk-L5OEFZQG.js} +3 -3
- package/dist/cli-bundle/chunks/{chunk-DTABLLVE.js → chunk-LB6TP6MC.js} +5 -7
- package/dist/cli-bundle/chunks/{chunk-DTABLLVE.js.map → chunk-LB6TP6MC.js.map} +2 -2
- package/dist/cli-bundle/chunks/{chunk-TSI32UEL.js → chunk-MAUKX7JC.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-TSI32UEL.js.map → chunk-MAUKX7JC.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-SMXSDY7J.js → chunk-MDPEOIGN.js} +2221 -2172
- package/dist/cli-bundle/chunks/chunk-MDPEOIGN.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-5S4ZGDB2.js → chunk-N74UMG5H.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-IXAZI443.js → chunk-NFDPYAIP.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-SKC4UTRP.js → chunk-NKZAN7BD.js} +3 -3
- package/dist/cli-bundle/chunks/chunk-NOLPZMSV.js +116 -0
- package/dist/cli-bundle/chunks/chunk-NOLPZMSV.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-L7UXKP2I.js → chunk-NU2UEROZ.js} +1257 -1029
- package/dist/cli-bundle/chunks/chunk-NU2UEROZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-HBAEFWX3.js → chunk-NUHHPVVS.js} +65 -335
- package/dist/cli-bundle/chunks/chunk-NUHHPVVS.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-JPJDP4VU.js → chunk-NWMZWYYB.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-MWMHZOZZ.js → chunk-OGXLACHC.js} +10 -14
- package/dist/cli-bundle/chunks/{chunk-MWMHZOZZ.js.map → chunk-OGXLACHC.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-OKQ22KTH.js +379 -0
- package/dist/cli-bundle/chunks/chunk-OKQ22KTH.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KKX4Z2SE.js → chunk-OTUHB4HS.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-ZLWRPBOW.js → chunk-QCWF6IYD.js} +510 -364
- package/dist/cli-bundle/chunks/chunk-QCWF6IYD.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-PRVTGX64.js → chunk-RGEMWD6Q.js} +11 -23
- package/dist/cli-bundle/chunks/chunk-RGEMWD6Q.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-RH5ZBYFD.js +809 -0
- package/dist/cli-bundle/chunks/chunk-RH5ZBYFD.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-ALQKV6U7.js → chunk-RLDHZHQS.js} +12 -16
- package/dist/cli-bundle/chunks/{chunk-ALQKV6U7.js.map → chunk-RLDHZHQS.js.map} +1 -1
- package/dist/cli-bundle/chunks/{schema-C6QA367T.js → chunk-RMMQ74TG.js} +144 -67
- package/dist/cli-bundle/chunks/chunk-RMMQ74TG.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-EYPINTFR.js → chunk-RVUALSJF.js} +1516 -753
- package/dist/cli-bundle/chunks/chunk-RVUALSJF.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-SDR5J34Q.js +2468 -0
- package/dist/cli-bundle/chunks/chunk-SDR5J34Q.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-WB5BYQMF.js → chunk-SLMUGTK3.js} +4 -4
- package/dist/cli-bundle/chunks/{chunk-SUREE24M.js → chunk-TP5Q5ZD3.js} +12 -24
- package/dist/cli-bundle/chunks/chunk-TP5Q5ZD3.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-UACWNBL2.js → chunk-UYUYDGIB.js} +7 -9
- package/dist/cli-bundle/chunks/{chunk-UACWNBL2.js.map → chunk-UYUYDGIB.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-V4UYNSEM.js → chunk-UZIWVBE6.js} +6 -8
- package/dist/cli-bundle/chunks/{chunk-V4UYNSEM.js.map → chunk-UZIWVBE6.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-EWRSXOIZ.js → chunk-V3NOKJF2.js} +11 -13
- package/dist/cli-bundle/chunks/{chunk-EWRSXOIZ.js.map → chunk-V3NOKJF2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-XXKV4UWE.js → chunk-VARHOHYV.js} +571 -507
- package/dist/cli-bundle/chunks/chunk-VARHOHYV.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-AEACLRVH.js → chunk-VICZWYGZ.js} +18 -11
- package/dist/cli-bundle/chunks/chunk-VICZWYGZ.js.map +7 -0
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js +84 -0
- package/dist/cli-bundle/chunks/chunk-VY3VQ22F.js.map +1 -0
- package/dist/cli-bundle/chunks/chunk-VZDBVEZR.js +382 -0
- package/dist/cli-bundle/chunks/chunk-VZDBVEZR.js.map +7 -0
- package/dist/cli-bundle/chunks/{chunk-GDUMGZK3.js → chunk-W4ULYO7Z.js} +11 -13
- package/dist/cli-bundle/chunks/{chunk-GDUMGZK3.js.map → chunk-W4ULYO7Z.js.map} +1 -1
- package/dist/cli-bundle/chunks/{chunk-I6QMJ2XT.js → chunk-WYDHYJPO.js} +2 -2
- package/dist/cli-bundle/chunks/{chunk-ALKFCIIB.js → chunk-YITK2PJ6.js} +9 -11
- package/dist/cli-bundle/chunks/{chunk-ALKFCIIB.js.map → chunk-YITK2PJ6.js.map} +1 -1
- package/dist/cli-bundle/chunks/chunk-YJIEJRZB.js +84 -0
- package/dist/cli-bundle/chunks/chunk-YJIEJRZB.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-LNEDHJNQ.js → chunk-ZETXE4SE.js} +66 -329
- package/dist/cli-bundle/chunks/chunk-ZETXE4SE.js.map +1 -0
- package/dist/cli-bundle/chunks/{chunk-KIEAK7YE.js → chunk-ZRP4VG5U.js} +2 -2
- package/dist/cli-bundle/chunks/{claim-FZZZCAY6.js → claim-EMQLYPRW.js} +10 -12
- package/dist/cli-bundle/chunks/{claim-FZZZCAY6.js.map → claim-EMQLYPRW.js.map} +1 -1
- package/dist/cli-bundle/chunks/{claim-XK5QBZE3.js → claim-T3GCKV7C.js} +8 -10
- package/dist/cli-bundle/chunks/{claim-XK5QBZE3.js.map → claim-T3GCKV7C.js.map} +1 -1
- package/dist/cli-bundle/chunks/close-E6ZZGCJY.js +14 -0
- package/dist/cli-bundle/chunks/{close-QHMVWM7M.js → close-TQYAAFJP.js} +7 -8
- package/dist/cli-bundle/chunks/{close-many-OIXJE2JZ.js → close-many-BG5QQIDQ.js} +16 -18
- package/dist/cli-bundle/chunks/{close-many-OIXJE2JZ.js.map → close-many-BG5QQIDQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{close-many-SUU5BS2C.js → close-many-LDRVEQY2.js} +18 -20
- package/dist/cli-bundle/chunks/{close-many-SUU5BS2C.js.map → close-many-LDRVEQY2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{comments-5YM62D75.js → comments-QCKR2YY2.js} +11 -13
- package/dist/cli-bundle/chunks/{comments-5YM62D75.js.map → comments-QCKR2YY2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{comments-RH3IBIRH.js → comments-YUXJRZPQ.js} +9 -11
- package/dist/cli-bundle/chunks/{comments-RH3IBIRH.js.map → comments-YUXJRZPQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{config-NCNNWF6R.js → config-DMSU64QO.js} +18 -387
- package/dist/cli-bundle/chunks/config-DMSU64QO.js.map +7 -0
- package/dist/cli-bundle/chunks/{config-SW3U7XP2.js → config-QH2DICD6.js} +18 -380
- package/dist/cli-bundle/chunks/config-QH2DICD6.js.map +1 -0
- package/dist/cli-bundle/chunks/context-B6275WPX.js +46 -0
- package/dist/cli-bundle/chunks/context-OCZ3FJ4Z.js +42 -0
- package/dist/cli-bundle/chunks/{contracts-SY6PDFIK.js → contracts-HN7ABKLP.js} +72 -15
- package/dist/cli-bundle/chunks/contracts-HN7ABKLP.js.map +7 -0
- package/dist/cli-bundle/chunks/{contracts-JXFGBOYT.js → contracts-W4FZVVD6.js} +72 -15
- package/dist/cli-bundle/chunks/contracts-W4FZVVD6.js.map +1 -0
- package/dist/cli-bundle/chunks/{copy-N3GE6FYS.js → copy-BTJOSKKT.js} +7 -11
- package/dist/cli-bundle/chunks/{copy-N3GE6FYS.js.map → copy-BTJOSKKT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{copy-IEDBJOOX.js → copy-DEM4DATS.js} +9 -13
- package/dist/cli-bundle/chunks/{copy-IEDBJOOX.js.map → copy-DEM4DATS.js.map} +1 -1
- package/dist/cli-bundle/chunks/create-OH3BDGBB.js +28 -0
- package/dist/cli-bundle/chunks/{create-O4VONGPG.js → create-RLRJMRTM.js} +12 -14
- package/dist/cli-bundle/chunks/{delete-LPEIF7RU.js → delete-BHK7VB2Z.js} +5 -7
- package/dist/cli-bundle/chunks/{delete-LPEIF7RU.js.map → delete-BHK7VB2Z.js.map} +1 -1
- package/dist/cli-bundle/chunks/{delete-724EQ6OS.js → delete-LSVHAB4Y.js} +7 -9
- package/dist/cli-bundle/chunks/{delete-724EQ6OS.js.map → delete-LSVHAB4Y.js.map} +1 -1
- package/dist/cli-bundle/chunks/{deps-RSBU4SIU.js → deps-4UDFJRUA.js} +8 -11
- package/dist/cli-bundle/chunks/{deps-RSBU4SIU.js.map → deps-4UDFJRUA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{deps-T3Y6Y7RT.js → deps-XHYXWEPT.js} +6 -9
- package/dist/cli-bundle/chunks/{deps-T3Y6Y7RT.js.map → deps-XHYXWEPT.js.map} +1 -1
- package/dist/cli-bundle/chunks/{docs-IFS7HZPP.js → docs-26S44RXU.js} +8 -9
- package/dist/cli-bundle/chunks/{docs-IFS7HZPP.js.map → docs-26S44RXU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{docs-75ZLCO3G.js → docs-GYZNVS26.js} +10 -11
- package/dist/cli-bundle/chunks/{docs-75ZLCO3G.js.map → docs-GYZNVS26.js.map} +1 -1
- package/dist/cli-bundle/chunks/{eval-L2KD7W3M.js → eval-PGRVIJQU.js} +12 -14
- package/dist/cli-bundle/chunks/{eval-L2KD7W3M.js.map → eval-PGRVIJQU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{eval-QGR7JCQO.js → eval-UYF3ZPVO.js} +10 -12
- package/dist/cli-bundle/chunks/{eval-QGR7JCQO.js.map → eval-UYF3ZPVO.js.map} +1 -1
- package/dist/cli-bundle/chunks/{extension-YQF4CPIR.js → extension-CPSLJQVE.js} +12 -7
- package/dist/cli-bundle/chunks/{extension-3JYWJ5K2.js → extension-CXJ6RELI.js} +12 -7
- package/dist/cli-bundle/chunks/{files-EPEJMJHQ.js → files-MBNICQFM.js} +9 -11
- package/dist/cli-bundle/chunks/{files-EPEJMJHQ.js.map → files-MBNICQFM.js.map} +1 -1
- package/dist/cli-bundle/chunks/{files-5BQWDRDT.js → files-NQHEXUZD.js} +11 -13
- package/dist/cli-bundle/chunks/{files-5BQWDRDT.js.map → files-NQHEXUZD.js.map} +1 -1
- package/dist/cli-bundle/chunks/{focus-RWGKD76E.js → focus-DWYIG7GU.js} +10 -14
- package/dist/cli-bundle/chunks/{focus-RWGKD76E.js.map → focus-DWYIG7GU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{focus-DQVJAPOE.js → focus-XZW5423D.js} +8 -12
- package/dist/cli-bundle/chunks/{focus-DQVJAPOE.js.map → focus-XZW5423D.js.map} +1 -1
- package/dist/cli-bundle/chunks/{gc-BEJMQT64.js → gc-7GQYOS2G.js} +3 -3
- package/dist/cli-bundle/chunks/{gc-JEFQDJPA.js → gc-LPVMKJQJ.js} +3 -3
- package/dist/cli-bundle/chunks/{get-LQG6PEVG.js → get-A7MAOHCU.js} +10 -13
- package/dist/cli-bundle/chunks/{get-LQG6PEVG.js.map → get-A7MAOHCU.js.map} +1 -1
- package/dist/cli-bundle/chunks/{get-WVN75H42.js → get-DSDEKJ3L.js} +12 -15
- package/dist/cli-bundle/chunks/{get-WVN75H42.js.map → get-DSDEKJ3L.js.map} +1 -1
- package/dist/cli-bundle/chunks/{health-JJJOY7DJ.js → health-3IPFLKXB.js} +17 -17
- package/dist/cli-bundle/chunks/{health-P67NZ6TT.js → health-GZXGBZ36.js} +17 -17
- package/dist/cli-bundle/chunks/{history-RUKPKNY7.js → history-NERDJNUB.js} +8 -10
- package/dist/cli-bundle/chunks/history-WSZHY3PN.js +18 -0
- package/dist/cli-bundle/chunks/{history-compact-NQ7VPRVT.js → history-compact-2WRZ2WK4.js} +11 -14
- package/dist/cli-bundle/chunks/{history-compact-NQ7VPRVT.js.map → history-compact-2WRZ2WK4.js.map} +1 -1
- package/dist/cli-bundle/chunks/{history-compact-ZAOWR7GD.js → history-compact-HR7BB4LR.js} +13 -16
- package/dist/cli-bundle/chunks/{history-compact-ZAOWR7GD.js.map → history-compact-HR7BB4LR.js.map} +1 -1
- package/dist/cli-bundle/chunks/history-redact-MP6CH7U5.js +19 -0
- package/dist/cli-bundle/chunks/{history-redact-YY4XYVEP.js → history-redact-O3NBCNWC.js} +9 -11
- package/dist/cli-bundle/chunks/{history-repair-EHL4ODQY.js → history-repair-LCMOS45X.js} +11 -14
- package/dist/cli-bundle/chunks/{history-repair-EHL4ODQY.js.map → history-repair-LCMOS45X.js.map} +1 -1
- package/dist/cli-bundle/chunks/{history-repair-YSQH6SY6.js → history-repair-XA3LC4GA.js} +13 -16
- package/dist/cli-bundle/chunks/{history-repair-YSQH6SY6.js.map → history-repair-XA3LC4GA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{init-HBFGYS66.js → init-64XDLQJB.js} +12 -11
- package/dist/cli-bundle/chunks/init-PAX32BJA.js +22 -0
- package/dist/cli-bundle/chunks/{learnings-KFQO7GEZ.js → learnings-JR6MA5TI.js} +9 -11
- package/dist/cli-bundle/chunks/{learnings-KFQO7GEZ.js.map → learnings-JR6MA5TI.js.map} +1 -1
- package/dist/cli-bundle/chunks/{learnings-J555ZFPD.js → learnings-LPKCSJX7.js} +11 -13
- package/dist/cli-bundle/chunks/{learnings-J555ZFPD.js.map → learnings-LPKCSJX7.js.map} +1 -1
- package/dist/cli-bundle/chunks/{list-C7R33MD5.js → list-DNBJVO3E.js} +10 -10
- package/dist/cli-bundle/chunks/{list-DSN6UNFB.js → list-G5Y65VF6.js} +10 -10
- package/dist/cli-bundle/chunks/next-BCERKDUR.js +277 -0
- package/dist/cli-bundle/chunks/next-BCERKDUR.js.map +7 -0
- package/dist/cli-bundle/chunks/next-FYTQF6HG.js +274 -0
- package/dist/cli-bundle/chunks/next-FYTQF6HG.js.map +1 -0
- package/dist/cli-bundle/chunks/{notes-V4VNIQL4.js → notes-2BMU3VVQ.js} +9 -11
- package/dist/cli-bundle/chunks/{notes-V4VNIQL4.js.map → notes-2BMU3VVQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{notes-VYJFN2A3.js → notes-6KTGO2OJ.js} +11 -13
- package/dist/cli-bundle/chunks/{notes-VYJFN2A3.js.map → notes-6KTGO2OJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{plan-RBHQ5PO7.js → plan-4WXEQCTN.js} +15 -18
- package/dist/cli-bundle/chunks/{plan-RBHQ5PO7.js.map → plan-4WXEQCTN.js.map} +1 -1
- package/dist/cli-bundle/chunks/{plan-DHRSVSHR.js → plan-RKZHQVXR.js} +17 -20
- package/dist/cli-bundle/chunks/{plan-DHRSVSHR.js.map → plan-RKZHQVXR.js.map} +1 -1
- package/dist/cli-bundle/chunks/profile-4OMM32CD.js +1235 -0
- package/dist/cli-bundle/chunks/profile-4OMM32CD.js.map +7 -0
- package/dist/cli-bundle/chunks/profile-QLER5ENE.js +1197 -0
- package/dist/cli-bundle/chunks/profile-QLER5ENE.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-OM3E2KMY.js → register-list-query-7LV46VAU.js} +45 -21
- package/dist/cli-bundle/chunks/register-list-query-7LV46VAU.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-list-query-CCMHGZTF.js → register-list-query-SNG5PGA4.js} +44 -20
- package/dist/cli-bundle/chunks/register-list-query-SNG5PGA4.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-mutation-N3CDEGZU.js → register-mutation-ENNDUAZG.js} +106 -40
- package/dist/cli-bundle/chunks/register-mutation-ENNDUAZG.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-mutation-UXTTWL6N.js → register-mutation-KK7PHYYU.js} +105 -39
- package/dist/cli-bundle/chunks/register-mutation-KK7PHYYU.js.map +7 -0
- package/dist/cli-bundle/chunks/{register-operations-UDIFMQKD.js → register-operations-C6OWLDSH.js} +32 -34
- package/dist/cli-bundle/chunks/{register-operations-UDIFMQKD.js.map → register-operations-C6OWLDSH.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-operations-R2FLOCRI.js → register-operations-HZ6XERQG.js} +30 -32
- package/dist/cli-bundle/chunks/{register-operations-R2FLOCRI.js.map → register-operations-HZ6XERQG.js.map} +1 -1
- package/dist/cli-bundle/chunks/{register-setup-G5LTSFYK.js → register-setup-P67EMBDJ.js} +68 -25
- package/dist/cli-bundle/chunks/register-setup-P67EMBDJ.js.map +1 -0
- package/dist/cli-bundle/chunks/{register-setup-TWHKICM2.js → register-setup-ZKJ53RS7.js} +67 -24
- package/dist/cli-bundle/chunks/register-setup-ZKJ53RS7.js.map +7 -0
- package/dist/cli-bundle/chunks/{restore-LL2WLEDG.js → restore-4MHZFJ2E.js} +9 -11
- package/dist/cli-bundle/chunks/restore-YALDGTQR.js +17 -0
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-M4H2ZI64.js → scheduling-shortcuts-LB6DOLRL.js} +14 -16
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-M4H2ZI64.js.map → scheduling-shortcuts-LB6DOLRL.js.map} +1 -1
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-255GI3BU.js → scheduling-shortcuts-UTOYKLXQ.js} +12 -14
- package/dist/cli-bundle/chunks/{scheduling-shortcuts-255GI3BU.js.map → scheduling-shortcuts-UTOYKLXQ.js.map} +1 -1
- package/dist/cli-bundle/chunks/schema-73HR2OJW.js +75 -0
- package/dist/cli-bundle/chunks/schema-U6LJKSIR.js +71 -0
- package/dist/cli-bundle/chunks/{search-2EI6EAXH.js → search-AXPXKZER.js} +10 -12
- package/dist/cli-bundle/chunks/{search-QBFBLQRO.js → search-KILGT37L.js} +10 -12
- package/dist/cli-bundle/chunks/{stats-TKC6CAKB.js → stats-PSYVVTNZ.js} +21 -13
- package/dist/cli-bundle/chunks/stats-PSYVVTNZ.js.map +1 -0
- package/dist/cli-bundle/chunks/{stats-TCW2SZQG.js → stats-W5KNVJWQ.js} +20 -12
- package/dist/cli-bundle/chunks/stats-W5KNVJWQ.js.map +7 -0
- package/dist/cli-bundle/chunks/{telemetry-BT2VSWU2.js → telemetry-BZUF6H7G.js} +4 -4
- package/dist/cli-bundle/chunks/{telemetry-LQ6FRTUT.js → telemetry-GAHHQTOS.js} +4 -4
- package/dist/cli-bundle/chunks/test-ACD52Z3S.js +35 -0
- package/dist/cli-bundle/chunks/test-ACD52Z3S.js.map +7 -0
- package/dist/cli-bundle/chunks/{test-NV2DRPUS.js → test-PWDIZ255.js} +15 -16
- package/dist/cli-bundle/chunks/test-PWDIZ255.js.map +1 -0
- package/dist/cli-bundle/chunks/{test-all-DZ76VTPQ.js → test-all-L2MDDUCA.js} +20 -22
- package/dist/cli-bundle/chunks/{test-all-DZ76VTPQ.js.map → test-all-L2MDDUCA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-all-REW67LXT.js → test-all-RBZ6DLU2.js} +18 -20
- package/dist/cli-bundle/chunks/{test-all-REW67LXT.js.map → test-all-RBZ6DLU2.js.map} +1 -1
- package/dist/cli-bundle/chunks/{test-runs-PX73DMMI.js → test-runs-PLRAZEFW.js} +5 -6
- package/dist/cli-bundle/chunks/test-runs-PLRAZEFW.js.map +7 -0
- package/dist/cli-bundle/chunks/{test-runs-FQ5WNQLP.js → test-runs-UXIXPDKU.js} +6 -7
- package/dist/cli-bundle/chunks/test-runs-UXIXPDKU.js.map +1 -0
- package/dist/cli-bundle/chunks/update-AMRSOIWP.js +24 -0
- package/dist/cli-bundle/chunks/update-AMRSOIWP.js.map +7 -0
- package/dist/cli-bundle/chunks/update-KFX2SIAC.js +28 -0
- package/dist/cli-bundle/chunks/update-KFX2SIAC.js.map +1 -0
- package/dist/cli-bundle/chunks/{update-many-Q5ZEI64S.js → update-many-RNSBX2TA.js} +35 -36
- package/dist/cli-bundle/chunks/{update-many-Q5ZEI64S.js.map → update-many-RNSBX2TA.js.map} +1 -1
- package/dist/cli-bundle/chunks/{update-many-2ILP6E4Y.js → update-many-Z5GJS5LC.js} +33 -34
- package/dist/cli-bundle/chunks/{update-many-2ILP6E4Y.js.map → update-many-Z5GJS5LC.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-FOZKQTQF.js → upgrade-BRL6KCOJ.js} +13 -8
- package/dist/cli-bundle/chunks/{upgrade-FOZKQTQF.js.map → upgrade-BRL6KCOJ.js.map} +1 -1
- package/dist/cli-bundle/chunks/{upgrade-DHL74PQH.js → upgrade-HAK6JG2O.js} +11 -6
- package/dist/cli-bundle/chunks/{upgrade-DHL74PQH.js.map → upgrade-HAK6JG2O.js.map} +1 -1
- package/dist/cli-bundle/chunks/{validate-HYZNIB6W.js → validate-MTUVL5VC.js} +38 -28
- package/dist/cli-bundle/chunks/validate-MTUVL5VC.js.map +7 -0
- package/dist/cli-bundle/chunks/{validate-54SYJ7QW.js → validate-X5W76YJL.js} +39 -29
- package/dist/cli-bundle/chunks/validate-X5W76YJL.js.map +1 -0
- package/dist/cli-bundle/main.js +95 -724
- package/dist/cli-bundle/main.js.map +4 -4
- package/dist/core/config/positional-value.d.ts +2 -0
- package/dist/core/config/positional-value.js +2 -2
- package/dist/core/config/positional-value.js.map +1 -1
- package/dist/core/extensions/activation-summary-markdown.d.ts +71 -0
- package/dist/core/extensions/activation-summary-markdown.js +151 -0
- package/dist/core/extensions/activation-summary-markdown.js.map +1 -0
- package/dist/core/extensions/activation-summary.d.ts +2 -0
- package/dist/core/extensions/activation-summary.js +3 -2
- package/dist/core/extensions/activation-summary.js.map +1 -1
- package/dist/core/extensions/capability-usage.d.ts +1 -1
- package/dist/core/extensions/capability-usage.js +4 -3
- package/dist/core/extensions/capability-usage.js.map +1 -1
- package/dist/core/extensions/extension-policy.d.ts +18 -3
- package/dist/core/extensions/extension-policy.js +116 -106
- package/dist/core/extensions/extension-policy.js.map +1 -1
- package/dist/core/extensions/extension-registries.js +3 -2
- package/dist/core/extensions/extension-registries.js.map +1 -1
- package/dist/core/extensions/extension-types.d.ts +21 -1
- package/dist/core/extensions/extension-types.js +3 -2
- package/dist/core/extensions/extension-types.js.map +1 -1
- package/dist/core/extensions/loader.js +439 -232
- package/dist/core/extensions/loader.js.map +1 -1
- package/dist/core/fs/fs-utils.js +27 -2
- package/dist/core/fs/fs-utils.js.map +1 -1
- package/dist/core/item/actionability.d.ts +57 -0
- package/dist/core/item/actionability.js +178 -0
- package/dist/core/item/actionability.js.map +1 -0
- package/dist/core/item/item-format.js +523 -410
- package/dist/core/item/item-format.js.map +1 -1
- package/dist/core/item/type-registry.js +18 -45
- package/dist/core/item/type-registry.js.map +1 -1
- package/dist/core/profile/profile-describe.d.ts +64 -0
- package/dist/core/profile/profile-describe.js +83 -0
- package/dist/core/profile/profile-describe.js.map +1 -0
- package/dist/core/profile/profile-lint.d.ts +53 -0
- package/dist/core/profile/profile-lint.js +422 -0
- package/dist/core/profile/profile-lint.js.map +1 -0
- package/dist/core/profile/profile-plan.d.ts +145 -0
- package/dist/core/profile/profile-plan.js +0 -0
- package/dist/core/profile/profile-plan.js.map +1 -0
- package/dist/core/profile/profile-presets.d.ts +218 -0
- package/dist/core/profile/profile-presets.js +325 -0
- package/dist/core/profile/profile-presets.js.map +1 -0
- package/dist/core/schema/fields-file.js +25 -25
- package/dist/core/schema/fields-file.js.map +1 -1
- package/dist/core/schema/item-types-file.js +3 -3
- package/dist/core/schema/item-types-file.js.map +1 -1
- package/dist/core/schema/runtime-schema.js +4 -4
- package/dist/core/schema/runtime-schema.js.map +1 -1
- package/dist/core/schema/status-defs-file.js +3 -3
- package/dist/core/schema/status-defs-file.js.map +1 -1
- package/dist/core/shared/serialization.js +83 -62
- package/dist/core/shared/serialization.js.map +1 -1
- package/dist/core/store/item-store.d.ts +1 -0
- package/dist/core/store/item-store.js +16 -8
- package/dist/core/store/item-store.js.map +1 -1
- package/dist/core/store/paths.js +4 -32
- package/dist/core/store/paths.js.map +1 -1
- package/dist/core/store/settings.js +14 -14
- package/dist/core/store/settings.js.map +1 -1
- package/dist/core/telemetry/observability.js +50 -54
- package/dist/core/telemetry/observability.js.map +1 -1
- package/dist/core/telemetry/runtime.js +11 -2
- package/dist/core/telemetry/runtime.js.map +1 -1
- package/dist/core/test/background-runs.js +3 -2
- package/dist/core/test/background-runs.js.map +1 -1
- package/dist/core/validate/linked-artifact-reference.d.ts +24 -0
- package/dist/core/validate/linked-artifact-reference.js +41 -0
- package/dist/core/validate/linked-artifact-reference.js.map +1 -0
- package/dist/mcp/server.js +540 -420
- package/dist/mcp/server.js.map +1 -1
- package/dist/mcp/tool-definitions.js +33 -2
- package/dist/mcp/tool-definitions.js.map +1 -1
- package/dist/sdk/cli-contracts/commander-types.d.ts +1 -0
- package/dist/sdk/cli-contracts/commander-types.js +15 -2
- package/dist/sdk/cli-contracts/commander-types.js.map +1 -1
- package/dist/sdk/cli-contracts/enum-contracts.d.ts +3 -3
- package/dist/sdk/cli-contracts/enum-contracts.js +6 -2
- package/dist/sdk/cli-contracts/enum-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/flag-contracts.d.ts +149 -0
- package/dist/sdk/cli-contracts/flag-contracts.js +1514 -0
- package/dist/sdk/cli-contracts/flag-contracts.js.map +1 -0
- package/dist/sdk/cli-contracts/string-lists.d.ts +14 -0
- package/dist/sdk/cli-contracts/string-lists.js +20 -0
- package/dist/sdk/cli-contracts/string-lists.js.map +1 -0
- package/dist/sdk/cli-contracts/tool-option-contracts.d.ts +1 -1
- package/dist/sdk/cli-contracts/tool-option-contracts.js +51 -109
- package/dist/sdk/cli-contracts/tool-option-contracts.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-parameter-tables.d.ts +17 -0
- package/dist/sdk/cli-contracts/tool-parameter-tables.js +54 -5
- package/dist/sdk/cli-contracts/tool-parameter-tables.js.map +1 -1
- package/dist/sdk/cli-contracts/tool-schema.d.ts +74 -0
- package/dist/sdk/cli-contracts/tool-schema.js +871 -0
- package/dist/sdk/cli-contracts/tool-schema.js.map +1 -0
- package/dist/sdk/cli-contracts.d.ts +13 -193
- package/dist/sdk/cli-contracts.js +5 -2277
- package/dist/sdk/cli-contracts.js.map +1 -1
- package/dist/sdk/compose.d.ts +11 -5
- package/dist/sdk/compose.js +240 -124
- package/dist/sdk/compose.js.map +1 -1
- package/dist/sdk/define.d.ts +14 -0
- package/dist/sdk/define.js +17 -2
- package/dist/sdk/define.js.map +1 -1
- package/dist/sdk/index.d.ts +14 -3
- package/dist/sdk/index.js +14 -3
- package/dist/sdk/index.js.map +1 -1
- package/dist/sdk/testing.d.ts +82 -2
- package/dist/sdk/testing.js +74 -3
- package/dist/sdk/testing.js.map +1 -1
- package/docs/AGENT_GUIDE.md +2 -0
- package/docs/CLAUDE_CODE_PLUGIN.md +2 -2
- package/docs/COMMANDS.md +37 -0
- package/docs/EXTENSIONS.md +12 -13
- package/docs/RELEASING.md +8 -4
- package/docs/SDK.md +184 -17
- package/docs/TESTING.md +12 -0
- package/docs/examples/policy-restricted-extension/README.md +6 -0
- package/docs/examples/policy-restricted-extension/index.ts +40 -0
- package/docs/examples/policy-restricted-extension/manifest.json +2 -2
- package/docs/examples/starter-extension/README.md +14 -2
- package/docs/examples/starter-extension/{index.js → index.ts} +51 -6
- package/docs/examples/starter-extension/manifest.json +2 -2
- package/package.json +20 -7
- package/packages/pm-beads/extensions/beads/index.ts +3 -3
- package/packages/pm-beads/extensions/beads/manifest.json +2 -2
- package/packages/pm-beads/extensions/beads/runtime-loader.ts +19 -7
- package/packages/pm-beads/extensions/beads/runtime.ts +155 -37
- package/packages/pm-calendar/extensions/calendar/index.ts +3 -3
- package/packages/pm-calendar/extensions/calendar/manifest.json +2 -2
- package/packages/pm-calendar/extensions/calendar/runtime.ts +2 -2
- package/packages/pm-command-kit/extensions/command-kit/index.ts +1 -1
- package/packages/pm-command-kit/extensions/command-kit/manifest.json +2 -2
- package/packages/pm-governance-audit/extensions/governance-audit/index.ts +2 -2
- package/packages/pm-governance-audit/extensions/governance-audit/manifest.json +2 -2
- package/packages/pm-governance-audit/extensions/governance-audit/runtime.ts +1 -1
- package/packages/pm-guide-shell/extensions/guide-shell/index.ts +2 -2
- package/packages/pm-guide-shell/extensions/guide-shell/manifest.json +2 -2
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.ts +1 -1
- package/packages/pm-kanban/README.md +97 -0
- package/packages/pm-kanban/extensions/kanban/index.ts +191 -0
- package/packages/pm-kanban/extensions/kanban/manifest.json +19 -0
- package/packages/pm-kanban/package.json +57 -0
- package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.ts +1 -1
- package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/manifest.json +2 -2
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.ts +2 -2
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/manifest.json +2 -2
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.ts +1 -1
- package/packages/pm-search-advanced/extensions/search-advanced/index.ts +2 -2
- package/packages/pm-search-advanced/extensions/search-advanced/manifest.json +2 -2
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.ts +1 -1
- package/packages/pm-templates/extensions/templates/index.ts +2 -2
- package/packages/pm-templates/extensions/templates/manifest.json +2 -2
- package/packages/pm-templates/extensions/templates/runtime.ts +1 -1
- package/packages/pm-todos/extensions/todos/index.ts +3 -3
- package/packages/pm-todos/extensions/todos/manifest.json +2 -2
- package/packages/pm-todos/extensions/todos/runtime-loader.ts +19 -7
- package/packages/pm-todos/extensions/todos/runtime.ts +177 -43
- package/plugins/pm-claude/scripts/pm-mcp-server.mjs +2 -2
- package/plugins/pm-codex/scripts/pm-mcp-server.mjs +2 -2
- package/scripts/bundle-cli.mjs +1 -1
- package/dist/cli-bundle/chunks/activity-54TXGJ2T.js +0 -18
- package/dist/cli-bundle/chunks/aggregate-63NWNIBR.js.map +0 -1
- package/dist/cli-bundle/chunks/aggregate-YHCYX2EV.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6EL7SW5C.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-6W3Y65PL.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-AEACLRVH.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-B74BP6IS.js +0 -78
- package/dist/cli-bundle/chunks/chunk-B74BP6IS.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-BFFO3AIB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-C4C3EJCJ.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-EYPINTFR.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-FBLT6WGK.js +0 -75
- package/dist/cli-bundle/chunks/chunk-FBLT6WGK.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-GQYJEEFX.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-HBAEFWX3.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-HC2S36NB.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-IAP5KYBQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-INPHFO33.js +0 -764
- package/dist/cli-bundle/chunks/chunk-INPHFO33.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-IOT6WRL5.js +0 -86
- package/dist/cli-bundle/chunks/chunk-IOT6WRL5.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ISEKN64V.js +0 -35
- package/dist/cli-bundle/chunks/chunk-ISEKN64V.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-J3NMWFIN.js +0 -115
- package/dist/cli-bundle/chunks/chunk-J3NMWFIN.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-J7I4C5ZB.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-JKL6HRMV.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-KJZOSF7J.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-L7UXKP2I.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-LNEDHJNQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-M6TUBOGW.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-MEXZ5XUM.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-N5B6WZC5.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-NJ73ALW2.js +0 -761
- package/dist/cli-bundle/chunks/chunk-NJ73ALW2.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-NVXGVEFD.js +0 -83
- package/dist/cli-bundle/chunks/chunk-NVXGVEFD.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-OF7V47P3.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-OHDQNKJB.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-PEL2NLQE.js +0 -118
- package/dist/cli-bundle/chunks/chunk-PEL2NLQE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-PRVTGX64.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-RAWA3Y7O.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-SMXSDY7J.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-SUREE24M.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-TKPP4GOO.js +0 -654
- package/dist/cli-bundle/chunks/chunk-TKPP4GOO.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-VSAABFGQ.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js +0 -32
- package/dist/cli-bundle/chunks/chunk-W2VMLL5S.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-XVYKWZNL.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-XXKV4UWE.js.map +0 -7
- package/dist/cli-bundle/chunks/chunk-ZLWRPBOW.js.map +0 -1
- package/dist/cli-bundle/chunks/chunk-ZV7IQ23N.js +0 -657
- package/dist/cli-bundle/chunks/chunk-ZV7IQ23N.js.map +0 -7
- package/dist/cli-bundle/chunks/close-JEBZXONN.js +0 -15
- package/dist/cli-bundle/chunks/config-NCNNWF6R.js.map +0 -7
- package/dist/cli-bundle/chunks/config-SW3U7XP2.js.map +0 -1
- package/dist/cli-bundle/chunks/context-55VEOYI3.js.map +0 -1
- package/dist/cli-bundle/chunks/context-5LB7UGKE.js.map +0 -7
- package/dist/cli-bundle/chunks/contracts-JXFGBOYT.js.map +0 -1
- package/dist/cli-bundle/chunks/contracts-SY6PDFIK.js.map +0 -7
- package/dist/cli-bundle/chunks/create-CLSCHGJJ.js +0 -30
- package/dist/cli-bundle/chunks/history-ALTM2RRP.js +0 -20
- package/dist/cli-bundle/chunks/history-redact-5YGLWUDH.js +0 -21
- package/dist/cli-bundle/chunks/init-C4CRHW22.js +0 -21
- package/dist/cli-bundle/chunks/register-list-query-CCMHGZTF.js.map +0 -7
- package/dist/cli-bundle/chunks/register-list-query-OM3E2KMY.js.map +0 -1
- package/dist/cli-bundle/chunks/register-mutation-N3CDEGZU.js.map +0 -1
- package/dist/cli-bundle/chunks/register-mutation-UXTTWL6N.js.map +0 -7
- package/dist/cli-bundle/chunks/register-setup-G5LTSFYK.js.map +0 -1
- package/dist/cli-bundle/chunks/register-setup-TWHKICM2.js.map +0 -7
- package/dist/cli-bundle/chunks/restore-LQHXBAY5.js +0 -19
- package/dist/cli-bundle/chunks/schema-C6QA367T.js.map +0 -7
- package/dist/cli-bundle/chunks/schema-QO5I4FBL.js.map +0 -1
- package/dist/cli-bundle/chunks/stats-TCW2SZQG.js.map +0 -7
- package/dist/cli-bundle/chunks/stats-TKC6CAKB.js.map +0 -1
- package/dist/cli-bundle/chunks/test-WA6RZGM2.js +0 -36
- package/dist/cli-bundle/chunks/test-runs-FQ5WNQLP.js.map +0 -1
- package/dist/cli-bundle/chunks/test-runs-PX73DMMI.js.map +0 -7
- package/dist/cli-bundle/chunks/update-BSKMQOYH.js +0 -28
- package/dist/cli-bundle/chunks/update-FIGYNQ2I.js +0 -24
- package/dist/cli-bundle/chunks/validate-54SYJ7QW.js.map +0 -1
- package/dist/cli-bundle/chunks/validate-HYZNIB6W.js.map +0 -7
- package/docs/examples/policy-restricted-extension/index.js +0 -21
- package/packages/pm-beads/extensions/beads/index.js +0 -64
- package/packages/pm-beads/extensions/beads/runtime-loader.js +0 -86
- package/packages/pm-beads/extensions/beads/runtime.js +0 -482
- package/packages/pm-calendar/extensions/calendar/index.js +0 -150
- package/packages/pm-calendar/extensions/calendar/runtime.js +0 -126
- package/packages/pm-command-kit/extensions/command-kit/index.js +0 -181
- package/packages/pm-governance-audit/extensions/governance-audit/index.js +0 -177
- package/packages/pm-governance-audit/extensions/governance-audit/runtime.js +0 -153
- package/packages/pm-guide-shell/extensions/guide-shell/index.js +0 -98
- package/packages/pm-guide-shell/extensions/guide-shell/runtime.js +0 -294
- package/packages/pm-lifecycle-hooks/extensions/lifecycle-hooks/index.js +0 -18
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/index.js +0 -124
- package/packages/pm-linked-test-adapters/extensions/linked-test-adapters/runtime.js +0 -110
- package/packages/pm-search-advanced/extensions/search-advanced/index.js +0 -258
- package/packages/pm-search-advanced/extensions/search-advanced/runtime.js +0 -361
- package/packages/pm-templates/extensions/templates/index.js +0 -132
- package/packages/pm-templates/extensions/templates/runtime.js +0 -35
- package/packages/pm-todos/extensions/todos/index.js +0 -81
- package/packages/pm-todos/extensions/todos/runtime-loader.js +0 -86
- package/packages/pm-todos/extensions/todos/runtime.js +0 -545
- /package/dist/cli-bundle/chunks/{activity-54TXGJ2T.js.map → activity-AW6XVFH6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{activity-N7RVTLBQ.js.map → activity-DBLQVIP6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F32L4HR6.js.map → chunk-27BXPBAY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5BBEWX6C.js.map → chunk-3VGN2UWE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-FMWW2JDU.js.map → chunk-AXIDKKAT.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-TIM4OD74.js.map → chunk-BDTISOSD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CZIFFMZI.js.map → chunk-DDPTYJIM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-AYPQUFCX.js.map → chunk-EJUDVUYZ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-EOGBMLCE.js.map → chunk-EVMTBV6V.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-CG3KP6I5.js.map → chunk-G7I7DEZA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-F4BNR2IN.js.map → chunk-HYTGA6GI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-2WCYE3IF.js.map → chunk-HZZEHPRG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-YV2OSAMS.js.map → chunk-IJYK2T43.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-QOUOMPHO.js.map → chunk-JPECA746.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-OQ2E64FH.js.map → chunk-KNPEF7QG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-3BKH2CL3.js.map → chunk-L5OEFZQG.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-5S4ZGDB2.js.map → chunk-N74UMG5H.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-IXAZI443.js.map → chunk-NFDPYAIP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-SKC4UTRP.js.map → chunk-NKZAN7BD.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-JPJDP4VU.js.map → chunk-NWMZWYYB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KKX4Z2SE.js.map → chunk-OTUHB4HS.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-WB5BYQMF.js.map → chunk-SLMUGTK3.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-I6QMJ2XT.js.map → chunk-WYDHYJPO.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{chunk-KIEAK7YE.js.map → chunk-ZRP4VG5U.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-JEBZXONN.js.map → close-E6ZZGCJY.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{close-QHMVWM7M.js.map → close-TQYAAFJP.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-O4VONGPG.js.map → context-B6275WPX.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{create-CLSCHGJJ.js.map → context-OCZ3FJ4Z.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-YQF4CPIR.js.map → create-OH3BDGBB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{extension-3JYWJ5K2.js.map → create-RLRJMRTM.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-ALTM2RRP.js.map → extension-CPSLJQVE.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-RUKPKNY7.js.map → extension-CXJ6RELI.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-BEJMQT64.js.map → gc-7GQYOS2G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{gc-JEFQDJPA.js.map → gc-LPVMKJQJ.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{health-JJJOY7DJ.js.map → health-3IPFLKXB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{health-P67NZ6TT.js.map → health-GZXGBZ36.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-YY4XYVEP.js.map → history-NERDJNUB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{history-redact-5YGLWUDH.js.map → history-WSZHY3PN.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-C4CRHW22.js.map → history-redact-MP6CH7U5.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{init-HBFGYS66.js.map → history-redact-O3NBCNWC.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-C7R33MD5.js.map → init-64XDLQJB.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{list-DSN6UNFB.js.map → init-PAX32BJA.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-LL2WLEDG.js.map → list-DNBJVO3E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{restore-LQHXBAY5.js.map → list-G5Y65VF6.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-2EI6EAXH.js.map → restore-4MHZFJ2E.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{search-QBFBLQRO.js.map → restore-YALDGTQR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-NV2DRPUS.js.map → schema-73HR2OJW.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{test-WA6RZGM2.js.map → schema-U6LJKSIR.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-BSKMQOYH.js.map → search-AXPXKZER.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{update-FIGYNQ2I.js.map → search-KILGT37L.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-BT2VSWU2.js.map → telemetry-BZUF6H7G.js.map} +0 -0
- /package/dist/cli-bundle/chunks/{telemetry-LQ6FRTUT.js.map → telemetry-GAHHQTOS.js.map} +0 -0
|
@@ -1,12 +1,13 @@
|
|
|
1
1
|
import {
|
|
2
2
|
compareTimestampStrings,
|
|
3
3
|
isTimestampLiteral
|
|
4
|
-
} from "./chunk-
|
|
4
|
+
} from "./chunk-WYDHYJPO.js";
|
|
5
5
|
import {
|
|
6
6
|
CONFIDENCE_TEXT_VALUES,
|
|
7
7
|
EXIT_CODE,
|
|
8
8
|
FRONT_MATTER_KEY_ORDER,
|
|
9
9
|
ISSUE_SEVERITY_VALUES,
|
|
10
|
+
PLAN_STEP_STATUS_VALUES,
|
|
10
11
|
PmCliError,
|
|
11
12
|
RECURRENCE_FREQUENCY_VALUES,
|
|
12
13
|
RECURRENCE_WEEKDAY_VALUES,
|
|
@@ -17,7 +18,7 @@ import {
|
|
|
17
18
|
resolveRuntimeStatusRegistry,
|
|
18
19
|
runtimeFieldOptionTarget,
|
|
19
20
|
weekdayOrderIndex
|
|
20
|
-
} from "./chunk-
|
|
21
|
+
} from "./chunk-RVUALSJF.js";
|
|
21
22
|
|
|
22
23
|
// dist/core/schema/runtime-field-values.js
|
|
23
24
|
!(function() {
|
|
@@ -339,11 +340,13 @@ function decodeToonItemContent(content) {
|
|
|
339
340
|
!(function() {
|
|
340
341
|
try {
|
|
341
342
|
var e = "undefined" != typeof window ? window : "undefined" != typeof global ? global : "undefined" != typeof globalThis ? globalThis : "undefined" != typeof self ? self : {}, n = new e.Error().stack;
|
|
342
|
-
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "
|
|
343
|
+
n && (e._sentryDebugIds = e._sentryDebugIds || {}, e._sentryDebugIds[n] = "84d024fa-403c-5a85-8c12-4e823afa4fc9");
|
|
343
344
|
} catch (e2) {
|
|
344
345
|
}
|
|
345
346
|
})();
|
|
346
347
|
var LINKED_TEST_PM_CONTEXT_MODE_VALUES = /* @__PURE__ */ new Set(["schema", "tracker", "auto"]);
|
|
348
|
+
var ITEM_TEST_RUN_STATUS_VALUES = /* @__PURE__ */ new Set(["passed", "failed", "stopped", "canceled"]);
|
|
349
|
+
var PLAN_STEP_STATUS_SET = new Set(PLAN_STEP_STATUS_VALUES);
|
|
347
350
|
function normalizePathValue(value) {
|
|
348
351
|
return value.replaceAll("\\", "/");
|
|
349
352
|
}
|
|
@@ -355,6 +358,13 @@ function firstNonZeroComparison(comparisons) {
|
|
|
355
358
|
}
|
|
356
359
|
return 0;
|
|
357
360
|
}
|
|
361
|
+
function deleteUndefinedFields(record) {
|
|
362
|
+
for (const [key, value] of Object.entries(record)) {
|
|
363
|
+
if (value === void 0) {
|
|
364
|
+
delete record[key];
|
|
365
|
+
}
|
|
366
|
+
}
|
|
367
|
+
}
|
|
358
368
|
var REQUIRED_STRING_FIELDS = [
|
|
359
369
|
"id",
|
|
360
370
|
"title",
|
|
@@ -408,47 +418,65 @@ function assertTimestampField(record, fieldName) {
|
|
|
408
418
|
const timestamp = rawValue;
|
|
409
419
|
assertFrontMatterCondition(isTimestampLiteral(timestamp), `${fieldName} must be a valid ISO timestamp`);
|
|
410
420
|
}
|
|
421
|
+
function assertPositiveIntegerField(record, fieldName, messagePrefix) {
|
|
422
|
+
const value = record[fieldName];
|
|
423
|
+
if (value === void 0) {
|
|
424
|
+
return;
|
|
425
|
+
}
|
|
426
|
+
assertFrontMatterCondition(typeof value === "number" && Number.isInteger(value) && value >= 1, `${messagePrefix} must be an integer >= 1`);
|
|
427
|
+
}
|
|
428
|
+
function assertOptionalTimestampString(record, fieldName, messagePrefix) {
|
|
429
|
+
const value = record[fieldName];
|
|
430
|
+
if (value === void 0) {
|
|
431
|
+
return;
|
|
432
|
+
}
|
|
433
|
+
assertFrontMatterCondition(typeof value === "string", `${messagePrefix} must be a string`);
|
|
434
|
+
assertFrontMatterCondition(isTimestampLiteral(value), `${messagePrefix} must be a valid ISO timestamp`);
|
|
435
|
+
}
|
|
436
|
+
function assertRecurrenceWeekdays(value) {
|
|
437
|
+
if (value === void 0) {
|
|
438
|
+
return;
|
|
439
|
+
}
|
|
440
|
+
assertFrontMatterCondition(Array.isArray(value), "event.recurrence.by_weekday must be an array");
|
|
441
|
+
for (const weekday of value) {
|
|
442
|
+
assertFrontMatterCondition(typeof weekday === "string", "event.recurrence.by_weekday entries must be strings");
|
|
443
|
+
const normalizedWeekday = weekday.trim().toLowerCase();
|
|
444
|
+
assertFrontMatterCondition(RECURRENCE_WEEKDAY_VALUES.includes(normalizedWeekday), `event.recurrence.by_weekday entries must be one of: ${RECURRENCE_WEEKDAY_VALUES.join(", ")}`);
|
|
445
|
+
}
|
|
446
|
+
}
|
|
447
|
+
function assertRecurrenceMonthDays(value) {
|
|
448
|
+
if (value === void 0) {
|
|
449
|
+
return;
|
|
450
|
+
}
|
|
451
|
+
assertFrontMatterCondition(Array.isArray(value), "event.recurrence.by_month_day must be an array");
|
|
452
|
+
for (const day of value) {
|
|
453
|
+
assertFrontMatterCondition(typeof day === "number" && Number.isInteger(day) && day >= 1 && day <= 31, "event.recurrence.by_month_day entries must be integers 1..31");
|
|
454
|
+
}
|
|
455
|
+
}
|
|
456
|
+
function assertRecurrenceExdates(value) {
|
|
457
|
+
if (value === void 0) {
|
|
458
|
+
return;
|
|
459
|
+
}
|
|
460
|
+
assertFrontMatterCondition(Array.isArray(value), "event.recurrence.exdates must be an array");
|
|
461
|
+
for (const exdate of value) {
|
|
462
|
+
assertFrontMatterCondition(typeof exdate === "string", "event.recurrence.exdates entries must be strings");
|
|
463
|
+
assertFrontMatterCondition(isTimestampLiteral(exdate), "event.recurrence.exdates entries must be valid ISO timestamps");
|
|
464
|
+
}
|
|
465
|
+
}
|
|
411
466
|
function assertValidRecurrenceRule(recurrence) {
|
|
412
467
|
assertFrontMatterCondition(typeof recurrence === "object" && recurrence !== null && !Array.isArray(recurrence), "event.recurrence must be an object");
|
|
413
468
|
const recurrenceRecord = recurrence;
|
|
414
469
|
assertFrontMatterCondition(typeof recurrenceRecord.freq === "string", "event.recurrence.freq must be a string");
|
|
415
470
|
const frequency = recurrenceRecord.freq.trim().toLowerCase();
|
|
416
471
|
assertFrontMatterCondition(RECURRENCE_FREQUENCY_VALUES.includes(frequency), `event.recurrence.freq must be one of: ${RECURRENCE_FREQUENCY_VALUES.join(", ")}`);
|
|
417
|
-
|
|
418
|
-
|
|
419
|
-
|
|
420
|
-
|
|
421
|
-
|
|
422
|
-
|
|
423
|
-
|
|
424
|
-
|
|
425
|
-
assertFrontMatterCondition(isTimestampLiteral(recurrenceRecord.until), "event.recurrence.until must be a valid ISO timestamp");
|
|
426
|
-
}
|
|
427
|
-
if (recurrenceRecord.by_weekday !== void 0) {
|
|
428
|
-
assertFrontMatterCondition(Array.isArray(recurrenceRecord.by_weekday), "event.recurrence.by_weekday must be an array");
|
|
429
|
-
for (const weekday of recurrenceRecord.by_weekday) {
|
|
430
|
-
assertFrontMatterCondition(typeof weekday === "string", "event.recurrence.by_weekday entries must be strings");
|
|
431
|
-
const normalizedWeekday = weekday.trim().toLowerCase();
|
|
432
|
-
assertFrontMatterCondition(RECURRENCE_WEEKDAY_VALUES.includes(normalizedWeekday), `event.recurrence.by_weekday entries must be one of: ${RECURRENCE_WEEKDAY_VALUES.join(", ")}`);
|
|
433
|
-
}
|
|
434
|
-
}
|
|
435
|
-
if (recurrenceRecord.by_month_day !== void 0) {
|
|
436
|
-
assertFrontMatterCondition(Array.isArray(recurrenceRecord.by_month_day), "event.recurrence.by_month_day must be an array");
|
|
437
|
-
for (const day of recurrenceRecord.by_month_day) {
|
|
438
|
-
assertFrontMatterCondition(typeof day === "number" && Number.isInteger(day) && day >= 1 && day <= 31, "event.recurrence.by_month_day entries must be integers 1..31");
|
|
439
|
-
}
|
|
440
|
-
}
|
|
441
|
-
if (recurrenceRecord.exdates !== void 0) {
|
|
442
|
-
assertFrontMatterCondition(Array.isArray(recurrenceRecord.exdates), "event.recurrence.exdates must be an array");
|
|
443
|
-
for (const exdate of recurrenceRecord.exdates) {
|
|
444
|
-
assertFrontMatterCondition(typeof exdate === "string", "event.recurrence.exdates entries must be strings");
|
|
445
|
-
assertFrontMatterCondition(isTimestampLiteral(exdate), "event.recurrence.exdates entries must be valid ISO timestamps");
|
|
446
|
-
}
|
|
447
|
-
}
|
|
448
|
-
}
|
|
449
|
-
function assertValidFrontMatter(frontMatter, runtimeContext) {
|
|
450
|
-
assertFrontMatterCondition(typeof frontMatter === "object" && frontMatter !== null && !Array.isArray(frontMatter), "front matter must be an object");
|
|
451
|
-
const record = frontMatter;
|
|
472
|
+
assertPositiveIntegerField(recurrenceRecord, "interval", "event.recurrence.interval");
|
|
473
|
+
assertPositiveIntegerField(recurrenceRecord, "count", "event.recurrence.count");
|
|
474
|
+
assertOptionalTimestampString(recurrenceRecord, "until", "event.recurrence.until");
|
|
475
|
+
assertRecurrenceWeekdays(recurrenceRecord.by_weekday);
|
|
476
|
+
assertRecurrenceMonthDays(recurrenceRecord.by_month_day);
|
|
477
|
+
assertRecurrenceExdates(recurrenceRecord.exdates);
|
|
478
|
+
}
|
|
479
|
+
function assertRequiredFrontMatterFields(record) {
|
|
452
480
|
for (const fieldName of REQUIRED_STRING_FIELDS) {
|
|
453
481
|
assertFrontMatterCondition(typeof record[fieldName] === "string", `${fieldName} is required and must be a string`);
|
|
454
482
|
}
|
|
@@ -458,12 +486,17 @@ function assertValidFrontMatter(frontMatter, runtimeContext) {
|
|
|
458
486
|
if (formatVersion !== void 0) {
|
|
459
487
|
assertFrontMatterCondition(typeof formatVersion === "number" && Number.isInteger(formatVersion) && formatVersion >= BASELINE_ITEM_FORMAT_VERSION, `pm_format_version must be an integer >= ${BASELINE_ITEM_FORMAT_VERSION}`);
|
|
460
488
|
}
|
|
489
|
+
return itemType;
|
|
490
|
+
}
|
|
491
|
+
function assertStatusFrontMatterField(record, runtimeContext) {
|
|
461
492
|
const status = record.status;
|
|
462
493
|
assertFrontMatterCondition(typeof status === "string" && status.trim().length > 0, "status must be a non-empty string");
|
|
463
494
|
const statusRegistry = runtimeContext?.statusRegistry;
|
|
464
495
|
const normalizedStatus = normalizeStatusInput(status, statusRegistry);
|
|
465
496
|
const statusDomain = statusRegistry ? statusRegistry.definitions.map((definition) => definition.id) : [...STATUS_VALUES];
|
|
466
497
|
assertFrontMatterCondition(normalizedStatus !== void 0, `status must be one of: ${statusDomain.join(", ")}`);
|
|
498
|
+
}
|
|
499
|
+
function assertPriorityAndTags(record) {
|
|
467
500
|
const priority = record.priority;
|
|
468
501
|
assertFrontMatterCondition(typeof priority === "number" && Number.isInteger(priority) && [0, 1, 2, 3, 4].includes(priority), "priority must be an integer 0..4");
|
|
469
502
|
const tags = record.tags;
|
|
@@ -471,129 +504,176 @@ function assertValidFrontMatter(frontMatter, runtimeContext) {
|
|
|
471
504
|
for (const tag of tags) {
|
|
472
505
|
assertFrontMatterCondition(typeof tag === "string", "tags entries must be strings");
|
|
473
506
|
}
|
|
507
|
+
}
|
|
508
|
+
function assertConfidenceFrontMatterField(record) {
|
|
474
509
|
const confidence = record.confidence;
|
|
475
|
-
if (confidence
|
|
476
|
-
|
|
477
|
-
|
|
478
|
-
|
|
479
|
-
|
|
480
|
-
|
|
481
|
-
assertFrontMatterCondition(isKnownTextConfidence, `confidence string value must be one of: ${[...CONFIDENCE_TEXT_VALUES, "med"].join(", ")}`);
|
|
482
|
-
} else {
|
|
483
|
-
assertFrontMatterCondition(false, "confidence must be a number or string");
|
|
484
|
-
}
|
|
510
|
+
if (confidence === void 0) {
|
|
511
|
+
return;
|
|
512
|
+
}
|
|
513
|
+
if (typeof confidence === "number") {
|
|
514
|
+
assertFrontMatterCondition(Number.isInteger(confidence) && confidence >= 0 && confidence <= 100, "confidence number value must be an integer 0..100");
|
|
515
|
+
return;
|
|
485
516
|
}
|
|
517
|
+
if (typeof confidence === "string") {
|
|
518
|
+
const normalizedConfidence = confidence.trim().toLowerCase();
|
|
519
|
+
const isKnownTextConfidence = normalizedConfidence === "med" || CONFIDENCE_TEXT_VALUES.includes(normalizedConfidence);
|
|
520
|
+
assertFrontMatterCondition(isKnownTextConfidence, `confidence string value must be one of: ${[...CONFIDENCE_TEXT_VALUES, "med"].join(", ")}`);
|
|
521
|
+
return;
|
|
522
|
+
}
|
|
523
|
+
assertFrontMatterCondition(false, "confidence must be a number or string");
|
|
524
|
+
}
|
|
525
|
+
function assertSeverityFrontMatterField(record) {
|
|
486
526
|
const severity = record.severity;
|
|
487
|
-
if (severity
|
|
488
|
-
|
|
489
|
-
validationError("severity must be a string");
|
|
490
|
-
}
|
|
491
|
-
const normalizedSeverity = severity.trim().toLowerCase();
|
|
492
|
-
const isKnownSeverity = normalizedSeverity === "med" || ISSUE_SEVERITY_VALUES.includes(normalizedSeverity);
|
|
493
|
-
assertFrontMatterCondition(isKnownSeverity, `severity value must be one of: ${[...ISSUE_SEVERITY_VALUES, "med"].join(", ")}`);
|
|
494
|
-
}
|
|
495
|
-
const regression = record.regression;
|
|
496
|
-
if (regression !== void 0) {
|
|
497
|
-
if (typeof regression !== "boolean") {
|
|
498
|
-
validationError("regression must be a boolean");
|
|
499
|
-
}
|
|
527
|
+
if (severity === void 0) {
|
|
528
|
+
return;
|
|
500
529
|
}
|
|
501
|
-
|
|
502
|
-
|
|
503
|
-
if (record.deadline !== void 0) {
|
|
504
|
-
assertTimestampField(record, "deadline");
|
|
530
|
+
if (typeof severity !== "string") {
|
|
531
|
+
validationError("severity must be a string");
|
|
505
532
|
}
|
|
506
|
-
|
|
507
|
-
|
|
508
|
-
|
|
509
|
-
|
|
510
|
-
|
|
511
|
-
|
|
512
|
-
|
|
513
|
-
assertFrontMatterCondition(isTimestampLiteral(reminderRecord.at), "reminder.at must be a valid ISO timestamp");
|
|
514
|
-
assertFrontMatterCondition(typeof reminderRecord.text === "string", "reminder.text must be a string");
|
|
515
|
-
assertFrontMatterCondition(reminderRecord.text.trim().length > 0, "reminder.text must not be empty");
|
|
516
|
-
}
|
|
533
|
+
const normalizedSeverity = severity.trim().toLowerCase();
|
|
534
|
+
const isKnownSeverity = normalizedSeverity === "med" || ISSUE_SEVERITY_VALUES.includes(normalizedSeverity);
|
|
535
|
+
assertFrontMatterCondition(isKnownSeverity, `severity value must be one of: ${[...ISSUE_SEVERITY_VALUES, "med"].join(", ")}`);
|
|
536
|
+
}
|
|
537
|
+
function assertRegressionFrontMatterField(record) {
|
|
538
|
+
if (record.regression !== void 0 && typeof record.regression !== "boolean") {
|
|
539
|
+
validationError("regression must be a boolean");
|
|
517
540
|
}
|
|
518
|
-
|
|
519
|
-
|
|
520
|
-
|
|
521
|
-
|
|
522
|
-
|
|
523
|
-
|
|
524
|
-
|
|
525
|
-
|
|
526
|
-
|
|
527
|
-
|
|
528
|
-
|
|
529
|
-
|
|
530
|
-
|
|
531
|
-
|
|
532
|
-
|
|
533
|
-
|
|
534
|
-
|
|
535
|
-
|
|
536
|
-
|
|
537
|
-
|
|
538
|
-
|
|
539
|
-
}
|
|
540
|
-
if (eventRecord.recurrence !== void 0) {
|
|
541
|
-
assertValidRecurrenceRule(eventRecord.recurrence);
|
|
542
|
-
if (eventRecord.recurrence.until !== void 0) {
|
|
543
|
-
assertFrontMatterCondition(compareTimestampStrings(eventRecord.recurrence.until, eventRecord.start_at) >= 0, "event.recurrence.until must be at or after event.start_at");
|
|
544
|
-
}
|
|
545
|
-
}
|
|
541
|
+
}
|
|
542
|
+
function assertReminderEntries(record) {
|
|
543
|
+
const reminders = record.reminders;
|
|
544
|
+
if (reminders === void 0) {
|
|
545
|
+
return;
|
|
546
|
+
}
|
|
547
|
+
assertFrontMatterCondition(Array.isArray(reminders), "reminders must be an array");
|
|
548
|
+
for (const reminder of reminders) {
|
|
549
|
+
assertFrontMatterCondition(typeof reminder === "object" && reminder !== null && !Array.isArray(reminder), "reminders entries must be objects");
|
|
550
|
+
const reminderRecord = reminder;
|
|
551
|
+
assertFrontMatterCondition(typeof reminderRecord.at === "string", "reminder.at must be a string");
|
|
552
|
+
assertFrontMatterCondition(isTimestampLiteral(reminderRecord.at), "reminder.at must be a valid ISO timestamp");
|
|
553
|
+
assertFrontMatterCondition(typeof reminderRecord.text === "string", "reminder.text must be a string");
|
|
554
|
+
assertFrontMatterCondition(reminderRecord.text.trim().length > 0, "reminder.text must not be empty");
|
|
555
|
+
}
|
|
556
|
+
}
|
|
557
|
+
function assertEventStringFields(eventRecord) {
|
|
558
|
+
for (const stringField of ["title", "description", "location", "timezone"]) {
|
|
559
|
+
if (eventRecord[stringField] !== void 0) {
|
|
560
|
+
assertFrontMatterCondition(typeof eventRecord[stringField] === "string", `event.${stringField} must be a string`);
|
|
561
|
+
assertFrontMatterCondition(eventRecord[stringField].trim().length > 0, `event.${stringField} must not be empty`);
|
|
546
562
|
}
|
|
547
563
|
}
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
564
|
+
}
|
|
565
|
+
function assertEventRecurrence(eventRecord) {
|
|
566
|
+
if (eventRecord.recurrence === void 0) {
|
|
567
|
+
return;
|
|
568
|
+
}
|
|
569
|
+
assertValidRecurrenceRule(eventRecord.recurrence);
|
|
570
|
+
if (eventRecord.recurrence.until !== void 0) {
|
|
571
|
+
assertFrontMatterCondition(compareTimestampStrings(eventRecord.recurrence.until, eventRecord.start_at) >= 0, "event.recurrence.until must be at or after event.start_at");
|
|
572
|
+
}
|
|
573
|
+
}
|
|
574
|
+
function assertCalendarEventEntry(event) {
|
|
575
|
+
assertFrontMatterCondition(typeof event === "object" && event !== null && !Array.isArray(event), "events entries must be objects");
|
|
576
|
+
const eventRecord = event;
|
|
577
|
+
assertFrontMatterCondition(typeof eventRecord.start_at === "string", "event.start_at must be a string");
|
|
578
|
+
assertFrontMatterCondition(isTimestampLiteral(eventRecord.start_at), "event.start_at must be a valid ISO timestamp");
|
|
579
|
+
if (eventRecord.end_at !== void 0) {
|
|
580
|
+
assertFrontMatterCondition(typeof eventRecord.end_at === "string", "event.end_at must be a string");
|
|
581
|
+
assertFrontMatterCondition(isTimestampLiteral(eventRecord.end_at), "event.end_at must be a valid ISO timestamp");
|
|
582
|
+
assertFrontMatterCondition(compareTimestampStrings(eventRecord.end_at, eventRecord.start_at) > 0, "event.end_at must be after event.start_at");
|
|
583
|
+
}
|
|
584
|
+
assertEventStringFields(eventRecord);
|
|
585
|
+
if (eventRecord.all_day !== void 0) {
|
|
586
|
+
assertFrontMatterCondition(typeof eventRecord.all_day === "boolean", "event.all_day must be a boolean");
|
|
587
|
+
}
|
|
588
|
+
assertEventRecurrence(eventRecord);
|
|
589
|
+
}
|
|
590
|
+
function assertCalendarEvents(record) {
|
|
591
|
+
const events = record.events;
|
|
592
|
+
if (events === void 0) {
|
|
593
|
+
return;
|
|
552
594
|
}
|
|
595
|
+
assertFrontMatterCondition(Array.isArray(events), "events must be an array");
|
|
596
|
+
for (const event of events) {
|
|
597
|
+
assertCalendarEventEntry(event);
|
|
598
|
+
}
|
|
599
|
+
}
|
|
600
|
+
function assertOptionalStringFields(record) {
|
|
553
601
|
for (const fieldName of ["source_type", "source_owner", "design", "external_ref"]) {
|
|
554
602
|
const value = record[fieldName];
|
|
555
603
|
if (value !== void 0) {
|
|
556
604
|
assertFrontMatterCondition(typeof value === "string", `${fieldName} must be a string`);
|
|
557
605
|
}
|
|
558
606
|
}
|
|
607
|
+
}
|
|
608
|
+
function assertTypeOptionsField(record) {
|
|
559
609
|
const typeOptions = record.type_options;
|
|
560
|
-
if (typeOptions
|
|
561
|
-
|
|
562
|
-
for (const [optionKey, optionValue] of Object.entries(typeOptions)) {
|
|
563
|
-
assertFrontMatterCondition(optionKey.trim().length > 0, "type_options keys must be non-empty");
|
|
564
|
-
assertFrontMatterCondition(typeof optionValue === "string", "type_options values must be strings");
|
|
565
|
-
const optionText = optionValue;
|
|
566
|
-
assertFrontMatterCondition(optionText.trim().length > 0, "type_options values must be non-empty strings");
|
|
567
|
-
}
|
|
610
|
+
if (typeOptions === void 0) {
|
|
611
|
+
return;
|
|
568
612
|
}
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
572
|
-
|
|
573
|
-
|
|
574
|
-
|
|
575
|
-
}
|
|
576
|
-
continue;
|
|
577
|
-
}
|
|
578
|
-
try {
|
|
579
|
-
record[definition.metadata_key] = coerceRuntimeFieldValue(definition, fieldValue, `metadata field "${definition.metadata_key}"`);
|
|
580
|
-
} catch (error) {
|
|
581
|
-
validationError(String(error?.message).replace(/^Invalid\s+/u, ""));
|
|
582
|
-
}
|
|
583
|
-
}
|
|
613
|
+
assertFrontMatterCondition(typeof typeOptions === "object" && typeOptions !== null && !Array.isArray(typeOptions), "type_options must be an object");
|
|
614
|
+
for (const [optionKey, optionValue] of Object.entries(typeOptions)) {
|
|
615
|
+
assertFrontMatterCondition(optionKey.trim().length > 0, "type_options keys must be non-empty");
|
|
616
|
+
assertFrontMatterCondition(typeof optionValue === "string", "type_options values must be strings");
|
|
617
|
+
const optionText = optionValue;
|
|
618
|
+
assertFrontMatterCondition(optionText.trim().length > 0, "type_options values must be non-empty strings");
|
|
584
619
|
}
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
|
|
591
|
-
|
|
592
|
-
|
|
620
|
+
}
|
|
621
|
+
function coerceRuntimeFrontMatterFields(record, itemType, runtimeContext) {
|
|
622
|
+
if (!runtimeContext?.fieldRegistry) {
|
|
623
|
+
return;
|
|
624
|
+
}
|
|
625
|
+
for (const definition of runtimeContext.fieldRegistry.definitions) {
|
|
626
|
+
const fieldValue = record[definition.metadata_key];
|
|
627
|
+
if (fieldValue === void 0) {
|
|
628
|
+
if (runtimeFieldRequiredForType(definition, itemType)) {
|
|
629
|
+
validationError(`missing required schema field: ${definition.metadata_key}`);
|
|
593
630
|
}
|
|
631
|
+
continue;
|
|
632
|
+
}
|
|
633
|
+
try {
|
|
634
|
+
record[definition.metadata_key] = coerceRuntimeFieldValue(definition, fieldValue, `metadata field "${definition.metadata_key}"`);
|
|
635
|
+
} catch (error) {
|
|
636
|
+
validationError(String(error?.message).replace(/^Invalid\s+/u, ""));
|
|
594
637
|
}
|
|
595
638
|
}
|
|
596
639
|
}
|
|
640
|
+
function assertRuntimeUnknownFrontMatterFields(record, runtimeContext) {
|
|
641
|
+
if (!runtimeContext || runtimeContext.unknownFieldPolicy === "allow") {
|
|
642
|
+
return;
|
|
643
|
+
}
|
|
644
|
+
const knownKeys = buildKnownFrontMatterKeys(runtimeContext);
|
|
645
|
+
const unknownKeys = Object.keys(record).filter((key) => !knownKeys.has(key)).sort((left, right) => left.localeCompare(right));
|
|
646
|
+
if (unknownKeys.length === 0) {
|
|
647
|
+
return;
|
|
648
|
+
}
|
|
649
|
+
if (runtimeContext.unknownFieldPolicy === "reject") {
|
|
650
|
+
validationError(`unknown schema fields are not allowed: ${unknownKeys.join(", ")}`);
|
|
651
|
+
} else {
|
|
652
|
+
runtimeContext.onWarning?.(`item_unknown_schema_fields:${unknownKeys.join(",")}`);
|
|
653
|
+
}
|
|
654
|
+
}
|
|
655
|
+
function assertValidFrontMatter(frontMatter, runtimeContext) {
|
|
656
|
+
assertFrontMatterCondition(typeof frontMatter === "object" && frontMatter !== null && !Array.isArray(frontMatter), "front matter must be an object");
|
|
657
|
+
const record = frontMatter;
|
|
658
|
+
const itemType = assertRequiredFrontMatterFields(record);
|
|
659
|
+
assertStatusFrontMatterField(record, runtimeContext);
|
|
660
|
+
assertPriorityAndTags(record);
|
|
661
|
+
assertConfidenceFrontMatterField(record);
|
|
662
|
+
assertSeverityFrontMatterField(record);
|
|
663
|
+
assertRegressionFrontMatterField(record);
|
|
664
|
+
assertTimestampField(record, "created_at");
|
|
665
|
+
assertTimestampField(record, "updated_at");
|
|
666
|
+
if (record.deadline !== void 0) {
|
|
667
|
+
assertTimestampField(record, "deadline");
|
|
668
|
+
}
|
|
669
|
+
assertReminderEntries(record);
|
|
670
|
+
assertCalendarEvents(record);
|
|
671
|
+
assertOptionalTimestampString(record, "closed_at", "closed_at");
|
|
672
|
+
assertOptionalStringFields(record);
|
|
673
|
+
assertTypeOptionsField(record);
|
|
674
|
+
coerceRuntimeFrontMatterFields(record, itemType, runtimeContext);
|
|
675
|
+
assertRuntimeUnknownFrontMatterFields(record, runtimeContext);
|
|
676
|
+
}
|
|
597
677
|
function sortDependencies(values) {
|
|
598
678
|
if (!values || values.length === 0)
|
|
599
679
|
return void 0;
|
|
@@ -671,52 +751,38 @@ function normalizeRecurrenceRule(value) {
|
|
|
671
751
|
return normalized;
|
|
672
752
|
}
|
|
673
753
|
function sortEvents(values) {
|
|
674
|
-
if (!values || values.length === 0) {
|
|
754
|
+
if (!Array.isArray(values) || values.length === 0) {
|
|
675
755
|
return void 0;
|
|
676
756
|
}
|
|
677
|
-
const normalized = [...values].map((
|
|
678
|
-
const event = {
|
|
679
|
-
start_at: value.start_at,
|
|
680
|
-
end_at: value.end_at || void 0,
|
|
681
|
-
title: value.title?.trim() || void 0,
|
|
682
|
-
description: value.description?.trim() || void 0,
|
|
683
|
-
location: value.location?.trim() || void 0,
|
|
684
|
-
all_day: value.all_day,
|
|
685
|
-
timezone: value.timezone?.trim() || void 0,
|
|
686
|
-
recurrence: normalizeRecurrenceRule(value.recurrence)
|
|
687
|
-
};
|
|
688
|
-
for (const [key, fieldValue] of Object.entries(event)) {
|
|
689
|
-
if (fieldValue === void 0) {
|
|
690
|
-
delete event[key];
|
|
691
|
-
}
|
|
692
|
-
}
|
|
693
|
-
return event;
|
|
694
|
-
}).sort((a, b) => {
|
|
695
|
-
const byStart = compareTimestampStrings(a.start_at, b.start_at);
|
|
696
|
-
if (byStart !== 0)
|
|
697
|
-
return byStart;
|
|
698
|
-
const byEnd = (a.end_at ?? "").localeCompare(b.end_at ?? "");
|
|
699
|
-
if (byEnd !== 0)
|
|
700
|
-
return byEnd;
|
|
701
|
-
const byTitle = (a.title ?? "").localeCompare(b.title ?? "");
|
|
702
|
-
if (byTitle !== 0)
|
|
703
|
-
return byTitle;
|
|
704
|
-
const byAllDay = Number(Boolean(a.all_day)) - Number(Boolean(b.all_day));
|
|
705
|
-
if (byAllDay !== 0)
|
|
706
|
-
return byAllDay;
|
|
707
|
-
const byTimezone = (a.timezone ?? "").localeCompare(b.timezone ?? "");
|
|
708
|
-
if (byTimezone !== 0)
|
|
709
|
-
return byTimezone;
|
|
710
|
-
const byLocation = (a.location ?? "").localeCompare(b.location ?? "");
|
|
711
|
-
if (byLocation !== 0)
|
|
712
|
-
return byLocation;
|
|
713
|
-
const byDescription = (a.description ?? "").localeCompare(b.description ?? "");
|
|
714
|
-
if (byDescription !== 0)
|
|
715
|
-
return byDescription;
|
|
716
|
-
return JSON.stringify(a.recurrence ?? {}).localeCompare(JSON.stringify(b.recurrence ?? {}));
|
|
717
|
-
});
|
|
757
|
+
const normalized = [...values].map(normalizeCalendarEvent).sort(compareCalendarEvents);
|
|
718
758
|
return normalized;
|
|
719
759
|
}
|
|
760
|
+
function normalizeCalendarEvent(value) {
|
|
761
|
+
const event = {
|
|
762
|
+
start_at: value.start_at,
|
|
763
|
+
end_at: value.end_at || void 0,
|
|
764
|
+
title: value.title?.trim() || void 0,
|
|
765
|
+
description: value.description?.trim() || void 0,
|
|
766
|
+
location: value.location?.trim() || void 0,
|
|
767
|
+
all_day: value.all_day,
|
|
768
|
+
timezone: value.timezone?.trim() || void 0,
|
|
769
|
+
recurrence: normalizeRecurrenceRule(value.recurrence)
|
|
770
|
+
};
|
|
771
|
+
deleteUndefinedFields(event);
|
|
772
|
+
return event;
|
|
773
|
+
}
|
|
774
|
+
function compareCalendarEvents(a, b) {
|
|
775
|
+
return firstNonZeroComparison([
|
|
776
|
+
compareTimestampStrings(a.start_at, b.start_at),
|
|
777
|
+
(a.end_at ?? "").localeCompare(b.end_at ?? ""),
|
|
778
|
+
(a.title ?? "").localeCompare(b.title ?? ""),
|
|
779
|
+
Number(Boolean(a.all_day)) - Number(Boolean(b.all_day)),
|
|
780
|
+
(a.timezone ?? "").localeCompare(b.timezone ?? ""),
|
|
781
|
+
(a.location ?? "").localeCompare(b.location ?? ""),
|
|
782
|
+
(a.description ?? "").localeCompare(b.description ?? ""),
|
|
783
|
+
JSON.stringify(a.recurrence ?? {}).localeCompare(JSON.stringify(b.recurrence ?? {}))
|
|
784
|
+
]);
|
|
785
|
+
}
|
|
720
786
|
function normalizeFiles(values) {
|
|
721
787
|
if (!values || values.length === 0)
|
|
722
788
|
return void 0;
|
|
@@ -729,83 +795,140 @@ function normalizeFiles(values) {
|
|
|
729
795
|
function normalizeTestRunSummaries(values) {
|
|
730
796
|
if (!values || values.length === 0)
|
|
731
797
|
return void 0;
|
|
732
|
-
const normalized = values.map((value) =>
|
|
733
|
-
const runId = typeof value.run_id === "string" ? value.run_id.trim() : "";
|
|
734
|
-
const kind = value.kind === "test" || value.kind === "test-all" ? value.kind : "test";
|
|
735
|
-
const status = value.status === "passed" || value.status === "failed" || value.status === "stopped" || value.status === "canceled" ? value.status : "failed";
|
|
736
|
-
const startedAt = typeof value.started_at === "string" ? value.started_at : "";
|
|
737
|
-
const finishedAt = typeof value.finished_at === "string" ? value.finished_at : "";
|
|
738
|
-
const recordedAt = typeof value.recorded_at === "string" ? value.recorded_at : "";
|
|
739
|
-
const passed = typeof value.passed === "number" && Number.isFinite(value.passed) ? Math.max(0, Math.floor(value.passed)) : 0;
|
|
740
|
-
const failed = typeof value.failed === "number" && Number.isFinite(value.failed) ? Math.max(0, Math.floor(value.failed)) : 0;
|
|
741
|
-
const skipped = typeof value.skipped === "number" && Number.isFinite(value.skipped) ? Math.max(0, Math.floor(value.skipped)) : 0;
|
|
742
|
-
return {
|
|
743
|
-
run_id: runId,
|
|
744
|
-
kind,
|
|
745
|
-
status,
|
|
746
|
-
started_at: startedAt,
|
|
747
|
-
finished_at: finishedAt,
|
|
748
|
-
recorded_at: recordedAt,
|
|
749
|
-
attempt: typeof value.attempt === "number" && Number.isFinite(value.attempt) && value.attempt >= 1 ? Math.floor(value.attempt) : void 0,
|
|
750
|
-
resumed_from: value.resumed_from?.trim() || void 0,
|
|
751
|
-
passed,
|
|
752
|
-
failed,
|
|
753
|
-
skipped,
|
|
754
|
-
items: typeof value.items === "number" && Number.isFinite(value.items) && value.items >= 0 ? Math.floor(value.items) : void 0,
|
|
755
|
-
linked_tests: typeof value.linked_tests === "number" && Number.isFinite(value.linked_tests) && value.linked_tests >= 0 ? Math.floor(value.linked_tests) : void 0,
|
|
756
|
-
fail_on_skipped_triggered: value.fail_on_skipped_triggered === true ? true : void 0
|
|
757
|
-
};
|
|
758
|
-
}).filter((value) => value.run_id.length > 0 && value.started_at.length > 0 && value.finished_at.length > 0 && value.recorded_at.length > 0).sort((a, b) => firstNonZeroComparison([
|
|
798
|
+
const normalized = values.map(normalizeTestRunSummary).filter((value) => value.run_id.length > 0 && value.started_at.length > 0 && value.finished_at.length > 0 && value.recorded_at.length > 0).sort((a, b) => firstNonZeroComparison([
|
|
759
799
|
compareTimestampStrings(a.recorded_at, b.recorded_at),
|
|
760
800
|
a.run_id.localeCompare(b.run_id),
|
|
761
801
|
a.kind.localeCompare(b.kind)
|
|
762
802
|
]));
|
|
763
803
|
return normalized.length > 0 ? normalized : void 0;
|
|
764
804
|
}
|
|
805
|
+
function normalizeNonNegativeInteger(value) {
|
|
806
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 0 ? Math.floor(value) : void 0;
|
|
807
|
+
}
|
|
808
|
+
function normalizePositiveInteger(value) {
|
|
809
|
+
return typeof value === "number" && Number.isFinite(value) && value >= 1 ? Math.floor(value) : void 0;
|
|
810
|
+
}
|
|
811
|
+
function stringOrEmpty(value) {
|
|
812
|
+
return typeof value === "string" ? value : "";
|
|
813
|
+
}
|
|
814
|
+
function normalizeTestRunSummary(value) {
|
|
815
|
+
const runId = typeof value.run_id === "string" ? value.run_id.trim() : "";
|
|
816
|
+
const kind = value.kind === "test" || value.kind === "test-all" ? value.kind : "test";
|
|
817
|
+
const status = ITEM_TEST_RUN_STATUS_VALUES.has(value.status) ? value.status : "failed";
|
|
818
|
+
const summary = {
|
|
819
|
+
run_id: runId,
|
|
820
|
+
kind,
|
|
821
|
+
status,
|
|
822
|
+
started_at: stringOrEmpty(value.started_at),
|
|
823
|
+
finished_at: stringOrEmpty(value.finished_at),
|
|
824
|
+
recorded_at: stringOrEmpty(value.recorded_at),
|
|
825
|
+
attempt: normalizePositiveInteger(value.attempt),
|
|
826
|
+
resumed_from: value.resumed_from?.trim() || void 0,
|
|
827
|
+
passed: normalizeNonNegativeInteger(value.passed) ?? 0,
|
|
828
|
+
failed: normalizeNonNegativeInteger(value.failed) ?? 0,
|
|
829
|
+
skipped: normalizeNonNegativeInteger(value.skipped) ?? 0,
|
|
830
|
+
items: normalizeNonNegativeInteger(value.items),
|
|
831
|
+
linked_tests: normalizeNonNegativeInteger(value.linked_tests),
|
|
832
|
+
fail_on_skipped_triggered: value.fail_on_skipped_triggered === true ? true : void 0
|
|
833
|
+
};
|
|
834
|
+
deleteUndefinedFields(summary);
|
|
835
|
+
return summary;
|
|
836
|
+
}
|
|
765
837
|
function sortTests(values) {
|
|
766
|
-
if (!values || values.length === 0)
|
|
838
|
+
if (!Array.isArray(values) || values.length === 0)
|
|
767
839
|
return void 0;
|
|
768
|
-
return [...values].map((
|
|
840
|
+
return [...values].map(normalizeLinkedTest).sort(compareLinkedTests);
|
|
841
|
+
}
|
|
842
|
+
function normalizeTrimmedStringList(value) {
|
|
843
|
+
if (!Array.isArray(value)) {
|
|
844
|
+
return void 0;
|
|
845
|
+
}
|
|
846
|
+
const normalized = [
|
|
847
|
+
...new Set(value.filter((entry) => typeof entry === "string").map((entry) => entry.trim()).filter((entry) => entry.length > 0))
|
|
848
|
+
].sort((a, b) => a.localeCompare(b));
|
|
849
|
+
return normalized.length > 0 ? normalized : void 0;
|
|
850
|
+
}
|
|
851
|
+
function isPlainObjectRecord(value) {
|
|
852
|
+
if (!value || typeof value !== "object" || Array.isArray(value)) {
|
|
853
|
+
return false;
|
|
854
|
+
}
|
|
855
|
+
const prototype = Object.getPrototypeOf(value);
|
|
856
|
+
return prototype === Object.prototype || prototype === null;
|
|
857
|
+
}
|
|
858
|
+
function isUnsafeObjectKey(key) {
|
|
859
|
+
return key === "__proto__" || key === "constructor" || key === "prototype";
|
|
860
|
+
}
|
|
861
|
+
function normalizeStringRecord(value) {
|
|
862
|
+
if (!isPlainObjectRecord(value)) {
|
|
863
|
+
return void 0;
|
|
864
|
+
}
|
|
865
|
+
const entries = Object.entries(value).map(([key, recordValue]) => [key.trim(), String(recordValue).trim()]).filter(([key, recordValue]) => key.length > 0 && !isUnsafeObjectKey(key) && recordValue.length > 0).sort(([left], [right]) => left.localeCompare(right));
|
|
866
|
+
return entries.length > 0 ? Object.fromEntries(entries) : void 0;
|
|
867
|
+
}
|
|
868
|
+
function normalizeNumericRecord(value) {
|
|
869
|
+
if (!isPlainObjectRecord(value)) {
|
|
870
|
+
return void 0;
|
|
871
|
+
}
|
|
872
|
+
const entries = Object.entries(value).map(([key, recordValue]) => [key.trim(), Number(recordValue)]).filter(([key, recordValue]) => key.length > 0 && !isUnsafeObjectKey(key) && Number.isFinite(recordValue)).sort(([left], [right]) => left.localeCompare(right));
|
|
873
|
+
return entries.length > 0 ? Object.fromEntries(entries) : void 0;
|
|
874
|
+
}
|
|
875
|
+
function normalizeLinkedTestContextMode(value) {
|
|
876
|
+
const normalized = value?.trim().toLowerCase();
|
|
877
|
+
if (!normalized || !LINKED_TEST_PM_CONTEXT_MODE_VALUES.has(normalized)) {
|
|
878
|
+
return void 0;
|
|
879
|
+
}
|
|
880
|
+
return normalized;
|
|
881
|
+
}
|
|
882
|
+
function normalizeLinkedTest(value) {
|
|
883
|
+
const test = {
|
|
769
884
|
command: value.command?.trim() || void 0,
|
|
770
885
|
path: value.path ? normalizePathValue(value.path) : void 0,
|
|
771
886
|
scope: value.scope,
|
|
772
887
|
timeout_seconds: typeof value.timeout_seconds === "number" && Number.isFinite(value.timeout_seconds) && value.timeout_seconds > 0 ? value.timeout_seconds : void 0,
|
|
773
|
-
pm_context_mode: (
|
|
774
|
-
|
|
775
|
-
|
|
776
|
-
return void 0;
|
|
777
|
-
}
|
|
778
|
-
return normalized;
|
|
779
|
-
})(),
|
|
780
|
-
env_set: value.env_set ? Object.fromEntries(Object.entries(value.env_set).map(([key, envValue]) => [key.trim(), String(envValue).trim()]).filter(([key, envValue]) => key.length > 0 && envValue.length > 0).sort(([left], [right]) => left.localeCompare(right))) : void 0,
|
|
781
|
-
env_clear: value.env_clear ? [...new Set(value.env_clear.map((entry) => entry.trim()).filter((entry) => entry.length > 0))].sort((a, b) => a.localeCompare(b)) : void 0,
|
|
888
|
+
pm_context_mode: normalizeLinkedTestContextMode(value.pm_context_mode),
|
|
889
|
+
env_set: normalizeStringRecord(value.env_set),
|
|
890
|
+
env_clear: normalizeTrimmedStringList(value.env_clear),
|
|
782
891
|
shared_host_safe: value.shared_host_safe === true ? true : void 0,
|
|
783
|
-
assert_stdout_contains:
|
|
784
|
-
assert_stdout_regex:
|
|
785
|
-
assert_stderr_contains:
|
|
786
|
-
assert_stderr_regex:
|
|
787
|
-
assert_stdout_min_lines:
|
|
788
|
-
assert_json_field_equals:
|
|
789
|
-
assert_json_field_gte:
|
|
892
|
+
assert_stdout_contains: normalizeTrimmedStringList(value.assert_stdout_contains),
|
|
893
|
+
assert_stdout_regex: normalizeTrimmedStringList(value.assert_stdout_regex),
|
|
894
|
+
assert_stderr_contains: normalizeTrimmedStringList(value.assert_stderr_contains),
|
|
895
|
+
assert_stderr_regex: normalizeTrimmedStringList(value.assert_stderr_regex),
|
|
896
|
+
assert_stdout_min_lines: normalizeNonNegativeInteger(value.assert_stdout_min_lines),
|
|
897
|
+
assert_json_field_equals: normalizeStringRecord(value.assert_json_field_equals),
|
|
898
|
+
assert_json_field_gte: normalizeNumericRecord(value.assert_json_field_gte),
|
|
790
899
|
note: value.note?.trim() || void 0
|
|
791
|
-
}
|
|
900
|
+
};
|
|
901
|
+
deleteUndefinedFields(test);
|
|
902
|
+
return test;
|
|
903
|
+
}
|
|
904
|
+
function compareLinkedTests(a, b) {
|
|
905
|
+
return firstNonZeroComparison([
|
|
792
906
|
a.scope.localeCompare(b.scope),
|
|
793
|
-
(a.path
|
|
794
|
-
(a.command
|
|
795
|
-
(a.timeout_seconds
|
|
796
|
-
(a.pm_context_mode
|
|
907
|
+
compareOptionalStrings(a.path, b.path),
|
|
908
|
+
compareOptionalStrings(a.command, b.command),
|
|
909
|
+
compareOptionalNumbers(a.timeout_seconds, b.timeout_seconds),
|
|
910
|
+
compareOptionalStrings(a.pm_context_mode, b.pm_context_mode),
|
|
797
911
|
Number(Boolean(a.shared_host_safe)) - Number(Boolean(b.shared_host_safe)),
|
|
798
|
-
|
|
799
|
-
|
|
800
|
-
|
|
801
|
-
|
|
802
|
-
|
|
803
|
-
|
|
804
|
-
(a.assert_stdout_min_lines
|
|
805
|
-
|
|
806
|
-
|
|
807
|
-
(a.note
|
|
808
|
-
])
|
|
912
|
+
compareJsonValues(a.env_clear, b.env_clear, []),
|
|
913
|
+
compareJsonValues(a.env_set, b.env_set, {}),
|
|
914
|
+
compareJsonValues(a.assert_stdout_contains, b.assert_stdout_contains, []),
|
|
915
|
+
compareJsonValues(a.assert_stdout_regex, b.assert_stdout_regex, []),
|
|
916
|
+
compareJsonValues(a.assert_stderr_contains, b.assert_stderr_contains, []),
|
|
917
|
+
compareJsonValues(a.assert_stderr_regex, b.assert_stderr_regex, []),
|
|
918
|
+
compareOptionalNumbers(a.assert_stdout_min_lines, b.assert_stdout_min_lines),
|
|
919
|
+
compareJsonValues(a.assert_json_field_equals, b.assert_json_field_equals, {}),
|
|
920
|
+
compareJsonValues(a.assert_json_field_gte, b.assert_json_field_gte, {}),
|
|
921
|
+
compareOptionalStrings(a.note, b.note)
|
|
922
|
+
]);
|
|
923
|
+
}
|
|
924
|
+
function compareOptionalStrings(left, right) {
|
|
925
|
+
return (left ?? "").localeCompare(right ?? "");
|
|
926
|
+
}
|
|
927
|
+
function compareOptionalNumbers(left, right) {
|
|
928
|
+
return (left ?? 0) - (right ?? 0);
|
|
929
|
+
}
|
|
930
|
+
function compareJsonValues(left, right, fallback) {
|
|
931
|
+
return JSON.stringify(left ?? fallback).localeCompare(JSON.stringify(right ?? fallback));
|
|
809
932
|
}
|
|
810
933
|
function sortDocs(values) {
|
|
811
934
|
if (!values || values.length === 0)
|
|
@@ -918,65 +1041,71 @@ function normalizePlanStepDocs(value) {
|
|
|
918
1041
|
}
|
|
919
1042
|
return out.length > 0 ? out : void 0;
|
|
920
1043
|
}
|
|
1044
|
+
function normalizePlanStepEntry(entry) {
|
|
1045
|
+
if (entry === null || typeof entry !== "object") {
|
|
1046
|
+
return void 0;
|
|
1047
|
+
}
|
|
1048
|
+
const record = entry;
|
|
1049
|
+
const id = trimStringOrUndefined(record.id);
|
|
1050
|
+
const title = trimStringOrUndefined(record.title);
|
|
1051
|
+
const statusRaw = trimStringOrUndefined(record.status);
|
|
1052
|
+
const status = statusRaw && PLAN_STEP_STATUS_SET.has(statusRaw) ? statusRaw : void 0;
|
|
1053
|
+
const orderRaw = record.order;
|
|
1054
|
+
const order = typeof orderRaw === "number" && Number.isFinite(orderRaw) ? orderRaw : typeof orderRaw === "string" && orderRaw.trim().length > 0 ? Number(orderRaw) : Number.NaN;
|
|
1055
|
+
const created_at = typeof record.created_at === "string" ? record.created_at : "";
|
|
1056
|
+
const updated_at = typeof record.updated_at === "string" ? record.updated_at : "";
|
|
1057
|
+
if (!id || !title || !status || !Number.isFinite(order) || !created_at || !updated_at) {
|
|
1058
|
+
return void 0;
|
|
1059
|
+
}
|
|
1060
|
+
const step = {
|
|
1061
|
+
id,
|
|
1062
|
+
order,
|
|
1063
|
+
title,
|
|
1064
|
+
status,
|
|
1065
|
+
created_at,
|
|
1066
|
+
updated_at
|
|
1067
|
+
};
|
|
1068
|
+
applyPlanStepOptionalFields(step, record);
|
|
1069
|
+
return step;
|
|
1070
|
+
}
|
|
1071
|
+
function applyPlanStepOptionalFields(step, record) {
|
|
1072
|
+
const stringFields = [
|
|
1073
|
+
["body", "body"],
|
|
1074
|
+
["owner", "owner"],
|
|
1075
|
+
["evidence", "evidence"],
|
|
1076
|
+
["blocked_reason", "blocked_reason"],
|
|
1077
|
+
["superseded_by", "superseded_by"]
|
|
1078
|
+
];
|
|
1079
|
+
for (const [target, source] of stringFields) {
|
|
1080
|
+
const value = trimStringOrUndefined(record[source]);
|
|
1081
|
+
if (value) {
|
|
1082
|
+
step[target] = value;
|
|
1083
|
+
}
|
|
1084
|
+
}
|
|
1085
|
+
const completedAt = typeof record.completed_at === "string" ? record.completed_at : void 0;
|
|
1086
|
+
if (completedAt && completedAt.length > 0) {
|
|
1087
|
+
step.completed_at = completedAt;
|
|
1088
|
+
}
|
|
1089
|
+
const collectionFields = [
|
|
1090
|
+
["linked_items", "linked_items", normalizePlanStepLinks],
|
|
1091
|
+
["files", "files", normalizePlanStepFiles],
|
|
1092
|
+
["tests", "tests", normalizePlanStepTests],
|
|
1093
|
+
["docs", "docs", normalizePlanStepDocs]
|
|
1094
|
+
];
|
|
1095
|
+
for (const [target, source, normalize] of collectionFields) {
|
|
1096
|
+
const value = normalize(record[source]);
|
|
1097
|
+
if (value) {
|
|
1098
|
+
step[target] = value;
|
|
1099
|
+
}
|
|
1100
|
+
}
|
|
1101
|
+
}
|
|
921
1102
|
function normalizePlanSteps(value) {
|
|
922
1103
|
if (!Array.isArray(value))
|
|
923
1104
|
return void 0;
|
|
924
|
-
const out =
|
|
925
|
-
|
|
926
|
-
|
|
927
|
-
|
|
928
|
-
const record = entry;
|
|
929
|
-
const id = trimStringOrUndefined(record.id);
|
|
930
|
-
const title = trimStringOrUndefined(record.title);
|
|
931
|
-
const status = trimStringOrUndefined(record.status);
|
|
932
|
-
const orderRaw = record.order;
|
|
933
|
-
const order = typeof orderRaw === "number" && Number.isFinite(orderRaw) ? orderRaw : Number(orderRaw);
|
|
934
|
-
if (!id || !title || !status || !Number.isFinite(order))
|
|
935
|
-
continue;
|
|
936
|
-
const created_at = typeof record.created_at === "string" ? record.created_at : "";
|
|
937
|
-
const updated_at = typeof record.updated_at === "string" ? record.updated_at : "";
|
|
938
|
-
if (!created_at || !updated_at)
|
|
939
|
-
continue;
|
|
940
|
-
const step = {
|
|
941
|
-
id,
|
|
942
|
-
order,
|
|
943
|
-
title,
|
|
944
|
-
status,
|
|
945
|
-
created_at,
|
|
946
|
-
updated_at
|
|
947
|
-
};
|
|
948
|
-
const body = trimStringOrUndefined(record.body);
|
|
949
|
-
if (body)
|
|
950
|
-
step.body = body;
|
|
951
|
-
const owner = trimStringOrUndefined(record.owner);
|
|
952
|
-
if (owner)
|
|
953
|
-
step.owner = owner;
|
|
954
|
-
const evidence = trimStringOrUndefined(record.evidence);
|
|
955
|
-
if (evidence)
|
|
956
|
-
step.evidence = evidence;
|
|
957
|
-
const blockedReason = trimStringOrUndefined(record.blocked_reason);
|
|
958
|
-
if (blockedReason)
|
|
959
|
-
step.blocked_reason = blockedReason;
|
|
960
|
-
const supersededBy = trimStringOrUndefined(record.superseded_by);
|
|
961
|
-
if (supersededBy)
|
|
962
|
-
step.superseded_by = supersededBy;
|
|
963
|
-
const completedAt = typeof record.completed_at === "string" ? record.completed_at : void 0;
|
|
964
|
-
if (completedAt && completedAt.length > 0)
|
|
965
|
-
step.completed_at = completedAt;
|
|
966
|
-
const links = normalizePlanStepLinks(record.linked_items);
|
|
967
|
-
if (links)
|
|
968
|
-
step.linked_items = links;
|
|
969
|
-
const files = normalizePlanStepFiles(record.files);
|
|
970
|
-
if (files)
|
|
971
|
-
step.files = files;
|
|
972
|
-
const tests = normalizePlanStepTests(record.tests);
|
|
973
|
-
if (tests)
|
|
974
|
-
step.tests = tests;
|
|
975
|
-
const docs = normalizePlanStepDocs(record.docs);
|
|
976
|
-
if (docs)
|
|
977
|
-
step.docs = docs;
|
|
978
|
-
out.push(step);
|
|
979
|
-
}
|
|
1105
|
+
const out = value.flatMap((entry) => {
|
|
1106
|
+
const step = normalizePlanStepEntry(entry);
|
|
1107
|
+
return step ? [step] : [];
|
|
1108
|
+
});
|
|
980
1109
|
out.sort((left, right) => left.order - right.order);
|
|
981
1110
|
return out.length > 0 ? out : void 0;
|
|
982
1111
|
}
|
|
@@ -1096,6 +1225,46 @@ function normalizeSeverityValue(value) {
|
|
|
1096
1225
|
}
|
|
1097
1226
|
return void 0;
|
|
1098
1227
|
}
|
|
1228
|
+
function emptyStringToUndefined(value) {
|
|
1229
|
+
return value || void 0;
|
|
1230
|
+
}
|
|
1231
|
+
function copyExtensionFrontMatterFields(normalized, source) {
|
|
1232
|
+
const targetRecord = normalized;
|
|
1233
|
+
const sourceRecord = source;
|
|
1234
|
+
for (const [key, value] of Object.entries(sourceRecord)) {
|
|
1235
|
+
if (isUnsafeObjectKey(key) || Object.prototype.hasOwnProperty.call(targetRecord, key) || value === void 0) {
|
|
1236
|
+
continue;
|
|
1237
|
+
}
|
|
1238
|
+
targetRecord[key] = value;
|
|
1239
|
+
}
|
|
1240
|
+
}
|
|
1241
|
+
function coerceNormalizedRuntimeFields(normalized, runtimeContext) {
|
|
1242
|
+
if (!runtimeContext?.fieldRegistry) {
|
|
1243
|
+
return;
|
|
1244
|
+
}
|
|
1245
|
+
const record = normalized;
|
|
1246
|
+
for (const definition of runtimeContext.fieldRegistry.definitions) {
|
|
1247
|
+
const currentValue = record[definition.metadata_key];
|
|
1248
|
+
if (currentValue === void 0) {
|
|
1249
|
+
continue;
|
|
1250
|
+
}
|
|
1251
|
+
record[definition.metadata_key] = coerceRuntimeFieldValue(definition, currentValue, `metadata field "${definition.metadata_key}"`);
|
|
1252
|
+
}
|
|
1253
|
+
}
|
|
1254
|
+
function assertNormalizedUnknownFields(normalized, runtimeContext) {
|
|
1255
|
+
if (!runtimeContext || runtimeContext.unknownFieldPolicy === "allow") {
|
|
1256
|
+
return;
|
|
1257
|
+
}
|
|
1258
|
+
const knownKeys = buildKnownFrontMatterKeys(runtimeContext);
|
|
1259
|
+
const record = normalized;
|
|
1260
|
+
const unknownKeys = Object.keys(record).filter((key) => !knownKeys.has(key)).sort((left, right) => left.localeCompare(right));
|
|
1261
|
+
if (unknownKeys.length > 0 && runtimeContext.unknownFieldPolicy === "reject") {
|
|
1262
|
+
validationError(`unknown schema fields are not allowed: ${unknownKeys.join(", ")}`);
|
|
1263
|
+
}
|
|
1264
|
+
if (unknownKeys.length > 0) {
|
|
1265
|
+
runtimeContext.onWarning?.(`item_unknown_schema_fields:${unknownKeys.join(",")}`);
|
|
1266
|
+
}
|
|
1267
|
+
}
|
|
1099
1268
|
function normalizeFrontMatter(frontMatter, options = {}) {
|
|
1100
1269
|
const runtimeContext = resolveRuntimeSchemaValidationContext(options);
|
|
1101
1270
|
const normalizedStatus = normalizeStatusInput(frontMatter.status, runtimeContext?.statusRegistry) ?? frontMatter.status;
|
|
@@ -1106,7 +1275,7 @@ function normalizeFrontMatter(frontMatter, options = {}) {
|
|
|
1106
1275
|
description: frontMatter.description,
|
|
1107
1276
|
type: frontMatter.type,
|
|
1108
1277
|
pm_format_version: normalizeItemFormatVersion(frontMatter.pm_format_version),
|
|
1109
|
-
source_type: frontMatter.source_type
|
|
1278
|
+
source_type: trimStringOrUndefined(frontMatter.source_type),
|
|
1110
1279
|
type_options: normalizeTypeOptions(frontMatter.type_options),
|
|
1111
1280
|
status: normalizedStatus,
|
|
1112
1281
|
priority: frontMatter.priority,
|
|
@@ -1121,47 +1290,47 @@ function normalizeFrontMatter(frontMatter, options = {}) {
|
|
|
1121
1290
|
tests: sortTests(frontMatter.tests),
|
|
1122
1291
|
test_runs: normalizeTestRunSummaries(frontMatter.test_runs),
|
|
1123
1292
|
docs: sortDocs(frontMatter.docs),
|
|
1124
|
-
deadline: frontMatter.deadline
|
|
1293
|
+
deadline: emptyStringToUndefined(frontMatter.deadline),
|
|
1125
1294
|
reminders: sortReminders(frontMatter.reminders),
|
|
1126
1295
|
events: sortEvents(frontMatter.events),
|
|
1127
|
-
closed_at: frontMatter.closed_at
|
|
1128
|
-
assignee: frontMatter.assignee
|
|
1129
|
-
source_owner: frontMatter.source_owner
|
|
1130
|
-
author: frontMatter.author
|
|
1296
|
+
closed_at: emptyStringToUndefined(frontMatter.closed_at),
|
|
1297
|
+
assignee: trimStringOrUndefined(frontMatter.assignee),
|
|
1298
|
+
source_owner: trimStringOrUndefined(frontMatter.source_owner),
|
|
1299
|
+
author: emptyStringToUndefined(frontMatter.author),
|
|
1131
1300
|
estimated_minutes: frontMatter.estimated_minutes,
|
|
1132
1301
|
acceptance_criteria: frontMatter.acceptance_criteria ?? void 0,
|
|
1133
1302
|
design: frontMatter.design ?? void 0,
|
|
1134
1303
|
external_ref: frontMatter.external_ref ?? void 0,
|
|
1135
|
-
definition_of_ready: frontMatter.definition_of_ready
|
|
1304
|
+
definition_of_ready: trimStringOrUndefined(frontMatter.definition_of_ready),
|
|
1136
1305
|
order: frontMatter.order,
|
|
1137
|
-
goal: frontMatter.goal
|
|
1138
|
-
objective: frontMatter.objective
|
|
1139
|
-
value: frontMatter.value
|
|
1140
|
-
impact: frontMatter.impact
|
|
1141
|
-
outcome: frontMatter.outcome
|
|
1142
|
-
why_now: frontMatter.why_now
|
|
1143
|
-
parent: frontMatter.parent
|
|
1144
|
-
reviewer: frontMatter.reviewer
|
|
1306
|
+
goal: trimStringOrUndefined(frontMatter.goal),
|
|
1307
|
+
objective: trimStringOrUndefined(frontMatter.objective),
|
|
1308
|
+
value: trimStringOrUndefined(frontMatter.value),
|
|
1309
|
+
impact: trimStringOrUndefined(frontMatter.impact),
|
|
1310
|
+
outcome: trimStringOrUndefined(frontMatter.outcome),
|
|
1311
|
+
why_now: trimStringOrUndefined(frontMatter.why_now),
|
|
1312
|
+
parent: trimStringOrUndefined(frontMatter.parent),
|
|
1313
|
+
reviewer: trimStringOrUndefined(frontMatter.reviewer),
|
|
1145
1314
|
risk: frontMatter.risk ?? void 0,
|
|
1146
1315
|
confidence: normalizeConfidenceValue(frontMatter.confidence),
|
|
1147
|
-
sprint: frontMatter.sprint
|
|
1148
|
-
release: frontMatter.release
|
|
1149
|
-
blocked_by: frontMatter.blocked_by
|
|
1150
|
-
blocked_reason: frontMatter.blocked_reason
|
|
1151
|
-
unblock_note: frontMatter.unblock_note
|
|
1152
|
-
reporter: frontMatter.reporter
|
|
1316
|
+
sprint: trimStringOrUndefined(frontMatter.sprint),
|
|
1317
|
+
release: trimStringOrUndefined(frontMatter.release),
|
|
1318
|
+
blocked_by: trimStringOrUndefined(frontMatter.blocked_by),
|
|
1319
|
+
blocked_reason: trimStringOrUndefined(frontMatter.blocked_reason),
|
|
1320
|
+
unblock_note: trimStringOrUndefined(frontMatter.unblock_note),
|
|
1321
|
+
reporter: trimStringOrUndefined(frontMatter.reporter),
|
|
1153
1322
|
severity: normalizeSeverityValue(frontMatter.severity),
|
|
1154
|
-
environment: frontMatter.environment
|
|
1155
|
-
repro_steps: frontMatter.repro_steps
|
|
1156
|
-
resolution: frontMatter.resolution
|
|
1157
|
-
expected_result: frontMatter.expected_result
|
|
1158
|
-
actual_result: frontMatter.actual_result
|
|
1159
|
-
affected_version: frontMatter.affected_version
|
|
1160
|
-
fixed_version: frontMatter.fixed_version
|
|
1161
|
-
component: frontMatter.component
|
|
1323
|
+
environment: trimStringOrUndefined(frontMatter.environment),
|
|
1324
|
+
repro_steps: trimStringOrUndefined(frontMatter.repro_steps),
|
|
1325
|
+
resolution: trimStringOrUndefined(frontMatter.resolution),
|
|
1326
|
+
expected_result: trimStringOrUndefined(frontMatter.expected_result),
|
|
1327
|
+
actual_result: trimStringOrUndefined(frontMatter.actual_result),
|
|
1328
|
+
affected_version: trimStringOrUndefined(frontMatter.affected_version),
|
|
1329
|
+
fixed_version: trimStringOrUndefined(frontMatter.fixed_version),
|
|
1330
|
+
component: trimStringOrUndefined(frontMatter.component),
|
|
1162
1331
|
regression: frontMatter.regression,
|
|
1163
|
-
customer_impact: frontMatter.customer_impact
|
|
1164
|
-
close_reason: frontMatter.close_reason
|
|
1332
|
+
customer_impact: trimStringOrUndefined(frontMatter.customer_impact),
|
|
1333
|
+
close_reason: emptyStringToUndefined(frontMatter.close_reason),
|
|
1165
1334
|
plan_mode: trimStringOrUndefined(frontMatter.plan_mode),
|
|
1166
1335
|
plan_scope: trimStringOrUndefined(frontMatter.plan_scope),
|
|
1167
1336
|
plan_harness: trimStringOrUndefined(frontMatter.plan_harness),
|
|
@@ -1171,36 +1340,10 @@ function normalizeFrontMatter(frontMatter, options = {}) {
|
|
|
1171
1340
|
plan_discoveries: normalizePlanDiscoveries(frontMatter.plan_discoveries),
|
|
1172
1341
|
plan_validation: normalizePlanValidation(frontMatter.plan_validation)
|
|
1173
1342
|
};
|
|
1174
|
-
|
|
1175
|
-
|
|
1176
|
-
|
|
1177
|
-
|
|
1178
|
-
}
|
|
1179
|
-
normalized[key] = value;
|
|
1180
|
-
}
|
|
1181
|
-
if (runtimeContext?.fieldRegistry) {
|
|
1182
|
-
for (const definition of runtimeContext.fieldRegistry.definitions) {
|
|
1183
|
-
const currentValue = normalized[definition.metadata_key];
|
|
1184
|
-
if (currentValue === void 0) {
|
|
1185
|
-
continue;
|
|
1186
|
-
}
|
|
1187
|
-
normalized[definition.metadata_key] = coerceRuntimeFieldValue(definition, currentValue, `metadata field "${definition.metadata_key}"`);
|
|
1188
|
-
}
|
|
1189
|
-
}
|
|
1190
|
-
if (runtimeContext && runtimeContext.unknownFieldPolicy !== "allow") {
|
|
1191
|
-
const knownKeys = buildKnownFrontMatterKeys(runtimeContext);
|
|
1192
|
-
const unknownKeys = Object.keys(normalized).filter((key) => !knownKeys.has(key)).sort((left, right) => left.localeCompare(right));
|
|
1193
|
-
if (unknownKeys.length > 0) {
|
|
1194
|
-
if (runtimeContext.unknownFieldPolicy === "reject") {
|
|
1195
|
-
validationError(`unknown schema fields are not allowed: ${unknownKeys.join(", ")}`);
|
|
1196
|
-
}
|
|
1197
|
-
}
|
|
1198
|
-
}
|
|
1199
|
-
for (const [key, value] of Object.entries(normalized)) {
|
|
1200
|
-
if (value === void 0) {
|
|
1201
|
-
delete normalized[key];
|
|
1202
|
-
}
|
|
1203
|
-
}
|
|
1343
|
+
copyExtensionFrontMatterFields(normalized, frontMatter);
|
|
1344
|
+
coerceNormalizedRuntimeFields(normalized, runtimeContext);
|
|
1345
|
+
assertNormalizedUnknownFields(normalized, runtimeContext);
|
|
1346
|
+
deleteUndefinedFields(normalized);
|
|
1204
1347
|
return normalized;
|
|
1205
1348
|
}
|
|
1206
1349
|
function orderFrontMatter(frontMatter) {
|
|
@@ -1274,6 +1417,9 @@ function stripLeadingYamlDocument(content) {
|
|
|
1274
1417
|
}
|
|
1275
1418
|
return { content: normalizedContent, stripped: false };
|
|
1276
1419
|
}
|
|
1420
|
+
function normalizeParsedFrontMatter(frontMatter, options) {
|
|
1421
|
+
return normalizeFrontMatter(frontMatter, { ...options, onWarning: void 0 });
|
|
1422
|
+
}
|
|
1277
1423
|
function parseJsonMarkdownItemDocument(content, runtimeContext, options = {}) {
|
|
1278
1424
|
const normalized = stripLeadingYamlDocument(content);
|
|
1279
1425
|
if (normalized.stripped) {
|
|
@@ -1295,7 +1441,7 @@ function parseJsonMarkdownItemDocument(content, runtimeContext, options = {}) {
|
|
|
1295
1441
|
}
|
|
1296
1442
|
assertValidFrontMatter(parsed, runtimeContext);
|
|
1297
1443
|
return {
|
|
1298
|
-
metadata:
|
|
1444
|
+
metadata: normalizeParsedFrontMatter(parsed, options),
|
|
1299
1445
|
body: normalizeBody(body)
|
|
1300
1446
|
};
|
|
1301
1447
|
}
|
|
@@ -1312,7 +1458,7 @@ function parseToonItemDocument(content, runtimeContext, options = {}) {
|
|
|
1312
1458
|
assertValidFrontMatter(record.front_matter, runtimeContext);
|
|
1313
1459
|
assertFrontMatterCondition(record.body === void 0 || typeof record.body === "string", "TOON item document body must be a string");
|
|
1314
1460
|
return {
|
|
1315
|
-
metadata:
|
|
1461
|
+
metadata: normalizeParsedFrontMatter(record.front_matter, options),
|
|
1316
1462
|
body: normalizeBody(typeof record.body === "string" ? record.body : "")
|
|
1317
1463
|
};
|
|
1318
1464
|
}
|
|
@@ -1320,7 +1466,7 @@ function parseToonItemDocument(content, runtimeContext, options = {}) {
|
|
|
1320
1466
|
assertFrontMatterCondition(body === void 0 || typeof body === "string", "TOON item document body must be a string");
|
|
1321
1467
|
assertValidFrontMatter(frontMatterRecord, runtimeContext);
|
|
1322
1468
|
return {
|
|
1323
|
-
metadata:
|
|
1469
|
+
metadata: normalizeParsedFrontMatter(frontMatterRecord, options),
|
|
1324
1470
|
body: normalizeBody(typeof body === "string" ? body : "")
|
|
1325
1471
|
};
|
|
1326
1472
|
}
|
|
@@ -1388,4 +1534,4 @@ export {
|
|
|
1388
1534
|
serializeItemDocument,
|
|
1389
1535
|
canonicalDocument
|
|
1390
1536
|
};
|
|
1391
|
-
//# sourceMappingURL=chunk-
|
|
1537
|
+
//# sourceMappingURL=chunk-BHO33VBQ.js.map
|