@agent-relay/factory 0.1.57 → 0.1.60
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +152 -1
- package/dist/cli/fleet.d.ts +20 -1
- package/dist/cli/fleet.d.ts.map +1 -1
- package/dist/cli/fleet.js +550 -106
- package/dist/cli/fleet.js.map +1 -1
- package/dist/config/schema.d.ts +1778 -515
- package/dist/config/schema.d.ts.map +1 -1
- package/dist/config/schema.js +104 -6
- package/dist/config/schema.js.map +1 -1
- package/dist/delivery/ticket-dispatch.d.ts +15 -0
- package/dist/delivery/ticket-dispatch.d.ts.map +1 -0
- package/dist/delivery/ticket-dispatch.js +20 -0
- package/dist/delivery/ticket-dispatch.js.map +1 -0
- package/dist/feature-guardian/conversation.d.ts +251 -0
- package/dist/feature-guardian/conversation.d.ts.map +1 -0
- package/dist/feature-guardian/conversation.js +1893 -0
- package/dist/feature-guardian/conversation.js.map +1 -0
- package/dist/feature-guardian/index.d.ts +2 -0
- package/dist/feature-guardian/index.d.ts.map +1 -0
- package/dist/feature-guardian/index.js +2 -0
- package/dist/feature-guardian/index.js.map +1 -0
- package/dist/git/agent-worktree.d.ts.map +1 -1
- package/dist/git/agent-worktree.js +4 -0
- package/dist/git/agent-worktree.js.map +1 -1
- package/dist/github/index.d.ts +2 -0
- package/dist/github/index.d.ts.map +1 -1
- package/dist/github/index.js +1 -0
- package/dist/github/index.js.map +1 -1
- package/dist/github/routed-pr-babysitter.d.ts +48 -0
- package/dist/github/routed-pr-babysitter.d.ts.map +1 -0
- package/dist/github/routed-pr-babysitter.js +197 -0
- package/dist/github/routed-pr-babysitter.js.map +1 -0
- package/dist/index.d.ts +5 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +3 -0
- package/dist/index.js.map +1 -1
- package/dist/intake/index.d.ts +4 -0
- package/dist/intake/index.d.ts.map +1 -0
- package/dist/intake/index.js +4 -0
- package/dist/intake/index.js.map +1 -0
- package/dist/intake/notion-relay-claim.d.ts +32 -0
- package/dist/intake/notion-relay-claim.d.ts.map +1 -0
- package/dist/intake/notion-relay-claim.js +173 -0
- package/dist/intake/notion-relay-claim.js.map +1 -0
- package/dist/intake/notion-relay-contract.d.ts +33 -0
- package/dist/intake/notion-relay-contract.d.ts.map +1 -0
- package/dist/intake/notion-relay-contract.js +163 -0
- package/dist/intake/notion-relay-contract.js.map +1 -0
- package/dist/intake/notion.d.ts +375 -0
- package/dist/intake/notion.d.ts.map +1 -0
- package/dist/intake/notion.js +773 -0
- package/dist/intake/notion.js.map +1 -0
- package/dist/issue-key-match.d.ts +6 -0
- package/dist/issue-key-match.d.ts.map +1 -1
- package/dist/issue-key-match.js +14 -0
- package/dist/issue-key-match.js.map +1 -1
- package/dist/mount/github-api-issue-read.d.ts +28 -0
- package/dist/mount/github-api-issue-read.d.ts.map +1 -0
- package/dist/mount/github-api-issue-read.js +163 -0
- package/dist/mount/github-api-issue-read.js.map +1 -0
- package/dist/mount/local-mount-preflight.d.ts +2 -0
- package/dist/mount/local-mount-preflight.d.ts.map +1 -1
- package/dist/mount/local-mount-preflight.js +59 -9
- package/dist/mount/local-mount-preflight.js.map +1 -1
- package/dist/mount/mount-auth-error.d.ts +41 -0
- package/dist/mount/mount-auth-error.d.ts.map +1 -0
- package/dist/mount/mount-auth-error.js +94 -0
- package/dist/mount/mount-auth-error.js.map +1 -0
- package/dist/mount/relayfile-binary.d.ts +5 -0
- package/dist/mount/relayfile-binary.d.ts.map +1 -1
- package/dist/mount/relayfile-binary.js +16 -2
- package/dist/mount/relayfile-binary.js.map +1 -1
- package/dist/mount/relayfile-cloud-mount-client.d.ts +18 -3
- package/dist/mount/relayfile-cloud-mount-client.d.ts.map +1 -1
- package/dist/mount/relayfile-cloud-mount-client.js +157 -13
- package/dist/mount/relayfile-cloud-mount-client.js.map +1 -1
- package/dist/mount/relayfile-github-connection-write.d.ts.map +1 -1
- package/dist/mount/relayfile-github-connection-write.js +6 -3
- package/dist/mount/relayfile-github-connection-write.js.map +1 -1
- package/dist/mount/workspace-mirror.d.ts +13 -0
- package/dist/mount/workspace-mirror.d.ts.map +1 -0
- package/dist/mount/workspace-mirror.js +94 -0
- package/dist/mount/workspace-mirror.js.map +1 -0
- package/dist/observability/events.d.ts +32 -32
- package/dist/orchestrator/batch-tracker.d.ts +2 -1
- package/dist/orchestrator/batch-tracker.d.ts.map +1 -1
- package/dist/orchestrator/batch-tracker.js.map +1 -1
- package/dist/orchestrator/factory.d.ts +51 -0
- package/dist/orchestrator/factory.d.ts.map +1 -1
- package/dist/orchestrator/factory.js +1736 -116
- package/dist/orchestrator/factory.js.map +1 -1
- package/dist/ports/fleet.d.ts +4 -0
- package/dist/ports/fleet.d.ts.map +1 -1
- package/dist/ports/index.d.ts +1 -1
- package/dist/ports/index.d.ts.map +1 -1
- package/dist/ports/mount.d.ts +60 -1
- package/dist/ports/mount.d.ts.map +1 -1
- package/dist/ports/state.d.ts +66 -1
- package/dist/ports/state.d.ts.map +1 -1
- package/dist/state/file-state-store.d.ts +15 -1
- package/dist/state/file-state-store.d.ts.map +1 -1
- package/dist/state/file-state-store.js +210 -2
- package/dist/state/file-state-store.js.map +1 -1
- package/dist/state/in-memory-state-store.d.ts +15 -1
- package/dist/state/in-memory-state-store.d.ts.map +1 -1
- package/dist/state/in-memory-state-store.js +105 -0
- package/dist/state/in-memory-state-store.js.map +1 -1
- package/dist/testing/fakes.d.ts +4 -0
- package/dist/testing/fakes.d.ts.map +1 -1
- package/dist/testing/fakes.js +6 -0
- package/dist/testing/fakes.js.map +1 -1
- package/dist/triage/schema.d.ts +169 -0
- package/dist/triage/schema.d.ts.map +1 -1
- package/dist/triage/schema.js +21 -0
- package/dist/triage/schema.js.map +1 -1
- package/dist/types.d.ts +61 -0
- package/dist/types.d.ts.map +1 -1
- package/dist/version-info.d.ts +21 -0
- package/dist/version-info.d.ts.map +1 -0
- package/dist/version-info.js +146 -0
- package/dist/version-info.js.map +1 -0
- package/dist/writeback/github.d.ts.map +1 -1
- package/dist/writeback/github.js +51 -0
- package/dist/writeback/github.js.map +1 -1
- package/package.json +10 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"notion.js","sourceRoot":"","sources":["../../src/intake/notion.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,UAAU,EAAE,MAAM,aAAa,CAAA;AACxC,OAAO,EAAE,KAAK,EAAE,MAAM,oBAAoB,CAAA;AAC1C,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAA;AACrE,OAAO,EAAE,OAAO,EAAE,UAAU,EAAE,IAAI,EAAE,OAAO,EAAE,MAAM,WAAW,CAAA;AAE9D,OAAO,QAAQ,MAAM,iBAAiB,CAAA;AACtC,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAA;AAEvB,MAAM,oBAAoB,GAAG,MAAM,CAAA;AAEnC,MAAM,YAAY,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,QAAQ,EAAE,UAAU,EAAE,MAAM,CAAC,CAAC,CAAA;AAE3D,MAAM,gBAAgB,GAAG,CAAC,CAAC,MAAM,CAAC;IAChC,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,qBAAqB,EAAE,yBAAyB,CAAC;IACxE,MAAM,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,EAAE,CAAC;IACrD,aAAa,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CACnD,CAAC,CAAC,MAAM,EAAE,CAAA;AAEX,MAAM,qBAAqB,GAAG,CAAC,CAAC,MAAM,CAAC;IACrC,WAAW,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,UAAU,EAAE,8BAA8B,CAAC;IACxF,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;CAC1C,CAAC,CAAC,MAAM,EAAE,CAAA;AAEX,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,gBAAgB,EAAE,qBAAqB,CAAC,CAAC,CAAA;AAEvE,MAAM,0BAA0B,GAAG,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;IAC9D,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;IAC/C,CAAC,CAAC,MAAM,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC,EAAE,CAAC,CAAC,MAAM,EAAE;CACxD,CAAC,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,OAAO,EAAE,CAAC,CAAA;AAE7B,MAAM,yBAAyB,GAAG,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,KAAK,CAC9D,oBAAoB,EACpB,uEAAuE,CACxE,CAAA;AAED,MAAM,sBAAsB,GAAG,CAAC,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,eAAe,CAAC;IAChC,OAAO,EAAE,yBAAyB;IAClC,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,yBAAyB,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,wDAAwD,CAAC;IAC/G,QAAQ,EAAE,CAAC,CAAC,OAAO,CAAC,kBAAkB,CAAC;CACxC,CAAC,CAAC,MAAM,EAAE,CAAA;AAEX,MAAM,eAAe,GAAG,CAAC,CAAC,MAAM,CAAC;IAC/B,gBAAgB,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC1C,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAChC,MAAM,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC;IAC1B,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAC/B,MAAM,EAAE,YAAY;IACpB,OAAO,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IACjC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACtC,CAAC,CAAC,MAAM,EAAE,CAAA;AAEX,MAAM,cAAc,GAAG,CAAC,CAAC,MAAM,CAAC;IAC9B,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;IACrB,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;IACnE,eAAe,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,sBAAsB,CAAC;IACzE,oBAAoB,EAAE,0BAA0B;IAChD,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,mCAAmC,CAAC;IAChF,KAAK,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC;QACtB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,IAAI,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;QAC9B,SAAS,EAAE,eAAe,CAAC,QAAQ,EAAE;KACtC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC;CACpB,CAAC,CAAC,MAAM,EAAE,CAAA;AAkIX,8GAA8G;AAC9G,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAAC,IAAY;IACzD,MAAM,YAAY,GAAG,OAAO,CAAC,IAAI,CAAC,CAAA;IAClC,MAAM,MAAM,GAAG,cAAc,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,YAAY,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IACrF,MAAM,IAAI,GAAG,OAAO,CAAC,YAAY,CAAC,CAAA;IAClC,OAAO;QACL,GAAG,MAAM;QACT,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;QAC1C,SAAS,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,CAAC,SAAS,CAAC;KAC3C,CAAA;AACH,CAAC;AAED,qGAAqG;AACrG,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,KAQrC;IACC,IAAI,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,MAAM,uBAAuB,CAAC,KAAK,CAAC,CAAA;IAEhE,MAAM,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IAChF,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE;QAC5D,QAAQ,EAAE,KAAK;QACf,KAAK,EAAE,oBAAoB;QAC3B,MAAM,EAAE,oBAAoB,GAAG,CAAC;QAChC,OAAO,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE,MAAM,EAAE,GAAG,EAAE,UAAU,EAAE,EAAE,EAAE,UAAU,EAAE,GAAG,EAAE,SAAS,EAAE,IAAI,EAAE;KACxF,CAAC,CAAA;IACF,IAAI,CAAC;QACH,OAAO,MAAM,uBAAuB,CAAC,KAAK,CAAC,CAAA;IAC7C,CAAC;YAAS,CAAC;QACT,MAAM,OAAO,EAAE,CAAA;IACjB,CAAC;AACH,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,KAA4C;IAE5C,MAAM,KAAK,GAAG,MAAM,uBAAuB,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAA;IAC3D,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAA;IAC7D,MAAM,OAAO,GAAyB,EAAE,CAAA;IAExC,KAAK,MAAM,IAAI,IAAI,KAAK,EAAE,CAAC;QACzB,IAAI,CAAC;YACH,MAAM,0BAA0B,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,aAAa,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;gBAClD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAChD,CAAC,CAAC,SAAS,CAAA;YACb,IAAI,MAA0B,CAAA;YAC9B,IAAI,MAAM,IAAI,IAAI,CAAC,MAAM,EAAE,CAAC;gBAC1B,MAAM,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YACpD,CAAC;iBAAM,CAAC;gBACN,MAAM,GAAG,MAAM,qBAAqB,CAAC,IAAI,EAAE,KAAK,EAAE,KAAK,CAAC,CAAA;YAC1D,CAAC;YACD,MAAM,YAAY,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC;gBACjD,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;gBAChD,CAAC,CAAC,SAAS,CAAA;YACb,IAAI,KAAK,CAAC,QAAQ,IAAI,YAAY,IAAI,YAAY,KAAK,aAAa,EAAE,CAAC;gBACrE,MAAM,gBAAgB,CAAC,KAAK,CAAC,QAAQ,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;YACzD,CAAC;YACD,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;QACtB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,CAAC,IAAI,CAAC;gBACX,SAAS,EAAE,IAAI,CAAC,SAAS;gBACzB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,KAAK,YAAY,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC;aAC/D,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IAED,OAAO;QACL,EAAE,EAAE,OAAO,CAAC,KAAK,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,MAAM,KAAK,SAAS,CAAC;QAC1D,QAAQ,EAAE,KAAK,CAAC,QAAQ;QACxB,OAAO;KACR,CAAA;AACH,CAAC;AAED,4GAA4G;AAC5G,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAAC,QAA8B;IAC1E,MAAM,UAAU,GAA2B,EAAE,CAAA;IAC7C,MAAM,IAAI,GAAG,IAAI,GAAG,EAAU,CAAA;IAE9B,KAAK,MAAM,IAAI,IAAI,QAAQ,CAAC,KAAK,EAAE,CAAC;QAClC,MAAM,MAAM,GAAG,qBAAqB,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC/C,MAAM,UAAU,GAAG,IAAI,CAAC,QAAQ,CAAC,SAAS,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC,CAAA;QAC1E,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;QAClD,MAAM,IAAI,GAAG,IAAI,CAAC,SAAS;YACzB,CAAC,CAAC,uBAAuB,CAAC,IAAI,CAAC,SAAS,EAAE,MAAM,CAAC;YACjD,CAAC,CAAC,oBAAoB,CAAC,OAAO,CAAC,CAAA;QACjC,MAAM,wBAAwB,GAAG,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,SAAS,CAAA;QACjF,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;QACxE,MAAM,MAAM,GAAG,cAAc,CAAC,OAAO,EAAE,wBAAwB,CAAC,CAAA;QAEhE,KAAK,MAAM,MAAM,IAAI,IAAI,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,SAAS,GAAG,MAAM,IAAI,MAAM,CAAC,CAAC,CAAC,QAAQ,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,EAAE,CAAC,CAAC,CAAC,aAAa,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE,CAAA;YACrH,MAAM,SAAS,GAAG,UAAU,MAAM,IAAI,SAAS,EAAE,CAAA;YACjD,IAAI,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC;gBAAE,MAAM,IAAI,KAAK,CAAC,wCAAwC,SAAS,EAAE,CAAC,CAAA;YAC7F,IAAI,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;YACnB,UAAU,CAAC,IAAI,CAAC;gBACd,MAAM;gBACN,SAAS;gBACT,UAAU;gBACV,gBAAgB,EAAE,MAAM,IAAI,MAAM,IAAI,QAAQ,CAAC,oBAAoB,CAAC,IAAI,KAAK,eAAe;oBAC1F,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,YAAY,CAAC;oBAC/D,CAAC,CAAC,UAAU;gBACd,OAAO;gBACP,GAAG,CAAC,wBAAwB,CAAC,CAAC,CAAC,EAAE,wBAAwB,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACjE,aAAa;gBACb,MAAM;gBACN,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,MAAM,EAAE,aAAa,IAAI,MAAM;oBAC7B,CAAC,CAAC,EAAE,GAAG,MAAM,EAAE,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,WAAW,CAAC,EAAE;oBACzD,CAAC,CAAC,MAAM;gBACV,SAAS,EAAE,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC;aACnC,CAAC,CAAA;QACJ,CAAC;IACH,CAAC;IACD,OAAO,UAAU,CAAA;AACnB,CAAC;AAED,4FAA4F;AAC5F,MAAM,UAAU,qBAAqB,CAAC,KAAa;IACjD,MAAM,OAAO,GAAG,KAAK,CAAC,WAAW,EAAE,CAAA;IACnC,MAAM,UAAU,GAAG,kGAAkG,CAAC,IAAI,CAAC,OAAO,CAAC,CAAA;IACnI,MAAM,OAAO,GAAG,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,wCAAwC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;IAC7G,IAAI,CAAC,OAAO;QAAE,MAAM,IAAI,KAAK,CAAC,kEAAkE,KAAK,EAAE,CAAC,CAAA;IACxG,OAAO,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC,EAAE,CAAA;AAChI,CAAC;AAED,qFAAqF;AACrF,MAAM,UAAU,oBAAoB,CAAC,OAAe;IAMlD,MAAM,KAAK,GAAG,OAAO,CAAC,UAAU,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAA;IAC1D,IAAI,KAAK,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,cAAc,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,kEAAkE,CAAC,CAAA;IACrF,CAAC;IACD,MAAM,MAAM,GAAG,IAAI,GAAG,EAAkB,CAAA;IACxC,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,CAAC,QAAQ,EAAE,OAAO,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,eAAe,EAAE,MAAM,EAAE,gBAAgB,CAAC,CAAC,CAAA;IAC3H,KAAK,MAAM,IAAI,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;QAClC,IAAI,IAAI,CAAC,IAAI,EAAE,KAAK,EAAE;YAAE,MAAK;QAC7B,MAAM,KAAK,GAAG,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAA;QACjE,IAAI,CAAC,KAAK;YAAE,MAAM,IAAI,KAAK,CAAC,2DAA2D,IAAI,EAAE,CAAC,CAAA;QAC9F,MAAM,GAAG,GAAG,KAAK,CAAC,CAAC,CAAE,CAAC,WAAW,EAAE,CAAA;QACnC,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QAC3G,IAAI,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,qDAAqD,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAA;QACrG,MAAM,CAAC,GAAG,CAAC,GAAG,EAAE,KAAK,CAAC,CAAC,CAAE,CAAC,IAAI,EAAE,CAAC,CAAA;IACnC,CAAC;IAED,IAAI,MAAM,CAAC,GAAG,CAAC,QAAQ,CAAC,EAAE,WAAW,EAAE,KAAK,OAAO,EAAE,CAAC;QACpD,MAAM,IAAI,KAAK,CAAC,wDAAwD,CAAC,CAAA;IAC3E,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;IAC5C,MAAM,OAAO,GAAG,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAA;IAChD,MAAM,MAAM,GAAG,YAAY,CAAC,KAAK,CAAC,aAAa,CAAC,MAAM,EAAE,QAAQ,CAAC,CAAC,WAAW,EAAE,CAAC,CAAA;IAChF,MAAM,KAAK,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,gBAAgB,CAAC,KAAK,CAAC;QACjF,IAAI;QACJ,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,GAAG,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzF,CAAC,CAAC,CAAA;IACH,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE,CAAC,qBAAqB,CAAC,KAAK,CAAC;QAC5G,WAAW;QACX,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,GAAG,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KAC5D,CAAC,CAAC,CAAA;IACH,MAAM,OAAO,GAAG,CAAC,GAAG,KAAK,EAAE,GAAG,YAAY,CAAC,CAAA;IAC3C,IAAI,OAAO,CAAC,MAAM,KAAK,CAAC;QAAE,MAAM,IAAI,KAAK,CAAC,mEAAmE,CAAC,CAAA;IAC9G,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,MAAM,EAAE,OAAO,EAAE,CAAA;AAC5C,CAAC;AAED,wGAAwG;AACxG,MAAM,OAAO,mBAAmB;IAC9B,KAAK,CAAC,oBAAoB,CAAC,IAAY;QACrC,MAAM,MAAM,GAAG,CAAC,MAAM,KAAK,CAAC,CAAC,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;QACxH,IAAI,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,SAAS,IAAI,MAAM,KAAK,UAAU,EAAE,CAAC;YACzE,MAAM,IAAI,KAAK,CAAC,0CAA0C,IAAI,KAAK,MAAM,IAAI,SAAS,EAAE,CAAC,CAAA;QAC3F,CAAC;QACD,OAAO,MAAM,CAAA;IACf,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,IAAY,EAAE,MAAyB;QACzD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,CAAC,KAAK,EAAE,YAAY,EAAE,SAAS,IAAI,sBAAsB,EAAE,MAAM,EAAE,UAAU,CAAC,CAAC,CAAA;QAC1G,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAA;QAC1F,OAAO,MAAM,CAAC,MAAM,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAA;IACxD,CAAC;IAED,KAAK,CAAC,YAAY,CAAC,IAAY,EAAE,SAAiB;QAChD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC;YACzB,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK;YACnE,UAAU,EAAE,mBAAmB,SAAS,WAAW;YACnD,QAAQ,EAAE,iBAAiB;SAC5B,CAAC,CAAA;QACF,MAAM,MAAM,GAAG,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAA;QAC5I,MAAM,MAAM,GAAG,YAAY,CAAC,SAAS,CAAC,CAAA;QACtC,OAAO,MAAM,CAAC,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;IAC5D,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAA+E;QAC/F,MAAM,IAAI,GAAG,CAAC,OAAO,EAAE,QAAQ,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,SAAS,EAAE,KAAK,CAAC,KAAK,EAAE,aAAa,EAAE,GAAG,CAAC,CAAA;QAClG,KAAK,MAAM,KAAK,IAAI,KAAK,CAAC,MAAM;YAAE,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,KAAK,CAAC,CAAA;QAC7D,MAAM,GAAG,GAAG,CAAC,MAAM,KAAK,CAAC,IAAI,EAAE,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAA;QAClD,MAAM,MAAM,GAAG,MAAM,CAAC,sBAAsB,CAAC,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;QAC5D,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,MAAM,IAAI,CAAC;YAAE,MAAM,IAAI,KAAK,CAAC,mDAAmD,GAAG,EAAE,CAAC,CAAA;QACvH,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAA;IACxB,CAAC;IAED,KAAK,CAAC,WAAW,CAAC,KAAqD;QACrE,MAAM,KAAK,CAAC,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,EAAE,QAAQ,EAAE,KAAK,CAAC,IAAI,EAAE,aAAa,EAAE,GAAG,CAAC,EAAE,KAAK,CAAC,IAAI,CAAC,CAAA;IAC5G,CAAC;CACF;AAED,KAAK,UAAU,eAAe,CAC5B,IAA0B,EAC1B,KAA4C,EAC5C,KAAkB;IAElB,MAAM,MAAM,GAAG,gBAAgB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IAClD,MAAM,IAAI,GAAuB;QAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM;QACN,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAA;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAChC,IAAI,CAAC,KAAK,CAAC,MAAM;QAAE,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,0CAA0C,EAAE,CAAA;IAE5G,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC9C,IAAI,OAAO,IAAI,OAAO,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QACzC,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,2DAA2D,EAAE,CAAA;IAC5G,CAAC;IACD,IAAI,OAAO,EAAE,MAAM,KAAK,SAAS,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACpE,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,4DAA4D,EAAE,CAAA;IACnI,CAAC;IAED,MAAM,QAAQ,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,CAAC,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,CAAA;IAC7E,IAAI,QAAQ,EAAE,CAAC;QACb,IAAI,OAAO,IAAI,CAAC,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,KAAK,CAAC,MAAM,IAAI,QAAQ,CAAC,GAAG,KAAK,OAAO,CAAC,KAAK,CAAC,GAAG,CAAC,EAAE,CAAC;YAChG,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,wDAAwD,EAAE,CAAA;QAC1H,CAAC;QACD,MAAM,aAAa,GAAG,cAAc,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QACnD,IAAI,CAAC,aAAa,EAAE,CAAC;YACnB,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,uDAAuD,EAAE,CAAA;QACzH,CAAC;QACD,IAAI,aAAa,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YAClC,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,4DAA4D,EAAE,CAAA;QAC9H,CAAC;QACD,IAAI,KAAK,GAAG,MAAM,kBAAkB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QACjD,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,IAAI,CAAC,OAAO,EAAE,CAAC;gBACb,OAAO;oBACL,GAAG,IAAI;oBACP,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,QAAQ;oBACf,MAAM,EAAE,yFAAyF;iBAClG,CAAA;YACH,CAAC;YACD,KAAK,GAAG,CAAC,MAAM,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,CAAC,KAAK,CAAA;QACpD,CAAC;QACD,MAAM,YAAY,GAAG,wBAAwB,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAA;QAC5D,IAAI,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,KAAK,OAAO,EAAE,CAAC;YACzD,IAAI,OAAO,EAAE,QAAQ,IAAI,YAAY,EAAE,CAAC;gBACtC,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,uEAAuE,EAAE,CAAA;YACzI,CAAC;YACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,OAAO,IAAI;gBAC1C,IAAI,EAAE,QAAQ;gBACd,MAAM,EAAE,IAAI,CAAC,MAAM;gBACnB,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE;gBACrD,YAAY,EAAE,KAAK,CAAC,SAAS;aAC9B,CAAA;YACD,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;QACnE,CAAC;QACD,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;QACvE,IAAI,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;YACrD,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,sFAAsF,EAAE,CAAA;QACxJ,CAAC;QACD,MAAM,OAAO,GAAG,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAc,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAA;QAC9E,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,KAAK,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,YAAY,CAAC,CAAA;QACpF,IAAI,aAAa,EAAE,CAAC;YAClB,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,QAAQ;gBACf,MAAM,EAAE,oGAAoG;aAC7G,CAAA;QACH,CAAC;QACD,IAAI,OAAO,EAAE,QAAQ,IAAI,YAAY,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,CAAC,EAAE,CAAC;YAC/F,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,0EAA0E,EAAE,CAAA;QAC5I,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,QAAQ,IAAI,YAAY,CAAC,CAAA;QAC9F,IAAI,QAAQ,IAAI,CAAC,YAAY,EAAE,CAAC;YAC9B,MAAM,0BAA0B,CAAC,IAAI,CAAC,CAAA;YACtC,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;gBAC7B,IAAI,EAAE,MAAM,CAAC,IAAI;gBACjB,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,OAAO,EAAE,QAAQ,CAAC;aAC/C,CAAC,CAAA;QACJ,CAAC;QACD,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;YAC/B,IAAI,EAAE,QAAQ;YACd,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,EAAE,MAAM,EAAE,QAAQ,CAAC,MAAM,EAAE,GAAG,EAAE,QAAQ,CAAC,GAAG,EAAE;YACrD,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,YAAY,EAAE,OAAO,EAAE,YAAY,IAAI,KAAK,CAAC,SAAS;SACvD,CAAA;QACD,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAA;IACnE,CAAC;IACD,IAAI,OAAO,EAAE,CAAC;QACZ,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,MAAM,EAAE,mEAAmE,EAAE,CAAA;IAC1I,CAAC;IAED,MAAM,UAAU,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,oBAAoB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAA;IACvE,IAAI,UAAU,KAAK,QAAQ,IAAI,CAAC,MAAM,CAAC,aAAa,EAAE,CAAC;QACrD,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,sFAAsF,EAAE,CAAA;IACvI,CAAC;IACD,MAAM,MAAM,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,CAAC,eAAe,EAAE,SAAS,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,CAAA;IACxF,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAA;IACrE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACvB,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,mCAAmC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EAAE,CAAA;IACxG,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC3D,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAChD,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAChC,OAAO;YACL,GAAG,IAAI;YACP,MAAM,EAAE,SAAS;YACjB,MAAM,EAAE,6FAA6F;SACtG,CAAA;IACH,CAAC;IACD,MAAM,0BAA0B,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,WAAW,CAAC;QAC3C,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,KAAK,EAAE,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC;QACpC,MAAM;QACN,IAAI,EAAE,eAAe,CAAC,IAAI,EAAE,UAAU,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,aAAc,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,EAAE,QAAQ,CAAC;KACtG,CAAC,CAAA;IACF,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;QAC/B,IAAI,EAAE,QAAQ;QACd,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK;QACL,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS;KACpC,CAAA;IACD,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,YAAY,EAAE,KAAK,EAAE,CAAA;AACjD,CAAC;AAED,SAAS,iBAAiB,CAAC,KAAa;IACtC,OAAO,KAAK,CAAC,WAAW,EAAE,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,aAAa,KAAK,EAAE,CAAA;AACnF,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,IAA0B,EAC1B,KAA4C,EAC5C,KAAkB;IAElB,MAAM,MAAM,GAAG,qBAAqB,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,CAAC,CAAA;IACvD,MAAM,IAAI,GAAuB;QAC/B,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,MAAM;QACN,MAAM,EAAE,OAAO;QACf,MAAM,EAAE,IAAI,CAAC,MAAM;KACpB,CAAA;IACD,IAAI,CAAC,KAAK,CAAC,QAAQ;QAAE,OAAO,IAAI,CAAA;IAChC,MAAM,OAAO,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,CAAA;IAC9C,IAAI,OAAO,EAAE,CAAC;QACZ,IAAI,OAAO,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YACjC,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,0DAA0D,EAAE,CAAA;QAC3G,CAAC;QACD,IAAI,OAAO,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;YACnC,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,MAAM,EAAE,+CAA+C,EAAE,CAAA;QAC1I,CAAC;QACD,MAAM,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAClC,MAAM,sBAAsB,GAAG,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,KAAK,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,CAAA;QACxG,IAAI,sBAAsB,EAAE,CAAC;YAC3B,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;gBACjC,OAAO;oBACL,GAAG,IAAI;oBACP,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,MAAM,EAAE,sEAAsE;iBAC/E,CAAA;YACH,CAAC;YACD,MAAM,cAAc,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,KAAK,EAAE,GAAG,IAAI,CAAC,SAAS,iBAAiB,CAAC,CAAA;YAC7F,IAAI,cAAc,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;gBACzC,OAAO;oBACL,GAAG,IAAI;oBACP,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,MAAM,EAAE,+FAA+F;iBACxG,CAAA;YACH,CAAC;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,KAAK,EAAE,OAAO,CAAC,QAAQ,CAAC,CAAA;QAC7E,IAAI,QAAQ,IAAI,CAAC,oBAAoB,CAAC,OAAO,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;YAClE,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,UAAU,EAAE,CAAC;gBACjC,OAAO;oBACL,GAAG,IAAI;oBACP,MAAM,EAAE,SAAS;oBACjB,KAAK,EAAE,OAAO,CAAC,KAAK;oBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,MAAM,EAAE,sEAAsE;iBAC/E,CAAA;YACH,CAAC;YACD,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,UAAU,CAAC;gBACjD,IAAI,EAAE,OAAO,CAAC,KAAK;gBACnB,YAAY,EAAE,WAAW,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,iBAAiB;gBACvE,IAAI,EAAE,OAAO,CAAC,IAAI,IAAI,MAAM,CAAC,IAAI;gBACjC,WAAW,EAAE,MAAM,CAAC,WAAW;gBAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;gBACjB,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC;aAC1C,CAAC,CAAA;YACF,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;gBAC/B,GAAG,OAAO;gBACV,KAAK,EAAE,SAAS,CAAC,KAAK;gBACtB,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,SAAS,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;gBACnD,QAAQ;gBACR,YAAY,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;aAC1D,CAAA;QACH,CAAC;QACD,MAAM,cAAc,GAAG,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAkD,CAAA;QACtG,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,cAAc,CAAC,KAAK,EAAE,IAAI,EAAE,cAAc,CAAC,IAAI,EAAE,CAAA;IAC1G,CAAC;IACD,IAAI,CAAC,KAAK,CAAC,SAAS;QAAE,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,6CAA6C,EAAE,CAAA;IAElH,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAA;IACpF,MAAM,IAAI,GAAG,UAAU,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,MAAM,EAAE,CAAA;IACxD,MAAM,KAAK,GAAG,MAAM,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAChD,IAAI,KAAK,CAAC,MAAM,KAAK,UAAU,EAAE,CAAC;QAChC,IAAI,CAAC,KAAK,CAAC,SAAS,CAAC,IAAI,EAAE,CAAC;YAC1B,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,0HAA0H;aACnI,CAAA;QACH,CAAC;QACD,MAAM,OAAO,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAChD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,SAAS;gBACjB,MAAM,EAAE,uGAAuG;aAChH,CAAA;QACH,CAAC;QACD,MAAM,kBAAkB,GAAG,GAAG,IAAI,CAAC,SAAS,iBAAiB,CAAA;QAC7D,IAAI,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,KAAK,OAAO;YACtD,MAAM,kBAAkB,CAAC,IAAI,EAAE,KAAK,EAAE,kBAAkB,CAAC,EAAE,CAAC;YAC5D,OAAO;gBACL,GAAG,IAAI;gBACP,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,OAAO,CAAC,KAAK;gBACpB,IAAI,EAAE,OAAO,CAAC,IAAI;gBAClB,MAAM,EAAE,uIAAuI;aAChJ,CAAA;QACH,CAAC;QACD,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;QAC3D,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;YAC/B,IAAI,EAAE,WAAW;YACjB,MAAM,EAAE,IAAI,CAAC,MAAM;YACnB,KAAK,EAAE,OAAO,CAAC,KAAK;YACpB,GAAG,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC/C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACjC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS;SACpC,CAAA;QACD,OAAO,EAAE,GAAG,IAAI,EAAE,MAAM,EAAE,oBAAoB,EAAE,KAAK,EAAE,OAAO,CAAC,KAAK,EAAE,IAAI,EAAE,OAAO,CAAC,IAAI,EAAE,CAAA;IAC5F,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,uBAAuB,CAAC,IAAI,EAAE,KAAK,CAAC,CAAA;IAC3D,MAAM,0BAA0B,CAAC,IAAI,CAAC,CAAA;IACtC,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,QAAQ,CAAC;QAC5C,IAAI;QACJ,YAAY,EAAE,WAAW,IAAI,CAAC,SAAS,IAAI,IAAI,CAAC,MAAM,EAAE;QACxD,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,KAAK,EAAE,IAAI,CAAC,KAAK;QACjB,IAAI,EAAE,mBAAmB,CAAC,IAAI,EAAE,QAAQ,CAAC;KAC1C,CAAC,CAAA;IACF,KAAK,CAAC,QAAQ,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG;QAC/B,IAAI,EAAE,WAAW;QACjB,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,MAAM,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC7C,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjC,YAAY,EAAE,KAAK,CAAC,KAAK,CAAC,SAAS;KACpC,CAAA;IACD,OAAO;QACL,GAAG,IAAI;QACP,MAAM,EAAE,MAAM,CAAC,MAAM,KAAK,iBAAiB,CAAC,CAAC,CAAC,oBAAoB,CAAC,CAAC,CAAC,YAAY;QACjF,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,IAAI,EAAE,MAAM,CAAC,IAAI;KAClB,CAAA;AACH,CAAC;AAED,KAAK,UAAU,kBAAkB,CAC/B,IAA0B,EAC1B,KAA4C,EAC5C,SAAS,GAAG,IAAI,CAAC,SAAS;IAE1B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;IAC/E,CAAC;IACD,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC,CAAA;IAC/C,IAAI,KAAK,EAAE,SAAS,KAAK,SAAS,IAAI,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACpE,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;IACjF,CAAC;IACD,IAAI,KAAK,EAAE,MAAM,KAAK,SAAS,IAAI,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAChE,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC;IACD,OAAO,KAAK,CAAA;AACd,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,IAA0B,EAC1B,KAA4C,EAC5C,SAAS,GAAG,IAAI,CAAC,SAAS;IAE1B,IAAI,CAAC,KAAK,CAAC,MAAM,EAAE,CAAC;QAClB,MAAM,IAAI,KAAK,CAAC,4DAA4D,CAAC,CAAA;IAC/E,CAAC;IACD,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,MAAM,CAAC,KAAK,CAAC;QACtC,SAAS;QACT,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,EAAE,IAAI,IAAI,IAAI,EAAE,CAAC,CAAC,WAAW,EAAE;KACvD,CAAC,CAAA;IACF,IAAI,MAAM,CAAC,KAAK,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;QACzC,MAAM,IAAI,KAAK,CAAC,8DAA8D,CAAC,CAAA;IACjF,CAAC;IACD,IAAI,MAAM,CAAC,KAAK,CAAC,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QACxC,MAAM,IAAI,KAAK,CAAC,6DAA6D,CAAC,CAAA;IAChF,CAAC;IACD,OAAO,MAAM,CAAA;AACf,CAAC;AAED,SAAS,uBAAuB,CAAC,SAA0C,EAAE,MAAc;IACzF,MAAM,gBAAgB,GAAG,qBAAqB,CAAC,SAAS,CAAC,gBAAgB,CAAC,CAAA;IAC1E,IAAI,gBAAgB,KAAK,MAAM,EAAE,CAAC;QAChC,MAAM,IAAI,KAAK,CAAC,2BAA2B,gBAAgB,gCAAgC,MAAM,EAAE,CAAC,CAAA;IACtG,CAAC;IACD,OAAO,EAAE,GAAG,SAAS,EAAE,gBAAgB,EAAE,CAAA;AAC3C,CAAC;AAED,SAAS,eAAe,CACtB,IAA0B,EAC1B,OAAe,EACf,QAAiC;IAEjC,OAAO;QACL,mBAAmB;QACnB,EAAE;QACF,OAAO;QACP,EAAE;QACF,GAAG,6BAA6B,CAAC,IAAI,EAAE,QAAQ,CAAC;QAChD,EAAE;QACF,kHAAkH;QAClH,yGAAyG,IAAI,CAAC,aAAa,KAAK;QAChI,EAAE;QACF,6BAA6B,IAAI,CAAC,MAAM,IAAI;QAC5C,oBAAoB,IAAI,CAAC,MAAM,IAAI;QACnC,YAAY,CAAC,IAAI,CAAC,SAAS,CAAC;QAC5B,GAAG,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,sBAAsB,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC;KACxD,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,SAAS,mBAAmB,CAAC,IAA0B,EAAE,QAAiC;IACxF,OAAO;QACL,IAAI,CAAC,KAAK;QACV,EAAE;QACF,IAAI,CAAC,OAAO;QACZ,EAAE;QACF,GAAG,6BAA6B,CAAC,IAAI,EAAE,QAAQ,CAAC;QAChD,gGAAgG,IAAI,CAAC,aAAa,GAAG;QACrH,uEAAuE;QACvE,mBAAmB,IAAI,CAAC,SAAS,EAAE;QACnC,kBAAkB,IAAI,CAAC,MAAM,EAAE;KAChC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;AACd,CAAC;AAED,KAAK,UAAU,uBAAuB,CACpC,IAA0B,EAC1B,KAA4C,EAC5C,QAAiC;IAEjC,IAAI,KAAK,CAAC,QAAQ,CAAC,oBAAoB,CAAC,IAAI,KAAK,OAAO;QAAE,OAAO,SAAS,CAAA;IAC1E,IAAI,CAAC,KAAK,CAAC,SAAS,EAAE,CAAC;QACrB,MAAM,IAAI,KAAK,CAAC,iFAAiF,CAAC,CAAA;IACpG,CAAC;IACD,MAAM,SAAS,GAAG,MAAM,KAAK,CAAC,SAAS,CAAC,OAAO,CAAC;QAC9C,MAAM,EAAE,IAAI,CAAC,MAAM;QACnB,SAAS,EAAE,IAAI,CAAC,SAAS;QACzB,OAAO,EAAE,IAAI,CAAC,OAAO;QACrB,aAAa,EAAE,IAAI,CAAC,aAAa;KAClC,CAAC,CAAA;IACF,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC,SAAS,CAAC,CAAA;IAC1D,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,OAAO,GAAG,CAAC,GAAG,IAAI,GAAG,CAAC,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;QAC1F,MAAM,IAAI,KAAK,CAAC,iEAAiE,OAAO,EAAE,CAAC,CAAA;IAC7F,CAAC;IACD,MAAM,QAAQ,GAAG,MAAM,CAAC,IAAI,CAAA;IAC5B,IAAI,QAAQ,IAAI,CAAC,oBAAoB,CAAC,QAAQ,EAAE,QAAQ,CAAC,EAAE,CAAC;QAC1D,MAAM,IAAI,KAAK,CAAC,0DAA0D,CAAC,CAAA;IAC7E,CAAC;IACD,OAAO,QAAQ,CAAA;AACjB,CAAC;AAED,SAAS,6BAA6B,CACpC,IAA0B,EAC1B,QAAiC;IAEjC,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,OAAO;YACL,6FAA6F;YAC7F,KAAK,IAAI,CAAC,gBAAgB,IAAI;SAC/B,CAAA;IACH,CAAC;IACD,OAAO;QACL,4HAA4H;QAC5H,gBAAgB,QAAQ,CAAC,OAAO,IAAI;QACpC,4BAA4B,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI;QAC7D,iBAAiB,QAAQ,CAAC,QAAQ,IAAI;QACtC,EAAE;QACF,wGAAwG,IAAI,CAAC,gBAAgB,8HAA8H;KAC5P,CAAA;AACH,CAAC;AAED,SAAS,oBAAoB,CAC3B,IAAwC,EACxC,KAA6B;IAE7B,OAAO,OAAO,CAAC,IAAI,IAAI,IAAI,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO;QAC/E,IAAI,CAAC,QAAQ,KAAK,KAAK,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAA;AACnG,CAAC;AAED,SAAS,sBAAsB,CAAC,QAAgC;IAC9D,OAAO,gCAAgC,QAAQ,CAAC,IAAI,IAAI,QAAQ,CAAC,OAAO,IAAI,QAAQ,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,CAAC,MAAM,CAAA;AACjH,CAAC;AAED,SAAS,wBAAwB,CAAC,IAAY;IAC5C,MAAM,KAAK,GAAG,0GAA0G,CAAC,IAAI,CAAC,IAAI,CAAC,CAAA;IACnI,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAA;IAC5B,MAAM,MAAM,GAAG,sBAAsB,CAAC,SAAS,CAAC;QAC9C,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,KAAK,CAAC,CAAC,CAAC;QACjB,UAAU,EAAE,KAAK,CAAC,CAAC,CAAC,EAAE,KAAK,CAAC,GAAG,CAAC;QAChC,QAAQ,EAAE,kBAAkB;KAC7B,CAAC,CAAA;IACF,OAAO,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS,CAAA;AACjD,CAAC;AAED,SAAS,YAAY,CAAC,SAAiB;IACrC,OAAO,uBAAuB,SAAS,MAAM,CAAA;AAC/C,CAAC;AAED,SAAS,cAAc,CAAC,IAAY;IAClC,OAAO,kCAAkC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,CAAC,CAAC,CAAA;AAC3D,CAAC;AAED,SAAS,aAAa,CAAC,MAAmC,EAAE,IAAY;IACtE,MAAM,KAAK,GAAG,MAAM,CAAC,GAAG,CAAC,IAAI,CAAC,CAAA;IAC9B,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,8CAA8C,IAAI,EAAE,CAAC,CAAA;IACjF,OAAO,KAAK,CAAA;AACd,CAAC;AAED,SAAS,UAAU,CAAC,KAAyB;IAC3C,OAAO,KAAK,EAAE,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,IAAI,EAAE,CAAA;AAC7E,CAAC;AAED,KAAK,UAAU,eAAe,CAAC,IAAY;IACzC,IAAI,CAAC;QACH,MAAM,MAAM,GAAG;YACb,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,KAAK,CAAC,iBAAiB,CAAC;YAC3C,YAAY,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,QAAQ,EAAE;YACnC,QAAQ,EAAE,sBAAsB,CAAC,QAAQ,EAAE;SAC5C,CAAA;QACD,OAAO,CAAC,CAAC,MAAM,CAAC;YACd,OAAO,EAAE,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC;YACrB,QAAQ,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,kBAAkB,CAAC,MAAM,EAAE;gBAC1D,CAAC,CAAC,MAAM,CAAC;oBACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC;oBACzB,GAAG,MAAM;oBACT,KAAK,EAAE,CAAC,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,CAAC,QAAQ,EAAE,EAAE,GAAG,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,EAAE,EAAE,CAAC;iBAChF,CAAC,CAAC,MAAM,EAAE;gBACX,CAAC,CAAC,MAAM,CAAC;oBACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,WAAW,CAAC;oBAC5B,GAAG,MAAM;oBACT,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;oBACxB,IAAI,EAAE,CAAC,CAAC,MAAM,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,EAAE;iBACnC,CAAC,CAAC,MAAM,EAAE;aACZ,CAAC,CAAC;SACJ,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,KAAK,CAAC,MAAM,QAAQ,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC,CAAC,CAAA;IACpD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,IAAI,GAAI,KAA+B,CAAC,IAAI,CAAA;QAClD,IAAI,IAAI,KAAK,QAAQ;YAAE,OAAO,EAAE,OAAO,EAAE,CAAC,EAAE,QAAQ,EAAE,EAAE,EAAE,CAAA;QAC1D,MAAM,KAAK,CAAA;IACb,CAAC;AACH,CAAC;AAED,KAAK,UAAU,0BAA0B,CAAC,IAA0B;IAClE,MAAM,OAAO,GAAG,MAAM,QAAQ,CAAC,IAAI,CAAC,UAAU,EAAE,MAAM,CAAC,CAAA;IACvD,IAAI,cAAc,CAAC,OAAO,EAAE,IAAI,CAAC,wBAAwB,CAAC,KAAK,IAAI,CAAC,MAAM,EAAE,CAAC;QAC3E,MAAM,IAAI,KAAK,CAAC,yDAAyD,CAAC,CAAA;IAC5E,CAAC;AACH,CAAC;AAED,SAAS,cAAc,CAAC,OAAe,EAAE,wBAAiC;IACxE,MAAM,MAAM,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAA;IACnD,IAAI,wBAAwB;QAAE,MAAM,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,wBAAwB,CAAC,CAAA;IAClF,OAAO,MAAM,CAAC,MAAM,CAAC,KAAK,CAAC,CAAA;AAC7B,CAAC;AAED,SAAS,aAAa,CAAC,KAAc;IACnC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,IAAI,KAAK,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IAC1E,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;QACvC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,KAAgC,CAAC;aACxD,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC;aACpD,GAAG,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,IAAI,aAAa,CAAC,KAAK,CAAC,EAAE,CAAC;aACvE,IAAI,CAAC,GAAG,CAAC,GAAG,CAAA;IACjB,CAAC;IACD,OAAO,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,IAAI,MAAM,CAAA;AACxC,CAAC;AAED,KAAK,UAAU,gBAAgB,CAAC,IAAY,EAAE,KAAkB;IAC9D,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAA;IAC/C,MAAM,aAAa,GAAG,GAAG,IAAI,IAAI,OAAO,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,EAAE,MAAM,CAAA;IAChE,MAAM,SAAS,CAAC,aAAa,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC,CAAA;IACtF,MAAM,MAAM,CAAC,aAAa,EAAE,IAAI,CAAC,CAAA;AACnC,CAAC;AAED,KAAK,UAAU,KAAK,CAAC,IAAc,EAAE,KAAc;IACjD,OAAO,MAAM,IAAI,OAAO,CAAC,CAAC,cAAc,EAAE,MAAM,EAAE,EAAE;QAClD,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE;YAC9B,KAAK,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC;YAC/B,OAAO,EAAE,MAAM;YACf,UAAU,EAAE,SAAS;SACtB,CAAC,CAAA;QACF,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,MAAM,MAAM,GAAa,EAAE,CAAA;QAC3B,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAI,UAAU,GAAG,CAAC,CAAA;QAClB,IAAI,OAAO,GAAG,KAAK,CAAA;QACnB,MAAM,IAAI,GAAG,CAAC,KAAY,EAAE,EAAE;YAC5B,IAAI,OAAO;gBAAE,OAAM;YACnB,OAAO,GAAG,IAAI,CAAA;YACd,MAAM,CAAC,KAAK,CAAC,CAAA;QACf,CAAC,CAAA;QACD,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAA;YAC1B,IAAI,UAAU,IAAI,IAAI,GAAG,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,MAAM,CAAC,EAAE,CAAC,MAAM,EAAE,CAAC,KAAa,EAAE,EAAE;YACxC,UAAU,IAAI,KAAK,CAAC,MAAM,CAAA;YAC1B,IAAI,UAAU,IAAI,IAAI,GAAG,IAAI;gBAAE,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACnD,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,IAAI,CAAC,CAAA;QACzB,KAAK,CAAC,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,KAA4B,EAAE,EAAE;YACzD,IAAI,KAAK,CAAC,IAAI,KAAK,OAAO;gBAAE,IAAI,CAAC,KAAK,CAAC,CAAA;QACzC,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;YAC3B,IAAI,OAAO;gBAAE,OAAM;YACnB,IAAI,IAAI,KAAK,CAAC,EAAE,CAAC;gBACf,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,IAAI,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,IAAI,IAAI,QAAQ,MAAM,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC,CAAA;gBAClI,OAAM;YACR,CAAC;YACD,IAAI,UAAU,GAAG,IAAI,GAAG,IAAI,IAAI,UAAU,GAAG,IAAI,GAAG,IAAI,EAAE,CAAC;gBACzD,IAAI,CAAC,IAAI,KAAK,CAAC,MAAM,UAAU,GAAG,IAAI,GAAG,IAAI,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,QAAQ,iBAAiB,CAAC,CAAC,CAAA;gBACtF,OAAM;YACR,CAAC;YACD,OAAO,GAAG,IAAI,CAAA;YACd,cAAc,CAAC,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAA;QACxD,CAAC,CAAC,CAAA;QACF,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,KAAK,CAAC,CAAA;IACxB,CAAC,CAAC,CAAA;AACJ,CAAC"}
|
|
@@ -1,3 +1,9 @@
|
|
|
1
1
|
export declare const containsIssueKey: (value: string, issueKey: string) => boolean;
|
|
2
2
|
export declare const containsExplicitIssueReference: (value: string, issueKey: string) => boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Factory-owned implementation branches always start with `factory/` and
|
|
5
|
+
* carry the dispatched issue key. Numeric GitHub issue keys need an anchored
|
|
6
|
+
* match so issue 3021 can never claim a branch owned by 3022 (or 30210).
|
|
7
|
+
*/
|
|
8
|
+
export declare const factoryBranchBelongsToIssue: (headRef: string, issueKey: string) => boolean;
|
|
3
9
|
//# sourceMappingURL=issue-key-match.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-key-match.d.ts","sourceRoot":"","sources":["../src/issue-key-match.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,OAUlE,CAAA;AAED,eAAO,MAAM,8BAA8B,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,OAsBhF,CAAA"}
|
|
1
|
+
{"version":3,"file":"issue-key-match.d.ts","sourceRoot":"","sources":["../src/issue-key-match.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,gBAAgB,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,OAUlE,CAAA;AAED,eAAO,MAAM,8BAA8B,GAAI,OAAO,MAAM,EAAE,UAAU,MAAM,KAAG,OAsBhF,CAAA;AAED;;;;GAIG;AACH,eAAO,MAAM,2BAA2B,GAAI,SAAS,MAAM,EAAE,UAAU,MAAM,KAAG,OAO/E,CAAA"}
|
package/dist/issue-key-match.js
CHANGED
|
@@ -29,4 +29,18 @@ export const containsExplicitIssueReference = (value, issueKey) => {
|
|
|
29
29
|
const issue = `${prefix}-${number}(?=$|[^A-Za-z0-9-]|-(?!\\d))`;
|
|
30
30
|
return new RegExp(`(^|\\n)\\s*(?:linear|issue|closes|fixes|resolves)\\b[^\\n]*${issue}`, 'i').test(value);
|
|
31
31
|
};
|
|
32
|
+
/**
|
|
33
|
+
* Factory-owned implementation branches always start with `factory/` and
|
|
34
|
+
* carry the dispatched issue key. Numeric GitHub issue keys need an anchored
|
|
35
|
+
* match so issue 3021 can never claim a branch owned by 3022 (or 30210).
|
|
36
|
+
*/
|
|
37
|
+
export const factoryBranchBelongsToIssue = (headRef, issueKey) => {
|
|
38
|
+
const normalizedHead = headRef.trim().toLowerCase();
|
|
39
|
+
const normalizedKey = issueKey.trim().toLowerCase();
|
|
40
|
+
if (!normalizedHead.startsWith('factory/') || !normalizedKey)
|
|
41
|
+
return false;
|
|
42
|
+
return /^\d+$/u.test(normalizedKey)
|
|
43
|
+
? normalizedHead === `factory/${normalizedKey}` || normalizedHead.startsWith(`factory/${normalizedKey}-`)
|
|
44
|
+
: containsIssueKey(normalizedHead, normalizedKey);
|
|
45
|
+
};
|
|
32
46
|
//# sourceMappingURL=issue-key-match.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"issue-key-match.js","sourceRoot":"","sources":["../src/issue-key-match.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,oBAAoB,CAAA;AAE5C,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;AAE3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAW,EAAE;IAC3E,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;QACrC,OAAO,IAAI,MAAM,CAAC,oBAAoB,OAAO,mBAAmB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpF,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1C,OAAO,IAAI,MAAM,CAAC,mBAAmB,MAAM,IAAI,MAAM,8BAA8B,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACvG,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAW,EAAE;IACzF,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;YACpC,OAAO,IAAI,MAAM,CACf;gBACE,IAAI,MAAM,SAAS;gBACnB,kDAAkD,MAAM,SAAS;gBACjE,mDAAmD,MAAM,SAAS;gBAClE,wDAAwD,MAAM,SAAS;aACxE,CAAC,IAAI,CAAC,GAAG,CAAC,EACX,GAAG,CACJ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACf,CAAC;QACD,OAAO,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG,GAAG,MAAM,IAAI,MAAM,8BAA8B,CAAA;IAC/D,OAAO,IAAI,MAAM,CAAC,8DAA8D,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC3G,CAAC,CAAA"}
|
|
1
|
+
{"version":3,"file":"issue-key-match.js","sourceRoot":"","sources":["../src/issue-key-match.ts"],"names":[],"mappings":"AAAA,MAAM,eAAe,GAAG,oBAAoB,CAAA;AAE5C,MAAM,WAAW,GAAG,CAAC,KAAa,EAAU,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,qBAAqB,EAAE,MAAM,CAAC,CAAA;AAE3F,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAW,EAAE;IAC3E,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,MAAM,OAAO,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;QACrC,OAAO,IAAI,MAAM,CAAC,oBAAoB,OAAO,mBAAmB,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;IACpF,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1C,OAAO,IAAI,MAAM,CAAC,mBAAmB,MAAM,IAAI,MAAM,8BAA8B,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AACvG,CAAC,CAAA;AAED,MAAM,CAAC,MAAM,8BAA8B,GAAG,CAAC,KAAa,EAAE,QAAgB,EAAW,EAAE;IACzF,MAAM,KAAK,GAAG,eAAe,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAA;IAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,EAAE,CAAC;YAC5B,MAAM,MAAM,GAAG,WAAW,CAAC,QAAQ,CAAC,CAAA;YACpC,OAAO,IAAI,MAAM,CACf;gBACE,IAAI,MAAM,SAAS;gBACnB,kDAAkD,MAAM,SAAS;gBACjE,mDAAmD,MAAM,SAAS;gBAClE,wDAAwD,MAAM,SAAS;aACxE,CAAC,IAAI,CAAC,GAAG,CAAC,EACX,GAAG,CACJ,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;QACf,CAAC;QACD,OAAO,gBAAgB,CAAC,KAAK,EAAE,QAAQ,CAAC,CAAA;IAC1C,CAAC;IAED,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1C,MAAM,MAAM,GAAG,WAAW,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAA;IAC1C,MAAM,KAAK,GAAG,GAAG,MAAM,IAAI,MAAM,8BAA8B,CAAA;IAC/D,OAAO,IAAI,MAAM,CAAC,8DAA8D,KAAK,EAAE,EAAE,GAAG,CAAC,CAAC,IAAI,CAAC,KAAK,CAAC,CAAA;AAC3G,CAAC,CAAA;AAED;;;;GAIG;AACH,MAAM,CAAC,MAAM,2BAA2B,GAAG,CAAC,OAAe,EAAE,QAAgB,EAAW,EAAE;IACxF,MAAM,cAAc,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACnD,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAA;IACnD,IAAI,CAAC,cAAc,CAAC,UAAU,CAAC,UAAU,CAAC,IAAI,CAAC,aAAa;QAAE,OAAO,KAAK,CAAA;IAC1E,OAAO,QAAQ,CAAC,IAAI,CAAC,aAAa,CAAC;QACjC,CAAC,CAAC,cAAc,KAAK,WAAW,aAAa,EAAE,IAAI,cAAc,CAAC,UAAU,CAAC,WAAW,aAAa,GAAG,CAAC;QACzG,CAAC,CAAC,gBAAgB,CAAC,cAAc,EAAE,aAAa,CAAC,CAAA;AACrD,CAAC,CAAA"}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
import type { GithubIssueLookup, GithubConnectionRead } from '../ports/index.js';
|
|
2
|
+
type FetchLike = (input: string | URL | Request, init?: RequestInit) => Promise<Response>;
|
|
3
|
+
export interface GithubApiIssueReadConfig {
|
|
4
|
+
/** Internal request override for deterministic tests. */
|
|
5
|
+
fetch?: FetchLike;
|
|
6
|
+
}
|
|
7
|
+
/**
|
|
8
|
+
* Read-only lookup against GitHub's REST API, unauthenticated.
|
|
9
|
+
*
|
|
10
|
+
* Factory never receives or invokes a GitHub credential here. GitHub
|
|
11
|
+
* mutations continue to use the Relayfile connection writeback path with the
|
|
12
|
+
* app author; this deliberately separate reader only recovers issue facts
|
|
13
|
+
* when the preferred Relayfile projection cannot answer.
|
|
14
|
+
*
|
|
15
|
+
* Because every request is unauthenticated, this reader can only be
|
|
16
|
+
* authoritative about repositories it can independently confirm are public
|
|
17
|
+
* (see #isRepoPublic). GitHub returns an identical 404 for "issue does not
|
|
18
|
+
* exist" and "repository is private, existence hidden from you" — without
|
|
19
|
+
* that independent confirmation a 404 cannot be trusted as absence, so it is
|
|
20
|
+
* reported as `indeterminate` instead of a false `not-found`.
|
|
21
|
+
*/
|
|
22
|
+
export declare class GithubApiIssueRead implements GithubConnectionRead {
|
|
23
|
+
#private;
|
|
24
|
+
constructor(config?: GithubApiIssueReadConfig);
|
|
25
|
+
getIssue(repo: string, number: number): Promise<GithubIssueLookup>;
|
|
26
|
+
}
|
|
27
|
+
export {};
|
|
28
|
+
//# sourceMappingURL=github-api-issue-read.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-api-issue-read.d.ts","sourceRoot":"","sources":["../../src/mount/github-api-issue-read.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,iBAAiB,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAA;AAIvE,KAAK,SAAS,GAAG,CAAC,KAAK,EAAE,MAAM,GAAG,GAAG,GAAG,OAAO,EAAE,IAAI,CAAC,EAAE,WAAW,KAAK,OAAO,CAAC,QAAQ,CAAC,CAAA;AAEzF,MAAM,WAAW,wBAAwB;IACvC,yDAAyD;IACzD,KAAK,CAAC,EAAE,SAAS,CAAA;CAClB;AAED;;;;;;;;;;;;;;GAcG;AACH,qBAAa,kBAAmB,YAAW,oBAAoB;;gBAIjD,MAAM,GAAE,wBAA6B;IAI3C,QAAQ,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,GAAG,OAAO,CAAC,iBAAiB,CAAC;CAsIzE"}
|
|
@@ -0,0 +1,163 @@
|
|
|
1
|
+
const GITHUB_API_BASE_URL = 'https://api.github.com';
|
|
2
|
+
/**
|
|
3
|
+
* Read-only lookup against GitHub's REST API, unauthenticated.
|
|
4
|
+
*
|
|
5
|
+
* Factory never receives or invokes a GitHub credential here. GitHub
|
|
6
|
+
* mutations continue to use the Relayfile connection writeback path with the
|
|
7
|
+
* app author; this deliberately separate reader only recovers issue facts
|
|
8
|
+
* when the preferred Relayfile projection cannot answer.
|
|
9
|
+
*
|
|
10
|
+
* Because every request is unauthenticated, this reader can only be
|
|
11
|
+
* authoritative about repositories it can independently confirm are public
|
|
12
|
+
* (see #isRepoPublic). GitHub returns an identical 404 for "issue does not
|
|
13
|
+
* exist" and "repository is private, existence hidden from you" — without
|
|
14
|
+
* that independent confirmation a 404 cannot be trusted as absence, so it is
|
|
15
|
+
* reported as `indeterminate` instead of a false `not-found`.
|
|
16
|
+
*/
|
|
17
|
+
export class GithubApiIssueRead {
|
|
18
|
+
#fetch;
|
|
19
|
+
#repoIsPublic = new Map();
|
|
20
|
+
constructor(config = {}) {
|
|
21
|
+
this.#fetch = config.fetch ?? fetch;
|
|
22
|
+
}
|
|
23
|
+
async getIssue(repo, number) {
|
|
24
|
+
const { owner, name } = githubRepoParts(repo);
|
|
25
|
+
if (!Number.isSafeInteger(number) || number <= 0) {
|
|
26
|
+
throw new Error(`GitHub issue number must be a positive integer: ${number}`);
|
|
27
|
+
}
|
|
28
|
+
const isPublic = await this.#isRepoPublic(owner, name);
|
|
29
|
+
if (isPublic === undefined) {
|
|
30
|
+
return {
|
|
31
|
+
outcome: 'indeterminate',
|
|
32
|
+
reason: `could not confirm ${owner}/${name} is publicly visible without authentication`,
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
if (!isPublic) {
|
|
36
|
+
// If the repo itself isn't visible unauthenticated, its issues can't
|
|
37
|
+
// be either — the issue-level GET would only return the same 404 for
|
|
38
|
+
// a different reason we still can't tell apart. Skip it: on this
|
|
39
|
+
// reader's rate limit (60 req/hr, unauthenticated), a private repo is
|
|
40
|
+
// the common case in this org, not the edge, so this second call is
|
|
41
|
+
// never wasted by accident.
|
|
42
|
+
return { outcome: 'indeterminate', reason: `${owner}/${name} is not visible without authentication` };
|
|
43
|
+
}
|
|
44
|
+
const response = await this.#fetch(`${GITHUB_API_BASE_URL}/repos/${encodeURIComponent(owner)}/${encodeURIComponent(name)}/issues/${number}`, {
|
|
45
|
+
method: 'GET',
|
|
46
|
+
signal: AbortSignal.timeout(30_000),
|
|
47
|
+
headers: {
|
|
48
|
+
accept: 'application/vnd.github+json',
|
|
49
|
+
'user-agent': '@agent-relay/factory',
|
|
50
|
+
},
|
|
51
|
+
});
|
|
52
|
+
if (response.status === 404) {
|
|
53
|
+
// Reached only when isPublic === true: a confirmed-public repo's 404
|
|
54
|
+
// is a trustworthy miss.
|
|
55
|
+
return { outcome: 'not-found' };
|
|
56
|
+
}
|
|
57
|
+
if (isRateLimitOrAuthStatus(response.status)) {
|
|
58
|
+
return { outcome: 'indeterminate', reason: `GitHub API issue lookup returned HTTP ${response.status}` };
|
|
59
|
+
}
|
|
60
|
+
if (!response.ok) {
|
|
61
|
+
throw new Error(`GitHub API issue lookup failed (HTTP ${response.status})`);
|
|
62
|
+
}
|
|
63
|
+
const issue = record(await response.json());
|
|
64
|
+
if (!issue) {
|
|
65
|
+
throw new Error(`GitHub API issue lookup returned an incomplete issue record for ${repo}#${number}`);
|
|
66
|
+
}
|
|
67
|
+
// GitHub's REST "issues" endpoint also returns pull requests. For Factory
|
|
68
|
+
// issue dispatch a PR occupying the same repository number is an
|
|
69
|
+
// authoritative non-match, not a malformed issue.
|
|
70
|
+
if (issue.pull_request !== undefined)
|
|
71
|
+
return { outcome: 'not-found' };
|
|
72
|
+
const resolvedNumber = positiveInteger(issue.number);
|
|
73
|
+
const title = stringValue(issue.title);
|
|
74
|
+
const url = stringValue(issue.html_url);
|
|
75
|
+
if (resolvedNumber !== number || !title || !url) {
|
|
76
|
+
throw new Error(`GitHub API issue lookup returned an incomplete issue record for ${repo}#${number}`);
|
|
77
|
+
}
|
|
78
|
+
const labels = Array.isArray(issue.labels) ? issue.labels : [];
|
|
79
|
+
const author = stringValue(record(issue.user)?.login);
|
|
80
|
+
const path = githubIssuePath(owner, name, number);
|
|
81
|
+
return {
|
|
82
|
+
outcome: 'found',
|
|
83
|
+
issue: {
|
|
84
|
+
repo: `${owner}/${name}`,
|
|
85
|
+
number,
|
|
86
|
+
path,
|
|
87
|
+
content: {
|
|
88
|
+
provider: 'github',
|
|
89
|
+
objectType: 'issue',
|
|
90
|
+
objectId: stringValue(issue.node_id) ?? String(issue.id ?? `${owner}/${name}#${number}`),
|
|
91
|
+
payload: {
|
|
92
|
+
id: issue.id,
|
|
93
|
+
node_id: issue.node_id,
|
|
94
|
+
number,
|
|
95
|
+
title,
|
|
96
|
+
body: stringValue(issue.body) ?? '',
|
|
97
|
+
state: (stringValue(issue.state) ?? '').toLowerCase(),
|
|
98
|
+
url,
|
|
99
|
+
html_url: url,
|
|
100
|
+
updated_at: stringValue(issue.updated_at),
|
|
101
|
+
labels: labels
|
|
102
|
+
.map((label) => typeof label === 'string' ? { name: label } : { name: stringValue(record(label)?.name) })
|
|
103
|
+
.filter((label) => Boolean(label.name)),
|
|
104
|
+
...(author ? { user: { login: author }, author: { login: author } } : {}),
|
|
105
|
+
repository: { name, owner: { login: owner } },
|
|
106
|
+
},
|
|
107
|
+
},
|
|
108
|
+
},
|
|
109
|
+
};
|
|
110
|
+
}
|
|
111
|
+
/**
|
|
112
|
+
* Confirms repository visibility with one unauthenticated GET, cached for
|
|
113
|
+
* the life of this reader. Returns `undefined` — never throws, never
|
|
114
|
+
* caches — for any response that is not a clean 200 or 404, so a rate
|
|
115
|
+
* limit or transient failure on this probe degrades a lookup to
|
|
116
|
+
* `indeterminate` instead of turning it into a hard error or pinning a
|
|
117
|
+
* wrong verdict.
|
|
118
|
+
*/
|
|
119
|
+
async #isRepoPublic(owner, name) {
|
|
120
|
+
const key = `${owner}/${name}`.toLowerCase();
|
|
121
|
+
const cached = this.#repoIsPublic.get(key);
|
|
122
|
+
if (cached !== undefined)
|
|
123
|
+
return cached;
|
|
124
|
+
let response;
|
|
125
|
+
try {
|
|
126
|
+
response = await this.#fetch(`${GITHUB_API_BASE_URL}/repos/${encodeURIComponent(owner)}/${encodeURIComponent(name)}`, {
|
|
127
|
+
method: 'GET',
|
|
128
|
+
signal: AbortSignal.timeout(30_000),
|
|
129
|
+
headers: {
|
|
130
|
+
accept: 'application/vnd.github+json',
|
|
131
|
+
'user-agent': '@agent-relay/factory',
|
|
132
|
+
},
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
catch {
|
|
136
|
+
return undefined;
|
|
137
|
+
}
|
|
138
|
+
if (response.status === 200) {
|
|
139
|
+
this.#repoIsPublic.set(key, true);
|
|
140
|
+
return true;
|
|
141
|
+
}
|
|
142
|
+
if (response.status === 404) {
|
|
143
|
+
this.#repoIsPublic.set(key, false);
|
|
144
|
+
return false;
|
|
145
|
+
}
|
|
146
|
+
return undefined;
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
const isRateLimitOrAuthStatus = (status) => status === 403 || status === 429;
|
|
150
|
+
const githubRepoParts = (repo) => {
|
|
151
|
+
const [owner, name, ...extra] = repo.split('/');
|
|
152
|
+
if (!owner || !name || extra.length > 0) {
|
|
153
|
+
throw new Error(`GitHub repo must be owner/repo: ${repo}`);
|
|
154
|
+
}
|
|
155
|
+
return { owner, name };
|
|
156
|
+
};
|
|
157
|
+
const githubIssuePath = (owner, repo, number) => `/github/repos/${encodeURIComponent(owner)}__${encodeURIComponent(repo)}/issues/by-id/${number}.json`;
|
|
158
|
+
const record = (value) => value !== null && typeof value === 'object' && !Array.isArray(value)
|
|
159
|
+
? value
|
|
160
|
+
: undefined;
|
|
161
|
+
const stringValue = (value) => typeof value === 'string' && value.length > 0 ? value : undefined;
|
|
162
|
+
const positiveInteger = (value) => typeof value === 'number' && Number.isSafeInteger(value) && value > 0 ? value : undefined;
|
|
163
|
+
//# sourceMappingURL=github-api-issue-read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"github-api-issue-read.js","sourceRoot":"","sources":["../../src/mount/github-api-issue-read.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,5 +1,7 @@
|
|
|
1
1
|
import type { LocalMountOptions } from '../ports/index.js';
|
|
2
2
|
export interface EnsureLocalMountOptions extends LocalMountOptions {
|
|
3
|
+
/** Exact registered mirror root, for mirrors not conventionally named `.integrations`. */
|
|
4
|
+
localDir?: string;
|
|
3
5
|
/**
|
|
4
6
|
* Starts an authenticated mount through the Relayfile SDK. Credential minting,
|
|
5
7
|
* binary resolution, and launch details deliberately stay outside this
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-mount-preflight.d.ts","sourceRoot":"","sources":["../../src/mount/local-mount-preflight.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;
|
|
1
|
+
{"version":3,"file":"local-mount-preflight.d.ts","sourceRoot":"","sources":["../../src/mount/local-mount-preflight.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,iBAAiB,EAAE,MAAM,UAAU,CAAA;AAkBjD,MAAM,WAAW,uBAAwB,SAAQ,iBAAiB;IAChE,0FAA0F;IAC1F,QAAQ,CAAC,EAAE,MAAM,CAAA;IACjB;;;;OAIG;IACH,UAAU,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAA;CAChC;AAED,wBAAsB,gBAAgB,CACpC,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,OAAO,EAAE,uBAAuB,GAC/B,OAAO,CAAC,IAAI,CAAC,CAiGf"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { readFile } from 'node:fs/promises';
|
|
2
2
|
import { join } from 'node:path';
|
|
3
3
|
import { checkMountStaleness } from './relayfile-binary.js';
|
|
4
|
-
|
|
4
|
+
import { classifyMountAuthError, MountAuthScopeError, mountAuthRemediation, readMountAuthErrorFromState, } from './mount-auth-error.js';
|
|
5
5
|
// How long to wait for a freshly-spawned mount to write a valid state.json
|
|
6
6
|
// (workspace match + a fresh reconcile timestamp). A CLI mount over a large `.integrations` tree
|
|
7
7
|
// can take well over 10s to complete its FIRST reconcile (early cycles hit
|
|
@@ -11,36 +11,86 @@ const STATE_FILE = '.integrations/.relay/state.json';
|
|
|
11
11
|
// can still override via `stateWaitTimeoutMs`.
|
|
12
12
|
const DEFAULT_STATE_READY_TIMEOUT_MS = 60_000;
|
|
13
13
|
export async function ensureLocalMount(workspaceId, startDir, options) {
|
|
14
|
-
const
|
|
14
|
+
const localDir = options.localDir ?? join(startDir, '.integrations');
|
|
15
|
+
const stateFilePath = join(localDir, '.relay', 'state.json');
|
|
15
16
|
if (!(await isMountStatePresent(stateFilePath))) {
|
|
16
|
-
|
|
17
|
-
|
|
17
|
+
try {
|
|
18
|
+
await options.startMount();
|
|
19
|
+
await waitForStateFile(stateFilePath, workspaceId, options.stateWaitTimeoutMs, options.stateWaitPollMs, options.acceptableWorkspaceIds);
|
|
20
|
+
}
|
|
21
|
+
catch (error) {
|
|
22
|
+
if (error instanceof MountAuthScopeError)
|
|
23
|
+
throw error;
|
|
24
|
+
// A first-ever bootstrap that 403s writes a state.json recording the
|
|
25
|
+
// scope shortfall but never becomes ready. Convert that into the typed,
|
|
26
|
+
// terminal error so startup fails fast with a clear remediation.
|
|
27
|
+
const reason = error instanceof Error ? error.message : String(error);
|
|
28
|
+
const authError = readMountAuthErrorFromState(stateFilePath) ?? classifyMountAuthError(reason);
|
|
29
|
+
if (authError) {
|
|
30
|
+
throw new MountAuthScopeError(mountAuthRemediation(authError), {
|
|
31
|
+
missingScope: authError.missingScope,
|
|
32
|
+
cause: error,
|
|
33
|
+
});
|
|
34
|
+
}
|
|
35
|
+
throw error;
|
|
36
|
+
}
|
|
18
37
|
return;
|
|
19
38
|
}
|
|
20
39
|
const staleness = checkMountStaleness(stateFilePath, workspaceId, options.acceptableWorkspaceIds);
|
|
21
|
-
|
|
40
|
+
// A filesystem-scope shortfall is terminal: the mount records a 403 in its
|
|
41
|
+
// state.json, and re-launching only 403s again. Detect it up front so we
|
|
42
|
+
// neither loop refreshing a doomed mount nor let the degradation stay silent.
|
|
43
|
+
const authError = readMountAuthErrorFromState(stateFilePath);
|
|
44
|
+
if (!staleness.stale) {
|
|
45
|
+
// The mount is reconciling. If it still reports a scope shortfall (e.g. a
|
|
46
|
+
// root bootstrap that 403s while scoped subtrees sync), surface it once —
|
|
47
|
+
// but never tear down a working mount over it.
|
|
48
|
+
if (authError)
|
|
49
|
+
process.stderr.write(`${mountAuthRemediation(authError)}\n`);
|
|
22
50
|
return;
|
|
51
|
+
}
|
|
23
52
|
const suffix = staleness.reason !== undefined ? ` (${staleness.reason})` : '';
|
|
24
53
|
const manualHint = 'Restart Factory after restoring the Agent Relay Cloud session';
|
|
54
|
+
// Include the registered target in an operator-facing refresh log. This is
|
|
55
|
+
// intentionally the state path's parent, not the current Factory checkout:
|
|
56
|
+
// a stale mirror must heal where Relayfile registered it.
|
|
57
|
+
const mountTarget = localDir;
|
|
58
|
+
// Stale AND under-scoped: refreshing cannot help. Fail fast and terminal so
|
|
59
|
+
// the supervisor stops retrying and startup surfaces one actionable error.
|
|
60
|
+
if (authError) {
|
|
61
|
+
throw new MountAuthScopeError(mountAuthRemediation(authError), { missingScope: authError.missingScope });
|
|
62
|
+
}
|
|
25
63
|
if (options.refreshStaleMount === false) {
|
|
26
|
-
process.stderr.write(`[factory] local mount is stale${suffix}; writeback may not propagate. ${manualHint}\n`);
|
|
64
|
+
process.stderr.write(`[factory] local mount at ${mountTarget} is stale${suffix}; writeback may not propagate. ${manualHint}\n`);
|
|
27
65
|
return;
|
|
28
66
|
}
|
|
29
67
|
// Self-heal through the same SDK-authenticated launch path used for first
|
|
30
68
|
// start, rather than silently shipping writebacks into a stale mirror.
|
|
31
69
|
if (!options.suppressStaleRefreshLogs) {
|
|
32
|
-
process.stderr.write(`[factory] local mount is stale${suffix}; refreshing\n`);
|
|
70
|
+
process.stderr.write(`[factory] local mount at ${mountTarget} is stale${suffix}; refreshing\n`);
|
|
33
71
|
}
|
|
34
72
|
try {
|
|
35
73
|
await options.startMount();
|
|
36
74
|
await waitForStateFile(stateFilePath, workspaceId, options.stateWaitTimeoutMs, options.stateWaitPollMs, options.acceptableWorkspaceIds);
|
|
37
75
|
if (!options.suppressStaleRefreshLogs) {
|
|
38
|
-
process.stderr.write(
|
|
76
|
+
process.stderr.write(`[factory] local mount at ${mountTarget} refreshed\n`);
|
|
39
77
|
}
|
|
40
78
|
}
|
|
41
79
|
catch (error) {
|
|
80
|
+
if (error instanceof MountAuthScopeError)
|
|
81
|
+
throw error;
|
|
42
82
|
const reason = error instanceof Error ? error.message : String(error);
|
|
43
|
-
|
|
83
|
+
// The failed refresh may have written a fresh 403 into state.json, or the
|
|
84
|
+
// failure reason itself may name the missing scope. Either way it is
|
|
85
|
+
// terminal — escalate so the supervisor stops retrying.
|
|
86
|
+
const postAuthError = readMountAuthErrorFromState(stateFilePath) ?? classifyMountAuthError(reason);
|
|
87
|
+
if (postAuthError) {
|
|
88
|
+
throw new MountAuthScopeError(mountAuthRemediation(postAuthError), {
|
|
89
|
+
missingScope: postAuthError.missingScope,
|
|
90
|
+
cause: error,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
process.stderr.write(`[factory] local mount at ${mountTarget} is stale${suffix} and auto-refresh failed (${reason}); writeback may not propagate. ${manualHint}\n`);
|
|
44
94
|
}
|
|
45
95
|
}
|
|
46
96
|
async function isMountStatePresent(stateFilePath) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"local-mount-preflight.js","sourceRoot":"","sources":["../../src/mount/local-mount-preflight.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAA;AAC3C,OAAO,EAAE,IAAI,EAAE,MAAM,WAAW,CAAA;AAGhC,OAAO,EAAE,mBAAmB,EAAE,MAAM,oBAAoB,CAAA;
|
|
1
|
+
{"version":3,"file":"local-mount-preflight.js","sourceRoot":"","sources":["../../src/mount/local-mount-preflight.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* A mount failure caused by the cloud session lacking the filesystem scopes the
|
|
3
|
+
* relayfile mount needs (e.g. `relayfile:fs:read`). Unlike a stale mount or a
|
|
4
|
+
* transient launch failure, re-launching cannot fix this — the token itself is
|
|
5
|
+
* under-scoped — so callers must treat it as terminal: surface an actionable
|
|
6
|
+
* remediation instead of scheduling an infinite refresh loop, and refuse to
|
|
7
|
+
* spawn/resume agents against the resulting stale mirror.
|
|
8
|
+
*/
|
|
9
|
+
export declare class MountAuthScopeError extends Error {
|
|
10
|
+
readonly missingScope?: string;
|
|
11
|
+
readonly cause?: unknown;
|
|
12
|
+
constructor(message: string, options?: {
|
|
13
|
+
missingScope?: string;
|
|
14
|
+
cause?: unknown;
|
|
15
|
+
});
|
|
16
|
+
}
|
|
17
|
+
export interface MountAuthErrorDetails {
|
|
18
|
+
/** The scope named in the 403, when the server reported one (e.g. `fs:read`). */
|
|
19
|
+
missingScope?: string;
|
|
20
|
+
/** The raw diagnostic text the classification matched against. */
|
|
21
|
+
detail: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Classify a diagnostic string as a filesystem-scope authorization failure.
|
|
25
|
+
* Returns the matched details, or `undefined` when the text is some other
|
|
26
|
+
* (transient / unrelated) failure.
|
|
27
|
+
*/
|
|
28
|
+
export declare function classifyMountAuthError(text: string | undefined | null): MountAuthErrorDetails | undefined;
|
|
29
|
+
/**
|
|
30
|
+
* Read a relayfile mount `state.json` and, if its most recent error is a
|
|
31
|
+
* filesystem-scope authorization failure, return the details. Returns
|
|
32
|
+
* `undefined` when the file is absent, unreadable, or the error is unrelated.
|
|
33
|
+
*/
|
|
34
|
+
export declare function readMountAuthErrorFromState(stateFilePath: string): MountAuthErrorDetails | undefined;
|
|
35
|
+
/**
|
|
36
|
+
* Build the single, actionable remediation message shown when the mount cannot
|
|
37
|
+
* obtain its filesystem scopes. Kept in one place so preflight, the supervisor,
|
|
38
|
+
* and startup all speak with one voice.
|
|
39
|
+
*/
|
|
40
|
+
export declare function mountAuthRemediation(details?: MountAuthErrorDetails): string;
|
|
41
|
+
//# sourceMappingURL=mount-auth-error.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount-auth-error.d.ts","sourceRoot":"","sources":["../../src/mount/mount-auth-error.ts"],"names":[],"mappings":"AAEA;;;;;;;GAOG;AACH,qBAAa,mBAAoB,SAAQ,KAAK;IAC5C,QAAQ,CAAC,YAAY,CAAC,EAAE,MAAM,CAAA;IAC9B,QAAQ,CAAC,KAAK,CAAC,EAAE,OAAO,CAAA;gBAEZ,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,KAAK,CAAC,EAAE,OAAO,CAAA;KAAE;CAMlF;AAED,MAAM,WAAW,qBAAqB;IACpC,iFAAiF;IACjF,YAAY,CAAC,EAAE,MAAM,CAAA;IACrB,kEAAkE;IAClE,MAAM,EAAE,MAAM,CAAA;CACf;AAWD;;;;GAIG;AACH,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,GAAG,qBAAqB,GAAG,SAAS,CAYzG;AAED;;;;GAIG;AACH,wBAAgB,2BAA2B,CAAC,aAAa,EAAE,MAAM,GAAG,qBAAqB,GAAG,SAAS,CAuBpG;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,OAAO,CAAC,EAAE,qBAAqB,GAAG,MAAM,CAS5E"}
|
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
import { readFileSync } from 'node:fs';
|
|
2
|
+
/**
|
|
3
|
+
* A mount failure caused by the cloud session lacking the filesystem scopes the
|
|
4
|
+
* relayfile mount needs (e.g. `relayfile:fs:read`). Unlike a stale mount or a
|
|
5
|
+
* transient launch failure, re-launching cannot fix this — the token itself is
|
|
6
|
+
* under-scoped — so callers must treat it as terminal: surface an actionable
|
|
7
|
+
* remediation instead of scheduling an infinite refresh loop, and refuse to
|
|
8
|
+
* spawn/resume agents against the resulting stale mirror.
|
|
9
|
+
*/
|
|
10
|
+
export class MountAuthScopeError extends Error {
|
|
11
|
+
missingScope;
|
|
12
|
+
cause;
|
|
13
|
+
constructor(message, options) {
|
|
14
|
+
super(message);
|
|
15
|
+
this.name = 'MountAuthScopeError';
|
|
16
|
+
this.missingScope = options?.missingScope;
|
|
17
|
+
this.cause = options?.cause;
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
// The relayfile server reports a scope shortfall as an HTTP 403 whose body names
|
|
21
|
+
// the required scope. The mount SDK surfaces it verbatim in log/error text and
|
|
22
|
+
// in state.json's `lastError.message`, e.g.:
|
|
23
|
+
// "http 403 forbidden: missing required scope: fs:read"
|
|
24
|
+
// A prolonged shortfall also shows up as a stalled bootstrap that never clears.
|
|
25
|
+
const MISSING_SCOPE_RE = /missing required scope:\s*([\w:*/-]+)/i;
|
|
26
|
+
const FORBIDDEN_RE = /\b403\b|forbidden/i;
|
|
27
|
+
const BOOTSTRAP_STALL_RE = /bootstrap[_ ]stall/i;
|
|
28
|
+
/**
|
|
29
|
+
* Classify a diagnostic string as a filesystem-scope authorization failure.
|
|
30
|
+
* Returns the matched details, or `undefined` when the text is some other
|
|
31
|
+
* (transient / unrelated) failure.
|
|
32
|
+
*/
|
|
33
|
+
export function classifyMountAuthError(text) {
|
|
34
|
+
if (!text)
|
|
35
|
+
return undefined;
|
|
36
|
+
const scopeMatch = MISSING_SCOPE_RE.exec(text);
|
|
37
|
+
if (scopeMatch) {
|
|
38
|
+
return { missingScope: scopeMatch[1], detail: text };
|
|
39
|
+
}
|
|
40
|
+
// A stalled bootstrap that also reports a forbidden/403 is the same
|
|
41
|
+
// under-scoped session even when the specific scope name is absent.
|
|
42
|
+
if (BOOTSTRAP_STALL_RE.test(text) && FORBIDDEN_RE.test(text)) {
|
|
43
|
+
return { detail: text };
|
|
44
|
+
}
|
|
45
|
+
return undefined;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Read a relayfile mount `state.json` and, if its most recent error is a
|
|
49
|
+
* filesystem-scope authorization failure, return the details. Returns
|
|
50
|
+
* `undefined` when the file is absent, unreadable, or the error is unrelated.
|
|
51
|
+
*/
|
|
52
|
+
export function readMountAuthErrorFromState(stateFilePath) {
|
|
53
|
+
let raw;
|
|
54
|
+
try {
|
|
55
|
+
raw = readFileSync(stateFilePath, 'utf8');
|
|
56
|
+
}
|
|
57
|
+
catch {
|
|
58
|
+
return undefined;
|
|
59
|
+
}
|
|
60
|
+
let parsed;
|
|
61
|
+
try {
|
|
62
|
+
parsed = JSON.parse(raw);
|
|
63
|
+
}
|
|
64
|
+
catch {
|
|
65
|
+
return undefined;
|
|
66
|
+
}
|
|
67
|
+
if (typeof parsed !== 'object' || parsed === null)
|
|
68
|
+
return undefined;
|
|
69
|
+
const lastError = parsed.lastError;
|
|
70
|
+
if (typeof lastError !== 'object' || lastError === null)
|
|
71
|
+
return undefined;
|
|
72
|
+
const { message, kind, code } = lastError;
|
|
73
|
+
const fields = [message, kind, code].filter((v) => typeof v === 'string');
|
|
74
|
+
for (const field of fields) {
|
|
75
|
+
const details = classifyMountAuthError(field);
|
|
76
|
+
if (details)
|
|
77
|
+
return details;
|
|
78
|
+
}
|
|
79
|
+
return undefined;
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Build the single, actionable remediation message shown when the mount cannot
|
|
83
|
+
* obtain its filesystem scopes. Kept in one place so preflight, the supervisor,
|
|
84
|
+
* and startup all speak with one voice.
|
|
85
|
+
*/
|
|
86
|
+
export function mountAuthRemediation(details) {
|
|
87
|
+
const scope = details?.missingScope ? ` (missing ${details.missingScope})` : '';
|
|
88
|
+
return (`[factory] Agent Relay Cloud session lacks the filesystem scope the mount needs${scope}. ` +
|
|
89
|
+
'Re-authenticate with a session that can mint relayfile fs:read/fs:write for this workspace ' +
|
|
90
|
+
'(an organization owner/admin session); a plain `agent-relay cloud login` grants only ' +
|
|
91
|
+
'follow-user/cli:auth and cannot mint fs scopes. Factory will not spawn agents against a ' +
|
|
92
|
+
'read-denied mirror.');
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=mount-auth-error.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"mount-auth-error.js","sourceRoot":"","sources":["../../src/mount/mount-auth-error.ts"],"names":[],"mappings":"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"}
|